From 542badc20522e7d0d1249e7d025dafe3e6f97c77 Mon Sep 17 00:00:00 2001 From: casperlamboo Date: Tue, 16 Jun 2015 18:37:26 +0200 Subject: [PATCH] added doodle_app and fixed https://github.com/Doodle3D/Doodle3D-Slicer/issues/6 --- doodle_app/css/dark.css | 193 + doodle_app/css/light.css | 168 + doodle_app/css/main.css | 146 + doodle_app/index.html | 45 +- doodle_app/js/DrawCanvas.js | 86 + doodle_app/lib/paper-core.js | 12694 ++++++++++++++++++++++++ doodle_app/ui/Config.js | 69 + doodle_app/ui/Design.js | 30 + doodle_app/ui/Editor.js | 452 + doodle_app/ui/Loader.js | 441 + doodle_app/ui/Preview.js | 558 ++ models/sewing_machine.stl | Bin 0 -> 1473284 bytes src/paths.js | 2 +- src/slicer.js | 5 +- three.js-master/editor/js/Config.js | 4 +- three.js-master/editor/js/Viewport.js | 6 +- 16 files changed, 14873 insertions(+), 26 deletions(-) create mode 100755 doodle_app/css/dark.css create mode 100755 doodle_app/css/light.css create mode 100755 doodle_app/css/main.css create mode 100644 doodle_app/js/DrawCanvas.js create mode 100644 doodle_app/lib/paper-core.js create mode 100755 doodle_app/ui/Config.js create mode 100644 doodle_app/ui/Design.js create mode 100755 doodle_app/ui/Editor.js create mode 100755 doodle_app/ui/Loader.js create mode 100755 doodle_app/ui/Preview.js create mode 100644 models/sewing_machine.stl diff --git a/doodle_app/css/dark.css b/doodle_app/css/dark.css new file mode 100755 index 0000000..0dc1940 --- /dev/null +++ b/doodle_app/css/dark.css @@ -0,0 +1,193 @@ +.Outliner { + color: #868686; + background: #222; + padding: 0; + width: 100%; + height: 140px; + font-size: 12px; + cursor: default; + overflow: auto; + outline: none; +} + + .Outliner .option { + padding: 4px; + white-space: nowrap; + } + + .Outliner .option.active { + background-color: #153C5E; + } + +.Panel.Collapsible.collapsed .Static .Button { + border-left-color: #444; +} + +.Panel.Collapsible:not(.collapsed) .Static .Button { + border-top-color: #444; +} + +input.Number { + color: #2A75B7!important; + font-size: 12px; /** TODO: Use of !imporant is not ideal **/ + background-color: transparent!important; /* For now this is a quick fix a rendering issue due to inherited background */ + border: 1px solid transparent; + padding: 2px; + cursor: col-resize; +} + +#viewport { + position: absolute; + top: 32px; + left: 0px; + right: 300px; + bottom: 32px; +} + + #viewport #info { + text-shadow: 1px 1px 0px rgba(0,0,0,0.25); + } + +#script { + position: absolute; + top: 32px; + left: 0px; + right: 300px; + bottom: 32px; + opacity: 0.9; +} + +#player { + position: absolute; + top: 32px; + left: 0px; + right: 300px; + bottom: 32px; +} + +#menubar { + position: absolute; + width: 100%; + height: 32px; + background: #111; + padding: 0px; + margin: 0px; + right: 0px; + top: 0px; +} + + #menubar .menu { + float: left; + cursor: pointer; + padding-right: 8px; + } + + #menubar .menu.right { + float: right; + cursor: auto; + text-align: right; + } + + #menubar .menu .title { + display: inline-block; + color: #888; + margin: 0px; + padding: 8px; + } + + #menubar .menu .options { + position: absolute; + display: none; + padding: 5px 0px; + background: #111; + width: 150px; + } + + #menubar .menu:hover .options { + display: block; + } + + #menubar .menu .options hr { + border-color: #333; + } + + #menubar .menu .options .option { + color: #888; + background-color: transparent; + padding: 5px 10px; + margin: 0px !important; + } + + #menubar .menu .options .option:hover { + color: #fff; + background-color: #08f; + } + + #menubar .menu .options .option:active { + background: transparent; + } + +#sidebar { + position: absolute; + right: 0px; + top: 32px; + bottom: 0px; + width: 300px; + background-color: #111; + overflow: auto; +} + + #sidebar * { + vertical-align: middle; + } + + #sidebar input, + #sidebar textarea, + #sidebar select { + background: #222; + border: 1px solid transparent; + color: #888; + } + + #sidebar .Panel { + margin-bottom: 10px; + } + + #sidebar .Panel.collapsed { + margin-bottom: 0px; + } + + #sidebar > .Panel { + color: #888; + padding: 10px; + border-top: 1px solid #333; + } + + #sidebar .Panel.Material canvas { + + border: solid 1px #5A5A5A; + + } + +#toolbar { + position: absolute; + left: 0px; + right: 300px; + bottom: 0px; + height: 32px; + background-color: #111; + color: #333; +} + + #toolbar * { + vertical-align: middle; + } + + #toolbar .Panel { + padding: 4px; + color: #888; + } + + #toolbar button { + margin-right: 6px; + } diff --git a/doodle_app/css/light.css b/doodle_app/css/light.css new file mode 100755 index 0000000..a4d9f95 --- /dev/null +++ b/doodle_app/css/light.css @@ -0,0 +1,168 @@ +.Outliner { + color: #444; + background: #fff; + padding: 0; + width: 100%; + height: 140px; + font-size: 12px; + cursor: default; + overflow: auto; + outline: none; +} + +.Outliner .option { + padding: 4px; + color: #666; + white-space: nowrap; +} + +.Outliner .option.active { + background-color: #f8f8f8; +} + +input.Number { + color: #0080f0!important; + font-size: 12px; /** TODO: Use of !imporant is not ideal **/ + background-color: transparent!important; /* For now this is a quick fix a rendering issue due to inherited background */ + border: 1px solid transparent; + padding: 2px; + cursor: col-resize; +} + +#script { + position: absolute; + top: 32px; + left: 0px; + right: 300px; + bottom: 32px; + opacity: 0.9; +} + +#player { + position: absolute; + top: 32px; + left: 0px; + right: 300px; + bottom: 32px; +} + +#menubar { + position: absolute; + width: 100%; + height: 32px; + background: #eee; + padding: 0px; + margin: 0px; + right: 0px; + top: 0px; +} + + #menubar .menu { + float: left; + cursor: pointer; + padding-right: 8px; + } + + #menubar .menu.right { + float: right; + cursor: auto; + text-align: right; + } + + #menubar .menu .title { + display: inline-block; + color: #888; + margin: 0px; + padding: 8px; + } + + #menubar .menu .options { + position: absolute; + display: none; + padding: 5px 0px; + background: #eee; + width: 150px; + } + + #menubar .menu:hover .options { + display: block; + } + + #menubar .menu .options hr { + border-color: #ddd; + } + + #menubar .menu .options .option { + color: #666; + background-color: transparent; + padding: 5px 10px; + margin: 0px !important; + } + + #menubar .menu .options .option:hover { + color: #fff; + background-color: #08f; + } + + #menubar .menu .options .option:active { + color: #666; + background: transparent; + } + +#sidebar { + position: absolute; + right: 0px; + top: 32px; + bottom: 0px; + width: 300px; + background: #eee; + overflow: auto; +} + + #sidebar * { + vertical-align: middle; + } + + #sidebar input, + #sidebar textarea, + #sidebar select { + border: 1px solid transparent; + color: #444; + } + + #sidebar .Panel { + margin-bottom: 10px; + } + + #sidebar .Panel.collapsed { + margin-bottom: 0px; + } + + #sidebar > .Panel { + color: #888; + padding: 10px; + border-top: 1px solid #ccc; + } + +#toolbar { + position: absolute; + left: 0px; + right: 300px; + bottom: 0px; + height: 32px; + background: #eee; + color: #333; +} + + #toolbar * { + vertical-align: middle; + } + + #toolbar .Panel { + padding: 4px; + color: #888; + } + + #toolbar button { + margin-right: 6px; + } diff --git a/doodle_app/css/main.css b/doodle_app/css/main.css new file mode 100755 index 0000000..8e4319c --- /dev/null +++ b/doodle_app/css/main.css @@ -0,0 +1,146 @@ +body { + font-family: Helvetica, Arial, sans-serif; + font-size: 14px; + margin: 0; + overflow: hidden; +} + +hr { + border: 0px; + border-top: 1px solid #ccc; +} + +button { + position: relative; +} + +textarea { + tab-size: 4; + white-space: pre; + word-wrap: normal; +} + + textarea.success { + border-color: #8b8 !important; + } + + textarea.fail { + border-color: #f00 !important; + background-color: rgba(255,0,0,0.05); + } + +textarea, input { outline: none; } /* osx */ + +.Panel { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + + /* No support for these yet */ + -o-user-select: none; + user-select: none; +} + + .Panel.Collapsible .Static { + margin: 0px; + } + + .Panel.Collapsible .Static .Button { + float: left; + margin-right: 6px; + width: 0px; + height: 0px; + border: 6px solid transparent; + } + + .Panel.Collapsible.collapsed .Static .Button { + margin-top: 2px; + border-left-color: #bbb; + } + + .Panel.Collapsible:not(.collapsed) .Static .Button { + margin-top: 6px; + border-top-color: #bbb; + } + + .Panel.Collapsible.collapsed .Content { + display: none; + } + +/* CodeMirror */ + +.CodeMirror { + + position: absolute !important; + top: 37px; + width: 100% !important; + height: calc(100% - 37px) !important; + +} + + .CodeMirror .errorLine { + + background: rgba(255,0,0,0.25); + + } + + .CodeMirror .esprima-error { + + color: #f00; + text-align: right; + padding: 0px 20px; + + } + +/* scene types */ + +.type { + position:relative; + top:-2px; + padding: 0px 2px; + color: #ddd; +} +.type:after { + content: '■'; +} + +.Scene { + color: #ccccff; +} + +.Object3D { + color: #aaaaee; +} + +.Mesh { + color: #8888ee; +} + +/* */ + +.PointLight { + color: #dddd00; +} + +/* */ + +.Geometry { + color: #88ff88; +} + +.BoxGeometry { + color: #bbeebb; +} +.TorusGeometry { + color: #aaeeaa; +} + +/* */ + +.Material { + color: #ff8888; +} + +.MeshPhongMaterial { + color: #ffaa88; +} diff --git a/doodle_app/index.html b/doodle_app/index.html index 2551d34..9d043e2 100644 --- a/doodle_app/index.html +++ b/doodle_app/index.html @@ -4,7 +4,12 @@ Doodle 3D App + + + + + @@ -13,34 +18,38 @@ - - - - - - - + + + + + + + - - - - diff --git a/doodle_app/js/DrawCanvas.js b/doodle_app/js/DrawCanvas.js new file mode 100644 index 0000000..552effa --- /dev/null +++ b/doodle_app/js/DrawCanvas.js @@ -0,0 +1,86 @@ +function DrawCanvas (scene) { + "use strict"; + + this.domElement = document.createElement("canvas"); + + paper.setup(this.domElement); + + var path = new paper.Path(); + + this.scene = scene; + this.test(); +}; +DrawCanvas.prototype.test = function () { + "use strict"; + var scope = this; + + var a = []; + + var tool = new paper.Tool(); + + var path; + + tool.onMouseDown = function (event) { + if (path) { + path.selected = false; + } + + a.push(event.point); + + path = new paper.Path({ + segments: [event.point], + strokeColor: 'black', + fullySelected: true + }); + } + + tool.onMouseDrag = function(event) { + path.add(event.point); + + a.push(event.point); + } + + tool.onMouseUp = function (event) { + console.log(path); + + var shape = new THREE.Shape(); + + for (var i = 0; i < a.length; i ++) { + var point = a[i % a.length]; + + if (i === 0) { + shape.moveTo(point.y, point.x); + } + else { + shape.lineTo(point.y, point.x); + } + } + var geometry = new THREE.ExtrudeGeometry(shape, { + amount: 40, + bevelEnabled: true, + bevelSegments: 2, + steps: 2, + bevelSize: 1, + bevelThickness: 1 + }); + var mesh = new THREE.Mesh(geometry, new THREE.MeshLambertMaterial({color: 0xff0000})); + mesh.rotation.x = -Math.PI/2; + + mesh.position.x = -400; + mesh.position.z = 200; + + a = []; + + scope.scene.add(mesh); + + // Select the path, so we can see its segments: + path.fullySelected = true; + } +}; +DrawCanvas.prototype.setSize = function (width, height) { + "use strict"; + + paper.view.viewSize = new paper.Size(width, height); + paper.view.draw(); + +}; \ No newline at end of file diff --git a/doodle_app/lib/paper-core.js b/doodle_app/lib/paper-core.js new file mode 100644 index 0000000..99f062b --- /dev/null +++ b/doodle_app/lib/paper-core.js @@ -0,0 +1,12694 @@ +/*! + * Paper.js v0.9.22 - The Swiss Army Knife of Vector Graphics Scripting. + * http://paperjs.org/ + * + * Copyright (c) 2011 - 2014, Juerg Lehni & Jonathan Puckey + * http://scratchdisk.com/ & http://jonathanpuckey.com/ + * + * Distributed under the MIT license. See LICENSE file for details. + * + * All rights reserved. + * + * Date: Sat Feb 28 19:20:48 2015 +0100 + * + *** + * + * Straps.js - Class inheritance library with support for bean-style accessors + * + * Copyright (c) 2006 - 2013 Juerg Lehni + * http://scratchdisk.com/ + * + * Distributed under the MIT license. + * + *** + * + * Acorn.js + * http://marijnhaverbeke.nl/acorn/ + * + * Acorn is a tiny, fast JavaScript parser written in JavaScript, + * created by Marijn Haverbeke and released under an MIT license. + * + */ + +var paper = new function(undefined) { + +var Base = new function() { + var hidden = /^(statics|enumerable|beans|preserve)$/, + + forEach = [].forEach || function(iter, bind) { + for (var i = 0, l = this.length; i < l; i++) + iter.call(bind, this[i], i, this); + }, + + forIn = function(iter, bind) { + for (var i in this) + if (this.hasOwnProperty(i)) + iter.call(bind, this[i], i, this); + }, + + create = Object.create || function(proto) { + return { __proto__: proto }; + }, + + describe = Object.getOwnPropertyDescriptor || function(obj, name) { + var get = obj.__lookupGetter__ && obj.__lookupGetter__(name); + return get + ? { get: get, set: obj.__lookupSetter__(name), + enumerable: true, configurable: true } + : obj.hasOwnProperty(name) + ? { value: obj[name], enumerable: true, + configurable: true, writable: true } + : null; + }, + + _define = Object.defineProperty || function(obj, name, desc) { + if ((desc.get || desc.set) && obj.__defineGetter__) { + if (desc.get) + obj.__defineGetter__(name, desc.get); + if (desc.set) + obj.__defineSetter__(name, desc.set); + } else { + obj[name] = desc.value; + } + return obj; + }, + + define = function(obj, name, desc) { + delete obj[name]; + return _define(obj, name, desc); + }; + + function inject(dest, src, enumerable, beans, preserve) { + var beansNames = {}; + + function field(name, val) { + val = val || (val = describe(src, name)) + && (val.get ? val : val.value); + if (typeof val === 'string' && val[0] === '#') + val = dest[val.substring(1)] || val; + var isFunc = typeof val === 'function', + res = val, + prev = preserve || isFunc + ? (val && val.get ? name in dest : dest[name]) + : null, + bean; + if (!preserve || !prev) { + if (isFunc && prev) + val.base = prev; + if (isFunc && beans !== false + && (bean = name.match(/^([gs]et|is)(([A-Z])(.*))$/))) + beansNames[bean[3].toLowerCase() + bean[4]] = bean[2]; + if (!res || isFunc || !res.get || typeof res.get !== 'function' + || !Base.isPlainObject(res)) + res = { value: res, writable: true }; + if ((describe(dest, name) + || { configurable: true }).configurable) { + res.configurable = true; + res.enumerable = enumerable; + } + define(dest, name, res); + } + } + if (src) { + for (var name in src) { + if (src.hasOwnProperty(name) && !hidden.test(name)) + field(name); + } + for (var name in beansNames) { + var part = beansNames[name], + set = dest['set' + part], + get = dest['get' + part] || set && dest['is' + part]; + if (get && (beans === true || get.length === 0)) + field(name, { get: get, set: set }); + } + } + return dest; + } + + function each(obj, iter, bind) { + if (obj) + ('length' in obj && !obj.getLength + && typeof obj.length === 'number' + ? forEach + : forIn).call(obj, iter, bind = bind || obj); + return bind; + } + + function set(obj, props, exclude) { + for (var key in props) + if (props.hasOwnProperty(key) && !(exclude && exclude[key])) + obj[key] = props[key]; + return obj; + } + + return inject(function Base() { + for (var i = 0, l = arguments.length; i < l; i++) + set(this, arguments[i]); + }, { + inject: function(src) { + if (src) { + var statics = src.statics === true ? src : src.statics, + beans = src.beans, + preserve = src.preserve; + if (statics !== src) + inject(this.prototype, src, src.enumerable, beans, preserve); + inject(this, statics, true, beans, preserve); + } + for (var i = 1, l = arguments.length; i < l; i++) + this.inject(arguments[i]); + return this; + }, + + extend: function() { + var base = this, + ctor; + for (var i = 0, l = arguments.length; i < l; i++) + if (ctor = arguments[i].initialize) + break; + ctor = ctor || function() { + base.apply(this, arguments); + }; + ctor.prototype = create(this.prototype); + ctor.base = base; + define(ctor.prototype, 'constructor', + { value: ctor, writable: true, configurable: true }); + inject(ctor, this, true); + return arguments.length ? this.inject.apply(ctor, arguments) : ctor; + } + }, true).inject({ + inject: function() { + for (var i = 0, l = arguments.length; i < l; i++) { + var src = arguments[i]; + if (src) + inject(this, src, src.enumerable, src.beans, src.preserve); + } + return this; + }, + + extend: function() { + var res = create(this); + return res.inject.apply(res, arguments); + }, + + each: function(iter, bind) { + return each(this, iter, bind); + }, + + set: function(props) { + return set(this, props); + }, + + clone: function() { + return new this.constructor(this); + }, + + statics: { + each: each, + create: create, + define: define, + describe: describe, + set: set, + + clone: function(obj) { + return set(new obj.constructor(), obj); + }, + + isPlainObject: function(obj) { + var ctor = obj != null && obj.constructor; + return ctor && (ctor === Object || ctor === Base + || ctor.name === 'Object'); + }, + + pick: function(a, b) { + return a !== undefined ? a : b; + } + } + }); +}; + +if (typeof module !== 'undefined') + module.exports = Base; + +Base.inject({ + toString: function() { + return this._id != null + ? (this._class || 'Object') + (this._name + ? " '" + this._name + "'" + : ' @' + this._id) + : '{ ' + Base.each(this, function(value, key) { + if (!/^_/.test(key)) { + var type = typeof value; + this.push(key + ': ' + (type === 'number' + ? Formatter.instance.number(value) + : type === 'string' ? "'" + value + "'" : value)); + } + }, []).join(', ') + ' }'; + }, + + getClassName: function() { + return this._class || ''; + }, + + exportJSON: function(options) { + return Base.exportJSON(this, options); + }, + + toJSON: function() { + return Base.serialize(this); + }, + + _set: function(props, exclude, dontCheck) { + if (props && (dontCheck || Base.isPlainObject(props))) { + var orig = props._filtering || props; + for (var key in orig) { + if (orig.hasOwnProperty(key) && !(exclude && exclude[key])) { + var value = props[key]; + if (value !== undefined) + this[key] = value; + } + } + return true; + } + }, + + statics: { + + exports: { + enumerable: true + }, + + extend: function extend() { + var res = extend.base.apply(this, arguments), + name = res.prototype._class; + if (name && !Base.exports[name]) + Base.exports[name] = res; + return res; + }, + + equals: function(obj1, obj2) { + function checkKeys(o1, o2) { + for (var i in o1) + if (o1.hasOwnProperty(i) && !o2.hasOwnProperty(i)) + return false; + return true; + } + if (obj1 === obj2) + return true; + if (obj1 && obj1.equals) + return obj1.equals(obj2); + if (obj2 && obj2.equals) + return obj2.equals(obj1); + if (Array.isArray(obj1) && Array.isArray(obj2)) { + if (obj1.length !== obj2.length) + return false; + for (var i = 0, l = obj1.length; i < l; i++) { + if (!Base.equals(obj1[i], obj2[i])) + return false; + } + return true; + } + if (obj1 && typeof obj1 === 'object' + && obj2 && typeof obj2 === 'object') { + if (!checkKeys(obj1, obj2) || !checkKeys(obj2, obj1)) + return false; + for (var i in obj1) { + if (obj1.hasOwnProperty(i) + && !Base.equals(obj1[i], obj2[i])) + return false; + } + return true; + } + return false; + }, + + read: function(list, start, options, length) { + if (this === Base) { + var value = this.peek(list, start); + list.__index++; + return value; + } + var proto = this.prototype, + readIndex = proto._readIndex, + index = start || readIndex && list.__index || 0; + if (!length) + length = list.length - index; + var obj = list[index]; + if (obj instanceof this + || options && options.readNull && obj == null && length <= 1) { + if (readIndex) + list.__index = index + 1; + return obj && options && options.clone ? obj.clone() : obj; + } + obj = Base.create(this.prototype); + if (readIndex) + obj.__read = true; + obj = obj.initialize.apply(obj, index > 0 || length < list.length + ? Array.prototype.slice.call(list, index, index + length) + : list) || obj; + if (readIndex) { + list.__index = index + obj.__read; + obj.__read = undefined; + } + return obj; + }, + + peek: function(list, start) { + return list[list.__index = start || list.__index || 0]; + }, + + remain: function(list) { + return list.length - (list.__index || 0); + }, + + readAll: function(list, start, options) { + var res = [], + entry; + for (var i = start || 0, l = list.length; i < l; i++) { + res.push(Array.isArray(entry = list[i]) + ? this.read(entry, 0, options) + : this.read(list, i, options, 1)); + } + return res; + }, + + readNamed: function(list, name, start, options, length) { + var value = this.getNamed(list, name), + hasObject = value !== undefined; + if (hasObject) { + var filtered = list._filtered; + if (!filtered) { + filtered = list._filtered = Base.create(list[0]); + filtered._filtering = list[0]; + } + filtered[name] = undefined; + } + return this.read(hasObject ? [value] : list, start, options, length); + }, + + getNamed: function(list, name) { + var arg = list[0]; + if (list._hasObject === undefined) + list._hasObject = list.length === 1 && Base.isPlainObject(arg); + if (list._hasObject) + return name ? arg[name] : list._filtered || arg; + }, + + hasNamed: function(list, name) { + return !!this.getNamed(list, name); + }, + + isPlainValue: function(obj, asString) { + return this.isPlainObject(obj) || Array.isArray(obj) + || asString && typeof obj === 'string'; + }, + + serialize: function(obj, options, compact, dictionary) { + options = options || {}; + + var root = !dictionary, + res; + if (root) { + options.formatter = new Formatter(options.precision); + dictionary = { + length: 0, + definitions: {}, + references: {}, + add: function(item, create) { + var id = '#' + item._id, + ref = this.references[id]; + if (!ref) { + this.length++; + var res = create.call(item), + name = item._class; + if (name && res[0] !== name) + res.unshift(name); + this.definitions[id] = res; + ref = this.references[id] = [id]; + } + return ref; + } + }; + } + if (obj && obj._serialize) { + res = obj._serialize(options, dictionary); + var name = obj._class; + if (name && !compact && !res._compact && res[0] !== name) + res.unshift(name); + } else if (Array.isArray(obj)) { + res = []; + for (var i = 0, l = obj.length; i < l; i++) + res[i] = Base.serialize(obj[i], options, compact, + dictionary); + if (compact) + res._compact = true; + } else if (Base.isPlainObject(obj)) { + res = {}; + for (var i in obj) + if (obj.hasOwnProperty(i)) + res[i] = Base.serialize(obj[i], options, compact, + dictionary); + } else if (typeof obj === 'number') { + res = options.formatter.number(obj, options.precision); + } else { + res = obj; + } + return root && dictionary.length > 0 + ? [['dictionary', dictionary.definitions], res] + : res; + }, + + deserialize: function(json, create, _data) { + var res = json, + isRoot = !_data; + _data = _data || {}; + if (Array.isArray(json)) { + var type = json[0], + isDictionary = type === 'dictionary'; + if (!isDictionary) { + if (_data.dictionary && json.length == 1 && /^#/.test(type)) + return _data.dictionary[type]; + type = Base.exports[type]; + } + res = []; + for (var i = type ? 1 : 0, l = json.length; i < l; i++) + res.push(Base.deserialize(json[i], create, _data)); + if (isDictionary) { + _data.dictionary = res[0]; + } else if (type) { + var args = res; + if (create) { + res = create(type, args); + } else { + res = Base.create(type.prototype); + type.apply(res, args); + } + } + } else if (Base.isPlainObject(json)) { + res = {}; + for (var key in json) + res[key] = Base.deserialize(json[key], create, _data); + } + return isRoot && json && json.length && json[0][0] === 'dictionary' + ? res[1] + : res; + }, + + exportJSON: function(obj, options) { + var json = Base.serialize(obj, options); + return options && options.asString === false + ? json + : JSON.stringify(json); + }, + + importJSON: function(json, target) { + return Base.deserialize( + typeof json === 'string' ? JSON.parse(json) : json, + function(type, args) { + var obj = target && target.constructor === type + ? target + : Base.create(type.prototype), + isTarget = obj === target; + if (args.length === 1 && obj instanceof Item + && (isTarget || !(obj instanceof Layer))) { + var arg = args[0]; + if (Base.isPlainObject(arg)) + arg.insert = false; + } + type.apply(obj, args); + if (isTarget) + target = null; + return obj; + }); + }, + + splice: function(list, items, index, remove) { + var amount = items && items.length, + append = index === undefined; + index = append ? list.length : index; + if (index > list.length) + index = list.length; + for (var i = 0; i < amount; i++) + items[i]._index = index + i; + if (append) { + list.push.apply(list, items); + return []; + } else { + var args = [index, remove]; + if (items) + args.push.apply(args, items); + var removed = list.splice.apply(list, args); + for (var i = 0, l = removed.length; i < l; i++) + removed[i]._index = undefined; + for (var i = index + amount, l = list.length; i < l; i++) + list[i]._index = i; + return removed; + } + }, + + capitalize: function(str) { + return str.replace(/\b[a-z]/g, function(match) { + return match.toUpperCase(); + }); + }, + + camelize: function(str) { + return str.replace(/-(.)/g, function(all, chr) { + return chr.toUpperCase(); + }); + }, + + hyphenate: function(str) { + return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); + } + } +}); + +var Emitter = { + on: function(type, func) { + if (typeof type !== 'string') { + Base.each(type, function(value, key) { + this.on(key, value); + }, this); + } else { + var entry = this._eventTypes[type]; + if (entry) { + var handlers = this._callbacks = this._callbacks || {}; + handlers = handlers[type] = handlers[type] || []; + if (handlers.indexOf(func) === -1) { + handlers.push(func); + if (entry.install && handlers.length == 1) + entry.install.call(this, type); + } + } + } + return this; + }, + + off: function(type, func) { + if (typeof type !== 'string') { + Base.each(type, function(value, key) { + this.off(key, value); + }, this); + return; + } + var entry = this._eventTypes[type], + handlers = this._callbacks && this._callbacks[type], + index; + if (entry && handlers) { + if (!func || (index = handlers.indexOf(func)) !== -1 + && handlers.length === 1) { + if (entry.uninstall) + entry.uninstall.call(this, type); + delete this._callbacks[type]; + } else if (index !== -1) { + handlers.splice(index, 1); + } + } + return this; + }, + + once: function(type, func) { + return this.on(type, function() { + func.apply(this, arguments); + this.off(type, func); + }); + }, + + emit: function(type, event) { + var handlers = this._callbacks && this._callbacks[type]; + if (!handlers) + return false; + var args = [].slice.call(arguments, 1); + for (var i = 0, l = handlers.length; i < l; i++) { + if (handlers[i].apply(this, args) === false + && event && event.stop) { + event.stop(); + break; + } + } + return true; + }, + + responds: function(type) { + return !!(this._callbacks && this._callbacks[type]); + }, + + attach: '#on', + detach: '#off', + fire: '#emit', + + _installEvents: function(install) { + var handlers = this._callbacks, + key = install ? 'install' : 'uninstall'; + for (var type in handlers) { + if (handlers[type].length > 0) { + var entry = this._eventTypes[type], + func = entry[key]; + if (func) + func.call(this, type); + } + } + }, + + statics: { + inject: function inject(src) { + var events = src._events; + if (events) { + var types = {}; + Base.each(events, function(entry, key) { + var isString = typeof entry === 'string', + name = isString ? entry : key, + part = Base.capitalize(name), + type = name.substring(2).toLowerCase(); + types[type] = isString ? {} : entry; + name = '_' + name; + src['get' + part] = function() { + return this[name]; + }; + src['set' + part] = function(func) { + var prev = this[name]; + if (prev) + this.off(type, prev); + if (func) + this.on(type, func); + this[name] = func; + }; + }); + src._eventTypes = types; + } + return inject.base.apply(this, arguments); + } + } +}; + +var PaperScope = Base.extend({ + _class: 'PaperScope', + + initialize: function PaperScope() { + paper = this; + this.settings = new Base({ + applyMatrix: true, + handleSize: 4, + hitTolerance: 0 + }); + this.project = null; + this.projects = []; + this.tools = []; + this.palettes = []; + this._id = PaperScope._id++; + PaperScope._scopes[this._id] = this; + var proto = PaperScope.prototype; + if (!this.support) { + var ctx = CanvasProvider.getContext(1, 1); + proto.support = { + nativeDash: 'setLineDash' in ctx || 'mozDash' in ctx, + nativeBlendModes: BlendMode.nativeModes + }; + CanvasProvider.release(ctx); + } + + if (!this.browser) { + var browser = proto.browser = {}; + navigator.userAgent.toLowerCase().replace( + /(opera|chrome|safari|webkit|firefox|msie|trident|atom)\/?\s*([.\d]+)(?:.*version\/([.\d]+))?(?:.*rv\:([.\d]+))?/g, + function(all, n, v1, v2, rv) { + if (!browser.chrome) { + var v = n === 'opera' ? v2 : v1; + if (n === 'trident') { + v = rv; + n = 'msie'; + } + browser.version = v; + browser.versionNumber = parseFloat(v); + browser.name = n; + browser[n] = true; + } + } + ); + if (browser.chrome) + delete browser.webkit; + if (browser.atom) + delete browser.chrome; + } + }, + + version: '0.9.22', + + getView: function() { + return this.project && this.project.getView(); + }, + + getPaper: function() { + return this; + }, + + execute: function(code, url, options) { + paper.PaperScript.execute(code, this, url, options); + View.updateFocus(); + }, + + install: function(scope) { + var that = this; + Base.each(['project', 'view', 'tool'], function(key) { + Base.define(scope, key, { + configurable: true, + get: function() { + return that[key]; + } + }); + }); + for (var key in this) + if (!/^_/.test(key) && this[key]) + scope[key] = this[key]; + }, + + setup: function(element) { + paper = this; + this.project = new Project(element); + return this; + }, + + activate: function() { + paper = this; + }, + + clear: function() { + for (var i = this.projects.length - 1; i >= 0; i--) + this.projects[i].remove(); + for (var i = this.tools.length - 1; i >= 0; i--) + this.tools[i].remove(); + for (var i = this.palettes.length - 1; i >= 0; i--) + this.palettes[i].remove(); + }, + + remove: function() { + this.clear(); + delete PaperScope._scopes[this._id]; + }, + + statics: new function() { + function handleAttribute(name) { + name += 'Attribute'; + return function(el, attr) { + return el[name](attr) || el[name]('data-paper-' + attr); + }; + } + + return { + _scopes: {}, + _id: 0, + + get: function(id) { + return this._scopes[id] || null; + }, + + getAttribute: handleAttribute('get'), + hasAttribute: handleAttribute('has') + }; + } +}); + +var PaperScopeItem = Base.extend(Emitter, { + + initialize: function(activate) { + this._scope = paper; + this._index = this._scope[this._list].push(this) - 1; + if (activate || !this._scope[this._reference]) + this.activate(); + }, + + activate: function() { + if (!this._scope) + return false; + var prev = this._scope[this._reference]; + if (prev && prev !== this) + prev.emit('deactivate'); + this._scope[this._reference] = this; + this.emit('activate', prev); + return true; + }, + + isActive: function() { + return this._scope[this._reference] === this; + }, + + remove: function() { + if (this._index == null) + return false; + Base.splice(this._scope[this._list], null, this._index, 1); + if (this._scope[this._reference] == this) + this._scope[this._reference] = null; + this._scope = null; + return true; + } +}); + +var Formatter = Base.extend({ + initialize: function(precision) { + this.precision = precision || 5; + this.multiplier = Math.pow(10, this.precision); + }, + + number: function(val) { + return Math.round(val * this.multiplier) / this.multiplier; + }, + + pair: function(val1, val2, separator) { + return this.number(val1) + (separator || ',') + this.number(val2); + }, + + point: function(val, separator) { + return this.number(val.x) + (separator || ',') + this.number(val.y); + }, + + size: function(val, separator) { + return this.number(val.width) + (separator || ',') + + this.number(val.height); + }, + + rectangle: function(val, separator) { + return this.point(val, separator) + (separator || ',') + + this.size(val, separator); + } +}); + +Formatter.instance = new Formatter(); + +var Numerical = new function() { + + var abscissas = [ + [ 0.5773502691896257645091488], + [0,0.7745966692414833770358531], + [ 0.3399810435848562648026658,0.8611363115940525752239465], + [0,0.5384693101056830910363144,0.9061798459386639927976269], + [ 0.2386191860831969086305017,0.6612093864662645136613996,0.9324695142031520278123016], + [0,0.4058451513773971669066064,0.7415311855993944398638648,0.9491079123427585245261897], + [ 0.1834346424956498049394761,0.5255324099163289858177390,0.7966664774136267395915539,0.9602898564975362316835609], + [0,0.3242534234038089290385380,0.6133714327005903973087020,0.8360311073266357942994298,0.9681602395076260898355762], + [ 0.1488743389816312108848260,0.4333953941292471907992659,0.6794095682990244062343274,0.8650633666889845107320967,0.9739065285171717200779640], + [0,0.2695431559523449723315320,0.5190961292068118159257257,0.7301520055740493240934163,0.8870625997680952990751578,0.9782286581460569928039380], + [ 0.1252334085114689154724414,0.3678314989981801937526915,0.5873179542866174472967024,0.7699026741943046870368938,0.9041172563704748566784659,0.9815606342467192506905491], + [0,0.2304583159551347940655281,0.4484927510364468528779129,0.6423493394403402206439846,0.8015780907333099127942065,0.9175983992229779652065478,0.9841830547185881494728294], + [ 0.1080549487073436620662447,0.3191123689278897604356718,0.5152486363581540919652907,0.6872929048116854701480198,0.8272013150697649931897947,0.9284348836635735173363911,0.9862838086968123388415973], + [0,0.2011940939974345223006283,0.3941513470775633698972074,0.5709721726085388475372267,0.7244177313601700474161861,0.8482065834104272162006483,0.9372733924007059043077589,0.9879925180204854284895657], + [ 0.0950125098376374401853193,0.2816035507792589132304605,0.4580167776572273863424194,0.6178762444026437484466718,0.7554044083550030338951012,0.8656312023878317438804679,0.9445750230732325760779884,0.9894009349916499325961542] + ]; + + var weights = [ + [1], + [0.8888888888888888888888889,0.5555555555555555555555556], + [0.6521451548625461426269361,0.3478548451374538573730639], + [0.5688888888888888888888889,0.4786286704993664680412915,0.2369268850561890875142640], + [0.4679139345726910473898703,0.3607615730481386075698335,0.1713244923791703450402961], + [0.4179591836734693877551020,0.3818300505051189449503698,0.2797053914892766679014678,0.1294849661688696932706114], + [0.3626837833783619829651504,0.3137066458778872873379622,0.2223810344533744705443560,0.1012285362903762591525314], + [0.3302393550012597631645251,0.3123470770400028400686304,0.2606106964029354623187429,0.1806481606948574040584720,0.0812743883615744119718922], + [0.2955242247147528701738930,0.2692667193099963550912269,0.2190863625159820439955349,0.1494513491505805931457763,0.0666713443086881375935688], + [0.2729250867779006307144835,0.2628045445102466621806889,0.2331937645919904799185237,0.1862902109277342514260976,0.1255803694649046246346943,0.0556685671161736664827537], + [0.2491470458134027850005624,0.2334925365383548087608499,0.2031674267230659217490645,0.1600783285433462263346525,0.1069393259953184309602547,0.0471753363865118271946160], + [0.2325515532308739101945895,0.2262831802628972384120902,0.2078160475368885023125232,0.1781459807619457382800467,0.1388735102197872384636018,0.0921214998377284479144218,0.0404840047653158795200216], + [0.2152638534631577901958764,0.2051984637212956039659241,0.1855383974779378137417166,0.1572031671581935345696019,0.1215185706879031846894148,0.0801580871597602098056333,0.0351194603317518630318329], + [0.2025782419255612728806202,0.1984314853271115764561183,0.1861610000155622110268006,0.1662692058169939335532009,0.1395706779261543144478048,0.1071592204671719350118695,0.0703660474881081247092674,0.0307532419961172683546284], + [0.1894506104550684962853967,0.1826034150449235888667637,0.1691565193950025381893121,0.1495959888165767320815017,0.1246289712555338720524763,0.0951585116824927848099251,0.0622535239386478928628438,0.0271524594117540948517806] + ]; + + var abs = Math.abs, + sqrt = Math.sqrt, + pow = Math.pow, + TOLERANCE = 1e-6, + EPSILON = 1e-12, + MACHINE_EPSILON = 1.12e-16; + + return { + TOLERANCE: TOLERANCE, + EPSILON: EPSILON, + MACHINE_EPSILON: MACHINE_EPSILON, + KAPPA: 4 * (sqrt(2) - 1) / 3, + + isZero: function(val) { + return abs(val) <= EPSILON; + }, + + integrate: function(f, a, b, n) { + var x = abscissas[n - 2], + w = weights[n - 2], + A = (b - a) * 0.5, + B = A + a, + i = 0, + m = (n + 1) >> 1, + sum = n & 1 ? w[i++] * f(B) : 0; + while (i < m) { + var Ax = A * x[i]; + sum += w[i++] * (f(B + Ax) + f(B - Ax)); + } + return A * sum; + }, + + findRoot: function(f, df, x, a, b, n, tolerance) { + for (var i = 0; i < n; i++) { + var fx = f(x), + dx = fx / df(x), + nx = x - dx; + if (abs(dx) < tolerance) + return nx; + if (fx > 0) { + b = x; + x = nx <= a ? (a + b) * 0.5 : nx; + } else { + a = x; + x = nx >= b ? (a + b) * 0.5 : nx; + } + } + return x; + }, + + solveQuadratic: function(a, b, c, roots, min, max) { + var count = 0, + x1, x2 = Infinity, + B = b, + D; + b /= 2; + D = b * b - a * c; + if (abs(D) < MACHINE_EPSILON) { + var pow = Math.pow, + gmC = pow(abs(a*b*c), 1/3); + if (gmC < 1e-8) { + /* + * we multiply with a factor to normalize the + * coefficients. The factor is just the nearest exponent + * of 10, big enough to raise all the coefficients to + * nearly [-1, +1] range. + */ + var mult = pow(10, abs( + Math.floor(Math.log(gmC) * Math.LOG10E))); + if (!isFinite(mult)) + mult = 0; + a *= mult; + b *= mult; + c *= mult; + D = b * b - a * c; + } + } + if (abs(a) < MACHINE_EPSILON) { + if (abs(B) < MACHINE_EPSILON) + return abs(c) < MACHINE_EPSILON ? -1 : 0; + x1 = -c / B; + } else { + if (D >= -MACHINE_EPSILON) { + D = D < 0 ? 0 : D; + var R = sqrt(D); + if (b >= MACHINE_EPSILON && b <= MACHINE_EPSILON) { + x1 = abs(a) >= abs(c) ? R / a : -c / R; + x2 = -x1; + } else { + var q = -(b + (b < 0 ? -1 : 1) * R); + x1 = q / a; + x2 = c / q; + } + } + } + if (isFinite(x1) && (min == null || x1 >= min && x1 <= max)) + roots[count++] = x1; + if (x2 !== x1 + && isFinite(x2) && (min == null || x2 >= min && x2 <= max)) + roots[count++] = x2; + return count; + }, + + solveCubic: function(a, b, c, d, roots, min, max) { + var x, b1, c2, count = 0; + if (a === 0) { + a = b; + b1 = c; + c2 = d; + x = Infinity; + } else if (d === 0) { + b1 = b; + c2 = c; + x = 0; + } else { + var ec = 1 + MACHINE_EPSILON, + x0, q, qd, t, r, s, tmp; + x = -(b / a) / 3; + tmp = a * x, + b1 = tmp + b, + c2 = b1 * x + c, + qd = (tmp + b1) * x + c2, + q = c2 * x + d; + t = q /a; + r = pow(abs(t), 1/3); + s = t < 0 ? -1 : 1; + t = -qd / a; + r = t > 0 ? 1.3247179572 * Math.max(r, sqrt(t)) : r; + x0 = x - s * r; + if (x0 !== x) { + do { + x = x0; + tmp = a * x, + b1 = tmp + b, + c2 = b1 * x + c, + qd = (tmp + b1) * x + c2, + q = c2 * x + d; + x0 = qd === 0 ? x : x - q / qd / ec; + if (x0 === x) { + x = x0; + break; + } + } while (s * x0 > s * x); + if (abs(a) * x * x > abs(d / x)) { + c2 = -d / x; + b1 = (c2 - c) / x; + } + } + } + var count = Numerical.solveQuadratic(a, b1, c2, roots, min, max); + if (isFinite(x) && (count === 0 || x !== roots[count - 1]) + && (min == null || x >= min && x <= max)) + roots[count++] = x; + return count; + } + }; +}; + +var Point = Base.extend({ + _class: 'Point', + _readIndex: true, + + initialize: function Point(arg0, arg1) { + var type = typeof arg0; + if (type === 'number') { + var hasY = typeof arg1 === 'number'; + this.x = arg0; + this.y = hasY ? arg1 : arg0; + if (this.__read) + this.__read = hasY ? 2 : 1; + } else if (type === 'undefined' || arg0 === null) { + this.x = this.y = 0; + if (this.__read) + this.__read = arg0 === null ? 1 : 0; + } else { + if (Array.isArray(arg0)) { + this.x = arg0[0]; + this.y = arg0.length > 1 ? arg0[1] : arg0[0]; + } else if (arg0.x != null) { + this.x = arg0.x; + this.y = arg0.y; + } else if (arg0.width != null) { + this.x = arg0.width; + this.y = arg0.height; + } else if (arg0.angle != null) { + this.x = arg0.length; + this.y = 0; + this.setAngle(arg0.angle); + } else { + this.x = this.y = 0; + if (this.__read) + this.__read = 0; + } + if (this.__read) + this.__read = 1; + } + }, + + set: function(x, y) { + this.x = x; + this.y = y; + return this; + }, + + equals: function(point) { + return this === point || point + && (this.x === point.x && this.y === point.y + || Array.isArray(point) + && this.x === point[0] && this.y === point[1]) + || false; + }, + + clone: function() { + return new Point(this.x, this.y); + }, + + toString: function() { + var f = Formatter.instance; + return '{ x: ' + f.number(this.x) + ', y: ' + f.number(this.y) + ' }'; + }, + + _serialize: function(options) { + var f = options.formatter; + return [f.number(this.x), f.number(this.y)]; + }, + + getLength: function() { + return Math.sqrt(this.x * this.x + this.y * this.y); + }, + + setLength: function(length) { + if (this.isZero()) { + var angle = this._angle || 0; + this.set( + Math.cos(angle) * length, + Math.sin(angle) * length + ); + } else { + var scale = length / this.getLength(); + if (Numerical.isZero(scale)) + this.getAngle(); + this.set( + this.x * scale, + this.y * scale + ); + } + }, + getAngle: function() { + return this.getAngleInRadians.apply(this, arguments) * 180 / Math.PI; + }, + + setAngle: function(angle) { + this.setAngleInRadians.call(this, angle * Math.PI / 180); + }, + + getAngleInDegrees: '#getAngle', + setAngleInDegrees: '#setAngle', + + getAngleInRadians: function() { + if (!arguments.length) { + return this.isZero() + ? this._angle || 0 + : this._angle = Math.atan2(this.y, this.x); + } else { + var point = Point.read(arguments), + div = this.getLength() * point.getLength(); + if (Numerical.isZero(div)) { + return NaN; + } else { + var a = this.dot(point) / div; + return Math.acos(a < -1 ? -1 : a > 1 ? 1 : a); + } + } + }, + + setAngleInRadians: function(angle) { + this._angle = angle; + if (!this.isZero()) { + var length = this.getLength(); + this.set( + Math.cos(angle) * length, + Math.sin(angle) * length + ); + } + }, + + getQuadrant: function() { + return this.x >= 0 ? this.y >= 0 ? 1 : 4 : this.y >= 0 ? 2 : 3; + } +}, { + beans: false, + + getDirectedAngle: function() { + var point = Point.read(arguments); + return Math.atan2(this.cross(point), this.dot(point)) * 180 / Math.PI; + }, + + getDistance: function() { + var point = Point.read(arguments), + x = point.x - this.x, + y = point.y - this.y, + d = x * x + y * y, + squared = Base.read(arguments); + return squared ? d : Math.sqrt(d); + }, + + normalize: function(length) { + if (length === undefined) + length = 1; + var current = this.getLength(), + scale = current !== 0 ? length / current : 0, + point = new Point(this.x * scale, this.y * scale); + if (scale >= 0) + point._angle = this._angle; + return point; + }, + + rotate: function(angle, center) { + if (angle === 0) + return this.clone(); + angle = angle * Math.PI / 180; + var point = center ? this.subtract(center) : this, + s = Math.sin(angle), + c = Math.cos(angle); + point = new Point( + point.x * c - point.y * s, + point.x * s + point.y * c + ); + return center ? point.add(center) : point; + }, + + transform: function(matrix) { + return matrix ? matrix._transformPoint(this) : this; + }, + + add: function() { + var point = Point.read(arguments); + return new Point(this.x + point.x, this.y + point.y); + }, + + subtract: function() { + var point = Point.read(arguments); + return new Point(this.x - point.x, this.y - point.y); + }, + + multiply: function() { + var point = Point.read(arguments); + return new Point(this.x * point.x, this.y * point.y); + }, + + divide: function() { + var point = Point.read(arguments); + return new Point(this.x / point.x, this.y / point.y); + }, + + modulo: function() { + var point = Point.read(arguments); + return new Point(this.x % point.x, this.y % point.y); + }, + + negate: function() { + return new Point(-this.x, -this.y); + }, + + isInside: function() { + return Rectangle.read(arguments).contains(this); + }, + + isClose: function(point, tolerance) { + return this.getDistance(point) < tolerance; + }, + + isColinear: function(point) { + return Math.abs(this.cross(point)) < 1e-12; + }, + + isOrthogonal: function(point) { + return Math.abs(this.dot(point)) < 1e-12; + }, + + isZero: function() { + return Numerical.isZero(this.x) && Numerical.isZero(this.y); + }, + + isNaN: function() { + return isNaN(this.x) || isNaN(this.y); + }, + + dot: function() { + var point = Point.read(arguments); + return this.x * point.x + this.y * point.y; + }, + + cross: function() { + var point = Point.read(arguments); + return this.x * point.y - this.y * point.x; + }, + + project: function() { + var point = Point.read(arguments); + if (point.isZero()) { + return new Point(0, 0); + } else { + var scale = this.dot(point) / point.dot(point); + return new Point( + point.x * scale, + point.y * scale + ); + } + }, + + statics: { + min: function() { + var point1 = Point.read(arguments), + point2 = Point.read(arguments); + return new Point( + Math.min(point1.x, point2.x), + Math.min(point1.y, point2.y) + ); + }, + + max: function() { + var point1 = Point.read(arguments), + point2 = Point.read(arguments); + return new Point( + Math.max(point1.x, point2.x), + Math.max(point1.y, point2.y) + ); + }, + + random: function() { + return new Point(Math.random(), Math.random()); + } + } +}, Base.each(['round', 'ceil', 'floor', 'abs'], function(name) { + var op = Math[name]; + this[name] = function() { + return new Point(op(this.x), op(this.y)); + }; +}, {})); + +var LinkedPoint = Point.extend({ + initialize: function Point(x, y, owner, setter) { + this._x = x; + this._y = y; + this._owner = owner; + this._setter = setter; + }, + + set: function(x, y, _dontNotify) { + this._x = x; + this._y = y; + if (!_dontNotify) + this._owner[this._setter](this); + return this; + }, + + getX: function() { + return this._x; + }, + + setX: function(x) { + this._x = x; + this._owner[this._setter](this); + }, + + getY: function() { + return this._y; + }, + + setY: function(y) { + this._y = y; + this._owner[this._setter](this); + } +}); + +var Size = Base.extend({ + _class: 'Size', + _readIndex: true, + + initialize: function Size(arg0, arg1) { + var type = typeof arg0; + if (type === 'number') { + var hasHeight = typeof arg1 === 'number'; + this.width = arg0; + this.height = hasHeight ? arg1 : arg0; + if (this.__read) + this.__read = hasHeight ? 2 : 1; + } else if (type === 'undefined' || arg0 === null) { + this.width = this.height = 0; + if (this.__read) + this.__read = arg0 === null ? 1 : 0; + } else { + if (Array.isArray(arg0)) { + this.width = arg0[0]; + this.height = arg0.length > 1 ? arg0[1] : arg0[0]; + } else if (arg0.width != null) { + this.width = arg0.width; + this.height = arg0.height; + } else if (arg0.x != null) { + this.width = arg0.x; + this.height = arg0.y; + } else { + this.width = this.height = 0; + if (this.__read) + this.__read = 0; + } + if (this.__read) + this.__read = 1; + } + }, + + set: function(width, height) { + this.width = width; + this.height = height; + return this; + }, + + equals: function(size) { + return size === this || size && (this.width === size.width + && this.height === size.height + || Array.isArray(size) && this.width === size[0] + && this.height === size[1]) || false; + }, + + clone: function() { + return new Size(this.width, this.height); + }, + + toString: function() { + var f = Formatter.instance; + return '{ width: ' + f.number(this.width) + + ', height: ' + f.number(this.height) + ' }'; + }, + + _serialize: function(options) { + var f = options.formatter; + return [f.number(this.width), + f.number(this.height)]; + }, + + add: function() { + var size = Size.read(arguments); + return new Size(this.width + size.width, this.height + size.height); + }, + + subtract: function() { + var size = Size.read(arguments); + return new Size(this.width - size.width, this.height - size.height); + }, + + multiply: function() { + var size = Size.read(arguments); + return new Size(this.width * size.width, this.height * size.height); + }, + + divide: function() { + var size = Size.read(arguments); + return new Size(this.width / size.width, this.height / size.height); + }, + + modulo: function() { + var size = Size.read(arguments); + return new Size(this.width % size.width, this.height % size.height); + }, + + negate: function() { + return new Size(-this.width, -this.height); + }, + + isZero: function() { + return Numerical.isZero(this.width) && Numerical.isZero(this.height); + }, + + isNaN: function() { + return isNaN(this.width) || isNaN(this.height); + }, + + statics: { + min: function(size1, size2) { + return new Size( + Math.min(size1.width, size2.width), + Math.min(size1.height, size2.height)); + }, + + max: function(size1, size2) { + return new Size( + Math.max(size1.width, size2.width), + Math.max(size1.height, size2.height)); + }, + + random: function() { + return new Size(Math.random(), Math.random()); + } + } +}, Base.each(['round', 'ceil', 'floor', 'abs'], function(name) { + var op = Math[name]; + this[name] = function() { + return new Size(op(this.width), op(this.height)); + }; +}, {})); + +var LinkedSize = Size.extend({ + initialize: function Size(width, height, owner, setter) { + this._width = width; + this._height = height; + this._owner = owner; + this._setter = setter; + }, + + set: function(width, height, _dontNotify) { + this._width = width; + this._height = height; + if (!_dontNotify) + this._owner[this._setter](this); + return this; + }, + + getWidth: function() { + return this._width; + }, + + setWidth: function(width) { + this._width = width; + this._owner[this._setter](this); + }, + + getHeight: function() { + return this._height; + }, + + setHeight: function(height) { + this._height = height; + this._owner[this._setter](this); + } +}); + +var Rectangle = Base.extend({ + _class: 'Rectangle', + _readIndex: true, + beans: true, + + initialize: function Rectangle(arg0, arg1, arg2, arg3) { + var type = typeof arg0, + read = 0; + if (type === 'number') { + this.x = arg0; + this.y = arg1; + this.width = arg2; + this.height = arg3; + read = 4; + } else if (type === 'undefined' || arg0 === null) { + this.x = this.y = this.width = this.height = 0; + read = arg0 === null ? 1 : 0; + } else if (arguments.length === 1) { + if (Array.isArray(arg0)) { + this.x = arg0[0]; + this.y = arg0[1]; + this.width = arg0[2]; + this.height = arg0[3]; + read = 1; + } else if (arg0.x !== undefined || arg0.width !== undefined) { + this.x = arg0.x || 0; + this.y = arg0.y || 0; + this.width = arg0.width || 0; + this.height = arg0.height || 0; + read = 1; + } else if (arg0.from === undefined && arg0.to === undefined) { + this.x = this.y = this.width = this.height = 0; + this._set(arg0); + read = 1; + } + } + if (!read) { + var point = Point.readNamed(arguments, 'from'), + next = Base.peek(arguments); + this.x = point.x; + this.y = point.y; + if (next && next.x !== undefined || Base.hasNamed(arguments, 'to')) { + var to = Point.readNamed(arguments, 'to'); + this.width = to.x - point.x; + this.height = to.y - point.y; + if (this.width < 0) { + this.x = to.x; + this.width = -this.width; + } + if (this.height < 0) { + this.y = to.y; + this.height = -this.height; + } + } else { + var size = Size.read(arguments); + this.width = size.width; + this.height = size.height; + } + read = arguments.__index; + } + if (this.__read) + this.__read = read; + }, + + set: function(x, y, width, height) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + return this; + }, + + clone: function() { + return new Rectangle(this.x, this.y, this.width, this.height); + }, + + equals: function(rect) { + var rt = Base.isPlainValue(rect) + ? Rectangle.read(arguments) + : rect; + return rt === this + || rt && this.x === rt.x && this.y === rt.y + && this.width === rt.width && this.height === rt.height + || false; + }, + + toString: function() { + var f = Formatter.instance; + return '{ x: ' + f.number(this.x) + + ', y: ' + f.number(this.y) + + ', width: ' + f.number(this.width) + + ', height: ' + f.number(this.height) + + ' }'; + }, + + _serialize: function(options) { + var f = options.formatter; + return [f.number(this.x), + f.number(this.y), + f.number(this.width), + f.number(this.height)]; + }, + + getPoint: function(_dontLink) { + var ctor = _dontLink ? Point : LinkedPoint; + return new ctor(this.x, this.y, this, 'setPoint'); + }, + + setPoint: function() { + var point = Point.read(arguments); + this.x = point.x; + this.y = point.y; + }, + + getSize: function(_dontLink) { + var ctor = _dontLink ? Size : LinkedSize; + return new ctor(this.width, this.height, this, 'setSize'); + }, + + setSize: function() { + var size = Size.read(arguments); + if (this._fixX) + this.x += (this.width - size.width) * this._fixX; + if (this._fixY) + this.y += (this.height - size.height) * this._fixY; + this.width = size.width; + this.height = size.height; + this._fixW = 1; + this._fixH = 1; + }, + + getLeft: function() { + return this.x; + }, + + setLeft: function(left) { + if (!this._fixW) + this.width -= left - this.x; + this.x = left; + this._fixX = 0; + }, + + getTop: function() { + return this.y; + }, + + setTop: function(top) { + if (!this._fixH) + this.height -= top - this.y; + this.y = top; + this._fixY = 0; + }, + + getRight: function() { + return this.x + this.width; + }, + + setRight: function(right) { + if (this._fixX !== undefined && this._fixX !== 1) + this._fixW = 0; + if (this._fixW) + this.x = right - this.width; + else + this.width = right - this.x; + this._fixX = 1; + }, + + getBottom: function() { + return this.y + this.height; + }, + + setBottom: function(bottom) { + if (this._fixY !== undefined && this._fixY !== 1) + this._fixH = 0; + if (this._fixH) + this.y = bottom - this.height; + else + this.height = bottom - this.y; + this._fixY = 1; + }, + + getCenterX: function() { + return this.x + this.width * 0.5; + }, + + setCenterX: function(x) { + this.x = x - this.width * 0.5; + this._fixX = 0.5; + }, + + getCenterY: function() { + return this.y + this.height * 0.5; + }, + + setCenterY: function(y) { + this.y = y - this.height * 0.5; + this._fixY = 0.5; + }, + + getCenter: function(_dontLink) { + var ctor = _dontLink ? Point : LinkedPoint; + return new ctor(this.getCenterX(), this.getCenterY(), this, 'setCenter'); + }, + + setCenter: function() { + var point = Point.read(arguments); + this.setCenterX(point.x); + this.setCenterY(point.y); + return this; + }, + + getArea: function() { + return this.width * this.height; + }, + + isEmpty: function() { + return this.width === 0 || this.height === 0; + }, + + contains: function(arg) { + return arg && arg.width !== undefined + || (Array.isArray(arg) ? arg : arguments).length == 4 + ? this._containsRectangle(Rectangle.read(arguments)) + : this._containsPoint(Point.read(arguments)); + }, + + _containsPoint: function(point) { + var x = point.x, + y = point.y; + return x >= this.x && y >= this.y + && x <= this.x + this.width + && y <= this.y + this.height; + }, + + _containsRectangle: function(rect) { + var x = rect.x, + y = rect.y; + return x >= this.x && y >= this.y + && x + rect.width <= this.x + this.width + && y + rect.height <= this.y + this.height; + }, + + intersects: function() { + var rect = Rectangle.read(arguments); + return rect.x + rect.width > this.x + && rect.y + rect.height > this.y + && rect.x < this.x + this.width + && rect.y < this.y + this.height; + }, + + touches: function() { + var rect = Rectangle.read(arguments); + return rect.x + rect.width >= this.x + && rect.y + rect.height >= this.y + && rect.x <= this.x + this.width + && rect.y <= this.y + this.height; + }, + + intersect: function() { + var rect = Rectangle.read(arguments), + x1 = Math.max(this.x, rect.x), + y1 = Math.max(this.y, rect.y), + x2 = Math.min(this.x + this.width, rect.x + rect.width), + y2 = Math.min(this.y + this.height, rect.y + rect.height); + return new Rectangle(x1, y1, x2 - x1, y2 - y1); + }, + + unite: function() { + var rect = Rectangle.read(arguments), + x1 = Math.min(this.x, rect.x), + y1 = Math.min(this.y, rect.y), + x2 = Math.max(this.x + this.width, rect.x + rect.width), + y2 = Math.max(this.y + this.height, rect.y + rect.height); + return new Rectangle(x1, y1, x2 - x1, y2 - y1); + }, + + include: function() { + var point = Point.read(arguments); + var x1 = Math.min(this.x, point.x), + y1 = Math.min(this.y, point.y), + x2 = Math.max(this.x + this.width, point.x), + y2 = Math.max(this.y + this.height, point.y); + return new Rectangle(x1, y1, x2 - x1, y2 - y1); + }, + + expand: function() { + var amount = Size.read(arguments), + hor = amount.width, + ver = amount.height; + return new Rectangle(this.x - hor / 2, this.y - ver / 2, + this.width + hor, this.height + ver); + }, + + scale: function(hor, ver) { + return this.expand(this.width * hor - this.width, + this.height * (ver === undefined ? hor : ver) - this.height); + } +}, Base.each([ + ['Top', 'Left'], ['Top', 'Right'], + ['Bottom', 'Left'], ['Bottom', 'Right'], + ['Left', 'Center'], ['Top', 'Center'], + ['Right', 'Center'], ['Bottom', 'Center'] + ], + function(parts, index) { + var part = parts.join(''); + var xFirst = /^[RL]/.test(part); + if (index >= 4) + parts[1] += xFirst ? 'Y' : 'X'; + var x = parts[xFirst ? 0 : 1], + y = parts[xFirst ? 1 : 0], + getX = 'get' + x, + getY = 'get' + y, + setX = 'set' + x, + setY = 'set' + y, + get = 'get' + part, + set = 'set' + part; + this[get] = function(_dontLink) { + var ctor = _dontLink ? Point : LinkedPoint; + return new ctor(this[getX](), this[getY](), this, set); + }; + this[set] = function() { + var point = Point.read(arguments); + this[setX](point.x); + this[setY](point.y); + }; + }, { + beans: true + } +)); + +var LinkedRectangle = Rectangle.extend({ + initialize: function Rectangle(x, y, width, height, owner, setter) { + this.set(x, y, width, height, true); + this._owner = owner; + this._setter = setter; + }, + + set: function(x, y, width, height, _dontNotify) { + this._x = x; + this._y = y; + this._width = width; + this._height = height; + if (!_dontNotify) + this._owner[this._setter](this); + return this; + } +}, new function() { + var proto = Rectangle.prototype; + + return Base.each(['x', 'y', 'width', 'height'], function(key) { + var part = Base.capitalize(key); + var internal = '_' + key; + this['get' + part] = function() { + return this[internal]; + }; + + this['set' + part] = function(value) { + this[internal] = value; + if (!this._dontNotify) + this._owner[this._setter](this); + }; + }, Base.each(['Point', 'Size', 'Center', + 'Left', 'Top', 'Right', 'Bottom', 'CenterX', 'CenterY', + 'TopLeft', 'TopRight', 'BottomLeft', 'BottomRight', + 'LeftCenter', 'TopCenter', 'RightCenter', 'BottomCenter'], + function(key) { + var name = 'set' + key; + this[name] = function() { + this._dontNotify = true; + proto[name].apply(this, arguments); + this._dontNotify = false; + this._owner[this._setter](this); + }; + }, { + isSelected: function() { + return this._owner._boundsSelected; + }, + + setSelected: function(selected) { + var owner = this._owner; + if (owner.setSelected) { + owner._boundsSelected = selected; + owner.setSelected(selected || owner._selectedSegmentState > 0); + } + } + }) + ); +}); + +var Matrix = Base.extend({ + _class: 'Matrix', + + initialize: function Matrix(arg) { + var count = arguments.length, + ok = true; + if (count === 6) { + this.set.apply(this, arguments); + } else if (count === 1) { + if (arg instanceof Matrix) { + this.set(arg._a, arg._c, arg._b, arg._d, arg._tx, arg._ty); + } else if (Array.isArray(arg)) { + this.set.apply(this, arg); + } else { + ok = false; + } + } else if (count === 0) { + this.reset(); + } else { + ok = false; + } + if (!ok) + throw new Error('Unsupported matrix parameters'); + }, + + set: function(a, c, b, d, tx, ty, _dontNotify) { + this._a = a; + this._c = c; + this._b = b; + this._d = d; + this._tx = tx; + this._ty = ty; + if (!_dontNotify) + this._changed(); + return this; + }, + + _serialize: function(options) { + return Base.serialize(this.getValues(), options); + }, + + _changed: function() { + var owner = this._owner; + if (owner) { + if (owner._applyMatrix) { + owner.transform(null, true); + } else { + owner._changed(9); + } + } + }, + + clone: function() { + return new Matrix(this._a, this._c, this._b, this._d, + this._tx, this._ty); + }, + + equals: function(mx) { + return mx === this || mx && this._a === mx._a && this._b === mx._b + && this._c === mx._c && this._d === mx._d + && this._tx === mx._tx && this._ty === mx._ty + || false; + }, + + toString: function() { + var f = Formatter.instance; + return '[[' + [f.number(this._a), f.number(this._b), + f.number(this._tx)].join(', ') + '], [' + + [f.number(this._c), f.number(this._d), + f.number(this._ty)].join(', ') + ']]'; + }, + + reset: function(_dontNotify) { + this._a = this._d = 1; + this._c = this._b = this._tx = this._ty = 0; + if (!_dontNotify) + this._changed(); + return this; + }, + + apply: function(recursively, _setApplyMatrix) { + var owner = this._owner; + if (owner) { + owner.transform(null, true, Base.pick(recursively, true), + _setApplyMatrix); + return this.isIdentity(); + } + return false; + }, + + translate: function() { + var point = Point.read(arguments), + x = point.x, + y = point.y; + this._tx += x * this._a + y * this._b; + this._ty += x * this._c + y * this._d; + this._changed(); + return this; + }, + + scale: function() { + var scale = Point.read(arguments), + center = Point.read(arguments, 0, { readNull: true }); + if (center) + this.translate(center); + this._a *= scale.x; + this._c *= scale.x; + this._b *= scale.y; + this._d *= scale.y; + if (center) + this.translate(center.negate()); + this._changed(); + return this; + }, + + rotate: function(angle ) { + angle *= Math.PI / 180; + var center = Point.read(arguments, 1), + x = center.x, + y = center.y, + cos = Math.cos(angle), + sin = Math.sin(angle), + tx = x - x * cos + y * sin, + ty = y - x * sin - y * cos, + a = this._a, + b = this._b, + c = this._c, + d = this._d; + this._a = cos * a + sin * b; + this._b = -sin * a + cos * b; + this._c = cos * c + sin * d; + this._d = -sin * c + cos * d; + this._tx += tx * a + ty * b; + this._ty += tx * c + ty * d; + this._changed(); + return this; + }, + + shear: function() { + var shear = Point.read(arguments), + center = Point.read(arguments, 0, { readNull: true }); + if (center) + this.translate(center); + var a = this._a, + c = this._c; + this._a += shear.y * this._b; + this._c += shear.y * this._d; + this._b += shear.x * a; + this._d += shear.x * c; + if (center) + this.translate(center.negate()); + this._changed(); + return this; + }, + + skew: function() { + var skew = Point.read(arguments), + center = Point.read(arguments, 0, { readNull: true }), + toRadians = Math.PI / 180, + shear = new Point(Math.tan(skew.x * toRadians), + Math.tan(skew.y * toRadians)); + return this.shear(shear, center); + }, + + concatenate: function(mx) { + var a1 = this._a, + b1 = this._b, + c1 = this._c, + d1 = this._d, + a2 = mx._a, + b2 = mx._b, + c2 = mx._c, + d2 = mx._d, + tx2 = mx._tx, + ty2 = mx._ty; + this._a = a2 * a1 + c2 * b1; + this._b = b2 * a1 + d2 * b1; + this._c = a2 * c1 + c2 * d1; + this._d = b2 * c1 + d2 * d1; + this._tx += tx2 * a1 + ty2 * b1; + this._ty += tx2 * c1 + ty2 * d1; + this._changed(); + return this; + }, + + preConcatenate: function(mx) { + var a1 = this._a, + b1 = this._b, + c1 = this._c, + d1 = this._d, + tx1 = this._tx, + ty1 = this._ty, + a2 = mx._a, + b2 = mx._b, + c2 = mx._c, + d2 = mx._d, + tx2 = mx._tx, + ty2 = mx._ty; + this._a = a2 * a1 + b2 * c1; + this._b = a2 * b1 + b2 * d1; + this._c = c2 * a1 + d2 * c1; + this._d = c2 * b1 + d2 * d1; + this._tx = a2 * tx1 + b2 * ty1 + tx2; + this._ty = c2 * tx1 + d2 * ty1 + ty2; + this._changed(); + return this; + }, + + chain: function(mx) { + var a1 = this._a, + b1 = this._b, + c1 = this._c, + d1 = this._d, + tx1 = this._tx, + ty1 = this._ty, + a2 = mx._a, + b2 = mx._b, + c2 = mx._c, + d2 = mx._d, + tx2 = mx._tx, + ty2 = mx._ty; + return new Matrix( + a2 * a1 + c2 * b1, + a2 * c1 + c2 * d1, + b2 * a1 + d2 * b1, + b2 * c1 + d2 * d1, + tx1 + tx2 * a1 + ty2 * b1, + ty1 + tx2 * c1 + ty2 * d1); + }, + + isIdentity: function() { + return this._a === 1 && this._c === 0 && this._b === 0 && this._d === 1 + && this._tx === 0 && this._ty === 0; + }, + + orNullIfIdentity: function() { + return this.isIdentity() ? null : this; + }, + + isInvertible: function() { + return !!this._getDeterminant(); + }, + + isSingular: function() { + return !this._getDeterminant(); + }, + + transform: function( src, dst, count) { + return arguments.length < 3 + ? this._transformPoint(Point.read(arguments)) + : this._transformCoordinates(src, dst, count); + }, + + _transformPoint: function(point, dest, _dontNotify) { + var x = point.x, + y = point.y; + if (!dest) + dest = new Point(); + return dest.set( + x * this._a + y * this._b + this._tx, + x * this._c + y * this._d + this._ty, + _dontNotify + ); + }, + + _transformCoordinates: function(src, dst, count) { + var i = 0, + j = 0, + max = 2 * count; + while (i < max) { + var x = src[i++], + y = src[i++]; + dst[j++] = x * this._a + y * this._b + this._tx; + dst[j++] = x * this._c + y * this._d + this._ty; + } + return dst; + }, + + _transformCorners: function(rect) { + var x1 = rect.x, + y1 = rect.y, + x2 = x1 + rect.width, + y2 = y1 + rect.height, + coords = [ x1, y1, x2, y1, x2, y2, x1, y2 ]; + return this._transformCoordinates(coords, coords, 4); + }, + + _transformBounds: function(bounds, dest, _dontNotify) { + var coords = this._transformCorners(bounds), + min = coords.slice(0, 2), + max = coords.slice(); + for (var i = 2; i < 8; i++) { + var val = coords[i], + j = i & 1; + if (val < min[j]) + min[j] = val; + else if (val > max[j]) + max[j] = val; + } + if (!dest) + dest = new Rectangle(); + return dest.set(min[0], min[1], max[0] - min[0], max[1] - min[1], + _dontNotify); + }, + + inverseTransform: function() { + return this._inverseTransform(Point.read(arguments)); + }, + + _getDeterminant: function() { + var det = this._a * this._d - this._b * this._c; + return isFinite(det) && !Numerical.isZero(det) + && isFinite(this._tx) && isFinite(this._ty) + ? det : null; + }, + + _inverseTransform: function(point, dest, _dontNotify) { + var det = this._getDeterminant(); + if (!det) + return null; + var x = point.x - this._tx, + y = point.y - this._ty; + if (!dest) + dest = new Point(); + return dest.set( + (x * this._d - y * this._b) / det, + (y * this._a - x * this._c) / det, + _dontNotify + ); + }, + + decompose: function() { + var a = this._a, b = this._b, c = this._c, d = this._d; + if (Numerical.isZero(a * d - b * c)) + return null; + + var scaleX = Math.sqrt(a * a + b * b); + a /= scaleX; + b /= scaleX; + + var shear = a * c + b * d; + c -= a * shear; + d -= b * shear; + + var scaleY = Math.sqrt(c * c + d * d); + c /= scaleY; + d /= scaleY; + shear /= scaleY; + + if (a * d < b * c) { + a = -a; + b = -b; + shear = -shear; + scaleX = -scaleX; + } + + return { + scaling: new Point(scaleX, scaleY), + rotation: -Math.atan2(b, a) * 180 / Math.PI, + shearing: shear + }; + }, + + getValues: function() { + return [ this._a, this._c, this._b, this._d, this._tx, this._ty ]; + }, + + getTranslation: function() { + return new Point(this._tx, this._ty); + }, + + getScaling: function() { + return (this.decompose() || {}).scaling; + }, + + getRotation: function() { + return (this.decompose() || {}).rotation; + }, + + inverted: function() { + var det = this._getDeterminant(); + return det && new Matrix( + this._d / det, + -this._c / det, + -this._b / det, + this._a / det, + (this._b * this._ty - this._d * this._tx) / det, + (this._c * this._tx - this._a * this._ty) / det); + }, + + shiftless: function() { + return new Matrix(this._a, this._c, this._b, this._d, 0, 0); + }, + + applyToContext: function(ctx) { + ctx.transform(this._a, this._c, this._b, this._d, this._tx, this._ty); + } +}, Base.each(['a', 'c', 'b', 'd', 'tx', 'ty'], function(name) { + var part = Base.capitalize(name), + prop = '_' + name; + this['get' + part] = function() { + return this[prop]; + }; + this['set' + part] = function(value) { + this[prop] = value; + this._changed(); + }; +}, {})); + +var Line = Base.extend({ + _class: 'Line', + + initialize: function Line(arg0, arg1, arg2, arg3, arg4) { + var asVector = false; + if (arguments.length >= 4) { + this._px = arg0; + this._py = arg1; + this._vx = arg2; + this._vy = arg3; + asVector = arg4; + } else { + this._px = arg0.x; + this._py = arg0.y; + this._vx = arg1.x; + this._vy = arg1.y; + asVector = arg2; + } + if (!asVector) { + this._vx -= this._px; + this._vy -= this._py; + } + }, + + getPoint: function() { + return new Point(this._px, this._py); + }, + + getVector: function() { + return new Point(this._vx, this._vy); + }, + + getLength: function() { + return this.getVector().getLength(); + }, + + intersect: function(line, isInfinite) { + return Line.intersect( + this._px, this._py, this._vx, this._vy, + line._px, line._py, line._vx, line._vy, + true, isInfinite); + }, + + getSide: function(point) { + return Line.getSide( + this._px, this._py, this._vx, this._vy, + point.x, point.y, true); + }, + + getDistance: function(point) { + return Math.abs(Line.getSignedDistance( + this._px, this._py, this._vx, this._vy, + point.x, point.y, true)); + }, + + statics: { + intersect: function(apx, apy, avx, avy, bpx, bpy, bvx, bvy, asVector, + isInfinite) { + if (!asVector) { + avx -= apx; + avy -= apy; + bvx -= bpx; + bvy -= bpy; + } + var cross = avx * bvy - avy * bvx; + if (!Numerical.isZero(cross)) { + var dx = apx - bpx, + dy = apy - bpy, + ta = (bvx * dy - bvy * dx) / cross, + tb = (avx * dy - avy * dx) / cross; + if (isInfinite || 0 <= ta && ta <= 1 && 0 <= tb && tb <= 1) + return new Point( + apx + ta * avx, + apy + ta * avy); + } + }, + + getSide: function(px, py, vx, vy, x, y, asVector) { + if (!asVector) { + vx -= px; + vy -= py; + } + var v2x = x - px, + v2y = y - py, + ccw = v2x * vy - v2y * vx; + if (ccw === 0) { + ccw = v2x * vx + v2y * vy; + if (ccw > 0) { + v2x -= vx; + v2y -= vy; + ccw = v2x * vx + v2y * vy; + if (ccw < 0) + ccw = 0; + } + } + return ccw < 0 ? -1 : ccw > 0 ? 1 : 0; + }, + + getSignedDistance: function(px, py, vx, vy, x, y, asVector) { + if (!asVector) { + vx -= px; + vy -= py; + } + return Numerical.isZero(vx) + ? vy >= 0 ? px - x : x - px + : Numerical.isZero(vy) + ? vx >= 0 ? y - py : py - y + : (vx * (y - py) - vy * (x - px)) / Math.sqrt(vx * vx + vy * vy); + } + } +}); + +var Project = PaperScopeItem.extend({ + _class: 'Project', + _list: 'projects', + _reference: 'project', + + initialize: function Project(element) { + PaperScopeItem.call(this, true); + this.layers = []; + this._activeLayer = null; + this.symbols = []; + this._currentStyle = new Style(null, null, this); + this._view = View.create(this, + element || CanvasProvider.getCanvas(1, 1)); + this._selectedItems = {}; + this._selectedItemCount = 0; + this._updateVersion = 0; + }, + + _serialize: function(options, dictionary) { + return Base.serialize(this.layers, options, true, dictionary); + }, + + clear: function() { + for (var i = this.layers.length - 1; i >= 0; i--) + this.layers[i].remove(); + this.symbols = []; + }, + + isEmpty: function() { + return this.layers.length === 0; + }, + + remove: function remove() { + if (!remove.base.call(this)) + return false; + if (this._view) + this._view.remove(); + return true; + }, + + getView: function() { + return this._view; + }, + + getCurrentStyle: function() { + return this._currentStyle; + }, + + setCurrentStyle: function(style) { + this._currentStyle.initialize(style); + }, + + getIndex: function() { + return this._index; + }, + + getOptions: function() { + return this._scope.settings; + }, + + getActiveLayer: function() { + return this._activeLayer || new Layer({ project: this }); + }, + + getSelectedItems: function() { + var items = []; + for (var id in this._selectedItems) { + var item = this._selectedItems[id]; + if (item.isInserted()) + items.push(item); + } + return items; + }, + + insertChild: function(index, item, _preserve) { + if (item instanceof Layer) { + item._remove(false, true); + Base.splice(this.layers, [item], index, 0); + item._setProject(this, true); + if (this._changes) + item._changed(5); + if (!this._activeLayer) + this._activeLayer = item; + } else if (item instanceof Item) { + (this._activeLayer + || this.insertChild(index, new Layer(Item.NO_INSERT))) + .insertChild(index, item, _preserve); + } else { + item = null; + } + return item; + }, + + addChild: function(item, _preserve) { + return this.insertChild(undefined, item, _preserve); + }, + + _updateSelection: function(item) { + var id = item._id, + selectedItems = this._selectedItems; + if (item._selected) { + if (selectedItems[id] !== item) { + this._selectedItemCount++; + selectedItems[id] = item; + } + } else if (selectedItems[id] === item) { + this._selectedItemCount--; + delete selectedItems[id]; + } + }, + + selectAll: function() { + var layers = this.layers; + for (var i = 0, l = layers.length; i < l; i++) + layers[i].setFullySelected(true); + }, + + deselectAll: function() { + var selectedItems = this._selectedItems; + for (var i in selectedItems) + selectedItems[i].setFullySelected(false); + }, + + hitTest: function() { + var point = Point.read(arguments), + options = HitResult.getOptions(Base.read(arguments)); + for (var i = this.layers.length - 1; i >= 0; i--) { + var res = this.layers[i]._hitTest(point, options); + if (res) return res; + } + return null; + }, + + getItems: function(match) { + return Item._getItems(this.layers, match); + }, + + getItem: function(match) { + return Item._getItems(this.layers, match, null, null, true)[0] || null; + }, + + importJSON: function(json) { + this.activate(); + var layer = this._activeLayer; + return Base.importJSON(json, layer && layer.isEmpty() && layer); + }, + + draw: function(ctx, matrix, pixelRatio) { + this._updateVersion++; + ctx.save(); + matrix.applyToContext(ctx); + var param = new Base({ + offset: new Point(0, 0), + pixelRatio: pixelRatio, + viewMatrix: matrix.isIdentity() ? null : matrix, + matrices: [new Matrix()], + updateMatrix: true + }); + for (var i = 0, layers = this.layers, l = layers.length; i < l; i++) + layers[i].draw(ctx, param); + ctx.restore(); + + if (this._selectedItemCount > 0) { + ctx.save(); + ctx.strokeWidth = 1; + var items = this._selectedItems, + size = this._scope.settings.handleSize, + version = this._updateVersion; + for (var id in items) + items[id]._drawSelection(ctx, matrix, size, items, version); + ctx.restore(); + } + } +}); + +var Symbol = Base.extend({ + _class: 'Symbol', + + initialize: function Symbol(item, dontCenter) { + this._id = Symbol._id = (Symbol._id || 0) + 1; + this.project = paper.project; + this.project.symbols.push(this); + if (item) + this.setDefinition(item, dontCenter); + }, + + _serialize: function(options, dictionary) { + return dictionary.add(this, function() { + return Base.serialize([this._class, this._definition], + options, false, dictionary); + }); + }, + + _changed: function(flags) { + if (flags & 8) { + Item._clearBoundsCache(this); + } + if (flags & 1) { + this.project._needsUpdate = true; + } + }, + + getDefinition: function() { + return this._definition; + }, + + setDefinition: function(item, _dontCenter) { + if (item._parentSymbol) + item = item.clone(); + if (this._definition) + this._definition._parentSymbol = null; + this._definition = item; + item.remove(); + item.setSelected(false); + if (!_dontCenter) + item.setPosition(new Point()); + item._parentSymbol = this; + this._changed(9); + }, + + place: function(position) { + return new PlacedSymbol(this, position); + }, + + clone: function() { + return new Symbol(this._definition.clone(false)); + }, + + equals: function(symbol) { + return symbol === this + || symbol && this.definition.equals(symbol.definition) + || false; + } +}); + +var Item = Base.extend(Emitter, { + statics: { + extend: function extend(src) { + if (src._serializeFields) + src._serializeFields = new Base( + this.prototype._serializeFields, src._serializeFields); + return extend.base.apply(this, arguments); + }, + + NO_INSERT: { insert: false } + }, + + _class: 'Item', + _applyMatrix: true, + _canApplyMatrix: true, + _boundsSelected: false, + _selectChildren: false, + _serializeFields: { + name: null, + applyMatrix: null, + matrix: new Matrix(), + pivot: null, + locked: false, + visible: true, + blendMode: 'normal', + opacity: 1, + guide: false, + selected: false, + clipMask: false, + data: {} + }, + + initialize: function Item() { + }, + + _initialize: function(props, point) { + var hasProps = props && Base.isPlainObject(props), + internal = hasProps && props.internal === true, + matrix = this._matrix = new Matrix(), + project = hasProps && props.project || paper.project; + if (!internal) + this._id = Item._id = (Item._id || 0) + 1; + this._applyMatrix = this._canApplyMatrix && paper.settings.applyMatrix; + if (point) + matrix.translate(point); + matrix._owner = this; + this._style = new Style(project._currentStyle, this, project); + if (!this._project) { + if (internal || hasProps && props.insert === false) { + this._setProject(project); + } else if (hasProps && props.parent) { + this.setParent(props.parent); + } else { + (project._activeLayer || new Layer()).addChild(this); + } + } + if (hasProps && props !== Item.NO_INSERT) + this._set(props, { insert: true, parent: true }, true); + return hasProps; + }, + + _events: new function() { + + var mouseFlags = { + mousedown: { + mousedown: 1, + mousedrag: 1, + click: 1, + doubleclick: 1 + }, + mouseup: { + mouseup: 1, + mousedrag: 1, + click: 1, + doubleclick: 1 + }, + mousemove: { + mousedrag: 1, + mousemove: 1, + mouseenter: 1, + mouseleave: 1 + } + }; + + var mouseEvent = { + install: function(type) { + var counters = this.getView()._eventCounters; + if (counters) { + for (var key in mouseFlags) { + counters[key] = (counters[key] || 0) + + (mouseFlags[key][type] || 0); + } + } + }, + uninstall: function(type) { + var counters = this.getView()._eventCounters; + if (counters) { + for (var key in mouseFlags) + counters[key] -= mouseFlags[key][type] || 0; + } + } + }; + + return Base.each(['onMouseDown', 'onMouseUp', 'onMouseDrag', 'onClick', + 'onDoubleClick', 'onMouseMove', 'onMouseEnter', 'onMouseLeave'], + function(name) { + this[name] = mouseEvent; + }, { + onFrame: { + install: function() { + this._animateItem(true); + }, + uninstall: function() { + this._animateItem(false); + } + }, + + onLoad: {} + } + ); + }, + + _animateItem: function(animate) { + this.getView()._animateItem(this, animate); + }, + + _serialize: function(options, dictionary) { + var props = {}, + that = this; + + function serialize(fields) { + for (var key in fields) { + var value = that[key]; + if (!Base.equals(value, key === 'leading' + ? fields.fontSize * 1.2 : fields[key])) { + props[key] = Base.serialize(value, options, + key !== 'data', dictionary); + } + } + } + + serialize(this._serializeFields); + if (!(this instanceof Group)) + serialize(this._style._defaults); + return [ this._class, props ]; + }, + + _changed: function(flags) { + var symbol = this._parentSymbol, + cacheParent = this._parent || symbol, + project = this._project; + if (flags & 8) { + this._bounds = this._position = this._decomposed = + this._globalMatrix = this._currentPath = undefined; + } + if (cacheParent + && (flags & 40)) { + Item._clearBoundsCache(cacheParent); + } + if (flags & 2) { + Item._clearBoundsCache(this); + } + if (project) { + if (flags & 1) { + project._needsUpdate = true; + } + if (project._changes) { + var entry = project._changesById[this._id]; + if (entry) { + entry.flags |= flags; + } else { + entry = { item: this, flags: flags }; + project._changesById[this._id] = entry; + project._changes.push(entry); + } + } + } + if (symbol) + symbol._changed(flags); + }, + + set: function(props) { + if (props) + this._set(props); + return this; + }, + + getId: function() { + return this._id; + }, + + getName: function() { + return this._name; + }, + + setName: function(name, unique) { + + if (this._name) + this._removeNamed(); + if (name === (+name) + '') + throw new Error( + 'Names consisting only of numbers are not supported.'); + var parent = this._parent; + if (name && parent) { + var children = parent._children, + namedChildren = parent._namedChildren, + orig = name, + i = 1; + while (unique && children[name]) + name = orig + ' ' + (i++); + (namedChildren[name] = namedChildren[name] || []).push(this); + children[name] = this; + } + this._name = name || undefined; + this._changed(128); + }, + + getStyle: function() { + return this._style; + }, + + setStyle: function(style) { + this.getStyle().set(style); + } +}, Base.each(['locked', 'visible', 'blendMode', 'opacity', 'guide'], + function(name) { + var part = Base.capitalize(name), + name = '_' + name; + this['get' + part] = function() { + return this[name]; + }; + this['set' + part] = function(value) { + if (value != this[name]) { + this[name] = value; + this._changed(name === '_locked' + ? 128 : 129); + } + }; + }, +{}), { + beans: true, + + _locked: false, + + _visible: true, + + _blendMode: 'normal', + + _opacity: 1, + + _guide: false, + + isSelected: function() { + if (this._selectChildren) { + var children = this._children; + for (var i = 0, l = children.length; i < l; i++) + if (children[i].isSelected()) + return true; + } + return this._selected; + }, + + setSelected: function(selected, noChildren) { + if (!noChildren && this._selectChildren) { + var children = this._children; + for (var i = 0, l = children.length; i < l; i++) + children[i].setSelected(selected); + } + if ((selected = !!selected) ^ this._selected) { + this._selected = selected; + this._project._updateSelection(this); + this._changed(129); + } + }, + + _selected: false, + + isFullySelected: function() { + var children = this._children; + if (children && this._selected) { + for (var i = 0, l = children.length; i < l; i++) + if (!children[i].isFullySelected()) + return false; + return true; + } + return this._selected; + }, + + setFullySelected: function(selected) { + var children = this._children; + if (children) { + for (var i = 0, l = children.length; i < l; i++) + children[i].setFullySelected(selected); + } + this.setSelected(selected, true); + }, + + isClipMask: function() { + return this._clipMask; + }, + + setClipMask: function(clipMask) { + if (this._clipMask != (clipMask = !!clipMask)) { + this._clipMask = clipMask; + if (clipMask) { + this.setFillColor(null); + this.setStrokeColor(null); + } + this._changed(129); + if (this._parent) + this._parent._changed(1024); + } + }, + + _clipMask: false, + + getData: function() { + if (!this._data) + this._data = {}; + return this._data; + }, + + setData: function(data) { + this._data = data; + }, + + getPosition: function(_dontLink) { + var position = this._position, + ctor = _dontLink ? Point : LinkedPoint; + if (!position) { + var pivot = this._pivot; + position = this._position = pivot + ? this._matrix._transformPoint(pivot) + : this.getBounds().getCenter(true); + } + return new ctor(position.x, position.y, this, 'setPosition'); + }, + + setPosition: function() { + this.translate(Point.read(arguments).subtract(this.getPosition(true))); + }, + + getPivot: function(_dontLink) { + var pivot = this._pivot; + if (pivot) { + var ctor = _dontLink ? Point : LinkedPoint; + pivot = new ctor(pivot.x, pivot.y, this, 'setPivot'); + } + return pivot; + }, + + setPivot: function() { + this._pivot = Point.read(arguments); + this._position = undefined; + }, + + _pivot: null, + + getRegistration: '#getPivot', + setRegistration: '#setPivot' +}, Base.each(['bounds', 'strokeBounds', 'handleBounds', 'roughBounds', + 'internalBounds', 'internalRoughBounds'], + function(key) { + var getter = 'get' + Base.capitalize(key), + match = key.match(/^internal(.*)$/), + internalGetter = match ? 'get' + match[1] : null; + this[getter] = function(_matrix) { + var boundsGetter = this._boundsGetter, + name = !internalGetter && (typeof boundsGetter === 'string' + ? boundsGetter : boundsGetter && boundsGetter[getter]) + || getter, + bounds = this._getCachedBounds(name, _matrix, this, + internalGetter); + return key === 'bounds' + ? new LinkedRectangle(bounds.x, bounds.y, bounds.width, + bounds.height, this, 'setBounds') + : bounds; + }; + }, +{ + beans: true, + + _getBounds: function(getter, matrix, cacheItem) { + var children = this._children; + if (!children || children.length == 0) + return new Rectangle(); + var x1 = Infinity, + x2 = -x1, + y1 = x1, + y2 = x2; + for (var i = 0, l = children.length; i < l; i++) { + var child = children[i]; + if (child._visible && !child.isEmpty()) { + var rect = child._getCachedBounds(getter, + matrix && matrix.chain(child._matrix), cacheItem); + x1 = Math.min(rect.x, x1); + y1 = Math.min(rect.y, y1); + x2 = Math.max(rect.x + rect.width, x2); + y2 = Math.max(rect.y + rect.height, y2); + } + } + return isFinite(x1) + ? new Rectangle(x1, y1, x2 - x1, y2 - y1) + : new Rectangle(); + }, + + setBounds: function() { + var rect = Rectangle.read(arguments), + bounds = this.getBounds(), + matrix = new Matrix(), + center = rect.getCenter(); + matrix.translate(center); + if (rect.width != bounds.width || rect.height != bounds.height) { + matrix.scale( + bounds.width != 0 ? rect.width / bounds.width : 1, + bounds.height != 0 ? rect.height / bounds.height : 1); + } + center = bounds.getCenter(); + matrix.translate(-center.x, -center.y); + this.transform(matrix); + }, + + _getCachedBounds: function(getter, matrix, cacheItem, internalGetter) { + matrix = matrix && matrix.orNullIfIdentity(); + var _matrix = internalGetter ? null : this._matrix.orNullIfIdentity(), + cache = (!matrix || matrix.equals(_matrix)) && getter; + var cacheParent = this._parent || this._parentSymbol; + if (cacheParent) { + var id = cacheItem._id, + ref = cacheParent._boundsCache = cacheParent._boundsCache || { + ids: {}, + list: [] + }; + if (!ref.ids[id]) { + ref.list.push(cacheItem); + ref.ids[id] = cacheItem; + } + } + if (cache && this._bounds && this._bounds[cache]) + return this._bounds[cache].clone(); + var bounds = this._getBounds(internalGetter || getter, + matrix || _matrix, cacheItem); + if (cache) { + if (!this._bounds) + this._bounds = {}; + var cached = this._bounds[cache] = bounds.clone(); + cached._internal = !!internalGetter; + } + return bounds; + }, + + statics: { + _clearBoundsCache: function(item) { + var cache = item._boundsCache; + if (cache) { + item._bounds = item._position = item._boundsCache = undefined; + for (var i = 0, list = cache.list, l = list.length; i < l; i++) { + var other = list[i]; + if (other !== item) { + other._bounds = other._position = undefined; + if (other._boundsCache) + Item._clearBoundsCache(other); + } + } + } + } + } + +}), { + beans: true, + + _decompose: function() { + return this._decomposed = this._matrix.decompose(); + }, + + getRotation: function() { + var decomposed = this._decomposed || this._decompose(); + return decomposed && decomposed.rotation; + }, + + setRotation: function(rotation) { + var current = this.getRotation(); + if (current != null && rotation != null) { + var decomposed = this._decomposed; + this.rotate(rotation - current); + decomposed.rotation = rotation; + this._decomposed = decomposed; + } + }, + + getScaling: function(_dontLink) { + var decomposed = this._decomposed || this._decompose(), + scaling = decomposed && decomposed.scaling, + ctor = _dontLink ? Point : LinkedPoint; + return scaling && new ctor(scaling.x, scaling.y, this, 'setScaling'); + }, + + setScaling: function() { + var current = this.getScaling(); + if (current) { + var scaling = Point.read(arguments, 0, { clone: true }), + decomposed = this._decomposed; + this.scale(scaling.x / current.x, scaling.y / current.y); + decomposed.scaling = scaling; + this._decomposed = decomposed; + } + }, + + getMatrix: function() { + return this._matrix; + }, + + setMatrix: function(matrix) { + this._matrix.initialize(matrix); + if (this._applyMatrix) { + this.transform(null, true); + } else { + this._changed(9); + } + }, + + getGlobalMatrix: function(_dontClone) { + var matrix = this._globalMatrix, + updateVersion = this._project._updateVersion; + if (matrix && matrix._updateVersion !== updateVersion) + matrix = null; + if (!matrix) { + matrix = this._globalMatrix = this._matrix.clone(); + var parent = this._parent; + if (parent) + matrix.preConcatenate(parent.getGlobalMatrix(true)); + matrix._updateVersion = updateVersion; + } + return _dontClone ? matrix : matrix.clone(); + }, + + getApplyMatrix: function() { + return this._applyMatrix; + }, + + setApplyMatrix: function(apply) { + if (this._applyMatrix = this._canApplyMatrix && !!apply) + this.transform(null, true); + }, + + getTransformContent: '#getApplyMatrix', + setTransformContent: '#setApplyMatrix', +}, { + getProject: function() { + return this._project; + }, + + _setProject: function(project, installEvents) { + if (this._project !== project) { + if (this._project) + this._installEvents(false); + this._project = project; + var children = this._children; + for (var i = 0, l = children && children.length; i < l; i++) + children[i]._setProject(project); + installEvents = true; + } + if (installEvents) + this._installEvents(true); + }, + + getView: function() { + return this._project.getView(); + }, + + _installEvents: function _installEvents(install) { + _installEvents.base.call(this, install); + var children = this._children; + for (var i = 0, l = children && children.length; i < l; i++) + children[i]._installEvents(install); + }, + + getLayer: function() { + var parent = this; + while (parent = parent._parent) { + if (parent instanceof Layer) + return parent; + } + return null; + }, + + getParent: function() { + return this._parent; + }, + + setParent: function(item) { + return item.addChild(this); + }, + + getChildren: function() { + return this._children; + }, + + setChildren: function(items) { + this.removeChildren(); + this.addChildren(items); + }, + + getFirstChild: function() { + return this._children && this._children[0] || null; + }, + + getLastChild: function() { + return this._children && this._children[this._children.length - 1] + || null; + }, + + getNextSibling: function() { + return this._parent && this._parent._children[this._index + 1] || null; + }, + + getPreviousSibling: function() { + return this._parent && this._parent._children[this._index - 1] || null; + }, + + getIndex: function() { + return this._index; + }, + + equals: function(item) { + return item === this || item && this._class === item._class + && this._style.equals(item._style) + && this._matrix.equals(item._matrix) + && this._locked === item._locked + && this._visible === item._visible + && this._blendMode === item._blendMode + && this._opacity === item._opacity + && this._clipMask === item._clipMask + && this._guide === item._guide + && this._equals(item) + || false; + }, + + _equals: function(item) { + return Base.equals(this._children, item._children); + }, + + clone: function(insert) { + return this._clone(new this.constructor(Item.NO_INSERT), insert); + }, + + _clone: function(copy, insert) { + copy.setStyle(this._style); + if (this._children) { + for (var i = 0, l = this._children.length; i < l; i++) + copy.addChild(this._children[i].clone(false), true); + } + if (insert || insert === undefined) + copy.insertAbove(this); + var keys = ['_locked', '_visible', '_blendMode', '_opacity', + '_clipMask', '_guide', '_applyMatrix']; + for (var i = 0, l = keys.length; i < l; i++) { + var key = keys[i]; + if (this.hasOwnProperty(key)) + copy[key] = this[key]; + } + copy._matrix.initialize(this._matrix); + copy._data = this._data ? Base.clone(this._data) : null; + copy.setSelected(this._selected); + if (this._name) + copy.setName(this._name, true); + return copy; + }, + + copyTo: function(itemOrProject) { + return itemOrProject.addChild(this.clone(false)); + }, + + rasterize: function(resolution) { + var bounds = this.getStrokeBounds(), + scale = (resolution || this.getView().getResolution()) / 72, + topLeft = bounds.getTopLeft().floor(), + bottomRight = bounds.getBottomRight().ceil(), + size = new Size(bottomRight.subtract(topLeft)), + canvas = CanvasProvider.getCanvas(size.multiply(scale)), + ctx = canvas.getContext('2d'), + matrix = new Matrix().scale(scale).translate(topLeft.negate()); + ctx.save(); + matrix.applyToContext(ctx); + this.draw(ctx, new Base({ matrices: [matrix] })); + ctx.restore(); + var raster = new Raster(Item.NO_INSERT); + raster.setCanvas(canvas); + raster.transform(new Matrix().translate(topLeft.add(size.divide(2))) + .scale(1 / scale)); + raster.insertAbove(this); + return raster; + }, + + contains: function() { + return !!this._contains( + this._matrix._inverseTransform(Point.read(arguments))); + }, + + _contains: function(point) { + if (this._children) { + for (var i = this._children.length - 1; i >= 0; i--) { + if (this._children[i].contains(point)) + return true; + } + return false; + } + return point.isInside(this.getInternalBounds()); + }, + + isInside: function() { + return Rectangle.read(arguments).contains(this.getBounds()); + }, + + _asPathItem: function() { + return new Path.Rectangle({ + rectangle: this.getInternalBounds(), + matrix: this._matrix, + insert: false, + }); + }, + + intersects: function(item, _matrix) { + if (!(item instanceof Item)) + return false; + return this._asPathItem().getIntersections(item._asPathItem(), + _matrix || item._matrix).length > 0; + }, + + hitTest: function() { + return this._hitTest( + Point.read(arguments), + HitResult.getOptions(Base.read(arguments))); + }, + + _hitTest: function(point, options) { + if (this._locked || !this._visible || this._guide && !options.guides + || this.isEmpty()) + return null; + + var matrix = this._matrix, + parentTotalMatrix = options._totalMatrix, + view = this.getView(), + totalMatrix = options._totalMatrix = parentTotalMatrix + ? parentTotalMatrix.chain(matrix) + : this.getGlobalMatrix().preConcatenate(view._matrix), + tolerancePadding = options._tolerancePadding = new Size( + Path._getPenPadding(1, totalMatrix.inverted()) + ).multiply( + Math.max(options.tolerance, 0.000001) + ); + point = matrix._inverseTransform(point); + + if (!this._children && !this.getInternalRoughBounds() + .expand(tolerancePadding.multiply(2))._containsPoint(point)) + return null; + var checkSelf = !(options.guides && !this._guide + || options.selected && !this._selected + || options.type && options.type !== Base.hyphenate(this._class) + || options.class && !(this instanceof options.class)), + that = this, + res; + + function checkBounds(type, part) { + var pt = bounds['get' + part](); + if (point.subtract(pt).divide(tolerancePadding).length <= 1) + return new HitResult(type, that, + { name: Base.hyphenate(part), point: pt }); + } + + if (checkSelf && (options.center || options.bounds) && this._parent) { + var bounds = this.getInternalBounds(); + if (options.center) + res = checkBounds('center', 'Center'); + if (!res && options.bounds) { + var points = [ + 'TopLeft', 'TopRight', 'BottomLeft', 'BottomRight', + 'LeftCenter', 'TopCenter', 'RightCenter', 'BottomCenter' + ]; + for (var i = 0; i < 8 && !res; i++) + res = checkBounds('bounds', points[i]); + } + } + + var children = !res && this._children; + if (children) { + var opts = this._getChildHitTestOptions(options); + for (var i = children.length - 1; i >= 0 && !res; i--) + res = children[i]._hitTest(point, opts); + } + if (!res && checkSelf) + res = this._hitTestSelf(point, options); + if (res && res.point) + res.point = matrix.transform(res.point); + options._totalMatrix = parentTotalMatrix; + return res; + }, + + _getChildHitTestOptions: function(options) { + return options; + }, + + _hitTestSelf: function(point, options) { + if (options.fill && this.hasFill() && this._contains(point)) + return new HitResult('fill', this); + }, + + matches: function(name, compare) { + function matchObject(obj1, obj2) { + for (var i in obj1) { + if (obj1.hasOwnProperty(i)) { + var val1 = obj1[i], + val2 = obj2[i]; + if (Base.isPlainObject(val1) && Base.isPlainObject(val2)) { + if (!matchObject(val1, val2)) + return false; + } else if (!Base.equals(val1, val2)) { + return false; + } + } + } + return true; + } + if (typeof name === 'object') { + for (var key in name) { + if (name.hasOwnProperty(key) && !this.matches(key, name[key])) + return false; + } + } else { + var value = /^(empty|editable)$/.test(name) + ? this['is' + Base.capitalize(name)]() + : name === 'type' + ? Base.hyphenate(this._class) + : this[name]; + if (/^(constructor|class)$/.test(name)) { + if (!(this instanceof compare)) + return false; + } else if (compare instanceof RegExp) { + if (!compare.test(value)) + return false; + } else if (typeof compare === 'function') { + if (!compare(value)) + return false; + } else if (Base.isPlainObject(compare)) { + if (!matchObject(compare, value)) + return false; + } else if (!Base.equals(value, compare)) { + return false; + } + } + return true; + }, + + getItems: function(match) { + return Item._getItems(this._children, match, this._matrix); + }, + + getItem: function(match) { + return Item._getItems(this._children, match, this._matrix, null, true) + [0] || null; + }, + + statics: { + _getItems: function _getItems(children, match, matrix, param, + firstOnly) { + if (!param) { + var overlapping = match.overlapping, + inside = match.inside, + bounds = overlapping || inside, + rect = bounds && Rectangle.read([bounds]); + param = { + items: [], + inside: rect, + overlapping: overlapping && new Path.Rectangle({ + rectangle: rect, + insert: false + }) + }; + if (bounds) + match = Base.set({}, match, + { inside: true, overlapping: true }); + } + var items = param.items, + inside = param.inside, + overlapping = param.overlapping; + matrix = inside && (matrix || new Matrix()); + for (var i = 0, l = children && children.length; i < l; i++) { + var child = children[i], + childMatrix = matrix && matrix.chain(child._matrix), + add = true; + if (inside) { + var bounds = child.getBounds(childMatrix); + if (!inside.intersects(bounds)) + continue; + if (!(inside && inside.contains(bounds)) && !(overlapping + && overlapping.intersects(child, childMatrix))) + add = false; + } + if (add && child.matches(match)) { + items.push(child); + if (firstOnly) + break; + } + _getItems(child._children, match, + childMatrix, param, + firstOnly); + if (firstOnly && items.length > 0) + break; + } + return items; + } + } +}, { + + importJSON: function(json) { + var res = Base.importJSON(json, this); + return res !== this + ? this.addChild(res) + : res; + }, + + addChild: function(item, _preserve) { + return this.insertChild(undefined, item, _preserve); + }, + + insertChild: function(index, item, _preserve) { + var res = item ? this.insertChildren(index, [item], _preserve) : null; + return res && res[0]; + }, + + addChildren: function(items, _preserve) { + return this.insertChildren(this._children.length, items, _preserve); + }, + + insertChildren: function(index, items, _preserve, _proto) { + var children = this._children; + if (children && items && items.length > 0) { + items = Array.prototype.slice.apply(items); + for (var i = items.length - 1; i >= 0; i--) { + var item = items[i]; + if (_proto && !(item instanceof _proto)) { + items.splice(i, 1); + } else { + var shift = item._parent === this && item._index < index; + if (item._remove(false, true) && shift) + index--; + } + } + Base.splice(children, items, index, 0); + var project = this._project, + notifySelf = project && project._changes; + for (var i = 0, l = items.length; i < l; i++) { + var item = items[i]; + item._parent = this; + item._setProject(this._project, true); + if (item._name) + item.setName(item._name); + if (notifySelf) + this._changed(5); + } + this._changed(11); + } else { + items = null; + } + return items; + }, + + _insertSibling: function(index, item, _preserve) { + return this._parent + ? this._parent.insertChild(index, item, _preserve) + : null; + }, + + insertAbove: function(item, _preserve) { + return item._insertSibling(item._index + 1, this, _preserve); + }, + + insertBelow: function(item, _preserve) { + return item._insertSibling(item._index, this, _preserve); + }, + + sendToBack: function() { + return (this._parent || this instanceof Layer && this._project) + .insertChild(0, this); + }, + + bringToFront: function() { + return (this._parent || this instanceof Layer && this._project) + .addChild(this); + }, + + appendTop: '#addChild', + + appendBottom: function(item) { + return this.insertChild(0, item); + }, + + moveAbove: '#insertAbove', + + moveBelow: '#insertBelow', + + reduce: function() { + if (this._children && this._children.length === 1) { + var child = this._children[0].reduce(); + child.insertAbove(this); + child.setStyle(this._style); + this.remove(); + return child; + } + return this; + }, + + _removeNamed: function() { + var parent = this._parent; + if (parent) { + var children = parent._children, + namedChildren = parent._namedChildren, + name = this._name, + namedArray = namedChildren[name], + index = namedArray ? namedArray.indexOf(this) : -1; + if (index !== -1) { + if (children[name] == this) + delete children[name]; + namedArray.splice(index, 1); + if (namedArray.length) { + children[name] = namedArray[namedArray.length - 1]; + } else { + delete namedChildren[name]; + } + } + } + }, + + _remove: function(notifySelf, notifyParent) { + var parent = this._parent; + if (parent) { + if (this._name) + this._removeNamed(); + if (this._index != null) + Base.splice(parent._children, null, this._index, 1); + this._installEvents(false); + if (notifySelf) { + var project = this._project; + if (project && project._changes) + this._changed(5); + } + if (notifyParent) + parent._changed(11); + this._parent = null; + return true; + } + return false; + }, + + remove: function() { + return this._remove(true, true); + }, + + replaceWith: function(item) { + var ok = item && item.insertBelow(this); + if (ok) + this.remove(); + return ok; + }, + + removeChildren: function(from, to) { + if (!this._children) + return null; + from = from || 0; + to = Base.pick(to, this._children.length); + var removed = Base.splice(this._children, null, from, to - from); + for (var i = removed.length - 1; i >= 0; i--) { + removed[i]._remove(true, false); + } + if (removed.length > 0) + this._changed(11); + return removed; + }, + + clear: '#removeChildren', + + reverseChildren: function() { + if (this._children) { + this._children.reverse(); + for (var i = 0, l = this._children.length; i < l; i++) + this._children[i]._index = i; + this._changed(11); + } + }, + + isEmpty: function() { + return !this._children || this._children.length === 0; + }, + + isEditable: function() { + var item = this; + while (item) { + if (!item._visible || item._locked) + return false; + item = item._parent; + } + return true; + }, + + hasFill: function() { + return this.getStyle().hasFill(); + }, + + hasStroke: function() { + return this.getStyle().hasStroke(); + }, + + hasShadow: function() { + return this.getStyle().hasShadow(); + }, + + _getOrder: function(item) { + function getList(item) { + var list = []; + do { + list.unshift(item); + } while (item = item._parent); + return list; + } + var list1 = getList(this), + list2 = getList(item); + for (var i = 0, l = Math.min(list1.length, list2.length); i < l; i++) { + if (list1[i] != list2[i]) { + return list1[i]._index < list2[i]._index ? 1 : -1; + } + } + return 0; + }, + + hasChildren: function() { + return this._children && this._children.length > 0; + }, + + isInserted: function() { + return this._parent ? this._parent.isInserted() : false; + }, + + isAbove: function(item) { + return this._getOrder(item) === -1; + }, + + isBelow: function(item) { + return this._getOrder(item) === 1; + }, + + isParent: function(item) { + return this._parent === item; + }, + + isChild: function(item) { + return item && item._parent === this; + }, + + isDescendant: function(item) { + var parent = this; + while (parent = parent._parent) { + if (parent == item) + return true; + } + return false; + }, + + isAncestor: function(item) { + return item ? item.isDescendant(this) : false; + }, + + isGroupedWith: function(item) { + var parent = this._parent; + while (parent) { + if (parent._parent + && /^(Group|Layer|CompoundPath)$/.test(parent._class) + && item.isDescendant(parent)) + return true; + parent = parent._parent; + } + return false; + }, + + translate: function() { + var mx = new Matrix(); + return this.transform(mx.translate.apply(mx, arguments)); + }, + + rotate: function(angle ) { + return this.transform(new Matrix().rotate(angle, + Point.read(arguments, 1, { readNull: true }) + || this.getPosition(true))); + } +}, Base.each(['scale', 'shear', 'skew'], function(name) { + this[name] = function() { + var point = Point.read(arguments), + center = Point.read(arguments, 0, { readNull: true }); + return this.transform(new Matrix()[name](point, + center || this.getPosition(true))); + }; +}, { + +}), { + transform: function(matrix, _applyMatrix, _applyRecursively, + _setApplyMatrix) { + if (matrix && matrix.isIdentity()) + matrix = null; + var _matrix = this._matrix, + applyMatrix = (_applyMatrix || this._applyMatrix) + && ((!_matrix.isIdentity() || matrix) + || _applyMatrix && _applyRecursively && this._children); + if (!matrix && !applyMatrix) + return this; + if (matrix) + _matrix.preConcatenate(matrix); + if (applyMatrix = applyMatrix && this._transformContent(_matrix, + _applyRecursively, _setApplyMatrix)) { + var pivot = this._pivot, + style = this._style, + fillColor = style.getFillColor(true), + strokeColor = style.getStrokeColor(true); + if (pivot) + _matrix._transformPoint(pivot, pivot, true); + if (fillColor) + fillColor.transform(_matrix); + if (strokeColor) + strokeColor.transform(_matrix); + _matrix.reset(true); + if (_setApplyMatrix && this._canApplyMatrix) + this._applyMatrix = true; + } + var bounds = this._bounds, + position = this._position; + this._changed(9); + var decomp = bounds && matrix && matrix.decompose(); + if (decomp && !decomp.shearing && decomp.rotation % 90 === 0) { + for (var key in bounds) { + var rect = bounds[key]; + if (applyMatrix || !rect._internal) + matrix._transformBounds(rect, rect); + } + var getter = this._boundsGetter, + rect = bounds[getter && getter.getBounds || getter || 'getBounds']; + if (rect) + this._position = rect.getCenter(true); + this._bounds = bounds; + } else if (matrix && position) { + this._position = matrix._transformPoint(position, position); + } + return this; + }, + + _transformContent: function(matrix, applyRecursively, setApplyMatrix) { + var children = this._children; + if (children) { + for (var i = 0, l = children.length; i < l; i++) + children[i].transform(matrix, true, applyRecursively, + setApplyMatrix); + return true; + } + }, + + globalToLocal: function() { + return this.getGlobalMatrix(true)._inverseTransform( + Point.read(arguments)); + }, + + localToGlobal: function() { + return this.getGlobalMatrix(true)._transformPoint( + Point.read(arguments)); + }, + + parentToLocal: function() { + return this._matrix._inverseTransform(Point.read(arguments)); + }, + + localToParent: function() { + return this._matrix._transformPoint(Point.read(arguments)); + }, + + fitBounds: function(rectangle, fill) { + rectangle = Rectangle.read(arguments); + var bounds = this.getBounds(), + itemRatio = bounds.height / bounds.width, + rectRatio = rectangle.height / rectangle.width, + scale = (fill ? itemRatio > rectRatio : itemRatio < rectRatio) + ? rectangle.width / bounds.width + : rectangle.height / bounds.height, + newBounds = new Rectangle(new Point(), + new Size(bounds.width * scale, bounds.height * scale)); + newBounds.setCenter(rectangle.getCenter()); + this.setBounds(newBounds); + }, + + _setStyles: function(ctx) { + var style = this._style, + fillColor = style.getFillColor(), + strokeColor = style.getStrokeColor(), + shadowColor = style.getShadowColor(); + if (fillColor) + ctx.fillStyle = fillColor.toCanvasStyle(ctx); + if (strokeColor) { + var strokeWidth = style.getStrokeWidth(); + if (strokeWidth > 0) { + ctx.strokeStyle = strokeColor.toCanvasStyle(ctx); + ctx.lineWidth = strokeWidth; + var strokeJoin = style.getStrokeJoin(), + strokeCap = style.getStrokeCap(), + miterLimit = style.getMiterLimit(); + if (strokeJoin) + ctx.lineJoin = strokeJoin; + if (strokeCap) + ctx.lineCap = strokeCap; + if (miterLimit) + ctx.miterLimit = miterLimit; + if (paper.support.nativeDash) { + var dashArray = style.getDashArray(), + dashOffset = style.getDashOffset(); + if (dashArray && dashArray.length) { + if ('setLineDash' in ctx) { + ctx.setLineDash(dashArray); + ctx.lineDashOffset = dashOffset; + } else { + ctx.mozDash = dashArray; + ctx.mozDashOffset = dashOffset; + } + } + } + } + } + if (shadowColor) { + var shadowBlur = style.getShadowBlur(); + if (shadowBlur > 0) { + ctx.shadowColor = shadowColor.toCanvasStyle(ctx); + ctx.shadowBlur = shadowBlur; + var offset = this.getShadowOffset(); + ctx.shadowOffsetX = offset.x; + ctx.shadowOffsetY = offset.y; + } + } + }, + + draw: function(ctx, param, parentStrokeMatrix) { + var updateVersion = this._updateVersion = this._project._updateVersion; + if (!this._visible || this._opacity === 0) + return; + var matrices = param.matrices, + viewMatrix = param.viewMatrix, + matrix = this._matrix, + globalMatrix = matrices[matrices.length - 1].chain(matrix); + if (!globalMatrix.isInvertible()) + return; + + function getViewMatrix(matrix) { + return viewMatrix ? viewMatrix.chain(matrix) : matrix; + } + + matrices.push(globalMatrix); + if (param.updateMatrix) { + globalMatrix._updateVersion = updateVersion; + this._globalMatrix = globalMatrix; + } + + var blendMode = this._blendMode, + opacity = this._opacity, + normalBlend = blendMode === 'normal', + nativeBlend = BlendMode.nativeModes[blendMode], + direct = normalBlend && opacity === 1 + || param.dontStart + || param.clip + || (nativeBlend || normalBlend && opacity < 1) + && this._canComposite(), + pixelRatio = param.pixelRatio, + mainCtx, itemOffset, prevOffset; + if (!direct) { + var bounds = this.getStrokeBounds(getViewMatrix(globalMatrix)); + if (!bounds.width || !bounds.height) + return; + prevOffset = param.offset; + itemOffset = param.offset = bounds.getTopLeft().floor(); + mainCtx = ctx; + ctx = CanvasProvider.getContext(bounds.getSize().ceil().add(1) + .multiply(pixelRatio)); + if (pixelRatio !== 1) + ctx.scale(pixelRatio, pixelRatio); + } + ctx.save(); + var strokeMatrix = parentStrokeMatrix + ? parentStrokeMatrix.chain(matrix) + : !this.getStrokeScaling(true) && getViewMatrix(globalMatrix), + clip = !direct && param.clipItem, + transform = !strokeMatrix || clip; + if (direct) { + ctx.globalAlpha = opacity; + if (nativeBlend) + ctx.globalCompositeOperation = blendMode; + } else if (transform) { + ctx.translate(-itemOffset.x, -itemOffset.y); + } + if (transform) + (direct ? matrix : getViewMatrix(globalMatrix)).applyToContext(ctx); + if (clip) + param.clipItem.draw(ctx, param.extend({ clip: true })); + if (strokeMatrix) { + ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0); + var offset = param.offset; + if (offset) + ctx.translate(-offset.x, -offset.y); + } + this._draw(ctx, param, strokeMatrix); + ctx.restore(); + matrices.pop(); + if (param.clip && !param.dontFinish) + ctx.clip(); + if (!direct) { + BlendMode.process(blendMode, ctx, mainCtx, opacity, + itemOffset.subtract(prevOffset).multiply(pixelRatio)); + CanvasProvider.release(ctx); + param.offset = prevOffset; + } + }, + + _isUpdated: function(updateVersion) { + var parent = this._parent; + if (parent instanceof CompoundPath) + return parent._isUpdated(updateVersion); + var updated = this._updateVersion === updateVersion; + if (!updated && parent && parent._visible + && parent._isUpdated(updateVersion)) { + this._updateVersion = updateVersion; + updated = true; + } + return updated; + }, + + _drawSelection: function(ctx, matrix, size, selectedItems, updateVersion) { + if ((this._drawSelected || this._boundsSelected) + && this._isUpdated(updateVersion)) { + var color = this.getSelectedColor(true) + || this.getLayer().getSelectedColor(true), + mx = matrix.chain(this.getGlobalMatrix(true)); + ctx.strokeStyle = ctx.fillStyle = color + ? color.toCanvasStyle(ctx) : '#009dec'; + if (this._drawSelected) + this._drawSelected(ctx, mx, selectedItems); + if (this._boundsSelected) { + var half = size / 2; + coords = mx._transformCorners(this.getInternalBounds()); + ctx.beginPath(); + for (var i = 0; i < 8; i++) + ctx[i === 0 ? 'moveTo' : 'lineTo'](coords[i], coords[++i]); + ctx.closePath(); + ctx.stroke(); + for (var i = 0; i < 8; i++) + ctx.fillRect(coords[i] - half, coords[++i] - half, + size, size); + } + } + }, + + _canComposite: function() { + return false; + } +}, Base.each(['down', 'drag', 'up', 'move'], function(name) { + this['removeOn' + Base.capitalize(name)] = function() { + var hash = {}; + hash[name] = true; + return this.removeOn(hash); + }; +}, { + + removeOn: function(obj) { + for (var name in obj) { + if (obj[name]) { + var key = 'mouse' + name, + project = this._project, + sets = project._removeSets = project._removeSets || {}; + sets[key] = sets[key] || {}; + sets[key][this._id] = this; + } + } + return this; + } +})); + +var Group = Item.extend({ + _class: 'Group', + _selectChildren: true, + _serializeFields: { + children: [] + }, + + initialize: function Group(arg) { + this._children = []; + this._namedChildren = {}; + if (!this._initialize(arg)) + this.addChildren(Array.isArray(arg) ? arg : arguments); + }, + + _changed: function _changed(flags) { + _changed.base.call(this, flags); + if (flags & 1026) { + this._clipItem = undefined; + } + }, + + _getClipItem: function() { + var clipItem = this._clipItem; + if (clipItem === undefined) { + clipItem = null; + for (var i = 0, l = this._children.length; i < l; i++) { + var child = this._children[i]; + if (child._clipMask) { + clipItem = child; + break; + } + } + this._clipItem = clipItem; + } + return clipItem; + }, + + isClipped: function() { + return !!this._getClipItem(); + }, + + setClipped: function(clipped) { + var child = this.getFirstChild(); + if (child) + child.setClipMask(clipped); + }, + + _draw: function(ctx, param) { + var clip = param.clip, + clipItem = !clip && this._getClipItem(), + draw = true; + param = param.extend({ clipItem: clipItem, clip: false }); + if (clip) { + if (this._currentPath) { + ctx.currentPath = this._currentPath; + draw = false; + } else { + ctx.beginPath(); + param.dontStart = param.dontFinish = true; + } + } else if (clipItem) { + clipItem.draw(ctx, param.extend({ clip: true })); + } + if (draw) { + for (var i = 0, l = this._children.length; i < l; i++) { + var item = this._children[i]; + if (item !== clipItem) + item.draw(ctx, param); + } + } + if (clip) { + this._currentPath = ctx.currentPath; + } + } +}); + +var Layer = Group.extend({ + _class: 'Layer', + + initialize: function Layer(arg) { + var props = Base.isPlainObject(arg) + ? new Base(arg) + : { children: Array.isArray(arg) ? arg : arguments }, + insert = props.insert; + props.insert = false; + Group.call(this, props); + if (insert || insert === undefined) { + this._project.addChild(this); + this.activate(); + } + }, + + _remove: function _remove(notifySelf, notifyParent) { + if (this._parent) + return _remove.base.call(this, notifySelf, notifyParent); + if (this._index != null) { + var project = this._project; + if (project._activeLayer === this) + project._activeLayer = this.getNextSibling() + || this.getPreviousSibling(); + Base.splice(project.layers, null, this._index, 1); + this._installEvents(false); + if (notifySelf && project._changes) + this._changed(5); + if (notifyParent) { + project._needsUpdate = true; + } + return true; + } + return false; + }, + + getNextSibling: function getNextSibling() { + return this._parent ? getNextSibling.base.call(this) + : this._project.layers[this._index + 1] || null; + }, + + getPreviousSibling: function getPreviousSibling() { + return this._parent ? getPreviousSibling.base.call(this) + : this._project.layers[this._index - 1] || null; + }, + + isInserted: function isInserted() { + return this._parent ? isInserted.base.call(this) : this._index != null; + }, + + activate: function() { + this._project._activeLayer = this; + }, + + _insertSibling: function _insertSibling(index, item, _preserve) { + return !this._parent + ? this._project.insertChild(index, item, _preserve) + : _insertSibling.base.call(this, index, item, _preserve); + } +}); + +var Shape = Item.extend({ + _class: 'Shape', + _applyMatrix: false, + _canApplyMatrix: false, + _boundsSelected: true, + _serializeFields: { + type: null, + size: null, + radius: null + }, + + initialize: function Shape(props) { + this._initialize(props); + }, + + _equals: function(item) { + return this._type === item._type + && this._size.equals(item._size) + && Base.equals(this._radius, item._radius); + }, + + clone: function(insert) { + var copy = new Shape(Item.NO_INSERT); + copy.setType(this._type); + copy.setSize(this._size); + copy.setRadius(this._radius); + return this._clone(copy, insert); + }, + + getType: function() { + return this._type; + }, + + setType: function(type) { + this._type = type; + }, + + getShape: '#getType', + setShape: '#setType', + + getSize: function() { + var size = this._size; + return new LinkedSize(size.width, size.height, this, 'setSize'); + }, + + setSize: function() { + var size = Size.read(arguments); + if (!this._size) { + this._size = size.clone(); + } else if (!this._size.equals(size)) { + var type = this._type, + width = size.width, + height = size.height; + if (type === 'rectangle') { + var radius = Size.min(this._radius, size.divide(2)); + this._radius.set(radius.width, radius.height); + } else if (type === 'circle') { + width = height = (width + height) / 2; + this._radius = width / 2; + } else if (type === 'ellipse') { + this._radius.set(width / 2, height / 2); + } + this._size.set(width, height); + this._changed(9); + } + }, + + getRadius: function() { + var rad = this._radius; + return this._type === 'circle' + ? rad + : new LinkedSize(rad.width, rad.height, this, 'setRadius'); + }, + + setRadius: function(radius) { + var type = this._type; + if (type === 'circle') { + if (radius === this._radius) + return; + var size = radius * 2; + this._radius = radius; + this._size.set(size, size); + } else { + radius = Size.read(arguments); + if (!this._radius) { + this._radius = radius.clone(); + } else { + if (this._radius.equals(radius)) + return; + this._radius.set(radius.width, radius.height); + if (type === 'rectangle') { + var size = Size.max(this._size, radius.multiply(2)); + this._size.set(size.width, size.height); + } else if (type === 'ellipse') { + this._size.set(radius.width * 2, radius.height * 2); + } + } + } + this._changed(9); + }, + + isEmpty: function() { + return false; + }, + + toPath: function(insert) { + var path = new Path[Base.capitalize(this._type)]({ + center: new Point(), + size: this._size, + radius: this._radius, + insert: false + }); + path.setStyle(this._style); + path.transform(this._matrix); + if (insert || insert === undefined) + path.insertAbove(this); + return path; + }, + + _draw: function(ctx, param, strokeMatrix) { + var style = this._style, + hasFill = style.hasFill(), + hasStroke = style.hasStroke(), + dontPaint = param.dontFinish || param.clip, + untransformed = !strokeMatrix; + if (hasFill || hasStroke || dontPaint) { + var type = this._type, + radius = this._radius, + isCircle = type === 'circle'; + if (!param.dontStart) + ctx.beginPath(); + if (untransformed && isCircle) { + ctx.arc(0, 0, radius, 0, Math.PI * 2, true); + } else { + var rx = isCircle ? radius : radius.width, + ry = isCircle ? radius : radius.height, + size = this._size, + width = size.width, + height = size.height; + if (untransformed && type === 'rect' && rx === 0 && ry === 0) { + ctx.rect(-width / 2, -height / 2, width, height); + } else { + var x = width / 2, + y = height / 2, + kappa = 1 - 0.5522847498307936, + cx = rx * kappa, + cy = ry * kappa, + c = [ + -x, -y + ry, + -x, -y + cy, + -x + cx, -y, + -x + rx, -y, + x - rx, -y, + x - cx, -y, + x, -y + cy, + x, -y + ry, + x, y - ry, + x, y - cy, + x - cx, y, + x - rx, y, + -x + rx, y, + -x + cx, y, + -x, y - cy, + -x, y - ry + ]; + if (strokeMatrix) + strokeMatrix.transform(c, c, 32); + ctx.moveTo(c[0], c[1]); + ctx.bezierCurveTo(c[2], c[3], c[4], c[5], c[6], c[7]); + if (x !== rx) + ctx.lineTo(c[8], c[9]); + ctx.bezierCurveTo(c[10], c[11], c[12], c[13], c[14], c[15]); + if (y !== ry) + ctx.lineTo(c[16], c[17]); + ctx.bezierCurveTo(c[18], c[19], c[20], c[21], c[22], c[23]); + if (x !== rx) + ctx.lineTo(c[24], c[25]); + ctx.bezierCurveTo(c[26], c[27], c[28], c[29], c[30], c[31]); + } + } + ctx.closePath(); + } + if (!dontPaint && (hasFill || hasStroke)) { + this._setStyles(ctx); + if (hasFill) { + ctx.fill(style.getWindingRule()); + ctx.shadowColor = 'rgba(0,0,0,0)'; + } + if (hasStroke) + ctx.stroke(); + } + }, + + _canComposite: function() { + return !(this.hasFill() && this.hasStroke()); + }, + + _getBounds: function(getter, matrix) { + var rect = new Rectangle(this._size).setCenter(0, 0); + if (getter !== 'getBounds' && this.hasStroke()) + rect = rect.expand(this.getStrokeWidth()); + return matrix ? matrix._transformBounds(rect) : rect; + } +}, +new function() { + + function getCornerCenter(that, point, expand) { + var radius = that._radius; + if (!radius.isZero()) { + var halfSize = that._size.divide(2); + for (var i = 0; i < 4; i++) { + var dir = new Point(i & 1 ? 1 : -1, i > 1 ? 1 : -1), + corner = dir.multiply(halfSize), + center = corner.subtract(dir.multiply(radius)), + rect = new Rectangle(corner, center); + if ((expand ? rect.expand(expand) : rect).contains(point)) + return center; + } + } + } + + function getEllipseRadius(point, radius) { + var angle = point.getAngleInRadians(), + width = radius.width * 2, + height = radius.height * 2, + x = width * Math.sin(angle), + y = height * Math.cos(angle); + return width * height / (2 * Math.sqrt(x * x + y * y)); + } + + return { + _contains: function _contains(point) { + if (this._type === 'rectangle') { + var center = getCornerCenter(this, point); + return center + ? point.subtract(center).divide(this._radius) + .getLength() <= 1 + : _contains.base.call(this, point); + } else { + return point.divide(this.size).getLength() <= 0.5; + } + }, + + _hitTestSelf: function _hitTestSelf(point, options) { + var hit = false; + if (this.hasStroke()) { + var type = this._type, + radius = this._radius, + strokeWidth = this.getStrokeWidth() + 2 * options.tolerance; + if (type === 'rectangle') { + var center = getCornerCenter(this, point, strokeWidth); + if (center) { + var pt = point.subtract(center); + hit = 2 * Math.abs(pt.getLength() + - getEllipseRadius(pt, radius)) <= strokeWidth; + } else { + var rect = new Rectangle(this._size).setCenter(0, 0), + outer = rect.expand(strokeWidth), + inner = rect.expand(-strokeWidth); + hit = outer._containsPoint(point) + && !inner._containsPoint(point); + } + } else { + if (type === 'ellipse') + radius = getEllipseRadius(point, radius); + hit = 2 * Math.abs(point.getLength() - radius) + <= strokeWidth; + } + } + return hit + ? new HitResult('stroke', this) + : _hitTestSelf.base.apply(this, arguments); + } + }; +}, { + +statics: new function() { + function createShape(type, point, size, radius, args) { + var item = new Shape(Base.getNamed(args)); + item._type = type; + item._size = size; + item._radius = radius; + return item.translate(point); + } + + return { + Circle: function() { + var center = Point.readNamed(arguments, 'center'), + radius = Base.readNamed(arguments, 'radius'); + return createShape('circle', center, new Size(radius * 2), radius, + arguments); + }, + + Rectangle: function() { + var rect = Rectangle.readNamed(arguments, 'rectangle'), + radius = Size.min(Size.readNamed(arguments, 'radius'), + rect.getSize(true).divide(2)); + return createShape('rectangle', rect.getCenter(true), + rect.getSize(true), radius, arguments); + }, + + Ellipse: function() { + var ellipse = Shape._readEllipse(arguments), + radius = ellipse.radius; + return createShape('ellipse', ellipse.center, radius.multiply(2), + radius, arguments); + }, + + _readEllipse: function(args) { + var center, + radius; + if (Base.hasNamed(args, 'radius')) { + center = Point.readNamed(args, 'center'); + radius = Size.readNamed(args, 'radius'); + } else { + var rect = Rectangle.readNamed(args, 'rectangle'); + center = rect.getCenter(true); + radius = rect.getSize(true).divide(2); + } + return { center: center, radius: radius }; + } + }; +}}); + +var Raster = Item.extend({ + _class: 'Raster', + _applyMatrix: false, + _canApplyMatrix: false, + _boundsGetter: 'getBounds', + _boundsSelected: true, + _serializeFields: { + source: null + }, + + initialize: function Raster(object, position) { + if (!this._initialize(object, + position !== undefined && Point.read(arguments, 1))) { + if (typeof object === 'string') { + this.setSource(object); + } else { + this.setImage(object); + } + } + if (!this._size) { + this._size = new Size(); + this._loaded = false; + } + }, + + _equals: function(item) { + return this.getSource() === item.getSource(); + }, + + clone: function(insert) { + var copy = new Raster(Item.NO_INSERT), + image = this._image, + canvas = this._canvas; + if (image) { + copy.setImage(image); + } else if (canvas) { + var copyCanvas = CanvasProvider.getCanvas(this._size); + copyCanvas.getContext('2d').drawImage(canvas, 0, 0); + copy.setImage(copyCanvas); + } + return this._clone(copy, insert); + }, + + getSize: function() { + var size = this._size; + return new LinkedSize(size ? size.width : 0, size ? size.height : 0, + this, 'setSize'); + }, + + setSize: function() { + var size = Size.read(arguments); + if (!size.equals(this._size)) { + if (size.width > 0 && size.height > 0) { + var element = this.getElement(); + this.setImage(CanvasProvider.getCanvas(size)); + if (element) + this.getContext(true).drawImage(element, 0, 0, + size.width, size.height); + } else { + if (this._canvas) + CanvasProvider.release(this._canvas); + this._size = size.clone(); + } + } + }, + + getWidth: function() { + return this._size ? this._size.width : 0; + }, + + setWidth: function(width) { + this.setSize(width, this.getHeight()); + }, + + getHeight: function() { + return this._size ? this._size.height : 0; + }, + + setHeight: function(height) { + this.setSize(this.getWidth(), height); + }, + + isEmpty: function() { + var size = this._size; + return !size || size.width === 0 && size.height === 0; + }, + + getResolution: function() { + var matrix = this._matrix, + orig = new Point(0, 0).transform(matrix), + u = new Point(1, 0).transform(matrix).subtract(orig), + v = new Point(0, 1).transform(matrix).subtract(orig); + return new Size( + 72 / u.getLength(), + 72 / v.getLength() + ); + }, + + getPpi: '#getResolution', + + getImage: function() { + return this._image; + }, + + setImage: function(image) { + if (this._canvas) + CanvasProvider.release(this._canvas); + if (image && image.getContext) { + this._image = null; + this._canvas = image; + this._loaded = true; + } else { + this._image = image; + this._canvas = null; + this._loaded = image && image.complete; + } + this._size = new Size( + image ? image.naturalWidth || image.width : 0, + image ? image.naturalHeight || image.height : 0); + this._context = null; + this._changed(521); + }, + + getCanvas: function() { + if (!this._canvas) { + var ctx = CanvasProvider.getContext(this._size); + try { + if (this._image) + ctx.drawImage(this._image, 0, 0); + this._canvas = ctx.canvas; + } catch (e) { + CanvasProvider.release(ctx); + } + } + return this._canvas; + }, + + setCanvas: '#setImage', + + getContext: function(modify) { + if (!this._context) + this._context = this.getCanvas().getContext('2d'); + if (modify) { + this._image = null; + this._changed(513); + } + return this._context; + }, + + setContext: function(context) { + this._context = context; + }, + + getSource: function() { + return this._image && this._image.src || this.toDataURL(); + }, + + setSource: function(src) { + var that = this, + image; + + function loaded() { + var view = that.getView(); + if (view) { + paper = view._scope; + that.setImage(image); + that.emit('load'); + view.update(); + } + } + + image = document.getElementById(src) || new Image(); + + if (image.naturalWidth && image.naturalHeight) { + setTimeout(loaded, 0); + } else { + DomEvent.add(image, { + load: loaded + }); + if (!image.src) + image.src = src; + } + this.setImage(image); + }, + + getElement: function() { + return this._canvas || this._loaded && this._image; + } +}, { + beans: false, + + getSubCanvas: function() { + var rect = Rectangle.read(arguments), + ctx = CanvasProvider.getContext(rect.getSize()); + ctx.drawImage(this.getCanvas(), rect.x, rect.y, + rect.width, rect.height, 0, 0, rect.width, rect.height); + return ctx.canvas; + }, + + getSubRaster: function() { + var rect = Rectangle.read(arguments), + raster = new Raster(Item.NO_INSERT); + raster.setImage(this.getSubCanvas(rect)); + raster.translate(rect.getCenter().subtract(this.getSize().divide(2))); + raster._matrix.preConcatenate(this._matrix); + raster.insertAbove(this); + return raster; + }, + + toDataURL: function() { + var src = this._image && this._image.src; + if (/^data:/.test(src)) + return src; + var canvas = this.getCanvas(); + return canvas ? canvas.toDataURL() : null; + }, + + drawImage: function(image ) { + var point = Point.read(arguments, 1); + this.getContext(true).drawImage(image, point.x, point.y); + }, + + getAverageColor: function(object) { + var bounds, path; + if (!object) { + bounds = this.getBounds(); + } else if (object instanceof PathItem) { + path = object; + bounds = object.getBounds(); + } else if (object.width) { + bounds = new Rectangle(object); + } else if (object.x) { + bounds = new Rectangle(object.x - 0.5, object.y - 0.5, 1, 1); + } + var sampleSize = 32, + width = Math.min(bounds.width, sampleSize), + height = Math.min(bounds.height, sampleSize); + var ctx = Raster._sampleContext; + if (!ctx) { + ctx = Raster._sampleContext = CanvasProvider.getContext( + new Size(sampleSize)); + } else { + ctx.clearRect(0, 0, sampleSize + 1, sampleSize + 1); + } + ctx.save(); + var matrix = new Matrix() + .scale(width / bounds.width, height / bounds.height) + .translate(-bounds.x, -bounds.y); + matrix.applyToContext(ctx); + if (path) + path.draw(ctx, new Base({ clip: true, matrices: [matrix] })); + this._matrix.applyToContext(ctx); + var element = this.getElement(), + size = this._size; + if (element) + ctx.drawImage(element, -size.width / 2, -size.height / 2); + ctx.restore(); + var pixels = ctx.getImageData(0.5, 0.5, Math.ceil(width), + Math.ceil(height)).data, + channels = [0, 0, 0], + total = 0; + for (var i = 0, l = pixels.length; i < l; i += 4) { + var alpha = pixels[i + 3]; + total += alpha; + alpha /= 255; + channels[0] += pixels[i] * alpha; + channels[1] += pixels[i + 1] * alpha; + channels[2] += pixels[i + 2] * alpha; + } + for (var i = 0; i < 3; i++) + channels[i] /= total; + return total ? Color.read(channels) : null; + }, + + getPixel: function() { + var point = Point.read(arguments); + var data = this.getContext().getImageData(point.x, point.y, 1, 1).data; + return new Color('rgb', [data[0] / 255, data[1] / 255, data[2] / 255], + data[3] / 255); + }, + + setPixel: function() { + var point = Point.read(arguments), + color = Color.read(arguments), + components = color._convert('rgb'), + alpha = color._alpha, + ctx = this.getContext(true), + imageData = ctx.createImageData(1, 1), + data = imageData.data; + data[0] = components[0] * 255; + data[1] = components[1] * 255; + data[2] = components[2] * 255; + data[3] = alpha != null ? alpha * 255 : 255; + ctx.putImageData(imageData, point.x, point.y); + }, + + createImageData: function() { + var size = Size.read(arguments); + return this.getContext().createImageData(size.width, size.height); + }, + + getImageData: function() { + var rect = Rectangle.read(arguments); + if (rect.isEmpty()) + rect = new Rectangle(this._size); + return this.getContext().getImageData(rect.x, rect.y, + rect.width, rect.height); + }, + + setImageData: function(data ) { + var point = Point.read(arguments, 1); + this.getContext(true).putImageData(data, point.x, point.y); + }, + + _getBounds: function(getter, matrix) { + var rect = new Rectangle(this._size).setCenter(0, 0); + return matrix ? matrix._transformBounds(rect) : rect; + }, + + _hitTestSelf: function(point) { + if (this._contains(point)) { + var that = this; + return new HitResult('pixel', that, { + offset: point.add(that._size.divide(2)).round(), + color: { + get: function() { + return that.getPixel(this.offset); + } + } + }); + } + }, + + _draw: function(ctx) { + var element = this.getElement(); + if (element) { + ctx.globalAlpha = this._opacity; + ctx.drawImage(element, + -this._size.width / 2, -this._size.height / 2); + } + }, + + _canComposite: function() { + return true; + } +}); + +var PlacedSymbol = Item.extend({ + _class: 'PlacedSymbol', + _applyMatrix: false, + _canApplyMatrix: false, + _boundsGetter: { getBounds: 'getStrokeBounds' }, + _boundsSelected: true, + _serializeFields: { + symbol: null + }, + + initialize: function PlacedSymbol(arg0, arg1) { + if (!this._initialize(arg0, + arg1 !== undefined && Point.read(arguments, 1))) + this.setSymbol(arg0 instanceof Symbol ? arg0 : new Symbol(arg0)); + }, + + _equals: function(item) { + return this._symbol === item._symbol; + }, + + getSymbol: function() { + return this._symbol; + }, + + setSymbol: function(symbol) { + this._symbol = symbol; + this._changed(9); + }, + + clone: function(insert) { + var copy = new PlacedSymbol(Item.NO_INSERT); + copy.setSymbol(this._symbol); + return this._clone(copy, insert); + }, + + isEmpty: function() { + return this._symbol._definition.isEmpty(); + }, + + _getBounds: function(getter, matrix, cacheItem) { + var definition = this.symbol._definition; + return definition._getCachedBounds(getter, + matrix && matrix.chain(definition._matrix), cacheItem); + }, + + _hitTestSelf: function(point, options) { + var res = this._symbol._definition._hitTest(point, options); + if (res) + res.item = this; + return res; + }, + + _draw: function(ctx, param) { + this.symbol._definition.draw(ctx, param); + } + +}); + +var HitResult = Base.extend({ + _class: 'HitResult', + + initialize: function HitResult(type, item, values) { + this.type = type; + this.item = item; + if (values) { + values.enumerable = true; + this.inject(values); + } + }, + + statics: { + getOptions: function(options) { + return new Base({ + type: null, + tolerance: paper.settings.hitTolerance, + fill: !options, + stroke: !options, + segments: !options, + handles: false, + ends: false, + center: false, + bounds: false, + guides: false, + selected: false + }, options); + } + } +}); + +var Segment = Base.extend({ + _class: 'Segment', + beans: true, + + initialize: function Segment(arg0, arg1, arg2, arg3, arg4, arg5) { + var count = arguments.length, + point, handleIn, handleOut; + if (count === 0) { + } else if (count === 1) { + if (arg0.point) { + point = arg0.point; + handleIn = arg0.handleIn; + handleOut = arg0.handleOut; + } else { + point = arg0; + } + } else if (count === 2 && typeof arg0 === 'number') { + point = arguments; + } else if (count <= 3) { + point = arg0; + handleIn = arg1; + handleOut = arg2; + } else { + point = arg0 !== undefined ? [ arg0, arg1 ] : null; + handleIn = arg2 !== undefined ? [ arg2, arg3 ] : null; + handleOut = arg4 !== undefined ? [ arg4, arg5 ] : null; + } + new SegmentPoint(point, this, '_point'); + new SegmentPoint(handleIn, this, '_handleIn'); + new SegmentPoint(handleOut, this, '_handleOut'); + }, + + _serialize: function(options) { + return Base.serialize(this.isLinear() ? this._point + : [this._point, this._handleIn, this._handleOut], + options, true); + }, + + _changed: function(point) { + var path = this._path; + if (!path) + return; + var curves = path._curves, + index = this._index, + curve; + if (curves) { + if ((!point || point === this._point || point === this._handleIn) + && (curve = index > 0 ? curves[index - 1] : path._closed + ? curves[curves.length - 1] : null)) + curve._changed(); + if ((!point || point === this._point || point === this._handleOut) + && (curve = curves[index])) + curve._changed(); + } + path._changed(25); + }, + + getPoint: function() { + return this._point; + }, + + setPoint: function() { + var point = Point.read(arguments); + this._point.set(point.x, point.y); + }, + + getHandleIn: function() { + return this._handleIn; + }, + + setHandleIn: function() { + var point = Point.read(arguments); + this._handleIn.set(point.x, point.y); + }, + + getHandleOut: function() { + return this._handleOut; + }, + + setHandleOut: function() { + var point = Point.read(arguments); + this._handleOut.set(point.x, point.y); + }, + + isLinear: function() { + return this._handleIn.isZero() && this._handleOut.isZero(); + }, + + setLinear: function(linear) { + if (linear) { + this._handleIn.set(0, 0); + this._handleOut.set(0, 0); + } else { + } + }, + + isColinear: function(segment) { + var next1 = this.getNext(), + next2 = segment.getNext(); + return this._handleOut.isZero() && next1._handleIn.isZero() + && segment._handleOut.isZero() && next2._handleIn.isZero() + && next1._point.subtract(this._point).isColinear( + next2._point.subtract(segment._point)); + }, + + isOrthogonal: function() { + var prev = this.getPrevious(), + next = this.getNext(); + return prev._handleOut.isZero() && this._handleIn.isZero() + && this._handleOut.isZero() && next._handleIn.isZero() + && this._point.subtract(prev._point).isOrthogonal( + next._point.subtract(this._point)); + }, + + isArc: function() { + var next = this.getNext(), + handle1 = this._handleOut, + handle2 = next._handleIn, + kappa = 0.5522847498307936; + if (handle1.isOrthogonal(handle2)) { + var from = this._point, + to = next._point, + corner = new Line(from, handle1, true).intersect( + new Line(to, handle2, true), true); + return corner && Numerical.isZero(handle1.getLength() / + corner.subtract(from).getLength() - kappa) + && Numerical.isZero(handle2.getLength() / + corner.subtract(to).getLength() - kappa); + } + return false; + }, + + _selectionState: 0, + + isSelected: function(_point) { + var state = this._selectionState; + return !_point ? !!(state & 7) + : _point === this._point ? !!(state & 4) + : _point === this._handleIn ? !!(state & 1) + : _point === this._handleOut ? !!(state & 2) + : false; + }, + + setSelected: function(selected, _point) { + var path = this._path, + selected = !!selected, + state = this._selectionState, + oldState = state, + flag = !_point ? 7 + : _point === this._point ? 4 + : _point === this._handleIn ? 1 + : _point === this._handleOut ? 2 + : 0; + if (selected) { + state |= flag; + } else { + state &= ~flag; + } + this._selectionState = state; + if (path && state !== oldState) { + path._updateSelection(this, oldState, state); + path._changed(129); + } + }, + + getIndex: function() { + return this._index !== undefined ? this._index : null; + }, + + getPath: function() { + return this._path || null; + }, + + getCurve: function() { + var path = this._path, + index = this._index; + if (path) { + if (index > 0 && !path._closed + && index === path._segments.length - 1) + index--; + return path.getCurves()[index] || null; + } + return null; + }, + + getLocation: function() { + var curve = this.getCurve(); + return curve + ? new CurveLocation(curve, this === curve._segment1 ? 0 : 1) + : null; + }, + + getNext: function() { + var segments = this._path && this._path._segments; + return segments && (segments[this._index + 1] + || this._path._closed && segments[0]) || null; + }, + + getPrevious: function() { + var segments = this._path && this._path._segments; + return segments && (segments[this._index - 1] + || this._path._closed && segments[segments.length - 1]) || null; + }, + + reverse: function() { + return new Segment(this._point, this._handleOut, this._handleIn); + }, + + remove: function() { + return this._path ? !!this._path.removeSegment(this._index) : false; + }, + + clone: function() { + return new Segment(this._point, this._handleIn, this._handleOut); + }, + + equals: function(segment) { + return segment === this || segment && this._class === segment._class + && this._point.equals(segment._point) + && this._handleIn.equals(segment._handleIn) + && this._handleOut.equals(segment._handleOut) + || false; + }, + + toString: function() { + var parts = [ 'point: ' + this._point ]; + if (!this._handleIn.isZero()) + parts.push('handleIn: ' + this._handleIn); + if (!this._handleOut.isZero()) + parts.push('handleOut: ' + this._handleOut); + return '{ ' + parts.join(', ') + ' }'; + }, + + transform: function(matrix) { + this._transformCoordinates(matrix, new Array(6), true); + this._changed(); + }, + + _transformCoordinates: function(matrix, coords, change) { + var point = this._point, + handleIn = !change || !this._handleIn.isZero() + ? this._handleIn : null, + handleOut = !change || !this._handleOut.isZero() + ? this._handleOut : null, + x = point._x, + y = point._y, + i = 2; + coords[0] = x; + coords[1] = y; + if (handleIn) { + coords[i++] = handleIn._x + x; + coords[i++] = handleIn._y + y; + } + if (handleOut) { + coords[i++] = handleOut._x + x; + coords[i++] = handleOut._y + y; + } + if (matrix) { + matrix._transformCoordinates(coords, coords, i / 2); + x = coords[0]; + y = coords[1]; + if (change) { + point._x = x; + point._y = y; + i = 2; + if (handleIn) { + handleIn._x = coords[i++] - x; + handleIn._y = coords[i++] - y; + } + if (handleOut) { + handleOut._x = coords[i++] - x; + handleOut._y = coords[i++] - y; + } + } else { + if (!handleIn) { + coords[i++] = x; + coords[i++] = y; + } + if (!handleOut) { + coords[i++] = x; + coords[i++] = y; + } + } + } + return coords; + } +}); + +var SegmentPoint = Point.extend({ + initialize: function SegmentPoint(point, owner, key) { + var x, y, selected; + if (!point) { + x = y = 0; + } else if ((x = point[0]) !== undefined) { + y = point[1]; + } else { + var pt = point; + if ((x = pt.x) === undefined) { + pt = Point.read(arguments); + x = pt.x; + } + y = pt.y; + selected = pt.selected; + } + this._x = x; + this._y = y; + this._owner = owner; + owner[key] = this; + if (selected) + this.setSelected(true); + }, + + set: function(x, y) { + this._x = x; + this._y = y; + this._owner._changed(this); + return this; + }, + + _serialize: function(options) { + var f = options.formatter, + x = f.number(this._x), + y = f.number(this._y); + return this.isSelected() + ? { x: x, y: y, selected: true } + : [x, y]; + }, + + getX: function() { + return this._x; + }, + + setX: function(x) { + this._x = x; + this._owner._changed(this); + }, + + getY: function() { + return this._y; + }, + + setY: function(y) { + this._y = y; + this._owner._changed(this); + }, + + isZero: function() { + return Numerical.isZero(this._x) && Numerical.isZero(this._y); + }, + + setSelected: function(selected) { + this._owner.setSelected(selected, this); + }, + + isSelected: function() { + return this._owner.isSelected(this); + } +}); + +var Curve = Base.extend({ + _class: 'Curve', + + initialize: function Curve(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { + var count = arguments.length; + if (count === 3) { + this._path = arg0; + this._segment1 = arg1; + this._segment2 = arg2; + } else if (count === 0) { + this._segment1 = new Segment(); + this._segment2 = new Segment(); + } else if (count === 1) { + this._segment1 = new Segment(arg0.segment1); + this._segment2 = new Segment(arg0.segment2); + } else if (count === 2) { + this._segment1 = new Segment(arg0); + this._segment2 = new Segment(arg1); + } else { + var point1, handle1, handle2, point2; + if (count === 4) { + point1 = arg0; + handle1 = arg1; + handle2 = arg2; + point2 = arg3; + } else if (count === 8) { + point1 = [arg0, arg1]; + point2 = [arg6, arg7]; + handle1 = [arg2 - arg0, arg3 - arg1]; + handle2 = [arg4 - arg6, arg5 - arg7]; + } + this._segment1 = new Segment(point1, null, handle1); + this._segment2 = new Segment(point2, handle2, null); + } + }, + + _changed: function() { + this._length = this._bounds = undefined; + }, + + getPoint1: function() { + return this._segment1._point; + }, + + setPoint1: function() { + var point = Point.read(arguments); + this._segment1._point.set(point.x, point.y); + }, + + getPoint2: function() { + return this._segment2._point; + }, + + setPoint2: function() { + var point = Point.read(arguments); + this._segment2._point.set(point.x, point.y); + }, + + getHandle1: function() { + return this._segment1._handleOut; + }, + + setHandle1: function() { + var point = Point.read(arguments); + this._segment1._handleOut.set(point.x, point.y); + }, + + getHandle2: function() { + return this._segment2._handleIn; + }, + + setHandle2: function() { + var point = Point.read(arguments); + this._segment2._handleIn.set(point.x, point.y); + }, + + getSegment1: function() { + return this._segment1; + }, + + getSegment2: function() { + return this._segment2; + }, + + getPath: function() { + return this._path; + }, + + getIndex: function() { + return this._segment1._index; + }, + + getNext: function() { + var curves = this._path && this._path._curves; + return curves && (curves[this._segment1._index + 1] + || this._path._closed && curves[0]) || null; + }, + + getPrevious: function() { + var curves = this._path && this._path._curves; + return curves && (curves[this._segment1._index - 1] + || this._path._closed && curves[curves.length - 1]) || null; + }, + + isSelected: function() { + return this.getPoint1().isSelected() + && this.getHandle2().isSelected() + && this.getHandle2().isSelected() + && this.getPoint2().isSelected(); + }, + + setSelected: function(selected) { + this.getPoint1().setSelected(selected); + this.getHandle1().setSelected(selected); + this.getHandle2().setSelected(selected); + this.getPoint2().setSelected(selected); + }, + + getValues: function(matrix) { + return Curve.getValues(this._segment1, this._segment2, matrix); + }, + + getPoints: function() { + var coords = this.getValues(), + points = []; + for (var i = 0; i < 8; i += 2) + points.push(new Point(coords[i], coords[i + 1])); + return points; + }, + + getLength: function() { + if (this._length == null) { + this._length = this.isLinear() + ? this._segment2._point.getDistance(this._segment1._point) + : Curve.getLength(this.getValues(), 0, 1); + } + return this._length; + }, + + getArea: function() { + return Curve.getArea(this.getValues()); + }, + + getPart: function(from, to) { + return new Curve(Curve.getPart(this.getValues(), from, to)); + }, + + getPartLength: function(from, to) { + return Curve.getLength(this.getValues(), from, to); + }, + + isLinear: function() { + return this._segment1._handleOut.isZero() + && this._segment2._handleIn.isZero(); + }, + + getIntersections: function(curve) { + return Curve.filterIntersections(Curve.getIntersections( + this.getValues(), curve.getValues(), this, curve, [])); + }, + + _getParameter: function(offset, isParameter) { + return isParameter + ? offset + : offset && offset.curve === this + ? offset.parameter + : offset === undefined && isParameter === undefined + ? 0.5 + : this.getParameterAt(offset, 0); + }, + + divide: function(offset, isParameter, ignoreLinear) { + var parameter = this._getParameter(offset, isParameter), + tolerance = 0.000001, + res = null; + if (parameter > tolerance && parameter < 1 - tolerance) { + var parts = Curve.subdivide(this.getValues(), parameter), + isLinear = ignoreLinear ? false : this.isLinear(), + left = parts[0], + right = parts[1]; + + if (!isLinear) { + this._segment1._handleOut.set(left[2] - left[0], + left[3] - left[1]); + this._segment2._handleIn.set(right[4] - right[6], + right[5] - right[7]); + } + + var x = left[6], y = left[7], + segment = new Segment(new Point(x, y), + !isLinear && new Point(left[4] - x, left[5] - y), + !isLinear && new Point(right[2] - x, right[3] - y)); + + if (this._path) { + if (this._segment1._index > 0 && this._segment2._index === 0) { + this._path.add(segment); + } else { + this._path.insert(this._segment2._index, segment); + } + res = this; + } else { + var end = this._segment2; + this._segment2 = segment; + res = new Curve(segment, end); + } + } + return res; + }, + + split: function(offset, isParameter) { + return this._path + ? this._path.split(this._segment1._index, + this._getParameter(offset, isParameter)) + : null; + }, + + reverse: function() { + return new Curve(this._segment2.reverse(), this._segment1.reverse()); + }, + + remove: function() { + var removed = false; + if (this._path) { + var segment2 = this._segment2, + handleOut = segment2._handleOut; + removed = segment2.remove(); + if (removed) + this._segment1._handleOut.set(handleOut.x, handleOut.y); + } + return removed; + }, + + clone: function() { + return new Curve(this._segment1, this._segment2); + }, + + toString: function() { + var parts = [ 'point1: ' + this._segment1._point ]; + if (!this._segment1._handleOut.isZero()) + parts.push('handle1: ' + this._segment1._handleOut); + if (!this._segment2._handleIn.isZero()) + parts.push('handle2: ' + this._segment2._handleIn); + parts.push('point2: ' + this._segment2._point); + return '{ ' + parts.join(', ') + ' }'; + }, + +statics: { + getValues: function(segment1, segment2, matrix) { + var p1 = segment1._point, + h1 = segment1._handleOut, + h2 = segment2._handleIn, + p2 = segment2._point, + values = [ + p1._x, p1._y, + p1._x + h1._x, p1._y + h1._y, + p2._x + h2._x, p2._y + h2._y, + p2._x, p2._y + ]; + if (matrix) + matrix._transformCoordinates(values, values, 4); + return values; + }, + + evaluate: function(v, t, type) { + var p1x = v[0], p1y = v[1], + c1x = v[2], c1y = v[3], + c2x = v[4], c2y = v[5], + p2x = v[6], p2y = v[7], + tolerance = 0.000001, + x, y; + + if (type === 0 && (t < tolerance || t > 1 - tolerance)) { + var isZero = t < tolerance; + x = isZero ? p1x : p2x; + y = isZero ? p1y : p2y; + } else { + var cx = 3 * (c1x - p1x), + bx = 3 * (c2x - c1x) - cx, + ax = p2x - p1x - cx - bx, + + cy = 3 * (c1y - p1y), + by = 3 * (c2y - c1y) - cy, + ay = p2y - p1y - cy - by; + if (type === 0) { + x = ((ax * t + bx) * t + cx) * t + p1x; + y = ((ay * t + by) * t + cy) * t + p1y; + } else { + if (t < tolerance && c1x === p1x && c1y === p1y + || t > 1 - tolerance && c2x === p2x && c2y === p2y) { + x = c2x - c1x; + y = c2y - c1y; + } else if (t < tolerance) { + x = cx; + y = cy; + } else if (t > 1 - tolerance) { + x = 3 * (p2x - c2x); + y = 3 * (p2y - c2y); + } else { + x = (3 * ax * t + 2 * bx) * t + cx; + y = (3 * ay * t + 2 * by) * t + cy; + } + if (type === 3) { + var x2 = 6 * ax * t + 2 * bx, + y2 = 6 * ay * t + 2 * by; + return (x * y2 - y * x2) / Math.pow(x * x + y * y, 3 / 2); + } + } + } + return type === 2 ? new Point(y, -x) : new Point(x, y); + }, + + subdivide: function(v, t) { + var p1x = v[0], p1y = v[1], + c1x = v[2], c1y = v[3], + c2x = v[4], c2y = v[5], + p2x = v[6], p2y = v[7]; + if (t === undefined) + t = 0.5; + var u = 1 - t, + p3x = u * p1x + t * c1x, p3y = u * p1y + t * c1y, + p4x = u * c1x + t * c2x, p4y = u * c1y + t * c2y, + p5x = u * c2x + t * p2x, p5y = u * c2y + t * p2y, + p6x = u * p3x + t * p4x, p6y = u * p3y + t * p4y, + p7x = u * p4x + t * p5x, p7y = u * p4y + t * p5y, + p8x = u * p6x + t * p7x, p8y = u * p6y + t * p7y; + return [ + [p1x, p1y, p3x, p3y, p6x, p6y, p8x, p8y], + [p8x, p8y, p7x, p7y, p5x, p5y, p2x, p2y] + ]; + }, + + solveCubic: function (v, coord, val, roots, min, max) { + var p1 = v[coord], + c1 = v[coord + 2], + c2 = v[coord + 4], + p2 = v[coord + 6], + c = 3 * (c1 - p1), + b = 3 * (c2 - c1) - c, + a = p2 - p1 - c - b, + isZero = Numerical.isZero; + if (isZero(a) && isZero(b)) + a = b = 0; + return Numerical.solveCubic(a, b, c, p1 - val, roots, min, max); + }, + + getParameterOf: function(v, x, y) { + var tolerance = 0.000001; + if (Math.abs(v[0] - x) < tolerance && Math.abs(v[1] - y) < tolerance) + return 0; + if (Math.abs(v[6] - x) < tolerance && Math.abs(v[7] - y) < tolerance) + return 1; + var txs = [], + tys = [], + sx = Curve.solveCubic(v, 0, x, txs, 0, 1), + sy = Curve.solveCubic(v, 1, y, tys, 0, 1), + tx, ty; + for (var cx = 0; sx == -1 || cx < sx;) { + if (sx == -1 || (tx = txs[cx++]) >= 0 && tx <= 1) { + for (var cy = 0; sy == -1 || cy < sy;) { + if (sy == -1 || (ty = tys[cy++]) >= 0 && ty <= 1) { + if (sx == -1) tx = ty; + else if (sy == -1) ty = tx; + if (Math.abs(tx - ty) < tolerance) + return (tx + ty) * 0.5; + } + } + if (sx == -1) + break; + } + } + return null; + }, + + getPart: function(v, from, to) { + if (from > 0) + v = Curve.subdivide(v, from)[1]; + if (to < 1) + v = Curve.subdivide(v, (to - from) / (1 - from))[0]; + return v; + }, + + isLinear: function(v) { + var isZero = Numerical.isZero; + return isZero(v[0] - v[2]) && isZero(v[1] - v[3]) + && isZero(v[4] - v[6]) && isZero(v[5] - v[7]); + }, + + isFlatEnough: function(v, tolerance) { + var p1x = v[0], p1y = v[1], + c1x = v[2], c1y = v[3], + c2x = v[4], c2y = v[5], + p2x = v[6], p2y = v[7], + ux = 3 * c1x - 2 * p1x - p2x, + uy = 3 * c1y - 2 * p1y - p2y, + vx = 3 * c2x - 2 * p2x - p1x, + vy = 3 * c2y - 2 * p2y - p1y; + return Math.max(ux * ux, vx * vx) + Math.max(uy * uy, vy * vy) + < 10 * tolerance * tolerance; + }, + + getArea: function(v) { + var p1x = v[0], p1y = v[1], + c1x = v[2], c1y = v[3], + c2x = v[4], c2y = v[5], + p2x = v[6], p2y = v[7]; + return ( 3.0 * c1y * p1x - 1.5 * c1y * c2x + - 1.5 * c1y * p2x - 3.0 * p1y * c1x + - 1.5 * p1y * c2x - 0.5 * p1y * p2x + + 1.5 * c2y * p1x + 1.5 * c2y * c1x + - 3.0 * c2y * p2x + 0.5 * p2y * p1x + + 1.5 * p2y * c1x + 3.0 * p2y * c2x) / 10; + }, + + getEdgeSum: function(v) { + return (v[0] - v[2]) * (v[3] + v[1]) + + (v[2] - v[4]) * (v[5] + v[3]) + + (v[4] - v[6]) * (v[7] + v[5]); + }, + + getBounds: function(v) { + var min = v.slice(0, 2), + max = min.slice(), + roots = [0, 0]; + for (var i = 0; i < 2; i++) + Curve._addBounds(v[i], v[i + 2], v[i + 4], v[i + 6], + i, 0, min, max, roots); + return new Rectangle(min[0], min[1], max[0] - min[0], max[1] - min[1]); + }, + + _addBounds: function(v0, v1, v2, v3, coord, padding, min, max, roots) { + function add(value, padding) { + var left = value - padding, + right = value + padding; + if (left < min[coord]) + min[coord] = left; + if (right > max[coord]) + max[coord] = right; + } + var a = 3 * (v1 - v2) - v0 + v3, + b = 2 * (v0 + v2) - 4 * v1, + c = v1 - v0, + count = Numerical.solveQuadratic(a, b, c, roots), + tMin = 0.000001, + tMax = 1 - tMin; + add(v3, 0); + for (var i = 0; i < count; i++) { + var t = roots[i], + u = 1 - t; + if (tMin < t && t < tMax) + add(u * u * u * v0 + + 3 * u * u * t * v1 + + 3 * u * t * t * v2 + + t * t * t * v3, + padding); + } + } +}}, Base.each(['getBounds', 'getStrokeBounds', 'getHandleBounds', 'getRoughBounds'], + function(name) { + this[name] = function() { + if (!this._bounds) + this._bounds = {}; + var bounds = this._bounds[name]; + if (!bounds) { + bounds = this._bounds[name] = Path[name]([this._segment1, + this._segment2], false, this._path.getStyle()); + } + return bounds.clone(); + }; + }, +{ + +}), Base.each(['getPoint', 'getTangent', 'getNormal', 'getCurvature'], + function(name, index) { + this[name + 'At'] = function(offset, isParameter) { + var values = this.getValues(); + return Curve.evaluate(values, isParameter + ? offset : Curve.getParameterAt(values, offset, 0), index); + }; + this[name] = function(parameter) { + return Curve.evaluate(this.getValues(), parameter, index); + }; + }, +{ + beans: false, + + getParameterAt: function(offset, start) { + return Curve.getParameterAt(this.getValues(), offset, start); + }, + + getParameterOf: function() { + var point = Point.read(arguments); + return Curve.getParameterOf(this.getValues(), point.x, point.y); + }, + + getLocationAt: function(offset, isParameter) { + if (!isParameter) + offset = this.getParameterAt(offset); + return offset >= 0 && offset <= 1 && new CurveLocation(this, offset); + }, + + getLocationOf: function() { + return this.getLocationAt(this.getParameterOf(Point.read(arguments)), + true); + }, + + getOffsetOf: function() { + var loc = this.getLocationOf.apply(this, arguments); + return loc ? loc.getOffset() : null; + }, + + getNearestLocation: function() { + var point = Point.read(arguments), + values = this.getValues(), + count = 100, + minDist = Infinity, + minT = 0; + + function refine(t) { + if (t >= 0 && t <= 1) { + var dist = point.getDistance( + Curve.evaluate(values, t, 0), true); + if (dist < minDist) { + minDist = dist; + minT = t; + return true; + } + } + } + + for (var i = 0; i <= count; i++) + refine(i / count); + + var step = 1 / (count * 2); + while (step > 0.000001) { + if (!refine(minT - step) && !refine(minT + step)) + step /= 2; + } + var pt = Curve.evaluate(values, minT, 0); + return new CurveLocation(this, minT, pt, null, null, null, + point.getDistance(pt)); + }, + + getNearestPoint: function() { + return this.getNearestLocation.apply(this, arguments).getPoint(); + } + +}), +new function() { + + function getLengthIntegrand(v) { + var p1x = v[0], p1y = v[1], + c1x = v[2], c1y = v[3], + c2x = v[4], c2y = v[5], + p2x = v[6], p2y = v[7], + + ax = 9 * (c1x - c2x) + 3 * (p2x - p1x), + bx = 6 * (p1x + c2x) - 12 * c1x, + cx = 3 * (c1x - p1x), + + ay = 9 * (c1y - c2y) + 3 * (p2y - p1y), + by = 6 * (p1y + c2y) - 12 * c1y, + cy = 3 * (c1y - p1y); + + return function(t) { + var dx = (ax * t + bx) * t + cx, + dy = (ay * t + by) * t + cy; + return Math.sqrt(dx * dx + dy * dy); + }; + } + + function getIterations(a, b) { + return Math.max(2, Math.min(16, Math.ceil(Math.abs(b - a) * 32))); + } + + return { + statics: true, + + getLength: function(v, a, b) { + if (a === undefined) + a = 0; + if (b === undefined) + b = 1; + var isZero = Numerical.isZero; + if (a === 0 && b === 1 + && isZero(v[0] - v[2]) && isZero(v[1] - v[3]) + && isZero(v[6] - v[4]) && isZero(v[7] - v[5])) { + var dx = v[6] - v[0], + dy = v[7] - v[1]; + return Math.sqrt(dx * dx + dy * dy); + } + var ds = getLengthIntegrand(v); + return Numerical.integrate(ds, a, b, getIterations(a, b)); + }, + + getParameterAt: function(v, offset, start) { + if (start === undefined) + start = offset < 0 ? 1 : 0 + if (offset === 0) + return start; + var forward = offset > 0, + a = forward ? start : 0, + b = forward ? 1 : start, + ds = getLengthIntegrand(v), + rangeLength = Numerical.integrate(ds, a, b, + getIterations(a, b)); + if (Math.abs(offset) >= rangeLength) + return forward ? b : a; + var guess = offset / rangeLength, + length = 0; + function f(t) { + length += Numerical.integrate(ds, start, t, + getIterations(start, t)); + start = t; + return length - offset; + } + return Numerical.findRoot(f, ds, start + guess, a, b, 16, + 0.000001); + } + }; +}, new function() { + function addLocation(locations, include, curve1, t1, point1, curve2, t2, + point2) { + var loc = new CurveLocation(curve1, t1, point1, curve2, t2, point2); + if (!include || include(loc)) + locations.push(loc); + } + + function addCurveIntersections(v1, v2, curve1, curve2, locations, include, + tMin, tMax, uMin, uMax, oldTDiff, reverse, recursion) { + if (recursion > 32) + return; + var q0x = v2[0], q0y = v2[1], q3x = v2[6], q3y = v2[7], + tolerance = 0.000001, + getSignedDistance = Line.getSignedDistance, + d1 = getSignedDistance(q0x, q0y, q3x, q3y, v2[2], v2[3]) || 0, + d2 = getSignedDistance(q0x, q0y, q3x, q3y, v2[4], v2[5]) || 0, + factor = d1 * d2 > 0 ? 3 / 4 : 4 / 9, + dMin = factor * Math.min(0, d1, d2), + dMax = factor * Math.max(0, d1, d2), + dp0 = getSignedDistance(q0x, q0y, q3x, q3y, v1[0], v1[1]), + dp1 = getSignedDistance(q0x, q0y, q3x, q3y, v1[2], v1[3]), + dp2 = getSignedDistance(q0x, q0y, q3x, q3y, v1[4], v1[5]), + dp3 = getSignedDistance(q0x, q0y, q3x, q3y, v1[6], v1[7]), + tMinNew, tMaxNew, tDiff; + if (q0x === q3x && uMax - uMin <= tolerance && recursion > 3) { + tMaxNew = tMinNew = (tMax + tMin) / 2; + tDiff = 0; + } else { + var hull = getConvexHull(dp0, dp1, dp2, dp3), + top = hull[0], + bottom = hull[1], + tMinClip, tMaxClip; + tMinClip = clipConvexHull(top, bottom, dMin, dMax); + top.reverse(); + bottom.reverse(); + tMaxClip = clipConvexHull(top, bottom, dMin, dMax); + if (tMinClip == null || tMaxClip == null) + return; + v1 = Curve.getPart(v1, tMinClip, tMaxClip); + tDiff = tMaxClip - tMinClip; + tMinNew = tMax * tMinClip + tMin * (1 - tMinClip); + tMaxNew = tMax * tMaxClip + tMin * (1 - tMaxClip); + } + if (oldTDiff > 0.5 && tDiff > 0.5) { + if (tMaxNew - tMinNew > uMax - uMin) { + var parts = Curve.subdivide(v1, 0.5), + t = tMinNew + (tMaxNew - tMinNew) / 2; + addCurveIntersections( + v2, parts[0], curve2, curve1, locations, include, + uMin, uMax, tMinNew, t, tDiff, !reverse, ++recursion); + addCurveIntersections( + v2, parts[1], curve2, curve1, locations, include, + uMin, uMax, t, tMaxNew, tDiff, !reverse, recursion); + } else { + var parts = Curve.subdivide(v2, 0.5), + t = uMin + (uMax - uMin) / 2; + addCurveIntersections( + parts[0], v1, curve2, curve1, locations, include, + uMin, t, tMinNew, tMaxNew, tDiff, !reverse, ++recursion); + addCurveIntersections( + parts[1], v1, curve2, curve1, locations, include, + t, uMax, tMinNew, tMaxNew, tDiff, !reverse, recursion); + } + } else if (Math.max(uMax - uMin, tMaxNew - tMinNew) < tolerance) { + var t1 = tMinNew + (tMaxNew - tMinNew) / 2, + t2 = uMin + (uMax - uMin) / 2; + if (reverse) { + addLocation(locations, include, + curve2, t2, Curve.evaluate(v2, t2, 0), + curve1, t1, Curve.evaluate(v1, t1, 0)); + } else { + addLocation(locations, include, + curve1, t1, Curve.evaluate(v1, t1, 0), + curve2, t2, Curve.evaluate(v2, t2, 0)); + } + } else if (tDiff > 0) { + addCurveIntersections(v2, v1, curve2, curve1, locations, include, + uMin, uMax, tMinNew, tMaxNew, tDiff, !reverse, ++recursion); + } + } + + function getConvexHull(dq0, dq1, dq2, dq3) { + var p0 = [ 0, dq0 ], + p1 = [ 1 / 3, dq1 ], + p2 = [ 2 / 3, dq2 ], + p3 = [ 1, dq3 ], + getSignedDistance = Line.getSignedDistance, + dist1 = getSignedDistance(0, dq0, 1, dq3, 1 / 3, dq1), + dist2 = getSignedDistance(0, dq0, 1, dq3, 2 / 3, dq2), + flip = false, + hull; + if (dist1 * dist2 < 0) { + hull = [[p0, p1, p3], [p0, p2, p3]]; + flip = dist1 < 0; + } else { + var pmax, cross = 0, + distZero = dist1 === 0 || dist2 === 0; + if (Math.abs(dist1) > Math.abs(dist2)) { + pmax = p1; + cross = (dq3 - dq2 - (dq3 - dq0) / 3) + * (2 * (dq3 - dq2) - dq3 + dq1) / 3; + } else { + pmax = p2; + cross = (dq1 - dq0 + (dq0 - dq3) / 3) + * (-2 * (dq0 - dq1) + dq0 - dq2) / 3; + } + hull = cross < 0 || distZero + ? [[p0, pmax, p3], [p0, p3]] + : [[p0, p1, p2, p3], [p0, p3]]; + flip = dist1 ? dist1 < 0 : dist2 < 0; + } + return flip ? hull.reverse() : hull; + } + + function clipConvexHull(hullTop, hullBottom, dMin, dMax) { + if (hullTop[0][1] < dMin) { + return clipConvexHullPart(hullTop, true, dMin); + } else if (hullBottom[0][1] > dMax) { + return clipConvexHullPart(hullBottom, false, dMax); + } else { + return hullTop[0][0]; + } + } + + function clipConvexHullPart(part, top, threshold) { + var px = part[0][0], + py = part[0][1]; + for (var i = 1, l = part.length; i < l; i++) { + var qx = part[i][0], + qy = part[i][1]; + if (top ? qy >= threshold : qy <= threshold) + return px + (threshold - py) * (qx - px) / (qy - py); + px = qx; + py = qy; + } + return null; + } + + function addCurveLineIntersections(v1, v2, curve1, curve2, locations, + include) { + var flip = Curve.isLinear(v1), + vc = flip ? v2 : v1, + vl = flip ? v1 : v2, + lx1 = vl[0], ly1 = vl[1], + lx2 = vl[6], ly2 = vl[7], + ldx = lx2 - lx1, + ldy = ly2 - ly1, + angle = Math.atan2(-ldy, ldx), + sin = Math.sin(angle), + cos = Math.cos(angle), + rlx2 = ldx * cos - ldy * sin, + rvl = [0, 0, 0, 0, rlx2, 0, rlx2, 0], + rvc = []; + for(var i = 0; i < 8; i += 2) { + var x = vc[i] - lx1, + y = vc[i + 1] - ly1; + rvc.push( + x * cos - y * sin, + y * cos + x * sin); + } + var roots = [], + count = Curve.solveCubic(rvc, 1, 0, roots, 0, 1); + for (var i = 0; i < count; i++) { + var tc = roots[i], + x = Curve.evaluate(rvc, tc, 0).x; + if (x >= 0 && x <= rlx2) { + var tl = Curve.getParameterOf(rvl, x, 0), + t1 = flip ? tl : tc, + t2 = flip ? tc : tl; + addLocation(locations, include, + curve1, t1, Curve.evaluate(v1, t1, 0), + curve2, t2, Curve.evaluate(v2, t2, 0)); + } + } + } + + function addLineIntersection(v1, v2, curve1, curve2, locations, include) { + var point = Line.intersect( + v1[0], v1[1], v1[6], v1[7], + v2[0], v2[1], v2[6], v2[7]); + if (point) { + var x = point.x, + y = point.y; + addLocation(locations, include, + curve1, Curve.getParameterOf(v1, x, y), point, + curve2, Curve.getParameterOf(v2, x, y), point); + } + } + + return { statics: { + getIntersections: function(v1, v2, c1, c2, locations, include) { + var linear1 = Curve.isLinear(v1), + linear2 = Curve.isLinear(v2), + c1p1 = c1.getPoint1(), + c1p2 = c1.getPoint2(), + c2p1 = c2.getPoint1(), + c2p2 = c2.getPoint2(), + tolerance = 0.000001; + if (c1p1.isClose(c2p1, tolerance)) + addLocation(locations, include, c1, 0, c1p1, c2, 0, c1p1); + if (c1p1.isClose(c2p2, tolerance)) + addLocation(locations, include, c1, 0, c1p1, c2, 1, c1p1); + (linear1 && linear2 + ? addLineIntersection + : linear1 || linear2 + ? addCurveLineIntersections + : addCurveIntersections)( + v1, v2, c1, c2, locations, include, + 0, 1, 0, 1, 0, false, 0); + if (c1p2.isClose(c2p1, tolerance)) + addLocation(locations, include, c1, 1, c1p2, c2, 0, c1p2); + if (c1p2.isClose(c2p2, tolerance)) + addLocation(locations, include, c1, 1, c1p2, c2, 1, c1p2); + return locations; + }, + + filterIntersections: function(locations, _expand) { + var last = locations.length - 1, + tMax = 1 - 0.000001; + for (var i = last; i >= 0; i--) { + var loc = locations[i], + next = loc._curve.getNext(), + next2 = loc._curve2.getNext(); + if (next && loc._parameter >= tMax) { + loc._parameter = 0; + loc._curve = next; + } + if (next2 && loc._parameter2 >= tMax) { + loc._parameter2 = 0; + loc._curve2 = next2; + } + } + + function compare(loc1, loc2) { + var path1 = loc1.getPath(), + path2 = loc2.getPath(); + return path1 === path2 + ? (loc1.getIndex() + loc1.getParameter()) + - (loc2.getIndex() + loc2.getParameter()) + : path1._id - path2._id; + } + + if (last > 0) { + locations.sort(compare); + for (var i = last; i > 0; i--) { + if (locations[i].equals(locations[i - 1])) { + locations.splice(i, 1); + last--; + } + } + } + if (_expand) { + for (var i = last; i >= 0; i--) + locations.push(locations[i].getIntersection()); + locations.sort(compare); + } + return locations; + } + }}; +}); + +var CurveLocation = Base.extend({ + _class: 'CurveLocation', + beans: true, + + initialize: function CurveLocation(curve, parameter, point, _curve2, + _parameter2, _point2, _distance) { + this._id = CurveLocation._id = (CurveLocation._id || 0) + 1; + this._curve = curve; + this._segment1 = curve._segment1; + this._segment2 = curve._segment2; + this._parameter = parameter; + this._point = point; + this._curve2 = _curve2; + this._parameter2 = _parameter2; + this._point2 = _point2; + this._distance = _distance; + }, + + getSegment: function(_preferFirst) { + if (!this._segment) { + var curve = this.getCurve(), + parameter = this.getParameter(); + if (parameter === 1) { + this._segment = curve._segment2; + } else if (parameter === 0 || _preferFirst) { + this._segment = curve._segment1; + } else if (parameter == null) { + return null; + } else { + this._segment = curve.getPartLength(0, parameter) + < curve.getPartLength(parameter, 1) + ? curve._segment1 + : curve._segment2; + } + } + return this._segment; + }, + + getCurve: function(_uncached) { + if (!this._curve || _uncached) { + this._curve = this._segment1.getCurve(); + if (this._curve.getParameterOf(this._point) == null) + this._curve = this._segment2.getPrevious().getCurve(); + } + return this._curve; + }, + + getIntersection: function() { + var intersection = this._intersection; + if (!intersection && this._curve2) { + var param = this._parameter2; + this._intersection = intersection = new CurveLocation( + this._curve2, param, this._point2 || this._point, this); + intersection._intersection = this; + } + return intersection; + }, + + getPath: function() { + var curve = this.getCurve(); + return curve && curve._path; + }, + + getIndex: function() { + var curve = this.getCurve(); + return curve && curve.getIndex(); + }, + + getOffset: function() { + var path = this.getPath(); + return path ? path._getOffset(this) : this.getCurveOffset(); + }, + + getCurveOffset: function() { + var curve = this.getCurve(), + parameter = this.getParameter(); + return parameter != null && curve && curve.getPartLength(0, parameter); + }, + + getParameter: function(_uncached) { + if ((this._parameter == null || _uncached) && this._point) { + var curve = this.getCurve(_uncached); + this._parameter = curve && curve.getParameterOf(this._point); + } + return this._parameter; + }, + + getPoint: function(_uncached) { + if ((!this._point || _uncached) && this._parameter != null) { + var curve = this.getCurve(_uncached); + this._point = curve && curve.getPointAt(this._parameter, true); + } + return this._point; + }, + + getDistance: function() { + return this._distance; + }, + + divide: function() { + var curve = this.getCurve(true); + return curve && curve.divide(this.getParameter(true), true); + }, + + split: function() { + var curve = this.getCurve(true); + return curve && curve.split(this.getParameter(true), true); + }, + + equals: function(loc) { + var abs = Math.abs, + tolerance = 0.000001; + return this === loc + || loc + && this._curve === loc._curve + && this._curve2 === loc._curve2 + && abs(this._parameter - loc._parameter) <= tolerance + && abs(this._parameter2 - loc._parameter2) <= tolerance + || false; + }, + + toString: function() { + var parts = [], + point = this.getPoint(), + f = Formatter.instance; + if (point) + parts.push('point: ' + point); + var index = this.getIndex(); + if (index != null) + parts.push('index: ' + index); + var parameter = this.getParameter(); + if (parameter != null) + parts.push('parameter: ' + f.number(parameter)); + if (this._distance != null) + parts.push('distance: ' + f.number(this._distance)); + return '{ ' + parts.join(', ') + ' }'; + } +}, Base.each(['getTangent', 'getNormal', 'getCurvature'], function(name) { + var get = name + 'At'; + this[name] = function() { + var parameter = this.getParameter(), + curve = this.getCurve(); + return parameter != null && curve && curve[get](parameter, true); + }; +}, {})); + +var PathItem = Item.extend({ + _class: 'PathItem', + + initialize: function PathItem() { + }, + + getIntersections: function(path, _matrix, _expand) { + if (this === path) + path = null; + var locations = [], + curves1 = this.getCurves(), + curves2 = path ? path.getCurves() : curves1, + matrix1 = this._matrix.orNullIfIdentity(), + matrix2 = path ? (_matrix || path._matrix).orNullIfIdentity() + : matrix1, + length1 = curves1.length, + length2 = path ? curves2.length : length1, + values2 = [], + tMin = 0.000001, + tMax = 1 - tMin; + if (path && !this.getBounds(matrix1).touches(path.getBounds(matrix2))) + return []; + for (var i = 0; i < length2; i++) + values2[i] = curves2[i].getValues(matrix2); + for (var i = 0; i < length1; i++) { + var curve1 = curves1[i], + values1 = path ? curve1.getValues(matrix1) : values2[i]; + if (!path) { + var seg1 = curve1.getSegment1(), + seg2 = curve1.getSegment2(), + h1 = seg1._handleOut, + h2 = seg2._handleIn; + if (new Line(seg1._point.subtract(h1), h1.multiply(2), true) + .intersect(new Line(seg2._point.subtract(h2), + h2.multiply(2), true), false)) { + var parts = Curve.subdivide(values1); + Curve.getIntersections( + parts[0], parts[1], curve1, curve1, locations, + function(loc) { + if (loc._parameter <= tMax) { + loc._parameter /= 2; + loc._parameter2 = 0.5 + loc._parameter2 / 2; + return true; + } + } + ); + } + } + for (var j = path ? 0 : i + 1; j < length2; j++) { + Curve.getIntersections( + values1, values2[j], curve1, curves2[j], locations, + !path && (j === i + 1 || j === length2 - 1 && i === 0) + && function(loc) { + var t = loc._parameter; + return t >= tMin && t <= tMax; + } + ); + } + } + return Curve.filterIntersections(locations, _expand); + }, + + _asPathItem: function() { + return this; + }, + + setPathData: function(data) { + + var parts = data.match(/[mlhvcsqtaz][^mlhvcsqtaz]*/ig), + coords, + relative = false, + previous, + control, + current = new Point(), + start = new Point(); + + function getCoord(index, coord) { + var val = +coords[index]; + if (relative) + val += current[coord]; + return val; + } + + function getPoint(index) { + return new Point( + getCoord(index, 'x'), + getCoord(index + 1, 'y') + ); + } + + this.clear(); + + for (var i = 0, l = parts && parts.length; i < l; i++) { + var part = parts[i], + command = part[0], + lower = command.toLowerCase(); + coords = part.match(/[+-]?(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?/g); + var length = coords && coords.length; + relative = command === lower; + if (previous === 'z' && !/[mz]/.test(lower)) + this.moveTo(current = start); + switch (lower) { + case 'm': + case 'l': + var move = lower === 'm'; + if (move && previous && previous !== 'z') + this.closePath(true); + for (var j = 0; j < length; j += 2) + this[j === 0 && move ? 'moveTo' : 'lineTo']( + current = getPoint(j)); + control = current; + if (move) + start = current; + break; + case 'h': + case 'v': + var coord = lower === 'h' ? 'x' : 'y'; + for (var j = 0; j < length; j++) { + current[coord] = getCoord(j, coord); + this.lineTo(current); + } + control = current; + break; + case 'c': + for (var j = 0; j < length; j += 6) { + this.cubicCurveTo( + getPoint(j), + control = getPoint(j + 2), + current = getPoint(j + 4)); + } + break; + case 's': + for (var j = 0; j < length; j += 4) { + this.cubicCurveTo( + /[cs]/.test(previous) + ? current.multiply(2).subtract(control) + : current, + control = getPoint(j), + current = getPoint(j + 2)); + previous = lower; + } + break; + case 'q': + for (var j = 0; j < length; j += 4) { + this.quadraticCurveTo( + control = getPoint(j), + current = getPoint(j + 2)); + } + break; + case 't': + for (var j = 0; j < length; j += 2) { + this.quadraticCurveTo( + control = (/[qt]/.test(previous) + ? current.multiply(2).subtract(control) + : current), + current = getPoint(j)); + previous = lower; + } + break; + case 'a': + for (var j = 0; j < length; j += 7) { + this.arcTo(current = getPoint(j + 5), + new Size(+coords[j], +coords[j + 1]), + +coords[j + 2], +coords[j + 4], +coords[j + 3]); + } + break; + case 'z': + this.closePath(true); + break; + } + previous = lower; + } + }, + + _canComposite: function() { + return !(this.hasFill() && this.hasStroke()); + }, + + _contains: function(point) { + var winding = this._getWinding(point, false, true); + return !!(this.getWindingRule() === 'evenodd' ? winding & 1 : winding); + } + +}); + +var Path = PathItem.extend({ + _class: 'Path', + _serializeFields: { + segments: [], + closed: false + }, + + initialize: function Path(arg) { + this._closed = false; + this._segments = []; + var segments = Array.isArray(arg) + ? typeof arg[0] === 'object' + ? arg + : arguments + : arg && (arg.size === undefined && (arg.x !== undefined + || arg.point !== undefined)) + ? arguments + : null; + if (segments && segments.length > 0) { + this.setSegments(segments); + } else { + this._curves = undefined; + this._selectedSegmentState = 0; + if (!segments && typeof arg === 'string') { + this.setPathData(arg); + arg = null; + } + } + this._initialize(!segments && arg); + }, + + _equals: function(item) { + return this._closed === item._closed + && Base.equals(this._segments, item._segments); + }, + + clone: function(insert) { + var copy = new Path(Item.NO_INSERT); + copy.setSegments(this._segments); + copy._closed = this._closed; + if (this._clockwise !== undefined) + copy._clockwise = this._clockwise; + return this._clone(copy, insert); + }, + + _changed: function _changed(flags) { + _changed.base.call(this, flags); + if (flags & 8) { + var parent = this._parent; + if (parent) + parent._currentPath = undefined; + this._length = this._clockwise = undefined; + if (this._curves && !(flags & 16)) { + for (var i = 0, l = this._curves.length; i < l; i++) + this._curves[i]._changed(); + } + this._monoCurves = undefined; + } else if (flags & 32) { + this._bounds = undefined; + } + }, + + getStyle: function() { + var parent = this._parent; + return (parent instanceof CompoundPath ? parent : this)._style; + }, + + getSegments: function() { + return this._segments; + }, + + setSegments: function(segments) { + var fullySelected = this.isFullySelected(); + this._segments.length = 0; + this._selectedSegmentState = 0; + this._curves = undefined; + if (segments && segments.length > 0) + this._add(Segment.readAll(segments)); + if (fullySelected) + this.setFullySelected(true); + }, + + getFirstSegment: function() { + return this._segments[0]; + }, + + getLastSegment: function() { + return this._segments[this._segments.length - 1]; + }, + + getCurves: function() { + var curves = this._curves, + segments = this._segments; + if (!curves) { + var length = this._countCurves(); + curves = this._curves = new Array(length); + for (var i = 0; i < length; i++) + curves[i] = new Curve(this, segments[i], + segments[i + 1] || segments[0]); + } + return curves; + }, + + getFirstCurve: function() { + return this.getCurves()[0]; + }, + + getLastCurve: function() { + var curves = this.getCurves(); + return curves[curves.length - 1]; + }, + + isClosed: function() { + return this._closed; + }, + + setClosed: function(closed) { + if (this._closed != (closed = !!closed)) { + this._closed = closed; + if (this._curves) { + var length = this._curves.length = this._countCurves(); + if (closed) + this._curves[length - 1] = new Curve(this, + this._segments[length - 1], this._segments[0]); + } + this._changed(25); + } + } +}, { + beans: true, + + getPathData: function(_matrix, _precision) { + var segments = this._segments, + length = segments.length, + f = new Formatter(_precision), + coords = new Array(6), + first = true, + curX, curY, + prevX, prevY, + inX, inY, + outX, outY, + parts = []; + + function addSegment(segment, skipLine) { + segment._transformCoordinates(_matrix, coords, false); + curX = coords[0]; + curY = coords[1]; + if (first) { + parts.push('M' + f.pair(curX, curY)); + first = false; + } else { + inX = coords[2]; + inY = coords[3]; + if (inX === curX && inY === curY + && outX === prevX && outY === prevY) { + if (!skipLine) + parts.push('l' + f.pair(curX - prevX, curY - prevY)); + } else { + parts.push('c' + f.pair(outX - prevX, outY - prevY) + + ' ' + f.pair(inX - prevX, inY - prevY) + + ' ' + f.pair(curX - prevX, curY - prevY)); + } + } + prevX = curX; + prevY = curY; + outX = coords[4]; + outY = coords[5]; + } + + if (length === 0) + return ''; + + for (var i = 0; i < length; i++) + addSegment(segments[i]); + if (this._closed && length > 0) { + addSegment(segments[0], true); + parts.push('z'); + } + return parts.join(''); + } +}, { + + isEmpty: function() { + return this._segments.length === 0; + }, + + isPolygon: function() { + for (var i = 0, l = this._segments.length; i < l; i++) { + if (!this._segments[i].isLinear()) + return false; + } + return true; + }, + + _transformContent: function(matrix) { + var coords = new Array(6); + for (var i = 0, l = this._segments.length; i < l; i++) + this._segments[i]._transformCoordinates(matrix, coords, true); + return true; + }, + + _add: function(segs, index) { + var segments = this._segments, + curves = this._curves, + amount = segs.length, + append = index == null, + index = append ? segments.length : index; + for (var i = 0; i < amount; i++) { + var segment = segs[i]; + if (segment._path) + segment = segs[i] = segment.clone(); + segment._path = this; + segment._index = index + i; + if (segment._selectionState) + this._updateSelection(segment, 0, segment._selectionState); + } + if (append) { + segments.push.apply(segments, segs); + } else { + segments.splice.apply(segments, [index, 0].concat(segs)); + for (var i = index + amount, l = segments.length; i < l; i++) + segments[i]._index = i; + } + if (curves || segs._curves) { + if (!curves) + curves = this._curves = []; + var from = index > 0 ? index - 1 : index, + start = from, + to = Math.min(from + amount, this._countCurves()); + if (segs._curves) { + curves.splice.apply(curves, [from, 0].concat(segs._curves)); + start += segs._curves.length; + } + for (var i = start; i < to; i++) + curves.splice(i, 0, new Curve(this, null, null)); + this._adjustCurves(from, to); + } + this._changed(25); + return segs; + }, + + _adjustCurves: function(from, to) { + var segments = this._segments, + curves = this._curves, + curve; + for (var i = from; i < to; i++) { + curve = curves[i]; + curve._path = this; + curve._segment1 = segments[i]; + curve._segment2 = segments[i + 1] || segments[0]; + curve._changed(); + } + if (curve = curves[this._closed && from === 0 ? segments.length - 1 + : from - 1]) { + curve._segment2 = segments[from] || segments[0]; + curve._changed(); + } + if (curve = curves[to]) { + curve._segment1 = segments[to]; + curve._changed(); + } + }, + + _countCurves: function() { + var length = this._segments.length; + return !this._closed && length > 0 ? length - 1 : length; + }, + + add: function(segment1 ) { + return arguments.length > 1 && typeof segment1 !== 'number' + ? this._add(Segment.readAll(arguments)) + : this._add([ Segment.read(arguments) ])[0]; + }, + + insert: function(index, segment1 ) { + return arguments.length > 2 && typeof segment1 !== 'number' + ? this._add(Segment.readAll(arguments, 1), index) + : this._add([ Segment.read(arguments, 1) ], index)[0]; + }, + + addSegment: function() { + return this._add([ Segment.read(arguments) ])[0]; + }, + + insertSegment: function(index ) { + return this._add([ Segment.read(arguments, 1) ], index)[0]; + }, + + addSegments: function(segments) { + return this._add(Segment.readAll(segments)); + }, + + insertSegments: function(index, segments) { + return this._add(Segment.readAll(segments), index); + }, + + removeSegment: function(index) { + return this.removeSegments(index, index + 1)[0] || null; + }, + + removeSegments: function(from, to, _includeCurves) { + from = from || 0; + to = Base.pick(to, this._segments.length); + var segments = this._segments, + curves = this._curves, + count = segments.length, + removed = segments.splice(from, to - from), + amount = removed.length; + if (!amount) + return removed; + for (var i = 0; i < amount; i++) { + var segment = removed[i]; + if (segment._selectionState) + this._updateSelection(segment, segment._selectionState, 0); + segment._index = segment._path = null; + } + for (var i = from, l = segments.length; i < l; i++) + segments[i]._index = i; + if (curves) { + var index = from > 0 && to === count + (this._closed ? 1 : 0) + ? from - 1 + : from, + curves = curves.splice(index, amount); + if (_includeCurves) + removed._curves = curves.slice(1); + this._adjustCurves(index, index); + } + this._changed(25); + return removed; + }, + + clear: '#removeSegments', + + getLength: function() { + if (this._length == null) { + var curves = this.getCurves(); + this._length = 0; + for (var i = 0, l = curves.length; i < l; i++) + this._length += curves[i].getLength(); + } + return this._length; + }, + + getArea: function() { + var curves = this.getCurves(); + var area = 0; + for (var i = 0, l = curves.length; i < l; i++) + area += curves[i].getArea(); + return area; + }, + + isFullySelected: function() { + var length = this._segments.length; + return this._selected && length > 0 && this._selectedSegmentState + === length * 7; + }, + + setFullySelected: function(selected) { + if (selected) + this._selectSegments(true); + this.setSelected(selected); + }, + + setSelected: function setSelected(selected) { + if (!selected) + this._selectSegments(false); + setSelected.base.call(this, selected); + }, + + _selectSegments: function(selected) { + var length = this._segments.length; + this._selectedSegmentState = selected + ? length * 7 : 0; + for (var i = 0; i < length; i++) + this._segments[i]._selectionState = selected + ? 7 : 0; + }, + + _updateSelection: function(segment, oldState, newState) { + segment._selectionState = newState; + var total = this._selectedSegmentState += newState - oldState; + if (total > 0) + this.setSelected(true); + }, + + flatten: function(maxDistance) { + var iterator = new PathIterator(this, 64, 0.1), + pos = 0, + step = iterator.length / Math.ceil(iterator.length / maxDistance), + end = iterator.length + (this._closed ? -step : step) / 2; + var segments = []; + while (pos <= end) { + segments.push(new Segment(iterator.evaluate(pos, 0))); + pos += step; + } + this.setSegments(segments); + }, + + reduce: function() { + var curves = this.getCurves(); + for (var i = curves.length - 1; i >= 0; i--) { + var curve = curves[i]; + if (curve.isLinear() && curve.getLength() === 0) + curve.remove(); + } + return this; + }, + + simplify: function(tolerance) { + if (this._segments.length > 2) { + var fitter = new PathFitter(this, tolerance || 2.5); + this.setSegments(fitter.fit()); + } + }, + + split: function(index, parameter) { + if (parameter === null) + return null; + if (arguments.length === 1) { + var arg = index; + if (typeof arg === 'number') + arg = this.getLocationAt(arg); + if (!arg) + return null + index = arg.index; + parameter = arg.parameter; + } + var tolerance = 0.000001; + if (parameter >= 1 - tolerance) { + index++; + parameter--; + } + var curves = this.getCurves(); + if (index >= 0 && index < curves.length) { + if (parameter > tolerance) { + curves[index++].divide(parameter, true); + } + var segs = this.removeSegments(index, this._segments.length, true), + path; + if (this._closed) { + this.setClosed(false); + path = this; + } else { + path = this._clone(new Path().insertAbove(this, true)); + } + path._add(segs, 0); + this.addSegment(segs[0]); + return path; + } + return null; + }, + + isClockwise: function() { + if (this._clockwise !== undefined) + return this._clockwise; + return Path.isClockwise(this._segments); + }, + + setClockwise: function(clockwise) { + if (this.isClockwise() != (clockwise = !!clockwise)) + this.reverse(); + this._clockwise = clockwise; + }, + + reverse: function() { + this._segments.reverse(); + for (var i = 0, l = this._segments.length; i < l; i++) { + var segment = this._segments[i]; + var handleIn = segment._handleIn; + segment._handleIn = segment._handleOut; + segment._handleOut = handleIn; + segment._index = i; + } + this._curves = null; + if (this._clockwise !== undefined) + this._clockwise = !this._clockwise; + this._changed(9); + }, + + join: function(path) { + if (path) { + var segments = path._segments, + last1 = this.getLastSegment(), + last2 = path.getLastSegment(); + if (!last2) + return this; + if (last1 && last1._point.equals(last2._point)) + path.reverse(); + var first2 = path.getFirstSegment(); + if (last1 && last1._point.equals(first2._point)) { + last1.setHandleOut(first2._handleOut); + this._add(segments.slice(1)); + } else { + var first1 = this.getFirstSegment(); + if (first1 && first1._point.equals(first2._point)) + path.reverse(); + last2 = path.getLastSegment(); + if (first1 && first1._point.equals(last2._point)) { + first1.setHandleIn(last2._handleIn); + this._add(segments.slice(0, segments.length - 1), 0); + } else { + this._add(segments.slice()); + } + } + if (path.closed) + this._add([segments[0]]); + path.remove(); + } + var first = this.getFirstSegment(), + last = this.getLastSegment(); + if (first !== last && first._point.equals(last._point)) { + first.setHandleIn(last._handleIn); + last.remove(); + this.setClosed(true); + } + return this; + }, + + toShape: function(insert) { + if (!this._closed) + return null; + + var segments = this._segments, + type, + size, + radius, + topCenter; + + function isColinear(i, j) { + return segments[i].isColinear(segments[j]); + } + + function isOrthogonal(i) { + return segments[i].isOrthogonal(); + } + + function isArc(i) { + return segments[i].isArc(); + } + + function getDistance(i, j) { + return segments[i]._point.getDistance(segments[j]._point); + } + + if (this.isPolygon() && segments.length === 4 + && isColinear(0, 2) && isColinear(1, 3) && isOrthogonal(1)) { + type = Shape.Rectangle; + size = new Size(getDistance(0, 3), getDistance(0, 1)); + topCenter = segments[1]._point.add(segments[2]._point).divide(2); + } else if (segments.length === 8 && isArc(0) && isArc(2) && isArc(4) + && isArc(6) && isColinear(1, 5) && isColinear(3, 7)) { + type = Shape.Rectangle; + size = new Size(getDistance(1, 6), getDistance(0, 3)); + radius = size.subtract(new Size(getDistance(0, 7), + getDistance(1, 2))).divide(2); + topCenter = segments[3]._point.add(segments[4]._point).divide(2); + } else if (segments.length === 4 + && isArc(0) && isArc(1) && isArc(2) && isArc(3)) { + if (Numerical.isZero(getDistance(0, 2) - getDistance(1, 3))) { + type = Shape.Circle; + radius = getDistance(0, 2) / 2; + } else { + type = Shape.Ellipse; + radius = new Size(getDistance(2, 0) / 2, getDistance(3, 1) / 2); + } + topCenter = segments[1]._point; + } + + if (type) { + var center = this.getPosition(true), + shape = new type({ + center: center, + size: size, + radius: radius, + insert: false + }); + shape.rotate(topCenter.subtract(center).getAngle() + 90); + shape.setStyle(this._style); + if (insert || insert === undefined) + shape.insertAbove(this); + return shape; + } + return null; + }, + + _hitTestSelf: function(point, options) { + var that = this, + style = this.getStyle(), + segments = this._segments, + numSegments = segments.length, + closed = this._closed, + tolerancePadding = options._tolerancePadding, + strokePadding = tolerancePadding, + join, cap, miterLimit, + area, loc, res, + hitStroke = options.stroke && style.hasStroke(), + hitFill = options.fill && style.hasFill(), + hitCurves = options.curves, + radius = hitStroke + ? style.getStrokeWidth() / 2 + : hitFill && options.tolerance > 0 || hitCurves + ? 0 : null; + if (radius !== null) { + if (radius > 0) { + join = style.getStrokeJoin(); + cap = style.getStrokeCap(); + miterLimit = radius * style.getMiterLimit(); + strokePadding = tolerancePadding.add(new Point(radius, radius)); + } else { + join = cap = 'round'; + } + } + + function isCloseEnough(pt, padding) { + return point.subtract(pt).divide(padding).length <= 1; + } + + function checkSegmentPoint(seg, pt, name) { + if (!options.selected || pt.isSelected()) { + var anchor = seg._point; + if (pt !== anchor) + pt = pt.add(anchor); + if (isCloseEnough(pt, strokePadding)) { + return new HitResult(name, that, { + segment: seg, + point: pt + }); + } + } + } + + function checkSegmentPoints(seg, ends) { + return (ends || options.segments) + && checkSegmentPoint(seg, seg._point, 'segment') + || (!ends && options.handles) && ( + checkSegmentPoint(seg, seg._handleIn, 'handle-in') || + checkSegmentPoint(seg, seg._handleOut, 'handle-out')); + } + + function addToArea(point) { + area.add(point); + } + + function checkSegmentStroke(segment) { + if (join !== 'round' || cap !== 'round') { + area = new Path({ internal: true, closed: true }); + if (closed || segment._index > 0 + && segment._index < numSegments - 1) { + if (join !== 'round' && (segment._handleIn.isZero() + || segment._handleOut.isZero())) + Path._addBevelJoin(segment, join, radius, miterLimit, + addToArea, true); + } else if (cap !== 'round') { + Path._addSquareCap(segment, cap, radius, addToArea, true); + } + if (!area.isEmpty()) { + var loc; + return area.contains(point) + || (loc = area.getNearestLocation(point)) + && isCloseEnough(loc.getPoint(), tolerancePadding); + } + } + return isCloseEnough(segment._point, strokePadding); + } + + if (options.ends && !options.segments && !closed) { + if (res = checkSegmentPoints(segments[0], true) + || checkSegmentPoints(segments[numSegments - 1], true)) + return res; + } else if (options.segments || options.handles) { + for (var i = 0; i < numSegments; i++) + if (res = checkSegmentPoints(segments[i])) + return res; + } + if (radius !== null) { + loc = this.getNearestLocation(point); + if (loc) { + var parameter = loc.getParameter(); + if (parameter === 0 || parameter === 1 && numSegments > 1) { + if (!checkSegmentStroke(loc.getSegment())) + loc = null; + } else if (!isCloseEnough(loc.getPoint(), strokePadding)) { + loc = null; + } + } + if (!loc && join === 'miter' && numSegments > 1) { + for (var i = 0; i < numSegments; i++) { + var segment = segments[i]; + if (point.getDistance(segment._point) <= miterLimit + && checkSegmentStroke(segment)) { + loc = segment.getLocation(); + break; + } + } + } + } + return !loc && hitFill && this._contains(point) + || loc && !hitStroke && !hitCurves + ? new HitResult('fill', this) + : loc + ? new HitResult(hitStroke ? 'stroke' : 'curve', this, { + location: loc, + point: loc.getPoint() + }) + : null; + } + +}, Base.each(['getPoint', 'getTangent', 'getNormal', 'getCurvature'], + function(name) { + this[name + 'At'] = function(offset, isParameter) { + var loc = this.getLocationAt(offset, isParameter); + return loc && loc[name](); + }; + }, +{ + beans: false, + + _getOffset: function(location) { + var index = location && location.getIndex(); + if (index != null) { + var curves = this.getCurves(), + offset = 0; + for (var i = 0; i < index; i++) + offset += curves[i].getLength(); + var curve = curves[index], + parameter = location.getParameter(); + if (parameter > 0) + offset += curve.getPartLength(0, parameter); + return offset; + } + return null; + }, + + getLocationOf: function() { + var point = Point.read(arguments), + curves = this.getCurves(); + for (var i = 0, l = curves.length; i < l; i++) { + var loc = curves[i].getLocationOf(point); + if (loc) + return loc; + } + return null; + }, + + getOffsetOf: function() { + var loc = this.getLocationOf.apply(this, arguments); + return loc ? loc.getOffset() : null; + }, + + getLocationAt: function(offset, isParameter) { + var curves = this.getCurves(), + length = 0; + if (isParameter) { + var index = ~~offset; + return curves[index].getLocationAt(offset - index, true); + } + for (var i = 0, l = curves.length; i < l; i++) { + var start = length, + curve = curves[i]; + length += curve.getLength(); + if (length > offset) { + return curve.getLocationAt(offset - start); + } + } + if (offset <= this.getLength()) + return new CurveLocation(curves[curves.length - 1], 1); + return null; + }, + + getNearestLocation: function() { + var point = Point.read(arguments), + curves = this.getCurves(), + minDist = Infinity, + minLoc = null; + for (var i = 0, l = curves.length; i < l; i++) { + var loc = curves[i].getNearestLocation(point); + if (loc._distance < minDist) { + minDist = loc._distance; + minLoc = loc; + } + } + return minLoc; + }, + + getNearestPoint: function() { + return this.getNearestLocation.apply(this, arguments).getPoint(); + } +}), new function() { + + function drawHandles(ctx, segments, matrix, size) { + var half = size / 2; + + function drawHandle(index) { + var hX = coords[index], + hY = coords[index + 1]; + if (pX != hX || pY != hY) { + ctx.beginPath(); + ctx.moveTo(pX, pY); + ctx.lineTo(hX, hY); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(hX, hY, half, 0, Math.PI * 2, true); + ctx.fill(); + } + } + + var coords = new Array(6); + for (var i = 0, l = segments.length; i < l; i++) { + var segment = segments[i]; + segment._transformCoordinates(matrix, coords, false); + var state = segment._selectionState, + pX = coords[0], + pY = coords[1]; + if (state & 1) + drawHandle(2); + if (state & 2) + drawHandle(4); + ctx.fillRect(pX - half, pY - half, size, size); + if (!(state & 4)) { + var fillStyle = ctx.fillStyle; + ctx.fillStyle = '#ffffff'; + ctx.fillRect(pX - half + 1, pY - half + 1, size - 2, size - 2); + ctx.fillStyle = fillStyle; + } + } + } + + function drawSegments(ctx, path, matrix) { + var segments = path._segments, + length = segments.length, + coords = new Array(6), + first = true, + curX, curY, + prevX, prevY, + inX, inY, + outX, outY; + + function drawSegment(segment) { + if (matrix) { + segment._transformCoordinates(matrix, coords, false); + curX = coords[0]; + curY = coords[1]; + } else { + var point = segment._point; + curX = point._x; + curY = point._y; + } + if (first) { + ctx.moveTo(curX, curY); + first = false; + } else { + if (matrix) { + inX = coords[2]; + inY = coords[3]; + } else { + var handle = segment._handleIn; + inX = curX + handle._x; + inY = curY + handle._y; + } + if (inX === curX && inY === curY + && outX === prevX && outY === prevY) { + ctx.lineTo(curX, curY); + } else { + ctx.bezierCurveTo(outX, outY, inX, inY, curX, curY); + } + } + prevX = curX; + prevY = curY; + if (matrix) { + outX = coords[4]; + outY = coords[5]; + } else { + var handle = segment._handleOut; + outX = prevX + handle._x; + outY = prevY + handle._y; + } + } + + for (var i = 0; i < length; i++) + drawSegment(segments[i]); + if (path._closed && length > 0) + drawSegment(segments[0]); + } + + return { + _draw: function(ctx, param, strokeMatrix) { + var dontStart = param.dontStart, + dontPaint = param.dontFinish || param.clip, + style = this.getStyle(), + hasFill = style.hasFill(), + hasStroke = style.hasStroke(), + dashArray = style.getDashArray(), + dashLength = !paper.support.nativeDash && hasStroke + && dashArray && dashArray.length; + + if (!dontStart) + ctx.beginPath(); + + if (!dontStart && this._currentPath) { + ctx.currentPath = this._currentPath; + } else if (hasFill || hasStroke && !dashLength || dontPaint) { + drawSegments(ctx, this, strokeMatrix); + if (this._closed) + ctx.closePath(); + if (!dontStart) + this._currentPath = ctx.currentPath; + } + + function getOffset(i) { + return dashArray[((i % dashLength) + dashLength) % dashLength]; + } + + if (!dontPaint && (hasFill || hasStroke)) { + this._setStyles(ctx); + if (hasFill) { + ctx.fill(style.getWindingRule()); + ctx.shadowColor = 'rgba(0,0,0,0)'; + } + if (hasStroke) { + if (dashLength) { + if (!dontStart) + ctx.beginPath(); + var iterator = new PathIterator(this, 32, 0.25, + strokeMatrix), + length = iterator.length, + from = -style.getDashOffset(), to, + i = 0; + from = from % length; + while (from > 0) { + from -= getOffset(i--) + getOffset(i--); + } + while (from < length) { + to = from + getOffset(i++); + if (from > 0 || to > 0) + iterator.drawPart(ctx, + Math.max(from, 0), Math.max(to, 0)); + from = to + getOffset(i++); + } + } + ctx.stroke(); + } + } + }, + + _drawSelected: function(ctx, matrix) { + ctx.beginPath(); + drawSegments(ctx, this, matrix); + ctx.stroke(); + drawHandles(ctx, this._segments, matrix, paper.settings.handleSize); + } + }; +}, new function() { + + function getFirstControlPoints(rhs) { + var n = rhs.length, + x = [], + tmp = [], + b = 2; + x[0] = rhs[0] / b; + for (var i = 1; i < n; i++) { + tmp[i] = 1 / b; + b = (i < n - 1 ? 4 : 2) - tmp[i]; + x[i] = (rhs[i] - x[i - 1]) / b; + } + for (var i = 1; i < n; i++) { + x[n - i - 1] -= tmp[n - i] * x[n - i]; + } + return x; + } + + return { + smooth: function() { + var segments = this._segments, + size = segments.length, + closed = this._closed, + n = size, + overlap = 0; + if (size <= 2) + return; + if (closed) { + overlap = Math.min(size, 4); + n += Math.min(size, overlap) * 2; + } + var knots = []; + for (var i = 0; i < size; i++) + knots[i + overlap] = segments[i]._point; + if (closed) { + for (var i = 0; i < overlap; i++) { + knots[i] = segments[i + size - overlap]._point; + knots[i + size + overlap] = segments[i]._point; + } + } else { + n--; + } + var rhs = []; + + for (var i = 1; i < n - 1; i++) + rhs[i] = 4 * knots[i]._x + 2 * knots[i + 1]._x; + rhs[0] = knots[0]._x + 2 * knots[1]._x; + rhs[n - 1] = 3 * knots[n - 1]._x; + var x = getFirstControlPoints(rhs); + + for (var i = 1; i < n - 1; i++) + rhs[i] = 4 * knots[i]._y + 2 * knots[i + 1]._y; + rhs[0] = knots[0]._y + 2 * knots[1]._y; + rhs[n - 1] = 3 * knots[n - 1]._y; + var y = getFirstControlPoints(rhs); + + if (closed) { + for (var i = 0, j = size; i < overlap; i++, j++) { + var f1 = i / overlap, + f2 = 1 - f1, + ie = i + overlap, + je = j + overlap; + x[j] = x[i] * f1 + x[j] * f2; + y[j] = y[i] * f1 + y[j] * f2; + x[je] = x[ie] * f2 + x[je] * f1; + y[je] = y[ie] * f2 + y[je] * f1; + } + n--; + } + var handleIn = null; + for (var i = overlap; i <= n - overlap; i++) { + var segment = segments[i - overlap]; + if (handleIn) + segment.setHandleIn(handleIn.subtract(segment._point)); + if (i < n) { + segment.setHandleOut( + new Point(x[i], y[i]).subtract(segment._point)); + handleIn = i < n - 1 + ? new Point( + 2 * knots[i + 1]._x - x[i + 1], + 2 * knots[i + 1]._y - y[i + 1]) + : new Point( + (knots[n]._x + x[n - 1]) / 2, + (knots[n]._y + y[n - 1]) / 2); + } + } + if (closed && handleIn) { + var segment = this._segments[0]; + segment.setHandleIn(handleIn.subtract(segment._point)); + } + } + }; +}, new function() { + function getCurrentSegment(that) { + var segments = that._segments; + if (segments.length === 0) + throw new Error('Use a moveTo() command first'); + return segments[segments.length - 1]; + } + + return { + moveTo: function() { + var segments = this._segments; + if (segments.length === 1) + this.removeSegment(0); + if (!segments.length) + this._add([ new Segment(Point.read(arguments)) ]); + }, + + moveBy: function() { + throw new Error('moveBy() is unsupported on Path items.'); + }, + + lineTo: function() { + this._add([ new Segment(Point.read(arguments)) ]); + }, + + cubicCurveTo: function() { + var handle1 = Point.read(arguments), + handle2 = Point.read(arguments), + to = Point.read(arguments), + current = getCurrentSegment(this); + current.setHandleOut(handle1.subtract(current._point)); + this._add([ new Segment(to, handle2.subtract(to)) ]); + }, + + quadraticCurveTo: function() { + var handle = Point.read(arguments), + to = Point.read(arguments), + current = getCurrentSegment(this)._point; + this.cubicCurveTo( + handle.add(current.subtract(handle).multiply(1 / 3)), + handle.add(to.subtract(handle).multiply(1 / 3)), + to + ); + }, + + curveTo: function() { + var through = Point.read(arguments), + to = Point.read(arguments), + t = Base.pick(Base.read(arguments), 0.5), + t1 = 1 - t, + current = getCurrentSegment(this)._point, + handle = through.subtract(current.multiply(t1 * t1)) + .subtract(to.multiply(t * t)).divide(2 * t * t1); + if (handle.isNaN()) + throw new Error( + 'Cannot put a curve through points with parameter = ' + t); + this.quadraticCurveTo(handle, to); + }, + + arcTo: function() { + var current = getCurrentSegment(this), + from = current._point, + to = Point.read(arguments), + through, + peek = Base.peek(arguments), + clockwise = Base.pick(peek, true), + center, extent, vector, matrix; + if (typeof clockwise === 'boolean') { + var middle = from.add(to).divide(2), + through = middle.add(middle.subtract(from).rotate( + clockwise ? -90 : 90)); + } else if (Base.remain(arguments) <= 2) { + through = to; + to = Point.read(arguments); + } else { + var radius = Size.read(arguments); + if (radius.isZero()) + return this.lineTo(to); + var rotation = Base.read(arguments), + clockwise = !!Base.read(arguments), + large = !!Base.read(arguments), + middle = from.add(to).divide(2), + pt = from.subtract(middle).rotate(-rotation), + x = pt.x, + y = pt.y, + abs = Math.abs, + epsilon = 1e-12, + rx = abs(radius.width), + ry = abs(radius.height), + rxSq = rx * rx, + rySq = ry * ry, + xSq = x * x, + ySq = y * y; + var factor = Math.sqrt(xSq / rxSq + ySq / rySq); + if (factor > 1) { + rx *= factor; + ry *= factor; + rxSq = rx * rx; + rySq = ry * ry; + } + factor = (rxSq * rySq - rxSq * ySq - rySq * xSq) / + (rxSq * ySq + rySq * xSq); + if (abs(factor) < epsilon) + factor = 0; + if (factor < 0) + throw new Error( + 'Cannot create an arc with the given arguments'); + center = new Point(rx * y / ry, -ry * x / rx) + .multiply((large === clockwise ? -1 : 1) + * Math.sqrt(factor)) + .rotate(rotation).add(middle); + matrix = new Matrix().translate(center).rotate(rotation) + .scale(rx, ry); + vector = matrix._inverseTransform(from); + extent = vector.getDirectedAngle(matrix._inverseTransform(to)); + if (!clockwise && extent > 0) + extent -= 360; + else if (clockwise && extent < 0) + extent += 360; + } + if (through) { + var l1 = new Line(from.add(through).divide(2), + through.subtract(from).rotate(90), true), + l2 = new Line(through.add(to).divide(2), + to.subtract(through).rotate(90), true), + line = new Line(from, to), + throughSide = line.getSide(through); + center = l1.intersect(l2, true); + if (!center) { + if (!throughSide) + return this.lineTo(to); + throw new Error( + 'Cannot create an arc with the given arguments'); + } + vector = from.subtract(center); + extent = vector.getDirectedAngle(to.subtract(center)); + var centerSide = line.getSide(center); + if (centerSide === 0) { + extent = throughSide * Math.abs(extent); + } else if (throughSide === centerSide) { + extent += extent < 0 ? 360 : -360; + } + } + var ext = Math.abs(extent), + count = ext >= 360 ? 4 : Math.ceil(ext / 90), + inc = extent / count, + half = inc * Math.PI / 360, + z = 4 / 3 * Math.sin(half) / (1 + Math.cos(half)), + segments = []; + for (var i = 0; i <= count; i++) { + var pt = to, + out = null; + if (i < count) { + out = vector.rotate(90).multiply(z); + if (matrix) { + pt = matrix._transformPoint(vector); + out = matrix._transformPoint(vector.add(out)) + .subtract(pt); + } else { + pt = center.add(vector); + } + } + if (i === 0) { + current.setHandleOut(out); + } else { + var _in = vector.rotate(-90).multiply(z); + if (matrix) { + _in = matrix._transformPoint(vector.add(_in)) + .subtract(pt); + } + segments.push(new Segment(pt, _in, out)); + } + vector = vector.rotate(inc); + } + this._add(segments); + }, + + lineBy: function() { + var to = Point.read(arguments), + current = getCurrentSegment(this)._point; + this.lineTo(current.add(to)); + }, + + curveBy: function() { + var through = Point.read(arguments), + to = Point.read(arguments), + parameter = Base.read(arguments), + current = getCurrentSegment(this)._point; + this.curveTo(current.add(through), current.add(to), parameter); + }, + + cubicCurveBy: function() { + var handle1 = Point.read(arguments), + handle2 = Point.read(arguments), + to = Point.read(arguments), + current = getCurrentSegment(this)._point; + this.cubicCurveTo(current.add(handle1), current.add(handle2), + current.add(to)); + }, + + quadraticCurveBy: function() { + var handle = Point.read(arguments), + to = Point.read(arguments), + current = getCurrentSegment(this)._point; + this.quadraticCurveTo(current.add(handle), current.add(to)); + }, + + arcBy: function() { + var current = getCurrentSegment(this)._point, + point = current.add(Point.read(arguments)), + clockwise = Base.pick(Base.peek(arguments), true); + if (typeof clockwise === 'boolean') { + this.arcTo(point, clockwise); + } else { + this.arcTo(point, current.add(Point.read(arguments))); + } + }, + + closePath: function(join) { + this.setClosed(true); + if (join) + this.join(); + } + }; +}, { + + _getBounds: function(getter, matrix) { + return Path[getter](this._segments, this._closed, this.getStyle(), + matrix); + }, + +statics: { + isClockwise: function(segments) { + var sum = 0; + for (var i = 0, l = segments.length; i < l; i++) + sum += Curve.getEdgeSum(Curve.getValues( + segments[i], segments[i + 1 < l ? i + 1 : 0])); + return sum > 0; + }, + + getBounds: function(segments, closed, style, matrix, strokePadding) { + var first = segments[0]; + if (!first) + return new Rectangle(); + var coords = new Array(6), + prevCoords = first._transformCoordinates(matrix, new Array(6), false), + min = prevCoords.slice(0, 2), + max = min.slice(), + roots = new Array(2); + + function processSegment(segment) { + segment._transformCoordinates(matrix, coords, false); + for (var i = 0; i < 2; i++) { + Curve._addBounds( + prevCoords[i], + prevCoords[i + 4], + coords[i + 2], + coords[i], + i, strokePadding ? strokePadding[i] : 0, min, max, roots); + } + var tmp = prevCoords; + prevCoords = coords; + coords = tmp; + } + + for (var i = 1, l = segments.length; i < l; i++) + processSegment(segments[i]); + if (closed) + processSegment(first); + return new Rectangle(min[0], min[1], max[0] - min[0], max[1] - min[1]); + }, + + getStrokeBounds: function(segments, closed, style, matrix) { + if (!style.hasStroke()) + return Path.getBounds(segments, closed, style, matrix); + var length = segments.length - (closed ? 0 : 1), + radius = style.getStrokeWidth() / 2, + padding = Path._getPenPadding(radius, matrix), + bounds = Path.getBounds(segments, closed, style, matrix, padding), + join = style.getStrokeJoin(), + cap = style.getStrokeCap(), + miterLimit = radius * style.getMiterLimit(); + var joinBounds = new Rectangle(new Size(padding).multiply(2)); + + function add(point) { + bounds = bounds.include(matrix + ? matrix._transformPoint(point, point) : point); + } + + function addRound(segment) { + bounds = bounds.unite(joinBounds.setCenter(matrix + ? matrix._transformPoint(segment._point) : segment._point)); + } + + function addJoin(segment, join) { + var handleIn = segment._handleIn, + handleOut = segment._handleOut; + if (join === 'round' || !handleIn.isZero() && !handleOut.isZero() + && handleIn.isColinear(handleOut)) { + addRound(segment); + } else { + Path._addBevelJoin(segment, join, radius, miterLimit, add); + } + } + + function addCap(segment, cap) { + if (cap === 'round') { + addRound(segment); + } else { + Path._addSquareCap(segment, cap, radius, add); + } + } + + for (var i = 1; i < length; i++) + addJoin(segments[i], join); + if (closed) { + addJoin(segments[0], join); + } else if (length > 0) { + addCap(segments[0], cap); + addCap(segments[segments.length - 1], cap); + } + return bounds; + }, + + _getPenPadding: function(radius, matrix) { + if (!matrix) + return [radius, radius]; + var mx = matrix.shiftless(), + hor = mx.transform(new Point(radius, 0)), + ver = mx.transform(new Point(0, radius)), + phi = hor.getAngleInRadians(), + a = hor.getLength(), + b = ver.getLength(); + var sin = Math.sin(phi), + cos = Math.cos(phi), + tan = Math.tan(phi), + tx = -Math.atan(b * tan / a), + ty = Math.atan(b / (tan * a)); + return [Math.abs(a * Math.cos(tx) * cos - b * Math.sin(tx) * sin), + Math.abs(b * Math.sin(ty) * cos + a * Math.cos(ty) * sin)]; + }, + + _addBevelJoin: function(segment, join, radius, miterLimit, addPoint, area) { + var curve2 = segment.getCurve(), + curve1 = curve2.getPrevious(), + point = curve2.getPointAt(0, true), + normal1 = curve1.getNormalAt(1, true), + normal2 = curve2.getNormalAt(0, true), + step = normal1.getDirectedAngle(normal2) < 0 ? -radius : radius; + normal1.setLength(step); + normal2.setLength(step); + if (area) { + addPoint(point); + addPoint(point.add(normal1)); + } + if (join === 'miter') { + var corner = new Line( + point.add(normal1), + new Point(-normal1.y, normal1.x), true + ).intersect(new Line( + point.add(normal2), + new Point(-normal2.y, normal2.x), true + ), true); + if (corner && point.getDistance(corner) <= miterLimit) { + addPoint(corner); + if (!area) + return; + } + } + if (!area) + addPoint(point.add(normal1)); + addPoint(point.add(normal2)); + }, + + _addSquareCap: function(segment, cap, radius, addPoint, area) { + var point = segment._point, + loc = segment.getLocation(), + normal = loc.getNormal().normalize(radius); + if (area) { + addPoint(point.subtract(normal)); + addPoint(point.add(normal)); + } + if (cap === 'square') + point = point.add(normal.rotate(loc.getParameter() === 0 ? -90 : 90)); + addPoint(point.add(normal)); + addPoint(point.subtract(normal)); + }, + + getHandleBounds: function(segments, closed, style, matrix, strokePadding, + joinPadding) { + var coords = new Array(6), + x1 = Infinity, + x2 = -x1, + y1 = x1, + y2 = x2; + for (var i = 0, l = segments.length; i < l; i++) { + var segment = segments[i]; + segment._transformCoordinates(matrix, coords, false); + for (var j = 0; j < 6; j += 2) { + var padding = j === 0 ? joinPadding : strokePadding, + paddingX = padding ? padding[0] : 0, + paddingY = padding ? padding[1] : 0, + x = coords[j], + y = coords[j + 1], + xn = x - paddingX, + xx = x + paddingX, + yn = y - paddingY, + yx = y + paddingY; + if (xn < x1) x1 = xn; + if (xx > x2) x2 = xx; + if (yn < y1) y1 = yn; + if (yx > y2) y2 = yx; + } + } + return new Rectangle(x1, y1, x2 - x1, y2 - y1); + }, + + getRoughBounds: function(segments, closed, style, matrix) { + var strokeRadius = style.hasStroke() ? style.getStrokeWidth() / 2 : 0, + joinRadius = strokeRadius; + if (strokeRadius > 0) { + if (style.getStrokeJoin() === 'miter') + joinRadius = strokeRadius * style.getMiterLimit(); + if (style.getStrokeCap() === 'square') + joinRadius = Math.max(joinRadius, strokeRadius * Math.sqrt(2)); + } + return Path.getHandleBounds(segments, closed, style, matrix, + Path._getPenPadding(strokeRadius, matrix), + Path._getPenPadding(joinRadius, matrix)); + } +}}); + +Path.inject({ statics: new function() { + + var kappa = 0.5522847498307936, + ellipseSegments = [ + new Segment([-1, 0], [0, kappa ], [0, -kappa]), + new Segment([0, -1], [-kappa, 0], [kappa, 0 ]), + new Segment([1, 0], [0, -kappa], [0, kappa ]), + new Segment([0, 1], [kappa, 0 ], [-kappa, 0]) + ]; + + function createPath(segments, closed, args) { + var props = Base.getNamed(args), + path = new Path(props && props.insert === false && Item.NO_INSERT); + path._add(segments); + path._closed = closed; + return path.set(props); + } + + function createEllipse(center, radius, args) { + var segments = new Array(4); + for (var i = 0; i < 4; i++) { + var segment = ellipseSegments[i]; + segments[i] = new Segment( + segment._point.multiply(radius).add(center), + segment._handleIn.multiply(radius), + segment._handleOut.multiply(radius) + ); + } + return createPath(segments, true, args); + } + + return { + Line: function() { + return createPath([ + new Segment(Point.readNamed(arguments, 'from')), + new Segment(Point.readNamed(arguments, 'to')) + ], false, arguments); + }, + + Circle: function() { + var center = Point.readNamed(arguments, 'center'), + radius = Base.readNamed(arguments, 'radius'); + return createEllipse(center, new Size(radius), arguments); + }, + + Rectangle: function() { + var rect = Rectangle.readNamed(arguments, 'rectangle'), + radius = Size.readNamed(arguments, 'radius', 0, + { readNull: true }), + bl = rect.getBottomLeft(true), + tl = rect.getTopLeft(true), + tr = rect.getTopRight(true), + br = rect.getBottomRight(true), + segments; + if (!radius || radius.isZero()) { + segments = [ + new Segment(bl), + new Segment(tl), + new Segment(tr), + new Segment(br) + ]; + } else { + radius = Size.min(radius, rect.getSize(true).divide(2)); + var rx = radius.width, + ry = radius.height, + hx = rx * kappa, + hy = ry * kappa; + segments = [ + new Segment(bl.add(rx, 0), null, [-hx, 0]), + new Segment(bl.subtract(0, ry), [0, hy]), + new Segment(tl.add(0, ry), null, [0, -hy]), + new Segment(tl.add(rx, 0), [-hx, 0], null), + new Segment(tr.subtract(rx, 0), null, [hx, 0]), + new Segment(tr.add(0, ry), [0, -hy], null), + new Segment(br.subtract(0, ry), null, [0, hy]), + new Segment(br.subtract(rx, 0), [hx, 0]) + ]; + } + return createPath(segments, true, arguments); + }, + + RoundRectangle: '#Rectangle', + + Ellipse: function() { + var ellipse = Shape._readEllipse(arguments); + return createEllipse(ellipse.center, ellipse.radius, arguments); + }, + + Oval: '#Ellipse', + + Arc: function() { + var from = Point.readNamed(arguments, 'from'), + through = Point.readNamed(arguments, 'through'), + to = Point.readNamed(arguments, 'to'), + props = Base.getNamed(arguments), + path = new Path(props && props.insert === false + && Item.NO_INSERT); + path.moveTo(from); + path.arcTo(through, to); + return path.set(props); + }, + + RegularPolygon: function() { + var center = Point.readNamed(arguments, 'center'), + sides = Base.readNamed(arguments, 'sides'), + radius = Base.readNamed(arguments, 'radius'), + step = 360 / sides, + three = !(sides % 3), + vector = new Point(0, three ? -radius : radius), + offset = three ? -1 : 0.5, + segments = new Array(sides); + for (var i = 0; i < sides; i++) + segments[i] = new Segment(center.add( + vector.rotate((i + offset) * step))); + return createPath(segments, true, arguments); + }, + + Star: function() { + var center = Point.readNamed(arguments, 'center'), + points = Base.readNamed(arguments, 'points') * 2, + radius1 = Base.readNamed(arguments, 'radius1'), + radius2 = Base.readNamed(arguments, 'radius2'), + step = 360 / points, + vector = new Point(0, -1), + segments = new Array(points); + for (var i = 0; i < points; i++) + segments[i] = new Segment(center.add(vector.rotate(step * i) + .multiply(i % 2 ? radius2 : radius1))); + return createPath(segments, true, arguments); + } + }; +}}); + +var CompoundPath = PathItem.extend({ + _class: 'CompoundPath', + _serializeFields: { + children: [] + }, + + initialize: function CompoundPath(arg) { + this._children = []; + this._namedChildren = {}; + if (!this._initialize(arg)) { + if (typeof arg === 'string') { + this.setPathData(arg); + } else { + this.addChildren(Array.isArray(arg) ? arg : arguments); + } + } + }, + + insertChildren: function insertChildren(index, items, _preserve) { + items = insertChildren.base.call(this, index, items, _preserve, Path); + for (var i = 0, l = !_preserve && items && items.length; i < l; i++) { + var item = items[i]; + if (item._clockwise === undefined) + item.setClockwise(item._index === 0); + } + return items; + }, + + reverse: function() { + var children = this._children; + for (var i = 0, l = children.length; i < l; i++) + children[i].reverse(); + }, + + smooth: function() { + for (var i = 0, l = this._children.length; i < l; i++) + this._children[i].smooth(); + }, + + reduce: function reduce() { + if (this._children.length === 0) { + var path = new Path(Item.NO_INSERT); + path.insertAbove(this); + path.setStyle(this._style); + this.remove(); + return path; + } else { + return reduce.base.call(this); + } + }, + + isClockwise: function() { + var child = this.getFirstChild(); + return child && child.isClockwise(); + }, + + setClockwise: function(clockwise) { + if (this.isClockwise() !== !!clockwise) + this.reverse(); + }, + + getFirstSegment: function() { + var first = this.getFirstChild(); + return first && first.getFirstSegment(); + }, + + getLastSegment: function() { + var last = this.getLastChild(); + return last && last.getLastSegment(); + }, + + getCurves: function() { + var children = this._children, + curves = []; + for (var i = 0, l = children.length; i < l; i++) + curves.push.apply(curves, children[i].getCurves()); + return curves; + }, + + getFirstCurve: function() { + var first = this.getFirstChild(); + return first && first.getFirstCurve(); + }, + + getLastCurve: function() { + var last = this.getLastChild(); + return last && last.getFirstCurve(); + }, + + getArea: function() { + var children = this._children, + area = 0; + for (var i = 0, l = children.length; i < l; i++) + area += children[i].getArea(); + return area; + } +}, { + beans: true, + + getPathData: function(_matrix, _precision) { + var children = this._children, + paths = []; + for (var i = 0, l = children.length; i < l; i++) { + var child = children[i], + mx = child._matrix; + paths.push(child.getPathData(_matrix && !mx.isIdentity() + ? _matrix.chain(mx) : mx, _precision)); + } + return paths.join(' '); + } +}, { + _getChildHitTestOptions: function(options) { + return options.class === Path || options.type === 'path' + ? options + : new Base(options, { fill: false }); + }, + + _draw: function(ctx, param, strokeMatrix) { + var children = this._children; + if (children.length === 0) + return; + + if (this._currentPath) { + ctx.currentPath = this._currentPath; + } else { + param = param.extend({ dontStart: true, dontFinish: true }); + ctx.beginPath(); + for (var i = 0, l = children.length; i < l; i++) + children[i].draw(ctx, param, strokeMatrix); + this._currentPath = ctx.currentPath; + } + + if (!param.clip) { + this._setStyles(ctx); + var style = this._style; + if (style.hasFill()) { + ctx.fill(style.getWindingRule()); + ctx.shadowColor = 'rgba(0,0,0,0)'; + } + if (style.hasStroke()) + ctx.stroke(); + } + }, + + _drawSelected: function(ctx, matrix, selectedItems) { + var children = this._children; + for (var i = 0, l = children.length; i < l; i++) { + var child = children[i], + mx = child._matrix; + if (!selectedItems[child._id]) + child._drawSelected(ctx, mx.isIdentity() ? matrix + : matrix.chain(mx)); + } + } +}, new function() { + function getCurrentPath(that, check) { + var children = that._children; + if (check && children.length === 0) + throw new Error('Use a moveTo() command first'); + return children[children.length - 1]; + } + + var fields = { + moveTo: function() { + var current = getCurrentPath(this), + path = current && current.isEmpty() ? current : new Path(); + if (path !== current) + this.addChild(path); + path.moveTo.apply(path, arguments); + }, + + moveBy: function() { + var current = getCurrentPath(this, true), + last = current && current.getLastSegment(), + point = Point.read(arguments); + this.moveTo(last ? point.add(last._point) : point); + }, + + closePath: function(join) { + getCurrentPath(this, true).closePath(join); + } + }; + + Base.each(['lineTo', 'cubicCurveTo', 'quadraticCurveTo', 'curveTo', 'arcTo', + 'lineBy', 'cubicCurveBy', 'quadraticCurveBy', 'curveBy', 'arcBy'], + function(key) { + fields[key] = function() { + var path = getCurrentPath(this, true); + path[key].apply(path, arguments); + }; + } + ); + + return fields; +}); + +PathItem.inject(new function() { + var operators = { + unite: function(w) { + return w === 1 || w === 0; + }, + + intersect: function(w) { + return w === 2; + }, + + subtract: function(w) { + return w === 1; + }, + + exclude: function(w) { + return w === 1; + } + }; + + function computeBoolean(path1, path2, operation) { + var operator = operators[operation]; + function preparePath(path) { + return path.clone(false).reduce().reorient().transform(null, true, + true); + } + + var _path1 = preparePath(path1), + _path2 = path2 && path1 !== path2 && preparePath(path2); + if (_path2 && /^(subtract|exclude)$/.test(operation) + ^ (_path2.isClockwise() !== _path1.isClockwise())) + _path2.reverse(); + splitPath(_path1.getIntersections(_path2, null, true)); + + var chain = [], + segments = [], + monoCurves = [], + tolerance = 0.000001; + + function collect(paths) { + for (var i = 0, l = paths.length; i < l; i++) { + var path = paths[i]; + segments.push.apply(segments, path._segments); + monoCurves.push.apply(monoCurves, path._getMonoCurves()); + } + } + + collect(_path1._children || [_path1]); + if (_path2) + collect(_path2._children || [_path2]); + segments.sort(function(a, b) { + var _a = a._intersection, + _b = b._intersection; + return !_a && !_b || _a && _b ? 0 : _a ? -1 : 1; + }); + for (var i = 0, l = segments.length; i < l; i++) { + var segment = segments[i]; + if (segment._winding != null) + continue; + chain.length = 0; + var startSeg = segment, + totalLength = 0, + windingSum = 0; + do { + var length = segment.getCurve().getLength(); + chain.push({ segment: segment, length: length }); + totalLength += length; + segment = segment.getNext(); + } while (segment && !segment._intersection && segment !== startSeg); + for (var j = 0; j < 3; j++) { + var length = totalLength * (j + 1) / 4; + for (k = 0, m = chain.length; k < m; k++) { + var node = chain[k], + curveLength = node.length; + if (length <= curveLength) { + if (length <= tolerance + || curveLength - length <= tolerance) + length = curveLength / 2; + var curve = node.segment.getCurve(), + pt = curve.getPointAt(length), + hor = curve.isLinear() && Math.abs(curve + .getTangentAt(0.5, true).y) <= tolerance, + path = curve._path; + if (path._parent instanceof CompoundPath) + path = path._parent; + windingSum += operation === 'subtract' && _path2 + && (path === _path1 && _path2._getWinding(pt, hor) + || path === _path2 && !_path1._getWinding(pt, hor)) + ? 0 + : getWinding(pt, monoCurves, hor); + break; + } + length -= curveLength; + } + } + var winding = Math.round(windingSum / 3); + for (var j = chain.length - 1; j >= 0; j--) + chain[j].segment._winding = winding; + } + var result = new CompoundPath(Item.NO_INSERT); + result.insertAbove(path1); + result.addChildren(tracePaths(segments, operator), true); + result = result.reduce(); + result.setStyle(path1._style); + return result; + } + + function splitPath(intersections) { + var tMin = 0.000001, + tMax = 1 - tMin, + linearHandles; + + function resetLinear() { + for (var i = 0, l = linearHandles.length; i < l; i++) + linearHandles[i].set(0, 0); + } + + for (var i = intersections.length - 1, curve, prev; i >= 0; i--) { + var loc = intersections[i], + t = loc._parameter; + if (prev && prev._curve === loc._curve && prev._parameter > 0) { + t /= prev._parameter; + } else { + curve = loc._curve; + if (linearHandles) + resetLinear(); + linearHandles = curve.isLinear() ? [ + curve._segment1._handleOut, + curve._segment2._handleIn + ] : null; + } + var newCurve, + segment; + if (newCurve = curve.divide(t, true, true)) { + segment = newCurve._segment1; + curve = newCurve.getPrevious(); + if (linearHandles) + linearHandles.push(segment._handleOut, segment._handleIn); + } else { + segment = t < tMin + ? curve._segment1 + : t > tMax + ? curve._segment2 + : curve.getPartLength(0, t) < curve.getPartLength(t, 1) + ? curve._segment1 + : curve._segment2; + } + segment._intersection = loc.getIntersection(); + loc._segment = segment; + prev = loc; + } + if (linearHandles) + resetLinear(); + } + + function getWinding(point, curves, horizontal, testContains) { + var tolerance = 0.000001, + tMin = tolerance, + tMax = 1 - tMin, + px = point.x, + py = point.y, + windLeft = 0, + windRight = 0, + roots = [], + abs = Math.abs; + if (horizontal) { + var yTop = -Infinity, + yBottom = Infinity, + yBefore = py - tolerance, + yAfter = py + tolerance; + for (var i = 0, l = curves.length; i < l; i++) { + var values = curves[i].values; + if (Curve.solveCubic(values, 0, px, roots, 0, 1) > 0) { + for (var j = roots.length - 1; j >= 0; j--) { + var y = Curve.evaluate(values, roots[j], 0).y; + if (y < yBefore && y > yTop) { + yTop = y; + } else if (y > yAfter && y < yBottom) { + yBottom = y; + } + } + } + } + yTop = (yTop + py) / 2; + yBottom = (yBottom + py) / 2; + if (yTop > -Infinity) + windLeft = getWinding(new Point(px, yTop), curves); + if (yBottom < Infinity) + windRight = getWinding(new Point(px, yBottom), curves); + } else { + var xBefore = px - tolerance, + xAfter = px + tolerance; + for (var i = 0, l = curves.length; i < l; i++) { + var curve = curves[i], + values = curve.values, + winding = curve.winding, + prevT, + prevX; + if (winding && (winding === 1 + && py >= values[1] && py <= values[7] + || py >= values[7] && py <= values[1]) + && Curve.solveCubic(values, 1, py, roots, 0, 1) === 1) { + var t = roots[0], + x = Curve.evaluate(values, t, 0).x, + slope = Curve.evaluate(values, t, 1).y; + if (!(t > tMax + && (i === l - 1 || curve.next !== curves[i + 1]) + && abs(Curve.evaluate(curve.next.values, 0, 0).x -x) + <= tolerance + || i > 0 && curve.previous === curves[i - 1] + && abs(prevX - x) < tolerance + && prevT > tMax && t < tMin)) { + if (Numerical.isZero(slope) && !Curve.isLinear(values) + || t < tMin && slope * Curve.evaluate( + curve.previous.values, 1, 1).y < 0 + || t > tMax && slope * Curve.evaluate( + curve.next.values, 0, 1).y < 0) { + if (testContains && x >= xBefore && x <= xAfter) { + ++windLeft; + ++windRight; + } + } else if (x <= xBefore) { + windLeft += winding; + } else if (x >= xAfter) { + windRight += winding; + } + } + prevT = t; + prevX = x; + } + } + } + return Math.max(abs(windLeft), abs(windRight)); + } + + function tracePaths(segments, operator, selfOp) { + var paths = [], + tMin = 0.000001, + tMax = 1 - tMin; + for (var i = 0, seg, startSeg, l = segments.length; i < l; i++) { + seg = startSeg = segments[i]; + if (seg._visited || !operator(seg._winding)) + continue; + var path = new Path(Item.NO_INSERT), + inter = seg._intersection, + startInterSeg = inter && inter._segment, + added = false, + dir = 1; + do { + var handleIn = dir > 0 ? seg._handleIn : seg._handleOut, + handleOut = dir > 0 ? seg._handleOut : seg._handleIn, + interSeg; + if (added && (!operator(seg._winding) || selfOp) + && (inter = seg._intersection) + && (interSeg = inter._segment) + && interSeg !== startSeg) { + if (selfOp) { + seg._visited = interSeg._visited; + seg = interSeg; + dir = 1; + } else { + var c1 = seg.getCurve(); + if (dir > 0) + c1 = c1.getPrevious(); + var t1 = c1.getTangentAt(dir < 1 ? tMin : tMax, true), + c4 = interSeg.getCurve(), + c3 = c4.getPrevious(), + t3 = c3.getTangentAt(tMax, true), + t4 = c4.getTangentAt(tMin, true), + w3 = t1.cross(t3), + w4 = t1.cross(t4); + if (w3 * w4 !== 0) { + var curve = w3 < w4 ? c3 : c4, + nextCurve = operator(curve._segment1._winding) + ? curve + : w3 < w4 ? c4 : c3, + nextSeg = nextCurve._segment1; + dir = nextCurve === c3 ? -1 : 1; + if (nextSeg._visited && seg._path !== nextSeg._path + || !operator(nextSeg._winding)) { + dir = 1; + } else { + seg._visited = interSeg._visited; + seg = interSeg; + if (nextSeg._visited) + dir = 1; + } + } else { + dir = 1; + } + } + handleOut = dir > 0 ? seg._handleOut : seg._handleIn; + } + path.add(new Segment(seg._point, added && handleIn, handleOut)); + added = true; + seg._visited = true; + seg = dir > 0 ? seg.getNext() : seg. getPrevious(); + } while (seg && !seg._visited + && seg !== startSeg && seg !== startInterSeg + && (seg._intersection || operator(seg._winding))); + if (seg && (seg === startSeg || seg === startInterSeg)) { + path.firstSegment.setHandleIn((seg === startInterSeg + ? startInterSeg : seg)._handleIn); + path.setClosed(true); + } else { + path.lastSegment._handleOut.set(0, 0); + } + if (path._segments.length > + (path._closed ? path.isPolygon() ? 2 : 0 : 1)) + paths.push(path); + } + return paths; + } + + return { + _getWinding: function(point, horizontal, testContains) { + return getWinding(point, this._getMonoCurves(), + horizontal, testContains); + }, + + unite: function(path) { + return computeBoolean(this, path, 'unite'); + }, + + intersect: function(path) { + return computeBoolean(this, path, 'intersect'); + }, + + subtract: function(path) { + return computeBoolean(this, path, 'subtract'); + }, + + exclude: function(path) { + return computeBoolean(this, path, 'exclude'); + }, + + divide: function(path) { + return new Group([this.subtract(path), this.intersect(path)]); + } + }; +}); + +Path.inject({ + _getMonoCurves: function() { + var monoCurves = this._monoCurves, + prevCurve; + + function insertCurve(v) { + var y0 = v[1], + y1 = v[7], + curve = { + values: v, + winding: y0 === y1 + ? 0 + : y0 > y1 + ? -1 + : 1, + previous: prevCurve, + next: null + }; + if (prevCurve) + prevCurve.next = curve; + monoCurves.push(curve); + prevCurve = curve; + } + + function handleCurve(v) { + if (Curve.getLength(v) === 0) + return; + var y0 = v[1], + y1 = v[3], + y2 = v[5], + y3 = v[7]; + if (Curve.isLinear(v)) { + insertCurve(v); + } else { + var a = 3 * (y1 - y2) - y0 + y3, + b = 2 * (y0 + y2) - 4 * y1, + c = y1 - y0, + tolerance = 0.000001, + roots = []; + var count = Numerical.solveQuadratic(a, b, c, roots, tolerance, + 1 - tolerance); + if (count === 0) { + insertCurve(v); + } else { + roots.sort(); + var t = roots[0], + parts = Curve.subdivide(v, t); + insertCurve(parts[0]); + if (count > 1) { + t = (roots[1] - t) / (1 - t); + parts = Curve.subdivide(parts[1], t); + insertCurve(parts[0]); + } + insertCurve(parts[1]); + } + } + } + + if (!monoCurves) { + monoCurves = this._monoCurves = []; + var curves = this.getCurves(), + segments = this._segments; + for (var i = 0, l = curves.length; i < l; i++) + handleCurve(curves[i].getValues()); + if (!this._closed && segments.length > 1) { + var p1 = segments[segments.length - 1]._point, + p2 = segments[0]._point, + p1x = p1._x, p1y = p1._y, + p2x = p2._x, p2y = p2._y; + handleCurve([p1x, p1y, p1x, p1y, p2x, p2y, p2x, p2y]); + } + if (monoCurves.length > 0) { + var first = monoCurves[0], + last = monoCurves[monoCurves.length - 1]; + first.previous = last; + last.next = first; + } + } + return monoCurves; + }, + + getInteriorPoint: function() { + var bounds = this.getBounds(), + point = bounds.getCenter(true); + if (!this.contains(point)) { + var curves = this._getMonoCurves(), + roots = [], + y = point.y, + xIntercepts = []; + for (var i = 0, l = curves.length; i < l; i++) { + var values = curves[i].values; + if ((curves[i].winding === 1 + && y >= values[1] && y <= values[7] + || y >= values[7] && y <= values[1]) + && Curve.solveCubic(values, 1, y, roots, 0, 1) > 0) { + for (var j = roots.length - 1; j >= 0; j--) + xIntercepts.push(Curve.evaluate(values, roots[j], 0).x); + } + if (xIntercepts.length > 1) + break; + } + point.x = (xIntercepts[0] + xIntercepts[1]) / 2; + } + return point; + }, + + reorient: function() { + this.setClockwise(true); + return this; + } +}); + +CompoundPath.inject({ + _getMonoCurves: function() { + var children = this._children, + monoCurves = []; + for (var i = 0, l = children.length; i < l; i++) + monoCurves.push.apply(monoCurves, children[i]._getMonoCurves()); + return monoCurves; + }, + + reorient: function() { + var children = this.removeChildren().sort(function(a, b) { + return b.getBounds().getArea() - a.getBounds().getArea(); + }); + if (children.length > 0) { + this.addChildren(children); + var clockwise = children[0].isClockwise(); + for (var i = 1, l = children.length; i < l; i++) { + var point = children[i].getInteriorPoint(), + counters = 0; + for (var j = i - 1; j >= 0; j--) { + if (children[j].contains(point)) + counters++; + } + children[i].setClockwise(counters % 2 === 0 && clockwise); + } + } + return this; + } +}); + +var PathIterator = Base.extend({ + _class: 'PathIterator', + + initialize: function(path, maxRecursion, tolerance, matrix) { + var curves = [], + parts = [], + length = 0, + minDifference = 1 / (maxRecursion || 32), + segments = path._segments, + segment1 = segments[0], + segment2; + + function addCurve(segment1, segment2) { + var curve = Curve.getValues(segment1, segment2, matrix); + curves.push(curve); + computeParts(curve, segment1._index, 0, 1); + } + + function computeParts(curve, index, minT, maxT) { + if ((maxT - minT) > minDifference + && !Curve.isFlatEnough(curve, tolerance || 0.25)) { + var split = Curve.subdivide(curve), + halfT = (minT + maxT) / 2; + computeParts(split[0], index, minT, halfT); + computeParts(split[1], index, halfT, maxT); + } else { + var x = curve[6] - curve[0], + y = curve[7] - curve[1], + dist = Math.sqrt(x * x + y * y); + if (dist > 0.000001) { + length += dist; + parts.push({ + offset: length, + value: maxT, + index: index + }); + } + } + } + + for (var i = 1, l = segments.length; i < l; i++) { + segment2 = segments[i]; + addCurve(segment1, segment2); + segment1 = segment2; + } + if (path._closed) + addCurve(segment2, segments[0]); + + this.curves = curves; + this.parts = parts; + this.length = length; + this.index = 0; + }, + + getParameterAt: function(offset) { + var i, j = this.index; + for (;;) { + i = j; + if (j == 0 || this.parts[--j].offset < offset) + break; + } + for (var l = this.parts.length; i < l; i++) { + var part = this.parts[i]; + if (part.offset >= offset) { + this.index = i; + var prev = this.parts[i - 1]; + var prevVal = prev && prev.index == part.index ? prev.value : 0, + prevLen = prev ? prev.offset : 0; + return { + value: prevVal + (part.value - prevVal) + * (offset - prevLen) / (part.offset - prevLen), + index: part.index + }; + } + } + var part = this.parts[this.parts.length - 1]; + return { + value: 1, + index: part.index + }; + }, + + evaluate: function(offset, type) { + var param = this.getParameterAt(offset); + return Curve.evaluate(this.curves[param.index], param.value, type); + }, + + drawPart: function(ctx, from, to) { + from = this.getParameterAt(from); + to = this.getParameterAt(to); + for (var i = from.index; i <= to.index; i++) { + var curve = Curve.getPart(this.curves[i], + i == from.index ? from.value : 0, + i == to.index ? to.value : 1); + if (i == from.index) + ctx.moveTo(curve[0], curve[1]); + ctx.bezierCurveTo.apply(ctx, curve.slice(2)); + } + } +}, Base.each(['getPoint', 'getTangent', 'getNormal', 'getCurvature'], + function(name, index) { + this[name + 'At'] = function(offset) { + return this.evaluate(offset, index); + }; + }, {}) +); + +var PathFitter = Base.extend({ + initialize: function(path, error) { + var points = this.points = [], + segments = path._segments, + prev; + for (var i = 0, l = segments.length; i < l; i++) { + var point = segments[i].point.clone(); + if (!prev || !prev.equals(point)) { + points.push(point); + prev = point; + } + } + + if (path._closed) { + this.closed = true; + points.unshift(points[points.length - 1]); + points.push(points[1]); + } + + this.error = error; + }, + + fit: function() { + var points = this.points, + length = points.length, + segments = this.segments = length > 0 + ? [new Segment(points[0])] : []; + if (length > 1) + this.fitCubic(0, length - 1, + points[1].subtract(points[0]).normalize(), + points[length - 2].subtract(points[length - 1]).normalize()); + + if (this.closed) { + segments.shift(); + segments.pop(); + } + + return segments; + }, + + fitCubic: function(first, last, tan1, tan2) { + if (last - first == 1) { + var pt1 = this.points[first], + pt2 = this.points[last], + dist = pt1.getDistance(pt2) / 3; + this.addCurve([pt1, pt1.add(tan1.normalize(dist)), + pt2.add(tan2.normalize(dist)), pt2]); + return; + } + var uPrime = this.chordLengthParameterize(first, last), + maxError = Math.max(this.error, this.error * this.error), + split; + for (var i = 0; i <= 4; i++) { + var curve = this.generateBezier(first, last, uPrime, tan1, tan2); + var max = this.findMaxError(first, last, curve, uPrime); + if (max.error < this.error) { + this.addCurve(curve); + return; + } + split = max.index; + if (max.error >= maxError) + break; + this.reparameterize(first, last, uPrime, curve); + maxError = max.error; + } + var V1 = this.points[split - 1].subtract(this.points[split]), + V2 = this.points[split].subtract(this.points[split + 1]), + tanCenter = V1.add(V2).divide(2).normalize(); + this.fitCubic(first, split, tan1, tanCenter); + this.fitCubic(split, last, tanCenter.negate(), tan2); + }, + + addCurve: function(curve) { + var prev = this.segments[this.segments.length - 1]; + prev.setHandleOut(curve[1].subtract(curve[0])); + this.segments.push( + new Segment(curve[3], curve[2].subtract(curve[3]))); + }, + + generateBezier: function(first, last, uPrime, tan1, tan2) { + var epsilon = 1e-12, + pt1 = this.points[first], + pt2 = this.points[last], + C = [[0, 0], [0, 0]], + X = [0, 0]; + + for (var i = 0, l = last - first + 1; i < l; i++) { + var u = uPrime[i], + t = 1 - u, + b = 3 * u * t, + b0 = t * t * t, + b1 = b * t, + b2 = b * u, + b3 = u * u * u, + a1 = tan1.normalize(b1), + a2 = tan2.normalize(b2), + tmp = this.points[first + i] + .subtract(pt1.multiply(b0 + b1)) + .subtract(pt2.multiply(b2 + b3)); + C[0][0] += a1.dot(a1); + C[0][1] += a1.dot(a2); + C[1][0] = C[0][1]; + C[1][1] += a2.dot(a2); + X[0] += a1.dot(tmp); + X[1] += a2.dot(tmp); + } + + var detC0C1 = C[0][0] * C[1][1] - C[1][0] * C[0][1], + alpha1, alpha2; + if (Math.abs(detC0C1) > epsilon) { + var detC0X = C[0][0] * X[1] - C[1][0] * X[0], + detXC1 = X[0] * C[1][1] - X[1] * C[0][1]; + alpha1 = detXC1 / detC0C1; + alpha2 = detC0X / detC0C1; + } else { + var c0 = C[0][0] + C[0][1], + c1 = C[1][0] + C[1][1]; + if (Math.abs(c0) > epsilon) { + alpha1 = alpha2 = X[0] / c0; + } else if (Math.abs(c1) > epsilon) { + alpha1 = alpha2 = X[1] / c1; + } else { + alpha1 = alpha2 = 0; + } + } + + var segLength = pt2.getDistance(pt1); + epsilon *= segLength; + if (alpha1 < epsilon || alpha2 < epsilon) { + alpha1 = alpha2 = segLength / 3; + } + + return [pt1, pt1.add(tan1.normalize(alpha1)), + pt2.add(tan2.normalize(alpha2)), pt2]; + }, + + reparameterize: function(first, last, u, curve) { + for (var i = first; i <= last; i++) { + u[i - first] = this.findRoot(curve, this.points[i], u[i - first]); + } + }, + + findRoot: function(curve, point, u) { + var curve1 = [], + curve2 = []; + for (var i = 0; i <= 2; i++) { + curve1[i] = curve[i + 1].subtract(curve[i]).multiply(3); + } + for (var i = 0; i <= 1; i++) { + curve2[i] = curve1[i + 1].subtract(curve1[i]).multiply(2); + } + var pt = this.evaluate(3, curve, u), + pt1 = this.evaluate(2, curve1, u), + pt2 = this.evaluate(1, curve2, u), + diff = pt.subtract(point), + df = pt1.dot(pt1) + diff.dot(pt2); + if (Math.abs(df) < 0.000001) + return u; + return u - diff.dot(pt1) / df; + }, + + evaluate: function(degree, curve, t) { + var tmp = curve.slice(); + for (var i = 1; i <= degree; i++) { + for (var j = 0; j <= degree - i; j++) { + tmp[j] = tmp[j].multiply(1 - t).add(tmp[j + 1].multiply(t)); + } + } + return tmp[0]; + }, + + chordLengthParameterize: function(first, last) { + var u = [0]; + for (var i = first + 1; i <= last; i++) { + u[i - first] = u[i - first - 1] + + this.points[i].getDistance(this.points[i - 1]); + } + for (var i = 1, m = last - first; i <= m; i++) { + u[i] /= u[m]; + } + return u; + }, + + findMaxError: function(first, last, curve, u) { + var index = Math.floor((last - first + 1) / 2), + maxDist = 0; + for (var i = first + 1; i < last; i++) { + var P = this.evaluate(3, curve, u[i - first]); + var v = P.subtract(this.points[i]); + var dist = v.x * v.x + v.y * v.y; + if (dist >= maxDist) { + maxDist = dist; + index = i; + } + } + return { + error: maxDist, + index: index + }; + } +}); + +var TextItem = Item.extend({ + _class: 'TextItem', + _boundsSelected: true, + _applyMatrix: false, + _canApplyMatrix: false, + _serializeFields: { + content: null + }, + _boundsGetter: 'getBounds', + + initialize: function TextItem(arg) { + this._content = ''; + this._lines = []; + var hasProps = arg && Base.isPlainObject(arg) + && arg.x === undefined && arg.y === undefined; + this._initialize(hasProps && arg, !hasProps && Point.read(arguments)); + }, + + _equals: function(item) { + return this._content === item._content; + }, + + _clone: function _clone(copy, insert) { + copy.setContent(this._content); + return _clone.base.call(this, copy, insert); + }, + + getContent: function() { + return this._content; + }, + + setContent: function(content) { + this._content = '' + content; + this._lines = this._content.split(/\r\n|\n|\r/mg); + this._changed(265); + }, + + isEmpty: function() { + return !this._content; + }, + + getCharacterStyle: '#getStyle', + setCharacterStyle: '#setStyle', + + getParagraphStyle: '#getStyle', + setParagraphStyle: '#setStyle' +}); + +var PointText = TextItem.extend({ + _class: 'PointText', + + initialize: function PointText() { + TextItem.apply(this, arguments); + }, + + clone: function(insert) { + return this._clone(new PointText(Item.NO_INSERT), insert); + }, + + getPoint: function() { + var point = this._matrix.getTranslation(); + return new LinkedPoint(point.x, point.y, this, 'setPoint'); + }, + + setPoint: function() { + var point = Point.read(arguments); + this.translate(point.subtract(this._matrix.getTranslation())); + }, + + _draw: function(ctx) { + if (!this._content) + return; + this._setStyles(ctx); + var style = this._style, + lines = this._lines, + leading = style.getLeading(), + shadowColor = ctx.shadowColor; + ctx.font = style.getFontStyle(); + ctx.textAlign = style.getJustification(); + for (var i = 0, l = lines.length; i < l; i++) { + ctx.shadowColor = shadowColor; + var line = lines[i]; + if (style.hasFill()) { + ctx.fillText(line, 0, 0); + ctx.shadowColor = 'rgba(0,0,0,0)'; + } + if (style.hasStroke()) + ctx.strokeText(line, 0, 0); + ctx.translate(0, leading); + } + }, + + _getBounds: function(getter, matrix) { + var style = this._style, + lines = this._lines, + numLines = lines.length, + justification = style.getJustification(), + leading = style.getLeading(), + width = this.getView().getTextWidth(style.getFontStyle(), lines), + x = 0; + if (justification !== 'left') + x -= width / (justification === 'center' ? 2: 1); + var bounds = new Rectangle(x, + numLines ? - 0.75 * leading : 0, + width, numLines * leading); + return matrix ? matrix._transformBounds(bounds, bounds) : bounds; + } +}); + +var Color = Base.extend(new function() { + var types = { + gray: ['gray'], + rgb: ['red', 'green', 'blue'], + hsb: ['hue', 'saturation', 'brightness'], + hsl: ['hue', 'saturation', 'lightness'], + gradient: ['gradient', 'origin', 'destination', 'highlight'] + }; + + var componentParsers = {}, + colorCache = {}, + colorCtx; + + function fromCSS(string) { + var match = string.match(/^#(\w{1,2})(\w{1,2})(\w{1,2})$/), + components; + if (match) { + components = [0, 0, 0]; + for (var i = 0; i < 3; i++) { + var value = match[i + 1]; + components[i] = parseInt(value.length == 1 + ? value + value : value, 16) / 255; + } + } else if (match = string.match(/^rgba?\((.*)\)$/)) { + components = match[1].split(','); + for (var i = 0, l = components.length; i < l; i++) { + var value = +components[i]; + components[i] = i < 3 ? value / 255 : value; + } + } else { + var cached = colorCache[string]; + if (!cached) { + if (!colorCtx) { + colorCtx = CanvasProvider.getContext(1, 1); + colorCtx.globalCompositeOperation = 'copy'; + } + colorCtx.fillStyle = 'rgba(0,0,0,0)'; + colorCtx.fillStyle = string; + colorCtx.fillRect(0, 0, 1, 1); + var data = colorCtx.getImageData(0, 0, 1, 1).data; + cached = colorCache[string] = [ + data[0] / 255, + data[1] / 255, + data[2] / 255 + ]; + } + components = cached.slice(); + } + return components; + } + + var hsbIndices = [ + [0, 3, 1], + [2, 0, 1], + [1, 0, 3], + [1, 2, 0], + [3, 1, 0], + [0, 1, 2] + ]; + + var converters = { + 'rgb-hsb': function(r, g, b) { + var max = Math.max(r, g, b), + min = Math.min(r, g, b), + delta = max - min, + h = delta === 0 ? 0 + : ( max == r ? (g - b) / delta + (g < b ? 6 : 0) + : max == g ? (b - r) / delta + 2 + : (r - g) / delta + 4) * 60; + return [h, max === 0 ? 0 : delta / max, max]; + }, + + 'hsb-rgb': function(h, s, b) { + h = (((h / 60) % 6) + 6) % 6; + var i = Math.floor(h), + f = h - i, + i = hsbIndices[i], + v = [ + b, + b * (1 - s), + b * (1 - s * f), + b * (1 - s * (1 - f)) + ]; + return [v[i[0]], v[i[1]], v[i[2]]]; + }, + + 'rgb-hsl': function(r, g, b) { + var max = Math.max(r, g, b), + min = Math.min(r, g, b), + delta = max - min, + achromatic = delta === 0, + h = achromatic ? 0 + : ( max == r ? (g - b) / delta + (g < b ? 6 : 0) + : max == g ? (b - r) / delta + 2 + : (r - g) / delta + 4) * 60, + l = (max + min) / 2, + s = achromatic ? 0 : l < 0.5 + ? delta / (max + min) + : delta / (2 - max - min); + return [h, s, l]; + }, + + 'hsl-rgb': function(h, s, l) { + h = (((h / 360) % 1) + 1) % 1; + if (s === 0) + return [l, l, l]; + var t3s = [ h + 1 / 3, h, h - 1 / 3 ], + t2 = l < 0.5 ? l * (1 + s) : l + s - l * s, + t1 = 2 * l - t2, + c = []; + for (var i = 0; i < 3; i++) { + var t3 = t3s[i]; + if (t3 < 0) t3 += 1; + if (t3 > 1) t3 -= 1; + c[i] = 6 * t3 < 1 + ? t1 + (t2 - t1) * 6 * t3 + : 2 * t3 < 1 + ? t2 + : 3 * t3 < 2 + ? t1 + (t2 - t1) * ((2 / 3) - t3) * 6 + : t1; + } + return c; + }, + + 'rgb-gray': function(r, g, b) { + return [r * 0.2989 + g * 0.587 + b * 0.114]; + }, + + 'gray-rgb': function(g) { + return [g, g, g]; + }, + + 'gray-hsb': function(g) { + return [0, 0, g]; + }, + + 'gray-hsl': function(g) { + return [0, 0, g]; + }, + + 'gradient-rgb': function() { + return []; + }, + + 'rgb-gradient': function() { + return []; + } + + }; + + return Base.each(types, function(properties, type) { + componentParsers[type] = []; + Base.each(properties, function(name, index) { + var part = Base.capitalize(name), + hasOverlap = /^(hue|saturation)$/.test(name), + parser = componentParsers[type][index] = name === 'gradient' + ? function(value) { + var current = this._components[0]; + value = Gradient.read(Array.isArray(value) ? value + : arguments, 0, { readNull: true }); + if (current !== value) { + if (current) + current._removeOwner(this); + if (value) + value._addOwner(this); + } + return value; + } + : type === 'gradient' + ? function() { + return Point.read(arguments, 0, { + readNull: name === 'highlight', + clone: true + }); + } + : function(value) { + return value == null || isNaN(value) ? 0 : value; + }; + + this['get' + part] = function() { + return this._type === type + || hasOverlap && /^hs[bl]$/.test(this._type) + ? this._components[index] + : this._convert(type)[index]; + }; + + this['set' + part] = function(value) { + if (this._type !== type + && !(hasOverlap && /^hs[bl]$/.test(this._type))) { + this._components = this._convert(type); + this._properties = types[type]; + this._type = type; + } + value = parser.call(this, value); + if (value != null) { + this._components[index] = value; + this._changed(); + } + }; + }, this); + }, { + _class: 'Color', + _readIndex: true, + + initialize: function Color(arg) { + var slice = Array.prototype.slice, + args = arguments, + read = 0, + type, + components, + alpha, + values; + if (Array.isArray(arg)) { + args = arg; + arg = args[0]; + } + var argType = arg != null && typeof arg; + if (argType === 'string' && arg in types) { + type = arg; + arg = args[1]; + if (Array.isArray(arg)) { + components = arg; + alpha = args[2]; + } else { + if (this.__read) + read = 1; + args = slice.call(args, 1); + argType = typeof arg; + } + } + if (!components) { + values = argType === 'number' + ? args + : argType === 'object' && arg.length != null + ? arg + : null; + if (values) { + if (!type) + type = values.length >= 3 + ? 'rgb' + : 'gray'; + var length = types[type].length; + alpha = values[length]; + if (this.__read) + read += values === arguments + ? length + (alpha != null ? 1 : 0) + : 1; + if (values.length > length) + values = slice.call(values, 0, length); + } else if (argType === 'string') { + type = 'rgb'; + components = fromCSS(arg); + if (components.length === 4) { + alpha = components[3]; + components.length--; + } + } else if (argType === 'object') { + if (arg.constructor === Color) { + type = arg._type; + components = arg._components.slice(); + alpha = arg._alpha; + if (type === 'gradient') { + for (var i = 1, l = components.length; i < l; i++) { + var point = components[i]; + if (point) + components[i] = point.clone(); + } + } + } else if (arg.constructor === Gradient) { + type = 'gradient'; + values = args; + } else { + type = 'hue' in arg + ? 'lightness' in arg + ? 'hsl' + : 'hsb' + : 'gradient' in arg || 'stops' in arg + || 'radial' in arg + ? 'gradient' + : 'gray' in arg + ? 'gray' + : 'rgb'; + var properties = types[type]; + parsers = componentParsers[type]; + this._components = components = []; + for (var i = 0, l = properties.length; i < l; i++) { + var value = arg[properties[i]]; + if (value == null && i === 0 && type === 'gradient' + && 'stops' in arg) { + value = { + stops: arg.stops, + radial: arg.radial + }; + } + value = parsers[i].call(this, value); + if (value != null) + components[i] = value; + } + alpha = arg.alpha; + } + } + if (this.__read && type) + read = 1; + } + this._type = type || 'rgb'; + if (type === 'gradient') + this._id = Color._id = (Color._id || 0) + 1; + if (!components) { + this._components = components = []; + var parsers = componentParsers[this._type]; + for (var i = 0, l = parsers.length; i < l; i++) { + var value = parsers[i].call(this, values && values[i]); + if (value != null) + components[i] = value; + } + } + this._components = components; + this._properties = types[this._type]; + this._alpha = alpha; + if (this.__read) + this.__read = read; + }, + + _serialize: function(options, dictionary) { + var components = this.getComponents(); + return Base.serialize( + /^(gray|rgb)$/.test(this._type) + ? components + : [this._type].concat(components), + options, true, dictionary); + }, + + _changed: function() { + this._canvasStyle = null; + if (this._owner) + this._owner._changed(65); + }, + + _convert: function(type) { + var converter; + return this._type === type + ? this._components.slice() + : (converter = converters[this._type + '-' + type]) + ? converter.apply(this, this._components) + : converters['rgb-' + type].apply(this, + converters[this._type + '-rgb'].apply(this, + this._components)); + }, + + convert: function(type) { + return new Color(type, this._convert(type), this._alpha); + }, + + getType: function() { + return this._type; + }, + + setType: function(type) { + this._components = this._convert(type); + this._properties = types[type]; + this._type = type; + }, + + getComponents: function() { + var components = this._components.slice(); + if (this._alpha != null) + components.push(this._alpha); + return components; + }, + + getAlpha: function() { + return this._alpha != null ? this._alpha : 1; + }, + + setAlpha: function(alpha) { + this._alpha = alpha == null ? null : Math.min(Math.max(alpha, 0), 1); + this._changed(); + }, + + hasAlpha: function() { + return this._alpha != null; + }, + + equals: function(color) { + var col = Base.isPlainValue(color, true) + ? Color.read(arguments) + : color; + return col === this || col && this._class === col._class + && this._type === col._type + && this._alpha === col._alpha + && Base.equals(this._components, col._components) + || false; + }, + + toString: function() { + var properties = this._properties, + parts = [], + isGradient = this._type === 'gradient', + f = Formatter.instance; + for (var i = 0, l = properties.length; i < l; i++) { + var value = this._components[i]; + if (value != null) + parts.push(properties[i] + ': ' + + (isGradient ? value : f.number(value))); + } + if (this._alpha != null) + parts.push('alpha: ' + f.number(this._alpha)); + return '{ ' + parts.join(', ') + ' }'; + }, + + toCSS: function(hex) { + var components = this._convert('rgb'), + alpha = hex || this._alpha == null ? 1 : this._alpha; + function convert(val) { + return Math.round((val < 0 ? 0 : val > 1 ? 1 : val) * 255); + } + components = [ + convert(components[0]), + convert(components[1]), + convert(components[2]) + ]; + if (alpha < 1) + components.push(alpha < 0 ? 0 : alpha); + return hex + ? '#' + ((1 << 24) + (components[0] << 16) + + (components[1] << 8) + + components[2]).toString(16).slice(1) + : (components.length == 4 ? 'rgba(' : 'rgb(') + + components.join(',') + ')'; + }, + + toCanvasStyle: function(ctx) { + if (this._canvasStyle) + return this._canvasStyle; + if (this._type !== 'gradient') + return this._canvasStyle = this.toCSS(); + var components = this._components, + gradient = components[0], + stops = gradient._stops, + origin = components[1], + destination = components[2], + canvasGradient; + if (gradient._radial) { + var radius = destination.getDistance(origin), + highlight = components[3]; + if (highlight) { + var vector = highlight.subtract(origin); + if (vector.getLength() > radius) + highlight = origin.add(vector.normalize(radius - 0.1)); + } + var start = highlight || origin; + canvasGradient = ctx.createRadialGradient(start.x, start.y, + 0, origin.x, origin.y, radius); + } else { + canvasGradient = ctx.createLinearGradient(origin.x, origin.y, + destination.x, destination.y); + } + for (var i = 0, l = stops.length; i < l; i++) { + var stop = stops[i]; + canvasGradient.addColorStop(stop._rampPoint, + stop._color.toCanvasStyle()); + } + return this._canvasStyle = canvasGradient; + }, + + transform: function(matrix) { + if (this._type === 'gradient') { + var components = this._components; + for (var i = 1, l = components.length; i < l; i++) { + var point = components[i]; + matrix._transformPoint(point, point, true); + } + this._changed(); + } + }, + + statics: { + _types: types, + + random: function() { + var random = Math.random; + return new Color(random(), random(), random()); + } + } + }); +}, new function() { + var operators = { + add: function(a, b) { + return a + b; + }, + + subtract: function(a, b) { + return a - b; + }, + + multiply: function(a, b) { + return a * b; + }, + + divide: function(a, b) { + return a / b; + } + }; + + return Base.each(operators, function(operator, name) { + this[name] = function(color) { + color = Color.read(arguments); + var type = this._type, + components1 = this._components, + components2 = color._convert(type); + for (var i = 0, l = components1.length; i < l; i++) + components2[i] = operator(components1[i], components2[i]); + return new Color(type, components2, + this._alpha != null + ? operator(this._alpha, color.getAlpha()) + : null); + }; + }, { + }); +}); + +Base.each(Color._types, function(properties, type) { + var ctor = this[Base.capitalize(type) + 'Color'] = function(arg) { + var argType = arg != null && typeof arg, + components = argType === 'object' && arg.length != null + ? arg + : argType === 'string' + ? null + : arguments; + return components + ? new Color(type, components) + : new Color(arg); + }; + if (type.length == 3) { + var acronym = type.toUpperCase(); + Color[acronym] = this[acronym + 'Color'] = ctor; + } +}, Base.exports); + +var Gradient = Base.extend({ + _class: 'Gradient', + + initialize: function Gradient(stops, radial) { + this._id = Gradient._id = (Gradient._id || 0) + 1; + if (stops && this._set(stops)) + stops = radial = null; + if (!this._stops) + this.setStops(stops || ['white', 'black']); + if (this._radial == null) + this.setRadial(typeof radial === 'string' && radial === 'radial' + || radial || false); + }, + + _serialize: function(options, dictionary) { + return dictionary.add(this, function() { + return Base.serialize([this._stops, this._radial], + options, true, dictionary); + }); + }, + + _changed: function() { + for (var i = 0, l = this._owners && this._owners.length; i < l; i++) + this._owners[i]._changed(); + }, + + _addOwner: function(color) { + if (!this._owners) + this._owners = []; + this._owners.push(color); + }, + + _removeOwner: function(color) { + var index = this._owners ? this._owners.indexOf(color) : -1; + if (index != -1) { + this._owners.splice(index, 1); + if (this._owners.length === 0) + this._owners = undefined; + } + }, + + clone: function() { + var stops = []; + for (var i = 0, l = this._stops.length; i < l; i++) + stops[i] = this._stops[i].clone(); + return new Gradient(stops); + }, + + getStops: function() { + return this._stops; + }, + + setStops: function(stops) { + if (this.stops) { + for (var i = 0, l = this._stops.length; i < l; i++) + this._stops[i]._owner = undefined; + } + if (stops.length < 2) + throw new Error( + 'Gradient stop list needs to contain at least two stops.'); + this._stops = GradientStop.readAll(stops, 0, { clone: true }); + for (var i = 0, l = this._stops.length; i < l; i++) { + var stop = this._stops[i]; + stop._owner = this; + if (stop._defaultRamp) + stop.setRampPoint(i / (l - 1)); + } + this._changed(); + }, + + getRadial: function() { + return this._radial; + }, + + setRadial: function(radial) { + this._radial = radial; + this._changed(); + }, + + equals: function(gradient) { + if (gradient === this) + return true; + if (gradient && this._class === gradient._class + && this._stops.length === gradient._stops.length) { + for (var i = 0, l = this._stops.length; i < l; i++) { + if (!this._stops[i].equals(gradient._stops[i])) + return false; + } + return true; + } + return false; + } +}); + +var GradientStop = Base.extend({ + _class: 'GradientStop', + + initialize: function GradientStop(arg0, arg1) { + if (arg0) { + var color, rampPoint; + if (arg1 === undefined && Array.isArray(arg0)) { + color = arg0[0]; + rampPoint = arg0[1]; + } else if (arg0.color) { + color = arg0.color; + rampPoint = arg0.rampPoint; + } else { + color = arg0; + rampPoint = arg1; + } + this.setColor(color); + this.setRampPoint(rampPoint); + } + }, + + clone: function() { + return new GradientStop(this._color.clone(), this._rampPoint); + }, + + _serialize: function(options, dictionary) { + return Base.serialize([this._color, this._rampPoint], options, true, + dictionary); + }, + + _changed: function() { + if (this._owner) + this._owner._changed(65); + }, + + getRampPoint: function() { + return this._rampPoint; + }, + + setRampPoint: function(rampPoint) { + this._defaultRamp = rampPoint == null; + this._rampPoint = rampPoint || 0; + this._changed(); + }, + + getColor: function() { + return this._color; + }, + + setColor: function(color) { + this._color = Color.read(arguments); + if (this._color === color) + this._color = color.clone(); + this._color._owner = this; + this._changed(); + }, + + equals: function(stop) { + return stop === this || stop && this._class === stop._class + && this._color.equals(stop._color) + && this._rampPoint == stop._rampPoint + || false; + } +}); + +var Style = Base.extend(new function() { + var defaults = { + fillColor: undefined, + strokeColor: undefined, + strokeWidth: 1, + strokeCap: 'butt', + strokeJoin: 'miter', + strokeScaling: true, + miterLimit: 10, + dashOffset: 0, + dashArray: [], + windingRule: 'nonzero', + shadowColor: undefined, + shadowBlur: 0, + shadowOffset: new Point(), + selectedColor: undefined, + fontFamily: 'sans-serif', + fontWeight: 'normal', + fontSize: 12, + font: 'sans-serif', + leading: null, + justification: 'left' + }; + + var flags = { + strokeWidth: 97, + strokeCap: 97, + strokeJoin: 97, + strokeScaling: 105, + miterLimit: 97, + fontFamily: 9, + fontWeight: 9, + fontSize: 9, + font: 9, + leading: 9, + justification: 9 + }; + + var item = { beans: true }, + fields = { + _defaults: defaults, + _textDefaults: new Base(defaults, { + fillColor: new Color() + }), + beans: true + }; + + Base.each(defaults, function(value, key) { + var isColor = /Color$/.test(key), + isPoint = key === 'shadowOffset', + part = Base.capitalize(key), + flag = flags[key], + set = 'set' + part, + get = 'get' + part; + + fields[set] = function(value) { + var owner = this._owner, + children = owner && owner._children; + if (children && children.length > 0 + && !(owner instanceof CompoundPath)) { + for (var i = 0, l = children.length; i < l; i++) + children[i]._style[set](value); + } else { + var old = this._values[key]; + if (old !== value) { + if (isColor) { + if (old) + old._owner = undefined; + if (value && value.constructor === Color) { + if (value._owner) + value = value.clone(); + value._owner = owner; + } + } + this._values[key] = value; + if (owner) + owner._changed(flag || 65); + } + } + }; + + fields[get] = function(_dontMerge) { + var owner = this._owner, + children = owner && owner._children, + value; + if (!children || children.length === 0 || _dontMerge + || owner instanceof CompoundPath) { + var value = this._values[key]; + if (value === undefined) { + value = this._defaults[key]; + if (value && value.clone) + value = value.clone(); + } else { + var ctor = isColor ? Color : isPoint ? Point : null; + if (ctor && !(value && value.constructor === ctor)) { + this._values[key] = value = ctor.read([value], 0, + { readNull: true, clone: true }); + if (value && isColor) + value._owner = owner; + } + } + return value; + } + for (var i = 0, l = children.length; i < l; i++) { + var childValue = children[i]._style[get](); + if (i === 0) { + value = childValue; + } else if (!Base.equals(value, childValue)) { + return undefined; + } + } + return value; + }; + + item[get] = function(_dontMerge) { + return this._style[get](_dontMerge); + }; + + item[set] = function(value) { + this._style[set](value); + }; + }); + + Item.inject(item); + return fields; +}, { + _class: 'Style', + + initialize: function Style(style, _owner, _project) { + this._values = {}; + this._owner = _owner; + this._project = _owner && _owner._project || _project || paper.project; + if (_owner instanceof TextItem) + this._defaults = this._textDefaults; + if (style) + this.set(style); + }, + + set: function(style) { + var isStyle = style instanceof Style, + values = isStyle ? style._values : style; + if (values) { + for (var key in values) { + if (key in this._defaults) { + var value = values[key]; + this[key] = value && isStyle && value.clone + ? value.clone() : value; + } + } + } + }, + + equals: function(style) { + return style === this || style && this._class === style._class + && Base.equals(this._values, style._values) + || false; + }, + + hasFill: function() { + return !!this.getFillColor(); + }, + + hasStroke: function() { + return !!this.getStrokeColor() && this.getStrokeWidth() > 0; + }, + + hasShadow: function() { + return !!this.getShadowColor() && this.getShadowBlur() > 0; + }, + + getView: function() { + return this._project.getView(); + }, + + getFontStyle: function() { + var fontSize = this.getFontSize(); + return this.getFontWeight() + + ' ' + fontSize + (/[a-z]/i.test(fontSize + '') ? ' ' : 'px ') + + this.getFontFamily(); + }, + + getFont: '#getFontFamily', + setFont: '#setFontFamily', + + getLeading: function getLeading() { + var leading = getLeading.base.call(this), + fontSize = this.getFontSize(); + if (/pt|em|%|px/.test(fontSize)) + fontSize = this.getView().getPixelSize(fontSize); + return leading != null ? leading : fontSize * 1.2; + } + +}); + +var DomElement = new function() { + function handlePrefix(el, name, set, value) { + var prefixes = ['', 'webkit', 'moz', 'Moz', 'ms', 'o'], + suffix = name[0].toUpperCase() + name.substring(1); + for (var i = 0; i < 6; i++) { + var prefix = prefixes[i], + key = prefix ? prefix + suffix : name; + if (key in el) { + if (set) { + el[key] = value; + } else { + return el[key]; + } + break; + } + } + } + + return { + getStyles: function(el) { + var doc = el && el.nodeType !== 9 ? el.ownerDocument : el, + view = doc && doc.defaultView; + return view && view.getComputedStyle(el, ''); + }, + + getBounds: function(el, viewport) { + var doc = el.ownerDocument, + body = doc.body, + html = doc.documentElement, + rect; + try { + rect = el.getBoundingClientRect(); + } catch (e) { + rect = { left: 0, top: 0, width: 0, height: 0 }; + } + var x = rect.left - (html.clientLeft || body.clientLeft || 0), + y = rect.top - (html.clientTop || body.clientTop || 0); + if (!viewport) { + var view = doc.defaultView; + x += view.pageXOffset || html.scrollLeft || body.scrollLeft; + y += view.pageYOffset || html.scrollTop || body.scrollTop; + } + return new Rectangle(x, y, rect.width, rect.height); + }, + + getViewportBounds: function(el) { + var doc = el.ownerDocument, + view = doc.defaultView, + html = doc.documentElement; + return new Rectangle(0, 0, + view.innerWidth || html.clientWidth, + view.innerHeight || html.clientHeight + ); + }, + + getOffset: function(el, viewport) { + return DomElement.getBounds(el, viewport).getPoint(); + }, + + getSize: function(el) { + return DomElement.getBounds(el, true).getSize(); + }, + + isInvisible: function(el) { + return DomElement.getSize(el).equals(new Size(0, 0)); + }, + + isInView: function(el) { + return !DomElement.isInvisible(el) + && DomElement.getViewportBounds(el).intersects( + DomElement.getBounds(el, true)); + }, + + getPrefixed: function(el, name) { + return handlePrefix(el, name); + }, + + setPrefixed: function(el, name, value) { + if (typeof name === 'object') { + for (var key in name) + handlePrefix(el, key, true, name[key]); + } else { + handlePrefix(el, name, true, value); + } + } + }; +}; + +var DomEvent = { + add: function(el, events) { + for (var type in events) { + var func = events[type], + parts = type.split(/[\s,]+/g); + for (var i = 0, l = parts.length; i < l; i++) + el.addEventListener(parts[i], func, false); + } + }, + + remove: function(el, events) { + for (var type in events) { + var func = events[type], + parts = type.split(/[\s,]+/g); + for (var i = 0, l = parts.length; i < l; i++) + el.removeEventListener(parts[i], func, false); + } + }, + + getPoint: function(event) { + var pos = event.targetTouches + ? event.targetTouches.length + ? event.targetTouches[0] + : event.changedTouches[0] + : event; + return new Point( + pos.pageX || pos.clientX + document.documentElement.scrollLeft, + pos.pageY || pos.clientY + document.documentElement.scrollTop + ); + }, + + getTarget: function(event) { + return event.target || event.srcElement; + }, + + getRelatedTarget: function(event) { + return event.relatedTarget || event.toElement; + }, + + getOffset: function(event, target) { + return DomEvent.getPoint(event).subtract(DomElement.getOffset( + target || DomEvent.getTarget(event))); + }, + + stop: function(event) { + event.stopPropagation(); + event.preventDefault(); + } +}; + +DomEvent.requestAnimationFrame = new function() { + var nativeRequest = DomElement.getPrefixed(window, 'requestAnimationFrame'), + requested = false, + callbacks = [], + focused = true, + timer; + + DomEvent.add(window, { + focus: function() { + focused = true; + }, + blur: function() { + focused = false; + } + }); + + function handleCallbacks() { + for (var i = callbacks.length - 1; i >= 0; i--) { + var entry = callbacks[i], + func = entry[0], + el = entry[1]; + if (!el || (PaperScope.getAttribute(el, 'keepalive') == 'true' + || focused) && DomElement.isInView(el)) { + callbacks.splice(i, 1); + func(); + } + } + if (nativeRequest) { + if (callbacks.length) { + nativeRequest(handleCallbacks); + } else { + requested = false; + } + } + } + + return function(callback, element) { + callbacks.push([callback, element]); + if (nativeRequest) { + if (!requested) { + nativeRequest(handleCallbacks); + requested = true; + } + } else if (!timer) { + timer = setInterval(handleCallbacks, 1000 / 60); + } + }; +}; + +var View = Base.extend(Emitter, { + _class: 'View', + + initialize: function View(project, element) { + this._project = project; + this._scope = project._scope; + this._element = element; + var size; + if (!this._pixelRatio) + this._pixelRatio = window.devicePixelRatio || 1; + this._id = element.getAttribute('id'); + if (this._id == null) + element.setAttribute('id', this._id = 'view-' + View._id++); + DomEvent.add(element, this._viewEvents); + var none = 'none'; + DomElement.setPrefixed(element.style, { + userSelect: none, + touchAction: none, + touchCallout: none, + contentZooming: none, + userDrag: none, + tapHighlightColor: 'rgba(0,0,0,0)' + }); + + function getSize(name) { + return element[name] || parseInt(element.getAttribute(name), 10); + }; + + function getCanvasSize() { + var size = DomElement.getSize(element); + return size.isNaN() || size.isZero() + ? new Size(getSize('width'), getSize('height')) + : size; + }; + + if (PaperScope.hasAttribute(element, 'resize')) { + var that = this; + DomEvent.add(window, this._windowEvents = { + resize: function() { + that.setViewSize(getCanvasSize()); + } + }); + } + this._setViewSize(size = getCanvasSize()); + if (PaperScope.hasAttribute(element, 'stats') + && typeof Stats !== 'undefined') { + this._stats = new Stats(); + var stats = this._stats.domElement, + style = stats.style, + offset = DomElement.getOffset(element); + style.position = 'absolute'; + style.left = offset.x + 'px'; + style.top = offset.y + 'px'; + document.body.appendChild(stats); + } + View._views.push(this); + View._viewsById[this._id] = this; + this._viewSize = size; + (this._matrix = new Matrix())._owner = this; + this._zoom = 1; + if (!View._focused) + View._focused = this; + this._frameItems = {}; + this._frameItemCount = 0; + }, + + remove: function() { + if (!this._project) + return false; + if (View._focused === this) + View._focused = null; + View._views.splice(View._views.indexOf(this), 1); + delete View._viewsById[this._id]; + if (this._project._view === this) + this._project._view = null; + DomEvent.remove(this._element, this._viewEvents); + DomEvent.remove(window, this._windowEvents); + this._element = this._project = null; + this.off('frame'); + this._animate = false; + this._frameItems = {}; + return true; + }, + + _events: { + onFrame: { + install: function() { + this.play(); + }, + + uninstall: function() { + this.pause(); + } + }, + + onResize: {} + }, + + _animate: false, + _time: 0, + _count: 0, + + _requestFrame: function() { + var that = this; + DomEvent.requestAnimationFrame(function() { + that._requested = false; + if (!that._animate) + return; + that._requestFrame(); + that._handleFrame(); + }, this._element); + this._requested = true; + }, + + _handleFrame: function() { + paper = this._scope; + var now = Date.now() / 1000, + delta = this._before ? now - this._before : 0; + this._before = now; + this._handlingFrame = true; + this.emit('frame', new Base({ + delta: delta, + time: this._time += delta, + count: this._count++ + })); + if (this._stats) + this._stats.update(); + this._handlingFrame = false; + this.update(); + }, + + _animateItem: function(item, animate) { + var items = this._frameItems; + if (animate) { + items[item._id] = { + item: item, + time: 0, + count: 0 + }; + if (++this._frameItemCount === 1) + this.on('frame', this._handleFrameItems); + } else { + delete items[item._id]; + if (--this._frameItemCount === 0) { + this.off('frame', this._handleFrameItems); + } + } + }, + + _handleFrameItems: function(event) { + for (var i in this._frameItems) { + var entry = this._frameItems[i]; + entry.item.emit('frame', new Base(event, { + time: entry.time += event.delta, + count: entry.count++ + })); + } + }, + + _update: function() { + this._project._needsUpdate = true; + if (this._handlingFrame) + return; + if (this._animate) { + this._handleFrame(); + } else { + this.update(); + } + }, + + _changed: function(flags) { + if (flags & 1) + this._project._needsUpdate = true; + }, + + _transform: function(matrix) { + this._matrix.concatenate(matrix); + this._bounds = null; + this._update(); + }, + + getElement: function() { + return this._element; + }, + + getPixelRatio: function() { + return this._pixelRatio; + }, + + getResolution: function() { + return this._pixelRatio * 72; + }, + + getViewSize: function() { + var size = this._viewSize; + return new LinkedSize(size.width, size.height, this, 'setViewSize'); + }, + + setViewSize: function() { + var size = Size.read(arguments), + delta = size.subtract(this._viewSize); + if (delta.isZero()) + return; + this._viewSize.set(size.width, size.height); + this._setViewSize(size); + this._bounds = null; + this.emit('resize', { + size: size, + delta: delta + }); + this._update(); + }, + + _setViewSize: function(size) { + var element = this._element; + element.width = size.width; + element.height = size.height; + }, + + getBounds: function() { + if (!this._bounds) + this._bounds = this._matrix.inverted()._transformBounds( + new Rectangle(new Point(), this._viewSize)); + return this._bounds; + }, + + getSize: function() { + return this.getBounds().getSize(); + }, + + getCenter: function() { + return this.getBounds().getCenter(); + }, + + setCenter: function() { + var center = Point.read(arguments); + this.scrollBy(center.subtract(this.getCenter())); + }, + + getZoom: function() { + return this._zoom; + }, + + setZoom: function(zoom) { + this._transform(new Matrix().scale(zoom / this._zoom, + this.getCenter())); + this._zoom = zoom; + }, + + isVisible: function() { + return DomElement.isInView(this._element); + }, + + scrollBy: function() { + this._transform(new Matrix().translate(Point.read(arguments).negate())); + }, + + play: function() { + this._animate = true; + if (!this._requested) + this._requestFrame(); + }, + + pause: function() { + this._animate = false; + }, + + draw: function() { + this.update(); + }, + + projectToView: function() { + return this._matrix._transformPoint(Point.read(arguments)); + }, + + viewToProject: function() { + return this._matrix._inverseTransform(Point.read(arguments)); + } + +}, { + statics: { + _views: [], + _viewsById: {}, + _id: 0, + + create: function(project, element) { + if (typeof element === 'string') + element = document.getElementById(element); + return new CanvasView(project, element); + } + } +}, new function() { + var tool, + prevFocus, + tempFocus, + dragging = false; + + function getView(event) { + var target = DomEvent.getTarget(event); + return target.getAttribute && View._viewsById[target.getAttribute('id')]; + } + + function viewToProject(view, event) { + return view.viewToProject(DomEvent.getOffset(event, view._element)); + } + + function updateFocus() { + if (!View._focused || !View._focused.isVisible()) { + for (var i = 0, l = View._views.length; i < l; i++) { + var view = View._views[i]; + if (view && view.isVisible()) { + View._focused = tempFocus = view; + break; + } + } + } + } + + function handleMouseMove(view, point, event) { + view._handleEvent('mousemove', point, event); + var tool = view._scope.tool; + if (tool) { + tool._handleEvent(dragging && tool.responds('mousedrag') + ? 'mousedrag' : 'mousemove', point, event); + } + view.update(); + return tool; + } + + var navigator = window.navigator, + mousedown, mousemove, mouseup; + if (navigator.pointerEnabled || navigator.msPointerEnabled) { + mousedown = 'pointerdown MSPointerDown'; + mousemove = 'pointermove MSPointerMove'; + mouseup = 'pointerup pointercancel MSPointerUp MSPointerCancel'; + } else { + mousedown = 'touchstart'; + mousemove = 'touchmove'; + mouseup = 'touchend touchcancel'; + if (!('ontouchstart' in window && navigator.userAgent.match( + /mobile|tablet|ip(ad|hone|od)|android|silk/i))) { + mousedown += ' mousedown'; + mousemove += ' mousemove'; + mouseup += ' mouseup'; + } + } + + var viewEvents = { + 'selectstart dragstart': function(event) { + if (dragging) + event.preventDefault(); + } + }; + + var docEvents = { + mouseout: function(event) { + var view = View._focused, + target = DomEvent.getRelatedTarget(event); + if (view && (!target || target.nodeName === 'HTML')) + handleMouseMove(view, viewToProject(view, event), event); + }, + + scroll: updateFocus + }; + + viewEvents[mousedown] = function(event) { + var view = View._focused = getView(event), + point = viewToProject(view, event); + dragging = true; + view._handleEvent('mousedown', point, event); + if (tool = view._scope.tool) + tool._handleEvent('mousedown', point, event); + view.update(); + }; + + docEvents[mousemove] = function(event) { + var view = View._focused; + if (!dragging) { + var target = getView(event); + if (target) { + if (view !== target) + handleMouseMove(view, viewToProject(view, event), event); + prevFocus = view; + view = View._focused = tempFocus = target; + } else if (tempFocus && tempFocus === view) { + view = View._focused = prevFocus; + updateFocus(); + } + } + if (view) { + var point = viewToProject(view, event); + if (dragging || view.getBounds().contains(point)) + tool = handleMouseMove(view, point, event); + } + }; + + docEvents[mouseup] = function(event) { + var view = View._focused; + if (!view || !dragging) + return; + var point = viewToProject(view, event); + dragging = false; + view._handleEvent('mouseup', point, event); + if (tool) + tool._handleEvent('mouseup', point, event); + view.update(); + }; + + DomEvent.add(document, docEvents); + + DomEvent.add(window, { + load: updateFocus + }); + + return { + _viewEvents: viewEvents, + + _handleEvent: function() {}, + + statics: { + updateFocus: updateFocus + } + }; +}); + +var CanvasView = View.extend({ + _class: 'CanvasView', + + initialize: function CanvasView(project, canvas) { + if (!(canvas instanceof HTMLCanvasElement)) { + var size = Size.read(arguments, 1); + if (size.isZero()) + throw new Error( + 'Cannot create CanvasView with the provided argument: ' + + [].slice.call(arguments, 1)); + canvas = CanvasProvider.getCanvas(size); + } + this._context = canvas.getContext('2d'); + this._eventCounters = {}; + this._pixelRatio = 1; + if (!/^off|false$/.test(PaperScope.getAttribute(canvas, 'hidpi'))) { + var deviceRatio = window.devicePixelRatio || 1, + backingStoreRatio = DomElement.getPrefixed(this._context, + 'backingStorePixelRatio') || 1; + this._pixelRatio = deviceRatio / backingStoreRatio; + } + View.call(this, project, canvas); + }, + + _setViewSize: function(size) { + var element = this._element, + pixelRatio = this._pixelRatio, + width = size.width, + height = size.height; + element.width = width * pixelRatio; + element.height = height * pixelRatio; + if (pixelRatio !== 1) { + if (!PaperScope.hasAttribute(element, 'resize')) { + var style = element.style; + style.width = width + 'px'; + style.height = height + 'px'; + } + this._context.scale(pixelRatio, pixelRatio); + } + }, + + getPixelSize: function(size) { + var ctx = this._context, + prevFont = ctx.font; + ctx.font = size + ' serif'; + size = parseFloat(ctx.font); + ctx.font = prevFont; + return size; + }, + + getTextWidth: function(font, lines) { + var ctx = this._context, + prevFont = ctx.font, + width = 0; + ctx.font = font; + for (var i = 0, l = lines.length; i < l; i++) + width = Math.max(width, ctx.measureText(lines[i]).width); + ctx.font = prevFont; + return width; + }, + + update: function() { + var project = this._project; + if (!project || !project._needsUpdate) + return false; + var ctx = this._context, + size = this._viewSize; + ctx.clearRect(0, 0, size.width + 1, size.height + 1); + project.draw(ctx, this._matrix, this._pixelRatio); + project._needsUpdate = false; + return true; + } +}, new function() { + + var downPoint, + lastPoint, + overPoint, + downItem, + lastItem, + overItem, + dragItem, + dblClick, + clickTime; + + function callEvent(view, type, event, point, target, lastPoint) { + var item = target, + mouseEvent; + + function call(obj) { + if (obj.responds(type)) { + if (!mouseEvent) { + mouseEvent = new MouseEvent(type, event, point, target, + lastPoint ? point.subtract(lastPoint) : null); + } + if (obj.emit(type, mouseEvent) && mouseEvent.isStopped) { + event.preventDefault(); + return true; + } + } + } + + while (item) { + if (call(item)) + return true; + item = item.getParent(); + } + if (call(view)) + return true; + return false; + } + + return { + _handleEvent: function(type, point, event) { + if (!this._eventCounters[type]) + return; + var project = this._project, + hit = project.hitTest(point, { + tolerance: 0, + fill: true, + stroke: true + }), + item = hit && hit.item, + stopped = false; + switch (type) { + case 'mousedown': + stopped = callEvent(this, type, event, point, item); + dblClick = lastItem == item && (Date.now() - clickTime < 300); + downItem = lastItem = item; + downPoint = lastPoint = overPoint = point; + dragItem = !stopped && item; + while (dragItem && !dragItem.responds('mousedrag')) + dragItem = dragItem._parent; + break; + case 'mouseup': + stopped = callEvent(this, type, event, point, item, downPoint); + if (dragItem) { + if (lastPoint && !lastPoint.equals(point)) + callEvent(this, 'mousedrag', event, point, dragItem, + lastPoint); + if (item !== dragItem) { + overPoint = point; + callEvent(this, 'mousemove', event, point, item, + overPoint); + } + } + if (!stopped && item && item === downItem) { + clickTime = Date.now(); + callEvent(this, dblClick && downItem.responds('doubleclick') + ? 'doubleclick' : 'click', event, downPoint, item); + dblClick = false; + } + downItem = dragItem = null; + break; + case 'mousemove': + if (dragItem) + stopped = callEvent(this, 'mousedrag', event, point, + dragItem, lastPoint); + if (!stopped) { + if (item !== overItem) + overPoint = point; + stopped = callEvent(this, type, event, point, item, + overPoint); + } + lastPoint = overPoint = point; + if (item !== overItem) { + callEvent(this, 'mouseleave', event, point, overItem); + overItem = item; + callEvent(this, 'mouseenter', event, point, item); + } + break; + } + return stopped; + } + }; +}); + +var Event = Base.extend({ + _class: 'Event', + + initialize: function Event(event) { + this.event = event; + }, + + isPrevented: false, + isStopped: false, + + preventDefault: function() { + this.isPrevented = true; + this.event.preventDefault(); + }, + + stopPropagation: function() { + this.isStopped = true; + this.event.stopPropagation(); + }, + + stop: function() { + this.stopPropagation(); + this.preventDefault(); + }, + + getModifiers: function() { + return Key.modifiers; + } +}); + +var KeyEvent = Event.extend({ + _class: 'KeyEvent', + + initialize: function KeyEvent(down, key, character, event) { + Event.call(this, event); + this.type = down ? 'keydown' : 'keyup'; + this.key = key; + this.character = character; + }, + + toString: function() { + return "{ type: '" + this.type + + "', key: '" + this.key + + "', character: '" + this.character + + "', modifiers: " + this.getModifiers() + + " }"; + } +}); + +var Key = new function() { + + var specialKeys = { + 8: 'backspace', + 9: 'tab', + 13: 'enter', + 16: 'shift', + 17: 'control', + 18: 'option', + 19: 'pause', + 20: 'caps-lock', + 27: 'escape', + 32: 'space', + 35: 'end', + 36: 'home', + 37: 'left', + 38: 'up', + 39: 'right', + 40: 'down', + 46: 'delete', + 91: 'command', + 93: 'command', + 224: 'command' + }, + + specialChars = { + 9: true, + 13: true, + 32: true + }, + + modifiers = new Base({ + shift: false, + control: false, + option: false, + command: false, + capsLock: false, + space: false + }), + + charCodeMap = {}, + keyMap = {}, + downCode; + + function handleKey(down, keyCode, charCode, event) { + var character = charCode ? String.fromCharCode(charCode) : '', + specialKey = specialKeys[keyCode], + key = specialKey || character.toLowerCase(), + type = down ? 'keydown' : 'keyup', + view = View._focused, + scope = view && view.isVisible() && view._scope, + tool = scope && scope.tool, + name; + keyMap[key] = down; + if (specialKey && (name = Base.camelize(specialKey)) in modifiers) + modifiers[name] = down; + if (down) { + charCodeMap[keyCode] = charCode; + } else { + delete charCodeMap[keyCode]; + } + if (tool && tool.responds(type)) { + paper = scope; + tool.emit(type, new KeyEvent(down, key, character, event)); + if (view) + view.update(); + } + } + + DomEvent.add(document, { + keydown: function(event) { + var code = event.which || event.keyCode; + if (code in specialKeys || modifiers.command) { + handleKey(true, code, + code in specialChars || modifiers.command ? code : 0, + event); + } else { + downCode = code; + } + }, + + keypress: function(event) { + if (downCode != null) { + handleKey(true, downCode, event.which || event.keyCode, event); + downCode = null; + } + }, + + keyup: function(event) { + var code = event.which || event.keyCode; + if (code in charCodeMap) + handleKey(false, code, charCodeMap[code], event); + } + }); + + DomEvent.add(window, { + blur: function(event) { + for (var code in charCodeMap) + handleKey(false, code, charCodeMap[code], event); + } + }); + + return { + modifiers: modifiers, + + isDown: function(key) { + return !!keyMap[key]; + } + }; +}; + +var MouseEvent = Event.extend({ + _class: 'MouseEvent', + + initialize: function MouseEvent(type, event, point, target, delta) { + Event.call(this, event); + this.type = type; + this.point = point; + this.target = target; + this.delta = delta; + }, + + toString: function() { + return "{ type: '" + this.type + + "', point: " + this.point + + ', target: ' + this.target + + (this.delta ? ', delta: ' + this.delta : '') + + ', modifiers: ' + this.getModifiers() + + ' }'; + } +}); + +var ToolEvent = Event.extend({ + _class: 'ToolEvent', + _item: null, + + initialize: function ToolEvent(tool, type, event) { + this.tool = tool; + this.type = type; + this.event = event; + }, + + _choosePoint: function(point, toolPoint) { + return point ? point : toolPoint ? toolPoint.clone() : null; + }, + + getPoint: function() { + return this._choosePoint(this._point, this.tool._point); + }, + + setPoint: function(point) { + this._point = point; + }, + + getLastPoint: function() { + return this._choosePoint(this._lastPoint, this.tool._lastPoint); + }, + + setLastPoint: function(lastPoint) { + this._lastPoint = lastPoint; + }, + + getDownPoint: function() { + return this._choosePoint(this._downPoint, this.tool._downPoint); + }, + + setDownPoint: function(downPoint) { + this._downPoint = downPoint; + }, + + getMiddlePoint: function() { + if (!this._middlePoint && this.tool._lastPoint) { + return this.tool._point.add(this.tool._lastPoint).divide(2); + } + return this._middlePoint; + }, + + setMiddlePoint: function(middlePoint) { + this._middlePoint = middlePoint; + }, + + getDelta: function() { + return !this._delta && this.tool._lastPoint + ? this.tool._point.subtract(this.tool._lastPoint) + : this._delta; + }, + + setDelta: function(delta) { + this._delta = delta; + }, + + getCount: function() { + return /^mouse(down|up)$/.test(this.type) + ? this.tool._downCount + : this.tool._count; + }, + + setCount: function(count) { + this.tool[/^mouse(down|up)$/.test(this.type) ? 'downCount' : 'count'] + = count; + }, + + getItem: function() { + if (!this._item) { + var result = this.tool._scope.project.hitTest(this.getPoint()); + if (result) { + var item = result.item, + parent = item._parent; + while (/^(Group|CompoundPath)$/.test(parent._class)) { + item = parent; + parent = parent._parent; + } + this._item = item; + } + } + return this._item; + }, + + setItem: function(item) { + this._item = item; + }, + + toString: function() { + return '{ type: ' + this.type + + ', point: ' + this.getPoint() + + ', count: ' + this.getCount() + + ', modifiers: ' + this.getModifiers() + + ' }'; + } +}); + +var Tool = PaperScopeItem.extend({ + _class: 'Tool', + _list: 'tools', + _reference: 'tool', + _events: [ 'onActivate', 'onDeactivate', 'onEditOptions', + 'onMouseDown', 'onMouseUp', 'onMouseDrag', 'onMouseMove', + 'onKeyDown', 'onKeyUp' ], + + initialize: function Tool(props) { + PaperScopeItem.call(this); + this._firstMove = true; + this._count = 0; + this._downCount = 0; + this._set(props); + }, + + getMinDistance: function() { + return this._minDistance; + }, + + setMinDistance: function(minDistance) { + this._minDistance = minDistance; + if (this._minDistance != null && this._maxDistance != null + && this._minDistance > this._maxDistance) { + this._maxDistance = this._minDistance; + } + }, + + getMaxDistance: function() { + return this._maxDistance; + }, + + setMaxDistance: function(maxDistance) { + this._maxDistance = maxDistance; + if (this._minDistance != null && this._maxDistance != null + && this._maxDistance < this._minDistance) { + this._minDistance = maxDistance; + } + }, + + getFixedDistance: function() { + return this._minDistance == this._maxDistance + ? this._minDistance : null; + }, + + setFixedDistance: function(distance) { + this._minDistance = distance; + this._maxDistance = distance; + }, + + _updateEvent: function(type, point, minDistance, maxDistance, start, + needsChange, matchMaxDistance) { + if (!start) { + if (minDistance != null || maxDistance != null) { + var minDist = minDistance != null ? minDistance : 0, + vector = point.subtract(this._point), + distance = vector.getLength(); + if (distance < minDist) + return false; + var maxDist = maxDistance != null ? maxDistance : 0; + if (maxDist != 0) { + if (distance > maxDist) { + point = this._point.add(vector.normalize(maxDist)); + } else if (matchMaxDistance) { + return false; + } + } + } + if (needsChange && point.equals(this._point)) + return false; + } + this._lastPoint = start && type == 'mousemove' ? point : this._point; + this._point = point; + switch (type) { + case 'mousedown': + this._lastPoint = this._downPoint; + this._downPoint = this._point; + this._downCount++; + break; + case 'mouseup': + this._lastPoint = this._downPoint; + break; + } + this._count = start ? 0 : this._count + 1; + return true; + }, + + _fireEvent: function(type, event) { + var sets = paper.project._removeSets; + if (sets) { + if (type === 'mouseup') + sets.mousedrag = null; + var set = sets[type]; + if (set) { + for (var id in set) { + var item = set[id]; + for (var key in sets) { + var other = sets[key]; + if (other && other != set) + delete other[item._id]; + } + item.remove(); + } + sets[type] = null; + } + } + return this.responds(type) + && this.emit(type, new ToolEvent(this, type, event)); + }, + + _handleEvent: function(type, point, event) { + paper = this._scope; + var called = false; + switch (type) { + case 'mousedown': + this._updateEvent(type, point, null, null, true, false, false); + called = this._fireEvent(type, event); + break; + case 'mousedrag': + var needsChange = false, + matchMaxDistance = false; + while (this._updateEvent(type, point, this.minDistance, + this.maxDistance, false, needsChange, matchMaxDistance)) { + called = this._fireEvent(type, event) || called; + needsChange = true; + matchMaxDistance = true; + } + break; + case 'mouseup': + if (!point.equals(this._point) + && this._updateEvent('mousedrag', point, this.minDistance, + this.maxDistance, false, false, false)) { + called = this._fireEvent('mousedrag', event); + } + this._updateEvent(type, point, null, this.maxDistance, false, + false, false); + called = this._fireEvent(type, event) || called; + this._updateEvent(type, point, null, null, true, false, false); + this._firstMove = true; + break; + case 'mousemove': + while (this._updateEvent(type, point, this.minDistance, + this.maxDistance, this._firstMove, true, false)) { + called = this._fireEvent(type, event) || called; + this._firstMove = false; + } + break; + } + if (called) + event.preventDefault(); + return called; + } + +}); + +var Http = { + request: function(method, url, callback) { + var xhr = new (window.ActiveXObject || XMLHttpRequest)( + 'Microsoft.XMLHTTP'); + xhr.open(method.toUpperCase(), url, true); + if ('overrideMimeType' in xhr) + xhr.overrideMimeType('text/plain'); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + var status = xhr.status; + if (status === 0 || status === 200) { + callback.call(xhr, xhr.responseText); + } else { + throw new Error('Could not load ' + url + ' (Error ' + + status + ')'); + } + } + }; + return xhr.send(null); + } +}; + +var CanvasProvider = { + canvases: [], + + getCanvas: function(width, height) { + var canvas, + clear = true; + if (typeof width === 'object') { + height = width.height; + width = width.width; + } + if (this.canvases.length) { + canvas = this.canvases.pop(); + } else { + canvas = document.createElement('canvas'); + } + var ctx = canvas.getContext('2d'); + if (canvas.width === width && canvas.height === height) { + if (clear) + ctx.clearRect(0, 0, width + 1, height + 1); + } else { + canvas.width = width; + canvas.height = height; + } + ctx.save(); + return canvas; + }, + + getContext: function(width, height) { + return this.getCanvas(width, height).getContext('2d'); + }, + + release: function(obj) { + var canvas = obj.canvas ? obj.canvas : obj; + canvas.getContext('2d').restore(); + this.canvases.push(canvas); + } +}; + +var BlendMode = new function() { + var min = Math.min, + max = Math.max, + abs = Math.abs, + sr, sg, sb, sa, + br, bg, bb, ba, + dr, dg, db; + + function getLum(r, g, b) { + return 0.2989 * r + 0.587 * g + 0.114 * b; + } + + function setLum(r, g, b, l) { + var d = l - getLum(r, g, b); + dr = r + d; + dg = g + d; + db = b + d; + var l = getLum(dr, dg, db), + mn = min(dr, dg, db), + mx = max(dr, dg, db); + if (mn < 0) { + var lmn = l - mn; + dr = l + (dr - l) * l / lmn; + dg = l + (dg - l) * l / lmn; + db = l + (db - l) * l / lmn; + } + if (mx > 255) { + var ln = 255 - l, + mxl = mx - l; + dr = l + (dr - l) * ln / mxl; + dg = l + (dg - l) * ln / mxl; + db = l + (db - l) * ln / mxl; + } + } + + function getSat(r, g, b) { + return max(r, g, b) - min(r, g, b); + } + + function setSat(r, g, b, s) { + var col = [r, g, b], + mx = max(r, g, b), + mn = min(r, g, b), + md; + mn = mn === r ? 0 : mn === g ? 1 : 2; + mx = mx === r ? 0 : mx === g ? 1 : 2; + md = min(mn, mx) === 0 ? max(mn, mx) === 1 ? 2 : 1 : 0; + if (col[mx] > col[mn]) { + col[md] = (col[md] - col[mn]) * s / (col[mx] - col[mn]); + col[mx] = s; + } else { + col[md] = col[mx] = 0; + } + col[mn] = 0; + dr = col[0]; + dg = col[1]; + db = col[2]; + } + + var modes = { + multiply: function() { + dr = br * sr / 255; + dg = bg * sg / 255; + db = bb * sb / 255; + }, + + screen: function() { + dr = br + sr - (br * sr / 255); + dg = bg + sg - (bg * sg / 255); + db = bb + sb - (bb * sb / 255); + }, + + overlay: function() { + dr = br < 128 ? 2 * br * sr / 255 : 255 - 2 * (255 - br) * (255 - sr) / 255; + dg = bg < 128 ? 2 * bg * sg / 255 : 255 - 2 * (255 - bg) * (255 - sg) / 255; + db = bb < 128 ? 2 * bb * sb / 255 : 255 - 2 * (255 - bb) * (255 - sb) / 255; + }, + + 'soft-light': function() { + var t = sr * br / 255; + dr = t + br * (255 - (255 - br) * (255 - sr) / 255 - t) / 255; + t = sg * bg / 255; + dg = t + bg * (255 - (255 - bg) * (255 - sg) / 255 - t) / 255; + t = sb * bb / 255; + db = t + bb * (255 - (255 - bb) * (255 - sb) / 255 - t) / 255; + }, + + 'hard-light': function() { + dr = sr < 128 ? 2 * sr * br / 255 : 255 - 2 * (255 - sr) * (255 - br) / 255; + dg = sg < 128 ? 2 * sg * bg / 255 : 255 - 2 * (255 - sg) * (255 - bg) / 255; + db = sb < 128 ? 2 * sb * bb / 255 : 255 - 2 * (255 - sb) * (255 - bb) / 255; + }, + + 'color-dodge': function() { + dr = br === 0 ? 0 : sr === 255 ? 255 : min(255, 255 * br / (255 - sr)); + dg = bg === 0 ? 0 : sg === 255 ? 255 : min(255, 255 * bg / (255 - sg)); + db = bb === 0 ? 0 : sb === 255 ? 255 : min(255, 255 * bb / (255 - sb)); + }, + + 'color-burn': function() { + dr = br === 255 ? 255 : sr === 0 ? 0 : max(0, 255 - (255 - br) * 255 / sr); + dg = bg === 255 ? 255 : sg === 0 ? 0 : max(0, 255 - (255 - bg) * 255 / sg); + db = bb === 255 ? 255 : sb === 0 ? 0 : max(0, 255 - (255 - bb) * 255 / sb); + }, + + darken: function() { + dr = br < sr ? br : sr; + dg = bg < sg ? bg : sg; + db = bb < sb ? bb : sb; + }, + + lighten: function() { + dr = br > sr ? br : sr; + dg = bg > sg ? bg : sg; + db = bb > sb ? bb : sb; + }, + + difference: function() { + dr = br - sr; + if (dr < 0) + dr = -dr; + dg = bg - sg; + if (dg < 0) + dg = -dg; + db = bb - sb; + if (db < 0) + db = -db; + }, + + exclusion: function() { + dr = br + sr * (255 - br - br) / 255; + dg = bg + sg * (255 - bg - bg) / 255; + db = bb + sb * (255 - bb - bb) / 255; + }, + + hue: function() { + setSat(sr, sg, sb, getSat(br, bg, bb)); + setLum(dr, dg, db, getLum(br, bg, bb)); + }, + + saturation: function() { + setSat(br, bg, bb, getSat(sr, sg, sb)); + setLum(dr, dg, db, getLum(br, bg, bb)); + }, + + luminosity: function() { + setLum(br, bg, bb, getLum(sr, sg, sb)); + }, + + color: function() { + setLum(sr, sg, sb, getLum(br, bg, bb)); + }, + + add: function() { + dr = min(br + sr, 255); + dg = min(bg + sg, 255); + db = min(bb + sb, 255); + }, + + subtract: function() { + dr = max(br - sr, 0); + dg = max(bg - sg, 0); + db = max(bb - sb, 0); + }, + + average: function() { + dr = (br + sr) / 2; + dg = (bg + sg) / 2; + db = (bb + sb) / 2; + }, + + negation: function() { + dr = 255 - abs(255 - sr - br); + dg = 255 - abs(255 - sg - bg); + db = 255 - abs(255 - sb - bb); + } + }; + + var nativeModes = this.nativeModes = Base.each([ + 'source-over', 'source-in', 'source-out', 'source-atop', + 'destination-over', 'destination-in', 'destination-out', + 'destination-atop', 'lighter', 'darker', 'copy', 'xor' + ], function(mode) { + this[mode] = true; + }, {}); + + var ctx = CanvasProvider.getContext(1, 1); + Base.each(modes, function(func, mode) { + var darken = mode === 'darken', + ok = false; + ctx.save(); + try { + ctx.fillStyle = darken ? '#300' : '#a00'; + ctx.fillRect(0, 0, 1, 1); + ctx.globalCompositeOperation = mode; + if (ctx.globalCompositeOperation === mode) { + ctx.fillStyle = darken ? '#a00' : '#300'; + ctx.fillRect(0, 0, 1, 1); + ok = ctx.getImageData(0, 0, 1, 1).data[0] !== darken ? 170 : 51; + } + } catch (e) {} + ctx.restore(); + nativeModes[mode] = ok; + }); + CanvasProvider.release(ctx); + + this.process = function(mode, srcContext, dstContext, alpha, offset) { + var srcCanvas = srcContext.canvas, + normal = mode === 'normal'; + if (normal || nativeModes[mode]) { + dstContext.save(); + dstContext.setTransform(1, 0, 0, 1, 0, 0); + dstContext.globalAlpha = alpha; + if (!normal) + dstContext.globalCompositeOperation = mode; + dstContext.drawImage(srcCanvas, offset.x, offset.y); + dstContext.restore(); + } else { + var process = modes[mode]; + if (!process) + return; + var dstData = dstContext.getImageData(offset.x, offset.y, + srcCanvas.width, srcCanvas.height), + dst = dstData.data, + src = srcContext.getImageData(0, 0, + srcCanvas.width, srcCanvas.height).data; + for (var i = 0, l = dst.length; i < l; i += 4) { + sr = src[i]; + br = dst[i]; + sg = src[i + 1]; + bg = dst[i + 1]; + sb = src[i + 2]; + bb = dst[i + 2]; + sa = src[i + 3]; + ba = dst[i + 3]; + process(); + var a1 = sa * alpha / 255, + a2 = 1 - a1; + dst[i] = a1 * dr + a2 * br; + dst[i + 1] = a1 * dg + a2 * bg; + dst[i + 2] = a1 * db + a2 * bb; + dst[i + 3] = sa * alpha + a2 * ba; + } + dstContext.putImageData(dstData, offset.x, offset.y); + } + }; +}; + +var SVGStyles = Base.each({ + fillColor: ['fill', 'color'], + strokeColor: ['stroke', 'color'], + strokeWidth: ['stroke-width', 'number'], + strokeCap: ['stroke-linecap', 'string'], + strokeJoin: ['stroke-linejoin', 'string'], + strokeScaling: ['vector-effect', 'lookup', { + true: 'none', + false: 'non-scaling-stroke' + }, function(item, value) { + return !value + && (item instanceof PathItem + || item instanceof Shape + || item instanceof TextItem); + }], + miterLimit: ['stroke-miterlimit', 'number'], + dashArray: ['stroke-dasharray', 'array'], + dashOffset: ['stroke-dashoffset', 'number'], + fontFamily: ['font-family', 'string'], + fontWeight: ['font-weight', 'string'], + fontSize: ['font-size', 'number'], + justification: ['text-anchor', 'lookup', { + left: 'start', + center: 'middle', + right: 'end' + }], + opacity: ['opacity', 'number'], + blendMode: ['mix-blend-mode', 'string'] +}, function(entry, key) { + var part = Base.capitalize(key), + lookup = entry[2]; + this[key] = { + type: entry[1], + property: key, + attribute: entry[0], + toSVG: lookup, + fromSVG: lookup && Base.each(lookup, function(value, name) { + this[value] = name; + }, {}), + exportFilter: entry[3], + get: 'get' + part, + set: 'set' + part + }; +}, {}); + +var SVGNamespaces = { + href: 'http://www.w3.org/1999/xlink', + xlink: 'http://www.w3.org/2000/xmlns' +}; + +new function() { + var formatter; + + function setAttributes(node, attrs) { + for (var key in attrs) { + var val = attrs[key], + namespace = SVGNamespaces[key]; + if (typeof val === 'number') + val = formatter.number(val); + if (namespace) { + node.setAttributeNS(namespace, key, val); + } else { + node.setAttribute(key, val); + } + } + return node; + } + + function createElement(tag, attrs) { + return setAttributes( + document.createElementNS('http://www.w3.org/2000/svg', tag), attrs); + } + + function getTransform(matrix, coordinates, center) { + var attrs = new Base(), + trans = matrix.getTranslation(); + if (coordinates) { + matrix = matrix.shiftless(); + var point = matrix._inverseTransform(trans); + attrs[center ? 'cx' : 'x'] = point.x; + attrs[center ? 'cy' : 'y'] = point.y; + trans = null; + } + if (!matrix.isIdentity()) { + var decomposed = matrix.decompose(); + if (decomposed && !decomposed.shearing) { + var parts = [], + angle = decomposed.rotation, + scale = decomposed.scaling; + if (trans && !trans.isZero()) + parts.push('translate(' + formatter.point(trans) + ')'); + if (!Numerical.isZero(scale.x - 1) + || !Numerical.isZero(scale.y - 1)) + parts.push('scale(' + formatter.point(scale) +')'); + if (angle) + parts.push('rotate(' + formatter.number(angle) + ')'); + attrs.transform = parts.join(' '); + } else { + attrs.transform = 'matrix(' + matrix.getValues().join(',') + ')'; + } + } + return attrs; + } + + function exportGroup(item, options) { + var attrs = getTransform(item._matrix), + children = item._children; + var node = createElement('g', attrs); + for (var i = 0, l = children.length; i < l; i++) { + var child = children[i]; + var childNode = exportSVG(child, options); + if (childNode) { + if (child.isClipMask()) { + var clip = createElement('clipPath'); + clip.appendChild(childNode); + setDefinition(child, clip, 'clip'); + setAttributes(node, { + 'clip-path': 'url(#' + clip.id + ')' + }); + } else { + node.appendChild(childNode); + } + } + } + return node; + } + + function exportRaster(item) { + var attrs = getTransform(item._matrix, true), + size = item.getSize(); + attrs.x -= size.width / 2; + attrs.y -= size.height / 2; + attrs.width = size.width; + attrs.height = size.height; + attrs.href = item.toDataURL(); + return createElement('image', attrs); + } + + function exportPath(item, options) { + if (options.matchShapes) { + var shape = item.toShape(false); + if (shape) + return exportShape(shape, options); + } + var segments = item._segments, + type, + attrs = getTransform(item._matrix); + if (segments.length === 0) + return null; + if (item.isPolygon()) { + if (segments.length >= 3) { + type = item._closed ? 'polygon' : 'polyline'; + var parts = []; + for(i = 0, l = segments.length; i < l; i++) + parts.push(formatter.point(segments[i]._point)); + attrs.points = parts.join(' '); + } else { + type = 'line'; + var first = segments[0]._point, + last = segments[segments.length - 1]._point; + attrs.set({ + x1: first.x, + y1: first.y, + x2: last.x, + y2: last.y + }); + } + } else { + type = 'path'; + attrs.d = item.getPathData(null, options.precision); + } + return createElement(type, attrs); + } + + function exportShape(item) { + var type = item._type, + radius = item._radius, + attrs = getTransform(item._matrix, true, type !== 'rectangle'); + if (type === 'rectangle') { + type = 'rect'; + var size = item._size, + width = size.width, + height = size.height; + attrs.x -= width / 2; + attrs.y -= height / 2; + attrs.width = width; + attrs.height = height; + if (radius.isZero()) + radius = null; + } + if (radius) { + if (type === 'circle') { + attrs.r = radius; + } else { + attrs.rx = radius.width; + attrs.ry = radius.height; + } + } + return createElement(type, attrs); + } + + function exportCompoundPath(item, options) { + var attrs = getTransform(item._matrix); + var data = item.getPathData(null, options.precision); + if (data) + attrs.d = data; + return createElement('path', attrs); + } + + function exportPlacedSymbol(item, options) { + var attrs = getTransform(item._matrix, true), + symbol = item.getSymbol(), + symbolNode = getDefinition(symbol, 'symbol'), + definition = symbol.getDefinition(), + bounds = definition.getBounds(); + if (!symbolNode) { + symbolNode = createElement('symbol', { + viewBox: formatter.rectangle(bounds) + }); + symbolNode.appendChild(exportSVG(definition, options)); + setDefinition(symbol, symbolNode, 'symbol'); + } + attrs.href = '#' + symbolNode.id; + attrs.x += bounds.x; + attrs.y += bounds.y; + attrs.width = formatter.number(bounds.width); + attrs.height = formatter.number(bounds.height); + attrs.overflow = 'visible'; + return createElement('use', attrs); + } + + function exportGradient(color) { + var gradientNode = getDefinition(color, 'color'); + if (!gradientNode) { + var gradient = color.getGradient(), + radial = gradient._radial, + origin = color.getOrigin().transform(), + destination = color.getDestination().transform(), + attrs; + if (radial) { + attrs = { + cx: origin.x, + cy: origin.y, + r: origin.getDistance(destination) + }; + var highlight = color.getHighlight(); + if (highlight) { + highlight = highlight.transform(); + attrs.fx = highlight.x; + attrs.fy = highlight.y; + } + } else { + attrs = { + x1: origin.x, + y1: origin.y, + x2: destination.x, + y2: destination.y + }; + } + attrs.gradientUnits = 'userSpaceOnUse'; + gradientNode = createElement( + (radial ? 'radial' : 'linear') + 'Gradient', attrs); + var stops = gradient._stops; + for (var i = 0, l = stops.length; i < l; i++) { + var stop = stops[i], + stopColor = stop._color, + alpha = stopColor.getAlpha(); + attrs = { + offset: stop._rampPoint, + 'stop-color': stopColor.toCSS(true) + }; + if (alpha < 1) + attrs['stop-opacity'] = alpha; + gradientNode.appendChild(createElement('stop', attrs)); + } + setDefinition(color, gradientNode, 'color'); + } + return 'url(#' + gradientNode.id + ')'; + } + + function exportText(item) { + var node = createElement('text', getTransform(item._matrix, true)); + node.textContent = item._content; + return node; + } + + var exporters = { + Group: exportGroup, + Layer: exportGroup, + Raster: exportRaster, + Path: exportPath, + Shape: exportShape, + CompoundPath: exportCompoundPath, + PlacedSymbol: exportPlacedSymbol, + PointText: exportText + }; + + function applyStyle(item, node, isRoot) { + var attrs = {}, + parent = !isRoot && item.getParent(); + + if (item._name != null) + attrs.id = item._name; + + Base.each(SVGStyles, function(entry) { + var get = entry.get, + type = entry.type, + value = item[get](); + if (entry.exportFilter + ? entry.exportFilter(item, value) + : !parent || !Base.equals(parent[get](), value)) { + if (type === 'color' && value != null) { + var alpha = value.getAlpha(); + if (alpha < 1) + attrs[entry.attribute + '-opacity'] = alpha; + } + attrs[entry.attribute] = value == null + ? 'none' + : type === 'number' + ? formatter.number(value) + : type === 'color' + ? value.gradient + ? exportGradient(value, item) + : value.toCSS(true) + : type === 'array' + ? value.join(',') + : type === 'lookup' + ? entry.toSVG[value] + : value; + } + }); + + if (attrs.opacity === 1) + delete attrs.opacity; + + if (!item._visible) + attrs.visibility = 'hidden'; + + return setAttributes(node, attrs); + } + + var definitions; + function getDefinition(item, type) { + if (!definitions) + definitions = { ids: {}, svgs: {} }; + return item && definitions.svgs[type + '-' + item._id]; + } + + function setDefinition(item, node, type) { + if (!definitions) + getDefinition(); + var id = definitions.ids[type] = (definitions.ids[type] || 0) + 1; + node.id = type + '-' + id; + definitions.svgs[type + '-' + item._id] = node; + } + + function exportDefinitions(node, options) { + var svg = node, + defs = null; + if (definitions) { + svg = node.nodeName.toLowerCase() === 'svg' && node; + for (var i in definitions.svgs) { + if (!defs) { + if (!svg) { + svg = createElement('svg'); + svg.appendChild(node); + } + defs = svg.insertBefore(createElement('defs'), + svg.firstChild); + } + defs.appendChild(definitions.svgs[i]); + } + definitions = null; + } + return options.asString + ? new XMLSerializer().serializeToString(svg) + : svg; + } + + function exportSVG(item, options, isRoot) { + var exporter = exporters[item._class], + node = exporter && exporter(item, options); + if (node) { + var onExport = options.onExport; + if (onExport) + node = onExport(item, node, options) || node; + var data = JSON.stringify(item._data); + if (data && data !== '{}' && data !== 'null') + node.setAttribute('data-paper-data', data); + } + return node && applyStyle(item, node, isRoot); + } + + function setOptions(options) { + if (!options) + options = {}; + formatter = new Formatter(options.precision); + return options; + } + + Item.inject({ + exportSVG: function(options) { + options = setOptions(options); + return exportDefinitions(exportSVG(this, options, true), options); + } + }); + + Project.inject({ + exportSVG: function(options) { + options = setOptions(options); + var layers = this.layers, + view = this.getView(), + size = view.getViewSize(), + node = createElement('svg', { + x: 0, + y: 0, + width: size.width, + height: size.height, + version: '1.1', + xmlns: 'http://www.w3.org/2000/svg', + 'xmlns:xlink': 'http://www.w3.org/1999/xlink' + }), + parent = node, + matrix = view._matrix; + if (!matrix.isIdentity()) + parent = node.appendChild( + createElement('g', getTransform(matrix))); + for (var i = 0, l = layers.length; i < l; i++) + parent.appendChild(exportSVG(layers[i], options, true)); + return exportDefinitions(node, options); + } + }); +}; + +new function() { + + function getValue(node, name, isString, allowNull) { + var namespace = SVGNamespaces[name], + value = namespace + ? node.getAttributeNS(namespace, name) + : node.getAttribute(name); + if (value === 'null') + value = null; + return value == null + ? allowNull + ? null + : isString + ? '' + : 0 + : isString + ? value + : parseFloat(value); + } + + function getPoint(node, x, y, allowNull) { + x = getValue(node, x, false, allowNull); + y = getValue(node, y, false, allowNull); + return allowNull && (x == null || y == null) ? null + : new Point(x, y); + } + + function getSize(node, w, h, allowNull) { + w = getValue(node, w, false, allowNull); + h = getValue(node, h, false, allowNull); + return allowNull && (w == null || h == null) ? null + : new Size(w, h); + } + + function convertValue(value, type, lookup) { + return value === 'none' + ? null + : type === 'number' + ? parseFloat(value) + : type === 'array' + ? value ? value.split(/[\s,]+/g).map(parseFloat) : [] + : type === 'color' + ? getDefinition(value) || value + : type === 'lookup' + ? lookup[value] + : value; + } + + function importGroup(node, type, options, isRoot) { + var nodes = node.childNodes, + isClip = type === 'clippath', + item = new Group(), + project = item._project, + currentStyle = project._currentStyle, + children = []; + if (!isClip) { + item = applyAttributes(item, node, isRoot); + project._currentStyle = item._style.clone(); + } + for (var i = 0, l = nodes.length; i < l; i++) { + var childNode = nodes[i], + child; + if (childNode.nodeType === 1 + && (child = importSVG(childNode, options, false)) + && !(child instanceof Symbol)) + children.push(child); + } + item.addChildren(children); + if (isClip) + item = applyAttributes(item.reduce(), node, isRoot); + project._currentStyle = currentStyle; + if (isClip || type === 'defs') { + item.remove(); + item = null; + } + return item; + } + + function importPoly(node, type) { + var coords = node.getAttribute('points').match( + /[+-]?(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?/g), + points = []; + for (var i = 0, l = coords.length; i < l; i += 2) + points.push(new Point( + parseFloat(coords[i]), + parseFloat(coords[i + 1]))); + var path = new Path(points); + if (type === 'polygon') + path.closePath(); + return path; + } + + function importPath(node) { + var data = node.getAttribute('d'), + param = { pathData: data }; + return (data.match(/m/gi) || []).length > 1 || /z\S+/i.test(data) + ? new CompoundPath(param) + : new Path(param); + } + + function importGradient(node, type) { + var id = (getValue(node, 'href', true) || '').substring(1), + isRadial = type === 'radialgradient', + gradient; + if (id) { + gradient = definitions[id].getGradient(); + } else { + var nodes = node.childNodes, + stops = []; + for (var i = 0, l = nodes.length; i < l; i++) { + var child = nodes[i]; + if (child.nodeType === 1) + stops.push(applyAttributes(new GradientStop(), child)); + } + gradient = new Gradient(stops, isRadial); + } + var origin, destination, highlight; + if (isRadial) { + origin = getPoint(node, 'cx', 'cy'); + destination = origin.add(getValue(node, 'r'), 0); + highlight = getPoint(node, 'fx', 'fy', true); + } else { + origin = getPoint(node, 'x1', 'y1'); + destination = getPoint(node, 'x2', 'y2'); + } + applyAttributes( + new Color(gradient, origin, destination, highlight), node); + return null; + } + + var importers = { + '#document': function (node, type, options, isRoot) { + var nodes = node.childNodes; + for (var i = 0, l = nodes.length; i < l; i++) { + var child = nodes[i]; + if (child.nodeType === 1) { + var next = child.nextSibling; + document.body.appendChild(child); + var item = importSVG(child, options, isRoot); + if (next) { + node.insertBefore(child, next); + } else { + node.appendChild(child); + } + return item; + } + } + }, + g: importGroup, + svg: importGroup, + clippath: importGroup, + polygon: importPoly, + polyline: importPoly, + path: importPath, + lineargradient: importGradient, + radialgradient: importGradient, + + image: function (node) { + var raster = new Raster(getValue(node, 'href', true)); + raster.on('load', function() { + var size = getSize(node, 'width', 'height'); + this.setSize(size); + var center = this._matrix._transformPoint( + getPoint(node, 'x', 'y').add(size.divide(2))); + this.translate(center); + }); + return raster; + }, + + symbol: function(node, type, options, isRoot) { + return new Symbol(importGroup(node, type, options, isRoot), true); + }, + + defs: importGroup, + + use: function(node) { + var id = (getValue(node, 'href', true) || '').substring(1), + definition = definitions[id], + point = getPoint(node, 'x', 'y'); + return definition + ? definition instanceof Symbol + ? definition.place(point) + : definition.clone().translate(point) + : null; + }, + + circle: function(node) { + return new Shape.Circle(getPoint(node, 'cx', 'cy'), + getValue(node, 'r')); + }, + + ellipse: function(node) { + return new Shape.Ellipse({ + center: getPoint(node, 'cx', 'cy'), + radius: getSize(node, 'rx', 'ry') + }); + }, + + rect: function(node) { + var point = getPoint(node, 'x', 'y'), + size = getSize(node, 'width', 'height'), + radius = getSize(node, 'rx', 'ry'); + return new Shape.Rectangle(new Rectangle(point, size), radius); + }, + + line: function(node) { + return new Path.Line(getPoint(node, 'x1', 'y1'), + getPoint(node, 'x2', 'y2')); + }, + + text: function(node) { + var text = new PointText(getPoint(node, 'x', 'y') + .add(getPoint(node, 'dx', 'dy'))); + text.setContent(node.textContent.trim() || ''); + return text; + } + }; + + function applyTransform(item, value, name, node) { + var transforms = (node.getAttribute(name) || '').split(/\)\s*/g), + matrix = new Matrix(); + for (var i = 0, l = transforms.length; i < l; i++) { + var transform = transforms[i]; + if (!transform) + break; + var parts = transform.split(/\(\s*/), + command = parts[0], + v = parts[1].split(/[\s,]+/g); + for (var j = 0, m = v.length; j < m; j++) + v[j] = parseFloat(v[j]); + switch (command) { + case 'matrix': + matrix.concatenate( + new Matrix(v[0], v[1], v[2], v[3], v[4], v[5])); + break; + case 'rotate': + matrix.rotate(v[0], v[1], v[2]); + break; + case 'translate': + matrix.translate(v[0], v[1]); + break; + case 'scale': + matrix.scale(v); + break; + case 'skewX': + matrix.skew(v[0], 0); + break; + case 'skewY': + matrix.skew(0, v[0]); + break; + } + } + item.transform(matrix); + } + + function applyOpacity(item, value, name) { + var color = item[name === 'fill-opacity' ? 'getFillColor' + : 'getStrokeColor'](); + if (color) + color.setAlpha(parseFloat(value)); + } + + var attributes = Base.each(SVGStyles, function(entry) { + this[entry.attribute] = function(item, value) { + item[entry.set](convertValue(value, entry.type, entry.fromSVG)); + if (entry.type === 'color' && item instanceof Shape) { + var color = item[entry.get](); + if (color) + color.transform(new Matrix().translate( + item.getPosition(true).negate())); + } + }; + }, { + id: function(item, value) { + definitions[value] = item; + if (item.setName) + item.setName(value); + }, + + 'clip-path': function(item, value) { + var clip = getDefinition(value); + if (clip) { + clip = clip.clone(); + clip.setClipMask(true); + if (item instanceof Group) { + item.insertChild(0, clip); + } else { + return new Group(clip, item); + } + } + }, + + gradientTransform: applyTransform, + transform: applyTransform, + + 'fill-opacity': applyOpacity, + 'stroke-opacity': applyOpacity, + + visibility: function(item, value) { + item.setVisible(value === 'visible'); + }, + + display: function(item, value) { + item.setVisible(value !== null); + }, + + 'stop-color': function(item, value) { + if (item.setColor) + item.setColor(value); + }, + + 'stop-opacity': function(item, value) { + if (item._color) + item._color.setAlpha(parseFloat(value)); + }, + + offset: function(item, value) { + var percentage = value.match(/(.*)%$/); + item.setRampPoint(percentage + ? percentage[1] / 100 + : parseFloat(value)); + }, + + viewBox: function(item, value, name, node, styles) { + var rect = new Rectangle(convertValue(value, 'array')), + size = getSize(node, 'width', 'height', true); + if (item instanceof Group) { + var scale = size ? rect.getSize().divide(size) : 1, + matrix = new Matrix().translate(rect.getPoint()).scale(scale); + item.transform(matrix.inverted()); + } else if (item instanceof Symbol) { + if (size) + rect.setSize(size); + var clip = getAttribute(node, 'overflow', styles) != 'visible', + group = item._definition; + if (clip && !rect.contains(group.getBounds())) { + clip = new Shape.Rectangle(rect).transform(group._matrix); + clip.setClipMask(true); + group.addChild(clip); + } + } + } + }); + + function getAttribute(node, name, styles) { + var attr = node.attributes[name], + value = attr && attr.value; + if (!value) { + var style = Base.camelize(name); + value = node.style[style]; + if (!value && styles.node[style] !== styles.parent[style]) + value = styles.node[style]; + } + return !value + ? undefined + : value === 'none' + ? null + : value; + } + + function applyAttributes(item, node, isRoot) { + var styles = { + node: DomElement.getStyles(node) || {}, + parent: !isRoot && DomElement.getStyles(node.parentNode) || {} + }; + Base.each(attributes, function(apply, name) { + var value = getAttribute(node, name, styles); + if (value !== undefined) + item = Base.pick(apply(item, value, name, node, styles), item); + }); + return item; + } + + var definitions = {}; + function getDefinition(value) { + var match = value && value.match(/\((?:#|)([^)']+)/); + return match && definitions[match[1]]; + } + + function importSVG(source, options, isRoot) { + if (!source) + return null; + if (!options) { + options = {}; + } else if (typeof options === 'function') { + options = { onLoad: options }; + } + + var node = source, + scope = paper; + + function onLoadCallback(svg) { + paper = scope; + var item = importSVG(svg, options, isRoot), + onLoad = options.onLoad, + view = scope.project && scope.getView(); + if (onLoad) + onLoad.call(this, item); + view.update(); + } + + if (isRoot) { + if (typeof source === 'string' && !/^.* 0 ) { + + this.addObject( scene.children[ 0 ] ); + + } + + this.signals.sceneGraphChanged.active = true; + this.signals.sceneGraphChanged.dispatch(); + + }, + + // + + addObject: function ( object ) { + + var scope = this; + + object.traverse( function ( child ) { + + if ( child.geometry !== undefined ) scope.addGeometry( child.geometry ); + if ( child.material !== undefined ) scope.addMaterial( child.material ); + + scope.addHelper( child ); + + } ); + + this.scene.add( object ); + + this.signals.objectAdded.dispatch( object ); + this.signals.sceneGraphChanged.dispatch(); + + }, + + moveObject: function ( object, parent, before ) { + + if ( parent === undefined ) { + + parent = this.scene; + + } + + parent.add( object ); + + // sort children array + + if ( before !== undefined ) { + + var index = parent.children.indexOf( before ); + parent.children.splice( index, 0, object ); + parent.children.pop(); + + } + + this.signals.sceneGraphChanged.dispatch(); + + }, + + nameObject: function ( object, name ) { + + object.name = name; + this.signals.sceneGraphChanged.dispatch(); + + }, + + removeObject: function ( object ) { + + if ( object.parent === undefined ) return; // avoid deleting the camera or scene + + var scope = this; + + object.traverse( function ( child ) { + + scope.removeHelper( child ); + + } ); + + object.parent.remove( object ); + + this.signals.objectRemoved.dispatch( object ); + this.signals.sceneGraphChanged.dispatch(); + + }, + + addGeometry: function ( geometry ) { + + this.geometries[ geometry.uuid ] = geometry; + + }, + + setGeometryName: function ( geometry, name ) { + + geometry.name = name; + this.signals.sceneGraphChanged.dispatch(); + + }, + + addMaterial: function ( material ) { + + this.materials[ material.uuid ] = material; + + }, + + setMaterialName: function ( material, name ) { + + material.name = name; + this.signals.sceneGraphChanged.dispatch(); + + }, + + addTexture: function ( texture ) { + + this.textures[ texture.uuid ] = texture; + + }, + + // + + addHelper: function () { + + var geometry = new THREE.SphereGeometry( 20, 4, 2 ); + var material = new THREE.MeshBasicMaterial( { color: 0xff0000 } ); + + return function ( object ) { + + var helper; + + if ( object instanceof THREE.Camera ) { + + helper = new THREE.CameraHelper( object, 10 ); + + } else if ( object instanceof THREE.PointLight ) { + + helper = new THREE.PointLightHelper( object, 10 ); + + } else if ( object instanceof THREE.DirectionalLight ) { + + helper = new THREE.DirectionalLightHelper( object, 20 ); + + } else if ( object instanceof THREE.SpotLight ) { + + helper = new THREE.SpotLightHelper( object, 10 ); + + } else if ( object instanceof THREE.HemisphereLight ) { + + helper = new THREE.HemisphereLightHelper( object, 10 ); + + } else if ( object instanceof THREE.SkinnedMesh ) { + + helper = new THREE.SkeletonHelper( object ); + + } else { + + // no helper for this object type + return; + + } + + var picker = new THREE.Mesh( geometry, material ); + picker.name = 'picker'; + picker.userData.object = object; + picker.visible = false; + helper.add( picker ); + + this.sceneHelpers.add( helper ); + this.helpers[ object.id ] = helper; + + this.signals.helperAdded.dispatch( helper ); + + }; + + }(), + + removeHelper: function ( object ) { + + if ( this.helpers[ object.id ] !== undefined ) { + + var helper = this.helpers[ object.id ]; + helper.parent.remove( helper ); + + delete this.helpers[ object.id ]; + + this.signals.helperRemoved.dispatch( helper ); + + } + + }, + + // + + addScript: function ( object, script ) { + + if ( this.scripts[ object.uuid ] === undefined ) { + + this.scripts[ object.uuid ] = []; + + } + + this.scripts[ object.uuid ].push( script ); + + this.signals.scriptAdded.dispatch( script ); + + }, + + removeScript: function ( object, script ) { + + if ( this.scripts[ object.uuid ] === undefined ) return; + + var index = this.scripts[ object.uuid ].indexOf( script ); + + if ( index !== - 1 ) { + + this.scripts[ object.uuid ].splice( index, 1 ); + + } + + this.signals.scriptRemoved.dispatch( script ); + + }, + + // + + select: function ( object ) { + + if ( this.selected === object ) return; + + var uuid = null; + + if ( object !== null ) { + + uuid = object.uuid; + + } + + this.selected = object; + + this.config.setKey( 'selected', uuid ); + this.signals.objectSelected.dispatch( object ); + + }, + + selectById: function ( id ) { + + if ( id === this.camera.id ) { + + this.select( this.camera ); + return; + + } + + this.select( this.scene.getObjectById( id, true ) ); + + }, + + selectByUuid: function ( uuid ) { + + var scope = this; + + this.scene.traverse( function ( child ) { + + if ( child.uuid === uuid ) { + + scope.select( child ); + + } + + } ); + + }, + + deselect: function () { + + this.select( null ); + + }, + + focus: function ( object ) { + + this.signals.objectFocused.dispatch( object ); + + }, + + focusById: function ( id ) { + + this.focus( this.scene.getObjectById( id, true ) ); + + }, + + clear: function () { + + this.camera.position.set( 500, 250, 500 ); + this.camera.lookAt( new THREE.Vector3() ); + + var objects = this.scene.children; + + while ( objects.length > 0 ) { + + this.removeObject( objects[ 0 ] ); + + } + + this.geometries = {}; + this.materials = {}; + this.textures = {}; + this.scripts = {}; + + this.deselect(); + + this.signals.editorCleared.dispatch(); + + }, + + // + + fromJSON: function ( json ) { + + var loader = new THREE.ObjectLoader(); + + // backwards + + if ( json.scene === undefined ) { + + var scene = loader.parse( json ); + + this.setScene( scene ); + + return; + + } + + // TODO: Clean this up somehow + + var camera = loader.parse( json.camera ); + + this.camera.position.copy( camera.position ); + this.camera.rotation.copy( camera.rotation ); + this.camera.aspect = camera.aspect; + this.camera.near = camera.near; + this.camera.far = camera.far; + + this.setScene( loader.parse( json.scene ) ); + this.scripts = json.scripts; + + }, + + toJSON: function () { + + return { + + project: { + vr: this.config.getKey( 'project/vr' ) + }, + camera: this.camera.toJSON(), + scene: this.scene.toJSON(), + scripts: this.scripts + + }; + + } + +} diff --git a/doodle_app/ui/Loader.js b/doodle_app/ui/Loader.js new file mode 100755 index 0000000..4b4197e --- /dev/null +++ b/doodle_app/ui/Loader.js @@ -0,0 +1,441 @@ +/** + * @author mrdoob / http://mrdoob.com/ + */ + +var Loader = function ( editor ) { + + var scope = this; + var signals = editor.signals; + + this.loadFile = function ( file ) { + + var filename = file.name; + var extension = filename.split( '.' ).pop().toLowerCase(); + + switch ( extension ) { + + case 'awd': + + var reader = new FileReader(); + reader.addEventListener( 'load', function ( event ) { + + var loader = new THREE.AWDLoader(); + var scene = loader.parse( event.target.result ); + + editor.setScene( scene ); + + }, false ); + reader.readAsArrayBuffer( file ); + + break; + + case 'babylon': + + var reader = new FileReader(); + reader.addEventListener( 'load', function ( event ) { + + var contents = event.target.result; + var json = JSON.parse( contents ); + + var loader = new THREE.BabylonLoader(); + var scene = loader.parse( json ); + + editor.setScene( scene ); + + }, false ); + reader.readAsText( file ); + + break; + + case 'babylonmeshdata': + + var reader = new FileReader(); + reader.addEventListener( 'load', function ( event ) { + + var contents = event.target.result; + var json = JSON.parse( contents ); + + var loader = new THREE.BabylonLoader(); + + var geometry = loader.parseGeometry( json ); + var material = new THREE.MeshPhongMaterial(); + + var mesh = new THREE.Mesh( geometry, material ); + mesh.name = filename; + + editor.addObject( mesh ); + editor.select( mesh ); + + }, false ); + reader.readAsText( file ); + + break; + + case 'ctm': + + var reader = new FileReader(); + reader.addEventListener( 'load', function ( event ) { + + var data = new Uint8Array( event.target.result ); + + var stream = new CTM.Stream( data ); + stream.offset = 0; + + var loader = new THREE.CTMLoader(); + loader.createModel( new CTM.File( stream ), function( geometry ) { + + geometry.sourceType = "ctm"; + geometry.sourceFile = file.name; + + var material = new THREE.MeshPhongMaterial(); + + var mesh = new THREE.Mesh( geometry, material ); + mesh.name = filename; + + editor.addObject( mesh ); + editor.select( mesh ); + + } ); + + }, false ); + reader.readAsArrayBuffer( file ); + + break; + + case 'dae': + + var reader = new FileReader(); + reader.addEventListener( 'load', function ( event ) { + + var contents = event.target.result; + + var parser = new DOMParser(); + var xml = parser.parseFromString( contents, 'text/xml' ); + + var loader = new THREE.ColladaLoader(); + loader.parse( xml, function ( collada ) { + + collada.scene.name = filename; + + editor.addObject( collada.scene ); + editor.select( collada.scene ); + + } ); + + }, false ); + reader.readAsText( file ); + + break; + + case 'js': + case 'json': + + case '3geo': + case '3mat': + case '3obj': + case '3scn': + + var reader = new FileReader(); + reader.addEventListener( 'load', function ( event ) { + + var contents = event.target.result; + + // 2.0 + + if ( contents.indexOf( 'postMessage' ) !== -1 ) { + + var blob = new Blob( [ contents ], { type: 'text/javascript' } ); + var url = URL.createObjectURL( blob ); + + var worker = new Worker( url ); + + worker.onmessage = function ( event ) { + + event.data.metadata = { version: 2 }; + handleJSON( event.data, file, filename ); + + }; + + worker.postMessage( Date.now() ); + + return; + + } + + // >= 3.0 + + var data; + + try { + + data = JSON.parse( contents ); + + } catch ( error ) { + + alert( error ); + return; + + } + + handleJSON( data, file, filename ); + + }, false ); + reader.readAsText( file ); + + break; + + case 'obj': + + var reader = new FileReader(); + reader.addEventListener( 'load', function ( event ) { + + var contents = event.target.result; + + var object = new THREE.OBJLoader().parse( contents ); + object.name = filename; + + editor.addObject( object ); + editor.select( object ); + + }, false ); + reader.readAsText( file ); + + break; + + case 'ply': + + var reader = new FileReader(); + reader.addEventListener( 'load', function ( event ) { + + var contents = event.target.result; + + var geometry = new THREE.PLYLoader().parse( contents ); + geometry.sourceType = "ply"; + geometry.sourceFile = file.name; + + var material = new THREE.MeshPhongMaterial(); + + var mesh = new THREE.Mesh( geometry, material ); + mesh.name = filename; + + editor.addObject( mesh ); + editor.select( mesh ); + + }, false ); + reader.readAsText( file ); + + break; + + case 'stl': + + var reader = new FileReader(); + reader.addEventListener( 'load', function ( event ) { + + var contents = event.target.result; + + var geometry = new THREE.STLLoader().parse( contents ); + geometry.sourceType = "stl"; + geometry.sourceFile = file.name; + + var material = new THREE.MeshPhongMaterial(); + + var mesh = new THREE.Mesh( geometry, material ); + mesh.name = filename; + + editor.addObject( mesh ); + editor.select( mesh ); + + }, false ); + + if ( reader.readAsBinaryString !== undefined ) { + + reader.readAsBinaryString( file ); + + } else { + + reader.readAsArrayBuffer( file ); + + } + + break; + + /* + case 'utf8': + + var reader = new FileReader(); + reader.addEventListener( 'load', function ( event ) { + + var contents = event.target.result; + + var geometry = new THREE.UTF8Loader().parse( contents ); + var material = new THREE.MeshLambertMaterial(); + + var mesh = new THREE.Mesh( geometry, material ); + + editor.addObject( mesh ); + editor.select( mesh ); + + }, false ); + reader.readAsBinaryString( file ); + + break; + */ + + case 'vtk': + + var reader = new FileReader(); + reader.addEventListener( 'load', function ( event ) { + + var contents = event.target.result; + + var geometry = new THREE.VTKLoader().parse( contents ); + geometry.sourceType = "vtk"; + geometry.sourceFile = file.name; + + var material = new THREE.MeshPhongMaterial(); + + var mesh = new THREE.Mesh( geometry, material ); + mesh.name = filename; + + editor.addObject( mesh ); + editor.select( mesh ); + + }, false ); + reader.readAsText( file ); + + break; + + case 'wrl': + + var reader = new FileReader(); + reader.addEventListener( 'load', function ( event ) { + + var contents = event.target.result; + + var result = new THREE.VRMLLoader().parse( contents ); + + editor.setScene( result ); + + }, false ); + reader.readAsText( file ); + + break; + + default: + + alert( 'Unsupported file format (' + extension + ').' ); + + break; + + } + + } + + var handleJSON = function ( data, file, filename ) { + + if ( data.metadata === undefined ) { // 2.0 + + data.metadata = { type: 'Geometry' }; + + } + + if ( data.metadata.type === undefined ) { // 3.0 + + data.metadata.type = 'Geometry'; + + } + + if ( data.metadata.version === undefined ) { + + data.metadata.version = data.metadata.formatVersion; + + } + + if ( data.metadata.type === 'BufferGeometry' ) { + + var loader = new THREE.BufferGeometryLoader(); + var result = loader.parse( data ); + + var mesh = new THREE.Mesh( result ); + + editor.addObject( mesh ); + editor.select( mesh ); + + } else if ( data.metadata.type.toLowerCase() === 'geometry' ) { + + var loader = new THREE.JSONLoader(); + var result = loader.parse( data ); + + var geometry = result.geometry; + var material; + + if ( result.materials !== undefined ) { + + if ( result.materials.length > 1 ) { + + material = new THREE.MeshFaceMaterial( result.materials ); + + } else { + + material = result.materials[ 0 ]; + + } + + } else { + + material = new THREE.MeshPhongMaterial(); + + } + + geometry.sourceType = "ascii"; + geometry.sourceFile = file.name; + + var mesh; + + if ( geometry.animation && geometry.animation.hierarchy ) { + + mesh = new THREE.SkinnedMesh( geometry, material ); + + } else { + + mesh = new THREE.Mesh( geometry, material ); + + } + + mesh.name = filename; + + editor.addObject( mesh ); + editor.select( mesh ); + + } else if ( data.metadata.type.toLowerCase() === 'object' ) { + + var loader = new THREE.ObjectLoader(); + var result = loader.parse( data ); + + if ( result instanceof THREE.Scene ) { + + editor.setScene( result ); + + } else { + + editor.addObject( result ); + editor.select( result ); + + } + + } else if ( data.metadata.type.toLowerCase() === 'scene' ) { + + // DEPRECATED + + var loader = new THREE.SceneLoader(); + loader.parse( data, function ( result ) { + + editor.setScene( result.scene ); + + }, '' ); + + } + + }; + +} diff --git a/doodle_app/ui/Preview.js b/doodle_app/ui/Preview.js new file mode 100755 index 0000000..c39154a --- /dev/null +++ b/doodle_app/ui/Preview.js @@ -0,0 +1,558 @@ +/** + * @author mrdoob / http://mrdoob.com/ + */ + +var Preview = function ( editor ) { + + var signals = editor.signals; + + var container = new UI.Panel(); + container.setId( 'preview' ); + container.setPosition( 'absolute' ); + container.setWidth( '50%' ); + container.setTop( '0px' ); + container.setRight( '0px' ); + container.setBottom( '0px' ); + + var scene = editor.scene; + var sceneHelpers = editor.sceneHelpers; + + var objects = []; + + // helpers + + var grid = new THREE.GridHelper( 200, 10 ); + grid.setColors( 0x444444, 0x888888 ); + sceneHelpers.add( grid ); + + var directionalLight = new THREE.DirectionalLight(0xffffff, 0.5); + directionalLight.position.set(0, 1, 0); + scene.add(directionalLight); + + var light = new THREE.AmbientLight(0x404040); // soft white light + scene.add(light); + + // + + var camera = editor.camera; + camera.position.fromArray( editor.config.getKey( 'camera/position' ) ); + camera.lookAt( new THREE.Vector3().fromArray( editor.config.getKey( 'camera/target' ) ) ); + + // + + var selectionBox = new THREE.BoxHelper(); + selectionBox.material.depthTest = false; + selectionBox.material.transparent = true; + selectionBox.visible = false; + sceneHelpers.add( selectionBox ); + + var transformControls = new THREE.TransformControls( camera, container.dom ); + transformControls.addEventListener( 'change', function () { + + var object = transformControls.object; + + if ( object !== undefined ) { + + if ( editor.helpers[ object.id ] !== undefined ) { + + editor.helpers[ object.id ].update(); + + } + + } + + render(); + + } ); + transformControls.addEventListener( 'mouseDown', function () { + + controls.enabled = false; + + } ); + transformControls.addEventListener( 'mouseUp', function () { + + signals.objectChanged.dispatch( transformControls.object ); + controls.enabled = true; + + } ); + + sceneHelpers.add( transformControls ); + + // fog + + var oldFogType = "None"; + var oldFogColor = 0xaaaaaa; + var oldFogNear = 1; + var oldFogFar = 5000; + var oldFogDensity = 0.00025; + + // object picking + + var raycaster = new THREE.Raycaster(); + var mouse = new THREE.Vector2(); + + // events + + var getIntersects = function ( point, object ) { + + mouse.set( ( point.x * 2 ) - 1, - ( point.y * 2 ) + 1 ); + + raycaster.setFromCamera( mouse, camera ); + + if ( object instanceof Array ) { + + return raycaster.intersectObjects( object ); + + } + + return raycaster.intersectObject( object ); + + }; + + var onDownPosition = new THREE.Vector2(); + var onUpPosition = new THREE.Vector2(); + var onDoubleClickPosition = new THREE.Vector2(); + + var getMousePosition = function ( dom, x, y ) { + + var rect = dom.getBoundingClientRect(); + return [ ( x - rect.left ) / rect.width, ( y - rect.top ) / rect.height ]; + + }; + + var handleClick = function () { + + if ( onDownPosition.distanceTo( onUpPosition ) == 0 ) { + + var intersects = getIntersects( onUpPosition, objects ); + + if ( intersects.length > 0 ) { + + var object = intersects[ 0 ].object; + + if ( object.userData.object !== undefined ) { + + // helper + + editor.select( object.userData.object ); + + } else { + + editor.select( object ); + + } + + } else { + + editor.select( null ); + + } + + render(); + + } + + }; + + var onMouseDown = function ( event ) { + + event.preventDefault(); + + var array = getMousePosition( container.dom, event.clientX, event.clientY ); + onDownPosition.fromArray( array ); + + document.addEventListener( 'mouseup', onMouseUp, false ); + + }; + + var onMouseUp = function ( event ) { + + var array = getMousePosition( container.dom, event.clientX, event.clientY ); + onUpPosition.fromArray( array ); + + handleClick(); + + document.removeEventListener( 'mouseup', onMouseUp, false ); + + }; + + var onTouchStart = function ( event ) { + + var touch = event.changedTouches[ 0 ]; + + var array = getMousePosition( container.dom, touch.clientX, touch.clientY ); + onDownPosition.fromArray( array ); + + document.addEventListener( 'touchend', onTouchEnd, false ); + + }; + + var onTouchEnd = function ( event ) { + + var touch = event.changedTouches[ 0 ]; + + var array = getMousePosition( container.dom, touch.clientX, touch.clientY ); + onUpPosition.fromArray( array ); + + handleClick(); + + document.removeEventListener( 'touchend', onTouchEnd, false ); + + }; + + var onDoubleClick = function ( event ) { + + var array = getMousePosition( container.dom, event.clientX, event.clientY ); + onDoubleClickPosition.fromArray( array ); + + var intersects = getIntersects( onDoubleClickPosition, objects ); + + if ( intersects.length > 0 ) { + + var intersect = intersects[ 0 ]; + + signals.objectFocused.dispatch( intersect.object ); + + } + + }; + + container.dom.addEventListener( 'mousedown', onMouseDown, false ); + container.dom.addEventListener( 'touchstart', onTouchStart, false ); + container.dom.addEventListener( 'dblclick', onDoubleClick, false ); + + // controls need to be added *after* main logic, + // otherwise controls.enabled doesn't work. + + var controls = new THREE.EditorControls( camera, container.dom ); + controls.center.fromArray( editor.config.getKey( 'camera/target' ) ); + controls.addEventListener( 'change', function () { + + transformControls.update(); + signals.cameraChanged.dispatch( camera ); + + } ); + + // signals + + signals.editorCleared.add( function () { + + controls.center.set( 0, 0, 0 ); + render(); + + } ); + + signals.transformModeChanged.add( function ( mode ) { + + transformControls.setMode( mode ); + + } ); + + signals.snapChanged.add( function ( dist ) { + + transformControls.setSnap( dist ); + + } ); + + signals.spaceChanged.add( function ( space ) { + + transformControls.setSpace( space ); + + } ); + + signals.rendererChanged.add( function ( type, antialias ) { + + container.dom.removeChild( renderer.domElement ); + + renderer = createRenderer( type, antialias ); + renderer.setSize( container.dom.offsetWidth, container.dom.offsetHeight ); + + container.dom.appendChild( renderer.domElement ); + + render(); + + } ); + + signals.sceneGraphChanged.add( function () { + + render(); + + } ); + + var saveTimeout; + + signals.cameraChanged.add( function () { + + if ( saveTimeout !== undefined ) { + + clearTimeout( saveTimeout ); + + } + + saveTimeout = setTimeout( function () { + + editor.config.setKey( + 'camera/position', camera.position.toArray(), + 'camera/target', controls.center.toArray() + ); + + }, 1000 ); + + render(); + + } ); + + signals.objectSelected.add( function ( object ) { + + selectionBox.visible = false; + transformControls.detach(); + + if ( object !== null ) { + + if ( object.geometry !== undefined && + object instanceof THREE.Sprite === false ) { + + selectionBox.update( object ); + selectionBox.visible = true; + + } + + transformControls.attach( object ); + + } + + render(); + + } ); + + signals.objectFocused.add( function ( object ) { + + controls.focus( object ); + + } ); + + signals.geometryChanged.add( function ( geometry ) { + + selectionBox.update( editor.selected ); + + render(); + + } ); + + signals.objectAdded.add( function ( object ) { + + var materialsNeedUpdate = false; + + object.traverse( function ( child ) { + + if ( child instanceof THREE.Light ) materialsNeedUpdate = true; + + objects.push( child ); + + } ); + + if ( materialsNeedUpdate === true ) updateMaterials(); + + } ); + + signals.objectChanged.add( function ( object ) { + + transformControls.update(); + + if ( object instanceof THREE.PerspectiveCamera ) { + + object.updateProjectionMatrix(); + + } + + if ( editor.helpers[ object.id ] !== undefined ) { + + editor.helpers[ object.id ].update(); + + } + + render(); + + } ); + + signals.objectRemoved.add( function ( object ) { + + var materialsNeedUpdate = false; + + object.traverse( function ( child ) { + + if ( child instanceof THREE.Light ) materialsNeedUpdate = true; + + objects.splice( objects.indexOf( child ), 1 ); + + } ); + + if ( materialsNeedUpdate === true ) updateMaterials(); + + } ); + + signals.helperAdded.add( function ( object ) { + + objects.push( object.getObjectByName( 'picker' ) ); + + } ); + + signals.helperRemoved.add( function ( object ) { + + objects.splice( objects.indexOf( object.getObjectByName( 'picker' ) ), 1 ); + + } ); + + signals.materialChanged.add( function ( material ) { + + render(); + + } ); + + signals.fogTypeChanged.add( function ( fogType ) { + + if ( fogType !== oldFogType ) { + + if ( fogType === "None" ) { + + scene.fog = null; + + } else if ( fogType === "Fog" ) { + + scene.fog = new THREE.Fog( oldFogColor, oldFogNear, oldFogFar ); + + } else if ( fogType === "FogExp2" ) { + + scene.fog = new THREE.FogExp2( oldFogColor, oldFogDensity ); + + } + + updateMaterials(); + + oldFogType = fogType; + + } + + render(); + + } ); + + signals.fogColorChanged.add( function ( fogColor ) { + + oldFogColor = fogColor; + + updateFog( scene ); + + render(); + + } ); + + signals.fogParametersChanged.add( function ( near, far, density ) { + + oldFogNear = near; + oldFogFar = far; + oldFogDensity = density; + + updateFog( scene ); + + render(); + + } ); + + signals.windowResize.add( function () { + + camera.aspect = container.dom.offsetWidth / container.dom.offsetHeight; + camera.updateProjectionMatrix(); + + renderer.setSize( container.dom.offsetWidth, container.dom.offsetHeight ); + + render(); + + } ); + + signals.showGridChanged.add( function ( showGrid ) { + + grid.visible = showGrid; + render(); + + } ); + + // + + var createRenderer = function ( type, antialias ) { + + if ( type === 'WebGLRenderer' && System.support.webgl === false ) { + + type = 'CanvasRenderer'; + + } + + var renderer = new THREE[ type ]( { antialias: antialias } ); + renderer.setClearColor( clearColor ); + renderer.setPixelRatio( window.devicePixelRatio ); + renderer.autoClear = false; + renderer.autoUpdateScene = false; + + return renderer; + + }; + + var clearColor = 0xaaaaaa; + var renderer = createRenderer( editor.config.getKey( 'project/renderer' ), editor.config.getKey( 'project/renderer/antialias' ) ); + container.dom.appendChild( renderer.domElement ); + + + function updateMaterials() { + + editor.scene.traverse( function ( node ) { + + if ( node.material ) { + + node.material.needsUpdate = true; + + if ( node.material instanceof THREE.MeshFaceMaterial ) { + + for ( var i = 0; i < node.material.materials.length; i ++ ) { + + node.material.materials[ i ].needsUpdate = true; + + } + + } + + } + + } ); + + } + + function updateFog( root ) { + + if ( root.fog ) { + + root.fog.color.setHex( oldFogColor ); + + if ( root.fog.near !== undefined ) root.fog.near = oldFogNear; + if ( root.fog.far !== undefined ) root.fog.far = oldFogFar; + if ( root.fog.density !== undefined ) root.fog.density = oldFogDensity; + + } + + } + + + function render() { + + sceneHelpers.updateMatrixWorld(); + scene.updateMatrixWorld(); + + renderer.clear(); + renderer.render( scene, camera ); + + renderer.render( sceneHelpers, camera ); + + } + + return container; + +} diff --git a/models/sewing_machine.stl b/models/sewing_machine.stl new file mode 100644 index 0000000000000000000000000000000000000000..98e3b27eb01ffaea371f8a50c408cdf5079a4ddc GIT binary patch literal 1473284 zcmb4scYGC96ZV17q$@}-q4z4%b2kA*1VnmGq)3MlIuS@h?;yQPFQF+lkmT;34bq!P zdnpPCNbemH_-6Lp1J7RlzTfZTkJs~iXJ_W@?m08hGjs0di^#qa{RejG9N4vgM0jAW z-d*~1?$WZZ~C4un?85C0X|m^)k*Lj1S_gw1l<2cfPeNu9+WW6rhD(3J4j=1+kb0le{LVm z=+6J5JKuUJ-o)qgUq03hnojp|h@Nf+db+jt$D7(aOIUjvJ<;Jm%yK8vOjGHJlJ?0QqwN3HQe$oD-x{H5$G+FNn{JGqZ;jH>mXyZ0VTI#)#CAtq z9`}A$Dc+5J??YP>;vL;NU(Nqmqj|jv@9(zYn(^=NLtEnO-1m_=-9)=Btx?uKXHRgR z4_Xr9E%|sJQ8+>SV2xqEcMw>3;``OEEeY|4G`{Kc;eGI|TF1|L@8iV6na)^S`uD7O zzN4F{ch2___e71gB{i#nUaP9 zOZcr}^wE}-k6~Yzcz++Lq1P*G|KC@;UU7VtUavgX+W)=}T#0)1v4*y!H12#|;{6-c ztAVf5Yl+9&lG13`=)-;JcdM_`Pg-00_pJ1r(lgQTUt9XOhJNm>q2C&hwWWV+;M3Lb zfHkzG|F?#IKH48gC8hEC2x}*gSfcNc$NKs3SZgbdjxnC9T0_s5uhMsmmXrqnFaKi+ z-iMw$|Nq(&U+0b`sDU$d&x-Z0EQTEg1(zUgRJn7i1?wK`u3(Ra^%a}#B?Jm2njGLFvYm=kN(-W{?&yp4V2 z)(^o#l}AK#YmVsE-O!SR8sMEet>JZS`w#^nx|93NVO zGvu+hB*eFLAIFPSF$y%!CRuW}drvz&Zmi=2qp0>LL{ailrdSo@Qlo5=??X$_E?N>I z1NpepD4TJ=Xcfmt>%D#La=Au3K5(CFe?nv-AFIB}W=tmy_Ms(cm&e)?WdlMo(>h)9 zEPmS9@lii@q`k7lNXG}}5ABa;MLw2vyyQ7Y8tg+$&@PX)B_VcQNwQYcN{>nG5JT zsr?Djn>6MS*1bv^>_bb?E|0aP_dZPRqf+4s_AcLjaQx7bTKf}X7Wp_&sPcb4A6kNT zd8{o7v7FwAXZl1dv+r3|$U4Pd;d>v58MHqkekLC`X>XMGJu59iyFAvGgh)*qUv#`= zJ@UQtQagUI%lg(8#$D}Ch_a-SkM>68XX>463EJhcwj=~&>TBO*ll6UTxA)bVc2D2_ zK(wU&DUDpD!Ktg2E8-4p+qcFCl{Rt6HvwA}I zGm#&Zpk1^i#6;2o<4?Tc58MKw;;{)A{l8m~#?tS^>m3EJhcwnTf7 zG`iB;D>_BR#J`u%w^#bu1m-C1Pl#)@O6rlukZCF=Y6;rqv9=^cKk{*lR$&nzW2yep zg7e?oL2A2moLhcDM^3EJhcwj{(D z(l|qJuqH)0mhieNS!J2y1CfmOCq!-1_#bKXB@LVj+C@u3G$f72v=T2;v}TF3s=KUo zd>|{*{)A{t8bxTepQVhzKC}ewq9rw}FKDIzR=>5Sw6YcU?TT+?x1?AZg%APE#Nb%~k$7>xQ93?d8)c%B+L_VI;-nj9!vExHa z&@NgMVl!zZqnOATizOT_Ulm&C_|UkGXRG}Q5kwldX>SxF+<+3ai8`*u&N=wi# zS`s3be6*&Op4|7&+Yv6&>x$8UURTUj*U)QMOVBQlwIv~9=su1UB5OoDiX|NgC+dC9=uFpSv_B!f zqgfrJ85uM)e&ifPX&j~Jg%Y&OV{J)@ z?S$JIg-0x&W!-tQJH(#Q&hFc6va@S7DrOC46RLg{Od4HDV;O0n1bG5l5~3I*{TdyN zeLEg_5Z&WUc&wkH5S6J87fu=rNdqNWQ`jLZ8g#N(lwBT-mV`*4S#=|gojV>lv(j_N znG|gEOGxP#RLk5op0YvFefQ0?)jJs5c0RC{9rz{We9QKB*u!zooolS_*62q*29b|R zJ|Frjo}u>V)>uLsKTfJ+ylGHC*2=y&B*pa3cEF)gjt`CcSzBA8j6)imN#h1-paf@# zmV{VG8dVw=FnUj_Be$Q}6B5*WUZ&Ss2b?PV?_+yg80YVEa zADR!aCGAg$&*?r^x7#1Il{8R-cF_`5gvrOU(EX;?(01`Eu2VlLHNl?n+c0_`FAv=} zr+&ZR^pKB%o9vJ+lP1^|Zw+(qTr&u_#zwmH8e#j*pM0~@SMdzBKet9}+EHKrILoR< z&niV%JEYa|DfZEQ(T)$zAXr;l5@G}0M{0^AF}|m(B{)O0B*afNs~NQa`qMj~l*XE-Z4aF~ z#_^#U1pCnbg!qJf1UD=oJNtH&mY`jD%YpE?zY-L58eLnr&Z<97}KT zPkOrbNuwqC>H1iP&2~#dFvG+!}A_eYB(J^qij8 zKh^D!O@$WNb$(OXKywb()|P~bCLd!-<7;0`)DoN_S`y+TdR7tizU$C?pBrU|Wcy*E zJvED}Cuz>XKD0j}&XW(yI5NhUakK>Oq9yfosp2Km_$pr7E?&iJHz4yO`*?-f^mKpZ zl}H+`XYDsz?6pJA6$56zI+ zlJ-XxFVaXK_rPjN8Yn@#Xo+wl&FW9uO_T?XGYLr{(JLp|S66Oud~ghAX2F)UKOwG= z#uL(LP8ujdyJ(4KMH*FU|E;Gw@`^XM!-~3E%7M-1LTE3qwUoS@wlM;Z$!+aZ$zW9;eK)vPoVa%;4q z`=C7@M0?%wp|3)JZjGk9@0+IyWpwd9E3JY4Qg@>K`0Mxfj!NrkR%OUXEbYIVq>-b6 z9g;YIu)TSsdIy??xixOleVip9VLl)FDxQ`0=hkRQ8bxV0&8Ah-DwQ2l{d6Du*1)yS zd)C~EwY4R})TFVLGzR$Am6qTP(UK6MbRYF-H+7=bKHn=t78mSpPnxjG@u9gB`_TS` zSVS6SNF&m>KePnxq9xjc^mJpV)G;Q1rFN~hi&t@0+xWVhT_a)@J>8V#qZZlkPkxX= z@Jux4aBHNaJNJ^t)dtFkzKS)pKexu`mtth`To=6=qQ`m{|5(!&^e$E z+wRFdmj?Q{8CBi!_v)*i^xq{1V`P=9*S+;GJ@lgF<+Ez`^!!V#jc4NgX4NWljC?a@ zgIR9VBrnbcXIN)RHM`NY0&?nsrR1Y@mKa$eY`yvY%qd=!#D-P3lXom4Z|oj#qa`7J z;AeI1Ld`sM=Xi&F)wSqY58pZa3tY6yqn=e|(%6#gV$F>7bWwtLj+TTNbUjAiZhFDH zctNs%`Or@{MgN-i_P*<_T;GTBvm%ZDYtMThq)p~U$@G9A=ZUTu6Xy3m`sI$1M>DNA zcgCi2JuAHP=4N%fW&L6@eJA$OC{K*6XRkA_uT1GhiOV0ne>JN&YtPqwNVCE_#96Vn z-FLl5-3Q-!n&ua3&Z9d=2|iu4Bt-w4F>>hK^WJ3pOC|c-)z4@6teW=bY#Xe(2TRg@ zd`}v$2A}tC?o%oeB~yy1XT?{cB|7!8AVyC6f!1xe+9s|(T$SBNR&}0qp)5z}zvt$} z$ci7m@b+Bvg^7}e$*S6?3eU6Bv^i{}CE{wdKMpmyT(d3h544M`1Xqs`3uu3IeR{oS zmYWY<>*_A;kHz_yczA!HC92%LjFykKZ8UR*zI3g2+#l{)mAMx!^Hkn!{<7+=7bU&h zSG7x*%Pl{BxWmSMBgEKk(X#UVZRVRtUzvCnYU5L&D(Bj0x%^t3xgy!uCQ2SosBDW@ zS)}pnK^rYmujtb#dG$#S>txtmFRoXdN%>2a?e05z%33XWpEt-IB|R;3Sf5s#??p-A zv?}(ox_#xL+2d`rB!nyyCCySftk~C?T|Q7_{$Ew>F_{KP(SY|ySg|NMJsHjFVJ0t1 zaId(1w9gkKTW()xp8c&tBJLv8sPsp5yYIbXQmx&Qq_KYOI=B6eYO&(309wcL$%Zxs`Sl z?i}1vJVS4`4IXtL5wr)7%{gE5?|o_yYKd#lL+lcwF-4!#a$V406n)S;YVdOltzXPg z@oE4?xB;2g2c=z?%86H6f_ILVXeH9D3Pzsy3i{_icO5_UlWt)@rqf-hffB9FSLw03 z^WP~lTu%R@=Ki@~n7C7YE8oMBp}Q-V?4#&2W9hw`TPXUV1ot*t65_$7;qq>5Zfnr+ zbgn%(Jn?gTb9hG?^U)3)cLCv&XT#;hr8%vq7gC!j!5!t^gQ1g$%SVgySu5AHF>$9> z3an(`Pu)_6<~m@bKOt_-A1)jA%WEwe)XGE&+C@u3RJ;`_-(`=mHs>wm#eG+4>1X!n zTk~Z?)Oh>m?a%B3n-|JRgZJRM+mZ76KYgsFqYHXbg8LCI330JRl#F_v-TLNZBN6u< zY8**k)z0;1fNu|0D;Xulq@T@UJao|xS{Qf6p8epi{&e>pYsT`hp zlnqeAYw1+ozJ|^p+LDS41BSU{Ns(D|-bVxdtT?WGcvg*vC=LB?@ha5jG1U_bQZ{%H zV3ydj(3LqcO7KqO_qFNUi}c@|d1GY6wKV3+TZ^1Ms3phier|XFWro$a?H{%;5;+(} zh(39uW#1dptiSk2*FMLqP+N#2*`npmpd@pnXNl>O1XQxiF3%wMzCKSife*P|hzW!l zZqC~l)cW36`aYaEh^r4*r4Vt18LnK73p)8vLlY%zH`S{w24e=_3>{09&o2*?t4|lQ zju%~NVvKUl1ZF5istd#9{kny%xwBT90wfL7RJhSOi8w23NNrb4L?38Lhzs{3<(=1ktdQ?pCSn{! zyQNc9vd7h1*wHS}2Rj~LRZ zPjQzuP@=W@Dm_+_!KBC#;ftbrNAb?lW7JSSl1QT&Me4#OOK#J)^i>pbBx>PSVTDBvg+(V3dj0x&4$o~uuPDLjj2K0TtrSIT4{^s`Jrj!h1%+UaOQmXD7z<= zGAG7bt<6{Qn+<$3z!%&9pzJ*4b#~7L%FZak7>t&LI7tW~=uIEb_k;lO9iRrUFW2vv0Xh~&VzsYH1z7j zt5BQAbOM4Rb-KUO1g)n?jgib3Q9T@~-LajsL7oQzL7WXx(jCwwS`y+{iqsK7NkN+_ zQe))gXjf@@27@Ct`lHh#lnq+mkU_ze4N!u1U6#a;iz20!y`MGVSY8+E84W2(oPk+_7(Hq1su^dc>N3KW zKQQBIN& z@-c!mO8rNU(pT}G_eDD=mk=(YjFZ_fM{xweDB;%NxI5a%CQzcssI6kjPGWaCSLF1J zyPVpEmN4UBCKBQ{G00}?a(lWFgG5PRLX&af9SvrXh`WS%OziGb-@KmFeOtL=30{TT zLUbSo`E*e}&-UeQOqBTchrtZe9ZNV5p7i4%`ffQ7;`l?{J?+OoSb~vSkJYnc1n}+J zb*?-JZ_U85dgnfr@vl6HnNyF|tb9nu!)w>~)|`B&$848Z4Cg`R!-tj}4V36HuUDAfZ=|IM)VjGY(R< z4t?MZ>8u(d*zAWrnKpY1poR?bXsc$gH zK}(dKSGSW@YEd?r^u~)>=JJDL_G$YU`S+QnwmTdAG_9SC=oTQS7kKB&IG8`s5}lx% z-A+ze7$ApETb77<>G;s%c80}=rI%Ja<`N<9&TJ=tS{xwT1TRZO3FZv6B*b3II43Db z@g77CJ?4FfS%PY0q%q2;ff7CDeW$h69^@QV-!DgT1mHc$^`w9M=tdfU{zs0|K2ZBZ zEGgm3IG6$S_}?0%DMwxOF)uw6yo%Sc)>f;Xxxrt4^($W0xF_5i91|ar#-pqupP_`u zT+K#pwLcgkkMxV}`YMj?I99V_j&pLTo8zzqcdZ^PADnBa`Nej)TLZ`H>9R(iSd|TY z_u*s!jOTi+X63^SuGp@hF2{2mtJsbjIy$pN`@^xCRaaUicPO^=+SMAo;`CUrD~{mG z2d~7&J`G+=TB66Ot=8_3wAzo*dF%oFFy_oc#cI)Ct<$P^ss zWEr$1#8N_*O=kueSDGs*pAvf7NW;1swYm#7ZkGSeQbC58OQd^S*Ck9 zwlmA%_w`xAJ^JssH&OD(PxAy-dho>IA6kOE4f&PI22U!U4H`<>z$F2$##zEsEuEqA zhot;bzV_Lm3zTtCg0pg265Z)O?oG*OwxRpL`C^W8XB@td2HEnMd><&m`#?)Vlq>PQ ze3db!HS|n~g?49)GWPMZv#lvrU)tU;O53wfWRfNGKBZ?>zry!&%Ggxa&{Dw`N-!s) zB|2f6XQ(VVs*)8H`^=R&nXA>>R!9C6ea&_=uj|Ez%3=pTvtA~9=3;l8`*h6`{n0ND z(+-kpijB3tDxcg!yQ>bDv1^9(l5g)_vXL7KvH12N`DRUw_35)$CQ5K7Xi11ybRYFc zRq_PWePBlBs~T;qWAJ_8o24EL-N&o_pLy=keYhmBO3)HjAZtg+)HAnRAC0QvV%x}y zH#aV0SFIiE^o{7uME(d_yUh+uT&!lI1ar8Xr7kW@8p*az{F1C$N`ap|Pc1WWcPUV*RA5Z(p zK20}UU)4Hhq6Gcn4Cxn#75mE9jaFF6wqw``BK z${kK`p#=Tm45?0^J5;v1n@qlb(bdE!ig#Y=yJGgjzY^uG^l`L5hX347&RUyX9&6Rv zLHCxWTP$R z32n z!ihL5v_!vZd{#}Ce^5?F<~W#$lI@!V?dUAO%Zi6e+K3scLQnTm?s+-+_~QeKC_!w9 zmV_w0pq)H3D?oNFnQ|9u)ElO-=uyhl8uh7M`+(5v1wyYJ(@~|^daQh$CXJE*fkm|szDkc3W?*D#`e9Km zYDHz)5jZJ4)3(j$*Wo;}5vK#(&^;?T@e0W7eh`GDU`Igu-?7(a0OIx*jVZNu=?o zPXi?!KUiDG5^YI{zld$eFAgx;)mHpmBX7j&T3fM+DijmPE(|aNiP58k<6!2+hYe=* zh~b4eO11F4AH{jb#~gK4im>j3JV7z~c1L!2`WHOnsuZQ6TKMXapPlX-?oA=~QI6Vw zvz%d5jzZReGvRFTQMC&O=Pn_VQ;w?iqMY$Xn)yyv(-L2fGIZwrz(3-s`q8#qfU&pu zJ1@=z=Z?OG_=+kl9cu*`MQ6Nm&FYk@uozrnK}%{6_Vhbzp!c0-EIK}BuO3T`h1qtJ zAID*d-gh`wd$0ka@aVCrJlzO|BZEMc=|ks+!tE6a=^x3M($k5MK1vwr|6X>shmk&7 z5~BSdL*>iwYndA=*0qo|F!tf~{Oz_^Hu3}^{&!<2^_{;oTc`TMLJ9H#v?Rm}LgBG5 zT3G>KRI?D#BeP(1R{3;8*)EQ`TJz_F3Hm@w^y~iT)ntK(<>Zmgk6l<4wRde**tgtnKA*TQb#=Mpk8-l*lq)+? zg6P$aMN6!2C%X*^kjY16h{vmnM=88}oU)7?Sr#CKe2x$@ZP534mvfQ6it`6rQaNgz zAKv8*$=Qd`l;BupwL_Gnw)o*)^nv3Kx%Rvt-sMcs*^+Co=tF7rrtCb@5AWhtsI4#q zBY=PW&aiN_MEt4!ebD&Z5AUK~)K+nq(Q6IA{-FO=+MkN;tTDw8@3I6lfF3I!jL5eA z2ZqCJpwW`@!TF=L-}w^lL!&;e{oy_cg}X4Ez7NK5I9AV!Yp;a#U41o{=$YVH`S7s` z7lzYMmvI}8)jLNGjiXqiF&vIrTL{K*+x;+{UL}m-aIDsDPtw@thv8VF{o$Ckg*ZX0 zeX1XZ(<@vfGDK>`wn<~>e_%L$6>9UCIwpk3ekVl6yB1LxqBA{KII#%r^HZ||j3Qs9 z+=UX}+l=9u38N(;ej~PB>3KP0eC7iVKi6mp@s(Sn3o-f{56T%?avyZ~xyFVZ;YMZo z-C#z~@ljh6q6Af=+O*l>`QIPaT+9m*(yGQ~>>9OWovt<2;i%$uVa9gP!;v*ilpv>a zm`WD+!*dKRah!*D`)h&rRpUb4DwzeSUn>dGDM9@o_q4uw=gPw=z7|`&>na(}c*xt1pB46Cy+8g-8z(Ae{ps)R%T> zt)S6_`cQ(X4=vHj8bV}6SGDncLWm6UC*vKBUVK=~P#Eq3p{1-ZTY0h*>O%?QQnVz* zH#Pgp8*!Dao>}I*kmae*i`mn~Vyn(1k+dhVs6Dr54jJ9(A6tmTu6^asl9jEIbLUzp zL1c*-mGb$Y{biAYBh14KmsohWeItsIJt3;LO_qfIgoylffDAOonh~G=XrTn{q9v*b zKkp~cuAS*gvpCSfqWbwD>SHWgb78boPZr`Sq1VB^XL?F@DCuBPEy3r8Pnv#%)ge?~ zX)R<(*j86X7%Qo}l8V~Xs%@5g-yEcS+t4gjPL2@r)0$gNlpwO?`}k0Gj!GFOPh5Lt zwaOA;pOy8CFl<=Q3djNdpYvbb?bi4 zs?I8TZx?F1-R~5!W4@jwH^gv{e%Q12vh+9Ct?F5;S|~w(I71=kb;}^Leb-!W4qM~G zyNH%MG|p~kt$Rk+>bZ-2T&PSf&Em3VLX9oFlVGH>#q)R;F zPrPbOcZGfL?O`nXSJezMU|b7X=HSjIKNvVj+GCt;%J1duVRVzfn$YBdJ)PP?}v98 z6(RoAmXropg#YrxyEqfn{(!H}{0H9EK2Sqt1IAYu{O~SI5V7j9^1-MtFX7!P#Xe*l ze~n<@DFT(Fj*!NU73#M#D8YQC$7)t#)Lq&)ZJVd))2XgXDrU~@)Q^(QmN=)-sJ=@b ztR~5}d48b|7D}*2iugeYgSt!Qnr`;Q8pm9fRMh6kP^Zxhb;?G3M;$EB*FSsieEh4^ zkJ1uk@#v4vKvH+<*7jIWVd^g7RcO~8+n-nHE1NW1;rU@}23KsyY=D-iA4LejoOHhC zSV91p=@9{FM6TWkvxzT;yU%5?L|?`404)jOV=VvT2B@JCxq5>>R^;LadX;E4p|#bz zVy;Ha%f$`!dSz~aW3@kg?9S29Se+$$COB3;!f8hh^y3D4M=>|RvD)X%CXV=V1D0ri zIA(1XOH4m*prZkE1CBn3`U!(0@nuoRk`Ps>QdDk63!`|A?Yg$)RDsclTjMoVqxx-VVccH6L)VrZTfSxpidV|87RJ~2tGoCIUWM91JWEP1_l;~}91t~ijm)tdtEy@SSJmA7!&kX8vQy;_ zIR{?#Pp&{aYx2W}s`cfk>fnO%WsQ?m9YhIo5wt|VSEI-fLTrNHxqtj%{-L7;k29>w z5==OeG$N|vyjmMH5J3NK-d4KfLZBihERP@BF;N=W}zfe}H=3F)H*kv>|YDrbXU@_dCE zR_3%*boJah4};9&)MrKQYq9O*)nR;2X6cY#GDYYNEBTg57D_l9=xR1{5&C|~yUudx zuH9CJX?-;-a%$eFji{E;>(DOpENjW4&bJc=$r^Ih?ox7VxyvR>5FsN^ps!88Gp)Zu!)1q+jrD4GYQ>0<&+bZZ zAK!mNwhLWO&niWFX*DYnE|ZOKYNBNOy!3Xe@O$!N=LvpQ=UtC1YgqqqxuD1)y=$FX zG1ib#o6aHkl-98};j+%1!(NmizD7h&O!%C%8j;3#dltnb@}3fr96Kg=JW5C5U}BreP|gwD)PC zgfW$l&U&n7#W=C;RE7F8v({GcoL9+NKb)x765~W1 ztF_C>a;P6pWQq2HW95Tu$TR(LqF&*QuXsmkoTyOW0n*s*hZFHC)aEh$GK>(J$%u^p zAqqourpL-hIojvr>jfCcQKKeplVdn@0uH}sTze6 z#B*qgeyK;5y9E)#cvNGnt9p*8Z(~wXdq%a*hN|@qr|RI**1{M@)j^aX6GrB(IA;$Z z>hq5u{?TXV59KJ9aP)aS(Tx*XqP20XqK^+Pc>)M6AvW}(7pHFQ!$F3^SJ?=W9jh?I zbNZtx8ecgQ#EfW(&Z>FZ$%%QQtyza|xT>`Siv`;C2CcSo?F>k&^hbVs{@VgFO`&8- zbPk|ssQjVm2rEUxRq8=~khoAERG{g%GR4}<9qG21nO;4&5KX3N7--YB6vt+zNJ4+q zF*(p){ycf78Tj2(3nf@jMoaXyH$r_kuP1pdLVfsru(sgCiH53+`jDlk5+O^J;1fkl zbgDS3M~Wls<+&fahDtK!YK>%M-{I^eXJ=jBjxfi`bXG74}sh>n8b#`zj>f zg>eC~q9yvfRKNDIet#G#kN&Sg#>`5;B4?E}b@p6Kyg;(AdVrWFJP=-NBKL;Uwjx;FI zW5x+?AB@83d?Hnu{#%2Qlg8HyU+pK2{XPwp=rPYk`%|;xs@g?A-0p8zYwsqEN+-!l zqmv(QX9?nKJyx^oNhrJ*p>VzrjgT30>Z@?9Fm-p*80yo|SFuEE<5;2B!-T>OKirO2 z;aKHCM##)$F>BM8@u*97>)}gJ+j;>OW@OCN9N{`` zQ|uGfSJM)X=elN%mZ-Z#U9z0tT=z7lE*V~hb}>uP-`b*1T=z@YJy)p{hZ4*4@$L>6B*X)ebtbtb?YVhjenzhpKF-RBxV2Qqpwb7C~!*c3B_y=n6{$MVmR(k~P zk8nT!!4iEH?>nun_8{-`xqkdZ?^Na=92vB>ViT+}$B%#DRj93e6eBjVkl2K?2Z2Fw zG|(JJkCl%`6tDhC7hp`^xc)u=UIAiLu;WSk72p@Ea$8XqJMU11*sTRdMEa4>w+Yna8R7XwHF1-^~rGQKhJ5n{b1^ zBjw@-ocmbYsT2Wwp~^N@qt1}V%3FtZ{Yq7xf!A=ADoyx3;}5ES(J3UVcn#?vZuF#z z7fP_wjC_aUAXU}s6$v*APH3v@a8A`3wU1C8?zjCn3{{8QNR_)kLc@)pS2Z?Kf{X?I z(b}cz;DX(yj8bJUyH33zV_~c{qpW49dg3~&Kpu!GW&AZ&)f2S@BOJ096-%D`@sA-d z>$%tjMpSi9rm(NFjS@XZZ5|7ehLC>$q9Z(Q2mTJzj;{bOM{$MDp}of(E^O?r;Nb7uf__5@NuY z&E<-z2dtTej_B&Sa~=lS%aQ5%?TjsYN*$%D z@@TbeF865AfiX4-#x3anSTVX=M#-T zAM9&&K0)93@zhE{N#T|0?Pxl~(qI{V_r=8xdQub(p?dqoBMV*J0Ix!A>b^d=tv>m~ z<(O5u6HtN}-pvh04bCKUq-rkvT~3#X=zdR<;vbpM1$q#X)9>hs8*C$PaQtpq0!k3w zqb2&b$p31{`S;4mHLv4c8Xayaqx=En{E?P_g>;aDTqj~lRr@eZFPXB@4^3Xw54_|A_T;8i$Q zSd=w-`*8!7FzVyqDB@V*c1D)V{kQ>V7M*cWL-{yJ8uR{x8)zS>t#TBf{-mttROodj zO<%=08pp~9Yux$|Os%!~Dm_*{d>qGB)90tl_o1=6#=go2YkcKH;V98#)K+hhpYDLC zszR@?;y0zo`fW0%RvJF8=EBr?6>6(@&I~ff4^#7s)2NuQ(s);KPG+gU`C)3kb~Wl;H2|Yx^KC_!|O zzA59VikERYtE!RdE&%ooIK#cD{lZW+vdo41SYuyC8l|_W8kv^(a-U&QRn6ULNTNJ= z@nNJ<@9{dPMyAm{=RwxyikI8Rc&e)1ARifbg*Y`b?E`0pJb}L5MisA@W2rZhBF@Do zus4BEflj^9v#Lzb>S={8P8V5o9DHtW#*&LFkfBk%jd-d+Vy6L-J~9C6W>A%LV|;I8 z4pli(Qk<%sMcQ99xXOu^XjTt1%4&&CjGw5IihKaCYEHG+0b33j1D)Dyd#cus8QH}6 zfvUAAK?Z@ARM)cn6!#gH76BbxQBB8S72&wf(9oxW5z*`+&yO z&RG?#o-_8%+M=h?&cW0j2!;PW^?+wOp>UKSPe5itzkU6wy!^502J44fg(Y(U-H+%H zm)&ms{ZH1iGbxi!P0DVsKUGqmE*?O=iBX+Cllzi3TFLGPN|YedM@w`@_+2F#G4Fv{ za!N&s4C45q?1TyF`*De>lF%Pz=em{Us)ogH^K<%g=QP7rvGGU18HOrFoqJFKnXrKv_!wPOrAw{sNFz{FB@7|$Hy+f#vqUG zw=UDY<$dsp%+<7kOdizGLJ1;ov_yYz`|F(Yf#s3eTF!NKGmzJm|2(^$yw+m5_})YE z(eLwIviG|n*{9cB3nl0eXGp(M+~3_=o`rhP#rB$r=#Os@w(<0;JQf~rBa@-N!INIr z&$ouiskMG_aU5htXo>37^}ARd>JOGVrslVhLG(?N%q|*vS{mbjwO#(i(&{~}9hnEq zm-q8pC_%euiI8RK^j4neC|N7ZpDzC4Vn_|H%HADc$Xmm?mQi+mdh5W@C|U6mX@CS7 zi<^J6n!MJGC_sM+V|Gq2UR8Wvl8pZ7jcmRz%#JOcBqyYPEBl;bjx%rMT5}?4^xKrv zixT8JXo;TH-|4M8KSar5r*hFId!6OSqwp%mrP_zWyZo!hHGVvbnF-p}V};xK zG*vS{9>o&Pop7u;PH)2Ph5dLG=Tye+niZk85Zy>)&42JHeHChd;2-t;cob)0ot^)! zag6xK*M7e@z^hPO<@4{RdF1AeMU3y~6t}SIh$w?2b?hE)OX8V z4ae%~G9Sz`#r<0VmLLbzWA&_jEY-ya_0#2ZT{u?j%EyFVJr#DweQ>S)68cI(9KPRCOP& z6s6sh+z3ucp1@H}OOQcoZN&%g5Fh-F_+ZBKyW)`pBBMiXs>4yFo_Mc}(eG`%6R9;b z=K_IoGK$WOr$(I{bOJCk9uC>94DVhg%cxM;d**pY@^yJ0@;Em~~!yYw`3b zW9ldGYp)J#L=MOZU|plvhN``OMb+9Tq>(E`)n2uPu}G_Ce;Zt_#TnAC2cFs1{QTiY z{g3lFby0ot4A~vy2j-$&RizWZR7tHz-KE4+3!S>CmLSh`^TASw`dV#HL>i^K)pF{) zn%AP;fmGjR_NwZ;nU43d4iOWcJ0ms$CCG%)AARM2P`DMbEYjHaZ3m~OuX|hgq@OmY zKhL!Io}p^`Gw1ZOW?PZQKI#IX1oqs64SdWN~;EYSXU=h(WHL_aLY|F-VjkgG5WzT}oL}Hd`7XcRfrik(nZ6J<^6S zW1%6kU)MLZ2S3VRMm{kD@54cQ&~qu;)sNNeq@79|^9r|&>QM+y1af#7R$X4E4YJ(v4Y>vN{Jg33h6 zmkqm{C_%pCvLuGo*=?<}y2w|(y1KX;vQ%V~Ld;2&*4rXorFT$w7q7irB!j(cs8=qD zxMI7xT6~Hg*0|Vy@`X9jLJo*mp*DS|=t4)U?d^WDbcZ1pN{)P&%x+jdNgl3v)kaJ7 zz1J#h&D`l?t2)~Kf~une-WX1 zH*?_Z82Rg$xxFJ=ESBAiyp#J5hS?L$MRMOK!hU?Aq#qy5J*J!a1!)|glH0`x(H~l( zT1NU<^DX@qm$CAPcw~@OM<&Vf#4~SQe=Lz3(&@J7wdSD0F>+TWBOWEl0nrjM;n(S{ zKZtW)sJb)(86;}o{O+pLySurQWBY``8Ld^LqGYPfUnQUfdu(WlzL`m}y%Kfea!mXr z5qTzRh#1woE8dnl=gE%;S|yi8%38D5C7=WuBw7+8Pw-yrNX_1|NQr?iK8S4c?ljFg z`76!2f(}?27x$9ecD+bI2{K4GAG|@Fa~yHb^}n@9L=K1=4~yh*zVEcF1oOeuX+M!8 zLYm5>8#X4O1i2wvqTlcmyL(OSu6yCa@A)93Fl2gT7AQWLVkINXJ?lf|^?k|c%?N=K z&CeJ!>aoI!{N;N6wNNd=s~E|;xf*xk4*Kyyyb85>ECinr^8b4*jJ7rNLTw%sS0jzf z|G@|KOi)|lcJ9hd_Tz(`)ifXcZ;g3=d=RffZIwBhP0aG+gPb8XAN;ol_oJ@(@j<)_ zwNAuMRlpv?l+KQ_kqH0v1l4XqS$1XWtea(tc zgCh|$q)ATwYCG|$xx}NIWV)Du668^C=Jh+p#GfiQGY&ti=)^?Lwm2p-E8;pFG9;=F z5|0Wd9yK+~v;>qOr$T@9y*{cZ_LRMi9398II&sLhvR+pFL)9z`QG^2?y!MzajIix1)qIhQamQ8mllM|N8UXjWI31SO&b{oxFSC`P&V_773U zsRPTLYOU_qajs<+#`Rq{SKC1K-EOm@jObGJoQkmKYRK-8@6c%xRoOOdu57Eb`3@gM zb~k}4-r*fz7^)UNm#XL4qoa%|pZ@7Z39=%zB*cmlYt6|8VhrPFRSVaw5$A4GEu1il z(buVke=}vR*@rZ~o0-##62?BGKYC+u^&DqNJr?RTti3hFs6(9wWIxEfkde_Zk@j`B zVzWfjmsR(=xY{1o%`mu|ftG~WQLU%7JM&=U4RsojpW#)gO)HVQ86E2nHh!Cu-$F@e z>SmOTJZ*3{11-^a)$V^HLz*@)4%Jk>B7NErnI2>6Wb1Yqs#g?4-KD{`8yJu3s$P+n zVC4=gg^CYG_6%H-10AV#TC7Y4!Q1fvcm4oxknBWUz0( z+-}J{si_CKeZx&_mUYZpK;1Z$G+&*;{=H%aIi`IIzpiC$?pxOG8lPHo&UbKi6p=xe zKAyqmxV$`78uHOy-mywO{n*;ou!BSi`okFt@n&>kS-Dyf<1n#1d_GujWj+{CYq6nv zcgu)D9=t>L{CHUOX68&}gse7$Io3xXcjGtW$vhg<=?5(+0$Xe$f+sKya1YMVd z*2CZ0$}d7Uxp)*ZIyXx_oHmVR3>Yq3Z#ryZCvI2gzhv~r8&Xb+w~<-WubpYtG*pExX_DZ3>VeOGQg`GBc{1 zxqf(zY+2%#_vW4-<;%kV$k^x!HnK)!lS1V0*3H~a8ZzfC7q3MhXi1342lAWw4#&uY z8}oP{+TCQSFkyE(8fJIM(^aOqC~WVaC0!hs|ME$o`S4JTv_Hw~MfQucLQ6s%F5TT+ zJ~u{Qzc4i(HR@Gf>~QBnFX#*la9rAh4ZE3r=Eca^@pa=-f?O6Y2~jdbtoe+%^Z6dr z5|GQH_GRyGr(av|5cArx#nzi$=&!6Utr(nu66CmOiOxEIGSE7^BvO{j(l`;BDKgfV zX_Gl;Qe&UzCv-S?M5J}1b)-xe{5ZiSfo`bFl2}3*u0M4Y2mScYsh;!SJL9@KGRVtW z3pl?-YuK3kgLfMQ$tJB!%Pf=M#iIlnBz70+>)*s6-x7m-SpT#4oRe`avdQvG)mhGg z)0nIM{zs_%JwkC#lra9}zv#)xTaOh&K1!H+onH@<5j~@2{>Cqk6>dijeHGfpvEl~Y zW0~mJgJfo+IVbv18r-#9OOpI+r?}3oine+v3i3(M(^Ua zEYbdO%-R%v=$%v5z+rcqnd&#lycWl5UHK{#j)rEYEYaFHW^L*f(MpW;TtTm8jCs{44d=Q|RonWFB|>%Jpe5+a&*?U%ud38O@7>pjR_ zK-HrkwINh4+ndbAYnkzC4ZdnI)vuU~s`^zQV#4o;377g`(FBwr$JN@3JA0|BHan!L z@!;o;&Pfi3l$oklFxKHee`CCF0UoU<@h2h%U^Wn^9U!o^ZigR6#$ z4{|;66RJQSui4wkP zqs%#)*j?HfV{_f>E(VE=4w;@1U8_13dgIRxs@|?SU}LJ#_saCQ!4-PsqC(sl-Oc=R zc8t+#a>@s<-zl^3LFTJKDwB3Nffp; zQy*tm)FVUnac=#V);d-#%BcKTR}&@3e$kQ;tEej@igq=cQdb7qDDwgDP_MyV8I1FE z3W+*Dw$;TrL!BR#AWKC{LhPijOz7=?#z)kZLH5h2xN-R;;{bJK&>wwGH)RiNLTo={ zC3SvKf_Bl8${%YdyU*6@oWWcc$LGpUp$NykR%_^N$r7DE&cj&ckFx7;TCLBpXf#31o1)JA4W zeH>z`i8Vg;EFhMO5@e}piPqJTv(~j&`DFGB#a&%X>~kV3CO-JbWhgJpa zdiAgxb?zq1wuyIfHRQ6WO(=XsdrQvgCO3vBS}1uMm&`6(WR3jf*C)1{t1apC(hQ}q zw1H z(rDhz;hg)^Jdwx^>2Dm${AQtJG4k(uwc}BO91tzh>CaKU%*nH2WUe*S5>O-X)sJ#N z^=ohbIY%Pv6C$=ucXKhZ)X697xcDG4NVG(K&LJ7C80w6!PDq=Gy-j40FLzyYdZ`0f zai4S1{mjdWsu$StZp-8{(uoZEsr(8XIu7j`Corf5G zU#hNdXwF!}HAC@&m~eVx!i~CTOhopJvpP~rapyZrxoes5u}6L!T}n=zl_3Eo$b``n z{Z@vUaGZ|`GfHLl%V=AV86hJ>79wNDFgYY|GHKthmVlB8s}#d-_~L`M!tKWih0pin z&Mk>GXjaS&LXVY(?=ObX3ZpM60mIg_!Wpt9`g;?^CU*F7XJ$XhShXd^SWp8cdW_nN zNBK@oIsv#41e&y@FY6ReamDW(0ff-~Kzu!T! zL~G+%VFn+{aP@0hf+$0?Nk$y+afz#6%MyJRYAYYU8i0$}vV`Z(yjDLq&2j1PN2#iT zi`VkA(mrskeE4b^4olT`_0wfui(~c9QA6`gmS}Apvo`%bVOm#NeJm9gs*Y zyjIo7rV=#l^v za#<2-i>^0&3<_&ggubOirW93}S{XtcGeMKzwdBGT?ddF!_uGJD`scz2MDfL=& z-p**_?XBJ>awlYvH&gGCA-SI#s@|S6auzSRc`?S@i(fdkaLr7SvEoyp zzcX64ySZ#`j4?6iG+hgKSUh79*5>Lta$F&r5>9+{D8~4bD)fxPN{5MHuIb~f+!`(S z=Qjfn#~9oNK*@B4^n$qyfR^ZQ*HGtYY{%iocN=+ zUb~FCOQSd5Fu1#fmgsA5)cL8_cc?LnIzPx1@ha3NEc$JLm16u*;}7aCp=1Jem+m}1 zYjAf7EfET*&d;GcgN)xphdca3b6LC!wS`zo-KAWw2N~I@yMz+v1A|-aG0swV30blF z-Nf&H=XZ5BU|x$E=d+(@QM}^cOB}xXCNp5dl__;j)cZwwBqV%PZIic3<_!6?ll2RVt%XB`oWsfJN;#3-V<6U zw*~zxx{-UrWv+L!4n*g*-i{h9QG)k`PeF)RpPaFJWUghDBPNX1b7ri&a;-27>eu3v zrhQIq`-dWRjAF#LQG)LVEzx&aGAuVwUWt-hhW=_|XY{7IS3W3vTVA6b<>s72Z?7`j z{1GMl_3nggR z&Ch$??P^}l+*`hR{)>eyzUq@hGUKN8G9@v3^hedfv}4Ry^?S>~pYOI%f_Bl85KrFb zHy^a4?{d&z=)PRJpWM0rg}h2E9vL<=Z~AMrALTdy2&H~)j()DH0oDM}68T7T&O3&< zbE^{fyp5-4myb`pmGehTu#sUS^QOOK)|Y;bLK;a;@3}g>I4iV7zYT9Z#asVLj4V+g zzjwr#URH%h$?Sv^^mn3uYi}hxp3JUyo3a7a1BB@G=M--x(y04melJRJRxV4T{H?Rz zRJUT}Q}ILQ<={L*zg8fy#n zynCF!^N7^1hzr%vk4BB- zk=LC%L*J_0cka+At97Gcl-zssp9GY+ss>PVpg{LB%F0bugJ%b8BqGChadN082yv#= zC~NH;`U~?@V_kIyZ;#|o2mGvvb#Zn2^+5MutxM^9%JB0)yL^o4p3(VjaNmklTX5AG z_QW2xl3ng8JMJu$Tyj}LBa`-thBbI zJe4(o7G4_7TVU;muBtoDH#il6hT;$?m{0G1$&*JD)!U`F55@67i9 zO{1cNuec|?*{=q`5?upee5J=~R@J*6wEp_7tx=XvQ(+dy?g@4|s7_5MwoWu@XJici z+139*1b~*_qdr%ifzchJKF#hGPUOnOX1{acdhXnDM{R`@`S-Qk{k~z!??Bt-t2Db; z8eC^+>~}64ui|&0wbeThr#D#6uYa!JIoBEVJJ&S_s-BYueKE_aOlYpp>q^fA$LgKW zqLuj8uYb;0X-1D@wLj*N#x0+QzKSKCq{z@eZ!)9Qvue&+9Br4Q0ap;XI>?boR}%;UP-S9=uQGuWU0dMF zgdVF|S(!buBz*xhpE+|d5KR8aGlyULpmdz*{aYxiYi5$UB6_-jxy(VuA`{F!EHJ@K%EAoq&ICM zO0dF$J!oRv#RARaTd5`!ddK^4Z7-RB#~XutMOcl%dH{VPHcg;;gEWfNz2oY*BkxB` z^p}D9IUOvc+n@*sz3M7Q4(ed#F8thR&mAmRP3BV3Zsv_*F~*pq)FlH6R#NDSZ!LB}9qTd^o>}4e; zFK(2j$^k~b+Wp|{g{Jh-Kb{ra+-`1?c!AjHs6v5Mvj%%6hSqapE_PKZ$~wyPIX3! z66EA)iGJyQsfamxSTp&>)l3qvLhbV9kH|Mq#!2b;@Dyoe&P!-2CmqZzQG!(iv?Ro% zOYO}b^`d3jpO3pLELaKITziFFT=1^UKAGw>;^Df^W<*G|j2QKsi4v>48TF+_$fxF^4MeC!^P&ur2!TDC58(nJZ?7SIyq!5Zhh-wcY8ab*XX z!FE3BO?oL?&8NQ_i8Ti}gFwF%E`8P;Pa2Q^?r&mk0ezq)!VFiZczd6Zk#BC__l}r8 z${ID}ovb{P&bLF&0V@bX9B4Y#+l(~KY!6(g6L3~&iE3nHihDc1ijn1;2D)k)Bi`Hy zN;@H$UFT$&eYr${Cu`c|cF{Zh9k03*ig|mJMxT9wUY7)_A2>rgGtps+x5IO)8eC5u zk2R7J`?@&wl70oBNUUoJQK9Y>Z)egNw=r2fN?i2|@JDR>;stLQMY)VWh9;m!hjH1R zddbAhb0t;>eFK6o%yd_^^#pDmpSM3Z;pFq zVZ}m-Y?KGb&?$>isW-Z68Cd;r*Go#TDQYf17$Z|pzUiLT>H$uLWq$gCRLcmNJ46P@ zhbE!~YYS+JPQ-tc)fz+ zi7p9LRb2HMF_SR$sH#n5`u>v=8AtP9pKn4wIsK-gwUP;$;0 zBrdo+Js^@Li-<(YEFgIa%kGjCkeri95?GR`q@C%RGk_o<2nZ^fMRHsug9^9mbRT%n z{Ji(M`v=c?sIIEhJv}|$Z+%Yn^k*Ht7>Ov0n(gKPNRtutrxg!YIrNyHwoH$>Put63 zlZ8Cf#4=`eb%VoY%sBee+tEw-4SBo6G#P%D)fx$oohL|MSv)dKlVOXV70%FkcIIx= zU;c+C^Itg}WuiNI+z-=a*rF8{96LFfR^Jk)$>3HvcJ7u~#i<*n$*@K1Fsz;EF?-XR zA5smm}&z zW`7I0?CpF9Kcnw?`y;|CmNoi?Uc%q)!KA&iM#9=FY9~ZZlEN~Y6c)ZR zpanG&J$5vi09_N`SzX$SnV8d9p@3=&U-?)saWv$`q_AWph2@7cIn^~$TTnYewS}&t zq-;MW)!@{QvPuirN`av*7}~BN^&FKH{=H&vR?ks$5aKZXs;!w5YmJz& z#>m0HWUP^}LXWD55U)@bAg>r^CGLIK&`VIiFmo)UO2dW5q-C7=M|Ez|tUM|#{F}&H zhEtpPovInvV@6q@?0nyk7SuIR38DR1yCHBXTY{A_N0PA$0zLS?geelI#?p+|_I*G^ z%B9hd)qRP!;8Q$mC-e^KjLQN?{v2gpp;{^`6Njmmdbj*_i)*P!6p%W2V`ZStnNe0H zs->a@sRxWi_46So>~04Wthz0o+TEjHpIHm3c8978sx738zM-mpR;|)b?M{;%_}tI; zzB&^1HK2-OO1lJWXpRAaO;m#ntbJs04bsqL3?e1@-vWUOEDg~-7^sGkrqEzj(mN%=fYj;YA;rmb4GPv4@k%;|hsA_lCwbyFv zN}TdQRRz@+`kqtmuEBu>>u!;;>h4wRFwLCWotJBO=B(14QB_Op*LhBzvr>}?FV{Ko z=$f*>T*NXaB*a$<)Lag(js`q;5kN5UQ}`a z>exu@SE{(9?szcRq)Ov6$^rq+9TipX^vh=ZXKiZ}0=Q=JwJHNSM zt;H30jO5lorkd+N^sh7PJ~&=dZz=uOa{c2Ccg2XlPhg9_1HiF!2k=quKEbyiG_eMf zmVt^FDpRP>2+`nw9fAegH?#VamVp-3VK9;qKRlWdNPX>MaM_5i29biaNd4v4<;@Xx zu*5^=WJa%A8Cbvhd@$|lt`aSW>s^=jlt{UxJoVB8W=4poE!G9<94;e^%!o2H8QcoJ z>Dpf9$AE8QX<4dGv_uQ4AE>s_^{VLSf$gUX27h}m&Y*WtHJTo}uI{;8TwqS-S@|h} zqF3?<8`qDMXu*BLqaeidIjsV3l#P>CC4q+|%}fjCtbZ zluV_9XhHP@)fVc}c*`63rFpE}@N~36iy+m}v)^jjI^SN!n$R1kx-<)9D;F!vd_N|L z7R-k;r2eAGg#vRU`^eLce>7+jREp+rPLefqtyioGk+T1b3|zStBa^%C4x$C~;S7c7 zGWMw5dt$sCR{EI1m!P84tWF7;>6_bfgwlPg4f@0W=!0kea!{7`_)Bk;)|N7qv^49c1hR4#V%btfT zBSN!}&^xNGrh4*~ND~@*m35zvUDo<1B-286juFBwQ;@nS3cT6N7^Io7M&9 zO4NN!6{le5$##44$dJF7p%h^bj6`ofNjYV=p)2W}o(p_;K!-t9#mFZzA_go^sEJ7F1aH4p2v;Ra@h82G^6qvTykNhVFx_U<~C&3{1!u>~JqmepF_K zp~=)gbzQ|Bb9S|5>OT8M5bm<{QTN}!vabX>RO~( zPM#R7FlVSNcImvaA2%O38rk^->ahm-s9*T@@xe=^s`dJPgdZ&!*W8bLq(=Q)xS9Mo z!(3HGX8nrm%Q(ZXhaCNCz&K`cX3oei553k@E-HQ3hZfYCP|KnYu}8eJO}CP=*y&<^ zREG+Va+IQnhX#95(V<@h(w0(5TiTnaxDPF;4q+r(eMU;rI8urP{b}WfpLq3{pG+~5 z5a~W|FRL~cvP}1yMvmj(IfPJl@OGY^`AufA|Di4E9IO;*4am^|4v@#HFl~t~dMliv zlY=`hUL~a{aZlZCs19il_U0#V?$6<<9}CE1@q>Out+^TWpnJ+zABcrc5TDNI{pi{6TL zChhHff~+mko8=T)qqpL7NsrlsKO0t!oTJNcARZZ}E$L5?x8l!Pdpr8obUI6Fgsu7E zGfv0V=N0#yaLy9emePl5OSlz!JLm3nI@_q&Ym z^mcL#B5kQ7X-j;zqn@O5usWp2jv6(dt_*!93u}M7mui&08n7D08Zt(rIu2>!O;41v zwr4BoM>UF7ZdQ$0JvX(by`)B!BsHr1n1YH=)Y=lNQ5cB`Q@X;H&r!;1u(+rnv-4Gr zy;(iSe8eHstOnAoMlUJiLkq^mNYtN!uI-^B&8$4{rx+`dQ1RmHJon^qY7_IQnh_t_ z+^QTiN&QB>uz<>C&_bdo)o~*7##$ZvIlqHi<>Fr%)|t4DV`y2T1}R>ixv|#D?d{YZ zfL6IsvqHU$dbd$kW>3*k*5HE0%+*dn3-LVz>sL-4r);ygf&)qMN}|dSS`01ASW)%q zxR}6rqD8VkSZ62`s79IkRnLM00yU;4Sbrq_ZRl5A|5CaJRpLzbr1AS`6Th+%N zG4w0cecUG`%c(mrbt=_XTdGu}1vLj#zdF)VRbQ>t98`U!dhNs+&n>Rkq5_55i4X

Vuxs2bj6Ks?=b9Ss=A2lTQ{PW{|+>gTdwoKAq2J9o`D~kt~ z?@O?DeSTHdYhRqNt5k*8%N1VCO;_p!RdKgGdz~8n3-t{4)>~TD=)F#jzQE{`cK0U< z)`6AGKol9Gx00`HG%X)%$4 z7Sw<+67`KL(w;>8q6`um?-4qwvqOtHY2ku9x;M5Lev^I;@MBYP#R zM@rps-~6BZ64uL{`x35sH4a-#rteF5EA-|ub?mM5W8jC0rLF3u6ye_DtXM(XJ0;R$ zWr{SJR_g*q50|kbNsU4aGE5kW&XTn&15G!d_hcf)3%5dVR*lk*v^~X@Mz;Fdj6jap zFM7t4s)iOMoiGwnNbgJu$Se6hUQ(lQEA&Q{iu$RO;`Q$7f}SI!c%cOqFN`Ea)j@vy zQK2$&@dqA*LPCXYe%6C>+?1MfsXA8c`lk!D&R<$u`7MbSW`!N|6AykUcTZo7?CG9Urzgm~+bh2T&8B{7)M3K1?BT=8C=Tqzg zq(*g%816%L2vsA~`f06WYre)48<$dah_7YvK)OH#7OiT^^vnrjbkXcqYtRsTih|`+4bED3&OsuZcoh@aH`rT97X?B8d{$h6R?=S<*UN zH9u~J-l$ShpH!l$-X)qU<@bk%euat`Mxsi?_^Wn*>ZBusnf7bXMw|0HA zJ#hJcy!;|fK|fkhtwY^Uh)JXr9VMk`4Ba6kA%sd1DoFIkkXLicCXYUlSGF(lqh)Z~ zT%nfKjpoQrde;FkOhUX(9t9tNAU};tV`xjb6?&7Z)+3jk{8wZ7NvV~7wES2#mwHP` zk4GK7rndA7c}%+7ShlzRW zl0W`bLcTSou#qEWvdfh18S6!5iav8v)xITF?QYt_KD409W#)K1zP)TjikIkF;YCkb zeyT?AvRfRostzd#^hVDW?d9w|j;e+he!}LiI;<_|vGaUBg`Vi|TjqN$aVu6lP^F@~ zaPl}r8rhS3wYH%J6)&B`(K1+>c>STHc%f#6-g@k4GV{pe$1shIE!rE$FEyFoVHz23 zg=6O)j#V7(q2scJbr{yjSj*C5_ICKI;$i$1-`%k~r0)&2hog}lByCBM$G{rVo6*8! z>N+FQ+qqA4?<@_COmD?B6^>uti_+bz!C$cjRW&_!axh1hIgG#JJ=7|fJ__6y=jDEo zI%xF8(Z`3kLT~3-xeBDAks-0gTWKxJ@#s#U$N4ag47Xyv%sp-vM{@eT#)qv}W5r9y zWe+~DSR-@Jl9_Z~=}tOm(PQ*>R5jMfF8+r`rakyuq{og2uW&06rjfBlt6ciq#r&1? z9b{#@a#LaDj;i^BztZ1xR=il*=BtEOzZ~^^ENNtd{?MXxuwJIePL85<_37BHq?PwX zF+Y0n6^HdJ*7Q-!qE$kqc#R;%tIF7-KD3}_g^{Q;H~oHGe66X~zxZ9%`HSOnZ34A7 z{*_>r%BfA9C&eoxDPB`vo2!05v;|czRKKVSKvkJ-Z}hh2e^p!6akPGg^cH&4+NE|! zgS$%gvc7Gy$I!@*QzeGIx$c30S}r>7}wm78{@wZ^hr;8 z$(Q$3_dWLD8YC)r?mdd-)F2W68t&A#9sQ!Ms)lGgqDxS!J)?dV1!-yO}?aj#HJhxd6YfyRIQM>2Fc6oZi8Yz@2o_nq;dV+P}M+fBP}D%RJ+*21gqBcOopn48W~2SuBYc!{oMMl z&jM8q*Gd|yTm?b>B3hm9+o^tT9q6&!hZeq9XK${bV?OHG+iR`==HCg{g$plu26dL; zp7XO|{t{`t{T0tJ+#w*WvNIf>L0jDCPw!kJAn<&newIYmypbo)8ck#ks=%mnMiPq? zQ}B%Cus8>2D|*NJlIR_@AXA2sNSWx|Ebvx2x?T}kgIl4uOTbwCo(`%B-}D9!H;=XE z5xs*Jq|GoAt*L$^GLUjB#yU-84Q_?rt}3D^G$9UbD-@U?N$++ddIv42++ieQQqL#I z{o_vB*^Bm#TKq~h%~Oc&xz@h8lhOA+T4AH7RPs2#@T8qIu5XmS3*)WQ4vY$I?!Puz zhP*KntzDY)%-^xnpTX9vyBWk5(p3Ey9+XSR2VIVAf`^Ho3b?w4ly}$`tia ztTT1nfjk9*nJ$t>222{NU)z5=Ncw^htrg?->%e#X>xSkFHoPAv(SrFf5>YR0(+4KB zjFru^jWviZB%SVD7$a}C-RJUGt_cF?Qh&rR2XiOsy|uua{HvL@7lOBN4^gd7r(hRh)cwrF0OLG~DyUA61m;N1T(- zln&S8`y=+^CULS`(=tJ{An%2dsA7_*m|cH%ynH(RcS9pXg-xV?!=Ak}RW4IH+{qgy zZ2zoy*?Q6M0mA~SnyHapDY4$a?hER_TRJv?+FP^6K2O;qPh~v)UZGwlL_)*${*C1E zM#3^aAMWWDm zo!>1^I$Vjb9@voyHLVOKMQAatiuZ1P&wA27B9!HPw^0Ap?^&e=M1*Rd>P8;Z&)oF= zO&$Y2xMwJL-g-5yJ~JrCu+AaOM_q1K-|`8X)vl;}Mh=YIEab5=j;7Uz-*urJ5&zy) z9^a4$s)M){<`be@C{@j>a@ef!xZ(cM6a6hG$K$XZxE1E3m8`{Y`7V;4xa_mkEvP!) z8AES3tC%L_p`L(O+dAWqUu6Zd#k1?m;C z?)@s42P2W{yn1`!XVS>Bx3mn73^g*;&glE`uMBKI8!tQ5o@1zLcTx{3?JarJYIRS| z`W)ZGQ&sWIqm%y-Q))xmi^ z_6F{e$I@+M{ir(PR_IN=^nN`O`0bl`nd$5=ezbII|C`ED^Mh<&j6{9BKK&yY7u{1H zy>Z-N)x3=|t4>qRhga~T1}H>7V(v1O=_T`RX=SK`$f_arM!z^?rUa{`8!9u`dt&IK z(|u{xD$^xB>Aj|qPl$_?CI&ms9V+*ZpX5gi#zlpdx-Fcm5PYv)cgp zt<}7O7xPhXs-~ra?+=fY2lCGGqXpxd$Ew@@JaS;+M)KbaEBvS-UY+RZiOD<1dQmAP z5{wkcH=j3>XVRtdqXiW~j6_dGq(Gh^1#;uTTz*sp(K~9PqehM^%j#g^L$ze?S|#MT zFLU|Of=VGqqKYEviBm~WJn|&p3k8z(3&UfZ!{066$ePR}fnYmx$K)((k6OQ%51Q0s;zWR{$3jk{%9CrtO$l^33j z`kC&j@!py9h5E1c@IAFw3LQQ12ziVhcQWck5$7&k>y)TEVkAdNeJ4zTC&oNdY9gk_`Q96v$!>#yy)wAMAR9B<3y;s-@Q2yrVxU4Pev2(W1Cy!lW9kcXz zf>lRWPqjMedz9l*SZ*AIaxL0Dj6zMwC7YM8|90$9^N0XemS*fg$fiZ zY}7&dSxGzc^91W3syn0hf|^VsXh1~oB&gc9wf28Q187O?Q#`ukjVBh@wlNab)u`?q z`)7h>Q{CC{0G$c-03klytZLiVKWSdvQ!Axlx>MWsa%~$Uk;1ZA)r75T=}#vcx`=a6 z<>i_%YBh9E?dm>ffBBI-Ug|rj$rzEupe^b?(YkKGy&V+~^xj0(@VumcIMwjZv($Z} z^+~2Z+t7j<2}Tm)`YTiI{G|JA&NJLlicp6^eTKM<*Js!pA0$}Q>&;WOZLQoC>@-j5 zOkAlp_hW3s8@|<~Uk$rjSl{WZql>e0@2|ale=WoppWpVaA&)wCVH+(K`@e6^-x%S2 zi~4$-pWwnd3G&-sC+$0>nndH346nh9--rqwk6#lU{KiK5);=bW-;bZPbI<=E8ZB$S zilP|^u`ct*FlFNA-XZpgIw_teq%$C~vx!KT=~HT2OuDchuzq~dQ&Q18OG3~5B`W>t z=}KA#T9C!TNc4Qs!(qBl+_&9F?&ugS*par!Ij6~m$PnOw< zx0}mbFUPS zVF9$@(>6vTtuI@=Qp_q%d>Z}u=MvVGOA(=Qf7A`}cuR5yHBNk`lp3$>Scg83eXhsq z2~VTZ!sEv`B0{_sMxyn#@5ZSdtDcqj;8y6pX=`bfqr=Twl;fW3VUY(~c-;MNM2NS- zNc7cLe~Bs&KKCDfcZ$*gK0JR{;*-AVk@94M+Gg_zL*2!mMs6Nij?*5 z5|D#Estin2mZuvEg)rZL=Xkv5LN&~Rap!;9OGV0Cr#R$TG`e%O#GS*GWq#fwA9 zEScN+y6-Z1l(!adN6Umo@2R=Zc|1pABvPY#I=aus9{Z97=rE|ym>&P@vEHAPavT|R zDj6-_wmTIycYN*Bpb<$#%`aoOC*5as=^2J5V{A3=XPeh^9`BNi?$%rUQ^BrC9t}Pk z;}c*(701+lT92$8SQnyhR!JTGNNkn-Wt?Kwatg0iFny9@)oS-*HmV%aZNC!T_GP+) zezYKYhLMEmpXaWfixkM7XFYz@kPaV@QXE-tdi?Fsi|n`W6Q%b`Ha{NGPN^qU zU$y+5EerRFRD+&#?C0c>d(;gdT5#?di4@3(rvld4c=^dUSN*6b^?&1p(w5$?RKbgC z3-!AH`AA^Ks(3m4iDKqt}w9QWiJd52l&x~`W5D*iXtgqeM#{O zOk8N_SLhM7&QZV8mSQ#Pf1$iGP4|YfcjG5Mw4gGDS{A8Mq%FNd+S2bykCRa;LY--Q zvctoT_=JhAV+Y#Hc1eyJg%<72+L9hS&(2?hwxlh%73&OIHF8vg(d1DxOpRiT-in{@ zF%tEFAPr!(t1Y3{qsRX@2fxpYR0E}v>A0AKl_KrUVkCJ;*a|AE87#oFJ4{AWB z$FV}Akt@QL+3S1vO#gIf|aVF2=9%3{_8F zi^-#Z&y!J$`B@Dts9#|ux(g?bZ2X#}=yXX#l&YpxF5ZuJ4NF+8k!jV)(Uw?;YrZ5Y zI&11+t*R-_3Kb~KM?GsuTe8E}jB+eK(yT4%Pw=H0#r?>l{zHw@GvUu)kDXa@KeCfy zY80P+I)^@ESdHQ_y#<3jNEcNanbweSEA-|ut^c62y=|Bp#d?zV=5LW6J048XT?m#app+bvWp*QtnrMjB8Vw`p9&LdSN({cHJj+I-kt6?O12AuePAUm;x6ASfJcdy)0 zj@K?A6^I<65H(hA58SvPZ*7byX!N;5Qj+hGbtKYc{+0pzY`k^LGshqrxvt7valO{` z=uPV;j!=$@%`J0QuwvPyCjBvc1A~5yw{B1R-q5KlQoWXQaJ?4u3Gwb@8OVGt-nw?J zi>mPInP6N~3(t4tNZ{l*@mBNWzZjnf-xaer*K0AK5KFu74LqP(o!T_kj~0w;eja~c z9~M|b>iLcA)eJI|pCEX}DX;S}*QGY0HPy5p$Lf3fp|LI%Sx)>kh4_)4ynf!DU|rl( zQa$77xcs!0;jHlTx+0|agoyg4cwi~5ef|0LJ%j7RncxhC_;##X^J9rnX7xO%&d+4$5fqj=00ziBz7?W_|vB9jD#V~P>AyvOW5|Tc&k0pJ6IpUx&bR}^LM6N4)3!! zZ!x>U?0Bol2#5F4mXvWx!SNrZTD&?BBhiy^gZ2LPUnE#LiQd7uSS!F90(G-`YrQ{- zJZhJT4WOkU5ke)3Jhhk*!bo)Q6M573l&Tpso8Gh01NCpz#fi+^k;-I^RkYeY8!fJi z=VkT>BT+}|A12xdXT)2pXpJK7EfTHBz|y%}VzRwydc5VKHHv7##) zR4XDD$GUXBf+lO+`p`=<7b6MLw}Vs1$(pODCWMqnC*pm$+QYmL)_3Une6v$4I@qXv zGFq@!WX|eR_8ZJCS+yShy%j4l=ob00rA*-%+MlnVDYQXvhlhRBGna3)A$Fb^uI=YKj6fw?roYlqc zN{98%KE~Ch`#lF&50J+f(~H<>8TMd;wUDYyC3jPoG^jMunz(aW0(ahxwVDx`iRTiY z8B9>#YP-+ncmHmaJ}{+atW}BVPqZM7i;;wQuiF)SL-Q6^kk&gRjoXvfJ3q=cL9Ly~ z)$&xK`Y=mi{I4yn5wzYJEy(X;B$6_S{>*(e#yUatC(Zt zv9kWOTk)dWf^jhtb%-7AxBn?r#+v(qM`C3R>s+{|p1RHqO&4gIzqIAeZy7xYaGx-e z5V@Nu!qj?3gee{$t`9BD6QwF~rbpqDetT45THQ|+D_SrIMiOF3TvVCrWwU~{@bprD*=BL{W`}Y{bqQ-lDGlO0 zpKo*PM&gfmR{K9}8YefDEEhxzR)Mf?L|xK;yYAaLGhX((@P|?PL666S^H>jGyCWN@ z>XO~#rq4$nBQO0CKnvE2%*xNUFCJI-QmyFJ7sCR$)%HR|RCQ_V+-0HZYsV<^wDqV7 z^c`F=yMJV5^04L%3!nunO&E#aAx$gw=r8fi+~`hON?0Y%MTGjdXb|EtSC@ENc`a}~YLEw7u!4n=g!q0;MU|s? zObzA1TrkH%Z>~*o4yWdoeXQfLyLSx>Em*l; zFxTUC@<0n#urMFJH+*zHl_S&P2FinTa4huZiW%qN3LW)_b3K+GYG9!S>uQ*fSc8~s zD#witI=OWY-j5=? zT5Q1_>z}MtTh+{$JB0b1{a}whi>xhptT3*()gt9RzeS$^kNxOcV5!>b$2GY_n9s@a zU&jjLqW4RWYfn#B!TrD){t0yF^DfVOFkWv@C5})ya{b7%!|Si^1L2`?Hfr+U;)|HDRnGn;!Q! zf9uak9(xZK_Ms(Z_+quD!TXqM%}`wyA{VK(_q`?Ltlu*DS)qMn@z0WVW2{FVTj}uB zsq2}{j4D%G7W=)p{He$5KD1yx3M0|=it17GsUCIb_k}MiSge0zZ7Sq*a_3MA{j=ZN z%UKhh3Km*eb>@x^Tr1LJjzn}D>Fqh(dX%4fs;l8v zydRS?53;zfrYkhgv3k4kDEUKb4o?=U-Ju1mJs638qn!Gns+gb$A8D@k=+FFR<%h}T z#IQH_^4XxhaqP@0p3ag6VU-^~<8%(L>FBX@UU6@c2Vs>Tw(xny)gFCb=_-&A-_iHu zk0i75gS4{#u5cw~q^j^fpjy$%3(r06sy|8QZ;`fO6-ejfNVM`r=9O=DZ%CD&$3E2b zvEIV(jegW7Z5ZsxnyfV2XevIdsD7#52VA?rxPGkgDheZNa_8qaehz zotJ{|?&)f+?>oS#%HYv$MRWp3a_EG6G^-}lx>-v;y6r~`&ID&jYms9{2WG@2SiUd& z8=5|oHLO506=Z72Us7+X4WxzdB(erAsAijWgW3Cz1m>-Zx4u3*OHnUcl}C*oYaw)& zJUA7oGdAA3oOD%DFS<%HfjAlVW=;n6eOi4+>iJPp&ogBzXeiq_L)<6QcO5p$%C^3v zBAxW!GLgi(II~fxy%Q1ds^^g>vMAC?Yh<{U;Vt&&Qf!n}`>02ePC72rLhQ|Kl&Qm= zZo1CDht%`VM3|x;jXHIT_{x*xajNAosXr}Q;}@i!cO{C|uz<#nk%VZ|IG=r_d7Skr zld`at*r7;SOOdj~?-nbRVmbWopjC>-wQ@3z3l>9Z#zt8arx;s4ddkj0(4^ zr;^9(kMG%Nag`7+Yb2PPl)JHtT(r+K-vn`R>(fN1P>kxOcK%<}6Xarj>eG z)%~vZ@7<-E%v72;YT+13xPOTj4^U~wxbEG#mw92+11+dPVpZPcK#RLBzzWfOicPilD6JmI-=UP1fmRQo3XEH!H{I#as%k&lThh8pD-_Ve zD-?3qjaC{mMj~Z9f4q!-{iOY-@2}`^x=F7q*<9z{P}xN*gUxz==OqoGaJ)>~ddi+N z>`pXVHXnI6#An3uzTbH<67fEXW$hZZQ#@%&b;dOxs9Bq{O7d*-Cx^~@z97{ZEw1XU zR-#}eAzr`t*jH~zKF`qq=w+eTuAsLNQ+lkamQpsar%A*piIzmUL7myHs7D5_J)!l3 z{h#W&K*tXf0viQcce zU*P%=>>xo5WbtkGz=pAM{q?a%_g3tFfsyE~y2~E)0y>Numf2p%i%&fkLKH|KmK;&*tWU7~8NEV6%G(6G=ivR-|JXCJoZP-}$MkVEsmK ztfcRzf-67pxFPBbf6m;)mb>9ns>j`uQUh`d1_D_*^C3##zUuN@H@b}uG``OF+EqAREzW$&9gFz#`xf85I$ z5gPbpAmvD3xp3qy%F#jGx4B+Ztx7~_=5KvNn9t0yeMl9x=ifx!x4AOXE*Gsh`*?uy zIh#2ech03eo~NT@MOCE1#Unx+mw%>KYUzAtj+`^@SLdT!{oi{=4)n%zfu4j<+)^GF zpWQQZU|iFquk4_Hg)6oBCy4!ac+B+(?&-r_Zg}kU-k~an@>ot)4YXh{9E?One4{qX z)^+Gb;EP$Nc4`wFHNXmOk{}1d|s(>y_(LrST#CUXhbl9E(Pj+nHZPP{4Sg6H+WoI%JECqo4&P_ zJAazcxSj8WFdy~aIdjXmiah>EQ^eR0jLTbk4*332(+E$+4;vt2Ov1LLaiM<^oH;kyqh$K+8rmB-h|%>BS~7xR%u z*5i5@Gj$!A_9Q+CDt2X8%{p#9n-#Xg!dkf4Q7?<;D zW{T+Oiq2V5BpP*jd zkNK!l{UBAHR|P&d_XFdiH`Rn+agOeyOJ)wdN|+v78Z=ke#EN~hS;!IbHMbbf|$dt1a6Z3NFOd zUmTCu$L2Gx?RY)M{iBYHeH=FGz-Wh!(pP7`QuA-EW}|qVMfC$1LTpsY%)6>~aM>tr zLDC7Y^Q==>l!>jkRox#(I-v)TbtEB{yEIj0m!{Gdz9Z*xIQ2wz=gJNn6&pr6AsdC> z)L+zPqk6kEm5$4-5|6{FC%ThyNvDTIIw22*9!w#zx5GvSU5^KBsI$trLDC8HQFj=ZbowcbbV3g^$4{6A)r6p~Kt!TY2=w6_o)T$(D$rKz-qy?M+86-J_dmensS{;ES#SBqIC zj>`-b(p090P=5~Tgme?qROn6oO{A0K&9EHkZF)>RI5)s)ax|fCQ@ejqvszy{SBS?O ziGk!Xa#_?B_)EuQGkG92#be$lrnF3tJ6q=lJk82fZ{&LDtuUYIL9ZW-T5&r;cD}hH z8E1k-lIfAW){gp`JdPb&mfUW`PAmB--G9(b?1H*#xW%9Uf0ju3>&hf!~W{wfd?WiT>(eBcUWQ>d6ricE_ zo5lXR`M@NHdmG(fP-sN5_->ln3YFScW$dbezK>=q}cDJbJMQSdfRq ze3WDMQkA3E+k=z`=ipfA&7>RWa0t5nu15p%KnwD4n2(-{W=~K#>Lm|V9-MA>)VN71IMPYfg?)Bw&?`kAoPA?&114>|lw0A15Qr zhm4=;kvHJ-UXv*y*aeA;nKH}mzwc7-otC-$Xu*6qLm>tpsA^yRJ3*eVzux#fFbCJ21?AusTtp}QTfr_y zPZL!)NLAZ@VL{^4_&g4G{~}PgKXscP-@=ba6#FkT?=#`mXVQ7U+V(!910Cb&=>9xS zF-6*f-Fh$*ksQ6I22wgD$k{)P@=vJogZwG02px#MW?}zj%qK+ceqRJuenuVx)*GFm zF)l`;wfb%51`?Yj$lBIyf2TRyRgSbJvnh^F(0kq88kKUKbqA|-(I5=G{(h9 zLhQ)+b)ZU(1i8BA8vo-H0Vl`n6};Hr$L!YgZP&Sh5wu<=sqqD)BM`>LNVHae$c*6r zfkWh@bo2e=2B%ZqpT9p;-;2F>u-6aWU(p)(bksZg-H{PCTCig?Mxu3hW2yy@TpB5x zK40Z;Gw;6Y{#-t_jNlnTMOsdx0zps>+`J&Q0Bb*<}jIq z)9U>BYHocmZiU{oGVIZ*KyK=uG-%FWMlU2hx)_NR$k-Xdll_OtBjq#Lczkd_vJ^_M zj^Vr$9lcbkZZRjA=j>p)^}yGDv|!gEj700UTg?e(Jv~@n>zvWXt%YBMI zidYcr+IX-WS#PBuE!cGkBhh;lUs(|B(r~b>v^ArRTN&Qh z$qIc}`s2WYJ&Q0B=?v7_XeMVXDw z<%qLBv>;WE96GJ^CieW)Z^h;B<4>uMCz*&==Uyo2(P_OytN;EnbKwbnYs>2sipyG+ zPbQ-U*>fbOz+IAI!b0fkQ8W8^GP&XkmSL>NK`i<-lxy< zQ&AI$_d%{_Gw?nkB7_PqTIq2JA)A<@_g_636iPg)Cb@lHQa^do2WfTrO2^Vqj(q1BB( ze@&7*?0HREZ*cWSKTo@L&gucpv};VYIqFUp0HKb2zm64DvYlAGEsO zigRd^+*t*YhR*iHi6*Vigu32}`F1|@nMrq6a~vSPeGu{OPxdWLMhlYb+S^&p(TKk1 zZ~tE0iY)xP*{2BlAMtmdyWcpgQmWB9mS4RktUebr_|bxVJ9Z$VS`q!$9vV2rYW&)K zqdN@J@mpx7K=dRD_Kd>}G6T)O z!9p~p-`cFyPiBoRY_uRljrr)k88MdwX*%L%+eyR`YK#_1>XQh53lU z&Nu5XKU$E$#(dO2vF8_o+Wix(3Da5_BsunXc}#cY%vtjtIn_D)jt;bsOR$0mr}@!> zoVH1l@1gs|vz-#GYrauNcNpyA!gpt!gYO?n3;*nk!1B+iqjk)Bb!Vw9m=9-2n*PUg z1M#H!ycap!=njLtIp3XeB))$XVyttYXf>nzM6}>caE3x;d_&zQTAS%U5#!>~<-0zW zgYF-N7}ITTVAux<)+;S9s5?t-!F(8rXv1Y{HMy0RR+A$)jXZSfBT0@POe9U%mf}$5;@wM2{bicPS?6fw zyQVf*5XsJ}cq^G!#k<6YvM?dUBss5&$4K<1 z&}DU*-m!Ws5`41xK>moRv_2iPojxCs)B(lbyAe-VbQ4C9>Sk_M|7$H~z)yOvQgA7mkr$ zdgRIT@n&SGk-Glx92*8?tAZ9+v-I++UyMYn&kj|!uhDxHvo~39kmSgPv--jOekRsY z)bn|9qP%N-FVz$M3k!S(CQ1I*mw~9^*XgaHGpZOQInLzR`a@RwqY>UEbGZ-8mENbL z-lIN6o2N9i(NZwue(QRj2=BuA?ZZg&Hq$rS|FYl&jTvk%WoW>N>;()~-OCNHqZ z9FMX7B#IR+NR?wGAsP-D;`gjL<2gnYD>I^+1$P-y#Z$XXs@vti)W%eQmtAK)&qlrA zUX=xDY>Y%_d#n0(t{-CLtJ{Av$YtbdQ%YS6j{a<;``*5`L%P`Ceib8=-`*QU3o@d} zrxKaDdcChsg}lKM%u@q_i##o|)y|oCF)B}R;_LL*8z8%L#(XK+swi)WM4bwY_V$hN zYc3ccL<`cU$fpYN>TCI`|JE>02EQp6M5+`$G9)!s z6zehd{=r#8Ge%w~k6%`l3!(*SQ;b9vlQdf*e0d3I~}76->yGJD0lp@5OS|3(Kw*Y=PJk0^JWfK%yry0R5$oMBtqgr z9Oc-(V!YyBqltShN%g@>Cq?Mf#lu6G&&+Y<#`Ce?9<{VGB|my8HuJ~PMa?`B3mq+>Px40%vhX7SG=G-m8bgDN(26t5qnj@4Im z2Y?=!&&;uFcHPK3lq3Bu(*w7{Pm^@&HC@$rt!$0UivHB^WJD5FGi>~(N2<8H9_Oh- ziWVO0_dy~%Dg?cMPvv+JMwlWa%Hup#?RDNci5_U-xV#mUt2jgA;atMBugj#W3J8meKuOcd7qculFqR$jC&3D=IT3BvoB{g z*JW$9g=fX%@ZL)=xmWJc#KewfPkGFr0ly0by@?%kJ2buR_H@Fy?5%q`=}1&RzcE~9 zOK2Os)*`o&V|sKs>&!1jLx-Q#4PBj8&RVy#XlU4Ye#gkKhlk6vJ8K5Fe)upNEldSz z;uB{}UCiGaq|V)J^Oh>^RkN|`vXN5DQs-?@;PIqZs-rMlFir6D>rwf$sG*xDZ zN#pWX?9E$oZXJob_3RrVtIV$%OxU(wamf0J;*mbwvAi{6Ythit+_mXgUHWvmJlH>1 z@Icyf9<*Q%{A}pH!@c^9diSzoYhUoRz}YgN$j6O&NTQHjkHo0U9<(6EXwrs{T;lgq zIKPX;FOB)AGyO|_on7MhTbB{m7LKdNO#H$OX?3Q{?@E{W)#neNCCbAkesv_`$Xt(8 zIg&%SgSI6)rscckAc!dNxlO3w--QI9Q`JZs~!YP^-E z%{T{-O;!y((1LN9Bh!&cp?Ar%KU`K#TbKmnaX3?EdLYGybeow&vufYEteTF?>==)A zzb)P;hgGZPvTE(ZST)RtGo(9xmpnV@vT7VRoEAnfixY}Ib9wu z7{YWak!`X?6q z&=NK0uyv8%gZ0y;*%BiO_b*X~rhWZGyHD0A79+0wqad;$$b>i!+?8wDoWfPmf^jht zQAjQuwZNsR_?oC`suxF^?zMUB&{V&;9{pUJN?Qyz3J5{!7V5H5)56)PFcwQkB6`Q= zuR6H=m9{Y5#N%*IidfEB4ox*UjEzE?3ccxC;?h+0T>eVOWx9#S;hYq$Sa;c|vMx=< z$4YOdJ(yeKu|resnC0+S&0LyFTab-H7K{1_4|3S3CN53IIW$eBz4~5B%-`GJ8V?Xf2SrR ztAq@b=}~0lU%m_U9gIr9AQ>(7qhC`wj-^@_Mxu8QRNd@XcOYD@n|#bxcWRg4@}zH??$d(1apj3mUuUF~J% zzR!cxvYar86y!@xk8<1FOF83taPJSNqtNotx{{%rzwVdYbF2*`QmRhxC+lw75-gNu zVKlNTb!LVBXdvk>R=W6!gnpLlQ zumd78EJe>%3-#R6TUKbnL`spnBjoZfIf5$&ruU!)=@g74giQ=f`y)xw)5|?E-nE6S z346DiTFCM$>ZLMqGE;A^iT<8A8MGi@f^-VqEfI@TVopEL>`Y*;;*)kHTe?knaH!^ z^G!#hRi^YEJT#%WRbcSRWbA;5dSrW;u8y=9c-ok z{I$`kkaOr*?KMB`3kAph(?#ELDQ!A1-6CCIY~@ec8cJsS_UT39QM zj*HkukjX>N;Si0(iGj?2da!k-dqx{Am=9+tL}u!3*pqr2#{SgB=v0Wk4e=-tH&3+T zp{!l41xc5UUXy&S&=tn6|Jr<*f|gh z82UUM_S`!3ezeg=5aTi<&K(6ET0N$~UHb{q36(E)RkXUcU~e+aM+8Lq<@VFN3D((q zxr`2G7&nDzb?#>7(CQnDFR~-3=h-heD*DlawQbDDt7|@rJVbB1IaSH&C!@RiA(zpK z`pGbn;`Ec5n|EXN5P4Lj4m4;%I>jV8Dm1w2Ti!U%YDHac3~#9kd{wf|2MPgnXJ-X>ECwz9%HOqA ztmUVUK-}Nwg$1Y=Ba(uAgEgqP!Cl?V?psY+Jjs+0A9j(^mczHbzQa02lb)3^b@!`3T zlhJ}Sjgeb8e~DJowYN5-hx=6Q<#k0!**M#iwqzw-o3j}$NYh}XmmWMi?yLs%@@hcj zWRRb6Jec0OngkqV=^$C)nOw&8>%nUi61k9T1UWLAFJR#+lpMxmPr|zM+nCXen4j zb*fYE62hK`v`)D2JNA0&h8RO#>yTB!t@B`iQ8pNf&cw^Z*Y4k?3i{yUaf>TS;jX&4gX+LgOOj zm?Wp~U`nmW!H8SB@8FFkm;KT0N=nZkUWpd$B8ZXbUD(%8_!66)4!)nghe7XzLTRPg z?)1{beAJ2USWADllc$3v>GMDf#x?1k`n@yT?fW*D#j0g9x*_5Wk!PZX7Ue40d6qVp zaW}F`v>+RW`^3kV$l}7egU#L^C6OZv9ZRR`xXcvcK2eS$Iept^=MFy1GD@Na=Z=x6 zQr$O${pY+GDc|2~bjIVWw(bLnvlXIsr91xLCdA0x(@bJ3RJCAma=_)f=vVYb?>=#) z*O&gKV`Jo)4U_}uCjOH|N;;)9SEEhx`3JEIo7Gl7J#OgU4 z#mPBeo5WViv(FXRwVJptj3h+eUKvU9ikF_~a|TU?Tjia;!D^c?RgQ^C4pE)6U;5}f zE#u|4N6rP%g8Y?9Q~mAMAkX!#A-Te*d(iQi`4a9&$JIq1bEi4#ZtT8GXbO3tg~z%d z9Y!LZ!L32&rMfNlv*R(x<^Fk?k9Z%~W6_CPYF2tC7#Abav$I=2j~{bL5ki^@(iL## zh)TM(^d*%#(tc!cJ#vmc6hsS;JH6mCfd4JJ;jcn0)_d&voBPBhrhvzV$pa zH^7vR?)JoEu1#_0C*-8)F5G2`N|6Uzc&vFSjP#Op+CRkMuQ)CYbeF&4qo@fg_U180dO54Su}*J8%)#Eex1o+C#Oib-<-#9p1{b%Q zZLm>16TQ{d)nybL)vP;rDjfNIsC<)Xs%aJSdC-D1mB~hlw;eWW>|BS9;$x-BBR(rN z8^yDA*r>BE8`a8XqqGIN6_Z;!=#ow~sZ$|ac<$jjkbt5!ajwVdFg6NVC5$9Qo%=)O zNurR3+-$FCD$c=d6jDe?Ckb)r{%7(}BAx1FnQw4Q-q!D^Bbw=e)2UELqO~$1hk^XG z)jx_t(*4?yNYb<+_llz~H?GHJ@<0oZb%!@(n5b`*driDaY!t@TS2)#o5QrqxgSS$j z2eC@*&0{90FcR^i`bwSP^fu%@43CR+k`S-CY}A}^Hj1w8%A0#BQf?jTB^$NJWuuhE z<)L19khhwx;;&}7Y?R0ChNvw_Q}I|wqIIbaogSu}?`E*@h~kkp`*{7&^|(MDXu-~3 z7)gk=?v>i(cK+h;2Xj{8-aK3GG$zC**P}9d@K)M_lorxk^xWcJMaR307w@5_wAh=+ z=xutSg~#m8Gi3fsN22|38LwR~B;oONX`}>8jYlhbu}_jtecT%Oibq1z#Ii-a-rVS2#l<7LO}0 zuaHNZmemc$3q3FrJ*C#oCnwVP{PQpB7&#{N>Z4}$xKIgox5Tq$LQK#*MvBVvM3{D3 z=uy4G*rK^Ey%l;>f9f+?<&JS}gJ}jdw9wMC3u)IxvEKQ= zH*%oIni(V23@@fDO0#z6 zg;bcyU&ZEm9IQ@9x9=;TD2`0$Kw=ALNVU7%M}qZ7w+&vX+{Hr6ii|>uW4B4FC=kA*EXRJ@XLFAHHysb%wG2JD z_ZDBrxThEOy5H(}6ebU}V23XD){%s$65BJXBavtAs*bIR^cPZLNTE@OrXj_n=2Lf= zci-#mL(4y3{%qxZB~2*9;`>32#CyPh)W@quiOp$?e62_q5(PX+)*x}?Y|kD){Znc) zS}-m~qHfclJAJ&`x~$rZbBQ=I9_tQW{CPO6ns8aQ#o??P5QfYV>PW;u)^PfGEq7Tp zwrJXnNi0IIgD6I4+MdlIejKoE7tBIuemis~lFXxy!1tMbl=SgU3ju z36TXlf1w5A^7mXvdU>|<2uUy`#PGY~creS!Bee7!^0E4Mb=~W=j7Xw=KZiU^z2Y}m zHQZ`?&Ql)lY-ShXmG@nKc&D5`GhGx!vf?P=A({sm;SX=&n3uP=O-F{ys-aO!C4(u zSFZGTILD6j=>l_3C&){$ck`nKsW7C_h!?H2-2R1nY`s(HL!*xul5W$lWLI6e^6%gr zho`NzC;pWnFW0Z(M+@e|8IlI@eaC>8sIZ@DH8#>sNIfAfM*U<``v$sCOOTVk{@dWl zM8axCo3*m)dohv_y-$4?xSEc-i|x#0qb29ypH$DYa)Ud1k>sLYVYSu-+7+VyS9t>l zMxrOLGSR`2b4JQ;o=l1yU{;O0Bq0^nfAeF-s!f`~osG)PeJ|L({z%#U%r-w- zuul`sC|i<@$r7trK3O!&i;;x5 zJuaVIKz)iTb?vBni*RQn?mB{m*qYKH5AewP&3 zGiA63DXmT&BSU2?X=h>xU@>#>PQG>7dHELd*Z*hSo9Jr-@@#FV9G>F?(koU?zf~6r zv5F3>W;v|d0;1cdUCZt{`}M0Hv>+9ROc}AYQ~Sw_Teo zu7LY!`9c6*JUz`_-9YhIVOE1qH70eE*jMr8o8h`#SSoFwP zF&-s+Zi9Bl(IV}Mt$dn<4rfE76rqKc2MDx0h3?|j4n~;Z6IkIL%v9=x8Rm?7WQsKz> z9>v;Bu_7l${hf)F{kPUoQMhIr4@&rM$2=61vPeMDTR72F{fVaftKd?jqMS`lAx(vr z=IpVgd@uiqf#MjFzbv|7(Yw6vXRL;&mlTG;LaHFA>QAE60B2%+?u9+$oaxs zuX3~)F+a|zRA^U8LT!Eya%Cfvb&ehVw|8~NXmNFHG7n0y$`Sgb_qL|%y(NNT#5Vyc zJh&G>Ex8U4lgs>Uw`=lHG(5vfZ@#KAV#?;NO0^!W?}L`83KS9XeSV7(3vP^6Y9V0_ zp}HnR?=l(s%ZOFbDMjg{Td_6e|z43_c0_m z60}5YZSsIB&xs2AC&aAiVADn%A7pln>oXuNMg$$zfH+JV^QZ;{N|1C?xuw}DGIE^> zagypxAZ>=)9OtY?9GO{};%-iVu4N&%Q7sFUC`=hpXjC(^!R3Ug0wYCBs+WQE7iw_q zmg2QmMWA4DJfUL2k)j0ED-3ld6Fd^oN!xE8fgF z6lV`EOF+AI&5T1AXB?_*RIy1WO|^=$8c~8Y6 zXEN17YWx0ef+B&d1T7Ikw{)o^C@e;#7&yX%Bp?!7$Jaa-zIe?wr#e?QO3b^*ap!Tg znAmfb2PG*I?}{s_X|LuTeQ1f!foG57uOrbS^|PGH)sB0iHdRVrcEYiJH1#Gw65>Tk z&AC^^RsExwUwf)i>&5=vP=B=nT|HZt_Z7cW4Iv~9kvy~*7Ll^RKXe=+-_`X5?CdKF zQk^1{AXA2xC@a2DpM*ahxt*hkbV9lbsVAhjsQ)=t1nM<6(3yfN0-*%?8?;1`hPycv z66Xav|0Q|{_d;!p>ai*`@zqO&kdp}^lprC5mZ;BY(P0TW%Qlmve#$D5jd6t>aLlMT z&Fs(W^*YbDFt>@B_;+DKx{}Rgsf9#3fka_ukjv5DjhVV@-Jrg5@;676Iz_0_D?=&q z<5w1^Nsfq0aimd?G*E)f3{p1KALppAavYI0+lj0}(goQV)aIF@PD-Rva*N91M6`|k zO6;H|T4(TNbzFEkMmAbsPGNCyuj6q)i|_AVmzyV_^wGWj*Nl!Qq><}NIUOa)%phe$ zSwb~lhX*9a$m3J}yu8xfa-ilrFgjYPW>ol8ylCE+YVwSTCLePA>+p=Eaej!O7i$w) zPaLCW5mr3XwCRzr!?Tb^&OxdVUd{e8Uh`$|qxz$KwE?fg14$!qZ$EEYTGK1AMf0_M z5~b8aQhm%Ms+dO=)X&e0cJI(?-HL^pFElKvk4ht6ho>ivb7TFy%3k14^|Aby8;(l* zqU7j_3%p1kO}u+rv>x|bR&KP~XWb z6opml6w!(>^B!E~h-(({b|0#dM42yQuRgPT(@L?d0TQfigqG;N-O8yRLCgVGN#bp` z%T<|J!}dpf;!kE4_I}bp3ED+V)CY?wDvkb_!$N|Jx7n`U-IKSCZlc<1OT$4N7RMTG z32)myK+zI)46%r|>&+zQvK< zwm33df@4QZluKr@22U-HjN?wsaxpEy+BQdKY#SU|4ol+BC6Q0y?nGkRDYG{twGS)5@r~9 zn^`sgb#;umYINQ1K3Z?D&{aO9xbyMsr*)K!np?w&T85`Ht8&?vX!YEp6PjC87+-x% zf-%>{=f?OS5*9^8Jp zYg7_~4w*aNwk=VQkxQ-QHx#MYMRXSy?MjRoP~Cpi++v znY+Dn9HL%)i0@!T9n#qR#vwN^43U{KYC1}SYK4i(Q$u|Jysnv~=GkqFxeK)_nDN+c zGLN^J%;P%|&w@$mp$1Brn&UHQ^LMr-qAV8lk!9)5@Xz2aPGsO*hbtI&hT1V^J+l8a zrY{&GeZ)-EsWn;Q`jFB?OVrciO_&t>OUh|w7CMl|!|Gx<3)FAoNkh49WOjKy;JH_k zw67|B--Y-N|5DwDmWZyfn7eGPOiGWhU7La9`LR2!^0rCo)wMKAkp};sZ3%C)Ht(ep zbVaN?b*NR3jOQe&559vN=fmhHT;I~zXw^KkCHB*R`8)PuTcS1nZaw8xBAw0!|6x=~ zV~O2$*w`j&?*5Ld2E8-&AXhNkJF$aoOk_>pucc8i38lw-v9{ec z)V4%l+x=?GvqXi3TnjWRv9ZJ^^X$C_wQX+9+v^t8S3|q{LuJ`)d^`Q)-C_bItJ1eM zeod)X3Xqf`Q7SAxkc1zDsMUsp-(@|PuBGD)X>M@{BCD`K-EfEPgZnUGpzLj&lueB{p+)feZ_> zE$05LaqL?83MfIlXo>2{?0>0`rn~5<2_1}nkbJ!|VTf0Limh{u`);Z$d3~DpN6A0* zTLW_G?Yj09DB%ibtZi^)3KiBPc(;CyH1dV?GkP`hUN#A4YoH}fD_UWO{*vz0k%@y9 zA0571X#7$;l*?;$dbBOko8|50dNCQQZ%;PR=+(#)roxc%LT$>aKGRD-GohV6Jbb7? zNo@XQ#{KH&)p?9gkG3URxf`=ZFGBAO?dSDTe4vIFzseY4_TO{UTotK5S?}r%)dLm` z5hy`QOC`^4reCDLpBt+8`*)zx50bqb)zHB1{nqP@^D#Cx`^fg7qh6oh`WF2&LZAeR zE%c{p1HP2h8<0lLuA_}!jqJlF!FZc#Gqgn9>&DIA2lGPpMMokPA9qS@G>&%ixj=*Q zvMtdHr;Tln4ud@6VuSkILLQ6yld1`sme~6JgS7&!)MKR>PkeQ-qE!88VD1aO{ z=xqW@kiSwaX(Jw|^cEw=tImkkO06*DuWsBKY*JxYvbgB|>VA4}?h7%p)5ytglwch% zB*Zjr!KJa@-LWz9#S4EAGFO^=i@{$ttkv0tWEGK4fA#k^o*g59{#$pWL?Nhv-Xa?J zb$aijzof=gfIKnm`#u>+vcMn$=`{!PE@6j_cGRK6)Zj>N9hQ~y|sNyfY z`zuDv#N=lDd~M?ok|XO#f=%6Zi=*N4=|Cp7W^MW4EtVl#&T)C&C_(-Tc`qVmSJu;W ze~gsHUv5>{D22ZQE{ifiGc?h+?u?Wxbz;0g^8D5ZgX=1mVTKDSEBZ~OYNFrV6)9_f zTIojS3im>7s?j*Tg zk802zU#;i8IYd^--rbE7w5uM+{Ve&UB#x}KH=P^VF&trq+a`I|sXA9r^6!#Q?#y3L zUOe=D0!o-pF*@=Q8-tc;o#Fd@@&swjS)Vl?IWp8hOEkOv^T~JF>&f9$cEzJ4?v6PU zN6b1GTB3gRb@Rz}FYC%n2MaimPs6=XThnel$SbE-swV@E7jvMb;iX)@{lo9c`rIuK zNH-$3+%9?buOiY_{i)((#^eINr5i5DbLqFbkaVNCTB&N%H>!xdzWkm8B}lZXJ{C;r zD=+2Qsp|<9oXEokC=xs9cch;)yUbzJhDLur zWaBOnZK$=MFHG7nRqzOTH?p7eQO}%Clpq6#G@Yg$zuZCQoc-CE>X^r%CT%_qxiw_t zh{Yk!vecQ+&KWOtgPOFdIX(w-MjjSH#91QgX40Q}^>9+)|T869|-&eRc*^dUrnw4svjis7r zZEJTn?uoVp`82dd@pEEpGh81cUiiN^?z=Xh#&p&>QLPdoNulFOfob)H_Ea>bsQ&p}&){?HPwmk_hvzCeuF zn89n1=-g^nwIwJ4)5)hF`~jB85FvW-%(hbxp3sxXs(_b?70{~?71Q_-(FnI zo~y*x@Ex7K)tASJfLYsAVhb2A#gf+Kmci+Zpyb_^nrFz7@%tRtDKp7_D;GfQz5jzj z_S+JyM~0*ubt{;=(KF>mj7V3#s#5a|?eZHZS1>cl{#liN_WVIL&qn2IWsv>01nCs? zM=V4CRE`%dqQy9>Gl2{gvQe3+GDU~H&xBc-;yBf^kjWZ@nw$ zX)snaqIwy)7f1D(Hrq(`GLSE$=U}$}RqhaZHjHX=pafYpw4`b8Dp#qzJKspLn&b z71OBJiz0!#YKkSTM96dZ>8X81IjSdvwcAh|86D~#G05L@ePLg5lxo(X1bH8{L^-3x z0nADhErN&xz-x&)0GlI1zKBSXbvGPU_eF_}#2TQ4S%dG!y%x+Gpe3S3E*beaV%nUU z3Uh~)9)Gtnv1exRgdH$)e#EGqYm5w@uM+wmiZNyB7SeCG-;)Vq(| z?dmX&V?>l=@xyKx)i8bAN7gEL!4q=us1qfaSAy9ply9)4m&|v5tvBrKY2_{a`P522 z?Oj&6xY=$O`lB})zuvNb!8P6wIZruJf_CwJo_L=Q)!gMXhRBk6zRs>e=3#9zZ9_-> z_-C_Xnx?&d^MgC^K~Z@xyqZLbFGEc|uDHqaVQn(1I`mch(_G&RF6fX;j*Lh zaQWLldT&pb+Yz;5glzop6dff<9wMtq8u_0(u8$lmUp9K75Ol~Vo*REqO#AM!ESEW+ zeB4=m%klS;u`);bS6-ALbEgt?0aW)YWzVLSxDJ-Wz#$t)Q2^#=xRW8RauVUhbDWbk zK!W`T(GtA@Sd`uki_&9T2AN0H97pwSN{_d>lOg?TNh5a}zulKDO3#)k#Gb<3wXyQH zJ5dcD?48Kl?2r31BC$v73|4NqlQd9*WFA_gb)PvV*SE+b0og9of2_eHv`Ikwm{bj> z|7;0Tf#{o7ovr>+CyBj7{sx&lWbx?9X_0_8Eq0K7*t{TbGcSmi=ze8!eUB^>kXPbu z`j59+TlIk&C_#3Rw{1&AG+KR^9#OlJ{#`iZJsyYMk-L#LW!c{>uL*W zpakhZv_x+J7CV@nXhY=pl4|oTFnLI9t;HvfxA;U`!rHve>>ygAcTtNroNLjBe1tY( zXdf-k0?n>P8?H-28z%K(TcU1h7CZRRq77MM6Nbh%5r)VV67^zfOiw}^B7bKy8YXQx zkVrtD-CaZiBK?O{pz33^r7_)N2YG(D8lKJN*sLN)k$IcWTyQIyadJEToAZ7Wi9e+D znCjR}T@jD|8$lWa&qm0a6r(>!v3iu?*wGSoiLuDDygbW5p5YbF+dNv6l(p%$sutb$ zRYKalZBv1KRT|q`I$}{%WD3~bi|WI%4?YJrFUZ@>_#v@J?qdt~Uou~(9j%P&Vtm$k8~Hox7-DG@CJmGzXNQ*lJUqX~#E{eY9DtE|(5~lxH8!O|PTwkp$739eUA+pl*sY;!@Dg&w- z1l`-!^?XRyQI&#>W#j~+^zt4#zq?+&}l%omEGtxj%oI9E;{FD?^KX}`%22t z$8DV`LC#L);U-ioBq>$B7a=a`Z>N zwy0+2-Vd4gENf#jcYM~Ehns3~$V|{7??rXCE#~g3RT+=3U7NGxZJVaEEm7a4GZ9h{ zZ8*5|Eu%7?EwS%#%*G+1S}3n^z>Q-S&D&dYOl=l4P!PPPB`xT2pU#!d7AV1rX{wJGLrdyjI`Uro!<4#es9mApEaQCaeOZWn)cd$d52x9EHz2=22@;Ly zk9wa~$gA%pvgXO>5ekcgWX-%MI}MU&YTH2aF`&Xc@4xhZl{eKGff6JdRX#E3H&LV%m_m`EFwpv>Rm@y296|J7xkXo>1_7TFhe zfoQ{sTdS&~Bz)&yF*v}_7k9jdP)Wd7wof#qG$E&87_5w@P z(<1i~_ir@2j;cPzhXxu!LC1{BUt8nYM=z=sc8WAoHC>yaNU%Pb;v?gdjh?1dV=Kd) z(MlaJB*cP(N*PtTuKL(VmLz$( zhqry|7}@xz!wTbtR2W*KZ?%BQ-eZGel?fu^IZM(+pj+H}#f;`1~{#GP3+j>Y5Hdo{RgbgA69fGdAF@A&C8?ncQf zbA4`N% zg_h|1d`=!&XGR^lZF3qYazsc4A(5nMcUR?>htkxQ%Zp`lq9iCWmoKZlBNt`b>OxDJ zmfagFdkrZdKdqUf__$HOfbZb6vod?X9WG>lH0{}tFu66TfIL@uk`pD!_^3XvzV9zx zt-9-PF3)!&%Z-}Lj5r``R(7i)-gLQ9%@=--Z*;V%p^33LMkjp{#hu#y<_xCoP9V0@X==S}}U@?%aK&peT zl8a-#dtzh64=??VJA=)8kgaDEQXvy@EFsQF6YgJpYtJ$Dkj!pc>0kFYo5m*0?D zX7qD$HV4L_DXwN_jEMG>F@h3|HKQeSRAm#3$`%n69}L^#TwhtpRi#rV4(gvneBFll z*MAz#NCP8d80SJu^fghm;jSzcCA&>gGT+MfUt?()!BS&h?1dw77m~!)&>vc&DmQL3 zKdO4;7|Cz+b~Os#=G9ZKOu@Awc$+IoXxj39rbb!PKnYfmKueS{^843pC&}Lfc7+Yz zX1iQ%1N~{*l>J}7Ka5e?BSE`piE2lO{%u6C)=+k%619S8*13064S#{rqv$wtSQ=YN z10}q@|CZ+Cz0i`TeLL}_K78SqU58UAiIQPljkb9O+KhSiw&H4KtVoC<%pSWiB>tOa)7qs?C#%^#?_LQyp1t7T8*+as*wgtFqVdvDCftD#CeiL;*x6fXgQ8Yb7g59 zvZ8&qgd=gh&CxfE%F!>%io{*EVt0ImcJz%kcpJ4TQ_qU_&e~{+-rFsWU`xZU4#L{D4^?BfrBQORIx60)Yh1FgBeX4P zS{Ey>meq=@@e$gQF+Lx>t;W^YRTbrEeOkN#**wLkjYnuA(=n}`j z%-&8DskhVTmh-$Qv1?0koC__{>=vvc*U}38os-j?7$qAeD;g{G93{i}7p=Xf4VRf{ z?R7-4pByN${c)TNEomC9KpLxqcJ?wKp}it#uMYAX0B@UXmbA)gXxQB&Yzgnh+PoL9 z_1TuF)_uIWI#?&k>L9Ks^0w`d_!w&ivZ=KKX-jxLk+*r(5!V@s-f6TT{Ov!q`Y|wl zRa_A~aQBMnA(Q!feW)dH-H%r2>+B6LPwPHo14@RW1lRY_68|#z&s^)n^}Ps3KV$8! ze!GVPSKG|}Z4H#*${ku#HE`_>wO!x8H`d`&70&81HR!!v4hZgC0VTL5hnA?1$#g&W zWzu+kIUoVo-cZAJeY}IK{2$rE`Ge`&rFLH;jXhn{C!i$uLKmIa`WDTky)?E~P4n02XXXu&HScG3qXhHgaIJ>k0DNuqLFFUm z+}=~%xYl!_)n_9cuu}0=F7!t$cjsE`jT=SE**l85QG#~S67?%;^;mD0v#T64?2M8{ zhk186Li&BUp6DMhb&+LHv`}*U@R%@Hjxr~mPxND#yT~iqQ!74D%1Khbla?IKSdm=cc?%#Txj6!LqbyB2hjTXxh`vglB|Y_H6|mEyTl&>wYudw*Z=R3<_mty@G{@j~sA4Kn*u_J1N9XWU9YS|e zF0GQ^i4t5RLx0p4*_%zyXy%grW-N2!x)`o6xPf7w$7d+w`AV!LQ7O3c2ytQ`PsGb z?yZk2bhJe=J9`jMt>zDYPds&#@)yD@5l@X0*A)47IFo^UvF32>AXF?qLD3Y=Rsnw zrRw7Y<-Y#<@|`npXh-As@zpNnzFzR{7o7X5uB4`z*G4Ws^3M4ntb>s)Yp>SgNN|Ki zd3!=-@}UL9khN2sHNh_bJ`PViD|o#f*LvyeZfKY+T%dr^D@?Li=#5oi90^*Yb)VI_ z<)SooMR|$>pe?==<&t*ah ztuO0}rH2a`&yTNrfi{ki`dU)nc1)#uqQ)P^l(ld?TJ%S3E#;;DPI;*@*VDPtJLaNd zjwk=`vjCIN3I-)Kh*;$pQEcN+38m$la-(0oTJM10Msngxl|9}(D<&R zeVbqbUO3~FV_qD=;%%;qplQET%&SObq?qbA!HAOC z5*!JRkXAn^_ciCoND=;StI>nU&Sb^hS2c(CI@N&KurpHhl^H!K;aUx>9YQrA)NI+^ zsha3lc14QPFIT#8FVw~nQU|aZE%f}OBE^>9{5&YZqeV-!?sMBuZ*VtCyjZmhV;`sSpu~z=3a+Yw`MgvaFXV;yc*ST@){km(n6)>I zy)bVVvy7>}=%x?eG8v*pqdHWR1Nvj2U9?0b;ISRvHmPGogC7qY)ky5fkKzM-Q?<}o zxA*mfXmKE04rNpvyJc;TBCF9Q|AevL>*Hd?HHz?JL<#poZCZ_@DDu%kG2-yc%pR2R z_kjO3&BakB6LxUU;1&AC#iINo!+0qmZr>MUF?=j+C z;uB@A_zQ{ca#SDvQ5}}eLEbgTDQ`RdR)YhuM}i|%=W5BD^xg%3(K!#^tBeYd7H5IF zJKoRkJ$xoc+#R>ru0UgS^T6Z4MI79F?+c| za)^jwL~?)xGq2H-rd9D7HH1X6b=j3HY$X>Jdjx13sguA&>Ll>I!`lSRUd6m^^hZ~_ z%<8!Ka*PO~O6fkTh~Dk)b-@+UF;b~!NcW&h>5oXGC{;>F3FdI4CF&uaJhx-iiV>na zWjmo=-0J}4M>Sn`RG9fuX&UEqOkX)d45o}KlwkA~EosKzZxk7A^k1Hr5u@dpmmMWl zW2x!m`|Wm*3TXZq71hns2}o?DpUU$U9_b|K}=fCNW{mMF*l zO*a6pgC?OSfIS%^(D< zHAENFhG>btCNdigq$ouUBuaS2b69|%iy26a*Aur?$zUKw_71Z{QG#)Kv_$U=v*N=a zKaCMrk5qA^hP8U?VltD7O~1%wF0LX;9ND7ej&H8Ti1$O1hoJMx0y{??y?8Su@kcH8auD*P5AP-#?2(aWB-y5mHr^Rw*2X zuf~W|ndi7sg2#lGXsxeZO6R!~QKHA3yh>jg9Lciwsa%dqpGD=o&nX^rXGc+I?WnP0 z+Jj#`D7msSxvOJ_PeO|;=EIzNO%oUEI9ol66b+*?cyX__Cq9eOxj%@0=R5eY-wf3w zyHM2W9zIqCjy~)`3ED+V#L!>t>ioChXmNV{05970ul|q7*!_*j;WyRpP+|13(X`HW z>N*>EBSoPl^^`gj=npN?+G{|hb5!AxqNL01MY{o`?u%V7pNr#nSNZTxM1<+QZccs4 zDDjWn>_rLIwLnWmF5emBOtxdVa6C+-qXzmo-1v%kaO`g}s^eZCt;4mS=YLRC+@_3mygTDvn={#|h?9}^PivN4s<|s<3=zdCD;_0SH2^Kq zQ|-4;2`l`rIFE#=6$DUQOVwX5oN>R^Q715Zd_tbaSDX*B_mn8Xngi&MDgrHRDCZBk z;K}9AB`~}HRPBnsUi*L2-!|B5tS#|<>SedRF3MNS(@0i(dD`xAP?kS_ zm!{7jpI6{2V8b-!ea-XKm+uemaiKq2J%3PJ9$%vA%O2zvC_%euNz+pKPe@o=`GOvs zzL(vvNDq0PI&syRtNM-8`;2Yh(X0B}8~gMZ|E5l)HL{1}6J~$DtY0kFQ^uxVrr#>! zC&zwDm8f0quJ_BCUdC>uZKV=IOW*her*=gjLK;E&efr}Qf9w7Fr%tra;Q!;J%J4A> z+do~_GZt4h6n~13$`d~TL4f5}Ey2}rO$1Nx&%A>U0*$noW}o{(fzincF>)b^UQ zplLt#C@AOOswJ;xd>$5*e6#MCJq6LAA`wT0$46gx-3!W#w`<9q*+>J9-1Xt4-tE_i z`nVJ#5iJqlo)|4#?LO?y^k+c0Z=}C`E4t|2{6u2JW=$^I-cB#s$v-jZqn{j9<)e4n z0)ILmcS$4F*2CUPX9L1f;*x3Psx>L~1<6DrTB0lQc3k|yLVQQy$&?~+0<;D8v zqWhV7R_$#{=<&jH`9mXjG{jrEj?>Vqsg(uj^sDehoht{oz0-Ug}nzgk%*QwEqH6u zgtRRJog-;>Bf9$Zrt_OQ|L#iX7Vd*LI`7nPJnrFq*_zM!+^9|Q%L@fMd3Iw9Jk_5^ zE^%~@Q_q2QOx9gAUFALTU8pZvOVU6e%3k1)I);4O67MMx=;Yb;{c}~nzw#UBx*z=$ z6@TVcV)>{Mzb8JXaG+Bp^#R(7KP^Monh7`e7nN^2s?;PhkXUm>(`HQnCgIDGqH=4S zYDzT{*S9}71{5=yOO=|e=}zYkK3PS zu}}WcElt!v);pc=%PB@BIlM)_tM3 zrOvM$1O6B-ulj}SxEEG&!MZO*Y~}mlc)feH3~3prqXg}uC0g+^-}+=edh6r2JG%=T z`rx<0`^Wy4=6m8&db9M~F^Q1C%MXe5!DhEastHIMPf5eqRrP^(S4}uB2A%&RnR}*4 zb@T~`Ha=Q9zR#n~74D__STOE{;|=*(7@=xdUw6hap*G#G=5}))Trx_&r0>B1`ZCSb z{f&e#Q$quP%|u|+H|NO0BjqIe=0pkpYS9w)1`IQa_h?xILG6~s z(DQZ0R5}y!yv;;BlJb=8^!-OeZB30Q zdMAUrw@G`nt7^Py_fb!17rA?_rNKUUB+NJ4{#1?i7Ik0Hs%FK+pH14^$D}g!hb@i3 zq?|sH_N;AC_r&SjmMC+wEBZTvr1yEfB ztMXSXD|>+FCuvnK)TW&91yhZ=`ggBcD-7+jwp}aCwnT)`m0tRAs;Y7}OwAq`X7v~; z_%YIlXOnn_yUX={`$F~VR9yunn5Thx2$~k&qO$ykDs22Zv9wY7i@ngZS5`DQE5Y`m*72%V zH?Lf|AXJ|_xu!(Ppx*tAYxnS&K}klHtY=|4hU&>gEp|%W3$;~Ff9K^a@*~wXNHwIs zQOAo%!u)^JuEUIuA;%vM_Ms)J<7MSEgjiV+_HUbi=X^HpEC}8~@;23U zN?YO&oqM10xvlh9CnGC?_u_h6cBL4zj@KNkTiR3k(&)Bn>_wePv3eF-qPHX~7htoM zp}-n;jscI|&Q@S1*{b7ZX(Y{1uqy)bUYto_TcWCU2_p>Ze%h?5N)`m~W&2=;-r$~z zz}K`d^lR1V?=)$k1UY>*ry-5yBgXP!=P}@3sQurlCR#ph{-5`<^8#4gwxnqp2IiNA zs3u2Ws?D)JU2~&aM_}IXeRk~~?lX#gG%3$uUzi+Cby#A@lvFyC?p@x(s3+2Tc2^%- zqI|W1!LkSO?c%_1I_`ybvA!48fjm`LPM~gr7ZU3$9X;!IZ6)?m#gnGDy8Fbn8)A$(z9347^KF1%W~J<RK9ShMJicycbI_Z$dqT@2pIV+n>yOWPHWhxe~0++p3Q@mc~2MKnZWNHv7Yj z26Cjj82RdN^u@ugucxo*6C! z>*WYX30CMrOSC3K-}zHA^_GkxTk zRaiJm&>vdTv=OsivL#)K9n$Rz$NE=O^VBr1#32>Kl@5tisjz+tIh(Hb_3O(hmA|lJ z7FwcTRPy%nIn|T7o#(C7zFw=hDz8+`Qu{&Hpw7LKbX}Fsd0MG|W&fhMniX22DB00q zS&F)C-s-=@IqLWN#@I)ct)f)P!akAo7QQE!Oiei^JN`%`Q1bShnnsSvz6(`-Xo*%0 zO6HWS=*Tk^iF5j_-}x`GmA?MYc~n??i{gXD(#c$lLS)BcDb%W5FhaCMZ)6u5%Z2o- zU3NIcf#(26g`=hT$EFH0l#cw&xeiK~O03F;mNYFNbq790&-3ctQ!6#Luqu~Y$Lr$2 z&N2n{iQ9Mfo)aZ_4zOAmMSeQJ(bLfE_Q)Ts_=upp5BD-1|_cbU^uTG=-P%5X=K@ux8VdW-zejHCD zE7M$U+nY4GHq89rCgd-l6BDr$N-wV5LJI_U%JU)S+VJAk*3B6$HhtG!n$WNHHJP(X4v%v{VvA7O6IHd zgXzQ8CX#%E>7#ZMAMDT8W*`4)?0H+-$?rbp!p9n;viHIf@)`gi6Zi1bw9ao#4Hs#k zgtudFCNuUze{>h!vpBpn<&x#v_-De~3OkJ4uB_`{N<0o#BmIrV;cZD{{oFqjx{Wv` z&is|kw{KRU4?B9IKO!LF7KcZWM)2>d545XlT-$GsYTn>K6VNV>P}Qig>!4%oK3Xp+ zJl-G&!Yh52%oN0yNbQ<9{foS|ZH~lFpPJUQL`rA>Gg0#My=|Q{Qs;6>Y?y31^dmiant&3KQM*i-YaUxo_cfLqK362CU5wl&Wn&Zbf z%5bZb$%A&&olWivq6z}{w}d*?OufXHKR62ajgc|2jYCm_{?HOt1X>yBsC+s`o;Y~5a09CWP^J;VGyx%t& z9ZyfS*&r|jP_6tWiX?^|B8`f*{#5FbVZI_-;$H^;#men>+wa1>#JZskjO+N+%&acV z5;XU>a}-g68HZ?zzKYIt&}Yzn_sgaV;@tGb#uH%ch#((!5LNHgBTk2S_t5kF?q7|S zJ2l?h(GtZu*Ot*=ebI}Y))_HjeS2aXCY(K_7lKyNTT&;93=6@zYVGtNioxqLpXpNRhG zD>awqCX`fiU$r&8y__Mt>`fgPS|XC1 zdYNXS&ZO0MWl}22VGTO$Yf2fp7n^vZ-qZc+n{sZHV9h(MO-Eh8!=z{P6RMIHG|C;3 zuZB_2PAn>I@aB~VCi5|Gjuq@EyT4_eCx-H!zaKG6>1B#`(Gsz0Hx76w{Shr|SIlit z_Xo3RK7;1}?xay4E_B=k7gkRrQnt6-8}}$$uDE_esjG&S*s!J>RT`R*S`YR{$!lrT z8(9!jsh=q4N0c3NdS>eF-=cHyM2JIb`^OSRj=^<73b2UmOJzMojTO&!&&ZfW&< zOQU4k;A9@O+qB99!^clCbB#O}wq)k9WEq`W50Fu^_W;V^fxe$O60}6?4D~YTSI0-m zJHyVp(XRi9hlY=U(o0-w*6-N1Y4v@}qvVlH)0E6&^oN#c_2WfGea|pDj?0tXX!mf@ zM~06HxmUR`FPYx@oEh|P6Qg9;73JJ0!I7XPP5WVpL+%X;*R|C}1ZGPv`nHVke6O)` z#PU5Zg_F`UUvbD@kHYkhC5s4@APC`)Ki2PwL@c4iHI;=~L<%nZbQMe3^CxP#PY zwRZl#?P~_8k;%w*cg&t5IG+vEDpq zSMm3?GYKfc+%C*Y)3oB06<^02BMSfZ*~p`}vt8~}Ry=2Rq^7KR%mtzKD>L(6+^U*j z~xiU1`ZG1C@|S37)$y`zF*9Lnqa})~H8iRei0C=#jJgIkJ&0m=gHPO{^kXGDqdToy!?VqeAaEDrCy2`o*YT z2|@dE>2GpI36!jQ`AUz?)5$R}(LWI_nLd^f8?}kpsOQxi8k|*8qF9ktLWarI_=7Z7 zB%!I0(n3pArFl*_$JW`wvf&M)srpS2>jyjKrS~Zkk#thIrEY1uJARrIEDKyCj*RXy zcJC`36kCbWe(R+h+8&A84Qiqq@k8vRkllYXYg zcG5rz+C@v6Ho3j|s~?kunLv^Qc(zr?*DB*4U45B4k z>+56k42NlUnJHlJHj%(%=WVn^T;Cv5V+?7agtu9nuM)IGono!nb`C4H&3oDLY~JQ5 zvKn`uZ)p@x65CFCZfr}Gp>VI5yi5`IIa4dk**{SaW};B8EF7vt+|?L;&Z~hk9Yyu0 z^{=hO=&|}9TA~b|#KE!^kpr_T&QN08b~Iz!_zp&uJRX%9cYZ;%OP4{p^e@4?jmmho z1gr0qW2C3!`1?XH9qrl?tjK(3Ej_lxac+w06OUmW$KT71NVP4&*fv_yv}9J? z`H&TNwlz3X$=h~yIb+S*h;4tiV%t}&xU((6XgF`%mWZMXNhklLb%q%wQb>#zM_AFN z#{D}h5q|pSER|C}rd6EUh2xaYS$15FBh_e0(^ACel8CmF>k(5@Yi`h1|HPo3Sr zDH3;x)?}{t+o7C6WDU>~5fCNf^&%8YO>wALI7Xyh?|K`t)XAG7d=XFj8!^@aT|3hG zxKnDpUWH<*l?y-iq6Ei|mWXaUaaJ#!xwkCu^$)`c_^O1iMl3a5R97GRqc6zI^Yuy; zOC5g3Uq=brMN67?uhScSJBjW>8cSn;sI6&lwkDU&X#FY~^<_Z`#^})!oe#R}kSFam zMcnav#b`K2$yE)Mu(o|2qa~_-(RH*uL9E)V~% zaoUkc`HbRG*M8pYMaliSrHngK^_*rkMB5U@oga;s$z!QfVT(X7?uC^K)w+Y1PK}m- zQQxJQ)~}WNi5UAwOVpFKKn?kv))PZdP1EhVgZn--@?oVyweH|)s#KVj&Ux7qKY3AN zS1RP1iD-!`C{qWp-|3uBcsfyq zUYoA=Rd1R*Vuv<2es>>R*8l2*yNuy6QQTn4HoXne2`3BnccSFf=i0_Eifc5YC3@5U zW~T0Bl%p9CbZ@f23?(Dxi93{wND3-JpHB#vbJEP>I?SF>jUZ{O| zeQWdnxTHGyc-?!T{>us?ekVB{C_!2TEz$Q!>m|lqMSb_TqJiDgkRqYgs8sXyZ8TTW zlNUHqf|;Wt%DWcE)m}0t%olVz!q8q38b;?MU*Q>gUb+&emMP^#2{I*UiRz>h71o!c zGSfzsRQMA6iPJBAQtIX6fc$bW{mw6bSfr3O_Vb*H6qPS=JgKP%(CjvPuuS1(aD?^~ zwP9!|9Y@!bL-am0yQywwccKLC;xW3-;;IaU3xl~J6hj~5+qX460HCBlgkw2PKB?drReRK>iv6oIQ9voDV| z#(v&Y);IgFW6Y0=ABxc?8vx&7^ZX&?5bLx1#s)qbQmD;@dy zb-SG?LAz*)s`cdFqO(SmhshNmGxAI`j>-2^2_N>Tqm}JWHS{1FRjJ)gmF{&oD%D5# zoCkDCNB(O_kQ41T?ec?h&dYWR@nI)BP5b4C2;+VgmS?aNB{&kaM4goX^w%Tke5|}U z-`OGMkH*-qJSpbG?saI1-jIj;hb^R0-9L3!@qwd4OT;JM&92v?BY$yXh!cq>B&cHN z&o|D~orlHgH`wsOGCc*&ZquhVohT`}V4*R>b8CwF&=U0%&h^;K=X_x4@rnlez+=+1 z)hCOE=O7>9`ZSuWB8z%EQBpVm zBI68R>0j7~mZ)#Wld1YDdQW_krGgTvzR@kth>Yhsme+^$7BP2c4tej;_u!L^Wt2{T z7~57O)yGax)1T2@bVR`#0_`#h#(fm~T+icEsjx@EKY6)}>yxzM3VDVjK}(vpIr}w7 zb9&R?MdTUU+WVvTYnMVK#3;rv@=$m|qT6N@-G&lg>*MbMrrXdGRplx_&#{h})WX!` z5D7EXMt^h$zs>9XM5_j`sE;B_JiYcA`3A4`K!YP=e`asMOq)%{%VDuYfO)6{yaAYXqZJQlq zZQBxYOT*38!LkQO3tk0e$$|BOM&{hVCz2W4$bL~5C2Ku#H)*h4n>Irqs>ZmX5l-id zRJ$8m8um!gpQ@4j-4e%%8ZmNEU~M;2VYnA-+auJpxZFz}qe&y*_oR{Kj+m7_nXgN- ze7;jH{}zR`WWIEBDOV%+8F7}_xNj@Jq;KHQnU^|#B#n!qst>fAv)FlYab+^!qUO2j z?z1n`QpY^fxOK6XyYS@eVrq?KzBXU-_|Tu~qfgcKdMHS(7%n9?d|KkiKJuaD~898{-{?`n5og1G?a5d=bttB{IiCwP2Dz0 zW1eVIsYMbWsI6+qW<{M1rjL~uzA5j)Md#1BaQIXWRXOUA;gjSlN3{Au8VyOKyua!L?WW7~uV@vh z`4;8jPO%@qE9%Tl8v7&4d9>pn#p5fVWx<-kKJ=&h2xwZ=*?}~!rBi*N-E*nmiNlk= z$mVOg<83<{RTI*vT%f$-1MR9B;rmiL@9v9|0|qYk;9kg9;v8z)Hfwf!q$;my;9jba zEbd;;MnR)x?&8_JXm{VM+2sN zP=YijTB7y#8YP|a&apCZ!$XDsMD6IQ*<9xwpJcbIcPPeCGW|2hcVW>oFnR%X4lGBU*xd(1{D48-g$!K!>AbfXOUTCGK(|L53fZWvajw2r3(g*5G@gTT`pUAp-(Y#TdTBTH!?04 zIg|VOvW$8pkP$_qmGacaUk$556l>wIYGEkBQK2R3SCk_leACAmIVyTi7}~|XeD7z7 zJ1>*@E(Hg;=+3aDPWT}r=q^5P6NVDxUeS_f{1G!j*FBLVK*t7Y#SBt5-*;tP$P}6y zOv)ZCKWG<9keWqHns#N_2FH)|_F8z_N#%VP-(EMTS#G?MFB>21qj%BBh2B>5hCHp= zDkn;iVpZRFZ#P}%_=euX-_MP6;$EnIJjWX2+hAip?q=TW!#Hnydee_7H{FR6Bv;Xr zrnRni#9N!c4USH7B72G&Xo<40w@)@Q!%lUKR(xo!e=&}BZ>}Ofv_x^v@Ba2Spd;5? zFL5G=s_X^Y#N16-py#D%#=oiNJJD{1yz7l`gQr?SA6laKl7PZaJ|7M0?N@xD#>Ak_ z#t7?9=6n0mBVnGlG^%2&);dvw6szi^&JQ`9pJ`RCecBC9+zYjH4%}g!k7+yjoM*h2 z-P4?ASGzLHi4y$gKuenOXJ5O>p(448SE#C?NV4=Xc-qd;-2t(}>pP(sAj`I@7qn-0tK;OBDZTcGcaNMs+9hFNOGB^-m5N zkjBrqgXv#5K6+cCsia~l%CbZ@7`@PPU+UnRg-OgSEX@(uW`YX|9*_@Gj^{V?XKF@*YJ_` zWha9KWNoerO)II6W1cFHV&vJPGnI}y*c}=z5lQ~yuIK%o7@24GK{wiMx+%)=amh2( zh5dNwouTvv&uAJ|y><)TD8UXsXo*Jk>Xm2d%^2CP_$fEqy?XO%Gv zm77hVQTKB$g#GCCjJ`CGY;wKA>S zd(OP0>+1LV#BBf9gB-66^?Wo+HrZQlNQ`V=|ExPF5YfmttNn`nH_!A|iHMOu`UHqX_SeOWvR#qUE6yRPPnYZq)9z`!B=C zGJozkb^pXwZ;5Cc)!8O)lpwQ>mWZ-gv{rZa9wPg^FPwngnXs2s!%1d`s|`cAQ&T7J zTK!pq&J6z@L#Xc5(YNKy26De0^dQ$yC|y#iIoMp(RaQ z(RQs~B4CJY(egV79xaaQ@jzOqY4}=3r{&Hk+ZwIW$JHAm-FX^2P=fuV&=TbvtX!o> z-WVXa{qwC;*$eCj)$;dM>iJ4$NW&ec($ra@|2l1;{4RBACrYsU6k4L%pZ)&Q=N)b> z_4V7GErT-qP93@@L&ofIVgD#*&+VS>#D#agq`%M6N_G$4rF5J^A83iz6Sw%uxCh1M zubwm_{JUJffZFF}uNHAG?7@UxnT+n%_*(RHB;C}{_oStsyUwNbrzNrC_#T{iAFWOfgF=+u|6PYYJnrc zJO=D5MeFVJ8_4g!U99*1luDok$BveWHCS6*j+-`CPn*4hl4*f^ooiLXSH1C1@*`KI z)vC@cE=z42qc;$gcLx&8&A<_A+Oq`>W$?fY;nk>OFV^3+>f}1PVz1giDv~Ppu6c1f zylC35HGYlWS6HzZEm0ko7xiWPI*T0lsA4bL)u>``h1KZ=SL{{$N9Ci6y`lLQIhs+$ zUX*%h4mg83#?joXczb5J6!hK=S2^?R}#HL_r$xa zi-`|(Peci3385vr@6x^fhr_MKGrG59{t#;Lo%-~ldxG!zl*!uVlCI@!C6>~?9VL8k z_wWBia9=~TMDHck-SGltBHh@OI)R^FoPESy95E9~%`0j`-5o2Q?IKoXpQ`lp!fsh; zi8{YicgG3~x`?#9YuddU1$S}8y--`z>QQ&ci8s55VwJ;`eqPv}%X$tPmS{!z-F-c( zOoX^!r-;$3(LP$-3$-c7gt|L+^#5Mepze++!TG^?)3n~yHMDK7A>zw~SfdB1ovFod zFWlkENnJzL9#z~m^z^(T;?kGQN*^rD;KG@vw+!kU+OK@1$kuX-(F4@B%Wp5-8H&4x zVizsC+No=3gGP~}?ct(EHX!fC{k3o;I6|s6ealZDMjfaA_3ScoE$z-y*l|kjQPq8X zYQ2;PtG=J_2bK<#HGM##(TTH7iz0>b+2v){nq#>;XmZ8GFL(LM$X!t zYl;4-8i^x=-fLnMb(|{a#=X!ko*Sy^^gN@!e^``Ac4M-UIcc9YetTsfoNI}es1{OR zw|B>*Xffr&2{-nr!v0$7?5@6bz#IEVv{+F!x6%QOzr46}7U$QZC8BZZo3s3o7%`&3 zStT0~_d;#z+)Lk_l_O$A(|kERDB*8F&L!k;PBj~F^Mi`sGJ1??k#e6KvkY-B)TTVR z*Ty%eD0DQ12POQ?$=QdM=qnyA(eJ$ZG0)3~)N!iJdZkAduSTSx4p6*a!e86G?WC+` zst8owST7OxX}ts`*kwxXgEgl91yA1lG2-&ny-FS=uST$4UN1p^)c>Q#F;C@3G2$Gp zm!Jggs=1b3-`w@QyAva}tv;yC6|Y9H4_+@pf7Fq!!UfMr8dWV?FF^^~Rp+X7(>Tv~ z%G8UCouwQ(_Qb+2TAH>}NYADxF=AHkQA+PKoGY9|n%zfDJY(O-h!X+y`+#0syb|)Y zA5Zs%#`eao_bE0pM%MCVrp{SsW@a)n)_E_MV7Dx^q-hVR=JG$gM~l2vbD3)^{~udd z0UbrMwHpu4;=u{NxJxo!gFUi1EVf7>IKkaB5Zo=eB)Bgw$xL@m(4Ywpiv?et1PlJ( z>Yir53V+Ud=k;>?-dioxQvJy}zuQb`Iisr;IuX&#M8I3yz;mOS&~?TLI&EMjMLA2_ z(W4&@WxGi`8tY1HnQGI_RGY5TBego>>QL5+^r<~+(?$ecw6Kz*xMIrNPV5h2VWfdA zw63?={$@gf8@aEt57s18XPXI~ZH!Vi;;VnRLm_-E%IxBW#m>SMsD*Yj9jdXmCPP%kKI(a z5gV{jtMzIPns*ocLFDaXKQkkoGPZj7gVv}7f6&UtN{TXUbJ|GdbP2YNlq>;tLeV+6U#Sc%T|6UQTO-z&jxlX5-QMRyg+&4qwu8JtC8O0ZO< zj*k)SCsk6C6*1=9Sr?jbN6s<+2E}Zo_@xEWJUrbw#~btQ?8MNU#yqtZLB2CqB3As5 z49+XW6aFKij5QZ-Uq$oZVkZ4;h2-`Xq-7y9q^tXzoazpwmw^%N;h76JE18GT!;qF( z(Waxk!LRmwfv`&|9&}ZqJDjQSVMLHEjg>qtJUx)(jNE6;{x4(qqnrCN;`v@@7rHo7 zC8eDCos(T{m)`nnY4~g5TAuHbcJcj_W+uiN-#OWZdbO=Dqeeu0=WLZZxgE5Aj7r4k z%o62$;=6-I*0^FQ0$FPzzgqU%x)^uIcOYfFy|<$lMv&c&{RqDswbieAyo1&7n`3<8 zwOqe&EzcKTyZE9^o_g6A`~8oY-Wls{wZ0-75oCJf2o)t{wV|HGzA48erL{;ssd+Ei<@3$-Tl$FVb8zQYd2Nj(W8$RNi`igJjwsrp_V&lcQ0;1nnX%OPt5VR2r( zQ|y63@m%)W`n>OiZNiaYcDi_o3nNoW|7ympA57?9VI@VWHR8B!-uYm*+9y5|*TQV{ z_M-RNtg~$8yE)j4qpe&R5%_|CdMS3He}$EZ`x-yPR-&(ieIMGi7OsWaxEDyTuV`)C z-2D!=v|$z(MsUAjB}F-3a-nLs4`&VY-f|^=&ulN@e9tD|DCtHIFL}%Nz3i^zg!d#KL~L zP~8?gjHP(fUBd|0#Y*)4VLPR^Tpz>^q+hB9?M`XWG3FKPuxOeaJ-o0V?cJ2S)n35^ z+2|>oBwsSDiIS1q5c8*7m}pX5u1+aZr?&V^U1vNC{;%UxW@NXJsI+0{9>Sy-h*Zge;! z?D?7rkuR^_R2x(_-JmSTGQ5*b*xbmryOw#MSClj9Qbi8?dQ2=JI>oz?iwS zA~+W+^;4eh&BynayRQWe^OtmS#C&3%ef9W&FNf{8O~i2foR41)zo(s2{h1Vjv7^F{ zqP+htJMZzVkpA*{V}`T98_tw<`_=Bt|2ONf9sAKd!=T(ecys~%bIcz`hBXqbiT@WH<7gm1(>7k$Cj91yerKr3f!XvOr*&68r{Zh9&i-st z56qS`{`F7L2Tcy-yB0?KqC=YfbBI1OV`koy{KM?$dg#;hWaNW|bDDDPuXx=-+YlW1toC+)W}&Sn_kg;wHIJ+Q8%(b?QIXs> zW||pT7hS*P9wOtPcA0+d0d;q8b*t0urW+j14)&i}BU;VmyiTLS9;gn3{X_@SZ}Vi} zzQVfUCHASeJjyg?M#1&J_7MI4%)XXyNT1YMu0y)z)nAmzVvGuVVBOg2tJOG z^nQ2ff6M;sVb#T75pEM{{Mu7RWSx}m*JBQK?L8c7sK;NAoE^%2sXqSPuRWxzfuy8U zeBQ~bWogUBSt7Qhm1k>lo8%r|duktc4*0bPssKs-l%_9gRd0UX%)lO4H+)!iHM_@U zkd%!kzdGQ5!WXcE*{G=-!)Wv@Eg*R~+&$ud7eKj_jA6}Qxy%1d=6(xwY zsRphORfB@%9;nJBk18W&T-+F{rWzynz`B@C{3se#$jVSPvqSEIBa}0~>^v4x^zuzT zk)Ha(r>9cG>7E+AJ;^=FJ;)ZfEi2D7QQT{XAKe$RkTUL2hWl%2b;bKM{O^mYjd`Cf z)fo>jmrB0FDXib-h%Z-e>eG|-z-;NBs7#Nm9I^BGO}!7z6p7gytFDyMudS*SPtG5I z7o#c?+b&|>iJN+5%0NFr%&stZo@$SItY;Z0JXs@dl#EzMJ^Ci;VTZbMhB)8z?)BD} zd6U~_+lI!SvlVHAq2?88VUeHkwu9B2l(CR9FcMuoi;*o9#jp~6QA|J1R`Jvgy+!d} zeAUniEIjy#ex8#m7pP~U78cET>0@n8j^EJdmFOio7UHO|5}`i}+0;09VP5rsT~g)x zx9m!`rJx@V>6|iZ_wV6saPH}R>zW^K`Z7A#rrz9Jm{*LnbBv&l7mkoPCSOXbe@tz} zZ}rc?aV^Zw$2POag?I2eHxj5v!{Q~?d#f7p`~f*QM#PM#<%Ecp=!<)etm>@%z4-q9 zF*;_Tv!LWfs5~B?U2UDK7oQvyqhkbnNR^bJDNEEHJ^Ju_uNO-GgV>|{%;W5QU6WB6$|6=VJTt;jTqGM*Qd5JYVzg!%|H_{s?}OLp+~(qa(DR&*UBr$^hu#%#XcAKFOC$!tdT4D=DEsHZMwA)ZO&d`T5GK4-H zMw0fkDk+MMTo=ZY(?*Ebcu7$%X%FGx^zTe@JX&YCqfH?0>-Dl@j2>15j}0D8y5`O| zIiox1EWs@l%hs_$Cqwe7US?*@rVLb(Lv=YhqxziBwx*|t9ysL5u+-_WpPWG|X~z4K zP)WnOf&pr&q={v51WgY&QerbQgc2J@M7CH<{64S}-Om?JH!?<%a+Y9Zin>BeO)w`% zefZ9WpPN_~|1OqEgKpS#bwZh(&VHJiVfj9yA0%cI%6pO7qid2LqMwy5XY?LuvSp`} ziV}`WEQ{^1)c5||@-R=vWXixT$9;vB6y@2aL$)I1Z}9q7QOVbG%d9x&Rqi_<(tV6u zFhgJ2zw@9qV`$3{@I$uFl#!M)aBI;)Qr?d07Z2Hfr;MF95*>10KL8M3m0m3gcn`k zO)XCuXTn=*f{~eL_%|+8{cy{1n-rygcsI2(WxSyb!Q0$1?<+4r?vChXDfehZJt|Vh z(hYJ3_LF;*Ue`^nM;U3>${Dy8_My#nq~@Q#CbB6=3}C@wlY8ja$*WcgZ(Wy?oXoQdY%E#=8rl0>5sRUO5$ zRf%TqI^EaL(j6z^Vi&`0(~6+tV(g%~#vNxu=qNgZ1+FCLf72bOdkJzOg2;=yGYuYn zn?FVx9-vkwx~m;c(6`eyao?nllCLFZV?Sciku%;5QWv{QPI(wXCrot6BxL`N@_G|e z()mE{R_MHlUX6B-8$;^M;!Mo)V85#}sVz7b*f~a`J-!e*ON>n7?zru2N4-2LA;j#c zB5eou!)%(Nzg$wYk-FG~YfU*udXqDd@NhdwzYlpkCVe&iIlaiAQ#><>y(q4ns2quk zlJun^nW=zzE{UEcK5<|rMS1nGlfISI7GmC+PMD&HrC}+S#r6DFn~jDqVZ9~dy1O9r zGQBT(PQH0JkV_Gd$HbQFW0UAvW*oUw-$iGMeQ^-C{2#NiNc?cU-c z93zrWCiJ6chRnV^5AEI6=lAI7gef#+#NN&Qqo3Q-tl4rth_>U)ncw(V@~8^)f1_gr zz3;FRxut34`D;2$?q6N4<64+4tM8>Al95-VGqH4?%Q{9-uMaB`W+G;fev33Y^3(Q| z3?6Q1ebl<&-_Z22wnHA(rG{_xP&yMkp8id8^hCc*tVG<`ORM$nv>lCjc^-Z?*l@vk zs1I=CT9_?n1~2QGXggd(GfIx0=+B9j2!(Y0iC%d@E&bep&W1v)IG4nAsmqxuhHL1D zdL!KP$4)fPtKUlvr{i(HTN+-OoG`s^w&oZ??@Xa*YE@E{k-z!yQ;Tcqd6(Oz3{)XS zbyE5sb>uhRka{$D*_2}hdth(!|M-xPpClcxxGr~ftZOOhD7OZ=TFf@oyB#+!qV|Gf) zs+f_bO-1AWvHwC_>hWaB5T4mtOHWsyc(xEheMwm-b;$W4dNX2~b|5VwR31gOP)pg& z)E8~=yq;c-n8n#iO9&&DN}5l%j&7_(_d!y76Z(mNk0NZx6t$GUg!X5&N1N-eLM?Qgx)grdVqUT~1V|wEo@Hv;6kZOLvlT zBxZ<+`{XD?k@8nv&U($f^d_WEx!}zRUu(R=%hakX`e8QR2fbspi===#D$OLD6afWH ztVC)gZ&K=iP>*H_34W-!D5*M1nwjTk?A0{tF{ap78>(KmIyb{m*(|xco*OHXJ6E|7 zJs%y9OGRJUP~i`i3awwWscl%6l!r^v@d%48<-&-i_v@EX?WaesP+z1T|1758-VomQ zl9!~{hy5^{t_&A0>4WGuxTUn06C>7dP$>M#dVLA!UmJV3%Cj4OsDM}W(n4d)gPEVZ z)o*i+qgiQGH5%2{nkTeow0CDTciJ$5>U&s;W+qmb(YMffHEu;2NlOov@i3ddhOdg! z_R)D2u`Ehb5yXC|c}Hr9&74|m8dXe<6E;+*!?iG5QQ9Wna2=y#UW$}YF!C^Lxv}MW zZq#sNCGsYpAE#ZRjFp4@r5>2EyV_D?Uky2A;2PpqYxQYV*?ZivVFb19 z<2vOF8`^D_x*RF?UYe<9r)Qtsq(O(OZrHD1ZtbV$9qHB8LGmiLRE3A{Ae(Y$55mb~Db8_N&*VLd(?ooTI>CuN15urOL z=9a{=(1a7q|LMbF21Za(4*QXkj>m7JZxVetk!|U?VI@WBN@{Q7{?yc?_GWb#vs_}? zQkN6iVwt|m{Q1?$c;pUXsPKhKTw)eSWSDwnE>FfT%D{+Nwp7co57I(hq z0=GzLL&7H($T6C4AbcW5P|Zr#rV1;&#V_HNgRlAOkMkU5Out_}5+hymcyZy|IBovWBw8;C&2KvcNx3CW1I3B@E~wTb ztHTT`{nTlrjMej>OQXtCuDqcR^Y(gx9V;oy@^&3uC+V2a+|*jq7D1&DIU`5L-mVgq z(d;RcMupldvbKntr?*R?jKTARWUUv_tich|_o(>ct_Fz?{_IQ(Cq@LvNGQ-)Y$r>N zhB8u&a228qTmA8p)(d7gpI^_|3mevm%VwAyW zO_8)-Fx!5pt9FWgBcPG?aHoT>`+C-i5$uN}r02xvZ(SPc;zTVzA*tNpmhav= z$I!1Cy;k%Xa$M2$I}Sc6#}+3>upf?)P%qg+^<4M5aL2JD2ER5{|Ciig6N7$5zI0yh zJgZ*vJ);B{xn<0J{ojsVdHcq?iV@V7K+OrlOoW`%ulG;E|1ML9p(X<=MQq9H?H;rz zn*Xy$aNIvEJ*$@;pOWX_Tbp47wHmMzp(e{l5<|Ks?+}nv(y~Bh3LGKnQ;*!QU#(Gt z|5?JDVI<|#EN-99clgQ9`|UVF6Y*Q9?=e4t_(e4WMEuGa;n{>L9#iI|-*7?|V?>~e zM?;_mMSTQ2j}MfM;A~J zdQipW6l&-t;98hXjyhSh^Wo15sSiBJWvi}0F4w8ums!YVs}j9I&iEDbj<&^Mn61rARCjWoTa^ECVdmCCvjUw9VT`P}a0d>npVgwoFSc#adK3VjsL&vi& zS)WAUT9_>qj|8(kg`tJ?`B7$l`|$B>&iB%h7(xCyR-!AzxO3XQeZlO+!z+>=0J81H z9ZoRIPa8U3F?Wt>cZq-A?60gYj37^3W~`rneOX(zGME)^cwEv0K(@Wm+Y&vB8#-PS zXP(op?hR($N%;#S*bhfYN}i<3^~@k6Z&EIoN}uYmBEQi$RWjaOBhz*5I!Wu9!~_ zc9&G^kkO4iQRI&jSN~r_8INu2UDVLIv)J9p)y7Kng_jU?GxGOhe-nZZ8Oz9)&O#`? zr-gSg6Qvh0BD>l$S1&f45Of$pUb0k4Nt?NcZTiCEtOz-J9wQXv{=q5}9-zo3MwT&Q z2WNG+?VVqowIJ6}j3D0`D=Eg`7Gf4}AuOlBJqk8)N#Y_Sv-npo@_ou!P8k@%QDG&T z{aCfOM&e#?b-uuI0^hmIksWHgu(axtd0vFlT&qSmE~dT<7EZC>U#~yp-s!C#qYOlR zx>KGp-ogcTw8Hu$YMgg~Z8iC`(ya5@zYdk79!rz-z_qZSx#ey4d8@ONWZ;%#Z<>MJ zIjdSb>aiqA2Cjwu6lL&&>Jhgu-c_UZUkVlN{X8P9zB?p*PUB+GNXOE9lsNN+_NUBV9zGzOGnUv1 zt!Jpl`=IcR7K)_eEmbh2g}x}VrAf~+c}C||%4oZwh@nVo@u;z`c<20CNy+j1-KzAq z&33lWSQTr9|7K{h+JzP?@}TLhXyL3%^ghgTFFR)`51R~W;8bHJ^O%c_6P4cVM~*Xc zpXDBAj_GWT5znlFJwNFoV%O^iFDZ=x$vmZdw?LVq09#Z`%%n(ozSZ+rXjYjOLX zh%rYV3!>N+CHO&oww3(08{e0EU|l)m9rc(&J$h0G*2NLZ8Dh(u(zRp`T^SISj#mb} zu88$XqhXJ?8YZqKpyGg6POL<_gS#i&P8Q9rw_iPu=YADTGjnvu-r*I62z5lR6GnK- zWZQi2+8uIdjK6ZaMj+k~tsAE6E2ybhm?yPcAZ?d_$%XnC-7HdR3c(wUB#%xvY0*p4=+j>FC#-> zyf7k`MYiQ3ZB-&9pa;d;fl#ahfoUOP#j>a?(6NY5r8h`VMjH?ARjeg2UWh}*N`$i< zV$SJz^x$4acMI!kjS5Fg-_JcRG24^iUU4L1*{VdY(=|;uk4xn5j95;wEVfDDI>p?( zST-G@BRv_%C<7y6*}{%uCDPK%enBrm$g{LnyGe*f#3v#miN0+YOw?aQ*3!o%@4zvF z$Rimw`OoGZ+E~KF4JS`i#MWIez0E*6)jBmU34-oY%Ch=;!rY}K-&91me!BH zC?0IlTgSSHVY0rZW>_zJoas1HD@b45r)@l_V+8wQC7Q*__gY^|xTWsom5T@}#6!vW zt3dMK{e!*_{vbbIj0i6>frsmOWynu|HG#z~Z4y7$$KXmI)$3lUiLM)EuOL%9? zUzBl{JPw6Ae)8cxV52x6mT^v=T%kG1yng|~Ui1(Ij6g$WQY$IB+oue>^8sy>_#$up*ihd^-oht2RiPtTq4!7)QH-NJ&VtY4db$w@MDrzo_ST!yS+b1I z7K|XK2rJPH{fovt_voCwd-69n#QRvDqlq6{xe=E`*ug|!F0i#~!KE5T5XmD|QXZ$< zs+Xhfa81pnN*V2284igb^0#zb7#0(~Gw#-0!?ExoshDE~@jh6I&?4VkX&2X%W5}FR zehOe?#JA>|d&;^6769)vCe*Rhc{TRJcLOaF-@T3vBi0!%+)uHRq8yzPs2`&9YW9Uln}t;qE~nP-L%5$} zHqB+kf7LjhS9RyKuwexIVI|T?d7h{Vgizb30XD?q;98hXceVU;HJ!FR{BX3i9oFyT zgKGcz`!Ml7ox0!Ae5uEYN2?{5O7zkEdFH3{rF~U&sK3!8?b0|KMi7f5BWp6!Z*U#$ zt7c(oB!5opHz@Ev)-Ouni%2bW;{$C!?W>Cgm)S6a{cwcz{;@AwyGC2y!+WlT7D4RC zzZ=&Y$9(3?^3=oYX@J&orXSx`ocT$|a#xH61-`_+bPVKzFg&^y=VNNpKy zdE04$l7kC+zF;NNLMqr_T|n2}t%UtR^oCfrupfi=I)7qK6eT{srR@*8?k*yH2}Tf? zftBbTXWI_j+0a`0%2Q();ua7;F{t=i!)bh6n!L2HhW#j``V-o)Nw?7qBi8ekz)WBz zQla%c`viCp5aNl&!Z28P29a&y9OMj)U=Qor$3#F(^01x8MvP$M$xEORgy)=CODret zM^8(hXSjBhA=a`+BC^G@$i_;UZw@dJDOLnAC0L2Ru}m=$DFc!sQlPHL7W>fbkaW;6C~T*DT|zOsDnaLa{foX9Y}=z4iFK2ioo&{+=m zG~GY=A@xY50X&)aQVo$V-A@;?AFl9<=VRu7%kdiu%~q0^fM<%+2W7eSf&!Ry4PRFF!upi4pX3!%F1ue7KaY z{9y;LrSA1Z91*&+_3QSGk@A~6|HW6-?%Z|D<;BP3O>p7U*U2+!bObD1ATV*6$^T=Dv4_?zJf>AE}fw%@Wi2j3St!Vl3+ zII6hN{j6+F@&HW~{%X~}WwV`(b?`RxRX>a%(g`am%G~wi{rm{~F{s5(Uql-r3JDQV zG>bE7sb7Nx2X~Ci?1zy-TUxO+my)?#6#m1Gl@!mPiH%YUpE8`R-gWP6mrzK*;Fbi^ z>Co345^hPVi-Ro#A>6zj83*T+%afWw&d>SAG-Jy+sXXv@)d+!A4DZ@T-oAJg{ zsZA9(Rw9430$Yuz*V{ApN6OX3dWN#;$}a&%2}r+n*bMWgb2ol=z|;E*QwaE?>8 zvGiP0qW?h2$qc>E&_zvA9q8MBUVqzZ&*KS2Mcq4nF8=OQUKvD7A!?#kDY7 zQSw|bZ#z!=>W`g|Y#51tz0cTJS$kG?%V=Elpqs}WQDKN9laBw-vt(WG$OBTO)nu2z zs+Eo)9GQeX``hP((~D4H{d;_iM6?;=mJlaJvpD6SIxAB~_Vno`{1u|ju#%#z2rM`-|IxSNL2cP)vFDFLOg9-Z)p1SHCE!X&9z9zXEiEB0g$Mkc0)L^3>U5V&R zT*PhdBzZf1d7jevMn65xcP^Za(BTLx5%Z;7J3arE(Y)T0K%2l9ysP_>3lArO1K7~? z3m0BXyNi71ZT|esLy`%oZu@;CK}f7?XQGj{}!$y;5;2>K&oCDJw6IZRI##dxub1sI~V5WR(nG)2j^xsM(( zPUYS7LJT8ckEU_6cMrH8xZjSIXx91BWPSYOw7g}-CQ^@gJF~dY+hh5%=!14dq|qE% z$C-NSO6hs)-i;)z8e+%f9-q|={LaMX`tmoVW(BTB=sx7tzPLLeOE_PV>oD!BKg(s{ zRqCzO|Jc}oVFW#Yuo58$j$P6xWZAASjcq5nC?SGwRH;JlKIM1t?%hO>J=auEbBF>(?t6nk_1KE#IllFUESUN&YVg&I;SczDTginml zRg-NYd?MCG&len_qI@QNVy>DsSaQNAVkC=+Ph=+upNN&nJ2NU&>)FD=8dtb&_zwz1 ziom@hvPN9z>Dq2Lajy?eq%2Dvk;#P-$+H2xCkQo3DAor%>HGPcvj*-})UxojR^1AO zdllFg6Zcx~ja_STz`+Lp^Tmk~#I0aIdKNvRX#9?YZA!OA!pUH^K(`Wd**?a=z4m=$ zAZ1zikP`;()rttDtc9$>ex&zG2<&2nlSxQq5>5tP9uN~iI*=VZxS}az)S}i-j3B;1 z#>uRR8}9le(ZNc%TS)E^0ue1nB@o!2X9l}Km6JE1iSlNT{|vI88H@<_!x7R9WXBL! zi;v{ZQ7lk$k3byJ1QWAuH!<5o6NbAA)2NEq81KXgjs!`m_D`JkYF~=`PQNyF5m)E>>*}~tV*PT9obv`v(RW3_jG9HHu>!hwza=ISirYXr)M6H4U1^Ra4pQHd7mzmY@bItScP9*vxZ~pR>&Ad>;jUEbkY!s!-g+prUVgs1Vd!;dlY`HlE(HwF_ zg;z|>A!8-FGSD1yzcC}(Z-a768F)MrXx91mptsDNb?!&=)X|j&u!=NKjS=i2kE+s# zw9Ij+4LkNvn07jI4tvL#N6bH{gByJsaGU5%JovBrDXJ?Q)7q_J1jmk*6s6f;d076w z4Oxwl8(QSOjP_|;5&8k0`9ALcBTM^t^+zT`tMY9IGLTl0SWSUjm9j*COMhEqOzNkGu;RVyK7Rt$k zd!~-UY(*Iu8LgG1jFK!#4^T&!GsJ!_y*`t#(7H$DGUAZMGNG86Q2ZC`D@qwp21Yzs zXJaj_MA~ij>qnM}$mG04J-Wmec8dyLDOl8m^M&1i^bhCNGRa73dTy&-Ke9L}@QVz@ zP-9)JBr1~kYty^VvGmNFG{Y8=-`%vV>GEJL(-qFYaaEfqLu`i?5zCej0al`?r5--~ z--q>?|J)E?dt!_pow}h~E;)+@kIo7A!UdD zVp@p0m$H*&P>%G%YN9*EH?#SFhrBwPQAV7YVDYm1+IA zIw7;bg-o4AbMQFf`|9iC)1luJMku?4Acfi1f|NO4#=6L2h^P~J)`b_ ze5?8?yU0ivS~S9&dhAPrR+rY2db}B2E27$6Z}ooC3~=g^vXx40;`Oa30@_Ft<35Dw4@WFhv(Z_J*@Q3+iq|Vg1+tpwzHpqw~#D&GrYl*cT)>Q`g+pj&QEzWFajH#}=Jij9BC--Py$-% zaqNDL;yzx!x9I9KA?CEr?Kv~Tp`YC2_2qKa@&*6e1MA{BM(qCFc@B!JsMvDsfpx{Q zwMU3u(|PH^7yo4P6;3o_|5y>JZd@6CT;fKxIi1Jm@km^3_E5s>`wgNA>J_<|oE^d`Ls|>( zwNl2zHKA&)&%^k`d|r|0b}|9i0*4YsX-^r=DI+S6oPll?I9htr4-ZuniHTG$vz&oz zN&S?(J$=}MhxPfO1tAhwM&jmxF9fmAdibz?l<`JnKm=W4kaeRdZ`;PJ6;A~6z|lFS z4BQKttteaC#jD9EgHr}NU*MKwwxW1bk3N*44olJld^+TeijmQ_KJ@H!cLq+k@P>)pEq(L8cBecyPv3Q3@WIY+F|}x7w0e zLKwlBO{`@8YJcrLvnMW9Yq;NApG+Bo?PT@9x^K=MQTyFou8%G$GQ{86J>L3C%D}pI_hr>x^Q-1w zLhd0_kE_)#AM_^2kmX5wVBJCXSk=C#y*@oa^tkpd{LnJ$u_j3mTnqb|qdHDK79`2Q zZNhB&f_1&Ex*~m6{o8_(963?qcvuc4^6~hmc3U+=U{*cz(vi|Jzg2gsF=MzkHElVt zt4R5)`$;u0d3HWtOXjLDVjhCei zjG)Je%-Z@`{c8jSXbVT z0PUb!s*a7@%Vm{DHK@Le^?J6MhrN8`mOVyn#}2BeYTNkoGFc_(6Wk8mK1Hcnex3R_ zwmnard{M``=r@86CG_smc7ysjv^{@$;ezFb&4o)gjszj$B z;iSfqYpiowC*Kxu$Bk?^MXCNg8MB8p<0;oJ)-i&tHfe-PRhlpHxnGsX(tHVW;>3JF z>h&>P%$L-n8J1;BZtzfJhNV2s$rMek^4F;<=@>y>c&tQfB>z@oW#^UU1!_yT+B0IKYG%qxr|4bEAeJDmw^$iD^*g?_4uIq93cdD>}ZY*C*&&$PZNQf7VJ7j zDb^s57DODZ2hT=JJ|^f&f|ck9CQR2`kzU_lS*u7sCYJ8twu__Pmd@eSQ=_N{i#@4T zCWY9|nagvGU=MWNpy%o3CVz0MhjD0)7rA}ND=R=+!@(PI?KJujB z|Hv_9GC76_mk`VU106%qt%TUJneW){EUBemBF7Mn2(7^#M~b?I&kI(fIhjhKwlnTp zdSP;j!L=}39@VW%`PFQ6JPMIZ3`Q)aLg5mFmFRvRGgBAJ^>cmd{<0l{gVjbK^HVue z92;_1DY`%lBaOxu8T>dNH9Q9LcAQRGR$W1yxD>>R!#!$Y=mif_;P=HoG+e>l`<&uvDVYUU!P&i)*th>diBvja9GoysafQVTB z=}JP`|M_MN3pF#^Ce6Sev@FgZ(`lorCnLZ!Dk~y-h~;0MPYN$KeM|~?7@*?ZwOF5G z+2VGJY_Ux9B_3pdND>BU(jHbNx-w*5rZVzrNdA7H;e2A%ZG0@&I1`0_Kkjv!BYWIQ zT|!6j0O>np1dpI#4_K85S@W041<20>xIpk*&LCo090Q>jk8DuVj&5gW{6!fULDnZ$ zB297+XY`zhWh&|lW~s;!`^RFLie-~!y3dnw!oxDPA_6xrvc+21n_R6t%8_T&1aX1K zx13rqL;SnQHXU4McyRi`l!0z1BEw>`Vm7IyI-LiD(#k!OW?Lhqull+3Fzu;7 zUqiF!c>fTy=aaX_aq$fS9ZKkIry2SJ4;atcG^36YyyIXc;xy2=iN`?=`JRd9w+X9m z$I|KSRk|hc>0<+v^l-t+wBAH6}2KBa!A9(&&J)^IKCC--R5sGad#`{a!m z7a3hQzccD$23As(RK&wk={Lp>b0Lu5xo}U#x@)vlM!zm;`?y#Amdf5S*?Yd?TOT^+!(w--FHQ{PD>Ba2 zl(S!1*Yk;d!(W5l*E@b@>1Tc7U3(6Z_B6e7p4+9aI608dNHbS*?ZJ^?Z@MPN>{8QF z#=#78HJ{3g-Cz62|6VuHjs0Y2AlKzxYJM73cow+_)|Iy-#IqfFX*;k7*3J4XnLUz! z;0v$xr!B8?YM0tFdLaKZwcG>i#?44!uXXi3AN95`WmLGdOYKRc>Yrp(xR%^wz~DXl zUE=UAIaQorp18o!Z~kZ8a5wt=$Zj`{&ZXl*33}flZ^=;y{c*4oeYGsQUoT2eeVNMU z<|TdR8v4yCw-0qAyC3_}+jgmxdqPW8@;vvhO@!nG_GM0N+A zJ<7Kh8*N#L?|fp>ejOv>=~f&3%942pyRj0fo;JCxe;kpMf4){x(j4eFV3Wb4A9HQA z8%IcI$+N%oW^@GiJgmZ{2>9-xdI5QDzmL(o69cq)*0ma{6rkn+GRqaEbNCe9MhsAW zhh4`AGRU!#qGYDy5KPCT_u3%IF$6tE(5*yKPS}g^Rdmct%sVUjm{i!N8por;^EPgD zs~}`e!=ritZO8l^MO9>}PpIF}V6v_$*vkDcFw5ziaQFsdm=59ofBU*HA~DE2)MRdY zS{8hFI(PHLYG;Wt(jeU=4f*F5AG}Sqrb&Dn#*(vxVEsPy9_d7%2Fuw&_(DjPlw$L} zwM)cU&os~5h8$)~{I0>LK1s#IoRz(!TP%e^e0}5E09Qktx;^*#>2 zShiTEVmnNhX-i)-qcdd~&$yn5c#alpS)5_35+NX3nNRv{J#9~>niN%w? z$Tpe9Pl=1%s9Wc18mdWMjT~eL@Y;7`N73n$V(p$T%*hPzmim=`>)_vW-S@=^axJlvIHSbh z1RmbI{DJ0&rx|?Cs-H=F9GH3%gU?K$3}XSc=V2sLB`E`0bjZ7t`u)tPJ?VN?jJWG3 zGuU|v#U|OYlA;tY^TGM`8*O>YY?4yC#LffO9vzRD$z10sV^79ZP6Z;UfsX7$!nY4> zq;)5S@#VHxl8QO1e_t=T&Cn$8;48R&oi4P}I&5n-nLJy)3y^Ea9YLmk;vymb{?_>30E+3 zy>`ExgLm@k9Ep*`DUTT}!-JJJ+OZOC`M4X}hQh%-%qPf(k=+fi@!rLL@ICjp+L2vH z-|i~j(gO1b^X^N!OT0T|>R~0}sH5szoA%`SYMwUKjjQ!~%Z2VSGV10(`^p!NkLMQ# z3H|o%&uZwY`}N|d`kqiRg8Vq-;1Loqw1}Q=UwVFgNlS*zxyz%|xJ!(>!vBpqXh(h= zp>gBN>d)(DHFj99E+D+RCAN`j7kd<`LZtMeBv-biSUnu90gu>{@QOvh@HT z8+MqsqmsHv{}gmkzqq6u!-&LPn^?$gRU*#Mp}TsX!8`r>5*`lK*bxsWaB{cGg{lJM zNBr8DIQ>VdeSWE4_b?E2Rs?m{u@bRN%iPy1&KqotDcwU-W5>E4j2|=6hPT`g^tz9S z+rAS%5hJLxj{OLqNZ7%}h0fSE5_S;R!fX%zj+tn~lY~#4R42xEg7AqL5jZK* zz~H`G>_y}ZVkL4i>)J-Y_HHzrLd;^+I!C2+!RKxJ=VvzA;3AJ8_HyAX|8I~p9!8hlP^u*t0mDvV=4dICthQrl9; z!G;t)=R^)Cs+fE3)b`s3SAWsDP;FUr2U{MU%7qc+c48$`(|v9*?^(*#TMe$h7?sdz zM-_7qr`~RI^|xhOsdb=H)h2d7Mz9}_P*D!wS*QJ0!NCF({*u(#asPPksP=URSO3Su zFs)&A2P?dPk;Tm=a{sA#0CR3br&+OINw5P9ud_jEHalg$lY=p%9Ce z6y+xA@9rmDQO3YDF67rC<_`IIq*+55(rlW)lXPRDtsn5@|;_xd&#; z8UI#)>a0L$-(BC+IVFx7s8}OEj{FA;8+sXRQ}=I?7(oUoR-!wOuc2kZdaSNvsb3g8 zIPvW3Lz>${%R)R;3r?J=ezAF79_Lv?==F27G}JGw2=e3P9@qTp8mif+lRrIxYl&xg zku7vTkRPWg^Q$~Dl(`T5y|=0qLEatm@f7pV?vkP4uWWJGpd$^&!!z$L_DRJVEMTeE>dH1WK@58>% zCVijGt6A<8$?aK3J!i;j6S_a;Y9_Oria_J0-1b`@=V0d#kcJRMkh_MJXa+K>v+ZQ4 zgT?opX{jgK(}ZnfnBmb#vKKPcliD9DWvg)5!B&#q5=M}thTJtp`Mr5DHN%W?Y!PWw zAzul3UP5&$qHiKI)vO+@4N?8mk7VmflNBS#W5PSH|h){tNY&W3-C3DFFNdKyMZU<9OlKvHN;&3gYi&eY8H)bkkHJ*OW)_PtrOWC%b z3nREqSc&e=`gir@ybi3&my|lP!P=!SXFo9LE?eyLglD~6+`hlXbru|1+)Zj$j)H9d zq5rWNm5*x}L7o>@Qj|3f3$h(|>#@?8a_G1gX7|fhz+QRcMdt6@fqIlrTZ@%1R+dfi z`=DV2d0tqF^uqJiWG{1-VK27(=(rYUKVFl=o+IomtCV9J_2}@)pH1wYhbeut=omo` z7FMD==Z6OD;Q((I^S{bEu7%k<7H72QpL(2)%n?RCx*TrK2CJD^aCC7UBgpN-O2o7v z#8%s@joCRuY$0<>Ahx=ebuxk2!n>%V^d!Vq$&h9&E_|_t@iI91$nC;P^ksBvHI_b8 zQMPvX0$m`eET-1wj89mOh+XWW-%U666UV#?D>1e>t9f$1juELYR8o{~+I77SZ>x`7 z7-+oX)M>hae?4)?j`}70e=F{GG?~f24;LJ)6Cv02&W?7v*Wy5i5#$mf$LJ?l#y2Uu z2DvgG9*c*;GrMU0NS}yIz8C2}g^}4NABPD(&adp68cpx|j`@#WW7I;-wpg}DOs7cuZin*@OK*Y$uUz)x}CQ&u}D=l?sU0=h^6)y2L*9 z)~40^?}YhB{4U~!iLXW(<0#`JWnct-8n6;E{BE>W9qF^Gp9zhNs9Svg#OG4d__eoH zvjk>UOAs0tBZ$VuO5_XhaTqJTHdJr!NaotT)vZpqch$QS?+S6jxJ`t`p^U)rP{y8u<)VVwuv5`m#)lbQu{DpY{u@&1ONd>AXl3lDC?_eS)tP9m2W4Oc>tZFE z9h`VeP1Y&7UdP#;Bgz*sySNwVn1|d{BUYu*YrpKyF_QiI4r3mEp)++9Rw7K%mt5@Z ziTr%ju#_Azw20Zg_3b1((K?t1?EB=V`^V(mtnAYKym97~93vCfoM-BTa9%m`r5h_L zN{TTVSem_ly#BjW##Pip;3A$@&dA>`6FcbR%gaqWZM_v4*kkO0SYFzW302toF~#|K zx>6%L7O}2!Ms2zq^vzV1kE6Q*M&jshkR@Ul7k2}!M6;Yj^Jq=zOZD9a6(poAVp0*S zO24S=iu#7WT4qbMNhsFXOxumGmTx+acFRcFunr$=0*!lw(71@@MBJnGom1c;6(zEH z9@~6Ef09o%$B6YURiHnylA=uaSz!A_Sk4rLAOk6D)wb6x zI(Os!)qmHI;i;;)XRjJ7%D9#~g=AKcLXGcP)E7-iHP=C5|3jIBvBa4osV z$9VHAa#+K528vZ2XMtSBwZyXccXL!*uBByOv%9ikRajgg;(gVGDo(7ezHx?uEg5I67gq`K$-3coZ z+Rz7OF zuczZ$m~A;C+}hiZdQ5+mQ@0c5u5-)~9V3YT!%BpX9#TdxK{&E}M|~xl^PPmz#-h#kaA^u=V*R$DSU9$lx$=!h4@<00?e9b=bjmFal2Zy7Ef zK|~m0C81ikR69!8!M5b&f*3)3dcmg}a*xRS##VJ?PCoQyV~!ETCt@X1Hk!Od7u!)H z^P0%4E@~b$3*<7>0R_XwB=>;4%Trk%tl8g`tpkMP>&SnGMSc!1@i8owF3DNlW!fOq?Uk_VuXkf297U0JHrYKvRIko15XiQe?goY8^ zKUj%gSk5=p-_lvqD8`@T?+!Wbtb84^N>u4FCs(*2g5&WfMB}K`9%}e*CeO2(E z#nP7JS{+l(GxqeuT>?*?H%%Jf3$(A|V=n0!!F`1zBs6ZNS$Z`(=0}wf&2r~yxvq^H zk*nxFMWYJcuYaXu{`a37Z5Xlqc!XaSR-$v4t_Urt$LpG>G{m}M4>_Y|$6&n(U45$U zo~mPH*_Jkji&Bjgt=(9OW>~IQG`yX@{_nCbMF8t6J2mwqG;t$39?kCkrDFsUxKbr$ z!?Q%gODOVrfR^~h^ggQBp{?8U67uQR@uxG;fNq`Wcr3{`S98&sST-VBa_6$VgoM`? zR-(Drse$@d`qc(sh?E?_EKj7+0v)A(G!K{X)o|3gIH!e%Bf+|OY=j>21T72UUVk(! zt>H+1Is=hUSnf*;jo(V00Aqf4VHE?vd#iE03nPfF#Y*(<+~bZ`gMLweK3c6|U33FO z*Dg}u8|JS?(7yU-X`F@;?1z=;tA33W+F#ToLsO@ef!9I&HIu5!x!2ld>T%@F4HrhR z2liH!gtjY;CxE`K9&3oe#xn!YN>U3=vsgb%zrj6pSHK8jwy_e;k@Xv>&!A(TZ=$Lp zW*alG5`Fopms%J8YP-X(xG-Y*d8ORjA_*>h&EV8}6WUk4y$?z*W7rR~iNm}7k#>Rh zRrSl|ZBoSJI3{r6GRiws>AwtLGDZBsT6mUN{~pxq5Bh!l_WKIsOvDTkK~%YwA^Opm zxb^JoN;Ien;O{z8JxNKhIsm0qkMf3C5^4|4~{(#N%3+ttd|xRMBDy-#)5U zytEy-g+s-= zCSHcuR^tz)-Q(603heX&V)Qy$IQ+Q2VbLw%^YmStGJ*-)y zd}s1gkG4zNsCTJHfs{*CjNsU@H$97{d7}l=j92`N#tgg1Wje#6i1X3-M1F%UJBHZH zrZ3r_#g^LE&=d05L|@65%$k!EtOTq?h%I8|-Xrg`Jnsie8DdstJ8{EvA2;0XnPBSvH>zu+cB=PicJNtf5W~9GEY7;MCf`6*5{w8% zxkNKXtMpoW)g?nD-h?$%Bu0Xji0$NIDCG7q6s%fe#!D%Ui#^YcV-wp>um?JOC#w5sw)S<34h$n=9!6vf#(>8a1dPJLYGov152xjTe2ra+3^_`2gM7C9lzBELASM4)8 z@C7qc>FB~H@C>^L-Q@z$aQ{I?dq?#tk8Lr7E6UnKyVaC42J#LmmS`A3e>JQ`^H-$U zs}vi+n~`F#Kp|}U@{|jWUtCM}aGOY~z$H$1;{lrLcF*^o=X~OSyB7N?}*Ne&yR1mv#$|>ipMVdBbg`Xy2) z7|sjNqzqz^Z_AL#eTr3cugaC){;4}YMYG1dG+z74W{>or-^*ri^^{7C->O9aG_d@GJ<-^J+Q8rVVfTNnQz)6JU|Ch zMrF!qH$m=!b&t`!U-XqveD;xwlyP&}LbV2M$C2rB53DO^*rN{D!`*N4@m&mk=?E<{V5_ZNRtN8KW1SyHJSZe?C}>N*eM^phvbpAt z=gop9*|6^ZfV_rFVZF9**~QLY_RF?!e3wr=T@$)@h_HD_1oL56OWQDl{jd_b34VHS z>z^~2=ij_b@*l*#5WBaM{p_nxJY|oT)Z=a2=v6m>j!_3E~lN|oog?&G4k5_Gx=3NjG!YQR-#$wka@N;4IF%9 z@mm&x&Tu9a2(g0q6}Qlf$Gt#zgHeZVH=V(}?V{2)jNpF55z>9IK`mRmJq~{MbEw1& zLl3{%Pu8>N?-X~w(-mktW{vJ-J21t;TL%5>hmloT7BU{8xHmul!!9$!S}m_-E3?nR z3+0$9Wnd2vR?#gK{|WaxF{^D}w1elZyU7nDxUaCcqBLw1VB0XqLGE?BAF|qTBsfCy zs9Nu^4Qub<8D6BbVPuQHgZWJ-Pqn#S>{yA^FLoUBYyYoJMz_#$7Zfim|Q+} z-_a@cgeaN^o#Tx3T+9z9uJSm3Jrp7`gnZ6v0i z#GI2x_1pDUT9r)>-fQD&ryE=Yk=v)V+i5Tk1D-FZebv8TN3C|agIC!R=EMm4_F*MO zsobTbHjy&!r<-B%4crD30qRbuu*>MN|DQ1G(Wq0P)^nAEm#x{{i4kP&VL$Ti^Gc_0 z%Ql+l%x+f&OT=>9Lw25jj%U1g=Fi;g-A?K;`A%xRN|({RX?8yqBZ8q~dE8+oMVVG- ztrm7Bn9pt0%Z3a<$|eQg-2(fBC;y_4c@cYdoKD-jmwRc^gl zLT#>Z^^ur*$n8VUA9-yx$f5`Dw)0-=i!zLi%Kep3*zts~>#*N0Gxc`ejnTZSX5_6B z{$$7i#I-P+9B-q!HvMRNp0!A8hLP*FzVJs0*ZK7`2klr%QN|`z)^EK#tdATRB=HBw zjm+XcJcb<1q7K`U^GDZ`x_D`K@jQ%C55_4`ZP5n3sY zyK#jm{`lNsJNBcQ?UHfYl^#yL(&By$BUo47j(ne1>0dH**GK%@Px9?Uj$+Xt1>O6L zgmU+-2s*E>zgnr+{i~;b<4r$?5yYn=qLoyjCtcTvINGW4p(gINUeg8a3*laogXhU+ zChoPmeqA5I+p2a#%3=gLaRT>hRU#ZRaV<9m9aPT|*AjVf$d41pBiYsiY>dIqj3Pc~ z-w*p$!RN#XvfZ!}apD#h(XZ@H&wdcg6nSuBj}{$ug*_&gDYD&Ye)nEk{bJpW>>ja9 zF@mf%tVFZt#C^@xuNNCn+*f3rA#+ar3KorzXC_{uW|44K!>QT<9a7;3vz^;tdA z39tVoLg=Iu#t475`xbjIwvtX5b!9XoJYuzZt9+!W_oAbtUY32h-x9_y(ju#hsz<*% zdS}rvUk0gOb`({p!BYEp72neA5ECi-H?Vl4m-tA=^KLAnci|oz_Kq{P2uY_7DP5a{4-TE)JJ)%4L zy}FF3U`JcrGfvU2X)FA@_4;)@q7`|{Vg%K0Sc$y!$s70Pxa=a2>!vIBpTj=XjE+5i z(^DnS;bdSWiu`wf9$Q_UBmZ4gzG>S1Lg(}XF@F8c_dz#Zse{9#Fk91Vk^k=8m!|%S zuceI1Rq9F2Zxnt_ms9z z^u-6dhzAu8`OxJZcb3Ec$kCddx$jd(opOhK7{R(&Npt?>ZfU4}n@~TQql06g2_BtG z?OHH{#_i6m7e-L+hLzNeLP3WO!*SRE#hIc+(>j&A?d&Xfxz{hdln9)OQc1J^i4H5B z7%AS6?+0qs6vY|zN9qCc78&~}QY;{E5meE+&ou^ni(n;9`!%|jr`(Q65uSaje7bXX zdP5x?KixfkrWwI!&Q24ud1f7o6nW@*5F@BvL$w<{r3Rm!#jp}roS6x!qC#~Qs?vx~ z7`fN;hc7~ybIN!ya*Sppcvmx?jo@c$S&7D?1$>_N7b8TA<;Rphcs7FdV?1AiN-Nr* zv;PK9yKIr-tMjXz85XI|Le-Yq$1$3Ld^2sJ*h@2zsGLHD+dZ1I?4;ip$DKLLM4IKS z{at&plx8_Gf~qa7L}!(*nYdOeqbQN4wz5+bDv?m3q-oC@wi3k)rW8ZRG?pZwqiRaX zmDhrmV07pTCc+`MfJ7G#kIR#6kQSfFUzAao1P}V{Yo4Od87A0TYmHm*zo=b(2rai9wm59ClR3CJ3iiLV5)G;a9T48cr9KGtX{^h`_7DjHh zOB5$Btq{8s&IgoA+E}71`W}c7Cx)-{;{FfH9xSl`i>BrD9Wr}RM&e+~zzFWQLJ8DtJ z;Ca^ImMi>eo(&U8{Y2!RVVF%yy+?Db-CY;@tqQ{hM*96&BEa9u;eYxJtfXlz&6U>9 zi2de@^@F8Th_hpv>&fBlEcUi_@xZP1?d{u>*}tT~g5_4&;eh!^$Pj@Mye7O0#53gG zZTVtyS`(Z1lTIN{UDU+kvxuhEh~H*C{UW=St7d=sG~wv$us=M*pq8wuKT{}c$xt(f zS~Aqf(RX{QdcHa7GKc;^85m)`TFFsAiHD?D!%CXg^?DPpPMSE@l3@nw;J7XIapVKJ z?+b69uE7k9uwLzP&H@JO)vyxXtMtis)OB@txVs9sWnI+c@vBNJOs=*MBixpI%wVNp z2Il{C9}rEUhR-GUiK+zdWSMmW2udlXip=ksQ1{JU~w@hznhY|Dkc0$d|1 zpNPvdwO8Qk4~y+~#Z+Y=jW2ek_E*lI*|(B1P&0_H0ahXod3F=u%M;gpCFu3Q3~gVd zz^gL(1No|pI8+AG`#*nU-+=Dde5EJ@Bd7pWDrvQ?PTnsrHum46dxaTczkL!ITmPHD z+MYqhq1615`fOfDZ+=n(at7ZM8R526>S3ke-M!c=#y{@q|Ihfd$*jQh9YMvRYzH%r zQ^pv|;MYS&xQ+eEb}*xat5M{4gFF+?z_yxE@PDWpr%|>%3M*;any)LyvZ|3aqy5I@ zFjjP2X|Es!C?6#ij%vpFybWSY^uFqgpbU(JY|LTYdRHJ&wXBH4N<^zKn`d=@Jxr9$ zn6{R(a}w+Zru@QbFDauVWsJ>|ww4lsUoxeVc0Dda9Qx&ur}Wtz{!<$RdZ1uY^C0a2 zhWn$SGLV#$lu_m9L!POWfe};yVkMgQAvNHu4#{;^1ERJMpE>YZgkHg*8c=67AVyFP zh?O+W$X-koKNxL|Y*$6uF$6V(YbwTx3nO+|`Szrs&-o*7aWQShLTmn-N;XDPF4-@3 z+7;~dMUo}imE`QMf+FYE1j{}{3_a|Lf;*I8Ho4Z-|3sAOm0%U>@Ue{%R3Bm`O)HhT zqzL)`l$ooIkXP>PkAhdeb#%aaJ~=rzC0)mkMz=MNK<5H_E;GCsK!;%esQ$@bL9O1Rw6E(#-f!9rnEn& zu_*55!DGgJS^YMTMO7V3=Jd_P+EN+qHZidEMAR=gQ$Z}21X=##yU}~ zM5}!{HS1r}S|%f1DjtQ|lBNr)GjEN|=P5zTmy~lVD(Xzsb7Cdh$HdiIrf`*$Ox8&4 zBP+PLt?InIu5xlv66K`imRR#8nKI6%Jw^Xqrr+LQ%esFy8amX*h~(i|)u`$q?FD`GUUcQTe=n{mCov=BZM@@Eo;ow@?xxHb4xIN|7u*e_gFPCmHbR^Lmn;FrYG<12+nVK&Y6g`d$Y)4QY%xqo8>-z8W{ z(=xe=!^(~Szp7Cx8JS_?*CwcH^tu^`NTY}mR2gzxst;*Y>F)ng*xk*8U-P7Ub6_?R zbZ$oOBpO9NinHa8A+i!FK+h%@+vyeTRic%%V~C7MO0RXpkpX7Pcz2x%^G4C@arx^T z`YO`C-iz;SW8?z~xHP!`hpa@uIIjQhd{?8$5l5rw(rr?GD3ypBz33;2OQBsilWG(} zEs6bU+H`Vm*_OMk{mJIS7OD(~kRwc`iSaf&!r$*9=ahW`K9F3yXCF0H(+~)t!yKd0a1ksXw9TURT4Adp6ds@t2(M?n>zA3bBYc&Ip z!v2WZ3UqY(_~*-@a#EfZ_rau_R8Df66^?2KY9CR_h`LLncU(5mms(TG$7ZZropRFNo4^#u>`M z2)E^q5m-snBJw_TG>U(gpJbtm3bl`@!PKreDqiWnvX|CaSBj5_uc$SQ~bn z`1a$yo|?ELf@Cp%{QR4Mlxm5A}R&szp0mfM$2PQ6F1pUpIfJ zyL+a80}~^t?NgO{iObVi-_w75uGo>tLjpwa>>(S9u1idsAA-JZYUejPO*6+0hxR4I?O z!U0rWkV@#6(6HY0iMq3VjgApHdgZ+!uo5v>P0r{iX|&Ym{HKc20<+~PDqp^W0ou3k zL0i2OjmQ?=svu#K1xDlu*&+L( z5{;>8w8Z-l=KH;~qJsD^dP(-NGrnSl3N!n(d&HUKVl(L`ZkK2!kmi>oGS*F~Du{(= z?&=|nYFX0;b`o-=$2tboQ23K2ICpo!u)@^G?4D`F_P%+oV;5Qpj39N7l{77Rl^J@I z`L(Pmaf6+mHh2ujSBrN6bqJ&kE4o|1OPYpWCHpA~1^N8JS_!;wwC}6S>GyHTeja5= zje*n~Fu%|3Ald)c)dGxk$^H)!p!^kGfL6@aG>mpt5PTg;`%qO7yWKq$P9;%6pelj; zkd(KJXM1L_-iw=2Gfx!#nZ*Sw0GF_SVd!tIH*-r3GkpopM3fC&Xft3CDY z^5oHossz*+gpjM_w&oY?psVA*<~#lP%=Y$I&YLL(e)G;kHx~U?p02cE|0f!|pg4@+i#aF*V;S);iD{i#u*_ zM;RF5wp2u5e>BP%8s`Z)7-27+b|MTJbL7I27pHI0lIJ|5Mn~9pE4~fGNRvku9X7wi z{jCBkk^A@I-#wAE_dxNM5gw%A@hHrueF4_w(|=DGORoEt2O}HvmUlD;V{bkaScx+3 zKJtw9jUiZ#L>&jb?7g18W#p7+H?NNV_<*u%lX4A&#`Ia?Urk%dN6`@)$7<;c9usk5NVHo zTg8JcIG*9=3dcmPYVYiGe|>5Y4_A1P=k4(bd+_BP9*iJ8j+N+B8#=-BS2tp|H{1(D zvKu*VWW>o+_Q6a~-ZGJPo${Y}Fmj0yhAU${FUR*ZUvGB$8+DC`o68_e`b&B#{04K8~(_w zS+=+Rvj*!@ zeQ8a+-PgJ?VyM6fQq0Ib(=IU&=UC~!Sr~SQ2nZw{kbqz^VyU)NXX1i1CPY~rYPllp zpTuDfGa)0my9!n!H>)hs*08LdJnNX`fW2L?u1iCRAp7y#nT6K%4c~aOJ|J2oNQF2N z++77L(XRnf7GE9?c=i)zp&SL-E)5}qT*iF=O6x?#eveHg2S!{@Lh!CFSczQgh_ZO` zMRq;02GQ!oW>-7g#5oGHk>#d+c!}hgACpsWO(X|KkPF93ns$uX^PFva=vRn6M;08j z-B(itY4x@*ms*W7b<-yj-;NRF!m*O3ts0GJj7Ut2ZGn07m$;@&&EB z-X<*oR-(NiNH@`Lt0Cr+ZUWhJ);CPvd{?X_-30RDG~-3ujF6|b#Rbx4Uo?Z~Fo523aHT(KW^IDaRqCaUfFoJc}>-dLsEM+^77SW_* z!TnK?Z|Co>zL{T(pz`H4X=PSsA1&^aRt6&qxlS4yxfhJ4-5lU(enj|B%YA{MO30zd zaW{`V^ef7|cu*zO-60zso_a5SYVqsNh?J%68<{aQ0vUE}`3IhDxwyki%$`_f1;Ni>s6Bxg?)B<=YZ zm9HbHMDlm-U`DKn6x~vP=O~e61g{D20)YcpXZ!2?6DcD9YVD}DB%zMHxk|*hXt&7! zH?y_*rmI9e>AX0*4e7j)btm82#I*h>B6qTFB=s3k@I2!9n0DGY&Z;(rR<}ugc9Jr} zlWPjCuJG+pDd<&PHoAalMqb6poAc_sxVb{GSFuYGh@iW1Hu6Khac>c-Qakh&ISkJ^qEoPvraky+o*wyX znD~3aLWLyPfPqA+oD}PnF^e)DPzLgp3J(d{ns(3aqf~T~K9Jv3GA`G0RE^??9-+$a zD)`P&-Z9$m=S%wnMCiSo)6LOA%J&kFyqQoJuGUiS)1tY56U5bQ;~YJwj9>;oGw}bv zgnCYAJ_932#H)OJ1977&6Y)oO?5|pAlcRk#So^9F>Oij3Gv~DjPR5~DN1WXqxp&?f zM(G18k+v_W$Q7)}MM53Pb)`S;?v?{#?e9g3%N;%o!w5g0o$)6#CXwn_siY;0bQIE} zegAuordsav!YboHtY)x68Yy=AHTbNSr`@(lag(M)Q~j-HqwB1OIdRv1RGE>_aC=0U}}c%15781D0e)crWpxPSNkdvVLr zxMv;N!Bcm9q$ohDc#I%VkCn*#^S~=l?2qF`n!b}gNZRvrKkxIxegMeRlZR=$SWki2 z2(kQZ8OK3DlJ>~WV)^baW5{8{IZB zf;>G|(zK}=UwIDS9xo1&+XB|b-Bps4Kf~&rFGbLwA=mYA{fGQx#4B=izzFt-l}L$1 zE(I?SM~E6-8~d>?Y7BVJ>Gb1QBIs+7>CHc$?ztkw%MHIcz6LUa{b422O%yIHdbHO? zx$oOss2DiW-(#e&{+sxv&UL#(s)|O@QKo3Kx@3TKsky?%t{vG#bp8V51NmPBcW}W< z^a)?oSae>UO;rE1v4uxr_To;(jGoE&h(fD7P#^i9b`Z73B_~; zFUs{u)ca+rXW>zped%<5qjTzQ;^?q%sgEoLyNiu$H}iT*t-Hf_XUnO{A3uV(!Y6&nfB=bB7W96~#)L7Jav^xKr+eK4Haj3zZLrw7tZFka^jFbDw#QS6^%`hH%1N_8FAudny2w^ z%aJ8?F=b$cS?8NSEEdc;wyRRS}3#57zrWP z`DK~>2D8psiCnqPbo72i%(f(#Wi8~ixh?r^dd4~2$=mE=BzkBCh0izo6yUg`Ua-DQ{6D!8n2EJWJ_$W!M zV2z{?VV6C}THKar$P}|=(rMqN78xrOxg5qjxL}0aa)%qNq&a`T_lgN)o*M5- z((D^eW*JOl2Q!G-4r6AUkCGA2CK}s03M-MD?)cUI$69vZ5z4@KL+7;P>GMWZOcfD# z<>t6RzclmgY=ZlU8?(m$`L9`gD=7mb$k1aYaw&+;=%01|x-Z3BQlJ58Kd(!#K=wAd z1IIt3xp6^MGrI-qbQ5t{iB^}2{2e=Oz*XNk z`kb%7IKi0YS!Mr}MrHHWjN#8xdv~6`?3+v(7`ahnqH*Em$AQF>A`UAN%aHI3i7-=-UT>(FQaz3zN}aJwHpiSie$mGtY35%<^G z=3i&5M5_STa`~C3&UxiW3kfRZsgbj$@zwO)`cv}$9F}2&LSQ3Vg_X$hF7pZGW z)&xoNK66{^pAtcri`a9FV1HPN$eI$n^{@KpwceKK=j?XFYw?o0<~CETOhAk!4^t~{ zG`;4ZR+youTvE$=5;xe!h-4<1p_T+hkidS`FT3*;e6eA3oB0B{?+Uk>FyuX0m?GeI zkSf06W;~z_jBs1-^MaM=8?=A0kKf!rWL-XrDNWf2w}X8Ybu;{KA2Ndd;Te(-i_1Fu z-Thb`HiC9hL0Xx!WhFHOBi!a}J`+i#1ovb4w!llhhgr)?pQ61&F5^*>fO%eT1ic8ZTtl6rAiXQG&8C0akHk^Yo{wl$eX`p6rj-h`h3R(05D2cHf2X<}~6c&o$V zdd{8qod>4T$AT{ntwqX>KHuilvcWt`eN>;e-NXoT;VR{AP14P|L@tl+J5bpr z26<{64Ul4F^I5;2$mJGwQ!4~E_J?Ok-=Z_~I-dPa=wD>0k;cW{5y-hERXfMCpZ~=O z?x%p2Xg`+kwwu4vmB-N?z}-BMBu2tm(>l;yWg0h-G0~3^Wv>H&SI3Q=cPpXK$HfZH z-CextwnvUK*ry$d--l5LoYy0vYI(}&IAnL&m(<7IL8*0&Ac2dONa?-dY?w`VH&5Nv z3h|5CO-dYfhzASELbHyHxWPMi?`&5^43n zy5p%&qrNk(7b|@rzl*#u&F{Whs2|8*(>^({pyK{5f1R0oE!zI3qYT^ov!Jz+ORM3>(u>*TL%(rPUWG}$u)R43#Z)4fdzT4O_+8A#v(>Z)MRw|mbmdFS%zt_9FO>f?Zq5t?hn_eExVde z6pX87)#z8>asQSP9)EJ1=~%3!X^r{(>2Exp9iB;td&!LH%m1}|94r-37+CG^9l?x` zs#O&Ho55FJ2WrJu0P%Zrtb{ zt!A9-lh6A7=W(LPlFlBC;8|fMO>0-Mut>GRV~_i!yE8*Coy!l=41L<_zu7!P|L%9g z2#LRH&x##yYue$jeERq4``JHtNoHXL{i%`VAoO&#u!OV%BgpJxCGs4wJBpuPuB!Hc7-2caVHOy(xy|plsg9TTkM8)YYRk7e zMmU>~;%ux$bI307`!F=f2=lqiqhtn;=eQkYgj2d1rppM+2p{EqR){24`}m7Smf2EY zs+K+Sq>g^-JT`PP`ql`XqjsiRFYLn9rnPN%ELvdlNryw0>@oI%+4Ov#u8*i#B7JpF zgxUvZ$ZR#E_@;oKs#$M)>(xv#!(z;Js>pE5e~%@xy^4*K*j%4Z;9Od``{`E>7=v369qvmT5fNsN`~IV$IS z&;9G;?bXSWDNgBlhSvK!#?B4T?er5`(I?~2;U_$GS4G%Ie&6B82om3TO|(Pz!rh*l z2O{iQAC*wtrjbKNKAGJ2mR#_J=ZvtUYmQOK3UN>@9c%|pIruFe&^fajw zVYf{9QsI!%-5RrL#pIXQo<|+W+XZVxdoYsnNQ^j^>#ZF=tc!s}GkNb^e&bm>oyNP} zCVG%>#-lKs=G%{F)KktHXU}ZC&4Upm$6V2;1?^cof4G5_=$Es}EYJBGk@lsJ(|V9^ zMj~3x=)dYG&)7E+cB`^gl(V|9x0;Bkrv+-vo@`(x@~sWO5cW0k)a!S&RS0b5sF}<3 zA={D#sxD>k=(L~T58HV?($2oLUYLdvcvj?X zNWUaBA_qwB#XE95kkF;BRD*G^k#5ekHlOI|2M&{sGW9&|&>*~m9?|re^ej5MI?(E%SAStbB zRVOqx*QFV2_j^-Y#|RS9Sc!Z&r`o1owT|5-OEJX>8d+y#py_Gi-gfi%Qnl@}6N?Ls ztT=kt{=57G`$W^74g)E@s)>!VMwoNQgxK$fwNmJ4be_g+O$+(5lUc4s276(%)&e6H zBk$M~nq0QW1$G-M9o_nu)aLq`d#wy>1_-3C@hHqDBEIT9f4|eat)(dj3XIeUyKUbX ze$ajs*lS=VTHEfPXx4t&$4VDIQgNGZ8J;DuJ>M!js-@RJ&YB#7M!Yxc9`A3xcrrpE zu#wqD-)bVy4o)(UukUSb+BHhy!VCSAI#9k?j6I--*TDX0gnax5^Pf%qtXl&|35;M} zB+QAxp7Pv(I?&U~;2Evls}*Zr*%vOXx4)u3us?E#X`Rvha$+A#q#rFXf_2q<_3YtL zYh-+OYsA&zl0$aDh@qHJxvQ|d*)_*029wSIGV!*I?A0E<3+W9o!mq*5RtLl*(i>nUdfILiZ$2(CMtDh^fz&NB!gz+7wuST` z-=-ZS-jV(TBdof3RrIZ3{RdW}*$>iY+}u1y6eVp2GP`&bX49-Q=|4VOG)A2Nxvrz; zkahXHtJto81?xYs61le~bTykSi4^mWOqS{zhXrO$3$whel~IY`K)EjF4Pu1N&3PSl zjU;}N5mu?<*P}a_nW{yKZ)1Bq>Ke%&^Ecq zt6oQq?v8dzWZE)CapqPyWcn>(H|?O>DJ)+aGm6&ESC(Dl{0_a=dNlc};Zd0FdXwovC$`?? z-B#gXwBC%o+c1L8Z&-YH1&j|kd{m;QmiWRdx`YU@d;zaY|=Yp?`uf! z%*-z9ov}Y6Addd-8U9Ix@U)KbUs7 zkLKa>ZSaWtG!KUnBxSJ@?KoAbmpFFO(wok1pg3A1{fSg4=|6h*5eNHh)61@FrtqRy zs$?+yf2$$@4^A7SQRrHeYFEsTsS^41|t za~bCxhDCaAlUD!R-eS#fOZ1ClXIRLgB2|jnL_pB)t;ziJ^z#LNurRW7Q=-@qJxRQK zbS;3Dh#gE-&$>Lnt!dvLqxd?b=kkosg#ruTePaJ~mQ{_r$_Z;q{x8jt5@Q8MnyoDq zXfS-O)v~4EK!<2rT^d`{@|~FN?+`myBvngFe`?GoUD4TUR<}9R{hcq46&MLQ#C|9= zXA|K!uoA7IHvY;=*~2ztKN&4`kTxqMaU6}~Yg!Fo(%g#Q<1@BE?9Wj=u7j8;3D9i5W=XGSMi>TwhW7BawimR%dcDFv4wqUolOm za(&OHruII%dO0-eU64{%t25}$Z2NE;eV8zPfTI^o6%v1Nx}4P~McBY0NKC(25+ zC+my8v5#9e4tqv-7c-_4HL1<)W-v9$XDII*`J~3Rj%A;1CNnX@ZOJ`jC87;q_uo#u zsKX&+22+}nDrR0((#EvA%H1cG&Qr!%dOa}0ZAnC9CHnU9THA?x^+@h@@{x50v#$7R zVkN%g^s7S|nO*Kx_RdFPwrta?Oc#%t;aVP_KQ>a}r|3}rDFLqbb9;IP-$ex;T%2J~ z?ar)orO$LTZ_Ql39F&0()8A`YP6MBnSk82{5JYQ{&K8wKjW`5~~|C*qKMruYBb3BIgDWBe~D z10(#olb+;C-&#b@b>2)wE~lhdkdONJ<8^_^e8JaT(#r1Z?-0iH?bBwRH_P~721b(h zCoA!*N{pgD#VkHNQq&lK-tIOmHqdFa5jQA#-Vbel$4IuC_9icJwrc6xQ_RAYff4Rc zo)uQ2_toQt+p7?>&F@71OvqZ?mUJ{%l4N%9tis$3j9`CQiS|kv7ZrPw2<*}Hi9#Zp zkCMzb_NQrMs!feu*(Ju$pFxcD%8=9eCvsNc+;$O%mB>-<(`;U|Lu3CF`er~P8cAt2 z+8yD|ljpqeN6Ns++uS}QFt|`)Kw%Mwm566peIeGfC!_B?eYa2DGQl7>mYwt7 z>dLn>(%AIvQ|nIbx1%!nnDWL5vfx;WXC}f$%}t%G!TUlKzi{;O?w9X(@zMT`R{iN3 zea`!*Y$^h;J6l6`WUw((^sh4_*R|sI#PGKPbRO5Vkuw^K=Vx|W6}lvoI$@g?#CQ~D z(|!||8VdiBoz{}SG#ewxRwIo~pN(_PM25c?nNLn+lTY-H>pDJpFI^h%{KD02$MX#P zIyV>VNBm?a{FBwj2woH31x+hd`)l!Y&+S%9J60jE@vPEry(13f?P|B*{U|`sQA58L z$I5QEzDgBqVFa0NWVto%B8|e|-CA$O(I_0fyxq~V&7<%eH0rnhSZVX9pB(;Zq~B@h zR;wM2^f7`yDv9(}i2Yhs!yp5&OVGN~)+iN(5TS?%eG1tUnYVt@3$qLKd5 z+^ejHG}1>Z-5rtJJkrN&q8;++X=3J}7^}z^BjvM!bG3NxSc#quXrzDIH_y64BYnK1 z?nvL}kv{fEuOK~5tov<=b%LHIFoJclQt%sY4m){%G)(b5M_L`J@?ge3BDN~sO8fu# zc6N@e_qKNuZ}k(2BYaJX3OgO1R-x|EDV_V1+4RH`GTA&rblc#(r%a4UN6Me8cMGUw z|G(eowrnE%%Z6;Qr1v8`qDvBt-Bcxc7G&sW-pUo$nyCA0mw!|kdZg~LlBS8wMXkbF zd)qd7u`>N79oQvDc46sor9T?=wF?caMjTmT@_WTI!Ma$9sF$r3^e@Q=a%ZD5ieI>N zb!1O+B=G53?byz+Zp4wbn{6mA=21`1J0w`H5+eiBQ8MUBzD6AO)Tb+-ab$`mi8l5j z$D?L+KjDyoxgrPBXYk;*srnVVyT!haurSiiCG%284GCZ+8n=IQ$MXqY`Rvwd5+!@}-8; zb(A}MR~K_@Sz88nvN3|%1FS@jy+wEG*NFsdS}u>`tu9GGRwzhzFzu$H{JtugQbZGN zxS({1jS)#3UK%%CQ7e!~JZY+bSe?yoN1AG+`B_t4c$8_gRvVdp`lcpLb=2rY>$gVb z6<0@O^RbeqrE|HZY?DLfOhLu|JAyH19z+wE*>gPr{&8gvh=icMwkd$-4+p7eTrbE%a$Jut6z zuv;1%BTVyiHZ%L&x2!~~`mP&$VIupPmFI}0`T5+rt!e?{-Hen;v;f!#R?@WMF3Y)Q zVnv7Smoz^!ko;}HWIwZ<-2QnLfA4!283~mSY22pOtuatoiJS$ZTaLQE={5v`55zqH3X&viN1ZR$N1U(yZ)*MCMpJy)5rca z?d6-l{5i=ryKUbeO^l%O0V|O*tWg;=J7ttDH$l+?;JITZ0;rli@yF9y9hh51=>yM7 z)dHLvUMh?;!r!<2e_r0xx0MTAJ<&Lj=j}nq{ku}@D)hecEgTe%nk<``mfxK zfs~;{fV#&@I^7FDBGEo7?}t53ie%&ZX65@0`tT$-2u*q(v@RTofnW zMEut;bbO`o72G=hZ)dc;FRnPt#v^WaasrldrbX#xjm- zYu4XyZEn+(FguIW-yw1u=ldi1f4tL}O&TmWV-{s#ADFFXyUou#dHS7MMRD4b}=f*vzRbGq4i*y}B8{+iC`9 zKZ{JTIlI>FOh&q$3HC?*n$lTyqKuf#CHAKNMa{sY@C@k*^6zw_S;p4(vBvR=$`muO zKYEuuNhf-Sw6^0K#G5NFhZsi}C)giHwF^|~9Af0VnqVJzm2@wmk%{SqmZ7y>ty#Qz zaC|1CRKo;2pZ;Y4^{#3k3#pH()Q2ZD-W)I`qp`Skf<5iyHUaDpb+EK1{34x5mbSIs zzPsATvn-j6mZ1rD$8D{Y{z$!?kWRd(KC;nu;8ED0+Q(+fxJ?=VHdHh4D7+?3`-c>u z10wQN@7XuISU{t`4j13pWmlAQ_TAx66t__eLOg>z>dQ}0U>HHo2Uem{hO03#Nn^re zPOi&ZlBC)E-NkwnI;)0l#QGwus-;d0s#0Wxv$@SG5v;^ianM!1E-6NM9L?X(N%bF? zP3*Os(LIUAgpcBE?gJ}n+I#o;_D|27&m!yvR!$E__GYW&Xg)5Jw-#0+Rb%z*p7MRh+wc4C^`Hg=kHTzX z4R#gR!^ziq$0sj67}?y`aI`B4b)N~WL_EXb;`)@TqwNj1it4Bm!J{ynG!3OD>c>hC zwukiSs$(R6zsFHg9c+@%z)G}IJ*|s=^p6qtUp;f_s4*!&FO#vi;$u7A=T(h7GoFd7 z>0jF6T`L>3;y%8DJ}}c*yZ_sO2P5cvkCli*YOz$$9n;TVoVAZ~9m(?)F}4r7W>4Qy z-N63nyCkx|UN+MRyI8HfI!3UrdL3uAzdfJ+KHk35y04-!K|g&wL)xd|_w4$J*5m9e zMYb!R{di5Pj%9tW0(xKnSo^_>-#n=KSU8$i7!SO*Q=OP>piYCl+j?fw>m46wuQy4R z0tyb)d|)L~9LD_QY56w7_TQ_dC`K^5bBmm!cV#Uw$oD{V!;#^O@zSRdN3+%kK+(11At+pS@ zY7RITX{XIP(~FTpEf+IS8%RjL*5P+Kn|WdK(j&gT@L<||pmz@s>Lai}%%)YD_z?5) zph$bovmPFdq>Wr;R|roQNWEf%ft56^^drq|VT`p`tgEe~f&-7jY)#YS-}?907;8s& ztfOOOMP#%+dG>pI%<3%$R-$qHrP1cU6?)rmpPf?lAJfj-_U?@@?3cB-8K*X#v2zxE zZZB%dUiaq5lg$QEz3r!-lR8GwTOXAqL?JCIW)2(C+x|S=Y2`XbMQ*hHaWCzz<+d5v zAI$-jC}*zR+}nQj?@1jaSXaG{j0g9c4_fxN!zKqAdg;y29D1+JuWk0d#xo?vNWQHk zdf(l8IcT&%&Bv(%x9m(?=vvx)4OB$X6U&-m{?Vbm ztQ$>63yh%h0V~mXcTfTArwiGvGM|r8^dDto^8{KJ8ELO>?=z6gq9>Ld#jNEEb6WaU zmDob%gQ_tpcD|Zba?bRyaN@|27ekJW`LfQ#*Xqozk>4w^Y6&N1hjk)W4I}8lkCim- zH1Tk2^MC0{M?4%Jh1o7sCV~Xr&Xo16f9ALK9KAh85_C=k{rj;Jt@bT#Zh80kJOhYT z!=tb+->V$0`UqB!&<@>=zOu6Susw%~hrr+U_f)VTwE72~Mqu-lnj`!DZljaAV>rrEZ+7oiRC0)_yFZ<}ME5Zn?dG_X8C0JL4 zl{Br%u^&urb3dImKdAq}qcEFh?hZ{dXKv`NFC|?OMp(^LrC5w$T@hBIdAPP2&2*Fc z=%1422X!TQ6lT-=YVLFYw78!7yRe{2NY>@g%H<2|1?!5ilBS*iYrDC!RBh3gv}EXx z&zi5NQJ9}^-Dl3ooXSQjhN8jHB+?{#{&zL>ORc!m6JaBKKM!CErxk7npMr8bMq z+^d%&y&6WaE>@y(;^e00Pie-AC#3B|B?{_FP&Y%KnAIAYBVUaXiKFT|zXnoK!{4

k^5jfYOHrkujs>$xC3JkbKNtDwU!FZ!QNC!T;bbLB9ny@ds+8gf z96hJ#s$X=puTt%z90l3*&G1<+e_m3)q#TyshjlBGW|Xt5lV%ikGc z1YHEBhd%Qj(y`YiN5mb+MX(I{4vx?EOfNycgBU@r3_AIee(-2%-+p3!KHXK_QT?(q zggx6)wWFTZZ|y4kyp-`>imu9)qsBy4jA-=7suX|hmR)!hkHWaW6r|zh5hu4(qUzU~ zk-`X%MWuE{sif_=5Y(9L+&Z}`>Pi&731pKeN9tCe@>wnHoqiYAWlc5raf&t7pirSX z{YLl0c3mfGd1XCCV}eIjq%r)UZOM$F(z}0?3t=5dmGZOQHVh-EN%0V$XDBxd&N(5y<5By><57T z(VpIayz$JRK3;6=K9T&-|2q?`tKO?csz@U3F&(J@J-$hm)8G4uNHG;(NvYi|Kd(zwrEl-RvMv(u+@L;_&KD?3bM~gfcIRTqv^n$m|o@-~B>ttvwk-nMuV6Dh99;=?y-Q^nP0G zd?<6T%(pgpvs%m}QkJ<_Yj7chxmQ#YXj=C3-MstXTn?Q;85qH{!b-HxnX{nxSh_}G z%jg9USR1aXr0OF9J zN6s>sLuNi%DhX&;-FZ>5S6saTMo=+;mH3yI6wIy`fHR1|cGLsRQ_EM7+fpMC%phj_ z|EUMCKdcnY7_Lw8NRqtAuvmjha(tIyf5D9QZU#n}J(t-`lFK%&A}_0JnvL%I7VJ>H z)lqwpIuI4;v?g6(;3QTLT$x(ejOlRKx1KUEf=U9^9?Tv&(`>J{XGZLDQ z3uHOmJWyi}_tEL7>3?773x9pezzFIMRQ15Xxt0At?~3t9JdPB2)S1$~0+%OD548DB z#G#Uab`prI;`cei)l(T|L!HjmKf+#`P(Rp2M(cM)+xbN@}uJTg3K+iY@dh8hBX7GDg zMzBAuL}dTwm9Z7iq%;4dyZbJ8PUGpzb%A%ejX2aBaDP$}K`SOJevGZ*dfj6L&k8Hi z%=VGW-qPJ-{3A)zfEoi-C18K#0g2^GdTXV&s*W*N#9SDfsvdwo*C6|#Mo0`=t)!%Db|L2 zhs@64J4?Sf3w*H#jhU;&KiA{%R|fSB^m=S+?|qjhjqe;~UV=tP zavna`LHEX$wQFvvVoU0UBa)NpOb+9!KlMm=$Mgr6YCFX52ZomT5^k?)JJ@k}WV+31 zYp}<<&E$!UAit~9xEWo3_am41<<&_^`Er}dT;yzN)zW2zFDD^>llCDiY1*&k%lQ}a zCA$w7SMC)$b0Y&wD?i86i@wCLOxlyz#t7bB^oBQK2C=SKm)m^TgMDOkS9l-0q^yh}(JI$#gWT&S zcip+I=Z-_l@?DgyD`!h;)~Q5&6S?fJJLgJ5%5q)K=DKoio3k}7Q_i8z(|pARD=cOh z_-d0f6Ua8uuR)Gr#=0dd9JUtkuHS#h?kM0~qTu{I;uY$QqfD84^Q`=cv&Gxj9mUOAillSC_LbDJ{U zv#Lh-OxBgO850STTjO?+hpXvk%%%)JcNyU}*X5(IlBO+p`Kwd(O^2KnAH|=pr2Wwo zy_<2+WxV8>a5lFk6~@^?D(qvIrrNsya2V4@t)idUgIYBFKu~cT$tv0f!_8Pu85lu= z3M>7`U%d*b{8iFyJ}aiTNW0|r@w3Z#$q3iwHWORi=1*FX@oGXe6~A}q{10MF9);PO z*3iw!vv+}s5vH5C4<@#_&Dq?h-}CGdP9N!(zILcE$#vmT%uI0xGgGu9f}2sDGBAQ< zl}b}Rbb0DalM6Vnx#aio^=DF=&ya~EP0M<+p~&ICRjuo!0s2sySK<^{n`)l%GAfxeu&F#BbG!deer3?RiFL9cdb5W03u!^^fUC_0OKS zu{&kmsbeIbd5&10T=BD1+&gKFMOLDBd+KBU2N!zVB@$2SNDJWF zKe7#U?!O-JuP}StJBFRoF|u&&JbVAxSN6i(+YGEk?#BHKSlcgT)9ccTJFe04ihH{v zBL%Ox;~FdNR*n$7O?5}y#yfa{#hGvqJ&Trj<%dg=8gX5w_q z-XeyW35=k3A66osVQHvu7d=B&&)w9E>s+|}SOL@H>>-3L)fVC=pzP!nG-<2VN`s`1;*l%K8wlC}H-8jAAEO zIli^rJFji=Cz#s~e+4T|G`{MUNw0f+ocNPiHC(~K^$1+kA(sx~;RgH1ijd{Mc`&k- zc(}X=UJK^ou#%=d4l;KlQ_=0pIu0{;f2Myam@rg*yiz4|xIPg_TpvczH%whC%AVuB z=i&A7Vn_01=3er;j@|HFu-7%NA>gV5tvio6;iJC&o)WD`z4=_(TNcj*E0KRmi=pD; zq@ntRM@=lOYc|cOu(70+%UV7wfV3yskmmpsQjG(U;`yI$iq%pbLM`U^wrI%^B*gA7D zQM}yJ&e=~EkHT!)%XC;@QL6S7T?}4eVFZ1=u#%i(-u$FtoW3B%zjVC35v=?yR$Pm%_Co zo?FgwxVaIWbuLfy)R|U?hw(f$MsUSUU0q7Eu&#N%!`;v&?(DgA%)*QinmzBlCY>?J znLXb`^X&zj-woyYc8uVP8LqKu+WZ}r{Hec-37hH8Y|C{nT!X^3DcYIz+sghQcg2M9 zTsTIq(_Hu;6Q&!^TsW+lkv78<<6F`vou}S^GusBwY-2XAW@*}`6Kj3x#-;OwQ3ghE z)r!xMX11M5nwBy&weLmqDV|F-Pn{(=vu*IqHfG?;hNgW!C9N-4jVYeYG>424T*1If z^xj?H-kaj@)S*0|i1UWH28C-=nzmzIxcAdh8A5r^5+gWgiIp^M(_Wv~x^Oa-=S8tD z&x_W&5hHkBl;=z9mo8!iXHq};?UZ-iiu2AY8Afnj4J#4F`q={S>m{Fu@%%0xwU*|0 zPsR5%czzdG%t*CWZMyfXLXEPmTM8$3^q zD`qs;_jhG)iEc4rJQt1;Tp7bkG((?$CeOD!9$P%Gp7?T|!87#ke7mz^#_j)B;u43f zj4gR4o#zIC0xLI|;t!lOqJy zoi}@0pu^kbfsmc#52vj5t?~b1>Pw&b9*m0+7{T>HtVFAQABCG|XN3FruT$3t?~REH zY#vlUaB7=~!!?K~!=sx3$|Muw^e+*?{L|GpMH#3_3*w)=YvRgWH%b8#w&2p~{v@K~kYyWb+ z4%hLBJZsj&-#|}i#&QO%C?@SgR-(^G_cZ>kp;OGqLx|dX+bEEH^6tRFtwtQK*Wo%I zF)UUpf9lCo%wCj%5%;^+S&zg@^i>KkdSd%p3CgBhL`Rtmn`$m1Gl*+~xKDxofpOi)^0N5a81ztmT*=uNliX?QLOC=u5)4p&k8FMu{FAb zx4`N2W-EFp?$0sF(4*D|^5it)aD5Qh4e1GTUTyC(TIak<85qH{!b+O*g{3 z0rX9cYl65|i2czMhF1{lOOvgbU5uBMZf2mfoCwC!` z4kNCQn_z!9tVFw#&`7^{?I~7k8tL&TiJ|dA8*+5m`|0Kd>I{qabS7`AZOvC$cob&i zx~irf8M49LL*7(T-<`BDlCtAP(f>uMz?}+116YYZQSM6hlq4(Fye2GtsxEYREi!!n z%I?}@NPzZZsZ>Jnx9_UUwVib}xt7MO)^d$a&4{NyCTuyeYYFv%N8x(5n$d&Sp}3DO zwAzOmxUR-+x!y)jo^HlnTJ2LJu$GRM$hpP6@@?*w^Srur<>I>B<_vBJ*XU2W89%w# z@gYJ-aW)^t*CZO{<|j|=|gB$|Bn+5lR{xT`EH3N|RdyQ3{?M(9e9vi4 zrhn!s)?AvCSxmD-nZKW5m!;Vu+=6zOA8fs;H+(dC)E75wbOAc&G!T~T}z$-t@9mtg* zW;E!V!Ohr185rR!z?mC^Lzy{Ar8p&k-e!B-F=xilN072iVw$0a?|I(PD`n;V=AM!VR>7?Qx zMj7mEMGVW^iJopWE~)a72zv*uhHeqr=E(Pjeb&+-SZ+mtzLrp&7HWKTZ2< z+y?V28fEO6ep1JX9A#YTUo?P~G|h9el)vu!0rtw$vHG#QmmSB>I}b_+5=P!|#y(dc zmHP1e!TU**+jRbio)&Z+#mZ08<@Y&9}cN1*dv=b8eu+1Y6D zcb)Z`)Q6RCu#OS*Tf)A{-=};zy&Po}C^|zgd-tMK>)h%R%8uFU-TiInR(&;{)#Qb} zl~)j753EFEw;Q>1c2-?}YKZcB;N6wdu`sKA=P+!O=VIOM7)M@p^x&^hY)1MVk&Z=5SGUr?L!FQ#TkWR^5{;C6w{+Lza zvy!Y5|3-0}`{p)NPvjfrl1}?610#5bScw>6m#k?N6(no;cQ9!mNWjpV7iAdfl2FG1L<9-Sq-+lP5EScq=^V!_~x;$M+T!*@PNqUz=?P;cC z1YN+e63rT%U#3UUh^(PmLGcPJYdv>d%VzjWDX%6Gzv7JEgxtjvhGbOS-q2kP`y(fW z0@w7P_I+trUbD-(RI`~ep`YKb5w^iTbherC;@Ua8{3k7w?6-a5Ocrr;StC2yAN`d5 zw$aB6E77<;MSuP5mqYB&uXeYv?zjRijN$$6+AU{KbrfU&?bcl3n=N{d)cx%&^U5d@ z+}{~1kv80AyiV^~;9<^cOxdUQ)bsT}a9!M%92t{t|2cmdlz|a$OEwNG{YSSQbqP8i ze@KFk-zAcu<93j4lMZH_!3>;?APE}s>* zH8^fe~~X z!%CzdB!W((zq2ku$KO|yn&URJYRIsu85l|Wy&@~od^_>GZzi_0cIG~FBRu6$p|xZhm|z#3)<|Vf1s8X-uZ_9tY|u? zkLT-x-d%hqOw&m^I@m|v60O8TqKbbxn_OT7&k8Hi488j_F~}w8xUOX2_;r>v9k+v& z-ZyT>^I9rFC!Y-@4<{?pnA&|R@-A4R%V($cc|9MVQj+#ZBV_sHMH%u*h>zlIeqV7m zRw81{<-&)#8IrS;PeL-A-^ZLyzaMTNPm`P#*ZsKLKejwWS&8}ueC>$tx=Jx$cCKuc?5>?(s^I=XFnCRi6M(Hub4zWTLWBkcaqQ|S+j z?iF?FKD8?i8sV@?avyi>kJcv6G}aq^GRn5|p)P z12M+geTM}-GCV4bMDr3oyKMP0&S+w5;T!+@p1fpRHrr~_?h-0N1y!y!k1~D#xgKY< zY8>Q?{ozqJ3?uP7F8>#A%-nUSLA+0dy?%4@;~k{ijKMv|n=f9G09dhFBVT_RX_ zzq3Zya>tBEyY}0wO3mKn*t49fseVqjUfjA@f6!9wW{z<&61`1qS!2oFY=FL*s#x1^ zIBj^B+G3P$o2H`v6|Yq_^U?a%fQObjaiRL7>7rs5#>GgIH2cgp?b6pGdgGw+?74SA z+mc%GM$8D1fgR(b~eXI)Xifh zkTRwkjefVNI10V#4(C11vT0dS%kR!U3KZK}Cje%B(eqMAFjU_~@WqHC8l=yKN?%r1}y9abxI!d-47R-l{NLA(3A?sdkFzZ0I=NOmQo*$3-$aw9!vnHK!B|cIl{c_U!_qD;S8P&I= z1@mDf+G+UugBDGCOGn&2(oj7K^_Ij=;}K`<+J@}Lqd9gpM6=U4*C6DoOm9fr5F-&W z@JoKpeMB5v+Rvd>XpX|Tq6$>5^KRO+;c@Kr2ZtJ>+4G!h5Y}s(P0dN#hM12?)+dtI zU5#N)N!t)dVO;za=xRUv#k#w34Exx}U-&-obHhlI)OqV#>r|>UxVEg8pftsw09*x% z6AJuUVk$yOlIxE55M z*p3r>lv~uv3@un&i;)~pXI>HCB({D-&S3C*^AbdJ@aH-IJD%7Kq3+%363>ozuVE)f z_$Xd0k2Uld>AxKOFQKL#s^I_c9K^Bg5iB%kupc3DEJ7sdcxAgzDoa{OI;kIiR@!dQ zrgA-0R8m6iC3j+n!3ungL|RB4mMImJ!`W8S_{F%KCE7duHscz%!IyL5__j(KNmu5>I(xf)GWTDKa(Vu+7I z3+BT}#7EKk)%i}5?Doz6g0j&VTEB`4f5iCu)frkZ`*iyX>fAfDCm-fP1i;v%8& ztl&siIeDa#e@+LXn>jKK7>Rb59*krang%Py4t3MV|D0PLm1_i>>VC}ZAZYJRj`<|% zYuAx%__hIx*Xy1_H*<`Ok*IcXaU?rkwXfn=VW|FoxTJD+Vejj!W(PqA9SiOGsE&3< zB#SxPR|yz9)a+Pjw_se1M7ytn5zOPz2<7+8X#xd-Oat~Tm!z%ThqJb42PmNdQ_PNq z_9MZ#A_cK<>|L$ghCuCJg;<6hgWH>uw)W$;=@ZkeD%WK-`;=4ddB#(1c<&Bc{*M!c zPUA>EU?ieanqSgB@1A5`y)c$x+y_!A8-J#ZeP~rtUzRFNKVQ{~!z`u8aWN> zgXQ*@Rv^ODrv=q)qlH&QPx~~L@tSRnBuV?zZfb$6Gko4sJvEL(Z}F&(AG@w~dHC8# zr!4kcErymA@84(Rb>$nW{|sD*j{0p`$Bokm|o|7cugu=kRB0_YH0ntX*o*<_%_HwjG)H^ zs>Y2UIYf0-eK=v{!l6JznjY&*AZv zJVMC>Ejt`_`gU(#b#F$ZdWMI8YuV>?wU+M{%aGte9s}tS(nJ1uTWfNvy>;%0ScaB1 z#S?8+;=FC=iO0Z5)D-G1E{0Gt;Vve)9b6IB{o}n)vG)5ps z&Sh4%UCDLEmO|H<$Yv-DvRm&?n4zDE6!{ONImDyl*J6BnPNPwao&qtFSpBwfrqd6Eso+ca$-t^J^7b;d-si%Xhq>_#;mBT3RP+s>u! zq1B?AqyWBK*3`e2ZnOpdpr#}Lfm{e_vHrU^ZSqA|ttH)e(SmU?5_Q$>=W6NKE7{tO zo(4#XV2_3bc{sv#1G+?GsllxI@1gQJ@BYrx2)&a|MzOPgRc}i zkAI(au_R7Svn(JFwDen6+bi?QsYl8%vxc52<9y((5gkE(K6KlbWA3tziNpWFC@ z?YF-kutulL8#T*i*qkd~24_JeX;JO|tWWfhx|ij$jus~+qH`(*BhhY#-k14Ro1`xY zKB;3| zdFgE%<6215HM_)aJ-nP-=eET){+cribg(i9vK67q>exBZhk?p}z=uLauts~gzgCq1Q z^tO!_gZHm}?y*#;_(d`ZBazPCjoR8Vs>U5f zT9alqF6Vr36!JzilNp-g%RBdO8lFo>3z9(?iSAc<{_$;39%Em*=x9O4$gIY7Fh9?n zHNtgg?9$L;)(FpO5n{tg^yW3u!O9eOvNF8##LlY#yCT+8qX$~ds!6-H9WX7#(LYH2Obnx8dL3{=ebDTtQX}Lv%-}3RmVs~ zjO^Z_JfbSrxW$8YjB8f0a(2nAd*vFPbW~I+Ta_whYgU;h&`y{SBhg+e>6Z)`c0)f< zcbr}EWPg{%23I`6NU^7NKJ=SGmGt3$$?#=%;BT+4< zdlxo?NTdc=vKwY))`@q)-|NV@4y0MhVcX~}AhD{iD-2-KCUIn*hMp0=(@A+|I9bEpTp zdD`0F%i8&ULxekfM4Gaj5AV{E!9dkZj6`c>2Ypyxs;yl(x`sa9$3<S-%ouCEP8 zp*OwPM*PSQ5m8n4^I}1l)2xT%pDsqC{SWH7e1Via--T8&cttcPz%CSVC}8q$jguB; z<+6kS_!tq$suD5cdAqQ{e;_e}kx1+Q>oZ?|r>+`4M~=F6*52*gzh)y_=+(1~)1Y%+ z)Xvfc{7U0wU;Z@cySk;&1stCS7)g>w?_Os;Mfdg#gWk&KU6d0Q=3SI`7sq_G>Ky7X zbDHDYxvw%>kZ-_9w3{)rgKQ8pdhX2^8AqYFdH3P<`*f$ioF-2pF10Upt3-==hvVD? zMxu^|r*d%Sq0Cp5?%$5kw}WwS>GPw ztZ(O|xCgH=<$v?~RID~7oe8H$8hN0F=i~P-vpU|4MBlly;x}RWCz)5oUb*wu*wiP$ zUKh;oocwRI;+NM}6Jz4^Shnnwy#kw$GAppnYHW=3U(GftdH#JE`qn>)A(_@#jp4znF(|~)Mk^a+S z&FicS=VzGpJh1xvzq;^*EOp`d`S9~FBhk7jv3(VZ?VC^ZFa9P>a_&Q?S~mWah)$_u z>sqr8UArS+wq+fOEH0W}h@k})NimWnMGf!6<}LNsH=cW>pa)i6V>PxUHT|;-TNqYK ze>xzyy(2U~UQ-*D|II7OF%r#W4*0Ml^o(*JQ$wf=H=j|%^EdeZ#7T~CMCUP&o>2$r z8CB-XV#RzGaf|tk;+5ohgc8YSmt>WR7@1XNk5Ctm9vF#cGG1=%A3CadPZx%kmicqp zpVVXOG`5*@23}!K@8=-{*;XPa&v>0yYIJn9f9^AmIMh`6ne!@dbH?H5Aw43Y7n{Gx zTkmaqtDptrVkCN=dxo=H5vBCG?kV;vZywjIH#c*L9*5IMuvEHA&eS0?436r;7gu|A ze4{cx-{)6660I6IXMIbZRo*f)@Ta|2^_i=G@m&t)Arc_-CG&BPq(k*Y0ZX z@GvXaNnyk4AaaYwIC7YAc@F;D<~h)t_Bkm>`JGZqhb-rTMhA%%} zGdqsr-hVH0av{Xyk*=m~#%+C-1xDchCs zHxWjE?`RE2Eh~{veb6D(&>PW}NVD()-kFAjP*}WqyRzY*2xHLKae@aPp_t>B~iyk-%^GQTj>$H)5rYghZJ zNB!>`=Ze+Qse?=F=knZKF-DiMm2|Xhi3w3Bta(Aq*A@jMQJqZJ6LOKnSR>~-4-JU{ z9EILg2jI6}K6)|MxVy5ohL#g|L)1&RUK;_`dNPb8Ne$Aj%cpz98gnNUll`@h>d!X6vC65DBMhl+KjqkF2RRp? ztGJ44%9u}*4rZ^dxa^BGwl$wFbY;i57)g=}{&`e!KheY3+;ETbb((|JyH}vLiYm>R zPm%vZRm$)BGXlik~@$W0)pLAoF5 zK}ww;#~39^JpwJ*p&cVp?Z@-ON}Cm-#=6Txlz?R=)SVr!8S|#JS8)`2OH$d+iZ4I%2gb?j_R!9DD-ee|2P*Qo?tH5f#}~;Bmq|=dueiuZ{f$W~ms7>KQtx$b}EY z8mlK%m+?rDW09!aX5`LnHb=M3kBv9WwXVb(Myj`r7UXd-5>>a!De|~|vBsZIy=9Dx zqim;Bl{}u3Eq~$?`mBnKw#nz##u~@Ac*$r%q6Q<;q%S0|+={x(H?CXPH~vUvc_|S* zHF{7bF|sm(8hbHfe&!ML^VzGlFLFMZLx?1G>Y7(>Lmm&?z4sBg8_a>ZrR&&&P5J{^0v6y$}?{UV9M*U>81ka1txyPk?)Q^7RGo7E`)PRlj zSxyX-SGd*9$lH-`gorLdg7xs`AY@wY2Ock8La}6)gqF z_uyT1ZJjQxRgvbAXe!gldkq~`?-AlrsS`X6ejb&2Y|Nru|18DRJBU2o5A>BWhj1Rk znI9im%o0r=J4W@D>m2NEykDEmb|GS;ibsW!BK1L~1<)%UJUe z?KCY|6=)|sTg*rFnb(ijhhO51J=wpeqUBiG1Unzq^yykvq@A|(UT<5QnuRY|Y27e8&Y0OYR9-w} zvf-MT&1RXlQRTJywcBR1<#MtBWLt>1b zJ5^;>kBP?fY?7_OtgR+pVQ{(v^AWx5F~gb|9An)7N44_?=8<4rj6~}U*L|%=^M)CE z|FeoTZM+fm?4uEyZKsNz1hB&Z&B%OItA`Y3^iMi#(j4|95#mB5sysViM_V(-&nOe< z!ScjuM(-srj8nC!gE{bH$dyUbirT(f=2q3PRqU<#1=hVZnv~fij6!efiB$Nhwdn=b*yrQP(85U+Yx)PHAF(nRiQaLR4YU^P zN}6g1Jy@bT&zRKhm9Zh$9$^%E(@bXCNNd*$e#V(^9t0%_Jggh==wO+2qgO=R{ zQV-9zaW0F|J?@rqV^s>>ueyIox4tcz&&YYHD?LIJ))h7O>L-Up2&5i* zzh1H5c;554vEYyWl%rRXBG$AjDf%-xf}sToH_S&Ko-5Ky91YRk7LF50J@l?HA;swF zwbck#(kRDb?;?%o{~fCDn=+1}1<5(gN4u|sa%#Un+NlK**ML+T(r3>%<+ANs+R$h+ z%}P1Wdc3#pNZg}&-6s#Q)M-@EcB5WhhV96a?Zr3=0qC@(uWby~& z!0g7xoasDAiMH9TLt5<8s^p}8!eGICc!YFM^r_-~BrU(*gm^XN(vVlfPl0A+V+#9p zI^m{A&ZEj@U=%Baoig4ONi?3%wx}41cJ({n_4Zq}P4g`jCy;tLs^F@7M#5}wV^ADF z5A9_apQJuJw3=?DFb)9b% zR-Io+`9{nrj^fnk{?dQ2gwAPMdcGVwwN1PFwTR+NTq^c_!6U>-v}VbgXqDUxD%*$| zmQi;-yRvvrZR|KS3Pof##{ z^yI`Tj8mrA83ywaCA2Nx+G~D6#m=R|kzibY?V6EjC$7abOWLyh3TH<7Zz4y=RK_V& z>|KNTsJBzIQ+;N&D=S4z^)aHb zhgG=AIE9V*&|8ug7Amb>*qM*DBW@cloTHxH<~kd1OHnZr)f%)*ww~C!SNWTmYJNxV zQSKPy6gG}RZ|XkuX|8pg$37*FxNWpx&mW9LRrk{$S|-PZDi4XN=65)`)E34mY#fE& zk`%UUjipkv0m=sAw$Xy$AV#A5?!`LVoH2f^A5nwQ`x^mfiN7@x0D&BUUS)^Zj6SbmA-K8~4;-GU4+Mxs5Ij_a)* zsBW<6>?#70i@fU{$BbO%GjiHdj9hCyNFJ4IOiDuwa;YL^y71SP)^)Sv*pD3@Gh~y< zMc$RqWZe?8seG^c*yz57bBs}-=p7>O9g+)XXJsK#>DsH$lg7x`N3T_s6Z2io;A*wZfmrlJLp z1S63O)Cv2$Gy8q&PWzj%N&R9D(WA~q`@1vyHTzim+qQYOs^i^R?M&~^{4LdtL{xl_ zpS)Ksi(_L)JKj=F3x7+c_kOhsy*oSK^i{_iK$T=q@80Cm@X+_SZMy|oWHEil_2bJbG7av{`O=C6-zD zd&_7+Vp)hJ9VX41!Uu?>PdRK?x!E`D6XPm3*kuf9X;M5PU7Ss!G3-H7iqMw~bMUo3 zGZN7pq#;zUZ8Y;E4I#c_n)lQ{jH?du6iSH(!gU^%pq*iF(x!nnv$i=E7RI`o!U9O*5gh3g-g`7jcF zAEZ;%xndL>MLI=%Rkm5vw~Q+r;gR4G(mM`mAw7C9hP5XxB(z}PHjG5GCDJL%xqCGG zNIFHYN!e(L`y0lUjc^otQ|I?Hla$U8qu2z}LPCr14MHTEw>$PG7~h+~&j-(zuf4DT z{Dkp63nHox1SvIt9K#-ttYP2HFfB-sVp7?eNHq7My@}81D$7fI6F3UJ`A$QXD2?$w3)1AEy$S1*j%+&Z zO`ruCcZ?)S*{?KL{yjO4l_ae&q|}i)$KH2Tx%@S!a&%D)`-Akz&~k?K$U0eGGpR|4fzrBeM3o-t{8G0arC8n*Ot+OIWQ8bkkl4Y`5<-!~){ zAV+N_`@TrFl=cVFg848K^)b12RH=2M2U|`1gBTaD629BVX?ebHNcC`z{XsT{_6N~| z`7jdci#BM*cJIhkI#xU^lK0UaRAbNrHnj3(L+n^MD8iRncDphEHYbFxh{)=T$jGe6;fpYc6&%tzJg!Y!_IGvdZU`DrI)s2v1(BpX#!U0&gM7UpoAW}rlSQv zQH(@dF9AbXt&s7`)EUbK58Kzq>eO35v-W432>mDN_wmyZR=8rKGQQUWp@Ssmz}&Q+ z_$87BO$|^6Oo-DlZgy);HKlAT=9$#rCU$qM5gEzu4ezH63K}MKkiS;Pwa2iM z`#qKGQNcRKy%1elU3}7?wYW9iCU$omb$T=_+Dlffle-EXB=JZv673?d8p{@)D5b>x z(m}_#kwr_Z$>+V9a%GhbwHhSp#(=Tx<#~7I*0k0-TJT6Pk|eELKbHBXmr~YTY%h3V zjz;|osV$4uW$%7Tq3`^sLQ!mM<08tJtv~B%K}845O>f)N#>uzK30pzZMo>W1@si~@g-kp65()U37F_kpR@n}|0ZE?Oy*5IXa3@usLUcX0@^r~*!?Nxc?D#Qt+ zMgnJ%i4#^iCyW{wlH}Vhzg8n(UfG{mWVE0@14g2i)X>4&?lS9rZxA7k9-NR~STb7W zgf!|}NK#KCq#LBI_vM5%T2KiCBhi!d$=}-U8C`t~6X}iG5~w+Wk?2?Z?zZ;kSbN{! ziS$NGcL(XMa?%?kk@imbVEy$^?R~uc#|i2eE?s8Yx&|e%@%LEzy~LUJ@55^E+gCki zkp5Te);>Mjk7H;-RSi-7V#uFE^rh{8@EucToNyj%&&{xXT=$K&e9zJ`pCnbfAEwXy zoZmOU*Eoh2j4PgppG&N@_^-K@YQ*rOW(6u!h&mJA+b3CH)X1YuCT<%oPHtO$Ox!j` zlB9N9EY`NWrpTNPM+;}eGfM7KIU6osCC}Ybtr4Va!1;5upe6@KlB62HWw(ABKSOy< z+%_H+DhP;r08u$|S(hG~q3FbhqvZy%;eX~jqjEMJBhg-J6Bo<6KVEqsptS~MT#2d>6qHtSJQ%u7Z{0DPoH$L%$%C$v)DEfhiO$(}Rh)30>{b_VSNSk9$wJntrRHXJRO10zwl8+CeGm4j2{+(fK% z{@hg9K)npiN17b3I;CyvHcjTlI$Bl}vEJP!P36QoMxsi0LhOw|=hXxKo=QXfYo~BGTe^guXmvxHa(4D293>7#H(V z1;p(U`n3Kdt)o?$B;+`zWBu$qpMNVUZ;Q>*pcdh40Ou|kd;=cn10e;8=@ zKxGn1vP6E;0*h?4{*Wt{p~d-3w0FD}bHqRUO^fQ0M=M!N)E3F=J>pH0ZEv7T-}&^x z3$$q$a%)X$I-cjI1=UDI{gOvJ`)NVVr)c2?MQsuEu-+bTi`O>U`X1mp@^1{$svb9%jP{L)dGgjOch+S(HT+Y`#Rh?wLP&cR1X+ckh7Su1{ zzd^GTuH#o*N^Nh9ykC^zsMkJ!8}FxHwVl}5JiTCCJ^SA$>2HTeKJrK;5452A2}W{w zB$Gx;1-dh!P6_Ilptr;0JbC0M540qnX~0Y!7K}tIkWJ^OUY;^j*V>7yDwl>9Q5)Sm zW2-_l0Ms&}s+Sdo)1GKE^mlYmL<_$snq7Rw9F=nir==vi>QU<^2p+$!n5dqce#F*2 z!7rUZ8B8q`s#YJiC2h{oJo+xWx1)vM=gls@n45m*$Bw5}_;rS69ULck49ugc>Wws8 z`E_c#s9!SiLN-h7PSdnxdPboI6;CiX^{?Gs#Pa%@n^u&boTzew-bsBvsda~Jwyny^ ze}e=2dRg|gE~u3vEn&2v`UyrN)rdPiELATjTis{|fGQ{Gab|ZJzqH6jwwRe*@x*&` zXG`@(>#WVl11+e2f|016Vd^YP+e7uOBeQ6vbXwcUFEDbfZEZ#B=`E;{%s)QX@}&;5 z79tO{pneJFqmENWJ6Ue-$Vi(_v%aizL$j+cYMD?!`T~KL$A8^QTS6XaIlHr#AMf>> zaY9MQNJO9A-e+kyVTZ*fi$==B^p<}9kGyQp&noFbYBRs~Ww#pl_Hk8}gV)wtdb~=v zRTgNXlgBO zOUGm#Etn6F(4mnM6do*djTDTF8YyCT;0)4X*>GT>e4KPx(Bh1%aBUfkBuNWMPiAcN zk4jzAlfhBwEov^`Bh8vO#VRP{NV5hlxH5r}NT+D$ShjFRA-yuK6rmQ1pm^d~#W5Uf zOV?;M>S?~B`a4>Ua;`1eEzZ>_gRgR7B*%)^+{Q)pOj_|mwH6$O-i}qZPU)rem9(mc z7QU*s>b$pMuH2a&L`g%4R->XO6x9pRY7`z7o(C$d(6vh*w`Ua9^U;bITAZs<24C^Q zNVH=@t5LOAR@4({H3~gYdj+pbszRa_uQ@Az)Em=^7g{g}Mv|n*v{H1SlE40xR*KLA zbD%m9ts&EDR6*5G-$JWVXu;nEMj~!|!EoPVq#zJhcafkDgSsdt>Cg32?EN5pFOY)3 zpVSW$EvO)Xx-Z1)?{p{#>>u=2Gl~9sI|hDN5a4l5JphMtOGICPxd$l-EI#{HP;N1a ze%{|1BTXa{Y5kN0JxG0jzVv$-XR5nI8qQuN$e|hgfNrF5zDPxemAoZIB;FsSvy6$Hi;S$yQ{HZR9qsYBkOX#oaWOa*~sF~ez0lKG-{-b&_MCgD z53}JY^rn5a{Lhu_#3C=hjAxFKNH>alP6m=@O^&}7=w@%p2iu2!?|#X9B%A#p z`8kn($-Uf`S)_|o`us&5EoRTjSuEmvA59*K>hw!JmphR5PTN|O1hpR2-Z6VzI=VG0 zJE~cKqTYb7yi#?v;1P;yJvpZaE8Xclo|PFP92I_6HfJZy>~7(7RF6s=Qtr}uT=J-( zqXo|c&yQ9Ob{&(ik&4IJQgbxSZfbqR4(}`cRwQZ1;~=>?{RYoG`yl*k@i&2yXl0vr zOw!M}>j8eG2Vh z@tvypTR$7-UYgk*8hbsHju-8cHJ%or-yI((^r^V|yXz%WMzwvr~+Pg#jBOFzO z_6G|rZD&N=_Xi8n-reE~iFy?6-Jt~)lQ5DbO{V?Y2|F_NVzgh2qmI#jq;=2&V<7F< zioF`U(SGf<-EKyG+OI_mYC2&g+M{>s`+OT5Ea>~7285^@VS1EtY6zLC5hfeXb)5L$ zoGf=}Iz4w1>s_5HP~3y7GG+DPRJ_CErPHGYdGJxDg>%%Lqc`=P%t&;VI9dG|rwSCm zx0}jO{BKiliAUmpiykKT&n;PVn2|_7ku(Pi(9K;LF$<&$P>PdKn)aAH&VJ6cP=UKT|dSrMuyS7AFt${XE#e;X~=6V_Yvl=jbAmw=5 zCsQdwPqhX=x(hwMQ8x-B(HxF?6*r>$?zT&LbR1L+`r*vOFHl*7G7 zs`82S;Tp`V=8G20hmolEV_OcpipO-f=lYHnUl~`ka*G*cGgXIpr*Zt;=xGpqTX{fF z=dYP%h2G@&`Cuff1f=f3%V_R1WO6NGCWCVyvnMZCwvwa{(*sxnDQqkcC}*Gr6|8Vh zMEu8y{A>u#0HT{-(s2}?hj>&|_1Y|w&ZFOz<-(b_|ND!*NA89*VRrQ-Q+rF2dbD}t zdx>VRf6r|oC}!d8b=1wPb|tOSe>SG`sN1@_T$pCaoodC)Xj#_$FT2Lpn0@tZ=2Mhw zZ%IN_C^9u-ES_u&<}m4!4zUh*MO=(lao zGI$qo%ttJ8nZ@!knuWjok96ttN0=o_~@ zZP<;PuEg8R<)7)gx*2jyMhkvx_-&FR@7z1`WxB4sN4FHNMEtE_Bw7)+c(8d@3mC5| z<}h$B;{8)UHP6f>qwd4T7IWQ9S7@<0{NBtspo76t+TmmD|{Z6YtKJMzvq57bAHADHZ``mDw`xF zIX!CSuC1Vj|845HVI)Z!QzX{D{&k7e-cUa+t2du5IdYgCq5mYcH$KX=n2KVi@*AJS zIrQNIo!V{foN8~}!yLtDWTx61pI_h2)vQ;zpFxLt~Fx%^YTjZZk*MGSq>b?lBHU zxqP*v*<+gZJ^OZ3L(7&+`Rz(m!+vU;MeVJ6$H$82pb+ENqVoi0Bi9XO?3yey&U*+d zM^sXYZcf@ziUBAC>pt1=PHIUK?e@+u6{Y-f_A-R$2`VG5pGlIq=F5 zJ=%77tPG$W*$U0m>`HYN-x%g+W#$t-{M$ZO)WIRfeAjsz#>Fd9^srKn0LpQrh~qrW zPVAUZ^jJV1UCHBC!Fd|SU;e6ku@&=40#TR`rb6B zM@6Ulo@wEuxHlhV{x%&)<(Vsnowj-F!F7JKpShVGuVcI_iQxG*hV7*;;KOQ{)6wD| zkzc)eri$(Pn)Y@TK{FE7GlVr~H%aw0-<{IToO5!;J=D)bolDY=p79e)i|wh8_`8~* zfQipRj70ASq!3$~p68{{2MX$Yd=76Th1f_--S0}STqRGE=8{5eF?ybNIlN0T=g!=M zYIvghUa|e9*iZB}vGMHH_j0@18~+r|Ug7+2t`CQLbdvO&&q%hLRtM|f9i*UT;jDc2 z@1td$qno)IiIk0;Z^8?lN^GWuzZLVpxptfRhRpwVXtzo9?`QHri}_w_YTlWVXqD5s z1~54+*zUovzN~T0YnMN-h-q+oq>~3)%xjmA;R4Z25T6P2u*aHa+w_xMjA zZg{oT@}PUMM$r2 zKAk7Va6M8(!BOa4aC3-ygp}B_{qux!Ox<5VnP`hP7QHH}paqq`FcS5G=>>9zgBW|EoZ0!l^AM* zxqj}brqN2#1W#4%b;{4K%$+}~HRbqqV5X9DZfV1%eI-^Y<#^d)o#LLitC6SpeFZHT7tcwOCU~SNMIQzk=YHKND43!0 zSLsr&YNZYr4eyuzDaX7;50&^y-3*`Bixsq>#ujRNktRo}Qp{ssF(Y)O8$(SnJaha+ zBxz@}BJ9cTY{u1)D#B;wA5&MoU2P#L81_^#5?v+3|5aM~H!*bY_kv0qj&kuRskTYk zXVi@wMCVa(NHLZeS<~2B`ELa+cux2!NYb5Qhm^;zAx8L-$qH&-p-L9&dr4CDNoSSo z<9iuBo-Y%Wze2}uV`))$jZAfxijnAk^=W~!AU?v#=Nc&F*zsl@3wM8QJgYxnMSU+x z>bGyUlKM-eQDvQ{f)-Tb5_5DMZj&#riZvQ8ts|oz6>4Eg-gE7WS$jH@%9WJ7;e@

O{Z?GNQ6rmeZRL$Bs!q{rRB|DCML+7H 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

i;{siM+*I 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

M|T7c0u2XfD4&I-ey>=z=2c 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%0D5ZziFj{S&q87q)lzc;bBjSzq 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

E};o$vBgy&CgXJ_%X<^&DaHCI*X|- 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≫#-$9ufaZ+665+_|>=%)52 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

  • -GlCabwd+*1xVHx9 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 POK^vUQcy`KwZZT|$eM!; literal 0 HcmV?d00001 diff --git a/src/paths.js b/src/paths.js index 26a66b8..2a6dcfa 100644 --- a/src/paths.js +++ b/src/paths.js @@ -66,7 +66,7 @@ D3D.Paths.prototype.offset = function (offset) { var solution = new ClipperLib.Paths(); var co = new ClipperLib.ClipperOffset(1, 1); - co.AddPaths(this, ClipperLib.JoinType.jtRound, ClipperLib.EndType.etClosedPolygon); + co.AddPaths(this, ClipperLib.JoinType.jtMiter, ClipperLib.EndType.etClosedPolygon); co.Execute(solution, offset); return new D3D.Paths(solution); diff --git a/src/slicer.js b/src/slicer.js index 395435f..80e10b2 100644 --- a/src/slicer.js +++ b/src/slicer.js @@ -167,12 +167,11 @@ D3D.Slicer.prototype.slice = function (layerHeight, height) { } var slices = []; + var testPoints = []; for (var layer = 1; layer < layersIntersections.length; layer ++) { var layerIntersections = layersIntersections[layer]; - var testPoints = []; - if (layerIntersections.length > 0) { var y = layer * layerHeight; @@ -428,7 +427,7 @@ D3D.Slicer.prototype.generateSupport = function (slices, printer) { var supportAreas = new D3D.Paths([], true); for (var layer = slices.length - 1 - supportDistanceLayers; layer >= 0; layer --) { - if (supportAreas.length > 1) { + if (supportAreas.length > 0) { if (layer >= supportDistanceLayers) { var sliceSkin = slices[layer - supportDistanceLayers].getOutline(); diff --git a/three.js-master/editor/js/Config.js b/three.js-master/editor/js/Config.js index 274691c..0922263 100755 --- a/three.js-master/editor/js/Config.js +++ b/three.js-master/editor/js/Config.js @@ -8,7 +8,7 @@ var Config = function () { var storage = { 'autosave': true, - 'theme': 'css/light.css', + 'theme': '../three.js-master/editor/css/light.css', 'project/renderer': 'WebGLRenderer', 'project/renderer/antialias': true, @@ -46,6 +46,8 @@ var Config = function () { getKey: function ( key ) { + console.log(storage); + return storage[ key ]; }, diff --git a/three.js-master/editor/js/Viewport.js b/three.js-master/editor/js/Viewport.js index c646308..271e3ae 100755 --- a/three.js-master/editor/js/Viewport.js +++ b/three.js-master/editor/js/Viewport.js @@ -19,7 +19,7 @@ var Viewport = function ( editor ) { // helpers - var grid = new THREE.GridHelper( 500, 25 ); + var grid = new THREE.GridHelper( 200, 10 ); sceneHelpers.add( grid ); // @@ -236,11 +236,11 @@ var Viewport = function ( editor ) { switch ( value ) { - case 'css/light.css': + case '../three.js-master/editor/css/light.css': grid.setColors( 0x444444, 0x888888 ); clearColor = 0xaaaaaa; break; - case 'css/dark.css': + case '../three.js-master/editor/css/dark.css': grid.setColors( 0xbbbbbb, 0x888888 ); clearColor = 0x333333; break;