/* * GoJS v1.6.18 JavaScript Library for HTML Diagrams * Northwoods Software, https://www.nwoods.com/ * GoJS and Northwoods Software are registered trademarks of Northwoods Software Corporation. * Copyright (C) 1998-2016 by Northwoods Software Corporation. All Rights Reserved. * THIS SOFTWARE IS LICENSED. THE LICENSE AGREEMENT IS AT: https://gojs.net/1.6.18/doc/license.html. */ (function(window) { var f, aa = {}; if (!window.document || void 0 === window.document.createElement("canvas").getContext) throw window.console && window.console.log("The HTML Canvas element is not supported in this browser,or this browser is in Compatibility mode."), Error("The HTML Canvas element is not supported in this browser,or this browser is in Compatibility mode."); if (!Object.defineProperty) throw Error("GoJS requires a newer version of JavaScript"); Function.prototype.bind || (Function.prototype.bind = function(a) { function b() { return g.apply(a, e.concat(d.call(arguments))) } function c() {} var d = Array.prototype.slice, e = d.call(arguments, 1), g = this; c.prototype = this.prototype; b.prototype = new c; return b }); (function() { for (var a = 0, b = ["ms", "moz", "webkit", "o"], c = 0; c < b.length && !window.requestAnimationFrame; ++c) window.requestAnimationFrame = window[b[c] + "RequestAnimationFrame"], window.cancelAnimationFrame = window[b[c] + "CancelAnimationFrame"] || window[b[c] + "CancelRequestAnimationFrame"]; window.requestAnimationFrame || (window.requestAnimationFrame = function(b) { var c = (new Date).getTime(), g = Math.max(8, 16 - (c - a)), h = window.setTimeout(function() { b(c + g) }, g); a = c + g; return h }); window.cancelAnimationFrame || (window.cancelAnimationFrame = function(a) { window.clearTimeout(a) }) })(); var u = { bj: !1, Rz: !1, mE: !1, BH: !1, fF: !1, EE: !1, ut: null, enableBoundsInfo: function(a) { u.bj = !0; a && a.Sp() }, disableBoundsInfo: function(a) { u.bj = !1; a && (ca(a.gd, !0), a.Sp()) }, jE: function(a, b) { void 0 === a && (a = u.ut); void 0 === b && (b = a.Fl("").mb); var c = b.length, d = a.gd; d.fillStyle = "rgba(255,255,0,.3)"; for (var e = 0; e < c; e++) { var g = b.ea(e), h = g.W; if (null !== g.va) u.jE(a, g.va); else { var k = g.zk.copy(); k.vA(g.Hd); d.save(); d.transform(k.m11, k.m12, k.m21, k.m22, k.dx, k.dy); d.fillRect(h.x, h.y, h.width, h.height); d.restore() } } }, kE: function(a, b) { a || (a = u.ut); b || (b = a.Fl("").mb); var c = a.gd, d = b.length; c.fillStyle = "rgba(0,0,255,.3)"; for (var e = 0; e < d; e++) { var g = b.ea(e), h = g.Ga, k = g.zk; null !== g.va ? u.kE(a, g.va) : (c.save(), c.transform(k.m11, k.m12, k.m21, k.m22, k.dx, k.dy), c.fillRect(h.x, h.y, h.width, h.height), c.restore()) } }, wH: function(a, b) { a || (a = u.ut); b || (b = a.Fl("").mb); var c = a.gd, d = b.length; c.fillStyle = "rgba(0,0,255,.3)"; for (var e = 0; e < d; e++) { var g = b.ea(e), h = g.Ia, k = g.zk; null !== g.va ? u.wH(a, g.va) : (c.save(), c.transform(k.m11, k.m12, k.m21, k.m22, k.dx, k.dy), c.fillRect(h.x || 0, h.y || 0, h.width, h.height), c.restore()) } }, vK: function() { u.kE(); u.jE() }, wK: function(a) { a || (a = u.ut); var b = a.ad; a = a.gd; a.strokeStyle = "rgba(0,255,0,.9)"; a.rect(b.x, b.y, b.width, b.height); a.stroke() }, lE: function(a, b) { b.fillStyle = "red"; b.fillRect(0, 0, 8, 8); b.lineWidth = 8; b.strokeStyle = "rgba(255,255,0,.6)"; var c = a.xb; b.rect(c.x, c.y, c.width, c.height); b.stroke(); b.fillStyle = "rgba(0,255,0,.2)"; b.fillRect(a.ad.x, a.ad.y, a.ad.width, a.ad.height) }, xH: function(a, b) { b instanceof da || (a.lineWidth = 2, a.strokeStyle = "rgba(255,0,0,.5)", a.rect(b.Xb.x, b.Xb.y, b.Xb.width, b.Xb.height), a.stroke(), void 0 !== b.stroke && (a.strokeStyle = b.stroke), void 0 !== b.Oe && (a.lineWidth = b.Oe), null !== b.U && b.U.type === ga && (a.lineWidth = 1, a.strokeStyle = "rgba(10,200,10,.6)", void 0 !== b.stroke && (a.strokeStyle = b.stroke), void 0 !== b.Oe && (a.lineWidth = b.Oe))) }, yH: function(a, b) { a.lineWidth = 1; a.strokeStyle = "rgba(0,0,255,.5)"; a.rect(b.Ga.x, b.Ga.y, b.Ga.width, b.Ga.height); a.stroke(); void 0 !== b.stroke && (a.strokeStyle = b.stroke); void 0 !== b.Oe && (a.lineWidth = b.Oe) }, Qz: function(a, b, c) { a.setTransform(1, 0, 0, 1, 0, 0); a.scale(b.jd, b.jd); a.transform(c.m11, c.m12, c.m21, c.m22, c.dx, c.dy); c = b.Yb.length; for (var d = 0; d < c; d++) for (var e = b.Yb.ea(d), g = e.mb.length, h = 0; h < g; h++) { var k = e.mb.ea(h); if (void 0 !== k.location && null !== k.location) { if (k.location.F()) { var l = k.location.x, m = k.location.y; a.beginPath(); a.strokeStyle = "limegreen"; a.lineWidth = 2; a.moveTo(l, m + 6); a.lineTo(l, m); a.lineTo(l + 6, m); a.moveTo(l, m); a.lineTo(l + 10, m + 20); a.stroke() } l = k.position.x; m = k.position.y; a.beginPath(); a.strokeStyle = "red"; a.lineWidth = 2; a.moveTo(l, m + 6); a.lineTo(l, m); a.lineTo(l + 6, m); a.moveTo(l, m); a.lineTo(l + 20, m + 10); a.stroke() } } a.setTransform(1, 0, 0, 1, 0, 0) }, xK: function(a, b, c) { var d = a.length; b.fillStyle = "rgba(255,0,0,.1)"; for (var e = 0; e < d; e++) { var g, h = a[e]; g = c.Hd; var k = h.x, l = h.y, m = k + h.width, n = l + h.height, p = g.m11, q = g.m12, r = g.m21, s = g.m22, t = g.dx, v = g.dy, x = k * p + l * r + t, h = k * q + l * s + v; g = m * p + l * r + t; var l = m * q + l * s + v, y = k * p + n * r + t, k = k * q + n * s + v, p = m * p + n * r + t, m = m * q + n * s + v, n = x, q = h, n = Math.min(n, g), x = Math.max(x, g), q = Math.min(q, l), h = Math.max(h, l), n = Math.min(n, y), x = Math.max(x, y), q = Math.min(q, k), h = Math.max(h, k), n = Math.min(n, p), x = Math.max(x, p), q = Math.min(q, m), h = Math.max(h, m); g = new w(n, q, x - n, h - q); b.fillRect(g.x, g.y, g.width, g.height) } }, zH: function(a, b, c, d, e) { a.fillStyle = "rgba(0,255,0,.2)"; a.fillRect(b, c, d, e) }, AH: function(a, b, c) { a.save(); var d = b.Hd; d.reset(); 1 !== b.scale && d.scale(b.scale); b = b.position; 0 === b.x && 0 === b.y || d.translate(-b.x, -b.y); a.setTransform(d.m11, d.m12, d.m21, d.m22, d.dx, d.dy); c = c.Yc.o; d = c.length; for (b = 0; b < d; b++) { var e = c[b]; a.beginPath(); a.moveTo(e.x - 4, e.y); a.lineTo(e.x + 4, e.y); a.moveTo(e.x, e.y - 4); a.lineTo(e.x, e.y + 4); a.lineWidth = 2; a.strokeStyle = "rgba(255,0,0,.9)"; a.stroke() } a.restore() }, tK: function(a) { a || (a = u.ut); for (a = a.mn; a.next();) z.trace(a.value.toString()) }, nL: function(a, b) { var c = b.lo(a), d = b.Qb; d.te = b.aB(c); d.ga = c; return ha(b, d, a) }, iL: function(a, b) { b.pe(a.ga) && (b.gd.fillStyle = "lime", b.gd.fillRect(a.te.x, a.te.y, 1 * b.scale, 1 * b.scale)) }, jL: function(a) { var b = ja(a, !1, null, null); if (!b.yp) { a = a.gd; for (var c = 0; c <= b.Om; c++) for (var d = 0; d <= b.Pm; d++) { var e = b.lc[c][d]; if (0 !== e) { var g = c * b.Rd + b.Sf, h = d * b.zd + b.Tf; 0 !== e && (a.fillStyle = "rgba(255, 0, 0, .2)", a.fillRect(g, h, b.Rd, b.zd)); 999999 <= e || (e %= 10, a.fillStyle = "blue", a.fillText(e.toString(), g, h + b.zd)) } } } }, dumpReferences: function(a) { if (a instanceof C) for (a = a.mn; a.next();) { var b = a.value; z.trace(b.toString()); for (b = b.ni; b.next();) u.dumpReferences(b.value) } else if (a instanceof D) { z.trace("References for " + a); null !== a.layer && z.trace(" " + a.layer.toString() + ' LayerName: "' + a.If + '"'); a.vn !== a && z.trace(" SelectionObject: " + a.vn.toString() + ' SelectionObjectName: "' + a.Ix + '"'); a.Zb !== a && z.trace(" LocationObject: " + a.Zb.toString() + ' LocationObjectName: "' + a.sx + '"'); if (a.Wg) { for (var c = "", b = a.Wg.i; b.next();) c += b.key + " "; z.trace(" Adornments: " + c) } null !== a.Va && z.trace(" ContainingGroup: " + a.Va.toString()); if (a instanceof E) { if (a.Dd) for (b = a.Dd.i; b.next();); if (0 < a.ee.count) { c = ""; for (b = a.ee; b.next();) c += b.value.toString() + ", "; z.trace(" Links: " + c) } null !== a.Nd && z.trace(" LabeledLink: " + a.Nd.toString()); if (a instanceof F) { z.trace(" Placeholder: " + a.placeholder); c = ""; for (b = a.Hc; b.next();) c += b.value.toString() + ", "; z.trace(" Members: " + c); c = ""; for (b = a.wm.i; b.next();) c += b.value.toString() + ", "; z.trace(" NestedGroups: " + c); z.trace(" Layout: " + a.Sb) } } else if (a instanceof G) { z.trace(" Path: " + a.path); z.trace(" From: " + a.Y + " " + a.md + ' "' + a.$f + '"'); z.trace(" To: " + a.da + " " + a.Qd + ' "' + a.Ug + '"'); c = ""; for (b = a.Hf; b.next();) c += b.value.toString() + ", "; z.trace(" LabelNodes: " + c) } } }, dumpVisualTree: function(a) { if (a instanceof C) for (a = a.mn; a.next();) { var b = a.value; z.trace(b.toString()); for (b = b.ni; b.next();) u.dumpVisualTree(b.value) } else a instanceof D && (b = " ", a.$D && (b += "c"), a.dE && (b += "d"), a.CE && (b += "g"), a.dF && (b += "m"), a.sF && (b += "h"), a.tF && (b += "z"), a.yF && (b += "o"), a.vk && (b += "s"), a.RF && (b += "t"), a.GF && (b += "A"), a.jx && (b += "B"), a.jA && (b += "L"), a.kb && (b += "S"), a.sk && (b += "H"), u.bC(a, 1, b)) }, bC: function(a, b, c) { for (var d = "", e = 0; e < b; e++) d += " "; d += a.toString(); c && (d += c); c = " "; c = a.visible ? c + "v" : c + "~"; a.ig && (c += "p"); a.Ff && (c += "m"); a.Mt && (c += "a"); d += c; if (0 !== a.Vb || 0 !== a.column) d += " [" + a.Vb + "," + a.column + "]"; d += " " + a.W.toString(); a.Aa.F() && (d += " d:" + a.Aa.toString()); a.Ga.F() && (d += " n:" + a.Ga.toString()); 1 !== a.scale && (d += " s:" + a.scale); 0 !== a.angle && (d += " a:" + a.angle); null !== a.background && (d += " b:" + a.background.toString()); null !== a.vl && (d += " a:" + a.background.toString()); a instanceof I && (d += " elts:" + a.va.count, 0 !== a.WF && (d += " top:" + a.WF), 0 !== a.XE && (d += " left:" + a.XE), null !== a.Tt && (d += " itemArray#:" + z.bb(a.Tt)), a.lI && (d += " cat:" + a.lI), null !== a.data && (d += " data:" + a.data)); null !== a.yd && (d += ' portId: "' + a.yd + '"'); z.trace(d); if (a instanceof I) for (a = a.elements; a.next();) u.bC(a.value, b + 1, "") }, zK: function(a) { z.trace("DelayedReferences (" + a.ng.count + ")"); for (a = a.ng.i; a.next();) { for (var b = "", c = a.value.i; c.next();) b += ka(c.value) + ", "; z.trace(" " + a.key + ": " + b) } }, OD: function(a, b) { if (!z.Za(b) || b instanceof Element || b instanceof CanvasRenderingContext2D || b instanceof la || b instanceof ma) return ""; var c = "", d; for (d in b) if ("string" !== typeof d) "" === c && (c = b + "\n"), c += " " + d + " is not a string property\n"; else if ("_" !== d.charAt(0) && !(2 >= d.length)) { var e = z.tb(b, d); if (null !== e && "function" !== typeof e) { if (b.hasOwnProperty(d)) { var g = Object.getPrototypeOf(b); if (g && g.Yv && g.Yv[d]) continue } else if (z.ex(b, d)) continue; "" === c && (c = b + "\n"); c += ' unknown property "' + d + '" has value: ' + e + " at " + a + "\n" } } return c }, Lw: function(a, b) { if (null !== b && void 0 !== b && "number" !== typeof b && "string" !== typeof b && "boolean" !== typeof b && "function" !== typeof b) if (void 0 !== z.nd(b)) { if (!u.mw.contains(b)) if (u.mw.add(b), u.Mv.add(u.OD(a, b)), b instanceof J || b instanceof K || b instanceof na) for (var c = b.i; c.next();) u.Lw(a + "[" + c.key + "]", c.value); else for (c in b) { var d = z.tb(b, c); if (void 0 !== d && null !== d && z.Za(d) && d !== b.Yv) { if (b instanceof qa) { if (d === b.Nj) continue } else if (b instanceof I) { if ("data" === c || d === b.fe) continue; if ("itemArray" === c || d === b.Ii) continue; if (b instanceof D && d === b.il) continue } else if (!(b instanceof C)) if (b instanceof ra) { if ("archetypeGroupData" === c || d === b.iy) continue } else if (b instanceof ta) { if ("archetypeLinkData" === c || d === b.ky) continue; if ("archetypeLabelNodeData" === c || d === b.jy) continue } else if (b instanceof va) { if ("archetypeNodeData" === c || d === b.Mk) continue } else if (b instanceof M) { if ("nodeDataArray" === c || d === b.wf) continue; if ("linkDataArray" === c || d === b.vf || d === b.sm) continue; if (d === b.vc) continue; if (d === b.ng) continue } else if (b instanceof wa || b instanceof xa || b instanceof ya) continue; u.Lw(a + "." + c, d) } } } else if (Array.isArray(b)) for (c = 0; c < b.length; c++) u.Lw(a + "[" + c + "]", b[c]); else u.Mv.add(u.OD(a, b)) }, checkProperties: function(a) { void 0 === u.mw ? u.mw = new K(Object) : u.mw.clear(); u.Mv = new za; u.Lw("", a); a = u.Mv.toString(); u.Mv = null; return a } }; aa.Debug = u; var z = { pd: 1, Tc: 2, fd: 4, ed: 8, jn: void 0 !== window.navigator && 0 < window.navigator.userAgent.indexOf("534.30") && 0 < window.navigator.userAgent.indexOf("Android"), NE: void 0 !== window.navigator && 0 < window.navigator.userAgent.indexOf("MSIE 10.0"), OE: void 0 !== window.navigator && 0 < window.navigator.userAgent.indexOf("Trident/7"), GK: void 0 !== window.navigator && 0 < window.navigator.userAgent.indexOf("Edge/"), rk: void 0 !== window.navigator && void 0 !== window.navigator.platform && 0 <= window.navigator.platform.toUpperCase().indexOf("MAC"), PE: void 0 !== window.navigator && void 0 !== window.navigator.platform && null !== window.navigator.platform.match(/(iPhone|iPod|iPad)/i), aE: function(a, b, c) { var d = -1; return function() { var e = this, g = arguments; - 1 !== d && z.clearTimeout(d); d = z.setTimeout(function() { d = -1; c || a.apply(e, g) }, b); c && !d && a.apply(e, g) } }, setTimeout: function(a, b) { return window.setTimeout(a, b) }, clearTimeout: function(a) { window.clearTimeout(a) }, createElement: function(a) { return window.document.createElement(a) }, k: function(a) { throw Error(a); }, oa: function(a, b) { var c = "The object is frozen, so its properties cannot be set: " + a.toString(); void 0 !== b && (c += " to value: " + b); z.k(c) }, l: function(a, b, c, d) { a instanceof b || (c = z.getTypeName(c), void 0 !== d && (c += "." + d), z.ic(a, b, c)) }, g: function(a, b, c, d) { typeof a !== b && (c = z.getTypeName(c), void 0 !== d && (c += "." + d), z.ic(a, b, c)) }, p: function(a, b, c) { "number" === typeof a && isFinite(a) || (b = z.getTypeName(b), void 0 !== c && (b += "." + c), z.k(b + " must be a real number type, and not NaN or Infinity: " + a)) }, Ba: function(a, b, c, d) { a instanceof Ba && a.ze === b || (c = z.getTypeName(c), void 0 !== d && (c += "." + d), z.ic(a, "a constant of class " + z.kf(b), c)) }, ot: function(a, b) { "string" === typeof a ? Ca(a) || z.k('Color "' + a + '" is not a valid color string for ' + b) : a instanceof Da || z.k("Value for " + b + " must be a color string or a Brush, not " + a) }, ic: function(a, b, c, d) { b = z.getTypeName(b); c = z.getTypeName(c); void 0 !== d && (c += "." + d); "string" === typeof a ? z.k(c + " value is not an instance of " + b + ': "' + a + '"') : z.k(c + " value is not an instance of " + b + ": " + a) }, ka: function(a, b, c, d) { c = z.getTypeName(c); void 0 !== d && (c += "." + d); z.k(c + " is not in the range " + b + ": " + a) }, od: function(a) { z.k(z.kf(a) + " constructor cannot take any arguments.") }, Sa: function(a) { z.k("Collection was modified during iteration: " + a.toString() + "\n Perhaps you should iterate over a copy of the collection,\n or you could collect items to be removed from the collection after the iteration.") }, trace: function(a) { window.console && window.console.log(a) }, Za: function(a) { return "object" === typeof a && null !== a }, isArray: function(a) { return Array.isArray(a) || a instanceof NodeList || a instanceof HTMLCollection }, gI: function(a) { return Array.isArray(a) }, nt: function(a, b, c) { z.isArray(a) || z.ic(a, "Array or NodeList or HTMLCollection", b, c) }, bb: function(a) { return a.length }, zl: function(a) { return Array.prototype.slice.call(a) }, Ya: function(a, b) { Array.isArray(a); return a[b] }, LD: function(a, b, c) { Array.isArray(a) ? a[b] = c : z.k("Cannot replace an object in an HTMLCollection or NodeList at " + b) }, Dz: function(a, b) { if (Array.isArray(a)) return a.indexOf(b); for (var c = a.length, d = 0; d < c; d++) if (a[d] === b) return d; return -1 }, aj: function(a, b, c) { Array.isArray(a) ? b >= a.length ? a.push(c) : a.splice(b, 0, c) : z.k("Cannot insert an object into an HTMLCollection or NodeList: " + c + " at " + b) }, hi: function(a, b) { Array.isArray(a) ? b >= a.length ? a.pop() : a.splice(b, 1) : z.k("Cannot remove an object from an HTMLCollection or NodeList at " + b) }, Yx: [], O: function() { var a = z.Yx.pop(); return void 0 === a ? new N : a }, Tb: function(a, b) { var c = z.Yx.pop(); if (void 0 === c) return new N(a, b); c.x = a; c.y = b; return c }, A: function(a) { z.Yx.push(a) }, nB: [], Xl: function() { var a = z.nB.pop(); return void 0 === a ? new Ea : a }, pk: function(a) { z.nB.push(a) }, Zx: [], kg: function() { var a = z.Zx.pop(); return void 0 === a ? new w : a }, yk: function(a, b, c, d) { var e = z.Zx.pop(); if (void 0 === e) return new w(a, b, c, d); e.x = a; e.y = b; e.width = c; e.height = d; return e }, dc: function(a) { z.Zx.push(a) }, oB: [], Fh: function() { var a = z.oB.pop(); return void 0 === a ? new Fa : a }, jf: function(a) { z.oB.push(a) }, $x: null, v: function() { var a = z.$x; return null !== a ? (z.$x = null, a) : new Ga }, u: function(a) { a.reset(); z.$x = a }, mB: [], rb: function() { var a = z.mB.pop(); return void 0 === a ? [] : a }, xa: function(a) { a.length = 0; z.mB.push(a) }, xj: Object.freeze([]), am: 1, kc: function(a) { a.__gohashid = z.am++ }, It: function(a) { var b = a.__gohashid; void 0 === b && (b = z.am++, a.__gohashid = b); return b }, nd: function(a) { return a.__gohashid }, ia: function(a, b) { b.py = a; aa[a] = b }, Qa: function(a, b) { function c() {} c.prototype = b.prototype; a.prototype = new c; a.prototype.constructor = a }, ii: function(a) { a.CG = !0 }, defineProperty: function(a, b, c, d, e) { z.g(a, "function", "Util.defineProperty:classfunc"); z.g(b, "object", "Util.defineProperty:propobj"); z.g(c, "function", "Util.defineProperty:getter"); z.g(d, "function", "Util.defineProperty:setter"); for (var g in b) { b = b[g]; c = { get: c, set: d, enumerable: !0 }; if (void 0 !== e) for (var h in e) c[h] = e[h]; Object.defineProperty(a.prototype, g, c); e = Object.getOwnPropertyDescriptor(a.prototype, g); b && e && Object.defineProperty(a.prototype, b, e); break } }, GJ: !1, w: function(a, b, c, d) { z.g(a, "function", "Util.defineReadOnlyProperty:classfunc"); z.g(b, "object", "Util.defineReadOnlyProperty:propobj"); z.g(c, "function", "Util.defineReadOnlyProperty:getter"); for (var e in b) { var g = b[e]; b = { get: c, set: function(a) { z.k('The property "' + g + '" is read-only and cannot be set to ' + a) }, enumerable: !0 }; if (void 0 !== d) for (var h in d) b[h] = d[h]; Object.defineProperty(a.prototype, e, b); d = Object.getOwnPropertyDescriptor(a.prototype, e); g && d && Object.defineProperty(a.prototype, g, d); break } }, Yd: function(a, b) { for (var c in b) b[c] = !0; a.prototype.Yv = b }, getTypeName: function(a) { return void 0 === a ? "" : "string" === typeof a ? a : "function" === typeof a ? z.kf(a) : null === a ? "*" : "" }, kf: function(a) { if ("function" === typeof a) { if (a.py) return a.py; if (a.name) return a.name; var b = a.toString(), c = b.indexOf("("), b = b.substring(9, c).trim(); if ("" !== b) return a.py = b } else if ("object" === typeof a && a.constructor) return z.kf(a.constructor); return typeof a }, s: function(a, b, c) { z.g(a, "function", "Util.defineEnumValue:classfunc"); z.g(b, "string", "Util.defineEnumValue:name"); z.g(c, "number", "Util.defineEnumValue:num"); c = new Ba(a, b, c); Object.freeze(c); a[b] = c; var d = a.Fu; d instanceof na || (d = new na("string", Ba), a.Fu = d); d.add(b, c); return c }, tb: function(a, b) { if (!a || !b) return null; var c = void 0; try { "function" === typeof b ? c = b(a) : "function" === typeof a.getAttribute ? (c = a.getAttribute(b), null === c && (c = void 0)) : c = a[b] } catch (d) { u && z.trace("property get error: " + d.toString()) } return c }, Ra: function(a, b, c) { if (a && b) try { "function" === typeof b ? b(a, c) : "function" === typeof a.setAttribute ? a.setAttribute(b, c) : a[b] = c } catch (d) { u && z.trace("property set error: " + d.toString()) } }, qu: function(a, b) { z.g(a, "object", "Setting properties requires Objects as arguments"); z.g(b, "object", "Setting properties requires Objects as arguments"); var c = a instanceof I, d = a instanceof C, e; for (e in b) { "" === e && z.k("Setting properties requires non-empty property names"); var g = a, h = e; if (c || d) { var k = e.indexOf("."); if (0 < k) { var l = e.substring(0, k); if (c) g = a.oe(l); else if (g = a[l], void 0 === g || null === g) g = a.hb[l]; z.Za(g) ? h = e.substr(k + 1) : z.k("Unable to find object named: " + l + " in " + a.toString() + " when trying to set property: " + e) } } if ("_" !== h[0] && !z.ex(g, h)) if (d && "ModelChanged" === h) { a.QG(b[h]); continue } else if (d && "Changed" === h) { a.Rm(b[h]); continue } else if (d && z.ex(a.hb, h)) g = a.hb; else if (d && Ia(a, h)) { a.yz(h, b[h]); continue } else if (a instanceof M && "Changed" === h) { a.Rm(b[h]); continue } else z.k('Trying to set undefined property "' + h + '" on object: ' + g.toString()); g[h] = b[e]; "_" === h[0] && g instanceof O && g.NG(h) } }, ex: function(a, b) { if (a.hasOwnProperty(b)) return !0; for (var c = Object.getPrototypeOf(a); c && c !== Function;) { if (c.hasOwnProperty(b)) return !0; var d = c.Yv; if (d && d[b]) return !0; c = Object.getPrototypeOf(c) } return !1 }, VI: function(a) { for (var b = [], c = 0; 256 > c; c++) b[c] = c; for (var d = 0, e = 0, c = 0; 256 > c; c++) d = (d + b[c] + 119) % 256, e = b[c], b[c] = b[d], b[d] = e; for (var d = c = 0, g = "", h = 0; h < a.length; h++) c = (c + 1) % 256, d = (d + b[c]) % 256, e = b[c], b[c] = b[d], b[d] = e, g += String.fromCharCode(a.charCodeAt(h) ^ b[(b[c] + b[d]) % 256]); return g }, VH: function(a) { for (var b = [], c = 0; 256 > c; c++) b["0123456789abcdef".charAt(c >> 4) + "0123456789abcdef".charAt(c & 15)] = String.fromCharCode(c); a.length % 2 && (a = "0" + a); for (var d = [], e = 0, c = 0; c < a.length; c += 2) d[e++] = b[a.substr(c, 2)]; a = d.join(""); return "" === a ? "0" : a }, Fg: function(a) { return z.VI(z.VH(a)) }, Zl: null, adym: "70a114bcad351489", vfo: "2be640fdb26e", bH: "28fc4e", cH: "2bfb40" }; z.Zl = function() { var a = window.document.createElement("canvas"), b = a.getContext("2d"); b[z.Fg("7ca11abfd022028846")] = z.Fg("398c3597c01238"); for (var c = ["5da73c80a3330d854f9e5e671d6633", "32ab5ff3b26f42dc0ed90f22422913b54ae6247590da4bb21c324ba3a84e385776", "54a702f3e53909c447824c6706603faf4cfb236cdfda5de14c134ba1a95a2d4c7cc6f93c1387", "74bf19bce72555874c86"], d = 1; 5 > d; d++) b[z.Fg("7ca11abfd7330390")](z.Fg(c[d - 1]), 10, 15 * d + 0); b[z.Fg("7ca11abfd022028846")] = z.Fg("39f046ebb36e4b"); for (d = 1; 5 > d; d++) b[z.Fg("7ca11abfd7330390")](z.Fg(c[d - 1]), 10, 15 * d + 0); if (4 !== c.length || "5" !== c[0][0] || "7" !== c[3][0]) z.s = function(a, b) { var c = new Ba(a, b, 2); Object.freeze(c); a[b] = c; var d = a.Fu; d instanceof na || (d = new na("string", Ba), a.Fu = d); d.add(b, c); return c }; return a }(); function Ba(a, b, c) { z.kc(this); this.xB = a; this.Ub = b; this.HG = c } z.ia("EnumValue", Ba); Ba.prototype.toString = function() { return z.kf(this.xB) + "." + this.Ub }; z.w(Ba, { ze: "classType" }, function() { return this.xB }); z.w(Ba, { name: "name" }, function() { return this.Ub }); z.w(Ba, { value: "value" }, function() { return this.HG }); var Ja; Ba.findName = Ja = function(a, b) { if (void 0 === b || null === b || "" === b) return null; z.g(a, "function", "findName:classfunc"); z.g(b, "string", "EnumValue.findName:name"); var c = a.Fu; return c instanceof na ? c.na(b) : null }; function za() { this.wB = [] } za.prototype.toString = function() { return this.wB.join("") }; za.prototype.add = function(a) { "" !== a && this.wB.push(a) }; function ma() {} function Ka(a) { void 0 === a && (a = 42); this.seed = a; this.Ux = 48271; this.Eu = 2147483647; this.lB = this.Eu / this.Ux; this.lG = this.Eu % this.Ux; this.kG = 1 / this.Eu; this.random() } Ka.prototype.random = function() { var a = this.seed % this.lB * this.Ux - this.seed / this.lB * this.lG; this.seed = 0 < a ? a : a + this.Eu; return this.seed * this.kG }; function Ma() {} z.w(Ma, { i: "iterator" }, function() { return this }); Ma.prototype.reset = Ma.prototype.reset = function() {}; Ma.prototype.next = Ma.prototype.hasNext = Ma.prototype.next = function() { return !1 }; Ma.prototype.first = Ma.prototype.first = function() { return null }; Ma.prototype.any = function() { return !1 }; Ma.prototype.all = function() { return !0 }; Ma.prototype.each = function() { return this }; Ma.prototype.map = function() { return this }; Ma.prototype.filter = function() { return this }; Ma.prototype.concat = function(a) { return a.i }; z.w(Ma, { count: "count" }, function() { return 0 }); Ma.prototype.Nf = function() {}; Ma.prototype.toString = function() { return "EmptyIterator" }; var Pa = new Ma; function Ra(a) { this.key = -1; this.value = a } z.Yd(Ra, { key: !0, value: !0 }); z.w(Ra, { i: "iterator" }, function() { return this }); Ra.prototype.reset = Ra.prototype.reset = function() { this.key = -1 }; Ra.prototype.next = Ra.prototype.hasNext = Ra.prototype.next = function() { return -1 === this.key ? (this.key = 0, !0) : !1 }; Ra.prototype.first = Ra.prototype.first = function() { this.key = 0; return this.value }; Ra.prototype.any = function(a) { this.key = -1; return a(this.value) }; Ra.prototype.all = function(a) { this.key = -1; return a(this.value) }; Ra.prototype.each = function(a) { this.key = -1; a(this.value); return this }; Ra.prototype.map = function(a) { return new Ra(a(this.value)) }; Ra.prototype.filter = function(a) { return a(this.value) ? new Ra(this.value) : Pa }; Ra.prototype.concat = function(a) { return new Sa(this, a.i) }; z.w(Ra, { count: "count" }, function() { return 1 }); Ra.prototype.Nf = function() { this.value = null }; Ra.prototype.toString = function() { return "SingletonIterator(" + this.value + ")" }; function Sa(a, b) { this.$k = a; this.al = b; this.Gu = !1 } z.Yd(Sa, { key: !0, value: !0 }); z.w(Sa, { i: "iterator" }, function() { return this }); Sa.prototype.reset = Sa.prototype.reset = function() { this.$k.reset(); this.al.reset(); this.Gu = !1 }; Sa.prototype.next = Sa.prototype.hasNext = Sa.prototype.next = function() { if (!this.Gu) { var a = this.$k; if (a.next()) return this.key = a.key, this.value = a.value, !0; this.Gu = !0 } return this.Gu && (a = this.al, a.next()) ? (this.key = a.key, this.value = a.value, !0) : !1 }; Sa.prototype.first = Sa.prototype.first = function() { this.reset(); return this.next() ? this.value : null }; Sa.prototype.any = function(a) { return this.$k.any(a) || this.al.any(a) ? !0 : !1 }; Sa.prototype.all = function(a) { return this.$k.all(a) && this.al.all(a) ? !0 : !1 }; Sa.prototype.each = function(a) { this.$k.each(a); this.al.each(a); return this }; Sa.prototype.map = function(a) { return new Sa(this.$k.map(a), this.al.map(a)) }; Sa.prototype.filter = function(a) { return new Sa(this.$k.filter(a), this.al.filter(a)) }; Sa.prototype.concat = function(a) { return new Sa(this, a.i) }; z.w(Sa, { count: "count" }, function() { return this.$k.count + this.al.count }); Sa.prototype.Nf = function() { this.value = this.key = null }; Sa.prototype.toString = function() { return "ConcatIterator()" }; function Ta(a) { this.Bc = a; this.Vh = null; this.reset() } z.Yd(Ta, { key: !0, value: !0 }); z.w(Ta, { i: "iterator" }, function() { return this }); z.defineProperty(Ta, { rn: "predicate" }, function() { return this.Vh }, function(a) { this.Vh = a }); Ta.prototype.reset = Ta.prototype.reset = function() { var a = this.Bc; a.ec = null; this.nb = a.H; this.Uc = -1 }; Ta.prototype.next = Ta.prototype.hasNext = Ta.prototype.next = function() { var a = this.Bc; if (a.H !== this.nb) { if (0 > this.key) return !1; z.Sa(a) } var a = a.o, b = a.length, c = ++this.Uc, d = this.Vh; if (null !== d) for (; c < b;) { var e = a[c]; if (d(e)) return this.key = this.Uc = c, this.value = e, !0; c++ } else { if (c < b) return this.key = c, this.value = a[c], !0; this.Nf() } return !1 }; Ta.prototype.first = Ta.prototype.first = function() { var a = this.Bc; this.nb = a.H; this.Uc = 0; var a = a.o, b = a.length, c = this.Vh; if (null !== c) { for (var d = 0; d < b;) { var e = a[d]; if (c(e)) return this.key = this.Uc = d, this.value = e; d++ } return null } return 0 < b ? (e = a[0], this.key = 0, this.value = e) : null }; Ta.prototype.any = function(a) { var b = this.Bc; b.ec = null; var c = b.H; this.Uc = -1; for (var d = b.o, e = d.length, g = this.Vh, h = 0; h < e; h++) { var k = d[h]; if (null === g || g(k)) { if (a(k)) return !0; b.H !== c && z.Sa(b) } } return !1 }; Ta.prototype.all = function(a) { var b = this.Bc; b.ec = null; var c = b.H; this.Uc = -1; for (var d = b.o, e = d.length, g = this.Vh, h = 0; h < e; h++) { var k = d[h]; if (null === g || g(k)) { if (!a(k)) return !1; b.H !== c && z.Sa(b) } } return !0 }; Ta.prototype.each = function(a) { var b = this.Bc; b.ec = null; var c = b.H; this.Uc = -1; for (var d = b.o, e = d.length, g = this.Vh, h = 0; h < e; h++) { var k = d[h]; if (null === g || g(k)) a(k), b.H !== c && z.Sa(b) } return this }; Ta.prototype.map = function(a) { var b = this.Bc; b.ec = null; var c = b.H; this.Uc = -1; for (var d = [], e = b.o, g = e.length, h = this.Vh, k = 0; k < g; k++) { var l = e[k]; if (null === h || h(l)) d.push(a(l)), b.H !== c && z.Sa(b) } a = new J; a.o = d; a.Jc(); return a.i }; Ta.prototype.filter = function(a) { var b = this.Bc; b.ec = null; var c = b.H; this.Uc = -1; for (var d = [], e = b.o, g = e.length, h = this.Vh, k = 0; k < g; k++) { var l = e[k]; if (null === h || h(l)) a(l) && d.push(l), b.H !== c && z.Sa(b) } a = new J(b.ba); a.o = d; a.Jc(); return a.i }; Ta.prototype.concat = function(a) { this.Bc.ec = null; return new Sa(this, a.i) }; z.w(Ta, { count: "count" }, function() { var a = this.Vh; if (null !== a) { for (var b = 0, c = this.Bc.o, d = c.length, e = 0; e < d; e++) a(c[e]) && b++; return b } return this.Bc.o.length }); Ta.prototype.Nf = function() { this.key = -1; this.value = null; this.nb = -1; this.Vh = null; this.Bc.ec = this }; Ta.prototype.toString = function() { return "ListIterator@" + this.Uc + "/" + this.Bc.count }; function Ua(a) { this.Bc = a; this.reset() } z.Yd(Ua, { key: !0, value: !0 }); z.w(Ua, { i: "iterator" }, function() { return this }); Ua.prototype.reset = Ua.prototype.reset = function() { var a = this.Bc; a.Lj = null; this.nb = a.H; this.Uc = a.o.length }; Ua.prototype.next = Ua.prototype.hasNext = Ua.prototype.next = function() { var a = this.Bc; if (a.H !== this.nb) { if (0 > this.key) return !1; z.Sa(a) } var b = --this.Uc; if (0 <= b) return this.key = b, this.value = a.o[b], !0; this.Nf(); return !1 }; Ua.prototype.first = Ua.prototype.first = function() { var a = this.Bc; this.nb = a.H; var b = a.o; this.Uc = a = b.length - 1; return 0 <= a ? (b = b[a], this.key = a, this.value = b) : null }; Ua.prototype.any = function(a) { var b = this.Bc; b.Lj = null; var c = b.H, d = b.o, e = d.length; this.Uc = e; for (e -= 1; 0 <= e; e--) { if (a(d[e])) return !0; b.H !== c && z.Sa(b) } return !1 }; Ua.prototype.all = function(a) { var b = this.Bc; b.Lj = null; var c = b.H, d = b.o, e = d.length; this.Uc = e; for (e -= 1; 0 <= e; e--) { if (!a(d[e])) return !1; b.H !== c && z.Sa(b) } return !0 }; Ua.prototype.each = function(a) { var b = this.Bc; b.Lj = null; var c = b.H, d = b.o, e = d.length; this.Uc = e; for (e -= 1; 0 <= e; e--) a(d[e]), b.H !== c && z.Sa(b); return this }; Ua.prototype.map = function(a) { var b = this.Bc; b.Lj = null; var c = b.H, d = [], e = b.o, g = e.length; this.Uc = g; for (g -= 1; 0 <= g; g--) d.push(a(e[g])), b.H !== c && z.Sa(b); a = new J; a.o = d; a.Jc(); return a.i }; Ua.prototype.filter = function(a) { var b = this.Bc; b.Lj = null; var c = b.H, d = [], e = b.o, g = e.length; this.Uc = g; for (g -= 1; 0 <= g; g--) { var h = e[g]; a(h) && d.push(h); b.H !== c && z.Sa(b) } a = new J(b.ba); a.o = d; a.Jc(); return a.i }; Ua.prototype.concat = function(a) { this.Bc.Lj = null; return new Sa(this, a.i) }; z.w(Ua, { count: "count" }, function() { return this.Bc.o.length }); Ua.prototype.Nf = function() { this.key = -1; this.value = null; this.nb = -1; this.Bc.Lj = this }; Ua.prototype.toString = function() { return "ListIteratorBackwards(" + this.Uc + "/" + this.Bc.count + ")" }; function J(a) { z.kc(this); this.G = !1; this.o = []; this.H = 0; this.Lj = this.ec = null; void 0 === a || null === a ? this.ba = null : "string" === typeof a ? "object" === a || "string" === a || "number" === a || "boolean" === a || "function" === a ? this.ba = a : z.ka(a, "the string 'object', 'number', 'string', 'boolean', or 'function'", "List constructor: type") : "function" === typeof a ? this.ba = a === Object ? "object" : a === String ? "string" : a === Number ? "number" : a === Boolean ? "boolean" : a === Function ? "function" : a : z.ka(a, "null, a primitive type name, or a class type", "List constructor: type") } z.ia("List", J); J.prototype.Yg = function(a) { null !== this.ba && ("string" === typeof this.ba ? typeof a === this.ba && null !== a || z.ic(a, this.ba) : a instanceof this.ba || z.ic(a, this.ba)) }; J.prototype.Jc = function() { var a = this.H; a++; 999999999 < a && (a = 0); this.H = a }; J.prototype.freeze = J.prototype.freeze = function() { this.G = !0; return this }; J.prototype.thaw = J.prototype.Wa = function() { this.G = !1; return this }; J.prototype.toString = function() { return "List(" + z.getTypeName(this.ba) + ")#" + z.nd(this) }; J.prototype.add = J.prototype.push = J.prototype.add = function(a) { null !== a && (u && this.Yg(a), this.G && z.oa(this, a), this.o.push(a), this.Jc()) }; J.prototype.addAll = J.prototype.$c = function(a) { if (null === a) return this; this.G && z.oa(this); var b = this.o; if (z.isArray(a)) for (var c = z.bb(a), d = 0; d < c; d++) { var e = z.Ya(a, d); u && this.Yg(e); b.push(e) } else for (a = a.i; a.next();) e = a.value, u && this.Yg(e), b.push(e); this.Jc(); return this }; J.prototype.clear = J.prototype.clear = function() { this.G && z.oa(this); this.o.length = 0; this.Jc() }; J.prototype.contains = J.prototype.has = J.prototype.contains = function(a) { if (null === a) return !1; u && this.Yg(a); return -1 !== this.o.indexOf(a) }; J.prototype.indexOf = J.prototype.indexOf = function(a) { if (null === a) return -1; u && this.Yg(a); return this.o.indexOf(a) }; J.prototype.elt = J.prototype.get = J.prototype.ea = function(a) { u && z.p(a, J, "elt:i"); var b = this.o; (0 > a || a >= b.length) && z.ka(a, "0 <= i < length", J, "elt:i"); return b[a] }; J.prototype.setElt = J.prototype.set = J.prototype.Rg = function(a, b) { u && (this.Yg(b), z.p(a, J, "setElt:i")); var c = this.o; (0 > a || a >= c.length) && z.ka(a, "0 <= i < length", J, "setElt:i"); this.G && z.oa(this, a); c[a] = b }; J.prototype.first = J.prototype.first = function() { var a = this.o; return 0 === a.length ? null : a[0] }; J.prototype.last = J.prototype.de = function() { var a = this.o, b = a.length; return 0 < b ? a[b - 1] : null }; J.prototype.pop = J.prototype.pop = function() { this.G && z.oa(this); var a = this.o; return 0 < a.length ? a.pop() : null }; J.prototype.any = function(a) { for (var b = this.o, c = this.H, d = b.length, e = 0; e < d; e++) { if (a(b[e])) return !0; this.H !== c && z.Sa(this) } return !1 }; J.prototype.all = function(a) { for (var b = this.o, c = this.H, d = b.length, e = 0; e < d; e++) { if (!a(b[e])) return !1; this.H !== c && z.Sa(this) } return !0 }; J.prototype.each = function(a) { for (var b = this.o, c = this.H, d = b.length, e = 0; e < d; e++) a(b[e]), this.H !== c && z.Sa(this); return this }; J.prototype.map = function(a) { for (var b = new J, c = [], d = this.o, e = this.H, g = d.length, h = 0; h < g; h++) c.push(a(d[h])), this.H !== e && z.Sa(this); b.o = c; b.Jc(); return b }; J.prototype.filter = function(a) { for (var b = new J(this.ba), c = [], d = this.o, e = this.H, g = d.length, h = 0; h < g; h++) { var k = d[h]; a(k) && c.push(k); this.H !== e && z.Sa(this) } b.o = c; b.Jc(); return b }; J.prototype.concat = function(a) { return this.copy().$c(a) }; J.prototype.insertAt = J.prototype.Ld = function(a, b) { u && (this.Yg(b), z.p(a, J, "insertAt:i")); 0 > a && z.ka(a, ">= 0", J, "insertAt:i"); this.G && z.oa(this, a); var c = this.o; a >= c.length ? c.push(b) : c.splice(a, 0, b); this.Jc(); return !0 }; J.prototype.remove = J.prototype["delete"] = J.prototype.remove = function(a) { if (null === a) return !1; u && this.Yg(a); this.G && z.oa(this, a); var b = this.o; a = b.indexOf(a); if (-1 === a) return !1; a === b.length - 1 ? b.pop() : b.splice(a, 1); this.Jc(); return !0 }; J.prototype.removeAt = J.prototype.dd = function(a) { u && z.p(a, J, "removeAt:i"); var b = this.o; (0 > a || a >= b.length) && z.ka(a, "0 <= i < length", J, "removeAt:i"); this.G && z.oa(this, a); a === b.length - 1 ? b.pop() : b.splice(a, 1); this.Jc() }; J.prototype.removeRange = J.prototype.removeRange = function(a, b) { u && (z.p(a, J, "removeRange:from"), z.p(b, J, "removeRange:to")); var c = this.o; (0 > a || a >= c.length) && z.ka(a, "0 <= from < length", J, "elt:from"); (0 > b || b >= c.length) && z.ka(b, "0 <= to < length", J, "elt:to"); this.G && z.oa(this, a); var d = c.slice((b || a) + 1 || c.length); c.length = 0 > a ? c.length + a : a; c.push.apply(c, d); this.Jc() }; J.prototype.copy = function() { var a = new J(this.ba), b = this.o; 0 < b.length && (a.o = Array.prototype.slice.call(b)); return a }; J.prototype.toArray = J.prototype.jc = function() { for (var a = this.o, b = this.count, c = Array(b), d = 0; d < b; d++) c[d] = a[d]; return c }; J.prototype.toSet = J.prototype.VF = function() { for (var a = new K(this.ba), b = this.o, c = this.count, d = 0; d < c; d++) a.add(b[d]); return a }; J.prototype.sort = J.prototype.sort = function(a) { u && z.g(a, "function", J, "sort:sortfunc"); this.G && z.oa(this); this.o.sort(a); this.Jc(); return this }; J.prototype.sortRange = J.prototype.dq = function(a, b, c) { var d = this.o, e = d.length; void 0 === b && (b = 0); void 0 === c && (c = e); u && (z.g(a, "function", J, "sortRange:sortfunc"), z.p(b, J, "sortRange:from"), z.p(c, J, "sortRange:to")); this.G && z.oa(this); var g = c - b; if (1 >= g) return this; (0 > b || b >= e - 1) && z.ka(b, "0 <= from < length", J, "sortRange:from"); if (2 === g) return c = d[b], e = d[b + 1], 0 < a(c, e) && (d[b] = e, d[b + 1] = c, this.Jc()), this; if (0 === b) if (c >= e) d.sort(a); else for (g = d.slice(0, c), g.sort(a), a = 0; a < c; a++) d[a] = g[a]; else if (c >= e) for (g = d.slice(b), g.sort(a), a = b; a < e; a++) d[a] = g[a - b]; else for (g = d.slice(b, c), g.sort(a), a = b; a < c; a++) d[a] = g[a - b]; this.Jc(); return this }; J.prototype.reverse = J.prototype.reverse = function() { this.G && z.oa(this); this.o.reverse(); this.Jc(); return this }; z.w(J, { count: "count" }, function() { return this.o.length }); z.w(J, { size: "size" }, function() { return this.o.length }); z.w(J, { length: "length" }, function() { return this.o.length }); z.w(J, { i: "iterator" }, function() { if (0 >= this.o.length) return Pa; var a = this.ec; return null !== a ? (a.reset(), a) : new Ta(this) }); z.w(J, { ln: "iteratorBackwards" }, function() { if (0 >= this.o.length) return Pa; var a = this.Lj; return null !== a ? (a.reset(), a) : new Ua(this) }); function Wa(a) { this.Xh = a; this.reset() } z.Yd(Wa, { key: !0, value: !0 }); z.w(Wa, { i: "iterator" }, function() { return this }); Wa.prototype.reset = Wa.prototype.reset = function() { var a = this.Xh; a.ec = null; this.nb = a.H; this.lb = null }; Wa.prototype.next = Wa.prototype.hasNext = Wa.prototype.next = function() { var a = this.Xh; if (a.H !== this.nb) { if (null === this.key) return !1; z.Sa(a) } var b = this.lb, b = null === b ? a.Ka : b.cb; if (null !== b) return this.lb = b, this.value = b.value, this.key = b.key, !0; this.Nf(); return !1 }; Wa.prototype.first = Wa.prototype.first = function() { var a = this.Xh; this.nb = a.H; a = a.Ka; if (null !== a) { this.lb = a; var b = a.value; this.key = a.key; return this.value = b } return null }; Wa.prototype.any = function(a) { var b = this.Xh; b.ec = null; var c = b.H; this.lb = null; for (var d = b.Ka; null !== d;) { if (a(d.value)) return !0; b.H !== c && z.Sa(b); d = d.cb } return !1 }; Wa.prototype.all = function(a) { var b = this.Xh; b.ec = null; var c = b.H; this.lb = null; for (var d = b.Ka; null !== d;) { if (!a(d.value)) return !1; b.H !== c && z.Sa(b); d = d.cb } return !0 }; Wa.prototype.each = function(a) { var b = this.Xh; b.ec = null; var c = b.H; this.lb = null; for (var d = b.Ka; null !== d;) a(d.value), b.H !== c && z.Sa(b), d = d.cb; return this }; Wa.prototype.map = function(a) { var b = this.Xh; b.ec = null; for (var c = new J, d = b.H, e = b.Ka; null !== e;) c.add(a(e.value)), b.H !== d && z.Sa(b), e = e.cb; return c.i }; Wa.prototype.filter = function(a) { var b = this.Xh; b.ec = null; for (var c = new J(b.ba), d = b.H, e = b.Ka; null !== e;) { var g = e.value; a(g) && c.add(g); b.H !== d && z.Sa(b); e = e.cb } return c.i }; Wa.prototype.concat = function(a) { this.Xh.ec = null; return new Sa(this, a.i) }; z.w(Wa, { count: "count" }, function() { return this.Xh.rd }); Wa.prototype.Nf = function() { this.value = this.key = null; this.nb = -1; this.Xh.ec = this }; Wa.prototype.toString = function() { return null !== this.lb ? "SetIterator@" + this.lb.value : "SetIterator" }; function K(a) { z.kc(this); this.G = !1; void 0 === a || null === a ? this.ba = null : "string" === typeof a ? "object" === a || "string" === a || "number" === a ? this.ba = a : z.ka(a, "the string 'object', 'number' or 'string'", "Set constructor: type") : "function" === typeof a ? this.ba = a === Object ? "object" : a === String ? "string" : a === Number ? "number" : a : z.ka(a, "null, a primitive type name, or a class type", "Set constructor: type"); this.sd = {}; this.rd = 0; this.ec = null; this.H = 0; this.Sh = this.Ka = null } z.ia("Set", K); K.prototype.Yg = function(a) { null !== this.ba && ("string" === typeof this.ba ? typeof a === this.ba && null !== a || z.ic(a, this.ba) : a instanceof this.ba || z.ic(a, this.ba)) }; K.prototype.Jc = function() { var a = this.H; a++; 999999999 < a && (a = 0); this.H = a }; K.prototype.freeze = K.prototype.freeze = function() { this.G = !0; return this }; K.prototype.thaw = K.prototype.Wa = function() { this.G = !1; return this }; K.prototype.toString = function() { return "Set(" + z.getTypeName(this.ba) + ")#" + z.nd(this) }; K.prototype.add = K.prototype.add = function(a) { if (null === a) return !1; u && this.Yg(a); this.G && z.oa(this, a); var b = a; z.Za(a) && (b = z.It(a)); return void 0 === this.sd[b] ? (this.rd++, a = new Ya(a, a), this.sd[b] = a, b = this.Sh, null === b ? this.Ka = a : (a.Ho = b, b.cb = a), this.Sh = a, this.Jc(), !0) : !1 }; K.prototype.addAll = K.prototype.$c = function(a) { if (null === a) return this; this.G && z.oa(this); if (z.isArray(a)) for (var b = z.bb(a), c = 0; c < b; c++) this.add(z.Ya(a, c)); else for (a = a.i; a.next();) this.add(a.value); return this }; K.prototype.contains = K.prototype.has = K.prototype.contains = function(a) { if (null === a) return !1; u && this.Yg(a); var b = a; return z.Za(a) && (b = z.nd(a), void 0 === b) ? !1 : void 0 !== this.sd[b] }; K.prototype.containsAll = function(a) { if (null === a) return !0; for (a = a.i; a.next();) if (!this.contains(a.value)) return !1; return !0 }; K.prototype.containsAny = function(a) { if (null === a) return !0; for (a = a.i; a.next();) if (this.contains(a.value)) return !0; return !1 }; K.prototype.first = K.prototype.first = function() { var a = this.Ka; return null === a ? null : a.value }; K.prototype.any = function(a) { for (var b = this.H, c = this.Ka; null !== c;) { if (a(c.value)) return !0; this.H !== b && z.Sa(this); c = c.cb } return !1 }; K.prototype.all = function(a) { for (var b = this.H, c = this.Ka; null !== c;) { if (!a(c.value)) return !1; this.H !== b && z.Sa(this); c = c.cb } return !0 }; K.prototype.each = function(a) { for (var b = this.H, c = this.Ka; null !== c;) a(c.value), this.H !== b && z.Sa(this), c = c.cb; return this }; K.prototype.map = function(a) { for (var b = new K, c = this.H, d = this.Ka; null !== d;) b.add(a(d.value)), this.H !== c && z.Sa(this), d = d.cb; return b }; K.prototype.filter = function(a) { for (var b = new K(this.ba), c = this.H, d = this.Ka; null !== d;) { var e = d.value; a(e) && b.add(e); this.H !== c && z.Sa(this); d = d.cb } return b }; K.prototype.concat = function(a) { return this.copy().$c(a) }; K.prototype.remove = K.prototype["delete"] = K.prototype.remove = function(a) { if (null === a) return !1; u && this.Yg(a); this.G && z.oa(this, a); var b = a; if (z.Za(a) && (b = z.nd(a), void 0 === b)) return !1; a = this.sd[b]; if (void 0 === a) return !1; var c = a.cb, d = a.Ho; null !== c && (c.Ho = d); null !== d && (d.cb = c); this.Ka === a && (this.Ka = c); this.Sh === a && (this.Sh = d); delete this.sd[b]; this.rd--; this.Jc(); return !0 }; K.prototype.removeAll = K.prototype.IA = function(a) { if (null === a) return this; this.G && z.oa(this); if (z.isArray(a)) for (var b = z.bb(a), c = 0; c < b; c++) this.remove(z.Ya(a, c)); else for (a = a.i; a.next();) this.remove(a.value); return this }; K.prototype.retainAll = function(a) { if (null === a || 0 === this.count) return this; this.G && z.oa(this); var b = new K(this.ba); b.$c(a); a = []; for (var c = this.i; c.next();) { var d = c.value; b.contains(d) || a.push(d) } this.IA(a); return this }; K.prototype.clear = K.prototype.clear = function() { this.G && z.oa(this); this.sd = {}; this.rd = 0; this.Sh = this.Ka = null; this.Jc() }; K.prototype.copy = function() { var a = new K(this.ba), b = this.sd, c; for (c in b) a.add(b[c].value); return a }; K.prototype.toArray = K.prototype.jc = function() { var a = Array(this.rd), b = this.sd, c = 0, d; for (d in b) a[c] = b[d].value, c++; return a }; K.prototype.toList = function() { var a = new J(this.ba), b = this.sd, c; for (c in b) a.add(b[c].value); return a }; z.w(K, { count: "count" }, function() { return this.rd }); z.w(K, { size: "size" }, function() { return this.rd }); z.w(K, { i: "iterator" }, function() { if (0 >= this.rd) return Pa; var a = this.ec; return null !== a ? (a.reset(), a) : new Wa(this) }); function Za(a) { this.Na = a; this.reset() } z.Yd(Za, { key: !0, value: !0 }); z.w(Za, { i: "iterator" }, function() { return this }); Za.prototype.reset = Za.prototype.reset = function() { this.nb = this.Na.H; this.lb = null }; Za.prototype.next = Za.prototype.hasNext = Za.prototype.next = function() { var a = this.Na; if (a.H !== this.nb) { if (null === this.key) return !1; z.Sa(a) } var b = this.lb, b = null === b ? a.Ka : b.cb; if (null !== b) return this.lb = b, this.value = this.key = a = b.key, !0; this.Nf(); return !1 }; Za.prototype.first = Za.prototype.first = function() { var a = this.Na; this.nb = a.H; a = a.Ka; return null !== a ? (this.lb = a, this.value = this.key = a = a.key) : null }; Za.prototype.any = function(a) { var b = this.Na, c = b.H; this.lb = null; for (var d = b.Ka; null !== d;) { if (a(d.key)) return !0; b.H !== c && z.Sa(b); d = d.cb } return !1 }; Za.prototype.all = function(a) { var b = this.Na, c = b.H; this.lb = null; for (var d = b.Ka; null !== d;) { if (!a(d.key)) return !1; b.H !== c && z.Sa(b); d = d.cb } return !0 }; Za.prototype.each = function(a) { var b = this.Na, c = b.H; this.lb = null; for (var d = b.Ka; null !== d;) a(d.key), b.H !== c && z.Sa(b), d = d.cb; return this }; Za.prototype.map = function(a) { var b = this.Na, c = b.H; this.lb = null; for (var d = new J, e = b.Ka; null !== e;) d.add(a(e.key)), b.H !== c && z.Sa(b), e = e.cb; return d.i }; Za.prototype.filter = function(a) { var b = this.Na, c = b.H; this.lb = null; for (var d = new J(b.bf), e = b.Ka; null !== e;) { var g = e.key; a(g) && d.add(g); b.H !== c && z.Sa(b); e = e.cb } return d.i }; Za.prototype.concat = function(a) { return new Sa(this, a.i) }; z.w(Za, { count: "count" }, function() { return this.Na.rd }); Za.prototype.Nf = function() { this.value = this.key = null; this.nb = -1 }; Za.prototype.toString = function() { return null !== this.lb ? "MapKeySetIterator@" + this.lb.value : "MapKeySetIterator" }; function $a(a) { z.kc(this); this.G = !0; this.Na = a } z.Qa($a, K); $a.prototype.freeze = function() { return this }; $a.prototype.Wa = function() { return this }; $a.prototype.toString = function() { return "MapKeySet(" + this.Na.toString() + ")" }; $a.prototype.add = $a.prototype.set = $a.prototype.add = function() { z.k("This Set is read-only: " + this.toString()); return !1 }; $a.prototype.contains = $a.prototype.has = $a.prototype.contains = function(a) { return this.Na.contains(a) }; $a.prototype.remove = $a.prototype["delete"] = $a.prototype.remove = function() { z.k("This Set is read-only: " + this.toString()); return !1 }; $a.prototype.clear = $a.prototype.clear = function() { z.k("This Set is read-only: " + this.toString()) }; $a.prototype.first = $a.prototype.first = function() { var a = this.Na.Ka; return null !== a ? a.key : null }; $a.prototype.any = function(a) { for (var b = this.Na.Ka; null !== b;) { if (a(b.key)) return !0; b = b.cb } return !1 }; $a.prototype.all = function(a) { for (var b = this.Na.Ka; null !== b;) { if (!a(b.key)) return !1; b = b.cb } return !0 }; $a.prototype.each = function(a) { for (var b = this.Na.Ka; null !== b;) a(b.key), b = b.cb; return this }; $a.prototype.map = function(a) { for (var b = new K, c = this.Na.Ka; null !== c;) b.add(a(c.key)), c = c.cb; return b }; $a.prototype.filter = function(a) { for (var b = new K(this.Na.bf), c = this.Na.Ka; null !== c;) { var d = c.key; a(d) && b.add(d); c = c.cb } return b }; $a.prototype.concat = function(a) { return this.VF().$c(a) }; $a.prototype.copy = function() { return new $a(this.Na) }; $a.prototype.toSet = $a.prototype.VF = function() { var a = new K(this.Na.bf), b = this.Na.sd, c; for (c in b) a.add(b[c].key); return a }; $a.prototype.toArray = $a.prototype.jc = function() { var a = this.Na.sd, b = Array(this.Na.rd), c = 0, d; for (d in a) b[c] = a[d].key, c++; return b }; $a.prototype.toList = function() { var a = new J(this.ba), b = this.Na.sd, c; for (c in b) a.add(b[c].key); return a }; z.w($a, { count: "count" }, function() { return this.Na.rd }); z.w($a, { size: "size" }, function() { return this.Na.rd }); z.w($a, { i: "iterator" }, function() { return 0 >= this.Na.rd ? Pa : new Za(this.Na) }); function ab(a) { this.Na = a; this.reset() } z.Yd(ab, { key: !0, value: !0 }); z.w(ab, { i: "iterator" }, function() { return this }); ab.prototype.reset = ab.prototype.reset = function() { var a = this.Na; a.Mj = null; this.nb = a.H; this.lb = null }; ab.prototype.next = ab.prototype.hasNext = ab.prototype.next = function() { var a = this.Na; if (a.H !== this.nb) { if (null === this.key) return !1; z.Sa(a) } var b = this.lb, b = null === b ? a.Ka : b.cb; if (null !== b) return this.lb = b, this.value = b.value, this.key = b.key, !0; this.Nf(); return !1 }; ab.prototype.first = ab.prototype.first = function() { var a = this.Na; this.nb = a.H; a = a.Ka; if (null !== a) { this.lb = a; var b = a.value; this.key = a.key; return this.value = b } return null }; ab.prototype.any = function(a) { var b = this.Na; b.Mj = null; var c = b.H; this.lb = null; for (var d = b.Ka; null !== d;) { if (a(d.value)) return !0; b.H !== c && z.Sa(b); d = d.cb } return !1 }; ab.prototype.all = function(a) { var b = this.Na; b.Mj = null; var c = b.H; this.lb = null; for (var d = b.Ka; null !== d;) { if (!a(d.value)) return !1; b.H !== c && z.Sa(b); d = d.cb } return !0 }; ab.prototype.each = function(a) { var b = this.Na; b.Mj = null; var c = b.H; this.lb = null; for (var d = b.Ka; null !== d;) a(d.value), b.H !== c && z.Sa(b), d = d.cb; return this }; ab.prototype.map = function(a) { var b = this.Na; b.Mj = null; var c = b.H; this.lb = null; for (var d = new J, e = b.Ka; null !== e;) d.add(a(e.value)), b.H !== c && z.Sa(b), e = e.cb; return d.i }; ab.prototype.filter = function(a) { var b = this.Na; b.Mj = null; var c = b.H; this.lb = null; for (var d = new J(b.bf), e = b.Ka; null !== e;) { var g = e.value; a(g) && d.add(g); b.H !== c && z.Sa(b); e = e.cb } return d.i }; ab.prototype.concat = function(a) { this.Na.Mj = null; return new Sa(this, a.i) }; z.w(ab, { count: "count" }, function() { return this.Na.rd }); ab.prototype.Nf = function() { this.value = this.key = null; this.nb = -1; this.Na.Mj = this }; ab.prototype.toString = function() { return null !== this.lb ? "MapValueSetIterator@" + this.lb.value : "MapValueSetIterator" }; function Ya(a, b) { this.key = a; this.value = b; this.Ho = this.cb = null } z.Yd(Ya, { key: !0, value: !0 }); Ya.prototype.toString = function() { return "{" + this.key + ":" + this.value + "}" }; function bb(a) { this.Na = a; this.reset() } z.Yd(bb, { key: !0, value: !0 }); z.w(bb, { i: "iterator" }, function() { return this }); bb.prototype.reset = bb.prototype.reset = function() { var a = this.Na; a.ec = null; this.nb = a.H; this.lb = null }; bb.prototype.next = bb.prototype.hasNext = bb.prototype.next = function() { var a = this.Na; if (a.H !== this.nb) { if (null === this.key) return !1; z.Sa(a) } var b = this.lb, b = null === b ? a.Ka : b.cb; if (null !== b) return this.lb = b, this.key = b.key, this.value = b.value, !0; this.Nf(); return !1 }; bb.prototype.first = bb.prototype.first = function() { var a = this.Na; this.nb = a.H; a = a.Ka; return null !== a ? (this.lb = a, this.key = a.key, this.value = a.value, a) : null }; bb.prototype.any = function(a) { var b = this.Na; b.ec = null; var c = b.H; this.lb = null; for (var d = b.Ka; null !== d;) { if (a(d)) return !0; b.H !== c && z.Sa(b); d = d.cb } return !1 }; bb.prototype.all = function(a) { var b = this.Na; b.ec = null; var c = b.H; this.lb = null; for (var d = b.Ka; null !== d;) { if (!a(d)) return !1; b.H !== c && z.Sa(b); d = d.cb } return !0 }; bb.prototype.each = function(a) { var b = this.Na; b.ec = null; var c = b.H; this.lb = null; for (var d = b.Ka; null !== d;) a(d), b.H !== c && z.Sa(b), d = d.cb; return this }; bb.prototype.map = function(a) { var b = this.Na; b.ec = null; var c = b.H; this.lb = null; for (var d = new J, e = b.Ka; null !== e;) d.add(a(e)), b.H !== c && z.Sa(b), e = e.cb; return d.i }; bb.prototype.filter = function(a) { var b = this.Na; b.ec = null; var c = b.H; this.lb = null; for (var d = new J, e = b.Ka; null !== e;) a(e) && d.add(e), b.H !== c && z.Sa(b), e = e.cb; return d.i }; bb.prototype.concat = function(a) { this.Na.ec = null; return new Sa(this, a.i) }; z.w(bb, { count: "count" }, function() { return this.Na.rd }); bb.prototype.Nf = function() { this.value = this.key = null; this.nb = -1; this.Na.ec = this }; bb.prototype.toString = function() { return null !== this.lb ? "MapIterator@" + this.lb : "MapIterator" }; function na(a, b) { z.kc(this); this.G = !1; void 0 === a || null === a ? this.bf = null : "string" === typeof a ? "object" === a || "string" === a || "number" === a ? this.bf = a : z.ka(a, "the string 'object', 'number' or 'string'", "Map constructor: keytype") : "function" === typeof a ? this.bf = a === Object ? "object" : a === String ? "string" : a === Number ? "number" : a : z.ka(a, "null, a primitive type name, or a class type", "Map constructor: keytype"); void 0 === b || null === b ? this.fi = null : "string" === typeof b ? "object" === b || "string" === b || "boolean" === b || "number" === b || "function" === b ? this.fi = b : z.ka(b, "the string 'object', 'number', 'string', 'boolean', or 'function'", "Map constructor: valtype") : "function" === typeof b ? this.fi = b === Object ? "object" : b === String ? "string" : b === Number ? "number" : b === Boolean ? "boolean" : b === Function ? "function" : b : z.ka(b, "null, a primitive type name, or a class type", "Map constructor: valtype"); this.sd = {}; this.rd = 0; this.Mj = this.ec = null; this.H = 0; this.Sh = this.Ka = null } z.ia("Map", na); function db(a, b) { null !== a.bf && ("string" === typeof a.bf ? typeof b === a.bf && null !== b || z.ic(b, a.bf) : b instanceof a.bf || z.ic(b, a.bf)) } na.prototype.Jc = function() { var a = this.H; a++; 999999999 < a && (a = 0); this.H = a }; na.prototype.freeze = na.prototype.freeze = function() { this.G = !0; return this }; na.prototype.thaw = na.prototype.Wa = function() { this.G = !1; return this }; na.prototype.toString = function() { return "Map(" + z.getTypeName(this.bf) + "," + z.getTypeName(this.fi) + ")#" + z.nd(this) }; na.prototype.add = na.prototype.set = na.prototype.add = function(a, b) { u && (db(this, a), null !== this.fi && ("string" === typeof this.fi ? typeof b === this.fi && null !== b || z.ic(b, this.fi) : b instanceof this.fi || z.ic(b, this.fi))); this.G && z.oa(this, a); var c = a; z.Za(a) && (c = z.It(a)); var d = this.sd[c]; if (void 0 === d) return this.rd++, d = new Ya(a, b), this.sd[c] = d, c = this.Sh, null === c ? this.Ka = d : (d.Ho = c, c.cb = d), this.Sh = d, this.Jc(), !0; d.value = b; return !1 }; na.prototype.addAll = na.prototype.$c = function(a) { if (null === a) return this; if (z.isArray(a)) for (var b = z.bb(a), c = 0; c < b; c++) { var d = z.Ya(a, c); this.add(d.key, d.value) } else for (a = a.i; a.next();) this.add(a.key, a.value); return this }; na.prototype.first = na.prototype.first = function() { return this.Ka }; na.prototype.any = function(a) { for (var b = this.H, c = this.Ka; null !== c;) { if (a(c)) return !0; this.H !== b && z.Sa(this); c = c.cb } return !1 }; na.prototype.all = function(a) { for (var b = this.H, c = this.Ka; null !== c;) { if (!a(c)) return !1; this.H !== b && z.Sa(this); c = c.cb } return !0 }; na.prototype.each = function(a) { for (var b = this.H, c = this.Ka; null !== c;) a(c), this.H !== b && z.Sa(this), c = c.cb; return this }; na.prototype.map = function(a) { for (var b = new na(this.bf), c = this.H, d = this.Ka; null !== d;) b.add(d.key, a(d)), this.H !== c && z.Sa(this), d = d.cb; return b }; na.prototype.filter = function(a) { for (var b = new na(this.bf, this.fi), c = this.H, d = this.Ka; null !== d;) a(d) && b.add(d.key, d.value), this.H !== c && z.Sa(this), d = d.cb; return b }; na.prototype.concat = function(a) { return this.copy().$c(a) }; na.prototype.contains = na.prototype.has = na.prototype.contains = function(a) { u && db(this, a); var b = a; return z.Za(a) && (b = z.nd(a), void 0 === b) ? !1 : void 0 !== this.sd[b] }; na.prototype.getValue = na.prototype.get = na.prototype.na = function(a) { u && db(this, a); var b = a; if (z.Za(a) && (b = z.nd(a), void 0 === b)) return null; a = this.sd[b]; return void 0 === a ? null : a.value }; na.prototype.remove = na.prototype["delete"] = na.prototype.remove = function(a) { if (null === a) return !1; u && db(this, a); this.G && z.oa(this, a); var b = a; if (z.Za(a) && (b = z.nd(a), void 0 === b)) return !1; a = this.sd[b]; if (void 0 === a) return !1; var c = a.cb, d = a.Ho; null !== c && (c.Ho = d); null !== d && (d.cb = c); this.Ka === a && (this.Ka = c); this.Sh === a && (this.Sh = d); delete this.sd[b]; this.rd--; this.Jc(); return !0 }; na.prototype.clear = na.prototype.clear = function() { this.G && z.oa(this); this.sd = {}; this.rd = 0; this.Sh = this.Ka = null; this.Jc() }; na.prototype.copy = function() { var a = new na(this.bf, this.fi), b = this.sd, c; for (c in b) { var d = b[c]; a.add(d.key, d.value) } return a }; na.prototype.toArray = na.prototype.jc = function() { var a = this.sd, b = Array(this.rd), c = 0, d; for (d in a) { var e = a[d]; b[c] = new Ya(e.key, e.value); c++ } return b }; na.prototype.toKeySet = na.prototype.uj = function() { return new $a(this) }; z.w(na, { count: "count" }, function() { return this.rd }); z.w(na, { size: "size" }, function() { return this.rd }); z.w(na, { i: "iterator" }, function() { if (0 >= this.count) return Pa; var a = this.ec; return null !== a ? (a.reset(), a) : new bb(this) }); z.w(na, { UE: "iteratorKeys" }, function() { return 0 >= this.count ? Pa : new Za(this) }); z.w(na, { VE: "iteratorValues" }, function() { if (0 >= this.count) return Pa; var a = this.Mj; return null !== a ? (a.reset(), a) : new ab(this) }); function N(a, b) { void 0 === a ? this.K = this.J = 0 : "number" === typeof a && "number" === typeof b ? (this.J = a, this.K = b) : z.k("Invalid arguments to Point constructor: " + a + ", " + b); this.G = !1 } z.ia("Point", N); z.ii(N); z.Yd(N, { x: !0, y: !0 }); N.prototype.assign = function(a) { this.J = a.J; this.K = a.K }; N.prototype.setTo = N.prototype.n = function(a, b) { u && (z.g(a, "number", N, "setTo:x"), z.g(b, "number", N, "setTo:y")); this.J = a; this.K = b; return this }; N.prototype.set = N.prototype.set = function(a) { u && z.l(a, N, N, "set:p"); this.Pa(); this.J = a.J; this.K = a.K; return this }; N.prototype.copy = function() { var a = new N; a.J = this.J; a.K = this.K; return a }; f = N.prototype; f.La = function() { this.G = !0; Object.freeze(this); return this }; f.V = function() { return Object.isFrozen(this) ? this : this.copy().freeze() }; f.freeze = function() { this.G = !0; return this }; f.Wa = function() { Object.isFrozen(this) && z.k("cannot thaw constant: " + this); this.G = !1; return this }; f.Pa = function(a) { if (this.G) { var b = "The Point is frozen, so its properties cannot be set: " + this.toString(); void 0 !== a && (b += " to value: " + a); z.k(b) } }; N.parse = function(a) { if ("string" === typeof a) { a = a.split(" "); for (var b = 0, c = 0; "" === a[b];) b++; var d = a[b++]; d && (c = parseFloat(d)); for (var e = 0; "" === a[b];) b++; (d = a[b++]) && (e = parseFloat(d)); return new N(c, e) } return new N }; N.stringify = function(a) { return a instanceof N ? a.x.toString() + " " + a.y.toString() : a.toString() }; N.prototype.toString = function() { return "Point(" + this.x + "," + this.y + ")" }; N.prototype.equals = N.prototype.N = function(a) { return a instanceof N ? this.J === a.x && this.K === a.y : !1 }; N.prototype.equalTo = N.prototype.Vw = function(a, b) { return this.J === a && this.K === b }; N.prototype.equalsApprox = N.prototype.Mc = function(a) { return eb(this.J, a.x) && eb(this.K, a.y) }; N.prototype.add = N.prototype.add = function(a) { u && z.l(a, N, N, "add:p"); this.Pa(); this.J += a.x; this.K += a.y; return this }; N.prototype.subtract = N.prototype.xu = function(a) { u && z.l(a, N, N, "subtract:p"); this.Pa(); this.J -= a.x; this.K -= a.y; return this }; N.prototype.offset = N.prototype.offset = function(a, b) { u && (z.p(a, N, "offset:dx"), z.p(b, N, "offset:dy")); this.Pa(); this.J += a; this.K += b; return this }; N.prototype.rotate = N.prototype.rotate = function(a) { u && z.p(a, N, "rotate:angle"); this.Pa(); if (0 === a) return this; var b = this.J, c = this.K; if (0 === b && 0 === c) return this; var d = 0, e = 0; 360 <= a ? a -= 360 : 0 > a && (a += 360); 90 === a ? (d = 0, e = 1) : 180 === a ? (d = -1, e = 0) : 270 === a ? (d = 0, e = -1) : (a = a * Math.PI / 180, d = Math.cos(a), e = Math.sin(a)); this.J = d * b - e * c; this.K = e * b + d * c; return this }; N.prototype.scale = N.prototype.scale = function(a, b) { u && (z.p(a, N, "scale:sx"), z.p(b, N, "scale:sy")); this.J *= a; this.K *= b; return this }; N.prototype.distanceSquaredPoint = N.prototype.Af = function(a) { u && z.l(a, N, N, "distanceSquaredPoint:p"); var b = a.x - this.J; a = a.y - this.K; return b * b + a * a }; N.prototype.distanceSquared = N.prototype.kp = function(a, b) { u && (z.p(a, N, "distanceSquared:px"), z.p(b, N, "distanceSquared:py")); var c = a - this.J, d = b - this.K; return c * c + d * d }; N.prototype.normalize = N.prototype.normalize = function() { this.Pa(); var a = this.J, b = this.K, c = Math.sqrt(a * a + b * b); 0 < c && (this.J = a / c, this.K = b / c); return this }; N.prototype.directionPoint = N.prototype.Ec = function(a) { u && z.l(a, N, N, "directionPoint:p"); return fb(a.x - this.J, a.y - this.K) }; N.prototype.direction = N.prototype.direction = function(a, b) { u && (z.p(a, N, "direction:px"), z.p(b, N, "direction:py")); return fb(a - this.J, b - this.K) }; function fb(a, b) { if (0 === a) return 0 < b ? 90 : 0 > b ? 270 : 0; if (0 === b) return 0 < a ? 0 : 180; if (isNaN(a) || isNaN(b)) return 0; var c = 180 * Math.atan(Math.abs(b / a)) / Math.PI; 0 > a ? c = 0 > b ? c + 180 : 180 - c : 0 > b && (c = 360 - c); return c } N.prototype.projectOntoLineSegment = function(a, b, c, d) { u && (z.p(a, N, "projectOntoLineSegment:px"), z.p(b, N, "projectOntoLineSegment:py"), z.p(c, N, "projectOntoLineSegment:qx"), z.p(d, N, "projectOntoLineSegment:qy")); ib(a, b, c, d, this.J, this.K, this); return this }; N.prototype.projectOntoLineSegmentPoint = function(a, b) { u && (z.l(a, N, N, "projectOntoLineSegmentPoint:p"), z.l(b, N, N, "projectOntoLineSegmentPoint:q")); ib(a.x, a.y, b.x, b.y, this.J, this.K, this); return this }; N.prototype.snapToGrid = function(a, b, c, d) { u && (z.p(a, N, "snapToGrid:originx"), z.p(b, N, "snapToGrid:originy"), z.p(c, N, "snapToGrid:cellwidth"), z.p(d, N, "snapToGrid:cellheight")); jb(this.J, this.K, a, b, c, d, this); return this }; N.prototype.snapToGridPoint = function(a, b) { u && (z.l(a, N, N, "snapToGridPoint:p"), z.l(b, Ea, N, "snapToGridPoint:q")); jb(this.J, this.K, a.x, a.y, b.width, b.height, this); return this }; N.prototype.setRectSpot = N.prototype.ru = function(a, b) { u && (z.l(a, w, N, "setRectSpot:r"), z.l(b, Q, N, "setRectSpot:spot")); this.Pa(); this.J = a.x + b.x * a.width + b.offsetX; this.K = a.y + b.y * a.height + b.offsetY; return this }; N.prototype.setSpot = N.prototype.tu = function(a, b, c, d, e) { u && (z.p(a, N, "setSpot:x"), z.p(b, N, "setSpot:y"), z.p(c, N, "setSpot:w"), z.p(d, N, "setSpot:h"), (0 > c || 0 > d) && z.k("Point.setSpot:Width and height cannot be negative"), z.l(e, Q, N, "setSpot:spot")); this.Pa(); this.J = a + e.x * c + e.offsetX; this.K = b + e.y * d + e.offsetY; return this }; N.prototype.transform = function(a) { u && z.l(a, Fa, N, "transform:t"); a.Cb(this); return this }; function ub(a, b) { u && z.l(b, Fa, N, "transformInverted:t"); b.ki(a); return a } var vb; N.distanceLineSegmentSquared = vb = function(a, b, c, d, e, g) { u && (z.p(a, N, "distanceLineSegmentSquared:px"), z.p(b, N, "distanceLineSegmentSquared:py"), z.p(c, N, "distanceLineSegmentSquared:ax"), z.p(d, N, "distanceLineSegmentSquared:ay"), z.p(e, N, "distanceLineSegmentSquared:bx"), z.p(g, N, "distanceLineSegmentSquared:by")); var h = e - c, k = g - d, l = h * h + k * k; c -= a; d -= b; var m = -c * h - d * k; if (0 >= m || m >= l) return h = e - a, k = g - b, Math.min(c * c + d * d, h * h + k * k); a = h * d - k * c; return a * a / l }; var wb; N.distanceSquared = wb = function(a, b, c, d) { u && (z.p(a, N, "distanceSquared:px"), z.p(b, N, "distanceSquared:py"), z.p(c, N, "distanceSquared:qx"), z.p(d, N, "distanceSquared:qy")); a = c - a; b = d - b; return a * a + b * b }; var xb; N.direction = xb = function(a, b, c, d) { u && (z.p(a, N, "direction:px"), z.p(b, N, "direction:py"), z.p(c, N, "direction:qx"), z.p(d, N, "direction:qy")); a = c - a; b = d - b; if (0 === a) return 0 < b ? 90 : 0 > b ? 270 : 0; if (0 === b) return 0 < a ? 0 : 180; if (isNaN(a) || isNaN(b)) return 0; d = 180 * Math.atan(Math.abs(b / a)) / Math.PI; 0 > a ? d = 0 > b ? d + 180 : 180 - d : 0 > b && (d = 360 - d); return d }; z.defineProperty(N, { x: "x" }, function() { return this.J }, function(a) { this.Pa(a); u && z.g(a, "number", N, "x"); this.J = a }); z.defineProperty(N, { y: "y" }, function() { return this.K }, function(a) { this.Pa(a); u && z.g(a, "number", N, "y"); this.K = a }); N.prototype.isReal = N.prototype.F = function() { return isFinite(this.x) && isFinite(this.y) }; function Ea(a, b) { void 0 === a ? this.Ea = this.Fa = 0 : "number" === typeof a && (0 <= a || isNaN(a)) && "number" === typeof b && (0 <= b || isNaN(b)) ? (this.Fa = a, this.Ea = b) : z.k("Invalid arguments to Size constructor: " + a + ", " + b); this.G = !1 } z.ia("Size", Ea); z.ii(Ea); z.Yd(Ea, { width: !0, height: !0 }); Ea.prototype.assign = function(a) { this.Fa = a.Fa; this.Ea = a.Ea }; Ea.prototype.setTo = Ea.prototype.n = function(a, b) { u && (z.g(a, "number", Ea, "setTo:w"), z.g(b, "number", Ea, "setTo:h"), 0 > a && z.ka(a, ">= 0", Ea, "setTo:w"), 0 > b && z.ka(b, ">= 0", Ea, "setTo:h")); this.Fa = a; this.Ea = b; return this }; Ea.prototype.set = Ea.prototype.set = function(a) { u && z.l(a, Ea, Ea, "set:s"); this.Pa(); this.Fa = a.Fa; this.Ea = a.Ea; return this }; Ea.prototype.copy = function() { var a = new Ea; a.Fa = this.Fa; a.Ea = this.Ea; return a }; f = Ea.prototype; f.La = function() { this.G = !0; Object.freeze(this); return this }; f.V = function() { return Object.isFrozen(this) ? this : this.copy().freeze() }; f.freeze = function() { this.G = !0; return this }; f.Wa = function() { Object.isFrozen(this) && z.k("cannot thaw constant: " + this); this.G = !1; return this }; f.Pa = function(a) { if (this.G) { var b = "The Size is frozen, so its properties cannot be set: " + this.toString(); void 0 !== a && (b += " to value: " + a); z.k(b) } }; Ea.parse = function(a) { if ("string" === typeof a) { a = a.split(" "); for (var b = 0, c = 0; "" === a[b];) b++; var d = a[b++]; d && (c = parseFloat(d)); for (var e = 0; "" === a[b];) b++; (d = a[b++]) && (e = parseFloat(d)); return new Ea(c, e) } return new Ea }; Ea.stringify = function(a) { return a instanceof Ea ? a.width.toString() + " " + a.height.toString() : a.toString() }; Ea.prototype.toString = function() { return "Size(" + this.width + "," + this.height + ")" }; Ea.prototype.equals = Ea.prototype.N = function(a) { return a instanceof Ea ? this.Fa === a.width && this.Ea === a.height : !1 }; Ea.prototype.equalTo = Ea.prototype.Vw = function(a, b) { return this.Fa === a && this.Ea === b }; Ea.prototype.equalsApprox = Ea.prototype.Mc = function(a) { return eb(this.Fa, a.width) && eb(this.Ea, a.height) }; z.defineProperty(Ea, { width: "width" }, function() { return this.Fa }, function(a) { this.Pa(a); u && z.g(a, "number", Ea, "width"); 0 > a && z.ka(a, ">= 0", Ea, "width"); this.Fa = a }); z.defineProperty(Ea, { height: "height" }, function() { return this.Ea }, function(a) { this.Pa(a); u && z.g(a, "number", Ea, "height"); 0 > a && z.ka(a, ">= 0", Ea, "height"); this.Ea = a }); Ea.prototype.isReal = Ea.prototype.F = function() { return isFinite(this.width) && isFinite(this.height) }; function w(a, b, c, d) { void 0 === a ? this.Ea = this.Fa = this.K = this.J = 0 : a instanceof N ? b instanceof N ? (this.J = Math.min(a.J, b.J), this.K = Math.min(a.K, b.K), this.Fa = Math.abs(a.J - b.J), this.Ea = Math.abs(a.K - b.K)) : b instanceof Ea ? (this.J = a.J, this.K = a.K, this.Fa = b.Fa, this.Ea = b.Ea) : z.k("Incorrect arguments supplied to Rect constructor") : "number" === typeof a && "number" === typeof b && "number" === typeof c && (0 <= c || isNaN(c)) && "number" === typeof d && (0 <= d || isNaN(d)) ? (this.J = a, this.K = b, this.Fa = c, this.Ea = d) : z.k("Invalid arguments to Rect constructor: " + a + ", " + b + ", " + c + ", " + d); this.G = !1 } z.ia("Rect", w); z.ii(w); z.Yd(w, { x: !0, y: !0, width: !0, height: !0 }); w.prototype.assign = function(a) { this.J = a.J; this.K = a.K; this.Fa = a.Fa; this.Ea = a.Ea }; function yb(a, b, c) { a.Fa = b; a.Ea = c } w.prototype.setTo = w.prototype.n = function(a, b, c, d) { u && (z.g(a, "number", w, "setTo:x"), z.g(b, "number", w, "setTo:y"), z.g(c, "number", w, "setTo:w"), z.g(d, "number", w, "setTo:h"), 0 > c && z.ka(c, ">= 0", w, "setTo:w"), 0 > d && z.ka(d, ">= 0", w, "setTo:h")); this.J = a; this.K = b; this.Fa = c; this.Ea = d; return this }; w.prototype.set = w.prototype.set = function(a) { u && z.l(a, w, w, "set:r"); this.Pa(); this.J = a.J; this.K = a.K; this.Fa = a.Fa; this.Ea = a.Ea; return this }; w.prototype.setPoint = w.prototype.Kf = function(a) { u && z.l(a, N, w, "setPoint:p"); this.Pa(); this.J = a.J; this.K = a.K; return this }; w.prototype.setSize = function(a) { u && z.l(a, Ea, w, "setSize:s"); this.Pa(); this.Fa = a.Fa; this.Ea = a.Ea; return this }; w.prototype.copy = function() { var a = new w; a.J = this.J; a.K = this.K; a.Fa = this.Fa; a.Ea = this.Ea; return a }; f = w.prototype; f.La = function() { this.G = !0; Object.freeze(this); return this }; f.V = function() { return Object.isFrozen(this) ? this : this.copy().freeze() }; f.freeze = function() { this.G = !0; return this }; f.Wa = function() { Object.isFrozen(this) && z.k("cannot thaw constant: " + this); this.G = !1; return this }; f.Pa = function(a) { if (this.G) { var b = "The Rect is frozen, so its properties cannot be set: " + this.toString(); void 0 !== a && (b += " to value: " + a); z.k(b) } }; w.parse = function(a) { if ("string" === typeof a) { a = a.split(" "); for (var b = 0, c = 0; "" === a[b];) b++; var d = a[b++]; d && (c = parseFloat(d)); for (var e = 0; "" === a[b];) b++; (d = a[b++]) && (e = parseFloat(d)); for (var g = 0; "" === a[b];) b++; (d = a[b++]) && (g = parseFloat(d)); for (var h = 0; "" === a[b];) b++; (d = a[b++]) && (h = parseFloat(d)); return new w(c, e, g, h) } return new w }; w.stringify = function(a) { return a instanceof w ? a.x.toString() + " " + a.y.toString() + " " + a.width.toString() + " " + a.height.toString() : a.toString() }; w.prototype.toString = function() { return "Rect(" + this.x + "," + this.y + "," + this.width + "," + this.height + ")" }; w.prototype.equals = w.prototype.N = function(a) { return a instanceof w ? this.J === a.x && this.K === a.y && this.Fa === a.width && this.Ea === a.height : !1 }; w.prototype.equalTo = w.prototype.Vw = function(a, b, c, d) { return this.J === a && this.K === b && this.Fa === c && this.Ea === d }; w.prototype.equalsApprox = w.prototype.Mc = function(a) { return eb(this.J, a.x) && eb(this.K, a.y) && eb(this.Fa, a.width) && eb(this.Ea, a.height) }; w.prototype.containsPoint = w.prototype.Ma = function(a) { u && z.l(a, N, w, "containsPoint:p"); return this.J <= a.x && this.J + this.Fa >= a.x && this.K <= a.y && this.K + this.Ea >= a.y }; w.prototype.containsRect = w.prototype.mk = function(a) { u && z.l(a, w, w, "containsRect:r"); return this.J <= a.x && a.x + a.width <= this.J + this.Fa && this.K <= a.y && a.y + a.height <= this.K + this.Ea }; w.prototype.contains = w.prototype.contains = function(a, b, c, d) { u ? (z.p(a, w, "contains:x"), z.p(b, w, "contains:y"), void 0 === c ? c = 0 : z.p(c, w, "contains:w"), void 0 === d ? d = 0 : z.p(d, w, "contains:h"), (0 > c || 0 > d) && z.k("Rect.contains:Width and height cannot be negative")) : (void 0 === c && (c = 0), void 0 === d && (d = 0)); return this.J <= a && a + c <= this.J + this.Fa && this.K <= b && b + d <= this.K + this.Ea }; w.prototype.reset = function() { this.Pa(); this.Ea = this.Fa = this.K = this.J = 0 }; w.prototype.offset = w.prototype.offset = function(a, b) { u && (z.p(a, w, "offset:dx"), z.p(b, w, "offset:dy")); this.Pa(); this.J += a; this.K += b; return this }; w.prototype.inflate = w.prototype.ag = function(a, b) { u && (z.p(a, w, "inflate:w"), z.p(b, w, "inflate:h")); return zb(this, b, a, b, a) }; w.prototype.addMargin = w.prototype.Cw = function(a) { u && z.l(a, Db, w, "addMargin:m"); return zb(this, a.top, a.right, a.bottom, a.left) }; w.prototype.subtractMargin = w.prototype.rJ = function(a) { u && z.l(a, Db, w, "subtractMargin:m"); return zb(this, -a.top, -a.right, -a.bottom, -a.left) }; w.prototype.grow = function(a, b, c, d) { u && (z.p(a, w, "grow:t"), z.p(b, w, "grow:r"), z.p(c, w, "grow:b"), z.p(d, w, "grow:l")); return zb(this, a, b, c, d) }; function zb(a, b, c, d, e) { a.Pa(); var g = a.Fa; c + e <= -g ? (a.J += g / 2, a.Fa = 0) : (a.J -= e, a.Fa += c + e); c = a.Ea; b + d <= -c ? (a.K += c / 2, a.Ea = 0) : (a.K -= b, a.Ea += b + d); return a } w.prototype.intersectRect = function(a) { u && z.l(a, w, w, "intersectRect:r"); return Eb(this, a.x, a.y, a.width, a.height) }; w.prototype.intersect = function(a, b, c, d) { u && (z.p(a, w, "intersect:x"), z.p(b, w, "intersect:y"), z.p(c, w, "intersect:w"), z.p(d, w, "intersect:h"), (0 > c || 0 > d) && z.k("Rect.intersect:Width and height cannot be negative")); return Eb(this, a, b, c, d) }; function Eb(a, b, c, d, e) { a.Pa(); var g = Math.max(a.J, b), h = Math.max(a.K, c); b = Math.min(a.J + a.Fa, b + d); c = Math.min(a.K + a.Ea, c + e); a.J = g; a.K = h; a.Fa = Math.max(0, b - g); a.Ea = Math.max(0, c - h); return a } w.prototype.intersectsRect = w.prototype.Ig = function(a) { u && z.l(a, w, w, "intersectsRect:r"); return this.GE(a.x, a.y, a.width, a.height) }; w.prototype.intersects = w.prototype.GE = function(a, b, c, d) { u && (z.p(a, w, "intersects:x"), z.p(b, w, "intersects:y"), z.p(a, w, "intersects:w"), z.p(b, w, "intersects:h"), (0 > c || 0 > d) && z.k("Rect.intersects:Width and height cannot be negative")); var e = this.Fa, g = this.J; if (Infinity !== e && Infinity !== c && (e += g, c += a, isNaN(c) || isNaN(e) || g > c || a > e)) return !1; a = this.Ea; c = this.K; return Infinity !== a && Infinity !== d && (a += c, d += b, isNaN(d) || isNaN(a) || c > d || b > a) ? !1 : !0 }; function Hb(a, b) { var c = a.Fa, d = b.width + 10 + 10, e = a.J, g = b.x - 10; if (e > d + g || g > c + e) return !1; c = a.Ea; d = b.height + 10 + 10; e = a.K; g = b.y - 10; return e > d + g || g > c + e ? !1 : !0 } w.prototype.unionPoint = w.prototype.vj = function(a) { u && z.l(a, N, w, "unionPoint:p"); return Ib(this, a.x, a.y, 0, 0) }; w.prototype.unionRect = w.prototype.qi = function(a) { u && z.l(a, w, w, "unionRect:r"); return Ib(this, a.J, a.K, a.Fa, a.Ea) }; w.prototype.union = w.prototype.dG = function(a, b, c, d) { this.Pa(); u ? (z.p(a, w, "union:x"), z.p(b, w, "union:y"), void 0 === c ? c = 0 : z.p(c, w, "union:w"), void 0 === d ? d = 0 : z.p(d, w, "union:h"), (0 > c || 0 > d) && z.k("Rect.union:Width and height cannot be negative")) : (void 0 === c && (c = 0), void 0 === d && (d = 0)); return Ib(this, a, b, c, d) }; function Ib(a, b, c, d, e) { var g = Math.min(a.J, b), h = Math.min(a.K, c); b = Math.max(a.J + a.Fa, b + d); c = Math.max(a.K + a.Ea, c + e); a.J = g; a.K = h; a.Fa = b - g; a.Ea = c - h; return a } w.prototype.setSpot = w.prototype.tu = function(a, b, c) { u && (z.p(a, w, "setSpot:x"), z.p(b, w, "setSpot:y"), z.l(c, Q, w, "setSpot:spot")); this.Pa(); this.J = a - c.offsetX - c.x * this.Fa; this.K = b - c.offsetY - c.y * this.Ea; return this }; var Jb; w.contains = Jb = function(a, b, c, d, e, g, h, k) { u ? (z.p(a, w, "contains:rx"), z.p(b, w, "contains:ry"), z.p(c, w, "contains:rw"), z.p(d, w, "contains:rh"), z.p(e, w, "contains:x"), z.p(g, w, "contains:y"), void 0 === h ? h = 0 : z.p(h, w, "contains:w"), void 0 === k ? k = 0 : z.p(k, w, "contains:h"), (0 > c || 0 > d || 0 > h || 0 > k) && z.k("Rect.contains:Width and height cannot be negative")) : (void 0 === h && (h = 0), void 0 === k && (k = 0)); return a <= e && e + h <= a + c && b <= g && g + k <= b + d }; w.intersects = function(a, b, c, d, e, g, h, k) { u && (z.p(a, w, "intersects:rx"), z.p(b, w, "intersects:ry"), z.p(c, w, "intersects:rw"), z.p(d, w, "intersects:rh"), z.p(e, w, "intersects:x"), z.p(g, w, "intersects:y"), z.p(h, w, "intersects:w"), z.p(k, w, "intersects:h"), (0 > c || 0 > d || 0 > h || 0 > k) && z.k("Rect.intersects:Width and height cannot be negative")); c += a; h += e; if (a > h || e > c) return !1; a = d + b; k += g; return b > k || g > a ? !1 : !0 }; z.defineProperty(w, { x: "x" }, function() { return this.J }, function(a) { this.Pa(a); u && z.g(a, "number", w, "x"); this.J = a }); z.defineProperty(w, { y: "y" }, function() { return this.K }, function(a) { this.Pa(a); u && z.g(a, "number", w, "y"); this.K = a }); z.defineProperty(w, { width: "width" }, function() { return this.Fa }, function(a) { this.Pa(a); u && z.g(a, "number", w, "width"); 0 > a && z.ka(a, ">= 0", w, "width"); this.Fa = a }); z.defineProperty(w, { height: "height" }, function() { return this.Ea }, function(a) { this.Pa(a); u && z.g(a, "number", w, "height"); 0 > a && z.ka(a, ">= 0", w, "height"); this.Ea = a }); z.defineProperty(w, { left: "left" }, function() { return this.J }, function(a) { this.Pa(a); u && z.g(a, "number", w, "left"); this.J = a }); z.defineProperty(w, { top: "top" }, function() { return this.K }, function(a) { this.Pa(a); u && z.g(a, "number", w, "top"); this.K = a }); z.defineProperty(w, { right: "right" }, function() { return this.J + this.Fa }, function(a) { this.Pa(a); u && z.p(a, w, "right"); this.J += a - (this.J + this.Fa) }); z.defineProperty(w, { bottom: "bottom" }, function() { return this.K + this.Ea }, function(a) { this.Pa(a); u && z.p(a, w, "top"); this.K += a - (this.K + this.Ea) }); z.defineProperty(w, { position: "position" }, function() { return new N(this.J, this.K) }, function(a) { this.Pa(a); u && z.l(a, N, w, "position"); this.J = a.x; this.K = a.y }); z.defineProperty(w, { size: "size" }, function() { return new Ea(this.Fa, this.Ea) }, function(a) { this.Pa(a); u && z.l(a, Ea, w, "size"); this.Fa = a.width; this.Ea = a.height }); z.defineProperty(w, { xl: "center" }, function() { return new N(this.J + this.Fa / 2, this.K + this.Ea / 2) }, function(a) { this.Pa(a); u && z.l(a, N, w, "center"); this.J = a.x - this.Fa / 2; this.K = a.y - this.Ea / 2 }); z.defineProperty(w, { ra: "centerX" }, function() { return this.J + this.Fa / 2 }, function(a) { this.Pa(a); u && z.p(a, w, "centerX"); this.J = a - this.Fa / 2 }); z.defineProperty(w, { za: "centerY" }, function() { return this.K + this.Ea / 2 }, function(a) { this.Pa(a); u && z.p(a, w, "centerY"); this.K = a - this.Ea / 2 }); w.prototype.isReal = w.prototype.F = function() { return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height) }; w.prototype.isEmpty = function() { return 0 === this.width && 0 === this.height }; function Db(a, b, c, d) { void 0 === a ? this.fh = this.Xg = this.nh = this.oh = 0 : void 0 === b ? this.left = this.bottom = this.right = this.top = a : void 0 === c ? (d = b, this.top = a, this.right = b, this.bottom = a, this.left = d) : void 0 !== d ? (this.top = a, this.right = b, this.bottom = c, this.left = d) : z.k("Invalid arguments to Margin constructor: " + a + ", " + b + ", " + c + ", " + d); this.G = !1 } z.ia("Margin", Db); z.ii(Db); z.Yd(Db, { top: !0, right: !0, bottom: !0, left: !0 }); Db.prototype.assign = function(a) { this.oh = a.oh; this.nh = a.nh; this.Xg = a.Xg; this.fh = a.fh }; Db.prototype.setTo = Db.prototype.n = function(a, b, c, d) { u && (z.g(a, "number", Db, "setTo:t"), z.g(b, "number", Db, "setTo:r"), z.g(c, "number", Db, "setTo:b"), z.g(d, "number", Db, "setTo:l")); this.Pa(); this.oh = a; this.nh = b; this.Xg = c; this.fh = d; return this }; Db.prototype.set = Db.prototype.set = function(a) { u && z.l(a, Db, Db, "assign:m"); this.Pa(); this.oh = a.oh; this.nh = a.nh; this.Xg = a.Xg; this.fh = a.fh; return this }; Db.prototype.copy = function() { var a = new Db; a.oh = this.oh; a.nh = this.nh; a.Xg = this.Xg; a.fh = this.fh; return a }; f = Db.prototype; f.La = function() { this.G = !0; Object.freeze(this); return this }; f.V = function() { return Object.isFrozen(this) ? this : this.copy().freeze() }; f.freeze = function() { this.G = !0; return this }; f.Wa = function() { Object.isFrozen(this) && z.k("cannot thaw constant: " + this); this.G = !1; return this }; f.Pa = function(a) { if (this.G) { var b = "The Margin is frozen, so its properties cannot be set: " + this.toString(); void 0 !== a && (b += " to value: " + a); z.k(b) } }; Db.parse = function(a) { if ("string" === typeof a) { a = a.split(" "); for (var b = 0, c = NaN; "" === a[b];) b++; var d = a[b++]; d && (c = parseFloat(d)); if (isNaN(c)) return new Db; for (var e = NaN; "" === a[b];) b++; (d = a[b++]) && (e = parseFloat(d)); if (isNaN(e)) return new Db(c); for (var g = NaN; "" === a[b];) b++; (d = a[b++]) && (g = parseFloat(d)); if (isNaN(g)) return new Db(c, e); for (var h = NaN; "" === a[b];) b++; (d = a[b++]) && (h = parseFloat(d)); return isNaN(h) ? new Db(c, e) : new Db(c, e, g, h) } return new Db }; Db.stringify = function(a) { return a instanceof Db ? a.top.toString() + " " + a.right.toString() + " " + a.bottom.toString() + " " + a.left.toString() : a.toString() }; Db.prototype.toString = function() { return "Margin(" + this.top + "," + this.right + "," + this.bottom + "," + this.left + ")" }; Db.prototype.equals = Db.prototype.N = function(a) { return a instanceof Db ? this.oh === a.top && this.nh === a.right && this.Xg === a.bottom && this.fh === a.left : !1 }; Db.prototype.equalTo = Db.prototype.Vw = function(a, b, c, d) { return this.oh === a && this.nh === b && this.Xg === c && this.fh === d }; Db.prototype.equalsApprox = Db.prototype.Mc = function(a) { return eb(this.oh, a.top) && eb(this.nh, a.right) && eb(this.Xg, a.bottom) && eb(this.fh, a.left) }; z.defineProperty(Db, { top: "top" }, function() { return this.oh }, function(a) { this.Pa(a); u && z.p(a, Db, "top"); this.oh = a }); z.defineProperty(Db, { right: "right" }, function() { return this.nh }, function(a) { this.Pa(a); u && z.p(a, Db, "right"); this.nh = a }); z.defineProperty(Db, { bottom: "bottom" }, function() { return this.Xg }, function(a) { this.Pa(a); u && z.p(a, Db, "bottom"); this.Xg = a }); z.defineProperty(Db, { left: "left" }, function() { return this.fh }, function(a) { this.Pa(a); u && z.p(a, Db, "left"); this.fh = a }); Db.prototype.isReal = Db.prototype.F = function() { return isFinite(this.top) && isFinite(this.right) && isFinite(this.bottom) && isFinite(this.left) }; function Fa() { this.m11 = 1; this.m21 = this.m12 = 0; this.m22 = 1; this.dy = this.dx = 0 } z.ii(Fa); z.Yd(Fa, { m11: !0, m12: !0, m21: !0, m22: !0, dx: !0, dy: !0 }); Fa.prototype.set = Fa.prototype.set = function(a) { u && z.l(a, Fa, Fa, "set:t"); this.m11 = a.m11; this.m12 = a.m12; this.m21 = a.m21; this.m22 = a.m22; this.dx = a.dx; this.dy = a.dy; return this }; Fa.prototype.copy = function() { var a = new Fa; a.m11 = this.m11; a.m12 = this.m12; a.m21 = this.m21; a.m22 = this.m22; a.dx = this.dx; a.dy = this.dy; return a }; Fa.prototype.toString = function() { return "Transform(" + this.m11 + "," + this.m12 + "," + this.m21 + "," + this.m22 + "," + this.dx + "," + this.dy + ")" }; Fa.prototype.equals = Fa.prototype.N = function(a) { return a instanceof Fa ? this.m11 === a.m11 && this.m12 === a.m12 && this.m21 === a.m21 && this.m22 === a.m22 && this.dx === a.dx && this.dy === a.dy : !1 }; Fa.prototype.isIdentity = Fa.prototype.Pt = function() { return 1 === this.m11 && 0 === this.m12 && 0 === this.m21 && 1 === this.m22 && 0 === this.dx && 0 === this.dy }; Fa.prototype.reset = Fa.prototype.reset = function() { this.m11 = 1; this.m21 = this.m12 = 0; this.m22 = 1; this.dy = this.dx = 0; return this }; Fa.prototype.multiply = Fa.prototype.multiply = function(a) { u && z.l(a, Fa, Fa, "multiply:matrix"); var b = this.m12 * a.m11 + this.m22 * a.m12, c = this.m11 * a.m21 + this.m21 * a.m22, d = this.m12 * a.m21 + this.m22 * a.m22, e = this.m11 * a.dx + this.m21 * a.dy + this.dx, g = this.m12 * a.dx + this.m22 * a.dy + this.dy; this.m11 = this.m11 * a.m11 + this.m21 * a.m12; this.m12 = b; this.m21 = c; this.m22 = d; this.dx = e; this.dy = g; return this }; Fa.prototype.multiplyInverted = Fa.prototype.vA = function(a) { u && z.l(a, Fa, Fa, "multiplyInverted:matrix"); var b = 1 / (a.m11 * a.m22 - a.m12 * a.m21), c = a.m22 * b, d = -a.m12 * b, e = -a.m21 * b, g = a.m11 * b, h = b * (a.m21 * a.dy - a.m22 * a.dx), k = b * (a.m12 * a.dx - a.m11 * a.dy); a = this.m12 * c + this.m22 * d; b = this.m11 * e + this.m21 * g; e = this.m12 * e + this.m22 * g; g = this.m11 * h + this.m21 * k + this.dx; h = this.m12 * h + this.m22 * k + this.dy; this.m11 = this.m11 * c + this.m21 * d; this.m12 = a; this.m21 = b; this.m22 = e; this.dx = g; this.dy = h; return this }; Fa.prototype.invert = Fa.prototype.fA = function() { var a = 1 / (this.m11 * this.m22 - this.m12 * this.m21), b = -this.m12 * a, c = -this.m21 * a, d = this.m11 * a, e = a * (this.m21 * this.dy - this.m22 * this.dx), g = a * (this.m12 * this.dx - this.m11 * this.dy); this.m11 = this.m22 * a; this.m12 = b; this.m21 = c; this.m22 = d; this.dx = e; this.dy = g; return this }; Fa.prototype.rotate = Fa.prototype.rotate = function(a, b, c) { u && (z.p(a, Fa, "rotate:angle"), z.p(b, Fa, "rotate:rx"), z.p(c, Fa, "rotate:ry")); 360 <= a ? a -= 360 : 0 > a && (a += 360); if (0 === a) return this; this.translate(b, c); var d = 0, e = 0; 90 === a ? (d = 0, e = 1) : 180 === a ? (d = -1, e = 0) : 270 === a ? (d = 0, e = -1) : (e = a * Math.PI / 180, d = Math.cos(e), e = Math.sin(e)); a = this.m12 * d + this.m22 * e; var g = this.m11 * -e + this.m21 * d, h = this.m12 * -e + this.m22 * d; this.m11 = this.m11 * d + this.m21 * e; this.m12 = a; this.m21 = g; this.m22 = h; this.translate(-b, -c); return this }; Fa.prototype.translate = Fa.prototype.translate = function(a, b) { u && (z.p(a, Fa, "translate:x"), z.p(b, Fa, "translate:y")); this.dx += this.m11 * a + this.m21 * b; this.dy += this.m12 * a + this.m22 * b; return this }; Fa.prototype.scale = Fa.prototype.scale = function(a, b) { void 0 === b && (b = a); u && (z.p(a, Fa, "translate:sx"), z.p(b, Fa, "translate:sy")); this.m11 *= a; this.m12 *= a; this.m21 *= b; this.m22 *= b; return this }; Fa.prototype.transformPoint = Fa.prototype.Cb = function(a) { u && z.l(a, N, Fa, "transformPoint:p"); var b = a.J, c = a.K; a.J = b * this.m11 + c * this.m21 + this.dx; a.K = b * this.m12 + c * this.m22 + this.dy; return a }; Fa.prototype.invertedTransformPoint = Fa.prototype.ki = function(a) { u && z.l(a, N, Fa, "invertedTransformPoint:p"); var b = 1 / (this.m11 * this.m22 - this.m12 * this.m21), c = -this.m12 * b, d = this.m11 * b, e = b * (this.m12 * this.dx - this.m11 * this.dy), g = a.J, h = a.K; a.J = g * this.m22 * b + h * -this.m21 * b + b * (this.m21 * this.dy - this.m22 * this.dx); a.K = g * c + h * d + e; return a }; Fa.prototype.transformRect = Fa.prototype.bG = function(a) { u && z.l(a, w, Fa, "transformRect:rect"); var b = a.J, c = a.K, d = b + a.Fa, e = c + a.Ea, g = this.m11, h = this.m12, k = this.m21, l = this.m22, m = this.dx, n = this.dy, p = b * g + c * k + m, q = b * h + c * l + n, r = d * g + c * k + m, c = d * h + c * l + n, s = b * g + e * k + m, b = b * h + e * l + n, g = d * g + e * k + m, d = d * h + e * l + n, e = p, h = q, p = Math.min(p, r), e = Math.max(e, r), h = Math.min(h, c), q = Math.max(q, c), p = Math.min(p, s), e = Math.max(e, s), h = Math.min(h, b), q = Math.max(q, b), p = Math.min(p, g), e = Math.max(e, g), h = Math.min(h, d), q = Math.max(q, d); a.J = p; a.K = h; a.Fa = e - p; a.Ea = q - h; return a }; function Q(a, b, c, d) { void 0 === a ? this.xg = this.wg = this.K = this.J = 0 : (void 0 === b && (b = 0), void 0 === c && (c = 0), void 0 === d && (d = 0), this.x = a, this.y = b, this.offsetX = c, this.offsetY = d); this.G = !1 } z.ia("Spot", Q); z.ii(Q); z.Yd(Q, { x: !0, y: !0, offsetX: !0, offsetY: !0 }); Q.prototype.assign = function(a) { this.J = a.J; this.K = a.K; this.wg = a.wg; this.xg = a.xg }; Q.prototype.setTo = Q.prototype.n = function(a, b, c, d) { u && (Kb(a, "setTo:x"), Kb(b, "setTo:y"), Pb(c, "setTo:offx"), Pb(d, "setTo:offy")); this.Pa(); this.J = a; this.K = b; this.wg = c; this.xg = d; return this }; Q.prototype.set = Q.prototype.set = function(a) { u && z.l(a, Q, Q, "set:s"); this.Pa(); this.J = a.J; this.K = a.K; this.wg = a.wg; this.xg = a.xg; return this }; Q.prototype.copy = function() { var a = new Q; a.J = this.J; a.K = this.K; a.wg = this.wg; a.xg = this.xg; return a }; f = Q.prototype; f.La = function() { this.G = !0; Object.freeze(this); return this }; f.V = function() { return Object.isFrozen(this) ? this : this.copy().freeze() }; f.freeze = function() { this.G = !0; return this }; f.Wa = function() { Object.isFrozen(this) && z.k("cannot thaw constant: " + this); this.G = !1; return this }; f.Pa = function(a) { if (this.G) { var b = "The Spot is frozen, so its properties cannot be set: " + this.toString(); void 0 !== a && (b += " to value: " + a); z.k(b) } }; function Tb(a, b) { a.J = NaN; a.K = NaN; a.wg = b; return a } function Kb(a, b) { (isNaN(a) || 1 < a || 0 > a) && z.ka(a, "0 <= " + b + " <= 1", Q, b) } function Pb(a, b) { (isNaN(a) || Infinity === a || -Infinity === a) && z.ka(a, "real number, not NaN or Infinity", Q, b) } var Ub; Q.parse = Ub = function(a) { if ("string" === typeof a) { a = a.trim(); if ("None" === a) return Yb; if ("TopLeft" === a) return Zb; if ("Top" === a || "TopCenter" === a || "MiddleTop" === a) return $b; if ("TopRight" === a) return cc; if ("Left" === a || "LeftCenter" === a || "MiddleLeft" === a) return dc; if ("Center" === a) return ec; if ("Right" === a || "RightCenter" === a || "MiddleRight" === a) return fc; if ("BottomLeft" === a) return gc; if ("Bottom" === a || "BottomCenter" === a || "MiddleBottom" === a) return hc; if ("BottomRight" === a) return ic; if ("TopSide" === a) return pc; if ("LeftSide" === a) return qc; if ("RightSide" === a) return sc; if ("BottomSide" === a) return tc; if ("TopBottomSides" === a) return uc; if ("LeftRightSides" === a) return vc; if ("TopLeftSides" === a) return wc; if ("TopRightSides" === a) return xc; if ("BottomLeftSides" === a) return Cc; if ("BottomRightSides" === a) return Dc; if ("NotTopSide" === a) return Ec; if ("NotLeftSide" === a) return Fc; if ("NotRightSide" === a) return Gc; if ("NotBottomSide" === a) return Hc; if ("AllSides" === a) return Ic; if ("Default" === a) return Pc; a = a.split(" "); for (var b = 0, c = 0; "" === a[b];) b++; var d = a[b++]; void 0 !== d && 0 < d.length && (c = parseFloat(d)); for (var e = 0; "" === a[b];) b++; d = a[b++]; void 0 !== d && 0 < d.length && (e = parseFloat(d)); for (var g = 0; "" === a[b];) b++; d = a[b++]; void 0 !== d && 0 < d.length && (g = parseFloat(d)); for (var h = 0; "" === a[b];) b++; d = a[b++]; void 0 !== d && 0 < d.length && (h = parseFloat(d)); return new Q(c, e, g, h) } return new Q }; Q.stringify = function(a) { return a instanceof Q ? a.cd() ? a.x.toString() + " " + a.y.toString() + " " + a.offsetX.toString() + " " + a.offsetY.toString() : a.toString() : a.toString() }; Q.prototype.toString = function() { return this.cd() ? 0 === this.wg && 0 === this.xg ? "Spot(" + this.x + "," + this.y + ")" : "Spot(" + this.x + "," + this.y + "," + this.offsetX + "," + this.offsetY + ")" : this.N(Yb) ? "None" : this.N(Zb) ? "TopLeft" : this.N($b) ? "Top" : this.N(cc) ? "TopRight" : this.N(dc) ? "Left" : this.N(ec) ? "Center" : this.N(fc) ? "Right" : this.N(gc) ? "BottomLeft" : this.N(hc) ? "Bottom" : this.N(ic) ? "BottomRight" : this.N(pc) ? "TopSide" : this.N(qc) ? "LeftSide" : this.N(sc) ? "RightSide" : this.N(tc) ? "BottomSide" : this.N(uc) ? "TopBottomSides" : this.N(vc) ? "LeftRightSides" : this.N(wc) ? "TopLeftSides" : this.N(xc) ? "TopRightSides" : this.N(Cc) ? "BottomLeftSides" : this.N(Dc) ? "BottomRightSides" : this.N(Ec) ? "NotTopSide" : this.N(Fc) ? "NotLeftSide" : this.N(Gc) ? "NotRightSide" : this.N(Hc) ? "NotBottomSide" : this.N(Ic) ? "AllSides" : this.N(Pc) ? "Default" : "None" }; Q.prototype.equals = Q.prototype.N = function(a) { return a instanceof Q ? (this.J === a.x || isNaN(this.J) && isNaN(a.x)) && (this.K === a.y || isNaN(this.K) && isNaN(a.y)) && this.wg === a.offsetX && this.xg === a.offsetY : !1 }; Q.prototype.opposite = function() { return new Q(.5 - (this.J - .5), .5 - (this.K - .5), -this.wg, -this.xg) }; Q.prototype.includesSide = Q.prototype.vp = function(a) { if (!this.kj()) return !1; if (!a.kj()) if (a.N(Qc)) a = qc; else if (a.N(Rc)) a = sc; else if (a.N(Sc)) a = pc; else if (a.N(Tc)) a = tc; else return !1; a = a.offsetY; return (this.xg & a) === a }; z.defineProperty(Q, { x: "x" }, function() { return this.J }, function(a) { this.Pa(a); u && Kb(a, "x"); this.J = a }); z.defineProperty(Q, { y: "y" }, function() { return this.K }, function(a) { this.Pa(a); u && Kb(a, "y"); this.K = a }); z.defineProperty(Q, { offsetX: "offsetX" }, function() { return this.wg }, function(a) { this.Pa(a); u && Pb(a, "offsetX"); this.wg = a }); z.defineProperty(Q, { offsetY: "offsetY" }, function() { return this.xg }, function(a) { this.Pa(a); u && Pb(a, "offsetY"); this.xg = a }); Q.prototype.isSpot = Q.prototype.cd = function() { return !isNaN(this.x) && !isNaN(this.y) }; Q.prototype.isNoSpot = Q.prototype.Be = function() { return isNaN(this.x) || isNaN(this.y) }; Q.prototype.isSide = Q.prototype.kj = function() { return this.Be() && 1 === this.offsetX && 0 !== this.offsetY }; Q.prototype.isDefault = Q.prototype.bd = function() { return isNaN(this.x) && isNaN(this.y) && -1 === this.offsetX && 0 === this.offsetY }; var Yb; Q.None = Yb = Tb(new Q(0, 0, 0, 0), 0).La(); var Pc; Q.Default = Pc = Tb(new Q(0, 0, -1, 0), -1).La(); var Zb; Q.TopLeft = Zb = (new Q(0, 0, 0, 0)).La(); var $b; Q.TopCenter = $b = (new Q(.5, 0, 0, 0)).La(); var cc; Q.TopRight = cc = (new Q(1, 0, 0, 0)).La(); var dc; Q.LeftCenter = dc = (new Q(0, .5, 0, 0)).La(); var ec; Q.Center = ec = (new Q(.5, .5, 0, 0)).La(); var fc; Q.RightCenter = fc = (new Q(1, .5, 0, 0)).La(); var gc; Q.BottomLeft = gc = (new Q(0, 1, 0, 0)).La(); var hc; Q.BottomCenter = hc = (new Q(.5, 1, 0, 0)).La(); var ic; Q.BottomRight = ic = (new Q(1, 1, 0, 0)).La(); var Zc; Q.MiddleTop = Zc = $b; var $c; Q.MiddleLeft = $c = dc; var ad; Q.MiddleRight = ad = fc; var bd; Q.MiddleBottom = bd = hc; var Sc; Q.Top = Sc = $b; var Qc; Q.Left = Qc = dc; var Rc; Q.Right = Rc = fc; var Tc; Q.Bottom = Tc = hc; var pc; Q.TopSide = pc = Tb(new Q(0, 0, 1, z.pd), 1).La(); var qc; Q.LeftSide = qc = Tb(new Q(0, 0, 1, z.Tc), 1).La(); var sc; Q.RightSide = sc = Tb(new Q(0, 0, 1, z.fd), 1).La(); var tc; Q.BottomSide = tc = Tb(new Q(0, 0, 1, z.ed), 1).La(); var uc; Q.TopBottomSides = uc = Tb(new Q(0, 0, 1, z.pd | z.ed), 1).La(); var vc; Q.LeftRightSides = vc = Tb(new Q(0, 0, 1, z.Tc | z.fd), 1).La(); var wc; Q.TopLeftSides = wc = Tb(new Q(0, 0, 1, z.pd | z.Tc), 1).La(); var xc; Q.TopRightSides = xc = Tb(new Q(0, 0, 1, z.pd | z.fd), 1).La(); var Cc; Q.BottomLeftSides = Cc = Tb(new Q(0, 0, 1, z.ed | z.Tc), 1).La(); var Dc; Q.BottomRightSides = Dc = Tb(new Q(0, 0, 1, z.ed | z.fd), 1).La(); var Ec; Q.NotTopSide = Ec = Tb(new Q(0, 0, 1, z.Tc | z.fd | z.ed), 1).La(); var Fc; Q.NotLeftSide = Fc = Tb(new Q(0, 0, 1, z.pd | z.fd | z.ed), 1).La(); var Gc; Q.NotRightSide = Gc = Tb(new Q(0, 0, 1, z.pd | z.Tc | z.ed), 1).La(); var Hc; Q.NotBottomSide = Hc = Tb(new Q(0, 0, 1, z.pd | z.Tc | z.fd), 1).La(); var Ic; Q.AllSides = Ic = Tb(new Q(0, 0, 1, z.pd | z.Tc | z.fd | z.ed), 1).La(); function cd() { this.pf = [1, 0, 0, 1, 0, 0] } cd.prototype.copy = function() { var a = new cd; a.pf[0] = this.pf[0]; a.pf[1] = this.pf[1]; a.pf[2] = this.pf[2]; a.pf[3] = this.pf[3]; a.pf[4] = this.pf[4]; a.pf[5] = this.pf[5]; return a }; function dd(a) { this.type = a; this.r2 = this.y2 = this.x2 = this.r1 = this.y1 = this.x1 = 0; this.RD = []; this.pattern = null } dd.prototype.addColorStop = function(a, b) { this.RD.push({ offset: a, color: b }) }; function ed(a, b, c) { this.fillStyle = "#000000"; this.font = "10px sans-serif"; this.globalAlpha = 1; this.lineCap = "butt"; this.nn = 0; this.lineJoin = "miter"; this.lineWidth = 1; this.miterLimit = 10; this.shadowBlur = 0; this.shadowColor = "rgba(0, 0, 0, 0)"; this.shadowOffsetY = this.shadowOffsetX = 0; this.strokeStyle = "#000000"; this.textAlign = "start"; this.Nw = !1; this.zg = this.Is = this.Hs = 0; this.document = b || document; this.nE = c; this.nx = null; this.path = []; this.ej = new cd; this.stack = []; this.Cf = []; this.Tw = a; this.NI = "http://www.w3.org/2000/svg"; this.width = this.Tw.width; this.height = this.Tw.height; this.Vl = pd(this, "svg", { width: this.width + "px", height: this.height + "px", EL: "0 0 " + this.Tw.width + " " + this.Tw.height }); this.Vl.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "http://www.w3.org/2000/svg"); this.Vl.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink", "http://www.w3.org/1999/xlink"); qd(this, 1, 0, 0, 1, 0, 0); a = z.am++; b = pd(this, "clipPath", { id: "mainClip" + a }); b.appendChild(pd(this, "rect", { x: 0, y: 0, width: this.width, height: this.height })); this.Vl.appendChild(b); this.Cf[0].setAttributeNS(null, "clip-path", "url(#mainClip" + a + ")") } f = ed.prototype; f.arc = function(a, b, c, d, e, g) { rd(this, a, b, c, d, e, g) }; f.beginPath = function() { this.path = [] }; f.bezierCurveTo = function(a, b, c, d, e, g) { this.path.push(["C", a, b, c, d, e, g]) }; f.clearRect = function() {}; f.clip = function() { sd(this, "clipPath", this.path, new cd) }; f.closePath = function() { this.path.push(["z"]) }; f.createLinearGradient = function(a, b, c, d) { var e = new dd("linear"); e.x1 = a; e.y1 = b; e.x2 = c; e.y2 = d; return e }; f.createPattern = function(a) { var b = new dd("pattern"); b.pattern = a; return b }; f.createRadialGradient = function(a, b, c, d, e, g) { var h = new dd("radial"); h.x1 = a; h.y1 = b; h.r1 = c; h.x2 = d; h.y2 = e; h.r2 = g; return h }; f.drawImage = function(a, b, c, d, e, g, h, k, l) { var m = ""; a instanceof HTMLCanvasElement && (m = a.toDataURL()); a instanceof HTMLImageElement && (m = a.src); m = { x: 0, y: 0, width: a.naturalWidth, height: a.naturalHeight, href: m }; m.preserveAspectRatio = td(d, k) && td(e, l) ? "xMidYMid slice" : "none"; var n = ""; k /= d; l /= e; if (0 !== g || 0 !== h) n += " translate(" + g + ", " + h + ")"; if (1 !== k || 1 !== l) n += " scale(" + k + ", " + l + ")"; if (0 !== b || 0 !== c) n += " translate(" + -b + ", " + -c + ")"; if (0 !== b || 0 !== c || d !== a.naturalWidth || e !== a.naturalHeight) a = "CLIP" + z.am++, g = pd(this, "clipPath", { id: a }), g.appendChild(pd(this, "rect", { x: b, y: c, width: d, height: e })), this.Vl.appendChild(g), m["clip-path"] = "url(#" + a + ")"; ud(this, "image", m, this.ej, n); this.addElement("image", m) }; f.fill = function() { sd(this, "fill", this.path, this.ej) }; f.Gg = function() { this.Nw ? this.clip() : this.fill() }; f.fillRect = function(a, b, c, d) { vd(this, "fill", [a, b, c, d], this.ej) }; f.fillText = function(a, b, c) { a = [a, b, c]; b = this.textAlign; "left" === b ? b = "start" : "right" === b ? b = "end" : "center" === b && (b = "middle"); b = { x: a[1], y: a[2], style: "font: " + this.font, "text-anchor": b }; ud(this, "fill", b, this.ej); this.addElement("text", b, a[0]) }; f.lineTo = function(a, b) { this.path.push(["L", a, b]) }; f.moveTo = function(a, b) { this.path.push(["M", a, b]) }; f.quadraticCurveTo = function(a, b, c, d) { this.path.push(["Q", a, b, c, d]) }; f.rect = function(a, b, c, d) { this.path.push(["M", a, b], ["L", a + c, b], ["L", a + c, b + d], ["L", a, b + d], ["z"]) }; f.restore = function() { this.ej = this.stack.pop(); this.path = this.stack.pop(); var a = this.stack.pop(); this.fillStyle = a.fillStyle; this.font = a.font; this.globalAlpha = a.globalAlpha; this.lineCap = a.lineCap; this.nn = a.nn; this.lineJoin = a.lineJoin; this.lineWidth = a.lineWidth; this.miterLimit = a.miterLimit; this.shadowBlur = a.shadowBlur; this.shadowColor = a.shadowColor; this.shadowOffsetX = a.shadowOffsetX; this.shadowOffsetY = a.shadowOffsetY; this.strokeStyle = a.strokeStyle; this.textAlign = a.textAlign }; f.save = function() { this.stack.push({ fillStyle: this.fillStyle, font: this.font, globalAlpha: this.globalAlpha, lineCap: this.lineCap, nn: this.nn, lineJoin: this.lineJoin, lineWidth: this.lineWidth, miterLimit: this.miterLimit, shadowBlur: this.shadowBlur, shadowColor: this.shadowColor, shadowOffsetX: this.shadowOffsetX, shadowOffsetY: this.shadowOffsetY, strokeStyle: this.strokeStyle, textAlign: this.textAlign }); for (var a = [], b = 0; b < this.path.length; b++) a.push(this.path[b]); this.stack.push(a); this.stack.push(this.ej.copy()) }; f.setTransform = function(a, b, c, d, e, g) { 1 === a && 0 === b && 0 === c && 1 === d && 0 === e && 0 === g || qd(this, a, b, c, d, e, g) }; f.scale = function() {}; f.stroke = function() { sd(this, "stroke", this.path, this.ej) }; f.tj = function() { this.Kn || this.stroke() }; f.strokeRect = function(a, b, c, d) { vd(this, "stroke", [a, b, c, d], this.ej) }; function pd(a, b, c, d) { a = a.document.createElementNS(a.NI, b); if (z.Za(c)) for (var e in c) a.setAttributeNS("href" === e ? "http://www.w3.org/1999/xlink" : "", e, c[e]); void 0 !== d && (a.textContent = d); return a } f.addElement = function(a, b, c) { a = pd(this, a, b, c); 0 < this.Cf.length ? this.Cf[this.Cf.length - 1].appendChild(a) : this.Vl.appendChild(a); return this.nx = a }; function ud(a, b, c, d, e) { 1 !== a.globalAlpha && (c.opacity = a.globalAlpha); "fill" === b ? (/^rgba\(/.test(a.fillStyle) ? (a = /^\s*rgba\s*\(([^,\s]+)\s*,\s*([^,\s]+)\s*,\s*([^,\s]+)\s*,\s*([^,\s]+)\)\s*$/i.exec(a.fillStyle), c.fill = "rgb(" + a[1] + "," + a[2] + "," + a[3] + ")", c["fill-opacity"] = a[4]) : c.fill = a.fillStyle instanceof dd ? wd(a, a.fillStyle) : a.fillStyle, c.stroke = "none") : "stroke" === b && (c.fill = "none", /^rgba\(/.test(a.strokeStyle) ? (b = /^\s*rgba\s*\(([^,\s]+)\s*,\s*([^,\s]+)\s*,\s*([^,\s]+)\s*,\s*([^,\s]+)\)\s*$/i.exec(a.strokeStyle), c.stroke = "rgb(" + b[1] + "," + b[2] + "," + b[3] + ")", c["stroke-opacity"] = b[4]) : c.stroke = a.strokeStyle instanceof dd ? wd(a, a.strokeStyle) : a.strokeStyle, c["stroke-width"] = a.lineWidth, c["stroke-linecap"] = a.lineCap, c["stroke-linejoin"] = a.lineJoin, c["stroke-miterlimit"] = a.miterLimit); d = d.pf; d = "matrix(" + d[0] + ", " + d[1] + ", " + d[2] + ", " + d[3] + ", " + d[4] + ", " + d[5] + ")"; void 0 !== e && (d += e); c.transform = d } function wd(a, b) { var c = "GRAD" + z.am++, d; if ("linear" === b.type) d = { x1: b.x1, x2: b.x2, y1: b.y1, y2: b.y2, id: c, gradientUnits: "userSpaceOnUse" }, d = pd(a, "linearGradient", d); else if ("radial" === b.type) d = { x1: b.x1, x2: b.x2, y1: b.y1, y2: b.y2, r1: b.r1, r2: b.r2, id: c }, d = pd(a, "radialGradient", d); else if ("pattern" === b.type) { var e = b.pattern; d = { width: e.width, height: e.height, id: c, patternUnits: "userSpaceOnUse" }; var g = ""; e instanceof HTMLCanvasElement && (g = e.toDataURL()); e instanceof HTMLImageElement && (g = e.src); e = { x: 0, y: 0, width: e.width, height: e.height, href: g }; d = pd(a, "pattern", d); d.appendChild(pd(a, "image", e)) } else throw Error("invalid gradient"); for (var e = b.RD, g = e.length, h = [], k = 0; k < g; k++) { var l = e[k], m = l.color, l = { offset: l.offset, "stop-color": m }; /^rgba\(/.test(m) && (m = /^\s*rgba\s*\(([^,\s]+)\s*,\s*([^,\s]+)\s*,\s*([^,\s]+)\s*,\s*([^,\s]+)\)\s*$/i.exec(m), l["stop-color"] = "rgb(" + m[1] + "," + m[2] + "," + m[3] + ")", l["stop-opacity"] = m[4]); h.push(l) } h.sort(function(a, b) { return a.offset > b.offset ? 1 : -1 }); for (k = 0; k < g; k++) d.appendChild(pd(a, "stop", h[k])); a.Vl.appendChild(d); return "url(#" + c + ")" } function vd(a, b, c, d) { c = { x: c[0], y: c[1], width: c[2], height: c[3] }; ud(a, b, c, d); a.addElement("rect", c) } function sd(a, b, c, d) { for (var e = [], g = 0; g < c.length; g++) { var h = z.zl(c[g]), k = [h.shift()]; if ("A" === k[0]) k.push(h.shift() + "," + h.shift(), h.shift(), h.shift() + "," + h.shift(), h.shift() + "," + h.shift()); else for (; h.length;) k.push(h.shift() + "," + h.shift()); e.push(k.join(" ")) } c = { d: e.join(" ") }; ud(a, b, c, d); "clipPath" === b ? (b = "CLIP" + z.am++, d = pd(a, "clipPath", { id: b }), d.appendChild(pd(a, "path", c)), a.Vl.appendChild(d), 0 < a.Cf.length && a.Cf[a.Cf.length - 1].setAttributeNS(null, "clip-path", "url(#" + b + ")")) : a.addElement("path", c) } function rd(a, b, c, d, e, g, h) { var k = Math.abs(e - g); if (e !== g) { var l = b + d * Math.cos(g); g = c + d * Math.sin(g); k >= 2 * Math.PI ? (rd(a, b, c, d, e, e + Math.PI, h), rd(a, b, c, d, e + Math.PI, e + 2 * Math.PI, h), a.path.push(["M", l, g])) : (b += d * Math.cos(e), c += d * Math.sin(e), k = 180 * k / Math.PI, e = h ? 0 : 1, h = 180 <= k === !!h ? 0 : 1, 0 !== a.path.length ? a.path.push(["L", b, c]) : a.path.push(["M", b, c]), a.path.push(["A", d, d, k, h, e, l, g])) } } function qd(a, b, c, d, e, g, h) { var k = new cd; k.pf = [b, c, d, e, g, h]; b = {}; ud(a, "g", b, k); k = a.addElement("g", b); a.Cf.push(k) } f.gb = function() { if (0 !== this.shadowOffsetX || 0 !== this.shadowOffsetY || 0 !== this.shadowBlur) { var a = "SHADOW" + z.am++, b = this.addElement("filter", { id: a, x: "-100%", y: "-100%", width: "300%", height: "300%" }, null), c, d, e, g, h; c = pd(this, "feGaussianBlur", { "in": "SourceAlpha", result: "blur", vL: this.shadowBlur / 2 }); d = pd(this, "feFlood", { "in": "blur", result: "flood", "flood-color": this.shadowColor }); e = pd(this, "feComposite", { "in": "flood", in2: "blur", operator: "in", result: "comp" }); g = pd(this, "feOffset", { "in": "comp", result: "offsetBlur", dx: this.shadowOffsetX, dy: this.shadowOffsetY }); h = pd(this, "feMerge", {}); h.appendChild(pd(this, "feMergeNode", { "in": "offsetBlur" })); h.appendChild(pd(this, "feMergeNode", { "in": "SourceGraphic" })); b.appendChild(c); b.appendChild(d); b.appendChild(e); b.appendChild(g); b.appendChild(h); 0 < this.Cf.length && this.Cf[this.Cf.length - 1].setAttributeNS(null, "filter", "url(#" + a + ")") } }; f.TA = function(a, b, c) { this.Hs = a; this.Is = b; this.zg = c }; f.wn = function() { this.shadowBlur = this.shadowOffsetY = this.shadowOffsetX = 0 }; f.xn = function() { this.shadowOffsetX = this.Hs; this.shadowOffsetY = this.Is; this.shadowBlur = this.zg }; f.Tz = function() { return !1 }; f.Pz = function() {}; function la(a, b) { this.ownerDocument = void 0 === b ? document : b; var c = this.ownerDocument.createElement("canvas"); c.tabIndex = 0; this.Kd = c; this.yl = new xd(c); c.Z = a; Object.seal(this) } f = la.prototype; f.toDataURL = function(a, b) { return this.Kd.toDataURL(a, b) }; f.getBoundingClientRect = function() { return this.Kd.getBoundingClientRect() }; f.focus = function() { return this.Kd.focus() }; f.addEventListener = function(a, b, c) { this.Kd.addEventListener(a, b, c) }; f.removeEventListener = function(a, b, c) { this.Kd.removeEventListener(a, b, c) }; z.defineProperty(la, { width: "width" }, function() { return this.Kd.width }, function(a) { this.Kd.width = a }); z.defineProperty(la, { height: "height" }, function() { return this.Kd.height }, function(a) { this.Kd.height = a }); z.defineProperty(la, { style: "style" }, function() { return this.Kd.style }, function(a) { this.Kd.style = a }); function xd(a) { a.getContext && a.getContext("2d") || z.k("Browser does not support HTML Canvas Element"); this.Ca = a.getContext("2d"); this.ly = this.ny = this.my = ""; this.Kn = !1; this.zg = this.Is = this.Hs = 0; Object.seal(this) } z.defineProperty(xd, { fillStyle: "fillStyle" }, function() { return this.Ca.fillStyle }, function(a) { this.ly !== a && (this.ly = this.Ca.fillStyle = a) }); z.defineProperty(xd, { font: "font" }, function() { return this.Ca.font }, function(a) { this.my !== a && (this.my = this.Ca.font = a) }); z.defineProperty(xd, { globalAlpha: "globalAlpha" }, function() { return this.Ca.globalAlpha }, function(a) { this.Ca.globalAlpha = a }); z.defineProperty(xd, { lineCap: "lineCap" }, function() { return this.Ca.lineCap }, function(a) { this.Ca.lineCap = a }); z.defineProperty(xd, { nn: "lineDashOffset" }, function() { return this.Ca.nn }, function(a) { this.Ca.nn = a }); z.defineProperty(xd, { lineJoin: "lineJoin" }, function() { return this.Ca.lineJoin }, function(a) { this.Ca.lineJoin = a }); z.defineProperty(xd, { lineWidth: "lineWidth" }, function() { return this.Ca.lineWidth }, function(a) { this.Ca.lineWidth = a }); z.defineProperty(xd, { miterLimit: "miterLimit" }, function() { return this.Ca.miterLimit }, function(a) { this.Ca.miterLimit = a }); z.defineProperty(xd, { shadowBlur: "shadowBlur" }, function() { return this.Ca.shadowBlur }, function(a) { this.Ca.shadowBlur = a }); z.defineProperty(xd, { shadowColor: "shadowColor" }, function() { return this.Ca.shadowColor }, function(a) { this.Ca.shadowColor = a }); z.defineProperty(xd, { shadowOffsetX: "shadowOffsetX" }, function() { return this.Ca.shadowOffsetX }, function(a) { this.Ca.shadowOffsetX = a }); z.defineProperty(xd, { shadowOffsetY: "shadowOffsetY" }, function() { return this.Ca.shadowOffsetY }, function(a) { this.Ca.shadowOffsetY = a }); z.defineProperty(xd, { strokeStyle: "strokeStyle" }, function() { return this.Ca.strokeStyle }, function(a) { this.ny !== a && (this.ny = this.Ca.strokeStyle = a) }); z.defineProperty(xd, { textAlign: "textAlign" }, function() { return this.Ca.textAlign }, function(a) { this.Ca.textAlign = a }); z.defineProperty(xd, { Jt: "imageSmoothingEnabled" }, function() { return this.Ca.Jt }, function(a) { this.Ca.Jt = a }); f = xd.prototype; f.arc = function(a, b, c, d, e, g) { this.Ca.arc(a, b, c, d, e, g) }; f.beginPath = function() { this.Ca.beginPath() }; f.bezierCurveTo = function(a, b, c, d, e, g) { this.Ca.bezierCurveTo(a, b, c, d, e, g) }; f.clearRect = function(a, b, c, d) { this.Ca.clearRect(a, b, c, d) }; f.clip = function() { this.Ca.clip() }; f.closePath = function() { this.Ca.closePath() }; f.createLinearGradient = function(a, b, c, d) { return this.Ca.createLinearGradient(a, b, c, d) }; f.createPattern = function(a, b) { return this.Ca.createPattern(a, b) }; f.createRadialGradient = function(a, b, c, d, e, g) { return this.Ca.createRadialGradient(a, b, c, d, e, g) }; f.drawImage = function(a, b, c, d, e, g, h, k, l) { void 0 === d ? this.Ca.drawImage(a, b, c) : this.Ca.drawImage(a, b, c, d, e, g, h, k, l) }; f.fill = function() { this.Ca.fill() }; f.fillRect = function(a, b, c, d) { this.Ca.fillRect(a, b, c, d) }; f.fillText = function(a, b, c) { this.Ca.fillText(a, b, c) }; f.getImageData = function(a, b, c, d) { return this.Ca.getImageData(a, b, c, d) }; f.lineTo = function(a, b) { this.Ca.lineTo(a, b) }; f.measureText = function(a) { return this.Ca.measureText(a) }; f.moveTo = function(a, b) { this.Ca.moveTo(a, b) }; f.quadraticCurveTo = function(a, b, c, d) { this.Ca.quadraticCurveTo(a, b, c, d) }; f.rect = function(a, b, c, d) { this.Ca.rect(a, b, c, d) }; f.restore = function() { this.Ca.restore() }; xd.prototype.rotate = function(a) { this.Ca.rotate(a) }; f = xd.prototype; f.save = function() { this.Ca.save() }; f.setTransform = function(a, b, c, d, e, g) { this.Ca.setTransform(a, b, c, d, e, g) }; f.scale = function(a, b) { this.Ca.scale(a, b) }; f.stroke = function() { this.Ca.stroke() }; f.transform = function(a, b, c, d, e, g) { 1 === a && 0 === b && 0 === c && 1 === d && 0 === e && 0 === g || this.Ca.transform(a, b, c, d, e, g) }; f.translate = function(a, b) { this.Ca.translate(a, b) }; f.Gg = function(a) { if (a instanceof Da && a.type === yd) { var b = a.On; a = a.ty; a > b ? (this.scale(b / a, 1), this.translate((a - b) / 2, 0)) : b > a && (this.scale(1, a / b), this.translate(0, (b - a) / 2)); this.Kn ? this.clip() : this.fill(); a > b ? (this.translate(-(a - b) / 2, 0), this.scale(1 / (b / a), 1)) : b > a && (this.translate(0, -(b - a) / 2), this.scale(1, 1 / (a / b))) } else this.Kn ? this.clip() : this.fill() }; f.tj = function() { this.Kn || this.stroke() }; z.defineProperty(xd, { Nw: "clipInsteadOfFill" }, function() { return this.Kn }, function(a) { this.Kn = a }); f = xd.prototype; f.TA = function(a, b, c) { this.Hs = a; this.Is = b; this.zg = c }; f.wn = function() { this.shadowBlur = this.shadowOffsetY = this.shadowOffsetX = 0 }; f.xn = function() { this.shadowOffsetX = this.Hs; this.shadowOffsetY = this.Is; this.shadowBlur = this.zg }; f.Tz = function(a, b) { var c = this.Ca; if (void 0 !== c.setLineDash) c.setLineDash(a), c.lineDashOffset = b; else if (void 0 !== c.webkitLineDash) c.webkitLineDash = a, c.webkitLineDashOffset = b; else if (void 0 !== c.mozDash) c.mozDash = a, c.mozDashOffset = b; else return !1; return !0 }; f.Pz = function() { var a = this.Ca; void 0 !== a.setLineDash ? (a.setLineDash(z.xj), a.lineDashOffset = 0) : void 0 !== a.webkitLineDash ? (a.webkitLineDash = z.xj, a.webkitLineDashOffset = 0) : void 0 !== a.mozDash && (a.mozDash = null, a.mozDashOffset = 0) }; function ca(a, b) { b && (a.my = ""); a.ny = ""; a.ly = "" } var Hd = (Math.sqrt(2) - 1) / 3 * 4, Id = (new N(0, 0)).La(), Jd = (new w(0, 0, 0, 0)).La(), Kd = (new Db(0, 0, 0, 0)).La(), Ld = (new Db(2, 2, 2, 2)).La(), Md = (new N(6, 6)).La(), Nd = (new N(-Infinity, -Infinity)).La(), Od = (new N(Infinity, Infinity)).La(), Pd = (new Ea(0, 0)).La(), Qd = (new Ea(1, 1)).La(), ae = (new Ea(6, 6)).La(), be = (new Ea(8, 8)).La(), ce = (new Ea(10, 10)).La(), de = (new Ea(Infinity, Infinity)).La(), ee = (new N(NaN, NaN)).La(), fe = (new Ea(NaN, NaN)).La(), ge = (new w(NaN, NaN, NaN, NaN)).La(), he = (new Q(.156, .156)).La(), ie = (new Q(.844, .844)).La(), je = new ma, ke = new ma, le = null; function se(a) { if (0 >= a) return 0; var b = le; if (null === b) { for (var b = [], c = 0; 2E3 >= c; c++) b[c] = Math.sqrt(c); le = b } return 1 > a ? (c = 1 / a, 2E3 >= c ? 1 / b[c | 0] : Math.sqrt(a)) : 2E3 >= a ? b[a | 0] : Math.sqrt(a) } function eb(a, b) { var c = a - b; return .5 > c && -.5 < c } function td(a, b) { var c = a - b; return 5E-8 > c && -5E-8 < c } function te(a, b, c, d, e, g, h) { 0 >= e && (e = 1E-6); var k = 0, l = 0, m = 0, n = 0; a < c ? (l = a, k = c) : (l = c, k = a); b < d ? (n = b, m = d) : (n = d, m = b); if (a === c) return n <= h && h <= m && a - e <= g && g <= a + e; if (b === d) return l <= g && g <= k && b - e <= h && h <= b + e; k += e; l -= e; if (l <= g && g <= k && (m += e, n -= e, n <= h && h <= m)) if (k - l > m - n) if (a - c > e || c - a > e) { if (g = (d - b) / (c - a) * (g - a) + b, g - e <= h && h <= g + e) return !0 } else return !0; else if (b - d > e || d - b > e) { if (h = (c - a) / (d - b) * (h - b) + a, h - e <= g && g <= h + e) return !0 } else return !0; return !1 } function ue(a, b, c, d, e, g, h, k, l, m, n, p) { if (te(a, b, h, k, p, c, d) && te(a, b, h, k, p, e, g)) return te(a, b, h, k, p, m, n); var q = (a + c) / 2, r = (b + d) / 2, s = (c + e) / 2, t = (d + g) / 2; e = (e + h) / 2; g = (g + k) / 2; d = (q + s) / 2; c = (r + t) / 2; var s = (s + e) / 2, t = (t + g) / 2, v = (d + s) / 2, x = (c + t) / 2; return ue(a, b, q, r, d, c, v, x, l, m, n, p) || ue(v, x, s, t, e, g, h, k, l, m, n, p) } function ve(a, b, c, d, e, g, h, k, l, m) { if (te(a, b, h, k, l, c, d) && te(a, b, h, k, l, e, g)) Ib(m, a, b, 0, 0), Ib(m, h, k, 0, 0); else { var n = (a + c) / 2, p = (b + d) / 2, q = (c + e) / 2, r = (d + g) / 2; e = (e + h) / 2; g = (g + k) / 2; d = (n + q) / 2; c = (p + r) / 2; var q = (q + e) / 2, r = (r + g) / 2, s = (d + q) / 2, t = (c + r) / 2; ve(a, b, n, p, d, c, s, t, l, m); ve(s, t, q, r, e, g, h, k, l, m) } } function we(a, b, c, d, e, g, h, k, l, m) { if (te(a, b, h, k, l, c, d) && te(a, b, h, k, l, e, g)) 0 === m.length && (m.push(a), m.push(b)), m.push(h), m.push(k); else { var n = (a + c) / 2, p = (b + d) / 2, q = (c + e) / 2, r = (d + g) / 2; e = (e + h) / 2; g = (g + k) / 2; d = (n + q) / 2; c = (p + r) / 2; var q = (q + e) / 2, r = (r + g) / 2, s = (d + q) / 2, t = (c + r) / 2; we(a, b, n, p, d, c, s, t, l, m); we(s, t, q, r, e, g, h, k, l, m) } } function xe(a, b, c, d, e, g, h, k, l, m, n, p, q, r) { var s = 1 - l; a = a * s + c * l; b = b * s + d * l; c = c * s + e * l; d = d * s + g * l; e = e * s + h * l; g = g * s + k * l; k = a * s + c * l; h = b * s + d * l; c = c * s + e * l; d = d * s + g * l; m.x = a; m.y = b; n.x = k; n.y = h; p.x = k * s + c * l; p.y = h * s + d * l; q.x = c; q.y = d; r.x = e; r.y = g } function ye(a, b, c, d, e, g, h, k, l, m) { if (te(a, b, e, g, m, c, d)) return te(a, b, e, g, m, k, l); var n = (a + c) / 2, p = (b + d) / 2; c = (c + e) / 2; d = (d + g) / 2; var q = (n + c) / 2, r = (p + d) / 2; return ye(a, b, n, p, q, r, h, k, l, m) || ye(q, r, c, d, e, g, h, k, l, m) } function ze(a, b, c, d, e, g, h, k) { if (te(a, b, e, g, h, c, d)) Ib(k, a, b, 0, 0), Ib(k, e, g, 0, 0); else { var l = (a + c) / 2, m = (b + d) / 2; c = (c + e) / 2; d = (d + g) / 2; var n = (l + c) / 2, p = (m + d) / 2; ze(a, b, l, m, n, p, h, k); ze(n, p, c, d, e, g, h, k) } } function Je(a, b, c, d, e, g, h, k) { if (te(a, b, e, g, h, c, d)) 0 === k.length && (k.push(a), k.push(b)), k.push(e), k.push(g); else { var l = (a + c) / 2, m = (b + d) / 2; c = (c + e) / 2; d = (d + g) / 2; var n = (l + c) / 2, p = (m + d) / 2; Je(a, b, l, m, n, p, h, k); Je(n, p, c, d, e, g, h, k) } } function Ke(a, b, c, d, e, g, h, k, l, m, n, p, q, r) { 0 >= q && (q = 1E-6); if (te(a, b, h, k, q, c, d) && te(a, b, h, k, q, e, g)) { var s = (a - h) * (m - p) - (b - k) * (l - n); if (0 === s) return !1; q = ((a * k - b * h) * (l - n) - (a - h) * (l * p - m * n)) / s; s = ((a * k - b * h) * (m - p) - (b - k) * (l * p - m * n)) / s; if ((l > n ? l - n : n - l) < (m > p ? m - p : p - m)) { if (h = l = 0, b < k ? (l = b, h = k) : (l = k, h = b), s < l || s > h) return !1 } else if (a < h ? l = a : (l = h, h = a), q < l || q > h) return !1; r.x = q; r.y = s; return !0 } var s = (a + c) / 2, t = (b + d) / 2; c = (c + e) / 2; d = (d + g) / 2; e = (e + h) / 2; g = (g + k) / 2; var v = (s + c) / 2, x = (t + d) / 2; c = (c + e) / 2; d = (d + g) / 2; var y = (v + c) / 2, A = (x + d) / 2, B = (n - l) * (n - l) + (p - m) * (p - m), L = !1; Ke(a, b, s, t, v, x, y, A, l, m, n, p, q, r) && (b = (r.x - l) * (r.x - l) + (r.y - m) * (r.y - m), b < B && (B = b, L = !0)); a = r.x; s = r.y; Ke(y, A, c, d, e, g, h, k, l, m, n, p, q, r) && (b = (r.x - l) * (r.x - l) + (r.y - m) * (r.y - m), b < B ? L = !0 : (r.x = a, r.y = s)); return L } function Le(a, b, c, d, e, g, h, k, l, m, n, p, q) { var r = 0; 0 >= q && (q = 1E-6); if (te(a, b, h, k, q, c, d) && te(a, b, h, k, q, e, g)) { q = (a - h) * (m - p) - (b - k) * (l - n); if (0 === q) return r; var s = ((a * k - b * h) * (l - n) - (a - h) * (l * p - m * n)) / q, t = ((a * k - b * h) * (m - p) - (b - k) * (l * p - m * n)) / q; if (s >= n) return r; if ((l > n ? l - n : n - l) < (m > p ? m - p : p - m)) { if (a = l = 0, b < k ? (l = b, a = k) : (l = k, a = b), t < l || t > a) return r } else if (a < h ? (l = a, a = h) : l = h, s < l || s > a) return r; 0 < q ? r++ : 0 > q && r-- } else { var s = (a + c) / 2, t = (b + d) / 2, v = (c + e) / 2, x = (d + g) / 2; e = (e + h) / 2; g = (g + k) / 2; d = (s + v) / 2; c = (t + x) / 2; var v = (v + e) / 2, x = (x + g) / 2, y = (d + v) / 2, A = (c + x) / 2, r = r + Le(a, b, s, t, d, c, y, A, l, m, n, p, q), r = r + Le(y, A, v, x, e, g, h, k, l, m, n, p, q) } return r } function ib(a, b, c, d, e, g, h) { if (td(a, c)) { var k = 0; c = 0; b < d ? (k = b, c = d) : (k = d, c = b); d = g; if (d < k) return h.x = a, h.y = k, !1; if (d > c) return h.x = a, h.y = c, !1; h.x = a; h.y = d; return !0 } if (td(b, d)) { a < c ? k = a : (k = c, c = a); d = e; if (d < k) return h.x = k, h.y = b, !1; if (d > c) return h.x = c, h.y = b, !1; h.x = d; h.y = b; return !0 } k = ((a - e) * (a - c) + (b - g) * (b - d)) / ((c - a) * (c - a) + (d - b) * (d - b)); if (-5E-6 > k) return h.x = a, h.y = b, !1; if (1.000005 < k) return h.x = c, h.y = d, !1; h.x = a + k * (c - a); h.y = b + k * (d - b); return !0 } function Me(a, b, c, d, e, g, h, k, l) { if (eb(a, c) && eb(b, d)) return l.x = a, l.y = b, !1; if (td(e, h)) { if (td(a, c)) return ib(a, b, c, d, e, g, l), !1; g = (d - b) / (c - a) * (e - a) + b; return ib(a, b, c, d, e, g, l) } k = (k - g) / (h - e); if (td(a, c)) { g = k * (a - e) + g; c = h = 0; b < d ? (h = b, c = d) : (h = d, c = b); if (g < h) return l.x = a, l.y = h, !1; if (g > c) return l.x = a, l.y = c, !1; l.x = a; l.y = g; return !0 } h = (d - b) / (c - a); if (td(k, h)) return ib(a, b, c, d, e, g, l), !1; e = (h * a - k * e + g - b) / (h - k); if (td(h, 0)) { a < c ? h = a : (h = c, c = a); if (e < h) return l.x = h, l.y = b, !1; if (e > c) return l.x = c, l.y = b, !1; l.x = e; l.y = b; return !0 } g = h * (e - a) + b; return ib(a, b, c, d, e, g, l) } function Ne(a, b, c, d, e, g, h, k, l) { var m = 1E21, n = a, p = b; if (Me(a, b, a, d, e, g, h, k, l)) { var q = (l.x - e) * (l.x - e) + (l.y - g) * (l.y - g); q < m && (m = q, n = l.x, p = l.y) } Me(c, b, c, d, e, g, h, k, l) && (q = (l.x - e) * (l.x - e) + (l.y - g) * (l.y - g), q < m && (m = q, n = l.x, p = l.y)); Me(a, b, c, b, e, g, h, k, l) && (q = (l.x - e) * (l.x - e) + (l.y - g) * (l.y - g), q < m && (m = q, n = l.x, p = l.y)); Me(a, d, c, d, e, g, h, k, l) && (q = (l.x - e) * (l.x - e) + (l.y - g) * (l.y - g), q < m && (m = q, n = l.x, p = l.y)); l.x = n; l.y = p; return 1E21 > m } function Oe(a, b, c, d, e, g, h, k, l) { c = a - c; var m = e - h, n = h = 0; 0 === c || 0 === m ? 0 === c ? (k = (g - k) / m, h = a, n = k * h + (g - k * e)) : (d = (b - d) / c, h = e, n = d * h + (b - d * a)) : (d = (b - d) / c, k = (g - k) / m, a = b - d * a, h = (g - k * e - a) / (d - k), n = d * h + a); l.n(h, n); return l } function Pe(a, b, c) { var d = b.x, e = b.y, g = c.x, h = c.y, k = a.left, l = a.right, m = a.top, n = a.bottom; return d === g ? (g = a = 0, e < h ? (a = e, g = h) : (a = h, g = e), k <= d && d <= l && a <= n && g >= m) : e === h ? (d < g ? a = d : (a = g, g = d), m <= e && e <= n && a <= l && g >= k) : a.Ma(b) || a.Ma(c) || bf(k, m, l, m, d, e, g, h) || bf(l, m, l, n, d, e, g, h) || bf(l, n, k, n, d, e, g, h) || bf(k, n, k, m, d, e, g, h) ? !0 : !1 } function bf(a, b, c, d, e, g, h, k) { return 0 >= cf(a, b, c, d, e, g) * cf(a, b, c, d, h, k) && 0 >= cf(e, g, h, k, a, b) * cf(e, g, h, k, c, d) } function cf(a, b, c, d, e, g) { c -= a; d -= b; a = e - a; b = g - b; g = a * d - b * c; 0 === g && (g = a * c + b * d, 0 < g && (g = (a - c) * c + (b - d) * d, 0 > g && (g = 0))); return 0 > g ? -1 : 0 < g ? 1 : 0 } function df(a) { 0 > a && (a += 360); 360 <= a && (a -= 360); return a } function ef(a, b, c, d) { var e = Math.PI; d || (b *= e / 180, c *= e / 180); d = b < c ? 1 : -1; var g = [], h = e / 2, k = b; for (b = Math.min(2 * e, Math.abs(c - b)); 1E-5 < b;) { c = k + d * Math.min(b, h); var e = (c - k) / 2, l = a * Math.cos(e), m = a * Math.sin(e), n = -m, p = l * l + n * n, q = p + l * l + n * m, p = 4 / 3 * (Math.sqrt(2 * p * q) - q) / (l * m - n * l), m = l - p * n, l = n + p * l, n = -l, p = e + k, e = Math.cos(p), p = Math.sin(p); g.push([0 + a * Math.cos(k), 0 + a * Math.sin(k), 0 + m * e - l * p, 0 + m * p + l * e, 0 + m * e - n * p, 0 + m * p + n * e, 0 + a * Math.cos(c), 0 + a * Math.sin(c)]); b -= Math.abs(c - k); k = c } return g } function jb(a, b, c, d, e, g, h) { c = Math.floor((a - c) / e) * e + c; d = Math.floor((b - d) / g) * g + d; var k = c; c + e - a < e / 2 && (k = c + e); a = d; d + g - b < g / 2 && (a = d + g); h.n(k, a) } function ff(a, b) { var c = Math.max(a, b), d = Math.min(a, b), e = 1, g = 1; do e = c % d, c = g = d, d = e; while (0 < e); return g } function gf(a, b, c, d) { var e = 0 > c, g = 0 > d, h = 0, k = h = 0; a < b ? (h = 1, k = 0) : (h = 0, k = 1); var l = 0, m = 0, n = 0, p = 0, l = 0 === h ? a : b, n = 0 === h ? c : d; if (0 === h ? e : g) n = -n; h = k; m = 0 === h ? a : b; p = 0 === h ? c : d; if (0 === h ? e : g) p = -p; a = a = 0; if (0 < p) if (0 < n) { b = l * l; a = m * m; l *= n; c = m * p; d = -a + c; e = -a + Math.sqrt(l * l + c * c); m = d; for (g = 0; 9999999999 > g; ++g) { m = .5 * (d + e); if (m === d || m === e) break; k = l / (m + b); h = c / (m + a); k = k * k + h * h - 1; if (0 < k) d = m; else if (0 > k) e = m; else break } n = b * n / (m + b) - n; p = a * p / (m + a) - p; a = Math.sqrt(n * n + p * p) } else a = Math.abs(p - m); else p = l * l - m * m, a = l * n, a < p ? (p = a / p, a = m * Math.sqrt(Math.abs(1 - p * p)), n = l * p - n, a = Math.sqrt(n * n + a * a)) : a = Math.abs(n - l); return a } function hf(a) { 1 < arguments.length && z.k("Geometry constructor can take at most one optional argument, the Geometry type."); z.kc(this); this.G = !1; void 0 === a ? a = jf : u && z.Ba(a, hf, hf, "constructor:type"); this.ba = a; this.Gb = this.zb = this.Cc = this.xc = 0; this.Cj = new J(kf); this.mv = this.Cj.H; this.Xu = (new w).freeze(); this.ib = !0; this.bi = Zb; this.ci = ic; this.po = this.ro = NaN; this.Bi = lf } z.ia("Geometry", hf); z.ii(hf); hf.prototype.copy = function() { var a = new hf; a.ba = this.ba; a.xc = this.xc; a.Cc = this.Cc; a.zb = this.zb; a.Gb = this.Gb; for (var b = this.Cj.o, c = b.length, d = a.Cj, e = 0; e < c; e++) { var g = b[e].copy(); d.add(g) } a.mv = this.mv; a.Xu.assign(this.Xu); a.ib = this.ib; a.bi = this.bi.V(); a.ci = this.ci.V(); a.ro = this.ro; a.po = this.po; a.Bi = this.Bi; return a }; var mf; hf.Line = mf = z.s(hf, "Line", 0); var nf; hf.Rectangle = nf = z.s(hf, "Rectangle", 1); var of; hf.Ellipse = of = z.s(hf, "Ellipse", 2); var jf; hf.Path = jf = z.s(hf, "Path", 3); hf.prototype.La = function() { this.freeze(); Object.freeze(this); return this }; hf.prototype.freeze = function() { this.G = !0; var a = this.cc; a.freeze(); for (var a = a.o, b = a.length, c = 0; c < b; c++) a[c].freeze(); return this }; hf.prototype.Wa = function() { Object.isFrozen(this) && z.k("cannot thaw constant: " + this); this.G = !1; var a = this.cc; a.Wa(); for (var a = a.o, b = a.length, c = 0; c < b; c++) a[c].Wa(); return this }; hf.prototype.equalsApprox = hf.prototype.Mc = function(a) { if (!(a instanceof hf)) return !1; if (this.type !== a.type) return this.type === mf && a.type === jf ? pf(this, a) : a.type === mf && this.type === jf ? pf(a, this) : !1; if (this.type === jf) { var b = this.cc.o; a = a.cc.o; var c = b.length; if (c !== a.length) return !1; for (var d = 0; d < c; d++) if (!b[d].Mc(a[d])) return !1; return !0 } return eb(this.Ha, a.Ha) && eb(this.Da, a.Da) && eb(this.L, a.L) && eb(this.M, a.M) }; function pf(a, b) { if (a.type !== mf || b.type !== jf) return !1; if (1 === b.cc.count) { var c = b.cc.ea(0); if (1 === c.Ab.count && eb(a.Ha, c.Ha) && eb(a.Da, c.Da) && (c = c.Ab.ea(0), c.type === qf && eb(a.L, c.L) && eb(a.M, c.M))) return !0 } return !1 } var rf; hf.stringify = rf = function(a) { return a.toString() }; hf.prototype.toString = function(a) { void 0 === a && (a = -1); switch (this.type) { case mf: return 0 > a ? "M" + this.Ha.toString() + " " + this.Da.toString() + "L" + this.L.toString() + " " + this.M.toString() : "M" + this.Ha.toFixed(a) + " " + this.Da.toFixed(a) + "L" + this.L.toFixed(a) + " " + this.M.toFixed(a); case nf: var b = new w(this.Ha, this.Da, 0, 0); b.dG(this.L, this.M, 0, 0); return 0 > a ? "M" + b.x.toString() + " " + b.y.toString() + "H" + b.right.toString() + "V" + b.bottom.toString() + "H" + b.left.toString() + "z" : "M" + b.x.toFixed(a) + " " + b.y.toFixed(a) + "H" + b.right.toFixed(a) + "V" + b.bottom.toFixed(a) + "H" + b.left.toFixed(a) + "z"; case of: b = new w(this.Ha, this.Da, 0, 0); b.dG(this.L, this.M, 0, 0); if (0 > a) { var c = b.left.toString() + " " + (b.y + b.height / 2).toString(), d = b.right.toString() + " " + (b.y + b.height / 2).toString(); return "M" + c + "A" + (b.width / 2).toString() + " " + (b.height / 2).toString() + " 0 0 1 " + d + "A" + (b.width / 2).toString() + " " + (b.height / 2).toString() + " 0 0 1 " + c } c = b.left.toFixed(a) + " " + (b.y + b.height / 2).toFixed(a); d = b.right.toFixed(a) + " " + (b.y + b.height / 2).toFixed(a); return "M" + c + "A" + (b.width / 2).toFixed(a) + " " + (b.height / 2).toFixed(a) + " 0 0 1 " + d + "A" + (b.width / 2).toFixed(a) + " " + (b.height / 2).toFixed(a) + " 0 0 1 " + c; case jf: for (var b = "", c = this.cc.o, d = c.length, e = 0; e < d; e++) { var g = c[e]; 0 < e && (b += " x "); g.Ot && (b += "F "); b += g.toString(a) } return b; default: return this.type.toString() } }; hf.fillPath = function(a) { "string" !== typeof a && z.ic(a, "string", hf, "fillPath:str"); a = a.split(/[Xx]/); for (var b = a.length, c = "", d = 0; d < b; d++) var e = a[d], c = null !== e.match(/[Ff]/) ? 0 === d ? c + e : c + ("X" + (" " === e[0] ? "" : " ") + e) : c + ((0 === d ? "" : "X ") + "F" + (" " === e[0] ? "" : " ") + e); return c }; var sf; hf.parse = sf = function(a, b) { function c() { return m >= t - 1 ? !0 : null !== l[m + 1].match(/[A-Za-z]/) } function d() { m++; return l[m] } function e() { var a = new N(parseFloat(d()), parseFloat(d())); n === n.toLowerCase() && (a.x = s.x + a.x, a.y = s.y + a.y); return a } function g() { return s = e() } function h() { return r = e() } function k() { return "c" !== p.toLowerCase() && "s" !== p.toLowerCase() ? s : new N(2 * s.x - r.x, 2 * s.y - r.y) } void 0 === b && (b = !1); "string" !== typeof a && z.ic(a, "string", hf, "parse:str"); a = a.replace(/,/gm, " "); a = a.replace(/([UuBbMmZzLlHhVvCcSsQqTtAaFf])([UuBbMmZzLlHhVvCcSsQqTtAaFf])/gm, "$1 $2"); a = a.replace(/([UuBbMmZzLlHhVvCcSsQqTtAaFf])([UuBbMmZzLlHhVvCcSsQqTtAaFf])/gm, "$1 $2"); a = a.replace(/([UuBbMmZzLlHhVvCcSsQqTtAaFf])([^\s])/gm, "$1 $2"); a = a.replace(/([^\s])([UuBbMmZzLlHhVvCcSsQqTtAaFf])/gm, "$1 $2"); a = a.replace(/([0-9])([+\-])/gm, "$1 $2"); a = a.replace(/(\.[0-9]*)(\.)/gm, "$1 $2"); a = a.replace(/([Aa](\s+[0-9]+){3})\s+([01])\s*([01])/gm, "$1 $3 $4 "); a = a.replace(/[\s\r\t\n]+/gm, " "); a = a.replace(/^\s+|\s+$/g, ""); for (var l = a.split(" "), m = -1, n = "", p = "", q = new N(0, 0), r = new N(0, 0), s = new N(0, 0), t = l.length, v = z.v(), x = !1, y = !1, A = !0; !(m >= t - 1);) if (p = n, n = d(), "" !== n) switch (n.toUpperCase()) { case "X": A = !0; y = x = !1; break; case "M": var B = g(); null === v.$b || !0 === A ? (R(v, B.x, B.y, x, !1, !y), A = !1) : v.moveTo(B.x, B.y); for (q = s; !c();) B = g(), v.lineTo(B.x, B.y); break; case "L": for (; !c();) B = g(), v.lineTo(B.x, B.y); break; case "H": for (; !c();) s = B = new N((n === n.toLowerCase() ? s.x : 0) + parseFloat(d()), s.y), v.lineTo(s.x, s.y); break; case "V": for (; !c();) s = B = new N(s.x, (n === n.toLowerCase() ? s.y : 0) + parseFloat(d())), v.lineTo(s.x, s.y); break; case "C": for (; !c();) { var L = e(), H = h(), B = g(); S(v, L.x, L.y, H.x, H.y, B.x, B.y) } break; case "S": for (; !c();) L = k(), H = h(), B = g(), S(v, L.x, L.y, H.x, H.y, B.x, B.y); break; case "Q": for (; !c();) H = h(), B = g(), yf(v, H.x, H.y, B.x, B.y); break; case "T": for (; !c();) r = H = k(), B = g(), yf(v, H.x, H.y, B.x, B.y); break; case "B": for (; !c();) { var B = parseFloat(d()), L = parseFloat(d()), H = parseFloat(d()), U = parseFloat(d()), ea = parseFloat(d()), W = ea, P = !1; c() || (W = parseFloat(d()), c() || (P = 0 !== parseFloat(d()))); n === n.toLowerCase() && (H += s.x, U += s.y); v.arcTo(B, L, H, U, ea, W, P) } break; case "A": for (; !c();) L = Math.abs(parseFloat(d())), H = Math.abs(parseFloat(d())), U = parseFloat(d()), ea = !!parseFloat(d()), W = !!parseFloat(d()), B = g(), zf(v, L, H, U, ea, W, B.x, B.y); break; case "Z": B = v.q.cc.o[v.q.cc.length - 1]; T(v); s = q; break; case "F": B = ""; for (L = 1; l[m + L];) if (null !== l[m + L].match(/[Uu]/)) L++; else if (null === l[m + L].match(/[A-Za-z]/)) L++; else { B = l[m + L]; break } B.match(/[Mm]/) ? x = !0 : Af(v); break; case "U": B = ""; for (L = 1; l[m + L];) if (null !== l[m + L].match(/[Ff]/)) L++; else if (null === l[m + L].match(/[A-Za-z]/)) L++; else { B = l[m + L]; break } B.match(/[Mm]/) ? y = !0 : v.gb(!1) } q = v.q; z.u(v); if (b) for (v = q.cc.i; v.next();) B = v.value, B.Ot = !0; return q }; function Bf(a, b) { for (var c = a.length, d = z.O(), e = 0; e < c; e++) { var g = a[e]; d.x = g[0]; d.y = g[1]; b.Cb(d); g[0] = d.x; g[1] = d.y; d.x = g[2]; d.y = g[3]; b.Cb(d); g[2] = d.x; g[3] = d.y; d.x = g[4]; d.y = g[5]; b.Cb(d); g[4] = d.x; g[5] = d.y; d.x = g[6]; d.y = g[7]; b.Cb(d); g[6] = d.x; g[7] = d.y } z.A(d) } hf.prototype.iA = function() { if (this.ib || this.mv !== this.cc.H) return !0; for (var a = this.cc.o, b = a.length, c = 0; c < b; c++) if (a[c].iA()) return !0; return !1 }; hf.prototype.eB = function() { this.ib = !1; this.mv = this.cc.H; for (var a = this.cc.o, b = a.length, c = 0; c < b; c++) a[c].eB() }; hf.prototype.rh = function() { var a = this.Xu; a.Wa(); isNaN(this.ro) || isNaN(this.po) ? a.n(0, 0, 0, 0) : a.n(0, 0, this.ro, this.po); Cf(this, a, !1); Ib(a, 0, 0, 0, 0); a.freeze() }; hf.prototype.computeBoundsWithoutOrigin = hf.prototype.fH = function() { var a = new w; Cf(this, a, !0); return a }; function Cf(a, b, c) { switch (a.type) { case mf: case nf: case of: c ? b.n(a.xc, a.Cc, 0, 0) : Ib(b, a.xc, a.Cc, 0, 0); Ib(b, a.zb, a.Gb, 0, 0); break; case jf: var d = a.cc; a = d.o; for (var d = d.length, e = 0; e < d; e++) { var g = a[e]; c && 0 === e ? b.n(g.Ha, g.Da, 0, 0) : Ib(b, g.Ha, g.Da, 0, 0); for (var h = g.Ab.o, k = h.length, l = g.Ha, m = g.Da, n = 0; n < k; n++) { var p = h[n]; switch (p.type) { case qf: case Df: l = p.L; m = p.M; Ib(b, l, m, 0, 0); break; case Ef: ve(l, m, p.zc, p.Qc, p.Ah, p.Bh, p.L, p.M, .5, b); l = p.L; m = p.M; break; case Ff: ze(l, m, p.zc, p.Qc, p.L, p.M, .5, b); l = p.L; m = p.M; break; case Gf: case Hf: var q = p.type === Gf ? If(p, g) : Jf(p, g, l, m), r = q.length; if (0 === r) { l = p.ra; m = p.za; Ib(b, l, m, 0, 0); break } for (var p = null, s = 0; s < r; s++) p = q[s], ve(p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], .5, b); null !== p && (l = p[6], m = p[7]); break; default: z.k("Unknown Segment type: " + p.type) } } } break; default: z.k("Unknown Geometry type: " + a.type) } } hf.prototype.normalize = hf.prototype.normalize = function() { this.G && z.oa(this); var a = this.fH(); this.offset(-a.x, -a.y); return new N(-a.x, -a.y) }; hf.prototype.offset = hf.prototype.offset = function(a, b) { this.G && z.oa(this); u && (z.p(a, hf, "offset"), z.p(b, hf, "offset")); this.transform(1, 0, 0, 1, a, b); return this }; hf.prototype.scale = hf.prototype.scale = function(a, b) { this.G && z.oa(this); u && (z.p(a, hf, "scale:x"), z.p(b, hf, "scale:y"), 0 === a && z.ka(a, "scale must be non-zero", hf, "scale:x"), 0 === b && z.ka(b, "scale must be non-zero", hf, "scale:y")); this.transform(a, 0, 0, b, 0, 0); return this }; hf.prototype.rotate = hf.prototype.rotate = function(a, b, c) { this.G && z.oa(this); void 0 === b && (b = 0); void 0 === c && (c = 0); u && (z.p(a, hf, "rotate:angle"), z.p(b, hf, "rotate:x"), z.p(c, hf, "rotate:y")); var d = z.Fh(); d.reset(); d.rotate(a, b, c); this.transform(d.m11, d.m12, d.m21, d.m22, d.dx, d.dy); z.jf(d); return this }; hf.prototype.transform = hf.prototype.transform = function(a, b, c, d, e, g) { var h = 0, k = 0; switch (this.type) { case mf: case nf: case of: h = this.xc; k = this.Cc; this.xc = h * a + k * c + e; this.Cc = h * b + k * d + g; h = this.zb; k = this.Gb; this.zb = h * a + k * c + e; this.Gb = h * b + k * d + g; break; case jf: for (var l = this.cc.o, m = l.length, n = 0; n < m; n++) { var p = l[n], h = p.Ha, k = p.Da; p.Ha = h * a + k * c + e; p.Da = h * b + k * d + g; for (var p = p.Ab.o, q = p.length, r = 0; r < q; r++) { var s = p[r]; switch (s.type) { case qf: case Df: h = s.L; k = s.M; s.L = h * a + k * c + e; s.M = h * b + k * d + g; break; case Ef: h = s.zc; k = s.Qc; s.zc = h * a + k * c + e; s.Qc = h * b + k * d + g; h = s.Ah; k = s.Bh; s.Ah = h * a + k * c + e; s.Bh = h * b + k * d + g; h = s.L; k = s.M; s.L = h * a + k * c + e; s.M = h * b + k * d + g; break; case Ff: h = s.zc; k = s.Qc; s.zc = h * a + k * c + e; s.Qc = h * b + k * d + g; h = s.L; k = s.M; s.L = h * a + k * c + e; s.M = h * b + k * d + g; break; case Gf: h = s.ra; k = s.za; s.ra = h * a + k * c + e; s.za = h * b + k * d + g; 0 !== b && (h = 180 * Math.atan2(b, a) / Math.PI, 0 > h && (h += 360), s.Fe += h); 0 > a && (s.Fe = 180 - s.Fe, s.Lf = -s.Lf); 0 > d && (s.Fe = -s.Fe, s.Lf = -s.Lf); s.radiusX *= Math.sqrt(a * a + c * c); void 0 !== s.radiusY && (s.radiusY *= Math.sqrt(b * b + d * d)); break; case Hf: h = s.L; k = s.M; s.L = h * a + k * c + e; s.M = h * b + k * d + g; 0 !== b && (h = 180 * Math.atan2(b, a) / Math.PI, 0 > h && (h += 360), s.wj += h); 0 > a && (s.wj = 180 - s.wj, s.Ol = !s.Ol); 0 > d && (s.wj = -s.wj, s.Ol = !s.Ol); s.radiusX *= Math.sqrt(a * a + c * c); s.radiusY *= Math.sqrt(b * b + d * d); break; default: z.k("Unknown Segment type: " + s.type) } } } } this.ib = !0; return this }; hf.prototype.Ma = function(a, b, c, d) { var e = a.x, g = a.y, h = this.vb.x - 20; a = a.y; for (var k = 0, l = 0, m = 0, n = 0, p = 0, q = 0, r = this.cc.o, s = r.length, t = 0; t < s; t++) { var v = r[t]; if (v.Ot) { if (c && v.Ma(e, g, b)) return !0; for (var x = v.Ab, l = v.Ha, m = v.Da, y = l, A = m, B = x.o, L = 0; L <= x.length; L++) { var H, U; L !== x.length ? (H = B[L], U = H.type, p = H.L, q = H.M) : (U = qf, p = y, q = A); switch (U) { case Df: n = Kf(e, g, h, a, l, m, y, A); if (isNaN(n)) return !0; k += n; y = p; A = q; break; case qf: n = Kf(e, g, h, a, l, m, p, q); if (isNaN(n)) return !0; k += n; break; case Ef: n = Le(l, m, H.zc, H.Qc, H.Ah, H.Bh, p, q, h, a, e, g, .5); k += n; break; case Ff: n = Le(l, m, (l + 2 * H.zc) / 3, (m + 2 * H.Qc) / 3, (2 * H.zc + p) / 3, (2 * H.Qc + q) / 3, p, q, h, a, e, g, .5); k += n; break; case Gf: case Hf: U = H.type === Gf ? If(H, v) : Jf(H, v, l, m); var ea = U.length; if (0 === ea) { n = Kf(e, g, h, a, l, m, H.ra, H.za); if (isNaN(n)) return !0; k += n; break } for (var W = null, P = 0; P < ea; P++) { W = U[P]; if (0 === P) { n = Kf(e, g, h, a, l, m, W[0], W[1]); if (isNaN(n)) return !0; k += n } n = Le(W[0], W[1], W[2], W[3], W[4], W[5], W[6], W[7], h, a, e, g, .5); k += n } null !== W && (p = W[6], q = W[7]); break; default: z.k("Unknown Segment type: " + H.type) } l = p; m = q } if (0 !== k) return !0; k = 0 } else if (v.Ma(e, g, d ? b : b + 2)) return !0 } return 0 !== k }; function Kf(a, b, c, d, e, g, h, k) { if (te(e, g, h, k, .05, a, b)) return NaN; var l = (a - c) * (g - k); if (0 === l) return 0; var m = ((a * d - b * c) * (e - h) - (a - c) * (e * k - g * h)) / l; b = (a * d - b * c) * (g - k) / l; if (m >= a) return 0; if ((e > h ? e - h : h - e) < (g > k ? g - k : k - g)) { if (e = a = 0, g < k ? (a = g, e = k) : (a = k, e = g), b < a || b > e) return 0 } else if (e < h ? (a = e, e = h) : a = h, m < a || m > e) return 0; return 0 < l ? 1 : -1 } function Nf(a, b, c, d) { a = a.cc.o; for (var e = a.length, g = 0; g < e; g++) if (a[g].Ma(b, c, d)) return !0; return !1 } hf.prototype.getPointAlongPath = function(a) { (0 > a || 1 < a) && z.ka(a, "0 <= fraction <= 1", hf, "getPointAlongPath:fraction"); var b = this.cc.first(), c = z.rb(), d = []; d.push(b.Ha); d.push(b.Da); for (var e = b.Ha, g = b.Da, h = e, k = g, l = b.Ab.o, m = l.length, n = 0; n < m; n++) { var p = l[n]; switch (p.ba) { case Df: c.push(d); d = []; d.push(p.L); d.push(p.M); e = p.L; g = p.M; h = e; k = g; break; case qf: d.push(p.L); d.push(p.M); e = p.L; g = p.M; break; case Ef: we(e, g, p.Cd, p.Ne, p.mh, p.yg, p.zb, p.Gb, .5, d); e = p.L; g = p.M; break; case Ff: Je(e, g, p.Cd, p.Ne, p.zb, p.Gb, .5, d); e = p.L; g = p.M; break; case Gf: var q = If(p, b), r = q.length; if (0 === r) { d.push(p.ra); d.push(p.za); e = p.ra; g = p.za; break } for (var s = 0; s < r; s++) { var t = q[s]; we(e, g, t[2], t[3], t[4], t[5], t[6], t[7], .5, d); e = t[6]; g = t[7] } break; case Hf: q = Jf(p, b, e, g); r = q.length; for (s = 0; s < r; s++) t = q[s], we(e, g, t[2], t[3], t[4], t[5], t[6], t[7], .5, d), e = t[6], g = t[7]; break; default: z.k("Segment not of valid type") } p.Rh && (d.push(h), d.push(k)) } c.push(d); q = 0; h = c.length; for (k = d = b = 0; k < h; k++) for (l = c[k], m = l.length, n = 0; n < m; n += 2) e = l[n], g = l[n + 1], 0 !== n && (p = Math.sqrt(wb(b, d, e, g)), q += p), b = e, d = g; a *= q; for (k = q = 0; k < h; k++) for (l = c[k], m = l.length, n = 0; n < m; n++) { e = l[n]; g = l[n + 1]; if (0 !== n) { p = Math.sqrt(wb(b, d, e, g)); if (q + p > a) return n = (a - q) / p, z.xa(c), new N(b + (e - b) * n, d + (g - d) * n); q += p } b = e; d = g } z.xa(c); return null }; z.defineProperty(hf, { type: "type" }, function() { return this.ba }, function(a) { this.ba !== a && (u && z.Ba(a, hf, hf, "type"), this.G && z.oa(this, a), this.ba = a, this.ib = !0) }); z.defineProperty(hf, { Ha: "startX" }, function() { return this.xc }, function(a) { this.xc !== a && (u && z.p(a, hf, "startX"), this.G && z.oa(this, a), this.xc = a, this.ib = !0) }); z.defineProperty(hf, { Da: "startY" }, function() { return this.Cc }, function(a) { this.Cc !== a && (u && z.p(a, hf, "startY"), this.G && z.oa(this, a), this.Cc = a, this.ib = !0) }); z.defineProperty(hf, { L: "endX" }, function() { return this.zb }, function(a) { this.zb !== a && (u && z.p(a, hf, "endX"), this.G && z.oa(this, a), this.zb = a, this.ib = !0) }); z.defineProperty(hf, { M: "endY" }, function() { return this.Gb }, function(a) { this.Gb !== a && (u && z.p(a, hf, "endY"), this.G && z.oa(this, a), this.Gb = a, this.ib = !0) }); z.defineProperty(hf, { cc: "figures" }, function() { return this.Cj }, function(a) { this.Cj !== a && (u && z.l(a, J, hf, "figures"), this.G && z.oa(this, a), this.Cj = a, this.ib = !0) }); hf.prototype.add = hf.prototype.add = function(a) { this.Cj.add(a); return this }; hf.prototype.setSpots = function(a, b, c, d, e, g, h, k) { this.G && z.oa(this); this.bi = (new Q(a, b, e, g)).freeze(); this.ci = (new Q(c, d, h, k)).freeze(); return this }; z.defineProperty(hf, { C: "spot1" }, function() { return this.bi }, function(a) { u && z.l(a, Q, hf, "spot1"); this.G && z.oa(this, a); this.bi = a.V() }); z.defineProperty(hf, { D: "spot2" }, function() { return this.ci }, function(a) { u && z.l(a, Q, hf, "spot2"); this.G && z.oa(this, a); this.ci = a.V() }); z.defineProperty(hf, { Xd: "defaultStretch" }, function() { return this.Bi }, function(a) { u && z.Ba(a, O, hf, "stretch"); this.G && z.oa(this, a); this.Bi = a }); z.w(hf, { vb: "bounds" }, function() { this.iA() && (this.eB(), this.rh()); return this.Xu }); function kf(a, b, c, d) { z.kc(this); this.G = !1; void 0 === c && (c = !0); this.jm = c; void 0 === d && (d = !0); this.so = d; void 0 !== a ? (u && z.p(a, kf, "sx"), this.xc = a) : this.xc = 0; void 0 !== b ? (u && z.p(b, kf, "sy"), this.Cc = b) : this.Cc = 0; this.Lo = new J(Of); this.nw = this.Lo.H; this.ib = !0 } z.ia("PathFigure", kf); z.ii(kf); kf.prototype.copy = function() { var a = new kf; a.jm = this.jm; a.so = this.so; a.xc = this.xc; a.Cc = this.Cc; for (var b = this.Lo.o, c = b.length, d = a.Lo, e = 0; e < c; e++) { var g = b[e].copy(); d.add(g) } a.nw = this.nw; a.ib = this.ib; return a }; kf.prototype.equalsApprox = kf.prototype.Mc = function(a) { if (!(a instanceof kf && eb(this.Ha, a.Ha) && eb(this.Da, a.Da))) return !1; var b = this.Ab.o; a = a.Ab.o; var c = b.length; if (c !== a.length) return !1; for (var d = 0; d < c; d++) if (!b[d].Mc(a[d])) return !1; return !0 }; f = kf.prototype; f.toString = function(a) { void 0 === a && (a = -1); for (var b = 0 > a ? "M" + this.Ha.toString() + " " + this.Da.toString() : "M" + this.Ha.toFixed(a) + " " + this.Da.toFixed(a), c = this.Ab.o, d = c.length, e = 0; e < d; e++) b += " " + c[e].toString(a); return b }; f.freeze = function() { this.G = !0; var a = this.Ab; a.freeze(); for (var b = a.o, a = a.length, c = 0; c < a; c++) b[c].freeze(); return this }; f.Wa = function() { this.G = !1; var a = this.Ab; a.Wa(); for (var a = a.o, b = a.length, c = 0; c < b; c++) a[c].Wa(); return this }; f.iA = function() { if (this.ib) return !0; var a = this.Ab; if (this.nw !== a.H) return !0; for (var a = a.o, b = a.length, c = 0; c < b; c++) if (a[c].ib) return !0; return !1 }; f.eB = function() { this.ib = !1; var a = this.Ab; this.nw = a.H; for (var a = a.o, b = a.length, c = 0; c < b; c++) { var d = a[c]; d.ib = !1; d.mg = null } }; z.defineProperty(kf, { Ot: "isFilled" }, function() { return this.jm }, function(a) { u && z.g(a, "boolean", kf, "isFilled"); this.G && z.oa(this, a); this.jm = a }); z.defineProperty(kf, { sk: "isShadowed" }, function() { return this.so }, function(a) { u && z.g(a, "boolean", kf, "isShadowed"); this.G && z.oa(this, a); this.so = a }); z.defineProperty(kf, { Ha: "startX" }, function() { return this.xc }, function(a) { u && z.p(a, kf, "startX"); this.G && z.oa(this, a); this.xc = a; this.ib = !0 }); z.defineProperty(kf, { Da: "startY" }, function() { return this.Cc }, function(a) { u && z.p(a, kf, "startY"); this.G && z.oa(this, a); this.Cc = a; this.ib = !0 }); z.defineProperty(kf, { Ab: "segments" }, function() { return this.Lo }, function(a) { u && z.l(a, J, kf, "segments"); this.G && z.oa(this, a); this.Lo = a; this.ib = !0 }); kf.prototype.add = kf.prototype.add = function(a) { this.Lo.add(a); return this }; kf.prototype.Ma = function(a, b, c) { for (var d = this.Ha, e = this.Da, g = d, h = e, k = this.Ab.o, l = k.length, m = 0; m < l; m++) { var n = k[m]; switch (n.type) { case Df: g = n.L; h = n.M; d = n.L; e = n.M; break; case qf: if (te(d, e, n.L, n.M, c, a, b)) return !0; d = n.L; e = n.M; break; case Ef: if (ue(d, e, n.zc, n.Qc, n.Ah, n.Bh, n.L, n.M, .5, a, b, c)) return !0; d = n.L; e = n.M; break; case Ff: if (ye(d, e, n.zc, n.Qc, n.L, n.M, .5, a, b, c)) return !0; d = n.L; e = n.M; break; case Gf: case Hf: var p = n.type === Gf ? If(n, this) : Jf(n, this, d, e), q = p.length; if (0 === q) { if (te(d, e, n.ra, n.za, c, a, b)) return !0; d = n.ra; e = n.za; break } for (var r = null, s = 0; s < q; s++) if (r = p[s], 0 === s && te(d, e, r[0], r[1], c, a, b) || ue(r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], .5, a, b, c)) return !0; null !== r && (d = r[6], e = r[7]); break; default: z.k("Unknown Segment type: " + n.type) } if (n.gx && (d !== g || e !== h) && te(d, e, g, h, c, a, b)) return !0 } return !1 }; function Of(a, b, c, d, e, g, h, k) { z.kc(this); this.G = !1; void 0 === a ? a = qf : u && z.Ba(a, Of, Of, "constructor:type"); this.ba = a; void 0 !== b ? (u && z.p(b, Of, "ex"), this.zb = b) : this.zb = 0; void 0 !== c ? (u && z.p(c, Of, "ey"), this.Gb = c) : this.Gb = 0; void 0 === d && (d = 0); void 0 === e && (e = 0); void 0 === g && (g = 0); void 0 === h && (h = 0); a === Hf ? (a = g % 360, 0 > a && (a += 360), this.Cd = a, this.Ne = 0, u && z.p(d, Of, "x1"), this.mh = Math.max(d, 0), u && z.p(e, Of, "y1"), this.yg = Math.max(e, 0), this.xo = "boolean" === typeof h ? !!h : !1, this.Ln = !!k) : (u && z.p(d, Of, "x1"), this.Cd = d, u && z.p(e, Of, "y1"), this.Ne = e, u && z.p(g, Of, "x2"), a === Gf && (g = Math.max(g, 0)), this.mh = g, "number" === typeof h ? (a === Gf && (h = Math.max(h, 0)), this.yg = h) : this.yg = 0, this.Ln = this.xo = !1); this.Rh = !1; this.ib = !0; this.mg = null } z.ia("PathSegment", Of); z.ii(Of); Of.prototype.copy = function() { var a = new Of; a.ba = this.ba; a.zb = this.zb; a.Gb = this.Gb; a.Cd = this.Cd; a.Ne = this.Ne; a.mh = this.mh; a.yg = this.yg; a.xo = this.xo; a.Ln = this.Ln; a.Rh = this.Rh; a.ib = this.ib; return a }; Of.prototype.equalsApprox = Of.prototype.Mc = function(a) { if (!(a instanceof Of) || this.type !== a.type || this.gx !== a.gx) return !1; switch (this.type) { case Df: case qf: return eb(this.L, a.L) && eb(this.M, a.M); case Ef: return eb(this.L, a.L) && eb(this.M, a.M) && eb(this.zc, a.zc) && eb(this.Qc, a.Qc) && eb(this.Ah, a.Ah) && eb(this.Bh, a.Bh); case Ff: return eb(this.L, a.L) && eb(this.M, a.M) && eb(this.zc, a.zc) && eb(this.Qc, a.Qc); case Gf: return eb(this.Fe, a.Fe) && eb(this.Lf, a.Lf) && eb(this.ra, a.ra) && eb(this.za, a.za) && eb(this.radiusX, a.radiusX) && eb(this.radiusY, a.radiusY); case Hf: return this.Ol === a.Ol && this.kx === a.kx && eb(this.wj, a.wj) && eb(this.L, a.L) && eb(this.M, a.M) && eb(this.radiusX, a.radiusX) && eb(this.radiusY, a.radiusY); default: return !1 } }; Of.prototype.toString = function(a) { void 0 === a && (a = -1); var b = ""; switch (this.type) { case Df: b = 0 > a ? "M" + this.L.toString() + " " + this.M.toString() : "M" + this.L.toFixed(a) + " " + this.M.toFixed(a); break; case qf: b = 0 > a ? "L" + this.L.toString() + " " + this.M.toString() : "L" + this.L.toFixed(a) + " " + this.M.toFixed(a); break; case Ef: b = 0 > a ? "C" + this.zc.toString() + " " + this.Qc.toString() + " " + this.Ah.toString() + " " + this.Bh.toString() + " " + this.L.toString() + " " + this.M.toString() : "C" + this.zc.toFixed(a) + " " + this.Qc.toFixed(a) + " " + this.Ah.toFixed(a) + " " + this.Bh.toFixed(a) + " " + this.L.toFixed(a) + " " + this.M.toFixed(a); break; case Ff: b = 0 > a ? "Q" + this.zc.toString() + " " + this.Qc.toString() + " " + this.L.toString() + " " + this.M.toString() : "Q" + this.zc.toFixed(a) + " " + this.Qc.toFixed(a) + " " + this.L.toFixed(a) + " " + this.M.toFixed(a); break; case Gf: b = 0 > a ? "B" + this.Fe.toString() + " " + this.Lf.toString() + " " + this.ra.toString() + " " + this.za.toString() + " " + this.radiusX : "B" + this.Fe.toFixed(a) + " " + this.Lf.toFixed(a) + " " + this.ra.toFixed(a) + " " + this.za.toFixed(a) + " " + this.radiusX; break; case Hf: b = 0 > a ? "A" + this.radiusX.toString() + " " + this.radiusY.toString() + " " + this.wj.toString() + " " + (this.kx ? 1 : 0) + " " + (this.Ol ? 1 : 0) + " " + this.L.toString() + " " + this.M.toString() : "A" + this.radiusX.toFixed(a) + " " + this.radiusY.toFixed(a) + " " + this.wj.toFixed(a) + " " + (this.kx ? 1 : 0) + " " + (this.Ol ? 1 : 0) + " " + this.L.toFixed(a) + " " + this.M.toFixed(a); break; default: b = this.type.toString() } return b + (this.Rh ? "z" : "") }; var Df; Of.Move = Df = z.s(Of, "Move", 0); var qf; Of.Line = qf = z.s(Of, "Line", 1); var Ef; Of.Bezier = Ef = z.s(Of, "Bezier", 2); var Ff; Of.QuadraticBezier = Ff = z.s(Of, "QuadraticBezier", 3); var Gf; Of.Arc = Gf = z.s(Of, "Arc", 4); var Hf; Of.SvgArc = Hf = z.s(Of, "SvgArc", 4); Of.prototype.freeze = function() { this.G = !0; return this }; Of.prototype.Wa = function() { this.G = !1; return this }; Of.prototype.close = Of.prototype.close = function() { this.Rh = !0; return this }; function If(a, b) { if (null !== a.mg && !1 === b.ib) return a.mg; var c = a.radiusX, d = a.radiusY; void 0 === d && (d = c); if (0 === c || 0 === d) return a.mg = [], a.mg; var e = a.Cd, g = a.Ne, h = ef(c < d ? c : d, a.Fe, a.Fe + a.Lf, !1); if (c !== d) { var k = z.Fh(); k.reset(); c < d ? k.scale(1, d / c) : k.scale(c / d, 1); Bf(h, k); z.jf(k) } c = h.length; for (d = 0; d < c; d++) k = h[d], k[0] += e, k[1] += g, k[2] += e, k[3] += g, k[4] += e, k[5] += g, k[6] += e, k[7] += g; a.mg = h; return a.mg } function Jf(a, b, c, d) { function e(a, b, c, d) { return (a * d < b * c ? -1 : 1) * Math.acos((a * c + b * d) / (Math.sqrt(a * a + b * b) * Math.sqrt(c * c + d * d))) } if (null !== a.mg && !1 === b.ib) return a.mg; b = a.mh; var g = a.yg; if (0 === b || 0 === g) return a.mg = [], a.mg; var h = Math.PI / 180 * a.Cd, k = a.xo, l = a.Ln, m = a.zb, n = a.Gb, p = Math.cos(h), q = Math.sin(h), r = p * (c - m) / 2 + q * (d - n) / 2, h = -q * (c - m) / 2 + p * (d - n) / 2, s = r * r / (b * b) + h * h / (g * g); 1 < s && (b *= Math.sqrt(s), g *= Math.sqrt(s)); s = (k === l ? -1 : 1) * Math.sqrt((b * b * g * g - b * b * h * h - g * g * r * r) / (b * b * h * h + g * g * r * r)); isNaN(s) && (s = 0); k = s * b * h / g; s = s * -g * r / b; isNaN(k) && (k = 0); isNaN(s) && (s = 0); c = (c + m) / 2 + p * k - q * s; d = (d + n) / 2 + q * k + p * s; n = e(1, 0, (r - k) / b, (h - s) / g); p = (r - k) / b; m = (h - s) / g; r = (-r - k) / b; k = (-h - s) / g; h = e(p, m, r, k); r = (p * r + m * k) / (Math.sqrt(p * p + m * m) * Math.sqrt(r * r + k * k)); - 1 >= r ? h = Math.PI : 1 <= r && (h = 0); !l && 0 < h && (h -= 2 * Math.PI); l && 0 > h && (h += 2 * Math.PI); l = b > g ? 1 : b / g; r = b > g ? g / b : 1; b = ef(b > g ? b : g, n, n + h, !0); g = z.Fh(); g.reset(); g.translate(c, d); g.rotate(a.Cd, 0, 0); g.scale(l, r); Bf(b, g); z.jf(g); a.mg = b; return a.mg } z.defineProperty(Of, { gx: "isClosed" }, function() { return this.Rh }, function(a) { this.Rh !== a && (this.Rh = a, this.ib = !0) }); z.defineProperty(Of, { type: "type" }, function() { return this.ba }, function(a) { u && z.Ba(a, Of, Of, "type"); this.G && z.oa(this, a); this.ba = a; this.ib = !0 }); z.defineProperty(Of, { L: "endX" }, function() { return this.zb }, function(a) { u && z.p(a, Of, "endX"); this.G && z.oa(this, a); this.zb = a; this.ib = !0 }); z.defineProperty(Of, { M: "endY" }, function() { return this.Gb }, function(a) { u && z.p(a, Of, "endY"); this.G && z.oa(this, a); this.Gb = a; this.ib = !0 }); z.defineProperty(Of, { zc: "point1X" }, function() { return this.Cd }, function(a) { u && z.p(a, Of, "point1X"); this.G && z.oa(this, a); this.Cd = a; this.ib = !0 }); z.defineProperty(Of, { Qc: "point1Y" }, function() { return this.Ne }, function(a) { u && z.p(a, Of, "point1Y"); this.G && z.oa(this, a); this.Ne = a; this.ib = !0 }); z.defineProperty(Of, { Ah: "point2X" }, function() { return this.mh }, function(a) { u && z.p(a, Of, "point2X"); this.G && z.oa(this, a); this.mh = a; this.ib = !0 }); z.defineProperty(Of, { Bh: "point2Y" }, function() { return this.yg }, function(a) { u && z.p(a, Of, "point2Y"); this.G && z.oa(this, a); this.yg = a; this.ib = !0 }); z.defineProperty(Of, { ra: "centerX" }, function() { return this.Cd }, function(a) { u && z.p(a, Of, "centerX"); this.G && z.oa(this, a); this.Cd = a; this.ib = !0 }); z.defineProperty(Of, { za: "centerY" }, function() { return this.Ne }, function(a) { u && z.p(a, Of, "centerY"); this.G && z.oa(this, a); this.Ne = a; this.ib = !0 }); z.defineProperty(Of, { radiusX: "radiusX" }, function() { return this.mh }, function(a) { u && z.p(a, Of, "radiusX"); 0 > a && z.ka(a, ">= zero", Of, "radiusX"); this.G && z.oa(this, a); this.mh = a; this.ib = !0 }); z.defineProperty(Of, { radiusY: "radiusY" }, function() { return this.yg }, function(a) { u && z.p(a, Of, "radiusY"); 0 > a && z.ka(a, ">= zero", Of, "radiusY"); this.G && z.oa(this, a); this.yg = a; this.ib = !0 }); z.defineProperty(Of, { Fe: "startAngle" }, function() { return this.zb }, function(a) { this.zb !== a && (this.G && z.oa(this, a), u && z.p(a, Of, "startAngle"), a %= 360, 0 > a && (a += 360), this.zb = a, this.ib = !0) }); z.defineProperty(Of, { Lf: "sweepAngle" }, function() { return this.Gb }, function(a) { u && z.p(a, Of, "sweepAngle"); this.G && z.oa(this, a); 360 < a && (a = 360); - 360 > a && (a = -360); this.Gb = a; this.ib = !0 }); z.defineProperty(Of, { Ol: "isClockwiseArc" }, function() { return this.Ln }, function(a) { this.G && z.oa(this, a); this.Ln = a; this.ib = !0 }); z.defineProperty(Of, { kx: "isLargeArc" }, function() { return this.xo }, function(a) { this.G && z.oa(this, a); this.xo = a; this.ib = !0 }); z.defineProperty(Of, { wj: "xAxisRotation" }, function() { return this.Cd }, function(a) { u && z.p(a, Of, "xAxisRotation"); a %= 360; 0 > a && (a += 360); this.G && z.oa(this, a); this.Cd = a; this.ib = !0 }); function Pf() { this.Z = null; this.uz = (new N(0, 0)).freeze(); this.By = (new N(0, 0)).freeze(); this.Tu = this.Pv = 0; this.Uu = 1; this.Dv = ""; this.xw = this.jv = !1; this.fv = this.Wu = 0; this.yj = this.qv = this.Av = !1; this.Yq = null; this.vw = 0; this.Ag = this.uw = null } z.ia("InputEvent", Pf); Pf.prototype.copy = function() { var a = new Pf; a.Z = this.Z; a.uz.assign(this.te); a.By.assign(this.ga); a.Pv = this.Pv; a.Tu = this.Tu; a.Uu = this.Uu; a.Dv = this.Dv; a.jv = this.jv; a.xw = this.xw; a.Wu = this.Wu; a.fv = this.fv; a.Av = this.Av; a.qv = this.qv; a.yj = this.yj; a.Yq = this.Yq; a.vw = this.vw; a.uw = this.uw; a.Ag = this.Ag; return a }; Pf.prototype.toString = function() { var a = "^"; 0 !== this.xd && (a += "M:" + this.xd); 0 !== this.button && (a += "B:" + this.button); "" !== this.key && (a += "K:" + this.key); 0 !== this.Pe && (a += "C:" + this.Pe); 0 !== this.Cl && (a += "D:" + this.Cl); this.Gc && (a += "h"); this.bubbles && (a += "b"); null !== this.ga && (a += "@" + this.ga.toString()); return a }; z.defineProperty(Pf, { h: "diagram" }, function() { return this.Z }, function(a) { this.Z = a }); z.defineProperty(Pf, { te: "viewPoint" }, function() { return this.uz }, function(a) { z.l(a, N, Pf, "viewPoint"); this.uz.assign(a) }); z.defineProperty(Pf, { ga: "documentPoint" }, function() { return this.By }, function(a) { z.l(a, N, Pf, "documentPoint"); this.By.assign(a) }); z.defineProperty(Pf, { xd: "modifiers" }, function() { return this.Pv }, function(a) { this.Pv = a }); z.defineProperty(Pf, { button: "button" }, function() { return this.Tu }, function(a) { this.Tu = a; if (null === this.event) switch (a) { case 0: this.buttons = 1; break; case 1: this.buttons = 4; break; case 2: this.buttons = 2 } }); z.defineProperty(Pf, { buttons: "buttons" }, function() { return this.Uu }, function(a) { this.Uu = a }); z.defineProperty(Pf, { key: "key" }, function() { return this.Dv }, function(a) { this.Dv = a }); z.defineProperty(Pf, { El: "down" }, function() { return this.jv }, function(a) { this.jv = a }); z.defineProperty(Pf, { up: "up" }, function() { return this.xw }, function(a) { this.xw = a }); z.defineProperty(Pf, { Pe: "clickCount" }, function() { return this.Wu }, function(a) { this.Wu = a }); z.defineProperty(Pf, { Cl: "delta" }, function() { return this.fv }, function(a) { this.fv = a }); z.defineProperty(Pf, { Qt: "isMultiTouch" }, function() { return this.Av }, function(a) { this.Av = a }); z.defineProperty(Pf, { Gc: "handled" }, function() { return this.qv }, function(a) { this.qv = a }); z.defineProperty(Pf, { bubbles: "bubbles" }, function() { return this.yj }, function(a) { this.yj = a }); z.defineProperty(Pf, { event: "event" }, function() { return this.Yq }, function(a) { this.Yq = a }); z.w(Pf, { lj: "isTouchEvent" }, function() { var a = window.TouchEvent; return a && this.event instanceof a ? !0 : (a = window.PointerEvent) && this.event instanceof a && "touch" === this.event.pointerType }); z.w(Pf, { rk: "isMac" }, function() { return z.rk }); z.defineProperty(Pf, { timestamp: "timestamp" }, function() { return this.vw }, function(a) { this.vw = a }); z.defineProperty(Pf, { Sg: "targetDiagram" }, function() { return this.uw }, function(a) { this.uw = a }); z.defineProperty(Pf, { Ge: "targetObject" }, function() { return this.Ag }, function(a) { this.Ag = a }); z.defineProperty(Pf, { control: "control" }, function() { return 0 !== (this.xd & 1) }, function(a) { this.xd = a ? this.xd | 1 : this.xd & -2 }); z.defineProperty(Pf, { shift: "shift" }, function() { return 0 !== (this.xd & 4) }, function(a) { this.xd = a ? this.xd | 4 : this.xd & -5 }); z.defineProperty(Pf, { alt: "alt" }, function() { return 0 !== (this.xd & 2) }, function(a) { this.xd = a ? this.xd | 2 : this.xd & -3 }); z.defineProperty(Pf, { $t: "meta" }, function() { return 0 !== (this.xd & 8) }, function(a) { this.xd = a ? this.xd | 8 : this.xd & -9 }); z.defineProperty(Pf, { left: "left" }, function() { var a = this.event; return null !== a && a instanceof MouseEvent && ("mousedown" === a.type || "mouseup" === a.type) ? 0 === this.button : 0 !== (this.buttons & 1) }, function(a) { this.buttons = a ? this.buttons | 1 : this.buttons & -2 }); z.defineProperty(Pf, { right: "right" }, function() { var a = this.event; return null !== a && a instanceof MouseEvent && ("mousedown" === a.type || "mouseup" === a.type) ? 2 === this.button : 0 !== (this.buttons & 2) }, function(a) { this.buttons = a ? this.buttons | 2 : this.buttons & -3 }); z.defineProperty(Pf, { VK: "middle" }, function() { var a = this.event; return null !== a && a instanceof MouseEvent && ("mousedown" === a.type || "mouseup" === a.type) ? 1 === this.button : 0 !== (this.buttons & 4) }, function(a) { this.buttons = a ? this.buttons | 4 : this.buttons & -5 }); function Qf() { this.Z = null; this.Ub = ""; this.Zv = this.sw = null; this.Vu = !1 } z.ia("DiagramEvent", Qf); Qf.prototype.copy = function() { var a = new Qf; a.Z = this.Z; a.Ub = this.Ub; a.sw = this.sw; a.Zv = this.Zv; a.Vu = this.Vu; return a }; Qf.prototype.toString = function() { var a = "*" + this.name; this.cancel && (a += "x"); null !== this.WA && (a += ":" + this.WA.toString()); null !== this.CA && (a += "(" + this.CA.toString() + ")"); return a }; z.defineProperty(Qf, { h: "diagram" }, function() { return this.Z }, function(a) { this.Z = a }); z.defineProperty(Qf, { name: "name" }, function() { return this.Ub }, function(a) { this.Ub = a }); z.defineProperty(Qf, { WA: "subject" }, function() { return this.sw }, function(a) { this.sw = a }); z.defineProperty(Qf, { CA: "parameter" }, function() { return this.Zv }, function(a) { this.Zv = a }); z.defineProperty(Qf, { cancel: "cancel" }, function() { return this.Vu }, function(a) { this.Vu = a }); function Rf() { this.vq = Sf; this.Cm = this.Ov = ""; this.Wr = this.Xr = this.$r = this.as = this.Zr = this.Z = this.ie = null } z.ia("ChangedEvent", Rf); var Tf; Rf.Transaction = Tf = z.s(Rf, "Transaction", -1); var Sf; Rf.Property = Sf = z.s(Rf, "Property", 0); var Uf; Rf.Insert = Uf = z.s(Rf, "Insert", 1); var Vf; Rf.Remove = Vf = z.s(Rf, "Remove", 2); Rf.prototype.clear = Rf.prototype.clear = function() { this.Wr = this.Xr = this.$r = this.as = this.Zr = this.Z = this.ie = null }; Rf.prototype.copy = function() { var a = new Rf; a.vq = this.vq; a.Ov = this.Ov; a.Cm = this.Cm; a.ie = this.ie; a.Z = this.Z; a.Zr = this.Zr; var b = this.as; a.as = z.Za(b) && "function" === typeof b.V ? b.V() : b; b = this.$r; a.$r = z.Za(b) && "function" === typeof b.V ? b.V() : b; b = this.Xr; a.Xr = z.Za(b) && "function" === typeof b.V ? b.V() : b; b = this.Wr; a.Wr = z.Za(b) && "function" === typeof b.V ? b.V() : b; return a }; Rf.prototype.toString = function() { var a = "", a = this.Dc === Tf ? a + "* " : this.Dc === Sf ? a + (null !== this.ha ? "!m" : "!d") : a + ((null !== this.ha ? "!m" : "!d") + this.Dc); this.propertyName && "string" === typeof this.propertyName && (a += " " + this.propertyName); this.rf && this.rf !== this.propertyName && (a += " " + this.rf); a += ": "; this.Dc === Tf ? null !== this.oldValue && (a += " " + this.oldValue) : (null !== this.object && (a += ka(this.object)), null !== this.oldValue && (a += " old: " + ka(this.oldValue)), null !== this.Mg && (a += " " + this.Mg), null !== this.newValue && (a += " new: " + ka(this.newValue)), null !== this.Kg && (a += " " + this.Kg)); return a }; Rf.prototype.getValue = Rf.prototype.na = function(a) { return a ? this.oldValue : this.newValue }; Rf.prototype.getParam = function(a) { return a ? this.Mg : this.Kg }; Rf.prototype.canUndo = Rf.prototype.canUndo = function() { return null !== this.ha || null !== this.h ? !0 : !1 }; Rf.prototype.undo = Rf.prototype.undo = function() { this.canUndo() && (null !== this.ha ? this.ha.Vm(this, !0) : null !== this.h && this.h.Vm(this, !0)) }; Rf.prototype.canRedo = Rf.prototype.canRedo = function() { return null !== this.ha || null !== this.h ? !0 : !1 }; Rf.prototype.redo = Rf.prototype.redo = function() { this.canRedo() && (null !== this.ha ? this.ha.Vm(this, !1) : null !== this.h && this.h.Vm(this, !1)) }; z.defineProperty(Rf, { ha: "model" }, function() { return this.ie }, function(a) { this.ie = a }); z.defineProperty(Rf, { h: "diagram" }, function() { return this.Z }, function(a) { this.Z = a }); z.defineProperty(Rf, { Dc: "change" }, function() { return this.vq }, function(a) { u && z.Ba(a, Rf, Rf, "change"); this.vq = a }); z.defineProperty(Rf, { rf: "modelChange" }, function() { return this.Ov }, function(a) { u && z.g(a, "string", Rf, "modelChange"); this.Ov = a }); z.defineProperty(Rf, { propertyName: "propertyName" }, function() { return this.Cm }, function(a) { u && "string" !== typeof a && z.g(a, "function", Rf, "propertyName"); this.Cm = a }); z.w(Rf, { TE: "isTransactionFinished" }, function() { return this.vq === Tf && ("CommittedTransaction" === this.Cm || "FinishedUndo" === this.Cm || "FinishedRedo" === this.Cm) }); z.defineProperty(Rf, { object: "object" }, function() { return this.Zr }, function(a) { this.Zr = a }); z.defineProperty(Rf, { oldValue: "oldValue" }, function() { return this.as }, function(a) { this.as = a }); z.defineProperty(Rf, { Mg: "oldParam" }, function() { return this.$r }, function(a) { this.$r = a }); z.defineProperty(Rf, { newValue: "newValue" }, function() { return this.Xr }, function(a) { this.Xr = a }); z.defineProperty(Rf, { Kg: "newParam" }, function() { return this.Wr }, function(a) { this.Wr = a }); function M(a) { 1 < arguments.length && z.k("Model constructor can only take one optional argument, the Array of node data."); z.kc(this); this.Kq = this.Ub = ""; this.Gi = !1; this.az = {}; this.wf = []; this.vc = new na(null, Object); this.Vj = "key"; this.Rn = this.Ao = null; this.Cq = this.Zu = !1; this.nq = null; this.xm = "category"; this.ng = new na(null, K); this.Pj = null; this.Vi = !1; this.sz = null; this.pa = new Wf; void 0 !== a && (this.gg = a) } z.ia("Model", M); M.prototype.cloneProtected = function(a) { a.Ub = this.Ub; a.Kq = this.Kq; a.Gi = this.Gi; a.Vj = this.Vj; a.Ao = this.Ao; a.Rn = this.Rn; a.FJ = this.Zu; a.Cq = this.Cq; a.nq = this.nq; a.xm = this.xm }; M.prototype.copy = function() { var a = new this.constructor; this.cloneProtected(a); return a }; M.prototype.clear = M.prototype.clear = function() { this.wf = []; this.vc.clear(); this.ng.clear(); this.pa.clear() }; f = M.prototype; f.toString = function(a) { void 0 === a && (a = 0); if (1 < a) return this.ZA(); var b = ("" !== this.name ? this.name : "") + " Model"; if (0 < a) { b += "\n node data:"; a = this.gg; for (var c = z.bb(a), d = 0; d < c; d++) var e = z.Ya(a, d), b = b + (" " + this.pb(e) + ":" + ka(e)) } return b }; f.Cn = function() { var a = ""; "" !== this.name && (a += ',\n "name": ' + this.quote(this.name)); "" !== this.Al && (a += ',\n "dataFormat": ' + this.quote(this.Al)); this.jb && (a += ',\n "isReadOnly": ' + this.jb); "key" !== this.qj && "string" === typeof this.qj && (a += ',\n "nodeKeyProperty": ' + this.quote(this.qj)); this.Jz && (a += ',\n "copiesArrays": true'); this.Iz && (a += ',\n "copiesArrayObjects": true'); "category" !== this.qn && "string" === typeof this.qn && (a += ',\n "nodeCategoryProperty": ' + this.quote(this.qn)); return a }; f.hu = function(a) { a.name && (this.name = a.name); a.dataFormat && (this.Al = a.dataFormat); a.isReadOnly && (this.jb = a.isReadOnly); a.nodeKeyProperty && (this.qj = a.nodeKeyProperty); a.copiesArrays && (this.Jz = a.copiesArrays); a.copiesArrayObjects && (this.Iz = a.copiesArrayObjects); a.nodeCategoryProperty && (this.qn = a.nodeCategoryProperty) }; function Xf(a) { return ',\n "modelData": ' + Yf(a, a.tk) } function Zf(a, b) { var c = b.modelData; z.Za(c) && (a.ku(c), a.tk = c) } f.hB = function() { var a = this.tk, b = !1, c; for (c in a) if (!$f(c, a[c])) { b = !0; break } a = ""; b && (a = Xf(this)); return a + ',\n "nodeDataArray": ' + ag(this, this.gg, !0) }; f.FA = function(a) { Zf(this, a); a = a.nodeDataArray; z.isArray(a) && (this.ku(a), this.gg = a) }; function bg(a, b, c, d) { if (b === c) return !0; if (typeof b !== typeof c || "function" === typeof b || "function" === typeof c) return !1; if (Array.isArray(b) && Array.isArray(c)) { if (d.na(b) === c) return !0; d.add(b, c); if (b.length !== c.length) return !1; for (var e = 0; e < b.length; e++) if (!bg(a, b[e], c[e], d)) return !1; return !0 } if (z.Za(b) && z.Za(c)) { if (d.na(b) === c) return !0; d.add(b, c); for (e in b) { var g = b[e]; if (!$f(e, g)) { var h = c[e]; if (void 0 === h || !bg(a, g, h, d)) return !1 } } for (var k in c) if (h = c[k], !$f(k, h) && (g = b[k], void 0 === g || !bg(a, g, h, d))) return !1; return !0 } return !1 } function mg(a, b, c) { a[c] !== b[c] && z.k("Model.computeJsonDifference: Model." + c + ' is not the same in both models: "' + a[c] + '" and "' + b[c] + '"') } f.iB = function(a) { mg(this, a, "nodeKeyProperty"); this instanceof ng && mg(this, a, "nodeParentKeyProperty"); for (var b = new K, c = new K, d = (new K).$c(this.vc.UE), e = new na, g = a.gg, h = 0; h < g.length; h++) { var k = g[h], l = a.pb(k); if (void 0 !== l) { d.remove(l); var m = this.ne(l); null === m ? (b.add(l), c.add(k)) : bg(this, m, k, e) || c.add(k) } else this.oA(k), l = this.pb(k), b.add(l), c.add(k) } g = ""; bg(this, this.tk, a.tk, e) || (g += Xf(this)); 0 < b.count && (g += this.by + ag(this, b.jc(), !0)); 0 < c.count && (g += this.qB + ag(this, c.jc(), !0)); 0 < d.count && (g += this.gy + ag(this, d.jc(), !0)); return g }; M.prototype.computeJsonDifference = M.prototype.computeJSONDifference = function(a, b) { z.l(a, M, M, "computeJsonDifference:newmodel"); void 0 === b && (b = this.constructor === M ? "go.Model" : this.constructor === V ? "go.GraphLinksModel" : this.constructor === ng ? "go.TreeModel" : z.kf(this)); return '{ "class": ' + this.quote(b) + ', "incremental": 1' + this.Cn() + this.iB(a) + "}" }; f = M.prototype; f.by = ',\n "insertedNodeKeys": '; f.qB = ',\n "modifiedNodeData": '; f.gy = ',\n "removedNodeKeys": '; f.gB = function(a, b) { var c = this, d = !1, e = new K, g = new K, h = new K; a.Yf.each(function(a) { a.ha === c && ("nodeDataArray" === a.rf ? a.Dc === Uf ? e.add(a.newValue) : a.Dc === Vf && h.add(a.oldValue) : c.le(a.object) ? g.add(a.object) : c.tk === a.object && a.Dc === Sf && (d = !0)) }); var k = new K; e.each(function(a) { k.add(c.pb(a)); b || g.add(a) }); var l = new K; h.each(function(a) { l.add(c.pb(a)); b && g.add(a) }); var m = ""; d && (m += Xf(this)); 0 < k.count && (m += (b ? this.gy : this.by) + ag(this, k.jc(), !0)); 0 < g.count && (m += this.qB + ag(this, g.jc(), !0)); 0 < l.count && (m += (b ? this.by : this.gy) + ag(this, l.jc(), !0)); return m }; f.EA = function(a) { Zf(this, a); var b = a.insertedNodeKeys; if (z.isArray(b)) for (var c = z.bb(b), d = 0; d < c; d++) { var e = z.Ya(b, d), g = this.ne(e); null === g && (g = this.copyNodeData({}), this.Mx(g, e), this.rl(g)) } b = a.modifiedNodeData; if (z.isArray(b)) for (c = z.bb(b), d = 0; d < c; d++) { var h = z.Ya(b, d), e = this.pb(h), g = this.ne(e); if (null !== g) for (var k in h) "__gohashid" !== k && k !== this.qj && this.setDataProperty(g, k, h[k]) } a = a.removedNodeKeys; if (z.isArray(a)) for (c = z.bb(a), d = 0; d < c; d++) e = z.Ya(a, d), g = this.ne(e), null !== g && this.Ex(g) }; M.prototype.toIncrementalJson = M.prototype.toIncrementalJSON = function(a, b) { z.l(a, Rf, M, "toIncrementalJson:e"); a.Dc !== Tf && z.k("Model.toIncrementalJson argument is not a Transaction ChangedEvent:" + a.toString()); var c = a.object; if (!(a.TE && c instanceof og)) return '{ "incremental": 0 }'; void 0 === b && (b = this.constructor === M ? "go.Model" : this.constructor === V ? "go.GraphLinksModel" : this.constructor === ng ? "go.TreeModel" : z.kf(this)); return '{ "class": ' + this.quote(b) + ', "incremental": 1' + this.Cn() + this.gB(c, "FinishedUndo" === a.propertyName) + "}" }; M.prototype.toJson = M.prototype.toJSON = M.prototype.ZA = function(a) { void 0 === a && (a = this.constructor === M ? "go.Model" : this.constructor === V ? "go.GraphLinksModel" : this.constructor === ng ? "go.TreeModel" : z.kf(this)); return '{ "class": ' + this.quote(a) + this.Cn() + this.hB() + "}" }; M.prototype.applyIncrementalJson = M.prototype.applyIncrementalJSON = function(a) { var b = null; if ("string" === typeof a) if (window.JSON && window.JSON.parse) try { b = window.JSON.parse(a) } catch (c) { u && z.trace("JSON.parse error: " + c.toString()) } else z.trace("WARNING: no JSON.parse available"); else "object" === typeof a ? b = a : z.k("Unable to modify a Model from: " + a); var d = b.incremental; "number" !== typeof d && z.k("Unable to apply non-incremental changes to Model: " + a); 0 !== d && (this.Wb("applyIncrementalJson"), this.EA(b), this.Jd("applyIncrementalJson")) }; M.fromJson = M.fromJSON = function(a, b) { void 0 === b && (b = null); null !== b && z.l(b, M, M, "fromJson:model"); var c = null; if ("string" === typeof a) if (window.JSON && window.JSON.parse) try { c = window.JSON.parse(a) } catch (d) { u && z.trace("JSON.parse error: " + d.toString()) } else z.trace("WARNING: no JSON.parse available"); else "object" === typeof a ? c = a : z.k("Unable to construct a Model from: " + a); if (null === b) { var e; e = null; var g = c["class"]; if ("string" === typeof g) try { var h = null; 0 === g.indexOf("go.") ? (g = g.substr(3), h = aa[g]) : (h = aa[g], void 0 === h && (h = window[g])); "function" === typeof h && (e = new h) } catch (k) {} null === e || e instanceof M ? b = e : z.k("Unable to construct a Model of declared class: " + c["class"]) } null === b && (b = new V); b.hu(c); b.FA(c); return b }; M.prototype.replaceJsonObjects = M.prototype.ku = function(a) { if (z.isArray(a)) for (var b = z.bb(a), c = 0; c < b; c++) { var d = z.Ya(a, c); z.Za(d) && z.LD(a, c, this.ku(d)) } else if (z.Za(a)) { for (c in a) if (d = a[c], z.Za(d) && (d = this.ku(d), a[c] = d, "points" === c && Array.isArray(d))) { for (var e = 0 === d.length % 2, g = 0; g < d.length; g++) if ("number" !== typeof d[g]) { e = !1; break } if (e) { e = new J(N); for (g = 0; g < d.length / 2; g++) { var h = new N(d[2 * g], d[2 * g + 1]); e.add(h) } e.freeze(); a[c] = e } } if ("object" === typeof a) { c = a; d = a["class"]; if ("NaN" === d) c = NaN; else if ("Date" === d) c = new Date(a.value); else if ("go.Point" === d) c = new N(pg(a.x), pg(a.y)); else if ("go.Size" === d) c = new Ea(pg(a.width), pg(a.height)); else if ("go.Rect" === d) c = new w(pg(a.x), pg(a.y), pg(a.width), pg(a.height)); else if ("go.Margin" === d) c = new Db(pg(a.top), pg(a.right), pg(a.bottom), pg(a.left)); else if ("go.Spot" === d) c = "string" === typeof a["enum"] ? Ub(a["enum"]) : new Q(pg(a.x), pg(a.y), pg(a.offsetX), pg(a.offsetY)); else if ("go.Brush" === d) { if (c = new Da, c.type = Ja(Da, a.type), "string" === typeof a.color && (c.color = a.color), a.start instanceof Q && (c.start = a.start), a.end instanceof Q && (c.end = a.end), "number" === typeof a.startRadius && (c.wu = pg(a.startRadius)), "number" === typeof a.endRadius && (c.xt = pg(a.endRadius)), a = a.colorStops, z.Za(a)) for (b in a) c.addColorStop(parseFloat(b), a[b]) } else "go.Geometry" === d ? (b = null, b = "string" === typeof a.path ? sf(a.path) : new hf, b.type = Ja(hf, a.type), "number" === typeof a.startX && (b.Ha = pg(a.startX)), "number" === typeof a.startY && (b.Da = pg(a.startY)), "number" === typeof a.endX && (b.L = pg(a.endX)), "number" === typeof a.endY && (b.M = pg(a.endY)), a.spot1 instanceof Q && (b.C = a.spot1), a.spot2 instanceof Q && (b.D = a.spot2), c = b) : "go.EnumValue" === d && (b = a.classType, 0 === b.indexOf("go.") && (b = b.substr(3)), c = Ja(aa[b], a.name)); a = c } } return a }; M.prototype.quote = function(a) { for (var b = "", c = a.length, d = 0; d < c; d++) { var e = a[d]; if ('"' === e || "\\" === e) b += "\\" + e; else if ("\b" === e) b += "\\b"; else if ("\f" === e) b += "\\f"; else if ("\n" === e) b += "\\n"; else if ("\r" === e) b += "\\r"; else if ("\t" === e) b += "\\t"; else var g = a.charCodeAt(d), b = 16 > g ? b + ("\\u000" + a.charCodeAt(d).toString(16)) : 32 > g ? b + ("\\u00" + a.charCodeAt(d).toString(16)) : 8232 === g ? b + "\\u2028" : 8233 === g ? b + "\\u2029" : b + e } return '"' + b + '"' }; M.prototype.writeJsonValue = M.prototype.Du = function(a) { return void 0 === a ? "undefined" : null === a ? "null" : !0 === a ? "true" : !1 === a ? "false" : "string" === typeof a ? this.quote(a) : "number" === typeof a ? Infinity === a ? "9e9999" : -Infinity === a ? "-9e9999" : isNaN(a) ? '{"class":"NaN"}' : a.toString() : a instanceof Date ? '{"class":"Date", "value":"' + a.toJSON() + '"}' : a instanceof Number ? this.Du(a.valueOf()) : z.isArray(a) ? ag(this, a) : z.Za(a) ? Yf(this, a) : "function" === typeof a ? "null" : a.toString() }; function ag(a, b, c) { void 0 === c && (c = !1); var d = z.bb(b); if (0 >= d) return "[]"; var e = new za; e.add("[ "); c && 1 < d && e.add("\n"); for (var g = 0; g < d; g++) { var h = z.Ya(b, g); void 0 !== h && (0 < g && (e.add(","), c && e.add("\n")), e.add(a.Du(h))) } c && 1 < d && e.add("\n"); e.add(" ]"); return e.toString() } function $f(a, b) { return void 0 === b || "__gohashid" === a || "_" === a[0] || "function" === typeof b ? !0 : !1 } function qg(a) { return isNaN(a) ? "NaN" : Infinity === a ? "9e9999" : -Infinity === a ? "-9e9999" : a } function Yf(a, b) { var c = b; if (c instanceof N) { var d = c; b = { "class": "go.Point", x: qg(d.x), y: qg(d.y) } } else if (c instanceof Ea) { var e = c; b = { "class": "go.Size", width: qg(e.width), height: qg(e.height) } } else if (c instanceof w) b = { "class": "go.Rect", x: qg(c.x), y: qg(c.y), width: qg(c.width), height: qg(c.height) }; else if (c instanceof Db) b = { "class": "go.Margin", top: qg(c.top), right: qg(c.right), bottom: qg(c.bottom), left: qg(c.left) }; else if (c instanceof Q) e = c, b = e.cd() ? { "class": "go.Spot", x: qg(e.x), y: qg(e.y), offsetX: qg(e.offsetX), offsetY: qg(e.offsetY) } : { "class": "go.Spot", "enum": e.toString() }; else if (c instanceof Da) { b = { "class": "go.Brush", type: c.type.name }; if (c.type === rg) b.color = c.color; else if (c.type === sg || c.type === yd) b.start = c.start, b.end = c.end, c.type === yd && (0 !== c.wu && (b.startRadius = qg(c.wu)), isNaN(c.xt) || (b.endRadius = qg(c.xt))); if (null !== c.st) { for (var g = {}, h = c.st.i; h.next();) g[h.key] = h.value; b.colorStops = g } } else if (c instanceof hf) b = { "class": "go.Geometry", type: c.type.name }, 0 !== c.Ha && (b.startX = qg(c.Ha)), 0 !== c.Da && (b.startY = qg(c.Da)), 0 !== c.L && (b.endX = qg(c.L)), 0 !== c.M && (b.endY = qg(c.M)), c.C.N(Zb) || (b.spot1 = c.C), c.D.N(ic) || (b.spot2 = c.D), c.type === jf && (b.path = rf(c)); else if (c instanceof Ba) b = { "class": "go.EnumValue", classType: z.kf(c.ze), name: c.name }; else if (c instanceof O || c instanceof C || c instanceof tg || c instanceof M || c instanceof ug || c instanceof ra || c instanceof vg || c instanceof wa || c instanceof Wf || c instanceof og) return z.trace("ERROR: trying to convert a GraphObject or Diagram or Model or Tool or Layout or UndoManager into JSON text: " + c.toString()), "{}"; g = "{"; c = !0; for (d in b) if (e = z.tb(b, d), !$f(d, e)) if (c ? c = !1 : g += ", ", g += '"' + d + '":', "points" === d && e instanceof J && e.ba === N) { h = e; e = "["; for (h = h.i; h.next();) { var k = h.value; 1 < e.length && (e += ","); e += a.Du(k.x); e += ","; e += a.Du(k.y) } e += "]"; g += e } else g += a.Du(e); return g + "}" } function pg(a) { return "number" === typeof a ? a : "NaN" === a ? NaN : "9e9999" === a ? Infinity : "-9e9999" === a ? -Infinity : parseFloat(a) } z.defineProperty(M, { name: "name" }, function() { return this.Ub }, function(a) { var b = this.Ub; b !== a && (z.g(a, "string", M, "name"), this.Ub = a, this.j("name", b, a)) }); z.defineProperty(M, { Al: "dataFormat" }, function() { return this.Kq }, function(a) { var b = this.Kq; b !== a && (z.g(a, "string", M, "dataFormat"), this.Kq = a, this.j("dataFormat", b, a)) }); z.defineProperty(M, { jb: "isReadOnly" }, function() { return this.Gi }, function(a) { var b = this.Gi; b !== a && (z.g(a, "boolean", M, "isReadOnly"), this.Gi = a, this.j("isReadOnly", b, a)) }); z.defineProperty(M, { tk: "modelData" }, function() { return this.az }, function(a) { var b = this.az; b !== a && (z.g(a, "object", M, "modelData"), this.az = a, this.j("modelData", b, a), this.Mb(a)) }); M.prototype.addChangedListener = M.prototype.Rm = function(a) { z.g(a, "function", M, "addChangedListener:listener"); null === this.Pj && (this.Pj = new J("function")); this.Pj.add(a) }; M.prototype.removeChangedListener = M.prototype.iu = function(a) { z.g(a, "function", M, "removeChangedListener:listener"); null !== this.Pj && (this.Pj.remove(a), 0 === this.Pj.count && (this.Pj = null)) }; M.prototype.Kw = function(a) { this.Bb || this.pa.DE(a); if (null !== this.Pj) { var b = this.Pj, c = b.length; if (1 === c) b = b.ea(0), b(a); else if (0 !== c) for (var d = b.jc(), e = 0; e < c; e++) b = d[e], b(a) } }; M.prototype.raiseChangedEvent = M.prototype.Rc = function(a, b, c, d, e, g, h) { wg(this, "", a, b, c, d, e, g, h) }; M.prototype.raiseChanged = M.prototype.j = function(a, b, c, d, e) { wg(this, "", Sf, a, this, b, c, d, e) }; M.prototype.raiseDataChanged = M.prototype.DA = function(a, b, c, d, e, g) { wg(this, "", Sf, b, a, c, d, e, g) }; function wg(a, b, c, d, e, g, h, k, l) { void 0 === k && (k = null); void 0 === l && (l = null); var m = new Rf; m.ha = a; m.Dc = c; m.rf = b; m.propertyName = d; m.object = e; m.oldValue = g; m.Mg = k; m.newValue = h; m.Kg = l; a.Kw(m) } z.defineProperty(M, { pa: "undoManager" }, function() { return this.sz }, function(a) { var b = this.sz; b !== a && (z.l(a, Wf, M, "undoManager"), null !== b && b.YI(this), this.sz = a, null !== a && a.PG(this)) }); z.defineProperty(M, { Bb: "skipsUndoManager" }, function() { return this.Vi }, function(a) { z.g(a, "boolean", M, "skipsUndoManager"); this.Vi = a }); M.prototype.Vm = function(a, b) { if (null !== a && a.ha === this) if (a.Dc === Sf) { var c = a.object, d = a.propertyName, e = a.na(b); z.Ra(c, d, e) } else a.Dc === Uf ? "nodeDataArray" === a.rf ? (c = a.newValue, z.Za(c) && (d = this.pb(c), void 0 !== d && (b ? (z.hi(this.wf, a.Kg), this.vc.remove(d)) : (z.aj(this.wf, a.Kg, c), this.vc.add(d, c))))) : "" === a.rf ? (c = a.object, !z.isArray(c) && a.propertyName && (c = z.tb(a.object, a.propertyName)), z.isArray(c) && (d = a.newValue, e = a.Kg, b ? z.hi(c, e) : z.aj(c, e, d))) : z.k("unknown ChangedEvent.Insert object: " + a.toString()) : a.Dc === Vf ? "nodeDataArray" === a.rf ? (c = a.oldValue, z.Za(c) && (d = this.pb(c), void 0 !== d && (b ? (z.aj(this.wf, a.Mg, c), this.vc.add(d, c)) : (z.hi(this.wf, a.Mg), this.vc.remove(d))))) : "" === a.rf ? (c = a.object, !z.isArray(c) && a.propertyName && (c = z.tb(a.object, a.propertyName)), z.isArray(c) && (d = a.oldValue, e = a.Mg, b ? z.aj(c, e, d) : z.hi(c, e))) : z.k("unknown ChangedEvent.Remove object: " + a.toString()) : a.Dc !== Tf && z.k("unknown ChangedEvent: " + a.toString()) }; M.prototype.startTransaction = M.prototype.Wb = function(a) { return this.pa.Wb(a) }; M.prototype.commitTransaction = M.prototype.Jd = function(a) { return this.pa.Jd(a) }; M.prototype.rollbackTransaction = M.prototype.Vp = function() { return this.pa.Vp() }; M.prototype.updateTargetBindings = M.prototype.Mb = function(a, b) { void 0 === b && (b = ""); wg(this, "SourceChanged", Tf, b, a, null, null) }; z.defineProperty(M, { qj: "nodeKeyProperty" }, function() { return this.Vj }, function(a) { var b = this.Vj; b !== a && (xg(a, M, "nodeKeyProperty"), "" === a && z.k("Model.nodeKeyProperty may not be the empty string"), 0 < this.vc.count && z.k("Cannot set Model.nodeKeyProperty when there is existing node data"), this.Vj = a, this.j("nodeKeyProperty", b, a)) }); function xg(a, b, c) { "string" !== typeof a && "function" !== typeof a && z.ic(a, "string or function", b, c) } M.prototype.getKeyForNodeData = M.prototype.pb = function(a) { if (null !== a) { var b = this.Vj; if ("" !== b && (b = z.tb(a, b), void 0 !== b)) { if (yg(b)) return b; z.k("Key value for node data " + a + " is not a number or a string: " + b) } } }; M.prototype.setKeyForNodeData = M.prototype.Mx = function(a, b) { void 0 !== b && null !== b && yg(b) || z.ic(b, "number or string", M, "setKeyForNodeData:key"); if (null !== a) { var c = this.Vj; if ("" !== c) if (this.le(a)) { var d = z.tb(a, c); d !== b && null === this.ne(b) && (z.Ra(a, c, b), this.vc.remove(d), this.vc.add(b, a), wg(this, "nodeKey", Sf, c, a, d, b), "string" === typeof c && this.Mb(a, c), this.ju(d, b)) } else z.Ra(a, c, b) } }; z.defineProperty(M, { OK: "makeUniqueKeyFunction" }, function() { return this.Ao }, function(a) { var b = this.Ao; b !== a && (null !== a && z.g(a, "function", M, "makeUniqueKeyFunction"), this.Ao = a, this.j("makeUniqueKeyFunction", b, a)) }); function yg(a) { return "number" === typeof a || "string" === typeof a } M.prototype.containsNodeData = M.prototype.le = function(a) { var b = this.pb(a); return void 0 === b ? !1 : this.vc.na(b) === a }; M.prototype.findNodeDataForKey = M.prototype.ne = function(a) { null === a && z.k("Model.findNodeDataForKey:key must not be null"); return void 0 !== a && yg(a) ? this.vc.na(a) : null }; z.defineProperty(M, { gg: "nodeDataArray" }, function() { return this.wf }, function(a) { var b = this.wf; if (b !== a) { z.nt(a, M, "nodeDataArray"); this.vc.clear(); this.cB(); for (var c = z.bb(a), d = 0; d < c; d++) { var e = z.Ya(a, d); if (!z.Za(e)) { z.k("Model.nodeDataArray must only contain Objects, not: " + e); return } z.It(e) } this.wf = a; for (var g = new J(Object), d = 0; d < c; d++) { var e = z.Ya(a, d), h = this.pb(e); void 0 === h ? g.add(e) : null !== this.vc.na(h) ? g.add(e) : this.vc.add(h, e) } for (d = g.i; d.next();) e = d.value, this.oA(e), g = this.pb(e), void 0 !== g && this.vc.add(g, e); wg(this, "nodeDataArray", Sf, "nodeDataArray", this, b, a); for (d = 0; d < c; d++) e = z.Ya(a, d), this.Up(e), this.Tp(e); this.QD(); z.gI(a) || (this.jb = !0) } }); M.prototype.makeNodeDataKeyUnique = M.prototype.oA = function(a) { if (null !== a) { var b = this.Vj; if ("" !== b) { var c = this.pb(a); if (void 0 === c || this.vc.contains(c)) { var d = this.Ao; if (null !== d && (c = d(this, a), void 0 !== c && null !== c && !this.vc.contains(c))) { z.Ra(a, b, c); return } if ("string" === typeof c) { for (d = 2; this.vc.contains(c + d);) d++; z.Ra(a, b, c + d) } else if (void 0 === c || "number" === typeof c) { for (d = -this.vc.count - 1; this.vc.contains(d);) d--; z.Ra(a, b, d) } else z.k("Model.getKeyForNodeData returned something other than a string or a number: " + c) } } } }; M.prototype.addNodeData = M.prototype.rl = function(a) { null !== a && (z.It(a), zg(this, a, !0)) }; function zg(a, b, c) { var d = a.pb(b); if (void 0 === d || a.vc.na(d) !== b) if (a.oA(b), d = a.pb(b), void 0 === d) z.k("Model.makeNodeDataKeyUnique failed on " + b + ". Data not added to Model."); else { a.vc.add(d, b); if (c) { var e = z.bb(a.wf); z.aj(a.wf, e, b) } wg(a, "nodeDataArray", Uf, "nodeDataArray", a, null, b, null, e); a.Up(b); a.Tp(b) } } M.prototype.addNodeDataCollection = function(a) { if (z.isArray(a)) for (var b = z.bb(a), c = 0; c < b; c++) this.rl(z.Ya(a, c)); else for (a = a.i; a.next();) this.rl(a.value) }; M.prototype.removeNodeData = M.prototype.Ex = function(a) { null !== a && Ag(this, a, !0) }; function Ag(a, b, c) { var d = a.pb(b); if (void 0 !== d && a.vc.contains(d)) { a.vc.remove(d); if (c) { var e = z.Dz(a.wf, b); if (0 > e) return; z.hi(a.wf, e) } wg(a, "nodeDataArray", Vf, "nodeDataArray", a, b, null, e, null); a.Bu(b) } } M.prototype.removeNodeDataCollection = function(a) { if (z.isArray(a)) for (var b = z.bb(a), c = 0; c < b; c++) this.Ex(z.Ya(a, c)); else for (a = a.i; a.next();) this.Ex(a.value) }; f = M.prototype; f.ju = function(a, b) { var c = Bg(this, a); c instanceof K && this.ng.add(b, c) }; f.cB = function() {}; f.Up = function() {}; f.Tp = function() {}; f.Bu = function() {}; function Cg(a, b, c) { if (void 0 !== b) { var d = a.ng.na(b); null === d && (d = new K(Object), a.ng.add(b, d)); d.add(c) } } function Dg(a, b, c) { if (void 0 !== b) { var d = a.ng.na(b); d instanceof K && (void 0 === c || null === c ? a.ng.remove(b) : (d.remove(c), 0 === d.count && a.ng.remove(b))) } } function Bg(a, b) { if (void 0 === b) return null; var c = a.ng.na(b); return c instanceof K ? c : null } M.prototype.clearUnresolvedReferences = M.prototype.QD = function(a) { void 0 === a ? this.ng.clear() : this.ng.remove(a) }; z.defineProperty(M, { fK: "copyNodeDataFunction" }, function() { return this.Rn }, function(a) { var b = this.Rn; b !== a && (null !== a && z.g(a, "function", M, "copyNodeDataFunction"), this.Rn = a, this.j("copyNodeDataFunction", b, a)) }); z.defineProperty(M, { Jz: "copiesArrays" }, function() { return this.Zu }, function(a) { var b = this.Zu; b !== a && (null !== a && z.g(a, "boolean", M, "copiesArrays"), this.Zu = a, this.j("copiesArrays", b, a)) }); z.defineProperty(M, { Iz: "copiesArrayObjects" }, function() { return this.Cq }, function(a) { var b = this.Cq; b !== a && (null !== a && z.g(a, "boolean", M, "copiesArrayObjects"), this.Cq = a, this.j("copiesArrayObjects", b, a)) }); M.prototype.copyNodeData = function(a) { if (null === a) return null; var b = null, b = this.Rn, b = null !== b ? b(a, this) : Eg(this, a, !0); z.Za(b) && z.kc(b); return b }; function Eg(a, b, c) { if (a.Jz && Array.isArray(b)) { var d = []; for (c = 0; c < b.length; c++) { var e = Eg(a, b[c], a.Iz); d.push(e) } z.kc(d); return d } if (c && z.Za(b)) { c = (c = b.constructor) ? new c : {}; for (d in b) if ("__gohashid" !== d) { var e = z.tb(b, d), g; g = e; g instanceof O || g instanceof C || g instanceof tg || g instanceof Fg || g instanceof Gg || g instanceof ug || g instanceof ra || g instanceof vg || g instanceof Pf || g instanceof Qf ? ("_" !== d[0] && z.trace('Warning: found GraphObject or Diagram reference when copying model data on property "' + d + '" of data object: ' + b.toString() + " \nModel data should not have any references to a Diagram or any part of a diagram, such as: " + g.toString()), g = !0) : g = g instanceof M || g instanceof Wf || g instanceof og || g instanceof Rf ? !0 : !1; g || (e = Eg(a, e, !1)); z.Ra(c, d, e) } z.kc(c); return c } return b instanceof N ? b.copy() : b instanceof Ea ? b.copy() : b instanceof w ? b.copy() : b instanceof Q ? b.copy() : b instanceof Db ? b.copy() : b } z.defineProperty(M, { RG: "afterCopyFunction" }, function() { return this.nq }, function(a) { var b = this.nq; b !== a && (null !== a && z.g(a, "function", M, "afterCopyFunction"), this.nq = a, this.j("afterCopyFunction", b, a)) }); var Hg = !1; M.prototype.setDataProperty = function(a, b, c) { u && (z.g(a, "object", M, "setDataProperty:data"), z.g(b, "string", M, "setDataProperty:propname"), "" === b && z.k("Model.setDataProperty: property name must not be an empty string when setting " + a + " to " + c)); if (this.le(a)) if (b === this.qj) this.Mx(a, c); else { if (b === this.qn) { this.Jx(a, c); return } } else !Hg && a instanceof O && (Hg = !0, z.trace('Model.setDataProperty is modifying a GraphObject, "' + a.toString() + '"'), z.trace(" Is that really your intent?")); var d = z.tb(a, b); d !== c && (z.Ra(a, b, c), this.DA(a, b, d, c)) }; M.prototype.addArrayItem = function(a, b) { this.cI(a, -1, b) }; M.prototype.insertArrayItem = M.prototype.cI = function(a, b, c) { u && (z.nt(a, M, "insertArrayItem:arr"), z.p(b, M, "insertArrayItem:idx")); a === this.wf && z.k("Model.insertArrayItem or Model.addArrayItem should not be called on the Model.nodeDataArray"); 0 > b && (b = z.bb(a)); z.aj(a, b, c); wg(this, "", Uf, "", a, null, c, null, b) }; M.prototype.removeArrayItem = function(a, b) { void 0 === b && (b = -1); u && (z.nt(a, M, "removeArrayItem:arr"), z.p(b, M, "removeArrayItem:idx")); a === this.wf && z.k("Model.removeArrayItem should not be called on the Model.nodeDataArray"); - 1 === b && (b = z.bb(a) - 1); var c = z.Ya(a, b); z.hi(a, b); wg(this, "", Vf, "", a, c, null, b, null) }; z.defineProperty(M, { qn: "nodeCategoryProperty" }, function() { return this.xm }, function(a) { var b = this.xm; b !== a && (xg(a, M, "nodeCategoryProperty"), this.xm = a, this.j("nodeCategoryProperty", b, a)) }); M.prototype.getCategoryForNodeData = M.prototype.$z = function(a) { if (null === a) return ""; var b = this.xm; if ("" === b) return ""; b = z.tb(a, b); if (void 0 === b) return ""; if ("string" === typeof b) return b; z.k("getCategoryForNodeData found a non-string category for " + a + ": " + b); return "" }; M.prototype.setCategoryForNodeData = M.prototype.Jx = function(a, b) { z.g(b, "string", M, "setCategoryForNodeData:cat"); if (null !== a) { var c = this.xm; if ("" !== c) if (this.le(a)) { var d = z.tb(a, c); void 0 === d && (d = ""); d !== b && (z.Ra(a, c, b), wg(this, "nodeCategory", Sf, c, a, d, b)) } else z.Ra(a, c, b) } }; function V(a, b) { 2 < arguments.length && z.k("GraphLinksModel constructor can only take two optional arguments, the Array of node data and the Array of link data."); M.call(this); this.vf = []; this.sm = new K(Object); this.hd = new na(null, Object); this.dl = ""; this.Mk = this.Qn = this.Bo = null; this.Th = "from"; this.Uh = "to"; this.um = this.tm = ""; this.rm = "category"; this.ug = ""; this.Eo = "isGroup"; this.jh = "group"; this.Dq = !1; void 0 !== a && (this.gg = a); void 0 !== b && (this.Jg = b) } z.Qa(V, M); z.ia("GraphLinksModel", V); V.prototype.cloneProtected = function(a) { M.prototype.cloneProtected.call(this, a); a.dl = this.dl; a.Bo = this.Bo; a.Qn = this.Qn; a.Th = this.Th; a.Uh = this.Uh; a.tm = this.tm; a.um = this.um; a.rm = this.rm; a.ug = this.ug; a.Eo = this.Eo; a.jh = this.jh; a.Dq = this.Dq }; V.prototype.clear = V.prototype.clear = function() { M.prototype.clear.call(this); this.vf = []; this.hd.clear(); this.sm.clear() }; f = V.prototype; f.toString = function(a) { void 0 === a && (a = 0); if (2 <= a) return this.ZA(); var b = ("" !== this.name ? this.name : "") + " GraphLinksModel"; if (0 < a) { b += "\n node data:"; a = this.gg; for (var c = z.bb(a), d = 0, d = 0; d < c; d++) var e = z.Ya(a, d), b = b + (" " + this.pb(e) + ":" + ka(e)); b += "\n link data:"; a = this.Jg; c = z.bb(a); for (d = 0; d < c; d++) e = z.Ya(a, d), b += " " + this.Ll(e) + "--\x3e" + this.Ml(e) } return b }; f.Cn = function() { var a = M.prototype.Cn.call(this), b = ""; "category" !== this.Wt && "string" === typeof this.Wt && (b += ',\n "linkCategoryProperty": ' + this.quote(this.Wt)); "" !== this.oj && "string" === typeof this.oj && (b += ',\n "linkKeyProperty": ' + this.quote(this.oj)); "from" !== this.Ep && "string" === typeof this.Ep && (b += ',\n "linkFromKeyProperty": ' + this.quote(this.Ep)); "to" !== this.Gp && "string" === typeof this.Gp && (b += ',\n "linkToKeyProperty": ' + this.quote(this.Gp)); "" !== this.Xt && "string" === typeof this.Xt && (b += ',\n "linkFromPortIdProperty": ' + this.quote(this.Xt)); "" !== this.Zt && "string" === typeof this.Zt && (b += ',\n "linkToPortIdProperty": ' + this.quote(this.Zt)); "" !== this.Yt && "string" === typeof this.Yt && (b += ',\n "linkLabelKeysProperty": ' + this.quote(this.Yt)); "isGroup" !== this.eu && "string" === typeof this.eu && (b += ',\n "nodeIsGroupProperty": ' + this.quote(this.eu)); "group" !== this.Pp && "string" === typeof this.Pp && (b += ',\n "nodeGroupKeyProperty": ' + this.quote(this.Pp)); return a + b }; f.hu = function(a) { M.prototype.hu.call(this, a); a.linkKeyProperty && (this.oj = a.linkKeyProperty); a.linkFromKeyProperty && (this.Ep = a.linkFromKeyProperty); a.linkToKeyProperty && (this.Gp = a.linkToKeyProperty); a.linkFromPortIdProperty && (this.Xt = a.linkFromPortIdProperty); a.linkToPortIdProperty && (this.Zt = a.linkToPortIdProperty); a.linkCategoryProperty && (this.Wt = a.linkCategoryProperty); a.linkLabelKeysProperty && (this.Yt = a.linkLabelKeysProperty); a.nodeIsGroupProperty && (this.eu = a.nodeIsGroupProperty); a.nodeGroupKeyProperty && (this.Pp = a.nodeGroupKeyProperty) }; f.hB = function() { var a = M.prototype.hB.call(this), b = ',\n "linkDataArray": ' + ag(this, this.Jg, !0); return a + b }; f.FA = function(a) { M.prototype.FA.call(this, a); a = a.linkDataArray; z.isArray(a) && (this.ku(a), this.Jg = a) }; f.iB = function(a) { a instanceof V || z.k("Model.computeJsonDifference: newmodel must be a GraphLinksModel"); "" === this.oj && z.k("GraphLinksModel.linkKeyProperty must not be an empty string for .computeJsonDifference() to succeed."); var b = M.prototype.iB.call(this, a); mg(this, a, "linkKeyProperty"); mg(this, a, "linkFromKeyProperty"); mg(this, a, "linkToKeyProperty"); mg(this, a, "linkLabelKeysProperty"); mg(this, a, "nodeIsGroupProperty"); mg(this, a, "nodeGroupKeyProperty"); for (var c = new K, d = new K, e = (new K).$c(this.hd.UE), g = new na, h = a.Jg, k = 0; k < h.length; k++) { var l = h[k], m = a.lf(l); if (void 0 !== m) { e.remove(m); var n = this.zt(m); null === n ? (c.add(m), d.add(l)) : bg(this, n, l, g) || d.add(l) } else this.nA(l), m = this.lf(l), c.add(m), d.add(l) } a = b; 0 < c.count && (a += this.ay + ag(this, c.jc(), !0)); 0 < d.count && (a += this.pB + ag(this, d.jc(), !0)); 0 < e.count && (a += this.ey + ag(this, e.jc(), !0)); return a }; f.ay = ',\n "insertedLinkKeys": '; f.pB = ',\n "modifiedLinkData": '; f.ey = ',\n "removedLinkKeys": '; f.gB = function(a, b) { "" === this.oj && z.k("GraphLinksModel.linkKeyProperty must not be an empty string for .toIncrementalJson() to succeed."); var c = M.prototype.gB.call(this, a, b), d = this, e = new K, g = new K, h = new K; a.Yf.each(function(a) { a.ha === d && ("linkDataArray" === a.rf ? a.Dc === Uf ? e.add(a.newValue) : a.Dc === Vf && h.add(a.oldValue) : d.sh(a.object) && g.add(a.object)) }); var k = new K; e.each(function(a) { k.add(d.lf(a)); b || g.add(a) }); var l = new K; h.each(function(a) { l.add(d.lf(a)); b && g.add(a) }); 0 < k.count && (c += (b ? this.ey : this.ay) + ag(this, k.jc(), !0)); 0 < g.count && (c += this.pB + ag(this, g.jc(), !0)); 0 < l.count && (c += (b ? this.ay : this.ey) + ag(this, l.jc(), !0)); return c }; f.EA = function(a) { M.prototype.EA.call(this, a); var b = a.insertedLinkKeys; if (z.isArray(b)) for (var c = z.bb(b), d = 0; d < c; d++) { var e = z.Ya(b, d), g = this.zt(e); null === g && (g = this.Pw({}), this.JF(g, e), this.gt(g)) } b = a.modifiedLinkData; if (z.isArray(b)) for (c = z.bb(b), d = 0; d < c; d++) { var h = z.Ya(b, d), e = this.lf(h), g = this.zt(e); if (null !== g) for (var k in h) "__gohashid" !== k && k !== this.oj && this.setDataProperty(g, k, h[k]) } a = a.removedLinkKeys; if (z.isArray(a)) for (c = z.bb(a), d = 0; d < c; d++) e = z.Ya(a, d), g = this.zt(e), null !== g && this.Dx(g) }; f.Vm = function(a, b) { var c = null; if (a.Dc === Uf) { if ("linkDataArray" === a.rf ? c = this.vf : "linkLabelKeys" === a.rf && (c = this.qk(a.object)), z.isArray(c)) { if (b) z.hi(c, a.Kg), c === this.vf && (c = this.lf(a.newValue), void 0 !== c && this.hd.remove(c)); else if (z.aj(c, a.Kg, a.newValue), c === this.vf) { var d = a.newValue, c = this.lf(d); void 0 !== c && this.hd.add(c, d) } return } } else if (a.Dc === Vf && ("linkDataArray" === a.rf ? c = this.vf : "linkLabelKeys" === a.rf && (c = this.qk(a.object)), z.isArray(c))) { b ? (z.aj(c, a.Mg, a.oldValue), c === this.vf && (d = a.newValue, c = this.lf(d), void 0 !== c && this.hd.add(c, d))) : (z.hi(c, a.Mg), c === this.vf && (c = this.lf(a.newValue), void 0 !== c && this.hd.remove(c))); return } M.prototype.Vm.call(this, a, b) }; z.defineProperty(V, { Cz: "archetypeNodeData" }, function() { return this.Mk }, function(a) { var b = this.Mk; b !== a && (null !== a && z.l(a, Object, V, "archetypeNodeData"), this.Mk = a, this.j("archetypeNodeData", b, a)) }); V.prototype.pn = function(a) { if (void 0 !== a) { var b = this.Mk; if (null !== b) { var c = this.ne(a); null === c && (c = this.copyNodeData(b), z.Ra(c, this.Vj, a), this.rl(c)) } return a } }; z.defineProperty(V, { Ep: "linkFromKeyProperty" }, function() { return this.Th }, function(a) { var b = this.Th; b !== a && (xg(a, V, "linkFromKeyProperty"), this.Th = a, this.j("linkFromKeyProperty", b, a)) }); V.prototype.getFromKeyForLinkData = V.prototype.Ll = function(a) { if (null !== a) { var b = this.Th; if ("" !== b && (b = z.tb(a, b), void 0 !== b)) { if (yg(b)) return b; z.k("FromKey value for link data " + a + " is not a number or a string: " + b) } } }; V.prototype.setFromKeyForLinkData = V.prototype.Kx = function(a, b) { null === b && (b = void 0); void 0 === b || yg(b) || z.ic(b, "number or string", V, "setFromKeyForLinkData:key"); if (null !== a) { var c = this.Th; if ("" !== c) if (b = this.pn(b), this.sh(a)) { var d = z.tb(a, c); d !== b && (Dg(this, d, a), z.Ra(a, c, b), null === this.ne(b) && Cg(this, b, a), wg(this, "linkFromKey", Sf, c, a, d, b), "string" === typeof c && this.Mb(a, c)) } else z.Ra(a, c, b) } }; z.defineProperty(V, { Gp: "linkToKeyProperty" }, function() { return this.Uh }, function(a) { var b = this.Uh; b !== a && (xg(a, V, "linkToKeyProperty"), this.Uh = a, this.j("linkToKeyProperty", b, a)) }); V.prototype.getToKeyForLinkData = V.prototype.Ml = function(a) { if (null !== a) { var b = this.Uh; if ("" !== b && (b = z.tb(a, b), void 0 !== b)) { if (yg(b)) return b; z.k("ToKey value for link data " + a + " is not a number or a string: " + b) } } }; V.prototype.setToKeyForLinkData = V.prototype.Ox = function(a, b) { null === b && (b = void 0); void 0 === b || yg(b) || z.ic(b, "number or string", V, "setToKeyForLinkData:key"); if (null !== a) { var c = this.Uh; if ("" !== c) if (b = this.pn(b), this.sh(a)) { var d = z.tb(a, c); d !== b && (Dg(this, d, a), z.Ra(a, c, b), null === this.ne(b) && Cg(this, b, a), wg(this, "linkToKey", Sf, c, a, d, b), "string" === typeof c && this.Mb(a, c)) } else z.Ra(a, c, b) } }; z.defineProperty(V, { Xt: "linkFromPortIdProperty" }, function() { return this.tm }, function(a) { var b = this.tm; b !== a && (xg(a, V, "linkFromPortIdProperty"), this.tm = a, this.j("linkFromPortIdProperty", b, a)) }); V.prototype.getFromPortIdForLinkData = V.prototype.MH = function(a) { if (null === a) return ""; var b = this.tm; if ("" === b) return ""; a = z.tb(a, b); return void 0 === a ? "" : a }; V.prototype.setFromPortIdForLinkData = V.prototype.PA = function(a, b) { z.g(b, "string", V, "setFromPortIdForLinkData:portname"); if (null !== a) { var c = this.tm; if ("" !== c) if (this.sh(a)) { var d = z.tb(a, c); void 0 === d && (d = ""); d !== b && (z.Ra(a, c, b), wg(this, "linkFromPortId", Sf, c, a, d, b), "string" === typeof c && this.Mb(a, c)) } else z.Ra(a, c, b) } }; z.defineProperty(V, { Zt: "linkToPortIdProperty" }, function() { return this.um }, function(a) { var b = this.um; b !== a && (xg(a, V, "linkToPortIdProperty"), this.um = a, this.j("linkToPortIdProperty", b, a)) }); V.prototype.getToPortIdForLinkData = V.prototype.PH = function(a) { if (null === a) return ""; var b = this.um; if ("" === b) return ""; a = z.tb(a, b); return void 0 === a ? "" : a }; V.prototype.setToPortIdForLinkData = V.prototype.SA = function(a, b) { z.g(b, "string", V, "setToPortIdForLinkData:portname"); if (null !== a) { var c = this.um; if ("" !== c) if (this.sh(a)) { var d = z.tb(a, c); void 0 === d && (d = ""); d !== b && (z.Ra(a, c, b), wg(this, "linkToPortId", Sf, c, a, d, b), "string" === typeof c && this.Mb(a, c)) } else z.Ra(a, c, b) } }; z.defineProperty(V, { Yt: "linkLabelKeysProperty" }, function() { return this.ug }, function(a) { var b = this.ug; b !== a && (xg(a, V, "linkLabelKeysProperty"), this.ug = a, this.j("linkLabelKeysProperty", b, a)) }); V.prototype.getLabelKeysForLinkData = V.prototype.qk = function(a) { if (null === a) return z.xj; var b = this.ug; if ("" === b) return z.xj; a = z.tb(a, b); return void 0 === a ? z.xj : a }; V.prototype.setLabelKeysForLinkData = V.prototype.KF = function(a, b) { z.nt(b, V, "setLabelKeysForLinkData:arr"); if (null !== a) { var c = this.ug; if ("" !== c) if (this.sh(a)) { var d = z.tb(a, c); void 0 === d && (d = z.xj); if (d !== b) { for (var e = z.bb(d), g = 0; g < e; g++) { var h = z.Ya(d, g); Dg(this, h, a) } z.Ra(a, c, b); e = z.bb(b); for (g = 0; g < e; g++) h = z.Ya(b, g), null === this.ne(h) && Cg(this, h, a); wg(this, "linkLabelKeys", Sf, c, a, d, b); "string" === typeof c && this.Mb(a, c) } } else z.Ra(a, c, b) } }; V.prototype.addLabelKeyForLinkData = V.prototype.zz = function(a, b) { if (null !== b && void 0 !== b && (yg(b) || z.ic(b, "number or string", V, "addLabelKeyForLinkData:key"), null !== a)) { var c = this.ug; if ("" !== c) { var d = z.tb(a, c); void 0 === d ? (c = [], c.push(b), this.KF(a, c)) : z.isArray(d) ? 0 <= z.Dz(d, b) || (z.aj(d, Infinity, b), this.sh(a) && (null === this.ne(b) && Cg(this, b, a), wg(this, "linkLabelKeys", Uf, c, a, null, b))) : z.k(c + " property is not an Array; cannot addLabelKeyForLinkData: " + a) } } }; V.prototype.removeLabelKeyForLinkData = V.prototype.nF = function(a, b) { if (null !== b && void 0 !== b && (yg(b) || z.ic(b, "number or string", V, "removeLabelKeyForLinkData:key"), null !== a)) { var c = this.ug; if ("" !== c) { var d = z.tb(a, c); if (z.isArray(d)) { var e = z.Dz(d, b); 0 > e || (z.hi(d, e), this.sh(a) && (Dg(this, b, a), wg(this, "linkLabelKeys", Vf, c, a, b, null))) } else void 0 !== d && z.k(c + " property is not an Array; cannot removeLabelKeyforLinkData: " + a) } } }; z.defineProperty(V, { Jg: "linkDataArray" }, function() { return this.vf }, function(a) { var b = this.vf; if (b !== a) { z.nt(a, V, "linkDataArray"); this.hd.clear(); for (var c = z.bb(a), d = 0; d < c; d++) { var e = z.Ya(a, d); if (!z.Za(e)) { z.k("GraphLinksModel.linkDataArray must only contain Objects, not: " + e); return } z.It(e) } this.vf = a; if ("" !== this.oj) { for (var g = new J(Object), d = 0; d < c; d++) { var e = z.Ya(a, d), h = this.lf(e); void 0 === h ? g.add(e) : null !== this.hd.na(h) ? g.add(e) : this.hd.add(h, e) } for (d = g.i; d.next();) e = d.value, this.nA(e), g = this.lf(e), void 0 !== g && this.hd.add(g, e) } g = new K(Object); for (d = 0; d < c; d++) e = z.Ya(a, d), g.add(e); this.sm = g; wg(this, "linkDataArray", Sf, "linkDataArray", this, b, a); for (d = 0; d < c; d++) e = z.Ya(a, d), Ug(this, e) } }); z.defineProperty(V, { oj: "linkKeyProperty" }, function() { return this.dl }, function(a) { var b = this.dl; if (b !== a) { xg(a, V, "linkKeyProperty"); this.dl = a; this.hd.clear(); for (var c = z.bb(this.Jg), d = 0; d < c; d++) { var e = z.Ya(this.Jg, d), g = this.lf(e); void 0 !== g && this.hd.add(g, e) } this.j("linkKeyProperty", b, a) } }); V.prototype.getKeyForLinkData = V.prototype.lf = function(a) { if (null !== a) { var b = this.dl; if ("" !== b && (b = z.tb(a, b), void 0 !== b)) { if (yg(b)) return b; z.k("Key value for link data " + a + " is not a number or a string: " + b) } } }; V.prototype.setKeyForLinkData = V.prototype.JF = function(a, b) { void 0 !== b && null !== b && yg(b) || z.ic(b, "number or string", V, "setKeyForLinkData:key"); if (null !== a) { var c = this.dl; if ("" !== c) if (this.sh(a)) { var d = z.tb(a, c); d !== b && null === this.zt(b) && (z.Ra(a, c, b), this.hd.remove(d), this.hd.add(b, a), wg(this, "linkKey", Sf, c, a, d, b), "string" === typeof c && this.Mb(a, c)) } else z.Ra(a, c, b) } }; z.defineProperty(V, { PK: "makeUniqueLinkKeyFunction" }, function() { return this.Bo }, function(a) { var b = this.Bo; b !== a && (null !== a && z.g(a, "function", V, "makeUniqueLinkKeyFunction"), this.Bo = a, this.j("makeUniqueLinkKeyFunction", b, a)) }); V.prototype.findLinkDataForKey = V.prototype.zt = function(a) { null === a && z.k("GraphLinksModel.findLinkDataForKey:key must not be null"); return void 0 !== a && yg(a) ? this.hd.na(a) : null }; V.prototype.makeLinkDataKeyUnique = V.prototype.nA = function(a) { if (null !== a) { var b = this.dl; if ("" !== b) { var c = this.lf(a); if (void 0 === c || this.hd.contains(c)) { var d = this.Bo; if (null !== d && (c = d(this, a), void 0 !== c && null !== c && !this.hd.contains(c))) { z.Ra(a, b, c); return } if ("string" === typeof c) { for (d = 2; this.hd.contains(c + d);) d++; z.Ra(a, b, c + d) } else if (void 0 === c || "number" === typeof c) { for (d = -this.hd.count - 1; this.hd.contains(d);) d--; z.Ra(a, b, d) } else z.k("GraphLinksModel.getKeyForLinkData returned something other than a string or a number: " + c) } } } }; V.prototype.containsLinkData = V.prototype.sh = function(a) { return null === a ? !1 : this.sm.contains(a) }; V.prototype.addLinkData = V.prototype.gt = function(a) { if (null !== a) { if (void 0 === z.nd(a)) z.kc(a); else if (this.sh(a)) return; Vg(this, a, !0) } }; function Vg(a, b, c) { if ("" !== a.oj) { var d = a.lf(b); if (void 0 !== d && a.hd.na(d) === b) return; a.nA(b); d = a.lf(b); if (void 0 === d) { z.k("GraphLinksModel.makeLinkDataKeyUnique failed on " + b + ". Data not added to model."); return } a.hd.add(d, b) } a.sm.add(b); if (c) { var e = z.bb(a.vf); z.aj(a.vf, e, b) } wg(a, "linkDataArray", Uf, "linkDataArray", a, null, b, null, e); Ug(a, b) } V.prototype.addLinkDataCollection = function(a) { if (z.isArray(a)) for (var b = z.bb(a), c = 0; c < b; c++) this.gt(z.Ya(a, c)); else for (a = a.i; a.next();) this.gt(a.value) }; V.prototype.removeLinkData = V.prototype.Dx = function(a) { null !== a && Wg(this, a, !0) }; function Wg(a, b, c) { a.sm.remove(b); var d = a.lf(b); void 0 !== d && a.hd.remove(d); if (c) { var e = a.vf.indexOf(b); if (0 > e) return; z.hi(a.vf, e) } wg(a, "linkDataArray", Vf, "linkDataArray", a, b, null, e, null); c = a.Ll(b); Dg(a, c, b); c = a.Ml(b); Dg(a, c, b); d = a.qk(b); if (z.isArray(d)) for (var e = z.bb(d), g = 0; g < e; g++) c = z.Ya(d, g), Dg(a, c, b) } V.prototype.removeLinkDataCollection = function(a) { if (z.isArray(a)) for (var b = z.bb(a), c = 0; c < b; c++) this.Dx(z.Ya(a, c)); else for (a = a.i; a.next();) this.Dx(a.value) }; function Ug(a, b) { var c = a.Ll(b), c = a.pn(c); null === a.ne(c) && Cg(a, c, b); c = a.Ml(b); c = a.pn(c); null === a.ne(c) && Cg(a, c, b); var d = a.qk(b); if (z.isArray(d)) for (var e = z.bb(d), g = 0; g < e; g++) c = z.Ya(d, g), null === a.ne(c) && Cg(a, c, b) } z.defineProperty(V, { eK: "copyLinkDataFunction" }, function() { return this.Qn }, function(a) { var b = this.Qn; b !== a && (null !== a && z.g(a, "function", V, "copyLinkDataFunction"), this.Qn = a, this.j("copyLinkDataFunction", b, a)) }); V.prototype.copyLinkData = V.prototype.Pw = function(a) { if (null === a) return null; var b = null, b = this.Qn, b = null !== b ? b(a, this) : Eg(this, a, !0); z.Za(b) && (z.kc(b), "" !== this.Th && z.Ra(b, this.Th, void 0), "" !== this.Uh && z.Ra(b, this.Uh, void 0), "" !== this.ug && z.Ra(b, this.ug, [])); return b }; z.defineProperty(V, { eu: "nodeIsGroupProperty" }, function() { return this.Eo }, function(a) { var b = this.Eo; b !== a && (xg(a, V, "nodeIsGroupProperty"), this.Eo = a, this.j("nodeIsGroupProperty", b, a)) }); V.prototype.isGroupForNodeData = V.prototype.hA = function(a) { if (null === a) return !1; var b = this.Eo; return "" === b ? !1 : z.tb(a, b) ? !0 : !1 }; z.defineProperty(V, { Pp: "nodeGroupKeyProperty" }, function() { return this.jh }, function(a) { var b = this.jh; b !== a && (xg(a, V, "nodeGroupKeyProperty"), this.jh = a, this.j("nodeGroupKeyProperty", b, a)) }); z.defineProperty(V, { Zm: "copiesGroupKeyOfNodeData" }, function() { return this.Dq }, function(a) { this.Dq !== a && (z.g(a, "boolean", V, "copiesGroupKeyOfNodeData"), this.Dq = a) }); V.prototype.getGroupKeyForNodeData = V.prototype.fn = function(a) { if (null !== a) { var b = this.jh; if ("" !== b && (b = z.tb(a, b), void 0 !== b)) { if (yg(b)) return b; z.k("GroupKey value for node data " + a + " is not a number or a string: " + b) } } }; V.prototype.setGroupKeyForNodeData = V.prototype.Lx = function(a, b) { null === b && (b = void 0); void 0 === b || yg(b) || z.ic(b, "number or string", V, "setGroupKeyForNodeData:key"); if (null !== a) { var c = this.jh; if ("" !== c) if (this.le(a)) { var d = z.tb(a, c); d !== b && (Dg(this, d, a), z.Ra(a, c, b), null === this.ne(b) && Cg(this, b, a), wg(this, "nodeGroupKey", Sf, c, a, d, b), "string" === typeof c && this.Mb(a, c)) } else z.Ra(a, c, b) } }; V.prototype.copyNodeData = function(a) { if (null === a) return null; a = M.prototype.copyNodeData.call(this, a); this.Zm || "" === this.jh || void 0 === z.tb(a, this.jh) || z.Ra(a, this.jh, void 0); return a }; V.prototype.setDataProperty = function(a, b, c) { u && (z.g(a, "object", V, "setDataProperty:data"), z.g(b, "string", V, "setDataProperty:propname"), "" === b && z.k("GraphLinksModel.setDataProperty: property name must not be an empty string when setting " + a + " to " + c)); if (this.le(a)) if (b === this.qj) this.Mx(a, c); else { if (b === this.qn) { this.Jx(a, c); return } if (b === this.Pp) { this.Lx(a, c); return } b === this.eu && z.k("GraphLinksModel.setDataProperty: property name must not be the nodeIsGroupProperty: " + b) } else if (this.sh(a)) { if (b === this.Ep) { this.Kx(a, c); return } if (b === this.Gp) { this.Ox(a, c); return } if (b === this.Xt) { this.PA(a, c); return } if (b === this.Zt) { this.SA(a, c); return } if (b === this.oj) { this.JF(a, c); return } if (b === this.Wt) { this.IF(a, c); return } if (b === this.Yt) { this.KF(a, c); return } } else !Hg && a instanceof O && (Hg = !0, z.trace('GraphLinksModel.setDataProperty is modifying a GraphObject, "' + a.toString() + '"'), z.trace(" Is that really your intent?")); var d = z.tb(a, b); d !== c && (z.Ra(a, b, c), this.DA(a, b, d, c)) }; f = V.prototype; f.ju = function(a, b) { M.prototype.ju.call(this, a, b); for (var c = this.vc.i; c.next();) this.KA(c.value, a, b); for (c = this.sm.i; c.next();) { var d = c.value, e = a, g = b; if (this.Ll(d) === e) { var h = this.Th; z.Ra(d, h, g); wg(this, "linkFromKey", Sf, h, d, e, g); "string" === typeof h && this.Mb(d, h) } this.Ml(d) === e && (h = this.Uh, z.Ra(d, h, g), wg(this, "linkToKey", Sf, h, d, e, g), "string" === typeof h && this.Mb(d, h)); var k = this.qk(d); if (z.isArray(k)) for (var l = z.bb(k), h = this.ug, m = 0; m < l; m++) z.Ya(k, m) === e && (z.LD(k, m, g), wg(this, "linkLabelKeys", Uf, h, d, e, g)) } }; f.KA = function(a, b, c) { if (this.fn(a) === b) { var d = this.jh; z.Ra(a, d, c); wg(this, "nodeGroupKey", Sf, d, a, b, c); "string" === typeof d && this.Mb(a, d) } }; f.cB = function() { M.prototype.cB.call(this); for (var a = this.Jg, b = z.bb(a), c = 0; c < b; c++) { var d = z.Ya(a, c); Ug(this, d) } }; f.Up = function(a) { M.prototype.Up.call(this, a); a = this.pb(a); var b = Bg(this, a); if (null !== b) { for (var c = new J(Object), b = b.i; b.next();) { var d = b.value; if (this.le(d)) { if (this.fn(d) === a) { var e = this.jh; wg(this, "nodeGroupKey", Sf, e, d, a, a); "string" === typeof e && this.Mb(d, e); c.add(d) } } else { this.Ll(d) === a && (e = this.Th, wg(this, "linkFromKey", Sf, e, d, a, a), "string" === typeof e && this.Mb(d, e), c.add(d)); this.Ml(d) === a && (e = this.Uh, wg(this, "linkToKey", Sf, e, d, a, a), "string" === typeof e && this.Mb(d, e), c.add(d)); var g = this.qk(d); if (z.isArray(g)) for (var h = z.bb(g), e = this.ug, k = 0; k < h; k++) z.Ya(g, k) === a && (wg(this, "linkLabelKeys", Uf, e, d, a, a), c.add(d)) } } for (c = c.i; c.next();) Dg(this, a, c.value) } }; f.Tp = function(a) { M.prototype.Tp.call(this, a); var b = this.fn(a); null === this.ne(b) && Cg(this, b, a) }; f.Bu = function(a) { M.prototype.Bu.call(this, a); var b = this.fn(a); Dg(this, b, a) }; z.defineProperty(V, { Wt: "linkCategoryProperty" }, function() { return this.rm }, function(a) { var b = this.rm; b !== a && (xg(a, V, "linkCategoryProperty"), this.rm = a, this.j("linkCategoryProperty", b, a)) }); V.prototype.getCategoryForLinkData = V.prototype.ax = function(a) { if (null === a) return ""; var b = this.rm; if ("" === b) return ""; b = z.tb(a, b); if (void 0 === b) return ""; if ("string" === typeof b) return b; z.k("getCategoryForLinkData found a non-string category for " + a + ": " + b); return "" }; V.prototype.setCategoryForLinkData = V.prototype.IF = function(a, b) { z.g(b, "string", V, "setCategoryForLinkData:cat"); if (null !== a) { var c = this.rm; if ("" !== c) if (this.sh(a)) { var d = z.tb(a, c); void 0 === d && (d = ""); d !== b && (z.Ra(a, c, b), wg(this, "linkCategory", Sf, c, a, d, b), "string" === typeof c && this.Mb(a, c)) } else z.Ra(a, c, b) } }; function ng(a) { 1 < arguments.length && z.k("TreeModel constructor can only take one optional argument, the Array of node data."); M.call(this); this.kh = "parent"; this.Eq = !1; this.Am = "parentLinkCategory"; void 0 !== a && (this.gg = a) } z.Qa(ng, M); z.ia("TreeModel", ng); ng.prototype.cloneProtected = function(a) { M.prototype.cloneProtected.call(this, a); a.kh = this.kh; a.Eq = this.Eq; a.Am = this.Am }; ng.prototype.toString = function(a) { void 0 === a && (a = 0); if (2 <= a) return this.ZA(); var b = ("" !== this.name ? this.name : "") + " TreeModel"; if (0 < a) { b += "\n node data:"; a = this.gg; for (var c = z.bb(a), d = 0; d < c; d++) var e = z.Ya(a, d), b = b + (" " + this.pb(e) + ":" + ka(e)) } return b }; ng.prototype.Cn = function() { var a = M.prototype.Cn.call(this), b = ""; "parent" !== this.Qp && "string" === typeof this.Qp && (b += ',\n "nodeParentKeyProperty": ' + this.quote(this.Qp)); return a + b }; ng.prototype.hu = function(a) { M.prototype.hu.call(this, a); a.nodeParentKeyProperty && (this.Qp = a.nodeParentKeyProperty) }; ng.prototype.pn = function(a) { return a }; z.defineProperty(ng, { Qp: "nodeParentKeyProperty" }, function() { return this.kh }, function(a) { var b = this.kh; b !== a && (xg(a, ng, "nodeParentKeyProperty"), this.kh = a, this.j("nodeParentKeyProperty", b, a)) }); z.defineProperty(ng, { $m: "copiesParentKeyOfNodeData" }, function() { return this.Eq }, function(a) { this.Eq !== a && (z.g(a, "boolean", ng, "copiesParentKeyOfNodeData"), this.Eq = a) }); ng.prototype.getParentKeyForNodeData = ng.prototype.gn = function(a) { if (null !== a) { var b = this.kh; if ("" !== b && (b = z.tb(a, b), void 0 !== b)) { if (yg(b)) return b; z.k("ParentKey value for node data " + a + " is not a number or a string: " + b) } } }; ng.prototype.setParentKeyForNodeData = ng.prototype.Eh = function(a, b) { null === b && (b = void 0); void 0 === b || yg(b) || z.ic(b, "number or string", ng, "setParentKeyForNodeData:key"); if (null !== a) { var c = this.kh; if ("" !== c) if (b = this.pn(b), this.le(a)) { var d = z.tb(a, c); d !== b && (Dg(this, d, a), z.Ra(a, c, b), null === this.ne(b) && Cg(this, b, a), wg(this, "nodeParentKey", Sf, c, a, d, b), "string" === typeof c && this.Mb(a, c)) } else z.Ra(a, c, b) } }; z.defineProperty(ng, { kL: "parentLinkCategoryProperty" }, function() { return this.Am }, function(a) { var b = this.Am; b !== a && (xg(a, ng, "parentLinkCategoryProperty"), this.Am = a, this.j("parentLinkCategoryProperty", b, a)) }); ng.prototype.getParentLinkCategoryForNodeData = ng.prototype.OH = function(a) { if (null === a) return ""; var b = this.Am; if ("" === b) return ""; b = z.tb(a, b); if (void 0 === b) return ""; if ("string" === typeof b) return b; z.k("getParentLinkCategoryForNodeData found a non-string category for " + a + ": " + b); return "" }; ng.prototype.setParentLinkCategoryForNodeData = ng.prototype.jJ = function(a, b) { z.g(b, "string", ng, "setParentLinkCategoryForNodeData:cat"); if (null !== a) { var c = this.Am; if ("" !== c) if (this.le(a)) { var d = z.tb(a, c); void 0 === d && (d = ""); d !== b && (z.Ra(a, c, b), wg(this, "parentLinkCategory", Sf, c, a, d, b), "string" === typeof c && this.Mb(a, c)) } else z.Ra(a, c, b) } }; ng.prototype.copyNodeData = function(a) { if (null === a) return null; a = M.prototype.copyNodeData.call(this, a); this.$m || "" === this.kh || void 0 === z.tb(a, this.kh) || z.Ra(a, this.kh, void 0); return a }; ng.prototype.setDataProperty = function(a, b, c) { u && (z.g(a, "object", ng, "setDataProperty:data"), z.g(b, "string", ng, "setDataProperty:propname"), "" === b && z.k("TreeModel.setDataProperty: property name must not be an empty string when setting " + a + " to " + c)); if (this.le(a)) if (b === this.qj) this.Mx(a, c); else { if (b === this.qn) { this.Jx(a, c); return } if (b === this.Qp) { this.Eh(a, c); return } } else !Hg && a instanceof O && (Hg = !0, z.trace('TreeModel.setDataProperty is modifying a GraphObject, "' + a.toString() + '"'), z.trace(" Is that really your intent?")); var d = z.tb(a, b); d !== c && (z.Ra(a, b, c), this.DA(a, b, d, c)) }; f = ng.prototype; f.ju = function(a, b) { M.prototype.ju.call(this, a, b); for (var c = this.vc.i; c.next();) this.KA(c.value, a, b) }; f.KA = function(a, b, c) { if (this.gn(a) === b) { var d = this.kh; z.Ra(a, d, c); wg(this, "nodeParentKey", Sf, d, a, b, c); "string" === typeof d && this.Mb(a, d) } }; f.Up = function(a) { M.prototype.Up.call(this, a); a = this.pb(a); var b = Bg(this, a); if (null !== b) { for (var c = new J(Object), b = b.i; b.next();) { var d = b.value; if (this.le(d) && this.gn(d) === a) { var e = this.kh; wg(this, "nodeParentKey", Sf, e, d, a, a); "string" === typeof e && this.Mb(d, e); c.add(d) } } for (c = c.i; c.next();) Dg(this, a, c.value) } }; f.Tp = function(a) { M.prototype.Tp.call(this, a); var b = this.gn(a), b = this.pn(b); null === this.ne(b) && Cg(this, b, a) }; f.Bu = function(a) { M.prototype.Bu.call(this, a); var b = this.gn(a); Dg(this, b, a) }; function Xg(a, b, c) { z.kc(this); this.G = !1; void 0 === a ? a = "" : z.g(a, "string", Xg, "constructor:targetprop"); void 0 === b ? b = a : z.g(b, "string", Xg, "constructor:sourceprop"); void 0 === c ? c = null : null !== c && z.g(c, "function", Xg, "constructor:conv"); this.fD = -1; this.Ag = null; this.Xo = a; this.Wo = this.Ts = 0; this.pw = null; this.qr = !1; this.No = b; this.Bq = c; this.Nr = Yg; this.uq = null } z.ia("Binding", Xg); Xg.prototype.copy = function() { var a = new Xg; a.Xo = this.Xo; a.Ts = this.Ts; a.Wo = this.Wo; a.pw = this.pw; a.qr = this.qr; a.No = this.No; a.Bq = this.Bq; a.Nr = this.Nr; a.uq = this.uq; return a }; var Yg; Xg.OneWay = Yg = z.s(Xg, "OneWay", 1); var Zg; Xg.TwoWay = Zg = z.s(Xg, "TwoWay", 2); Xg.parseEnum = function(a, b) { z.g(a, "function", Xg, "parseEnum:ctor"); z.Ba(b, a, Xg, "parseEnum:defval"); return function(c) { c = Ja(a, c); return null === c ? b : c } }; var ka; Xg.toString = ka = function(a) { var b = a; z.Za(a) && (a.text ? b = a.text : a.name ? b = a.name : void 0 !== a.key ? b = a.key : void 0 !== a.id ? b = a.id : a.constructor === Object && (a.Text ? b = a.Text : a.Name ? b = a.Name : void 0 !== a.Key ? b = a.Key : void 0 !== a.Id ? b = a.Id : void 0 !== a.ID && (b = a.ID))); return void 0 === b ? "undefined" : null === b ? "null" : b.toString() }; Xg.prototype.toString = function() { return "Binding(" + this.yu + ":" + this.OF + (-1 !== this.Wl ? " " + this.Wl : "") + " " + this.mode.name + ")" }; Xg.prototype.freeze = function() { this.G = !0; return this }; Xg.prototype.Wa = function() { this.G = !1; return this }; z.defineProperty(Xg, { Wl: null }, function() { return this.fD }, function(a) { this.G && z.oa(this); z.g(a, "number", Xg, "targetId"); this.fD = a }); z.defineProperty(Xg, { yu: "targetProperty" }, function() { return this.Xo }, function(a) { this.G && z.oa(this); z.g(a, "string", Xg, "targetProperty"); this.Xo = a }); z.defineProperty(Xg, { yn: "sourceName" }, function() { return this.pw }, function(a) { this.G && z.oa(this); null !== a && z.g(a, "string", Xg, "sourceName"); this.pw = a; null !== a && (this.qr = !1) }); z.defineProperty(Xg, { St: "isToModel" }, function() { return this.qr }, function(a) { this.G && z.oa(this); z.g(a, "boolean", Xg, "isToModel"); this.qr = a }); z.defineProperty(Xg, { OF: "sourceProperty" }, function() { return this.No }, function(a) { this.G && z.oa(this); z.g(a, "string", Xg, "sourceProperty"); this.No = a }); z.defineProperty(Xg, { hH: "converter" }, function() { return this.Bq }, function(a) { this.G && z.oa(this); null !== a && z.g(a, "function", Xg, "converter"); this.Bq = a }); z.defineProperty(Xg, { XG: "backConverter" }, function() { return this.uq }, function(a) { this.G && z.oa(this); null !== a && z.g(a, "function", Xg, "backConverter"); this.uq = a }); z.defineProperty(Xg, { mode: "mode" }, function() { return this.Nr }, function(a) { this.G && z.oa(this); z.Ba(a, Xg, Xg, "mode"); this.Nr = a }); Xg.prototype.makeTwoWay = Xg.prototype.yI = function(a) { void 0 === a && (a = null); null !== a && z.g(a, "function", Xg, "makeTwoWay"); this.mode = Zg; this.XG = a; return this }; Xg.prototype.ofObject = Xg.prototype.ux = function(a) { void 0 === a && (a = ""); u && z.g(a, "string", Xg, "ofObject:srcname"); this.yn = a; this.St = !1; return this }; Xg.prototype.ofModel = function() { this.yn = null; this.St = !0; return this }; Xg.prototype.ofData = function() { this.yn = null; this.St = !1; return this }; function $g(a, b, c) { a = a.yn; var d = null; return d = null === a || "" === a ? b : "." === a ? c : ".." === a ? c.U : b.oe(a) } Xg.prototype.updateTarget = Xg.prototype.fG = function(a, b, c) { var d = this.No; if (void 0 === c || "" === d || d === c) { c = this.Xo; var e = this.Bq; if (null === e && "" === c) z.trace("Binding error: target property is the empty string: " + this.toString()); else { u && "string" === typeof c && ("function" !== typeof a.setAttribute && 0 < c.length && "_" !== c[0] && !z.ex(a, c) ? z.trace("Binding error: undefined target property: " + c + " on " + a.toString()) : "name" === c && a instanceof O && z.trace("Binding error: cannot modify GraphObject.name on " + a.toString())); var g = b; "" !== d && (g = z.tb(b, d)); if (void 0 !== g) if (null === e) "" !== c && z.Ra(a, c, g); else try { if ("" !== c) { var h = e(g, a); u && void 0 === h && z.trace('Binding warning: conversion function returned undefined when setting target property "' + c + '" on ' + a.toString() + ", function is: " + e); z.Ra(a, c, h) } else e(g, a) } catch (k) { u && z.trace("Binding error: " + k.toString() + ' setting target property "' + c + '" on ' + a.toString() + " with conversion function: " + e) } } } }; Xg.prototype.updateSource = Xg.prototype.Rx = function(a, b, c, d) { void 0 === d && (d = null); if (this.Nr === Zg) { var e = this.Xo; if (void 0 === c || e === c) { c = this.No; var g = this.uq; if (null !== g || "" !== c) { var h = a; "" !== e && (h = z.tb(a, e)); if (void 0 !== h) if (a = null !== d ? d.ha : null, null === g) null !== a ? (u && a.qj === c && a.le(b) && z.trace("Binding error: cannot have TwoWay Binding on node data key property: " + this.toString()), a.setDataProperty(b, c, h)) : z.Ra(b, c, h); else try { if ("" !== c) { var k = g(h, b, a); null !== a ? (u && (a.qj === c && a.le(b) && z.trace("Binding error: cannot have TwoWay Binding on node data key property: " + this.toString()), void 0 === k && z.trace('Binding warning: conversion function returned undefined when setting source property "' + c + '" on ' + b.toString() + ", function is: " + g)), a.setDataProperty(b, c, k)) : z.Ra(b, c, k) } else g(h, b, a) } catch (l) { u && z.trace("Binding error: " + l.toString() + ' setting source property "' + c + '" on ' + b.toString() + " with conversion function: " + g) } } } } }; function og() { this.mG = (new J(Rf)).freeze(); this.Ub = ""; this.mC = !1 } z.ia("Transaction", og); og.prototype.toString = function(a) { var b = "Transaction: " + this.name + " " + this.Yf.count.toString() + (this.Nt ? "" : ", incomplete"); if (void 0 !== a && 0 < a) { a = this.Yf.count; for (var c = 0; c < a; c++) { var d = this.Yf.ea(c); null !== d && (b += "\n " + d.toString()) } } return b }; og.prototype.clear = og.prototype.clear = function() { var a = this.Yf; a.Wa(); for (var b = a.count - 1; 0 <= b; b--) { var c = a.ea(b); null !== c && c.clear() } a.clear(); a.freeze() }; og.prototype.canUndo = og.prototype.canUndo = function() { return this.Nt }; og.prototype.undo = og.prototype.undo = function() { if (this.canUndo()) for (var a = this.Yf.count - 1; 0 <= a; a--) { var b = this.Yf.ea(a); null !== b && b.undo() } }; og.prototype.canRedo = og.prototype.canRedo = function() { return this.Nt }; og.prototype.redo = og.prototype.redo = function() { if (this.canRedo()) for (var a = this.Yf.count, b = 0; b < a; b++) { var c = this.Yf.ea(b); null !== c && c.redo() } }; z.w(og, { Yf: "changes" }, function() { return this.mG }); z.defineProperty(og, { name: "name" }, function() { return this.Ub }, function(a) { this.Ub = a }); z.defineProperty(og, { Nt: "isComplete" }, function() { return this.mC }, function(a) { this.mC = a }); function Wf() { this.bz = new K(M); this.af = !1; this.qG = (new J(og)).freeze(); this.bh = -1; this.BC = 999; this.Hi = !1; this.ev = null; this.pl = 0; this.oy = !1; u && (this.oy = !0); this.ih = (new J("string")).freeze(); this.Do = new J("number"); this.Ky = !0; this.Wy = !1 } z.ia("UndoManager", Wf); Wf.prototype.toString = function(a) { for (var b = "UndoManager " + this.ij + "<" + this.history.count + "<=" + this.$E, b = b + "[", c = this.eF.count, d = 0; d < c; d++) 0 < d && (b += " "), b += this.eF.ea(d); b += "]"; if (void 0 !== a && 0 < a) for (c = this.history.count, d = 0; d < c; d++) b += "\n " + this.history.ea(d).toString(a - 1); return b }; Wf.prototype.clear = Wf.prototype.clear = function() { var a = this.history; a.Wa(); for (var b = a.count - 1; 0 <= b; b--) { var c = a.ea(b); null !== c && c.clear() } a.clear(); this.bh = -1; a.freeze(); this.Hi = !1; this.ev = null; this.pl = 0; this.ih.Wa(); this.ih.clear(); this.ih.freeze(); this.Do.clear() }; Wf.prototype.addModel = Wf.prototype.PG = function(a) { this.bz.add(a) }; Wf.prototype.removeModel = Wf.prototype.YI = function(a) { this.bz.remove(a) }; Wf.prototype.startTransaction = Wf.prototype.Wb = function(a) { void 0 === a && (a = ""); null === a && (a = ""); if (this.qb) return !1; !0 === this.Ky && (this.Ky = !1, this.pl++, this.kd("StartingFirstTransaction", a, this.dj), 0 < this.pl && this.pl--); this.isEnabled && (this.ih.Wa(), this.ih.add(a), this.ih.freeze(), null === this.dj ? this.Do.add(0) : this.Do.add(this.dj.Yf.count)); this.pl++; var b = 1 === this.Gh; b && this.kd("StartedTransaction", a, this.dj); return b }; Wf.prototype.commitTransaction = Wf.prototype.Jd = function(a) { void 0 === a && (a = ""); return ah(this, !0, a) }; Wf.prototype.rollbackTransaction = Wf.prototype.Vp = function() { return ah(this, !1, "") }; function ah(a, b, c) { if (a.qb) return !1; a.Ez && 1 > a.Gh && z.trace("Ending transaction without having started a transaction: " + c); var d = 1 === a.Gh; d && b && a.isEnabled && a.kd("CommittingTransaction", c, a.dj); var e = 0; if (0 < a.Gh && (a.pl--, a.isEnabled)) { var g = a.ih.count; 0 < g && ("" === c && (c = a.ih.ea(0)), a.ih.Wa(), a.ih.dd(g - 1), a.ih.freeze()); g = a.Do.count; 0 < g && (e = a.Do.ea(g - 1), a.Do.dd(g - 1)) } g = a.dj; if (d) { if (b) { a.Wy = !1; if (a.isEnabled && null !== g) { b = g; b.Nt = !0; b.name = c; d = a.history; d.Wa(); for (e = d.count - 1; e > a.ij; e--) g = d.ea(e), null !== g && g.clear(), d.dd(e), a.Wy = !0; e = a.$E; 0 === e && (e = 1); 0 < e && d.count >= e && (g = d.ea(0), null !== g && g.clear(), d.dd(0), a.bh--); d.add(b); a.bh++; d.freeze(); g = b } a.kd("CommittedTransaction", c, g) } else { a.Hi = !0; try { a.isEnabled && null !== g && (g.Nt = !0, g.undo()) } finally { a.kd("RolledBackTransaction", c, g), a.Hi = !1 } null !== g && g.clear() } a.ev = null; return !0 } if (a.isEnabled && !b && null !== g) { a = e; c = g.Yf; for (b = c.count - 1; b >= a; b--) d = c.ea(b), null !== d && d.undo(), c.Wa(), c.dd(b); c.freeze() } return !1 } Wf.prototype.canUndo = Wf.prototype.canUndo = function() { if (!this.isEnabled || 0 < this.Gh || this.qb) return !1; var a = this.aG; return null !== a && a.canUndo() ? !0 : !1 }; Wf.prototype.undo = Wf.prototype.undo = function() { if (this.canUndo()) { var a = this.aG; try { this.kd("StartingUndo", "Undo", a), this.Hi = !0, this.bh--, a.undo() } catch (b) { z.trace("undo error: " + b.toString()) } finally { this.Hi = !1, this.kd("FinishedUndo", "Undo", a) } } }; Wf.prototype.canRedo = Wf.prototype.canRedo = function() { if (!this.isEnabled || 0 < this.Gh || this.qb) return !1; var a = this.$F; return null !== a && a.canRedo() ? !0 : !1 }; Wf.prototype.redo = Wf.prototype.redo = function() { if (this.canRedo()) { var a = this.$F; try { this.kd("StartingRedo", "Redo", a), this.Hi = !0, this.bh++, a.redo() } catch (b) { z.trace("redo error: " + b.toString()) } finally { this.Hi = !1, this.kd("FinishedRedo", "Redo", a) } } }; Wf.prototype.kd = function(a, b, c) { void 0 === c && (c = null); var d = new Rf; d.Dc = Tf; d.propertyName = a; d.object = c; d.oldValue = b; for (a = this.HI; a.next();) b = a.value, d.ha = b, b.Kw(d) }; Wf.prototype.handleChanged = Wf.prototype.DE = function(a) { if (this.isEnabled && !this.qb && !this.skipsEvent(a)) { var b = this.dj; null === b && (this.ev = b = new og); var c = a.copy(), b = b.Yf; b.Wa(); b.add(c); b.freeze(); this.Ez && 0 >= this.Gh && !this.Ky && (a = a.h, null !== a && !1 === a.kn || z.trace("Change not within a transaction: " + c.toString())) } }; Wf.prototype.skipsEvent = function(a) { if (null === a || 0 > a.Dc.value) return !0; a = a.object; if (a instanceof O) { if (a = a.layer, null !== a && a.Nc) return !0 } else if (a instanceof tg && a.Nc) return !0; return !1 }; z.w(Wf, { HI: "models" }, function() { return this.bz.i }); z.defineProperty(Wf, { isEnabled: "isEnabled" }, function() { return this.af }, function(a) { this.af = a }); z.w(Wf, { aG: "transactionToUndo" }, function() { return 0 <= this.ij && this.ij <= this.history.count - 1 ? this.history.ea(this.ij) : null }); z.w(Wf, { $F: "transactionToRedo" }, function() { return this.ij < this.history.count - 1 ? this.history.ea(this.ij + 1) : null }); z.w(Wf, { qb: "isUndoingRedoing" }, function() { return this.Hi }); z.w(Wf, { history: "history" }, function() { return this.qG }); z.defineProperty(Wf, { $E: "maxHistoryLength" }, function() { return this.BC }, function(a) { this.BC = a }); z.w(Wf, { ij: "historyIndex" }, function() { return this.bh }); z.w(Wf, { dj: "currentTransaction" }, function() { return this.ev }); z.w(Wf, { Gh: "transactionLevel" }, function() { return this.pl }); z.w(Wf, { QE: "isInTransaction" }, function() { return 0 < this.pl }); z.defineProperty(Wf, { Ez: "checksTransactionLevel" }, function() { return this.oy }, function(a) { this.oy = a }); z.w(Wf, { eF: "nestedTransactionNames" }, function() { return this.ih }); function ra() { 0 < arguments.length && z.od(ra); z.kc(this); this.Z = null; this.zB = !1; this.TB = this.AB = !0; this.CB = this.DB = this.UB = this.EB = !1; this.hl = this.iy = null; this.yD = 1.05; this.RB = 1; this.Xy = NaN; this.yC = null; this.xz = NaN; this.wz = Jd; this.Ui = null } z.ia("CommandHandler", ra); var bh = null, ch = ""; ra.prototype.toString = function() { return "CommandHandler" }; z.w(ra, { h: "diagram" }, function() { return this.Z }); ra.prototype.Sc = function(a) { u && null !== a && z.l(a, C, ra, "setDiagram"); this.Z = a }; ra.prototype.doKeyDown = function() { var a = this.h; if (null !== a) { var b = a.Q, c = z.rk ? b.$t : b.control, d = b.shift, e = b.alt, g = b.key; !c || "C" !== g && "Insert" !== g ? c && "X" === g || d && "Del" === g ? this.canCutSelection() && this.cutSelection() : c && "V" === g || d && "Insert" === g ? this.canPasteSelection() && this.pasteSelection() : c && "Y" === g || e && d && "Backspace" === g ? this.canRedo() && this.redo() : c && "Z" === g || e && "Backspace" === g ? this.canUndo() && this.undo() : "Del" === g || "Backspace" === g ? this.canDeleteSelection() && this.deleteSelection() : c && "A" === g ? this.canSelectAll() && this.selectAll() : "Esc" === g ? this.canStopCommand() && this.stopCommand() : "Up" === g ? a.ye && (c ? a.scroll("pixel", "up") : a.scroll("line", "up")) : "Down" === g ? a.ye && (c ? a.scroll("pixel", "down") : a.scroll("line", "down")) : "Left" === g ? a.xe && (c ? a.scroll("pixel", "left") : a.scroll("line", "left")) : "Right" === g ? a.xe && (c ? a.scroll("pixel", "right") : a.scroll("line", "right")) : "PageUp" === g ? d && a.xe ? a.scroll("page", "left") : a.ye && a.scroll("page", "up") : "PageDown" === g ? d && a.xe ? a.scroll("page", "right") : a.ye && a.scroll("page", "down") : "Home" === g ? c && a.ye ? a.scroll("document", "up") : !c && a.xe && a.scroll("document", "left") : "End" === g ? c && a.ye ? a.scroll("document", "down") : !c && a.xe && a.scroll("document", "right") : " " === g ? this.canScrollToPart() && this.scrollToPart() : "Subtract" === g ? this.canDecreaseZoom() && this.decreaseZoom() : "Add" === g ? this.canIncreaseZoom() && this.increaseZoom() : c && "0" === g ? this.canResetZoom() && this.resetZoom() : d && "Z" === g ? this.canZoomToFit() && this.zoomToFit() : c && !d && "G" === g ? this.canGroupSelection() && this.groupSelection() : c && d && "G" === g ? this.canUngroupSelection() && this.ungroupSelection() : b.event && 113 === b.event.which ? this.canEditTextBlock() && this.editTextBlock() : b.event && 93 === b.event.which ? this.canShowContextMenu() && this.showContextMenu() : b.bubbles = !0 : this.canCopySelection() && this.copySelection() } }; ra.prototype.doKeyUp = function() { var a = this.h; null !== a && (a.Q.bubbles = !0) }; ra.prototype.stopCommand = function() { var a = this.h; if (null !== a) { var b = a.eb; b instanceof dh && a.xf && a.Mw(); null !== b && b.doCancel() } }; ra.prototype.canStopCommand = function() { return !0 }; ra.prototype.selectAll = function() { var a = this.h; if (null !== a) { a.ta(); try { a.gc = "wait"; a.Ja("ChangingSelection"); for (var b = a.ni; b.next();) b.value.kb = !0; for (var c = a.Lg; c.next();) c.value.kb = !0; for (var d = a.links; d.next();) d.value.kb = !0 } finally { a.Ja("ChangedSelection"), a.gc = "" } } }; ra.prototype.canSelectAll = function() { var a = this.h; return null !== a && a.xf }; ra.prototype.deleteSelection = function() { var a = this.h; if (null !== a && !a.Ja("SelectionDeleting", a.selection)) try { a.gc = "wait"; a.Wb("Delete"); a.Ja("ChangingSelection"); for (var b = new K(D), c = a.selection.i; c.next();) eh(b, c.value, !0, this.qH ? Infinity : 0, this.hE, function(a) { return a.canDelete() }); a.JA(b, !0); a.Ja("SelectionDeleted", b) } finally { a.Ja("ChangedSelection"), a.Jd("Delete"), a.gc = "" } }; ra.prototype.canDeleteSelection = function() { var a = this.h; return null === a || a.jb || a.Ef || !a.Sm || 0 === a.selection.count ? !1 : !0 }; function eh(a, b, c, d, e, g) { void 0 === g && (g = null); if (!(a.contains(b) || null !== g && !g(b) || b instanceof da)) if (a.add(b), b instanceof E) { if (c && b instanceof F) for (var h = b.Hc; h.next();) eh(a, h.value, c, d, e, g); if (e) for (h = b.ee; h.next();) { var k = h.value; if (!a.contains(k)) { var l = k.Y, m = k.da; null !== l && a.contains(l) && null !== m && a.contains(m) ? eh(a, k, c, d, e, g) : null !== l && null !== m || eh(a, k, c, d, e, g) } } if (1 < d) for (b = b.tE(); b.next();) eh(a, b.value, c, d - 1, e, g) } else if (b instanceof G) for (h = b.Hf; h.next();) eh(a, h.value, c, d, e, g) } ra.prototype.hp = function(a, b, c) { var d = new na(D, D); for (a = a.i; a.next();) fh(this, a.value, b, d, c); if (null !== b) { c = b.ha; a = !1; null !== b.hb.me && (a = b.hb.me.fj); for (var e = new K(G), g = new na(G, G), h = d.i; h.next();) { var k = h.value; if (k instanceof G) { var l = k; a || null !== l.Y && null !== l.da || e.add(l) } else if (c instanceof ng && k instanceof E && null !== k.data) { var l = c, m = k, k = h.key, n = k.Hl(); null !== n && (n = d.na(n), null !== n ? (l.Eh(m.data, l.pb(n.data)), l = b.Zf(m.data), k = k.pp(), null !== k && null !== l && g.add(k, l)) : l.Eh(m.data, void 0)) } } 0 < e.count && b.JA(e, !1); if (0 < g.count) for (c = g.i; c.next();) d.add(c.key, c.value) } if (null !== b && (b = b.ha, c = b.RG, null !== c)) { var p = new na; d.each(function(a) { null !== a.key.data && p.add(a.key.data, a.value.data) }); c(p, b, this.h.ha) } for (b = d.i; b.next();) b.value.Mb(); return d }; function fh(a, b, c, d, e) { if (null === b || e && !b.canCopy()) return null; if (d.contains(b)) return d.na(b); var g = null, h = b.data; if (null !== h && null !== c) { var k = c.ha; b instanceof G ? k instanceof V && (h = k.Pw(h), z.Za(h) && (k.gt(h), g = c.Zf(h))) : (h = k.copyNodeData(h), z.Za(h) && (k.rl(h), g = c.uh(h))) } else gh(b), g = b.copy(), null !== g && (null !== c ? c.add(g) : null !== h && a.iH && (k = a.h.ha, h = g instanceof G && k instanceof V ? k.Pw(h) : k.copyNodeData(h), z.Za(h) && (g.data = h))); if (!(g instanceof D)) return null; g.kb = !1; g.wh = !1; d.add(b, g); if (b instanceof E) { for (h = b.ee; h.next();) { k = h.value; if (k.Y === b) { var l = d.na(k); null !== l && (l.Y = g) } k.da === b && (l = d.na(k), null !== l && (l.da = g)) } if (b instanceof F && g instanceof F) for (h = g, b = b.Hc; b.next();) k = fh(a, b.value, c, d, e), k instanceof G || null === k || (k.Va = h) } else if (b instanceof G) for (h = b.Y, null !== h && (h = d.na(h), null !== h && (g.Y = h)), h = b.da, null !== h && (h = d.na(h), null !== h && (g.da = h)), b = b.Hf; b.next();) h = fh(a, b.value, c, d, e), null !== h && (h.Nd = g); return g } ra.prototype.copySelection = function() { var a = this.h; if (null !== a) { for (var b = new K(D), a = a.selection.i; a.next();) eh(b, a.value, !0, this.lH ? Infinity : 0, this.jH, function(a) { return a.canCopy() }); this.copyToClipboard(b) } }; ra.prototype.canCopySelection = function() { var a = this.h; return null !== a && a.kk && a.Az && 0 !== a.selection.count ? !0 : !1 }; ra.prototype.cutSelection = function() { this.copySelection(); this.deleteSelection() }; ra.prototype.canCutSelection = function() { var a = this.h; return null !== a && !a.jb && !a.Ef && a.kk && a.Sm && a.Az && 0 !== a.selection.count ? !0 : !1 }; ra.prototype.copyToClipboard = function(a) { var b = this.h; if (null !== b) { var c = null; if (null === a) bh = null, ch = ""; else { var c = b.ha, d = !1, e = !1, g = null; try { if (c instanceof ng) { var h = c, d = h.$m; h.$m = this.ZD } c instanceof V && (h = c, e = h.Zm, h.Zm = this.YD); g = b.hp(a, null, !0) } finally { c instanceof ng && (c.$m = d), c instanceof V && (c.Zm = e), c = new J(D), c.$c(g), bh = c, ch = b.ha.Al } } b.Ja("ClipboardChanged", c) } }; ra.prototype.pasteFromClipboard = function() { var a = new K(D), b = bh; if (null === b) return a; var c = this.h; if (null === c || ch !== c.ha.Al) return a; var d = c.ha, e = !1, g = !1, h = null; try { if (d instanceof ng) { var k = d, e = k.$m; k.$m = this.ZD } d instanceof V && (k = d, g = k.Zm, k.Zm = this.YD); h = c.hp(b, c, !1) } finally { for (d instanceof ng && (d.$m = e), d instanceof V && (d.Zm = g), b = h.i; b.next();) c = b.value, d = b.key, c.location.F() || (d.location.F() ? c.location = d.location : !c.position.F() && d.position.F() && (c.position = d.position)), a.add(c) } return a }; ra.prototype.pasteSelection = function(a) { void 0 === a && (a = null); var b = this.h; if (null !== b) try { b.gc = "wait"; b.Wb("Paste"); b.Ja("ChangingSelection"); var c = this.pasteFromClipboard(); 0 < c.count && hh(b); for (var d = c.i; d.next();) d.value.kb = !0; b.Ja("ChangedSelection"); if (null !== a) { var e = b.computePartsBounds(b.selection); if (e) { var g = b.hb.me; null === g && (g = new ih, g.Sc(b)); var h = g.computeEffectiveCollection(b.selection); g.moveParts(h, new N(a.x - e.ra, a.y - e.za), !1) } } b.Ja("ClipboardPasted", c) } finally { b.Jd("Paste"), b.gc = "" } }; ra.prototype.canPasteSelection = function() { var a = this.h; return null === a || a.jb || a.Ef || !a.ap || !a.Az || null === bh || ch !== a.ha.Al ? !1 : !0 }; ra.prototype.undo = function() { var a = this.h; null !== a && a.pa.undo() }; ra.prototype.canUndo = function() { var a = this.h; return null === a || a.jb || a.Ef ? !1 : a.GD && a.pa.canUndo() }; ra.prototype.redo = function() { var a = this.h; null !== a && a.pa.redo() }; ra.prototype.canRedo = function() { var a = this.h; return null === a || a.jb || a.Ef ? !1 : a.GD && a.pa.canRedo() }; ra.prototype.decreaseZoom = function(a) { void 0 === a && (a = 1 / this.Tx); z.p(a, ra, "decreaseZoom:factor"); var b = this.h; null !== b && b.wl === jh && (a *= b.scale, a < b.yh || a > b.xh || (b.scale = a)) }; ra.prototype.canDecreaseZoom = function(a) { void 0 === a && (a = 1 / this.Tx); z.p(a, ra, "canDecreaseZoom:factor"); var b = this.h; if (null === b || b.wl !== jh) return !1; a *= b.scale; return a < b.yh || a > b.xh ? !1 : b.Jw }; ra.prototype.increaseZoom = function(a) { void 0 === a && (a = this.Tx); z.p(a, ra, "increaseZoom:factor"); var b = this.h; null !== b && b.wl === jh && (a *= b.scale, a < b.yh || a > b.xh || (b.scale = a)) }; ra.prototype.canIncreaseZoom = function(a) { void 0 === a && (a = this.Tx); z.p(a, ra, "canIncreaseZoom:factor"); var b = this.h; if (null === b || b.wl !== jh) return !1; a *= b.scale; return a < b.yh || a > b.xh ? !1 : b.Jw }; ra.prototype.resetZoom = function(a) { void 0 === a && (a = this.Rw); z.p(a, ra, "resetZoom:newscale"); var b = this.h; null === b || a < b.yh || a > b.xh || (b.scale = a) }; ra.prototype.canResetZoom = function(a) { void 0 === a && (a = this.Rw); z.p(a, ra, "canResetZoom:newscale"); var b = this.h; return null === b || a < b.yh || a > b.xh ? !1 : b.Jw }; ra.prototype.zoomToFit = function() { var a = this.h; if (null !== a) { var b = a.scale, c = a.position; b === this.xz && !isNaN(this.Xy) && a.ad.N(this.wz) ? (a.scale = this.Xy, a.position = this.yC, this.xz = NaN, this.wz = Jd) : (this.Xy = b, this.yC = c.copy(), a.zoomToFit(), this.xz = a.scale, this.wz = a.ad.copy()) } }; ra.prototype.canZoomToFit = function() { var a = this.h; return null === a ? !1 : a.Jw }; ra.prototype.scrollToPart = function(a) { void 0 === a && (a = null); null !== a && z.l(a, D, ra, "part"); var b = this.h; if (null !== b) { if (null === a) { try { null !== this.Ui && (this.Ui.next() ? a = this.Ui.value : this.Ui = null) } catch (c) { this.Ui = null } null === a && (0 < b.hn.count ? this.Ui = b.hn.i : 0 < b.selection.count && (this.Ui = b.selection.i), null !== this.Ui && this.Ui.next() && (a = this.Ui.value)) } if (null !== a) { var d = b.Ua; d.sn("Scroll To Part"); var e = b.position.copy(); b.YG(a.W); e.Mc(b.position) && d.oi() } } }; ra.prototype.canScrollToPart = function(a) { void 0 === a && (a = null); null !== a && z.l(a, D, ra, "part"); a = this.h; return null === a || 0 === a.selection.count && 0 === a.hn.count ? !1 : a.xe && a.ye }; ra.prototype.collapseTree = function(a) { void 0 === a && (a = null); var b = this.h; if (null !== b) try { b.Wb("Collapse Tree"); b.Ua.sn("Collapse Tree"); var c = new J(E); if (null !== a && a.vd) a.collapseTree(), c.add(a); else for (var d = b.selection.i; d.next();) { var e = d.value; e instanceof E && (a = e, a.vd && (a.collapseTree(), c.add(a))) } b.Ja("TreeCollapsed", c) } finally { b.Jd("Collapse Tree") } }; ra.prototype.canCollapseTree = function(a) { void 0 === a && (a = null); var b = this.h; if (null === b || b.jb) return !1; if (null !== a) { if (!a.vd) return !1; if (0 < a.$w().count) return !0 } else for (a = b.selection.i; a.next();) if (b = a.value, b instanceof E && b.vd && 0 < b.$w().count) return !0; return !1 }; ra.prototype.expandTree = function(a) { void 0 === a && (a = null); var b = this.h; if (null !== b) try { b.Wb("Expand Tree"); b.Ua.sn("Expand Tree"); var c = new J(E); if (null === a || a.vd) for (var d = b.selection.i; d.next();) { var e = d.value; e instanceof E && (a = e, a.vd || (a.expandTree(), c.add(a))) } else a.expandTree(), c.add(a); b.Ja("TreeExpanded", c) } finally { b.Jd("Expand Tree") } }; ra.prototype.canExpandTree = function(a) { void 0 === a && (a = null); var b = this.h; if (null === b || b.jb) return !1; if (null !== a) { if (a.vd) return !1; if (0 < a.$w().count) return !0 } else for (a = b.selection.i; a.next();) if (b = a.value, b instanceof E && !b.vd && 0 < b.$w().count) return !0; return !1 }; ra.prototype.groupSelection = function() { var a = this.h; if (null !== a) { var b = a.ha; if (b instanceof V) { var c = this.HD; if (null !== c) { var d = null; try { a.gc = "wait"; a.Wb("Group"); a.Ja("ChangingSelection"); for (var e = new J(D), g = a.selection.i; g.next();) { var h = g.value; h.be() && h.canGroup() && e.add(h) } for (var k = new J(D), l = e.i; l.next();) { for (var m = l.value, g = !1, n = e.i; n.next();) if (m.li(n.value)) { g = !0; break } g || k.add(m) } if (0 < k.count) { var p = k.first().Va; if (null !== p) for (; null !== p;) { for (var e = !1, q = k.i; q.next();) if (!q.value.li(p)) { e = !0; break } if (e) p = p.Va; else break } if (c instanceof F) gh(c), d = c.copy(), null !== d && a.add(d); else if (b.hA(c)) { var r = b.copyNodeData(c); z.Za(r) && (b.rl(r), d = a.Zw(r)) } if (null !== d) { null !== p && this.isValidMember(p, d) && (d.Va = p); for (var s = k.i; s.next();) { var t = s.value; this.isValidMember(d, t) && (t.Va = d) } a.select(d) } } a.Ja("ChangedSelection"); a.Ja("SelectionGrouped", d) } finally { a.Jd("Group"), a.gc = "" } } } } }; ra.prototype.canGroupSelection = function() { var a = this.h; if (null === a || a.jb || a.Ef || !a.ap || !a.Ew || !(a.ha instanceof V) || null === this.HD) return !1; for (a = a.selection.i; a.next();) { var b = a.value; if (b.be() && b.canGroup()) return !0 } return !1 }; function kh(a) { var b = z.rb(); for (a = a.i; a.next();) { var c = a.value; c instanceof G || b.push(c) } a = new K(D); for (var c = b.length, d = 0; d < c; d++) { for (var e = b[d], g = !0, h = 0; h < c; h++) if (e.li(b[h])) { g = !1; break } g && a.add(e) } z.xa(b); return a } ra.prototype.isValidMember = function(a, b) { if (null === b || a === b || b instanceof G) return !1; if (null !== a) { if (a === b || a.li(b)) return !1; var c = a.qA; if (null !== c && !c(a, b) || null === a.data && null !== b.data || null !== a.data && null === b.data) return !1 } c = this.qA; return null !== c ? c(a, b) : !0 }; ra.prototype.ungroupSelection = function(a) { void 0 === a && (a = null); var b = this.h; if (null !== b) { var c = b.ha; if (c instanceof V) try { b.gc = "wait"; b.Wb("Ungroup"); b.Ja("ChangingSelection"); var d = new J(F); if (null !== a) d.add(a); else for (var e = b.selection.i; e.next();) { var g = e.value; g instanceof F && (a = g, a.canUngroup() && d.add(a)) } if (0 < d.count) { b.Mw(); for (var h = d.i; h.next();) { var k = h.value; k.expandSubGraph(); var l = k.Va, m = null !== l && null !== l.data ? c.pb(l.data) : void 0, n = new J(D); n.$c(k.Hc); for (var p = n.i; p.next();) { var q = p.value; q.kb = !0; if (!(q instanceof G)) { var r = q.data; null !== r ? c.Lx(r, m) : q.Va = l } } b.remove(k) } } b.Ja("ChangedSelection"); b.Ja("SelectionUngrouped", d, n) } finally { b.Jd("Ungroup"), b.gc = "" } } }; ra.prototype.canUngroupSelection = function(a) { void 0 === a && (a = null); var b = this.h; if (null === b || b.jb || b.Ef || !b.Sm || !b.Iw || !(b.ha instanceof V)) return !1; if (null !== a) { if (a.canUngroup()) return !0 } else for (a = b.selection.i; a.next();) if (b = a.value, b instanceof F && b.canUngroup()) return !0; return !1 }; ra.prototype.addTopLevelParts = function(a, b) { for (var c = !0, d = kh(a).i; d.next();) { var e = d.value; null !== e.Va && (!b || this.isValidMember(null, e) ? e.Va = null : c = !1) } return c }; ra.prototype.collapseSubGraph = function(a) { void 0 === a && (a = null); var b = this.h; if (null !== b) try { b.Wb("Collapse SubGraph"); b.Ua.sn("Collapse SubGraph"); var c = new J(F); if (null !== a && a.re) a.collapseSubGraph(), c.add(a); else for (var d = b.selection.i; d.next();) { var e = d.value; e instanceof F && (a = e, a.re && (a.collapseSubGraph(), c.add(a))) } b.Ja("SubGraphCollapsed", c) } finally { b.Jd("Collapse SubGraph") } }; ra.prototype.canCollapseSubGraph = function(a) { void 0 === a && (a = null); var b = this.h; if (null === b || b.jb) return !1; if (null !== a) return a.re ? !0 : !1; for (a = b.selection.i; a.next();) if (b = a.value, b instanceof F && b.re) return !0; return !1 }; ra.prototype.expandSubGraph = function(a) { void 0 === a && (a = null); var b = this.h; if (null !== b) try { b.Wb("Expand SubGraph"); b.Ua.sn("Expand SubGraph"); var c = new J(F); if (null === a || a.re) for (var d = b.selection.i; d.next();) { var e = d.value; e instanceof F && (a = e, a.re || (a.expandSubGraph(), c.add(a))) } else a.expandSubGraph(), c.add(a); b.Ja("SubGraphExpanded", c) } finally { b.Jd("Expand SubGraph") } }; ra.prototype.canExpandSubGraph = function(a) { void 0 === a && (a = null); var b = this.h; if (null === b || b.jb) return !1; if (null !== a) return a.re ? !1 : !0; for (a = b.selection.i; a.next();) if (b = a.value, b instanceof F && !b.re) return !0; return !1 }; ra.prototype.editTextBlock = function(a) { void 0 === a && (a = null); null !== a && z.l(a, qa, ra, "editTextBlock"); var b = this.h; if (null !== b) { var c = b.hb.XA; if (null !== c) { if (null === a) { a = null; for (var d = b.selection.i; d.next();) { var e = d.value; if (e.canEdit()) { a = e; break } } if (null === a) return; a = a.yt(function(a) { return a instanceof qa && a.Sz }) } null !== a && (b.eb = null, c.He = a, b.eb = c) } } }; ra.prototype.canEditTextBlock = function(a) { void 0 === a && (a = null); null !== a && z.l(a, qa, ra, "canEditTextBlock"); var b = this.h; if (null === b || b.jb || b.Ef || !b.Hw || null === b.hb.XA) return !1; if (null !== a) { if (a = a.ca, null !== a && a.canEdit()) return !0 } else for (b = b.selection.i; b.next();) if (a = b.value, a.canEdit() && (a = a.yt(function(a) { return a instanceof qa && a.Sz }), null !== a)) return !0; return !1 }; ra.prototype.showContextMenu = function(a) { var b = this.h; if (null !== b) { var c = b.hb.Hz; if (null !== c && (void 0 === a && (a = 0 < b.selection.count ? b.selection.first() : b), a = c.findObjectWithContextMenu(a), null !== a)) { var d = new Pf, e = null; a instanceof O ? e = a.fb(ec) : b.hI || (e = b.xb, e = new N(e.x + e.width / 2, e.y + e.height / 2)); null !== e && (d.h = b, d.te = b.aB(e), d.ga = e, d.left = !1, d.right = !0, d.up = !0, b.Q = d); b.eb = c; uh(c, !1, a) } } }; ra.prototype.canShowContextMenu = function(a) { var b = this.h; if (null === b) return !1; var c = b.hb.Hz; if (null === c) return !1; void 0 === a && (a = 0 < b.selection.count ? b.selection.first() : b); return null === c.findObjectWithContextMenu(a) ? !1 : !0 }; z.defineProperty(ra, { iH: "copiesClipboardData" }, function() { return this.zB }, function(a) { z.g(a, "boolean", ra, "copiesClipboardData"); this.zB = a }); z.defineProperty(ra, { jH: "copiesConnectedLinks" }, function() { return this.AB }, function(a) { z.g(a, "boolean", ra, "copiesConnectedLinks"); this.AB = a }); z.defineProperty(ra, { hE: "deletesConnectedLinks" }, function() { return this.TB }, function(a) { z.g(a, "boolean", ra, "deletesConnectedLinks"); this.TB = a }); z.defineProperty(ra, { lH: "copiesTree" }, function() { return this.EB }, function(a) { z.g(a, "boolean", ra, "copiesTree"); this.EB = a }); z.defineProperty(ra, { qH: "deletesTree" }, function() { return this.UB }, function(a) { z.g(a, "boolean", ra, "deletesTree"); this.UB = a }); z.defineProperty(ra, { ZD: "copiesParentKey" }, function() { return this.DB }, function(a) { z.g(a, "boolean", ra, "copiesParentKey"); this.DB = a }); z.defineProperty(ra, { YD: "copiesGroupKey" }, function() { return this.CB }, function(a) { z.g(a, "boolean", ra, "copiesGroupKey"); this.CB = a }); z.defineProperty(ra, { HD: "archetypeGroupData" }, function() { return this.iy }, function(a) { null !== a && z.l(a, Object, ra, "archetypeGroupData"); var b = this.h; null !== b && (b = b.ha, b instanceof V && (a instanceof F || b.hA(a) || z.k("CommandHandler.archetypeGroupData must be either a Group or a data object for which GraphLinksModel.isGroupForNodeData is true: " + a))); this.iy = a }); z.defineProperty(ra, { qA: "memberValidation" }, function() { return this.hl }, function(a) { null !== a && z.g(a, "function", ra, "memberValidation"); this.hl = a }); z.defineProperty(ra, { Rw: "defaultScale" }, function() { return this.RB }, function(a) { z.p(a, ra, "defaultScale"); 0 < a || z.k("defaultScale must be larger than zero, not: " + a); this.RB = a }); z.defineProperty(ra, { Tx: "zoomFactor" }, function() { return this.yD }, function(a) { z.p(a, ra, "zoomFactor"); 1 < a || z.k("zoomFactor must be larger than 1.0, not: " + a); this.yD = a }); function ug() { 0 < arguments.length && z.od(ug); z.kc(this); this.Z = null; this.Ub = ""; this.af = !0; this.kC = !1; this.uD = null; this.Aw = -1 } z.ia("Tool", ug); ug.prototype.Sc = function(a) { u && null !== a && z.l(a, C, ug, "setDiagram"); this.Z = a }; ug.prototype.toString = function() { return "" !== this.name ? this.name + " Tool" : z.kf(Object.getPrototypeOf(this)) }; ug.prototype.updateAdornments = function() {}; ug.prototype.canStart = function() { return this.isEnabled }; ug.prototype.doStart = function() {}; ug.prototype.doActivate = function() { this.ua = !0 }; ug.prototype.doDeactivate = function() { this.ua = !1 }; ug.prototype.doStop = function() {}; ug.prototype.doCancel = function() { this.stopTool() }; ug.prototype.stopTool = function() { var a = this.h; null !== a && a.eb === this && (a.eb = null, a.gc = "") }; ug.prototype.doMouseDown = function() { !this.ua && this.canStart() && this.doActivate() }; ug.prototype.doMouseMove = function() {}; ug.prototype.doMouseUp = function() { this.stopTool() }; ug.prototype.doMouseWheel = function() {}; ug.prototype.canStartMultiTouch = function() { return !0 }; ug.prototype.standardPinchZoomStart = function() { var a = this.h; if (null !== a) { var b = a.Q.event, c = null, d = null; if (void 0 !== b.targetTouches) { if (2 > b.targetTouches.length) return; c = b.targetTouches[0]; d = b.targetTouches[1] } else if (null !== a.Uf[0]) c = a.Uf[0], d = a.Uf[1]; else return; this.doCancel(); if (a.sp("hasGestureZoom")) { a.Ly = !0; a.KC = a.scale; var e = Bh(a), g = c, h = g.clientX - e.x, c = g.clientY - e.y, g = d, d = g.clientX - e.x, g = g.clientY - e.y; z.A(e); e = d - h; c = g - c; a.cD = Math.sqrt(e * e + c * c); b.preventDefault(); b.cancelBubble = !0 } } }; ug.prototype.standardPinchZoomMove = function() { var a = this.h; if (null !== a) { var b = a.Q.event; this.doCancel(); var c = null, d = null; if (void 0 !== b.targetTouches) { if (2 > b.targetTouches.length) return; c = b.targetTouches[0]; d = b.targetTouches[1] } else if (null !== a.Uf[0]) c = a.Uf[0], d = a.Uf[1]; else return; if (a.sp("hasGestureZoom") && a.Ly) { var e = Bh(a), g = c, c = g.clientX - e.x, h = g.clientY - e.y, g = d, d = g.clientX - e.x, g = g.clientY - e.y; z.A(e); var e = d - c, k = g - h, e = Math.sqrt(e * e + k * k) / a.cD, c = new N((Math.min(d, c) + Math.max(d, c)) / 2, (Math.min(g, h) + Math.max(g, h)) / 2), h = a.KC * e, d = a.wb; h !== a.scale && d.canResetZoom(h) && (e = a.$l, a.$l = c, d.resetZoom(h), a.$l = e); b.preventDefault(); b.cancelBubble = !0 } } }; ug.prototype.doKeyDown = function() { var a = this.h; null !== a && "Esc" === a.Q.key && this.doCancel() }; ug.prototype.doKeyUp = function() {}; ug.prototype.startTransaction = ug.prototype.Wb = function(a) { void 0 === a && (a = this.name); this.Mf = null; var b = this.h; return null === b ? !1 : b.Wb(a) }; ug.prototype.stopTransaction = ug.prototype.xk = function() { var a = this.h; return null === a ? !1 : null === this.Mf ? a.Vp() : a.Jd(this.Mf) }; ug.prototype.standardMouseSelect = function() { var a = this.h; if (null !== a && a.xf) { var b = a.Q, c = a.At(b.ga, !1); if (null !== c) if (z.rk ? b.$t : b.control) { a.Ja("ChangingSelection"); for (b = c; null !== b && !b.canSelect();) b = b.Va; null !== b && (b.kb = !b.kb); a.Ja("ChangedSelection") } else if (b.shift) { if (!c.kb) { a.Ja("ChangingSelection"); for (b = c; null !== b && !b.canSelect();) b = b.Va; null !== b && (b.kb = !0); a.Ja("ChangedSelection") } } else { if (!c.kb) { for (b = c; null !== b && !b.canSelect();) b = b.Va; null !== b && a.select(b) } } else !b.left || (z.rk ? b.$t : b.control) || b.shift || a.Mw() } }; ug.prototype.standardMouseClick = function(a, b) { void 0 === a && (a = null); void 0 === b && (b = function(a) { return !a.layer.Nc }); var c = this.h; if (null === c) return !1; var d = c.Q, e = c.pe(d.ga, a, b); d.Ge = e; Ch(e, d, c); return d.Gc }; function Ch(a, b, c) { b.Gc = !1; var d = 0; b.left ? d = 1 === b.Pe ? 1 : 2 === b.Pe ? 2 : 1 : b.right && 1 === b.Pe && (d = 3); var e = ""; if (null !== a) { switch (d) { case 1: e = "ObjectSingleClicked"; break; case 2: e = "ObjectDoubleClicked"; break; case 3: e = "ObjectContextClicked" } 0 !== d && c.Ja(e, a) } else { switch (d) { case 1: e = "BackgroundSingleClicked"; break; case 2: e = "BackgroundDoubleClicked"; break; case 3: e = "BackgroundContextClicked" } 0 !== d && c.Ja(e) } if (null !== a) for (; null !== a;) { c = null; switch (d) { case 1: c = a.click; break; case 2: c = a.wt ? a.wt : a.click; break; case 3: c = a.Gz } if (null !== c && (c(b, a), b.Gc)) break; a = a.U } else { a = null; switch (d) { case 1: a = c.click; break; case 2: a = c.wt ? c.wt : c.click; break; case 3: a = c.Gz } null !== a && a(b) } } ug.prototype.standardMouseOver = function() { var a = this.h; if (null !== a) { var b = a.Q; if (null !== b.h && !0 !== a.Ua.wc) { var c = a.Bb; a.Bb = !0; var d = a.pe(b.ga, null, null); b.Ge = d; var e = !1; if (d !== a.Sn) { var g = a.Sn, h = g; a.Sn = d; this.doCurrentObjectChanged(g, d); for (b.Gc = !1; null !== g;) { var k = g.bu; if (null !== k) { if (d === g) break; if (null !== d && d.Pl(g)) break; k(b, g, d); e = !0; if (b.Gc) break } g = g.U } g = h; for (b.Gc = !1; null !== d;) { k = d.au; if (null !== k) { if (g === d) break; if (null !== g && g.Pl(d)) break; k(b, d, g); e = !0; if (b.Gc) break } d = d.U } d = a.Sn } if (null !== d) { g = d; for (k = ""; null !== g;) { k = g.cursor; if ("" !== k) break; g = g.U } a.gc = k; b.Gc = !1; for (g = d; null !== g;) { k = g.uA; if (null !== k && (k(b, g), e = !0, b.Gc)) break; g = g.U } } else a.gc = "", k = a.uA, null !== k && (k(b), e = !0); e && a.Ce(); a.Bb = c } } }; ug.prototype.doCurrentObjectChanged = function() {}; ug.prototype.standardMouseWheel = function() { var a = this.h; if (null !== a) { var b = a.Q, c = b.Cl; if (0 !== c && a.ad.F()) { var d = a.wb, e = a.hb.cu; if ((e === Dh && !b.shift || e === Eh && b.control) && (0 < c ? d.canIncreaseZoom() : d.canDecreaseZoom())) e = a.$l, a.$l = b.te, 0 < c ? d.increaseZoom() : d.decreaseZoom(), a.$l = e, b.bubbles = !1; else if (e === Dh && b.shift || e === Eh && !b.control) { var d = a.position.copy(), e = 0 < c ? c : -c, g = b.event.deltaX, h = b.event.deltaY; void 0 === g || void 0 === h || 0 === g && 0 === h ? !b.shift && a.ye ? (g = a.ou, e = e / 40 * g, 0 < c ? a.scroll("pixel", "up", e) : a.scroll("pixel", "down", e)) : b.shift && a.xe && (g = a.nu, e = e / 40 * g, 0 < c ? a.scroll("pixel", "left", e) : a.scroll("pixel", "right", e)) : (0 !== g && a.xe && (0 < g ? a.scroll("pixel", "left", -g) : a.scroll("pixel", "right", g)), 0 !== h && a.ye && (0 < h ? a.scroll("pixel", "up", -h) : a.scroll("pixel", "down", h))); a.position.N(d) || (b.bubbles = !1) } } } }; ug.prototype.standardWaitAfter = function(a, b) { z.g(a, "number", ug, "standardWaitAfter:delay"); this.cancelWaitAfter(); var c = this, d = b.copy(); this.Aw = z.setTimeout(function() { c.doWaitAfter(d) }, a) }; ug.prototype.cancelWaitAfter = function() { -1 !== this.Aw && z.clearTimeout(this.Aw); this.Aw = -1 }; ug.prototype.doWaitAfter = function() {}; ug.prototype.findToolHandleAt = function(a, b) { var c = this.h; if (null === c) return null; c = c.pe(a, function(a) { for (; null !== a && !(a.U instanceof da);) a = a.U; return a }); return null === c ? null : c.U.nc === b ? c : null }; ug.prototype.isBeyondDragSize = function(a, b) { var c = this.h; if (null === c) return !1; void 0 === a && (a = c.Fc.te); void 0 === b && (b = c.Q.te); var d = c.hb.uH, e = d.width, d = d.height; c.Fc.lj && (e += 6, d += 6); return Math.abs(b.x - a.x) > e || Math.abs(b.y - a.y) > d }; z.w(ug, { h: "diagram" }, function() { return this.Z }); z.defineProperty(ug, { name: "name" }, function() { return this.Ub }, function(a) { z.g(a, "string", ug, "name"); this.Ub = a }); z.defineProperty(ug, { isEnabled: "isEnabled" }, function() { return this.af }, function(a) { z.g(a, "boolean", ug, "isEnabled"); this.af = a }); z.defineProperty(ug, { ua: "isActive" }, function() { return this.kC }, function(a) { z.g(a, "boolean", ug, "isActive"); this.kC = a }); z.defineProperty(ug, { Mf: "transactionResult" }, function() { return this.uD }, function(a) { null !== a && z.g(a, "string", ug, "transactionResult"); this.uD = a }); function ih() { 0 < arguments.length && z.od(ih); ug.call(this); this.name = "Dragging"; this.BB = this.oC = !0; this.jr = this.$B = !1; this.tC = !0; this.My = (new Ea(NaN, NaN)).freeze(); this.Ny = Zb; this.Oy = (new N(NaN, NaN)).freeze(); this.ZB = !1; this.XB = this.yB = this.YB = this.JB = this.Si = null; this.Uq = this.rC = !1; this.Qo = new N(NaN, NaN); this.qw = new N; this.tw = !1; this.nC = !0; this.ao = 100; this.Bj = []; this.pG = (new K(D)).freeze() } z.Qa(ih, ug); z.ia("DraggingTool", ih); z.defineProperty(ih, { LE: "isCopyEnabled" }, function() { return this.oC }, function(a) { z.g(a, "boolean", ih, "isCopyEnabled"); this.oC = a }); z.defineProperty(ih, { kH: "copiesEffectiveCollection" }, function() { return this.BB }, function(a) { z.g(a, "boolean", ih, "copiesEffectiveCollection"); this.BB = a }); z.defineProperty(ih, { vH: "dragsTree" }, function() { return this.$B }, function(a) { z.g(a, "boolean", ih, "dragsTree"); this.$B = a }); z.defineProperty(ih, { ix: "isGridSnapEnabled" }, function() { return this.jr }, function(a) { z.g(a, "boolean", ih, "isGridSnapEnabled"); this.jr = a }); z.defineProperty(ih, { dI: "isComplexRoutingRealtime" }, function() { return this.nC }, function(a) { z.g(a, "boolean", ih, "isComplexRoutingRealtime"); this.nC = a }); z.defineProperty(ih, { fI: "isGridSnapRealtime" }, function() { return this.tC }, function(a) { z.g(a, "boolean", ih, "isGridSnapRealtime"); this.tC = a }); z.defineProperty(ih, { BE: "gridSnapCellSize" }, function() { return this.My }, function(a) { z.l(a, Ea, ih, "gridSnapCellSize"); this.My.N(a) || (this.My = a = a.V()) }); z.defineProperty(ih, { QH: "gridSnapCellSpot" }, function() { return this.Ny }, function(a) { z.l(a, Q, ih, "gridSnapCellSpot"); this.Ny.N(a) || (this.Ny = a = a.V()) }); z.defineProperty(ih, { RH: "gridSnapOrigin" }, function() { return this.Oy }, function(a) { z.l(a, N, ih, "gridSnapOrigin"); this.Oy.N(a) || (this.Oy = a = a.V()) }); z.defineProperty(ih, { fj: "dragsLink" }, function() { return this.ZB }, function(a) { z.g(a, "boolean", ih, "dragsLink"); this.ZB = a }); z.defineProperty(ih, { bn: "currentPart" }, function() { return this.JB }, function(a) { null !== a && z.l(a, D, ih, "currentPart"); this.JB = a }); z.defineProperty(ih, { oc: "copiedParts" }, function() { return this.yB }, function(a) { this.yB = a }); z.defineProperty(ih, { hc: "draggedParts" }, function() { return this.YB }, function(a) { this.YB = a }); z.w(ih, { uK: "draggingParts" }, function() { return null !== this.oc ? this.oc.uj() : null !== this.hc ? this.hc.uj() : this.pG }); z.defineProperty(ih, { ld: "draggedLink" }, function() { return this.XB }, function(a) { null !== a && z.l(a, G, ih, "draggedLink"); this.XB = a }); z.defineProperty(ih, { hx: "isDragOutStarted" }, function() { return this.rC }, function(a) { this.rC = a }); z.defineProperty(ih, { wk: "startPoint" }, function() { return this.qw }, function(a) { z.l(a, N, ih, "startPoint"); this.qw.N(a) || (this.qw = a = a.V()) }); z.defineProperty(ih, { cE: "delay" }, function() { return this.ao }, function(a) { z.g(a, "number", ih, "delay"); this.ao = a }); ih.prototype.canStart = function() { if (!this.isEnabled) return !1; var a = this.h; if (null === a || a.jb && !a.kt || !a.ul && !a.kk && !a.kt || !a.xf) return !1; var b = a.Q; return !b.left || a.eb !== this && (!this.isBeyondDragSize() || b.lj && b.timestamp - a.Fc.timestamp < this.ao) ? !1 : null !== this.findDraggablePart() }; ih.prototype.findDraggablePart = function() { var a = this.h; if (null === a) return null; a = a.At(a.Fc.ga, !1); if (null === a) return null; for (; null !== a && !a.canSelect();) a = a.Va; return null !== a && (a.canMove() || a.canCopy()) ? a : null }; ih.prototype.standardMouseSelect = function() { var a = this.h; if (null !== a && a.xf) { var b = a.At(a.Fc.ga, !1); if (null !== b) { for (; null !== b && !b.canSelect();) b = b.Va; this.bn = b; this.bn.kb || (a.Ja("ChangingSelection"), b = a.Q, (z.rk ? b.$t : b.control) || b.shift || hh(a), this.bn.kb = !0, a.Ja("ChangedSelection")) } } }; ih.prototype.doActivate = function() { var a = this.h; if (null !== a) { null === this.bn && this.standardMouseSelect(); var b = this.bn; null !== b && (b.canMove() || b.canCopy()) && (this.ua = !0, this.Qo.set(a.position), Fh(this, a.selection), this.Bj.length = 0, this.hc = this.computeEffectiveCollection(a.selection), a.vu = !0, Gh(this, this.hc), this.Wb("Drag"), this.wk = a.Fc.ga, a.We = !0, a.kt && (this.hx = !0, this.Uq = !1, Hh = this, Ih = this.h, this.doSimulatedDragOut())) } }; function Fh(a, b) { if (a.fj) { var c = a.h; null !== c && c.Tm && (c.ha instanceof V && 1 === b.count && b.first() instanceof G ? (a.ld = b.first(), a.ld.canRelinkFrom() && a.ld.canRelinkTo() && a.ld.pt(), a.Si = c.hb.kF, null === a.Si && (a.Si = new Jh, a.Si.Sc(c))) : (a.ld = null, a.Si = null)) } } ih.prototype.computeEffectiveCollection = function(a) { var b = null !== this.h && this.h.eb === this, c = new na(D); if (null === a) return c; for (var d = a.i; d.next();) Kh(this, c, d.value, b); if (null !== this.ld && this.fj) return c; for (d = a.i; d.next();) a = d.value, a instanceof G && (b = a.Y, null === b || c.contains(b) ? (b = a.da, null === b || c.contains(b) || c.remove(a)) : c.remove(a)); return c }; function Lh(a) { return void 0 === a ? new Mh(Id) : new Mh(a.copy()) } function Kh(a, b, c, d) { if (!b.contains(c) && (!d || c.canMove() || c.canCopy())) if (c instanceof E) { b.add(c, Lh(c.location)); if (c instanceof F) for (var e = c.Hc; e.next();) Kh(a, b, e.value, d); for (e = c.ee; e.next();) { var g = e.value; if (!b.contains(g)) { var h = g.Y, k = g.da; null !== h && b.contains(h) && null !== k && b.contains(k) && Kh(a, b, g, d) } } if (a.vH) for (c = c.tE(); c.next();) Kh(a, b, c.value, d) } else if (c instanceof G) for (g = c, b.add(g, Lh()), e = g.Hf; e.next();) Kh(a, b, e.value, d); else c instanceof da || b.add(c, Lh(c.location)) } ih.prototype.doDeactivate = function() { this.ua = !1; var a = this.h; null !== a && Nh(a); Oh(this); Ph(this, this.hc); this.hc = this.bn = null; this.Uq = this.hx = !1; if (0 < Qh.count) { for (var b = Qh.length, c = 0; c < b; c++) { var d = Qh.ea(c); Rh(d); Sh(d); Oh(d); null !== d.h && Nh(d.h) } Qh.clear() } Rh(this); this.Qo.n(NaN, NaN); Hh = Ih = null; Sh(this); a.We = !1; a.gc = ""; a.vu = !1; this.xk() }; function Oh(a) { var b = a.h; if (null !== b) { var c = b.Bb; b.Bb = !0; Th(a, b.Q, null); b.Bb = c } a.Bj.length = 0 } function Uh() { var a = Hh; Sh(a); Vh(a); var b = a.h; null !== b && a.Qo.F() && (b.position = a.Qo); null !== b && Nh(b) } ih.prototype.doCancel = function() { Sh(this); Vh(this); var a = this.h; null !== a && this.Qo.F() && (a.position = this.Qo); this.stopTool() }; function Gh(a, b) { if (null !== b) { a.tw = !0; for (var c = b.i; c.next();) { var d = c.key; d instanceof G && (d.eq = !0) } } } function Ph(a, b) { if (null !== b) { for (var c = b.i; c.next();) { var d = c.key; d instanceof G && (d.eq = !1, d.jj && Wh(d) && d.qc()) } a.tw = !1 } } ih.prototype.doKeyDown = function() { var a = this.h; null !== a && (a = a.Q, null !== a && this.ua && ("Esc" === a.key ? this.doCancel() : this.doMouseMove())) }; ih.prototype.doKeyUp = function() { var a = this.h; null !== a && null !== a.Q && this.ua && this.doMouseMove() }; function Xh(a, b) { for (var c = Infinity, d = Infinity, e = -Infinity, g = -Infinity, h = a.i; h.next();) { var k = h.value; if (k.be() && k.isVisible()) { var l = k.location, k = l.x, l = l.y; isNaN(k) || isNaN(l) || (k < c && (c = k), l < d && (d = l), k > e && (e = k), l > g && (g = l)) } } Infinity === c ? b.n(0, 0, 0, 0) : b.n(c, d, e - c, g - d) } function Yh(a, b) { if (null === a.oc) { var c = a.h; if (!(null === c || b && (c.jb || c.Ef)) && null !== a.hc) { var d = c.pa; d.isEnabled && d.QE ? null !== d.dj && 0 < d.dj.Yf.count && (c.pa.Vp(), c.Wb("Drag")) : Vh(a); c.Bb = !b; c.lq = !b; a.wk = c.Fc.ga; d = a.kH ? a.hc.uj() : c.selection; d = c.hp(d, c, !0); for (c = d.i; c.next();) c.value.location = c.key.location; c = z.kg(); Xh(d, c); z.dc(c); for (var c = new na(D), e = a.hc.i; e.next();) { var g = e.key; g.be() && g.canCopy() && (g = d.na(g), null !== g && (g.Bf(), c.add(g, Lh(g.location)))) } for (d = d.i; d.next();) e = d.value, e instanceof G && e.canCopy() && c.add(e, Lh()); a.oc = c; Fh(a, c.uj()); null !== a.ld && (c = a.ld, d = c.un, c.Rl(a.wk.x - (d.x + d.width / 2), a.wk.y - (d.y + d.height / 2))) } } } function Sh(a) { var b = a.h; if (null !== b) { if (null !== a.oc && (b.JA(a.oc.uj(), !1), a.oc = null, null !== a.hc)) for (var c = a.hc.i; c.next();) c.key instanceof G && (c.value.point = new N(0, 0)); b.Bb = !1; b.lq = !1; a.wk = b.Fc.ga } } function Rh(a) { if (null !== a.ld) { if (a.fj && null !== a.Si) { var b = a.Si; b.h.remove(b.Od); b.h.remove(b.Pd) } a.ld = null; a.Si = null } } function Zh(a, b, c) { var d = a.h; if (null !== d) { var e = a.wk, g = z.O(); g.assign(d.Q.ga); a.moveParts(b, g.xu(e), c); z.A(g) } } ih.prototype.moveParts = function(a, b, c) { if (null !== a && (z.l(a, na, ih, "moveParts:parts"), 0 !== a.count)) { var d = z.O(), e = z.O(); e.assign(b); isNaN(e.x) && (e.x = 0); isNaN(e.y) && (e.y = 0); (b = this.tw) || Gh(this, a); for (var g = new J($h), h = new J(Ya), k = a.i; k.next();) { var l = k.key; if (l.be()) { var m = ai(this, l, a); if (null !== m) g.add(new $h(l, k.value, m)); else if (!c || l.canMove()) { m = k.value.point; d.assign(m); var n = z.O(), p = this.computeMove(l, d.add(e), a, n); l.location = p; k.value.LF = n.xu(m); z.A(n) } } else k.key instanceof G && h.add(k.lb) } for (c = g.i; c.next();) g = c.value, m = g.info.point, d.assign(m), g.Pc.location = d.add(g.SH.LF); c = z.O(); m = z.O(); for (h = h.i; h.next();) if (k = h.value, g = k.key, g instanceof G) if (g.eq) l = g.Y, n = g.da, null !== this.ld && this.fj ? (k = k.value.point, a.add(g, Lh(e)), l = e.x - k.x, k = e.y - k.y, g.Rl(l, k)) : (null !== l && (c.assign(l.location), p = a.na(l), null !== p && c.xu(p.point)), null !== n && (m.assign(n.location), p = a.na(n), null !== p && m.xu(p.point)), null !== l && null !== n ? c.Mc(m) ? (k = k.value.point, l = d, l.assign(c), l.xu(k), a.add(g, Lh(c)), g.Rl(l.x, l.y)) : (g.eq = !1, g.qc()) : (k = k.value.point, n = null !== l ? c : null !== n ? m : e, a.add(g, Lh(n)), l = n.x - k.x, k = n.y - k.y, g.Rl(l, k))); else if (null === g.Y || null === g.da) k = k.value.point, a.add(g, Lh(e)), l = e.x - k.x, k = e.y - k.y, g.Rl(l, k); z.A(d); z.A(e); z.A(c); z.A(m); b || Ph(this, a) } }; function ai(a, b, c) { b = b.Va; if (null !== b) { a = ai(a, b, c); if (null !== a) return a; a = c.na(b); if (null !== a) return a } return null } function Vh(a) { if (null !== a.hc) { for (var b = a.h, c = a.hc.i; c.next();) { var d = c.key; d.be() && (d.location = c.value.point) } for (c = a.hc.i; c.next();) if (d = c.key, d instanceof G && d.eq) { var e = c.value.point; a.hc.add(d, Lh()); d.Rl(-e.x, -e.y) } b.bg() } } ih.prototype.computeMove = function(a, b, c, d) { void 0 === d && (d = new N); d.assign(b); if (null === a) return d; void 0 === c && (c = null); var e = b; if (this.ix && (this.fI || null === c || this.h.Q.up) && (e = z.O(), c = e, c.assign(b), null !== a)) { var g = this.h; if (null !== g) { var h = g.Gt, k = this.BE, g = k.width, k = k.height, l = this.RH, m = l.x, l = l.y, n = this.QH; if (null !== h) { var p = h.bx; isNaN(g) && (g = p.width); isNaN(k) && (k = p.height); h = h.AE; isNaN(m) && (m = h.x); isNaN(l) && (l = h.y) } h = z.Tb(0, 0); h.tu(0, 0, g, k, n); jb(b.x, b.y, m + h.x, l + h.y, g, k, c); z.A(h) } } c = null !== a.iE ? a.iE(a, b, e) : e; k = a.GI; g = k.x; isNaN(g) && (g = a.location.x); k = k.y; isNaN(k) && (k = a.location.y); h = a.BI; m = h.x; isNaN(m) && (m = a.location.x); h = h.y; isNaN(h) && (h = a.location.y); d.n(Math.max(g, Math.min(c.x, m)), Math.max(k, Math.min(c.y, h))); e !== b && z.A(e); return d }; function bi(a, b) { if (null === b) return !0; var c = b.ca; return null === c || c instanceof da || c.layer.Nc || a.hc && a.hc.contains(c) || a.oc && a.oc.contains(c) ? !0 : !1 } function ci(a, b, c, d) { var e = a.h; if (null !== e) { a.fj && (null !== a.ld && (a.ld.Y = null, a.ld.da = null), di(a, !1)); var g = ei(e, b, null, function(b) { return !bi(a, b) }), h = e.Q; h.Ge = g; var k = e.Bb, l = !1; try { e.Bb = !0; l = Th(a, h, g); if (!a.ua && null === Hh) return; if (null === g) { var m = e.KI; null !== m && (m(h), l = !0) } if (!a.ua && null === Hh) return; a.doDragOver(b, g); if (!a.ua && null === Hh) return } finally { e.Bb = k, l && e.bg() }(e.xe || e.ye) && (c || d) && fi(e, h.te) } } function Th(a, b, c) { var d = !1, e = a.Bj.length, g = 0 < e ? a.Bj[0] : null; if (c === g) return !1; b.Gc = !1; for (var h = 0; h < e; h++) { var k = a.Bj[h], l = k.JI; if (null !== l && (l(b, k, c), d = !0, b.Gc)) break } a.Bj.length = 0; if (!a.ua && null === Hh || null === c) return d; for (b.Gc = !1; null !== c;) a.Bj.push(c), c = gi(c); e = a.Bj.length; for (h = 0; h < e && (k = a.Bj[h], l = k.II, null === l || (l(b, k, g), d = !0, !b.Gc)); h++); return d } function gi(a) { var b = a.U; return null !== b ? b : a instanceof D && !(a instanceof F) && (a = a.Va, null !== a && a.UH) ? a : null } function hi(a, b, c) { var d = a.Si; if (null === d) return null; var e = a.h.dn(b, d.iF, function(a) { return d.findValidLinkablePort(a, c) }); a = z.O(); for (var g = Infinity, h = null, e = e.i; e.next();) { var k = e.value; if (null !== k.ca) { var l = k.fb(ec, a), l = b.Af(l); l < g && (h = k, g = l) } } z.A(a); return h } function di(a, b) { var c = a.ld; if (null !== c && !(2 > c.sa)) { var d = a.h; if (null !== d && !d.jb && (d = a.Si, null !== d)) { var e = null, g = null; null === c.Y && (e = hi(a, c.m(0), !1), null !== e && (g = e.ca)); var h = null, k = null; null === c.da && (h = hi(a, c.m(c.sa - 1), !0), null !== h && (k = h.ca)); d.isValidLink(g, e, k, h) ? b ? (c.Vn = c.m(0).copy(), c.Zn = c.m(c.sa - 1).copy(), c.eq = !1, c.Y = g, null !== e && (c.$f = e.yd), c.da = k, null !== h && (c.Ug = h.yd)) : ii(d, g, e, k, h) : ii(d, null, null, null, null) } } } ih.prototype.doDragOver = function() {}; function ji(a, b) { var c = a.h; if (null !== c) { a.fj && di(a, !0); Oh(a); var d = ei(c, b, null, function(b) { return !bi(a, b) }), e = c.Q; e.Ge = d; if (null !== d) { e.Gc = !1; for (var g = d; null !== g;) { var h = g.rA; if (null !== h && (h(e, g), e.Gc)) break; g = gi(g) } } else h = c.rA, null !== h && h(e); if (a.ua || null !== Hh) if (a.doDropOnto(b, d), a.ua || null !== Hh) for (d = c.selection.i; d.next();) e = d.value, e instanceof E && ki(c, e.W) } } ih.prototype.doDropOnto = function() {}; ih.prototype.doMouseMove = function() { if (this.ua) { var a = this.h; if (null !== a && null !== this.bn && null !== this.hc) { var b = !1, c = !1; this.mayCopy() ? (b = !0, a.gc = "copy", Yh(this, !1), Gh(this, this.oc), Zh(this, this.oc, !1), Ph(this, this.oc)) : this.mayMove() ? (c = !0, a.gc = "default", Sh(this), Zh(this, this.hc, !0)) : this.mayDragOut() ? (a.gc = "no-drop", Yh(this, !1), Zh(this, this.oc, !1)) : Sh(this); ci(this, a.Q.ga, c, b) } } }; ih.prototype.doMouseUp = function() { if (this.ua) { var a = this.h; if (null !== a) { var b = !1, c = this.mayCopy(); c && null !== this.oc ? (Sh(this), Yh(this, !0), Gh(this, this.oc), Zh(this, this.oc, !1), Ph(this, this.oc), null !== this.oc && a.FF(this.oc.uj())) : (b = !0, Sh(this), this.mayMove() && (Zh(this, this.hc, !0), ci(this, a.Q.ga, !0, !1))); this.Uq = !0; ji(this, a.Q.ga); if (this.ua) { this.oc = null; if (b && null !== this.hc) for (b = this.hc.i; b.next();) { var d = b.key; d instanceof E && (d = d.Va, null === d || null === d.placeholder || this.hc.contains(d) || d.VD && d.S()) } a.yc(); Ph(this, this.hc); this.Mf = c ? "Copy" : "Move"; a.Ja(c ? "SelectionCopied" : "SelectionMoved", a.selection) } this.stopTool() } } }; ih.prototype.mayCopy = function() { if (!this.LE) return !1; var a = this.h; if (null === a || a.jb || a.Ef || !a.ap || !a.kk || (z.rk ? !a.Q.alt : !a.Q.control)) return !1; for (a = a.selection.i; a.next();) { var b = a.value; if (b.be() && b.canCopy()) return !0 } return null !== this.ld && this.fj && this.ld.canCopy() ? !0 : !1 }; ih.prototype.mayDragOut = function() { if (!this.LE) return !1; var a = this.h; if (null === a || !a.kt || !a.kk || a.ul) return !1; for (a = a.selection.i; a.next();) { var b = a.value; if (b.be() && b.canCopy()) return !0 } return null !== this.ld && this.fj && this.ld.canCopy() ? !0 : !1 }; ih.prototype.mayMove = function() { var a = this.h; if (null === a || a.jb || !a.ul) return !1; for (a = a.selection.i; a.next();) { var b = a.value; if (b.be() && b.canMove()) return !0 } return null !== this.ld && this.fj && this.ld.canMove() ? !0 : !1 }; var Qh = new J(ih), Hh = null, Ih = null; ih.prototype.mayDragIn = function() { var a = this.h; if (null === a || !a.FD || a.jb || a.Ef || !a.ap) return !1; var b = Hh; return null === b || b.h.ha.Al !== a.ha.Al ? !1 : !0 }; ih.prototype.doSimulatedDragEnter = function() { if (this.mayDragIn()) { var a = this.h; a.Ua.oi(); li(a); a = Hh; null !== a && (a.h.gc = "copy") } }; ih.prototype.doSimulatedDragLeave = function() { var a = Hh; null !== a && a.doSimulatedDragOut(); this.doCancel() }; ih.prototype.doSimulatedDragOver = function() { var a = this.h; if (null !== a) { var b = Hh; null !== b && null !== b.hc && this.mayDragIn() && (a.gc = "copy", mi(this, b.hc.uj(), !1), Zh(this, this.oc, !1), ci(this, a.Q.ga, !1, !0)) } }; ih.prototype.doSimulatedDrop = function() { var a = this.h; if (null !== a) { var b = Hh; if (null !== b) { var c = b.h; b.Uq = !0; Sh(this); this.mayDragIn() && (this.Wb("Drop"), mi(this, b.hc.uj(), !0), Zh(this, this.oc, !1), null !== this.oc && a.FF(this.oc.uj()), ji(this, a.Q.ga), a.yc(), b = a.selection, null !== this.oc ? this.Mf = "ExternalCopy" : b = new K(D), this.oc = null, a.focus(), a.Ja("ExternalObjectsDropped", b, c), this.xk()) } } }; function mi(a, b, c) { if (null === a.oc) { var d = a.h; if (null !== d && !d.jb && !d.Ef) { d.Bb = !c; d.lq = !c; a.wk = d.Q.ga; d = d.hp(b, d, !0); c = z.kg(); Xh(b, c); var e = c.x + c.width / 2, g = c.y + c.height / 2; z.dc(c); var h = a.qw; c = new na(D); var k = z.O(); for (b = b.i; b.next();) { var l = b.value; if (l.be() && l.canCopy()) { var m = l.location, l = d.na(l); k.n(h.x - (e - m.x), h.y - (g - m.y)); l.location = k; l.Bf(); c.add(l, Lh(k)) } } z.A(k); for (d = d.i; d.next();) e = d.value, e instanceof G && e.canCopy() && c.add(e, Lh()); a.oc = c; Fh(a, c.uj()); null !== a.ld && (c = a.ld, d = c.un, c.Rl(a.wk.x - (d.x + d.width / 2), a.wk.y - (d.y + d.height / 2))) } } } ih.prototype.doSimulatedDragOut = function() { var a = this.h; null !== a && (this.mayCopy() || this.mayMove() ? a.gc = "" : a.gc = "no-drop") }; function Mh(a) { this.point = a; this.LF = Id } z.ia("DraggingInfo", Mh); function $h(a, b, c) { this.Pc = a; this.info = b; this.SH = c } function ni() { 0 < arguments.length && z.od(ni); ug.call(this); this.UC = 100; this.wC = !1; var a = new G, b = new X; b.Ff = !0; b.stroke = "blue"; a.add(b); b = new X; b.fq = "Standard"; b.fill = "blue"; b.stroke = "blue"; a.add(b); a.If = "Tool"; this.mD = a; a = new E; b = new X; b.yd = ""; b.Hb = "Rectangle"; b.fill = null; b.stroke = "magenta"; b.ub = 2; b.Aa = Qd; a.add(b); a.vk = !1; a.If = "Tool"; this.kD = a; this.lD = b; a = new E; b = new X; b.yd = ""; b.Hb = "Rectangle"; b.fill = null; b.stroke = "magenta"; b.ub = 2; b.Aa = Qd; a.add(b); a.vk = !1; a.If = "Tool"; this.nD = a; this.oD = b; this.RC = this.QC = this.MC = this.LC = this.NC = null; this.sC = !0; this.GG = new na(O, "boolean"); this.VC = this.el = this.gD = null } z.Qa(ni, ug); z.ia("LinkingBaseTool", ni); ni.prototype.doStop = function() { var a = this.h; null !== a && Nh(a); this.Qg = this.Pg = this.Og = this.Ng = this.sc = null; this.Sx.clear(); this.jg = null }; z.defineProperty(ni, { iF: "portGravity" }, function() { return this.UC }, function(a) { z.g(a, "number", ni, "portGravity"); 0 <= a && (this.UC = a) }); z.defineProperty(ni, { Cp: "isUnconnectedLinkValid" }, function() { return this.wC }, function(a) { z.g(a, "boolean", ni, "isUnconnectedLinkValid"); this.wC = a }); z.defineProperty(ni, { Tg: "temporaryLink" }, function() { return this.mD }, function(a) { z.l(a, G, ni, "temporaryLink"); this.mD = a }); z.defineProperty(ni, { Od: "temporaryFromNode" }, function() { return this.kD }, function(a) { z.l(a, E, ni, "temporaryFromNode"); this.kD = a }); z.defineProperty(ni, { zn: "temporaryFromPort" }, function() { return this.lD }, function(a) { z.l(a, O, ni, "temporaryFromPort"); this.lD = a }); z.defineProperty(ni, { Pd: "temporaryToNode" }, function() { return this.nD }, function(a) { z.l(a, E, ni, "temporaryToNode"); this.nD = a }); z.defineProperty(ni, { An: "temporaryToPort" }, function() { return this.oD }, function(a) { z.l(a, O, ni, "temporaryToPort"); this.oD = a }); z.defineProperty(ni, { sc: "originalLink" }, function() { return this.NC }, function(a) { null !== a && z.l(a, G, ni, "originalLink"); this.NC = a }); z.defineProperty(ni, { Ng: "originalFromNode" }, function() { return this.LC }, function(a) { null !== a && z.l(a, E, ni, "originalFromNode"); this.LC = a }); z.defineProperty(ni, { Og: "originalFromPort" }, function() { return this.MC }, function(a) { null !== a && z.l(a, O, ni, "originalFromPort"); this.MC = a }); z.defineProperty(ni, { Pg: "originalToNode" }, function() { return this.QC }, function(a) { null !== a && z.l(a, E, ni, "originalToNode"); this.QC = a }); z.defineProperty(ni, { Qg: "originalToPort" }, function() { return this.RC }, function(a) { null !== a && z.l(a, O, ni, "originalToPort"); this.RC = a }); z.defineProperty(ni, { Md: "isForwards" }, function() { return this.sC }, function(a) { z.g(a, "boolean", ni, "isForwards"); this.sC = a }); z.w(ni, { Sx: "validPortsCache" }, function() { return this.GG }); z.defineProperty(ni, { jg: "targetPort" }, function() { return this.gD }, function(a) { null !== a && z.l(a, O, ni, "targetPort"); this.gD = a }); ni.prototype.copyPortProperties = function(a, b, c, d, e) { if (null !== a && null !== b && null !== c && null !== d) { d.Aa = b.W.size; e ? (d.Eb = b.Eb, d.Yl = b.Yl) : (d.Db = b.Db, d.Il = b.Il); c.of = ec; var g = z.O(); c.location = b.fb(ec, g); z.A(g); d.angle = b.Kl(); null !== this.Ax && this.Ax(a, b, c, d, e) } }; ni.prototype.setNoTargetPortProperties = function(a, b, c) { null !== b && (b.Aa = Qd, b.Db = Yb, b.Eb = Yb); null !== a && (a.location = this.h.Q.ga); null !== this.Ax && this.Ax(null, null, a, b, c) }; ni.prototype.doMouseDown = function() { this.ua && this.doMouseMove() }; ni.prototype.doMouseMove = function() { if (this.ua) { var a = this.h; if (null !== a) { this.jg = this.findTargetPort(this.Md); if (null !== this.jg) { var b = this.jg.ca; if (b instanceof E) { this.Md ? this.copyPortProperties(b, this.jg, this.Pd, this.An, !0) : this.copyPortProperties(b, this.jg, this.Od, this.zn, !1); return } } this.Md ? this.setNoTargetPortProperties(this.Pd, this.An, !0) : this.setNoTargetPortProperties(this.Od, this.zn, !1); (a.xe || a.ye) && fi(a, a.Q.te) } } }; ni.prototype.findValidLinkablePort = function(a, b) { if (null === a) return null; var c = a.ca; if (!(c instanceof E)) return null; for (; null !== a;) { var d = b ? a.TF : a.vE; if (!0 === d && (null !== a.yd || a instanceof E) && (b ? this.isValidTo(c, a) : this.isValidFrom(c, a))) return a; if (!1 === d) break; a = a.U } return null }; ni.prototype.findTargetPort = function(a) { var b = this.h, c = b.Q.ga, d = this.iF; 0 >= d && (d = .1); for (var e = this, g = b.dn(c, d, function(b) { return e.findValidLinkablePort(b, a) }, null, !0), d = Infinity, b = null, g = g.i; g.next();) { var h = g.value, k = h.ca; if (k instanceof E) { var l = h.fb(ec, z.O()), m = c.x - l.x, n = c.y - l.y; z.A(l); l = m * m + n * n; l < d && (m = this.Sx.na(h), null !== m ? m && (b = h, d = l) : a && this.isValidLink(this.Ng, this.Og, k, h) || !a && this.isValidLink(k, h, this.Pg, this.Qg) ? (this.Sx.add(h, !0), b = h, d = l) : this.Sx.add(h, !1)) } } return null !== b && (c = b.ca, c instanceof E && (null === c.layer || c.layer.lt)) ? b : null }; ni.prototype.isValidFrom = function(a, b) { if (null === a || null === b) return this.Cp; if (this.h.eb === this && (null !== a.layer && !a.layer.lt || !0 !== b.vE)) return !1; var c = b.Yz; if (Infinity > c) { if (null !== this.sc && a === this.Ng && b === this.Og) return !0; var d = b.yd; null === d && (d = ""); if (a.Yw(d).count >= c) return !1 } return !0 }; ni.prototype.isValidTo = function(a, b) { if (null === a || null === b) return this.Cp; if (this.h.eb === this && (null !== a.layer && !a.layer.lt || !0 !== b.TF)) return !1; var c = b.wJ; if (Infinity > c) { if (null !== this.sc && a === this.Pg && b === this.Qg) return !0; var d = b.yd; null === d && (d = ""); if (a.Hg(d).count >= c) return !1 } return !0 }; ni.prototype.isInSameNode = function(a, b) { if (null === a || null === b) return !1; if (a === b) return !0; var c = a.ca, d = b.ca; return null !== c && c === d }; ni.prototype.isLinked = function(a, b) { if (null === a || null === b) return !1; var c = a.ca; if (!(c instanceof E)) return !1; var d = a.yd; null === d && (d = ""); var e = b.ca; if (!(e instanceof E)) return !1; var g = b.yd; null === g && (g = ""); for (e = e.Hg(g); e.next();) if (g = e.value, g.Y === c && g.$f === d) return !0; return !1 }; ni.prototype.isValidLink = function(a, b, c, d) { if (!this.isValidFrom(a, b) || !this.isValidTo(c, d) || !(null === b || null === d || (b.KH && d.vJ || !this.isInSameNode(b, d)) && (b.JH && d.uJ || !this.isLinked(b, d))) || null !== this.sc && (null !== a && this.isLabelDependentOnLink(a, this.sc) || null !== c && this.isLabelDependentOnLink(c, this.sc)) || null !== a && null !== c && (null === a.data && null !== c.data || null !== a.data && null === c.data) || !this.isValidCycle(a, c, this.sc)) return !1; if (null !== a) { var e = a.px; if (null !== e && !e(a, b, c, d, this.sc)) return !1 } if (null !== c && (e = c.px, null !== e && !e(a, b, c, d, this.sc))) return !1; e = this.px; return null !== e ? e(a, b, c, d, this.sc) : !0 }; ni.prototype.isLabelDependentOnLink = function(a, b) { if (null === a) return !1; var c = a.Nd; if (null === c) return !1; if (c === b) return !0; var d = new K(E); d.add(a); return oi(this, c, b, d) }; function oi(a, b, c, d) { if (b === c) return !0; var e = b.Y; if (null !== e && e.Df && (d.add(e), oi(a, e.Nd, c, d))) return !0; b = b.da; return null !== b && b.Df && (d.add(b), oi(a, b.Nd, c, d)) ? !0 : !1 } ni.prototype.isValidCycle = function(a, b, c) { void 0 === c && (c = null); if (null === a || null === b) return this.Cp; var d = this.h.CJ; if (d !== yi) { if (d === zi) { if (null !== c && !c.Oc) return !0; for (d = b.ee; d.next();) { var e = d.value; if (e !== c && e.Oc && e.da === b) return !1 } return !Ai(this, a, b, c, !0) } if (d === Bi) { if (null !== c && !c.Oc) return !0; for (d = a.ee; d.next();) if (e = d.value, e !== c && e.Oc && e.Y === a) return !1; return !Ai(this, a, b, c, !0) } if (d === Ci) return a === b ? a = !0 : (d = new K(E), d.add(b), a = Di(this, d, a, b, c)), !a; if (d === Ei) return !Ai(this, a, b, c, !1); if (d === Fi) return a === b ? a = !0 : (d = new K(E), d.add(b), a = Gi(this, d, a, b, c)), !a } return !0 }; function Ai(a, b, c, d, e) { if (b === c) return !0; if (null === b || null === c) return !1; for (var g = b.ee; g.next();) { var h = g.value; if (h !== d && (!e || h.Oc) && h.da === b && (h = h.Y, h !== b && Ai(a, h, c, d, e))) return !0 } return !1 } function Di(a, b, c, d, e) { if (c === d) return !0; if (null === c || null === d || b.contains(c)) return !1; b.add(c); for (var g = c.ee; g.next();) { var h = g.value; if (h !== e && h.da === c && (h = h.Y, h !== c && Di(a, b, h, d, e))) return !0 } return !1 } function Gi(a, b, c, d, e) { if (c === d) return !0; if (null === c || null === d || b.contains(c)) return !1; b.add(c); for (var g = c.ee; g.next();) { var h = g.value; if (h !== e) { var k = h.Y, h = h.da, k = k === c ? h : k; if (k !== c && Gi(a, b, k, d, e)) return !0 } } return !1 } z.defineProperty(ni, { px: "linkValidation" }, function() { return this.el }, function(a) { null !== a && z.g(a, "function", ni, "linkValidation"); this.el = a }); z.defineProperty(ni, { Ax: "portTargeted" }, function() { return this.VC }, function(a) { null !== a && z.g(a, "function", ni, "portTargeted"); this.VC = a }); function ta() { 0 < arguments.length && z.od(ta); ni.call(this); this.name = "Linking"; this.ky = {}; this.jy = null; this.fa = Hi; this.dD = null } z.Qa(ta, ni); z.ia("LinkingTool", ta); var Hi; ta.Either = Hi = z.s(ta, "Either", 0); var Ii; ta.ForwardsOnly = Ii = z.s(ta, "ForwardsOnly", 0); var Ji; ta.BackwardsOnly = Ji = z.s(ta, "BackwardsOnly", 0); z.defineProperty(ta, { TG: "archetypeLinkData" }, function() { return this.ky }, function(a) { null !== a && z.l(a, Object, ta, "archetypeLinkData"); a instanceof O && z.l(a, G, ta, "archetypeLinkData"); this.ky = a }); z.defineProperty(ta, { JD: "archetypeLabelNodeData" }, function() { return this.jy }, function(a) { null !== a && z.l(a, Object, ta, "archetypeLabelNodeData"); a instanceof O && z.l(a, E, ta, "archetypeLabelNodeData"); this.jy = a }); z.defineProperty(ta, { direction: "direction" }, function() { return this.fa }, function(a) { z.Ba(a, ta, ta, "direction"); this.fa = a }); z.defineProperty(ta, { PF: "startObject" }, function() { return this.dD }, function(a) { null !== a && z.l(a, O, ta, "startObject"); this.dD = a }); ta.prototype.canStart = function() { if (!this.isEnabled) return !1; var a = this.h; if (null === a || a.jb || a.Ef || !a.lt) return !1; var b = a.ha; return (b instanceof V || b instanceof ng) && a.Q.left && (a.eb === this || this.isBeyondDragSize()) ? null !== this.findLinkablePort() : !1 }; ta.prototype.findLinkablePort = function() { var a = this.h; if (null === a) return null; var b = this.PF; null === b && (b = a.pe(a.Fc.ga, null, null)); if (null === b || !(b.ca instanceof E)) return null; a = this.direction; if (a === Hi || a === Ii) { var c = this.findValidLinkablePort(b, !1); if (null !== c) return this.Md = !0, c } if (a === Hi || a === Ji) if (c = this.findValidLinkablePort(b, !0), null !== c) return this.Md = !1, c; return null }; ta.prototype.doActivate = function() { var a = this.h; if (null !== a) { var b = this.findLinkablePort(); null !== b && (this.Wb(this.name), a.We = !0, a.gc = "pointer", this.Md ? (null === this.Pd || this.Pd.location.F() || (this.Pd.location = a.Q.ga), this.Og = b, b = this.Og.ca, b instanceof E && (this.Ng = b), this.copyPortProperties(this.Ng, this.Og, this.Od, this.zn, !1)) : (null === this.Od || this.Od.location.F() || (this.Od.location = a.Q.ga), this.Qg = b, b = this.Qg.ca, b instanceof E && (this.Pg = b), this.copyPortProperties(this.Pg, this.Qg, this.Pd, this.An, !0)), a.add(this.Od), a.add(this.Pd), null !== this.Tg && (null !== this.Od && (this.Tg.Y = this.Od), null !== this.Pd && (this.Tg.da = this.Pd), this.Tg.qc(), a.add(this.Tg)), this.ua = !0) } }; ta.prototype.doDeactivate = function() { this.ua = !1; var a = this.h; null !== a && (a.remove(this.Tg), a.remove(this.Od), a.remove(this.Pd), a.We = !1, a.gc = "", this.xk()) }; ta.prototype.doStop = function() { ni.prototype.doStop.call(this); this.PF = null }; ta.prototype.doMouseUp = function() { if (this.ua) { var a = this.h; if (null === a) return; var b = this.Mf = null, c = null, d = null, e = null, g = this.jg = this.findTargetPort(this.Md); if (null !== g) { var h = g.ca; h instanceof E && (this.Md ? (null !== this.Ng && (b = this.Ng, c = this.Og), d = h, e = g) : (b = h, c = g, null !== this.Pg && (d = this.Pg, e = this.Qg))) } else this.Md ? null !== this.Ng && this.Cp && (b = this.Ng, c = this.Og) : null !== this.Pg && this.Cp && (d = this.Pg, e = this.Qg); null !== b || null !== d ? (h = this.insertLink(b, c, d, e), null !== h ? (null === g && (this.Md ? h.Zn = a.Q.ga.copy() : h.Vn = a.Q.ga.copy()), a.xf && a.select(h), this.Mf = this.name, a.Ja("LinkDrawn", h)) : (a.ha.QD(), this.doNoLink(b, c, d, e))) : this.Md ? this.doNoLink(this.Ng, this.Og, null, null) : this.doNoLink(null, null, this.Pg, this.Qg) } this.stopTool() }; ta.prototype.insertLink = function(a, b, c, d) { var e = this.h; if (null === e) return null; var g = e.ha; if (g instanceof ng) { var h = a; b = c; e.ce || (h = c, b = a); if (null !== h && null !== b) return g.Eh(b.data, g.pb(h.data)), b.pp() } else if (g instanceof V) if (h = "", null !== a && (null === b && (b = a), h = b.yd, null === h && (h = "")), b = "", null !== c && (null === d && (d = c), b = d.yd, null === b && (b = "")), d = this.TG, d instanceof G) { if (gh(d), g = d.copy(), null !== g) return g.Y = a, g.$f = h, g.da = c, g.Ug = b, e.add(g), a = this.JD, a instanceof E && (gh(a), a = a.copy(), null !== a && (a.Nd = g, e.add(a))), g } else if (null !== d && (d = g.Pw(d), z.Za(d))) return null !== a && g.Kx(d, g.pb(a.data)), g.PA(d, h), null !== c && g.Ox(d, g.pb(c.data)), g.SA(d, b), g.gt(d), a = this.JD, null === a || a instanceof E || (a = g.copyNodeData(a), z.Za(a) && (g.rl(a), a = g.pb(a), void 0 !== a && g.zz(d, a))), g = e.Zf(d); return null }; ta.prototype.doNoLink = function() {}; function Jh() { 0 < arguments.length && z.od(Jh); ni.call(this); this.name = "Relinking"; var a = new X; a.Hb = "Diamond"; a.Aa = be; a.fill = "lightblue"; a.stroke = "dodgerblue"; a.cursor = "pointer"; a.De = 0; this.eC = a; a = new X; a.Hb = "Diamond"; a.Aa = be; a.fill = "lightblue"; a.stroke = "dodgerblue"; a.cursor = "pointer"; a.De = -1; this.pD = a; this.ac = null; this.OC = new w } z.Qa(Jh, ni); z.ia("RelinkingTool", Jh); Jh.prototype.updateAdornments = function(a) { if (null !== a && a instanceof G) { var b = "RelinkFrom", c = null; if (a.kb && !this.h.jb) { var d = a.vn; null !== d && a.canRelinkFrom() && a.W.F() && a.isVisible() && d.W.F() && d.nj() && (c = a.lp(b), null === c && (c = this.makeAdornment(d, !1), null !== c && (c.nc = b), a.ql(b, c))) } null === c && a.rj(b); b = "RelinkTo"; c = null; a.kb && !this.h.jb && (d = a.vn, null !== d && a.canRelinkTo() && a.W.F() && a.isVisible() && d.W.F() && d.nj() && (c = a.lp(b), null === c && (c = this.makeAdornment(d, !0), null !== c && (c.nc = b), a.ql(b, c)))); null === c && a.rj(b) } }; Jh.prototype.makeAdornment = function(a, b) { var c = new da; c.type = Ki; var d = b ? this.tJ : this.IH; null !== d && c.add(d.copy()); c.fc = a; return c }; z.defineProperty(Jh, { IH: "fromHandleArchetype" }, function() { return this.eC }, function(a) { null !== a && z.l(a, O, Jh, "fromHandleArchetype"); this.eC = a }); z.defineProperty(Jh, { tJ: "toHandleArchetype" }, function() { return this.pD }, function(a) { null !== a && z.l(a, O, Jh, "toHandleArchetype"); this.pD = a }); z.w(Jh, { handle: "handle" }, function() { return this.ac }); Jh.prototype.canStart = function() { if (!this.isEnabled) return !1; var a = this.h; if (null === a || a.jb || a.Ef || !a.Tm) return !1; var b = a.ha; if (!(b instanceof V || b instanceof ng) || !a.Q.left) return !1; b = this.findToolHandleAt(a.Fc.ga, "RelinkFrom"); null === b && (b = this.findToolHandleAt(a.Fc.ga, "RelinkTo")); return null !== b }; Jh.prototype.doActivate = function() { var a = this.h; if (null !== a) { if (null === this.sc) { var b = this.findToolHandleAt(a.Fc.ga, "RelinkFrom"); null === b && (b = this.findToolHandleAt(a.Fc.ga, "RelinkTo")); if (null === b) return; var c = b.ca; if (!(c instanceof da && c.Wf instanceof G)) return; this.ac = b; this.Md = null === c || "RelinkTo" === c.nc; this.sc = c.Wf } this.Wb(this.name); a.We = !0; a.gc = "pointer"; this.Og = this.sc.md; this.Ng = this.sc.Y; this.Qg = this.sc.Qd; this.Pg = this.sc.da; this.OC.set(this.sc.W); null !== this.sc && 0 < this.sc.sa && (null === this.sc.Y && (null !== this.zn && (this.zn.Aa = Pd), null !== this.Od && (this.Od.location = this.sc.m(0))), null === this.sc.da && (null !== this.An && (this.An.Aa = Pd), null !== this.Pd && (this.Pd.location = this.sc.m(this.sc.sa - 1)))); this.copyPortProperties(this.Ng, this.Og, this.Od, this.zn, !1); this.copyPortProperties(this.Pg, this.Qg, this.Pd, this.An, !0); a.add(this.Od); a.add(this.Pd); null !== this.Tg && (null !== this.Od && (this.Tg.Y = this.Od), null !== this.Pd && (this.Tg.da = this.Pd), this.copyLinkProperties(this.sc, this.Tg), this.Tg.qc(), a.add(this.Tg)); this.ua = !0 } }; Jh.prototype.copyLinkProperties = function(a, b) { if (null !== a && null !== b) { b.it = a.it; b.Kz = a.Kz; var c = a.Se; if (c === Li || c === Mi) c = Ni; b.Se = c; b.Qw = a.Qw; b.Gx = a.Gx; b.cq = a.cq; b.Db = a.Db; b.Il = a.Il; b.Et = a.Et; b.Ft = a.Ft; b.Eb = a.Eb; b.Yl = a.Yl; b.zu = a.zu; b.Au = a.Au } }; Jh.prototype.doDeactivate = function() { this.ua = !1; var a = this.h; null !== a && (a.remove(this.Tg), a.remove(this.Od), a.remove(this.Pd), a.We = !1, a.gc = "", this.xk()) }; Jh.prototype.doStop = function() { ni.prototype.doStop.call(this); this.ac = null }; Jh.prototype.doMouseUp = function() { if (this.ua) { var a = this.h; if (null === a) return; this.Mf = null; var b = this.Ng, c = this.Og, d = this.Pg, e = this.Qg, g = this.sc; this.jg = this.findTargetPort(this.Md); if (null !== this.jg) { var h = this.jg.ca; h instanceof E && (this.Md ? (d = h, e = this.jg) : (b = h, c = this.jg)) } else this.Cp ? this.Md ? e = d = null : c = b = null : g = null; null !== g ? (this.reconnectLink(g, this.Md ? d : b, this.Md ? e : c, this.Md), null === this.jg && (this.Md ? g.Zn = a.Q.ga.copy() : g.Vn = a.Q.ga.copy(), g.qc()), a.xf && (g.kb = !0), this.Mf = this.name, a.Ja("LinkRelinked", g, this.Md ? this.Qg : this.Og)) : this.doNoRelink(this.sc, this.Md); Oi(this.sc, this.OC) } this.stopTool() }; Jh.prototype.reconnectLink = function(a, b, c, d) { if (null === this.h) return !1; c = null !== c && null !== c.yd ? c.yd : ""; d ? (a.da = b, a.Ug = c) : (a.Y = b, a.$f = c); return !0 }; Jh.prototype.doNoRelink = function() {}; function ii(a, b, c, d, e) { null !== b ? (a.copyPortProperties(b, c, a.Od, a.zn, !1), a.h.add(a.Od)) : a.h.remove(a.Od); null !== d ? (a.copyPortProperties(d, e, a.Pd, a.An, !0), a.h.add(a.Pd)) : a.h.remove(a.Pd) } function Pi() { 0 < arguments.length && z.od(Pi); ug.call(this); this.name = "LinkReshaping"; var a = new X; a.Hb = "Rectangle"; a.Aa = ae; a.fill = "lightblue"; a.stroke = "dodgerblue"; this.Uk = a; a = new X; a.Hb = "Diamond"; a.Aa = ae; a.fill = "lightblue"; a.stroke = "dodgerblue"; this.CC = a; this.WC = 3; this.hy = this.ac = null; this.PC = new N; this.Vv = null } z.Qa(Pi, ug); z.ia("LinkReshapingTool", Pi); var Qi; Pi.None = Qi = z.s(Pi, "None", 0); var Ri; Pi.Horizontal = Ri = z.s(Pi, "Horizontal", 1); var Si; Pi.Vertical = Si = z.s(Pi, "Vertical", 2); var Ti; Pi.All = Ti = z.s(Pi, "All", 3); Pi.prototype.getReshapingBehavior = Pi.prototype.zE = function(a) { return a && a.XC ? a.XC : Qi }; Pi.prototype.setReshapingBehavior = Pi.prototype.su = function(a, b) { z.l(a, O, Pi, "setReshapingBehavior:obj"); z.Ba(b, Pi, Pi, "setReshapingBehavior:behavior"); a.XC = b }; Pi.prototype.updateAdornments = function(a) { if (null !== a && a instanceof G) { if (a.kb && !this.h.jb) { var b = a.path; if (null !== b && a.canReshape() && a.W.F() && a.isVisible() && b.W.F() && b.nj()) { var c = a.lp(this.name); if (null === c || c.wG !== a.sa || c.IG !== a.lu) c = this.makeAdornment(b), null !== c && (c.wG = a.sa, c.IG = a.lu, a.ql(this.name, c)); if (null !== c) { c.location = a.position; return } } } a.rj(this.name) } }; Pi.prototype.makeAdornment = function(a) { var b = a.ca, c = b.sa, d = b.rc, e = null; if (null !== b.points && 1 < c) { e = new da; e.type = Ki; var c = b.Bt, g = b.ox, h = d ? 1 : 0; if (b.lu && b.Se !== Ui) for (var k = c + h; k < g - h; k++) { var l = this.makeResegmentHandle(a, k); null !== l && (l.De = k, l.NA = .5, l.Yz = 999, e.add(l)) } for (k = c + 1; k < g; k++) if (l = this.makeHandle(a, k), null !== l) { l.De = k; if (k !== c) if (k === c + 1 && d) { var h = b.m(c), m = b.m(c + 1); eb(h.x, m.x) && eb(h.y, m.y) && (m = b.m(c - 1)); eb(h.x, m.x) ? (this.su(l, Si), l.cursor = "n-resize") : eb(h.y, m.y) && (this.su(l, Ri), l.cursor = "w-resize") } else k === g - 1 && d ? (h = b.m(g - 1), m = b.m(g), eb(h.x, m.x) && eb(h.y, m.y) && (h = b.m(g + 1)), eb(h.x, m.x) ? (this.su(l, Si), l.cursor = "n-resize") : eb(h.y, m.y) && (this.su(l, Ri), l.cursor = "w-resize")) : k !== g && (this.su(l, Ti), l.cursor = "move"); e.add(l) } e.nc = this.name; e.fc = a } return e }; Pi.prototype.makeHandle = function() { var a = this.Ht; return null === a ? null : a.copy() }; z.defineProperty(Pi, { Ht: "handleArchetype" }, function() { return this.Uk }, function(a) { null !== a && z.l(a, O, Pi, "handleArchetype"); this.Uk = a }); Pi.prototype.makeResegmentHandle = function() { var a = this.FI; return null === a ? null : a.copy() }; z.defineProperty(Pi, { FI: "midHandleArchetype" }, function() { return this.CC }, function(a) { null !== a && z.l(a, O, Pi, "midHandleArchetype"); this.CC = a }); z.w(Pi, { handle: "handle" }, function() { return this.ac }); z.w(Pi, { jt: "adornedLink" }, function() { return this.hy }); Pi.prototype.canStart = function() { if (!this.isEnabled) return !1; var a = this.h; return null !== a && !a.jb && a.Fw && a.Q.left ? null !== this.findToolHandleAt(a.Fc.ga, this.name) : !1 }; Pi.prototype.doActivate = function() { var a = this.h; if (null !== a && (this.ac = this.findToolHandleAt(a.Fc.ga, this.name), null !== this.ac)) { var b = this.ac.ca.Wf; if (b instanceof G) { this.hy = b; a.We = !0; this.Wb(this.name); if (b.lu && 999 === this.ac.Yz) { var c = b.points.copy(), d = this.ac.fb(ec); c.Ld(this.ac.De + 1, d); b.rc && c.Ld(this.ac.De + 1, d); b.points = c; b.ae(); this.ac = this.findToolHandleAt(a.Fc.ga, this.name); if (null === this.ac) { this.doDeactivate(); return } } this.PC = b.m(this.ac.De); this.Vv = b.points.copy(); this.ua = !0 } } }; Pi.prototype.doDeactivate = function() { this.xk(); this.hy = this.ac = null; var a = this.h; null !== a && (a.We = !1); this.ua = !1 }; Pi.prototype.doCancel = function() { var a = this.jt; null !== a && (a.points = this.Vv); this.stopTool() }; Pi.prototype.doMouseMove = function() { var a = this.h; this.ua && null !== a && (a = this.computeReshape(a.Q.ga), this.reshape(a)) }; Pi.prototype.doMouseUp = function() { var a = this.h; if (this.ua && null !== a) { var b = this.computeReshape(a.Q.ga); this.reshape(b); b = this.jt; if (null !== b && b.lu) { var c = this.handle.De, d = b.m(c - 1), e = b.m(c), g = b.m(c + 1); if (b.rc) { if (c > b.Bt + 1 && c < b.ox - 1) { var h = b.m(c - 2); if (Math.abs(d.x - e.x) < this.Ch && Math.abs(d.y - e.y) < this.Ch && (Vi(this, h, d, e, g, !0) || Vi(this, h, d, e, g, !1))) { var k = b.points.copy(); Vi(this, h, d, e, g, !0) ? (k.Rg(c - 2, new N(h.x, (g.y + h.y) / 2)), k.Rg(c + 1, new N(g.x, (g.y + h.y) / 2))) : (k.Rg(c - 2, new N((g.x + h.x) / 2, h.y)), k.Rg(c + 1, new N((g.x + h.x) / 2, g.y))); k.dd(c); k.dd(c - 1); b.points = k; b.ae() } else h = b.m(c + 2), Math.abs(e.x - g.x) < this.Ch && Math.abs(e.y - g.y) < this.Ch && (Vi(this, d, e, g, h, !0) || Vi(this, d, e, g, h, !1)) && (k = b.points.copy(), Vi(this, d, e, g, h, !0) ? (k.Rg(c - 1, new N(d.x, (d.y + h.y) / 2)), k.Rg(c + 2, new N(h.x, (d.y + h.y) / 2))) : (k.Rg(c - 1, new N((d.x + h.x) / 2, d.y)), k.Rg(c + 2, new N((d.x + h.x) / 2, h.y))), k.dd(c + 1), k.dd(c), b.points = k, b.ae()) } } else h = z.O(), ib(d.x, d.y, g.x, g.y, e.x, e.y, h) && h.Af(e) < this.Ch * this.Ch && (k = b.points.copy(), k.dd(c), b.points = k, b.ae()), z.A(h) } a.yc(); this.Mf = this.name; a.Ja("LinkReshaped", this.jt, this.Vv) } this.stopTool() }; function Vi(a, b, c, d, e, g) { return g ? Math.abs(b.y - c.y) < a.Ch && Math.abs(c.y - d.y) < a.Ch && Math.abs(d.y - e.y) < a.Ch : Math.abs(b.x - c.x) < a.Ch && Math.abs(c.x - d.x) < a.Ch && Math.abs(d.x - e.x) < a.Ch } z.defineProperty(Pi, { Ch: "resegmentingDistance" }, function() { return this.WC }, function(a) { z.g(a, "number", Pi, "resegmentingDistance"); this.WC = a }); Pi.prototype.reshape = function(a) { var b = this.jt; b.Ul(); var c = this.handle.De, d = this.zE(this.handle); if (b.rc) if (c === b.Bt + 1) c = b.Bt + 1, d === Si ? (b.aa(c, b.m(c - 1).x, a.y), b.aa(c + 1, b.m(c + 2).x, a.y)) : d === Ri && (b.aa(c, a.x, b.m(c - 1).y), b.aa(c + 1, a.x, b.m(c + 2).y)); else if (c === b.ox - 1) c = b.ox - 1, d === Si ? (b.aa(c - 1, b.m(c - 2).x, a.y), b.aa(c, b.m(c + 1).x, a.y)) : d === Ri && (b.aa(c - 1, a.x, b.m(c - 2).y), b.aa(c, a.x, b.m(c + 1).y)); else { var d = c, e = b.m(d), g = b.m(d - 1), h = b.m(d + 1); eb(g.x, e.x) && eb(e.y, h.y) ? (eb(g.x, b.m(d - 2).x) && !eb(g.y, b.m(d - 2).y) ? (b.B(d, a.x, g.y), c++, d++) : b.aa(d - 1, a.x, g.y), eb(h.y, b.m(d + 2).y) && !eb(h.x, b.m(d + 2).x) ? b.B(d + 1, h.x, a.y) : b.aa(d + 1, h.x, a.y)) : eb(g.y, e.y) && eb(e.x, h.x) ? (eb(g.y, b.m(d - 2).y) && !eb(g.x, b.m(d - 2).x) ? (b.B(d, g.x, a.y), c++, d++) : b.aa(d - 1, g.x, a.y), eb(h.x, b.m(d + 2).x) && !eb(h.y, b.m(d + 2).y) ? b.B(d + 1, a.x, h.y) : b.aa(d + 1, a.x, h.y)) : eb(g.x, e.x) && eb(e.x, h.x) ? (eb(g.x, b.m(d - 2).x) && !eb(g.y, b.m(d - 2).y) ? (b.B(d, a.x, g.y), c++, d++) : b.aa(d - 1, a.x, g.y), eb(h.x, b.m(d + 2).x) && !eb(h.y, b.m(d + 2).y) ? b.B(d + 1, a.x, h.y) : b.aa(d + 1, a.x, h.y)) : eb(g.y, e.y) && eb(e.y, h.y) && (eb(g.y, b.m(d - 2).y) && !eb(g.x, b.m(d - 2).x) ? (b.B(d, g.x, a.y), c++, d++) : b.aa(d - 1, g.x, a.y), eb(h.y, b.m(d + 2).y) && !eb(h.x, b.m(d + 2).x) ? b.B(d + 1, h.x, a.y) : b.aa(d + 1, h.x, a.y)); b.aa(c, a.x, a.y) } else b.aa(c, a.x, a.y), 1 === c && b.computeSpot(!0).Be() && (e = b.Y, g = b.md, null === e || e.isVisible() || (e = e.findVisibleNode(), e !== b.Y && (g = e.Gl(""))), d = g.fb(ec, z.O()), e = b.getLinkPointFromPoint(e, g, d, a, !0, z.O()), b.aa(0, e.x, e.y), z.A(d), z.A(e)), c === b.sa - 2 && b.computeSpot(!1).Be() && (c = b.da, e = b.Qd, null === c || c.isVisible() || (c = c.findVisibleNode(), c !== b.da && (e = c.Gl(""))), d = e.fb(ec, z.O()), e = b.getLinkPointFromPoint(c, e, d, a, !1, z.O()), b.aa(b.sa - 1, e.x, e.y), z.A(d), z.A(e)); b.cj() }; Pi.prototype.computeReshape = function(a) { var b = this.jt, c = this.handle.De; switch (this.zE(this.handle)) { case Ti: return a; case Si: return b = b.m(c), new N(b.x, a.y); case Ri: return b = b.m(c), new N(a.x, b.y); default: case Qi: return b.m(c) } }; z.w(Pi, { eL: "originalPoint" }, function() { return this.PC }); z.w(Pi, { fL: "originalPoints" }, function() { return this.Vv }); function Wi() { 0 < arguments.length && z.od(Wi); ug.call(this); this.name = "Resizing"; this.Tj = (new Ea(1, 1)).freeze(); this.Rj = (new Ea(9999, 9999)).freeze(); this.zj = (new Ea(NaN, NaN)).freeze(); this.jr = !1; this.Ib = null; var a = new X; a.jk = ec; a.Hb = "Rectangle"; a.Aa = ae; a.fill = "lightblue"; a.stroke = "dodgerblue"; a.ub = 1; a.cursor = "pointer"; this.Uk = a; this.ac = null; this.Uv = new Ea; this.fz = new N; this.Jy = new Ea(0, 0); this.Iy = new Ea(Infinity, Infinity); this.Hy = new Ea(1, 1); this.IC = !0 } z.Qa(Wi, ug); z.ia("ResizingTool", Wi); Wi.prototype.updateAdornments = function(a) { if (!(null === a || a instanceof G)) { if (a.kb && !this.h.jb) { var b = a.vF; if (null !== b && a.canResize() && a.W.F() && a.isVisible() && b.W.F() && b.nj()) { var c = a.lp(this.name); if (null === c || c.fc !== b) c = this.makeAdornment(b); if (null !== c) { var d = b.Kl(); c.angle = d; var e = b.fb(c.of, z.O()), g = b.gj(); c.location = e; z.A(e); e = c.placeholder; if (null !== e) { var b = b.Ga, h = z.Xl(); h.n(b.width * g, b.height * g); e.Aa = h; z.pk(h) } Xi(this, c, d); a.ql(this.name, c); return } } } a.rj(this.name) } }; Wi.prototype.makeAdornment = function(a) { var b = null, b = a.ca.uF; if (null === b) { b = new da; b.type = Yi; b.of = ec; var c = new Zi; c.Ff = !0; b.add(c); b.add(this.makeHandle(a, Zb)); b.add(this.makeHandle(a, cc)); b.add(this.makeHandle(a, ic)); b.add(this.makeHandle(a, gc)); b.add(this.makeHandle(a, Zc)); b.add(this.makeHandle(a, ad)); b.add(this.makeHandle(a, bd)); b.add(this.makeHandle(a, $c)) } else if (gh(b), b = b.copy(), null === b) return null; b.nc = this.name; b.fc = a; return b }; Wi.prototype.makeHandle = function(a, b) { var c = this.Ht; if (null === c) return null; c = c.copy(); c.alignment = b; return c }; function Xi(a, b, c) { if (null !== b) if (!b.alignment.bd() && "" !== b.cursor) a: { a = b.alignment;a.Be() && (a = ec); if (0 >= a.x) c = 0 >= a.y ? c + 225 : 1 <= a.y ? c + 135 : c + 180; else if (1 <= a.x) 0 >= a.y ? c += 315 : 1 <= a.y && (c += 45); else if (0 >= a.y) c += 270; else if (1 <= a.y) c += 90; else break a;0 > c ? c += 360 : 360 <= c && (c -= 360);b.cursor = 22.5 > c ? "e-resize" : 67.5 > c ? "se-resize" : 112.5 > c ? "s-resize" : 157.5 > c ? "sw-resize" : 202.5 > c ? "w-resize" : 247.5 > c ? "nw-resize" : 292.5 > c ? "n-resize" : 337.5 > c ? "ne-resize" : "e-resize" } else if (b instanceof I) for (b = b.elements; b.next();) Xi(a, b.value, c) } z.defineProperty(Wi, { Ht: "handleArchetype" }, function() { return this.Uk }, function(a) { null !== a && z.l(a, O, Wi, "handleArchetype"); this.Uk = a }); z.w(Wi, { handle: "handle" }, function() { return this.ac }); z.defineProperty(Wi, { fc: "adornedObject" }, function() { return this.Ib }, function(a) { null !== a && z.l(a, O, Wi, "adornedObject"); this.Ib = a }); Wi.prototype.canStart = function() { if (!this.isEnabled) return !1; var a = this.h; return null !== a && !a.jb && a.mt && a.Q.left ? null !== this.findToolHandleAt(a.Fc.ga, this.name) ? !0 : !1 : !1 }; Wi.prototype.doActivate = function() { var a = this.h; null !== a && (this.ac = this.findToolHandleAt(a.Fc.ga, this.name), null !== this.ac && (this.Ib = this.ac.ca.fc, this.fz.set(this.Ib.ca.location), this.Uv.set(this.Ib.Aa), this.Hy = this.computeCellSize(), this.Jy = this.computeMinSize(), this.Iy = this.computeMaxSize(), a.We = !0, this.IC = a.Ua.isEnabled, a.Ua.isEnabled = !1, this.Wb(this.name), this.ua = !0)) }; Wi.prototype.doDeactivate = function() { var a = this.h; null !== a && (this.xk(), this.Ib = this.ac = null, this.ua = a.We = !1, a.Ua.isEnabled = this.IC) }; Wi.prototype.doCancel = function() { this.Ib.Aa = this.Uv; this.Ib.ca.location = this.fz; this.stopTool() }; Wi.prototype.doMouseMove = function() { var a = this.h; if (this.ua && null !== a) { var b = this.Jy, c = this.Iy, d = this.Hy, e = this.Ib.xE(a.Q.ga, z.O()), g = $i; this.Ib instanceof X && (g = aj(this.Ib)); b = this.computeResize(e, this.ac.alignment, b, c, d, !(g === bj || g === cj || a.Q.shift)); this.resize(b); a.bg(); z.A(e) } }; Wi.prototype.doMouseUp = function() { var a = this.h; if (this.ua && null !== a) { var b = this.Jy, c = this.Iy, d = this.Hy, e = this.Ib.xE(a.Q.ga, z.O()), g = $i; this.Ib instanceof X && (g = aj(this.Ib)); b = this.computeResize(e, this.ac.alignment, b, c, d, !(g === bj || g === cj || a.Q.shift)); this.resize(b); z.A(e); a.yc(); this.Mf = this.name; a.Ja("PartResized", this.Ib, this.Uv) } this.stopTool() }; Wi.prototype.resize = function(a) { if (null !== this.h) { var b = this.fc, c = b.ca, d = b.Kl(), e = b.gj(), g = Math.PI * d / 180, h = Math.cos(g), g = Math.sin(g), k = 0 < d && 180 > d ? 1 : 0, l = 90 < d && 270 > d ? 1 : 0, d = 180 < d && 360 > d ? 1 : 0, m = b.Ga.width, n = b.Ga.height; b.Aa = a.size; var p = c.position.copy(); c.Bf(); m = b.Ga.width - m; n = b.Ga.height - n; if (0 !== m || 0 !== n) 0 !== m && (p.x += e * ((a.x + m * l) * h - (a.y + n * k) * g)), 0 !== n && (p.y += e * ((a.x + m * d) * g + (a.y + n * l) * h)), c.move(p), c instanceof E && c.mf() } }; Wi.prototype.computeResize = function(a, b, c, d, e, g) { b.Be() && (b = ec); var h = this.fc.Ga, k = h.x, l = h.y, m = h.x + h.width, n = h.y + h.height, p = 1; if (!g) { var p = h.width, q = h.height; 0 >= p && (p = 1); 0 >= q && (q = 1); p = q / p } q = z.O(); jb(a.x, a.y, k, l, e.width, e.height, q); a = h.copy(); 0 >= b.x ? 0 >= b.y ? (a.x = Math.max(q.x, m - d.width), a.x = Math.min(a.x, m - c.width), a.width = Math.max(m - a.x, c.width), a.y = Math.max(q.y, n - d.height), a.y = Math.min(a.y, n - c.height), a.height = Math.max(n - a.y, c.height), g || (b = a.height / a.width, p < b ? (a.height = p * a.width, a.y = n - a.height) : (a.width = a.height / p, a.x = m - a.width))) : 1 <= b.y ? (a.x = Math.max(q.x, m - d.width), a.x = Math.min(a.x, m - c.width), a.width = Math.max(m - a.x, c.width), a.height = Math.max(Math.min(q.y - l, d.height), c.height), g || (b = a.height / a.width, p < b ? a.height = p * a.width : (a.width = a.height / p, a.x = m - a.width))) : (a.x = Math.max(q.x, m - d.width), a.x = Math.min(a.x, m - c.width), a.width = m - a.x, g || (a.height = p * a.width, a.y = l + .5 * (n - l - a.height))) : 1 <= b.x ? 0 >= b.y ? (a.width = Math.max(Math.min(q.x - k, d.width), c.width), a.y = Math.max(q.y, n - d.height), a.y = Math.min(a.y, n - c.height), a.height = Math.max(n - a.y, c.height), g || (b = a.height / a.width, p < b ? (a.height = p * a.width, a.y = n - a.height) : a.width = a.height / p)) : 1 <= b.y ? (a.width = Math.max(Math.min(q.x - k, d.width), c.width), a.height = Math.max(Math.min(q.y - l, d.height), c.height), g || (b = a.height / a.width, p < b ? a.height = p * a.width : a.width = a.height / p)) : (a.width = Math.max(Math.min(q.x - k, d.width), c.width), g || (a.height = p * a.width, a.y = l + .5 * (n - l - a.height))) : 0 >= b.y ? (a.y = Math.max(q.y, n - d.height), a.y = Math.min(a.y, n - c.height), a.height = n - a.y, g || (a.width = a.height / p, a.x = k + .5 * (m - k - a.width))) : 1 <= b.y && (a.height = Math.max(Math.min(q.y - l, d.height), c.height), g || (a.width = a.height / p, a.x = k + .5 * (m - k - a.width))); z.A(q); return a }; Wi.prototype.computeMinSize = function() { var a = this.fc.cg.copy(), b = this.cg; !isNaN(b.width) && b.width > a.width && (a.width = b.width); !isNaN(b.height) && b.height > a.height && (a.height = b.height); return a }; Wi.prototype.computeMaxSize = function() { var a = this.fc.Xe.copy(), b = this.Xe; !isNaN(b.width) && b.width < a.width && (a.width = b.width); !isNaN(b.height) && b.height < a.height && (a.height = b.height); return a }; Wi.prototype.computeCellSize = function() { var a = new Ea(NaN, NaN), b = this.fc.ca; if (null !== b) { var c = b.ZI; !isNaN(c.width) && 0 < c.width && (a.width = c.width); !isNaN(c.height) && 0 < c.height && (a.height = c.height) } c = this.dp; isNaN(a.width) && !isNaN(c.width) && 0 < c.width && (a.width = c.width); isNaN(a.height) && !isNaN(c.height) && 0 < c.height && (a.height = c.height); b = this.h; (isNaN(a.width) || isNaN(a.height)) && b && (c = b.hb.me, null !== c && c.ix && (c = c.BE, isNaN(a.width) && !isNaN(c.width) && 0 < c.width && (a.width = c.width), isNaN(a.height) && !isNaN(c.height) && 0 < c.height && (a.height = c.height)), b = b.Gt, null !== b && b.visible && this.ix && (c = b.bx, isNaN(a.width) && !isNaN(c.width) && 0 < c.width && (a.width = c.width), isNaN(a.height) && !isNaN(c.height) && 0 < c.height && (a.height = c.height))); if (isNaN(a.width) || 0 === a.width || Infinity === a.width) a.width = 1; if (isNaN(a.height) || 0 === a.height || Infinity === a.height) a.height = 1; return a }; z.defineProperty(Wi, { cg: "minSize" }, function() { return this.Tj }, function(a) { z.l(a, Ea, Wi, "minSize"); if (!this.Tj.N(a)) { var b = a.width; isNaN(b) && (b = 0); a = a.height; isNaN(a) && (a = 0); this.Tj.n(b, a) } }); z.defineProperty(Wi, { Xe: "maxSize" }, function() { return this.Rj }, function(a) { z.l(a, Ea, Wi, "maxSize"); if (!this.Rj.N(a)) { var b = a.width; isNaN(b) && (b = Infinity); a = a.height; isNaN(a) && (a = Infinity); this.Rj.n(b, a) } }); z.defineProperty(Wi, { dp: "cellSize" }, function() { return this.zj }, function(a) { z.l(a, Ea, Wi, "cellSize"); this.zj.N(a) || this.zj.assign(a) }); z.defineProperty(Wi, { ix: "isGridSnapEnabled" }, function() { return this.jr }, function(a) { z.g(a, "boolean", Wi, "isGridSnapEnabled"); this.jr = a }); z.w(Wi, { cL: "originalDesiredSize" }, function() { return this.Uv }); z.w(Wi, { dL: "originalLocation" }, function() { return this.fz }); function dj() { 0 < arguments.length && z.od(dj); ug.call(this); this.name = "Rotating"; this.bD = 45; this.aD = 2; this.Ib = null; var a = new X; a.Hb = "Ellipse"; a.Aa = be; a.fill = "lightblue"; a.stroke = "dodgerblue"; a.ub = 1; a.cursor = "pointer"; this.Uk = a; this.ac = null; this.Tv = 0; this.YC = new N } z.Qa(dj, ug); z.ia("RotatingTool", dj); dj.prototype.updateAdornments = function(a) { if (!(null === a || a instanceof G)) { if (a.kb && !this.h.jb) { var b = a.zF; if (null !== b && a.canRotate() && a.W.F() && a.isVisible() && b.W.F() && b.nj()) { var c = a.lp(this.name); if (null === c || c.fc !== b) c = this.makeAdornment(b); if (null !== c) { c.angle = b.Kl(); var d = null, e = null; b === a || b === a.Zb ? (d = a.Zb, e = a.of) : (d = b, e = ec); for (var g = d.Ga, e = z.Tb(g.width * e.x + e.offsetX, g.height * e.y + e.offsetY); null !== d && d !== b;) d.transform.Cb(e), d = d.U; var d = e.y, g = Math.max(e.x - b.Ga.width, 0), h = z.O(); c.location = b.fb(new Q(1, 0, 50 + g, d), h); z.A(h); z.A(e); a.ql(this.name, c); return } } } a.rj(this.name) } }; dj.prototype.makeAdornment = function(a) { var b = null, b = a.ca.aJ; if (null === b) { b = new da; b.type = ej; b.of = ec; var c = this.Ht; null !== c && b.add(c.copy()) } else if (gh(b), b = b.copy(), null === b) return null; b.nc = this.name; b.fc = a; return b }; z.defineProperty(dj, { Ht: "handleArchetype" }, function() { return this.Uk }, function(a) { null !== a && z.l(a, O, dj, "handleArchetype"); this.Uk = a }); z.w(dj, { handle: "handle" }, function() { return this.ac }); z.defineProperty(dj, { fc: "adornedObject" }, function() { return this.Ib }, function(a) { null !== a && z.l(a, O, dj, "adornedObject"); this.Ib = a }); dj.prototype.canStart = function() { if (!this.isEnabled) return !1; var a = this.h; return null !== a && !a.jb && a.Gw && a.Q.left ? null !== this.findToolHandleAt(a.Fc.ga, this.name) ? !0 : !1 : !1 }; dj.prototype.doActivate = function() { var a = this.h; if (null !== a && (this.ac = this.findToolHandleAt(a.Fc.ga, this.name), null !== this.ac)) { this.Ib = this.ac.ca.fc; var b = this.Ib.ca, c = b.Zb; this.YC = this.Ib === b || this.Ib === c ? c.fb(b.of) : this.Ib.fb(ec); this.Tv = this.Ib.angle; a.We = !0; a.Oz = !0; this.Wb(this.name); this.ua = !0 } }; dj.prototype.doDeactivate = function() { var a = this.h; null !== a && (this.xk(), this.Ib = this.ac = null, this.ua = a.We = !1) }; dj.prototype.doCancel = function() { var a = this.h; null !== a && (a.Oz = !1); this.rotate(this.Tv); this.stopTool() }; dj.prototype.doMouseMove = function() { var a = this.h; this.ua && null !== a && (a = this.computeRotate(a.Q.ga), this.rotate(a)) }; dj.prototype.doMouseUp = function() { var a = this.h; if (this.ua && null !== a) { a.Oz = !1; var b = this.computeRotate(a.Q.ga); this.rotate(b); a.yc(); this.Mf = this.name; a.Ja("PartRotated", this.Ib, this.Tv) } this.stopTool() }; dj.prototype.rotate = function(a) { u && z.p(a, dj, "rotate:newangle"); null !== this.Ib && (this.Ib.angle = a) }; dj.prototype.computeRotate = function(a) { a = this.YC.Ec(a); var b = this.Ib.U; null !== b && (a -= b.Kl(), 360 <= a ? a -= 360 : 0 > a && (a += 360)); var b = Math.min(Math.abs(this.nJ), 180), c = Math.min(Math.abs(this.mJ), b / 2); !this.h.Q.shift && 0 < b && 0 < c && (a % b < c ? a = Math.floor(a / b) * b : a % b > b - c && (a = (Math.floor(a / b) + 1) * b)); 360 <= a ? a -= 360 : 0 > a && (a += 360); return a }; z.defineProperty(dj, { nJ: "snapAngleMultiple" }, function() { return this.bD }, function(a) { z.g(a, "number", dj, "snapAngleMultiple"); this.bD = a }); z.defineProperty(dj, { mJ: "snapAngleEpsilon" }, function() { return this.aD }, function(a) { z.g(a, "number", dj, "snapAngleEpsilon"); this.aD = a }); z.w(dj, { bL: "originalAngle" }, function() { return this.Tv }); function fj() { 0 < arguments.length && z.od(fj); ug.call(this); this.name = "ClickSelecting" } z.Qa(fj, ug); z.ia("ClickSelectingTool", fj); fj.prototype.canStart = function() { return !this.isEnabled || null === this.h || this.isBeyondDragSize() ? !1 : !0 }; fj.prototype.doMouseUp = function() { this.ua && (this.standardMouseSelect(), !this.standardMouseClick() && this.h.Q.lj && this.h.hb.doToolTip()); this.stopTool() }; function gj() { 0 < arguments.length && z.od(gj); ug.call(this); this.name = "Action"; this.Fn = null } z.Qa(gj, ug); z.ia("ActionTool", gj); gj.prototype.canStart = function() { if (!this.isEnabled) return !1; var a = this.h; if (null === a) return !1; var b = a.Q, c = a.pe(b.ga, function(a) { for (; null !== a.U && !a.Mt;) a = a.U; return a }); if (null !== c) { if (!c.Mt) return !1; this.Fn = c; a.Sn = a.pe(b.ga, null, null); return !0 } return !1 }; gj.prototype.doMouseDown = function() { if (this.ua) { var a = this.h.Q, b = this.Fn; null !== b && (a.Ge = b, null !== b.AD && b.AD(a, b)) } else this.canStart() && this.doActivate() }; gj.prototype.doMouseMove = function() { if (this.ua) { var a = this.h.Q, b = this.Fn; null !== b && (a.Ge = b, null !== b.BD && b.BD(a, b)) } }; gj.prototype.doMouseUp = function() { if (this.ua) { var a = this.h, b = a.Q, c = this.Fn; if (null === c) return; b.Ge = c; null !== c.CD && c.CD(b, c); this.isBeyondDragSize() || Ch(c, b, a) } this.stopTool() }; gj.prototype.doCancel = function() { var a = this.h; if (null !== a) { var a = a.Q, b = this.Fn; if (null === b) return; a.Ge = b; null !== b.zD && b.zD(a, b) } this.stopTool() }; gj.prototype.doStop = function() { this.Fn = null }; function va() { 0 < arguments.length && z.od(va); ug.call(this); this.name = "ClickCreating"; this.Mk = null; this.qC = !0; this.dC = new N(0, 0) } z.Qa(va, ug); z.ia("ClickCreatingTool", va); va.prototype.canStart = function() { if (!this.isEnabled || null === this.Cz) return !1; var a = this.h; if (null === a || a.jb || a.Ef || !a.ap || !a.Q.left || this.isBeyondDragSize()) return !1; if (this.eI) { if (1 === a.Q.Pe && (this.dC = a.Q.te.copy()), 2 !== a.Q.Pe || this.isBeyondDragSize(this.dC)) return !1 } else if (1 !== a.Q.Pe) return !1; return a.eb !== this && null !== a.At(a.Q.ga, !0) ? !1 : !0 }; va.prototype.doMouseUp = function() { var a = this.h; this.ua && null !== a && this.insertPart(a.Q.ga); this.stopTool() }; va.prototype.insertPart = function(a) { var b = this.h; if (null === b) return null; var c = this.Cz; if (null === c) return null; this.Wb(this.name); var d = null; c instanceof D ? c.be() && (gh(c), d = c.copy(), null !== d && b.add(d)) : null !== c && (c = b.ha.copyNodeData(c), z.Za(c) && (b.ha.rl(c), d = b.uh(c))); null !== d && (d.location = a, b.xf && b.select(d)); b.yc(); this.Mf = this.name; b.Ja("PartCreated", d); this.xk(); return d }; z.defineProperty(va, { Cz: "archetypeNodeData" }, function() { return this.Mk }, function(a) { null !== a && z.l(a, Object, va, "archetypeNodeData"); this.Mk = a }); z.defineProperty(va, { eI: "isDoubleClick" }, function() { return this.qC }, function(a) { z.g(a, "boolean", va, "isDoubleClick"); this.qC = a }); function hj(a, b, c) { this.text = a; this.TD = b; this.visible = c } function ij() { 0 < arguments.length && z.od(ij); ug.call(this); this.name = "ContextMenu"; this.IB = this.uy = this.FB = null; this.GC = new N; this.wy = this.$n = null; jj(this) } z.Qa(ij, ug); z.ia("ContextMenuTool", ij); z.bE = !1; z.qt = null; z.rt = null; function jj(a) { a.$n = new da; a.qD = function() { a.stopTool() }; if (!1 === z.bE) { var b = z.createElement("div"), c = z.createElement("div"); b.style.cssText = "top: 0px;z-index:300;position: fixed;display: none;text-align: center;left: 25%;width: 50%;background-color: #F5F5F5;padding: 16px;border: 16px solid #444;border-radius: 10px;margin-top: 10px"; c.style.cssText = "z-index:299;position: fixed;display: none;top: 0;left: 0;width: 100%;height: 100%;background-color: black;-moz-opacity: 0.8;opacity:.80;filter: alpha(opacity=80);"; var d = z.createElement("style"); window.document.getElementsByTagName("head")[0].appendChild(d); d.sheet.insertRule(".defaultCXul { list-style: none; }", 0); d.sheet.insertRule(".defaultCXli {font:700 1.5em Helvetica, Arial, sans-serif;position: relative;min-width: 60px; }", 0); d.sheet.insertRule(".defaultCXa {color: #444;display: inline-block;padding: 4px;text-decoration: none;margin: 2px;border: 1px solid gray;border-radius: 10px; }", 0); b.addEventListener("contextmenu", function(a) { a.preventDefault(); return !1 }, !1); b.addEventListener("selectstart", function(a) { a.preventDefault(); return !1 }, !1); c.addEventListener("contextmenu", function(a) { a.preventDefault(); return !1 }, !1); window.document.body && (window.document.body.appendChild(b), window.document.body.appendChild(c)); z.rt = b; z.qt = c; z.bE = !0 } } ij.prototype.canStart = function() { if (!this.isEnabled) return !1; var a = this.h; return null === a || this.isBeyondDragSize() || !a.Q.right ? !1 : null !== this.$n && a.Q.lj || null !== this.findObjectWithContextMenu() ? !0 : !1 }; ij.prototype.doStart = function() { var a = this.h; null !== a && this.GC.set(a.Fc.ga) }; ij.prototype.doStop = function() { this.hideDefaultContextMenu(); this.hideContextMenu(); this.Nz = null }; ij.prototype.findObjectWithContextMenu = function(a) { void 0 === a && (a = null); var b = this.h; if (null === b) return null; var c = b.Q, d = null; a instanceof C || (d = a instanceof O ? a : b.pe(c.ga, null, function(a) { return !a.layer.Nc })); if (null !== d) { for (a = d; null !== a;) { if (null !== a.contextMenu) return a; a = a.U } if (null !== this.$n && b.Q.lj) return d.ca } else if (null !== b.contextMenu) return b; return null }; ij.prototype.doActivate = function() {}; ij.prototype.doMouseDown = function() { ug.prototype.doMouseDown.call(this); null !== this.h && this.h.hb.Ye.contains(this) && kj(this) }; ij.prototype.doMouseUp = function() { kj(this) }; function kj(a) { var b = a.h; if (null !== b) if (!a.ua) a.canStart() && (uh(a, !0), a.ua || a.stopTool()); else if (null !== a.yf) { var c = b.pe(b.Q.ga, null, null); null !== c && c.Pl(a.yf) && a.standardMouseClick(null, null); a.stopTool(); a.canStart() && (b.eb = a, a.doMouseUp()) } } function uh(a, b, c) { void 0 === c && (c = null); b && a.standardMouseSelect(); a.standardMouseClick() || (a.ua = !0, null === c && (c = a.findObjectWithContextMenu()), null !== c ? (b = c.contextMenu, null !== b ? (a.Nz = c instanceof O ? c : null, a.showContextMenu(b, a.Nz)) : a.showDefaultContextMenu()) : a.showDefaultContextMenu()) } ij.prototype.doMouseMove = function() { this.ua && this.h.hb.doMouseMove() }; ij.prototype.showContextMenu = function(a, b) { z.l(a, da, ij, "showContextMenu:contextmenu"); null !== b && z.l(b, O, ij, "showContextMenu:obj"); var c = this.h; if (null !== c) { a !== this.yf && this.hideContextMenu(); a.If = "Tool"; a.vk = !1; a.scale = 1 / c.scale; a.nc = this.name; null !== a.placeholder && (a.placeholder.scale = c.scale); c.add(a); if (null !== b) { var c = null, d = b.op(); null !== d && (c = d.data); a.fc = b; a.data = c } else a.data = c.ha; a.Bf(); this.positionContextMenu(a, b); this.yf = a } }; ij.prototype.positionContextMenu = function(a) { if (null === a.placeholder) { var b = this.h; if (null !== b) { var c = b.Q.ga.copy(), d = a.Ia, e = b.xb; b.Q.lj && (c.x -= d.width); c.x + d.width > e.right && (c.x -= d.width + 5); c.x < e.x && (c.x = e.x); c.y + d.height > e.bottom && (c.y -= d.height + 5); c.y < e.y && (c.y = e.y); a.position = c } } }; ij.prototype.hideContextMenu = function() { var a = this.h; null !== a && null !== this.yf && (a.remove(this.yf), null !== this.uy && this.uy.rj(this.yf.nc), this.yf.data = null, this.yf = this.yf.fc = null, this.standardMouseOver()) }; function lj(a) { if (null === a.h) return null; a = new J(hj); a.add(new hj("Copy", function(a) { a.wb.copySelection() }, function(a) { return a.wb.canCopySelection() })); a.add(new hj("Cut", function(a) { a.wb.cutSelection() }, function(a) { return a.wb.canCutSelection() })); a.add(new hj("Delete", function(a) { a.wb.deleteSelection() }, function(a) { return a.wb.canDeleteSelection() })); a.add(new hj("Paste", function(a) { a.wb.pasteSelection(a.Q.ga) }, function(a) { return a.wb.canPasteSelection() })); a.add(new hj("Select All", function(a) { a.wb.selectAll() }, function(a) { return a.wb.canSelectAll() })); a.add(new hj("Undo", function(a) { a.wb.undo() }, function(a) { return a.wb.canUndo() })); a.add(new hj("Redo", function(a) { a.wb.redo() }, function(a) { return a.wb.canRedo() })); a.add(new hj("Scroll To Part", function(a) { a.wb.scrollToPart() }, function(a) { return a.wb.canScrollToPart() })); a.add(new hj("Zoom To Fit", function(a) { a.wb.zoomToFit() }, function(a) { return a.wb.canZoomToFit() })); a.add(new hj("Reset Zoom", function(a) { a.wb.resetZoom() }, function(a) { return a.wb.canResetZoom() })); a.add(new hj("Group Selection", function(a) { a.wb.groupSelection() }, function(a) { return a.wb.canGroupSelection() })); a.add(new hj("Ungroup Selection", function(a) { a.wb.ungroupSelection() }, function(a) { return a.wb.canUngroupSelection() })); a.add(new hj("Edit Text", function(a) { a.wb.editTextBlock() }, function(a) { return a.wb.canEditTextBlock() })); return a } ij.prototype.showDefaultContextMenu = function() { var a = this.h; if (null !== a) { null === this.wy && (this.wy = lj(this)); this.$n !== this.yf && this.hideContextMenu(); z.rt.innerHTML = ""; z.qt.addEventListener("click", this.qD, !1); var b = this, c = z.createElement("ul"); c.className = "defaultCXul"; z.rt.appendChild(c); c.innerHTML = ""; for (var d = this.wy.i; d.next();) { var e = d.value, g = e.text, h = e.visible; if ("function" === typeof e.TD && ("function" !== typeof h || h(a))) { h = z.createElement("li"); h.className = "defaultCXli"; var k = z.createElement("a"); k.className = "defaultCXa"; k.href = "#"; k.nG = e.TD; k.addEventListener("click", function(c) { this.nG(a); b.stopTool(); c.preventDefault(); return !1 }, !1); k.textContent = g; h.appendChild(k); c.appendChild(h) } } z.rt.style.display = "block"; z.qt.style.display = "block"; this.yf = this.$n } }; ij.prototype.hideDefaultContextMenu = function() { null !== this.yf && this.yf === this.$n && (z.rt.style.display = "none", z.qt.style.display = "none", z.qt.removeEventListener("click", this.qD, !1), this.yf = null) }; z.defineProperty(ij, { yf: "currentContextMenu" }, function() { return this.FB }, function(a) { null !== a && z.l(a, da, ij, "currentContextMenu"); this.FB = a; this.uy = null !== a ? a.Wf : null }); z.defineProperty(ij, { Nz: "currentObject" }, function() { return this.IB }, function(a) { null !== a && z.l(a, O, ij, "currentObject"); this.IB = a }); z.w(ij, { XK: "mouseDownPoint" }, function() { return this.GC }); function mj() { 0 < arguments.length && z.od(mj); ug.call(this); this.name = "DragSelecting"; this.ao = 175; this.vC = !1; var a = new D; a.If = "Tool"; a.vk = !1; var b = new X; b.name = "SHAPE"; b.Hb = "Rectangle"; b.fill = null; b.stroke = "magenta"; a.add(b); this.em = a } z.Qa(mj, ug); z.ia("DragSelectingTool", mj); mj.prototype.canStart = function() { if (!this.isEnabled) return !1; var a = this.h; if (null === a || !a.xf) return !1; var b = a.Q; return !b.left || a.eb !== this && (!this.isBeyondDragSize() || b.timestamp - a.Fc.timestamp < this.cE || null !== a.At(b.ga, !0)) ? !1 : !0 }; mj.prototype.doActivate = function() { var a = this.h; null !== a && (this.ua = !0, a.We = !0, a.Bb = !0, a.add(this.qh), this.doMouseMove()) }; mj.prototype.doDeactivate = function() { var a = this.h; null !== a && (a.remove(this.qh), a.Bb = !1, this.ua = a.We = !1) }; mj.prototype.doMouseMove = function() { if (null !== this.h && this.ua && null !== this.qh) { var a = this.computeBoxBounds(), b = this.qh.oe("SHAPE"); null === b && (b = this.qh.gf()); b.Aa = a.size; this.qh.position = a.position } }; mj.prototype.doMouseUp = function() { if (this.ua) { var a = this.h; a.remove(this.qh); try { a.gc = "wait", this.selectInRect(this.computeBoxBounds()) } finally { a.gc = "" } } this.stopTool() }; mj.prototype.computeBoxBounds = function() { var a = this.h; return null === a ? new w(0, 0, 0, 0) : new w(a.Fc.ga, a.Q.ga) }; mj.prototype.selectInRect = function(a) { var b = this.h; if (null !== b) { var c = b.Q; b.Ja("ChangingSelection"); a = b.ok(a, null, function(a) { return a instanceof D ? a.canSelect() : !1 }, this.jI); if (z.rk ? c.$t : c.control) if (c.shift) for (a = a.i; a.next();) c = a.value, c.kb && (c.kb = !1); else for (a = a.i; a.next();) c = a.value, c.kb = !c.kb; else { if (!c.shift) { for (var c = new J(D), d = b.selection.i; d.next();) { var e = d.value; a.contains(e) || c.add(e) } for (c = c.i; c.next();) c.value.kb = !1 } for (a = a.i; a.next();) c = a.value, c.kb || (c.kb = !0) } b.Ja("ChangedSelection") } }; z.defineProperty(mj, { cE: "delay" }, function() { return this.ao }, function(a) { z.g(a, "number", mj, "delay"); this.ao = a }); z.defineProperty(mj, { jI: "isPartialInclusion" }, function() { return this.vC }, function(a) { z.g(a, "boolean", mj, "isPartialInclusion"); this.vC = a }); z.defineProperty(mj, { qh: "box" }, function() { return this.em }, function(a) { null !== a && z.l(a, D, mj, "box"); this.em = a }); function nj() { 0 < arguments.length && z.od(nj); ug.call(this); this.name = "Panning"; this.gz = new N; this.yj = !1; var a = this; this.eD = function() { window.document.removeEventListener("scroll", a.eD, !1); a.stopTool() } } z.Qa(nj, ug); z.ia("PanningTool", nj); nj.prototype.canStart = function() { if (!this.isEnabled) return !1; var a = this.h; return null === a || !a.xe && !a.ye || !a.Q.left || a.eb !== this && !this.isBeyondDragSize() ? !1 : !0 }; nj.prototype.doActivate = function() { var a = this.h; null !== a && (this.yj ? (a.Q.bubbles = !0, window.document.addEventListener("scroll", this.eD, !1)) : (a.gc = "move", a.We = !0, this.gz = a.position.copy()), this.ua = !0) }; nj.prototype.doDeactivate = function() { var a = this.h; null !== a && (a.gc = "", this.ua = a.We = !1) }; nj.prototype.doCancel = function() { var a = this.h; null !== a && (a.position = this.gz, a.We = !1); this.stopTool() }; nj.prototype.doMouseMove = function() { this.move() }; nj.prototype.doMouseUp = function() { this.move(); this.stopTool() }; nj.prototype.move = function() { var a = this.h; if (this.ua && a) if (this.yj) a.Q.bubbles = !0; else { var b = a.position, c = a.Fc.ga, d = a.Q.ga, e = b.x + c.x - d.x, c = b.y + c.y - d.y; a.xe || (e = b.x); a.ye || (c = b.y); a.position = new N(e, c) } }; z.defineProperty(nj, { bubbles: "bubbles" }, function() { return this.yj }, function(a) { z.g(a, "boolean", nj, "bubbles"); this.yj = a }); z.w(nj, { gL: "originalPosition" }, function() { return this.gz }); function oj() { 0 < arguments.length && z.od(oj); ug.call(this); this.name = "TextEditing"; this.LB = this.qz = this.iD = null; this.Ro = pj; this.nl = null; this.nb = qj; this.kl = null; this.DC = 1; this.ZC = !0; var a = z.createElement("textarea"); a.pC = !0; this.SB = a; a.addEventListener("input", function() { var a = this.textEditingTool; if (null !== a && void 0 !== a && null !== a.He) { var c = a.iD; c.text = this.value; var d = this.sJ; rj(c, a.He.Ev, Infinity); this.style.width = 20 + c.Ia.width * d + "px"; this.style.height = 10 + c.Ia.height * d + "px"; this.rows = c.sI } }, !1); a.addEventListener("keydown", function(a) { var c = a.which, d = this.textEditingTool; null !== d && void 0 !== d && null !== d.He && (13 === c ? (!1 === d.He.lx && a.preventDefault(), d.acceptText(sj)) : 9 === c ? (d.acceptText(tj), a.preventDefault()) : 27 === c && (d.doCancel(), null !== d.h && d.h.focus())) }, !1); a.addEventListener("focus", function(a) { var c = this.textEditingTool; null !== c && void 0 !== c && c.doFocus(a) }, !1); a.addEventListener("blur", function(a) { var c = this.textEditingTool; null !== c && void 0 !== c && c.doBlur(a) }, !1) } z.ia("TextEditingTool", oj); z.Qa(oj, ug); var uj; oj.LostFocus = uj = z.s(oj, "LostFocus", 0); var Ej; oj.MouseDown = Ej = z.s(oj, "MouseDown", 1); var tj; oj.Tab = tj = z.s(oj, "Tab", 2); var sj; oj.Enter = sj = z.s(oj, "Enter", 3); oj.SingleClick = z.s(oj, "SingleClick", 0); var pj; oj.SingleClickSelected = pj = z.s(oj, "SingleClickSelected", 1); var qj = z.s(oj, "StateNone", 0), Fj = z.s(oj, "StateActive", 1), Gj = z.s(oj, "StateEditing", 2), Hj = z.s(oj, "StateEditing2", 3), Ij = z.s(oj, "StateValidating", 4), Jj = z.s(oj, "StateValidated", 5); z.defineProperty(oj, { He: "textBlock" }, function() { return this.qz }, function(a) { null !== a && z.l(a, qa, oj, "textBlock"); this.qz = a }); z.defineProperty(oj, { zf: "currentTextEditor" }, function() { return this.LB }, function(a) { this.LB = a }); z.defineProperty(oj, { pH: "defaultTextEditor" }, function() { return this.SB }, function(a) { z.l(a, Element, oj, "defaultTextEditor"); this.SB = a }); z.defineProperty(oj, { VA: "starting" }, function() { return this.Ro }, function(a) { z.Ba(a, oj, oj, "starting"); this.Ro = a }); oj.prototype.canStart = function() { if (!this.isEnabled) return !1; var a = this.h; if (null === a || a.jb || !a.Q.left || this.isBeyondDragSize()) return !1; a = a.pe(a.Q.ga, null, function(a) { return a instanceof qa }); if (null === a || !a.Sz || !a.ca.canEdit()) return !1; a = a.ca; return null === a || this.VA === pj && !a.kb ? !1 : !0 }; oj.prototype.doStart = function() { this.ua || null === this.He || this.doActivate() }; oj.prototype.doActivate = function() { if (!this.ua) { var a = this.h; if (null !== a) { var b = this.He; null === b && (b = a.pe(a.Q.ga, function(a) { return a instanceof qa ? a : null })); if (null !== b && (this.He = b, null !== b.ca)) { this.ua = !0; this.nb = Fj; var c = this.pH, d = !1; null !== b.SF && (c = b.SF); null === c || c.pC || (d = !0); this.iD = this.He.copy(); var e = new w(this.He.fb(Zb), this.He.fb(ic)); a.fJ(e); if (c.pC) { var g = b.fb(ec), h = a.position, k = a.scale, l = b.gj() * k; l < this.cF && (l = this.cF); var e = b.Ga.width * l, m = b.Ga.height * l, n = (g.x - h.x) * k, g = (g.y - h.y) * k; c.value = b.text; a.Dl.style.font = b.font; c.style.font = "inherit"; c.style.fontSize = 100 * l + "%"; c.style.lineHeight = "normal"; c.style.width = e + 6 + "px"; c.style.height = m + 2 + "px"; c.style.left = (n - e / 2 | 0) - 1 + "px"; c.style.top = (g - m / 2 | 0) - 1 + "px"; c.style.textAlign = b.textAlign; c.style.margin = "0"; c.style.padding = "1px"; c.style.border = "0"; c.style.outline = "none"; c.style["white-space"] = "pre-wrap"; c.style.overflow = "hidden" } a.Dl.appendChild(c); c.style.position = "absolute"; c.style.zIndex = 100; c.className = "start"; c.textEditingTool = this; c.sJ = l; if (d && "function" === typeof c.onActivate) c.onActivate(); this.zf = c; "function" === typeof c.focus && c.focus(); "function" === typeof c.select && this.OA && (c.select(), c.setSelectionRange(0, 9999)) } } } }; oj.prototype.doCancel = function() { null !== this.kl && (this.zf.style.border = this.kl, this.kl = null); this.stopTool() }; oj.prototype.doMouseUp = function() { !this.ua && this.canStart() && this.doActivate() }; oj.prototype.doMouseDown = function() { this.ua && this.acceptText(Ej) }; oj.prototype.acceptText = function(a) { switch (a) { case Ej: if (this.nb === Jj || this.nb === Hj) "function" === typeof this.zf.focus && this.zf.focus(); else if (this.nb === Fj || this.nb === Gj) this.nb = Ij, Kj(this); break; case uj: case sj: case tj: if (sj === a && !0 === this.qz.lx) break; if (this.nb === Fj || this.nb === Gj) this.nb = Ij, Kj(this) } }; function Kj(a) { if (null !== a.He && null !== a.zf) { var b = a.He, c = a.He.text, d = a.zf.value, e = "", e = "function" === typeof d ? d() : d; if (!a.isValidText(a.He, c, e)) { a.nb = Gj; null !== b.Uz && b.Uz(a, c, e); null === a.kl && (a.kl = a.zf.style.border, a.zf.style.border = "3px solid red"); "function" === typeof a.zf.focus && a.zf.focus(); return } a.Wb(a.name); a.nb = Jj; c !== e && (a.He.text = e); a.Mf = a.name; b = a.h; null !== b && b.Ja("TextEdited", a.He, c); a.xk(); a.stopTool(); null !== b && b.focus() } null !== a.kl && (a.zf.style.border = a.kl, a.kl = null) } oj.prototype.doDeactivate = function() { var a = this.h; if (null !== a) { this.nb = qj; this.He = null; if (null !== this.zf) { var b = this.zf; if ("function" === typeof b.onDeactivate) b.onDeactivate(); null !== b && a.Dl.removeChild(b) } this.ua = !1 } }; oj.prototype.doFocus = function() { var a = this.zf; null !== a && (this.nb === Fj ? this.nb = Gj : this.nb === Jj ? this.nb = Hj : this.nb === Hj && (this.nb = Gj), "function" === typeof a.select && this.OA && (a.select(), a.setSelectionRange(0, 9999))) }; oj.prototype.doBlur = function() { var a = this.zf; null !== a && ("function" === typeof a.focus && a.focus(), "function" === typeof a.select && this.OA && (a.select(), a.setSelectionRange(0, 9999))) }; oj.prototype.isValidText = function(a, b, c) { z.l(a, qa, oj, "isValidText:textblock"); var d = this.YA; if (null !== d && !d(a, b, c)) return !1; d = a.YA; return null === d || d(a, b, c) ? !0 : !1 }; z.defineProperty(oj, { YA: "textValidation" }, function() { return this.nl }, function(a) { null !== a && z.g(a, "function", oj, "textValidation"); this.nl = a }); z.defineProperty(oj, { cF: "minimumEditorScale" }, function() { return this.DC }, function(a) { null !== a && z.g(a, "number", oj, "minimumEditorScale"); this.DC = a }); z.defineProperty(oj, { OA: "selectsTextOnActivate" }, function() { return this.ZC }, function(a) { null !== a && z.g(a, "boolean", oj, "selectsTextOnActivate"); this.ZC = a }); function dh() { ug.call(this); this.name = "ToolManager"; this.sG = new J(ug); this.tG = new J(ug); this.uG = new J(ug); this.hC = this.iC = 850; this.WB = (new Ea(2, 2)).La(); this.rD = 5E3; this.HC = Eh; this.fC = Lj; this.dv = this.MB = null; this.Nm = -1 } z.Qa(dh, ug); z.ia("ToolManager", dh); var Eh; dh.WheelScroll = Eh = z.s(dh, "WheelScroll", 0); var Dh; dh.WheelZoom = Dh = z.s(dh, "WheelZoom", 1); dh.WheelNone = z.s(dh, "WheelNone", 2); var Lj; dh.GestureZoom = Lj = z.s(dh, "GestureZoom", 3); var Mj; dh.GestureCancel = Mj = z.s(dh, "GestureCancel", 4); var Nj; dh.GestureNone = Nj = z.s(dh, "GestureNone", 5); z.defineProperty(dh, { cu: "mouseWheelBehavior" }, function() { return this.HC }, function(a) { z.Ba(a, dh, dh, "mouseWheelBehavior"); this.HC = a }); z.defineProperty(dh, { rp: "gestureBehavior" }, function() { return this.fC }, function(a) { z.Ba(a, dh, dh, "gestureBehavior"); this.fC = a }); dh.prototype.initializeStandardTools = function() { this.JG = new gj; this.kF = new Jh; this.vI = new Pi; this.xF = new Wi; this.cJ = new dj; this.ZE = new ta; this.me = new ih; this.tH = new mj; this.OI = new nj; this.Hz = new ij; this.XA = new oj; this.ZG = new va; this.$G = new fj }; dh.prototype.updateAdornments = function(a) { var b = this.th; if (null !== b && this.dv === a) { var c = b.fc; (null !== a ? c.ca === a : null === c) ? this.showToolTip(b, c): this.hideToolTip() } }; dh.prototype.doMouseDown = function() { var a = this.h; if (null !== a) { var b = a.Q; b.lj && this.rp === Mj && (b.bubbles = !1); if (b.Qt) { if (this.rp === Nj) { b.bubbles = !0; return } if (this.rp === Mj) return; if (a.eb.canStartMultiTouch()) { a.eb.standardPinchZoomStart(); return } } var c = a.pa; c.Ez && 0 !== c.Gh && z.trace("WARNING: In ToolManager.doMouseDown: UndoManager.transactionLevel is not zero"); for (var c = this.Ye.length, d = 0; d < c; d++) { var e = this.Ye.ea(d); null === e.h && e.Sc(this.h); if (e.canStart()) { a.doFocus(); a.eb = e; a.eb === e && (e.ua || e.doActivate(), e.doMouseDown()); return } } 1 === a.Q.button && (this.cu === Eh ? this.cu = Dh : this.cu === Dh && (this.cu = Eh)); this.doActivate(); this.standardWaitAfter(this.FE, b) } }; dh.prototype.doMouseMove = function() { var a = this.h; if (null !== a) { var b = a.Q; if (b.Qt) { if (this.rp === Nj) { b.bubbles = !0; return } if (this.rp === Mj) return; if (a.eb.canStartMultiTouch()) { a.eb.standardPinchZoomMove(); return } } if (this.ua) for (var c = this.dg.length, d = 0; d < c; d++) { var e = this.dg.ea(d); null === e.h && e.Sc(this.h); if (e.canStart()) { a.doFocus(); a.eb = e; a.eb === e && (e.ua || e.doActivate(), e.doMouseMove()); return } } Oj(this, a); null === b.event || "mousemove" !== b.event.type && b.event.cancelable || (b.bubbles = !0) } }; function Oj(a, b) { a.standardMouseOver(); a.isBeyondDragSize() && a.standardWaitAfter(a.ua ? a.FE : a.WH, b.Q) } dh.prototype.doCurrentObjectChanged = function(a, b) { var c = this.th; null === c || null !== b && (b === c || b.Pl(c)) || this.hideToolTip() }; dh.prototype.doWaitAfter = function(a) { var b = this.h; null !== b && b.Fb && (this.doMouseHover(), this.ua || this.doToolTip(), a.lj && !b.Q.Gc && (a = a.copy(), a.button = 2, a.buttons = 2, b.Q = a, b.Ss = !0, b.doMouseUp())) }; dh.prototype.doMouseHover = function() { var a = this.h; if (null !== a) { var b = a.Q; null === b.Ge && (b.Ge = a.pe(b.ga, null, null)); var c = b.Ge; if (null !== c) for (b.Gc = !1; null !== c;) { a = this.ua ? c.sA : c.tA; if (null !== a && (a(b, c), b.Gc)) break; c = c.U } else a = this.ua ? a.sA : a.tA, null !== a && a(b) } }; dh.prototype.doToolTip = function() { var a = this.h; if (null !== a) { var b = a.Q; null === b.Ge && (b.Ge = a.pe(b.ga, null, null)); b = b.Ge; if (null !== b) { if (b !== this.th && !b.Pl(this.th)) { for (; null !== b;) { a = b.$A; if (null !== a) { this.showToolTip(a, b); return } b = b.U } this.hideToolTip() } } else a = a.$A, null !== a ? this.showToolTip(a, null) : this.hideToolTip() } }; dh.prototype.showToolTip = function(a, b) { z.l(a, da, dh, "showToolTip:tooltip"); null !== b && z.l(b, O, dh, "showToolTip:obj"); var c = this.h; if (null !== c) { a !== this.th && this.hideToolTip(); a.If = "Tool"; a.vk = !1; a.scale = 1 / c.scale; a.nc = "ToolTip"; null !== a.placeholder && (a.placeholder.scale = c.scale); c.add(a); if (null !== b) { var c = null, d = b.op(); null !== d && (c = d.data); a.fc = b; a.data = c } else a.data = c.ha; a.Bf(); this.positionToolTip(a, b); this.th = a; - 1 !== this.Nm && (z.clearTimeout(this.Nm), this.Nm = -1); c = this.xJ; if (0 < c && Infinity !== c) { var e = this; this.Nm = z.setTimeout(function() { e.hideToolTip() }, c) } } }; dh.prototype.positionToolTip = function(a) { if (null === a.placeholder) { var b = this.h; if (null !== b) { var c = b.Q.ga.copy(), d = a.Ia, e = b.xb; b.Q.lj && (c.x -= d.width); c.x + d.width > e.right && (c.x -= d.width + 5); c.x < e.x && (c.x = e.x); c.y = c.y + 20 + d.height > e.bottom ? c.y - (d.height + 5) : c.y + 20; c.y < e.y && (c.y = e.y); a.position = c } } }; dh.prototype.hideToolTip = function() { -1 !== this.Nm && (z.clearTimeout(this.Nm), this.Nm = -1); var a = this.h; null !== a && null !== this.th && (a.remove(this.th), null !== this.dv && this.dv.rj(this.th.nc), this.th.data = null, this.th = this.th.fc = null) }; z.defineProperty(dh, { th: "currentToolTip" }, function() { return this.MB }, function(a) { null !== a && z.l(a, da, dh, "currentToolTip"); this.MB = a; this.dv = null !== a ? a.Wf : null }); dh.prototype.doMouseUp = function() { this.cancelWaitAfter(); var a = this.h; if (null !== a) { if (this.ua) for (var b = this.eg.length, c = 0; c < b; c++) { var d = this.eg.ea(c); null === d.h && d.Sc(this.h); if (d.canStart()) { a.doFocus(); a.eb = d; a.eb === d && (d.ua || d.doActivate(), d.doMouseUp()); return } } a.doFocus(); this.doDeactivate() } }; dh.prototype.doMouseWheel = function() { this.standardMouseWheel() }; dh.prototype.doKeyDown = function() { var a = this.h; null !== a && a.wb.doKeyDown() }; dh.prototype.doKeyUp = function() { var a = this.h; null !== a && a.wb.doKeyUp() }; dh.prototype.doCancel = function() { null !== Hh && Hh.doCancel(); ug.prototype.doCancel.call(this) }; dh.prototype.findTool = function(a) { z.g(a, "string", dh, "findTool:name"); for (var b = this.Ye.length, c = 0; c < b; c++) { var d = this.Ye.ea(c); if (d.name === a) return d } b = this.dg.length; for (c = 0; c < b; c++) if (d = this.dg.ea(c), d.name === a) return d; b = this.eg.length; for (c = 0; c < b; c++) if (d = this.eg.ea(c), d.name === a) return d; return null }; dh.prototype.replaceTool = function(a, b) { z.g(a, "string", dh, "replaceTool:name"); null !== b && (z.l(b, ug, dh, "replaceTool:newtool"), b.h && b.h !== this.h && z.k("Cannot share tools between Diagrams: " + b.toString()), b.Sc(this.h)); for (var c = this.Ye.length, d = 0; d < c; d++) { var e = this.Ye.ea(d); if (e.name === a) return null !== b ? this.Ye.Rg(d, b) : this.Ye.dd(d), e } c = this.dg.length; for (d = 0; d < c; d++) if (e = this.dg.ea(d), e.name === a) return null !== b ? this.dg.Rg(d, b) : this.dg.dd(d), e; c = this.eg.length; for (d = 0; d < c; d++) if (e = this.eg.ea(d), e.name === a) return null !== b ? this.eg.Rg(d, b) : this.eg.dd(d), e; return null }; function Pj(a, b, c, d) { z.g(b, "string", dh, "replaceStandardTool:name"); z.l(d, J, dh, "replaceStandardTool:list"); null !== c && (z.l(c, ug, dh, "replaceStandardTool:newtool"), c.h && c.h !== a.h && z.k("Cannot share tools between Diagrams: " + c.toString()), c.name = b, c.Sc(a.h)); a.findTool(b) ? a.replaceTool(b, c) : null !== c && d.add(c) } z.w(dh, { Ye: "mouseDownTools" }, function() { return this.sG }); z.w(dh, { dg: "mouseMoveTools" }, function() { return this.tG }); z.w(dh, { eg: "mouseUpTools" }, function() { return this.uG }); z.defineProperty(dh, { WH: "hoverDelay" }, function() { return this.iC }, function(a) { z.g(a, "number", dh, "hoverDelay"); this.iC = a }); z.defineProperty(dh, { FE: "holdDelay" }, function() { return this.hC }, function(a) { z.g(a, "number", dh, "holdDelay"); this.hC = a }); z.defineProperty(dh, { uH: "dragSize" }, function() { return this.WB }, function(a) { z.l(a, Ea, dh, "dragSize"); this.WB = a.V() }); z.defineProperty(dh, { xJ: "toolTipDuration" }, function() { return this.rD }, function(a) { z.g(a, "number", dh, "toolTipDuration"); this.rD = a }); z.defineProperty(dh, { JG: "actionTool" }, function() { return this.findTool("Action") }, function(a) { Pj(this, "Action", a, this.Ye) }); z.defineProperty(dh, { kF: "relinkingTool" }, function() { return this.findTool("Relinking") }, function(a) { Pj(this, "Relinking", a, this.Ye) }); z.defineProperty(dh, { vI: "linkReshapingTool" }, function() { return this.findTool("LinkReshaping") }, function(a) { Pj(this, "LinkReshaping", a, this.Ye) }); z.defineProperty(dh, { xF: "resizingTool" }, function() { return this.findTool("Resizing") }, function(a) { Pj(this, "Resizing", a, this.Ye) }); z.defineProperty(dh, { cJ: "rotatingTool" }, function() { return this.findTool("Rotating") }, function(a) { Pj(this, "Rotating", a, this.Ye) }); z.defineProperty(dh, { ZE: "linkingTool" }, function() { return this.findTool("Linking") }, function(a) { Pj(this, "Linking", a, this.dg) }); z.defineProperty(dh, { me: "draggingTool" }, function() { return this.findTool("Dragging") }, function(a) { Pj(this, "Dragging", a, this.dg) }); z.defineProperty(dh, { tH: "dragSelectingTool" }, function() { return this.findTool("DragSelecting") }, function(a) { Pj(this, "DragSelecting", a, this.dg) }); z.defineProperty(dh, { OI: "panningTool" }, function() { return this.findTool("Panning") }, function(a) { Pj(this, "Panning", a, this.dg) }); z.defineProperty(dh, { Hz: "contextMenuTool" }, function() { return this.findTool("ContextMenu") }, function(a) { Pj(this, "ContextMenu", a, this.eg) }); z.defineProperty(dh, { XA: "textEditingTool" }, function() { return this.findTool("TextEditing") }, function(a) { Pj(this, "TextEditing", a, this.eg) }); z.defineProperty(dh, { ZG: "clickCreatingTool" }, function() { return this.findTool("ClickCreating") }, function(a) { Pj(this, "ClickCreating", a, this.eg) }); z.defineProperty(dh, { $G: "clickSelectingTool" }, function() { return this.findTool("ClickSelecting") }, function(a) { Pj(this, "ClickSelecting", a, this.eg) }); function Gg() { this.NB = Qj; this.Pq = this.Qq = this.Z = null; this.Hn = this.Rq = this.Sq = 0; this.cm = this.wc = this.to = this.Jj = !1; this.Kj = this.af = !0; this.cv = this.bv = this.HB = null; this.GB = 0; this.Ro = null; this.Pu = new K("string"); this.Ey = 600; this.yG = new N(0, 0); this.vB = this.uB = this.vD = !1; this.ym = new na(O, Rj) } z.ia("AnimationManager", Gg); Gg.prototype.Sc = function(a) { this.Z = a }; function Qj(a, b, c, d) { a /= d / 2; return 1 > a ? c / 2 * a * a + b : -c / 2 * (--a * (a - 2) - 1) + b } z.defineProperty(Gg, { VA: "starting" }, function() { return this.Ro }, function(a) { this.Ro !== a && (null !== a && z.g(a, "function", Gg, "starting"), this.Ro = a) }); z.w(Gg, { bK: "animationReasons" }, function() { return this.Pu }); Gg.prototype.prepareAutomaticAnimation = Gg.prototype.sn = function(a) { if (this.af && (this.Kj || this.Z.kn)) { this.Pu.add(a); var b = this.VA; if (null === b || b(this, a)) this.Jj && this.oi(), this.wc = !0, this.cm = !1 } }; function Sj(a) { if (a.af && (a.Pu.clear(), a.wc)) if (!a.cm) a.wc = !1; else if (0 === a.Hn) { var b = +new Date; a.Hn = b; requestAnimationFrame(function() { if (!1 !== a.wc && !a.Jj && a.Hn === b) { var c = a.Z; c.hj("temporaryPixelRatio") && (c.ck = 1); Tj(c); a.wc = !1; c.Ja("AnimationStarting"); Uj(a, b) } }) } } function Vj(a, b, c, d, e, g) { if (a.wc && (u && z.l(b, O, Gg, "addPropToAnimation:obj"), !("position" === c && d.N(e) || b instanceof D && !b.IE))) { var h = a.ym; if (h.contains(b)) { b = h.na(b); var k = b.start, l = b.end; void 0 === k[c] && (k[c] = Wj(d)); b.Lz && void 0 !== l[c] ? b.Vz[c] = Wj(e) : (g || (b.Vz[c] = Wj(e)), l[c] = Wj(e)) } else k = new ma, l = new ma, k[c] = Wj(d), l[c] = Wj(e), c = l, d = k.position, d instanceof N && !d.F() && a.Pu.contains("Expand SubGraph") && d.assign(c.position), h.add(b, new Rj(k, l, g)); a.cm = !0 } } function Wj(a) { return a instanceof N ? a.copy() : a instanceof Ea ? a.copy() : a } function Uj(a, b) { var c; function d() { if (!1 !== g.Jj && g.Hn === b) { var a = +new Date, c = a > s ? m : a - r; Xj(g); Yj(g, e, q, h, c, m); g.bv && g.bv(); li(e); Zj(g); a > s ? ak(g) : requestAnimationFrame(d) } } void 0 === c && (c = new ma); var e = a.Z; if (null !== e) { a.Jj = !0; var g = a, h = c.AK || a.NB, k = c.$K || null, l = c.aL || null, m = c.duration || a.Ey, n = a.yG; for (c = a.ym.i; c.next();) { var p = c.value.start.position; p instanceof N && (p.F() || p.assign(n)) } a.HB = h; a.bv = k; a.cv = l; a.GB = m; a.KB = a.ym; var q = a.KB; for (c = q.i; c.next();) k = c.value.end, k["position:placeholder"] && (l = k["position:placeholder"], n = l.fb(Zb), n.x += l.padding.left, n.y += l.padding.top, k["position:placeholder"] = n); Xj(a); Yj(a, e, q, h, 0, m); li(a.Z); Zj(a); var r = +new Date, s = r + m; g.Hn === b && requestAnimationFrame(function() { d() }) } } var bk = { opacity: function(a, b, c, d, e, g) { a.opacity = d(e, b, c - b, g) }, position: function(a, b, c, d, e, g) { e !== g ? a.Nx(d(e, b.x, c.x - b.x, g), d(e, b.y, c.y - b.y, g)) : a.position = new N(d(e, b.x, c.x - b.x, g), d(e, b.y, c.y - b.y, g)) }, "position:node": function(a, b, c, d, e, g) { var h = a.W, k = c.W; c = k.x + k.width / 2 - h.width / 2; h = k.y + k.height / 2 - h.height / 2; e !== g ? a.Nx(d(e, b.x, c - b.x, g), d(e, b.y, h - b.y, g)) : a.position = new N(d(e, b.x, c - b.x, g), d(e, b.y, h - b.y, g)) }, "position:placeholder": function(a, b, c, d, e, g) { e !== g ? a.Nx(d(e, b.x, c.x - b.x, g), d(e, b.y, c.y - b.y, g)) : a.position = new N(d(e, b.x, c.x - b.x, g), d(e, b.y, c.y - b.y, g)) }, scale: function(a, b, c, d, e, g) { a.scale = d(e, b, c - b, g) }, visible: function(a, b, c, d, e, g) { a.visible = e !== g ? b : c } }; function Xj(a) { if (!a.to) { var b = a.Z; a.vD = b.Bb; a.uB = b.Ee; a.vB = b.vu; b.Bb = !0; b.Ee = !0; b.vu = !0; a.to = !0 } } function Zj(a) { var b = a.Z; b.Bb = a.vD; b.Ee = a.uB; b.vu = a.vB; a.to = !1 } function Yj(a, b, c, d, e, g) { for (c = c.i; c.next();) { var h = c.key, k = c.value, l = k.start, k = k.end, m; for (m in k) if (("position" !== m || !k["position:placeholder"] && !k["position:node"]) && void 0 !== bk[m]) bk[m](h, l[m], k[m], d, e, g) } d = b.gA; b.gA = !0; m = a.NB; 0 !== a.Sq && 0 !== a.Rq && (c = a.Sq, b.bc = m(e, c, a.Rq - c, g)); null !== a.Qq && null !== a.Pq && (c = a.Qq, a = a.Pq, b.sb = new N(m(e, c.x, a.x - c.x, g), m(e, c.y, a.y - c.y, g))); b.gA = d } Gg.prototype.stopAnimation = Gg.prototype.oi = function() { !0 === this.wc && (this.wc = !1, this.cm && this.Z.Ce()); this.Jj && this.af && ak(this) }; function ak(a) { a.Jj = !1; a.Hn = 0; a.cm = !1; a.Qq = null; a.Pq = null; a.Sq = 0; a.Rq = 0; Xj(a); for (var b = a.Z, c = a.HB, d = a.GB, e = a.KB.i; e.next();) { var g = e.key, h = e.value, k = h.start, l = h.end, m = h.Vz, n; for (n in l) if (void 0 !== bk[n]) { var p = n; !h.Lz || "position:node" !== p && "position:placeholder" !== p || (p = "position"); bk[p](g, k[n], void 0 !== m[n] ? m[n] : h.Lz ? k[n] : l[n], c, d, d) } h.Cx && g.wd(!1) } for (c = a.Z.links; c.next();) d = c.value, null !== d.Ko && (d.points = d.Ko, d.Ko = null); b.qx.clear(); b.ck = null; b.yc(); b.bg(); ck(b); Zj(a); a.ym = new na(O, Rj); a.cv && a.cv(); a.cv = null; a.bv = null; b.Ja("AnimationFinished"); b.Ce() } function dk(a, b, c) { var d = b.W, e = c.W, g = null; c instanceof F && (g = c.placeholder); null !== g ? (d = g.fb(Zb), d.x += g.padding.left, d.y += g.padding.top, Vj(a, b, "position", d, b.position, !1)) : Vj(a, b, "position", new N(e.x + e.width / 2 - d.width / 2, e.y + e.height / 2 - d.height / 2), b.position, !1); Vj(a, b, "scale", .01, b.scale, !1); if (b instanceof F) for (b = b.Hc; b.next();) g = b.value, g instanceof E && dk(a, g, c) } function ek(a, b, c) { if (b.isVisible()) { var d = null; c instanceof F && (d = c.placeholder); null !== d ? Vj(a, b, "position:placeholder", b.position, d, !0) : Vj(a, b, "position:node", b.position, c, !0); Vj(a, b, "scale", b.scale, .01, !0); a.wc && (d = a.ym, d.contains(b) && (d.na(b).Cx = !0)); if (b instanceof F) for (b = b.Hc; b.next();) d = b.value, d instanceof E && ek(a, d, c) } } function fk(a, b, c) { a.wc && (null === a.Qq && b.F() && null === a.Pq && (a.Qq = b.copy()), a.Pq = c.copy(), a.cm = !0) } function gk(a, b, c) { a.wc && a.Z.kn && (0 === a.Sq && 0 === a.Rq && (a.Sq = b), a.Rq = c, a.cm = !0) } z.defineProperty(Gg, { isEnabled: "isEnabled" }, function() { return this.af }, function(a) { z.g(a, "boolean", Gg, "isEnabled"); this.af = a }); z.defineProperty(Gg, { duration: "duration" }, function() { return this.Ey }, function(a) { z.g(a, "number", Gg, "duration"); 1 > a && z.ka(a, ">= 1", Gg, "duration"); this.Ey = a }); z.w(Gg, { nf: "isAnimating" }, function() { return this.Jj }); z.w(Gg, { kI: "isTicking" }, function() { return this.to }); z.defineProperty(Gg, { RE: "isInitial" }, function() { return this.Kj }, function(a) { z.g(a, "boolean", Gg, "isInitial"); this.Kj = a }); function Rj(a, b, c) { this.start = a; this.end = b; this.Vz = new ma; this.Lz = c; this.Cx = !1 } function tg() { 0 < arguments.length && z.od(tg); z.kc(this); this.Z = null; this.mb = new J(D); this.Ub = ""; this.Xc = 1; this.Vy = !1; this.ml = this.vz = this.Jk = this.Ik = this.Hk = this.Gk = this.Ek = this.Fk = this.Dk = this.Lk = this.Ck = this.Kk = this.Bk = this.Ak = !0; this.Qy = !1; this.Wv = [] } z.ia("Layer", tg); tg.prototype.Sc = function(a) { this.Z = a }; tg.prototype.toString = function(a) { void 0 === a && (a = 0); var b = 'Layer "' + this.name + '"'; if (0 >= a) return b; for (var c = 0, d = 0, e = 0, g = 0, h = 0, k = this.mb.i; k.next();) { var l = k.value; l instanceof F ? e++ : l instanceof E ? d++ : l instanceof G ? g++ : l instanceof da ? h++ : c++ } k = ""; 0 < c && (k += c + " Parts "); 0 < d && (k += d + " Nodes "); 0 < e && (k += e + " Groups "); 0 < g && (k += g + " Links "); 0 < h && (k += h + " Adornments "); if (1 < a) for (a = this.mb.i; a.next();) c = a.value, k += "\n " + c.toString(), d = c.data, null !== d && z.nd(d) && (k += " #" + z.nd(d)), c instanceof E ? k += " " + ka(d) : c instanceof G && (k += " " + ka(c.Y) + " " + ka(c.da)); return b + " " + this.mb.count + ": " + k }; tg.prototype.findObjectAt = tg.prototype.pe = function(a, b, c) { void 0 === b && (b = null); void 0 === c && (c = null); if (!1 === this.ml) return null; u && !a.F() && z.k("findObjectAt: Point must have a real value, not: " + a.toString()); var d = !1; this.h.xb.Ma(a) && (d = !0); for (var e = z.O(), g = this.mb.o, h = g.length; h--;) { var k = g[h]; if ((!0 !== d || !1 !== hk(k)) && k.isVisible() && (e.assign(a), ub(e, k.ph), k = k.pe(e, b, c), null !== k && (null !== b && (k = b(k)), null !== k && (null === c || c(k))))) return z.A(e), k } z.A(e); return null }; tg.prototype.findObjectsAt = tg.prototype.mp = function(a, b, c, d) { void 0 === b && (b = null); void 0 === c && (c = null); d instanceof J || d instanceof K || (d = new K(O)); if (!1 === this.ml) return d; u && !a.F() && z.k("findObjectsAt: Point must have a real value, not: " + a.toString()); var e = !1; this.h.xb.Ma(a) && (e = !0); for (var g = z.O(), h = this.mb.o, k = h.length; k--;) { var l = h[k]; !0 === e && !1 === hk(l) || !l.isVisible() || (g.assign(a), ub(g, l.ph), l.mp(g, b, c, d) && (null !== b && (l = b(l)), null === l || null !== c && !c(l) || d.add(l))) } z.A(g); return d }; tg.prototype.findObjectsIn = tg.prototype.ok = function(a, b, c, d, e) { void 0 === b && (b = null); void 0 === c && (c = null); void 0 === d && (d = !1); e instanceof J || e instanceof K || (e = new K(O)); if (!1 === this.ml) return e; u && !a.F() && z.k("findObjectsIn: Rect must have a real value, not: " + a.toString()); var g = !1; this.h.xb.mk(a) && (g = !0); for (var h = this.mb.o, k = h.length; k--;) { var l = h[k]; (!0 !== g || !1 !== hk(l)) && l.isVisible() && l.ok(a, b, c, d, e) && (null !== b && (l = b(l)), null === l || null !== c && !c(l) || e.add(l)) } return e }; tg.prototype.Wz = function(a, b, c, d, e, g, h) { if (!1 === this.ml) return e; for (var k = this.mb.o, l = k.length; l--;) { var m = k[l]; (!0 !== h || !1 !== hk(m)) && g(m) && m.isVisible() && m.ok(a, b, c, d, e) && (null !== b && (m = b(m)), null === m || null !== c && !c(m) || e.add(m)) } return e }; tg.prototype.findObjectsNear = tg.prototype.dn = function(a, b, c, d, e, g) { void 0 === c && (c = null); void 0 === d && (d = null); void 0 === e && (e = !0); if (!1 !== e && !0 !== e) { if (e instanceof J || e instanceof K) g = e; e = !0 } g instanceof J || g instanceof K || (g = new K(O)); if (!1 === this.ml) return g; u && !a.F() && z.k("findObjectsNear: Point must have a real value, not: " + a.toString()); var h = !1; this.h.xb.Ma(a) && (h = !0); for (var k = z.O(), l = z.O(), m = this.mb.o, n = m.length; n--;) { var p = m[n]; !0 === h && !1 === hk(p) || !p.isVisible() || (k.assign(a), ub(k, p.ph), l.n(a.x + b, a.y), ub(l, p.ph), p.dn(k, l, c, d, e, g) && (null !== c && (p = c(p)), null === p || null !== d && !d(p) || g.add(p))) } z.A(k); z.A(l); return g }; f = tg.prototype; f.Jf = function(a, b) { if (this.visible) { var c; c = void 0 === b ? a.xb : b; for (var d = this.mb.o, e = d.length, g = 0; g < e; g++) { var h = d[g]; h.AC = g; if (!(h instanceof G && !1 === h.Cg)) { if (h instanceof da) { var k = h; if (null !== k.Wf) continue } if (Hb(h.W, c)) for (h.Jf(!0), ik(h), h = h.Dw; h.next();) k = h.value, rj(k, Infinity, Infinity), k.Lc(), k.Jf(!0); else h.Jf(!1), null !== h.Dw && 0 < h.Dw.count && ik(h) } } } }; f.ff = function(a, b, c) { if (this.visible && 0 !== this.Xc && (void 0 === c && (c = !0), c || !this.Nc)) { c = this.mb.o; var d = c.length; if (0 !== d) { 1 !== this.Xc && (a.globalAlpha = this.Xc); var e = this.Wv; e.length = 0; for (var g = b.scale, h = 0; h < d; h++) { var k = c[h]; if (hk(k)) { if (k instanceof G) { var l = k; l.rc && e.push(l); if (!1 === l.Cg) continue } l = k.W; 1 < l.width * g || 1 < l.height * g ? k.ff(a, b) : jk(k, a) } } a.globalAlpha = 1 } } }; function kk(a, b, c, d) { if (a.visible && 0 !== a.Xc) { 1 !== a.Xc && (b.globalAlpha = a.Xc); var e = a.Wv; e.length = 0; var g = c.scale; a = a.mb.o; for (var h = a.length, k = d.length, l = 0; l < h; l++) { var m = a[l]; if (hk(m)) { if (m instanceof G) { var n = m; n.rc && e.push(n); if (!1 === n.Cg) continue } var n = lk(m, m.W), p; a: { p = n; for (var q = d, r = k, s = 2 / g, t = 4 / g, v = 0; v < r; v++) { var x = q[v]; if (0 !== x.width && 0 !== x.height && p.GE(x.x - s, x.y - s, x.width + t, x.height + t)) { p = !0; break a } } p = !1 } p && (1 < n.width * g || 1 < n.height * g ? m.ff(b, c) : jk(m, b)) } } b.globalAlpha = 1 } } f.j = function(a, b, c, d, e) { var g = this.h; null !== g && g.Rc(Sf, a, this, b, c, d, e) }; f.xp = function(a, b, c) { var d = this.mb; b.Fv = this; if (a >= d.count) a = d.count; else if (d.ea(a) === b) return -1; d.Ld(a, b); b.Kt(c); d = this.h; null !== d && (c ? d.ta() : d.xp(b)); mk(this, a, b); return a }; f.Ve = function(a, b, c) { if (!c && b.layer !== this && null !== b.layer) return b.layer.Ve(a, b, c); var d = this.mb; if (0 > a || a >= d.length) { if (a = d.indexOf(b), 0 > a) return -1 } else if (d.ea(a) !== b && (a = d.indexOf(b), 0 > a)) return -1; b.Lt(c); d.dd(a); d = this.h; null !== d && (c ? d.ta() : d.Ve(b)); b.Fv = null; return a }; function mk(a, b, c) { b = nk(a, b, c); if (c instanceof F && null !== c && isNaN(c.En)) { if (0 !== c.Hc.count) { for (var d = -1, e = a.mb.o, g = e.length, h = 0; h < g; h++) { var k = e[h]; if (k === c && (b = h, 0 <= d)) break; if (0 > d && k.Va === c && (d = h, 0 <= b)) break }!(0 > d) && d < b && (e = a.mb, e.dd(b), e.Ld(d, c)) } c = c.Va; null !== c && mk(a, -1, c) } } function nk(a, b, c) { var d = c.En; if (isNaN(d)) return b; a = a.mb; var e = a.count; if (1 >= e) return b; 0 > b && (b = a.indexOf(c)); if (0 > b) return -1; for (var g = b - 1, h = NaN; 0 <= g;) { h = a.ea(g).En; if (!isNaN(h)) break; g-- } for (var k = b + 1, l = NaN; k < e;) { l = a.ea(k).En; if (!isNaN(l)) break; k++ } if (!isNaN(h) && h > d) for (;;) { if (-1 === g || h <= d) { g++; if (g === b) break; a.dd(b); a.Ld(g, c); return g } for (h = NaN; 0 <= --g && (h = a.ea(g).En, isNaN(h));); } else if (!isNaN(l) && l < d) for (;;) { if (k === e || l >= d) { k--; if (k === b) break; a.dd(b); a.Ld(k, c); return k } for (l = NaN; ++k < e && (l = a.ea(k).En, isNaN(l));); } return b } f.clear = function() { for (var a = this.mb.jc(), b = a.length, c = 0; c < b; c++) a[c].Jf(!1), this.Ve(-1, a[c], !1) }; z.w(tg, { ni: "parts" }, function() { return this.mb.i }); z.w(tg, { lL: "partsBackwards" }, function() { return this.mb.ln }); z.w(tg, { h: "diagram" }, function() { return this.Z }); z.defineProperty(tg, { name: "name" }, function() { return this.Ub }, function(a) { z.g(a, "string", tg, "name"); var b = this.Ub; if (b !== a) { var c = this.h; if (null !== c) for ("" === b && z.k("Cannot rename default Layer to: " + a), c = c.mn; c.next();) c.value.name === a && z.k("Layer.name is already present in this diagram: " + a); this.Ub = a; this.j("name", b, a); for (a = this.mb.i; a.next();) a.value.If = this.Ub } }); z.defineProperty(tg, { opacity: "opacity" }, function() { return this.Xc }, function(a) { var b = this.Xc; b !== a && (z.g(a, "number", tg, "opacity"), (0 > a || 1 < a) && z.ka(a, "0 <= value <= 1", tg, "opacity"), this.Xc = a, this.j("opacity", b, a), a = this.h, null !== a && a.ta()) }); z.defineProperty(tg, { Nc: "isTemporary" }, function() { return this.Vy }, function(a) { var b = this.Vy; b !== a && (z.g(a, "boolean", tg, "isTemporary"), this.Vy = a, this.j("isTemporary", b, a)) }); z.defineProperty(tg, { visible: "visible" }, function() { return this.vz }, function(a) { var b = this.vz; if (b !== a) { z.g(a, "boolean", tg, "visible"); this.vz = a; this.j("visible", b, a); for (b = this.mb.i; b.next();) b.value.wd(a); a = this.h; null !== a && a.ta() } }); z.defineProperty(tg, { ig: "pickable" }, function() { return this.ml }, function(a) { var b = this.ml; b !== a && (z.g(a, "boolean", tg, "pickable"), this.ml = a, this.j("pickable", b, a)) }); z.defineProperty(tg, { JE: "isBoundsIncluded" }, function() { return this.Qy }, function(a) { this.Qy !== a && (this.Qy = a, null !== this.h && this.h.yc()) }); z.defineProperty(tg, { kk: "allowCopy" }, function() { return this.Ak }, function(a) { var b = this.Ak; b !== a && (z.g(a, "boolean", tg, "allowCopy"), this.Ak = a, this.j("allowCopy", b, a)) }); z.defineProperty(tg, { Sm: "allowDelete" }, function() { return this.Bk }, function(a) { var b = this.Bk; b !== a && (z.g(a, "boolean", tg, "allowDelete"), this.Bk = a, this.j("allowDelete", b, a)) }); z.defineProperty(tg, { Hw: "allowTextEdit" }, function() { return this.Kk }, function(a) { var b = this.Kk; b !== a && (z.g(a, "boolean", tg, "allowTextEdit"), this.Kk = a, this.j("allowTextEdit", b, a)) }); z.defineProperty(tg, { Ew: "allowGroup" }, function() { return this.Ck }, function(a) { var b = this.Ck; b !== a && (z.g(a, "boolean", tg, "allowGroup"), this.Ck = a, this.j("allowGroup", b, a)) }); z.defineProperty(tg, { Iw: "allowUngroup" }, function() { return this.Lk }, function(a) { var b = this.Lk; b !== a && (z.g(a, "boolean", tg, "allowUngroup"), this.Lk = a, this.j("allowUngroup", b, a)) }); z.defineProperty(tg, { lt: "allowLink" }, function() { return this.Dk }, function(a) { var b = this.Dk; b !== a && (z.g(a, "boolean", tg, "allowLink"), this.Dk = a, this.j("allowLink", b, a)) }); z.defineProperty(tg, { Tm: "allowRelink" }, function() { return this.Fk }, function(a) { var b = this.Fk; b !== a && (z.g(a, "boolean", tg, "allowRelink"), this.Fk = a, this.j("allowRelink", b, a)) }); z.defineProperty(tg, { ul: "allowMove" }, function() { return this.Ek }, function(a) { var b = this.Ek; b !== a && (z.g(a, "boolean", tg, "allowMove"), this.Ek = a, this.j("allowMove", b, a)) }); z.defineProperty(tg, { Fw: "allowReshape" }, function() { return this.Gk }, function(a) { var b = this.Gk; b !== a && (z.g(a, "boolean", tg, "allowReshape"), this.Gk = a, this.j("allowReshape", b, a)) }); z.defineProperty(tg, { mt: "allowResize" }, function() { return this.Hk }, function(a) { var b = this.Hk; b !== a && (z.g(a, "boolean", tg, "allowResize"), this.Hk = a, this.j("allowResize", b, a)) }); z.defineProperty(tg, { Gw: "allowRotate" }, function() { return this.Ik }, function(a) { var b = this.Ik; b !== a && (z.g(a, "boolean", tg, "allowRotate"), this.Ik = a, this.j("allowRotate", b, a)) }); z.defineProperty(tg, { xf: "allowSelect" }, function() { return this.Jk }, function(a) { var b = this.Jk; b !== a && (z.g(a, "boolean", tg, "allowSelect"), this.Jk = a, this.j("allowSelect", b, a)) }); function C(a) { function b() { window.document.removeEventListener("DOMContentLoaded", b, !1); ok(c) } 1 < arguments.length && z.k("Diagram constructor can only take one optional argument, the DIV HTML element or its id."); z.kc(this); pk = []; this.Vc = !0; this.sB = new Gg; this.sB.Sc(this); this.Gd = 17; this.mr = !1; this.hz = "default"; var c = this; null !== window.document.body ? ok(this) : window.document.addEventListener("DOMContentLoaded", b, !1); this.Yb = new J(tg); this.Ob = this.Jb = 0; this.Xj = this.Pb = this.gd = this.Fb = null; this.rF(); this.qo = null; this.qF(); this.sb = (new N(NaN, NaN)).freeze(); this.bc = 1; this.wv = (new N(NaN, NaN)).freeze(); this.xv = NaN; this.Nv = 1E-4; this.Kv = 100; this.Hd = new Fa; this.Bw = (new N(NaN, NaN)).freeze(); this.nv = (new w(NaN, NaN, NaN, NaN)).freeze(); this.iw = (new Db(0, 0, 0, 0)).freeze(); this.jw = qk; this.fw = this.bw = null; this.dm = jh; this.Pn = Pc; this.Xk = jh; this.no = Pc; this.yv = this.vv = Zb; this.ue = !0; this.gr = !1; this.qg = new K(O); this.Rk = new na(G, w); this.bo = !0; this.tB = 250; this.In = -1; this.Su = (new Db(16, 16, 16, 16)).freeze(); this.gv = this.Vf = !1; this.io = !0; this.Ei = new Pf; this.Zc = new Pf; this.Qb = new Pf; this.gh = this.ti = null; this.Ss = !1; this.zy = this.Ay = null; rk(this); this.Fo = new K(E); this.ol = new K(F); this.zo = new K(G); this.mb = new K(D); this.Cv = !0; this.ww = sk; this.lC = !1; this.yw = yi; this.vy = this.xy = this.rz = null; this.av = ""; this.Oq = "auto"; this.yi = this.Wi = this.Mi = this.Qv = this.Ni = this.Oi = this.Pi = this.xi = this.Ci = this.ui = null; this.cz = !1; this.TC = {}; this.aw = 0; this.Uf = [null, null]; this.qy = null; this.lq = this.yy = this.lz = this.$C = this.Vi = !1; this.xC = !0; this.Sy = this.Vd = !1; this.ie = null; var d = this; this.EC = function(a) { if (a.ha === d.ha && d.$a) { d.$a = !1; try { var b = a.Dc; "" === a.rf && b === Sf && tk(d, a.object, a.propertyName) } finally { d.$a = !0 } } }; this.FC = function(a) { uk(d, a) }; this.xD = !0; this.bh = -2; this.zi = new na(Object, D); this.Qk = new na(Object, G); this.nm = new na(Object, Array); this.Go = new na("string", Array); this.SC = new J(vk); this.Gi = !1; this.Bk = this.Ak = this.Hu = this.af = !0; this.Ju = this.Iu = !1; this.Ou = this.Mu = this.Jk = this.Ik = this.Hk = this.Gk = this.Ek = this.Fk = this.Dk = this.Lu = this.Lk = this.Ck = this.Kk = !0; this.km = this.uC = !1; this.Nu = this.Ku = this.tv = this.sv = !0; this.lw = this.hw = 16; this.iz = this.gw = !1; this.xs = this.kw = null; this.jz = this.kz = 0; this.df = (new Db(5)).freeze(); this.ow = (new K(D)).freeze(); this.Lv = 999999999; this.uv = (new K(D)).freeze(); this.Yk = this.im = this.Ij = !0; this.Vk = this.Hj = !1; this.he = null; this.Qu = !0; this.eh = !1; this.rG = new K(G); this.jC = new K(wk); this.Ed = null; this.KC = 1; this.Ly = !1; this.cD = 0; this.wD = (new w(NaN, NaN, NaN, NaN)).freeze(); this.hv = (new w(NaN, NaN, NaN, NaN)).freeze(); this.Xv = new K(xk); yk(this); this.Hv = this.pv = this.Rv = this.PB = this.OB = this.QB = this.Oj = this.Tk = this.Qi = null; zk(this); this.td = null; this.ov = !1; this.Sn = null; this.hb = new dh; this.hb.initializeStandardTools(); this.eb = this.vt = this.hb; this.wb = new ra; this.ha = new V; this.Vi = !0; this.Sb = new vg; this.Vi = !1; this.aC = this.Cy = null; this.jd = 1; this.ck = null; this.Wk = new Ak; void 0 !== a && Bk(this, a); this.bl = 1; this.pm = 0; this.zC = new N; this.tD = 500; this.Ru = new N; this.Ks = null; this.Vc = this.Zk = !1 } z.ia("Diagram", C); function zk(a) { a.Qi = new na("string", D); var b = new E, c = new qa; c.bind(new Xg("text", "", ka)); b.add(c); a.QB = b; a.Qi.add("", b); b = new E; c = new qa; c.stroke = "brown"; c.bind(new Xg("text", "", ka)); b.add(c); a.Qi.add("Comment", b); b = new E; b.vk = !1; b.ND = !1; c = new X; c.Hb = "Ellipse"; c.fill = "black"; c.stroke = null; c.Aa = (new Ea(3, 3)).La(); b.add(c); a.Qi.add("LinkLabel", b); a.Tk = new na("string", F); b = new F; b.Ix = "GROUPPANEL"; b.type = Ck; c = new qa; c.font = "bold 12pt sans-serif"; c.bind(new Xg("text", "", ka)); b.add(c); c = new I(Dk); c.name = "GROUPPANEL"; var d = new X; d.Hb = "Rectangle"; d.fill = "rgba(128,128,128,0.2)"; d.stroke = "black"; c.add(d); d = new Zi; d.padding = (new Db(5, 5, 5, 5)).La(); c.add(d); b.add(c); a.OB = b; a.Tk.add("", b); a.Oj = new na("string", G); b = new G; c = new X; c.Ff = !0; b.add(c); c = new X; c.fq = "Standard"; c.fill = "black"; c.stroke = null; c.ub = 0; b.add(c); a.PB = b; a.Oj.add("", b); b = new G; c = new X; c.Ff = !0; c.stroke = "brown"; b.add(c); a.Oj.add("Comment", b); b = new da; b.type = Dk; c = new X; c.fill = null; c.stroke = "dodgerblue"; c.ub = 3; b.add(c); c = new Zi; c.margin = (new Db(1.5, 1.5, 1.5, 1.5)).La(); b.add(c); a.Rv = b; a.pv = b; b = new da; b.type = Ki; c = new X; c.Ff = !0; c.fill = null; c.stroke = "dodgerblue"; c.ub = 3; b.add(c); a.Hv = b } function ok(a) { var b = z.createElement("p"); b.style.width = "100%"; b.style.height = "200px"; b.style.boxSizing = "content-box"; var c = z.createElement("div"); c.style.position = "absolute"; c.style.visibility = "hidden"; c.style.width = "200px"; c.style.height = "150px"; c.style.overflow = "hidden"; c.style.boxSizing = "content-box"; c.appendChild(b); window.document.body.appendChild(c); var d = b.offsetWidth; c.style.overflow = "scroll"; b = b.offsetWidth; d === b && (b = c.clientWidth); window.document.body.removeChild(c); c = d - b; 0 !== c || z.PE || (c = 11); a.Gd = c; c = z.createElement("div"); c.dir = "rtl"; c.style.cssText = "font-size: 14px; width: 1px; height: 1px; position: absolute; top: -1000px; overflow: scroll;"; c.textContent = "A"; window.document.body.appendChild(c); d = "reverse"; 0 < c.scrollLeft ? d = "default" : (c.scrollLeft = 1, 0 === c.scrollLeft && (d = "negative")); window.document.body.removeChild(c); a.hz = d } C.prototype.toString = function(a) { void 0 === a && (a = 0); var b = ""; this.id && (b = this.id); this.Dl && this.Dl.id && (b = this.Dl.id); b = 'Diagram "' + b + '"'; if (0 >= a) return b; for (var c = this.Yb.i; c.next();) b += "\n " + c.value.toString(a - 1); return b }; C.fromDiv = function(a) { var b = a; "string" === typeof a && (b = window.document.getElementById(a)); return b instanceof HTMLDivElement && b.Z instanceof C ? b.Z : null }; z.defineProperty(C, { Dl: "div" }, function() { return this.Pb }, function(a) { null !== a && z.l(a, HTMLDivElement, C, "div"); if (this.Pb !== a) { pk = []; var b = this.Pb; null !== b ? (b.Z = void 0, b.innerHTML = "", null !== this.Fb && (this.Fb.removeEventListener("touchstart", this.ZF, !1), this.Fb.removeEventListener("touchmove", this.YF, !1), this.Fb.removeEventListener("touchend", this.XF, !1), this.Fb.Kd.Z = null), b = this.hb, null !== b && (b.Ye.each(function(a) { a.cancelWaitAfter() }), b.dg.each(function(a) { a.cancelWaitAfter() }), b.eg.each(function(a) { a.cancelWaitAfter() })), b.cancelWaitAfter(), this.eb.doCancel(), this.gd = this.Fb = null, window.removeEventListener("resize", this.hG, !1), window.removeEventListener("mousemove", this.Kp, !0), window.removeEventListener("mousedown", this.Jp, !0), window.removeEventListener("mouseup", this.Mp, !0), window.removeEventListener("mousewheel", this.zh, !0), window.removeEventListener("DOMMouseScroll", this.zh, !0), window.removeEventListener("mouseout", this.Lp, !0)) : this.eh = !1; this.Pb = null; if (null !== a) { if (b = a.Z) b.Dl = null; Bk(this, a); this.Sp() } } }); function Ek(a) { var b = a.Fb; b.addEventListener("touchstart", a.ZF, !1); b.addEventListener("touchmove", a.YF, !1); b.addEventListener("touchend", a.XF, !1); b.addEventListener("mousemove", a.Kp, !1); b.addEventListener("mousedown", a.Jp, !1); b.addEventListener("mouseup", a.Mp, !1); b.addEventListener("mousewheel", a.zh, !1); b.addEventListener("DOMMouseScroll", a.zh, !1); b.addEventListener("mouseout", a.Lp, !1); b.addEventListener("keydown", a.oI, !1); b.addEventListener("keyup", a.pI, !1); b.addEventListener("selectstart", function(a) { a.preventDefault(); return !1 }, !1); b.addEventListener("contextmenu", function(a) { a.preventDefault(); return !1 }, !1); b.addEventListener("gesturechange", function(b) { a.hb.rp === Mj && b.preventDefault() }, !1); b.addEventListener("pointerdown", a.QI, !1); b.addEventListener("pointermove", a.SI, !1); b.addEventListener("pointerleave", a.RI, !1); window.addEventListener("resize", a.hG, !1) } C.prototype.computePixelRatio = function() { return null !== this.ck ? this.ck : this.vG }; C.prototype.doMouseMove = function() { this.eb.doMouseMove() }; C.prototype.doMouseDown = function() { this.eb.doMouseDown() }; C.prototype.doMouseUp = function() { this.eb.doMouseUp() }; C.prototype.doMouseWheel = function() { this.eb.doMouseWheel() }; C.prototype.doKeyDown = function() { this.eb.doKeyDown() }; C.prototype.doKeyUp = function() { this.eb.doKeyUp() }; C.prototype.doFocus = function() { this.focus() }; C.prototype.focus = C.prototype.focus = function() { this.Fb && this.Fb.focus() }; function Tj(a) { if (null !== a.Fb) { var b = a.Pb; if (0 !== b.clientWidth && 0 !== b.clientHeight) { var c = a.Vk ? a.Gd : 0, d = a.Hj ? a.Gd : 0, e = a.jd; a.jd = a.computePixelRatio(); a.jd !== e && (a.gr = !0, a.Ce()); if (b.clientWidth !== a.Jb + c || b.clientHeight !== a.Ob + d) a.im = !0, a.ue = !0, b = a.Sb, null !== b && b.mx && a.wl === jh && b.I(), a.Vd || a.Ce() } } } function yk(a) { var b = new tg; b.name = "Background"; a.ft(b); b = new tg; b.name = ""; a.ft(b); b = new tg; b.name = "Foreground"; a.ft(b); b = new tg; b.name = "Adornment"; b.Nc = !0; a.ft(b); b = new tg; b.name = "Tool"; b.Nc = !0; b.JE = !0; a.ft(b); b = new tg; b.name = "Grid"; b.xf = !1; b.ig = !1; b.Nc = !0; a.OG(b, a.Fl("Background")) } function Fk(a) { a.td = new I(Gk); a.td.name = "GRID"; var b = new X; b.Hb = "LineH"; b.stroke = "lightgray"; b.ub = .5; b.interval = 1; a.td.add(b); b = new X; b.Hb = "LineH"; b.stroke = "gray"; b.ub = .5; b.interval = 5; a.td.add(b); b = new X; b.Hb = "LineH"; b.stroke = "gray"; b.ub = 1; b.interval = 10; a.td.add(b); b = new X; b.Hb = "LineV"; b.stroke = "lightgray"; b.ub = .5; b.interval = 1; a.td.add(b); b = new X; b.Hb = "LineV"; b.stroke = "gray"; b.ub = .5; b.interval = 5; a.td.add(b); b = new X; b.Hb = "LineV"; b.stroke = "gray"; b.ub = 1; b.interval = 10; a.td.add(b); b = new D; b.add(a.td); b.If = "Grid"; b.En = 0; b.jx = !1; b.IE = !1; b.ig = !1; b.sx = "GRID"; a.add(b); a.mb.remove(b); a.td.visible = !1 } C.prototype.xG = function() { this.Z.isEnabled ? this.Z.sH(this) : Hk(this.Z) }; C.prototype.JC = function(a) { this.Z.isEnabled ? (this.Z.iz = !0, this.Z.kz = a.target.scrollTop, this.Z.jz = a.target.scrollLeft) : Hk(this.Z) }; C.prototype.diagramScroll = C.prototype.sH = function(a) { if (this.iz && null !== this.Fb) { this.gw = !0; var b = this.ad, c = this.xb, d = b.width, e = c.width, g = b.height, h = c.height, k = b.right, l = c.right, m = b.bottom, n = c.bottom, p = b.x, q = c.x, b = b.y, c = c.y, r = this.scale, s; s = a.scrollLeft; if (this.mr) switch (this.hz) { case "negative": s = s + a.scrollWidth - a.clientWidth; break; case "reverse": s = a.scrollWidth - s - a.clientWidth } var t = s; e < d || h < g ? (s = z.Tb(this.position.x, this.position.y), this.xe && this.jz !== t && (s.x = t / r + p, this.jz = t), this.ye && this.kz !== a.scrollTop && (s.y = a.scrollTop / r + b, this.kz = a.scrollTop), this.position = s, z.A(s), this.im = this.gw = !1) : (s = z.O(), a.AG && this.xe && (p < q && (this.position = s.n(t + p, this.position.y)), k > l && (this.position = s.n(-(this.kw.scrollWidth - this.Jb) + t - this.Jb / r + k, this.position.y))), a.BG && this.ye && (b < c && (this.position = s.n(this.position.x, a.scrollTop + b)), m > n && (this.position = s.n(this.position.x, -(this.kw.scrollHeight - this.Ob) + a.scrollTop - this.Ob / r + m))), z.A(s), Ik(this), this.im = this.gw = !1, b = this.ad, c = this.xb, k = b.right, l = c.right, m = b.bottom, n = c.bottom, p = b.x, q = c.x, b = b.y, c = c.y, e >= d && p >= q && k <= l && (this.xs.style.width = "1px"), h >= g && b >= c && m <= n && (this.xs.style.height = "1px")) } }; C.prototype.computeBounds = C.prototype.rh = function() { 0 < this.qg.count && Jk(this); return Kk(this) }; function Kk(a) { if (a.uE.F()) { var b = a.uE.copy(); b.Cw(a.padding); return b } for (var c = !0, d = a.Yb.o, e = d.length, g = 0; g < e; g++) { var h = d[g]; if (h.visible && (!h.Nc || h.JE)) for (var h = h.mb.o, k = h.length, l = 0; l < k; l++) { var m = h[l]; m.jx && m.isVisible() && (m = m.W, m.F() && (c ? (c = !1, b = m.copy()) : b.qi(m))) } } c && (b = new w(0, 0, 0, 0)); b.Cw(a.padding); return b } C.prototype.computePartsBounds = function(a) { var b = null; for (a = a.i; a.next();) { var c = a.value; c instanceof G || (c.Bf(), null === b ? b = c.W.copy() : b.qi(c.W)) } return null === b ? new w(NaN, NaN, 0, 0) : b }; function Lk(a, b) { if ((b || a.eh) && !a.Vc && null !== a.Fb && !a.Ua.nf && a.ad.F()) { a.Vc = !0; var c = a.dm; b && a.Xk !== jh && (c = a.Xk); var d = c !== jh ? Mk(a, c) : a.scale, c = a.xb.copy(), e = a.Jb / d, g = a.Ob / d, h = null, k = a.Ua; k.wc && (h = a.sb.copy()); a.position.Wa(); var l = a.Pn; b && !l.cd() && a.no.cd() && (l = a.no); Nk(a, a.sb, a.ad, e, g, l, b); a.position.freeze(); null !== h && fk(k, h, a.sb); a.scale = d; a.Vc = !1; d = a.xb; d.Mc(c) || a.fu(c, d) } } function Mk(a, b) { var c = a.wb.Rw; if (null === a.Fb) return c; a.Ij && Ok(a, a.rh()); var d = a.ad; if (!d.F()) return c; var e = d.width, d = d.height, g = a.Jb, h = a.Ob, k = g / e, l = h / d; return b === Pk ? (e = Math.min(l, k), e > c && (e = c), e < a.yh && (e = a.yh), e > a.xh && (e = a.xh), e) : b === Qk ? (e = l > k ? (h - a.Gd) / d : (g - a.Gd) / e, e > c && (e = c), e < a.yh && (e = a.yh), e > a.xh && (e = a.xh), e) : a.scale } C.prototype.zoomToFit = C.prototype.zoomToFit = function() { this.scale = Mk(this, Pk) }; C.prototype.zoomToRect = function(a, b) { void 0 === b && (b = Pk); var c = a.width, d = a.height; if (!(0 === c || 0 === d || isNaN(c) && isNaN(d))) { var e = 1; if (b === Pk || b === Qk) if (isNaN(c)) e = this.xb.height * this.scale / d; else if (isNaN(d)) e = this.xb.width * this.scale / c; else var e = this.Jb, g = this.Ob, e = b === Qk ? g / d > e / c ? (g - (this.Hj ? this.Gd : 0)) / d : (e - (this.Vk ? this.Gd : 0)) / c : Math.min(g / d, e / c); this.scale = e; this.position = new N(a.x, a.y) } }; z.defineProperty(C, { gA: null }, function() { return this.Vc }, function(a) { this.Vc = a }); C.prototype.alignDocument = function(a, b) { this.Ij && Ok(this, this.rh()); var c = this.ad, d = this.xb; this.position = new N(c.x + (a.x * c.width + a.offsetX) - (b.x * d.width - b.offsetX), c.y + (a.y * c.height + a.offsetY) - (b.y * d.height - b.offsetY)) }; function Nk(a, b, c, d, e, g, h) { var k = b.x, l = b.y; if (h || a.MA === qk) g.cd() && (d > c.width && (k = c.x + (g.x * c.width + g.offsetX) - (g.x * d - g.offsetX)), e > c.height && (l = c.y + (g.y * c.height + g.offsetY) - (g.y * e - g.offsetY))), g = a.BF, h = d - c.width, d < c.width + g.left + g.right ? (k = Math.min(k + d / 2, c.right + Math.max(h, g.right) - d / 2), k = Math.max(k, c.left - Math.max(h, g.left) + d / 2), k -= d / 2) : k > c.left ? k = c.left : k < c.right - d && (k = c.right - d), d = e - c.height, e < c.height + g.top + g.bottom ? (l = Math.min(l + e / 2, c.bottom + Math.max(d, g.bottom) - e / 2), l = Math.max(l, c.top - Math.max(d, g.top) + e / 2), l -= e / 2) : l > c.top ? l = c.top : l < c.bottom - e && (l = c.bottom - e); b.x = isFinite(k) ? k : -a.padding.left; b.y = isFinite(l) ? l : -a.padding.top; null !== a.jF && (a = a.jF(a, b), b.x = a.x, b.y = a.y) } C.prototype.findPartAt = C.prototype.At = function(a, b) { var c = b ? ei(this, a, function(a) { return a.ca }, function(a) { return a.canSelect() }) : ei(this, a, function(a) { return a.ca }); return c instanceof D ? c : null }; C.prototype.findObjectAt = C.prototype.pe = function(a, b, c) { void 0 === b && (b = null); void 0 === c && (c = null); Jk(this); for (var d = this.Yb.ln; d.next();) { var e = d.value; if (e.visible && (e = e.pe(a, b, c), null !== e)) return e } return null }; function ei(a, b, c, d) { void 0 === c && (c = null); void 0 === d && (d = null); Jk(a); for (a = a.Yb.ln; a.next();) { var e = a.value; if (e.visible && !e.Nc && (e = e.pe(b, c, d), null !== e)) return e } return null } C.prototype.findObjectsAt = C.prototype.mp = function(a, b, c, d) { void 0 === b && (b = null); void 0 === c && (c = null); d instanceof J || d instanceof K || (d = new K(O)); Jk(this); for (var e = this.Yb.ln; e.next();) { var g = e.value; g.visible && g.mp(a, b, c, d) } return d }; C.prototype.findObjectsIn = C.prototype.ok = function(a, b, c, d, e) { void 0 === b && (b = null); void 0 === c && (c = null); void 0 === d && (d = !1); e instanceof J || e instanceof K || (e = new K(O)); Jk(this); for (var g = this.Yb.ln; g.next();) { var h = g.value; h.visible && h.ok(a, b, c, d, e) } return e }; C.prototype.Wz = function(a, b, c, d, e, g) { var h = new K(O); Jk(this); for (var k = this.Yb.ln; k.next();) { var l = k.value; l.visible && l.Wz(a, b, c, d, h, e, g) } return h }; C.prototype.findObjectsNear = C.prototype.dn = function(a, b, c, d, e, g) { void 0 === c && (c = null); void 0 === d && (d = null); void 0 === e && (e = !0); if (!1 !== e && !0 !== e) { if (e instanceof J || e instanceof K) g = e; e = !0 } g instanceof J || g instanceof K || (g = new K(O)); Jk(this); for (var h = this.Yb.ln; h.next();) { var k = h.value; k.visible && k.dn(a, b, c, d, e, g) } return g }; C.prototype.acceptEvent = function(a) { var b = this.Zc; this.Zc = this.Qb; this.Qb = b; Rk(this, this, a, b, a instanceof MouseEvent); return b }; function Rk(a, b, c, d, e) { d.h = b; d.event = c; e ? Sk(a, c, d) : (d.te = b.Qb.te, d.ga = b.Qb.ga); a = 0; c.ctrlKey && (a += 1); c.altKey && (a += 2); c.shiftKey && (a += 4); c.metaKey && (a += 8); d.xd = a; d.button = c.button; c.buttons && (d.buttons = c.buttons); z.rk && 0 === c.button && c.ctrlKey && (d.button = 2); d.El = !1; d.up = !1; d.Pe = 1; d.Cl = 0; d.Gc = !1; d.bubbles = !1; d.timestamp = Date.now(); d.Qt = !1; d.Sg = c.target.Z ? c.target.Z : null; d.Ge = null } function Tk(a, b, c, d, e) { d.h = a; Sk(a, c, d); d.xd = 0; d.button = 0; d.buttons = 1; d.El = !0; d.up = !1; d.Pe = 1; d.Cl = 0; d.Gc = !1; d.bubbles = !0; d.event = b; d.timestamp = Date.now(); d.Qt = e; d.Sg = b.target.Z ? b.target.Z : null; d.Ge = null; a.Ei = d.copy(); Hh = null } function Uk(a, b, c, d, e) { var g = null; d.h = a; null !== c ? ((g = window.document.elementFromPoint(c.clientX, c.clientY)) && g.Z ? g = g.Z : (c = b.changedTouches[0], g = a), d.Sg = g, Sk(a, c, d)) : null !== a.Zc ? (d.ga = a.Zc.ga, d.te = a.Zc.te, d.Sg = a.Zc.Sg) : null !== a.Ei && (d.ga = a.Ei.ga, d.te = a.Ei.te, d.Sg = a.Ei.Sg); d.xd = 0; d.button = 0; d.buttons = 1; d.El = !1; d.up = !1; d.Pe = 1; d.Cl = 0; d.Gc = !1; d.bubbles = !1; d.event = b; d.timestamp = Date.now(); d.Qt = e; d.Ge = null } function ha(a, b, c) { if (b.bubbles) return u && u.EE && z.trace("NOT handled " + c.type + " " + b.toString()), !0; u && u.EE && z.trace("handled " + c.type + " " + a.eb.name + " " + b.toString()); void 0 !== c.stopPropagation && c.stopPropagation(); (void 0 === c.touches || 2 > c.touches.length) && c.preventDefault(); c.cancelBubble = !0; return !1 } C.prototype.oI = function(a) { if (!this.Z.isEnabled) return !1; var b = this.Z.Qb; Rk(this.Z, this.Z, a, b, !1); b.key = String.fromCharCode(a.which); b.El = !0; switch (a.which) { case 8: b.key = "Backspace"; break; case 33: b.key = "PageUp"; break; case 34: b.key = "PageDown"; break; case 35: b.key = "End"; break; case 36: b.key = "Home"; break; case 37: b.key = "Left"; break; case 38: b.key = "Up"; break; case 39: b.key = "Right"; break; case 40: b.key = "Down"; break; case 45: b.key = "Insert"; break; case 46: b.key = "Del"; break; case 48: b.key = "0"; break; case 187: case 61: case 107: b.key = "Add"; break; case 189: case 173: case 109: b.key = "Subtract"; break; case 27: b.key = "Esc" } this.Z.doKeyDown(); return 187 !== a.which && 189 !== a.which && 48 !== a.which && 107 !== a.which && 109 !== a.which && 61 !== a.which && 173 !== a.which || !0 !== a.ctrlKey ? ha(this.Z, b, a) : (a.cancelBubble = !0, a.preventDefault(), a.stopPropagation(), !1) }; C.prototype.pI = function(a) { if (!this.Z.isEnabled) return !1; var b = this.Z.Qb; Rk(this.Z, this.Z, a, b, !1); b.key = String.fromCharCode(a.which); b.up = !0; switch (a.which) { case 8: b.key = "Backspace"; break; case 33: b.key = "PageUp"; break; case 34: b.key = "PageDown"; break; case 35: b.key = "End"; break; case 36: b.key = "Home"; break; case 37: b.key = "Left"; break; case 38: b.key = "Up"; break; case 39: b.key = "Right"; break; case 40: b.key = "Down"; break; case 45: b.key = "Insert"; break; case 46: b.key = "Del"; break; case 93: a.preventDefault() } this.Z.doKeyUp(); return ha(this.Z, b, a) }; C.prototype.lo = function(a) { var b = this.Fb; if (null === b) return new N(0, 0); var c = this.Jb, d = this.Ob, b = b.getBoundingClientRect(), c = a.clientX - c / b.width * b.left; a = a.clientY - d / b.height * b.top; return null !== this.Hd ? (a = new N(c, a), ub(a, this.Hd), a) : new N(c, a) }; function Sk(a, b, c) { var d = a.Fb, e = a.Jb, g = a.Ob, h = 0, k = 0; null !== d && (d = d.getBoundingClientRect(), h = b.clientX - e / d.width * d.left, k = b.clientY - g / d.height * d.top); c.te.n(h, k); null !== a.Hd ? (b = z.Tb(h, k), a.Hd.ki(b), c.ga.assign(b), z.A(b)) : c.ga.n(h, k) } C.prototype.invalidateDocumentBounds = C.prototype.yc = function() { this.Ij || (this.Ij = !0, this.Ce(!0)) }; function ck(a) { a.Vd || Jk(a); a.Ij && Ok(a, a.rh()) } C.prototype.redraw = C.prototype.Sp = function() { this.Vc || this.Vd || (this.ta(), Vk(this), Ik(this), this.yc(), this.bg()) }; C.prototype.isUpdateRequested = function() { return this.Vf }; C.prototype.delayInitialization = function(a) { void 0 === a && (a = null); var b = this.Ua, c = b.isEnabled; b.oi(); b.isEnabled = !1; li(this); this.eh = !1; b.isEnabled = c; null !== a && z.setTimeout(a, 1) }; C.prototype.requestUpdate = C.prototype.Ce = function(a) { void 0 === a && (a = !1); if (!0 !== this.Vf && !(this.Vc || !1 === a && this.Vd)) { this.Vf = !0; var b = this; requestAnimationFrame(function() { b.Vf && b.bg() }) } }; C.prototype.maybeUpdate = C.prototype.bg = function() { if (!this.io || this.Vf) this.io && (this.io = !1), li(this) }; function Wk(a, b) { a.Ua.nf || a.Vc || !a.im || Hk(a) || (b && Jk(a), Lk(a, !1)) } function li(a) { if (!a.Vd && (a.Vf = !1, null !== a.Pb)) { a.Vd = !0; var b = a.Ua, c = a.SC; if (!b.to && 0 !== c.length) { for (var d = c.o, e = d.length, g = 0; g < e; g++) { var h = d[g]; Yk(h, !1); h.S() } c.clear() } c = a.jC; 0 < c.count && (c.each(function(a) { a.dB() }), c.clear()); d = c = !1; b.nf && (d = !0, c = a.Bb, a.Bb = !0); b.wc || Tj(a); Wk(a, !1); null !== a.td && (a.td.visible && !a.ov && (hl(a), a.ov = !0), !a.td.visible && a.ov && (a.ov = !1)); Jk(a); e = !1; if (!a.eh || a.Qu) a.eh ? il(a, !a.gv) : (a.Wb("Initial Layout"), !1 === b.isEnabled && b.oi(), il(a, !1)), e = !0; a.gv = !1; Jk(a); a.lz || b.nf || ck(a); Wk(a, !0); e && (a.eh || jl(a), a.Ja("LayoutCompleted")); Jk(a); e && !a.eh && (a.eh = !0, a.Jd("Initial Layout"), a.Bb || a.pa.clear(), z.setTimeout(function() { a.mi = !1 }, 1)); kl(a); Sj(b); a.ff(); d && (a.Bb = c); a.Vd = !1 } } z.w(C, { kn: null }, function() { return this.eh }); function jl(a) { var b = a.Yb.o; a.Jf(b, b.length, a); a.Xk !== jh ? a.scale = Mk(a, a.Xk) : a.dm !== jh ? a.scale = Mk(a, a.dm) : (b = a.$H, isFinite(b) && 0 < b && (a.scale = b)); b = a.ZH; if (b.F()) a.position = b; else { b = z.O(); b.ru(a.ad, a.YH); var c = a.xb, c = z.yk(0, 0, c.width, c.height), d = z.O(); d.ru(c, a.aI); d.n(b.x - d.x, b.y - d.y); a.position = d; z.dc(c); z.A(d); z.A(b); Wk(a, !0); Lk(a, !0) } a.Ja("InitialLayoutCompleted"); hl(a) } function Jk(a) { if ((a.Vd || !a.Ua.nf) && 0 !== a.qg.count) for (var b = 0; 23 > b; b++) { var c = a.qg.i; if (null === c || 0 === a.qg.count) break; a.qg = new K(O); a.dB(c, a.qg); u && 22 === b && z.trace("failure to validate parts") } } C.prototype.dB = function(a, b) { for (a.reset(); a.next();) { var c = a.value; !c.be() || c instanceof F || !c.isVisible() || (c.Ql() ? (rj(c, Infinity, Infinity), c.Lc()) : b.add(c)) } for (a.reset(); a.next();) c = a.value, c instanceof F && c.isVisible() && ll(this, c); for (a.reset(); a.next();) c = a.value, c instanceof G && c.isVisible() && (c.Ql() ? (rj(c, Infinity, Infinity), c.Lc()) : b.add(c)); for (a.reset(); a.next();) c = a.value, c instanceof da && c.isVisible() && (c.Ql() ? (rj(c, Infinity, Infinity), c.Lc()) : b.add(c)) }; function ll(a, b) { for (var c = z.rb(), d = z.rb(), e = b.Hc; e.next();) { var g = e.value; g.isVisible() && (g instanceof F ? (ml(g) || nl(g) || ol(g)) && ll(a, g) : g instanceof G ? g.Y === b || g.da === b ? d.push(g) : c.push(g) : (rj(g, Infinity, Infinity), g.Lc())) } for (var e = c.length, h = 0; h < e; h++) g = c[h], rj(g, Infinity, Infinity), g.Lc(); z.xa(c); rj(b, Infinity, Infinity); b.Lc(); e = d.length; for (h = 0; h < e; h++) g = d[h], rj(g, Infinity, Infinity), g.Lc(); z.xa(d) } C.prototype.Jf = function(a, b, c, d) { var e = this.Ua; if (this.Yk || e.nf) for (e = 0; e < b; e++) a[e].Jf(c, d) }; C.prototype.ff = function(a, b) { void 0 === a && (a = this.gd); void 0 === b && (b = null); null === this.Pb && z.k("No div specified"); var c = this.Fb; null === c && z.k("No canvas specified"); var d = this.Ua; if (!d.wc && (pl(this), "0" !== this.Pb.style.opacity)) { var e = a !== this.gd, g = this.Yb.o, h = g.length, k = this; this.Jf(g, h, k); if (e) ca(a, !0), Ik(this); else if (!this.ue && null === b && !d.Jj) return; var h = this.sb, l = this.bc, m = Math.round(h.x * l) / l, n = Math.round(h.y * l) / l, d = this.Hd; d.reset(); 1 !== l && d.scale(l); 0 === h.x && 0 === h.y || d.translate(-m, -n); l = this.jd; z.jn ? (c.width = c.width, ca(a, !0), a.scale(l, l)) : (a.setTransform(1, 0, 0, 1, 0, 0), a.scale(l, l), a.clearRect(0, 0, this.Jb, this.Ob)); a.setTransform(1, 0, 0, 1, 0, 0); a.scale(l, l); a.transform(d.m11, d.m12, d.m21, d.m22, d.dx, d.dy); u && u.bj && u.lE(this, a); c = null !== b ? function(c) { var d = a, e = b; if (c.visible && 0 !== c.Xc) { var g = c.mb.o, h = g.length; if (0 !== h) { 1 !== c.Xc && (d.globalAlpha = c.Xc); c = c.Wv; c.length = 0; for (var l = k.scale, m = 0; m < h; m++) { var n = g[m]; if (hk(n) && !e.contains(n)) { if (n instanceof G) { var A = n; A.rc && c.push(A); if (!1 === A.Cg) continue } A = n.W; 1 < A.width * l || 1 < A.height * l ? n.ff(d, k) : jk(n, d) } } d.globalAlpha = 1 } } } : function(b) { b.ff(a, k) }; ql(this, a); h = g.length; for (m = 0; m < h; m++) a.setTransform(1, 0, 0, 1, 0, 0), a.scale(l, l), a.transform(d.m11, d.m12, d.m21, d.m22, d.dx, d.dy), c(g[m]); this.Wk ? this.Wk.Zl(this) && this.Dy() : this.lo = function() { return new N(0, 0) }; u && (u.Rz || u.bj) && u.Qz(a, this, d); e ? (ca(this.gd, !0), Ik(this)) : this.ue = this.Yk = !1 } }; function rl(a, b, c, d, e) { null === a.Pb && z.k("No div specified"); var g = a.Fb; null === g && z.k("No canvas specified"); if (!a.Ua.wc) { var h = a.gd; if (a.ue) { pl(a); var k = a.jd; z.jn ? (g.width = g.width, ca(h, !0)) : (h.setTransform(1, 0, 0, 1, 0, 0), h.clearRect(0, 0, a.Jb * k, a.Ob * k)); h.Jt = !1; h.drawImage(a.Cy.Kd, 0 < d ? 0 : Math.round(-d), 0 < e ? 0 : Math.round(-e)); e = a.sb; var g = a.bc, l = Math.round(e.x * g) / g, m = Math.round(e.y * g) / g; d = a.Hd; d.reset(); 1 !== g && d.scale(g); 0 === e.x && 0 === e.y || d.translate(-l, -m); h.save(); h.beginPath(); e = c.length; for (g = 0; g < e; g++) l = c[g], 0 !== l.width && 0 !== l.height && h.rect(Math.floor(l.x), Math.floor(l.y), Math.ceil(l.width), Math.ceil(l.height)); h.clip(); h.setTransform(1, 0, 0, 1, 0, 0); h.scale(k, k); h.transform(d.m11, d.m12, d.m21, d.m22, d.dx, d.dy); u && u.bj && u.lE(a, h); c = a.Yb.o; e = c.length; a.Jf(c, e, a); ql(a, h); for (g = 0; g < e; g++) kk(c[g], h, a, b); h.restore(); ca(h, !0); u && (u.Rz || u.bj) && u.Qz(h, a, d); a.Wk ? a.Wk.Zl(a) && a.Dy() : a.lo = function() { return new N(0, 0) }; a.Yk = !1; a.ue = !1; a.HA() } } } function sl(a, b, c, d, e, g, h, k, l, m) { null === a.Pb && z.k("No div specified"); null === a.Fb && z.k("No canvas specified"); void 0 === h && (h = null); void 0 === k && (k = null); void 0 === l && (l = !1); void 0 === m && (m = !1); pl(a); ca(a.gd, !0); Ik(a); a.Sy = !0; var n = new w(g.x, g.y, d.width / e, d.height / e), p = n.copy(); p.Cw(c); hl(a, p); Jk(a); var p = a.Yb.o, q = p.length; a.Jf(p, q, a, n); n = a.jd; b.setTransform(1, 0, 0, 1, 0, 0); b.scale(n, n); b.clearRect(0, 0, d.width, d.height); null !== k && "" !== k && (b.fillStyle = k, b.fillRect(0, 0, d.width, d.height)); d = z.Fh(); d.reset(); d.translate(c.left, c.top); d.scale(e); 0 === g.x && 0 === g.y || d.translate(-g.x, -g.y); b.setTransform(d.m11, d.m12, d.m21, d.m22, d.dx, d.dy); z.jf(d); ql(a, b); if (null !== h) { var r = new K(O); c = h.i; for (c.reset(); c.next();) e = c.value, !1 === m && "Grid" === e.layer.name || null === e || r.add(e); c = function(c) { var d = l; if (c.visible && 0 !== c.Xc && (void 0 === d && (d = !0), d || !c.Nc)) { var d = c.mb.o, e = d.length; if (0 !== e) { 1 !== c.Xc && (b.globalAlpha = c.Xc); c = c.Wv; c.length = 0; for (var g = a.scale, h = 0; h < e; h++) { var k = d[h]; if (hk(k) && r.contains(k)) { if (k instanceof G) { var m = k; m.rc && c.push(m); if (!1 === m.Cg) continue } m = k.W; 1 < m.width * g || 1 < m.height * g ? k.ff(b, a) : jk(k, b) } } b.globalAlpha = 1 } } } } else if (!l && m) { var s = a.Gt.ca, t = s.layer; c = function(c) { c === t ? s.ff(b, a) : c.ff(b, a, l, m) } } else c = function(c) { c.ff(b, a, l, m) }; for (e = 0; e < q; e++) c(p[e]); a.Sy = !1; a.Wk ? a.Wk.Zl(a) && a.Dy() : a.lo = function() { return new N(0, 0) }; ca(a.gd, !0); Ik(a); a.Jf(p, q, a); hl(a) } C.prototype.getRenderingHint = C.prototype.hj = function(a) { return this.Xj[a] }; C.prototype.setRenderingHint = C.prototype.kJ = function(a, b) { this.Xj[a] = b; this.Sp() }; C.prototype.resetRenderingHints = C.prototype.rF = function() { this.Xj = new ma; this.Xj.drawShadows = !0; this.Xj.textGreeking = !0; this.Xj.viewportOptimizations = z.PE ? !1 : !0; this.Xj.temporaryPixelRatio = !0; this.Xj.pictureRatioOptimization = !0 }; function ql(a, b) { var c = a.Xj; if (null !== c) { if (void 0 !== c.imageSmoothingEnabled) { var d = !!c.imageSmoothingEnabled; b.Jt = d; b.YK = d } c = c.defaultFont; void 0 !== c && null !== c && (b.font = c) } } C.prototype.getInputOption = C.prototype.sp = function(a) { return this.qo[a] }; C.prototype.setInputOption = function(a, b) { this.qo[a] = b }; C.prototype.resetInputOptions = C.prototype.qF = function() { this.qo = new ma; this.qo.extraTouchArea = 10; this.qo.extraTouchThreshold = 10; this.qo.hasGestureZoom = !0 }; C.prototype.setProperties = function(a) { z.qu(this, a) }; function kl(a) { if (0 === a.pa.Gh && 0 !== a.Rk.count) { for (; 0 < a.Rk.count;) { var b = a.Rk; a.Rk = new na(G, w); for (b = b.i; b.next();) { var c = b.key; Oi(c, b.value); c.Ae() } } a.ta() } } C.prototype.ta = function(a) { void 0 === a && (a = null); if (null === a) this.ue = !0, this.Ce(); else { var b = this.xb; null !== a && a.F() && b.Ig(a) && (this.ue = !0, this.Ce()) } for (b = this.Xv.i; b.next();) b.value.ta(a) }; C.prototype.HE = function(a, b) { if (!0 !== this.ue) { this.ue = !0; var c = !0 === this.hj("temporaryPixelRatio"); if (!0 === this.hj("viewportOptimizations") && this.MA !== tl && this.BF.Vw(0, 0, 0, 0) && b.width === a.width && b.height === a.height) { var d = this.scale, e = z.kg(), g = Math.max(a.x, b.x), h = Math.max(a.y, b.y), k = Math.min(a.x + a.width, b.x + b.width), l = Math.min(a.y + a.height, b.y + b.height); e.x = g; e.y = h; e.width = Math.max(0, k - g) * d; e.height = Math.max(0, l - h) * d; if (0 < e.width && 0 < e.height) { if (!this.Vd && (this.Vf = !1, null !== this.Pb)) { this.Vd = !0; kl(this); this.ad.F() || Ok(this, this.rh()); var m = this.Fb; if (null !== m) { var n = this.jd, h = this.Jb * n, k = this.Ob * n, g = this.scale * n, d = Math.round(Math.round(b.x * g) - Math.round(a.x * g)), g = Math.round(Math.round(b.y * g) - Math.round(a.y * g)), l = this.Cy, p = this.aC; l.width !== h && (l.width = h); l.height !== k && (l.height = k); p.clearRect(0, 0, h, k); var l = 190 * this.jd, q = 70 * this.jd, r = Math.max(d, 0), s = Math.max(g, 0), t = Math.floor(h - r), v = Math.floor(k - s); p.Jt = !1; p.drawImage(m.Kd, r, s, t, v, 0, 0, t, v); this.Wk.Zl(this) && p.clearRect(0, 0, l, q); var m = z.rb(), p = z.rb(), v = Math.abs(d), t = Math.abs(g), x = 0 === r ? 0 : h - v, r = z.Tb(x, 0), v = z.Tb(v + x, k); p.push(new w(Math.min(r.x, v.x), Math.min(r.y, v.y), Math.abs(r.x - v.x), Math.abs(r.y - v.y))); var y = this.Hd; y.reset(); y.scale(n, n); 1 !== this.bc && y.scale(this.bc); n = this.sb; (0 !== n.x || 0 !== n.y) && isFinite(n.x) && isFinite(n.y) && y.translate(-n.x, -n.y); ub(r, y); ub(v, y); m.push(new w(Math.min(r.x, v.x), Math.min(r.y, v.y), Math.abs(r.x - v.x), Math.abs(r.y - v.y))); x = 0 === s ? 0 : k - t; r.n(0, x); v.n(h, t + x); p.push(new w(Math.min(r.x, v.x), Math.min(r.y, v.y), Math.abs(r.x - v.x), Math.abs(r.y - v.y))); ub(r, y); ub(v, y); m.push(new w(Math.min(r.x, v.x), Math.min(r.y, v.y), Math.abs(r.x - v.x), Math.abs(r.y - v.y))); this.Wk.Zl(this) && (h = 0 < d ? 0 : -d, k = 0 < g ? 0 : -g, r.n(h, k), v.n(l + h, q + k), p.push(new w(Math.min(r.x, v.x), Math.min(r.y, v.y), Math.abs(r.x - v.x), Math.abs(r.y - v.y))), ub(r, y), ub(v, y), m.push(new w(Math.min(r.x, v.x), Math.min(r.y, v.y), Math.abs(r.x - v.x), Math.abs(r.y - v.y)))); z.A(r); z.A(v); Wk(this, !1); rl(this, m, p, d, g); z.xa(m); z.xa(p); this.Vd = !1 } } } else this.bg(); z.dc(e); c && (this.ck = 1, this.bg(), this.ck = null, this.HA()) } else c ? (this.ck = 1, this.bg(), this.ck = null, this.HA()) : this.bg() } }; function Vk(a) { !1 === a.im && (a.im = !0) } function Ik(a) { !1 === a.Yk && (a.Yk = !0) } function pl(a) { !1 !== a.gr && (a.gr = !1, ul(a, a.Jb, a.Ob)) } function ul(a, b, c) { var d = a.Fb, e = a.jd, g = b * e, e = c * e; if (d.width !== g || d.height !== e) d.width = g, d.height = e, d.style.width = b + "px", d.style.height = c + "px", a.ue = !0, ca(a.gd, !0) } function Bh(a) { var b = a.Jb, c = a.Ob; a = a.Fb.getBoundingClientRect(); return z.Tb(b / a.width * a.left, c / a.height * a.top) } function Hk(a) { var b = a.Fb; if (null === b) return !0; var c = a.Pb, d = a.Jb, e = a.Ob, g = a.wD.copy(); if (!g.F()) return !0; var h = !1, k = a.Vk ? a.Gd : 0, l = a.Hj ? a.Gd : 0, m = c.clientWidth || d + k, c = c.clientHeight || e + l; if (m !== d + k || c !== e + l) a.Vk = !1, a.Hj = !1, l = k = 0, a.Jb = m, a.Ob = c, h = a.gr = !0; a.im = !1; var n = a.xb, p = a.ad, m = p.width, c = p.height, q = n.width, r = n.height, s = p.x, t = n.x, v = p.right, x = n.right + k, y = p.y, A = n.y, p = p.bottom, n = n.bottom + l, B = "1px", L = "1px", H = a.scale; a.MA === qk && m < q + k && c < r + l || (a.cA && a.xe && (B = 1, s + 1 < t && (B = Math.max((t - s) * H + a.Jb, B)), v > x + 1 && (B = Math.max((v - x) * H + a.Jb, B)), q + k + 1 < m && (B = Math.max((m - q + k) * H + a.Jb, B)), B += "px"), a.dA && a.ye && (L = 1, y + 1 < A && (L = Math.max((A - y) * H + a.Ob, L)), p > n + 1 && (L = Math.max((p - n) * H + a.Ob, L)), r + l + 1 < c && (L = Math.max((c - r + l) * H + a.Ob, L)), L += "px")); k = "1px" !== B; l = "1px" !== L; k && l || !k && !l || (l && (x -= a.Gd), k && (n -= a.Gd), a.cA && a.xe && (B = 1, s + 1 < t && (B = Math.max((t - s) * H + a.Jb, B)), v > x + 1 && (B = Math.max((v - x) * H + a.Jb, B)), q + 1 < m && (B = Math.max((m - q) * H + a.Jb, B)), B += "px"), k = "1px" !== B, l = k !== a.Hj ? a.Ob - a.Gd : a.Ob, a.dA && a.ye && (L = 1, y + 1 < A && (L = Math.max((A - y) * H + l, L)), p > n + 1 && (L = Math.max((p - n) * H + l, L)), r + 1 < c && (L = Math.max((c - r) * H + l, L)), L += "px"), l = "1px" !== L); if (a.gw && k === a.Hj && l === a.Vk) return d === a.Jb && e === a.Ob || a.bg(), !1; k !== a.Hj && (a.Ob = "1px" === B ? a.Ob + a.Gd : Math.max(a.Ob - a.Gd, 1), h = !0); a.Hj = k; a.xs.style.width = B; l !== a.Vk && (a.Jb = "1px" === L ? a.Jb + a.Gd : Math.max(a.Jb - a.Gd, 1), h = !0, a.mr && (k = z.O(), l ? (b.style.left = a.Gd + "px", a.position = k.n(a.sb.x + a.Gd / a.scale, a.sb.y)) : (b.style.left = "0px", a.position = k.n(a.sb.x - a.Gd / a.scale, a.sb.y)), z.A(k))); a.Vk = l; a.xs.style.height = L; b = a.kw; k = b.scrollLeft; a.cA && a.xe && (q + 1 < m ? k = (a.position.x - s) * H : s + 1 < t ? k = b.scrollWidth - b.clientWidth : v > x + 1 && (k = a.position.x * H)); if (a.mr) switch (a.hz) { case "negative": k = -(b.scrollWidth - k - b.clientWidth); break; case "reverse": k = b.scrollWidth - k - b.clientWidth } b.scrollLeft = k; a.dA && a.ye && (r + 1 < c ? b.scrollTop = (a.position.y - y) * H : y + 1 < A ? b.scrollTop = b.scrollHeight - b.clientHeight : p > n + 1 && (b.scrollTop = a.position.y * H)); h && (a.gr = !0); m = a.Jb; c = a.Ob; b.style.width = m + (a.Vk ? a.Gd : 0) + "px"; b.style.height = c + (a.Hj ? a.Gd : 0) + "px"; a.iz = !1; return d !== m || e !== c || a.Ua.wc ? (n = a.xb, a.fu(g, n, h), !1) : !0 } C.prototype.add = C.prototype.add = function(a) { z.l(a, D, C, "add:part"); var b = a.h; if (b !== this) { null !== b && z.k("Cannot add part " + a.toString() + " to " + this.toString() + ". It is already a part of " + b.toString()); this.lq && (a.cl = "Tool"); var c = a.If, b = this.Fl(c); null === b && (b = this.Fl("")); null === b && z.k('Cannot add a Part when unable find a Layer named "' + c + '" and there is no default Layer'); a.layer !== b && (c = b.xp(99999999, a, a.h === this), 0 <= c && this.Rc(Uf, "parts", b, null, a, null, c), b.Nc || this.yc(), a.I(vl), c = a.Ut, null !== c && c(a, null, b)) } }; C.prototype.xp = function(a) { if (a instanceof E) { if (this.Fo.add(a), a instanceof F) { var b = a.Va; null === b ? this.ol.add(a) : b.wm.add(a); b = a.Sb; null !== b && (b.h = this) } } else a instanceof G ? this.zo.add(a) : a instanceof da || this.mb.add(a); var c = this; wl(a, function(a) { xl(c, a) }); a.Lb && a.S(); b = a.data; null !== b && (a instanceof da || (a instanceof G ? this.Qk.add(b, a) : this.zi.add(b, a)), wl(a, function(a) { yl(c, a) })); !0 !== nl(a) && !0 !== ol(a) || this.qg.add(a); zl(a, !0, this); Al(a) ? (a.W.F() && this.ta(lk(a, a.W)), this.yc()) : a.isVisible() && a.W.F() && this.ta(lk(a, a.W)); this.Ce() }; C.prototype.Ve = function(a) { a.pt(); if (a instanceof E) { if (this.Fo.remove(a), a instanceof F) { var b = a.Va; null === b ? this.ol.remove(a) : b.wm.remove(a); b = a.Sb; null !== b && (b.h = null) } } else a instanceof G ? this.zo.remove(a) : a instanceof da || this.mb.remove(a); var c = this; wl(a, function(a) { Bl(c, a) }); b = a.data; null !== b && (a instanceof da || (a instanceof G ? this.Qk.remove(b) : this.zi.remove(b)), wl(a, function(a) { Cl(c, a) })); this.qg.remove(a); Al(a) ? (a.W.F() && this.ta(lk(a, a.W)), this.yc()) : a.isVisible() && a.W.F() && this.ta(lk(a, a.W)); this.Ce() }; C.prototype.remove = C.prototype.remove = function(a) { z.l(a, D, C, "remove:part"); a.kb = !1; a.wh = !1; var b = a.layer; if (null !== b && b.h === this) { a.I(Dl); a.cn(); var c = b.Ve(-1, a, !1); 0 <= c && this.Rc(Vf, "parts", b, a, null, c, null); c = a.Ut; null !== c && c(a, b, null) } }; C.prototype.removeParts = C.prototype.JA = function(a, b) { if (z.isArray(a)) for (var c = z.bb(a), d = 0; d < c; d++) { var e = z.Ya(a, d); b && !e.canDelete() || this.remove(e) } else for (e = new K(D), e.$c(a), c = e.i; c.next();) e = c.value, b && !e.canDelete() || this.remove(e) }; C.prototype.copyParts = C.prototype.hp = function(a, b, c) { return this.wb.hp(a, b, c) }; C.prototype.moveParts = C.prototype.moveParts = function(a, b, c) { z.l(b, N, C, "moveParts:offset"); var d = this.hb; if (null !== d) { d = d.me; null === d && (d = new ih, d.Sc(this)); var e = new na(D, Object); if (null !== a) a = a.i; else { for (a = this.ni; a.next();) Kh(d, e, a.value, c); for (a = this.Lg; a.next();) Kh(d, e, a.value, c); a = this.links } for (; a.next();) Kh(d, e, a.value, c); d.moveParts(e, b, c) } }; function El(a, b, c) { z.l(b, tg, C, "addLayer:layer"); null !== b.h && b.h !== a && z.k("Cannot share a Layer with another Diagram: " + b + " of " + b.h); null === c ? null !== b.h && z.k("Cannot add an existing Layer to this Diagram again: " + b) : (z.l(c, tg, C, "addLayer:existingLayer"), c.h !== a && z.k("Existing Layer must be in this Diagram: " + c + " not in " + c.h), b === c && z.k("Cannot move a Layer before or after itself: " + b)); if (b.h !== a) { b = b.name; a = a.Yb; c = a.count; for (var d = 0; d < c; d++) a.ea(d).name === b && z.k("Cannot add Layer with the name '" + b + "'; a Layer with the same name is already present in this Diagram.") } } C.prototype.addLayer = C.prototype.ft = function(a) { El(this, a, null); a.Sc(this); var b = this.Yb, c = b.count - 1; if (!a.Nc) for (; 0 <= c && b.ea(c).Nc;) c--; b.Ld(c + 1, a); null !== this.ie && this.Rc(Uf, "layers", this, null, a, null, c + 1); this.ta(); this.yc() }; C.prototype.addLayerBefore = C.prototype.OG = function(a, b) { El(this, a, b); a.Sc(this); var c = this.Yb, d = c.indexOf(a); 0 <= d && (c.remove(a), null !== this.ie && this.Rc(Vf, "layers", this, a, null, d, null)); for (var e = c.count, g = 0; g < e; g++) if (c.ea(g) === b) { c.Ld(g, a); break } null !== this.ie && this.Rc(Uf, "layers", this, null, a, null, g); this.ta(); 0 > d && this.yc() }; C.prototype.addLayerAfter = function(a, b) { El(this, a, b); a.Sc(this); var c = this.Yb, d = c.indexOf(a); 0 <= d && (c.remove(a), null !== this.ie && this.Rc(Vf, "layers", this, a, null, d, null)); for (var e = c.count, g = 0; g < e; g++) if (c.ea(g) === b) { c.Ld(g + 1, a); break } null !== this.ie && this.Rc(Uf, "layers", this, null, a, null, g + 1); this.ta(); 0 > d && this.yc() }; C.prototype.removeLayer = function(a) { z.l(a, tg, C, "removeLayer:layer"); a.h !== this && z.k("Cannot remove a Layer from another Diagram: " + a + " of " + a.h); if ("" !== a.name) { var b = this.Yb, c = b.indexOf(a); if (b.remove(a)) { for (b = a.mb.copy().i; b.next();) { var d = b.value, e = d.If; d.If = e !== a.name ? e : "" } null !== this.ie && this.Rc(Vf, "layers", this, a, null, c, null); this.ta(); this.yc() } } }; C.prototype.findLayer = C.prototype.Fl = function(a) { for (var b = this.mn; b.next();) { var c = b.value; if (c.name === a) return c } return null }; C.prototype.addModelChangedListener = C.prototype.QG = function(a) { z.g(a, "function", C, "addModelChangedListener:listener"); null === this.gh && (this.gh = new J("function")); this.gh.add(a); this.ha.Rm(a) }; C.prototype.removeModelChangedListener = function(a) { z.g(a, "function", C, "removeModelChangedListener:listener"); null !== this.gh && (this.gh.remove(a), 0 === this.gh.count && (this.gh = null)); this.ha.iu(a) }; C.prototype.addChangedListener = C.prototype.Rm = function(a) { z.g(a, "function", C, "addChangedListener:listener"); null === this.ti && (this.ti = new J("function")); this.ti.add(a) }; C.prototype.removeChangedListener = C.prototype.iu = function(a) { z.g(a, "function", C, "removeChangedListener:listener"); null !== this.ti && (this.ti.remove(a), 0 === this.ti.count && (this.ti = null)) }; C.prototype.Kw = function(a) { this.Bb || this.pa.DE(a); a.Dc !== Tf && (this.mi = !0); if (null !== this.ti) { var b = this.ti, c = b.length; if (1 === c) b = b.ea(0), b(a); else if (0 !== c) for (var d = b.jc(), e = 0; e < c; e++) b = d[e], b(a) } }; C.prototype.raiseChangedEvent = C.prototype.Rc = function(a, b, c, d, e, g, h) { void 0 === g && (g = null); void 0 === h && (h = null); var k = new Rf; k.h = this; k.Dc = a; k.propertyName = b; k.object = c; k.oldValue = d; k.Mg = g; k.newValue = e; k.Kg = h; this.Kw(k) }; C.prototype.raiseChanged = C.prototype.j = function(a, b, c, d, e) { this.Rc(Sf, a, this, b, c, d, e) }; z.w(C, { Ua: "animationManager" }, function() { return this.sB }); z.w(C, { pa: "undoManager" }, function() { return this.ie.pa }); z.defineProperty(C, { Bb: "skipsUndoManager" }, function() { return this.Vi }, function(a) { z.g(a, "boolean", C, "skipsUndoManager"); this.Vi = a; this.ie.Vi = a }); z.defineProperty(C, { Oz: "delaysLayout" }, function() { return this.yy }, function(a) { this.yy = a }); C.prototype.Vm = function(a, b) { if (null !== a && a.h === this) { var c = this.Ee; try { this.Ee = !0; var d = a.Dc, e; if (d === Sf) { var g = a.object, h = a.propertyName, k = a.na(b); z.Ra(g, h, k); if (g instanceof O) { var l, m = g.ca; null !== m && m.ae() } this.mi = !0 } else if (d === Uf) { var n = a.object, p = a.Kg, g = a.newValue; if (n instanceof I) if ("number" === typeof p && g instanceof O) { l = g; var q = n; b ? q.Ve(p) : q.Ld(p, l); m = n.ca; null !== m && m.ae() } else { if ("number" === typeof p && g instanceof Fg) { var r = g, q = n; b ? r.qe ? q.pF(p) : q.lF(p) : (e = r.qe ? q.$d(r.index) : q.Zd(r.index), e.tt(r)) } } else if (n instanceof tg) { var s = !0 === a.Mg; if ("number" === typeof p && g instanceof D) { var m = g, t = n; b ? (m.ae(), t.Ve(s ? p : -1, m, s)) : t.xp(p, m, s) } } else if (n instanceof C) { if ("number" === typeof p && g instanceof tg) { var v = g; b ? this.Yb.dd(p) : (d = v, d.Sc(this), this.Yb.Ld(p, d)) } } else z.k("unknown ChangedEvent.Insert object: " + a.toString()); this.mi = !0 } else d === Vf ? (n = a.object, p = a.Mg, g = a.oldValue, n instanceof I ? "number" === typeof p && g instanceof O ? (q = n, b ? q.Ld(p, g) : q.Ve(p)) : "number" === typeof p && g instanceof Fg && (r = g, q = n, b ? (e = r.qe ? q.$d(r.index) : q.Zd(r.index), e.tt(r)) : r.qe ? q.pF(p) : q.lF(p)) : n instanceof tg ? (s = !0 === a.Kg, "number" === typeof p && g instanceof D && (m = g, t = n, b ? t.xp(p, m, s) : (m.ae(), t.Ve(s ? p : -1, m, s)))) : n instanceof C ? "number" === typeof p && g instanceof tg && (v = g, b ? (d = v, d.Sc(this), this.Yb.Ld(p, d)) : this.Yb.dd(p)) : z.k("unknown ChangedEvent.Remove object: " + a.toString()), this.mi = !0) : d !== Tf && z.k("unknown ChangedEvent: " + a.toString()) } finally { this.Ee = c } } }; C.prototype.startTransaction = C.prototype.Wb = function(a) { return this.pa.Wb(a) }; C.prototype.commitTransaction = C.prototype.Jd = function(a) { return this.pa.Jd(a) }; C.prototype.rollbackTransaction = C.prototype.Vp = function() { return this.pa.Vp() }; C.prototype.updateAllTargetBindings = C.prototype.eG = function(a) { void 0 === a && (a = ""); for (var b = this.ni; b.next();) b.value.Mb(a); for (b = this.Lg; b.next();) b.value.Mb(a); for (b = this.links; b.next();) b.value.Mb(a) }; C.prototype.updateAllRelationshipsFromData = C.prototype.BJ = function() { if (0 < arguments.length) { for (var a = this.ha, b = new K, c = a.gg, d = 0; d < c.length; d++) { var e = c[d]; b.add(e) } var g = []; this.Lg.each(function(a) { null === a.data || b.contains(a.data) || g.push(a.data) }); this.ni.each(function(a) { null === a.data || b.contains(a.data) || g.push(a.data) }); g.forEach(function(b) { Ag(a, b, !1) }); for (d = 0; d < c.length; d++) { var e = c[d], h = this.uh(e); null === h && zg(a, e, !1) } if (a instanceof V) { for (var k = new K, c = a.Jg, d = 0; d < c.length; d++) e = c[d], k.add(e); var l = []; this.links.each(function(a) { null === a.data || k.contains(a.data) || l.push(a.data) }); l.forEach(function(b) { Wg(a, b, !1) }); for (d = 0; d < c.length; d++) e = c[d], h = this.Zf(e), null === h && Vg(a, e, !1) } } for (d = this.ni; d.next();) h = d.value, h.updateRelationshipsFromData(); for (d = this.Lg; d.next();) d.value.updateRelationshipsFromData(); for (d = this.links; d.next();) h = d.value, h.updateRelationshipsFromData() }; function Fl(a, b, c) { if (a.Vc || a.Vd) a.bc = c, c = a.Ua, c.wc && gk(c, b, a.bc); else if (a.Vc = !0, null === a.Fb) a.bc = c; else { var d = a.xb.copy(), e = a.Jb, g = a.Ob; d.width = a.Jb / b; d.height = a.Ob / b; var h = a.$l.x, k = a.$l.y, l = a.XD; isNaN(h) && (l.kj() ? l.vp(qc) ? h = 0 : l.vp(sc) && (h = e - 1) : h = l.cd() ? l.x * (e - 1) : e / 2); isNaN(k) && (l.kj() ? l.vp(pc) ? k = 0 : l.vp(tc) && (k = g - 1) : k = l.cd() ? l.y * (g - 1) : g / 2); null !== a.AF && (c = a.AF(a, c)); c < a.yh && (c = a.yh); c > a.xh && (c = a.xh); e = z.Tb(a.sb.x + h / b - h / c, a.sb.y + k / b - k / c); a.position = e; z.A(e); a.bc = c; a.fu(d, a.xb); a.Vc = !1; Lk(a, !1); c = a.Ua; c.wc && gk(c, b, a.bc); a.ta(); Vk(a) } } C.prototype.fu = function(a, b, c) { if (!a.N(b)) { void 0 === c && (c = !1); c || Vk(this); Ik(this); var d = this.Sb; null === d || !d.mx || this.wl !== jh || c || a.width === b.width && a.height === b.height || d.I(); d = this.eb; !0 === this.km && d instanceof dh && (this.Q.ga = this.cG(this.Q.te), Oj(d, this)); this.Vc || this.HE(a, b); hl(this); this.Ja("ViewportBoundsChanged", c ? z.xj : null, a) } }; function hl(a, b) { void 0 === b && (b = null); var c = a.td; if (null !== c && c.visible) { for (var d = z.Xl(), e = 1, g = 1, h = c.va.o, k = h.length, l = 0; l < k; l++) { var m = h[l], n = m.interval; 2 > n || (Gl(m.Hb) ? g = g * n / ff(g, n) : e = e * n / ff(e, n)) } h = c.bx; d.n(g * h.width, e * h.height); h = g = l = k = 0; if (null !== b) k = b.width, l = b.height, g = b.x, h = b.y; else { e = z.kg(); g = a.xb; e.n(g.x, g.y, g.width, g.height); for (h = a.Xv.i; h.next();) g = h.value.xb, g.F() && Ib(e, g.x, g.y, g.width, g.height); if (!e.F()) { z.dc(e); return } k = e.width; l = e.height; g = e.x; h = e.y; z.dc(e) } c.width = k + 2 * d.width; c.height = l + 2 * d.height; e = z.O(); jb(g, h, 0, 0, d.width, d.height, e); e.offset(-d.width, -d.height); z.pk(d); c.ca.location = e; z.A(e) } } C.prototype.clearSelection = C.prototype.Mw = function() { var a = 0 < this.selection.count; a && this.Ja("ChangingSelection"); hh(this); a && this.Ja("ChangedSelection") }; function hh(a) { a = a.selection; if (0 < a.count) { for (var b = a.jc(), c = b.length, d = 0; d < c; d++) b[d].kb = !1; a.Wa(); a.clear(); a.freeze() } } C.prototype.select = C.prototype.select = function(a) { null !== a && (z.l(a, D, C, "select:part"), a.layer.h === this && (!a.kb || 1 < this.selection.count) && (this.Ja("ChangingSelection"), hh(this), a.kb = !0, this.Ja("ChangedSelection"))) }; C.prototype.selectCollection = C.prototype.FF = function(a) { this.Ja("ChangingSelection"); hh(this); if (z.isArray(a)) for (var b = z.bb(a), c = 0; c < b; c++) { var d = z.Ya(a, c); d instanceof D || z.k("Diagram.selectCollection given something that is not a Part: " + d); d.kb = !0 } else for (a = a.i; a.next();) d = a.value, d instanceof D || z.k("Diagram.selectCollection given something that is not a Part: " + d), d.kb = !0; this.Ja("ChangedSelection") }; C.prototype.clearHighlighteds = C.prototype.PD = function() { var a = this.hn; if (0 < a.count) { for (var b = a.jc(), c = b.length, d = 0; d < c; d++) b[d].wh = !1; a.Wa(); a.clear(); a.freeze() } }; C.prototype.highlight = function(a) { null !== a && a.layer.h === this && (z.l(a, D, C, "highlight:part"), !a.wh || 1 < this.hn.count) && (this.PD(), a.wh = !0) }; C.prototype.highlightCollection = function(a) { this.PD(); if (z.isArray(a)) for (var b = z.bb(a), c = 0; c < b; c++) { var d = z.Ya(a, c); d instanceof D || z.k("Diagram.highlightCollection given something that is not a Part: " + d); d.wh = !0 } else for (a = a.i; a.next();) d = a.value, d instanceof D || z.k("Diagram.highlightCollection given something that is not a Part: " + d), d.wh = !0 }; C.prototype.scroll = C.prototype.scroll = function(a, b, c) { void 0 === c && (c = 1); var d = "up" === b || "down" === b, e = 0; if ("pixel" === a) e = c; else if ("line" === a) e = c * (d ? this.ou : this.nu); else if ("page" === a) a = d ? this.xb.height : this.xb.width, a *= this.scale, 0 !== a && (e = Math.max(a - (d ? this.ou : this.nu), 0), e *= c); else { if ("document" === a) { e = this.ad; d = this.xb; c = z.O(); "up" === b ? this.position = c.n(d.x, e.y) : "left" === b ? this.position = c.n(e.x, d.y) : "down" === b ? this.position = c.n(d.x, e.bottom - d.height) : "right" === b && (this.position = c.n(e.right - d.width, d.y)); z.A(c); return } z.k("scrolling unit must be 'pixel', 'line', 'page', or 'document', not: " + a) } e /= this.scale; c = this.position.copy(); "up" === b ? c.y = this.position.y - e : "down" === b ? c.y = this.position.y + e : "left" === b ? c.x = this.position.x - e : "right" === b ? c.x = this.position.x + e : z.k("scrolling direction must be 'up', 'down', 'left', or 'right', not: " + b); this.position = c }; C.prototype.scrollToRect = C.prototype.fJ = function(a) { var b = this.xb; b.mk(a) || (a = a.xl, a.x -= b.width / 2, a.y -= b.height / 2, this.position = a) }; C.prototype.centerRect = C.prototype.YG = function(a) { var b = this.xb; a = a.xl; a.x -= b.width / 2; a.y -= b.height / 2; this.position = a }; C.prototype.transformDocToView = C.prototype.aB = function(a) { var b = this.Hd; b.reset(); 1 !== this.bc && b.scale(this.bc); var c = this.sb; (0 !== c.x || 0 !== c.y) && isFinite(c.x) && isFinite(c.y) && b.translate(-c.x, -c.y); return a.copy().transform(this.Hd) }; C.prototype.transformViewToDoc = C.prototype.cG = function(a) { var b = this.Hd; b.reset(); 1 !== this.bc && b.scale(this.bc); var c = this.sb; (0 !== c.x || 0 !== c.y) && isFinite(c.x) && isFinite(c.y) && b.translate(-c.x, -c.y); return ub(a.copy(), this.Hd) }; var jh; C.None = jh = z.s(C, "None", 0); var Pk; C.Uniform = Pk = z.s(C, "Uniform", 1); var Qk; C.UniformToFill = Qk = z.s(C, "UniformToFill", 2); var yi; C.CycleAll = yi = z.s(C, "CycleAll", 10); var Ci; C.CycleNotDirected = Ci = z.s(C, "CycleNotDirected", 11); var Ei; C.CycleNotDirectedFast = Ei = z.s(C, "CycleNotDirectedFast", 12); var Fi; C.CycleNotUndirected = Fi = z.s(C, "CycleNotUndirected", 13); var zi; C.CycleDestinationTree = zi = z.s(C, "CycleDestinationTree", 14); var Bi; C.CycleSourceTree = Bi = z.s(C, "CycleSourceTree", 15); var qk; C.DocumentScroll = qk = z.s(C, "DocumentScroll", 1); var tl; C.InfiniteScroll = tl = z.s(C, "InfiniteScroll", 2); var sk; C.TreeParentCollapsed = sk = z.s(C, "TreeParentCollapsed", 1); C.AllParentsCollapsed = z.s(C, "AllParentsCollapsed", 2); z.defineProperty(C, { CJ: "validCycle" }, function() { return this.yw }, function(a) { var b = this.yw; b !== a && (z.Ba(a, C, C, "validCycle"), this.yw = a, this.j("validCycle", b, a)) }); z.w(C, { mn: "layers" }, function() { return this.Yb.i }); z.defineProperty(C, { Ef: "isModelReadOnly" }, function() { var a = this.ie; return null === a ? !1 : a.jb }, function(a) { var b = this.ie; null !== b && (b.jb = a) }); z.defineProperty(C, { jb: "isReadOnly" }, function() { return this.Gi }, function(a) { var b = this.Gi; b !== a && (z.g(a, "boolean", C, "isReadOnly"), this.Gi = a, this.j("isReadOnly", b, a)) }); z.defineProperty(C, { isEnabled: "isEnabled" }, function() { return this.af }, function(a) { var b = this.af; b !== a && (z.g(a, "boolean", C, "isEnabled"), this.af = a, this.j("isEnabled", b, a)) }); z.defineProperty(C, { Az: "allowClipboard" }, function() { return this.Hu }, function(a) { var b = this.Hu; b !== a && (z.g(a, "boolean", C, "allowClipboard"), this.Hu = a, this.j("allowClipboard", b, a)) }); z.defineProperty(C, { kk: "allowCopy" }, function() { return this.Ak }, function(a) { var b = this.Ak; b !== a && (z.g(a, "boolean", C, "allowCopy"), this.Ak = a, this.j("allowCopy", b, a)) }); z.defineProperty(C, { Sm: "allowDelete" }, function() { return this.Bk }, function(a) { var b = this.Bk; b !== a && (z.g(a, "boolean", C, "allowDelete"), this.Bk = a, this.j("allowDelete", b, a)) }); z.defineProperty(C, { kt: "allowDragOut" }, function() { return this.Iu }, function(a) { var b = this.Iu; b !== a && (z.g(a, "boolean", C, "allowDragOut"), this.Iu = a, this.j("allowDragOut", b, a)) }); z.defineProperty(C, { FD: "allowDrop" }, function() { return this.Ju }, function(a) { var b = this.Ju; b !== a && (z.g(a, "boolean", C, "allowDrop"), this.Ju = a, this.j("allowDrop", b, a)) }); z.defineProperty(C, { Hw: "allowTextEdit" }, function() { return this.Kk }, function(a) { var b = this.Kk; b !== a && (z.g(a, "boolean", C, "allowTextEdit"), this.Kk = a, this.j("allowTextEdit", b, a)) }); z.defineProperty(C, { Ew: "allowGroup" }, function() { return this.Ck }, function(a) { var b = this.Ck; b !== a && (z.g(a, "boolean", C, "allowGroup"), this.Ck = a, this.j("allowGroup", b, a)) }); z.defineProperty(C, { Iw: "allowUngroup" }, function() { return this.Lk }, function(a) { var b = this.Lk; b !== a && (z.g(a, "boolean", C, "allowUngroup"), this.Lk = a, this.j("allowUngroup", b, a)) }); z.defineProperty(C, { ap: "allowInsert" }, function() { return this.Lu }, function(a) { var b = this.Lu; b !== a && (z.g(a, "boolean", C, "allowInsert"), this.Lu = a, this.j("allowInsert", b, a)) }); z.defineProperty(C, { lt: "allowLink" }, function() { return this.Dk }, function(a) { var b = this.Dk; b !== a && (z.g(a, "boolean", C, "allowLink"), this.Dk = a, this.j("allowLink", b, a)) }); z.defineProperty(C, { Tm: "allowRelink" }, function() { return this.Fk }, function(a) { var b = this.Fk; b !== a && (z.g(a, "boolean", C, "allowRelink"), this.Fk = a, this.j("allowRelink", b, a)) }); z.defineProperty(C, { ul: "allowMove" }, function() { return this.Ek }, function(a) { var b = this.Ek; b !== a && (z.g(a, "boolean", C, "allowMove"), this.Ek = a, this.j("allowMove", b, a)) }); z.defineProperty(C, { Fw: "allowReshape" }, function() { return this.Gk }, function(a) { var b = this.Gk; b !== a && (z.g(a, "boolean", C, "allowReshape"), this.Gk = a, this.j("allowReshape", b, a)) }); z.defineProperty(C, { mt: "allowResize" }, function() { return this.Hk }, function(a) { var b = this.Hk; b !== a && (z.g(a, "boolean", C, "allowResize"), this.Hk = a, this.j("allowResize", b, a)) }); z.defineProperty(C, { Gw: "allowRotate" }, function() { return this.Ik }, function(a) { var b = this.Ik; b !== a && (z.g(a, "boolean", C, "allowRotate"), this.Ik = a, this.j("allowRotate", b, a)) }); z.defineProperty(C, { xf: "allowSelect" }, function() { return this.Jk }, function(a) { var b = this.Jk; b !== a && (z.g(a, "boolean", C, "allowSelect"), this.Jk = a, this.j("allowSelect", b, a)) }); z.defineProperty(C, { GD: "allowUndo" }, function() { return this.Mu }, function(a) { var b = this.Mu; b !== a && (z.g(a, "boolean", C, "allowUndo"), this.Mu = a, this.j("allowUndo", b, a)) }); z.defineProperty(C, { Jw: "allowZoom" }, function() { return this.Ou }, function(a) { var b = this.Ou; b !== a && (z.g(a, "boolean", C, "allowZoom"), this.Ou = a, this.j("allowZoom", b, a)) }); z.defineProperty(C, { dA: "hasVerticalScrollbar" }, function() { return this.tv }, function(a) { var b = this.tv; b !== a && (z.g(a, "boolean", C, "hasVerticalScrollbar"), this.tv = a, Vk(this), this.ta(), this.j("hasVerticalScrollbar", b, a), Lk(this, !1)) }); z.defineProperty(C, { cA: "hasHorizontalScrollbar" }, function() { return this.sv }, function(a) { var b = this.sv; b !== a && (z.g(a, "boolean", C, "hasHorizontalScrollbar"), this.sv = a, Vk(this), this.ta(), this.j("hasHorizontalScrollbar", b, a), Lk(this, !1)) }); z.defineProperty(C, { xe: "allowHorizontalScroll" }, function() { return this.Ku }, function(a) { var b = this.Ku; b !== a && (z.g(a, "boolean", C, "allowHorizontalScroll"), this.Ku = a, this.j("allowHorizontalScroll", b, a), Lk(this, !1)) }); z.defineProperty(C, { ye: "allowVerticalScroll" }, function() { return this.Nu }, function(a) { var b = this.Nu; b !== a && (z.g(a, "boolean", C, "allowVerticalScroll"), this.Nu = a, this.j("allowVerticalScroll", b, a), Lk(this, !1)) }); z.defineProperty(C, { nu: "scrollHorizontalLineChange" }, function() { return this.hw }, function(a) { var b = this.hw; b !== a && (z.g(a, "number", C, "scrollHorizontalLineChange"), 0 > a && z.ka(a, ">= 0", C, "scrollHorizontalLineChange"), this.hw = a, this.j("scrollHorizontalLineChange", b, a)) }); z.defineProperty(C, { ou: "scrollVerticalLineChange" }, function() { return this.lw }, function(a) { var b = this.lw; b !== a && (z.g(a, "number", C, "scrollVerticalLineChange"), 0 > a && z.ka(a, ">= 0", C, "scrollVerticalLineChange"), this.lw = a, this.j("scrollVerticalLineChange", b, a)) }); z.defineProperty(C, { Q: "lastInput" }, function() { return this.Qb }, function(a) { u && z.l(a, Pf, C, "lastInput"); this.Qb = a }); z.defineProperty(C, { Fc: "firstInput" }, function() { return this.Ei }, function(a) { u && z.l(a, Pf, C, "firstInput"); this.Ei = a }); z.defineProperty(C, { gc: "currentCursor" }, function() { return this.av }, function(a) { "" === a && (a = this.Oq); this.av !== a && (z.g(a, "string", C, "currentCursor"), null !== this.Fb && (this.av = a, this.Fb.style.cursor = a, this.Pb.style.cursor = a)) }); z.defineProperty(C, { kK: "defaultCursor" }, function() { return this.Oq }, function(a) { "" === a && (a = "auto"); var b = this.Oq; b !== a && (z.g(a, "string", C, "defaultCursor"), this.Oq = a, this.j("defaultCursor", b, a)) }); z.defineProperty(C, { click: "click" }, function() { return this.ui }, function(a) { var b = this.ui; b !== a && (null !== a && z.g(a, "function", C, "click"), this.ui = a, this.j("click", b, a)) }); z.defineProperty(C, { wt: "doubleClick" }, function() { return this.Ci }, function(a) { var b = this.Ci; b !== a && (null !== a && z.g(a, "function", C, "doubleClick"), this.Ci = a, this.j("doubleClick", b, a)) }); z.defineProperty(C, { Gz: "contextClick" }, function() { return this.xi }, function(a) { var b = this.xi; b !== a && (null !== a && z.g(a, "function", C, "contextClick"), this.xi = a, this.j("contextClick", b, a)) }); z.defineProperty(C, { uA: "mouseOver" }, function() { return this.Pi }, function(a) { var b = this.Pi; b !== a && (null !== a && z.g(a, "function", C, "mouseOver"), this.Pi = a, this.j("mouseOver", b, a)) }); z.defineProperty(C, { tA: "mouseHover" }, function() { return this.Oi }, function(a) { var b = this.Oi; b !== a && (null !== a && z.g(a, "function", C, "mouseHover"), this.Oi = a, this.j("mouseHover", b, a)) }); z.defineProperty(C, { sA: "mouseHold" }, function() { return this.Ni }, function(a) { var b = this.Ni; b !== a && (null !== a && z.g(a, "function", C, "mouseHold"), this.Ni = a, this.j("mouseHold", b, a)) }); z.defineProperty(C, { KI: "mouseDragOver" }, function() { return this.Qv }, function(a) { var b = this.Qv; b !== a && (null !== a && z.g(a, "function", C, "mouseDragOver"), this.Qv = a, this.j("mouseDragOver", b, a)) }); z.defineProperty(C, { rA: "mouseDrop" }, function() { return this.Mi }, function(a) { var b = this.Mi; b !== a && (null !== a && z.g(a, "function", C, "mouseDrop"), this.Mi = a, this.j("mouseDrop", b, a)) }); z.defineProperty(C, { $A: "toolTip" }, function() { return this.Wi }, function(a) { var b = this.Wi; b !== a && (null !== a && z.l(a, da, C, "toolTip"), this.Wi = a, this.j("toolTip", b, a)) }); z.defineProperty(C, { contextMenu: "contextMenu" }, function() { return this.yi }, function(a) { var b = this.yi; b !== a && (null !== a && z.l(a, da, C, "contextMenu"), this.yi = a, this.j("contextMenu", b, a)) }); z.defineProperty(C, { wb: "commandHandler" }, function() { return this.qy }, function(a) { var b = this.qy; b !== a && (z.l(a, ra, C, "commandHandler"), null !== a.h && z.k("Cannot share CommandHandlers between Diagrams: " + a.toString()), null !== b && b.Sc(null), this.qy = a, a.Sc(this)) }); z.defineProperty(C, { hb: "toolManager" }, function() { return this.rz }, function(a) { var b = this.rz; b !== a && (z.l(a, dh, C, "toolManager"), null !== a.h && z.k("Cannot share ToolManagers between Diagrams: " + a.toString()), null !== b && b.Sc(null), this.rz = a, a.Sc(this)) }); z.defineProperty(C, { vt: "defaultTool" }, function() { return this.xy }, function(a) { var b = this.xy; b !== a && (z.l(a, ug, C, "defaultTool"), this.xy = a, this.eb === b && (this.eb = a)) }); z.defineProperty(C, { eb: "currentTool" }, function() { return this.vy }, function(a) { var b = this.vy; null !== b && (b.ua && b.doDeactivate(), b.cancelWaitAfter(), b.doStop()); null === a && (a = this.vt); null !== a && (z.l(a, ug, C, "currentTool"), this.vy = a, a.Sc(this), a.doStart()) }); z.w(C, { selection: "selection" }, function() { return this.ow }); z.defineProperty(C, { CI: "maxSelectionCount" }, function() { return this.Lv }, function(a) { var b = this.Lv; if (b !== a) if (z.g(a, "number", C, "maxSelectionCount"), 0 <= a && !isNaN(a)) { if (this.Lv = a, this.j("maxSelectionCount", b, a), !this.pa.qb && (a = this.selection.count - a, 0 < a)) { this.Ja("ChangingSelection"); for (var b = this.selection.jc(), c = 0; c < a; c++) b[c].kb = !1; this.Ja("ChangedSelection") } } else z.ka(a, ">= 0", C, "maxSelectionCount") }); z.defineProperty(C, { MI: "nodeSelectionAdornmentTemplate" }, function() { return this.Rv }, function(a) { var b = this.Rv; b !== a && (z.l(a, da, C, "nodeSelectionAdornmentTemplate"), this.Rv = a, this.j("nodeSelectionAdornmentTemplate", b, a)) }); z.defineProperty(C, { TH: "groupSelectionAdornmentTemplate" }, function() { return this.pv }, function(a) { var b = this.pv; b !== a && (z.l(a, da, C, "groupSelectionAdornmentTemplate"), this.pv = a, this.j("groupSelectionAdornmentTemplate", b, a)) }); z.defineProperty(C, { wI: "linkSelectionAdornmentTemplate" }, function() { return this.Hv }, function(a) { var b = this.Hv; b !== a && (z.l(a, da, C, "linkSelectionAdornmentTemplate"), this.Hv = a, this.j("linkSelectionAdornmentTemplate", b, a)) }); z.w(C, { hn: "highlighteds" }, function() { return this.uv }); z.defineProperty(C, { mi: "isModified" }, function() { var a = this.pa; return a.isEnabled ? null !== a.dj ? !0 : this.Uy && this.bh !== a.ij : this.Uy }, function(a) { if (this.Uy !== a) { z.g(a, "boolean", C, "isModified"); this.Uy = a; var b = this.pa; !a && b.isEnabled && (this.bh = b.ij); a || Hl(this) } }); function Hl(a) { var b = a.mi; a.xD !== b && (a.xD = b, a.Ja("Modified")) } z.defineProperty(C, { ha: "model" }, function() { return this.ie }, function(a) { var b = this.ie; if (b !== a) { z.l(a, M, C, "model"); this.eb.doCancel(); null !== b && b.pa !== a.pa && b.pa.QE && z.k("Do not replace a Diagram.model while a transaction is in progress."); this.Ua.oi(); this.Mw(); this.eh = !1; this.io = !0; this.bh = -2; this.Vf = !1; var c = this.Vd; this.Vd = !0; this.Ua.sn("Model"); null !== b && (null !== this.gh && this.gh.each(function(a) { b.iu(a) }), b.iu(this.FC), b instanceof V && Il(this, b.Jg), Il(this, b.gg)); this.ie = a; a.Rm(this.EC); Jl(this, a.gg); a instanceof V && Kl(this, a.Jg); a.iu(this.EC); a.Rm(this.FC); null !== this.gh && this.gh.each(function(b) { a.Rm(b) }); this.Vd = c; this.Vc || this.ta(); null !== b && (a.pa.isEnabled = b.pa.isEnabled) } }); z.defineProperty(C, { $a: null }, function() { return this.xC }, function(a) { this.xC = a }); z.w(C, { qx: null }, function() { return this.rG }); function uk(a, b) { if (b.ha === a.ha) { var c = b.Dc, d = b.propertyName; if (c === Tf && "S" === d[0]) if ("StartingFirstTransaction" === d) c = a.hb, c.Ye.each(function(b) { b.Sc(a) }), c.dg.each(function(b) { b.Sc(a) }), c.eg.each(function(b) { b.Sc(a) }), a.Vd || a.eh || (a.gv = !0, a.io && (a.Vf = !0)); else if ("StartingUndo" === d || "StartingRedo" === d) { var e = a.Ua; e.nf && !a.Bb && e.oi(); a.Ja("ChangingSelection") } else "StartedTransaction" === d && (e = a.Ua, e.nf && !a.Bb && e.oi()); else if (a.$a) { a.$a = !1; try { var g = b.rf; if ("" !== g) if (c === Sf) { if ("linkFromKey" === g) { var h = b.object, k = a.Zf(h); if (null !== k) { var l = b.newValue, m = a.hf(l); k.Y = m } } else if ("linkToKey" === g) h = b.object, k = a.Zf(h), null !== k && (l = b.newValue, m = a.hf(l), k.da = m); else if ("linkFromPortId" === g) { if (h = b.object, k = a.Zf(h), null !== k) { var n = b.newValue; "string" === typeof n && (k.$f = n) } } else if ("linkToPortId" === g) h = b.object, k = a.Zf(h), null !== k && (n = b.newValue, "string" === typeof n && (k.Ug = n)); else if ("nodeGroupKey" === g) { var h = b.object, p = a.uh(h); if (null !== p) { var q = b.newValue; if (void 0 !== q) { var r = a.hf(q); p.Va = r instanceof F ? r : null } else p.Va = null } } else if ("linkLabelKeys" === g) { if (h = b.object, k = a.Zf(h), null !== k) { var s = b.oldValue, t = b.newValue; if (z.isArray(s)) for (var v = z.bb(s), x = 0; x < v; x++) { var y = z.Ya(s, x), m = a.hf(y); null !== m && (m.Nd = null) } if (z.isArray(t)) for (v = z.bb(t), x = 0; x < v; x++) y = z.Ya(t, x), m = a.hf(y), null !== m && (m.Nd = k) } } else if ("nodeParentKey" === g) { var A = b.object, B = a.hf(b.newValue), L = a.Zw(A); if (null !== L) { var H = L.pp(); null !== H ? null === B ? a.remove(H) : a.ce ? H.Y = B : H.da = B : Ll(a, B, L) } } else if ("parentLinkCategory" === g) { var A = b.object, L = a.Zw(A), U = b.newValue; null !== L && "string" === typeof U && (H = L.pp(), null !== H && (H.nc = U)) } else if ("nodeCategory" === g) { var h = b.object, ea = a.uh(h), U = b.newValue; null !== ea && "string" === typeof U && (ea.nc = U) } else if ("linkCategory" === g) { var h = b.object, W = a.Zf(h), U = b.newValue; null !== W && "string" === typeof U && (W.nc = U) } else if ("nodeDataArray" === g) { var P = b.oldValue; Il(a, P); var ba = b.newValue; Jl(a, ba) } else "linkDataArray" === g && (P = b.oldValue, Il(a, P), ba = b.newValue, Kl(a, ba)); a.mi = !0 } else c === Uf ? (ba = b.newValue, "nodeDataArray" === g && z.Za(ba) ? Ml(a, ba) : "linkDataArray" === g && z.Za(ba) ? Nl(a, ba) : "linkLabelKeys" === g && yg(ba) && (k = a.Zf(b.object), m = a.hf(ba), null !== k && null !== m && (m.Nd = k)), a.mi = !0) : c === Vf ? (P = b.oldValue, "nodeDataArray" === g && z.Za(P) ? Ol(a, P) : "linkDataArray" === g && z.Za(P) ? Ol(a, P) : "linkLabelKeys" === g && yg(P) && (m = a.hf(P), null !== m && (m.Nd = null)), a.mi = !0) : c === Tf && ("SourceChanged" === g ? null !== b.object ? tk(a, b.object, b.propertyName) : (a.BJ(), a.eG()) : "ModelDisplaced" === g && a.Sl()); else if (c === Sf) { var Oa = b.propertyName, h = b.object; if (h === a.ha) { if ("nodeKeyProperty" === Oa || "nodeCategoryProperty" === Oa || "linkFromKeyProperty" === Oa || "linkToKeyProperty" === Oa || "linkFromPortIdProperty" === Oa || "linkToPortIdProperty" === Oa || "linkLabelKeysProperty" === Oa || "nodeIsGroupProperty" === Oa || "nodeGroupKeyProperty" === Oa || "nodeParentKeyProperty" === Oa || "linkCategoryProperty" === Oa) a.pa.qb || a.Sl() } else tk(a, h, Oa); a.mi = !0 } else if (c === Uf || c === Vf) Pl(a, b), a.mi = !0; else if (c === Tf) { if ("FinishedUndo" === d || "FinishedRedo" === d) a.pa.Hi = !0, a.Ja("ChangedSelection"), Jk(a), a.pa.Hi = !1; e = a.Ua; "RolledBackTransaction" === d && e.oi(); a.gv = !0; a.bg(); 0 === a.pa.Gh && Sj(e); "CommittedTransaction" === d && a.pa.Wy && (a.bh = Math.min(a.bh, a.pa.ij - 1)); var sa = b.TE; sa && (Hl(a), a.qx.clear()); !a.cz && sa && (a.cz = !0, z.setTimeout(function() { a.eb.standardMouseOver(); a.cz = !1 }, 10)) } } finally { a.$a = !0 } } } } function tk(a, b, c) { if ("string" === typeof c) { var d = a.uh(b); if (null !== d) d.Mb(c), a.ha instanceof ng && (d = a.Zf(b), null !== d && d.Mb(c)); else { for (var d = null, e = a.nm.i; e.next();) { for (var g = e.value, h = 0; h < g.length; h++) { var k = g[h].EH(b); null !== k && (null === d && (d = z.rb()), d.push(k)) } if (null !== d) break } if (null !== d) { for (e = 0; e < d.length; e++) d[e].Mb(c); z.xa(d) } } b === a.ha.tk && a.eG(c) } } z.defineProperty(C, { Ee: "skipsModelSourceBindings" }, function() { return this.$C }, function(a) { this.$C = a }); z.defineProperty(C, { vu: null }, function() { return this.lz }, function(a) { this.lz = a }); function Pl(a, b) { var c = b.Dc === Uf, d = c ? b.Kg : b.Mg, e = c ? b.newValue : b.oldValue, g = a.nm.na(b.object); if (Array.isArray(g)) for (var h = 0; h < g.length; h++) { var k = g[h]; if (c) Ql(k, e, d); else { var l = d; if (!(0 > l)) { var m = l; Rl(k) && m++; k.Ve(m); Sl(k, m, l) } } } } function yl(a, b) { var c = b.Ii; if (z.isArray(c)) { var d = a.nm.na(c); if (null === d) d = [], d.push(b), a.nm.add(c, d); else { for (c = 0; c < d.length; c++) if (d[c] === b) return; d.push(b) } } } function Cl(a, b) { var c = b.Ii; if (z.isArray(c)) { var d = a.nm.na(c); if (null !== d) for (var e = 0; e < d.length; e++) if (d[e] === b) { d.splice(e, 1); 0 === d.length && a.nm.remove(c); break } } } function xl(a, b) { for (var c = b.va.o, d = c.length, e = 0; e < d; e++) { var g = c[e]; g instanceof vk && Tl(a, g) } } function Tl(a, b) { var c = b.element; if (null !== c && c instanceof HTMLImageElement) { var c = c.src, d = a.Go.na(c); if (null === d) d = [], d.push(b), a.Go.add(c, d); else { for (c = 0; c < d.length; c++) if (d[c] === b) return; d.push(b) } } } function Bl(a, b) { for (var c = b.va.o, d = c.length, e = 0; e < d; e++) { var g = c[e]; g instanceof vk && Ul(a, g) } } function Ul(a, b) { var c = b.element; if (null !== c && c instanceof HTMLImageElement) { var c = c.src, d = a.Go.na(c); if (null !== d) for (var e = 0; e < d.length; e++) if (d[e] === b) { d.splice(e, 1); 0 === d.length && a.Go.remove(c); break } } } C.prototype.clear = C.prototype.clear = function() { var a = null; null !== this.td && (a = this.td.ca); this.ha.clear(); for (var b = this.Yb.length, c = 0; c < b; c++) this.Yb.o[c].clear(); this.qg.clear(); this.Rk.clear(); this.Fo.clear(); this.ol.clear(); this.zo.clear(); this.mb.clear(); this.zi.clear(); this.Qk.clear(); this.nm.clear(); this.ow.Wa(); this.ow.clear(); this.ow.freeze(); this.uv.Wa(); this.uv.clear(); this.uv.freeze(); bh = this.Sn = null; ch = ""; this.hv = (new w(NaN, NaN, NaN, NaN)).freeze(); null !== a && (this.add(a), this.mb.remove(a)); this.ta() }; C.prototype.reset = C.prototype.reset = function() { this.Vc = !0; this.clear(); this.Yb = new J(tg); this.rF(); this.qF(); this.sb = (new N(NaN, NaN)).freeze(); this.bc = 1; this.wv = (new N(NaN, NaN)).freeze(); this.xv = NaN; this.Nv = 1E-4; this.Kv = 100; this.Bw = (new N(NaN, NaN)).freeze(); this.nv = (new w(NaN, NaN, NaN, NaN)).freeze(); this.iw = (new Db(0, 0, 0, 0)).freeze(); this.jw = qk; this.fw = this.bw = null; this.dm = jh; this.Pn = Pc; this.Xk = jh; this.no = Pc; this.yv = this.vv = Zb; this.tB = 250; this.Su = (new Db(16, 16, 16, 16)).freeze(); this.Cv = !0; this.ww = sk; this.yw = yi; this.Oq = "auto"; this.yi = this.Wi = this.Mi = this.Qv = this.Ni = this.Oi = this.Pi = this.xi = this.Ci = this.ui = null; this.Gi = !1; this.Bk = this.Ak = this.Hu = this.af = !0; this.Ju = this.Iu = !1; this.Nu = this.Ku = this.tv = this.sv = this.Ou = this.Mu = this.Jk = this.Ik = this.Hk = this.Gk = this.Ek = this.Fk = this.Dk = this.Lu = this.Lk = this.Ck = this.Kk = !0; this.lw = this.hw = 16; this.df = (new Db(5)).freeze(); this.Lv = 999999999; this.he = null; zk(this); this.td = null; this.hb = new dh; this.hb.initializeStandardTools(); this.eb = this.vt = this.hb; this.wb = new ra; this.Vi = !0; yk(this); this.Sb = new vg; this.Vi = !1; this.ha = new V; this.eh = !1; this.io = !0; this.Vc = this.Vf = !1; this.ta(); this.gh = this.ti = null; rk(this); this.av = "" }; C.prototype.rebuildParts = C.prototype.Sl = function() { for (var a = this.zA.i; a.next();) { var b = a.value, c = a.key; (!b.be() || b instanceof F) && z.k('Invalid node template in Diagram.nodeTemplateMap: template for "' + c + '" must be a Node or a simple Part, not a Group or Link: ' + b) } for (a = this.bA.i; a.next();) b = a.value, c = a.key, b instanceof F || z.k('Invalid group template in Diagram.groupTemplateMap: template for "' + c + '" must be a Group, not a normal Node or Link: ' + b); for (a = this.lA.i; a.next();) b = a.value, c = a.key, b instanceof G || z.k('Invalid link template in Diagram.linkTemplateMap: template for "' + c + '" must be a Link, not a normal Node or simple Part: ' + b); a = z.rb(); for (b = this.selection.i; b.next();)(c = b.value.data) && a.push(c); for (var b = z.rb(), d = this.hn.i; d.next();)(c = d.value.data) && b.push(c); c = z.rb(); for (d = this.Lg.i; d.next();) { var e = d.value; null !== e.data && (c.push(e.data), c.push(e.location)) } for (d = this.links.i; d.next();) e = d.value, null !== e.data && (c.push(e.data), c.push(e.location)); for (d = this.ni.i; d.next();) e = d.value, null !== e.data && (c.push(e.data), c.push(e.location)); d = this.ha; d instanceof V && Il(this, d.Jg); Il(this, d.gg); Jl(this, d.gg); d instanceof V && Kl(this, d.Jg); for (d = 0; d < a.length; d++) e = this.uh(a[d]), null !== e && (e.kb = !0); for (d = 0; d < b.length; d++) e = this.uh(b[d]), null !== e && (e.wh = !0); for (d = 0; d < c.length; d += 2) e = this.uh(c[d]), null !== e && (e.location = c[d + 1]); z.xa(a); z.xa(b); z.xa(c) }; function Jl(a, b) { if (null !== b) { for (var c = a.ha, d = z.bb(b), e = 0; e < d; e++) { var g = z.Ya(b, e); c.le(g) ? Ml(a, g, !1) : c instanceof V && Nl(a, g) } if (c instanceof V || c instanceof ng) { for (e = 0; e < d; e++) g = z.Ya(b, e), c.le(g) && Vl(a, g); if (c instanceof V) for (c = a.links; c.next();) Wl(c.value) } Xl(a, !1) } } function Ml(a, b, c) { if (void 0 !== b && null !== b && !a.pa.qb && !a.zi.contains(b)) { void 0 === c && (c = !0); var d = a.$z(b), e = Yl(a, b, d); if (null !== e && (gh(e), e = e.copy(), null !== e)) { var g = a.Ee; a.Ee = !0; e.si = d; e.fe = b; a.add(e); e.fe = null; e.data = b; c && Vl(a, b); a.Ee = g } } } C.prototype.$z = function(a) { return this.ha.$z(a) }; var Zl = !1, $l = !1; function Yl(a, b, c) { var d = !1, e = a.ha; e instanceof V && (d = e.hA(b)); d ? (b = a.bA.na(c), null === b && (b = a.bA.na(""), null === b && ($l || ($l = !0, z.trace('No Group template found for category "' + c + '"'), z.trace(" Using default group template")), b = a.OB))) : (b = a.zA.na(c), null === b && (b = a.zA.na(""), null === b && (Zl || (Zl = !0, z.trace('No Node template found for category "' + c + '"'), z.trace(" Using default node template")), b = a.QB))); return b } function Vl(a, b) { var c = a.ha; if (c instanceof V || c instanceof ng) { var d = c.pb(b); if (void 0 !== d) { var e = Bg(c, d), g = a.uh(b); if (null !== e && null !== g) { for (e = e.i; e.next();) { var h = e.value; if (c instanceof V) { var k = c; if (k.le(h)) { if (g instanceof F && k.fn(h) === d) { var l = g, h = a.uh(h); null !== h && (h.Va = l) } } else { var m = a.Zf(h); if (null !== m && g instanceof E && (l = g, k.Ll(h) === d && (m.Y = l), k.Ml(h) === d && (m.da = l), h = k.qk(h), z.isArray(h))) for (k = 0; k < z.bb(h); k++) if (z.Ya(h, k) === d) { l.Nd = m; break } } } else c instanceof ng && (m = c, m.le(h) && g instanceof E && (l = g, m.gn(h) === d && (h = a.Zw(h), Ll(a, l, h)))) } Dg(c, d) } c instanceof V ? (c = c.fn(b), void 0 !== c && (c = a.hf(c), c instanceof F && (g.Va = c))) : c instanceof ng && (c = c.gn(b), void 0 !== c && g instanceof E && (l = g, g = a.hf(c), Ll(a, g, l))) } } } function Ll(a, b, c) { if (null !== b && null !== c) { var d = a.hb.ZE, e = b, g = c; if (a.ce) for (b = g.ee; b.next();) { if (b.value.da === g) return } else for (e = c, g = b, b = e.ee; b.next();) if (b.value.Y === e) return; if (null === d || !Ai(d, e, g, null, !0)) if (d = a.ax(c.data), b = am(a, d), null !== b && (gh(b), b = b.copy(), null !== b)) { var h = a.Ee; a.Ee = !0; b.si = d; b.fe = c.data; b.Y = e; b.da = g; a.add(b); b.fe = null; b.data = c.data; a.Ee = h } } } function Kl(a, b) { if (null !== b) { for (var c = z.bb(b), d = 0; d < c; d++) { var e = z.Ya(b, d); Nl(a, e) } Xl(a, !1) } } function Nl(a, b) { if (void 0 !== b && null !== b && !a.pa.qb && !a.Qk.contains(b)) { var c = a.ax(b), d = am(a, c); if (null !== d && (gh(d), d = d.copy(), null !== d)) { var e = a.Ee; a.Ee = !0; d.si = c; d.fe = b; var c = a.ha, g = c.MH(b); "" !== g && (d.$f = g); g = c.Ll(b); void 0 !== g && (g = a.hf(g), g instanceof E && (d.Y = g)); g = c.PH(b); "" !== g && (d.Ug = g); g = c.Ml(b); void 0 !== g && (g = a.hf(g), g instanceof E && (d.da = g)); c = c.qk(b); if (z.isArray(c)) for (var g = z.bb(c), h = 0; h < g; h++) { var k = z.Ya(c, h), k = a.hf(k); null !== k && (k.Nd = d) } a.add(d); d.fe = null; d.data = b; a.Ee = e } } } C.prototype.ax = function(a) { var b = this.ha, c = ""; b instanceof V ? c = b.ax(a) : b instanceof ng && (c = b.OH(a)); return c }; var bm = !1; function am(a, b) { var c = a.lA.na(b); null === c && (c = a.lA.na(""), null === c && (bm || (bm = !0, z.trace('No Link template found for category "' + b + '"'), z.trace(" Using default link template")), c = a.PB)); return c } function Il(a, b) { for (var c = z.bb(b), d = 0; d < c; d++) { var e = z.Ya(b, d); Ol(a, e) } } function Ol(a, b) { if (void 0 !== b && null !== b) { var c = a.uh(b); if (null !== c) { c.kb = !1; c.wh = !1; var d = c.layer; if (null !== d && d.h === a) { var e = a.ha; if (e instanceof V && c instanceof E) { var g = c, h = e.pb(g.data); if (void 0 !== h) { for (var k = g.ee; k.next();) Cg(e, h, k.value.data); g.Df && (k = g.Nd, null !== k && Cg(e, h, k.data)); if (g instanceof F) for (g = g.Hc; g.next();) k = g.value.data, e.le(k) && Cg(e, h, k) } } else if (e instanceof ng && c instanceof E) { g = c; k = a.Zf(g.data); if (null !== k) { k.kb = !1; k.wh = !1; var l = k.layer; if (null !== l) { var m = l.Ve(-1, k, !1); 0 <= m && a.Rc(Vf, "parts", l, k, null, m, null); m = k.Ut; null !== m && m(k, l, null) } } k = a.ce; for (g = g.ee; g.next();) l = g.value, l = (k ? l.da : l.Y).data, e.le(l) && Cg(e, h, l) } e = d.Ve(-1, c, !1); 0 <= e && a.Rc(Vf, "parts", d, c, null, e, null); e = c.Ut; null !== e && e(c, d, null) } } } } C.prototype.findPartForKey = C.prototype.HH = function(a) { if (null === a || void 0 === a) return null; a = this.ha.ne(a); return null === a ? null : this.zi.na(a) }; C.prototype.findNodeForKey = C.prototype.hf = function(a) { if (null === a || void 0 === a) return null; a = this.ha.ne(a); if (null === a) return null; a = this.zi.na(a); return a instanceof E ? a : null }; C.prototype.findPartForData = C.prototype.uh = function(a) { if (null === a) return null; var b = this.zi.na(a); return null !== b ? b : b = this.Qk.na(a) }; C.prototype.findNodeForData = C.prototype.Zw = function(a) { if (null === a) return null; a = this.zi.na(a); return a instanceof E ? a : null }; C.prototype.findLinkForData = C.prototype.Zf = function(a) { return null === a ? null : this.Qk.na(a) }; C.prototype.findNodesByExample = function(a) { for (var b = new K, c = this.Fo.i; c.next();) { var d = c.value, e = d.data; if (null !== e) for (var g = 0; g < arguments.length; g++) { var h = arguments[g]; if (z.Za(h) && cm(this, e, h)) { b.add(d); break } } } return b.i }; C.prototype.findLinksByExample = function(a) { for (var b = new K, c = this.zo.i; c.next();) { var d = c.value, e = d.data; if (null !== e) for (var g = 0; g < arguments.length; g++) { var h = arguments[g]; if (z.Za(h) && cm(this, e, h)) { b.add(d); break } } } return b.i }; function cm(a, b, c) { for (var d in c) { var e = b[d], g = c[d]; if (z.isArray(g)) { if (!z.isArray(e) || e.length < g.length) return !1; for (var h = 0; h < e.length; h++) { var k = e[h], l = g[h]; if (void 0 !== l && !dm(a, k, l)) return !1 } } else if (!dm(a, e, g)) return !1 } return !0 } function dm(a, b, c) { if ("function" === typeof c) { if (!c(b)) return !1 } else if (c instanceof RegExp) { if (!b || !c.test(b.toString())) return !1 } else if (z.Za(b) && z.Za(c)) { if (!cm(a, b, c)) return !1 } else if (b !== c) return !1; return !0 } z.defineProperty(C, { ZK: "nodeTemplate" }, function() { return this.Qi.na("") }, function(a) { var b = this.Qi.na(""); b !== a && (z.l(a, D, C, "nodeTemplate"), this.Qi.add("", a), this.j("nodeTemplate", b, a), this.pa.qb || this.Sl()) }); z.defineProperty(C, { zA: "nodeTemplateMap" }, function() { return this.Qi }, function(a) { var b = this.Qi; b !== a && (z.l(a, na, C, "nodeTemplateMap"), this.Qi = a, this.j("nodeTemplateMap", b, a), this.pa.qb || this.Sl()) }); z.defineProperty(C, { BK: "groupTemplate" }, function() { return this.Tk.na("") }, function(a) { var b = this.Tk.na(""); b !== a && (z.l(a, F, C, "groupTemplate"), this.Tk.add("", a), this.j("groupTemplate", b, a), this.pa.qb || this.Sl()) }); z.defineProperty(C, { bA: "groupTemplateMap" }, function() { return this.Tk }, function(a) { var b = this.Tk; b !== a && (z.l(a, na, C, "groupTemplateMap"), this.Tk = a, this.j("groupTemplateMap", b, a), this.pa.qb || this.Sl()) }); z.defineProperty(C, { NK: "linkTemplate" }, function() { return this.Oj.na("") }, function(a) { var b = this.Oj.na(""); b !== a && (z.l(a, G, C, "linkTemplate"), this.Oj.add("", a), this.j("linkTemplate", b, a), this.pa.qb || this.Sl()) }); z.defineProperty(C, { lA: "linkTemplateMap" }, function() { return this.Oj }, function(a) { var b = this.Oj; b !== a && (z.l(a, na, C, "linkTemplateMap"), this.Oj = a, this.j("linkTemplateMap", b, a), this.pa.qb || this.Sl()) }); z.defineProperty(C, { hI: null }, function() { return this.km }, function(a) { this.km = a }); z.defineProperty(C, { We: "isMouseCaptured" }, function() { return this.uC }, function(a) { var b = this.Fb; null !== b && (a ? (this.Q.bubbles = !1, b.removeEventListener("mousemove", this.Kp, !1), b.removeEventListener("mousedown", this.Jp, !1), b.removeEventListener("mouseup", this.Mp, !1), b.removeEventListener("mousewheel", this.zh, !1), b.removeEventListener("DOMMouseScroll", this.zh, !1), b.removeEventListener("mouseout", this.Lp, !1), window.addEventListener("mousemove", this.Kp, !0), window.addEventListener("mousedown", this.Jp, !0), window.addEventListener("mouseup", this.Mp, !0), window.addEventListener("mousewheel", this.zh, !0), window.addEventListener("DOMMouseScroll", this.zh, !0), window.addEventListener("mouseout", this.Lp, !0), window.addEventListener("selectstart", this.preventDefault, !1)) : (window.removeEventListener("mousemove", this.Kp, !0), window.removeEventListener("mousedown", this.Jp, !0), window.removeEventListener("mouseup", this.Mp, !0), window.removeEventListener("mousewheel", this.zh, !0), window.removeEventListener("DOMMouseScroll", this.zh, !0), window.removeEventListener("mouseout", this.Lp, !0), window.removeEventListener("selectstart", this.preventDefault, !1), b.addEventListener("mousemove", this.Kp, !1), b.addEventListener("mousedown", this.Jp, !1), b.addEventListener("mouseup", this.Mp, !1), b.addEventListener("mousewheel", this.zh, !1), b.addEventListener("DOMMouseScroll", this.zh, !1), b.addEventListener("mouseout", this.Lp, !1)), this.uC = a) }); z.defineProperty(C, { position: "position" }, function() { return this.sb }, function(a) { var b = this.sb; if (!b.N(a)) { z.l(a, N, C, "position"); var c = this.xb.copy(); a = a.copy(); if (!this.Vc && null !== this.Fb) { this.Vc = !0; var d = this.scale; Nk(this, a, this.ad, this.Jb / d, this.Ob / d, this.Pn, !1); this.Vc = !1 } this.sb = a.V(); a = this.Ua; a.wc && fk(a, b, this.sb); this.Vc || this.fu(c, this.xb) } }); z.defineProperty(C, { ZH: "initialPosition" }, function() { return this.wv }, function(a) { this.wv.N(a) || (z.l(a, N, C, "initialPosition"), this.wv = a.V()) }); z.defineProperty(C, { $H: "initialScale" }, function() { return this.xv }, function(a) { this.xv !== a && (z.g(a, "number", C, "initialScale"), this.xv = a) }); z.defineProperty(C, { Gt: "grid" }, function() { null === this.td && Fk(this); return this.td }, function(a) { var b = this.td; if (b !== a) { null === b && (Fk(this), b = this.td); z.l(a, I, C, "grid"); a.type !== Gk && z.k("Diagram.grid must be a Panel of type Panel.Grid"); var c = b.U; null !== c && c.remove(b); this.td = a; a.name = "GRID"; null !== c && c.add(a); hl(this); this.ta(); this.j("grid", b, a) } }); z.w(C, { xb: "viewportBounds" }, function() { var a = this.wD; if (null === this.Fb) return a; var b = this.sb, c = this.bc; a.n(b.x, b.y, Math.max(this.Jb, 0) / c, Math.max(this.Ob, 0) / c); return a }); z.defineProperty(C, { uE: "fixedBounds" }, function() { return this.nv }, function(a) { var b = this.nv; b.N(a) || (z.l(a, w, C, "fixedBounds"), (u && Infinity === a.width || -Infinity === a.width || Infinity === a.height || -Infinity === a.height) && z.k("fixedBounds width/height must not be Infinity"), this.nv = a = a.V(), this.yc(), this.j("fixedBounds", b, a)) }); z.defineProperty(C, { BF: "scrollMargin" }, function() { return this.iw }, function(a) { "number" === typeof a ? a = new Db(a) : z.l(a, Db, C, "scrollMargin"); var b = this.iw; b.N(a) || (this.iw = a = a.V(), this.yc(), this.j("scrollMargin", b, a)) }); z.defineProperty(C, { MA: "scrollMode" }, function() { return this.jw }, function(a) { var b = this.jw; b !== a && (z.Ba(a, C, C, "scrollMode"), this.jw = a, a === qk && Lk(this, !1), this.j("scrollMode", b, a)) }); z.defineProperty(C, { jF: "positionComputation" }, function() { return this.bw }, function(a) { var b = this.bw; b !== a && (null !== a && z.g(a, "function", C, "positionComputation"), this.bw = a, Lk(this, !1), this.j("positionComputation", b, a)) }); z.defineProperty(C, { AF: "scaleComputation" }, function() { return this.fw }, function(a) { var b = this.fw; b !== a && (null !== a && z.g(a, "function", C, "scaleComputation"), this.fw = a, Fl(this, this.scale, this.scale), this.j("scaleComputation", b, a)) }); z.w(C, { ad: "documentBounds" }, function() { return this.hv }); function Ok(a, b) { a.Ij = !1; var c = a.hv; c.N(b) || (b = b.V(), a.hv = b, Lk(a, !1), a.Ja("DocumentBoundsChanged", null, c.copy()), Vk(a)) } z.defineProperty(C, { scale: "scale" }, function() { return this.bc }, function(a) { var b = this.bc; z.p(a, C, "scale"); b !== a && Fl(this, b, a) }); z.defineProperty(C, { wl: "autoScale" }, function() { return this.dm }, function(a) { var b = this.dm; b !== a && (z.Ba(a, C, C, "autoScale"), this.dm = a, this.j("autoScale", b, a), a !== jh && Lk(this, !1)) }); z.defineProperty(C, { DK: "initialAutoScale" }, function() { return this.Xk }, function(a) { var b = this.Xk; b !== a && (z.Ba(a, C, C, "initialAutoScale"), this.Xk = a, this.j("initialAutoScale", b, a)) }); z.defineProperty(C, { aI: "initialViewportSpot" }, function() { return this.yv }, function(a) { var b = this.yv; b !== a && (z.l(a, Q, C, "initialViewportSpot"), a.cd() || z.k("initialViewportSpot must be a specific Spot: " + a), this.yv = a, this.j("initialViewportSpot", b, a)) }); z.defineProperty(C, { YH: "initialDocumentSpot" }, function() { return this.vv }, function(a) { var b = this.vv; b !== a && (z.l(a, Q, C, "initialDocumentSpot"), a.cd() || z.k("initialViewportSpot must be a specific Spot: " + a), this.vv = a, this.j("initialDocumentSpot", b, a)) }); z.defineProperty(C, { yh: "minScale" }, function() { return this.Nv }, function(a) { z.p(a, C, "minScale"); var b = this.Nv; b !== a && (0 < a ? (this.Nv = a, this.j("minScale", b, a), a > this.scale && (this.scale = a)) : z.ka(a, "> 0", C, "minScale")) }); z.defineProperty(C, { xh: "maxScale" }, function() { return this.Kv }, function(a) { z.p(a, C, "maxScale"); var b = this.Kv; b !== a && (0 < a ? (this.Kv = a, this.j("maxScale", b, a), a < this.scale && (this.scale = a)) : z.ka(a, "> 0", C, "maxScale")) }); z.defineProperty(C, { $l: "zoomPoint" }, function() { return this.Bw }, function(a) { this.Bw.N(a) || (z.l(a, N, C, "zoomPoint"), this.Bw = a = a.V()) }); z.defineProperty(C, { XD: "contentAlignment" }, function() { return this.Pn }, function(a) { var b = this.Pn; b.N(a) || (z.l(a, Q, C, "contentAlignment"), this.Pn = a = a.V(), this.j("contentAlignment", b, a), Lk(this, !1)) }); z.defineProperty(C, { EK: "initialContentAlignment" }, function() { return this.no }, function(a) { var b = this.no; b.N(a) || (z.l(a, Q, C, "initialContentAlignment"), this.no = a = a.V(), this.j("initialContentAlignment", b, a)) }); z.defineProperty(C, { padding: "padding" }, function() { return this.df }, function(a) { "number" === typeof a ? a = new Db(a) : z.l(a, Db, C, "padding"); var b = this.df; b.N(a) || (this.df = a = a.V(), this.yc(), this.j("padding", b, a)) }); z.w(C, { Lg: "nodes" }, function() { return this.Fo.i }); z.w(C, { links: "links" }, function() { return this.zo.i }); z.w(C, { ni: "parts" }, function() { return this.mb.i }); C.prototype.findTopLevelNodesAndLinks = function() { for (var a = new K(D), b = this.Fo.i; b.next();) { var c = b.value; c.Bp && a.add(c) } for (b = this.zo.i; b.next();) c = b.value, c.Bp && a.add(c); return a.i }; C.prototype.findTopLevelGroups = function() { return this.ol.i }; z.defineProperty(C, { Sb: "layout" }, function() { return this.he }, function(a) { var b = this.he; b !== a && (z.l(a, vg, C, "layout"), null !== b && (b.h = null, b.group = null), this.he = a, a.h = this, a.group = null, this.Qu = !0, this.j("layout", b, a), this.Ce()) }); C.prototype.layoutDiagram = function(a) { Jk(this); a && Xl(this, !0); il(this, !1) }; function Xl(a, b) { for (var c = a.ol.i; c.next();) em(a, c.value, b); null !== a.Sb && (b ? a.Sb.Gf = !1 : a.Sb.I()) } function em(a, b, c) { if (null !== b) { for (var d = b.wm.i; d.next();) em(a, d.value, c); null !== b.Sb && (c ? b.Sb.Gf = !1 : b.Sb.I()) } } function il(a, b) { if (!a.yy) { var c = a.Sb, d = a.$a; a.$a = !0; try { a.Wb("Layout"); var e = a.Ua; 1 !== a.pa.Gh || e.nf || e.wc || e.sn("Layout"); for (var g = a.ol.i; g.next();) fm(a, g.value, b); c.Gf || b && !c.SE && 1 !== a.pa.Gh || (c.doLayout(a), Jk(a), c.Gf = !0) } finally { a.Jd("Layout"), a.Qu = !c.Gf, a.$a = d } } } function fm(a, b, c) { if (null !== b) { for (var d = b.wm.i; d.next();) fm(a, d.value, c); d = b.Sb; null === d || d.Gf || c && !d.SE || (b.dz = !b.location.F(), d.doLayout(b), b.I(gm), d.Gf = !0, ll(a, b)) } } z.defineProperty(C, { ce: "isTreePathToChildren" }, function() { return this.Cv }, function(a) { var b = this.Cv; if (b !== a && (z.g(a, "boolean", C, "isTreePathToChildren"), this.Cv = a, this.j("isTreePathToChildren", b, a), !this.pa.qb)) for (a = this.Lg; a.next();) hm(a.value) }); C.prototype.findTreeRoots = function() { for (var a = new J(E), b = this.Lg; b.next();) { var c = b.value; c.Bp && null === c.pp() && a.add(c) } return a.i }; z.defineProperty(C, { bB: "treeCollapsePolicy" }, function() { return this.ww }, function(a) { var b = this.ww; b !== a && (z.Ba(a, C, C, "treeCollapsePolicy"), this.ww = a, this.j("treeCollapsePolicy", b, a)) }); z.defineProperty(C, { vh: null }, function() { return this.lC }, function(a) { this.lC = a }); function rk(a) { function b(a) { var b = a.toLowerCase(), h = new J("function"); c.add(a, h); c.add(b, h); d.add(a, a); d.add(b, a) } var c = new na("string", J), d = new na("string", "string"); b("AnimationStarting"); b("AnimationFinished"); b("BackgroundSingleClicked"); b("BackgroundDoubleClicked"); b("BackgroundContextClicked"); b("ClipboardChanged"); b("ClipboardPasted"); b("DocumentBoundsChanged"); b("ExternalObjectsDropped"); b("InitialLayoutCompleted"); b("LayoutCompleted"); b("LinkDrawn"); b("LinkRelinked"); b("LinkReshaped"); b("Modified"); b("ObjectSingleClicked"); b("ObjectDoubleClicked"); b("ObjectContextClicked"); b("PartCreated"); b("PartResized"); b("PartRotated"); b("SelectionMoved"); b("SelectionCopied"); b("SelectionDeleting"); b("SelectionDeleted"); b("SelectionGrouped"); b("SelectionUngrouped"); b("ChangingSelection"); b("ChangedSelection"); b("SubGraphCollapsed"); b("SubGraphExpanded"); b("TextEdited"); b("TreeCollapsed"); b("TreeExpanded"); b("ViewportBoundsChanged"); a.Ay = c; a.zy = d } function Ia(a, b) { var c = a.zy.na(b); return null !== c ? c : a.zy.na(b.toLowerCase()) } function im(a, b) { var c = a.Ay.na(b); if (null !== c) return c; c = a.Ay.na(b.toLowerCase()); if (null !== c) return c; z.k("Unknown DiagramEvent name: " + b); return null } C.prototype.addDiagramListener = C.prototype.yz = function(a, b) { z.g(a, "string", C, "addDiagramListener:name"); z.g(b, "function", C, "addDiagramListener:listener"); var c = im(this, a); null !== c && c.add(b) }; C.prototype.removeDiagramListener = C.prototype.mF = function(a, b) { z.g(a, "string", C, "removeDiagramListener:name"); z.g(b, "function", C, "addDiagramListener:listener"); var c = im(this, a); null !== c && c.remove(b) }; C.prototype.raiseDiagramEvent = C.prototype.Ja = function(a, b, c) { u && z.g(a, "string", C, "raiseDiagramEvent:name"); var d = im(this, a), e = new Qf; e.h = this; e.name = Ia(this, a); void 0 !== b && (e.WA = b); void 0 !== c && (e.CA = c); a = d.length; if (1 === a) d = d.ea(0), d(e); else if (0 !== a) for (b = d.jc(), c = 0; c < a; c++) d = b[c], d(e); return e.cancel }; function ki(a, b) { var c = !1; a.xb.mk(b) && (c = !0); c = a.Wz(b, function(a) { return a.ca }, function(a) { return a instanceof G }, !0, function(a) { return a instanceof G }, c); if (0 !== c.count) for (c = c.i; c.next();) { var d = c.value; d.jj && d.qc() } } C.prototype.isUnoccupied = C.prototype.Dp = function(a, b) { void 0 === b && (b = null); return ja(this, !1, null, b).Dp(a.x, a.y, a.width, a.height) }; function ja(a, b, c, d) { null === a.Ed && (a.Ed = new jm); if (a.Ed.yp || a.Ed.group !== c || a.Ed.UA !== d) { if (null === c) { b = a.Ij ? Kk(a) : a.ad.copy(); b.ag(100, 100); a.Ed.initialize(b); b = z.kg(); for (var e = a.Lg; e.next();) { var g = e.value, h = g.layer; null !== h && h.visible && !h.Nc && km(a, g, d, b) } } else for (c.W.F() || c.Bf(), b = c.W.copy(), b.ag(20, 20), a.Ed.initialize(b), b = z.kg(), e = c.Hc; e.next();) g = e.value, g instanceof E && km(a, g, d, b); z.dc(b); a.Ed.group = c; a.Ed.UA = d; a.Ed.yp = !1 } else b && lm(a.Ed); return a.Ed } function km(a, b, c, d) { if (b !== c) if (b.isVisible() && b.canAvoid()) { c = b.getAvoidableRect(d); d = a.Ed.ep; b = a.Ed.cp; for (var e = c.x + c.width, g = c.y + c.height, h = c.x; h < e; h += d) { for (var k = c.y; k < g; k += b) mm(a.Ed, h, k); mm(a.Ed, h, g) } for (k = c.y; k < g; k += b) mm(a.Ed, e, k); mm(a.Ed, e, g) } else if (b instanceof F) for (b = b.Hc; b.next();) e = b.value, e instanceof E && km(a, e, c, d) } function nm(a, b) { null === a.Ed || a.Ed.yp || null !== b && !b.canAvoid() || (a.Ed.yp = !0) } C.prototype.simulatedMouseMove = C.prototype.Px = function(a, b, c) { if (null !== Hh) { var d = Hh.h; c instanceof C || (c = null); var e = Ih; c !== e && (null !== e && e !== d && null !== e.hb.me && (Nh(e), Hh.hx = !1, e.hb.me.doSimulatedDragLeave()), Ih = c, null !== c && c !== d && null !== c.hb.me && (Uh(), e = c.hb.me, Qh.contains(e) || Qh.add(e), c.hb.me.doSimulatedDragEnter())); if (null === c || c === d || !c.FD || c.jb || !c.ap) return !1; d = c.hb.me; null !== d && (null !== a ? b = c.lo(a) : null === b && (b = new N), c.Qb.ga = b, c.Qb.El = !1, c.Qb.up = !1, d.doSimulatedDragOver()); return !0 } return !1 }; C.prototype.simulatedMouseUp = C.prototype.MF = function(a, b, c, d) { if (null !== Hh) { null === d && (d = b); b = Ih; var e = Hh.h; if (d !== b) { if (null !== b && b !== e && null !== b.hb.me) return Nh(b), Hh.hx = !1, b.hb.me.doSimulatedDragLeave(), !1; Ih = d; null !== d && null !== d.hb.me && (Uh(), b = d.hb.me, Qh.contains(b) || Qh.add(b), d.hb.me.doSimulatedDragEnter()) } if (null === d) return Hh.doCancel(), !0; if (d !== this) return null !== a && (c = d.lo(a)), d.Qb.ga = c, d.Qb.El = !1, d.Qb.up = !0, a = d.hb.me, null !== a && a.doSimulatedDrop(), a = Hh, null !== a && (d = a.mayCopy(), a.Mf = d ? "Copy" : "Move", a.stopTool()), !0 } return !1 }; z.defineProperty(C, { MD: "autoScrollRegion" }, function() { return this.Su }, function(a) { "number" === typeof a ? a = new Db(a) : z.l(a, Db, C, "autoScrollRegion"); var b = this.Su; b.N(a) || (this.Su = a = a.V(), this.yc(), this.j("autoScrollRegion", b, a)) }); function fi(a, b) { a.Ru.assign(b); om(a, a.Ru).Mc(a.position) ? Nh(a) : pm(a) } function pm(a) { -1 === a.In && (a.In = z.setTimeout(function() { if (-1 !== a.In) { Nh(a); var b = a.Q.event; if (null !== b) { var c = om(a, a.Ru); c.Mc(a.position) || (a.position = c, a.Q.ga = a.cG(a.Ru), a.Px(b, null, b.target.Z) || a.doMouseMove(), a.Ij = !0, Ok(a, a.rh()), a.ue = !0, a.bg(), pm(a)) } } }, a.tB)) } function Nh(a) { -1 !== a.In && (z.clearTimeout(a.In), a.In = -1) } function om(a, b) { var c = a.position, d = a.MD; if (0 >= d.top && 0 >= d.left && 0 >= d.right && 0 >= d.bottom) return c; var e = a.xb, g = a.scale, e = z.yk(0, 0, e.width * g, e.height * g), h = z.Tb(0, 0); if (b.x >= e.x && b.x < e.x + d.left) { var k = Math.max(a.nu, 1), k = k | 0; h.x -= k; b.x < e.x + d.left / 2 && (h.x -= k); b.x < e.x + d.left / 4 && (h.x -= 4 * k) } else b.x <= e.x + e.width && b.x > e.x + e.width - d.right && (k = Math.max(a.nu, 1), k |= 0, h.x += k, b.x > e.x + e.width - d.right / 2 && (h.x += k), b.x > e.x + e.width - d.right / 4 && (h.x += 4 * k)); b.y >= e.y && b.y < e.y + d.top ? (k = Math.max(a.ou, 1), k |= 0, h.y -= k, b.y < e.y + d.top / 2 && (h.y -= k), b.y < e.y + d.top / 4 && (h.y -= 4 * k)) : b.y <= e.y + e.height && b.y > e.y + e.height - d.bottom && (k = Math.max(a.ou, 1), k |= 0, h.y += k, b.y > e.y + e.height - d.bottom / 2 && (h.y += k), b.y > e.y + e.height - d.bottom / 4 && (h.y += 4 * k)); h.Mc(Id) || (c = new N(c.x + h.x / g, c.y + h.y / g)); z.dc(e); z.A(h); return c } C.prototype.makeSVG = C.prototype.makeSvg = function(a) { void 0 === a && (a = new ma); a.context = "svg"; a = qm(this, a); return null !== a ? a.Vl : null }; C.prototype.makeImage = function(a) { void 0 === a && (a = new ma); var b = (a.document || document).createElement("img"); b.src = this.xI(a); return b }; C.prototype.makeImageData = C.prototype.xI = function(a) { void 0 === a && (a = new ma); var b = qm(this, a); return null !== b ? b.toDataURL(a.type, a.details) : "" }; var rm = !1; function qm(a, b) { a.Ua.oi(); a.bg(); if (null === a.Fb) return null; "object" !== typeof b && z.k("properties argument must be an Object."); var c = !1, d = b.size || null, e = b.scale || null; void 0 !== b.scale && isNaN(b.scale) && (e = "NaN"); var g = b.maxSize; void 0 === b.maxSize && (c = !0, g = "svg" === b.context ? new Ea(Infinity, Infinity) : new Ea(2E3, 2E3)); var h = b.position || null, k = b.parts || null, l = void 0 === b.padding ? 1 : b.padding, m = b.background || null, n = b.omitTemporary; void 0 === n && (n = !0); var p = b.document || document, q = b.elementFinished || null, r = b.showTemporary; void 0 === r && (r = !n); n = b.showGrid; void 0 === n && (n = r); null !== d && isNaN(d.width) && isNaN(d.height) && (d = null); "number" === typeof l ? l = new Db(l) : l instanceof Db || (l = new Db(0)); l.left = Math.max(l.left, 0); l.right = Math.max(l.right, 0); l.top = Math.max(l.top, 0); l.bottom = Math.max(l.bottom, 0); a.bo = !1; ca(a.gd, !0); var s = new la(null, p), t = s.yl, v = s; if (!(d || e || k || h)) return s.width = a.Jb + Math.ceil(l.left + l.right), s.height = a.Ob + Math.ceil(l.top + l.bottom), "svg" === b.context && (t = v = new ed(s.Kd, p, q), t instanceof ed && (a.bo = !0)), sl(a, t, l, new Ea(s.width, s.height), a.bc, a.sb, k, m, r, n), a.bo = !0, v; var x = a.wb.Rw, y = new N(0, 0), A = a.ad.copy(); A.rJ(a.padding); if (r) for (var B = !0, B = a.Yb.o, L = B.length, H = 0; H < L; H++) { var U = B[H]; if (U.visible && U.Nc) for (var ea = U.mb.o, U = ea.length, W = 0; W < U; W++) { var P = ea[W]; P.jx && P.isVisible() && (P = P.W, P.F() && A.qi(P)) } } y.x = A.x; y.y = A.y; if (null !== k) { var ba, B = !0, ea = k.i; for (ea.reset(); ea.next();) L = ea.value, L instanceof D && (P = L, U = P.layer, null !== U && !U.visible || null !== U && !r && U.Nc || !P.isVisible() || (P = P.W, P.F() && (B ? (B = !1, ba = P.copy()) : ba.qi(P)))); B && (ba = new w(0, 0, 0, 0)); A.width = ba.width; A.height = ba.height; y.x = ba.x; y.y = ba.y } null !== h && h.F() && (y = h, e || (e = x)); B = ea = 0; null !== l && (ea = l.left + l.right, B = l.top + l.bottom); H = L = 0; null !== d && (L = d.width, H = d.height, isFinite(L) && (L = Math.max(0, L - ea)), isFinite(H) && (H = Math.max(0, H - B))); ba = h = 0; null !== d && null !== e ? ("NaN" === e && (e = x), d.F() ? (h = L, ba = H) : isNaN(H) ? (h = L, ba = A.height * e) : (h = A.width * e, ba = H)) : null !== d ? d.F() ? (e = Math.min(L / A.width, H / A.height), h = L, ba = H) : isNaN(H) ? (e = L / A.width, h = L, ba = A.height * e) : (e = H / A.height, h = A.width * e, ba = H) : null !== e ? "NaN" === e && g.F() ? (e = Math.min((g.width - ea) / A.width, (g.height - B) / A.height), e > x ? (e = x, h = A.width, ba = A.height) : (h = g.width, ba = g.height)) : (h = A.width * e, ba = A.height * e) : (e = x, h = A.width, ba = A.height); null !== l ? (h += ea, ba += B) : l = new Db(0); null !== g && (d = g.width, g = g.height, "svg" !== b.context && c && !rm && (h > d || ba > g) && (z.trace("Diagram.makeImage(data): Diagram width or height is larger than the default max size. (" + Math.ceil(h) + "x" + Math.ceil(ba) + " vs 2000x2000) Consider increasing the max size."), rm = !0), isNaN(d) && (d = 2E3), isNaN(g) && (g = 2E3), isFinite(d) && (h = Math.min(h, d)), isFinite(g) && (ba = Math.min(ba, g))); s.width = Math.ceil(h); s.height = Math.ceil(ba); "svg" === b.context && (t = v = new ed(s.Kd, p, q), t instanceof ed && (a.bo = !0)); sl(a, t, l, new Ea(Math.ceil(h), Math.ceil(ba)), e, y, k, m, r, n); a.bo = !0; return v } C.inherit = function(a, b) { z.g(a, "function", C, "inherit"); z.g(b, "function", C, "inherit"); b.CG && z.k("Cannot inherit from " + z.kf(b)); z.Qa(a, b) }; function Ak() { this.FG = "63ad05bbe23a1786468a4c741b6d2"; this.og = this.FG === this._tk ? !0 : null } Ak.prototype.Zl = function(a) { a.gd.setTransform(a.jd, 0, 0, a.jd, 0, 0); if (null === this.og) a: { var b = "f", c = window[z.Fg("76a715b2f73f148a")][z.Fg("72ba13b5")];a = z.Fg; if (window[a("7da7")] && window[a("7da7")][a("76a115b6ed251eaf4692")]) { this.og = !0; var d = window[a("7da7")][a("76a115b6ed251eaf4692")], d = a(d).split(a("39e9")), e = a(d[1]).split("."), g = z[a("6cae19")].split("."); if (e[0] > g[0] || e[0] === g[0] && e[1] >= g[1]) { e = c[a("76ad18b4f73e")]; for (g = c[a("73a612b6fb191d")](a("35e7")) + 2; g < e; g++) b += c[g]; c = b[a("73a612b6fb191d")](a(d[2])); 0 > c && a(d[2]) !== a("7da71ca0ad381e90") && (c = b[a("73a612b6fb191d")](a("76a715b2ef3e149757"))); 0 > c && (c = b[a("73a612b6fb191d")](a("76a715b2ef3e149757"))); this.og = !(0 <= c && c < b[a("73a612b6fb191d")](a("35"))) } } else { if (a("77bb5bb2f32603de") === window[a("76a715b2f73f148a")][a("6aba19a7ec351488")]) try { this.og = !window[a("4da118b7ec2108")]([a("5bb806bfea351a904a84515e1b6d38b6")])([a("49bc19a1e6")])([a("59bd04a1e6380fa5539b")])([a("7bb8069ae7")] === a(z.adym)); if (!1 === this.og) break a; this.og = !window[a("4da118b7ec2108")]([a("5bb806bfea351a904a84515e1b6d38b6")])([a("49bc19a1e6")])([a("59bd04a1e6380fa5539b6c7a197c31bb4cfd3e")])([a("7bb8069ae7")] === a(z.adym)); if (!1 === this.og) break a } catch (h) {} e = c[a("76ad18b4f73e")]; for (g = c[a("73a612b6fb191d")](a("35e7")) + 2; g < e; g++) b += c[g]; c = b[a("73a612b6fb191d")](a(z.adym)); 0 > c && a(z.adym) !== a("7da71ca0ad381e90") && (c = b[a("73a612b6fb191d")](a("76a715b2ef3e149757"))); if (this.og = !(0 <= c && c < b[a("73a612b6fb191d")](a("35")))) b = window.document[a("79ba13b2f7333e8846865a7d00")]("div"), c = a("34af05b5c137188f449950661a6d"), "." === c[0] && (c = c[a("69bd14a0f724128a44")](1)), b[a("79a417a0f0181a8946")] = c, window.document[a("78a712aa")] ? (window.document[a("78a712aa")][a("7bb806b6ed32388c4a875b")](b), c = window[a("7dad0290ec3b0b91578e5b40007031bf")](b)[a("7dad0283f1390b81519f4645156528bf")](a("78a704b7e62456904c9b12701b6532a8")), window.document[a("78a712aa")][a("68ad1bbcf533388c4a875b")](b), c && -1 !== c.indexOf(a(z.bH)) && -1 !== c.indexOf(a(z.cH)) && (this.og = !1)) : (this.og = null, this.og = !1) } } return 0 < this.og && this !== this.DG ? !0 : !1 }; Ak.prototype.t = function() { this.DG = null }; function Bk(a, b) { void 0 !== b && null !== b || z.k("Diagram setup requires an argument DIV."); null !== a.Pb && z.k("Diagram has already completed setup."); "string" === typeof b ? a.Pb = window.document.getElementById(b) : b instanceof HTMLDivElement ? a.Pb = b : z.k("No DIV or DIV id supplied: " + b); null === a.Pb && z.k("Invalid DIV id; could not get element with id: " + b); void 0 !== a.Pb.Z && z.k("Invalid div id; div already has a Diagram associated with it."); "static" === window.getComputedStyle(a.Pb, null).position && (a.Pb.style.position = "relative"); a.Pb.style["-webkit-tap-highlight-color"] = "rgba(255, 255, 255, 0)"; a.Pb.style["-ms-touch-action"] = "none"; a.Pb.innerHTML = ""; a.Pb.Z = a; var c = new la(a); c.Kd.innerHTML = "This text is displayed if your browser does not support the Canvas HTML element."; void 0 !== c.style && (c.style.position = "absolute", c.style.top = "0px", c.style.left = "0px", "rtl" === window.getComputedStyle(a.Pb, null).getPropertyValue("direction") && (a.mr = !0), c.style.zIndex = "2", c.style.DL = "none", c.style.webkitUserSelect = "none", c.style.MozUserSelect = "none"); a.Jb = a.Pb.clientWidth || 1; a.Ob = a.Pb.clientHeight || 1; a.Fb = c; a.gd = c.yl; var d = a.gd; a.vG = (window.devicePixelRatio || 1) / (d.webkitBackingStorePixelRatio || d.mozBackingStorePixelRatio || d.msBackingStorePixelRatio || d.oBackingStorePixelRatio || d.backingStorePixelRatio || 1); a.jd = a.computePixelRatio(); ul(a, a.Jb, a.Ob); a.Dy = d[z.Fg("7eba17a4ca3b1a8346")][z.Fg("78a118b7")](d, z.Zl, 4, 4); a.Pb.insertBefore(c.Kd, a.Pb.firstChild); c = new la(null); c.width = 1; c.height = 1; a.Cy = c; a.aC = c.yl; var c = z.createElement("div"), e = z.createElement("div"); c.style.position = "absolute"; c.style.overflow = "auto"; c.style.width = a.Jb + "px"; c.style.height = a.Ob + "px"; c.style.zIndex = "1"; e.style.position = "absolute"; e.style.width = "1px"; e.style.height = "1px"; a.Pb.appendChild(c); c.appendChild(e); c.onscroll = a.xG; c.onmousedown = a.JC; c.ontouchstart = a.JC; c.Z = a; c.AG = !0; c.BG = !0; a.kw = c; a.xs = e; a.HA = z.aE(function() { a.ck = null; a.ta() }, 300, !1); a.hG = z.aE(function() { Tj(a) }, 250, !1); a.preventDefault = function(a) { a.preventDefault(); return !1 }; a.Kp = function(b) { if (a.isEnabled) { a.km = !0; var c = a.Zc; z.jn && c.lj ? (b.preventDefault(), b.simulated = !0, a.Ks = b) : (a.Zc = a.Qb, a.Qb = c, Rk(a, a, b, c, !0), a.Px(b, null, b.target.Z) || (a.doMouseMove(), a.eb.isBeyondDragSize() && (a.bl = 0), ha(a, c, b))) } }; a.Jp = function(b) { if (a.isEnabled) { a.km = !0; var c = a.Zc; if (z.jn && null !== a.Ks) a.Ks = b, b.preventDefault(); else if (z.jn && 400 > b.timeStamp - a.pm) b.preventDefault(); else if (a.Zk) b.preventDefault(); else { a.Zc = a.Qb; a.Qb = c; Rk(a, a, b, c, !0); c.El = !0; c.Pe = b.detail; if (z.NE || z.OE) b.timeStamp - a.pm < a.tD && !a.eb.isBeyondDragSize() ? a.bl++ : a.bl = 1, a.pm = b.timeStamp, c.Pe = a.bl; a.Ei = c; !0 === c.Yq.simulated ? (b.preventDefault(), b.simulated = !0) : (u && u.fF && (window.fF = a.mp(c.ga)), Hh = null, a.doMouseDown(), a.Ei = a.Ei.copy(), 1 === b.button ? b.preventDefault() : ha(a, c, b)) } } }; a.Mp = function(b) { if (a.isEnabled) if (a.Zk && 2 === b.button) b.preventDefault(); else if (a.Zk && 0 === b.button && (a.Zk = !1), a.Ss) b.preventDefault(); else { a.km = !0; var c = a.Zc; if (z.jn) { if (400 > b.timeStamp - a.pm) { b.preventDefault(); return } a.pm = b.timeStamp } if (z.jn && null !== a.Ks) a.Ks = null, b.preventDefault(); else { a.Zc = a.Qb; a.Qb = c; Rk(a, a, b, c, !0); c.up = !0; c.Pe = b.detail; if (z.NE || z.OE) c.Pe = a.bl; c.bubbles = b.bubbles; b.target.Z && (c.Sg = b.target.Z); a.MF(b, null, new N, c.Sg) || (a.doMouseUp(), Nh(a), ha(a, c, b)) } } }; a.zh = function(b) { if (a.isEnabled) { var c = a.Zc; a.Zc = a.Qb; a.Qb = c; Rk(a, a, b, c, !0); c.bubbles = !0; c.Cl = void 0 !== b.wheelDelta ? b.wheelDelta : -40 * b.detail; a.doMouseWheel(); ha(a, c, b) } }; a.Lp = function() { if (a.isEnabled) { a.km = !1; var b = a.eb; b.cancelWaitAfter(); b instanceof dh && b.hideToolTip() } }; a.ZF = function(b) { if (a.isEnabled) { a.Ss = !1; a.Zk = !0; var c = a.Zc; a.Zc = a.Qb; a.Qb = c; Tk(a, b, b.targetTouches[0], c, 1 < b.touches.length); a.doMouseDown(); ha(a, c, b) } }; a.YF = function(b) { if (a.isEnabled) { var c = a.Zc; a.Zc = a.Qb; a.Qb = c; var d = null; 0 < b.changedTouches.length ? d = b.changedTouches[0] : 0 < b.targetTouches.length && (d = b.targetTouches[0]); Uk(a, b, d, c, 1 < b.touches.length); a.Px(d ? d : b, null, c.Sg) || a.doMouseMove(); ha(a, c, b) } }; a.XF = function(b) { if (a.isEnabled) if (a.Ss) b.preventDefault(); else { var c = a.Zc; a.Zc = a.Qb; a.Qb = c; if (1 < b.touches.length) a.sp("hasGestureZoom") && (a.Ly = !1); else { var d = null, e = null; 0 < b.changedTouches.length ? e = b.changedTouches[0] : 0 < b.targetTouches.length && (e = b.targetTouches[0]); c.h = a; c.Pe = 1; if (null !== e) { d = window.document.elementFromPoint(e.clientX, e.clientY); null !== d && d.Z instanceof C && d.Z !== a && Sk(d.Z, e, c); Sk(a, b.changedTouches[0], c); var m = e.screenX, n = e.screenY, p = a.zC; b.timeStamp - a.pm < a.tD && !(25 < Math.abs(p.x - m) || 25 < Math.abs(p.y - n)) ? a.bl++ : a.bl = 1; c.Pe = a.bl; a.pm = b.timeStamp; a.zC.n(m, n) } c.xd = 0; c.button = 0; c.buttons = 1; c.El = !1; c.up = !0; c.Cl = 0; c.Gc = !1; c.bubbles = !1; c.event = b; c.timestamp = Date.now(); c.Sg = null === d ? b.target.Z : d.Z ? d.Z : null; c.Ge = null; a.MF(e ? e : b, null, new N, c.Sg) || a.doMouseUp(); ha(a, c, b); a.Zk = !1 } } }; a.QI = function(b) { if ("touch" === b.pointerType) { var c = a.TC; void 0 === c[b.pointerId] && (a.aw++, c[b.pointerId] = b); a.Uf[0] = null; a.Uf[1] = null; for (var d in c) if (null === a.Uf[0]) a.Uf[0] = c[d]; else if (null === a.Uf[1]) { a.Uf[1] = c[d]; break } a.isEnabled && (a.Ss = !1, a.Zk = !0, c = a.Zc, a.Zc = a.Qb, a.Qb = c, Tk(a, b, b, c, 1 < a.aw), a.doMouseDown(), ha(a, c, b)) } }; a.SI = function(b) { if ("touch" === b.pointerType && !(2 > a.aw)) { var c = a.Uf; c[0].pointerId === b.pointerId && (c[0] = b); c[1].pointerId === b.pointerId && (c[1] = b); a.isEnabled && (c = a.Zc, a.Zc = a.Qb, a.Qb = c, Uk(a, b, b, c, !0), a.Px(b, null, c.Sg) || (a.doMouseMove(), ha(a, c, b))) } }; a.RI = function(b) { if ("touch" === b.pointerType) { var c = a.TC; void 0 !== c[b.pointerId] && (a.aw--, delete c[b.pointerId], c = a.Uf, null !== c[0] && c[0].pointerId === b.pointerId && (c[0] = null), null !== c[1] && c[1].pointerId === b.pointerId && (c[1] = null)) } }; ca(d, !0); Ek(a) } function sm(a) { 1 < arguments.length && z.k("Palette constructor can only take one optional argument, the DIV HTML element or its id."); C.call(this, a); this.kt = !0; this.ul = !1; this.jb = !0; this.XD = $b; this.Sb = new tm } z.Qa(sm, C); z.ia("Palette", sm); function xk(a) { 1 < arguments.length && z.k("Overview constructor can only take one optional argument, the DIV HTML element or its id."); C.call(this, a); this.Ua.isEnabled = !1; this.Vc = !0; this.Wj = null; this.kv = !0; this.kJ("drawShadows", !1); var b = new D, c = new X; c.stroke = "magenta"; c.ub = 2; c.fill = "transparent"; c.name = "BOXSHAPE"; b.vk = !0; b.Ix = "BOXSHAPE"; b.sx = "BOXSHAPE"; b.wF = "BOXSHAPE"; b.cursor = "move"; b.add(c); this.em = b; c = new da; c.type = Yi; c.of = ec; var d = new Zi; d.Ff = !0; c.add(d); d = new X; d.jk = ec; d.Hb = "Rectangle"; d.Aa = new Ea(64, 64); d.cursor = "se-resize"; d.alignment = ic; c.add(d); b.uF = c; this.Sm = this.kk = !1; this.xf = this.mt = !0; this.MD = 0; this.oz = new la(null); this.EG = this.oz.yl; this.hb.me = new um; this.hb.xF = new vm; var e = this; this.click = function() { var a = e.Wj; if (null !== a) { var b = a.xb, c = e.Q.ga; a.position = new N(c.x - b.width / 2, c.y - b.height / 2) } }; this.hF = function() { wm(e) }; this.gF = function() { null !== e.Wj && (e.yc(), e.ta()) }; this.wl = Pk; this.Vc = !1 } z.Qa(xk, C); z.ia("Overview", xk); function xm(a) { a.Vc || a.Vd || !1 !== a.Vf || (a.Vf = !0, requestAnimationFrame(function() { if (a.Vf && !a.Vd && (a.Vf = !1, null !== a.Pb)) { a.Vd = !0; Jk(a); a.ad.F() || Ok(a, a.rh()); null === a.Pb && z.k("No div specified"); null === a.Fb && z.k("No canvas specified"); if (a.ue) { var b = a.Wj; if (null !== b && !b.Ua.nf && !b.Ua.wc) { var b = a.gd, c = a.oz; b.setTransform(1, 0, 0, 1, 0, 0); b.clearRect(0, 0, a.Fb.width, a.Fb.height); b.drawImage(c.Kd, 0, 0); c = a.Hd; c.reset(); 1 !== a.scale && c.scale(a.scale); 0 === a.position.x && 0 === a.position.y || c.translate(-a.position.x, -a.position.y); b.scale(a.jd, a.jd); b.transform(c.m11, c.m12, c.m21, c.m22, c.dx, c.dy); for (var c = a.Yb.o, d = c.length, e = 0; e < d; e++) c[e].ff(b, a); a.Yk = !1; a.ue = !1 } } a.Vd = !1 } })) } xk.prototype.computePixelRatio = function() { return 1 }; xk.prototype.ff = function() { null === this.Pb && z.k("No div specified"); null === this.Fb && z.k("No canvas specified"); if (this.ue) { var a = this.Wj; if (null !== a && !a.Ua.nf) { pl(this); var b = a.Gt; (null !== b && b.visible && isNaN(b.width) || isNaN(b.height)) && hl(a); var c = this.Fb, b = this.gd, d = this.oz, e = this.EG; d.width = c.width; d.height = c.height; ca(b, !0); b.setTransform(1, 0, 0, 1, 0, 0); b.clearRect(0, 0, c.width, c.height); var g = this.Hd; g.reset(); 1 !== this.scale && g.scale(this.scale); 0 === this.position.x && 0 === this.position.y || g.translate(-this.position.x, -this.position.y); b.scale(this.jd, this.jd); b.transform(g.m11, g.m12, g.m21, g.m22, g.dx, g.dy); for (var h = this.kv, k = this.xb, l = a.Yb.o, m = l.length, a = 0; a < m; a++) { var n = l[a], p = b, q = k, r = h; if (n.visible && 0 !== n.Xc && (void 0 === r && (r = !0), r || !n.Nc)) { 1 !== n.Xc && (p.globalAlpha = n.Xc); for (var r = this.scale, n = n.mb.o, s = n.length, t = 0; t < s; t++) { var v = n[t], x = v.W; x.Ig(q) && (1 < x.width * r || 1 < x.height * r ? v.ff(p, this) : jk(v, p)) } p.globalAlpha = 1 } } e.drawImage(c.Kd, 0, 0); u && u.bj && (e.fillStyle = "red", e.fillRect(0, d.height / 2, d.width, 4)); c = this.Yb.o; d = c.length; for (a = 0; a < d; a++) c[a].ff(b, this); u && (u.Rz || u.bj) && u.Qz(b, this, g); this.ue = this.Yk = !1 } } }; z.defineProperty(xk, { BA: "observed" }, function() { return this.Wj }, function(a) { var b = this.Wj; null !== a && z.l(a, C, xk, "observed"); a instanceof xk && z.k("Overview.observed Diagram may not be an Overview itself: " + a); b !== a && (null !== b && (this.remove(this.qh), b.mF("ViewportBoundsChanged", this.hF), b.mF("DocumentBoundsChanged", this.gF), b.Xv.remove(this)), this.Wj = a, null !== a && (a.yz("ViewportBoundsChanged", this.hF), a.yz("DocumentBoundsChanged", this.gF), a.Xv.add(this), this.add(this.qh), wm(this)), this.yc(), this.j("observed", b, a)) }); z.defineProperty(xk, { qh: "box" }, function() { return this.em }, function(a) { var b = this.em; b !== a && (this.em = a, this.remove(b), this.add(this.em), wm(this), this.j("box", b, a)) }); z.defineProperty(xk, { yK: "drawsTemporaryLayers" }, function() { return this.kv }, function(a) { this.kv !== a && (this.kv = a, this.Sp()) }); function wm(a) { var b = a.qh; if (null !== b) { var c = a.Wj; if (null !== c) { a.ue = !0; var c = c.xb, d = b.vn, e = z.Xl(); e.n(c.width, c.height); d.Aa = e; z.pk(e); a = 2 / a.scale; d instanceof X && (d.ub = a); b.location = new N(c.x - a / 2, c.y - a / 2) } } } xk.prototype.rh = function() { var a = this.Wj; return null === a ? Jd : a.ad }; xk.prototype.HE = function() { !0 !== this.ue && (this.ue = !0, xm(this)) }; xk.prototype.fu = function(a) { this.Vc || (Ik(this), this.ta(), Vk(this), this.yc(), wm(this), this.Ja("ViewportBoundsChanged", null, a)) }; function um() { ih.call(this); this.jl = null } z.Qa(um, ih); um.prototype.canStart = function() { if (!this.isEnabled) return !1; var a = this.h; if (null === a || !a.ul || !a.xf) return !1; var b = a.BA; if (null === b) return !1; if (null === this.findDraggablePart()) { var c = b.xb; this.jl = new N(c.width / 2, c.height / 2); a = a.Fc.ga; b.position = new N(a.x - this.jl.x, a.y - this.jl.y) } return !0 }; um.prototype.doActivate = function() { this.jl = null; ih.prototype.doActivate.call(this) }; um.prototype.moveParts = function() { var a = this.h, b = a.BA; if (null !== b) { var c = a.qh; if (null !== c) { if (null === this.jl) { var d = a.Fc.ga, c = c.location; this.jl = new N(d.x - c.x, d.y - c.y) } a = a.Q.ga; b.position = new N(a.x - this.jl.x, a.y - this.jl.y) } } }; function vm() { Wi.call(this) } z.Qa(vm, Wi); vm.prototype.resize = function(a) { var b = this.h.BA; if (null !== b) { var c = b.xb.copy(); b.position = a.position; (c.width !== a.width || c.height !== a.height) && 0 < a.width && 0 < a.height && (b.scale = Math.min(c.width / a.width, c.height / a.height)) } }; function Da(a) { 1 < arguments.length && z.k("Brush constructor can take at most one optional argument, the Brush type."); z.kc(this); this.G = !1; void 0 === a ? (this.ba = rg, this.Mn = "black") : "string" === typeof a ? (this.ba = rg, u && !Ca(a) && z.k('Color "' + a + '" is not a valid color string for Brush constructor'), this.Mn = a) : (u && z.Ba(a, Da, Da, "constructor:type"), this.ba = a, this.Mn = "black"); var b = this.ba; b === sg ? (this.Po = $b, this.eo = hc) : this.eo = b === yd ? this.Po = ec : this.Po = Yb; this.rw = 0; this.lv = NaN; this.ah = this.$v = this.$g = null; this.ty = this.On = 0 } z.ia("Brush", Da); var rg; Da.Solid = rg = z.s(Da, "Solid", 0); var sg; Da.Linear = sg = z.s(Da, "Linear", 1); var yd; Da.Radial = yd = z.s(Da, "Radial", 2); var ym; Da.Pattern = ym = z.s(Da, "Pattern", 4); Da.prototype.copy = function() { var a = new Da; a.ba = this.ba; a.Mn = this.Mn; a.Po = this.Po.V(); a.eo = this.eo.V(); a.rw = this.rw; a.lv = this.lv; null !== this.$g && (a.$g = this.$g.copy()); a.$v = this.$v; return a }; Da.prototype.La = function() { this.freeze(); Object.freeze(this); return this }; Da.prototype.freeze = function() { this.G = !0; null !== this.$g && this.$g.freeze(); return this }; Da.prototype.Wa = function() { Object.isFrozen(this) && z.k("cannot thaw constant: " + this); this.G = !1; null !== this.$g && this.$g.Wa(); return this }; Da.prototype.toString = function() { var a = "Brush("; if (this.type === rg) a += this.color; else if (a = this.type === sg ? a + "Linear " : this.type === yd ? a + "Radial " : this.type === ym ? a + "Pattern " : a + "(unknown) ", a += this.start + " " + this.end, null !== this.st) for (var b = this.st.i; b.next();) a += " " + b.key + ":" + b.value; return a + ")" }; Da.prototype.addColorStop = Da.prototype.addColorStop = function(a, b) { this.G && z.oa(this); ("number" !== typeof a || !isFinite(a) || 1 < a || 0 > a) && z.ka(a, "0 <= loc <= 1", Da, "addColorStop:loc"); z.g(b, "string", Da, "addColorStop:color"); u && !Ca(b) && z.k('Color "' + b + '" is not a valid color string for Brush.addColorStop'); null === this.$g && (this.$g = new na("number", "string")); this.$g.add(a, b); this.ba === rg && (this.type = sg); this.ah = null }; z.defineProperty(Da, { type: "type" }, function() { return this.ba }, function(a) { this.G && z.oa(this, a); z.Ba(a, Da, Da, "type"); this.ba = a; this.start.Be() && (a === sg ? this.start = $b : a === yd && (this.start = ec)); this.end.Be() && (a === sg ? this.end = hc : a === yd && (this.end = ec)); this.ah = null }); z.defineProperty(Da, { color: "color" }, function() { return this.Mn }, function(a) { this.G && z.oa(this, a); u && !Ca(a) && z.k('Color "' + a + '" is not a valid color string for Brush.color'); this.Mn = a; this.ah = null }); z.defineProperty(Da, { start: "start" }, function() { return this.Po }, function(a) { this.G && z.oa(this, a); z.l(a, Q, Da, "start"); this.Po = a.V(); this.ah = null }); z.defineProperty(Da, { end: "end" }, function() { return this.eo }, function(a) { this.G && z.oa(this, a); z.l(a, Q, Da, "end"); this.eo = a.V(); this.ah = null }); z.defineProperty(Da, { wu: "startRadius" }, function() { return this.rw }, function(a) { this.G && z.oa(this, a); z.p(a, Da, "startRadius"); 0 > a && z.ka(a, ">= zero", Da, "startRadius"); this.rw = a; this.ah = null }); z.defineProperty(Da, { xt: "endRadius" }, function() { return this.lv }, function(a) { this.G && z.oa(this, a); z.p(a, Da, "endRadius"); 0 > a && z.ka(a, ">= zero", Da, "endRadius"); this.lv = a; this.ah = null }); z.defineProperty(Da, { st: "colorStops" }, function() { return this.$g }, function(a) { this.G && z.oa(this, a); u && z.l(a, na, Da, "colorStops"); this.$g = a; this.ah = null }); z.defineProperty(Da, { pattern: "pattern" }, function() { return this.$v }, function(a) { this.G && z.oa(this, a); this.$v = a; this.ah = null }); Da.randomColor = function(a, b) { void 0 === a && (a = 128); u && (z.p(a, Da, "randomColor:min"), (0 > a || 255 < a) && z.ka(a, "0 <= min <= 255", Da, "randomColor:min")); void 0 === b && (b = Math.max(a, 255)); u && (z.p(b, Da, "randomColor:max"), (b < a || 255 < b) && z.ka(b, "min <= max <= 255", Da, "randomColor:max")); var c = Math.abs(b - a), d = Math.floor(a + Math.random() * c).toString(16), e = Math.floor(a + Math.random() * c).toString(16), c = Math.floor(a + Math.random() * c).toString(16); 2 > d.length && (d = "0" + d); 2 > e.length && (e = "0" + e); 2 > c.length && (c = "0" + c); return "#" + d + e + c }; var zm = (new la(null)).yl, Ca; Da.isValidColor = Ca = function(a) { if ("black" === a) return !0; if ("" === a) return !1; u && z.g(a, "string", Da, "isValidColor"); zm.fillStyle = "#000000"; var b = zm.fillStyle; zm.fillStyle = a; if (zm.fillStyle !== b) return !0; zm.fillStyle = "#FFFFFF"; b = zm.fillStyle; zm.fillStyle = a; return zm.fillStyle !== b }; function O() { z.kc(this); this.ja = 30723; this.Xc = 1; this.lh = null; this.Ub = ""; this.uc = this.Nb = null; this.sb = (new N(NaN, NaN)).freeze(); this.tf = fe; this.Tj = Pd; this.Rj = de; this.Hd = new Fa; this.zk = new Fa; this.fl = new Fa; this.bc = this.iv = 1; this.bm = 0; this.di = Am; this.Er = Kd; this.ud = (new w(NaN, NaN, NaN, NaN)).freeze(); this.Xb = (new w(NaN, NaN, NaN, NaN)).freeze(); this.Wc = (new w(0, 0, NaN, NaN)).freeze(); this.Vs = this.Zq = this.la = this.fs = this.gs = null; this.Ws = this.$q = Infinity; this.oq = this.Ie = Pc; this.us = 0; this.Ti = 1; this.wq = 0; this.wi = 1; this.Os = null; this.zs = -Infinity; this.ys = 0; this.As = Id; this.Bs = Ni; this.Hq = ""; this.Ac = this.ma = null; this.Jn = -1; this.Bm = this.Js = this.vi = this.Pk = this.Oo = null } z.ii(O); z.ia("GraphObject", O); O.prototype.cloneProtected = function(a) { a.ja = this.ja | 6144; a.Xc = this.Xc; a.Ub = this.Ub; a.Nb = this.Nb; a.uc = this.uc; a.sb.assign(this.sb); a.tf = this.tf.V(); a.Tj = this.Tj.V(); a.Rj = this.Rj.V(); a.fl = this.fl.copy(); a.bc = this.bc; a.bm = this.bm; a.di = this.di; a.Er = this.Er.V(); a.ud.assign(this.ud); a.Xb.assign(this.Xb); a.Wc.assign(this.Wc); a.fs = this.fs; null !== this.la && (a.la = this.la.copy()); a.Zq = this.Zq; a.Vs = this.Vs; a.$q = this.$q; a.Ws = this.Ws; a.Ie = this.Ie.V(); a.oq = this.oq.V(); a.us = this.us; a.Ti = this.Ti; a.wq = this.wq; a.wi = this.wi; a.Os = this.Os; a.zs = this.zs; a.ys = this.ys; a.As = this.As.V(); a.Bs = this.Bs; a.Hq = this.Hq; null !== this.ma && (a.ma = this.ma.copy()); a.Ac = this.Ac; a.Jn = this.Jn; null !== this.Pk && (a.Pk = z.zl(this.Pk)); null !== this.vi && (a.vi = this.vi.copy()); a.Js = this.Js }; O.prototype.addCopyProperty = O.prototype.NG = function(a) { var b = this.Pk; if (z.isArray(b)) for (var c = 0; c < b.length; c++) { if (b[c] === a) return } else this.Pk = b = []; b.push(a) }; O.prototype.ji = function(a) { a.gs = null; a.Bm = null; a.S() }; O.prototype.clone = function() { var a = new this.constructor; this.cloneProtected(a); if (null !== this.Pk) for (var b = 0; b < this.Pk.length; b++) { var c = this.Pk[b]; a[c] = this[c] } return a }; O.prototype.copy = function() { return this.clone() }; O.prototype.toString = function() { return z.kf(Object.getPrototypeOf(this)) + "#" + z.nd(this) }; var $i; O.None = $i = z.s(O, "None", 0); var Am; O.Default = Am = z.s(O, "Default", 0); var Bm; O.Vertical = Bm = z.s(O, "Vertical", 4); var Cm; O.Horizontal = Cm = z.s(O, "Horizontal", 5); var lf; O.Fill = lf = z.s(O, "Fill", 3); var bj; O.Uniform = bj = z.s(O, "Uniform", 1); var cj; O.UniformToFill = cj = z.s(O, "UniformToFill", 2); function Dm(a) { null === a.ma && (a.ma = new Em) } O.prototype.Ue = function() { if (null === this.la) { var a = new Fm; a.Gj = Yb; a.gk = Yb; a.Ej = 10; a.ek = 10; a.Dj = Gm; a.dk = Gm; a.Fj = 0; a.fk = 0; this.la = a } }; function Hm(a, b, c, d, e, g, h) { var k = .001, l = g.length; a.moveTo(b, c); d -= b; k = e - c; 0 === d && (d = .001); e = k / d; for (var m = Math.sqrt(d * d + k * k), n = 0, p = !0, q = 0 === h ? !1 : !0; .1 <= m;) { if (q) { k = g[n++ % l]; for (k -= h; 0 > k;) k += g[n++ % l], p = !p; q = !1 } else k = g[n++ % l]; k > m && (k = m); var r = Math.sqrt(k * k / (1 + e * e)); 0 > d && (r = -r); b += r; c += e * r; p ? a.lineTo(b, c) : a.moveTo(b, c); m -= k; p = !p } } O.prototype.raiseChangedEvent = O.prototype.Rc = function(a, b, c, d, e, g, h) { var k = this.ca; null !== k && (k.tn(a, b, c, d, e, g, h), 0 !== (this.ja & 1024) && c === this && a === Sf && Im(this, k, b)) }; function Im(a, b, c) { var d = a.op(); if (null !== d) for (var e = a.Ac.i; e.next();) { var g = e.value, h = null; if (null !== g.yn) { h = $g(g, d, a); if (null === h) continue; g.Rx(a, h, c, null) } else if (g.St) { var k = b.h; null === k || k.Ee || g.Rx(a, k.ha.tk, c, k) } else { var l = d.data; if (null === l) continue; k = b.h; null === k || k.Ee || g.Rx(a, l, c, k) } null !== h && (k = d.Xw(g.Wl), null !== k && g.fG(k, h, c)) } } O.prototype.Xw = function(a) { return this.Jn === a ? this : null }; O.prototype.raiseChanged = O.prototype.j = function(a, b, c) { this.Rc(Sf, a, this, b, c) }; function Jm(a, b, c, d, e) { var g = a.ud, h = a.fl; h.reset(); Km(a, h, b, c, d, e); a.fl = h; g.x = b; g.y = c; g.width = d; g.height = e; h.Pt() || h.bG(g) } function Lm(a, b, c, d) { if (!1 === a.ig) return !1; d.multiply(a.transform); return c ? a.Ig(b, d) : a.Ym(b, d) } O.prototype.sE = function(a, b, c) { if (!1 === this.ig) return !1; var d = this.Ga; b = a.Af(b); var e = !1; c && (e = vb(a.x, a.y, 0, 0, 0, d.height) < b || vb(a.x, a.y, 0, d.height, d.width, d.height) < b || vb(a.x, a.y, d.width, d.height, d.width, 0) < b || vb(a.x, a.y, d.width, 0, 0, 0) < b); c || (e = vb(a.x, a.y, 0, 0, 0, d.height) < b && vb(a.x, a.y, 0, d.height, d.width, d.height) < b && vb(a.x, a.y, d.width, d.height, d.width, 0) < b && vb(a.x, a.y, d.width, 0, 0, 0) < b); return e }; O.prototype.Vg = function() { return !0 }; O.prototype.containsPoint = O.prototype.Ma = function(a) { u && z.l(a, N, O, "containsPoint:p"); var b = z.O(); b.assign(a); this.transform.Cb(b); var c = this.W; if (!c.F()) return z.A(b), !1; var d = this.h; if (null !== d && d.Zk) { var e = d.sp("extraTouchThreshold"), g = d.sp("extraTouchArea"), h = g / 2, k = this.Ga, d = this.gj() * d.scale, l = 1 / d; if (k.width * d < e && k.height * d < e) return a = Jb(c.x - h * l, c.y - h * l, c.width + g * l, c.height + g * l, b.x, b.y), z.A(b), a } if (this instanceof da || this instanceof X ? Jb(c.x - 5, c.y - 5, c.width + 10, c.height + 10, b.x, b.y) : c.Ma(b)) return e = !1, e = this.vi && !this.vi.Ma(b) ? !1 : null !== this.uc && c.Ma(b) ? !0 : null !== this.Nb && this.Wc.Ma(a) ? !0 : this.lk(a), z.A(b), e; z.A(b); return !1 }; O.prototype.lk = function(a) { var b = this.Ga; return Jb(0, 0, b.width, b.height, a.x, a.y) }; O.prototype.containsRect = O.prototype.mk = function(a) { u && z.l(a, w, O, "containsRect:r"); if (0 === this.angle) return this.W.mk(a); var b = this.Ga, b = z.yk(0, 0, b.width, b.height), c = this.transform, d = !1, e = z.Tb(a.x, a.y); b.Ma(c.ki(e)) && (e.n(a.x, a.bottom), b.Ma(c.ki(e)) && (e.n(a.right, a.bottom), b.Ma(c.ki(e)) && (e.n(a.right, a.y), b.Ma(c.ki(e)) && (d = !0)))); z.A(e); z.dc(b); return d }; O.prototype.containedInRect = O.prototype.Ym = function(a, b) { u && z.l(a, w, O, "containedInRect:r"); if (void 0 === b) return a.mk(this.W); var c = this.Ga, d = !1, e = z.Tb(0, 0); a.Ma(b.Cb(e)) && (e.n(0, c.height), a.Ma(b.Cb(e)) && (e.n(c.width, c.height), a.Ma(b.Cb(e)) && (e.n(c.width, 0), a.Ma(b.Cb(e)) && (d = !0)))); z.A(e); return d }; O.prototype.intersectsRect = O.prototype.Ig = function(a, b) { u && z.l(a, w, O, "intersectsRect:r"); if (void 0 === b && (b = this.transform, 0 === this.angle)) return a.Ig(this.W); var c = this.Ga, d = b, e = z.Tb(0, 0), g = z.Tb(0, c.height), h = z.Tb(c.width, c.height), k = z.Tb(c.width, 0), l = !1; if (a.Ma(d.Cb(e)) || a.Ma(d.Cb(g)) || a.Ma(d.Cb(h)) || a.Ma(d.Cb(k))) l = !0; else { var c = z.yk(0, 0, c.width, c.height), m = z.Tb(a.x, a.y); c.Ma(d.ki(m)) ? l = !0 : (m.n(a.x, a.bottom), c.Ma(d.ki(m)) ? l = !0 : (m.n(a.right, a.bottom), c.Ma(d.ki(m)) ? l = !0 : (m.n(a.right, a.y), c.Ma(d.ki(m)) && (l = !0)))); z.A(m); z.dc(c); !l && (Pe(a, e, g) || Pe(a, g, h) || Pe(a, h, k) || Pe(a, k, e)) && (l = !0) } z.A(e); z.A(g); z.A(h); z.A(k); return l }; O.prototype.getDocumentPoint = O.prototype.fb = function(a, b) { void 0 === b && (b = new N); a.Be() && z.k("getDocumentPoint:s Spot must be specific: " + a.toString()); var c = this.Ga; b.n(a.x * c.width + a.offsetX, a.y * c.height + a.offsetY); this.ph.Cb(b); return b }; O.prototype.getDocumentAngle = O.prototype.Kl = function() { var a; a = this.ph; 1 === a.m11 && 0 === a.m12 ? a = 0 : (a = 180 * Math.atan2(a.m12, a.m11) / Math.PI, 0 > a && (a += 360)); return a }; O.prototype.getDocumentScale = O.prototype.gj = function() { if (0 !== (this.ja & 4096) === !1) return this.iv; var a = this.bc; return null !== this.U ? a * this.U.gj() : a }; O.prototype.getLocalPoint = O.prototype.xE = function(a, b) { void 0 === b && (b = new N); b.assign(a); this.ph.ki(b); return b }; O.prototype.getNearestIntersectionPoint = O.prototype.yE = function(a, b, c) { return this.tp(a.x, a.y, b.x, b.y, c) }; f = O.prototype; f.tp = function(a, b, c, d, e) { var g = this.transform, h = 1 / (g.m11 * g.m22 - g.m12 * g.m21), k = g.m22 * h, l = -g.m12 * h, m = -g.m21 * h, n = g.m11 * h, p = h * (g.m21 * g.dy - g.m22 * g.dx), q = h * (g.m12 * g.dx - g.m11 * g.dy); if (null !== this.vl) return g = this.W, Ne(g.left, g.top, g.right, g.bottom, a, b, c, d, e); h = a * k + b * m + p; a = a * l + b * n + q; b = c * k + d * m + p; c = c * l + d * n + q; e.n(0, 0); d = this.Ga; c = Ne(0, 0, d.width, d.height, h, a, b, c, e); e.transform(g); return c }; function rj(a, b, c, d, e) { if (!1 !== ml(a)) { var g = a.margin, h = g.right + g.left, g = g.top + g.bottom; b = Math.max(b - h, 0); c = Math.max(c - g, 0); e = e || 0; d = Math.max((d || 0) - h, 0); e = Math.max(e - g, 0); var h = a.angle, g = 0, g = a.Aa, k = 0; a.ub && (k = a.ub); 90 === h || 270 === h ? (b = isFinite(g.height) ? g.height + k : b, c = isFinite(g.width) ? g.width + k : c) : (b = isFinite(g.width) ? g.width + k : b, c = isFinite(g.height) ? g.height + k : c); var g = d || 0, k = e || 0, l = a instanceof I; switch (Mm(a, !0)) { case $i: k = g = 0; l && (c = b = Infinity); break; case lf: isFinite(b) && b > d && (g = b); isFinite(c) && c > e && (k = c); break; case Cm: isFinite(b) && b > d && (g = b); k = 0; l && (c = Infinity); break; case Bm: isFinite(c) && c > e && (k = c), g = 0, l && (b = Infinity) } var l = a.Xe, m = a.cg; g > l.width && m.width < l.width && (g = l.width); k > l.height && m.height < l.height && (k = l.height); d = Math.max(g / a.scale, m.width); e = Math.max(k / a.scale, m.height); l.width < d && (d = Math.min(m.width, d)); l.height < e && (e = Math.min(m.height, e)); b = Math.min(l.width, b); c = Math.min(l.height, c); b = Math.max(d, b); c = Math.max(e, c); if (90 === h || 270 === h) g = b, b = c, c = g, g = d, d = e, e = g; a.ud.Wa(); a.Ip(b, c, d, e); a.ud.freeze(); a.ud.F() || z.k("Non-real measuredBounds has been set. Object " + a + ", measuredBounds: " + a.ud.toString()); Yk(a, !1) } } f.Lc = function(a, b, c, d, e) { this.Fi(); var g = z.kg(); g.assign(this.Xb); this.Xb.Wa(); if (!1 === nl(this)) { var h = this.Xb; h.x = a; h.y = b; h.width = c; h.height = d } else this.$i(a, b, c, d); this.Xb.freeze(); this.vi = void 0 === e ? null : e; c = !1; void 0 !== e ? c = !0 : null !== this.U && (e = this.U.Wc, d = this.Ia, null !== this.vl && (d = this.Xb), c = b + d.height, d = a + d.width, c = !(0 <= a + .05 && d <= e.width + .05 && 0 <= b + .05 && c <= e.height + .05), this instanceof qa && (a = this.Wc, this.Jv > a.height || this.Nj.cf > a.width)) && (c = !0); this.ja = c ? this.ja | 256 : this.ja & -257; this.Xb.F() || z.k("Non-real actualBounds has been set. Object " + this + ", actualBounds: " + this.Xb.toString()); this.vx(g, this.Xb); z.dc(g) }; f.$i = function() {}; function Nm(a, b, c, d, e) { var g = a.W; g.x = b; g.y = c; g.width = d; g.height = e; if (!a.Aa.F()) { g = a.ud; c = a.margin; b = c.right + c.left; var h = c.top + c.bottom; c = g.width + b; g = g.height + h; d += b; e += h; b = Mm(a, !0); c === d && g === e && (b = $i); switch (b) { case $i: if (c > d || g > e) Yk(a, !0), rj(a, c > d ? d : c, g > e ? e : g); break; case lf: Yk(a, !0); rj(a, d, e, 0, 0); break; case Cm: Yk(a, !0); rj(a, d, g, 0, 0); break; case Bm: Yk(a, !0), rj(a, c, e, 0, 0) } } } f.vx = function(a, b) { Om(this, !1); var c = this.ca; if (null !== c && null !== c.h) { var d = this.ca; null !== d && (d.vn !== this && d.vF !== this && d.zF !== this || Pm(d, !0)); this.ta(); a.N(b) || (c.Nl(), this.Sv(c)) } }; f.Sv = function(a) { null !== this.yd && Pm(a, !0) }; z.defineProperty(O, { bq: "shadowVisible" }, function() { return this.Js }, function(a) { var b = this.Js; b !== a && (u && null !== a && z.g(a, "boolean", O, "shadowVisible"), this.Js = a, this.j("shadowVisible", b, a)) }); O.prototype.ff = function(a, b) { if (this.visible) { var c = this.Xb; if (0 !== c.width && 0 !== c.height && !isNaN(c.x) && !isNaN(c.y)) { var d = this.opacity, e = 1; if (1 !== d) { if (0 === d) return; e = a.globalAlpha; a.globalAlpha = e * d } if (a instanceof ed) a: { if (this.visible) { var g = null, h = a.nx; if (this instanceof I && (this.type === Qm || this.type === Rm)) Sm(this, a, b); else { var k = this.Xb; if (0 !== k.width && 0 !== k.height && !isNaN(k.x) && !isNaN(k.y)) { var l = this.transform, m = this.U; 0 !== (this.ja & 4096) === !0 && Tm(this); var c = 0 !== (this.ja & 256), n = !1; this instanceof qa && (a.font = this.font); if (c) { n = m.Vg() ? m.Ga : m.W; if (null !== this.vi) var p = this.vi, q = p.x, r = p.y, s = p.width, p = p.height; else q = Math.max(k.x, n.x), r = Math.max(k.y, n.y), s = Math.min(k.right, n.right) - q, p = Math.min(k.bottom, n.bottom) - r; if (q > k.width + k.x || k.x > n.width + n.x || r > k.height + k.y || k.y > n.height + n.y) break a; n = !0; qd(a, 1, 0, 0, 1, 0, 0); a.save(); a.beginPath(); a.rect(q, r, s, p); a.clip() } q = !1; if (this instanceof D) { var t = this, q = !0; if (!t.isVisible()) break a } a.ej.pf = [1, 0, 0, 1, 0, 0]; r = !1; q && this.sk && b.hj("drawShadows") && (s = this.Jm, a.TA(s.x * b.scale * b.jd, s.y * b.scale * b.jd, t.zg), a.xn(), a.shadowColor = t.Im); t = !1; this.ca && b.hj("drawShadows") && (t = this.ca.sk); !0 === this.bq ? (a.xn(), !1 === r && t && (qd(a, 1, 0, 0, 1, 0, 0), a.gb(), r = !0)) : !1 === this.bq && a.wn(); null !== this.uc && (Um(this, a, this.uc, !0, !0), !1 === r && t && (qd(a, 1, 0, 0, 1, 0, 0), a.gb(), r = !0), this.uc instanceof Da && this.uc.type === yd ? (a.beginPath(), a.rect(k.x, k.y, k.width, k.height), a.Gg(this.uc)) : a.fillRect(k.x, k.y, k.width, k.height)); this instanceof I ? qd(a, l.m11, l.m12, l.m21, l.m22, l.dx, l.dy) : a.ej.pf = [l.m11, l.m12, l.m21, l.m22, l.dx, l.dy]; if (null !== this.Nb) { !1 === r && t && (qd(a, 1, 0, 0, 1, 0, 0), a.gb(), r = !0); var p = this.Ga, l = k = 0, s = p.width, p = p.height, v = 0; this instanceof X && (p = this.ab.vb, k = p.x, l = p.y, s = p.width, p = p.height, v = this.Oe); Um(this, a, this.Nb, !0, !1); this.Nb instanceof Da && this.Nb.type === yd ? (a.beginPath(), a.rect(k - v / 2, l - v / 2, s + v, p + v), a.Gg(this.Nb)) : a.fillRect(k - v / 2, l - v / 2, s + v, p + v) } t && (null !== this.Nb || null !== this.uc || null !== m && 0 !== (m.ja & 512) || null !== m && (m.type === Dk || m.type === Yi) && m.gf() !== this) ? (Vm(this, !0), null === this.bq && a.wn()) : Vm(this, !1); this.nk(a, b); t && 0 !== (this.ja & 512) === !0 && a.xn(); q && t && a.wn(); c && (a.restore(), n && a.Cf.pop()); this instanceof I && (g = a.Cf.pop()); !0 === r && a.Cf.pop(); null !== a.nE && (null === g && (h === a.nx ? (qd(a, 1, 0, 0, 1, 0, 0), g = a.Cf.pop()) : g = a.nx), a.nE(this, g)) } } } } else { if (this instanceof I && (this.type === Qm || this.type === Rm)) { Sm(this, a, b); 1 !== d && (a.globalAlpha = e); return } this instanceof G && this.on(!1); u && u.bj && u.xH(a, this); g = this.transform; h = this.U; 0 !== (this.ja & 4096) === !0 && Tm(this); m = 0 !== (this.ja & 256); this instanceof qa && (a.font = this.font); if (m) { u && u.mE && z.trace("clip" + this.toString()); n = h.Vg() ? h.Ga : h.W; null !== this.vi ? (t = this.vi, k = t.x, l = t.y, q = t.width, t = t.height) : (k = Math.max(c.x, n.x), l = Math.max(c.y, n.y), q = Math.min(c.right, n.right) - k, t = Math.min(c.bottom, n.bottom) - l); if (k > c.width + c.x || c.x > n.width + n.x || l > c.height + c.y || c.y > n.height + n.y) { 1 !== d && (a.globalAlpha = e); return } u && u.mE && u.zH(a, k, l, q, t); a.save(); a.beginPath(); a.rect(k, l, q, t); a.clip() } n = !1; if (this instanceof D) { n = !0; if (!this.isVisible()) { 1 !== d && (a.globalAlpha = e); return } this.sk && b.hj("drawShadows") && (k = this.Jm, a.TA(k.x * b.scale * b.jd, k.y * b.scale * b.jd, this.zg), a.xn(), a.shadowColor = this.Im) } k = !1; this.ca && b.hj("drawShadows") && (k = this.ca.sk); !0 === this.bq ? a.xn() : !1 === this.bq && a.wn(); null !== this.uc && (Um(this, a, this.uc, !0, !0), this.uc instanceof Da && this.uc.type === yd ? (a.beginPath(), a.rect(c.x, c.y, c.width, c.height), a.Gg(this.uc)) : a.fillRect(c.x, c.y, c.width, c.height)); g.Pt() || a.transform(g.m11, g.m12, g.m21, g.m22, g.dx, g.dy); null !== this.Nb && (t = this.Ga, l = c = 0, q = t.width, t = t.height, r = 0, this instanceof X && (t = this.ab.vb, c = t.x, l = t.y, q = t.width, t = t.height, r = this.Oe), Um(this, a, this.Nb, !0, !1), this.Nb instanceof Da && this.Nb.type === yd ? (a.beginPath(), a.rect(c - r / 2, l - r / 2, q + r, t + r), a.Gg(this.Nb)) : a.fillRect(c - r / 2, l - r / 2, q + r, t + r)); u && u.bj && u.yH(a, this); k && (null !== this.Nb || null !== this.uc || null !== h && 0 !== (h.ja & 512) || null !== h && (h.type === Dk || h.type === Yi) && h.gf() !== this) ? (Vm(this, !0), null === this.bq && a.wn()) : Vm(this, !1); this.nk(a, b); k && 0 !== (this.ja & 512) === !0 && a.xn(); n && k && a.wn(); m ? (a.restore(), this instanceof I ? ca(a, !0) : ca(a, !1)) : g.Pt() || (h = 1 / (g.m11 * g.m22 - g.m12 * g.m21), a.transform(g.m22 * h, -g.m12 * h, -g.m21 * h, g.m11 * h, h * (g.m21 * g.dy - g.m22 * g.dx), h * (g.m12 * g.dx - g.m11 * g.dy))) } 1 !== d && (a.globalAlpha = e) } } }; function Sm(a, b, c) { var d = a.Xb; 0 === d.width || 0 === d.height || isNaN(d.x) || isNaN(d.y) || (null !== a.uc && (Um(a, b, a.uc, !0, !0), a.uc instanceof Da && a.uc.type === yd ? (b.beginPath(), b.rect(d.x, d.y, d.width, d.height), b.Gg(a.uc)) : b.fillRect(d.x, d.y, d.width, d.height)), null !== a.Nb && (Um(a, b, a.Nb, !0, !1), a.Nb instanceof Da && a.Nb.type === yd ? (b.beginPath(), b.rect(d.x, d.y, d.width, d.height), b.Gg(a.Nb)) : b.fillRect(d.x, d.y, d.width, d.height)), a.nk(b, c)) } O.prototype.nk = function() {}; function Um(a, b, c, d, e) { if (null !== c) { var g = 1, h = 1; if ("string" === typeof c) d ? b.fillStyle = c : b.strokeStyle = c; else if (c.type === rg) d ? b.fillStyle = c.color : b.strokeStyle = c.color; else { var k, h = a.Ga, g = h.width, h = h.height; if (e) var l = a.W, g = l.width, h = l.height; var m = b instanceof xd; if (m && c.ah && (c.type === ym || c.On === g && c.ty === h)) k = c.ah; else { var n = l = 0, p = 0, q = 0, r = 0, s = 0, s = r = 0; e && (l = a.W, g = l.width, h = l.height, r = l.x, s = l.y); l = c.start.x * g + c.start.offsetX; n = c.start.y * h + c.start.offsetY; p = c.end.x * g + c.end.offsetX; q = c.end.y * h + c.end.offsetY; l += r; p += r; n += s; q += s; if (c.type === sg) k = b.createLinearGradient(l, n, p, q); else if (c.type === yd) s = isNaN(c.xt) ? Math.max(g, h) / 2 : c.xt, isNaN(c.wu) ? (r = 0, s = Math.max(g, h) / 2) : r = c.wu, k = b.createRadialGradient(l, n, r, p, q, s); else if (c.type === ym) try { k = b.createPattern(c.pattern, "repeat") } catch (t) { k = null } else z.ic(c.type, "Brush type"); if (c.type !== ym && (e = c.st, null !== e)) for (e = e.i; e.next();) k.addColorStop(e.key, e.value); if (m && (c.ah = k, null !== k && (c.On = g, c.ty = h), null === k && c.type === ym && -1 !== c.On)) { c.On = -1; var v = a.h; null !== v && -1 === c.On && z.setTimeout(function() { v.Sp() }, 600) } } d ? b.fillStyle = k : b.strokeStyle = k } } } O.prototype.isContainedBy = O.prototype.Pl = function(a) { if (a instanceof I) a: { if (this !== a && null !== a) for (var b = this.U; null !== b;) { if (b === a) { a = !0; break a } b = b.U } a = !1 } else a = !1; return a }; O.prototype.isVisibleObject = O.prototype.nj = function() { if (!this.visible) return !1; var a = this.U; return null !== a ? a.nj() : !0 }; function Tm(a) { if (0 !== (a.ja & 2048) === !0) { var b = a.Hd; b.reset(); if (!a.Xb.F() || !a.ud.F()) { Wm(a, !1); return } b.translate(a.Xb.x, a.Xb.y); b.translate(-a.Ia.x, -a.Ia.y); var c = a.Ga; Km(a, b, c.x, c.y, c.width, c.height); Wm(a, !1); Xm(a, !0) } 0 !== (a.ja & 4096) === !0 && (b = a.U, null === b ? (a.zk.set(a.Hd), a.iv = a.scale, Xm(a, !1)) : null !== b.ph && (c = a.zk, c.reset(), b.Vg() ? c.multiply(b.zk) : null !== b.U && c.multiply(b.U.zk), c.multiply(a.Hd), a.iv = a.scale * b.iv, Xm(a, !1))) } function Km(a, b, c, d, e, g) { 1 !== a.scale && b.scale(a.scale); if (0 !== a.angle) { var h = ec; a.of && a.of.cd() && (h = a.of); var k = z.O(); if (a instanceof D && a.Zb !== a) for (c = a.Zb, d = c.Ga, k.tu(d.x, d.y, d.width, d.height, h), c.fl.Cb(k), k.offset(-c.Ia.x, -c.Ia.y), h = c.U; null !== h && h !== a;) h.fl.Cb(k), k.offset(-h.Ia.x, -h.Ia.y), h = h.U; else k.tu(c, d, e, g, h); b.rotate(a.angle, k.x, k.y); z.A(k) } } f = O.prototype; f.S = function(a) { void 0 === a && (a = !1); if (!0 !== ml(this)) { Yk(this, !0); Om(this, !0); var b = this.U; null !== b ? a || b.S() : (a = this.h, null !== a && (a.qg.add(this), this instanceof E && (a.pa.qb || this.mf(), null !== this.Nd && Ym(this.Nd)), a.Ce(!0))); if (this instanceof I) { if (this.ba === Dk || this.ba === Ki) a = this.gf(), null !== a && a.S(!0); a = this.va.o; for (var b = a.length, c = 0; c < b; c++) { var d = a[c]; !0 !== ml(d) && (d.Aa.F() || (d instanceof Zi || d instanceof I || d instanceof qa || Mm(d, !1) !== $i) && d.S(!0)) } } } }; f.Ap = function() { !1 === ml(this) && (Yk(this, !0), Om(this, !0)) }; function Ym(a) { if (!1 === nl(a)) { if (null !== a.U) a.U.S(); else { var b = a.h; null !== b && (b.qg.add(a), a instanceof E && a.mf(), b.Ce()) } Om(a, !0) } } f.Fi = function() { 0 !== (this.ja & 2048) === !1 && (Wm(this, !0), Xm(this, !0)) }; f.eA = function() { Xm(this, !0) }; f.ta = function() { var a = this.ca; null !== a && a.ta() }; function Mm(a, b) { var c = a.stretch, d = a.U; if (null !== d && d.ba === ga) return Zm(a, d.$d(a.Vb), d.Zd(a.column), b); if (null !== d && d.ba === Dk && d.gf() === a) return $m(a, lf, b); if (c === Am) { if (null !== d) { if (d.ba === Yi && d.gf() === a) return $m(a, lf, b); c = d.Xd; return c === Am ? $m(a, $i, b) : $m(a, c, b) } return $m(a, $i, b) } return $m(a, c, b) } function Zm(a, b, c, d) { var e = a.stretch; if (e !== Am) return $m(a, e, d); var g = e = null; switch (b.stretch) { case Bm: g = !0; break; case lf: g = !0 } switch (c.stretch) { case Cm: e = !0; break; case lf: e = !0 } b = a.U.Xd; null === e && (e = b === Cm || b === lf); null === g && (g = b === Bm || b === lf); return !0 === e && !0 === g ? $m(a, lf, d) : !0 === e ? $m(a, Cm, d) : !0 === g ? $m(a, Bm, d) : $m(a, $i, d) } function $m(a, b, c) { if (c) return b; if (b === $i) return $i; c = a.Aa; if (c.F()) return $i; a = a.angle; if (!isNaN(c.width)) if (90 !== a && 270 !== a) { if (b === Cm) return $i; if (b === lf) return Bm } else { if (b === Bm) return $i; if (b === lf) return Cm } if (!isNaN(c.height)) if (90 !== a && 270 !== a) { if (b === Bm) return $i; if (b === lf) return Cm } else { if (b === Cm) return $i; if (b === lf) return Bm } return b } z.defineProperty(O, { pu: "segmentOrientation" }, function() { return this.Bs }, function(a) { var b = this.Bs; b !== a && (u && z.Ba(a, G, O, "segmentOrientation"), this.Bs = a, this.S(), this.j("segmentOrientation", b, a), a === Ni && (this.angle = 0)) }); z.defineProperty(O, { De: "segmentIndex" }, function() { return this.zs }, function(a) { u && z.g(a, "number", O, "segmentIndex"); a = Math.round(a); var b = this.zs; b !== a && (this.zs = a, this.S(), this.j("segmentIndex", b, a)) }); z.defineProperty(O, { NA: "segmentFraction" }, function() { return this.ys }, function(a) { u && z.g(a, "number", O, "segmentFraction"); isNaN(a) ? a = 0 : 0 > a ? a = 0 : 1 < a && (a = 1); var b = this.ys; b !== a && (this.ys = a, this.S(), this.j("segmentFraction", b, a)) }); z.defineProperty(O, { EF: "segmentOffset" }, function() { return this.As }, function(a) { var b = this.As; b.N(a) || (u && z.l(a, N, O, "segmentOffset"), this.As = a = a.V(), this.S(), this.j("segmentOffset", b, a)) }); z.defineProperty(O, { stretch: "stretch" }, function() { return this.di }, function(a) { var b = this.di; b !== a && (u && z.Ba(a, O, O, "stretch"), this.di = a, this.S(), this.j("stretch", b, a)) }); z.defineProperty(O, { name: "name" }, function() { return this.Ub }, function(a) { var b = this.Ub; b !== a && (u && z.g(a, "string", O, "name"), this.Ub = a, null !== this.ca && (this.ca.il = null), this.j("name", b, a)) }); z.defineProperty(O, { opacity: "opacity" }, function() { return this.Xc }, function(a) { var b = this.Xc; b !== a && (z.g(a, "number", O, "opacity"), (0 > a || 1 < a) && z.ka(a, "0 <= value <= 1", O, "opacity"), this.Xc = a, this.j("opacity", b, a), a = this.h, b = this.ca, null !== a && null !== b && a.ta(lk(b, b.W))) }); z.defineProperty(O, { visible: "visible" }, function() { return 0 !== (this.ja & 1) }, function(a) { var b = 0 !== (this.ja & 1); b !== a && (u && z.g(a, "boolean", O, "visible"), this.ja ^= 1, this.j("visible", b, a), b = this.U, null !== b ? b.S() : this instanceof D && this.wd(a), this.ta(), an(this)) }); z.defineProperty(O, { ig: "pickable" }, function() { return 0 !== (this.ja & 2) }, function(a) { var b = 0 !== (this.ja & 2); b !== a && (u && z.g(a, "boolean", O, "pickable"), this.ja ^= 2, this.j("pickable", b, a)) }); z.defineProperty(O, { JH: "fromLinkableDuplicates" }, function() { return 0 !== (this.ja & 4) }, function(a) { var b = 0 !== (this.ja & 4); b !== a && (u && z.g(a, "boolean", O, "fromLinkableDuplicates"), this.ja ^= 4, this.j("fromLinkableDuplicates", b, a)) }); z.defineProperty(O, { KH: "fromLinkableSelfNode" }, function() { return 0 !== (this.ja & 8) }, function(a) { var b = 0 !== (this.ja & 8); b !== a && (u && z.g(a, "boolean", O, "fromLinkableSelfNode"), this.ja ^= 8, this.j("fromLinkableSelfNode", b, a)) }); z.defineProperty(O, { uJ: "toLinkableDuplicates" }, function() { return 0 !== (this.ja & 16) }, function(a) { var b = 0 !== (this.ja & 16); b !== a && (u && z.g(a, "boolean", O, "toLinkableDuplicates"), this.ja ^= 16, this.j("toLinkableDuplicates", b, a)) }); z.defineProperty(O, { vJ: "toLinkableSelfNode" }, function() { return 0 !== (this.ja & 32) }, function(a) { var b = 0 !== (this.ja & 32); b !== a && (u && z.g(a, "boolean", O, "toLinkableSelfNode"), this.ja ^= 32, this.j("toLinkableSelfNode", b, a)) }); z.defineProperty(O, { Ff: "isPanelMain" }, function() { return 0 !== (this.ja & 64) }, function(a) { var b = 0 !== (this.ja & 64); b !== a && (u && z.g(a, "boolean", O, "isPanelMain"), this.ja ^= 64, this.S(), this.j("isPanelMain", b, a)) }); z.defineProperty(O, { Mt: "isActionable" }, function() { return 0 !== (this.ja & 128) }, function(a) { var b = 0 !== (this.ja & 128); b !== a && (u && z.g(a, "boolean", O, "isActionable"), this.ja ^= 128, this.j("isActionable", b, a)) }); z.defineProperty(O, { vl: "areaBackground" }, function() { return this.uc }, function(a) { var b = this.uc; b !== a && (u && null !== a && z.ot(a, "GraphObject.areaBackground"), a instanceof Da && a.freeze(), this.uc = a, this.ta(), this.j("areaBackground", b, a)) }); z.defineProperty(O, { background: "background" }, function() { return this.Nb }, function(a) { var b = this.Nb; b !== a && (u && null !== a && z.ot(a, "GraphObject.background"), a instanceof Da && a.freeze(), this.Nb = a, this.ta(), this.j("background", b, a)) }); function Vm(a, b) { a.ja = b ? a.ja | 512 : a.ja & -513 } function bn(a, b) { a.ja = b ? a.ja | 1024 : a.ja & -1025 } function Wm(a, b) { a.ja = b ? a.ja | 2048 : a.ja & -2049 } function Xm(a, b) { a.ja = b ? a.ja | 4096 : a.ja & -4097 } function ml(a) { return 0 !== (a.ja & 8192) } function Yk(a, b) { a.ja = b ? a.ja | 8192 : a.ja & -8193 } function nl(a) { return 0 !== (a.ja & 16384) } function Om(a, b) { a.ja = b ? a.ja | 16384 : a.ja & -16385 } z.w(O, { ca: "part" }, function() { if (this instanceof D) return this; if (null !== this.Bm) return this.Bm; var a; for (a = this.U; a;) { if (a instanceof D) return this.Bm = a; a = a.U } return null }); z.w(O, { U: "panel" }, function() { return this.lh }); O.prototype.Tl = function(a) { this.lh = a }; z.w(O, { layer: "layer" }, function() { var a = this.ca; return null !== a ? a.layer : null }, { configurable: !0 }); z.w(O, { h: "diagram" }, function() { var a = this.ca; return null !== a ? a.h : null }, { configurable: !0 }); z.defineProperty(O, { position: "position" }, function() { return this.sb }, function(a) { var b = this.sb; b.N(a) || (u && z.l(a, N, O, "position"), a = a.V(), this.RA(a, b) && this.j("position", b, a)) }); O.prototype.RA = function(a) { this.sb = a; Ym(this); this.Fi(); return !0 }; O.prototype.Nx = function(a, b) { this.sb.n(a, b); cn(this); this.Fi() }; z.w(O, { W: "actualBounds" }, function() { return this.Xb }); z.defineProperty(O, { scale: "scale" }, function() { return this.bc }, function(a) { var b = this.bc; b !== a && (u && z.p(a, O, "scale"), 0 >= a && z.k("GraphObject.scale for " + this + " must be greater than zero, not: " + a), this.bc = a, this.Fi(), this.S(), this.j("scale", b, a)) }); z.defineProperty(O, { angle: "angle" }, function() { return this.bm }, function(a) { var b = this.bm; b !== a && (u && z.p(a, O, "angle"), a %= 360, 0 > a && (a += 360), b !== a && (this.bm = a, this.S(), this.Fi(), this.j("angle", b, a))) }); z.defineProperty(O, { Aa: "desiredSize" }, function() { return this.tf }, function(a) { var b = this.tf; b.N(a) || (u && z.l(a, Ea, O, "desiredSize"), this.tf = a = a.V(), this.S(), this instanceof X && this.Ae(), this.j("desiredSize", b, a), a = this.ca, null !== a && 0 !== (this.ja & 1024) && (Im(this, a, "width"), Im(this, a, "height"))) }); z.defineProperty(O, { width: "width" }, function() { return this.tf.width }, function(a) { if (this.tf.width !== a) { u && z.g(a, "number", O, "width"); var b = this.tf; this.tf = a = (new Ea(a, this.tf.height)).freeze(); this.S(); this instanceof X && this.Ae(); this.j("desiredSize", b, a); b = this.ca; null !== b && 0 !== (this.ja & 1024) && Im(this, b, "width") } }); z.defineProperty(O, { height: "height" }, function() { return this.tf.height }, function(a) { if (this.tf.height !== a) { u && z.g(a, "number", O, "height"); var b = this.tf; this.tf = a = (new Ea(this.tf.width, a)).freeze(); this.S(); this instanceof X && this.Ae(); this.j("desiredSize", b, a); b = this.ca; null !== b && 0 !== (this.ja & 1024) && Im(this, b, "height") } }); z.defineProperty(O, { cg: "minSize" }, function() { return this.Tj }, function(a) { var b = this.Tj; b.N(a) || (u && z.l(a, Ea, O, "minSize"), a = a.copy(), isNaN(a.width) && (a.width = 0), isNaN(a.height) && (a.height = 0), a.freeze(), this.Tj = a, this.S(), this.j("minSize", b, a)) }); z.defineProperty(O, { Xe: "maxSize" }, function() { return this.Rj }, function(a) { var b = this.Rj; b.N(a) || (u && z.l(a, Ea, O, "maxSize"), a = a.copy(), isNaN(a.width) && (a.width = Infinity), isNaN(a.height) && (a.height = Infinity), a.freeze(), this.Rj = a, this.S(), this.j("maxSize", b, a)) }); z.w(O, { Ia: "measuredBounds" }, function() { return this.ud }); z.w(O, { Ga: "naturalBounds" }, function() { return this.Wc }, { configurable: !0 }); z.defineProperty(O, { margin: "margin" }, function() { return this.Er }, function(a) { "number" === typeof a ? a = new Db(a) : u && z.l(a, Db, O, "margin"); var b = this.Er; b.N(a) || (this.Er = a = a.V(), this.S(), this.j("margin", b, a)) }); z.w(O, { transform: null }, function() { 0 !== (this.ja & 2048) === !0 && Tm(this); return this.Hd }); z.w(O, { ph: null }, function() { 0 !== (this.ja & 4096) === !0 && Tm(this); return this.zk }); z.defineProperty(O, { alignment: "alignment" }, function() { return this.Ie }, function(a) { var b = this.Ie; b.N(a) || (u && z.l(a, Q, O, "alignment"), a.Be() && !a.bd() && z.k("GraphObject.alignment for " + this + " must be a real Spot or Spot.Default, not: " + a), this.Ie = a = a.V(), Ym(this), this.j("alignment", b, a)) }); z.defineProperty(O, { column: "column" }, function() { return this.wq }, function(a) { u && z.p(a, O, "column"); a = Math.round(a); var b = this.wq; b !== a && (0 > a && z.ka(a, ">= 0", O, "column"), this.wq = a, this.S(), this.j("column", b, a)) }); z.defineProperty(O, { eH: "columnSpan" }, function() { return this.wi }, function(a) { u && z.g(a, "number", O, "columnSpan"); a = Math.round(a); var b = this.wi; b !== a && (1 > a && z.ka(a, ">= 1", O, "columnSpan"), this.wi = a, this.S(), this.j("columnSpan", b, a)) }); z.defineProperty(O, { Vb: "row" }, function() { return this.us }, function(a) { u && z.p(a, O, "row"); a = Math.round(a); var b = this.us; b !== a && (0 > a && z.ka(a, ">= 0", O, "row"), this.us = a, this.S(), this.j("row", b, a)) }); z.defineProperty(O, { rowSpan: "rowSpan" }, function() { return this.Ti }, function(a) { u && z.g(a, "number", O, "rowSpan"); a = Math.round(a); var b = this.Ti; b !== a && (1 > a && z.ka(a, ">= 1", O, "rowSpan"), this.Ti = a, this.S(), this.j("rowSpan", b, a)) }); z.defineProperty(O, { Qx: "spanAllocation" }, function() { return this.Os }, function(a) { var b = this.Os; b !== a && (null !== a && z.g(a, "function", O, "spanAllocation"), this.Os = a, this.j("spanAllocation", b, a)) }); z.defineProperty(O, { jk: "alignmentFocus" }, function() { return this.oq }, function(a) { var b = this.oq; b.N(a) || (u && z.l(a, Q, O, "alignmentFocus"), !a.Be() || a.bd() || a.N(Yb) && this instanceof E || z.k("GraphObject.alignmentFocus must be a real Spot or Spot.Default, not: " + a), this.oq = a = a.V(), this.S(), this.j("alignmentFocus", b, a)) }); z.defineProperty(O, { yd: "portId" }, function() { return this.fs }, function(a) { var b = this.fs; if (b !== a) { u && null !== a && z.g(a, "string", O, "portId"); var c = this.ca; null === c || c instanceof E || (z.k("Cannot set portID on a Link: " + a), c = null); null !== b && null !== c && dn(c, this); this.fs = a; if (null !== a && c) { c.Ph = !0; null === c.Dd && en(c); var d = this.yd; null !== d && c.Dd.add(d, this) } this.j("portId", b, a) } }); function an(a) { var b = a.ca; b instanceof E && (a = a.h, null === a || a.pa.qb || b.mf()) } z.defineProperty(O, { Eb: "toSpot" }, function() { return null !== this.la ? this.la.gk : Yb }, function(a) { this.Ue(); var b = this.la.gk; b.N(a) || (u && z.l(a, Q, O, "toSpot"), a = a.V(), this.la.gk = a, this.j("toSpot", b, a), an(this)) }); z.defineProperty(O, { Yl: "toEndSegmentLength" }, function() { return null !== this.la ? this.la.ek : 10 }, function(a) { this.Ue(); var b = this.la.ek; b !== a && (u && z.g(a, "number", O, "toEndSegmentLength"), 0 > a && z.ka(a, ">= 0", O, "toEndSegmentLength"), this.la.ek = a, this.j("toEndSegmentLength", b, a), an(this)) }); z.defineProperty(O, { zu: "toEndSegmentDirection" }, function() { return null !== this.la ? this.la.dk : Gm }, function(a) { this.Ue(); var b = this.la.dk; b !== a && (u && z.Ba(a, E, O, "toEndSegmentDirection"), this.la.dk = a, this.j("toEndSegmentDirection", b, a), an(this)) }); z.defineProperty(O, { Au: "toShortLength" }, function() { return null !== this.la ? this.la.fk : 0 }, function(a) { this.Ue(); var b = this.la.fk; b !== a && (u && z.g(a, "number", O, "toShortLength"), this.la.fk = a, this.j("toShortLength", b, a), an(this)) }); z.defineProperty(O, { TF: "toLinkable" }, function() { return this.Vs }, function(a) { var b = this.Vs; b !== a && (u && null !== a && z.g(a, "boolean", O, "toLinkable"), this.Vs = a, this.j("toLinkable", b, a)) }); z.defineProperty(O, { wJ: "toMaxLinks" }, function() { return this.Ws }, function(a) { var b = this.Ws; b !== a && (u && z.g(a, "number", O, "toMaxLinks"), 0 > a && z.ka(a, ">= 0", O, "toMaxLinks"), this.Ws = a, this.j("toMaxLinks", b, a)) }); z.defineProperty(O, { Db: "fromSpot" }, function() { return null !== this.la ? this.la.Gj : Yb }, function(a) { this.Ue(); var b = this.la.Gj; b.N(a) || (u && z.l(a, Q, O, "fromSpot"), a = a.V(), this.la.Gj = a, this.j("fromSpot", b, a), an(this)) }); z.defineProperty(O, { Il: "fromEndSegmentLength" }, function() { return null !== this.la ? this.la.Ej : 10 }, function(a) { this.Ue(); var b = this.la.Ej; b !== a && (u && z.g(a, "number", O, "fromEndSegmentLength"), 0 > a && z.ka(a, ">= 0", O, "fromEndSegmentLength"), this.la.Ej = a, this.j("fromEndSegmentLength", b, a), an(this)) }); z.defineProperty(O, { Et: "fromEndSegmentDirection" }, function() { return null !== this.la ? this.la.Dj : Gm }, function(a) { this.Ue(); var b = this.la.Dj; b !== a && (u && z.Ba(a, E, O, "fromEndSegmentDirection"), this.la.Dj = a, this.j("fromEndSegmentDirection", b, a), an(this)) }); z.defineProperty(O, { Ft: "fromShortLength" }, function() { return null !== this.la ? this.la.Fj : 0 }, function(a) { this.Ue(); var b = this.la.Fj; b !== a && (u && z.g(a, "number", O, "fromShortLength"), this.la.Fj = a, this.j("fromShortLength", b, a), an(this)) }); z.defineProperty(O, { vE: "fromLinkable" }, function() { return this.Zq }, function(a) { var b = this.Zq; b !== a && (u && null !== a && z.g(a, "boolean", O, "fromLinkable"), this.Zq = a, this.j("fromLinkable", b, a)) }); z.defineProperty(O, { Yz: "fromMaxLinks" }, function() { return this.$q }, function(a) { var b = this.$q; b !== a && (u && z.g(a, "number", O, "fromMaxLinks"), 0 > a && z.ka(a, ">= 0", O, "fromMaxLinks"), this.$q = a, this.j("fromMaxLinks", b, a)) }); z.defineProperty(O, { cursor: "cursor" }, function() { return this.Hq }, function(a) { var b = this.Hq; b !== a && (z.g(a, "string", O, "cursor"), this.Hq = a, this.j("cursor", b, a)) }); z.defineProperty(O, { click: "click" }, function() { return null !== this.ma ? this.ma.ui : null }, function(a) { Dm(this); var b = this.ma.ui; b !== a && (null !== a && z.g(a, "function", O, "click"), this.ma.ui = a, this.j("click", b, a)) }); z.defineProperty(O, { wt: "doubleClick" }, function() { return null !== this.ma ? this.ma.Ci : null }, function(a) { Dm(this); var b = this.ma.Ci; b !== a && (null !== a && z.g(a, "function", O, "doubleClick"), this.ma.Ci = a, this.j("doubleClick", b, a)) }); z.defineProperty(O, { Gz: "contextClick" }, function() { return null !== this.ma ? this.ma.xi : null }, function(a) { Dm(this); var b = this.ma.xi; b !== a && (null !== a && z.g(a, "function", O, "contextClick"), this.ma.xi = a, this.j("contextClick", b, a)) }); z.defineProperty(O, { au: "mouseEnter" }, function() { return null !== this.ma ? this.ma.Rr : null }, function(a) { Dm(this); var b = this.ma.Rr; b !== a && (null !== a && z.g(a, "function", O, "mouseEnter"), this.ma.Rr = a, this.j("mouseEnter", b, a)) }); z.defineProperty(O, { bu: "mouseLeave" }, function() { return null !== this.ma ? this.ma.Sr : null }, function(a) { Dm(this); var b = this.ma.Sr; b !== a && (null !== a && z.g(a, "function", O, "mouseLeave"), this.ma.Sr = a, this.j("mouseLeave", b, a)) }); z.defineProperty(O, { uA: "mouseOver" }, function() { return null !== this.ma ? this.ma.Pi : null }, function(a) { Dm(this); var b = this.ma.Pi; b !== a && (null !== a && z.g(a, "function", O, "mouseOver"), this.ma.Pi = a, this.j("mouseOver", b, a)) }); z.defineProperty(O, { tA: "mouseHover" }, function() { return null !== this.ma ? this.ma.Oi : null }, function(a) { Dm(this); var b = this.ma.Oi; b !== a && (null !== a && z.g(a, "function", O, "mouseHover"), this.ma.Oi = a, this.j("mouseHover", b, a)) }); z.defineProperty(O, { sA: "mouseHold" }, function() { return null !== this.ma ? this.ma.Ni : null }, function(a) { Dm(this); var b = this.ma.Ni; b !== a && (null !== a && z.g(a, "function", O, "mouseHold"), this.ma.Ni = a, this.j("mouseHold", b, a)) }); z.defineProperty(O, { II: "mouseDragEnter" }, function() { return null !== this.ma ? this.ma.Pr : null }, function(a) { Dm(this); var b = this.ma.Pr; b !== a && (null !== a && z.g(a, "function", O, "mouseDragEnter"), this.ma.Pr = a, this.j("mouseDragEnter", b, a)) }); z.defineProperty(O, { JI: "mouseDragLeave" }, function() { return null !== this.ma ? this.ma.Qr : null }, function(a) { Dm(this); var b = this.ma.Qr; b !== a && (null !== a && z.g(a, "function", O, "mouseDragLeave"), this.ma.Qr = a, this.j("mouseDragLeave", b, a)) }); z.defineProperty(O, { rA: "mouseDrop" }, function() { return null !== this.ma ? this.ma.Mi : null }, function(a) { Dm(this); var b = this.ma.Mi; b !== a && (null !== a && z.g(a, "function", O, "mouseDrop"), this.ma.Mi = a, this.j("mouseDrop", b, a)) }); z.defineProperty(O, { AD: "actionDown" }, function() { return null !== this.ma ? this.ma.iq : null }, function(a) { Dm(this); var b = this.ma.iq; b !== a && (null !== a && z.g(a, "function", O, "actionDown"), this.ma.iq = a, this.j("actionDown", b, a)) }); z.defineProperty(O, { BD: "actionMove" }, function() { return null !== this.ma ? this.ma.jq : null }, function(a) { Dm(this); var b = this.ma.jq; b !== a && (null !== a && z.g(a, "function", O, "actionMove"), this.ma.jq = a, this.j("actionMove", b, a)) }); z.defineProperty(O, { CD: "actionUp" }, function() { return null !== this.ma ? this.ma.kq : null }, function(a) { Dm(this); var b = this.ma.kq; b !== a && (null !== a && z.g(a, "function", O, "actionUp"), this.ma.kq = a, this.j("actionUp", b, a)) }); z.defineProperty(O, { zD: "actionCancel" }, function() { return null !== this.ma ? this.ma.hq : null }, function(a) { Dm(this); var b = this.ma.hq; b !== a && (null !== a && z.g(a, "function", O, "actionCancel"), this.ma.hq = a, this.j("actionCancel", b, a)) }); z.defineProperty(O, { $A: "toolTip" }, function() { return null !== this.ma ? this.ma.Wi : null }, function(a) { Dm(this); var b = this.ma.Wi; b !== a && (null !== a && z.l(a, da, O, "toolTip"), this.ma.Wi = a, this.j("toolTip", b, a)) }); z.defineProperty(O, { contextMenu: "contextMenu" }, function() { return null !== this.ma ? this.ma.yi : null }, function(a) { Dm(this); var b = this.ma.yi; b !== a && (null !== a && z.l(a, da, O, "contextMenu"), this.ma.yi = a, this.j("contextMenu", b, a)) }); O.prototype.bind = O.prototype.bind = function(a) { a.Ag = this; var b = this.op(); null !== b && fn(b) && z.k("Cannot add a Binding to a template that has already been copied: " + a); null === this.Ac && (this.Ac = new J(Xg)); this.Ac.add(a) }; O.prototype.findTemplateBinder = O.prototype.op = function() { for (var a = this instanceof I ? this : this.U; null !== a;) { if (null !== a.Nk) return a; a = a.U } return null }; O.prototype.setProperties = function(a) { z.qu(this, a) }; var gn; O.make = gn = function(a, b) { var c = arguments, d = null, e = null; if ("function" === typeof a) e = a; else if ("string" === typeof a) { var g = hn.na(a); "function" === typeof g ? (c = z.zl(arguments), d = g(c)) : e = aa[a] } null === d && (void 0 === e && (d = window.$, void 0 !== d && void 0 !== d.noop && z.k("GraphObject.make failed to complete. Is it conflicting with another $ var? (such as jQuery)"), z.k("GraphObject.make failed to complete, it may be conflicting with another var.")), null !== e && e.constructor || z.k("GraphObject.make requires a class function or class name, not: " + a), d = new e); g = 1; if (d instanceof C && 1 < c.length) { var h = d, e = c[1]; if ("string" === typeof e || e instanceof HTMLDivElement) Bk(h, e), g++ } for (; g < c.length; g++) e = c[g], void 0 === e ? z.k("Undefined value at argument " + g + " for object being constructed by GraphObject.make: " + d) : jn(d, e); return d }; function jn(a, b) { if ("string" === typeof b) if (a instanceof qa) a.text = b; else if (a instanceof X) a.Hb = b; else if (a instanceof vk) a.source = b; else if (a instanceof I) { var c = Ja(I, b); null !== c ? a.type = c : z.k("Unknown Panel type as an argument to GraphObject.make: " + b) } else a instanceof Da ? (c = Ja(Da, b), null !== c ? a.type = c : z.k("Unknown Brush type as an argument to GraphObject.make: " + b)) : a instanceof hf ? (c = Ja(hf, b), null !== c ? a.type = c : z.k("Unknown Geometry type as an argument to GraphObject.make: " + b)) : a instanceof Of ? (c = Ja(Of, b), null !== c ? a.type = c : z.k("Unknown PathSegment type as an argument to GraphObject.make: " + b)) : z.k("Unable to use a string as an argument to GraphObject.make: " + b); else if (b instanceof O) c = b, a instanceof I || z.k("A GraphObject can only be added to a Panel, not to: " + a), a.add(c); else if (b instanceof Fg) { var d = b, c = a, e; d.qe && c.getRowDefinition ? e = c.getRowDefinition(d.index) : !d.qe && c.getColumnDefinition ? e = c.getColumnDefinition(d.index) : z.k("A RowColumnDefinition can only be added to a Panel, not to: " + a); e.tt(d) } else if (b instanceof Ba) a instanceof G && b.ze === G ? 2 === (b.value & 2) ? a.Gx = b : b === Ui || b === Mi || b === Li ? a.Se = b : b === kn || b === ln || b === mn ? a.it = b : b !== nn && b !== Ni && z.k("Unknown Link enum value for a Link property: " + b) : a instanceof I && b.ze === I ? a.type = b : a instanceof qa && b.ze === qa ? a.iG = b : a instanceof X && (b === $i || b === bj || b === cj || b === Am) ? a.Zz = b : a instanceof vk && (b === $i || b === bj || b === cj) ? a.XH = b : a instanceof O && b.ze === G ? (c = a, 0 === b.name.indexOf("Orient") ? c.pu = b : z.k("Unknown Link enum value for GraphObject.segmentOrientation property: " + b)) : a instanceof O && b.ze === O ? a.stretch = b : a instanceof Fg && b.ze === Fg ? a.uu = b : a instanceof C && b.ze === C ? a.wl = b : a instanceof Da && b.ze === Da ? a.type = b : a instanceof hf && b.ze === hf ? a.type = b : a instanceof Of && b.ze === Of ? a.type = b : a instanceof Xg && b.ze === Xg ? a.mode = b : a instanceof Rf && b.ze === Rf ? a.Dc = b : a instanceof Y && b.ze === Y ? 0 === b.name.indexOf("Alignment") ? a.alignment = b : 0 === b.name.indexOf("Arrangement") ? a.Xf = b : 0 === b.name.indexOf("Compaction") ? a.compaction = b : 0 === b.name.indexOf("Path") ? a.path = b : 0 === b.name.indexOf("Sorting") ? a.sorting = b : 0 === b.name.indexOf("Style") ? a.zJ = b : z.k("Unknown enum value: " + b) : a instanceof on && b.ze === on ? 0 === b.name.indexOf("Aggressive") ? a.SG = b : 0 === b.name.indexOf("Cycle") ? a.mH = b : 0 === b.name.indexOf("Init") ? a.bI = b : 0 === b.name.indexOf("Layer") ? a.qI = b : z.k("Unknown enum value: " + b) : a instanceof tm && b.ze === tm ? b === pn || b === qn || b === rn || b === sn ? a.sorting = b : b === tn || b === zn ? a.Xf = b : b === An || b === Bn ? a.alignment = b : z.k("Unknown enum value: " + b) : a instanceof Cn && b.ze === Cn ? b === Dn || b === En || b === Fn || b === Gn || b === Hn ? a.sorting = b : b === In || b === Jn || b === Kn || b === Ln ? a.direction = b : b === Mn || b === Nn || b === On || b === Pn ? a.Xf = b : b === Qn || b === Rn ? a.tx = b : z.k("Unknown enum value: " + b) : z.k("No property to set for this enum value: " + b); else if (b instanceof Xg) a instanceof O ? a.bind(b) : a instanceof Fg ? a.bind(b) : z.k("A Binding can only be applied to a GraphObject or RowColumnDefinition, not to: " + a); else if (b instanceof kf) a instanceof hf ? a.cc.add(b) : z.k("A PathFigure can only be added to a Geometry, not to: " + a); else if (b instanceof Of) a instanceof kf ? a.Ab.add(b) : z.k("A PathSegment can only be added to a PathFigure, not to: " + a); else if (b instanceof vg) a instanceof C ? a.Sb = b : a instanceof F ? a.Sb = b : z.k("A Layout can only be assigned to a Diagram or a Group, not to: " + a); else if (Array.isArray(b)) for (c = 0; c < b.length; c++) jn(a, b[c]); else if ("object" === typeof b && null !== b) if (a instanceof Da) { e = new ma; for (c in b) d = parseFloat(c), isNaN(d) ? e[c] = b[c] : a.addColorStop(d, b[c]); z.qu(a, e) } else if (a instanceof Fg) { void 0 !== b.row ? (e = b.row, (void 0 === e || null === e || Infinity === e || isNaN(e) || 0 > e) && z.k("Must specify non-negative integer row for RowColumnDefinition " + b + ", not: " + e), a.qe = !0, a.index = e) : void 0 !== b.column && (e = b.column, (void 0 === e || null === e || Infinity === e || isNaN(e) || 0 > e) && z.k("Must specify non-negative integer column for RowColumnDefinition " + b + ", not: " + e), a.qe = !1, a.index = e); e = new ma; for (c in b) "row" !== c && "column" !== c && (e[c] = b[c]); z.qu(a, e) } else z.qu(a, b); else z.k('Unknown initializer "' + b + '" for object being constructed by GraphObject.make: ' + a) } var hn = new na("string", "function"); O.getBuilders = function() { var a = new na("string", "function"), b; for (b in hn) if (b !== b.toLowerCase()) { var c = hn[b]; "function" === typeof c && a.add(b, c) } a.freeze(); return a }; var Sn; O.defineBuilder = Sn = function(a, b) { z.g(a, "string", O, "defineBuilder:name"); z.g(b, "function", O, "defineBuilder:func"); var c = a.toLowerCase(); "" !== a && "none" !== c && a !== c || z.k("Shape.defineFigureGenerator name must not be empty or None or all-lower-case: " + a); hn.add(a, b) }; var Tn; O.takeBuilderArgument = Tn = function(a, b, c) { void 0 === c && (c = null); var d = a[1]; if ("function" === typeof c ? c(d) : "string" === typeof d) return a.splice(1, 1), d; if (void 0 === b) throw Error("no " + ("function" === typeof c ? "satisfactory" : "string") + " argument for GraphObject builder " + a[0]); return b }; Sn("Button", function() { var a = new Da(sg); a.addColorStop(0, "white"); a.addColorStop(1, "lightgray"); var b = new Da(sg); b.addColorStop(0, "white"); b.addColorStop(1, "dodgerblue"); a = gn(I, Dk, { Mt: !0 }, { _buttonFillNormal: a, _buttonStrokeNormal: "gray", _buttonFillOver: b, _buttonStrokeOver: "blue" }, gn(X, { name: "ButtonBorder", Hb: "Rectangle", C: new Q(0, 0, 2.761423749153968, 2.761423749153968), D: new Q(1, 1, -2.761423749153968, -2.761423749153968), fill: a, stroke: "gray" })); a.au = function(a, b) { var e = b.oe("ButtonBorder"); if (e instanceof X) { var g = b._buttonFillOver; b._buttonFillNormal = e.fill; e.fill = g; g = b._buttonStrokeOver; b._buttonStrokeNormal = e.stroke; e.stroke = g } }; a.bu = function(a, b) { var e = b.oe("ButtonBorder"); e instanceof X && (e.fill = b._buttonFillNormal, e.stroke = b._buttonStrokeNormal) }; return a }); Sn("TreeExpanderButton", function() { var a = gn("Button", { _treeExpandedFigure: "MinusLine", _treeCollapsedFigure: "PlusLine" }, gn(X, { name: "ButtonIcon", Hb: "MinusLine", Aa: ae }, (new Xg("figure", "isTreeExpanded", function(a, c) { var d = c.U; return a ? d._treeExpandedFigure : d._treeCollapsedFigure })).ux()), { visible: !1 }, (new Xg("visible", "isTreeLeaf", function(a) { return !a })).ux()); a.click = function(a, c) { var d = c.ca; d instanceof da && (d = d.Wf); if (d instanceof E) { var e = d.h; if (null !== e) { e = e.wb; if (d.vd) { if (!e.canCollapseTree(d)) return } else if (!e.canExpandTree(d)) return; a.Gc = !0; d.vd ? e.collapseTree(d) : e.expandTree(d) } } }; return a }); Sn("SubGraphExpanderButton", function() { var a = gn("Button", { _subGraphExpandedFigure: "MinusLine", _subGraphCollapsedFigure: "PlusLine" }, gn(X, { name: "ButtonIcon", Hb: "MinusLine", Aa: ae }, (new Xg("figure", "isSubGraphExpanded", function(a, c) { var d = c.U; return a ? d._subGraphExpandedFigure : d._subGraphCollapsedFigure })).ux())); a.click = function(a, c) { var d = c.ca; d instanceof da && (d = d.Wf); if (d instanceof F) { var e = d.h; if (null !== e) { e = e.wb; if (d.re) { if (!e.canCollapseSubGraph(d)) return } else if (!e.canExpandSubGraph(d)) return; a.Gc = !0; d.re ? e.collapseSubGraph(d) : e.expandSubGraph(d) } } }; return a }); Sn("ContextMenuButton", function() { var a = gn("Button"); a.stretch = Cm; var b = a.oe("ButtonBorder"); b instanceof X && (b.Hb = "Rectangle", b.C = new Q(0, 0, 2, 3), b.D = new Q(1, 1, -2, -2)); return a }); Sn("PanelExpanderButton", function(a) { var b = Tn(a, "COLLAPSIBLE"); a = gn("Button", gn(X, "TriangleUp", { Aa: new Ea(6, 4) }, (new Xg("figure", "visible", function(a) { return a ? "TriangleUp" : "TriangleDown" })).ux(b))); var c = a.oe("ButtonBorder"); c instanceof X && (c.stroke = null, c.fill = "transparent"); a.click = function(a, c) { var g = c.h; if (null !== g && !g.jb) { var h = c.ca.oe(b); null !== h && (g.Wb("Collapse/Expand Panel"), h.visible = !h.visible, g.Jd("Collapse/Expand Panel")) } }; return a }); Sn("CheckBoxButton", function(a) { var b = Tn(a); a = gn("Button", { "ButtonBorder.fill": "white", "ButtonBorder.stroke": "gray", width: 14, height: 14 }, gn(X, { name: "ButtonIcon", LH: "M0 4 L3 9 9 0", ub: 2, stretch: lf, Zz: bj, visible: !1 }, "" !== b ? (new Xg("visible", b)).yI() : [])); a.click = function(a, d) { if (!(a.h.jb || "" !== b && a.h.ha.jb)) { a.Gc = !0; var e = d.oe("ButtonIcon"); e.h.Wb("checkbox"); e.visible = !e.visible; "function" === typeof d._doClick && d._doClick(a, d); e.h.Jd("checkbox") } }; return a }); Sn("CheckBox", function(a) { a = Tn(a); a = gn("CheckBoxButton", a, { name: "Button", margin: new Db(0, 1, 0, 0) }); var b = gn(I, "Horizontal", a, { Mt: !0, margin: 1, _buttonFillNormal: a._buttonFillNormal, _buttonStrokeNormal: a._buttonStrokeNormal, _buttonFillOver: a._buttonFillOver, _buttonStrokeOver: a._buttonStrokeOver, au: a.au, bu: a.bu, click: a.click, _buttonClick: a.click }); a.au = null; a.bu = null; a.click = null; return b }); function Em() { this.yi = this.Wi = this.hq = this.kq = this.jq = this.iq = this.Mi = this.Qr = this.Pr = this.Ni = this.Oi = this.Pi = this.Sr = this.Rr = this.xi = this.Ci = this.ui = null } Em.prototype.copy = function() { var a = new Em; a.ui = this.ui; a.Ci = this.Ci; a.xi = this.xi; a.Rr = this.Rr; a.Sr = this.Sr; a.Pi = this.Pi; a.Oi = this.Oi; a.Ni = this.Ni; a.Pr = this.Pr; a.Qr = this.Qr; a.Mi = this.Mi; a.iq = this.iq; a.jq = this.jq; a.kq = this.kq; a.hq = this.hq; a.Wi = this.Wi; a.yi = this.yi; return a }; function I(a) { O.call(this); void 0 === a ? 0 === arguments.length ? this.ba = ej : z.k("invalid argument to Panel constructor: undefined") : (z.Ba(a, I, I, "type"), this.ba = a); this.va = new J(O); this.df = Kd; this.dh = !1; this.ba === Gk && (this.dh = !0); this.hr = !1; this.Lq = Pc; this.Bi = Am; this.ba === ga && Un(this); this.Zo = bj; this.cr = ce; this.dr = Id; this.Nk = this.fe = null; this.vr = NaN; this.sg = this.Ii = null; this.vo = "category"; this.rg = null; this.Yi = new w(NaN, NaN, NaN, NaN); this.Lm = null; this.Ph = !1; this.vs = null } z.Qa(I, O); z.ii(I); z.ia("Panel", I); function Un(a) { a.Aj = Kd; a.Mh = 1; a.Ai = null; a.hm = null; a.Lh = 1; a.Kh = null; a.gm = null; a.Wd = []; a.Sd = []; a.Gm = Vn; a.fm = Vn; a.Xi = 0; a.Ji = 0 } I.prototype.cloneProtected = function(a) { O.prototype.cloneProtected.call(this, a); a.ba = this.ba; a.df = this.df.V(); a.dh = this.dh; a.hr = this.hr; a.Lq = this.Lq.V(); a.Bi = this.Bi; if (a.ba === ga) { a.Aj = this.Aj.V(); a.Mh = this.Mh; a.Ai = this.Ai; a.hm = this.hm; a.Lh = this.Lh; a.Kh = this.Kh; a.gm = this.gm; var b = []; if (0 < this.Wd.length) for (var c = this.Wd, d = c.length, e = 0; e < d; e++) if (void 0 !== c[e]) { var g = c[e].copy(); g.Tl(a); b[e] = g } a.Wd = b; b = []; if (0 < this.Sd.length) for (c = this.Sd, d = c.length, e = 0; e < d; e++) void 0 !== c[e] && (g = c[e].copy(), g.Tl(a), b[e] = g); a.Sd = b; a.Gm = this.Gm; a.fm = this.fm; a.Xi = this.Xi; a.Ji = this.Ji } a.Zo = this.Zo; a.cr = this.cr.V(); a.dr = this.dr.V(); a.fe = this.fe; a.Nk = this.Nk; a.vr = this.vr; a.Ii = this.Ii; a.sg = this.sg; a.vo = this.vo; a.Yi.assign(this.Yi); a.Ph = this.Ph; null !== this.vs && (a.vs = this.vs) }; I.prototype.ji = function(a) { O.prototype.ji.call(this, a); a.va = this.va; for (var b = a.va.o, c = b.length, d = 0; d < c; d++) b[d].lh = a; a.Lm = null }; I.prototype.copy = function() { var a = O.prototype.copy.call(this); if (null !== a) { for (var b = this.va.o, c = b.length, d = 0; d < c; d++) { var e = b[d].copy(), g = a; e.Tl(g); e.Bm = null; var h = g.va, k = h.count; h.Ld(k, e); h = g.ca; if (null !== h) { h.il = null; null !== e.yd && h instanceof E && (h.Ph = !0); var l = g.h; null !== l && l.pa.qb || h.Rc(Uf, "elements", g, null, e, null, k) } } return a } return null }; I.prototype.toString = function() { return "Panel(" + this.type + ")#" + z.nd(this) }; var ej; I.Position = ej = z.s(I, "Position", 0); I.Horizontal = z.s(I, "Horizontal", 1); var Ck; I.Vertical = Ck = z.s(I, "Vertical", 2); var Yi; I.Spot = Yi = z.s(I, "Spot", 3); var Dk; I.Auto = Dk = z.s(I, "Auto", 4); var ga; I.Table = ga = z.s(I, "Table", 5); I.Viewbox = z.s(I, "Viewbox", 6); var Qm; I.TableRow = Qm = z.s(I, "TableRow", 7); var Rm; I.TableColumn = Rm = z.s(I, "TableColumn", 8); var Ki; I.Link = Ki = z.s(I, "Link", 9); var Gk; I.Grid = Gk = z.s(I, "Grid", 10); z.defineProperty(I, { type: "type" }, function() { return this.ba }, function(a) { var b = this.ba; b !== a && (u && z.Ba(a, I, I, "type"), b !== Qm && b !== Rm || z.k("Cannot change Panel.type when it is already a TableRow or a TableColumn: " + a), this.ba = a, this.ba === Gk ? this.dh = !0 : this.ba === ga && Un(this), this.S(), this.j("type", b, a)) }); z.w(I, { elements: "elements" }, function() { return this.va.i }); z.w(I, { Ga: "naturalBounds" }, function() { return this.Wc }); z.defineProperty(I, { padding: "padding" }, function() { return this.df }, function(a) { "number" === typeof a ? (0 > a && z.ka(a, ">= 0", I, "padding"), a = new Db(a)) : (z.l(a, Db, I, "padding"), 0 > a.left && z.ka(a.left, ">= 0", I, "padding:value.left"), 0 > a.right && z.ka(a.right, ">= 0", I, "padding:value.right"), 0 > a.top && z.ka(a.top, ">= 0", I, "padding:value.top"), 0 > a.bottom && z.ka(a.bottom, ">= 0", I, "padding:value.bottom")); var b = this.df; b.N(a) || (this.df = a = a.V(), this.S(), this.j("padding", b, a)) }); z.defineProperty(I, { Bl: "defaultAlignment" }, function() { return this.Lq }, function(a) { var b = this.Lq; b.N(a) || (u && z.l(a, Q, I, "defaultAlignment"), this.Lq = a = a.V(), this.S(), this.j("defaultAlignment", b, a)) }); z.defineProperty(I, { Xd: "defaultStretch" }, function() { return this.Bi }, function(a) { var b = this.Bi; b !== a && (z.Ba(a, O, I, "defaultStretch"), this.Bi = a, this.S(), this.j("defaultStretch", b, a)) }); z.defineProperty(I, { qK: "defaultSeparatorPadding" }, function() { return void 0 === this.Aj ? Kd : this.Aj }, function(a) { if (void 0 !== this.Aj) { "number" === typeof a ? a = new Db(a) : u && z.l(a, Db, I, "defaultSeparatorPadding"); var b = this.Aj; b.N(a) || (this.Aj = a = a.V(), this.j("defaultSeparatorPadding", b, a)) } }); z.defineProperty(I, { oK: "defaultRowSeparatorStroke" }, function() { return void 0 === this.Ai ? null : this.Ai }, function(a) { var b = this.Ai; b !== a && (null === a || "string" === typeof a || a instanceof Da) && (a instanceof Da && a.freeze(), this.Ai = a, this.j("defaultRowSeparatorStroke", b, a)) }); z.defineProperty(I, { pK: "defaultRowSeparatorStrokeWidth" }, function() { return void 0 === this.Mh ? 1 : this.Mh }, function(a) { if (void 0 !== this.Mh) { var b = this.Mh; b !== a && isFinite(a) && 0 <= a && (this.Mh = a, this.j("defaultRowSeparatorStrokeWidth", b, a)) } }); z.defineProperty(I, { nK: "defaultRowSeparatorDashArray" }, function() { return void 0 === this.hm ? null : this.hm }, function(a) { if (void 0 !== this.hm) { var b = this.hm; if (b !== a) { null === a || Array.isArray(a) || z.ic(a, "Array", I, "defaultRowSeparatorDashArray:value"); if (null !== a) { for (var c = a.length, d = 0, e = 0; e < c; e++) { var g = a[e]; "number" === typeof g && 0 <= g && isFinite(g) || z.k("defaultRowSeparatorDashArray value " + g + " at index " + e + " must be a positive number or zero."); d += g } if (0 === d) { if (null === b) return; a = null } } this.hm = a; this.ta(); this.j("defaultRowSeparatorDashArray", b, a) } } }); z.defineProperty(I, { iK: "defaultColumnSeparatorStroke" }, function() { return void 0 === this.Kh ? null : this.Kh }, function(a) { if (void 0 !== this.Kh) { var b = this.Kh; b !== a && (null === a || "string" === typeof a || a instanceof Da) && (a instanceof Da && a.freeze(), this.Kh = a, this.j("defaultColumnSeparatorStroke", b, a)) } }); z.defineProperty(I, { jK: "defaultColumnSeparatorStrokeWidth" }, function() { return void 0 === this.Lh ? 1 : this.Lh }, function(a) { if (void 0 !== this.Lh) { var b = this.Lh; b !== a && isFinite(a) && 0 <= a && (this.Lh = a, this.j("defaultColumnSeparatorStrokeWidth", b, a)) } }); z.defineProperty(I, { hK: "defaultColumnSeparatorDashArray" }, function() { return void 0 === this.gm ? null : this.gm }, function(a) { if (void 0 !== this.gm) { var b = this.gm; if (b !== a) { null === a || Array.isArray(a) || z.ic(a, "Array", I, "defaultColumnSeparatorDashArray:value"); if (null !== a) { for (var c = a.length, d = 0, e = 0; e < c; e++) { var g = a[e]; "number" === typeof g && 0 <= g && isFinite(g) || z.k("defaultColumnSeparatorDashArray value " + g + " at index " + e + " must be a positive number or zero."); d += g } if (0 === d) { if (null === b) return; a = null } } this.gm = a; this.ta(); this.j("defaultColumnSeparatorDashArray", b, a) } } }); z.defineProperty(I, { FL: "viewboxStretch" }, function() { return this.Zo }, function(a) { var b = this.Zo; b !== a && (z.Ba(a, O, I, "viewboxStretch"), this.Zo = a, this.j("viewboxStretch", b, a)) }); z.defineProperty(I, { bx: "gridCellSize" }, function() { return this.cr }, function(a) { var b = this.cr; b.N(a) || (z.l(a, Ea, I, "gridCellSize"), a.F() && 0 !== a.width && 0 !== a.height || z.k("Invalid Panel.gridCellSize: " + a), this.cr = a.V(), null !== this.h && this === this.h.Gt && hl(this.h), this.ta(), this.j("gridCellSize", b, a)) }); z.defineProperty(I, { AE: "gridOrigin" }, function() { return this.dr }, function(a) { var b = this.dr; b.N(a) || (z.l(a, N, I, "gridOrigin"), a.F() || z.k("Invalid Panel.gridOrigin: " + a), this.dr = a.V(), null !== this.h && hl(this.h), this.ta(), this.j("gridOrigin", b, a)) }); f = I.prototype; f.Sv = function(a) { O.prototype.Sv.call(this, a); for (var b = this.va.o, c = b.length, d = 0; d < c; d++) b[d].Sv(a) }; f.nk = function(a, b) { if (this.ba === Gk) { var c = this.gj() * b.scale; 0 >= c && (c = 1); var d = this.bx, e = d.width, d = d.height, g = this.Ga, h = g.width, g = g.height, k = Math.ceil(h / e), l = Math.ceil(g / d), m = this.AE; a.save(); a.beginPath(); a.rect(0, 0, h, g); a.clip(); for (var n = [], p = this.va.o, q = p.length, r = 0; r < q; r++) { var s = p[r], t = []; n.push(t); if (s.visible) for (var s = Gl(s.Hb), v = r + 1; v < q; v++) { var x = p[v]; x.visible && Gl(x.Hb) === s && (x = x.interval, 2 <= x && t.push(x)) } } p = this.va.o; q = p.length; for (r = 0; r < q; r++) { var y = p[r]; if (y.visible && (t = y.interval, !(2 > e * t * c))) { var s = n[r], v = !1, A = !0, B = y.QF; null !== B && (v = !0, A = a.Tz(B, y.ve)); if ("LineV" === y.Hb) { a.lineWidth = y.ub; Um(this, a, y.stroke, !1, !1); a.beginPath(); for (var L = x = Math.floor(-m.x / e); L <= x + k; L++) { var H = L * e + m.x; 0 <= H && H < h && Wn(L, t, s) && (v && !A ? Hm(a, H, 0, H, g, B, y.ve) : (a.moveTo(H, 0), a.lineTo(H, g))) } a.stroke() } else if ("LineH" === y.Hb) { a.lineWidth = y.ub; Um(this, a, y.stroke, !1, !1); a.beginPath(); for (L = x = Math.floor(-m.y / d); L <= x + l; L++) H = L * d + m.y, 0 <= H && H <= g && Wn(L, t, s) && (v && !A ? Hm(a, 0, H, h, H, B, y.ve) : (a.moveTo(0, H), a.lineTo(h, H))); a.stroke() } else if ("BarV" === y.Hb) for (Um(this, a, y.fill, !0, !1), y = y.width, isNaN(y) && (y = e), L = x = Math.floor(-m.x / e); L <= x + k; L++) H = L * e + m.x, 0 <= H && H < h && Wn(L, t, s) && a.fillRect(H, 0, y, g); else if ("BarH" === y.Hb) for (Um(this, a, y.fill, !0, !1), y = y.height, isNaN(y) && (y = d), L = x = Math.floor(-m.y / d); L <= x + l; L++) H = L * d + m.y, 0 <= H && H <= g && Wn(L, t, s) && a.fillRect(0, H, h, y); v && a.Pz() } } a.restore(); ca(a, !1) } else { this.ba === ga && (a.lineCap = "butt", Xn(this, a, !0, this.Wd, !0), Xn(this, a, !1, this.Sd, !0), Yn(this, a, !0, this.Wd), Yn(this, a, !1, this.Sd), Xn(this, a, !0, this.Wd, !1), Xn(this, a, !1, this.Sd, !1)); (c = this.KE) && a.save(); e = this.gf(); d = this.va.o; h = d.length; for (g = 0; g < h; g++) k = d[g], c && k === e && (a.Nw = !0), k.ff(a, b), c && k === e && (a.Nw = !1); c && (a.restore(), ca(a, !0)); u && u.BH && this instanceof G && u.AH(a, b, this) } }; function Yn(a, b, c, d) { for (var e = d.length, g = a.W, h = c ? a.$d(0) : a.Zd(0), k = 0; k < e; k++) { var l = d[k]; if (void 0 !== l && l !== h && 0 !== l.Oa) { if (c) { if (l.position > g.height) continue } else if (l.position > g.width) continue; var m = l.$p; isNaN(m) && (m = c ? a.Mh : a.Lh); var n = l.Zp; null === n && (n = c ? a.Ai : a.Kh); if (0 !== m && null !== n) { Um(a, b, n, !1, !1); var n = !1, p = !0, q = l.iJ; null !== q && (n = !0, void 0 !== b.setLineDash ? (b.setLineDash(q), b.lineDashOffset = a.ve) : void 0 !== b.webkitLineDash ? (b.webkitLineDash = q, b.webkitLineDashOffset = a.ve) : void 0 !== b.mozDash ? (b.mozDash = q, b.mozDashOffset = a.ve) : p = !1); b.beginPath(); var r = l.position + m; c ? r > g.height && (m -= r - g.height) : r > g.width && (m -= r - g.width); l = l.position + m / 2; b.lineWidth = m; r = a.padding; c ? (l += r.top, m = r.left, r = g.width - r.right, n && !p ? Hm(b, m, l, r, l, q, 0) : (b.moveTo(m, l), b.lineTo(r, l))) : (l += r.left, m = r.top, r = g.height - r.bottom, n && !p ? Hm(b, l, m, l, r, q, 0) : (b.moveTo(l, m), b.lineTo(l, r))); b.stroke(); n && (void 0 !== b.setLineDash ? (b.setLineDash(z.xj), b.lineDashOffset = 0) : void 0 !== b.webkitLineDash ? (b.webkitLineDash = z.xj, b.webkitLineDashOffset = 0) : void 0 !== b.mozDash && (b.mozDash = null, b.mozDashOffset = 0)) } } } } function Xn(a, b, c, d, e) { for (var g = d.length, h = a.W, k = 0; k < g; k++) { var l = d[k]; if (void 0 !== l && null !== l.background && l.Mz !== e && 0 !== l.Oa) { var m = c ? h.height : h.width; if (!(l.position > m)) { var n = l.Re(), p = l.$p; isNaN(p) && (p = c ? a.Mh : a.Lh); var q = l.Zp; null === q && (q = c ? a.Ai : a.Kh); null === q && (p = 0); n -= p; p = l.position + p; n += l.Oa; p + n > m && (n = m - p); 0 >= n || (m = a.padding, Um(a, b, l.background, !0, !1), c ? b.fillRect(m.left, p + m.top, h.width - (m.left + m.right), n) : b.fillRect(p + m.left, m.top, n, h.height - (m.top + m.bottom))) } } } } function Wn(a, b, c) { if (0 !== a % b) return !1; b = c.length; for (var d = 0; d < b; d++) if (0 === a % c[d]) return !1; return !0 } function Gl(a) { return "LineV" === a || "BarV" === a } f.tp = function(a, b, c, d, e) { var g = this.Vg(), h = this.transform, k = 1 / (h.m11 * h.m22 - h.m12 * h.m21), l = h.m22 * k, m = -h.m12 * k, n = -h.m21 * k, p = h.m11 * k, q = k * (h.m21 * h.dy - h.m22 * h.dx), r = k * (h.m12 * h.dx - h.m11 * h.dy); if (null !== this.vl) return h = this.W, Ne(h.left, h.top, h.right, h.bottom, a, b, c, d, e); if (null !== this.background) g = a * l + b * n + q, k = a * m + b * p + r, a = c * l + d * n + q, c = c * m + d * p + r, e.n(0, 0), d = this.Ga, c = Ne(0, 0, d.width, d.height, g, k, a, c, e), e.transform(h); else { g || (l = 1, n = m = 0, p = 1, r = q = 0); k = a * l + b * n + q; a = a * m + b * p + r; l = c * l + d * n + q; d = c * m + d * p + r; e.n(l, d); m = (l - k) * (l - k) + (d - a) * (d - a); c = !1; p = this.va.o; r = p.length; n = z.O(); for (q = 0; q < r; q++) b = p[q], b.visible && b.tp(k, a, l, d, n) && (c = !0, b = (k - n.x) * (k - n.x) + (a - n.y) * (a - n.y), b < m && (m = b, e.set(n))); z.A(n); g && e.transform(h) } return c }; f.S = function(a) { O.prototype.S.call(this, a); this.ba === Dk && (a = this.gf(), null !== a && a.S(!0)); a = this.va.o; for (var b = a.length, c = 0; c < b; c++) { var d = a[c]; !0 !== ml(d) && (d.Aa.F() || (d instanceof Zi || d instanceof I || d instanceof qa || Mm(d, !1) !== $i) && d.S(!0)) } }; f.Ap = function() { if (!1 === ml(this)) { Yk(this, !0); Om(this, !0); for (var a = this.va.o, b = a.length, c = 0; c < b; c++) a[c].Ap() } }; f.Fi = function() { if (0 !== (this.ja & 2048) === !1) { Wm(this, !0); Xm(this, !0); for (var a = this.va.o, b = a.length, c = 0; c < b; c++) a[c].eA() } }; f.eA = function() { Xm(this, !0); for (var a = this.va.o, b = a.length, c = 0; c < b; c++) a[c].eA() }; f.Ip = function(a, b, c, d) { var e = this.Yi; e.width = 0; e.height = 0; var g = this.Aa, h = this.cg; void 0 === c && (c = h.width, d = h.height); c = Math.max(c, h.width); d = Math.max(d, h.height); var k = this.Xe; isNaN(g.width) || (a = Math.min(g.width, k.width)); isNaN(g.height) || (b = Math.min(g.height, k.height)); a = Math.max(c, a); b = Math.max(d, b); var l = this.padding; a = Math.max(a - l.left - l.right, 0); b = Math.max(b - l.top - l.bottom, 0); var m = this.va.o; if (0 !== m.length) { var n = this.ba.Ub; switch (n) { case "Position": var p = a, q = b, r = c, s = d, t = m.length; e.x = 0; e.y = 0; e.width = 0; for (var v = e.height = 0; v < t; v++) { var x = m[v]; if (x.visible || x === this.Zb) { var y = x.margin, A = y.right + y.left, B = y.top + y.bottom; rj(x, p, q, r, s); var L = x.Ia, H = Math.max(L.width + A, 0), U = Math.max(L.height + B, 0), ea = x.position.x, W = x.position.y; isFinite(ea) || (ea = 0); isFinite(W) || (W = 0); if (x instanceof X) { var P = x; if (P.ME) var ba = P.ub / 2, ea = ea - ba, W = W - ba } Ib(e, ea, W, H, U) } } break; case "Vertical": for (var Oa = a, sa = c, Na = m.length, ua = z.rb(), Ha = 0; Ha < Na; Ha++) { var Aa = m[Ha]; if (Aa.visible || Aa === this.Zb) { var jc = Mm(Aa, !1); if (jc !== $i && jc !== Bm) ua.push(Aa); else { var zd = Aa.margin, Ad = zd.right + zd.left, Qe = zd.top + zd.bottom; rj(Aa, Oa, Infinity, sa, 0); var ac = Aa.Ia, Ig = Math.max(ac.width + Ad, 0), Bd = Math.max(ac.height + Qe, 0); e.width = Math.max(e.width, Ig); e.height += Bd } } } var sb = ua.length; if (0 !== sb) { this.Aa.width ? Oa = Math.min(this.Aa.width, this.Xe.width) : 0 !== e.width && (Oa = Math.min(e.width, this.Xe.width)); for (Ha = 0; Ha < sb; Ha++) if (Aa = ua[Ha], Aa.visible || Aa === this.Zb) zd = Aa.margin, Ad = zd.right + zd.left, Qe = zd.top + zd.bottom, rj(Aa, Oa, Infinity, sa, 0), ac = Aa.Ia, Ig = Math.max(ac.width + Ad, 0), Bd = Math.max(ac.height + Qe, 0), e.width = Math.max(e.width, Ig), e.height += Bd; z.xa(ua) } break; case "Horizontal": for (var gb = b, oa = d, pa = m.length, tb = z.rb(), Xa = 0; Xa < pa; Xa++) { var Va = m[Xa]; if (Va.visible || Va === this.Zb) { var Ae = Mm(Va, !1); if (Ae !== $i && Ae !== Cm) tb.push(Va); else { var Cd = Va.margin, me = Cd.right + Cd.left, Rd = Cd.top + Cd.bottom; rj(Va, Infinity, gb, 0, oa); var ne = Va.Ia, Jg = Math.max(ne.width + me, 0), fd = Math.max(ne.height + Rd, 0); e.width += Jg; e.height = Math.max(e.height, fd) } } } var pi = tb.length; if (0 !== pi) { this.Aa.height ? gb = Math.min(this.Aa.height, this.Xe.height) : 0 !== e.height && (gb = Math.min(e.height, this.Xe.height)); for (Xa = 0; Xa < pi; Xa++) if (Va = tb[Xa], Va.visible || Va === this.Zb) Cd = Va.margin, me = Cd.right + Cd.left, Rd = Cd.top + Cd.bottom, rj(Va, Infinity, gb, 0, oa), ne = Va.Ia, Jg = Math.max(ne.width + me, 0), fd = Math.max(ne.height + Rd, 0), e.width += Jg, e.height = Math.max(e.height, fd); z.xa(tb) } break; case "Spot": a: { var Ab = a, Qb = b, gd = c, lh = d, Lb = m.length, kb = this.gf(), cb = kb.margin, Re = 0, Sd = 0, Kg = cb.right + cb.left, Lg = cb.top + cb.bottom;rj(kb, Ab, Qb, gd, lh); var kc = kb.Ia, lc = kc.width, oe = kc.height, hd = Math.max(lc + Kg, 0), nb = Math.max(oe + Lg, 0);e.x = -cb.left;e.y = -cb.top;e.width = hd;e.height = nb; for (var Uc = 0; Uc < Lb; Uc++) { var Qa = m[Uc]; if (Qa !== kb && (Qa.visible || Qa === this.Zb)) { cb = Qa.margin; Re = cb.right + cb.left; Sd = cb.top + cb.bottom; rj(Qa, Ab, Qb, 0, 0); var kc = Qa.Ia, hd = Math.max(kc.width + Re, 0), nb = Math.max(kc.height + Sd, 0), ob = Qa.alignment; ob.bd() && (ob = this.Bl); ob.cd() || (ob = ec); var yc = Qa.jk; yc.bd() && (yc = ec); Ib(e, ob.x * lc + ob.offsetX - (yc.x * kc.width - yc.offsetX) - cb.left, ob.y * oe + ob.offsetY - (yc.y * kc.height - yc.offsetY) - cb.top, hd, nb) } } var Dd = kb.stretch;Dd === Am && (Dd = Mm(kb, !1)); switch (Dd) { case $i: break a; case lf: if (!isFinite(Ab) && !isFinite(Qb)) break a; break; case Cm: if (!isFinite(Ab)) break a; break; case Bm: if (!isFinite(Qb)) break a } kc = kb.Ia;lc = kc.width;oe = kc.height;hd = Math.max(lc + Kg, 0);nb = Math.max(oe + Lg, 0);cb = kb.margin;e.x = -cb.left;e.y = -cb.top;e.width = hd;e.height = nb; for (Uc = 0; Uc < Lb; Uc++) Qa = m[Uc], Qa === kb || !Qa.visible && Qa !== this.Zb || (cb = Qa.margin, Re = cb.right + cb.left, Sd = cb.top + cb.bottom, kc = Qa.Ia, hd = Math.max(kc.width + Re, 0), nb = Math.max(kc.height + Sd, 0), ob = Qa.alignment, ob.bd() && (ob = this.Bl), ob.cd() || (ob = ec), yc = Qa.jk, yc.bd() && (yc = ec), Ib(e, ob.x * lc + ob.offsetX - (yc.x * kc.width - yc.offsetX) - cb.left, ob.y * oe + ob.offsetY - (yc.y * kc.height - yc.offsetY) - cb.top, hd, nb)) } break; case "Auto": var Mb = a, pe = b, tf = c, Se = d, Lf = m.length, Fb = this.gf(), Be = Fb.margin, Rb = Be.right + Be.left, Vb = Be.top + Be.bottom; rj(Fb, Mb, pe, tf, Se); var Nb = Fb.Ia, Jc = 0; if (Fb instanceof X) var lb = Fb, Jc = lb.ub * lb.scale; var Gb = Math.max(Nb.width + Rb, 0), Ob = Math.max(Nb.height + Vb, 0), Td = Zn(Fb), Mg = Td.x * Gb + Td.offsetX, mh = Td.y * Ob + Td.offsetY, Td = $n(Fb), nh = Td.x * Gb + Td.offsetX, Ce = Td.y * Ob + Td.offsetY, Kc = Mb, De = pe; isFinite(Mb) && (Kc = Math.max(Math.abs(Mg - nh) - Jc, 0)); isFinite(pe) && (De = Math.max(Math.abs(mh - Ce) - Jc, 0)); var mc = z.Xl(); mc.n(0, 0); for (var Bb = 0; Bb < Lf; Bb++) { var Cb = m[Bb]; if (Cb !== Fb && (Cb.visible || Cb === this.Zb)) { var Be = Cb.margin, Lc = Be.right + Be.left, Ng = Be.top + Be.bottom; rj(Cb, Kc, De, 0, 0); Nb = Cb.Ia; Gb = Math.max(Nb.width + Lc, 0); Ob = Math.max(Nb.height + Ng, 0); mc.n(Math.max(Gb, mc.width), Math.max(Ob, mc.height)) } } if (1 === Lf) e.width = Gb, e.height = Ob, z.pk(mc); else { var Vc = Zn(Fb), Wc = $n(Fb), mb = 0, Mc = 0; Wc.x !== Vc.x && Wc.y !== Vc.y && (mb = mc.width / Math.abs(Wc.x - Vc.x), Mc = mc.height / Math.abs(Wc.y - Vc.y)); z.pk(mc); Jc = 0; Fb instanceof X && (lb = Fb, Jc = lb.ub * lb.scale, aj(lb) === bj && (mb = Mc = Math.max(mb, Mc))); var mb = mb + (Math.abs(Vc.offsetX) + Math.abs(Wc.offsetX) + Jc), Mc = Mc + (Math.abs(Vc.offsetY) + Math.abs(Wc.offsetY) + Jc), Ud = Fb.stretch; Ud === Am && (Ud = Mm(Fb, !1)); switch (Ud) { case $i: Se = tf = 0; break; case lf: isFinite(Mb) && (mb = Mb); isFinite(pe) && (Mc = pe); break; case Cm: isFinite(Mb) && (mb = Mb); Se = 0; break; case Bm: tf = 0, isFinite(pe) && (Mc = pe) } Fb instanceof X && !Fb.Aa.F() && (lb = Fb, lb.Yh ? lb.Nn = null : lb.ab = null); Fb.Ap(); rj(Fb, mb, Mc, tf, Se); e.width = Fb.Ia.width + Rb; e.height = Fb.Ia.height + Vb } break; case "Table": for (var Vd = a, uf = b, Og = c, vj = d, La = m.length, Te = z.rb(), qe = z.rb(), ia = 0; ia < La; ia++) { var fa = m[ia], id = fa instanceof I ? fa : null; if (null === id || id.type !== Qm && id.type !== Rm || !fa.visible) Te.push(fa); else { u && (id.Aa.F() && z.k(id.toString() + " TableRow/TableColumn Panels cannot set a desiredSize: " + id.Aa.toString()), id.cg.N(Pd) || z.k(id.toString() + " TableRow/TableColumn Panels cannot set a minSize: " + id.cg.toString()), id.Xe.N(de) || z.k(id.toString() + " TableRow/TableColumn Panels cannot set a maxSize: " + id.Xe.toString())); qe.push(fa); for (var oh = id.va.o, qi = oh.length, zc = 0; zc < qi; zc++) { var ri = oh[zc]; id.type === Qm ? ri.Vb = fa.Vb : id.type === Rm && (ri.column = fa.column); Te.push(ri) } } } La = Te.length; 0 === La && (this.$d(0), this.Zd(0)); for (var bc = [], ia = 0; ia < La; ia++) fa = Te[ia], Yk(fa, !0), Om(fa, !0), bc[fa.Vb] || (bc[fa.Vb] = []), bc[fa.Vb][fa.column] || (bc[fa.Vb][fa.column] = []), bc[fa.Vb][fa.column].push(fa); z.xa(Te); for (var ph = z.rb(), jd = z.rb(), Ee = z.rb(), Nc = { count: 0 }, kd = { count: 0 }, Ac = Vd, ld = uf, cg = this.Wd, La = cg.length, ia = 0; ia < La; ia++) { var Z = cg[ia]; void 0 !== Z && (Z.Oa = 0) } cg = this.Sd; La = cg.length; for (ia = 0; ia < La; ia++) Z = cg[ia], void 0 !== Z && (Z.Oa = 0); for (var Fe = bc.length, Ue = 0, ia = 0; ia < Fe; ia++) bc[ia] && (Ue = Math.max(Ue, bc[ia].length)); for (var si = Math.min(this.Xi, Fe - 1), ti = Math.min(this.Ji, Ue - 1), Oc = 0, Fe = bc.length, ia = 0; ia < Fe; ia++) if (bc[ia]) for (var Ue = bc[ia].length, pb = this.$d(ia), zc = pb.Oa = 0; zc < Ue; zc++) if (bc[ia][zc]) { var qb = this.Zd(zc); void 0 === ph[zc] && (qb.Oa = 0, ph[zc] = !0); for (var Xk = bc[ia][zc], dg = Xk.length, Pg = 0; Pg < dg; Pg++) if (fa = Xk[Pg], fa.visible || fa === this.Zb) { var Qg = 1 < fa.Ti || 1 < fa.wi; Qg && (ia < si || zc < ti || jd.push(fa)); var Wb = fa.margin, eg = Wb.right + Wb.left, fg = Wb.top + Wb.bottom, Xc = Zm(fa, pb, qb, !1), Ge = fa.Aa, un = !isNaN(Ge.height), ui = !isNaN(Ge.width) && un; Qg || Xc === $i || ui || ia < si || zc < ti || (void 0 !== Nc[zc] || Xc !== lf && Xc !== Cm || (Nc[zc] = -1, Nc.count++), void 0 !== kd[ia] || Xc !== lf && Xc !== Bm || (kd[ia] = -1, kd.count++), Ee.push(fa)); rj(fa, Infinity, Infinity, 0, 0); if (!(ia < si || zc < ti)) { var Ve = fa.Ia, We = Math.max(Ve.width + eg, 0), Ed = Math.max(Ve.height + fg, 0); if (1 === fa.Ti && (Xc === $i || Xc === Cm)) { var Z = this.$d(ia), md = Z.Re(), Oc = Math.max(Ed - Z.Oa, 0); Oc + md > ld && (Oc = Math.max(ld - md, 0)); var qh = 0 === Z.Oa; Z.Oa += Oc; ld = Math.max(ld - (Oc + (qh ? md : 0)), 0) } 1 !== fa.wi || Xc !== $i && Xc !== Bm || (Z = this.Zd(zc), md = Z.Re(), Oc = Math.max(We - Z.Oa, 0), Oc + md > Ac && (Oc = Math.max(Ac - md, 0)), qh = 0 === Z.Oa, Z.Oa += Oc, Ac = Math.max(Ac - (Oc + (qh ? md : 0)), 0)); Qg && fa.Ap() } } } z.xa(ph); for (var Wd = 0, Xd = 0, La = this.gp, ia = 0; ia < La; ia++) { var rh = this.Sd[ia]; void 0 !== rh && (Wd += rh.Xa, 0 !== rh.Xa && (Wd += rh.Re())) } La = this.Yp; for (ia = 0; ia < La; ia++) { var sh = this.Wd[ia]; void 0 !== sh && (Xd += sh.Xa, 0 !== sh.Xa && (Xd += sh.Re())) } for (var Ac = Math.max(Vd - Wd, 0), nd = ld = Math.max(uf - Xd, 0), Rg = Ac, La = Ee.length, ia = 0; ia < La; ia++) { var fa = Ee[ia], pb = this.$d(fa.Vb), qb = this.Zd(fa.column), vf = fa.Ia, Wb = fa.margin, eg = Wb.right + Wb.left, fg = Wb.top + Wb.bottom; Nc[fa.column] = 0 === qb.Oa && void 0 !== Nc[fa.column] ? Math.max(vf.width + eg, Nc[fa.column]) : null; kd[fa.Vb] = 0 === pb.Oa && void 0 !== kd[fa.Vb] ? Math.max(vf.height + fg, kd[fa.Vb]) : null } var nc = 0, th = 0; for (ia in kd) "count" !== ia && (nc += kd[ia]); for (ia in Nc) "count" !== ia && (th += Nc[ia]); for (var rb = z.Xl(), ia = 0; ia < La; ia++) if (fa = Ee[ia], fa.visible || fa === this.Zb) { var pb = this.$d(fa.Vb), qb = this.Zd(fa.column), He = 0; isFinite(qb.width) ? He = qb.width : (He = isFinite(Ac) && null !== Nc[fa.column] ? 0 === th ? qb.Oa + Ac : Nc[fa.column] / th * Rg : null !== Nc[fa.column] ? Ac : qb.Oa || Ac, He = Math.max(0, He - qb.Re())); var Mf = 0; isFinite(pb.height) ? Mf = pb.height : (Mf = isFinite(ld) && null !== kd[fa.Vb] ? 0 === nc ? pb.Oa + ld : kd[fa.Vb] / nc * nd : null !== kd[fa.Vb] ? ld : pb.Oa || ld, Mf = Math.max(0, Mf - pb.Re())); rb.n(Math.max(qb.pj, Math.min(He, qb.qf)), Math.max(pb.pj, Math.min(Mf, pb.qf))); Xc = Zm(fa, pb, qb, !1); switch (Xc) { case Cm: rb.height = Math.max(rb.height, pb.Oa + ld); break; case Bm: rb.width = Math.max(rb.width, qb.Oa + Ac) } Wb = fa.margin; eg = Wb.right + Wb.left; fg = Wb.top + Wb.bottom; fa.Ap(); rj(fa, rb.width, rb.height, qb.pj, pb.pj); Ve = fa.Ia; We = Math.max(Ve.width + eg, 0); Ed = Math.max(Ve.height + fg, 0); isFinite(Ac) && (We = Math.min(We, rb.width)); isFinite(ld) && (Ed = Math.min(Ed, rb.height)); var wf = 0, wf = pb.Oa; pb.Oa = Math.max(pb.Oa, Ed); Oc = pb.Oa - wf; ld = Math.max(ld - Oc, 0); wf = qb.Oa; qb.Oa = Math.max(qb.Oa, We); Oc = qb.Oa - wf; Ac = Math.max(Ac - Oc, 0) } z.xa(Ee); for (var Yd = z.Xl(), La = jd.length, ia = 0; ia < La; ia++) if (fa = jd[ia], fa.visible || fa === this.Zb) { pb = this.$d(fa.Vb); qb = this.Zd(fa.column); rb.n(Math.max(qb.pj, Math.min(Vd, qb.qf)), Math.max(pb.pj, Math.min(uf, pb.qf))); Xc = Zm(fa, pb, qb, !1); switch (Xc) { case lf: 0 !== qb.Oa && (rb.width = Math.min(rb.width, qb.Oa)); 0 !== pb.Oa && (rb.height = Math.min(rb.height, pb.Oa)); break; case Cm: 0 !== qb.Oa && (rb.width = Math.min(rb.width, qb.Oa)); break; case Bm: 0 !== pb.Oa && (rb.height = Math.min(rb.height, pb.Oa)) } isFinite(qb.width) && (rb.width = qb.width); isFinite(pb.height) && (rb.height = pb.height); Yd.n(0, 0); for (var hb = 1; hb < fa.Ti && !(fa.Vb + hb >= this.Yp); hb++) Z = this.$d(fa.Vb + hb), Yd.height += Math.max(Z.pj, isNaN(Z.ef) ? Z.qf : Math.min(Z.ef, Z.qf)); for (hb = 1; hb < fa.wi && !(fa.column + hb >= this.gp); hb++) Z = this.Zd(fa.column + hb), Yd.width += Math.max(Z.pj, isNaN(Z.ef) ? Z.qf : Math.min(Z.ef, Z.qf)); rb.width += Yd.width; rb.height += Yd.height; Wb = fa.margin; eg = Wb.right + Wb.left; fg = Wb.top + Wb.bottom; rj(fa, rb.width, rb.height, Og, vj); for (var Ve = fa.Ia, We = Math.max(Ve.width + eg, 0), Ed = Math.max(Ve.height + fg, 0), Sg = 0, hb = 0; hb < fa.Ti && !(fa.Vb + hb >= this.Yp); hb++) Z = this.$d(fa.Vb + hb), Sg += Z.total || 0; if (Sg < Ed) { var rc = Ed - Sg, Bc = Ed - Sg; if (null !== fa.Qx) for (var Fd = fa.Qx, hb = 0; hb < fa.Ti && !(0 >= rc) && !(fa.Vb + hb >= this.Yp); hb++) { var Z = this.$d(fa.Vb + hb), Sb = Z.Xa || 0, Zd = Fd(fa, Z, Bc); u && "number" !== typeof Zd && z.k(fa + " spanAllocation does not return a number: " + Zd); Z.Oa = Math.min(Z.qf, Sb + Zd); Z.Xa !== Sb && (rc -= Z.Xa - Sb) } for (; 0 < rc;) { Sb = Z.Xa || 0; isNaN(Z.height) && Z.qf > Sb && (Z.Oa = Math.min(Z.qf, Sb + rc), Z.Xa !== Sb && (rc -= Z.Xa - Sb)); if (0 === Z.index) break; Z = this.$d(Z.index - 1) } } for (var Ie = 0, hb = 0; hb < fa.wi && !(fa.column + hb >= this.gp); hb++) Z = this.Zd(fa.column + hb), Ie += Z.total || 0; if (Ie < We) { rc = We - Ie; Bc = We - Ie; if (null !== fa.Qx) for (Fd = fa.Qx, hb = 0; hb < fa.wi && !(0 >= rc) && !(fa.column + hb >= this.gp); hb++) Z = this.Zd(fa.column + hb), Sb = Z.Xa || 0, Zd = Fd(fa, Z, Bc), u && "number" !== typeof Zd && z.k(fa + " spanAllocation does not return a number: " + Zd), Z.Oa = Math.min(Z.qf, Sb + Zd), Z.Xa !== Sb && (rc -= Z.Xa - Sb); for (; 0 < rc;) { Sb = Z.Xa || 0; isNaN(Z.width) && Z.qf > Sb && (Z.Oa = Math.min(Z.qf, Sb + rc), Z.Xa !== Sb && (rc -= Z.Xa - Sb)); if (0 === Z.index) break; Z = this.Zd(Z.index - 1) } } } z.xa(jd); z.pk(Yd); z.pk(rb); for (var gg = 0, hg = 0, Xc = Mm(this, !0), xf = this.Aa, wj = this.Xe, $d = Xd = Wd = 0, Yc = 0, La = this.gp, ia = 0; ia < La; ia++) void 0 !== this.Sd[ia] && (Z = this.Zd(ia), isFinite(Z.width) ? ($d += Z.width, $d += Z.Re()) : ao(Z) === bo ? ($d += Z.Xa, $d += Z.Re()) : 0 !== Z.Xa && (Wd += Z.Xa, Wd += Z.Re())); var gg = isFinite(xf.width) ? Math.min(xf.width, wj.width) : Xc !== $i && isFinite(Vd) ? Vd : Wd, gg = Math.max(gg, this.cg.width), gg = Math.max(gg - $d, 0), vh = Math.max(gg / Wd, 1); isFinite(vh) || (vh = 1); for (ia = 0; ia < La; ia++) void 0 !== this.Sd[ia] && (Z = this.Zd(ia), isFinite(Z.width) || ao(Z) === bo || (Z.Oa = Z.Xa * vh), Z.position = e.width, 0 !== Z.Xa && (e.width += Z.Xa, e.width += Z.Re())); La = this.Yp; for (ia = 0; ia < La; ia++) void 0 !== this.Wd[ia] && (Z = this.$d(ia), isFinite(Z.height) ? (Yc += Z.height, Yc += Z.Re()) : ao(Z) === bo ? (Yc += Z.Xa, Yc += Z.Re()) : 0 !== Z.Xa && (Xd += Z.Xa, 0 !== Z.Xa && (Xd += Z.Re()))); var hg = isFinite(xf.height) ? Math.min(xf.height, wj.height) : Xc !== $i && isFinite(uf) ? uf : Xd, hg = Math.max(hg, this.cg.height), hg = Math.max(hg - Yc, 0), wh = Math.max(hg / Xd, 1); isFinite(wh) || (wh = 1); for (ia = 0; ia < La; ia++) void 0 !== this.Wd[ia] && (Z = this.$d(ia), isFinite(Z.height) || ao(Z) === bo || (Z.Oa = Z.Xa * wh), Z.position = e.height, 0 !== Z.Xa && (e.height += Z.Xa, 0 !== Z.Xa && (e.height += Z.Re()))); La = qe.length; for (ia = 0; ia < La; ia++) { var oc = qe[ia]; oc.type === Qm ? (He = e.width, Z = this.$d(oc.Vb), Mf = Z.Oa) : (Z = this.Zd(oc.column), He = Z.Oa, Mf = e.height); oc.ud.n(0, 0, He, Mf); Yk(oc, !1); bc[oc.Vb] || (bc[oc.Vb] = []); bc[oc.Vb][oc.column] || (bc[oc.Vb][oc.column] = []); bc[oc.Vb][oc.column].push(oc) } z.xa(qe); this.vs = bc; break; case "Viewbox": var xh = a, Zk = b, Xq = c, Yq = d; 1 < m.length && z.k("Viewbox Panel cannot contain more than one GraphObject."); var Xe = m[0]; Xe.bc = 1; Xe.Ap(); rj(Xe, Infinity, Infinity, Xq, Yq); var xj = Xe.Ia, $k = Xe.margin, Zq = $k.right + $k.left, $q = $k.top + $k.bottom; if (isFinite(xh) || isFinite(Zk)) { var kt = Xe.scale, al = xj.width, bl = xj.height, ar = Math.max(xh - Zq, 0), br = Math.max(Zk - $q, 0), yj = 1; this.Zo === bj ? 0 !== al && 0 !== bl && (yj = Math.min(ar / al, br / bl)) : 0 !== al && 0 !== bl && (yj = Math.max(ar / al, br / bl)); 0 === yj && (yj = 1E-4); Xe.bc *= yj; kt !== Xe.scale && (Yk(Xe, !0), rj(Xe, Infinity, Infinity, Xq, Yq)) } xj = Xe.Ia; e.width = isFinite(xh) ? xh : Math.max(xj.width + Zq, 0); e.height = isFinite(Zk) ? Zk : Math.max(xj.height + $q, 0); break; case "Link": var cr = m.length, ig = this instanceof da ? this.Wf : this; if (ig instanceof G) if (0 === cr) { var cl = this.Wc; yb(cl, 0, 0); var re = this.Ia; re.n(0, 0, 0, 0) } else { var dl = this instanceof da ? null : ig.path, jg = ig.un, Ye = this.Yi; Ye.assign(jg); Ye.x = 0; var Tg = Ye.y = 0, kg = ig.points, Tg = void 0 !== this.sa ? this.sa : kg.count; this instanceof da ? this.on(!1) : ig.on(!1); var dr = jg.width, er = jg.height; this.Ki.n(jg.x, jg.y); null === this.Zg && (this.Zg = new J(w)); this.Zg.clear(); null !== dl && (co(dl, dr, er, this), re = dl.Ia, Ye.qi(re), this.Zg.add(re)); for (var vi = z.Fh(), zj = z.O(), lg = z.O(), vn = 0; vn < cr; vn++) { var Xb = m[vn]; if (Xb !== dl) if (Xb.Ff && Xb instanceof X) co(Xb, dr, er, this), re = Xb.Ia, Ye.qi(re), this.Zg.add(re); else if (2 > Tg) rj(Xb, Infinity, Infinity), re = Xb.Ia, Ye.qi(re), this.Zg.add(re); else { var od = Xb.De, gr = Xb.NA, wn = Xb.jk; wn.Be() && (wn = ec); var Aj = Xb.pu, lt = Xb.EF, Bj = 0, Cj = 0, el = 0; if (od < -Tg || od >= Tg) { var hr = ig.bF, wi = ig.aF; Aj !== Ni && (el = ig.computeAngle(Xb, Aj, wi), Xb.bm = el); Bj = hr.x - jg.x; Cj = hr.y - jg.y } else { var Gd, Ze; if (0 <= od) Gd = kg.ea(od), Ze = od < Tg - 1 ? kg.ea(od + 1) : Gd; else { var yh = Tg + od; Gd = kg.ea(yh); Ze = 0 < yh ? kg.ea(yh - 1) : Gd } if (Gd.Mc(Ze)) { var zh, Ah; 0 <= od ? (zh = 0 < od ? kg.ea(od - 1) : Gd, Ah = od < Tg - 2 ? kg.ea(od + 2) : Ze) : (zh = yh < Tg - 1 ? kg.ea(yh + 1) : Gd, Ah = 1 < yh ? kg.ea(yh - 2) : Ze); var ir = zh.Af(Gd), jr = Ze.Af(Ah), wi = ir > jr + 10 ? 0 <= od ? zh.Ec(Gd) : Gd.Ec(zh) : jr > ir + 10 ? 0 <= od ? Ze.Ec(Ah) : Ah.Ec(Ze) : 0 <= od ? zh.Ec(Ah) : Ah.Ec(zh) } else wi = 0 <= od ? Gd.Ec(Ze) : Ze.Ec(Gd); Aj !== Ni && (el = ig.computeAngle(Xb, Aj, wi), Xb.bm = el); Bj = Gd.x + (Ze.x - Gd.x) * gr - jg.x; Cj = Gd.y + (Ze.y - Gd.y) * gr - jg.y } rj(Xb, Infinity, Infinity); var re = Xb.Ia, cl = Xb.Ga, Dj = 0; Xb instanceof X && (Dj = Xb.ub); var fl = cl.width + Dj, xn = cl.height + Dj; vi.reset(); vi.translate(-re.x, -re.y); vi.scale(Xb.scale, Xb.scale); vi.rotate(Aj === Ni ? Xb.angle : wi, fl / 2, xn / 2); var xi = new w(0, 0, fl, xn); zj.ru(xi, wn); vi.Cb(zj); var mt = -zj.x + Dj / 2, nt = -zj.y + Dj / 2; lg.assign(lt); isNaN(lg.x) && (lg.x = 0 <= od ? fl / 2 + 3 : -(fl / 2 + 3)); isNaN(lg.y) && (lg.y = -(xn / 2 + 3)); lg.rotate(wi); Bj += lg.x; Cj += lg.y; xi.set(re); xi.x = Bj + mt; xi.y = Cj + nt; this.Zg.add(xi); Ye.qi(xi) } } if (this.Ke) for (var kr = this.Hf; kr.next();) rj(kr.value, Infinity, Infinity); this.Yi = Ye; var yn = this.Ki; yn.n(yn.x + Ye.x, yn.y + Ye.y); yb(e, Ye.width || 0, Ye.height || 0); z.jf(vi); z.A(zj); z.A(lg) } break; case "Grid": break; case "TableRow": case "TableColumn": z.k(this.toString() + " is not an element of a Table Panel. TableRow and TableColumn Panels can only be elements of a Table Panel."); break; default: z.k("Unknown panel type: " + n) } } var $e = e.width, af = e.height, gl = this.padding, ot = gl.top + gl.bottom, $e = $e + (gl.left + gl.right), af = af + ot; isFinite(g.width) && ($e = g.width); isFinite(g.height) && (af = g.height); $e = Math.min(k.width, $e); af = Math.min(k.height, af); $e = Math.max(h.width, $e); af = Math.max(h.height, af); $e = Math.max(c, $e); af = Math.max(d, af); e.width = $e; e.height = af; yb(this.Wc, $e, af); Jm(this, 0, 0, $e, af) }; I.prototype.findMainElement = I.prototype.gf = function() { if (null === this.Lm) { var a = this.va.o, b = a.length; if (0 === b) return null; for (var c = 0; c < b; c++) { var d = a[c]; if (!0 === d.Ff) return this.Lm = d } this.Lm = a[0] } return this.Lm }; I.prototype.$i = function(a, b, c, d) { var e = this.Yi, g = this.va.o, h = z.yk(0, 0, 0, 0); if (0 === g.length) { var k = this.W; k.x = a; k.y = b; k.width = c; k.height = d } else { if (!this.Aa.F()) { var l = Mm(this, !0), m = this.ud, n = m.width, p = m.height, q = this.margin, r = q.left + q.right, s = q.top + q.bottom; n === c && p === d && (l = $i); switch (l) { case $i: if (n > c || p > d) this.S(), rj(this, n > c ? c : n, p > d ? d : p); break; case lf: this.S(!0); rj(this, c + r, d + s, 0, 0); break; case Cm: this.S(!0); rj(this, c + r, p + s, 0, 0); break; case Bm: this.S(!0), rj(this, n + r, d + s, 0, 0) } } k = this.W; k.x = a; k.y = b; k.width = c; k.height = d; var t = this.ba.Ub; switch (t) { case "Position": for (var v = g.length, x = e.x - this.padding.left, y = e.y - this.padding.top, A = 0; A < v; A++) { var B = g[A], L = B.Ia, H = B.margin, U = B.position.x, ea = B.position.y; h.x = isNaN(U) ? -x : U - x; h.y = isNaN(ea) ? -y : ea - y; if (B instanceof X) { var W = B; if (W.ME) { var P = W.ub / 2; h.x -= P; h.y -= P } } h.x += H.left; h.y += H.top; h.width = L.width; h.height = L.height; B.visible && B.Lc(h.x, h.y, h.width, h.height) } break; case "Vertical": for (var ba = g.length, Oa = this.padding.left, sa = this.padding.top, Na = 0; Na < ba; Na++) { var ua = Oa, Ha = g[Na]; if (Ha.visible) { var Aa = Ha.Ia, jc = Ha.margin, zd = jc.left + jc.right, Ad = Oa + this.padding.right, Qe = Aa.width, ac = Mm(Ha, !1); if (isNaN(Ha.Aa.width) && ac === lf || ac === Cm) Qe = Math.max(e.width - zd - Ad, 0); var Ig = Qe + zd + Ad, Bd = Ha.alignment; Bd.bd() && (Bd = this.Bl); Bd.cd() || (Bd = ec); Ha.Lc(ua + Bd.offsetX + jc.left + (e.width * Bd.x - Ig * Bd.x), sa + Bd.offsetY + jc.top, Qe, Aa.height); sa += Aa.height + jc.bottom + jc.top } } break; case "Horizontal": for (var sb = g.length, gb = this.padding.top, oa = this.padding.left, pa = 0; pa < sb; pa++) { var tb = gb, Xa = g[pa]; if (Xa.visible) { var Va = Xa.Ia, Ae = Xa.margin, Cd = Ae.top + Ae.bottom, me = gb + this.padding.bottom, Rd = Va.height, ne = Mm(Xa, !1); if (isNaN(Xa.Aa.height) && ne === lf || ne === Bm) Rd = Math.max(e.height - Cd - me, 0); var Jg = Rd + Cd + me, fd = Xa.alignment; fd.bd() && (fd = this.Bl); fd.cd() || (fd = ec); Xa.Lc(oa + fd.offsetX + Ae.left, tb + fd.offsetY + Ae.top + (e.height * fd.y - Jg * fd.y), Va.width, Rd); oa += Va.width + Ae.left + Ae.right } } break; case "Spot": var pi = g.length, Ab = this.gf(), Qb = Ab.Ia, gd = Qb.width, lh = Qb.height, Lb = this.padding, kb = Lb.left, cb = Lb.top; h.x = kb - e.x; h.y = cb - e.y; Ab.Lc(h.x, h.y, gd, lh); for (var Re = 0; Re < pi; Re++) { var Sd = g[Re]; if (Sd !== Ab) { var Kg = Sd.Ia, Lg = Kg.width, kc = Kg.height, lc = Sd.alignment; lc.bd() && (lc = this.Bl); lc.cd() || (lc = ec); var oe = Sd.jk; oe.bd() && (oe = ec); h.x = lc.x * gd + lc.offsetX - (oe.x * Lg - oe.offsetX); h.y = lc.y * lh + lc.offsetY - (oe.y * kc - oe.offsetY); h.x -= e.x; h.y -= e.y; Sd.visible && Sd.Lc(kb + h.x, cb + h.y, Lg, kc) } } break; case "Auto": var hd = g.length, nb = this.gf(), Uc = nb.Ia, Qa = z.kg(); Qa.n(0, 0, 1, 1); var ob = nb.margin, yc = ob.left, Dd = ob.top, Mb = this.padding, pe = Mb.left, tf = Mb.top; h.x = yc; h.y = Dd; h.width = Uc.width; h.height = Uc.height; nb.Lc(pe + h.x, tf + h.y, h.width, h.height); var Se = Zn(nb), Lf = $n(nb), Fb = 0 + Se.y * Uc.height + Se.offsetY, Be = 0 + Lf.x * Uc.width + Lf.offsetX, Rb = 0 + Lf.y * Uc.height + Lf.offsetY; Qa.x = 0 + Se.x * Uc.width + Se.offsetX; Qa.y = Fb; Ib(Qa, Be, Rb, 0, 0); Qa.x += yc + pe; Qa.y += Dd + tf; for (var Vb = 0; Vb < hd; Vb++) { var Nb = g[Vb]; if (Nb !== nb) { var Jc = Nb.Ia, ob = Nb.margin, lb = Math.max(Jc.width + ob.right + ob.left, 0), Gb = Math.max(Jc.height + ob.top + ob.bottom, 0), Ob = Nb.alignment; Ob.bd() && (Ob = this.Bl); Ob.cd() || (Ob = ec); h.x = Qa.width * Ob.x + Ob.offsetX - lb * Ob.x + ob.left + Qa.x; h.y = Qa.height * Ob.y + Ob.offsetY - Gb * Ob.y + ob.top + Qa.y; h.width = Qa.width; h.height = Qa.height; Nb.visible && (Jb(Qa.x, Qa.y, Qa.width, Qa.height, h.x, h.y, Jc.width, Jc.height) ? Nb.Lc(h.x, h.y, Jc.width, Jc.height) : Nb.Lc(h.x, h.y, Jc.width, Jc.height, new w(Qa.x, Qa.y, Qa.width, Qa.height))) } } z.dc(Qa); break; case "Table": for (var Td = g.length, Mg = this.padding, mh = Mg.left, nh = Mg.top, Ce = this.vs, Kc = 0, De = 0, mc = Ce.length, Bb = 0, Cb = 0; Cb < mc; Cb++) Ce[Cb] && (Bb = Math.max(Bb, Ce[Cb].length)); for (var Lc = Math.min(this.Xi, mc - 1); Lc !== mc && (void 0 === this.Wd[Lc] || 0 === this.Wd[Lc].Xa);) Lc++; for (var Lc = Math.min(Lc, mc - 1), Ng = -this.Wd[Lc].sb, Vc = Math.min(this.Ji, Bb - 1); Vc !== Bb && (void 0 === this.Sd[Vc] || 0 === this.Sd[Vc].Xa);) Vc++; for (var Vc = Math.min(Vc, Bb - 1), Wc = -this.Sd[Vc].sb, mb = z.Xl(), Cb = 0; Cb < mc; Cb++) if (Ce[Cb]) { var Bb = Ce[Cb].length, Mc = this.$d(Cb), De = Mc.sb + Ng + nh; 0 !== Mc.Xa && (De += Mc.UD()); for (var Ud = 0; Ud < Bb; Ud++) if (Ce[Cb][Ud]) { var Vd = this.Zd(Ud), Kc = Vd.sb + Wc + mh; 0 !== Vd.Xa && (Kc += Vd.UD()); for (var uf = Ce[Cb][Ud], Og = uf.length, vj = 0; vj < Og; vj++) { var La = uf[vj], Te = La.Ia, qe = La instanceof I ? La : null; if (null === qe || qe.type !== Qm && qe.type !== Rm) { mb.n(0, 0); for (var ia = 1; ia < La.rowSpan && !(Cb + ia >= this.Yp); ia++) { var fa = this.$d(Cb + ia); mb.height += fa.total } for (ia = 1; ia < La.eH && !(Ud + ia >= this.gp); ia++) { var id = this.Zd(Ud + ia); mb.width += id.total } var oh = Vd.Xa + mb.width, qi = Mc.Xa + mb.height; h.x = Kc; h.y = De; h.width = oh; h.height = qi; var zc = Kc, ri = De, bc = oh, ph = qi; Kc + oh > e.width && (bc = Math.max(e.width - Kc, 0)); De + qi > e.height && (ph = Math.max(e.height - De, 0)); var jd = La.alignment, Ee = 0, Nc = 0, kd = 0, Ac = 0; if (jd.bd()) { jd = this.Bl; jd.cd() || (jd = ec); var Ee = jd.x, Nc = jd.y, kd = jd.offsetX, Ac = jd.offsetY, ld = Vd.alignment, cg = Mc.alignment; ld.cd() && (Ee = ld.x, kd = ld.offsetX); cg.cd() && (Nc = cg.y, Ac = cg.offsetY) } else Ee = jd.x, Nc = jd.y, kd = jd.offsetX, Ac = jd.offsetY; if (isNaN(Ee) || isNaN(Nc)) Nc = Ee = .5, Ac = kd = 0; var Z = Te.width, Fe = Te.height, Ue = La.margin, si = Ue.left + Ue.right, ti = Ue.top + Ue.bottom, Oc = Zm(La, Mc, Vd, !1); !isNaN(La.Aa.width) || Oc !== lf && Oc !== Cm || (Z = Math.max(oh - si, 0)); !isNaN(La.Aa.height) || Oc !== lf && Oc !== Bm || (Fe = Math.max(qi - ti, 0)); var pb = La.Xe, qb = La.cg, Z = Math.min(pb.width, Z), Fe = Math.min(pb.height, Fe), Z = Math.max(qb.width, Z), Fe = Math.max(qb.height, Fe), Xk = Fe + ti; h.x += h.width * Ee - (Z + si) * Ee + kd + Ue.left; h.y += h.height * Nc - Xk * Nc + Ac + Ue.top; La.visible && (Jb(zc, ri, bc, ph, h.x, h.y, Te.width, Te.height) ? La.Lc(h.x, h.y, Z, Fe) : La.Lc(h.x, h.y, Z, Fe, new w(zc, ri, bc, ph))) } else { La.Fi(); La.Xb.Wa(); var dg = La.Xb; dg.x = qe.type === Qm ? mh : Kc; dg.y = qe.type === Rm ? nh : De; dg.width = Te.width; dg.height = Te.height; La.Xb.freeze(); Om(La, !1) } } } } z.pk(mb); for (Cb = 0; Cb < Td; Cb++) La = g[Cb], qe = La instanceof I ? La : null, null === qe || qe.type !== Qm && qe.type !== Rm || (dg = La.Xb, La.Wc.Wa(), La.Wc.n(0, 0, dg.width, dg.height), La.Wc.freeze()); break; case "Viewbox": var Pg = g[0], Qg = Pg.Ia, Wb = Pg.margin, eg = Wb.top + Wb.bottom, fg = Math.max(Qg.width + (Wb.right + Wb.left), 0), Xc = Math.max(Qg.height + eg, 0), Ge = Pg.alignment; Ge.bd() && (Ge = this.Bl); Ge.cd() || (Ge = ec); h.x = e.width * Ge.x - fg * Ge.x + Ge.offsetX; h.y = e.height * Ge.y - Xc * Ge.y + Ge.offsetY; h.width = Qg.width; h.height = Qg.height; Pg.Lc(h.x, h.y, h.width, h.height); break; case "Link": var un = g.length, ui = this instanceof da ? this.Wf : this; if (ui instanceof G) { var Ve = this instanceof da ? null : ui.path; if (null !== this.Zg) { var We = this.Zg.o, Ed = 0; if (null !== Ve && Ed < this.Zg.count) { var md = We[Ed]; Ed++; Ve.Lc(md.x - this.Yi.x, md.y - this.Yi.y, md.width, md.height) } for (var qh = 0; qh < un; qh++) { var Wd = g[qh]; Wd !== Ve && Ed < this.Zg.count && (md = We[Ed], Ed++, Wd.Lc(md.x - this.Yi.x, md.y - this.Yi.y, md.width, md.height)) } } var Xd = ui.points, rh = Xd.count; if (2 <= rh && this.Ke) for (var sh = this.Hf; sh.next();) { var nd = sh.value, Rg = rh, vf = Xd, nc = nd.De, th = nd.NA, rb = nd.jk, He = nd.pu, Mf = nd.EF, wf = 0, Yd = 0, hb = 0; if (nc < -Rg || nc >= Rg) { var Sg = this.bF, rc = this.aF; He !== Ni && (hb = this.computeAngle(nd, He, rc), nd.angle = hb); wf = Sg.x; Yd = Sg.y } else { var Bc = void 0, Fd = void 0; if (0 <= nc) Bc = vf.o[nc], Fd = nc < Rg - 1 ? vf.o[nc + 1] : Bc; else var Sb = Rg + nc, Bc = vf.o[Sb], Fd = 0 < Sb ? vf.o[Sb - 1] : Bc; if (Bc.Mc(Fd)) { var Zd = void 0, Ie = void 0; 0 <= nc ? (Zd = 0 < nc ? vf.o[nc - 1] : Bc, Ie = nc < Rg - 2 ? vf.o[nc + 2] : Fd) : (Zd = Sb < Rg - 1 ? vf.o[Sb + 1] : Bc, Ie = 1 < Sb ? vf.o[Sb - 2] : Fd); var gg = Zd.Af(Bc), hg = Fd.Af(Ie), rc = gg > hg + 10 ? 0 <= nc ? Zd.Ec(Bc) : Bc.Ec(Zd) : hg > gg + 10 ? 0 <= nc ? Fd.Ec(Ie) : Ie.Ec(Fd) : 0 <= nc ? Zd.Ec(Ie) : Ie.Ec(Zd) } else rc = 0 <= nc ? Bc.Ec(Fd) : Fd.Ec(Bc); He !== Ni && (hb = this.computeAngle(nd, He, rc), nd.angle = hb); wf = Bc.x + (Fd.x - Bc.x) * th; Yd = Bc.y + (Fd.y - Bc.y) * th } if (rb.N(Yb)) nd.location = new N(wf, Yd); else { rb.Be() && (rb = ec); var xf = z.Fh(); xf.reset(); xf.scale(nd.scale, nd.scale); xf.rotate(nd.angle, 0, 0); var wj = nd.Ga, $d = z.yk(0, 0, wj.width, wj.height), Yc = z.O(); Yc.ru($d, rb); xf.Cb(Yc); var vh = -Yc.x, wh = -Yc.y, oc = Mf.copy(); isNaN(oc.x) && (oc.x = 0 <= nc ? Yc.x + 3 : -(Yc.x + 3)); isNaN(oc.y) && (oc.y = -(Yc.y + 3)); oc.rotate(rc); wf += oc.x; Yd += oc.y; xf.bG($d); var vh = vh + $d.x, wh = wh + $d.y, xh = z.Tb(wf + vh, Yd + wh); nd.move(xh); z.A(xh); z.A(Yc); z.dc($d); z.jf(xf) } } this instanceof da ? this.on(!1) : ui.on(!1) } break; case "Grid": break; case "TableRow": case "TableColumn": z.k(this.toString() + " is not an element of a Table Panel.TableRow and TableColumn panels can only be elements of a Table Panel."); break; default: z.k("Unknown panel type: " + t) } z.dc(h) } }; I.prototype.lk = function(a) { var b = this.Ga; if (Jb(0, 0, b.width, b.height, a.x, a.y)) { for (var b = this.va.o, c = b.length, d = z.Tb(0, 0); c--;) { var e = b[c]; if (e.visible || e === this.Zb) if (ub(d.set(a), e.transform), e.Ma(d)) return z.A(d), !0 } z.A(d); return null === this.Nb && null === this.uc ? !1 : !0 } return !1 }; I.prototype.Xw = function(a) { if (this.Jn === a) return this; for (var b = this.va.o, c = b.length, d = 0; d < c; d++) { var e = b[d].Xw(a); if (null !== e) return e } return null }; function eo(a, b, c) { c(a, b); if (b instanceof I) { b = b.va.o; for (var d = b.length, e = 0; e < d; e++) eo(a, b[e], c) } } function wl(a, b) { fo(a, a, b) } function fo(a, b, c) { c(b); b = b.va.o; for (var d = b.length, e = 0; e < d; e++) { var g = b[e]; g instanceof I && fo(a, g, c) } } I.prototype.walkVisualTree = I.prototype.DJ = function(a) { ho(this, this, a) }; function ho(a, b, c) { c(b); if (b instanceof I) { b = b.va.o; for (var d = b.length, e = 0; e < d; e++) ho(a, b[e], c) } } I.prototype.findInVisualTree = I.prototype.yt = function(a) { return io(this, this, a) }; function io(a, b, c) { if (c(b)) return b; if (b instanceof I) { b = b.va.o; for (var d = b.length, e = 0; e < d; e++) { var g = io(a, b[e], c); if (null !== g) return g } } return null } I.prototype.findObject = I.prototype.oe = function(a) { if (this.name === a) return this; for (var b = this.va.o, c = b.length, d = 0; d < c; d++) { var e = b[d]; if (e.name === a) return e; if (e instanceof I) if (null === e.Ii && null === e.sg) { if (e = e.oe(a), null !== e) return e } else if (Rl(e) && (e = e.va.first(), null !== e && (e = e.oe(a), null !== e))) return e } return null }; function jo(a) { a = a.va.o; for (var b = a.length, c = 0, d = 0; d < b; d++) { var e = a[d]; if (e instanceof I) c = Math.max(c, jo(e)); else if (e instanceof X) { a: { if (!e.Yh) switch (e.fo) { case "None": case "Square": case "Ellipse": case "Circle": case "LineH": case "LineV": case "FramedRectangle": case "RoundedRectangle": case "Line1": case "Line2": case "Border": case "Cube1": case "Cube2": case "Junction": case "Cylinder1": case "Cylinder2": case "Cylinder3": case "Cylinder4": case "PlusLine": case "XLine": case "ThinCross": case "ThickCross": e = 0; break a } e = e.Oe / 2 * e.Km * e.gj() } c = Math.max(c, e) } } return c } f = I.prototype; f.Vg = function() { return !(this.type === Qm || this.type === Rm) }; f.pe = function(a, b, c) { if (!1 === this.ig) return null; void 0 === b && (b = null); void 0 === c && (c = null); if (nl(this)) return null; var d = this.Ga, e = 1 / this.gj(), g = this.Vg(), h = g ? a : ub(z.Tb(a.x, a.y), this.transform), k = this.h, l = 10, m = 5; null !== k && (l = k.sp("extraTouchArea"), m = l / 2); if (Jb(-(m * e), -(m * e), d.width + l * e, d.height + l * e, h.x, h.y)) { if (!this.dh) { var e = this.va.o, n = e.length, k = z.O(), m = (l = this.KE) ? this.gf() : null; if (l && (m.Vg() ? ub(k.set(a), m.transform) : k.set(a), !m.Ma(k))) return z.A(k), g || z.A(h), null; for (; n--;) { var p = e[n]; if (p.visible || p === this.Zb) if (p.Vg() ? ub(k.set(a), p.transform) : k.set(a), !l || p !== m) { var q = null; p instanceof I ? q = p.pe(k, b, c) : !0 === p.ig && p.Ma(k) && (q = p); if (null !== q && (null !== b && (q = b(q)), null !== q && (null === c || c(q)))) return z.A(k), g || z.A(h), q } } z.A(k) } if (null === this.background && null === this.vl) return g || z.A(h), null; a = Jb(0, 0, d.width, d.height, h.x, h.y) ? this : null; g || z.A(h); return a } g || z.A(h); return null }; f.mp = function(a, b, c, d) { if (!1 === this.ig) return !1; void 0 === b && (b = null); void 0 === c && (c = null); d instanceof J || d instanceof K || (d = new J(O)); var e = this.Ga, g = this.Vg(), h = g ? a : ub(z.Tb(a.x, a.y), this.transform); if (Jb(0, 0, e.width, e.height, h.x, h.y)) { if (!this.dh) { for (var e = this.va.o, k = e.length, l = z.O(); k--;) { var m = e[k]; if (m.visible || m === this.Zb) { m.Vg() ? ub(l.set(a), m.transform) : l.set(a); var n = m, m = m instanceof I ? m : null; (null !== m ? m.mp(l, b, c, d) : n.Ma(l)) && !1 !== n.ig && (null !== b && (n = b(n)), null === n || null !== c && !c(n) || d.add(n)) } } z.A(l) } g || z.A(h); return null !== this.background || null !== this.vl } g || z.A(h); return !1 }; f.ok = function(a, b, c, d, e, g) { if (!1 === this.ig) return !1; void 0 === b && (b = null); void 0 === c && (c = null); var h = g; void 0 === g && (h = z.Fh(), h.reset()); h.multiply(this.transform); if (this.Ym(a, h)) return ko(this, b, c, e), void 0 === g && z.jf(h), !0; if (this.Ig(a, h)) { if (!this.dh) for (var k = this.va.o, l = k.length; l--;) { var m = k[l]; if (m.visible || m === this.Zb) { var n = m.W, p = this.Ga; if (!(n.x > p.width || n.y > p.height || 0 > n.x + n.width || 0 > n.y + n.height)) { n = m; m = m instanceof I ? m : null; p = z.Fh(); p.set(h); if (null !== m ? m.ok(a, b, c, d, e, p) : Lm(n, a, d, p)) null !== b && (n = b(n)), null === n || null !== c && !c(n) || e.add(n); z.jf(p) } } } void 0 === g && z.jf(h); return d } void 0 === g && z.jf(h); return !1 }; function ko(a, b, c, d) { for (var e = a.va.o, g = e.length; g--;) { var h = e[g]; if (h.visible) { var k = h.W, l = a.Ga; k.x > l.width || k.y > l.height || 0 > k.x + k.width || 0 > k.y + k.height || (h instanceof I && ko(h, b, c, d), null !== b && (h = b(h)), null === h || null !== c && !c(h) || d.add(h)) } } } f.dn = function(a, b, c, d, e, g) { if (!1 === this.ig) return !1; void 0 === c && (c = null); void 0 === d && (d = null); var h = this.Ga, k = this.Vg(), l = k ? a : ub(z.Tb(a.x, a.y), this.transform), m = k ? b : ub(z.Tb(b.x, b.y), this.transform), n = l.Af(m), p = 0 < l.x && l.x < h.width && 0 < l.y && l.y < h.height || vb(l.x, l.y, 0, 0, 0, h.height) < n || vb(l.x, l.y, 0, h.height, h.width, h.height) < n || vb(l.x, l.y, h.width, h.height, h.width, 0) < n || vb(l.x, l.y, h.width, 0, 0, 0) < n, h = 0 < l.x && l.x < h.width && 0 < l.y && l.y < h.height && vb(l.x, l.y, 0, 0, 0, h.height) < n && vb(l.x, l.y, 0, h.height, h.width, h.height) < n && vb(l.x, l.y, h.width, h.height, h.width, 0) < n && vb(l.x, l.y, h.width, 0, 0, 0) < n; k || (z.A(l), z.A(m)); if (p) { if (!this.dh) { k = z.O(); l = z.O(); m = this.va.o; for (n = m.length; n--;) { var q = m[n]; if (q.visible || q === this.Zb) { var r = q.W, s = this.Ga; r.x > s.width || r.y > s.height || 0 > r.x + r.width || 0 > r.y + r.height || (q.Vg() ? (r = q.transform, ub(k.set(a), r), ub(l.set(b), r)) : (k.set(a), l.set(b)), r = q, q = q instanceof I ? q : null, null !== q ? !q.dn(k, l, c, d, e, g) : !r.sE(k, l, e)) || (null !== c && (r = c(r)), null === r || null !== d && !d(r) || g.add(r)) } } z.A(k); z.A(l) } return e ? p : h } return !1 }; function Zn(a) { var b = a.C; if (void 0 === b || b === Pc) b = null; null === b && a instanceof X && (a = a.ab, null !== a && (b = a.C)); null === b && (b = Zb); return b } function $n(a) { var b = a.D; if (void 0 === b || b === Pc) b = null; null === b && a instanceof X && (a = a.ab, null !== a && (b = a.D)); null === b && (b = ic); return b } I.prototype.add = I.prototype.add = function(a) { z.l(a, O, I, "add:element"); this.Ld(this.va.count, a) }; I.prototype.elt = I.prototype.ea = function(a) { return this.va.ea(a) }; I.prototype.insertAt = I.prototype.Ld = function(a, b) { b instanceof D && z.k("Cannot add a Part to a Panel: " + b); if (this === b || this.Pl(b)) this === b && z.k("Cannot make a Panel contain itself: " + this.toString()), z.k("Cannot make a Panel indirectly contain itself: " + this.toString() + " already contains " + b.toString()); var c = b.U; null !== c && c !== this && z.k("Cannot add a GraphObject that already belongs to another Panel to this Panel: " + b.toString() + ", already contained by " + c.toString() + ", cannot be shared by this Panel: " + this.toString()); this.ba !== Gk || b instanceof X || z.k("Can only add Shapes to a Grid Panel, not: " + b); b.Tl(this); b.Bm = null; if (null !== this.Tt) { var d = b.data; null !== d && "object" === typeof d && (null === this.rg && (this.rg = new na(Object, I)), this.rg.add(d, b)) } var e = this.va, d = -1; if (c === this) { for (var g = -1, h = this.va.o, k = h.length, l = 0; l < k; l++) if (h[l] === b) { g = l; break } if (-1 !== g) { if (g === a || g + 1 >= e.count && a >= e.count) return; e.dd(g); d = g } else z.k("element " + b.toString() + " has panel " + c.toString() + " but is not contained by it.") } if (0 > a || a > e.count) a = e.count; e.Ld(a, b); this.S(); b.S(); null !== b.yd ? this.Ph = !0 : b instanceof I && !0 === b.Ph && (this.Ph = !0); c = this.ca; null !== c && (c.il = null, c.Qj = NaN, this.Ph && c instanceof E && (c.Ph = !0), c.Ph && (c.Dd = null), e = this.h, null !== e && e.pa.qb || (-1 !== d && c.Rc(Vf, "elements", this, b, null, d, null), c.Rc(Uf, "elements", this, null, b, null, a))) }; I.prototype.remove = I.prototype.remove = function(a) { z.l(a, O, I, "remove:element"); for (var b = this.va.o, c = b.length, d = -1, e = 0; e < c; e++) if (b[e] === a) { d = e; break } - 1 !== d && this.Ve(d) }; I.prototype.removeAt = I.prototype.dd = function(a) { u && z.p(a, I, "removeAt:idx"); 0 <= a && this.Ve(a) }; I.prototype.Ve = function(a) { var b = this.va, c = b.ea(a); c.Bm = null; c.Tl(null); if (null !== this.rg) { var d = c.data; "object" === typeof d && this.rg.remove(d) } b.dd(a); Yk(this, !1); this.S(); this.Lm === c && (this.Lm = null); b = this.ca; null !== b && (b.il = null, b.Qj = NaN, b.ae(), d = this.h, null !== d && d.pa.qb || b.Rc(Vf, "elements", this, c, null, a, null)) }; z.w(I, { Yp: "rowCount" }, function() { return void 0 === this.Wd ? 0 : this.Wd.length }); I.prototype.getRowDefinition = I.prototype.$d = function(a) { u && z.p(a, I, "getRowDefinition:idx"); 0 > a && z.ka(a, ">= 0", I, "getRowDefinition:idx"); a = Math.round(a); var b = this.Wd; if (void 0 === b[a]) { var c = new Fg; c.Tl(this); c.qe = !0; c.index = a; b[a] = c } return b[a] }; I.prototype.removeRowDefinition = I.prototype.pF = function(a) { u && z.p(a, I, "removeRowDefinition:idx"); 0 > a && z.ka(a, ">= 0", I, "removeRowDefinition:idx"); a = Math.round(a); var b = this.Wd; this.Rc(Vf, "coldefs", this, b[a], null, a, null); b[a] && delete b[a]; this.S() }; z.w(I, { gp: "columnCount" }, function() { return void 0 === this.Sd ? 0 : this.Sd.length }); I.prototype.getColumnDefinition = I.prototype.Zd = function(a) { u && z.p(a, I, "getColumnDefinition:idx"); 0 > a && z.ka(a, ">= 0", I, "getColumnDefinition:idx"); a = Math.round(a); var b = this.Sd; if (void 0 === b[a]) { var c = new Fg; c.Tl(this); c.qe = !1; c.index = a; b[a] = c } return b[a] }; I.prototype.removeColumnDefinition = I.prototype.lF = function(a) { u && z.p(a, I, "removeColumnDefinition:idx"); 0 > a && z.ka(a, ">= 0", I, "removeColumnDefinition:idx"); a = Math.round(a); var b = this.Sd; this.Rc(Vf, "coldefs", this, b[a], null, a, null); b[a] && delete b[a]; this.S() }; z.defineProperty(I, { eJ: "rowSizing" }, function() { return void 0 === this.Gm ? Vn : this.Gm }, function(a) { if (void 0 !== this.Gm) { var b = this.Gm; b !== a && (a !== Vn && a !== bo && z.k("Panel.rowSizing must be RowColumnDefinition.ProportionalExtra or RowColumnDefinition.None, not: " + a), this.Gm = a, this.S(), this.j("rowSizing", b, a)) } }); z.defineProperty(I, { dH: "columnSizing" }, function() { return void 0 === this.fm ? Vn : this.fm }, function(a) { if (void 0 !== this.fm) { var b = this.fm; b !== a && (a !== Vn && a !== bo && z.k("Panel.columnSizing must be RowColumnDefinition.ProportionalExtra or RowColumnDefinition.None, not: " + a), this.fm = a, this.S(), this.j("columnSizing", b, a)) } }); z.defineProperty(I, { WF: "topIndex" }, function() { return void 0 === this.Xi ? 0 : this.Xi }, function(a) { if (void 0 !== this.Xi) { var b = this.Xi; b !== a && ((!isFinite(a) || 0 > a) && z.k("Panel.topIndex must be greater than zero and a real number, not: " + a), this.Xi = a, this.S(), this.j("topIndex", b, a)) } }); z.defineProperty(I, { XE: "leftIndex" }, function() { return void 0 === this.Ji ? 0 : this.Ji }, function(a) { if (void 0 !== this.Ji) { var b = this.Ji; b !== a && ((!isFinite(a) || 0 > a) && z.k("Panel.leftIndex must be greater than zero and a real number, not: " + a), this.Ji = a, this.S(), this.j("leftIndex", b, a)) } }); I.prototype.findRowForLocalY = function(a) { if (0 > a) return -1; if (this.type !== ga) return NaN; for (var b = 0, c = this.Wd, d = c.length, e = this.Xi; e < d; e++) { var g = c[e]; if (void 0 !== g && (b += g.total, a < b)) return e } return -1 }; I.prototype.findColumnForLocalX = function(a) { if (0 > a) return -1; if (this.type !== ga) return NaN; for (var b = 0, c = this.Sd, d = c.length, e = this.Ji; e < d; e++) { var g = c[e]; if (void 0 !== g && (b += g.total, a < b)) return e } return -1 }; z.defineProperty(I, { data: "data" }, function() { return this.fe }, function(a) { var b = this.fe; if (b !== a) { var c = this instanceof D && !(this instanceof da); c && z.g(a, "object", I, "data"); gh(this); this.fe = a; var d = this.h; null !== d && (c ? this instanceof G ? (null !== b && d.Qk.remove(b), null !== a && d.Qk.add(a, this)) : this instanceof D && (null !== b && d.zi.remove(b), null !== a && d.zi.add(a, this)) : (c = this.U, null !== c && null !== c.rg && (null !== b && c.rg.remove(b), null !== a && c.rg.add(a, this)))); this.j("data", b, a); null !== d && d.pa.qb || null !== a && this.Mb() } }); z.defineProperty(I, { mI: "itemIndex" }, function() { return this.vr }, function(a) { var b = this.vr; b !== a && (this.vr = a, this.j("itemIndex", b, a)) }); function fn(a) { a = a.Nk; return null !== a && a.G } function gh(a) { var b = a.Nk; if (null === b) null !== a.data && z.k("Template cannot have .data be non-null: " + a), a.Nk = b = new J(Xg); else if (b.G) return; var c = new J(O); eo(a, a, function(a, d) { var e = d.Ac; if (null !== e) for (bn(d, !1), e = e.i; e.next();) { var g = e.value; g.mode === Zg && bn(d, !0); if (null !== g.yn) { var h = $g(g, a, d); null !== h && (c.add(h), null === h.Oo && (h.Oo = new J(Xg)), h.Oo.add(g)) } b.add(g) } if (d instanceof I && d.type === ga) { if (0 < d.Wd.length) for (e = d.Wd, g = e.length, h = 0; h < g; h++) { var k = e[h]; if (void 0 !== k && null !== k.Ac) for (var l = k.Ac.i; l.next();) { var v = l.value; v.Ag = k; v.Ts = 2; v.Wo = k.index; b.add(v) } } if (0 < d.Sd.length) for (e = d.Sd, g = e.length, h = 0; h < g; h++) if (k = e[h], void 0 !== k && null !== k.Ac) for (l = k.Ac.i; l.next();) v = l.value, v.Ag = k, v.Ts = 1, v.Wo = k.index, b.add(v) } }); for (var d = c.i; d.next();) { var e = d.value; if (null !== e.Oo) { bn(e, !0); for (var g = e.Oo.i; g.next();) { var h = g.value; null === e.Ac && (e.Ac = new J(Xg)); e.Ac.add(h) } } e.Oo = null } for (d = b.i; d.next();) if (e = d.value, g = e.Ag, null !== g) { e.Ag = null; var k = e.yu, l = k.indexOf("."); 0 < l && g instanceof I && (h = k.substring(0, l), k = k.substr(l + 1), l = g.oe(h), null !== l ? (g = l, e.yu = k) : z.trace('Warning: unable to find GraphObject named "' + h + '" for Binding: ' + e.toString())); g instanceof Fg ? (e.Wl = z.nd(g.U), g.U.Jn = e.Wl) : (e.Wl = z.nd(g), g.Jn = e.Wl) } b.freeze(); a instanceof D && (a.be() && (rj(a, Infinity, Infinity), a.Lc()), u && !lo && eo(a, a, function(a, c) { if (c instanceof I && (c.type === Dk || c.type === Yi) && 1 >= c.elements.count && !(c instanceof D)) { if (1 === c.elements.count) { var d = null !== c.Tt; if (!d) for (var e = b.i; e.next();) if ("itemArray" === e.value.yu) { d = !0; break } } d || (z.trace("Auto or Spot Panel should not have zero or one elements: " + c.toString() + " in " + a.toString()), lo = !0) } })) } var lo = !1; I.prototype.copyTemplate = function() { var a = this.copy(); a.DJ(function(a) { a instanceof I && (a.Nk = null, a.fe = null); var c = a.Ac; null !== c && (a.Ac = null, c.each(function(c) { a.bind(c.copy()) })) }); return a }; I.prototype.updateTargetBindings = I.prototype.Mb = function(a) { var b = this.Nk; if (null !== b) for (void 0 === a && (a = ""), b = b.i; b.next();) { var c = b.value, d = c.OF; if ("" === a || "" === d || d === a) if (d = c.yu, null !== c.hH || "" !== d) { var d = this.data, e = c.yn; if (null !== e) d = "" === e ? this : "." === e ? this : ".." === e ? this : this.oe(e); else { var g = this.h; null !== g && c.St && (d = g.ha.tk) } if (null === d) u && z.trace("Binding error: missing GraphObject named " + e + " in " + this.toString()); else { var g = this, h = c.Wl; if (-1 !== h) { if (g = this.Xw(h), null === g) continue } else null !== c.Ag && (g = c.Ag); "." === e ? d = g : ".." === e && (d = g.U); e = c.Ts; if (0 !== e) { if (!(g instanceof I)) continue; h = g; 1 === e ? g = h.Zd(c.Wo) : 2 === e && (g = h.$d(c.Wo)) } void 0 !== g && c.fG(g, d) } } } }; z.defineProperty(I, { Tt: "itemArray" }, function() { return this.Ii }, function(a) { var b = this.Ii; if (b !== a) { u && null !== a && !z.isArray(a) && z.k("Panel.itemArray must be an Array-like object or null, not: " + a); var c = this.h; null !== c && null !== b && Cl(c, this); this.Ii = a; null !== c && null !== a && yl(c, this); this.j("itemArray", b, a); null !== c && c.pa.qb || this.GA() } }); function Rl(a) { return a.type === Yi || a.type === Dk || a.type === Ki || a.type === ga && 0 < a.va.length && (a = a.va.ea(0), a.Ff && a instanceof I && (a.type === Qm || a.type === Rm)) ? !0 : !1 } I.prototype.rebuildItemElements = I.prototype.GA = function() { var a = 0; for (Rl(this) && (a = 1); this.va.length > a;) this.Ve(this.va.length - 1); a = this.Tt; if (null !== a) for (var b = z.bb(a), c = 0; c < b; c++) Ql(this, z.Ya(a, c), c) }; I.prototype.findItemPanelForData = I.prototype.EH = function(a) { if (void 0 === a || null === a || null === this.rg) return null; z.g(a, "object", I, "findItemPanelForData"); return this.rg.na(a) }; function Ql(a, b, c) { if (!(void 0 === b || null === b || 0 > c)) { var d; d = mo(a, b); var e = a.nI, g = null; null !== e && (g = e.na(d)); null === g && (no || (no = !0, z.trace('No item template Panel found for category "' + d + '" on ' + a), z.trace(" Using default item template."), d = new I, e = new qa, e.bind(new Xg("text", "", ka)), d.add(e), oo = d), g = oo); d = g; null !== d && (gh(d), d = d.copy(), "object" === typeof b && (null === a.rg && (a.rg = new na(Object, I)), a.rg.add(b, d)), e = c, Rl(a) && e++, a.Ld(e, d), Sl(a, e, c), d.fe = null, d.data = b) } } function Sl(a, b, c) { for (a = a.va; b < a.length;) { var d = a.ea(b); if (d instanceof I) { var e = b, g = c; d.type === Qm ? d.Vb = e : d.type === Rm && (d.column = e); d.mI = g } b++; c++ } } z.defineProperty(I, { LK: "itemTemplate" }, function() { return null === this.sg ? null : this.sg.na("") }, function(a) { if (null === this.sg) { if (null === a) return; this.sg = new na("string", I) } var b = this.sg.na(""); b !== a && (z.l(a, I, I, "itemTemplate"), (a instanceof D || a.Ff) && z.k("Panel.itemTemplate must not be a Part or be Panel.isPanelMain: " + a), this.sg.add("", a), this.j("itemTemplate", b, a), a = this.h, null !== a && a.pa.qb || this.GA()) }); z.defineProperty(I, { nI: "itemTemplateMap" }, function() { return this.sg }, function(a) { var b = this.sg; if (b !== a) { z.l(a, na, I, "itemTemplateMap"); for (var c = a.i; c.next();) { var d = c.value; (d instanceof D || d.Ff) && z.k("Template in Panel.itemTemplateMap must not be a Part or be Panel.isPanelMain: " + d) } this.sg = a; this.j("itemTemplateMap", b, a); a = this.h; null !== a && a.pa.qb || this.GA() } }); z.defineProperty(I, { KK: "itemCategoryProperty" }, function() { return this.vo }, function(a) { var b = this.vo; b !== a && ("string" !== typeof a && "function" !== typeof a && z.ic(a, "string or function", I, "itemCategoryProperty"), this.vo = a, this.j("itemCategoryProperty", b, a)) }); function mo(a, b) { if (null === b) return ""; var c = a.vo, d = ""; if ("function" === typeof c) d = c(b); else if ("string" === typeof c && "object" === typeof b) { if ("" === c) return ""; d = z.tb(b, c) } else return ""; if (void 0 === d) return ""; if ("string" === typeof d) return d; z.k("Panel.getCategoryForItemData found a non-string category for " + b + ": " + d); return "" } var no = !1, oo = null; z.defineProperty(I, { FK: "isAtomic" }, function() { return this.dh }, function(a) { var b = this.dh; b !== a && (z.g(a, "boolean", I, "isAtomic"), this.dh = a, this.j("isAtomic", b, a)) }); z.defineProperty(I, { KE: "isClipping" }, function() { return this.hr }, function(a) { var b = this.hr; b !== a && (z.g(a, "boolean", I, "isClipping"), this.hr = a, this.j("isClipping", b, a)) }); function Fg() { z.kc(this); this.lh = null; this.Bv = !0; this.Uc = 0; this.ef = NaN; this.Uj = 0; this.Sj = Infinity; this.Ie = Pc; this.sb = this.Xa = 0; this.Ac = null; this.Ls = po; this.di = Am; this.Fs = this.Yj = null; this.Gs = NaN; this.Nb = this.Wh = null; this.Gq = !1 } z.ia("RowColumnDefinition", Fg); Fg.prototype.copy = function() { var a = new Fg; a.Bv = this.Bv; a.Uc = this.Uc; a.ef = this.ef; a.Uj = this.Uj; a.Sj = this.Sj; a.Ie = this.Ie; a.Xa = this.Xa; a.sb = this.sb; a.di = this.di; a.Ls = this.Ls; a.Yj = null === this.Yj ? null : this.Yj.V(); a.Fs = this.Fs; a.Gs = this.Gs; a.Wh = null; null !== this.Wh && (a.Wh = z.zl(this.Wh)); a.Nb = this.Nb; a.Gq = this.Gq; a.Ac = this.Ac; return a }; Fg.prototype.tt = function(a) { z.l(a, Fg, Fg, "copyFrom:pd"); a.qe ? this.height = a.height : this.width = a.width; this.pj = a.pj; this.qf = a.qf; this.alignment = a.alignment; this.stretch = a.stretch; this.uu = a.uu; this.Yj = null === a.Yj ? null : a.Yj.V(); this.Zp = a.Zp; this.$p = a.$p; this.Wh = null; a.Wh && (this.Wh = z.zl(a.Wh)); this.background = a.background; this.Mz = a.Mz; this.Ac = a.Ac }; Fg.prototype.toString = function() { return "RowColumnDefinition " + (this.qe ? "(Row " : "(Column ") + this.index + ") #" + z.nd(this) }; var po; Fg.Default = po = z.s(Fg, "Default", 0); var bo; Fg.None = bo = z.s(Fg, "None", 1); var Vn; Fg.ProportionalExtra = Vn = z.s(Fg, "ProportionalExtra", 2); Fg.prototype.Tl = function(a) { this.lh = a }; Fg.prototype.computeEffectiveSpacingTop = Fg.prototype.UD = function() { var a = 0; if (0 !== this.index) { var b = this.lh, c = this.Zp; null === c && null !== b && (c = this.qe ? b.Ai : b.Kh); null !== c && (a = this.$p, isNaN(a) && (a = null !== b ? this.qe ? b.Mh : b.Lh : 0)) } b = this.HF; if (null === b) if (b = this.lh, null !== b) b = b.Aj; else return a; return a + (this.qe ? b.top : b.left) }; Fg.prototype.computeEffectiveSpacing = Fg.prototype.Re = function() { var a = 0; if (0 !== this.index) { var b = this.lh, c = this.Zp; null === c && null !== b && (c = this.qe ? b.Ai : b.Kh); null !== c && (a = this.$p, isNaN(a) && (a = null !== b ? this.qe ? b.Mh : b.Lh : 0)) } b = this.HF; if (null === b) if (b = this.lh, null !== b) b = b.Aj; else return a; return a + (this.qe ? b.top + b.bottom : b.left + b.right) }; Fg.prototype.kd = function(a, b, c, d, e) { var g = this.lh; if (null !== g && (g.Rc(Sf, a, this, b, c, d, e), null !== this.Ac && (b = g.h, null !== b && !b.Ee && (g = g.op(), null !== g && (g = g.data, null !== g))))) for (c = this.Ac.i; c.next();) c.value.Rx(this, g, a, b) }; z.w(Fg, { U: "panel" }, function() { return this.lh }); z.defineProperty(Fg, { qe: "isRow" }, function() { return this.Bv }, function(a) { this.Bv = a }); z.defineProperty(Fg, { index: "index" }, function() { return this.Uc }, function(a) { this.Uc = a }); z.defineProperty(Fg, { height: "height" }, function() { return this.ef }, function(a) { var b = this.ef; b !== a && (u && z.g(a, "number", Fg, "height"), 0 > a && z.ka(a, ">= 0", Fg, "height"), this.ef = a, this.Oa = this.Xa, null !== this.U && this.U.S(), this.kd("height", b, a)) }); z.defineProperty(Fg, { width: "width" }, function() { return this.ef }, function(a) { var b = this.ef; b !== a && (u && z.g(a, "number", Fg, "width"), 0 > a && z.ka(a, ">= 0", Fg, "width"), this.ef = a, this.Oa = this.Xa, null !== this.U && this.U.S(), this.kd("width", b, a)) }); z.defineProperty(Fg, { pj: "minimum" }, function() { return this.Uj }, function(a) { var b = this.Uj; b !== a && (u && z.g(a, "number", Fg, "minimum"), (0 > a || !isFinite(a)) && z.ka(a, ">= 0", Fg, "minimum"), this.Uj = a, this.Oa = this.Xa, null !== this.U && this.U.S(), this.kd("minimum", b, a)) }); z.defineProperty(Fg, { qf: "maximum" }, function() { return this.Sj }, function(a) { var b = this.Sj; b !== a && (u && z.g(a, "number", Fg, "maximum"), 0 > a && z.ka(a, ">= 0", Fg, "maximum"), this.Sj = a, this.Oa = this.Xa, null !== this.U && this.U.S(), this.kd("maximum", b, a)) }); z.defineProperty(Fg, { alignment: "alignment" }, function() { return this.Ie }, function(a) { var b = this.Ie; b.N(a) || (u && z.l(a, Q, Fg, "alignment"), this.Ie = a.V(), null !== this.U && this.U.S(), this.kd("alignment", b, a)) }); z.defineProperty(Fg, { stretch: "stretch" }, function() { return this.di }, function(a) { var b = this.di; b !== a && (u && z.Ba(a, O, Fg, "stretch"), this.di = a, null !== this.U && this.U.S(), this.kd("stretch", b, a)) }); z.defineProperty(Fg, { HF: "separatorPadding" }, function() { return this.Yj }, function(a) { "number" === typeof a ? a = new Db(a) : null !== a && u && z.l(a, Db, Fg, "separatorPadding"); var b = this.Yj; null !== a && null !== b && b.N(a) || (null !== a && (a = a.V()), this.Yj = a, null !== this.U && this.U.S(), this.kd("separatorPadding", b, a)) }); z.defineProperty(Fg, { Zp: "separatorStroke" }, function() { return this.Fs }, function(a) { var b = this.Fs; b !== a && (null === a || "string" === typeof a || a instanceof Da) && (a instanceof Da && a.freeze(), this.Fs = a, null !== this.U && this.U.S(), this.kd("separatorStroke", b, a)) }); z.defineProperty(Fg, { $p: "separatorStrokeWidth" }, function() { return this.Gs }, function(a) { var b = this.Gs; b !== a && (this.Gs = a, null !== this.U && this.U.S(), this.kd("separatorStrokeWidth", b, a)) }); z.defineProperty(Fg, { iJ: "separatorDashArray" }, function() { return this.Wh }, function(a) { var b = this.Wh; if (b !== a) { null === a || Array.isArray(a) || z.ic(a, "Array", Fg, "separatorDashArray:value"); if (null !== a) { for (var c = a.length, d = 0, e = 0; e < c; e++) { var g = a[e]; "number" === typeof g && 0 <= g && isFinite(g) || z.k("separatorDashArray value " + g + " at index " + e + " must be a positive number or zero."); d += g } if (0 === d) { if (null === b) return; a = null } } this.Wh = a; null !== this.U && this.U.ta(); this.kd("separatorDashArray", b, a) } }); z.defineProperty(Fg, { background: "background" }, function() { return this.Nb }, function(a) { var b = this.Nb; b !== a && (null === a || "string" === typeof a || a instanceof Da) && (a instanceof Da && a.freeze(), this.Nb = a, null !== this.U && this.U.ta(), this.kd("background", b, a)) }); z.defineProperty(Fg, { Mz: "coversSeparators" }, function() { return this.Gq }, function(a) { var b = this.Gq; b !== a && (z.g(a, "boolean", Fg, "coversSeparators"), this.Gq = a, null !== this.U && this.U.ta(), this.kd("coversSeparators", b, a)) }); z.defineProperty(Fg, { uu: "sizing" }, function() { return this.Ls }, function(a) { var b = this.Ls; b !== a && (u && z.Ba(a, Fg, Fg, "sizing"), this.Ls = a, null !== this.U && this.U.S(), this.kd("sizing", b, a)) }); function ao(a) { if (a.uu === po) { var b = a.lh; return a.qe ? b.eJ : b.dH } return a.uu } z.defineProperty(Fg, { Oa: "actual" }, function() { return this.Xa }, function(a) { this.Xa = isNaN(this.ef) ? Math.max(Math.min(this.Sj, a), this.Uj) : Math.max(Math.min(this.Sj, this.ef), this.Uj) }); z.defineProperty(Fg, { total: "total" }, function() { return this.Xa + this.Re() }, function(a) { this.Xa = isNaN(this.ef) ? Math.max(Math.min(this.Sj, a), this.Uj) : Math.max(Math.min(this.Sj, this.ef), this.Uj); this.Xa = Math.max(0, this.Xa - this.Re()) }); z.defineProperty(Fg, { position: "position" }, function() { return this.sb }, function(a) { this.sb = a }); Fg.prototype.bind = Fg.prototype.bind = function(a) { a.Ag = this; var b = this.U; if (null !== b) { var c = b.op(); null !== c && fn(c) && z.k("Cannot add a Binding to a RowColumnDefinition that is already frozen: " + a + " on " + b) } null === this.Ac && (this.Ac = new J(Xg)); this.Ac.add(a) }; function X() { O.call(this); this.ab = null; this.fo = "None"; this.Yh = !1; this.br = Am; this.Nn = null; this.Kc = this.Ad = "black"; this.Oe = 1; this.So = "butt"; this.Uo = "miter"; this.Km = 10; this.To = null; this.ve = 0; this.ci = this.bi = Pc; this.cs = this.bs = NaN; this.ir = !1; this.es = null; this.ko = this.Yo = "None"; this.fr = 1 } z.Qa(X, O); z.ia("Shape", X); X.prototype.cloneProtected = function(a) { O.prototype.cloneProtected.call(this, a); a.ab = this.ab; a.fo = this.fo; a.Yh = this.Yh; a.br = this.br; a.Nn = this.Nn; a.Ad = this.Ad; a.Kc = this.Kc; a.Oe = this.Oe; a.So = this.So; a.Uo = this.Uo; a.Km = this.Km; null !== this.To && (a.To = z.zl(this.To)); a.ve = this.ve; a.bi = this.bi.V(); a.ci = this.ci.V(); a.bs = this.bs; a.cs = this.cs; a.ir = this.ir; a.es = this.es; a.Yo = this.Yo; a.ko = this.ko; a.fr = this.fr }; X.prototype.toString = function() { return "Shape(" + ("None" !== this.Hb ? this.Hb : "None" !== this.fq ? this.fq : this.Xz) + ")#" + z.nd(this) }; function qo(a, b, c, d) { var e = c.length; if (!(4 > e)) { for (var g = d.Ia, h = Math.max(1, g.width), g = g.height, k = c[0], l = c[1], m = 0, n = 0, p = 0, q = 0, r = 0, s = 0, t = q = 0, v = z.rb(), x = 2; x < e; x += 2) m = c[x], n = c[x + 1], p = m - k, q = n - l, 0 === p && (p = .001), r = q / p, s = Math.atan2(q, p), q = Math.sqrt(p * p + q * q), v.push([p, s, r, q]), t += q, k = m, l = n; k = c[0]; l = c[1]; p = d.Ia.width; d instanceof X && (p -= d.ub); 1 > p && (p = 1); c = p; for (var e = 0, m = c, n = h / 2, x = 0 === n ? !1 : !0, y = 0, q = v[y], p = q[0], s = q[1], r = q[2], q = q[3], A = 0; .1 <= t;) { 0 === A && (x ? (m = c, e++, m -= n, t -= n, x = !1) : (m = c, e++), 0 === m && (m = 1)); if (m > t) { z.xa(v); return } m > q ? (A = m - q, m = q) : A = 0; var B = Math.sqrt(m * m / (1 + r * r)); 0 > p && (B = -B); k += B; l += r * B; a.translate(k, l); a.rotate(s); a.translate(-(h / 2), -(g / 2)); 0 === A && d.nk(a, b); a.translate(h / 2, g / 2); a.rotate(-s); a.translate(-k, -l); t -= m; q -= m; if (0 !== A) { y++; if (y === v.length) { z.xa(v); return } q = v[y]; p = q[0]; s = q[1]; r = q[2]; q = q[3]; m = A } } z.xa(v) } } X.prototype.nk = function(a, b) { if (null !== this.Kc || null !== this.Ad) { null !== this.Ad && Um(this, a, this.Ad, !0, !1); null !== this.Kc && Um(this, a, this.Kc, !1, !1); var c = this.Oe; if (0 === c) { var d = this.ca; d instanceof da && d.type === Ki && "Selection" === d.nc && d.fc instanceof X && d.Wf.gf() === d.fc && (c = d.fc.ub) } a.lineWidth = c; a.lineJoin = this.Uo; a.lineCap = this.So; a.miterLimit = this.Km; var e = !1; this.ca && b.hj("drawShadows") && (e = this.ca.sk); var g = !0; null !== this.Kc && null === this.Ad && (g = !1); var d = !1, h = !0, k = this.QF; null !== k && (d = !0, h = a.Tz(k, this.ve)); var l = this.ab; if (null !== l) { if (l.ba === mf) a.beginPath(), d && !h ? Hm(a, l.xc, l.Cc, l.zb, l.Gb, k, this.ve) : (a.moveTo(l.xc, l.Cc), a.lineTo(l.zb, l.Gb)), null !== this.Ad && a.Gg(this.Ad), 0 !== c && null !== this.Kc && a.tj(); else if (l.ba === nf) { var m = l.xc, n = l.Cc, p = l.zb, q = l.Gb, l = Math.min(m, p), r = Math.min(n, q), m = Math.abs(p - m), n = Math.abs(q - n); null !== this.Ad && (a.beginPath(), a.rect(l, r, m, n), a.Gg(this.Ad)); if (null !== this.Kc) { var s = p = 0, t = 0; g && e && (p = a.shadowOffsetX, s = a.shadowOffsetY, t = a.shadowBlur, a.shadowOffsetX = 0, a.shadowOffsetY = 0, a.shadowBlur = 0); d && !h ? (h = z.rb(), h.push(l), h.push(r), h.push(l + m), h.push(r), h.push(l + m), h.push(r + n), h.push(l), h.push(r + n), h.push(l), h.push(r), a.beginPath(), ro(a, h, k, this.ve), a.tj(), z.xa(h)) : 0 !== c && (a.beginPath(), a.rect(l, r, m, n), a.tj()); g && e && (a.shadowOffsetX = p, a.shadowOffsetY = s, a.shadowBlur = t) } } else if (l.ba === of) m = l.xc, n = l.Cc, p = l.zb, q = l.Gb, l = Math.abs(p - m) / 2, r = Math.abs(q - n) / 2, m = Math.min(m, p) + l, n = Math.min(n, q) + r, a.beginPath(), a.moveTo(m, n - r), a.bezierCurveTo(m + Hd * l, n - r, m + l, n - Hd * r, m + l, n), a.bezierCurveTo(m + l, n + Hd * r, m + Hd * l, n + r, m, n + r), a.bezierCurveTo(m - Hd * l, n + r, m - l, n + Hd * r, m - l, n), a.bezierCurveTo(m - l, n - Hd * r, m - Hd * l, n - r, m, n - r), a.closePath(), null !== this.Ad && a.Gg(this.Ad), d && !h && (h = z.rb(), we(m, n - r, m + Hd * l, n - r, m + l, n - Hd * r, m + l, n, .5, h), we(m + l, n, m + l, n + Hd * r, m + Hd * l, n + r, m, n + r, .5, h), we(m, n + r, m - Hd * l, n + r, m - l, n + Hd * r, m - l, n, .5, h), we(m - l, n, m - l, n - Hd * r, m - Hd * l, n - r, m, n - r, .5, h), a.beginPath(), ro(a, h, k, this.ve), z.xa(h)), 0 !== c && null !== this.Kc && (g && e ? (p = a.shadowOffsetX, s = a.shadowOffsetY, t = a.shadowBlur, a.shadowOffsetX = 0, a.shadowOffsetY = 0, a.shadowBlur = 0, a.tj(), a.shadowOffsetX = p, a.shadowOffsetY = s, a.shadowBlur = t) : a.tj()); else if (l.ba === jf) { r = l.Cj; n = r.length; for (q = 0; q < n; q++) { m = r.o[q]; a.beginPath(); a.moveTo(m.Ha, m.Da); for (var p = m.Ab.o, s = p.length, v = null, t = 0; t < s; t++) { var x = p[t]; switch (x.ba) { case Df: a.moveTo(x.L, x.M); break; case qf: a.lineTo(x.L, x.M); break; case Ef: a.bezierCurveTo(x.Cd, x.Ne, x.mh, x.yg, x.zb, x.Gb); break; case Ff: a.quadraticCurveTo(x.Cd, x.Ne, x.zb, x.Gb); break; case Gf: if (x.radiusX === x.radiusY) v = Math.PI / 180, a.arc(x.Cd, x.Ne, x.radiusX, x.Fe * v, (x.Fe + x.Lf) * v, 0 > x.Lf); else { var v = If(x, m), y = v.length; if (0 === y) { a.lineTo(x.ra, x.za); break } for (var A = 0; A < y; A++) { var B = v[A]; 0 === A && a.lineTo(B[0], B[1]); a.bezierCurveTo(B[2], B[3], B[4], B[5], B[6], B[7]) } } break; case Hf: A = y = 0; if (null !== v && v.type === Gf) { v = If(v, m); B = v.length; if (0 === B) { a.lineTo(x.ra, x.za); break } v = v[B - 1] || null; null !== v && (y = v[6], A = v[7]) } else y = null !== v ? v.L : m.Ha, A = null !== v ? v.M : m.Da; v = Jf(x, m, y, A); y = v.length; if (0 === y) { a.lineTo(x.ra, x.za); break } for (A = 0; A < y; A++) B = v[A], a.bezierCurveTo(B[2], B[3], B[4], B[5], B[6], B[7]); break; default: z.k("Segment not of valid type: " + x.ba) } x.Rh && a.closePath(); v = x } e ? (t = s = p = 0, m.so ? (!0 === m.jm && null !== this.Ad ? (a.Gg(this.Ad), g = !0) : g = !1, 0 !== c && null !== this.Kc && (g && (p = a.shadowOffsetX, s = a.shadowOffsetY, t = a.shadowBlur, a.shadowOffsetX = 0, a.shadowOffsetY = 0, a.shadowBlur = 0), d && !h || a.tj(), g && (a.shadowOffsetX = p, a.shadowOffsetY = s, a.shadowBlur = t))) : (g && (p = a.shadowOffsetX, s = a.shadowOffsetY, t = a.shadowBlur, a.shadowOffsetX = 0, a.shadowOffsetY = 0, a.shadowBlur = 0), !0 === m.jm && null !== this.Ad && a.Gg(this.Ad), 0 !== c && null !== this.Kc && (d && !h || a.tj()), g && (a.shadowOffsetX = p, a.shadowOffsetY = s, a.shadowBlur = t))) : (!0 === m.jm && null !== this.Ad && a.Gg(this.Ad), 0 === c || null === this.Kc || d && !h || a.tj()) } if (d && !h) for (c = g, g = l.Cj, h = g.length, l = 0; l < h; l++) { r = g.o[l]; a.beginPath(); n = z.rb(); n.push(r.Ha); n.push(r.Da); q = r.Ha; m = r.Da; p = q; s = m; t = r.Ab.o; x = t.length; for (v = 0; v < x; v++) { y = t[v]; switch (y.ba) { case Df: ro(a, n, k, this.ve); n.length = 0; n.push(y.L); n.push(y.M); q = y.L; m = y.M; p = q; s = m; break; case qf: n.push(y.L); n.push(y.M); q = y.L; m = y.M; break; case Ef: we(q, m, y.Cd, y.Ne, y.mh, y.yg, y.zb, y.Gb, .5, n); q = y.L; m = y.M; break; case Ff: Je(q, m, y.Cd, y.Ne, y.zb, y.Gb, .5, n); q = y.L; m = y.M; break; case Gf: A = If(y, r); B = A.length; if (0 === B) { n.push(y.ra); n.push(y.za); q = y.ra; m = y.za; break } for (var L = 0; L < B; L++) { var H = A[L]; we(q, m, H[2], H[3], H[4], H[5], H[6], H[7], .5, n); q = H[6]; m = H[7] } break; case Hf: A = Jf(y, r, q, m); B = A.length; if (0 === B) { n.push(y.ra); n.push(y.za); q = y.ra; m = y.za; break } for (L = 0; L < B; L++) H = A[L], we(q, m, H[2], H[3], H[4], H[5], H[6], H[7], .5, n), q = H[6], m = H[7]; break; default: z.k("Segment not of valid type: " + y.ba) } y.Rh && (n.push(p), n.push(s), ro(a, n, k, this.ve)) } ro(a, n, k, this.ve); z.xa(n); null !== this.Kc && (q = n = r = 0, c && e && (r = a.shadowOffsetX, n = a.shadowOffsetY, q = a.shadowBlur, a.shadowOffsetX = 0, a.shadowOffsetY = 0, a.shadowBlur = 0), a.tj(), c && e && (a.shadowOffsetX = r, a.shadowOffsetY = n, a.shadowBlur = q)) } } d && a.Pz(); if (null !== this.xx) { d = this.xx; rj(d, Infinity, Infinity); k = d.Ia; d.Lc(0, 0, k.width, k.height); c = this.Jl; a.save(); a.beginPath(); k = z.rb(); if (c.type === mf) k.push(c.Ha), k.push(c.Da), k.push(c.L), k.push(c.M), qo(a, b, k, d); else if (c.type === jf) for (h = c.cc.i; h.next();) { l = h.value; k.length = 0; k.push(l.Ha); k.push(l.Da); g = l.Ha; r = l.Da; n = g; q = r; m = l.Ab.o; p = m.length; for (s = 0; s < p; s++) { t = m[s]; switch (t.ba) { case Df: qo(a, b, k, d); k.length = 0; k.push(t.L); k.push(t.M); g = t.L; r = t.M; n = g; q = r; break; case qf: k.push(t.L); k.push(t.M); g = t.L; r = t.M; break; case Ef: we(g, r, t.Cd, t.Ne, t.mh, t.yg, t.zb, t.Gb, .5, k); g = t.L; r = t.M; break; case Ff: Je(g, r, t.Cd, t.Ne, t.zb, t.Gb, .5, k); g = t.L; r = t.M; break; case Gf: c = If(t, l); e = c.length; if (0 === e) { k.push(t.ra); k.push(t.za); g = t.ra; r = t.za; break } for (x = 0; x < e; x++) v = c[x], we(g, r, v[2], v[3], v[4], v[5], v[6], v[7], .5, k), g = v[6], r = v[7]; break; case Hf: c = Jf(t, l, g, r); e = c.length; if (0 === e) { k.push(t.ra); k.push(t.za); g = t.ra; r = t.za; break } for (x = 0; x < e; x++) v = c[x], we(g, r, v[2], v[3], v[4], v[5], v[6], v[7], .5, k), g = v[6], r = v[7]; break; default: z.k("Segment not of valid type: " + t.ba) } t.Rh && (k.push(n), k.push(q), qo(a, b, k, d)) } qo(a, b, k, d) } else if (c.type === nf) k.push(c.Ha), k.push(c.Da), k.push(c.L), k.push(c.Da), k.push(c.L), k.push(c.M), k.push(c.Ha), k.push(c.M), k.push(c.Ha), k.push(c.Da), qo(a, b, k, d); else if (c.type === of) { h = new kf; h.Ha = c.L; h.Da = (c.Da + c.M) / 2; g = new Of(Gf); g.Fe = 0; g.Lf = 360; g.ra = (c.Ha + c.L) / 2; g.za = (c.Da + c.M) / 2; g.radiusX = Math.abs(c.Ha - c.L) / 2; g.radiusY = Math.abs(c.Da - c.M) / 2; h.add(g); c = If(g, h); e = c.length; if (0 === e) k.push(g.ra), k.push(g.za); else for (g = h.Ha, r = h.Da, x = 0; x < e; x++) v = c[x], we(g, r, v[2], v[3], v[4], v[5], v[6], v[7], .5, k), g = v[6], r = v[7]; qo(a, b, k, d) } z.xa(k); a.restore(); ca(a, !1) } } } }; function ro(a, b, c, d) { var e = b.length; if (!(4 > e)) { var g = .001, h = c.length, k = b[0], l = b[1]; if (4 === e) Hm(a, k, l, b[2], b[3], c, d); else { a.moveTo(k, l); for (var m = g = 0, n = 0, p = 0, q = 0, r = p = 0, s = z.rb(), t = 2; t < e; t += 2) g = b[t], m = b[t + 1], n = g - k, p = m - l, 0 === n && (n = .001), q = p / n, p = Math.sqrt(n * n + p * p), s.push([n, q, p]), r += p, k = g, l = m; k = b[0]; l = b[1]; b = 0; for (var e = !0, g = c[b % h], m = 0 !== d, t = 0, p = s[t], n = p[0], q = p[1], p = p[2], v = 0; .1 <= r;) { 0 === v && (g = c[b % h], b++, m && (d %= g, g -= d, m = !1)); g > r && (g = r); g > p ? (v = g - p, g = p) : v = 0; var x = Math.sqrt(g * g / (1 + q * q)); 0 > n && (x = -x); k += x; l += q * x; e ? a.lineTo(k, l) : a.moveTo(k, l); r -= g; p -= g; if (0 !== v) { t++; if (t === s.length) { z.xa(s); return } p = s[t]; n = p[0]; q = p[1]; p = p[2]; g = v } else e = !e } z.xa(s) } } } X.prototype.getDocumentPoint = X.prototype.fb = function(a, b) { void 0 === b && (b = new N); a.Be() && z.k("getDocumentPoint Spot must be a real, specific Spot, not: " + a.toString()); var c = this.Ga, d = this.ub; b.n(a.x * (c.width + d) - d / 2 + c.x + a.offsetX, a.y * (c.height + d) - d / 2 + c.y + a.offsetY); this.ph.Cb(b); return b }; X.prototype.lk = function(a, b) { var c = this.ab; if (null === c || null === this.fill && null === this.stroke) return !1; var d = c.vb, e = this.ub / 2; c.type !== mf || b || (e += 2); var g = z.kg(); g.assign(d); g.ag(e + 2, e + 2); if (!g.Ma(a)) return z.dc(g), !1; d = e + 1E-4; if (c.type === mf) { if (null === this.stroke) return !1; d = (c.L - c.Ha) * (a.x - c.Ha) + (c.M - c.Da) * (a.y - c.Da); if (0 > (c.Ha - c.L) * (a.x - c.L) + (c.Da - c.M) * (a.y - c.M) || 0 > d) return !1; z.dc(g); return te(c.Ha, c.Da, c.L, c.M, e, a.x, a.y) } if (c.type === nf) { var h = c.Ha, k = c.Da, l = c.L, m = c.M; g.x = Math.min(h, l); g.y = Math.min(k, m); g.width = Math.abs(l - h); g.height = Math.abs(m - k); if (null === this.fill) { g.ag(-d, -d); if (g.Ma(a)) return z.dc(g), !1; g.ag(d, d) } null !== this.stroke && g.ag(e, e); e = g.Ma(a); z.dc(g); return e } if (c.type === of) { var h = c.Ha, k = c.Da, l = c.L, m = c.M, c = Math.min(h, l), n = Math.min(k, m), h = Math.abs(l - h) / 2, k = Math.abs(m - k) / 2, c = a.x - (c + h), n = a.y - (n + k); if (null === this.fill) { h -= d; k -= d; if (0 >= h || 0 >= k || 1 >= c * c / (h * h) + n * n / (k * k)) return z.dc(g), !1; h += d; k += d } null !== this.stroke && (h += e, k += e); z.dc(g); return 0 >= h || 0 >= k ? !1 : 1 >= c * c / (h * h) + n * n / (k * k) } if (c.type === jf) return z.dc(g), null === this.fill ? Nf(c, a.x, a.y, e) : c.Ma(a, e, 1 < this.ub, b); z.k("Unknown Geometry type: " + c.type); return !1 }; X.prototype.Ip = function(a, b, c, d) { var e = this.Aa, g = this.Oe; a = Math.max(a, 0); b = Math.max(b, 0); var h; if (this.Yh) h = this.Jl.vb; else { var k = this.Hb, l = je[k]; if (void 0 === l) { var m = so[k]; "string" === typeof m && (m = so[m]); "function" === typeof m ? (l = m(null, 100, 100), je[k] = l) : z.k("Unsupported Figure: " + k) } h = l.vb } var k = h.width, l = h.height, m = h.width, n = h.height; switch (Mm(this, !0)) { case $i: d = c = 0; break; case lf: m = Math.max(a - g, 0); n = Math.max(b - g, 0); break; case Cm: m = Math.max(a - g, 0); d = 0; break; case Bm: c = 0, n = Math.max(b - g, 0) } isFinite(e.width) && (m = e.width); isFinite(e.height) && (n = e.height); e = this.Xe; h = this.cg; c = Math.max(c, h.width) - g; d = Math.max(d, h.height) - g; m = Math.min(e.width, m); n = Math.min(e.height, n); m = isFinite(m) ? Math.max(c, m) : Math.max(k, c); n = isFinite(n) ? Math.max(d, n) : Math.max(l, d); c = aj(this); switch (c) { case $i: break; case lf: k = m; l = n; break; case bj: c = Math.min(m / k, n / l); isFinite(c) || (c = 1); k *= c; l *= c; break; default: z.k(c + " is not a valid geometryStretch.") } if (this.Yh) k = Math.max(k, .01), l = Math.max(l, .01), h = this.Jl, e = k, d = l, c = h.copy(), h = h.vb, e /= h.width, d /= h.height, isFinite(e) || (e = 1), isFinite(d) || (d = 1), 1 === e && 1 === d || c.scale(e, d), this.ab = c; else if (null === this.ab || this.ab.ro !== a - g || this.ab.po !== b - g) this.ab = X.makeGeometry(this, k, l); h = this.ab.vb; Infinity === a || Infinity === b ? Jm(this, h.x - g / 2, h.y - g / 2, 0 === a && 0 === k ? 0 : h.width + g, 0 === b && 0 === l ? 0 : h.height + g) : Jm(this, -(g / 2), -(g / 2), m + g, n + g) }; function co(a, b, c, d) { if (!1 !== ml(a)) { a.ud.Wa(); var e = a.Oe; 0 === e && d instanceof da && d.type === Ki && d.fc instanceof X && (e = d.fc.ub); e *= a.bc; d instanceof G && null !== d.ab ? (b = d.ab.vb, Jm(a, b.x - e / 2, b.y - e / 2, b.width + e, b.height + e)) : Jm(a, -(e / 2), -(e / 2), b + e, c + e); a.ud.freeze(); a.ud.F() || z.k("Non-real measuredBounds has been set. Object " + a + ", measuredBounds: " + a.ud.toString()); Yk(a, !1) } } function aj(a) { var b = a.Zz; return a.Yh ? b === Am ? lf : b : b === Am ? je[a.Hb].Xd : b } X.prototype.$i = function(a, b, c, d) { Nm(this, a, b, c, d) }; X.prototype.getNearestIntersectionPoint = X.prototype.yE = function(a, b, c) { return this.tp(a.x, a.y, b.x, b.y, c) }; X.prototype.tp = function(a, b, c, d, e) { var g = this.transform, h = 1 / (g.m11 * g.m22 - g.m12 * g.m21), k = g.m22 * h, l = -g.m12 * h, m = -g.m21 * h, n = g.m11 * h, p = h * (g.m21 * g.dy - g.m22 * g.dx), q = h * (g.m12 * g.dx - g.m11 * g.dy), g = a * k + b * m + p, h = a * l + b * n + q, k = c * k + d * m + p, l = c * l + d * n + q, m = this.ub / 2, p = this.ab; null === p && (rj(this, Infinity, Infinity), p = this.ab); q = p.vb; n = !1; if (p.type === mf) if (1.5 >= this.ub) n = Me(p.xc, p.Cc, p.zb, p.Gb, g, h, k, l, e); else { var r = 0, s = 0; p.xc === p.zb ? (r = m, s = 0) : (b = (p.Gb - p.Cc) / (p.zb - p.xc), s = m / Math.sqrt(1 + b * b), r = s * b); d = z.rb(); b = new N; Me(p.xc + r, p.Cc + s, p.zb + r, p.Gb + s, g, h, k, l, b) && d.push(b); b = new N; Me(p.xc - r, p.Cc - s, p.zb - r, p.Gb - s, g, h, k, l, b) && d.push(b); b = new N; Me(p.xc + r, p.Cc + s, p.xc - r, p.Cc - s, g, h, k, l, b) && d.push(b); b = new N; Me(p.zb + r, p.Gb + s, p.zb - r, p.Gb - s, g, h, k, l, b) && d.push(b); b = d.length; if (0 === b) return z.xa(d), !1; n = !0; s = Infinity; for (r = 0; r < b; r++) { var k = d[r], t = (k.x - g) * (k.x - g) + (k.y - h) * (k.y - h); t < s && (s = t, e.x = k.x, e.y = k.y) } z.xa(d) } else if (p.type === nf) b = q.x - m, n = Ne(b, q.y - m, q.x + q.width + m, q.y + q.height + m, g, h, k, l, e); else if (p.type === of) a: if (b = q.copy().ag(m, m), 0 === b.width) n = Me(b.x, b.y, b.x, b.y + b.height, g, h, k, l, e); else if (0 === b.height) n = Me(b.x, b.y, b.x + b.width, b.y, g, h, k, l, e); else { a = b.width / 2; var v = b.height / 2; d = b.x + a; b = b.y + v; c = 9999; g !== k && (c = (h - l) / (g - k)); if (9999 > Math.abs(c)) { n = h - b - c * (g - d); if (0 > a * a * c * c + v * v - n * n) { e.x = NaN; e.y = NaN; n = !1; break a } m = Math.sqrt(a * a * c * c + v * v - n * n); k = (-(a * a * c * n) + a * v * m) / (v * v + a * a * c * c) + d; a = (-(a * a * c * n) - a * v * m) / (v * v + a * a * c * c) + d; l = c * (k - d) + n + b; b = c * (a - d) + n + b; d = Math.abs((g - k) * (g - k)) + Math.abs((h - l) * (h - l)); h = Math.abs((g - a) * (g - a)) + Math.abs((h - b) * (h - b)); d < h ? (e.x = k, e.y = l) : (e.x = a, e.y = b) } else { k = v * v; l = g - d; k -= k / (a * a) * l * l; if (0 > k) { e.x = NaN; e.y = NaN; n = !1; break a } m = Math.sqrt(k); l = b + m; b -= m; d = Math.abs(l - h); h = Math.abs(b - h); d < h ? (e.x = g, e.y = l) : (e.x = g, e.y = b) } n = !0 } else if (p.type === jf) { var x = 0, y = 0, A = t = 0, q = z.O(), r = k - g, s = l - h, s = r * r + s * s; e.x = k; e.y = l; for (r = 0; r < p.cc.count; r++) for (var B = p.cc.o[r], L = B.Ab, x = B.Ha, y = B.Da, H = x, U = y, ea = 0; ea < L.count; ea++) { var W = L.o[ea], P = W.type, t = W.L, A = W.M, ba = !1; switch (P) { case Df: H = t; U = A; break; case qf: ba = to(x, y, t, A, g, h, k, l, q); break; case Ef: var ba = W.zc, P = W.Qc, Oa = W.Ah, sa = W.Bh, ba = Ke(x, y, ba, P, Oa, sa, t, A, g, h, k, l, .5, q); break; case Ff: ba = (x + 2 * W.zc) / 3; P = (y + 2 * W.Qc) / 3; Oa = (2 * W.zc + t) / 3; sa = (2 * W.zc + t) / 3; ba = Ke(x, y, ba, P, Oa, sa, t, A, g, h, k, l, .5, q); break; case Gf: case Hf: P = W.type === Gf ? If(W, B) : Jf(W, B, x, y); Oa = P.length; if (0 === Oa) { ba = to(x, y, W.ra, W.za, g, h, k, l, q); break } for (A = 0; A < Oa; A++) v = P[A], 0 === A && to(x, y, v[0], v[1], g, h, k, l, q) && (t = uo(g, h, q, s, e), t < s && (s = t, n = !0)), Ke(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7], g, h, k, l, .5, q) && (t = uo(g, h, q, s, e), t < s && (s = t, n = !0)); t = v[6]; A = v[7]; break; default: z.k("Unknown Segment type: " + P) } x = t; y = A; ba && (t = uo(g, h, q, s, e), t < s && (s = t, n = !0)); W.gx && (t = H, A = U, to(x, y, t, A, g, h, k, l, q) && (t = uo(g, h, q, s, e), t < s && (s = t, n = !0))) } g = c - a; h = d - b; b = Math.sqrt(g * g + h * h); 0 !== b && (g /= b, h /= b); e.x -= g * m; e.y -= h * m; z.A(q) } else z.k("Unknown Geometry type: " + p.type); if (!n) return !1; this.transform.Cb(e); return !0 }; function uo(a, b, c, d, e) { a = c.x - a; b = c.y - b; b = a * a + b * b; return b < d ? (e.x = c.x, e.y = c.y, b) : d } function to(a, b, c, d, e, g, h, k, l) { var m = !1, n = (e - h) * (b - d) - (g - k) * (a - c); if (0 === n) return !1; l.x = ((e * k - g * h) * (a - c) - (e - h) * (a * d - b * c)) / n; l.y = ((e * k - g * h) * (b - d) - (g - k) * (a * d - b * c)) / n; (a > c ? a - c : c - a) < (b > d ? b - d : d - b) ? (e = b < d ? b : d, a = b < d ? d : b, (l.y > e || td(l.y, e)) && (l.y < a || td(l.y, a)) && (m = !0)) : (e = a < c ? a : c, a = a < c ? c : a, (l.x > e || td(l.x, e)) && (l.x < a || td(l.x, a)) && (m = !0)); return m } X.prototype.containedInRect = X.prototype.Ym = function(a, b) { if (void 0 === b) return a.mk(this.W); var c = this.ab; null === c && (rj(this, Infinity, Infinity), c = this.ab); var c = c.vb, d = this.ub / 2, e = !1, g = z.O(); g.n(c.x - d, c.y - d); a.Ma(b.Cb(g)) && (g.n(c.x - d, c.bottom + d), a.Ma(b.Cb(g)) && (g.n(c.right + d, c.bottom + d), a.Ma(b.Cb(g)) && (g.n(c.right + d, c.y - d), a.Ma(b.Cb(g)) && (e = !0)))); z.A(g); return e }; X.prototype.intersectsRect = X.prototype.Ig = function(a, b) { if (this.Ym(a, b) || void 0 === b && (b = this.transform, a.mk(this.W))) return !0; var c = z.Fh(); c.set(b); c.fA(); var d = a.left, e = a.right, g = a.top, h = a.bottom, k = z.O(); k.n(d, g); c.Cb(k); if (this.lk(k, !0)) return z.A(k), !0; k.n(e, g); c.Cb(k); if (this.lk(k, !0)) return z.A(k), !0; k.n(d, h); c.Cb(k); if (this.lk(k, !0)) return z.A(k), !0; k.n(e, h); c.Cb(k); if (this.lk(k, !0)) return z.A(k), !0; var l = z.O(), m = z.O(); c.set(b); c.vA(this.transform); c.fA(); l.x = e; l.y = g; l.transform(c); k.x = d; k.y = g; k.transform(c); var n = !1; vo(this, k, l, m) ? n = !0 : (k.x = e, k.y = h, k.transform(c), vo(this, k, l, m) ? n = !0 : (l.x = d, l.y = h, l.transform(c), vo(this, k, l, m) ? n = !0 : (k.x = d, k.y = g, k.transform(c), vo(this, k, l, m) && (n = !0)))); z.A(k); z.jf(c); z.A(l); z.A(m); return n }; function vo(a, b, c, d) { if (!a.yE(b, c, d)) return !1; a = b.x; b = b.y; var e = c.x; c = c.y; var g = d.x; d = d.y; if (a === e) { var h = 0; a = 0; b < c ? (h = b, a = c) : (h = c, a = b); return d >= h && d <= a } a < e ? (h = a, a = e) : h = e; return g >= h && g <= a } X.prototype.sE = function(a, b, c) { function d(a, b) { for (var c = a.length, d = 0; d < c; d += 2) if (b.kp(a[d], a[d + 1]) > e) return !0; return !1 } if (c && null !== this.fill && this.lk(a, !0)) return !0; var e = a.Af(b); b = e; 1.5 < this.ub && (e = this.ub / 2 + Math.sqrt(e), e *= e); var g = this.ab; if (null === g && (rj(this, Infinity, Infinity), g = this.ab, null === g)) return !1; if (!c) { var h = g.vb, k = h.x, l = h.y, m = h.x + h.width, h = h.y + h.height; if (wb(a.x, a.y, k, l) <= e && wb(a.x, a.y, m, l) <= e && wb(a.x, a.y, k, h) <= e && wb(a.x, a.y, m, h) <= e) return !0 } k = g.xc; l = g.Cc; m = g.zb; h = g.Gb; if (g.type === mf) { if (c = vb(a.x, a.y, k, l, m, h), g = (k - m) * (a.x - m) + (l - h) * (a.y - h), c <= (0 <= (m - k) * (a.x - k) + (h - l) * (a.y - l) && 0 <= g ? e : b)) return !0 } else { if (g.type === nf) return b = !1, c && (b = vb(a.x, a.y, k, l, k, h) <= e || vb(a.x, a.y, k, l, m, l) <= e || vb(a.x, a.y, m, l, m, h) <= e || vb(a.x, a.y, k, h, m, h) <= e), b; if (g.type === of) { b = a.x - (k + m) / 2; var g = a.y - (l + h) / 2, n = Math.abs(m - k) / 2, p = Math.abs(h - l) / 2; if (0 === n || 0 === p) return c = vb(a.x, a.y, k, l, m, h), c <= e ? !0 : !1; if (c) { if (a = gf(n, p, b, g), a * a <= e) return !0 } else return wb(b, g, -n, 0) >= e || wb(b, g, 0, -p) >= e || wb(b, g, 0, p) >= e || wb(b, g, n, 0) >= e ? !1 : !0 } else if (g.type === jf) { h = g.vb; k = h.x; l = h.y; m = h.x + h.width; h = h.y + h.height; if (a.x > m && a.x < k && a.y > h && a.y < l && vb(a.x, a.y, k, l, k, h) > e && vb(a.x, a.y, k, l, m, l) > e && vb(a.x, a.y, m, h, k, h) > e && vb(a.x, a.y, m, h, m, l) > e) return !1; b = Math.sqrt(e); if (c) { if (null === this.fill ? Nf(g, a.x, a.y, b) : g.Ma(a, b, !0)) return !0 } else { c = g.cc; for (b = 0; b < c.count; b++) { k = c.o[b]; n = k.Ha; p = k.Da; if (a.kp(n, p) > e) return !1; l = k.Ab.o; m = l.length; for (h = 0; h < m; h++) { var q = l[h]; switch (q.type) { case Df: case qf: n = q.L; p = q.M; if (a.kp(n, p) > e) return !1; break; case Ef: g = z.rb(); we(n, p, q.zc, q.Qc, q.Ah, q.Bh, q.L, q.M, .8, g); n = d(g, a); z.xa(g); if (n) return !1; n = q.L; p = q.M; if (a.kp(n, p) > e) return !1; break; case Ff: g = z.rb(); Je(n, p, q.zc, q.Qc, q.L, q.M, .8, g); n = d(g, a); z.xa(g); if (n) return !1; n = q.L; p = q.M; if (a.kp(n, p) > e) return !1; break; case Gf: case Hf: var r = q.type === Gf ? If(q, k) : Jf(q, k, n, p), s = r.length; if (0 === s) { n = q.ra; p = q.za; if (a.kp(n, p) > e) return !1; break } q = null; g = z.rb(); for (b = 0; b < s; b++) if (q = r[b], g.length = 0, we(q[0], q[1], q[2], q[3], q[4], q[5], q[6], q[7], .8, g), d(g, a)) return z.xa(g), !1; z.xa(g); null !== q && (n = q[6], p = q[7]); break; default: z.k("Unknown Segment type: " + q.type) } } } return !0 } } } return !1 }; z.defineProperty(X, { Jl: "geometry" }, function() { return this.ab ? this.ab : this.Nn }, function(a) { var b = this.ab; if (b !== a) { null !== a ? (u && z.l(a, hf, X, "geometry"), this.Nn = this.ab = a.freeze()) : this.Nn = this.ab = null; var c = this.ca; null !== c && (c.Qj = NaN); this.Yh = !0; this.S(); this.j("geometry", b, a); a = this.ca; null !== a && 0 !== (this.ja & 1024) && Im(this, a, "geometryString") } }); z.defineProperty(X, { LH: "geometryString" }, function() { return null === this.Jl ? "" : this.Jl.toString() }, function(a) { a = sf(a); var b = a.normalize(); this.Jl = a; this.position = a = z.Tb(-b.x, -b.y); z.A(a) }); z.defineProperty(X, { ME: "isGeometryPositioned" }, function() { return this.ir }, function(a) { u && z.g(a, "boolean", X, "isGeometryPositioned"); var b = this.ir; b !== a && (this.ir = a, this.S(), this.j("isGeometryPositioned", b, a)) }); X.prototype.Ae = function() { this.ab = null; this.S() }; z.defineProperty(X, { fill: "fill" }, function() { return this.Ad }, function(a) { var b = this.Ad; b !== a && (u && null !== a && z.ot(a, "Shape.fill"), a instanceof Da && a.freeze(), this.Ad = a, this.ta(), this.j("fill", b, a)) }); z.defineProperty(X, { stroke: "stroke" }, function() { return this.Kc }, function(a) { var b = this.Kc; b !== a && (u && null !== a && z.ot(a, "Shape.stroke"), a instanceof Da && a.freeze(), this.Kc = a, this.ta(), this.j("stroke", b, a)) }); z.defineProperty(X, { ub: "strokeWidth" }, function() { return this.Oe }, function(a) { var b = this.Oe; if (b !== a) if (u && z.p(a, X, "strokeWidth"), 0 <= a) { this.Oe = a; this.S(); var c = this.ca; null !== c && (c.Qj = NaN); this.j("strokeWidth", b, a) } else z.ka(a, "value >= 0", X, "strokeWidth:value") }); z.defineProperty(X, { wL: "strokeCap" }, function() { return this.So }, function(a) { var b = this.So; b !== a && ("string" !== typeof a || "butt" !== a && "round" !== a && "square" !== a ? z.ka(a, '"butt", "round", or "square"', X, "strokeCap") : (this.So = a, this.ta(), this.j("strokeCap", b, a))) }); z.defineProperty(X, { yL: "strokeJoin" }, function() { return this.Uo }, function(a) { var b = this.Uo; b !== a && ("string" !== typeof a || "miter" !== a && "bevel" !== a && "round" !== a ? z.ka(a, '"miter", "bevel", or "round"', X, "strokeJoin") : (this.Uo = a, this.ta(), this.j("strokeJoin", b, a))) }); z.defineProperty(X, { zL: "strokeMiterLimit" }, function() { return this.Km }, function(a) { var b = this.Km; if (b !== a) if (u && z.p(a, X, "strokeMiterLimit"), 1 <= a) { this.Km = a; this.ta(); var c = this.ca; null !== c && (c.Qj = NaN); this.j("strokeMiterLimit", b, a) } else z.ka(a, "value >= 1", X, "strokeWidth:value") }); z.defineProperty(X, { QF: "strokeDashArray" }, function() { return this.To }, function(a) { var b = this.To; if (b !== a) { null === a || Array.isArray(a) || z.ic(a, "Array", X, "strokeDashArray:value"); if (null !== a) { for (var c = a.length, d = 0, e = 0; e < c; e++) { var g = a[e]; "number" === typeof g && 0 <= g && isFinite(g) || z.k("strokeDashArray:value " + g + " at index " + e + " must be a positive number or zero."); d += g } if (0 === d) { if (null === b) return; a = null } } this.To = a; this.ta(); this.j("strokeDashArray", b, a) } }); z.defineProperty(X, { xL: "strokeDashOffset" }, function() { return this.ve }, function(a) { var b = this.ve; b !== a && (u && z.p(a, X, "strokeDashOffset"), 0 <= a && (this.ve = a, this.ta(), this.j("strokeDashOffset", b, a))) }); z.defineProperty(X, { Hb: "figure" }, function() { return this.fo }, function(a) { var b = this.fo; if (b !== a) { u && z.g(a, "string", X, "figure"); var c = so[a]; "function" === typeof c ? c = a : (c = so[a.toLowerCase()]) || z.k("Unknown Shape.figure: " + a); b !== c && (a = this.ca, null !== a && (a.Qj = NaN), this.fo = c, this.Yh = !1, this.Ae(), this.j("figure", b, c)) } }); z.defineProperty(X, { fq: "toArrow" }, function() { return this.Yo }, function(a) { var b = this.Yo; !0 === a ? a = "Standard" : !1 === a && (a = ""); if (b !== a) { u && z.g(a, "string", X, "toArrow"); var c = wo(a); null === c ? z.k("Unknown Shape.toArrow: " + a) : b !== c && (this.Yo = c, this.Yh = !1, this.Ae(), xo(this), this.j("toArrow", b, c)) } }); z.defineProperty(X, { Xz: "fromArrow" }, function() { return this.ko }, function(a) { var b = this.ko; !0 === a ? a = "Standard" : !1 === a && (a = ""); if (b !== a) { u && z.g(a, "string", X, "fromArrow"); var c = wo(a); null === c ? z.k("Unknown Shape.fromArrow: " + a) : b !== c && (this.ko = c, this.Yh = !1, this.Ae(), xo(this), this.j("fromArrow", b, c)) } }); function xo(a) { var b = a.h; null !== b && b.pa.qb || (a.pu = yo, "None" !== a.Yo ? (a.De = -1, a.jk = ad) : "None" !== a.ko && (a.De = 0, a.jk = new Q(1 - ad.x, ad.y))) } z.defineProperty(X, { C: "spot1" }, function() { return this.bi }, function(a) { z.l(a, Q, X, "spot1"); var b = this.bi; b.N(a) || (this.bi = a = a.V(), this.S(), this.j("spot1", b, a)) }); z.defineProperty(X, { D: "spot2" }, function() { return this.ci }, function(a) { z.l(a, Q, X, "spot2"); var b = this.ci; b.N(a) || (this.ci = a = a.V(), this.S(), this.j("spot2", b, a)) }); z.defineProperty(X, { Ic: "parameter1" }, function() { return this.bs }, function(a) { var b = this.bs; b !== a && (this.bs = a, this.Ae(), this.j("parameter1", b, a)) }); z.defineProperty(X, { gu: "parameter2" }, function() { return this.cs }, function(a) { var b = this.cs; b !== a && (this.cs = a, this.Ae(), this.j("parameter2", b, a)) }); z.w(X, { Ga: "naturalBounds" }, function() { if (null !== this.ab) return this.Wc.assign(this.ab.vb), this.Wc; var a = this.Aa; return new w(0, 0, a.width, a.height) }); z.defineProperty(X, { xx: "pathPattern" }, function() { return this.es }, function(a) { var b = this.es; b !== a && (u && z.l(a, O, X, "pathPattern"), this.es = a, this.ta(), this.j("pathPattern", b, a)) }); z.defineProperty(X, { mL: "pathObject" }, function() { return this.xx }, function(a) { this.xx = a }); z.defineProperty(X, { Zz: "geometryStretch" }, function() { return this.br }, function(a) { var b = this.br; b !== a && (z.Ba(a, O, X, "geometryStretch"), this.br = a, this.j("geometryStretch", b, a)) }); z.defineProperty(X, { interval: "interval" }, function() { return this.fr }, function(a) { var b = this.fr; u && z.p(a, X, "interval"); a = Math.floor(a); b !== a && 0 <= a && (this.fr = a, null !== this.h && hl(this.h), this.S(), this.j("interval", b, a)) }); X.makeGeometry = function(a, b, c) { var d = a.Aa, e = d.width, d = d.height; void 0 !== b && !isNaN(b) && isFinite(b) && (e = b); void 0 !== c && !isNaN(c) && isFinite(c) && (d = c); isFinite(e) || (e = 100); isFinite(d) || (d = 100); b = null; "None" !== a.fq ? b = ke[a.fq] : "None" !== a.Xz ? b = ke[a.Xz] : (c = so[a.Hb], "string" === typeof c && (c = so[c]), void 0 === c && z.k("Unknown Shape.figure: " + a.Hb), b = c(a, e, d), b.ro = e, b.po = d); null === b && (c = so.Rectangle, "function" === typeof c && (b = c(a, e, d))); return b }; X.getFigureGenerators = function() { var a = new na("string", "function"), b; for (b in so) if (b !== b.toLowerCase()) { var c = so[b]; "function" === typeof c && a.add(b, c) } a.freeze(); return a }; X.defineFigureGenerator = function(a, b) { z.g(a, "string", X, "defineFigureGenerator:name"); "string" === typeof b ? "" !== b && so[b] || z.k("Shape.defineFigureGenerator synonym must not be empty or None or not a defined figure name: " + b) : z.g(b, "function", X, "defineFigureGenerator:func"); var c = a.toLowerCase(); "" !== a && "none" !== c && a !== c || z.k("Shape.defineFigureGenerator name must not be empty or None or all-lower-case: " + a); so[a] = b; so[c] = a }; X.getArrowheadGeometries = function() { var a = new na("string", hf), b; for (b in ke) if (b !== b.toLowerCase()) { var c = ke[b]; c instanceof hf && a.add(b, c) } a.freeze(); return a }; X.defineArrowheadGeometry = function(a, b) { z.g(a, "string", X, "defineArrowheadGeometry:name"); var c = null; "string" === typeof b ? (z.g(b, "string", X, "defineArrowheadGeometry:pathstr"), c = sf(b, !1)) : (z.l(b, hf, X, "defineArrowheadGeometry:pathstr"), c = b); var d = a.toLowerCase(); "" !== a && "none" !== d && a !== d || z.k("Shape.defineArrowheadGeometry name must not be empty or None or all-lower-case: " + a); ke[a] = c; ke[d] = a }; function qa() { O.call(this); this.we = ""; this.Kc = "black"; this.Nh = "13px sans-serif"; this.Mm = "start"; this.kr = !0; this.lm = this.mm = !1; this.ll = zo; this.Qm = Ao; this.Jv = this.Le = 0; this.jo = this.Zy = this.$y = null; this.Nj = new Bo; this.Wq = !1; this.uf = this.nl = this.Us = null; this.ak = this.$j = 0; this.Li = Infinity; this.Ev = 0 } z.Qa(qa, O); z.ia("TextBlock", qa); var Co = new ma, Do = 0, Eo = new ma, Fo = 0, Go = "...", Ho = "", Io = (new la(null)).yl; qa.getEllipsis = function() { return Go }; qa.setEllipsis = function(a) { Go = a; Eo = new ma; Fo = 0 }; qa.prototype.cloneProtected = function(a) { O.prototype.cloneProtected.call(this, a); a.we = this.we; a.Kc = this.Kc; a.Nh = this.Nh; a.Mm = this.Mm; a.kr = this.kr; a.mm = this.mm; a.lm = this.lm; a.ll = this.ll; a.Qm = this.Qm; a.Le = this.Le; a.Jv = this.Jv; a.$y = this.$y; a.Zy = this.Zy; a.jo = this.jo; a.Nj.tt(this.Nj); a.Wq = this.Wq; a.Us = this.Us; a.nl = this.nl; a.uf = this.uf; a.$j = this.$j; a.ak = this.ak; a.Li = this.Li; a.Ev = this.Ev }; qa.prototype.toString = function() { return 22 < this.we.length ? 'TextBlock("' + this.we.substring(0, 20) + '"...)' : 'TextBlock("' + this.we + '")' }; var Jo; qa.None = Jo = z.s(qa, "None", 0); var Ko; qa.WrapFit = Ko = z.s(qa, "WrapFit", 1); var Ao; qa.WrapDesiredSize = Ao = z.s(qa, "WrapDesiredSize", 2); var zo; qa.OverflowClip = zo = z.s(qa, "OverflowClip", 0); var Lo; qa.OverflowEllipsis = Lo = z.s(qa, "OverflowEllipsis", 1); qa.prototype.S = function() { O.prototype.S.call(this); this.Zy = this.$y = null }; z.defineProperty(qa, { font: "font" }, function() { return this.Nh }, function(a) { var b = this.Nh; b !== a && (u && (z.g(a, "string", qa, "font"), Mo(a) || z.k('Not a valid font: "' + a + '"')), this.Nh = a, this.jo = null, this.S(), this.j("font", b, a)) }); var Mo; qa.isValidFont = Mo = function(a) { var b = Io.font; if (a === b || "10px sans-serif" === a) return !0; Io.font = "10px sans-serif"; var c; Io.font = a; var d = Io.font; if ("10px sans-serif" !== d) return Io.font = b, !0; Io.font = "19px serif"; c = Io.font; Io.font = a; d = Io.font; Io.font = b; return d !== c }; z.defineProperty(qa, { text: "text" }, function() { return this.we }, function(a) { var b = this.we; a = null !== a && void 0 !== a ? a.toString() : ""; b !== a && (this.we = a, this.S(), this.j("text", b, a)) }); z.defineProperty(qa, { textAlign: "textAlign" }, function() { return this.Mm }, function(a) { var b = this.Mm; b !== a && (u && z.g(a, "string", qa, "textAlign"), "start" === a || "end" === a || "left" === a || "right" === a || "center" === a ? (this.Mm = a, this.ta(), this.j("textAlign", b, a)) : z.ka(a, '"start", "end", "left", "right", or "center"', qa, "textAlign")) }); z.w(qa, { Ga: "naturalBounds" }, function() { if (!this.Wc.F()) { var a = No(this, this.we, this.Nj, 999999).width, b = Oo(this, a, this.Nj), c = this.Aa; isNaN(c.width) || (a = c.width); isNaN(c.height) || (b = c.height); yb(this.Wc, a, b) } return this.Wc }); z.defineProperty(qa, { lx: "isMultiline" }, function() { return this.kr }, function(a) { var b = this.kr; b !== a && (u && z.g(a, "boolean", qa, "isMultiline"), this.kr = a, this.S(), this.j("isMultiline", b, a)) }); z.defineProperty(qa, { JK: "isUnderline" }, function() { return this.mm }, function(a) { var b = this.mm; b !== a && (u && z.g(a, "boolean", qa, "isUnderline"), this.mm = a, this.ta(), this.j("isUnderline", b, a)) }); z.defineProperty(qa, { IK: "isStrikethrough" }, function() { return this.lm }, function(a) { var b = this.lm; b !== a && (u && z.g(a, "boolean", qa, "isStrikethrough"), this.lm = a, this.ta(), this.j("isStrikethrough", b, a)) }); z.defineProperty(qa, { iG: "wrap" }, function() { return this.Qm }, function(a) { var b = this.Qm; b !== a && (u && z.Ba(a, qa, qa, "wrap"), this.Qm = a, this.S(), this.j("wrap", b, a)) }); z.defineProperty(qa, { overflow: "overflow" }, function() { return this.ll }, function(a) { var b = this.ll; b !== a && (u && z.Ba(a, qa, qa, "overflow"), this.ll = a, this.S(), this.j("overflow", b, a)) }); z.defineProperty(qa, { stroke: "stroke" }, function() { return this.Kc }, function(a) { var b = this.Kc; b !== a && (u && null !== a && z.ot(a, "TextBlock.stroke"), a instanceof Da && a.freeze(), this.Kc = a, this.ta(), this.j("stroke", b, a)) }); z.w(qa, { sI: "lineCount" }, function() { return this.Le }); z.defineProperty(qa, { Sz: "editable" }, function() { return this.Wq }, function(a) { var b = this.Wq; b !== a && (u && z.g(a, "boolean", qa, "editable"), this.Wq = a, this.j("editable", b, a)) }); z.defineProperty(qa, { SF: "textEditor" }, function() { return this.Us }, function(a) { var b = this.Us; b !== a && (a instanceof HTMLElement || z.k("textEditor must be an HTMLElement, not: " + a), this.Us = a, this.j("textEditor", b, a)) }); z.defineProperty(qa, { Uz: "errorFunction" }, function() { return this.uf }, function(a) { var b = this.uf; b !== a && (null !== a && z.g(a, "function", qa, "errorFunction"), this.uf = a, this.j("errorFunction", b, a)) }); qa.prototype.nk = function(a, b) { if (null !== this.Kc && 0 !== this.we.length && null !== this.Nh) { var c = this.Ga.width, d = Po(this); a.textAlign = this.Mm; Um(this, a, this.Kc, !0, !1); (this.mm || this.lm) && Um(this, a, this.Kc, !1, !1); var e = this.Nj, g = 0, h = !1, k = z.Tb(0, 0); this.ph.Cb(k); var l = z.Tb(0, d); this.ph.Cb(l); var m = k.Af(l); z.A(k); z.A(l); k = b.scale; 8 > m * k * k && (h = !0); b.gd !== a && (h = !1); !1 === b.hj("textGreeking") && (h = !1); for (var m = b.mr, k = this.$j, l = this.ak, n = this.Le, p = 0; p < n; p++) { var q = e.sf[p], r = e.Je[p]; q > c && (q = c); var g = g + k, s = r, r = a, t = g, v = c, x = d, y = 0, A = this.Mm; "start" === A && (A = m ? "right" : "left"); "end" === A && (A = m ? "left" : "right"); h ? ("left" === A ? y = 0 : "right" === A ? y = v - q : "center" === A && (y = (v - q) / 2), r.fillRect(0 + y, t + .25 * x, q, 1)) : ("left" === A ? y = 0 : "right" === A ? y = v : "center" === A && (y = v / 2), r.fillText(s, 0 + y, t + x - .25 * x), s = x / 20 | 0, 0 === s && (s = 1), "right" === A ? y -= q : "center" === A && (y -= q / 2), this.mm && (r.beginPath(), r.lineWidth = s, r.moveTo(0 + y, t + x - .2 * x), r.lineTo(0 + y + q, t + x - .2 * x), r.stroke()), this.lm && (r.beginPath(), r.lineWidth = s, t = t + x - x / 2.2 | 0, 0 !== s % 2 && (t += .5), r.moveTo(0 + y, t), r.lineTo(0 + y + q, t), r.stroke())); g += d + l } } }; qa.prototype.Ip = function(a, b, c, d) { this.Ev = a; var e = this.Nj; e.reset(); var g = 0, h = 0; if (isNaN(this.Aa.width)) { g = this.we.replace(/\r\n/g, "\n").replace(/\r/g, "\n"); if (0 === g.length) g = 0; else if (this.lx) { for (var k = h = 0, l = !1; !l;) { var m = g.indexOf("\n", k); - 1 === m && (m = g.length, l = !0); k = Qo(g.substr(k, m - k).replace(/^\s+|\s+$/g, ""), this.Nh); k > h && (h = k); k = m + 1 } g = h } else h = g.indexOf("\n", 0), 0 <= h && (g = g.substr(0, h)), g = k = Qo(g, this.Nh); g = Math.min(g, a / this.scale); g = Math.max(8, g) } else g = this.Aa.width; null !== this.U && (g = Math.min(g, this.U.Xe.width), g = Math.max(g, this.U.cg.width)); h = Oo(this, g, e); m = h = isNaN(this.Aa.height) ? Math.min(h, b / this.scale) : this.Aa.height; if (0 !== e.cf && 1 !== e.Je.length && this.ll === Lo && (b = this.Nh, l = this.ll === Lo ? Ro(b) : 0, k = this.$j + this.ak, k = Math.max(0, Po(this) + k), m = Math.min(this.AI - 1, Math.max(Math.floor(m / k + .01) - 1, 0)), !(m + 1 >= e.Je.length))) { k = e.Je[m]; for (a = Math.max(1, a - l); Qo(k, b) > a && 1 < k.length;) k = k.substr(0, k.length - 1); k += Go; a = Qo(k, b); e.Je[m] = k; e.Je = e.Je.slice(0, m + 1); e.sf[m] = a; e.sf = e.sf.slice(0, m + 1); e.Zi = e.Je.length; e.cf = Math.max(e.cf, a); this.Le = e.Zi } if (this.iG === Ko || isNaN(this.Aa.width)) g = e.cf, isNaN(this.Aa.width) && (g = Math.max(8, g)); g = Math.max(c, g); h = Math.max(d, h); yb(this.Wc, g, h); Jm(this, 0, 0, g, h) }; qa.prototype.$i = function(a, b, c, d) { Nm(this, a, b, c, d) }; function No(a, b, c, d) { b = b.replace(/^\s+|\s+$/g, ""); var e = 0, g = 0, h = 0, k = a.Nh, g = a.$j + a.ak, l = Math.max(0, Po(a) + g), h = a.ll === Lo ? Ro(k) : 0; if (a.Le >= a.Li) return new Ea(0, l); if (a.Qm === Jo) { c.Zi = 1; g = Qo(b, k); if (0 === h || g <= d) return c.cf = g, c.sf.push(c.cf), c.Je.push(b), new Ea(g, l); var m = So(b); b = b.substr(m.length); for (var n = So(b), g = Qo(m + n, k); 0 < n.length && g <= d;) m += n, b = b.substr(n.length), n = So(b), g = Qo((m + n).replace(/^\s+|\s+$/g, ""), k); m += n.replace(/^\s+|\s+$/g, ""); for (d = Math.max(1, d - h); Qo(m, k) > d && 1 < m.length;) m = m.substr(0, m.length - 1); m += Go; h = Qo(m, k); c.sf.push(h); c.cf = h; c.Je.push(m); return new Ea(h, l) } var p = 0; 0 === b.length && (p = 1, c.sf.push(0), c.Je.push(b)); for (; 0 < b.length;) { m = So(b); for (b = b.substr(m.length); Qo(m, k) > d;) { n = 1; g = Qo(m.substr(0, n), k); for (h = 0; g <= d;) n++, h = g, g = Qo(m.substr(0, n), k); 1 === n ? (c.sf[a.Le + p] = g, e = Math.max(e, g)) : (c.sf[a.Le + p] = h, e = Math.max(e, h)); n--; 1 > n && (n = 1); c.Je[a.Le + p] = m.substr(0, n); p++; m = m.substr(n); if (a.Le + p > a.Li) break } n = So(b); for (g = Qo(m + n, k); 0 < n.length && g <= d;) m += n, b = b.substr(n.length), n = So(b), g = Qo((m + n).replace(/^\s+|\s+$/g, ""), k); m = m.replace(/^\s+|\s+$/g, ""); if ("" !== m && (0 === n.length ? (c.sf.push(g), e = Math.max(e, g)) : (h = Qo(m, k), c.sf.push(h), e = Math.max(e, h)), c.Je.push(m), p++, a.Le + p > a.Li)) break } c.Zi = Math.min(a.Li, p); c.cf = Math.max(c.cf, e); return new Ea(c.cf, l * c.Zi) } function So(a) { for (var b = a.length, c = 0; c < b && " " !== a.charAt(c);) c++; for (; c < b && " " === a.charAt(c);) c++; return c >= b ? a : a.substr(0, c) } function Qo(a, b) { Ho !== b && (Ho = Io.font = b); return Io.measureText(a).width } function Po(a) { if (null !== a.jo) return a.jo; var b = a.Nh; Ho !== b && (Ho = Io.font = b); var c = 0; void 0 !== Co[b] && 5E3 > Do ? c = Co[b] : (c = 1.3 * Io.measureText("M").width, Co[b] = c, Do++); return a.jo = c } function Ro(a) { Ho !== a && (Ho = Io.font = a); var b = 0; void 0 !== Eo[a] && 5E3 > Fo ? b = Eo[a] : (b = Io.measureText(Go).width, Eo[a] = b, Fo++); return b } function Oo(a, b, c) { var d = a.we.replace(/\r\n/g, "\n").replace(/\r/g, "\n"), e = a.$j + a.ak, e = Math.max(0, Po(a) + e); if (0 === d.length) return c.cf = 0, a.Le = 1, e; if (!a.lx) { var g = d.indexOf("\n", 0); 0 <= g && (d = d.substr(0, g)) } for (var g = 0, h = a.Le = 0, k = -1, l = !1; !l;) k = d.indexOf("\n", h), -1 === k && (k = d.length, l = !0), h <= k && (h = d.substr(h, k - h), a.Qm !== Jo ? (c.Zi = 0, h = No(a, h, c, b), g += h.height, a.Le += c.Zi) : (No(a, h, c, b), g += e, a.Le++), a.Le === a.Li && (l = !0)), h = k + 1; return a.Jv = g } z.defineProperty(qa, { YA: "textValidation" }, function() { return this.nl }, function(a) { var b = this.nl; b !== a && (null !== a && z.g(a, "function", qa, "textValidation"), this.nl = a, this.j("textValidation", b, a)) }); z.defineProperty(qa, { tL: "spacingAbove" }, function() { return this.$j }, function(a) { var b = this.$j; b !== a && (u && z.g(a, "number", qa, "spacingAbove"), this.$j = a, this.j("spacingAbove", b, a)) }); z.defineProperty(qa, { uL: "spacingBelow" }, function() { return this.ak }, function(a) { var b = this.ak; b !== a && (u && z.g(a, "number", qa, "spacingBelow"), this.ak = a, this.j("spacingBelow", b, a)) }); z.defineProperty(qa, { AI: "maxLines" }, function() { return this.Li }, function(a) { var b = this.Li; b !== a && (u && z.g(a, "number", qa, "maxLines"), a = Math.floor(a), 0 >= a && z.ka(a, "> 0", qa, "maxLines"), this.Li = a, this.j("maxLines", b, a), this.S()) }); z.w(qa, { UK: "metrics" }, function() { return this.Nj }); function Bo() { this.cf = this.Zi = 0; this.sf = []; this.Je = [] } Bo.prototype.reset = function() { this.cf = this.Zi = 0; this.sf = []; this.Je = [] }; Bo.prototype.tt = function(a) { this.Zi = a.Zi; this.cf = a.cf; this.sf = z.zl(a.sf); this.Je = z.zl(a.Je) }; z.w(Bo, { cK: "arrSize" }, function() { return this.sf }); z.w(Bo, { dK: "arrText" }, function() { return this.Je }); z.w(Bo, { TK: "maxLineWidth" }, function() { return this.cf }); function vk() { O.call(this); this.$e = null; this.Ns = ""; this.Zj = ge; this.mo = lf; this.Vo = this.bk = this.uf = null; this.Ry = !1; this.ho = !0; this.Mo = null } z.Qa(vk, O); z.ia("Picture", vk); vk.prototype.cloneProtected = function(a) { O.prototype.cloneProtected.call(this, a); a.element = this.$e; a.Ns = this.Ns; a.Zj = this.Zj.V(); a.mo = this.mo; a.uf = this.uf; a.bk = this.bk; a.ho = this.ho; a.Mo = this.Mo }; var To = new ma, Uo = 0, pk = []; function Vo() { var a = pk; if (0 === a.length) for (var b = window.document.getElementsByTagName("canvas"), c = b.length, d = 0; d < c; d++) { var e = b[d]; e.parentElement && e.parentElement.Z && a.push(e.parentElement.Z) } return a } var Wo; vk.clearCache = Wo = function(a) { void 0 === a && (a = ""); z.g(a, "string", vk, "clearCache:url"); "" !== a ? To[a] && (delete To[a], Uo--) : (To = new ma, Uo = 0) }; vk.prototype.toString = function() { return "Picture(" + this.source + ")#" + z.nd(this) }; z.defineProperty(vk, { element: "element" }, function() { return this.$e }, function(a) { var b = this.$e; if (b !== a) { null === a || a instanceof HTMLImageElement || a instanceof HTMLVideoElement || a instanceof HTMLCanvasElement || z.k("Picture.element must be an instance of Image, Canvas, or Video, not: " + a); this.Ry = a instanceof HTMLCanvasElement; this.$e = a; if (null !== a) if (!0 === a.complete || void 0 === a.complete) a.rv instanceof Event && null !== this.uf && this.uf(this, a.rv), !0 === a.Ty && null !== this.bk && this.bk(this, null), a.Ty = !0, this.Aa.F() || (Yk(this, !1), this.S()); else { var c = this; a.gC || (a.addEventListener("load", function(b) { Xo(a, b); c.Aa.F() || (Yk(c, !1), c.S()) }), a.addEventListener("error", function(b) { Yo(a, b) }), a.gC = !0) } this.j("element", b, a); this.ta() } }); z.defineProperty(vk, { source: "source" }, function() { return this.Ns }, function(a) { var b = this.Ns; if (b !== a) { z.g(a, "string", vk, "source"); this.Ns = a; var c = To, d = this.h; if (void 0 !== c[a]) var e = c[a].bp[0].source; else { 30 < Uo && (Wo(), c = To); var e = z.createElement("img"), g = this; e.addEventListener("load", function(a) { Xo(e, a); g.Aa.F() || (Yk(g, !1), g.S()) }); e.addEventListener("error", function(a) { Yo(e, a) }); e.gC = !0; e.src = a; var h = this.Mo; null !== h && (e.crossOrigin = h(this)); c[a] = new Zo(e); Uo++ } null !== d && Ul(d, this); this.element = e; null !== d && Tl(d, this); this.S(); this.ta(); this.j("source", b, a) } }); function Xo(a, b) { a.Ty = !0; a.rv = !1; for (var c = null, d = Vo(), e = d.length, g = 0; g < e; g++) { var h = d[g], k = h.Go.na(a.src); if (null !== k) for (e = k.length, g = 0; g < e; g++) c = k[g], h.SC.add(c), h.Ce(), null !== c.bk && c.bk(c, b) } } function Yo(a, b) { a.rv = b; for (var c = null, d = Vo(), e = d.length, g = 0; g < e; g++) if (c = d[g].Go.na(a.src), null !== c) { for (var e = c.length, h = z.rb(), g = 0; g < e; g++) h.push(c[g]); for (g = 0; g < e; g++) c = h[g], null !== c.uf && c.uf(c, b); z.xa(h) } } z.defineProperty(vk, { sL: "sourceCrossOrigin" }, function() { return this.Mo }, function(a) { if (this.Mo !== a && (null !== a && z.g(a, "function", vk, "sourceCrossOrigin"), this.Mo = a, null !== this.element)) { var b = this.element.src; null === a && "string" === typeof b ? this.element.crossOrigin = null : null !== a && (this.element.crossOrigin = a(this)) } }); z.defineProperty(vk, { sj: "sourceRect" }, function() { return this.Zj }, function(a) { var b = this.Zj; b.N(a) || (z.l(a, w, vk, "sourceRect"), this.Zj = a = a.V(), this.ta(), this.j("sourceRect", b, a)) }); z.defineProperty(vk, { XH: "imageStretch" }, function() { return this.mo }, function(a) { var b = this.mo; b !== a && (z.Ba(a, O, vk, "imageStretch"), this.mo = a, this.ta(), this.j("imageStretch", b, a)) }); z.defineProperty(vk, { Uz: "errorFunction" }, function() { return this.uf }, function(a) { var b = this.uf; b !== a && (null !== a && z.g(a, "function", vk, "errorFunction"), this.uf = a, this.j("errorFunction", b, a)) }); z.defineProperty(vk, { CL: "successFunction" }, function() { return this.bk }, function(a) { var b = this.bk; b !== a && (null !== a && z.g(a, "function", vk, "successFunction"), this.bk = a, this.j("successFunction", b, a)) }); vk.prototype.nk = function(a, b) { var c = this.$e; if (null !== c) { var d = c.src; null !== d && "" !== d || z.k('Element has no source ("src") attribute: ' + c); if (!(c.rv instanceof Event) && !0 === c.Ty) { var d = this.Ga, e = 0, g = 0, h = this.Ry, k = h ? +c.width : c.naturalWidth, h = h ? +c.height : c.naturalHeight; void 0 === k && c.videoWidth && (k = c.videoWidth); void 0 === h && c.videoHeight && (h = c.videoHeight); k = k || d.width; h = h || d.height; if (0 !== k && 0 !== h) { var l = k, m = h; this.sj.F() && (e = this.Zj.x, g = this.Zj.y, k = this.Zj.width, h = this.Zj.height); var n = k, p = h, q = this.mo; switch (q) { case $i: if (this.sj.F()) break; e += Math.max((n - d.width) / 2, 0); g += Math.max((p - d.height) / 2, 0); k = Math.min(d.width, n); h = Math.min(d.height, p); break; case lf: n = d.width; p = d.height; break; case bj: case cj: var r = 0; q === bj ? (r = Math.min(d.height / p, d.width / n), n *= r, p *= r) : q === cj && (r = Math.max(d.height / p, d.width / n), n *= r, p *= r, e += (n - d.width) / 2 / n * k, g += (p - d.height) / 2 / p * h, k *= 1 / (n / d.width), h *= 1 / (p / d.height), n = d.width, p = d.height) } var q = this.gj() * b.scale, s = k * h / (n * q * p * q), r = To[this.source], q = null; if (void 0 !== r && 16 < s) { 2 > r.bp.length && ($o(r, 4, l, m), $o(r, 16, l, m)); for (var l = r.bp, m = l.length, q = l[0], t = 0; t < m; t++) if (l[t].Rp * l[t].Rp < s) q = l[t]; else break } if (!b.bo) { if (null === this.Vo) if (null === this.$e) this.Vo = !1; else { l = (new la(null)).yl; l.drawImage(this.$e, 0, 0); try { l.getImageData(0, 0, 1, 1).data[3] && (this.Vo = !1), this.Vo = !1 } catch (v) { this.Vo = !0 } } if (this.Vo) return } if (b.hj("pictureRatioOptimization") && !b.Sy && void 0 !== r && null !== q && 1 !== q.Rp) { a.save(); r = q.Rp; try { a.drawImage(q.source, e / r, g / r, Math.min(q.source.width, k / r), Math.min(q.source.height, h / r), Math.max((d.width - n) / 2, 0), Math.max((d.height - p) / 2, 0), Math.min(d.width, n), Math.min(d.height, p)) } catch (x) { u && this.ho && z.trace(x.toString()), this.ho = !1 } a.restore() } else try { a.drawImage(c, e, g, k, h, Math.max((d.width - n) / 2, 0), Math.max((d.height - p) / 2, 0), Math.min(d.width, n), Math.min(d.height, p)) } catch (y) { u && this.ho && z.trace(y.toString()), this.ho = !1 } } } } }; z.w(vk, { Ga: "naturalBounds" }, function() { return this.Wc }); vk.prototype.Ip = function(a, b, c, d) { var e = this.Aa, g = Mm(this, !0), h = this.$e, k = this.Ry; if (k || !this.Yy && h && h.complete) this.Yy = !0; null === h && (isFinite(a) || (a = 0), isFinite(b) || (b = 0)); isFinite(e.width) || g === lf || g === Cm ? (isFinite(a) || (a = this.sj.F() ? this.sj.width : k ? +h.width : h.naturalWidth), c = 0) : null !== h && !1 !== this.Yy && (a = this.sj.F() ? this.sj.width : k ? +h.width : h.naturalWidth); isFinite(e.height) || g === lf || g === Bm ? (isFinite(b) || (b = this.sj.F() ? this.sj.height : k ? +h.height : h.naturalHeight), d = 0) : null !== h && !1 !== this.Yy && (b = this.sj.F() ? this.sj.height : k ? +h.height : h.naturalHeight); isFinite(e.width) && (a = e.width); isFinite(e.height) && (b = e.height); e = this.Xe; g = this.cg; c = Math.max(c, g.width); d = Math.max(d, g.height); a = Math.min(e.width, a); b = Math.min(e.height, b); a = Math.max(c, a); b = Math.max(d, b); null === h || h.complete || (isFinite(a) || (a = 0), isFinite(b) || (b = 0)); yb(this.Wc, a, b); Jm(this, 0, 0, a, b) }; vk.prototype.$i = function(a, b, c, d) { Nm(this, a, b, c, d) }; function Zo(a) { this.bp = [new ap(a, 1)] } function $o(a, b, c, d) { var e = new la(null), g = e.yl, h = 1 / b; e.width = c / b; e.height = d / b; b = new ap(e.Kd, b); c = a.bp[a.bp.length - 1]; g.setTransform(h * c.Rp, 0, 0, h * c.Rp, 0, 0); g.drawImage(c.source, 0, 0); a.bp.push(b) } function ap(a, b) { this.source = a; this.Rp = b } function Ga() { this.q = new hf; this.$b = null } f = Ga.prototype; f.reset = function() { this.q = new hf; this.$b = null }; function R(a, b, c, d, e, g) { null === a.q && z.k("StreamGeometryContext has been closed"); void 0 !== e && !0 === e ? (null === a.$b && z.k("Need to call beginFigure first"), d = new Of(Df), d.L = b, d.M = c, a.$b.Ab.add(d)) : (a.$b = new kf, a.$b.Ha = b, a.$b.Da = c, a.$b.Ot = d, a.q.cc.add(a.$b)); void 0 !== g && (a.$b.so = g) } function T(a) { null === a.q && z.k("StreamGeometryContext has been closed"); null === a.$b && z.k("Need to call beginFigure first"); var b = a.$b.Ab.length; 0 < b && a.$b.Ab.ea(b - 1).close() } function Af(a) { null === a.q && z.k("StreamGeometryContext has been closed"); null === a.$b && z.k("Need to call beginFigure first"); 0 < a.$b.Ab.length && (a.$b.Ot = !0) } f.gb = function(a) { null === this.q && z.k("StreamGeometryContext has been closed"); null === this.$b && z.k("Need to call beginFigure first"); this.$b.sk = a }; f.moveTo = function(a, b, c) { void 0 === c && (c = !1); null === this.q && z.k("StreamGeometryContext has been closed"); null === this.$b && z.k("Need to call beginFigure first"); var d = new Of(Df); d.L = a; d.M = b; c && d.close(); this.$b.Ab.add(d) }; f.lineTo = function(a, b, c) { void 0 === c && (c = !1); null === this.q && z.k("StreamGeometryContext has been closed"); null === this.$b && z.k("Need to call beginFigure first"); var d = new Of(qf); d.L = a; d.M = b; c && d.close(); this.$b.Ab.add(d) }; function S(a, b, c, d, e, g, h, k) { void 0 === k && (k = !1); null === a.q && z.k("StreamGeometryContext has been closed"); null === a.$b && z.k("Need to call beginFigure first"); var l = new Of(Ef); l.zc = b; l.Qc = c; l.Ah = d; l.Bh = e; l.L = g; l.M = h; k && l.close(); a.$b.Ab.add(l) } function yf(a, b, c, d, e) { var g; void 0 === g && (g = !1); null === a.q && z.k("StreamGeometryContext has been closed"); null === a.$b && z.k("Need to call beginFigure first"); var h = new Of(Ff); h.zc = b; h.Qc = c; h.L = d; h.M = e; g && h.close(); a.$b.Ab.add(h) } f.arcTo = function(a, b, c, d, e, g, h) { void 0 === g && (g = 0); void 0 === h && (h = !1); null === this.q && z.k("StreamGeometryContext has been closed"); null === this.$b && z.k("Need to call beginFigure first"); var k = new Of(Gf); k.Fe = a; k.Lf = b; k.ra = c; k.za = d; k.radiusX = e; k.radiusY = 0 !== g ? g : e; h && k.close(); this.$b.Ab.add(k) }; function zf(a, b, c, d, e, g, h, k) { var l; void 0 === l && (l = !1); null === a.q && z.k("StreamGeometryContext has been closed"); null === a.$b && z.k("Need to call beginFigure first"); b = new Of(Hf, h, k, b, c, d, e, g); l && b.close(); a.$b.Ab.add(b) } function bp(a) { a = cp(a); var b = z.rb(); b[0] = a[0]; for (var c = 1, d = 1; d < a.length;) b[c] = a[d], b[c + 1] = a[d], b[c + 2] = a[d + 1], d += 2, c += 3; z.xa(a); return b } function cp(a) { var b = dp(a), c = z.rb(), d = Math.floor(b.length / 2), e = b.length - 1; a = 0 === a % 2 ? 2 : 1; for (var g = 0; g < e; g++) { var h = b[g], k = b[g + 1], l = b[(d + g - 1) % e], m = b[(d + g + a) % e]; c[2 * g] = h; c[2 * g + 1] = Oe(h.x, h.y, l.x, l.y, k.x, k.y, m.x, m.y, new N) } c[c.length] = c[0]; z.xa(b); return c } function dp(a) { for (var b = z.rb(), c = 1.5 * Math.PI, d = 0, e = 0; e < a; e++) d = 2 * Math.PI / a * e + c, b[e] = new N(.5 + .5 * Math.cos(d), .5 + .5 * Math.sin(d)); b.push(b[0]); return b } var so = { None: "Rectangle", Rectangle: function(a, b, c) { a = new hf; a.type = nf; a.Ha = 0; a.Da = 0; a.L = b; a.M = c; return a }, Square: function(a, b, c) { a = new hf; a.Xd = bj; a.type = nf; a.Ha = 0; a.Da = 0; a.L = Math.min(b, c); a.M = Math.min(b, c); return a }, Ellipse: function(a, b, c) { a = new hf; a.type = of; a.Ha = 0; a.Da = 0; a.L = b; a.M = c; a.C = he; a.D = ie; return a }, Circle: function(a, b, c) { a = new hf; a.Xd = bj; a.type = of; a.Ha = 0; a.Da = 0; a.L = Math.min(b, c); a.M = Math.min(b, c); a.C = he; a.D = ie; return a }, Connector: "Ellipse", TriangleRight: function(a, b, c) { a = new hf; var d = new kf, e = new Of; e.L = b; e.M = .5 * c; d.Ab.add(e); b = new Of; b.L = 0; b.M = c; d.Ab.add(b.close()); a.cc.add(d); a.C = new Q(0, .25); a.D = new Q(.5, .75); return a }, TriangleDown: function(a, b, c) { a = new hf; var d = new kf, e = new Of; e.L = b; e.M = 0; d.Ab.add(e); e = new Of; e.L = .5 * b; e.M = c; d.Ab.add(e.close()); a.cc.add(d); a.C = new Q(.25, 0); a.D = new Q(.75, .5); return a }, TriangleLeft: function(a, b, c) { a = new hf; var d = new kf; d.Ha = b; d.Da = c; var e = new Of; e.L = 0; e.M = .5 * c; d.Ab.add(e); c = new Of; c.L = b; c.M = 0; d.Ab.add(c.close()); a.cc.add(d); a.C = new Q(.5, .25); a.D = new Q(1, .75); return a }, TriangleUp: function(a, b, c) { a = new hf; var d = new kf; d.Ha = b; d.Da = c; var e = new Of; e.L = 0; e.M = c; d.Ab.add(e); c = new Of; c.L = .5 * b; c.M = 0; d.Ab.add(c.close()); a.cc.add(d); a.C = new Q(.25, .5); a.D = new Q(.75, 1); return a }, Line1: function(a, b, c) { a = new hf; a.type = mf; a.Ha = 0; a.Da = 0; a.L = b; a.M = c; return a }, Line2: function(a, b, c) { a = new hf; a.type = mf; a.Ha = b; a.Da = 0; a.L = 0; a.M = c; return a }, MinusLine: "LineH", LineH: function(a, b, c) { a = new hf; a.type = mf; a.Ha = 0; a.Da = c / 2; a.L = b; a.M = c / 2; return a }, LineV: function(a, b, c) { a = new hf; a.type = mf; a.Ha = b / 2; a.Da = 0; a.L = b / 2; a.M = c; return a }, BarH: "Rectangle", BarV: "Rectangle", Curve1: function(a, b, c) { a = z.v(); R(a, 0, 0, !1); S(a, Hd * b, 0, 1 * b, (1 - Hd) * c, b, c); b = a.q; z.u(a); return b }, Curve2: function(a, b, c) { a = z.v(); R(a, 0, 0, !1); S(a, 0, Hd * c, (1 - Hd) * b, c, b, c); b = a.q; z.u(a); return b }, Curve3: function(a, b, c) { a = z.v(); R(a, 1 * b, 0, !1); S(a, 1 * b, Hd * c, Hd * b, 1 * c, 0, 1 * c); b = a.q; z.u(a); return b }, Curve4: function(a, b, c) { a = z.v(); R(a, 1 * b, 0, !1); S(a, (1 - Hd) * b, 0, 0, (1 - Hd) * c, 0, 1 * c); b = a.q; z.u(a); return b }, Alternative: "Triangle", Merge: "Triangle", Triangle: function(a, b, c) { a = z.v(); R(a, .5 * b, 0 * c, !0); a.lineTo(0 * b, 1 * c); a.lineTo(1 * b, 1 * c, !0); b = a.q; b.C = new Q(.25, .5); b.D = new Q(.75, 1); z.u(a); return b }, Decision: "Diamond", Diamond: function(a, b, c) { a = z.v(); R(a, .5 * b, 0, !0); a.lineTo(0, .5 * c); a.lineTo(.5 * b, 1 * c); a.lineTo(1 * b, .5 * c, !0); b = a.q; b.C = new Q(.25, .25); b.D = new Q(.75, .75); z.u(a); return b }, Pentagon: function(a, b, c) { var d = dp(5); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; 5 > e; e++) a.lineTo(d[e].x * b, d[e].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.2, .22); b.D = new Q(.8, .9); z.u(a); return b }, DataTransmission: "Hexagon", Hexagon: function(a, b, c) { var d = dp(6); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; 6 > e; e++) a.lineTo(d[e].x * b, d[e].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.07, .25); b.D = new Q(.93, .75); z.u(a); return b }, Heptagon: function(a, b, c) { var d = dp(7); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; 7 > e; e++) a.lineTo(d[e].x * b, d[e].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.2, .15); b.D = new Q(.8, .85); z.u(a); return b }, Octagon: function(a, b, c) { var d = dp(8); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; 8 > e; e++) a.lineTo(d[e].x * b, d[e].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.15, .15); b.D = new Q(.85, .85); z.u(a); return b }, Nonagon: function(a, b, c) { var d = dp(9); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; 9 > e; e++) a.lineTo(d[e].x * b, d[e].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.17, .13); b.D = new Q(.82, .82); z.u(a); return b }, Decagon: function(a, b, c) { var d = dp(10); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; 10 > e; e++) a.lineTo(d[e].x * b, d[e].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.16, .16); b.D = new Q(.84, .84); z.u(a); return b }, Dodecagon: function(a, b, c) { var d = dp(12); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; 12 > e; e++) a.lineTo(d[e].x * b, d[e].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.16, .16); b.D = new Q(.84, .84); z.u(a); return b }, FivePointedStar: function(a, b, c) { var d = cp(5); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; 10 > e; e++) a.lineTo(d[e].x * b, d[e].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.312, .383); b.D = new Q(.693, .765); z.u(a); return b }, SixPointedStar: function(a, b, c) { var d = cp(6); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; 12 > e; e++) a.lineTo(d[e].x * b, d[e].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.17, .251); b.D = new Q(.833, .755); z.u(a); return b }, SevenPointedStar: function(a, b, c) { var d = cp(7); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; 14 > e; e++) a.lineTo(d[e].x * b, d[e].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.363, .361); b.D = new Q(.641, .709); z.u(a); return b }, EightPointedStar: function(a, b, c) { var d = cp(8); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; 16 > e; e++) a.lineTo(d[e].x * b, d[e].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.252, .255); b.D = new Q(.75, .75); z.u(a); return b }, NinePointedStar: function(a, b, c) { var d = cp(9); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; 18 > e; e++) a.lineTo(d[e].x * b, d[e].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.355, .361); b.D = new Q(.645, .651); z.u(a); return b }, TenPointedStar: function(a, b, c) { var d = cp(10); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; 20 > e; e++) a.lineTo(d[e].x * b, d[e].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.281, .261); b.D = new Q(.723, .748); z.u(a); return b }, FivePointedBurst: function(a, b, c) { var d = bp(5); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; e < d.length; e += 3) S(a, d[e].x * b, d[e].y * c, d[e + 1].x * b, d[e + 1].y * c, d[e + 2].x * b, d[e + 2].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.312, .383); b.D = new Q(.693, .765); z.u(a); return b }, SixPointedBurst: function(a, b, c) { var d = bp(6); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; e < d.length; e += 3) S(a, d[e].x * b, d[e].y * c, d[e + 1].x * b, d[e + 1].y * c, d[e + 2].x * b, d[e + 2].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.17, .251); b.D = new Q(.833, .755); z.u(a); return b }, SevenPointedBurst: function(a, b, c) { var d = bp(7); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; e < d.length; e += 3) S(a, d[e].x * b, d[e].y * c, d[e + 1].x * b, d[e + 1].y * c, d[e + 2].x * b, d[e + 2].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.363, .361); b.D = new Q(.641, .709); z.u(a); return b }, EightPointedBurst: function(a, b, c) { var d = bp(8); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; e < d.length; e += 3) S(a, d[e].x * b, d[e].y * c, d[e + 1].x * b, d[e + 1].y * c, d[e + 2].x * b, d[e + 2].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.252, .255); b.D = new Q(.75, .75); z.u(a); return b }, NinePointedBurst: function(a, b, c) { var d = bp(9); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; e < d.length; e += 3) S(a, d[e].x * b, d[e].y * c, d[e + 1].x * b, d[e + 1].y * c, d[e + 2].x * b, d[e + 2].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.355, .361); b.D = new Q(.645, .651); z.u(a); return b }, TenPointedBurst: function(a, b, c) { var d = bp(10); a = z.v(); R(a, d[0].x * b, d[0].y * c, !0); for (var e = 1; e < d.length; e += 3) S(a, d[e].x * b, d[e].y * c, d[e + 1].x * b, d[e + 1].y * c, d[e + 2].x * b, d[e + 2].y * c); z.xa(d); T(a); b = a.q; b.C = new Q(.281, .261); b.D = new Q(.723, .748); z.u(a); return b }, Cloud: function(a, b, c) { a = z.v(); R(a, .08034461 * b, .1944299 * c, !0); S(a, -.09239631 * b, .07836421 * c, .1406031 * b, -.0542823 * c, .2008615 * b, .05349299 * c); S(a, .2450511 * b, -.00697547 * c, .3776197 * b, -.01112067 * c, .4338609 * b, .074219 * c); S(a, .4539471 * b, 0, .6066018 * b, -.02526587 * c, .6558228 * b, .07004196 * c); S(a, .6914277 * b, -.01904177 * c, .8921095 * b, -.01220843 * c, .8921095 * b, .08370865 * c); S(a, 1.036446 * b, .04105738 * c, 1.020377 * b, .3022052 * c, .9147671 * b, .3194596 * c); S(a, 1.04448 * b, .360238 * c, .992256 * b, .5219009 * c, .9082935 * b, .562044 * c); S(a, 1.032337 * b, .5771781 * c, 1.018411 * b, .8120651 * c, .9212406 * b, .8217117 * c); S(a, 1.028411 * b, .9571472 * c, .8556702 * b, 1.052487 * c, .7592566 * b, .9156953 * c); S(a, .7431877 * b, 1.009325 * c, .5624123 * b, 1.021761 * c, .5101666 * b, .9310455 * c); S(a, .4820677 * b, 1.031761 * c, .3030112 * b, 1.002796 * c, .2609328 * b, .9344623 * c); S(a, .2329994 * b, 1.01518 * c, .03213784 * b, 1.01518 * c, .08034461 * b, .870098 * c); S(a, -.02812061 * b, .9032597 * c, -.01205169 * b, .6835638 * c, .06829292 * b, .6545475 * c); S(a, -.01812061 * b, .6089503 * c, -.00606892 * b, .4555777 * c, .06427569 * b, .4265613 * c); S(a, -.01606892 * b, .3892545 * c, -.01205169 * b, .1944299 * c, .08034461 * b, .1944299 * c); T(a); b = a.q; b.C = new Q(.1, .1); b.D = new Q(.9, .9); z.u(a); return b }, Gate: "Crescent", Crescent: function(a, b, c) { a = z.v(); R(a, 0, 0, !0); S(a, 1 * b, 0, 1 * b, 1 * c, 0, 1 * c); S(a, .5 * b, .75 * c, .5 * b, .25 * c, 0, 0); T(a); b = a.q; b.C = new Q(.511, .19); b.D = new Q(.776, .76); z.u(a); return b }, FramedRectangle: function(a, b, c) { var d = z.v(), e = a ? a.Ic : NaN; a = a ? a.gu : NaN; isNaN(e) && (e = .1); isNaN(a) && (a = .1); R(d, 0, 0, !0); d.lineTo(1 * b, 0); d.lineTo(1 * b, 1 * c); d.lineTo(0, 1 * c, !0); R(d, e * b, a * c, !1, !0); d.lineTo(e * b, (1 - a) * c); d.lineTo((1 - e) * b, (1 - a) * c); d.lineTo((1 - e) * b, a * c, !0); b = d.q; b.C = new Q(e, a); b.D = new Q(1 - e, 1 - a); z.u(d); return b }, Delay: "HalfEllipse", HalfEllipse: function(a, b, c) { a = z.v(); R(a, 0, 0, !0); S(a, Hd * b, 0, 1 * b, (.5 - Hd / 2) * c, 1 * b, .5 * c); S(a, 1 * b, (.5 + Hd / 2) * c, Hd * b, 1 * c, 0, 1 * c); T(a); b = a.q; b.C = new Q(0, .2); b.D = new Q(.75, .8); z.u(a); return b }, Heart: function(a, b, c) { a = z.v(); R(a, .5 * b, 1 * c, !0); S(a, .1 * b, .8 * c, 0, .5 * c, 0 * b, .3 * c); S(a, 0 * b, 0, .45 * b, 0, .5 * b, .3 * c); S(a, .55 * b, 0, 1 * b, 0, 1 * b, .3 * c); S(a, b, .5 * c, .9 * b, .8 * c, .5 * b, 1 * c); T(a); b = a.q; b.C = new Q(.15, .29); b.D = new Q(.86, .68); z.u(a); return b }, Spade: function(a, b, c) { a = z.v(); R(a, .5 * b, 0, !0); a.lineTo(.51 * b, .01 * c); S(a, .6 * b, .2 * c, b, .25 * c, b, .5 * c); S(a, b, .8 * c, .6 * b, .8 * c, .55 * b, .7 * c); S(a, .5 * b, .75 * c, .55 * b, .95 * c, .75 * b, c); a.lineTo(.25 * b, c); S(a, .45 * b, .95 * c, .5 * b, .75 * c, .45 * b, .7 * c); S(a, .4 * b, .8 * c, 0, .8 * c, 0, .5 * c); S(a, 0, .25 * c, .4 * b, .2 * c, .49 * b, .01 * c); T(a); b = a.q; b.C = new Q(.19, .26); b.D = new Q(.8, .68); z.u(a); return b }, Club: function(a, b, c) { a = z.v(); R(a, .4 * b, .6 * c, !0); S(a, .5 * b, .75 * c, .45 * b, .95 * c, .15 * b, 1 * c); a.lineTo(.85 * b, c); S(a, .55 * b, .95 * c, .5 * b, .75 * c, .6 * b, .6 * c); var d = .2, e = .3, g = 0, h = 4 * (Math.SQRT2 - 1) / 3 * d; S(a, (.5 - d + e) * b, (.5 + h + g) * c, (.5 - h + e) * b, (.5 + d + g) * c, (.5 + e) * b, (.5 + d + g) * c); S(a, (.5 + h + e) * b, (.5 + d + g) * c, (.5 + d + e) * b, (.5 + h + g) * c, (.5 + d + e) * b, (.5 + g) * c); S(a, (.5 + d + e) * b, (.5 - h + g) * c, (.5 + h + e) * b, (.5 - d + g) * c, (.5 + e) * b, (.5 - d + g) * c); S(a, (.5 - h + e) * b, (.5 - d + g) * c, (.5 - d + e + .05) * b, (.5 - h + g - .02) * c, .65 * b, .36771243 * c); d = .2; e = 0; g = -.3; h = 4 * (Math.SQRT2 - 1) / 3 * d; S(a, (.5 + h + e) * b, (.5 + d + g) * c, (.5 + d + e) * b, (.5 + h + g) * c, (.5 + d + e) * b, (.5 + g) * c); S(a, (.5 + d + e) * b, (.5 - h + g) * c, (.5 + h + e) * b, (.5 - d + g) * c, (.5 + e) * b, (.5 - d + g) * c); S(a, (.5 - h + e) * b, (.5 - d + g) * c, (.5 - d + e) * b, (.5 - h + g) * c, (.5 - d + e) * b, (.5 + g) * c); S(a, (.5 - d + e) * b, (.5 + h + g) * c, (.5 - h + e) * b, (.5 + d + g) * c, .35 * b, .36771243 * c); d = .2; e = -.3; g = 0; h = 4 * (Math.SQRT2 - 1) / 3 * d; S(a, (.5 + d + e - .05) * b, (.5 - h + g - .02) * c, (.5 + h + e) * b, (.5 - d + g) * c, (.5 + e) * b, (.5 - d + g) * c); S(a, (.5 - h + e) * b, (.5 - d + g) * c, (.5 - d + e) * b, (.5 - h + g) * c, (.5 - d + e) * b, (.5 + g) * c); S(a, (.5 - d + e) * b, (.5 + h + g) * c, (.5 - h + e) * b, (.5 + d + g) * c, (.5 + e) * b, (.5 + d + g) * c); S(a, (.5 + h + e) * b, (.5 + d + g) * c, (.5 + d + e) * b, (.5 + h + g) * c, .4 * b, .6 * c); T(a); b = a.q; b.C = new Q(.06, .39); b.D = new Q(.93, .58); z.u(a); return b }, Ring: function(a, b, c) { a = z.v(); var d = 4 * (Math.SQRT2 - 1) / 3 * .5; R(a, b, .5 * c, !0); S(a, b, (.5 - d) * c, (.5 + d) * b, 0, .5 * b, 0); S(a, (.5 - d) * b, 0, 0, (.5 - d) * c, 0, .5 * c); S(a, 0, (.5 + d) * c, (.5 - d) * b, c, .5 * b, c); S(a, (.5 + d) * b, c, b, (.5 + d) * c, b, .5 * c); d = 4 * (Math.SQRT2 - 1) / 3 * .4; R(a, .5 * b, .1 * c, !0, !0); S(a, (.5 + d) * b, .1 * c, .9 * b, (.5 - d) * c, .9 * b, .5 * c); S(a, .9 * b, (.5 + d) * c, (.5 + d) * b, .9 * c, .5 * b, .9 * c); S(a, (.5 - d) * b, .9 * c, .1 * b, (.5 + d) * c, .1 * b, .5 * c); S(a, .1 * b, (.5 - d) * c, (.5 - d) * b, .1 * c, .5 * b, .1 * c); b = a.q; b.C = new Q(.146, .146); b.D = new Q(.853, .853); b.Xd = bj; z.u(a); return b }, YinYang: function(a, b, c) { var d = .5; a = z.v(); d = .5; R(a, .5 * b, 0, !0); a.arcTo(270, 180, .5 * b, .5 * b, .5 * b); S(a, 1 * b, d * c, 0, d * c, d * b, 0, !0); var d = .1, e = .25; R(a, (.5 + d) * b, e * c, !0, !0); a.arcTo(0, -360, .5 * b, c * e, d * b); T(a); R(a, .5 * b, 0, !1); a.arcTo(270, -180, .5 * b, .5 * b, .5 * b); a.gb(!1); e = .75; R(a, (.5 + d) * b, e * c, !0); a.arcTo(0, 360, .5 * b, c * e, d * b); T(a); b = a.q; b.Xd = bj; z.u(a); return b }, Peace: function(a, b, c) { a = z.v(); var d = 4 * (Math.SQRT2 - 1) / 3 * .5; R(a, b, .5 * c, !0); S(a, b, (.5 - d) * c, (.5 + d) * b, 0, .5 * b, 0); S(a, (.5 - d) * b, 0, 0, (.5 - d) * c, 0, .5 * c); S(a, 0, (.5 + d) * c, (.5 - d) * b, c, .5 * b, c); S(a, (.5 + d) * b, c, b, (.5 + d) * c, b, .5 * c); d = 4 * (Math.SQRT2 - 1) / 3 * .4; R(a, .5 * b, .1 * c, !0, !0); S(a, (.5 + d) * b, .1 * c, .9 * b, (.5 - d) * c, .9 * b, .5 * c); S(a, .9 * b, (.5 + d) * c, (.5 + d) * b, .9 * c, .5 * b, .9 * c); S(a, (.5 - d) * b, .9 * c, .1 * b, (.5 + d) * c, .1 * b, .5 * c); S(a, .1 * b, (.5 - d) * c, (.5 - d) * b, .1 * c, .5 * b, .1 * c); var d = .07, e = 0, g = -.707 * .11, h = 4 * (Math.SQRT2 - 1) / 3 * d; R(a, (.5 + d + e) * b, (.5 + g) * c, !0); S(a, (.5 + d + e) * b, (.5 - h + g) * c, (.5 + h + e) * b, (.5 - d + g) * c, (.5 + e) * b, (.5 - d + g) * c); S(a, (.5 - h + e) * b, (.5 - d + g) * c, (.5 - d + e) * b, (.5 - h + g) * c, (.5 - d + e) * b, (.5 + g) * c); S(a, (.5 - d + e) * b, (.5 + h + g) * c, (.5 - h + e) * b, (.5 + d + g) * c, (.5 + e) * b, (.5 + d + g) * c); S(a, (.5 + h + e) * b, (.5 + d + g) * c, (.5 + d + e) * b, (.5 + h + g) * c, (.5 + d + e) * b, (.5 + g) * c); d = .07; e = -.707 * .11; g = .707 * .11; h = 4 * (Math.SQRT2 - 1) / 3 * d; R(a, (.5 + d + e) * b, (.5 + g) * c, !0); S(a, (.5 + d + e) * b, (.5 - h + g) * c, (.5 + h + e) * b, (.5 - d + g) * c, (.5 + e) * b, (.5 - d + g) * c); S(a, (.5 - h + e) * b, (.5 - d + g) * c, (.5 - d + e) * b, (.5 - h + g) * c, (.5 - d + e) * b, (.5 + g) * c); S(a, (.5 - d + e) * b, (.5 + h + g) * c, (.5 - h + e) * b, (.5 + d + g) * c, (.5 + e) * b, (.5 + d + g) * c); S(a, (.5 + h + e) * b, (.5 + d + g) * c, (.5 + d + e) * b, (.5 + h + g) * c, (.5 + d + e) * b, (.5 + g) * c); d = .07; e = .707 * .11; g = .707 * .11; h = 4 * (Math.SQRT2 - 1) / 3 * d; R(a, (.5 + d + e) * b, (.5 + g) * c, !0); S(a, (.5 + d + e) * b, (.5 - h + g) * c, (.5 + h + e) * b, (.5 - d + g) * c, (.5 + e) * b, (.5 - d + g) * c); S(a, (.5 - h + e) * b, (.5 - d + g) * c, (.5 - d + e) * b, (.5 - h + g) * c, (.5 - d + e) * b, (.5 + g) * c); S(a, (.5 - d + e) * b, (.5 + h + g) * c, (.5 - h + e) * b, (.5 + d + g) * c, (.5 + e) * b, (.5 + d + g) * c); S(a, (.5 + h + e) * b, (.5 + d + g) * c, (.5 + d + e) * b, (.5 + h + g) * c, (.5 + d + e) * b, (.5 + g) * c); b = a.q; b.C = new Q(.146, .146); b.D = new Q(.853, .853); b.Xd = bj; z.u(a); return b }, NotAllowed: function(a, b, c) { var d = .5 * Hd, e = .5; a = z.v(); R(a, .5 * b, (.5 - e) * c, !0); S(a, (.5 - d) * b, (.5 - e) * c, (.5 - e) * b, (.5 - d) * c, (.5 - e) * b, .5 * c); S(a, (.5 - e) * b, (.5 + d) * c, (.5 - d) * b, (.5 + e) * c, .5 * b, (.5 + e) * c); S(a, (.5 + d) * b, (.5 + e) * c, (.5 + e) * b, (.5 + d) * c, (.5 + e) * b, .5 * c); S(a, (.5 + e) * b, (.5 - d) * c, (.5 + d) * b, (.5 - e) * c, .5 * b, (.5 - e) * c); var e = .4, d = .4 * Hd, g = z.O(), h = z.O(), k = z.O(), l = z.O(); xe(.5, .5 - e, .5 + d, .5 - e, .5 + e, .5 - d, .5 + e, .5, .42, g, h, k, l, l); var m = z.O(), n = z.O(), p = z.O(); xe(.5, .5 - e, .5 + d, .5 - e, .5 + e, .5 - d, .5 + e, .5, .58, l, l, p, m, n); var q = z.O(), r = z.O(), s = z.O(); xe(.5, .5 + e, .5 - d, .5 + e, .5 - e, .5 + d, .5 - e, .5, .42, q, r, s, l, l); var t = z.O(), v = z.O(), x = z.O(); xe(.5, .5 + e, .5 - d, .5 + e, .5 - e, .5 + d, .5 - e, .5, .58, l, l, x, t, v); R(a, x.x * b, x.y * c, !0, !0); S(a, t.x * b, t.y * c, v.x * b, v.y * c, (.5 - e) * b, .5 * c); S(a, (.5 - e) * b, (.5 - d) * c, (.5 - d) * b, (.5 - e) * c, .5 * b, (.5 - e) * c); S(a, g.x * b, g.y * c, h.x * b, h.y * c, k.x * b, k.y * c); a.lineTo(x.x * b, x.y * c); T(a); R(a, s.x * b, s.y * c, !0, !0); a.lineTo(p.x * b, p.y * c); S(a, m.x * b, m.y * c, n.x * b, n.y * c, (.5 + e) * b, .5 * c); S(a, (.5 + e) * b, (.5 + d) * c, (.5 + d) * b, (.5 + e) * c, .5 * b, (.5 + e) * c); S(a, q.x * b, q.y * c, r.x * b, r.y * c, s.x * b, s.y * c); T(a); z.A(g); z.A(h); z.A(k); z.A(l); z.A(m); z.A(n); z.A(p); z.A(q); z.A(r); z.A(s); z.A(t); z.A(v); z.A(x); b = a.q; z.u(a); b.Xd = bj; return b }, Fragile: function(a, b, c) { a = z.v(); R(a, 0, 0, !0); a.lineTo(.25 * b, 0); a.lineTo(.2 * b, .15 * c); a.lineTo(.3 * b, .25 * c); a.lineTo(.29 * b, .33 * c); a.lineTo(.35 * b, .25 * c); a.lineTo(.3 * b, .15 * c); a.lineTo(.4 * b, 0); a.lineTo(1 * b, 0); S(a, 1 * b, .25 * c, .75 * b, .5 * c, .55 * b, .5 * c); a.lineTo(.55 * b, .9 * c); a.lineTo(.7 * b, .9 * c); a.lineTo(.7 * b, 1 * c); a.lineTo(.3 * b, 1 * c); a.lineTo(.3 * b, .9 * c); a.lineTo(.45 * b, .9 * c); a.lineTo(.45 * b, .5 * c); S(a, .25 * b, .5 * c, 0, .25 * c, 0, 0); T(a); b = a.q; b.C = new Q(.25, 0); b.D = new Q(.75, .4); z.u(a); return b }, HourGlass: function(a, b, c) { a = z.v(); R(a, .65 * b, .5 * c, !0); a.lineTo(1 * b, 1 * c); a.lineTo(0, 1 * c); a.lineTo(.35 * b, .5 * c); a.lineTo(0, 0); a.lineTo(1 * b, 0); T(a); b = a.q; z.u(a); return b }, Lightning: function(a, b, c) { a = z.v(); R(a, 0 * b, .55 * c, !0); a.lineTo(.75 * b, 0); a.lineTo(.25 * b, .45 * c); a.lineTo(.9 * b, .48 * c); a.lineTo(.4 * b, 1 * c); a.lineTo(.65 * b, .55 * c); T(a); b = a.q; z.u(a); return b }, Parallelogram1: function(a, b, c) { a = a ? a.Ic : NaN; isNaN(a) && (a = .1); var d = z.v(); R(d, a * b, 0, !0); d.lineTo(1 * b, 0); d.lineTo((1 - a) * b, 1 * c); d.lineTo(0, 1 * c); T(d); b = d.q; b.C = new Q(a, 0); b.D = new Q(1 - a, 1); z.u(d); return b }, Input: "Output", Output: function(a, b, c) { a = z.v(); R(a, 0, 1 * c, !0); a.lineTo(.1 * b, 0); a.lineTo(1 * b, 0); a.lineTo(.9 * b, 1 * c); T(a); b = a.q; b.C = new Q(.1, 0); b.D = new Q(.9, 1); z.u(a); return b }, Parallelogram2: function(a, b, c) { a = a ? a.Ic : NaN; isNaN(a) && (a = .25); var d = z.v(); R(d, a * b, 0, !0); d.lineTo(1 * b, 0); d.lineTo((1 - a) * b, 1 * c); d.lineTo(0, 1 * c); T(d); b = d.q; b.C = new Q(a, 0); b.D = new Q(1 - a, 1); z.u(d); return b }, ThickCross: function(a, b, c) { a = a ? a.Ic : NaN; isNaN(a) && (a = .25); var d = z.v(); R(d, (.5 - a / 2) * b, 0, !0); d.lineTo((.5 + a / 2) * b, 0); d.lineTo((.5 + a / 2) * b, (.5 - a / 2) * c); d.lineTo(1 * b, (.5 - a / 2) * c); d.lineTo(1 * b, (.5 + a / 2) * c); d.lineTo((.5 + a / 2) * b, (.5 + a / 2) * c); d.lineTo((.5 + a / 2) * b, 1 * c); d.lineTo((.5 - a / 2) * b, 1 * c); d.lineTo((.5 - a / 2) * b, (.5 + a / 2) * c); d.lineTo(0, (.5 + a / 2) * c); d.lineTo(0, (.5 - a / 2) * c); d.lineTo((.5 - a / 2) * b, (.5 - a / 2) * c); T(d); b = d.q; b.C = new Q(.5 - a / 2, .5 - a / 2); b.D = new Q(.5 + a / 2, .5 + a / 2); z.u(d); return b }, ThickX: function(a, b, c) { a = .25 / Math.SQRT2; var d = z.v(); R(d, .3 * b, 0, !0); d.lineTo(.5 * b, .2 * c); d.lineTo(.7 * b, 0); d.lineTo(1 * b, .3 * c); d.lineTo(.8 * b, .5 * c); d.lineTo(1 * b, .7 * c); d.lineTo(.7 * b, 1 * c); d.lineTo(.5 * b, .8 * c); d.lineTo(.3 * b, 1 * c); d.lineTo(0, .7 * c); d.lineTo(.2 * b, .5 * c); d.lineTo(0, .3 * c); T(d); b = d.q; b.C = new Q(.5 - a, .5 - a); b.D = new Q(.5 + a, .5 + a); z.u(d); return b }, ThinCross: function(a, b, c) { var d = a ? a.Ic : NaN; isNaN(d) && (d = .1); a = z.v(); R(a, (.5 - d / 2) * b, 0, !0); a.lineTo((.5 + d / 2) * b, 0); a.lineTo((.5 + d / 2) * b, (.5 - d / 2) * c); a.lineTo(1 * b, (.5 - d / 2) * c); a.lineTo(1 * b, (.5 + d / 2) * c); a.lineTo((.5 + d / 2) * b, (.5 + d / 2) * c); a.lineTo((.5 + d / 2) * b, 1 * c); a.lineTo((.5 - d / 2) * b, 1 * c); a.lineTo((.5 - d / 2) * b, (.5 + d / 2) * c); a.lineTo(0, (.5 + d / 2) * c); a.lineTo(0, (.5 - d / 2) * c); a.lineTo((.5 - d / 2) * b, (.5 - d / 2) * c); T(a); b = a.q; z.u(a); return b }, ThinX: function(a, b, c) { a = z.v(); R(a, .1 * b, 0, !0); a.lineTo(.5 * b, .4 * c); a.lineTo(.9 * b, 0); a.lineTo(1 * b, .1 * c); a.lineTo(.6 * b, .5 * c); a.lineTo(1 * b, .9 * c); a.lineTo(.9 * b, 1 * c); a.lineTo(.5 * b, .6 * c); a.lineTo(.1 * b, 1 * c); a.lineTo(0, .9 * c); a.lineTo(.4 * b, .5 * c); a.lineTo(0, .1 * c); T(a); b = a.q; z.u(a); return b }, RightTriangle: function(a, b, c) { a = z.v(); R(a, 0, 0, !0); a.lineTo(1 * b, 1 * c); a.lineTo(0, 1 * c); T(a); b = a.q; b.C = new Q(0, .5); b.D = new Q(.5, 1); z.u(a); return b }, RoundedIBeam: function(a, b, c) { a = z.v(); R(a, 0, 0, !0); a.lineTo(1 * b, 0); S(a, .5 * b, .25 * c, .5 * b, .75 * c, 1 * b, 1 * c); a.lineTo(0, 1 * c); S(a, .5 * b, .75 * c, .5 * b, .25 * c, 0, 0); T(a); b = a.q; z.u(a); return b }, RoundedRectangle: function(a, b, c) { var d = a ? a.Ic : NaN; isNaN(d) && (d = 5); d = Math.min(d, b / 3); d = Math.min(d, c / 3); a = d * Hd; var e = z.v(); R(e, d, 0, !0); e.lineTo(b - d, 0); S(e, b - a, 0, b, a, b, d); e.lineTo(b, c - d); S(e, b, c - a, b - a, c, b - d, c); e.lineTo(d, c); S(e, a, c, 0, c - a, 0, c - d); e.lineTo(0, d); S(e, 0, a, a, 0, d, 0); T(e); b = e.q; 1 < a ? (b.C = new Q(0, 0, a, a), b.D = new Q(1, 1, -a, -a)) : (b.C = Zb, b.D = ic); z.u(e); return b }, Border: function(a, b, c) { var d = a ? a.Ic : NaN; isNaN(d) && (d = 5); d = Math.min(d, b / 3); d = Math.min(d, c / 3); a = z.v(); R(a, d, 0, !0); a.lineTo(b - d, 0); S(a, b - 0, 0, b, 0, b, d); a.lineTo(b, c - d); S(a, b, c - 0, b - 0, c, b - d, c); a.lineTo(d, c); S(a, 0, c, 0, c - 0, 0, c - d); a.lineTo(0, d); S(a, 0, 0, 0, 0, d, 0); T(a); b = a.q; b.C = Zb; b.D = ic; z.u(a); return b }, SquareIBeam: function(a, b, c) { var d = a ? a.Ic : NaN; isNaN(d) && (d = .2); a = z.v(); R(a, 0, 0, !0); a.lineTo(1 * b, 0); a.lineTo(1 * b, d * c); a.lineTo((.5 + d / 2) * b, d * c); a.lineTo((.5 + d / 2) * b, (1 - d) * c); a.lineTo(1 * b, (1 - d) * c); a.lineTo(1 * b, 1 * c); a.lineTo(0, 1 * c); a.lineTo(0, (1 - d) * c); a.lineTo((.5 - d / 2) * b, (1 - d) * c); a.lineTo((.5 - d / 2) * b, d * c); a.lineTo(0, d * c); T(a); b = a.q; z.u(a); return b }, Trapezoid: function(a, b, c) { a = a ? a.Ic : NaN; isNaN(a) && (a = .2); var d = z.v(); R(d, a * b, 0, !0); d.lineTo((1 - a) * b, 0); d.lineTo(1 * b, 1 * c); d.lineTo(0, 1 * c); T(d); b = d.q; b.C = new Q(a, 0); b.D = new Q(1 - a, 1); z.u(d); return b }, ManualLoop: "ManualOperation", ManualOperation: function(a, b, c) { var d = a ? a.Ic : NaN; isNaN(d) && (d = 0); a = z.v(); R(a, d, 0, !0); a.lineTo(0, 0); a.lineTo(1 * b, 0); a.lineTo(.9 * b, 1 * c); a.lineTo(.1 * b, 1 * c); T(a); b = a.q; b.C = new Q(.1, 0); b.D = new Q(.9, 1); z.u(a); return b }, GenderMale: function(a, b, c) { a = z.v(); var d = .4 * Hd, e = .4, g = z.O(), h = z.O(), k = z.O(), l = z.O(); R(a, (.5 - e) * b, .5 * c, !0); S(a, (.5 - e) * b, (.5 - d) * c, (.5 - d) * b, (.5 - e) * c, .5 * b, (.5 - e) * c); xe(.5, .5 - e, .5 + d, .5 - e, .5 + e, .5 - d, .5 + e, .5, .44, k, l, h, g, g); S(a, k.x * b, k.y * c, l.x * b, l.y * c, h.x * b, h.y * c); var m = z.Tb(h.x, h.y); xe(.5, .5 - e, .5 + d, .5 - e, .5 + e, .5 - d, .5 + e, .5, .56, g, g, h, k, l); var n = z.Tb(h.x, h.y); a.lineTo((.1 * m.x + .855) * b, .1 * m.y * c); a.lineTo(.85 * b, .1 * m.y * c); a.lineTo(.85 * b, 0); a.lineTo(1 * b, 0); a.lineTo(1 * b, .15 * c); a.lineTo((.1 * n.x + .9) * b, .15 * c); a.lineTo((.1 * n.x + .9) * b, (.1 * n.y + .05 * .9) * c); a.lineTo(n.x * b, n.y * c); S(a, k.x * b, k.y * c, l.x * b, l.y * c, (.5 + e) * b, .5 * c); S(a, (.5 + e) * b, (.5 + d) * c, (.5 + d) * b, (.5 + e) * c, .5 * b, (.5 + e) * c); S(a, (.5 - d) * b, (.5 + e) * c, (.5 - e) * b, (.5 + d) * c, (.5 - e) * b, .5 * c); e = .35; d = .35 * Hd; R(a, .5 * b, (.5 - e) * c, !0, !0); S(a, (.5 - d) * b, (.5 - e) * c, (.5 - e) * b, (.5 - d) * c, (.5 - e) * b, .5 * c); S(a, (.5 - e) * b, (.5 + d) * c, (.5 - d) * b, (.5 + e) * c, .5 * b, (.5 + e) * c); S(a, (.5 + d) * b, (.5 + e) * c, (.5 + e) * b, (.5 + d) * c, (.5 + e) * b, .5 * c); S(a, (.5 + e) * b, (.5 - d) * c, (.5 + d) * b, (.5 - e) * c, .5 * b, (.5 - e) * c); R(a, (.5 - e) * b, .5 * c, !0); z.A(g); z.A(h); z.A(k); z.A(l); z.A(m); z.A(n); b = a.q; b.C = new Q(.202, .257); b.D = new Q(.692, .839); b.Xd = bj; z.u(a); return b }, GenderFemale: function(a, b, c) { a = z.v(); var d = .375, e = 0, g = -.125, h = 4 * (Math.SQRT2 - 1) / 3 * d; R(a, (.525 + e) * b, (.5 + d + g) * c, !0); S(a, (.5 + h + e) * b, (.5 + d + g) * c, (.5 + d + e) * b, (.5 + h + g) * c, (.5 + d + e) * b, (.5 + g) * c); S(a, (.5 + d + e) * b, (.5 - h + g) * c, (.5 + h + e) * b, (.5 - d + g) * c, (.5 + e) * b, (.5 - d + g) * c); S(a, (.5 - h + e) * b, (.5 - d + g) * c, (.5 - d + e) * b, (.5 - h + g) * c, (.5 - d + e) * b, (.5 + g) * c); S(a, (.5 - d + e) * b, (.5 + h + g) * c, (.5 - h + e) * b, (.5 + d + g) * c, (.475 + e) * b, (.5 + d + g) * c); a.lineTo(.475 * b, .85 * c); a.lineTo(.425 * b, .85 * c); a.lineTo(.425 * b, .9 * c); a.lineTo(.475 * b, .9 * c); a.lineTo(.475 * b, 1 * c); a.lineTo(.525 * b, 1 * c); a.lineTo(.525 * b, .9 * c); a.lineTo(.575 * b, .9 * c); a.lineTo(.575 * b, .85 * c); a.lineTo(.525 * b, .85 * c); T(a); d = .325; e = 0; g = -.125; h = 4 * (Math.SQRT2 - 1) / 3 * d; R(a, (.5 + d + e) * b, (.5 + g) * c, !0, !0); S(a, (.5 + d + e) * b, (.5 + h + g) * c, (.5 + h + e) * b, (.5 + d + g) * c, (.5 + e) * b, (.5 + d + g) * c); S(a, (.5 - h + e) * b, (.5 + d + g) * c, (.5 - d + e) * b, (.5 + h + g) * c, (.5 - d + e) * b, (.5 + g) * c); S(a, (.5 - d + e) * b, (.5 - h + g) * c, (.5 - h + e) * b, (.5 - d + g) * c, (.5 + e) * b, (.5 - d + g) * c); S(a, (.5 + h + e) * b, (.5 - d + g) * c, (.5 + d + e) * b, (.5 - h + g) * c, (.5 + d + e) * b, (.5 + g) * c); R(a, (.525 + e) * b, (.5 + d + g) * c, !0); b = a.q; b.C = new Q(.232, .136); b.D = new Q(.782, .611); b.Xd = bj; z.u(a); return b }, PlusLine: function(a, b, c) { a = z.v(); R(a, 0, .5 * c, !1); a.lineTo(1 * b, .5 * c); a.moveTo(.5 * b, 0); a.lineTo(.5 * b, 1 * c); b = a.q; z.u(a); return b }, XLine: function(a, b, c) { a = z.v(); R(a, 0, 1 * c, !1); a.lineTo(1 * b, 0); a.moveTo(0, 0); a.lineTo(1 * b, 1 * c); b = a.q; z.u(a); return b }, AsteriskLine: function(a, b, c) { a = z.v(); var d = .2 / Math.SQRT2; R(a, d * b, (1 - d) * c, !1); a.lineTo((1 - d) * b, d * c); a.moveTo(d * b, d * c); a.lineTo((1 - d) * b, (1 - d) * c); a.moveTo(0 * b, .5 * c); a.lineTo(1 * b, .5 * c); a.moveTo(.5 * b, 0 * c); a.lineTo(.5 * b, 1 * c); b = a.q; z.u(a); return b }, CircleLine: function(a, b, c) { var d = .5 * Hd; a = z.v(); R(a, 1 * b, .5 * c, !1); S(a, 1 * b, (.5 + d) * c, (.5 + d) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 - d) * b, 1 * c, 0, (.5 + d) * c, 0, .5 * c); S(a, 0, (.5 - d) * c, (.5 - d) * b, 0, .5 * b, 0); S(a, (.5 + d) * b, 0, 1 * b, (.5 - d) * c, 1 * b, .5 * c); b = a.q; b.C = new Q(.146, .146); b.D = new Q(.853, .853); b.Xd = bj; z.u(a); return b }, Pie: function(a, b, c) { a = z.v(); var d = 4 * (Math.SQRT2 - 1) / 3 * .5; R(a, (.5 * Math.SQRT2 / 2 + .5) * b, (.5 - .5 * Math.SQRT2 / 2) * c, !0); S(a, .7 * b, 0 * c, .5 * b, 0 * c, .5 * b, 0 * c); S(a, (.5 - d + 0) * b, 0 * c, 0 * b, (.5 - d + 0) * c, 0 * b, .5 * c); S(a, 0 * b, (.5 + d + 0) * c, (.5 - d + 0) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 + d + 0) * b, 1 * c, 1 * b, (.5 + d + 0) * c, 1 * b, .5 * c); a.lineTo(.5 * b, .5 * c); T(a); b = a.q; z.u(a); return b }, PiePiece: function(a, b, c) { var d = Hd / Math.SQRT2 * .5, e = Math.SQRT2 / 2, g = 1 - Math.SQRT2 / 2; a = z.v(); R(a, b, c, !0); S(a, b, (1 - d) * c, (e + d) * b, (g + d) * c, e * b, g * c); a.lineTo(0, c); T(a); b = a.q; z.u(a); return b }, StopSign: function(a, b, c) { a = 1 / (Math.SQRT2 + 2); var d = z.v(); R(d, a * b, 0, !0); d.lineTo((1 - a) * b, 0); d.lineTo(1 * b, a * c); d.lineTo(1 * b, (1 - a) * c); d.lineTo((1 - a) * b, 1 * c); d.lineTo(a * b, 1 * c); d.lineTo(0, (1 - a) * c); d.lineTo(0, a * c); T(d); b = d.q; b.C = new Q(a / 2, a / 2); b.D = new Q(1 - a / 2, 1 - a / 2); z.u(d); return b }, LogicImplies: function(a, b, c) { var d = a ? a.Ic : NaN; isNaN(d) && (d = .2); a = z.v(); R(a, (1 - d) * b, 0 * c, !1); a.lineTo(1 * b, .5 * c); a.lineTo((1 - d) * b, c); a.moveTo(0, .5 * c); a.lineTo(b, .5 * c); b = a.q; b.C = Zb; b.D = new Q(.8, .5); z.u(a); return b }, LogicIff: function(a, b, c) { var d = a ? a.Ic : NaN; isNaN(d) && (d = .2); a = z.v(); R(a, (1 - d) * b, 0 * c, !1); a.lineTo(1 * b, .5 * c); a.lineTo((1 - d) * b, c); a.moveTo(0, .5 * c); a.lineTo(b, .5 * c); a.moveTo(d * b, 0); a.lineTo(0, .5 * c); a.lineTo(d * b, c); b = a.q; b.C = new Q(.2, 0); b.D = new Q(.8, .5); z.u(a); return b }, LogicNot: function(a, b, c) { a = z.v(); R(a, 0, 0, !1); a.lineTo(1 * b, 0); a.lineTo(1 * b, 1 * c); b = a.q; z.u(a); return b }, LogicAnd: function(a, b, c) { a = z.v(); R(a, 0, 1 * c, !1); a.lineTo(.5 * b, 0); a.lineTo(1 * b, 1 * c); b = a.q; b.C = new Q(.25, .5); b.D = new Q(.75, 1); z.u(a); return b }, LogicOr: function(a, b, c) { a = z.v(); R(a, 0, 0, !1); a.lineTo(.5 * b, 1 * c); a.lineTo(1 * b, 0); b = a.q; b.C = new Q(.219, 0); b.D = new Q(.78, .409); z.u(a); return b }, LogicXor: function(a, b, c) { a = z.v(); R(a, .5 * b, 0, !1); a.lineTo(.5 * b, 1 * c); a.moveTo(0, .5 * c); a.lineTo(1 * b, .5 * c); var d = .5 * Hd; S(a, 1 * b, (.5 + d) * c, (.5 + d) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 - d) * b, 1 * c, 0, (.5 + d) * c, 0, .5 * c); S(a, 0, (.5 - d) * c, (.5 - d) * b, 0, .5 * b, 0); S(a, (.5 + d) * b, 0, 1 * b, (.5 - d) * c, 1 * b, .5 * c); b = a.q; b.Xd = bj; z.u(a); return b }, LogicTruth: function(a, b, c) { a = z.v(); R(a, 0, 0, !1); a.lineTo(1 * b, 0); a.moveTo(.5 * b, 0); a.lineTo(.5 * b, 1 * c); b = a.q; z.u(a); return b }, LogicFalsity: function(a, b, c) { a = z.v(); R(a, 0, 1 * c, !1); a.lineTo(1 * b, 1 * c); a.moveTo(.5 * b, 1 * c); a.lineTo(.5 * b, 0); b = a.q; z.u(a); return b }, LogicThereExists: function(a, b, c) { a = z.v(); R(a, 0, 0, !1); a.lineTo(1 * b, 0); a.lineTo(1 * b, .5 * c); a.lineTo(0, .5 * c); a.moveTo(1 * b, .5 * c); a.lineTo(1 * b, 1 * c); a.lineTo(0, 1 * c); b = a.q; z.u(a); return b }, LogicForAll: function(a, b, c) { a = z.v(); R(a, 0, 0, !1); a.lineTo(.5 * b, 1 * c); a.lineTo(1 * b, 0); a.moveTo(.25 * b, .5 * c); a.lineTo(.75 * b, .5 * c); b = a.q; b.C = new Q(.25, 0); b.D = new Q(.75, .5); z.u(a); return b }, LogicIsDefinedAs: function(a, b, c) { a = z.v(); R(a, 0, 0, !1); a.lineTo(b, 0); a.moveTo(0, .5 * c); a.lineTo(b, .5 * c); a.moveTo(0, c); a.lineTo(b, c); b = a.q; b.C = new Q(.01, .01); b.D = new Q(.99, .49); z.u(a); return b }, LogicIntersect: function(a, b, c) { var d = .5 * Hd; a = z.v(); R(a, 0, 1 * c, !1); a.lineTo(0, .5 * c); S(a, 0, (.5 - d) * c, (.5 - d) * b, 0, .5 * b, 0); S(a, (.5 + d) * b, 0, 1 * b, (.5 - d) * c, 1 * b, .5 * c); a.lineTo(1 * b, 1 * c); b = a.q; b.C = new Q(0, .5); b.D = ic; z.u(a); return b }, LogicUnion: function(a, b, c) { var d = .5 * Hd; a = z.v(); R(a, 1 * b, 0, !1); a.lineTo(1 * b, .5 * c); S(a, 1 * b, (.5 + d) * c, (.5 + d) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 - d) * b, 1 * c, 0, (.5 + d) * c, 0, .5 * c); a.lineTo(0, 0); b = a.q; b.C = Zb; b.D = new Q(1, .5); z.u(a); return b }, Arrow: function(a, b, c) { var d = a ? a.Ic : NaN, e = a ? a.gu : NaN; isNaN(d) && (d = .3); isNaN(e) && (e = .3); a = z.v(); R(a, 0, (.5 - e / 2) * c, !0); a.lineTo((1 - d) * b, (.5 - e / 2) * c); a.lineTo((1 - d) * b, 0); a.lineTo(1 * b, .5 * c); a.lineTo((1 - d) * b, 1 * c); a.lineTo((1 - d) * b, (.5 + e / 2) * c); a.lineTo(0, (.5 + e / 2) * c); T(a); b = a.q; b.C = new Q(0, .5 - e / 2); d = Oe(0, .5 + e / 2, 1, .5 + e / 2, 1 - d, 1, 1, .5, z.O()); b.D = new Q(d.x, d.y); z.A(d); z.u(a); return b }, ISOProcess: "Chevron", Chevron: function(a, b, c) { a = z.v(); R(a, 0, 0, !0); a.lineTo(.5 * b, 0); a.lineTo(1 * b, .5 * c); a.lineTo(.5 * b, 1 * c); a.lineTo(0, 1 * c); a.lineTo(.5 * b, .5 * c); T(a); b = a.q; z.u(a); return b }, DoubleArrow: function(a, b, c) { a = z.v(); R(a, 0, 0, !0); a.lineTo(.3 * b, .214 * c); a.lineTo(.3 * b, 0); a.lineTo(1 * b, .5 * c); a.lineTo(.3 * b, 1 * c); a.lineTo(.3 * b, .786 * c); a.lineTo(0, 1 * c); T(a); R(a, .3 * b, .214 * c, !1); a.lineTo(.3 * b, .786 * c); a.gb(!1); b = a.q; z.u(a); return b }, DoubleEndArrow: function(a, b, c) { a = z.v(); R(a, 1 * b, .5 * c, !0); a.lineTo(.7 * b, 1 * c); a.lineTo(.7 * b, .7 * c); a.lineTo(.3 * b, .7 * c); a.lineTo(.3 * b, 1 * c); a.lineTo(0, .5 * c); a.lineTo(.3 * b, 0); a.lineTo(.3 * b, .3 * c); a.lineTo(.7 * b, .3 * c); a.lineTo(.7 * b, 0); T(a); b = a.q; c = Oe(0, .5, .3, 0, 0, .3, .3, .3, z.O()); b.C = new Q(c.x, c.y); c = Oe(.7, 1, 1, .5, .7, .7, 1, .7, c); b.D = new Q(c.x, c.y); z.A(c); z.u(a); return b }, IBeamArrow: function(a, b, c) { a = z.v(); R(a, 1 * b, .5 * c, !0); a.lineTo(.7 * b, 1 * c); a.lineTo(.7 * b, .7 * c); a.lineTo(.2 * b, .7 * c); a.lineTo(.2 * b, 1 * c); a.lineTo(0, 1 * c); a.lineTo(0, 0); a.lineTo(.2 * b, 0); a.lineTo(.2 * b, .3 * c); a.lineTo(.7 * b, .3 * c); a.lineTo(.7 * b, 0); T(a); b = a.q; b.C = new Q(0, .3); c = Oe(.7, 1, 1, .5, .7, .7, 1, .7, z.O()); b.D = new Q(c.x, c.y); z.A(c); z.u(a); return b }, Pointer: function(a, b, c) { a = z.v(); R(a, 1 * b, .5 * c, !0); a.lineTo(0, 1 * c); a.lineTo(.2 * b, .5 * c); a.lineTo(0, 0); T(a); b = a.q; b.C = new Q(.2, .35); c = Oe(.2, .65, 1, .65, 0, 1, 1, .5, z.O()); b.D = new Q(c.x, c.y); z.A(c); z.u(a); return b }, RoundedPointer: function(a, b, c) { a = z.v(); R(a, 1 * b, .5 * c, !0); a.lineTo(0, 1 * c); S(a, .5 * b, .75 * c, .5 * b, .25 * c, 0, 0); T(a); b = a.q; b.C = new Q(.4, .35); c = Oe(.2, .65, 1, .65, 0, 1, 1, .5, z.O()); b.D = new Q(c.x, c.y); z.A(c); z.u(a); return b }, SplitEndArrow: function(a, b, c) { a = z.v(); R(a, 1 * b, .5 * c, !0); a.lineTo(.7 * b, 1 * c); a.lineTo(.7 * b, .7 * c); a.lineTo(0, .7 * c); a.lineTo(.2 * b, .5 * c); a.lineTo(0, .3 * c); a.lineTo(.7 * b, .3 * c); a.lineTo(.7 * b, 0); T(a); b = a.q; b.C = new Q(.2, .3); c = Oe(.7, 1, 1, .5, .7, .7, 1, .7, z.O()); b.D = new Q(c.x, c.y); z.A(c); z.u(a); return b }, MessageToUser: "SquareArrow", SquareArrow: function(a, b, c) { a = z.v(); R(a, 1 * b, .5 * c, !0); a.lineTo(.7 * b, 1 * c); a.lineTo(0, 1 * c); a.lineTo(0, 0); a.lineTo(.7 * b, 0); T(a); b = a.q; b.C = Zb; b.D = new Q(.7, 1); z.u(a); return b }, Cone1: function(a, b, c) { var d = .5 * Hd, e = .1 * Hd; a = z.v(); R(a, 0, .9 * c, !0); a.lineTo(.5 * b, 0); a.lineTo(1 * b, .9 * c); S(a, 1 * b, (.9 + e) * c, (.5 + d) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 - d) * b, 1 * c, 0, (.9 + e) * c, 0, .9 * c); T(a); b = a.q; b.C = new Q(.25, .5); b.D = new Q(.75, .97); z.u(a); return b }, Cone2: function(a, b, c) { a = z.v(); R(a, 0, .9 * c, !0); S(a, (1 - .85 / .9) * b, 1 * c, .85 / .9 * b, 1 * c, 1 * b, .9 * c); a.lineTo(.5 * b, 0); a.lineTo(0, .9 * c); T(a); R(a, 0, .9 * c, !1); S(a, (1 - .85 / .9) * b, .8 * c, .85 / .9 * b, .8 * c, 1 * b, .9 * c); a.gb(!1); b = a.q; b.C = new Q(.25, .5); b.D = new Q(.75, .82); z.u(a); return b }, Cube1: function(a, b, c) { a = z.v(); R(a, .5 * b, 1 * c, !0); a.lineTo(1 * b, .85 * c); a.lineTo(1 * b, .15 * c); a.lineTo(.5 * b, 0 * c); a.lineTo(0 * b, .15 * c); a.lineTo(0 * b, .85 * c); T(a); R(a, .5 * b, 1 * c, !1); a.lineTo(.5 * b, .3 * c); a.lineTo(0, .15 * c); a.moveTo(.5 * b, .3 * c); a.lineTo(1 * b, .15 * c); a.gb(!1); b = a.q; b.C = new Q(0, .3); b.D = new Q(.5, .85); z.u(a); return b }, Cube2: function(a, b, c) { a = z.v(); R(a, 0, .3 * c, !0); a.lineTo(0 * b, 1 * c); a.lineTo(.7 * b, c); a.lineTo(1 * b, .7 * c); a.lineTo(1 * b, 0 * c); a.lineTo(.3 * b, 0 * c); T(a); R(a, 0, .3 * c, !1); a.lineTo(.7 * b, .3 * c); a.lineTo(1 * b, 0 * c); a.moveTo(.7 * b, .3 * c); a.lineTo(.7 * b, 1 * c); a.gb(!1); b = a.q; b.C = new Q(0, .3); b.D = new Q(.7, 1); z.u(a); return b }, MagneticData: "Cylinder1", Cylinder1: function(a, b, c) { var d = .5 * Hd, e = .1 * Hd; a = z.v(); R(a, 0, .1 * c, !0); S(a, 0, (.1 - e) * c, (.5 - d) * b, 0, .5 * b, 0); S(a, (.5 + d) * b, 0, 1 * b, (.1 - e) * c, 1 * b, .1 * c); a.lineTo(b, .9 * c); S(a, 1 * b, (.9 + e) * c, (.5 + d) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 - d) * b, 1 * c, 0, (.9 + e) * c, 0, .9 * c); a.lineTo(0, .1 * c); R(a, 0, .1 * c, !1); S(a, 0, (.1 + e) * c, (.5 - d) * b, .2 * c, .5 * b, .2 * c); S(a, (.5 + d) * b, .2 * c, 1 * b, (.1 + e) * c, 1 * b, .1 * c); a.gb(!1); b = a.q; b.C = new Q(0, .2); b.D = new Q(1, .9); z.u(a); return b }, Cylinder2: function(a, b, c) { var d = .5 * Hd, e = .1 * Hd; a = z.v(); R(a, 0, .9 * c, !0); a.lineTo(0, .1 * c); S(a, 0, (.1 - e) * c, (.5 - d) * b, 0, .5 * b, 0); S(a, (.5 + d) * b, 0, 1 * b, (.1 - e) * c, 1 * b, .1 * c); a.lineTo(1 * b, .9 * c); S(a, 1 * b, (.9 + e) * c, (.5 + d) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 - d) * b, 1 * c, 0, (.9 + e) * c, 0, .9 * c); R(a, 0, .9 * c, !1); S(a, 0, (.9 - e) * c, (.5 - d) * b, .8 * c, .5 * b, .8 * c); S(a, (.5 + d) * b, .8 * c, 1 * b, (.9 - e) * c, 1 * b, .9 * c); a.gb(!1); b = a.q; b.C = new Q(0, .1); b.D = new Q(1, .8); z.u(a); return b }, Cylinder3: function(a, b, c) { var d = .1 * Hd, e = .5 * Hd; a = z.v(); R(a, .1 * b, 0, !0); a.lineTo(.9 * b, 0); S(a, (.9 + d) * b, 0, 1 * b, (.5 - e) * c, 1 * b, .5 * c); S(a, 1 * b, (.5 + e) * c, (.9 + d) * b, 1 * c, .9 * b, 1 * c); a.lineTo(.1 * b, 1 * c); S(a, (.1 - d) * b, 1 * c, 0, (.5 + e) * c, 0, .5 * c); S(a, 0, (.5 - e) * c, (.1 - d) * b, 0, .1 * b, 0); R(a, .1 * b, 0, !1); S(a, (.1 + d) * b, 0, .2 * b, (.5 - e) * c, .2 * b, .5 * c); S(a, .2 * b, (.5 + e) * c, (.1 + d) * b, 1 * c, .1 * b, 1 * c); a.gb(!1); b = a.q; b.C = new Q(.2, 0); b.D = new Q(.9, 1); z.u(a); return b }, DirectData: "Cylinder4", Cylinder4: function(a, b, c) { var d = .1 * Hd, e = .5 * Hd; a = z.v(); R(a, .9 * b, 0, !0); S(a, (.9 + d) * b, 0, 1 * b, (.5 - e) * c, 1 * b, .5 * c); S(a, 1 * b, (.5 + e) * c, (.9 + d) * b, 1 * c, .9 * b, 1 * c); a.lineTo(.1 * b, 1 * c); S(a, (.1 - d) * b, 1 * c, 0, (.5 + e) * c, 0, .5 * c); S(a, 0, (.5 - e) * c, (.1 - d) * b, 0, .1 * b, 0); a.lineTo(.9 * b, 0); R(a, .9 * b, 0, !1); S(a, (.9 - d) * b, 0, .8 * b, (.5 - e) * c, .8 * b, .5 * c); S(a, .8 * b, (.5 + e) * c, (.9 - d) * b, 1 * c, .9 * b, 1 * c); a.gb(!1); b = a.q; b.C = new Q(.1, 0); b.D = new Q(.8, 1); z.u(a); return b }, Prism1: function(a, b, c) { a = z.v(); R(a, .25 * b, .25 * c, !0); a.lineTo(.75 * b, 0); a.lineTo(b, .5 * c); a.lineTo(.5 * b, c); a.lineTo(0, c); T(a); R(a, .25 * b, .25 * c, !1); a.lineTo(.5 * b, c); a.gb(!1); b = a.q; b.C = new Q(.408, .172); b.D = new Q(.833, .662); z.u(a); return b }, Prism2: function(a, b, c) { a = z.v(); R(a, 0, .25 * c, !0); a.lineTo(.75 * b, 0); a.lineTo(1 * b, .25 * c); a.lineTo(.75 * b, .75 * c); a.lineTo(0, 1 * c); T(a); R(a, 0, c, !1); a.lineTo(.25 * b, .5 * c); a.lineTo(b, .25 * c); a.moveTo(0, .25 * c); a.lineTo(.25 * b, .5 * c); a.gb(!1); b = a.q; b.C = new Q(.25, .5); b.D = new Q(.75, .75); z.u(a); return b }, Pyramid1: function(a, b, c) { a = z.v(); R(a, .5 * b, 0, !0); a.lineTo(b, .75 * c); a.lineTo(.5 * b, 1 * c); a.lineTo(0, .75 * c); T(a); R(a, .5 * b, 0, !1); a.lineTo(.5 * b, 1 * c); a.gb(!1); b = a.q; b.C = new Q(.25, .367); b.D = new Q(.75, .875); z.u(a); return b }, Pyramid2: function(a, b, c) { a = z.v(); R(a, .5 * b, 0, !0); a.lineTo(b, .85 * c); a.lineTo(.5 * b, 1 * c); a.lineTo(0, .85 * c); T(a); R(a, .5 * b, 0, !1); a.lineTo(.5 * b, .7 * c); a.lineTo(0, .85 * c); a.moveTo(.5 * b, .7 * c); a.lineTo(1 * b, .85 * c); a.gb(!1); b = a.q; b.C = new Q(.25, .367); b.D = new Q(.75, .875); z.u(a); return b }, Actor: function(a, b, c) { var d = .2 * Hd, e = .1 * Hd, g = .5, h = .1; a = z.v(); R(a, g * b, (h + .1) * c, !0); S(a, (g - d) * b, (h + .1) * c, (g - .2) * b, (h + e) * c, (g - .2) * b, h * c); S(a, (g - .2) * b, (h - e) * c, (g - d) * b, (h - .1) * c, g * b, (h - .1) * c); S(a, (g + d) * b, (h - .1) * c, (g + .2) * b, (h - e) * c, (g + .2) * b, h * c); S(a, (g + .2) * b, (h + e) * c, (g + d) * b, (h + .1) * c, g * b, (h + .1) * c); d = .05; e = Hd * d; R(a, .5 * b, .2 * c, !0); a.lineTo(.95 * b, .2 * c); g = .95; h = .25; S(a, (g + e) * b, (h - d) * c, (g + d) * b, (h - e) * c, (g + d) * b, h * c); a.lineTo(1 * b, .6 * c); a.lineTo(.85 * b, .6 * c); a.lineTo(.85 * b, .35 * c); d = .025; e = Hd * d; g = .825; h = .35; S(a, (g + d) * b, (h - e) * c, (g + e) * b, (h - d) * c, g * b, (h - d) * c); S(a, (g - e) * b, (h - d) * c, (g - d) * b, (h - e) * c, (g - d) * b, h * c); a.lineTo(.8 * b, 1 * c); a.lineTo(.55 * b, 1 * c); a.lineTo(.55 * b, .7 * c); d = .05; e = Hd * d; g = .5; h = .7; S(a, (g + d) * b, (h - e) * c, (g + e) * b, (h - d) * c, g * b, (h - d) * c); S(a, (g - e) * b, (h - d) * c, (g - d) * b, (h - e) * c, (g - d) * b, h * c); a.lineTo(.45 * b, 1 * c); a.lineTo(.2 * b, 1 * c); a.lineTo(.2 * b, .35 * c); d = .025; e = Hd * d; g = .175; h = .35; S(a, (g + d) * b, (h - e) * c, (g + e) * b, (h - d) * c, g * b, (h - d) * c); S(a, (g - e) * b, (h - d) * c, (g - d) * b, (h - e) * c, (g - d) * b, h * c); a.lineTo(.15 * b, .6 * c); a.lineTo(0 * b, .6 * c); a.lineTo(0 * b, .25 * c); d = .05; e = Hd * d; g = .05; h = .25; S(a, (g - d) * b, (h - e) * c, (g - e) * b, (h - d) * c, g * b, (h - d) * c); a.lineTo(.5 * b, .2 * c); b = a.q; b.C = new Q(.2, .2); b.D = new Q(.8, .65); z.u(a); return b }, Card: function(a, b, c) { a = z.v(); R(a, 1 * b, 0 * c, !0); a.lineTo(1 * b, 1 * c); a.lineTo(0 * b, 1 * c); a.lineTo(0 * b, .2 * c); a.lineTo(.2 * b, 0 * c); T(a); b = a.q; b.C = new Q(0, .2); b.D = ic; z.u(a); return b }, Collate: function(a, b, c) { a = z.v(); R(a, .5 * b, .5 * c, !0); a.lineTo(0, 0); a.lineTo(1 * b, 0); a.lineTo(.5 * b, .5 * c); R(a, .5 * b, .5 * c, !0); a.lineTo(1 * b, 1 * c); a.lineTo(0, 1 * c); a.lineTo(.5 * b, .5 * c); b = a.q; b.C = new Q(.25, 0); b.D = new Q(.75, .25); z.u(a); return b }, CreateRequest: function(a, b, c) { a = a ? a.Ic : NaN; isNaN(a) && (a = .1); var d = z.v(); R(d, 0, 0, !0); d.lineTo(1 * b, 0); d.lineTo(1 * b, 1 * c); d.lineTo(0, 1 * c); T(d); R(d, 0, a * c, !1); d.lineTo(1 * b, a * c); d.moveTo(0, (1 - a) * c); d.lineTo(1 * b, (1 - a) * c); d.gb(!1); b = d.q; b.C = new Q(0, a); b.D = new Q(1, 1 - a); z.u(d); return b }, Database: function(a, b, c) { a = z.v(); var d = .5 * Hd, e = .1 * Hd; R(a, 1 * b, .1 * c, !0); a.lineTo(1 * b, .9 * c); S(a, 1 * b, (.9 + e) * c, (.5 + d) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 - d) * b, 1 * c, 0, (.9 + e) * c, 0, .9 * c); a.lineTo(0, .1 * c); S(a, 0, (.1 - e) * c, (.5 - d) * b, 0, .5 * b, 0); S(a, (.5 + d) * b, 0, 1 * b, (.1 - e) * c, 1 * b, .1 * c); R(a, 1 * b, .1 * c, !1); S(a, 1 * b, (.1 + e) * c, (.5 + d) * b, .2 * c, .5 * b, .2 * c); S(a, (.5 - d) * b, .2 * c, 0, (.1 + e) * c, 0, .1 * c); a.moveTo(1 * b, .2 * c); S(a, 1 * b, (.2 + e) * c, (.5 + d) * b, .3 * c, .5 * b, .3 * c); S(a, (.5 - d) * b, .3 * c, 0, (.2 + e) * c, 0, .2 * c); a.moveTo(1 * b, .3 * c); S(a, 1 * b, (.3 + e) * c, (.5 + d) * b, .4 * c, .5 * b, .4 * c); S(a, (.5 - d) * b, .4 * c, 0, (.3 + e) * c, 0, .3 * c); a.gb(!1); b = a.q; b.C = new Q(0, .4); b.D = new Q(1, .9); z.u(a); return b }, StoredData: "DataStorage", DataStorage: function(a, b, c) { a = z.v(); R(a, 0, 0, !0); a.lineTo(.75 * b, 0); S(a, 1 * b, 0, 1 * b, 1 * c, .75 * b, 1 * c); a.lineTo(0, 1 * c); S(a, .25 * b, .9 * c, .25 * b, .1 * c, 0, 0); T(a); b = a.q; b.C = new Q(.226, 0); b.D = new Q(.81, 1); z.u(a); return b }, DiskStorage: function(a, b, c) { a = z.v(); var d = .5 * Hd, e = .1 * Hd; R(a, 1 * b, .1 * c, !0); a.lineTo(1 * b, .9 * c); S(a, 1 * b, (.9 + e) * c, (.5 + d) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 - d) * b, 1 * c, 0, (.9 + e) * c, 0, .9 * c); a.lineTo(0, .1 * c); S(a, 0, (.1 - e) * c, (.5 - d) * b, 0, .5 * b, 0); S(a, (.5 + d) * b, 0, 1 * b, (.1 - e) * c, 1 * b, .1 * c); R(a, 1 * b, .1 * c, !1); S(a, 1 * b, (.1 + e) * c, (.5 + d) * b, .2 * c, .5 * b, .2 * c); S(a, (.5 - d) * b, .2 * c, 0, (.1 + e) * c, 0, .1 * c); a.moveTo(1 * b, .2 * c); S(a, 1 * b, (.2 + e) * c, (.5 + d) * b, .3 * c, .5 * b, .3 * c); S(a, (.5 - d) * b, .3 * c, 0, (.2 + e) * c, 0, .2 * c); a.gb(!1); b = a.q; b.C = new Q(0, .3); b.D = new Q(1, .9); z.u(a); return b }, Display: function(a, b, c) { a = z.v(); R(a, .25 * b, 0, !0); a.lineTo(.75 * b, 0); S(a, 1 * b, 0, 1 * b, 1 * c, .75 * b, 1 * c); a.lineTo(.25 * b, 1 * c); a.lineTo(0, .5 * c); T(a); b = a.q; b.C = new Q(.25, 0); b.D = new Q(.75, 1); z.u(a); return b }, DividedEvent: function(a, b, c) { a = a ? a.Ic : NaN; isNaN(a) ? a = .2 : .15 > a && (a = .15); var d = z.v(), e = .2 * Hd; R(d, 0, .2 * c, !0); S(d, 0, (.2 - e) * c, (.2 - e) * b, 0, .2 * b, 0); d.lineTo(.8 * b, 0); S(d, (.8 + e) * b, 0, 1 * b, (.2 - e) * c, 1 * b, .2 * c); d.lineTo(1 * b, .8 * c); S(d, 1 * b, (.8 + e) * c, (.8 + e) * b, 1 * c, .8 * b, 1 * c); d.lineTo(.2 * b, 1 * c); S(d, (.2 - e) * b, 1 * c, 0, (.8 + e) * c, 0, .8 * c); d.lineTo(0, .2 * c); R(d, 0, a * c, !1); d.lineTo(1 * b, a * c); d.gb(!1); b = d.q; b.C = new Q(0, a); b.D = new Q(1, 1 - a); z.u(d); return b }, DividedProcess: function(a, b, c) { a = a ? a.Ic : NaN; if (isNaN(a) || .1 > a) a = .1; var d = z.v(); R(d, 0, 0, !0); d.lineTo(1 * b, 0); d.lineTo(1 * b, 1 * c); d.lineTo(0, 1 * c); T(d); R(d, 0, a * c, !1); d.lineTo(1 * b, a * c); d.gb(!1); b = d.q; b.C = new Q(0, a); b.D = ic; z.u(d); return b }, Document: function(a, b, c) { c /= .8; a = z.v(); R(a, 0, .7 * c, !0); a.lineTo(0, 0); a.lineTo(1 * b, 0); a.lineTo(1 * b, .7 * c); S(a, .5 * b, .4 * c, .5 * b, 1 * c, 0, .7 * c); T(a); b = a.q; b.C = Zb; b.D = new Q(1, .6); z.u(a); return b }, ExternalOrganization: function(a, b, c) { a = a ? a.Ic : NaN; if (isNaN(a) || .2 > a) a = .2; var d = z.v(); R(d, 0, 0, !0); d.lineTo(1 * b, 0); d.lineTo(1 * b, 1 * c); d.lineTo(0, 1 * c); T(d); R(d, a * b, 0, !1); d.lineTo(0, a * c); d.moveTo(1 * b, a * c); d.lineTo((1 - a) * b, 0); d.moveTo(0, (1 - a) * c); d.lineTo(a * b, 1 * c); d.moveTo((1 - a) * b, 1 * c); d.lineTo(1 * b, (1 - a) * c); d.gb(!1); b = d.q; b.C = new Q(a / 2, a / 2); b.D = new Q(1 - a / 2, 1 - a / 2); z.u(d); return b }, ExternalProcess: function(a, b, c) { a = z.v(); R(a, .5 * b, 0, !0); a.lineTo(1 * b, .5 * c); a.lineTo(.5 * b, 1 * c); a.lineTo(0, .5 * c); T(a); R(a, .1 * b, .4 * c, !1); a.lineTo(.1 * b, .6 * c); a.moveTo(.9 * b, .6 * c); a.lineTo(.9 * b, .4 * c); a.moveTo(.6 * b, .1 * c); a.lineTo(.4 * b, .1 * c); a.moveTo(.4 * b, .9 * c); a.lineTo(.6 * b, .9 * c); a.gb(!1); b = a.q; b.C = new Q(.25, .25); b.D = new Q(.75, .75); z.u(a); return b }, File: function(a, b, c) { a = z.v(); R(a, 0, 0, !0); a.lineTo(.75 * b, 0); a.lineTo(1 * b, .25 * c); a.lineTo(1 * b, 1 * c); a.lineTo(0, 1 * c); T(a); R(a, .75 * b, 0, !1); a.lineTo(.75 * b, .25 * c); a.lineTo(1 * b, .25 * c); a.gb(!1); b = a.q; b.C = new Q(0, .25); b.D = ic; z.u(a); return b }, Interrupt: function(a, b, c) { a = z.v(); R(a, 1 * b, .5 * c, !0); a.lineTo(0, 1 * c); a.lineTo(0, 0); a.lineTo(1 * b, .5 * c); R(a, 1 * b, .5 * c, !1); a.lineTo(1 * b, 1 * c); R(a, 1 * b, .5 * c, !1); a.lineTo(1 * b, 0); b = a.q; b.C = new Q(0, .25); b.D = new Q(.5, .75); z.u(a); return b }, InternalStorage: function(a, b, c) { var d = a ? a.Ic : NaN; a = a ? a.gu : NaN; isNaN(d) && (d = .1); isNaN(a) && (a = .1); var e = z.v(); R(e, 0, 0, !0); e.lineTo(1 * b, 0); e.lineTo(1 * b, 1 * c); e.lineTo(0, 1 * c); T(e); R(e, d * b, 0, !1); e.lineTo(d * b, 1 * c); e.moveTo(0, a * c); e.lineTo(1 * b, a * c); e.gb(!1); b = e.q; b.C = new Q(d, a); b.D = ic; z.u(e); return b }, Junction: function(a, b, c) { a = z.v(); var d = 1 / Math.SQRT2, e = (1 - 1 / Math.SQRT2) / 2, g = .5 * Hd; R(a, 1 * b, .5 * c, !0); S(a, 1 * b, (.5 + g) * c, (.5 + g) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 - g) * b, 1 * c, 0, (.5 + g) * c, 0, .5 * c); S(a, 0, (.5 - g) * c, (.5 - g) * b, 0, .5 * b, 0); S(a, (.5 + g) * b, 0, 1 * b, (.5 - g) * c, 1 * b, .5 * c); R(a, (e + d) * b, (e + d) * c, !1); a.lineTo(e * b, e * c); a.moveTo(e * b, (e + d) * c); a.lineTo((e + d) * b, e * c); a.gb(!1); b = a.q; b.Xd = bj; z.u(a); return b }, LinedDocument: function(a, b, c) { c /= .8; a = z.v(); R(a, 0, .7 * c, !0); a.lineTo(0, 0); a.lineTo(1 * b, 0); a.lineTo(1 * b, .7 * c); S(a, .5 * b, .4 * c, .5 * b, 1 * c, 0, .7 * c); T(a); R(a, .1 * b, 0, !1); a.lineTo(.1 * b, .75 * c); a.gb(!1); b = a.q; b.C = new Q(.1, 0); b.D = new Q(1, .6); z.u(a); return b }, LoopLimit: function(a, b, c) { a = z.v(); R(a, 0, 1 * c, !0); a.lineTo(0, .25 * c); a.lineTo(.25 * b, 0); a.lineTo(.75 * b, 0); a.lineTo(1 * b, .25 * c); a.lineTo(1 * b, 1 * c); T(a); b = a.q; b.C = new Q(0, .25); b.D = ic; z.u(a); return b }, SequentialData: "MagneticTape", MagneticTape: function(a, b, c) { a = z.v(); var d = .5 * Hd; R(a, .5 * b, 1 * c, !0); S(a, (.5 - d) * b, 1 * c, 0, (.5 + d) * c, 0, .5 * c); S(a, 0, (.5 - d) * c, (.5 - d) * b, 0, .5 * b, 0); S(a, (.5 + d) * b, 0, 1 * b, (.5 - d) * c, 1 * b, .5 * c); S(a, 1 * b, (.5 + d) * c, (.5 + d) * b, .9 * c, .6 * b, .9 * c); a.lineTo(1 * b, .9 * c); a.lineTo(1 * b, 1 * c); a.lineTo(.5 * b, 1 * c); b = a.q; b.C = new Q(.15, .15); b.D = new Q(.85, .8); z.u(a); return b }, ManualInput: function(a, b, c) { a = z.v(); R(a, 1 * b, 0, !0); a.lineTo(1 * b, 1 * c); a.lineTo(0, 1 * c); a.lineTo(0, .25 * c); T(a); b = a.q; b.C = new Q(0, .25); b.D = ic; z.u(a); return b }, MessageFromUser: function(a, b, c) { a = a ? a.Ic : NaN; isNaN(a) && (a = .7); var d = z.v(); R(d, 0, 0, !0); d.lineTo(1 * b, 0); d.lineTo(a * b, .5 * c); d.lineTo(1 * b, 1 * c); d.lineTo(0, 1 * c); T(d); b = d.q; b.C = Zb; b.D = new Q(a, 1); z.u(d); return b }, MicroformProcessing: function(a, b, c) { a = a ? a.Ic : NaN; isNaN(a) && (a = .25); var d = z.v(); R(d, 0, 0, !0); d.lineTo(.5 * b, a * c); d.lineTo(1 * b, 0); d.lineTo(1 * b, 1 * c); d.lineTo(.5 * b, (1 - a) * c); d.lineTo(0, 1 * c); T(d); b = d.q; b.C = new Q(0, a); b.D = new Q(1, 1 - a); z.u(d); return b }, MicroformRecording: function(a, b, c) { a = z.v(); R(a, 0, 0, !0); a.lineTo(.75 * b, .25 * c); a.lineTo(1 * b, .15 * c); a.lineTo(1 * b, .85 * c); a.lineTo(.75 * b, .75 * c); a.lineTo(0, 1 * c); T(a); b = a.q; b.C = new Q(0, .25); b.D = new Q(1, .75); z.u(a); return b }, MultiDocument: function(a, b, c) { c /= .8; a = z.v(); R(a, b, 0, !0); a.lineTo(b, .5 * c); S(a, .96 * b, .47 * c, .93 * b, .45 * c, .9 * b, .44 * c); a.lineTo(.9 * b, .6 * c); S(a, .86 * b, .57 * c, .83 * b, .55 * c, .8 * b, .54 * c); a.lineTo(.8 * b, .7 * c); S(a, .4 * b, .4 * c, .4 * b, 1 * c, 0, .7 * c); a.lineTo(0, .2 * c); a.lineTo(.1 * b, .2 * c); a.lineTo(.1 * b, .1 * c); a.lineTo(.2 * b, .1 * c); a.lineTo(.2 * b, 0); T(a); R(a, .1 * b, .2 * c, !1); a.lineTo(.8 * b, .2 * c); a.lineTo(.8 * b, .54 * c); a.moveTo(.2 * b, .1 * c); a.lineTo(.9 * b, .1 * c); a.lineTo(.9 * b, .44 * c); a.gb(!1); b = a.q; b.C = new Q(0, .25); b.D = new Q(.8, .77); z.u(a); return b }, MultiProcess: function(a, b, c) { a = z.v(); R(a, .1 * b, .1 * c, !0); a.lineTo(.2 * b, .1 * c); a.lineTo(.2 * b, 0); a.lineTo(1 * b, 0); a.lineTo(1 * b, .8 * c); a.lineTo(.9 * b, .8 * c); a.lineTo(.9 * b, .9 * c); a.lineTo(.8 * b, .9 * c); a.lineTo(.8 * b, 1 * c); a.lineTo(0, 1 * c); a.lineTo(0, .2 * c); a.lineTo(.1 * b, .2 * c); T(a); R(a, .2 * b, .1 * c, !1); a.lineTo(.9 * b, .1 * c); a.lineTo(.9 * b, .8 * c); a.moveTo(.1 * b, .2 * c); a.lineTo(.8 * b, .2 * c); a.lineTo(.8 * b, .9 * c); a.gb(!1); b = a.q; b.C = new Q(0, .2); b.D = new Q(.8, 1); z.u(a); return b }, OfflineStorage: function(a, b, c) { a = a ? a.Ic : NaN; isNaN(a) && (a = .1); var d = 1 - a, e = z.v(); R(e, 0, 0, !0); e.lineTo(1 * b, 0); e.lineTo(.5 * b, 1 * c); T(e); R(e, .5 * a * b, a * c, !1); e.lineTo((1 - .5 * a) * b, a * c); e.gb(!1); b = e.q; b.C = new Q(d / 4 + .5 * a, a); b.D = new Q(3 * d / 4 + .5 * a, a + .5 * d); z.u(e); return b }, OffPageConnector: function(a, b, c) { a = z.v(); R(a, 0, 0, !0); a.lineTo(.75 * b, 0); a.lineTo(1 * b, .5 * c); a.lineTo(.75 * b, 1 * c); a.lineTo(0, 1 * c); T(a); b = a.q; b.C = Zb; b.D = new Q(.75, 1); z.u(a); return b }, Or: function(a, b, c) { a = z.v(); var d = .5 * Hd; R(a, 1 * b, .5 * c, !0); S(a, 1 * b, (.5 + d) * c, (.5 + d) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 - d) * b, 1 * c, 0, (.5 + d) * c, 0, .5 * c); S(a, 0, (.5 - d) * c, (.5 - d) * b, 0, .5 * b, 0); S(a, (.5 + d) * b, 0, 1 * b, (.5 - d) * c, 1 * b, .5 * c); R(a, 1 * b, .5 * c, !1); a.lineTo(0, .5 * c); a.moveTo(.5 * b, 1 * c); a.lineTo(.5 * b, 0); a.gb(!1); b = a.q; b.Xd = bj; z.u(a); return b }, PaperTape: function(a, b, c) { c /= .8; a = z.v(); R(a, 0, .7 * c, !0); a.lineTo(0, .3 * c); S(a, .5 * b, .6 * c, .5 * b, 0, 1 * b, .3 * c); a.lineTo(1 * b, .7 * c); S(a, .5 * b, .4 * c, .5 * b, 1 * c, 0, .7 * c); T(a); b = a.q; b.C = new Q(0, .49); b.D = new Q(1, .75); z.u(a); return b }, PrimitiveFromCall: function(a, b, c) { var d = a ? a.Ic : NaN; a = a ? a.gu : NaN; isNaN(d) && (d = .1); isNaN(a) && (a = .3); var e = z.v(); R(e, 0, 0, !0); e.lineTo(1 * b, 0); e.lineTo((1 - a) * b, .5 * c); e.lineTo(1 * b, 1 * c); e.lineTo(0, 1 * c); T(e); b = e.q; b.C = new Q(d, 0); b.D = new Q(1 - a, 1); z.u(e); return b }, PrimitiveToCall: function(a, b, c) { var d = a ? a.Ic : NaN; a = a ? a.gu : NaN; isNaN(d) && (d = .1); isNaN(a) && (a = .3); var e = z.v(); R(e, 0, 0, !0); e.lineTo((1 - a) * b, 0); e.lineTo(1 * b, .5 * c); e.lineTo((1 - a) * b, 1 * c); e.lineTo(0, 1 * c); T(e); b = e.q; b.C = new Q(d, 0); b.D = new Q(1 - a, 1); z.u(e); return b }, Subroutine: "Procedure", Procedure: function(a, b, c) { a = a ? a.Ic : NaN; isNaN(a) && (a = .1); var d = z.v(); R(d, 0, 0, !0); d.lineTo(1 * b, 0); d.lineTo(1 * b, 1 * c); d.lineTo(0, 1 * c); T(d); R(d, (1 - a) * b, 0, !1); d.lineTo((1 - a) * b, 1 * c); d.moveTo(a * b, 0); d.lineTo(a * b, 1 * c); d.gb(!1); b = d.q; b.C = new Q(a, 0); b.D = new Q(1 - a, 1); z.u(d); return b }, Process: function(a, b, c) { a = a ? a.Ic : NaN; isNaN(a) && (a = .1); var d = z.v(); R(d, 0, 0, !0); d.lineTo(1 * b, 0); d.lineTo(1 * b, 1 * c); d.lineTo(0, 1 * c); T(d); R(d, a * b, 0, !1); d.lineTo(a * b, 1 * c); d.gb(!1); b = d.q; b.C = new Q(a, 0); b.D = ic; z.u(d); return b }, Sort: function(a, b, c) { a = z.v(); R(a, .5 * b, 0, !0); a.lineTo(1 * b, .5 * c); a.lineTo(.5 * b, 1 * c); a.lineTo(0, .5 * c); T(a); R(a, 0, .5 * c, !1); a.lineTo(1 * b, .5 * c); a.gb(!1); b = a.q; b.C = new Q(.25, .25); b.D = new Q(.75, .5); z.u(a); return b }, Start: function(a, b, c) { a = z.v(); R(a, .25 * b, 0, !0); R(a, .25 * b, 0, !0); a.arcTo(270, 180, .75 * b, .5 * c, .25 * b, .5 * c); a.arcTo(90, 180, .25 * b, .5 * c, .25 * b, .5 * c); R(a, .25 * b, 0, !1); a.lineTo(.25 * b, 1 * c); a.moveTo(.75 * b, 0); a.lineTo(.75 * b, 1 * c); a.gb(!1); b = a.q; b.C = new Q(.25, 0); b.D = new Q(.75, 1); z.u(a); return b }, Terminator: function(a, b, c) { a = z.v(); R(a, .25 * b, 0, !0); a.arcTo(270, 180, .75 * b, .5 * c, .25 * b, .5 * c); a.arcTo(90, 180, .25 * b, .5 * c, .25 * b, .5 * c); b = a.q; b.C = new Q(.23, 0); b.D = new Q(.77, 1); z.u(a); return b }, TransmittalTape: function(a, b, c) { a = a ? a.Ic : NaN; isNaN(a) && (a = .1); var d = z.v(); R(d, 0, 0, !0); d.lineTo(1 * b, 0); d.lineTo(1 * b, 1 * c); d.lineTo(.75 * b, (1 - a) * c); d.lineTo(0, (1 - a) * c); T(d); b = d.q; b.C = Zb; b.D = new Q(1, 1 - a); z.u(d); return b }, AndGate: function(a, b, c) { a = z.v(); var d = .5 * Hd; R(a, 0, 0, !0); a.lineTo(.5 * b, 0); S(a, (.5 + d) * b, 0, 1 * b, (.5 - d) * c, 1 * b, .5 * c); S(a, 1 * b, (.5 + d) * c, (.5 + d) * b, 1 * c, .5 * b, 1 * c); a.lineTo(0, 1 * c); T(a); b = a.q; b.C = Zb; b.D = new Q(.55, 1); z.u(a); return b }, Buffer: function(a, b, c) { a = z.v(); R(a, 0, 0, !0); a.lineTo(1 * b, .5 * c); a.lineTo(0, 1 * c); T(a); b = a.q; b.C = new Q(0, .25); b.D = new Q(.5, .75); z.u(a); return b }, Clock: function(a, b, c) { a = z.v(); var d = .5 * Hd; R(a, 1 * b, .5 * c, !0); S(a, 1 * b, (.5 + d) * c, (.5 + d) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 - d) * b, 1 * c, 0, (.5 + d) * c, 0, .5 * c); S(a, 0, (.5 - d) * c, (.5 - d) * b, 0, .5 * b, 0); S(a, (.5 + d) * b, 0, 1 * b, (.5 - d) * c, 1 * b, .5 * c); R(a, 1 * b, .5 * c, !1); a.lineTo(1 * b, .5 * c); R(a, .8 * b, .75 * c, !1); a.lineTo(.8 * b, .25 * c); a.lineTo(.6 * b, .25 * c); a.lineTo(.6 * b, .75 * c); a.lineTo(.4 * b, .75 * c); a.lineTo(.4 * b, .25 * c); a.lineTo(.2 * b, .25 * c); a.lineTo(.2 * b, .75 * c); a.gb(!1); b = a.q; b.Xd = bj; z.u(a); return b }, Ground: function(a, b, c) { a = z.v(); R(a, .5 * b, 0, !1); a.lineTo(.5 * b, .4 * c); a.moveTo(.2 * b, .6 * c); a.lineTo(.8 * b, .6 * c); a.moveTo(.3 * b, .8 * c); a.lineTo(.7 * b, .8 * c); a.moveTo(.4 * b, 1 * c); a.lineTo(.6 * b, 1 * c); b = a.q; z.u(a); return b }, Inverter: function(a, b, c) { a = z.v(); var d = .1 * Hd; R(a, .8 * b, .5 * c, !0); a.lineTo(0, 1 * c); a.lineTo(0, 0); a.lineTo(.8 * b, .5 * c); R(a, 1 * b, .5 * c, !0); S(a, 1 * b, (.5 + d) * c, (.9 + d) * b, .6 * c, .9 * b, .6 * c); S(a, (.9 - d) * b, .6 * c, .8 * b, (.5 + d) * c, .8 * b, .5 * c); S(a, .8 * b, (.5 - d) * c, (.9 - d) * b, .4 * c, .9 * b, .4 * c); S(a, (.9 + d) * b, .4 * c, 1 * b, (.5 - d) * c, 1 * b, .5 * c); b = a.q; b.C = new Q(0, .25); b.D = new Q(.4, .75); z.u(a); return b }, NandGate: function(a, b, c) { a = z.v(); var d = .5 * Hd, e = .4 * Hd, g = .1 * Hd; R(a, .8 * b, .5 * c, !0); S(a, .8 * b, (.5 + e) * c, (.4 + d) * b, 1 * c, .4 * b, 1 * c); a.lineTo(0, 1 * c); a.lineTo(0, 0); a.lineTo(.4 * b, 0); S(a, (.4 + d) * b, 0, .8 * b, (.5 - e) * c, .8 * b, .5 * c); R(a, 1 * b, .5 * c, !0); S(a, 1 * b, (.5 + g) * c, (.9 + g) * b, .6 * c, .9 * b, .6 * c); S(a, (.9 - g) * b, .6 * c, .8 * b, (.5 + g) * c, .8 * b, .5 * c); S(a, .8 * b, (.5 - g) * c, (.9 - g) * b, .4 * c, .9 * b, .4 * c); S(a, (.9 + g) * b, .4 * c, 1 * b, (.5 - g) * c, 1 * b, .5 * c); b = a.q; b.C = new Q(0, .05); b.D = new Q(.55, .95); z.u(a); return b }, NorGate: function(a, b, c) { a = z.v(); var d = .5, e = Hd * d, g = 0, h = .5; R(a, .8 * b, .5 * c, !0); S(a, .7 * b, (h + e) * c, (g + e) * b, (h + d) * c, 0, 1 * c); S(a, .25 * b, .75 * c, .25 * b, .25 * c, 0, 0); S(a, (g + e) * b, (h - d) * c, .7 * b, (h - e) * c, .8 * b, .5 * c); d = .1; e = .1 * Hd; g = .9; h = .5; R(a, (g - d) * b, h * c, !0); S(a, (g - d) * b, (h - e) * c, (g - e) * b, (h - d) * c, g * b, (h - d) * c); S(a, (g + e) * b, (h - d) * c, (g + d) * b, (h - e) * c, (g + d) * b, h * c); S(a, (g + d) * b, (h + e) * c, (g + e) * b, (h + d) * c, g * b, (h + d) * c); S(a, (g - e) * b, (h + d) * c, (g - d) * b, (h + e) * c, (g - d) * b, h * c); b = a.q; b.C = new Q(.2, .25); b.D = new Q(.6, .75); z.u(a); return b }, OrGate: function(a, b, c) { a = z.v(); var d = .5 * Hd; R(a, 0, 0, !0); S(a, (0 + d + d) * b, 0 * c, .8 * b, (.5 - d) * c, 1 * b, .5 * c); S(a, .8 * b, (.5 + d) * c, (0 + d + d) * b, 1 * c, 0, 1 * c); S(a, .25 * b, .75 * c, .25 * b, .25 * c, 0, 0); T(a); b = a.q; b.C = new Q(.2, .25); b.D = new Q(.75, .75); z.u(a); return b }, XnorGate: function(a, b, c) { a = z.v(); var d = .5, e = Hd * d, g = .2, h = .5; R(a, .1 * b, 0, !1); S(a, .35 * b, .25 * c, .35 * b, .75 * c, .1 * b, 1 * c); R(a, .8 * b, .5 * c, !0); S(a, .7 * b, (h + e) * c, (g + e) * b, (h + d) * c, .2 * b, 1 * c); S(a, .45 * b, .75 * c, .45 * b, .25 * c, .2 * b, 0); S(a, (g + e) * b, (h - d) * c, .7 * b, (h - e) * c, .8 * b, .5 * c); d = .1; e = .1 * Hd; g = .9; h = .5; R(a, (g - d) * b, h * c, !0); S(a, (g - d) * b, (h - e) * c, (g - e) * b, (h - d) * c, g * b, (h - d) * c); S(a, (g + e) * b, (h - d) * c, (g + d) * b, (h - e) * c, (g + d) * b, h * c); S(a, (g + d) * b, (h + e) * c, (g + e) * b, (h + d) * c, g * b, (h + d) * c); S(a, (g - e) * b, (h + d) * c, (g - d) * b, (h + e) * c, (g - d) * b, h * c); b = a.q; b.C = new Q(.4, .25); b.D = new Q(.65, .75); z.u(a); return b }, XorGate: function(a, b, c) { a = z.v(); var d = .5 * Hd; R(a, .1 * b, 0, !1); S(a, .35 * b, .25 * c, .35 * b, .75 * c, .1 * b, 1 * c); R(a, .2 * b, 0, !0); S(a, (.2 + d) * b, 0 * c, .9 * b, (.5 - d) * c, 1 * b, .5 * c); S(a, .9 * b, (.5 + d) * c, (.2 + d) * b, 1 * c, .2 * b, 1 * c); S(a, .45 * b, .75 * c, .45 * b, .25 * c, .2 * b, 0); T(a); b = a.q; b.C = new Q(.4, .25); b.D = new Q(.8, .75); z.u(a); return b }, Capacitor: function(a, b, c) { a = z.v(); R(a, 0, 0, !1); a.lineTo(0, 1 * c); a.moveTo(1 * b, 0); a.lineTo(1 * b, 1 * c); b = a.q; z.u(a); return b }, Resistor: function(a, b, c) { a = z.v(); R(a, 0, .5 * c, !1); a.lineTo(.1 * b, 0); a.lineTo(.2 * b, 1 * c); a.lineTo(.3 * b, 0); a.lineTo(.4 * b, 1 * c); a.lineTo(.5 * b, 0); a.lineTo(.6 * b, 1 * c); a.lineTo(.7 * b, .5 * c); b = a.q; z.u(a); return b }, Inductor: function(a, b, c) { a = z.v(); var d = .1 * Hd, e = .1; R(a, (e - .5 * d) * b, c, !1); S(a, (e - d) * b, c, (e - .1) * b, 0, (e + .1) * b, 0); e = .3; S(a, (e + .1) * b, 0, (e + d) * b, c, e * b, c); S(a, (e - d) * b, c, (e - .1) * b, 0, (e + .1) * b, 0); e = .5; S(a, (e + .1) * b, 0, (e + d) * b, c, e * b, c); S(a, (e - d) * b, c, (e - .1) * b, 0, (e + .1) * b, 0); e = .7; S(a, (e + .1) * b, 0, (e + d) * b, c, e * b, c); S(a, (e - d) * b, c, (e - .1) * b, 0, (e + .1) * b, 0); e = .9; S(a, (e + .1) * b, 0, (e + d) * b, c, (e + .5 * d) * b, c); b = a.q; z.u(a); return b }, ACvoltageSource: function(a, b, c) { a = z.v(); var d = .5 * Hd; R(a, 0 * b, .5 * c, !1); S(a, 0 * b, (.5 - d) * c, (.5 - d) * b, 0 * c, .5 * b, 0 * c); S(a, (.5 + d) * b, 0 * c, 1 * b, (.5 - d) * c, 1 * b, .5 * c); S(a, 1 * b, (.5 + d) * c, (.5 + d) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 - d) * b, 1 * c, 0 * b, (.5 + d) * c, 0 * b, .5 * c); a.moveTo(.1 * b, .5 * c); S(a, .5 * b, 0 * c, .5 * b, 1 * c, .9 * b, .5 * c); b = a.q; b.Xd = bj; z.u(a); return b }, DCvoltageSource: function(a, b, c) { a = z.v(); R(a, 0, .75 * c, !1); a.lineTo(0, .25 * c); a.moveTo(1 * b, 0); a.lineTo(1 * b, 1 * c); b = a.q; z.u(a); return b }, Diode: function(a, b, c) { a = z.v(); R(a, 1 * b, 0, !1); a.lineTo(1 * b, .5 * c); a.lineTo(0, 1 * c); a.lineTo(0, 0); a.lineTo(1 * b, .5 * c); a.lineTo(1 * b, 1 * c); b = a.q; b.C = new Q(0, .25); b.D = new Q(.5, .75); z.u(a); return b }, Wifi: function(a, b, c) { var d = b, e = c; b *= .38; c *= .6; a = z.v(); var g = .8 * Hd, h = .8, k = 0, l = .5, d = (d - b) / 2, e = (e - c) / 2; R(a, k * b + d, (l + h) * c + e, !0); S(a, (k - g) * b + d, (l + h) * c + e, (k - h) * b + d, (l + g) * c + e, (k - h) * b + d, l * c + e); S(a, (k - h) * b + d, (l - g) * c + e, (k - g) * b + d, (l - h) * c + e, k * b + d, (l - h) * c + e); S(a, k * b + d, (l - h) * c + e, (k - h + .5 * g) * b + d, (l - g) * c + e, (k - h + .5 * g) * b + d, l * c + e); S(a, (k - h + .5 * g) * b + d, (l + g) * c + e, k * b + d, (l + h) * c + e, k * b + d, (l + h) * c + e); T(a); g = .4 * Hd; h = .4; k = .2; l = .5; R(a, k * b + d, (l + h) * c + e, !0); S(a, (k - g) * b + d, (l + h) * c + e, (k - h) * b + d, (l + g) * c + e, (k - h) * b + d, l * c + e); S(a, (k - h) * b + d, (l - g) * c + e, (k - g) * b + d, (l - h) * c + e, k * b + d, (l - h) * c + e); S(a, k * b + d, (l - h) * c + e, (k - h + .5 * g) * b + d, (l - g) * c + e, (k - h + .5 * g) * b + d, l * c + e); S(a, (k - h + .5 * g) * b + d, (l + g) * c + e, k * b + d, (l + h) * c + e, k * b + d, (l + h) * c + e); T(a); g = .2 * Hd; h = .2; l = k = .5; R(a, (k - h) * b + d, l * c + e, !0); S(a, (k - h) * b + d, (l - g) * c + e, (k - g) * b + d, (l - h) * c + e, k * b + d, (l - h) * c + e); S(a, (k + g) * b + d, (l - h) * c + e, (k + h) * b + d, (l - g) * c + e, (k + h) * b + d, l * c + e); S(a, (k + h) * b + d, (l + g) * c + e, (k + g) * b + d, (l + h) * c + e, k * b + d, (l + h) * c + e); S(a, (k - g) * b + d, (l + h) * c + e, (k - h) * b + d, (l + g) * c + e, (k - h) * b + d, l * c + e); g = .4 * Hd; h = .4; k = .8; l = .5; R(a, k * b + d, (l - h) * c + e, !0); S(a, (k + g) * b + d, (l - h) * c + e, (k + h) * b + d, (l - g) * c + e, (k + h) * b + d, l * c + e); S(a, (k + h) * b + d, (l + g) * c + e, (k + g) * b + d, (l + h) * c + e, k * b + d, (l + h) * c + e); S(a, k * b + d, (l + h) * c + e, (k + h - .5 * g) * b + d, (l + g) * c + e, (k + h - .5 * g) * b + d, l * c + e); S(a, (k + h - .5 * g) * b + d, (l - g) * c + e, k * b + d, (l - h) * c + e, k * b + d, (l - h) * c + e); T(a); g = .8 * Hd; h = .8; k = 1; l = .5; R(a, k * b + d, (l - h) * c + e, !0); S(a, (k + g) * b + d, (l - h) * c + e, (k + h) * b + d, (l - g) * c + e, (k + h) * b + d, l * c + e); S(a, (k + h) * b + d, (l + g) * c + e, (k + g) * b + d, (l + h) * c + e, k * b + d, (l + h) * c + e); S(a, k * b + d, (l + h) * c + e, (k + h - .5 * g) * b + d, (l + g) * c + e, (k + h - .5 * g) * b + d, l * c + e); S(a, (k + h - .5 * g) * b + d, (l - g) * c + e, k * b + d, (l - h) * c + e, k * b + d, (l - h) * c + e); T(a); b = a.q; z.u(a); return b }, Email: function(a, b, c) { a = z.v(); R(a, 0, 0, !0); a.lineTo(1 * b, 0); a.lineTo(1 * b, 1 * c); a.lineTo(0, 1 * c); a.lineTo(0, 0); T(a); R(a, 0, 0, !1); a.lineTo(.5 * b, .6 * c); a.lineTo(1 * b, 0); a.moveTo(0, 1 * c); a.lineTo(.45 * b, .54 * c); a.moveTo(1 * b, 1 * c); a.lineTo(.55 * b, .54 * c); a.gb(!1); b = a.q; z.u(a); return b }, Ethernet: function(a, b, c) { a = z.v(); R(a, .35 * b, 0, !0); a.lineTo(.65 * b, 0); a.lineTo(.65 * b, .4 * c); a.lineTo(.35 * b, .4 * c); a.lineTo(.35 * b, 0); T(a); R(a, .1 * b, 1 * c, !0, !0); a.lineTo(.4 * b, 1 * c); a.lineTo(.4 * b, .6 * c); a.lineTo(.1 * b, .6 * c); a.lineTo(.1 * b, 1 * c); T(a); R(a, .6 * b, 1 * c, !0, !0); a.lineTo(.9 * b, 1 * c); a.lineTo(.9 * b, .6 * c); a.lineTo(.6 * b, .6 * c); a.lineTo(.6 * b, 1 * c); T(a); R(a, 0, .5 * c, !1); a.lineTo(1 * b, .5 * c); a.moveTo(.5 * b, .5 * c); a.lineTo(.5 * b, .4 * c); a.moveTo(.75 * b, .5 * c); a.lineTo(.75 * b, .6 * c); a.moveTo(.25 * b, .5 * c); a.lineTo(.25 * b, .6 * c); a.gb(!1); b = a.q; z.u(a); return b }, Power: function(a, b, c) { a = z.v(); var d = .4 * Hd, e = .4, g = z.O(), h = z.O(), k = z.O(), l = z.O(); xe(.5, .5 - e, .5 + d, .5 - e, .5 + e, .5 - d, .5 + e, .5, .5, g, g, h, k, l); var m = z.Tb(h.x, h.y); R(a, h.x * b, h.y * c, !0); S(a, k.x * b, k.y * c, l.x * b, l.y * c, (.5 + e) * b, .5 * c); S(a, (.5 + e) * b, (.5 + d) * c, (.5 + d) * b, (.5 + e) * c, .5 * b, (.5 + e) * c); S(a, (.5 - d) * b, (.5 + e) * c, (.5 - e) * b, (.5 + d) * c, (.5 - e) * b, .5 * c); xe(.5 - e, .5, .5 - e, .5 - d, .5 - d, .5 - e, .5, .5 - e, .5, k, l, h, g, g); S(a, k.x * b, k.y * c, l.x * b, l.y * c, h.x * b, h.y * c); d = .3 * Hd; e = .3; xe(.5 - e, .5, .5 - e, .5 - d, .5 - d, .5 - e, .5, .5 - e, .5, k, l, h, g, g); a.lineTo(h.x * b, h.y * c); S(a, l.x * b, l.y * c, k.x * b, k.y * c, (.5 - e) * b, .5 * c); S(a, (.5 - e) * b, (.5 + d) * c, (.5 - d) * b, (.5 + e) * c, .5 * b, (.5 + e) * c); S(a, (.5 + d) * b, (.5 + e) * c, (.5 + e) * b, (.5 + d) * c, (.5 + e) * b, .5 * c); xe(.5, .5 - e, .5 + d, .5 - e, .5 + e, .5 - d, .5 + e, .5, .5, g, g, h, k, l); S(a, l.x * b, l.y * c, k.x * b, k.y * c, h.x * b, h.y * c); T(a); R(a, .45 * b, 0, !0); a.lineTo(.45 * b, .5 * c); a.lineTo(.55 * b, .5 * c); a.lineTo(.55 * b, 0); T(a); z.A(g); z.A(h); z.A(k); z.A(l); z.A(m); b = a.q; b.C = new Q(.25, .55); b.D = new Q(.75, .8); z.u(a); return b }, Fallout: function(a, b, c) { a = z.v(); var d = .5 * Hd; R(a, 0 * b, .5 * c, !0); S(a, 0 * b, (.5 - d) * c, (.5 - d) * b, 0 * c, .5 * b, 0 * c); S(a, (.5 + d) * b, 0 * c, 1 * b, (.5 - d) * c, 1 * b, .5 * c); S(a, 1 * b, (.5 + d) * c, (.5 + d) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 - d) * b, 1 * c, 0 * b, (.5 + d) * c, 0 * b, .5 * c); var e = d = 0; R(a, (.3 + d) * b, (.8 + e) * c, !0, !0); a.lineTo((.5 + d) * b, (.5 + e) * c); a.lineTo((.1 + d) * b, (.5 + e) * c); a.lineTo((.3 + d) * b, (.8 + e) * c); d = .4; e = 0; T(a); R(a, (.3 + d) * b, (.8 + e) * c, !0, !0); a.lineTo((.5 + d) * b, (.5 + e) * c); a.lineTo((.1 + d) * b, (.5 + e) * c); a.lineTo((.3 + d) * b, (.8 + e) * c); d = .2; e = -.3; T(a); R(a, (.3 + d) * b, (.8 + e) * c, !0, !0); a.lineTo((.5 + d) * b, (.5 + e) * c); a.lineTo((.1 + d) * b, (.5 + e) * c); a.lineTo((.3 + d) * b, (.8 + e) * c); T(a); b = a.q; b.Xd = bj; z.u(a); return b }, IrritationHazard: function(a, b, c) { a = z.v(); R(a, .2 * b, 0 * c, !0); a.lineTo(.5 * b, .3 * c); a.lineTo(.8 * b, 0 * c); a.lineTo(1 * b, .2 * c); a.lineTo(.7 * b, .5 * c); a.lineTo(1 * b, .8 * c); a.lineTo(.8 * b, 1 * c); a.lineTo(.5 * b, .7 * c); a.lineTo(.2 * b, 1 * c); a.lineTo(0 * b, .8 * c); a.lineTo(.3 * b, .5 * c); a.lineTo(0 * b, .2 * c); T(a); b = a.q; b.C = new Q(.3, .3); b.D = new Q(.7, .7); z.u(a); return b }, ElectricalHazard: function(a, b, c) { a = z.v(); R(a, .37 * b, 0 * c, !0); a.lineTo(.5 * b, .11 * c); a.lineTo(.77 * b, .04 * c); a.lineTo(.33 * b, .49 * c); a.lineTo(1 * b, .37 * c); a.lineTo(.63 * b, .86 * c); a.lineTo(.77 * b, .91 * c); a.lineTo(.34 * b, 1 * c); a.lineTo(.34 * b, .78 * c); a.lineTo(.44 * b, .8 * c); a.lineTo(.65 * b, .56 * c); a.lineTo(0 * b, .68 * c); T(a); b = a.q; z.u(a); return b }, FireHazard: function(a, b, c) { a = z.v(); R(a, .1 * b, 1 * c, !0); S(a, -.25 * b, .63 * c, .45 * b, .44 * c, .29 * b, 0 * c); S(a, .48 * b, .17 * c, .54 * b, .35 * c, .51 * b, .42 * c); S(a, .59 * b, .29 * c, .58 * b, .28 * c, .59 * b, .18 * c); S(a, .8 * b, .34 * c, .88 * b, .43 * c, .75 * b, .6 * c); S(a, .87 * b, .48 * c, .88 * b, .43 * c, .88 * b, .31 * c); S(a, 1.17 * b, .76 * c, .82 * b, .8 * c, .9 * b, 1 * c); T(a); b = a.q; b.C = new Q(.05, .645); b.D = new Q(.884, .908); z.u(a); return b }, BpmnActivityLoop: function(a, b, c) { a = z.v(); var d = 4 * (Math.SQRT2 - 1) / 3 * .5; R(a, .65 * b, 1 * c, !1); S(a, (1 - d + 0) * b, 1 * c, 1 * b, (.5 + d + 0) * c, 1 * b, .5 * c); S(a, 1 * b, (.5 - d + 0) * c, (.5 + d + 0) * b, 0 * c, .5 * b, 0 * c); S(a, (.5 - d + 0) * b, 0 * c, 0 * b, (.5 - d + 0) * c, 0 * b, .5 * c); S(a, 0 * b, (.5 + d + 0) * c, (.5 - d + 0) * b, 1 * c, .35 * b, .98 * c); a.moveTo(.25 * b, .8 * c); a.lineTo(.35 * b, 1 * c); a.lineTo(.1 * b, 1 * c); b = a.q; z.u(a); return b }, BpmnActivityParallel: function(a, b, c) { a = z.v(); R(a, 0, 0, !1); a.lineTo(0, 1 * c); a.moveTo(.5 * b, 0); a.lineTo(.5 * b, 1 * c); a.moveTo(1 * b, 0); a.lineTo(1 * b, 1 * c); b = a.q; z.u(a); return b }, BpmnActivitySequential: function(a, b, c) { a = z.v(); R(a, 0, 0, !1); a.lineTo(1 * b, 0); a.moveTo(0, .5 * c); a.lineTo(1 * b, .5 * c); a.moveTo(0, 1 * c); a.lineTo(1 * b, 1 * c); b = a.q; z.u(a); return b }, BpmnActivityAdHoc: function(a, b, c) { a = z.v(); R(a, 0, 0, !1); R(a, 1 * b, 1 * c, !1); R(a, 0, .5 * c, !1); S(a, .2 * b, .35 * c, .3 * b, .35 * c, .5 * b, .5 * c); S(a, .7 * b, .65 * c, .8 * b, .65 * c, 1 * b, .5 * c); b = a.q; z.u(a); return b }, BpmnActivityCompensation: function(a, b, c) { a = z.v(); R(a, 0, .5 * c, !0); a.lineTo(.5 * b, 0); a.lineTo(.5 * b, .5 * c); a.lineTo(1 * b, 1 * c); a.lineTo(1 * b, 0); a.lineTo(.5 * b, .5 * c); a.lineTo(.5 * b, 1 * c); T(a); b = a.q; z.u(a); return b }, BpmnTaskMessage: function(a, b, c) { a = z.v(); R(a, 0, .2 * c, !0); a.lineTo(1 * b, .2 * c); a.lineTo(1 * b, .8 * c); a.lineTo(0, .8 * c); a.lineTo(0, .8 * c); T(a); R(a, 0, .2 * c, !1); a.lineTo(.5 * b, .5 * c); a.lineTo(1 * b, .2 * c); a.gb(!1); b = a.q; z.u(a); return b }, BpmnTaskScript: function(a, b, c) { a = z.v(); R(a, .7 * b, 1 * c, !0); a.lineTo(.3 * b, 1 * c); S(a, .6 * b, .5 * c, 0, .5 * c, .3 * b, 0); a.lineTo(.7 * b, 0); S(a, .4 * b, .5 * c, 1 * b, .5 * c, .7 * b, 1 * c); T(a); R(a, .45 * b, .73 * c, !1); a.lineTo(.7 * b, .73 * c); a.moveTo(.38 * b, .5 * c); a.lineTo(.63 * b, .5 * c); a.moveTo(.31 * b, .27 * c); a.lineTo(.56 * b, .27 * c); a.gb(!1); b = a.q; z.u(a); return b }, BpmnTaskUser: function(a, b, c) { a = z.v(); R(a, 0, 0, !1); R(a, .335 * b, (1 - .555) * c, !0); a.lineTo(.335 * b, .595 * c); a.lineTo(.665 * b, .595 * c); a.lineTo(.665 * b, (1 - .555) * c); S(a, .88 * b, .46 * c, .98 * b, .54 * c, 1 * b, .68 * c); a.lineTo(1 * b, 1 * c); a.lineTo(0, 1 * c); a.lineTo(0, .68 * c); S(a, .02 * b, .54 * c, .12 * b, .46 * c, .335 * b, (1 - .555) * c); a.lineTo(.365 * b, .405 * c); var d = .5 - .285, e = Math.PI / 4, g = 4 * (1 - Math.cos(e)) / (3 * Math.sin(e)), e = g * d, g = g * d; S(a, (.5 - (e + d) / 2) * b, (d + (d + g) / 2) * c, (.5 - d) * b, (d + g) * c, (.5 - d) * b, d * c); S(a, (.5 - d) * b, (d - g) * c, (.5 - e) * b, (d - d) * c, .5 * b, (d - d) * c); S(a, (.5 + e) * b, (d - d) * c, (.5 + d) * b, (d - g) * c, (.5 + d) * b, d * c); S(a, (.5 + d) * b, (d + g) * c, (.5 + (e + d) / 2) * b, (d + (d + g) / 2) * c, .635 * b, .405 * c); a.lineTo(.635 * b, .405 * c); a.lineTo(.665 * b, (1 - .555) * c); a.lineTo(.665 * b, .595 * c); a.lineTo(.335 * b, .595 * c); R(a, .2 * b, 1 * c, !1); a.lineTo(.2 * b, .8 * c); R(a, .8 * b, 1 * c, !1); a.lineTo(.8 * b, .8 * c); b = a.q; z.u(a); return b }, BpmnEventConditional: function(a, b, c) { a = z.v(); R(a, .1 * b, 0, !0); a.lineTo(.9 * b, 0); a.lineTo(.9 * b, 1 * c); a.lineTo(.1 * b, 1 * c); T(a); R(a, .2 * b, .2 * c, !1); a.lineTo(.8 * b, .2 * c); a.moveTo(.2 * b, .4 * c); a.lineTo(.8 * b, .4 * c); a.moveTo(.2 * b, .6 * c); a.lineTo(.8 * b, .6 * c); a.moveTo(.2 * b, .8 * c); a.lineTo(.8 * b, .8 * c); a.gb(!1); b = a.q; z.u(a); return b }, BpmnEventError: function(a, b, c) { a = z.v(); R(a, 0, 1 * c, !0); a.lineTo(.33 * b, 0); a.lineTo(.66 * b, .5 * c); a.lineTo(1 * b, 0); a.lineTo(.66 * b, 1 * c); a.lineTo(.33 * b, .5 * c); T(a); b = a.q; z.u(a); return b }, BpmnEventEscalation: function(a, b, c) { a = z.v(); R(a, 0, 0, !1); R(a, 1 * b, 1 * c, !1); R(a, .1 * b, 1 * c, !0); a.lineTo(.5 * b, 0); a.lineTo(.9 * b, 1 * c); a.lineTo(.5 * b, .5 * c); T(a); b = a.q; z.u(a); return b }, BpmnEventTimer: function(a, b, c) { a = z.v(); var d = .5 * Hd; R(a, 1 * b, .5 * c, !0); S(a, 1 * b, (.5 + d) * c, (.5 + d) * b, 1 * c, .5 * b, 1 * c); S(a, (.5 - d) * b, 1 * c, 0, (.5 + d) * c, 0, .5 * c); S(a, 0, (.5 - d) * c, (.5 - d) * b, 0, .5 * b, 0); S(a, (.5 + d) * b, 0, 1 * b, (.5 - d) * c, 1 * b, .5 * c); R(a, .5 * b, 0, !1); a.lineTo(.5 * b, .15 * c); a.moveTo(.5 * b, 1 * c); a.lineTo(.5 * b, .85 * c); a.moveTo(0, .5 * c); a.lineTo(.15 * b, .5 * c); a.moveTo(1 * b, .5 * c); a.lineTo(.85 * b, .5 * c); a.moveTo(.5 * b, .5 * c); a.lineTo(.58 * b, .1 * c); a.moveTo(.5 * b, .5 * c); a.lineTo(.78 * b, .54 * c); a.gb(!1); b = a.q; b.Xd = bj; z.u(a); return b } }, ep; for (ep in so) so[ep.toLowerCase()] = ep; var fp = { "": "", Standard: "F1 m 0,0 l 8,4 -8,4 2,-4 z", Backward: "F1 m 8,0 l -2,4 2,4 -8,-4 z", Triangle: "F1 m 0,0 l 8,4.62 -8,4.62 z", BackwardTriangle: "F1 m 8,4 l 0,4 -8,-4 8,-4 0,4 z", Boomerang: "F1 m 0,0 l 8,4 -8,4 4,-4 -4,-4 z", BackwardBoomerang: "F1 m 8,0 l -8,4 8,4 -4,-4 4,-4 z", SidewaysV: "m 0,0 l 8,4 -8,4 0,-1 6,-3 -6,-3 0,-1 z", BackwardV: "m 8,0 l -8,4 8,4 0,-1 -6,-3 6,-3 0,-1 z", OpenTriangle: "m 0,0 l 8,4 -8,4", BackwardOpenTriangle: "m 8,0 l -8,4 8,4", OpenTriangleLine: "m 0,0 l 8,4 -8,4 m 8.5,0 l 0,-8", BackwardOpenTriangleLine: "m 8,0 l -8,4 8,4 m -8.5,0 l 0,-8", OpenTriangleTop: "m 0,0 l 8,4 m 0,4", BackwardOpenTriangleTop: "m 8,0 l -8,4 m 0,4", OpenTriangleBottom: "m 0,8 l 8,-4", BackwardOpenTriangleBottom: "m 0,4 l 8,4", HalfTriangleTop: "F1 m 0,0 l 0,4 8,0 z m 0,8", BackwardHalfTriangleTop: "F1 m 8,0 l 0,4 -8,0 z m 0,8", HalfTriangleBottom: "F1 m 0,4 l 0,4 8,-4 z", BackwardHalfTriangleBottom: "F1 m 8,4 l 0,4 -8,-4 z", ForwardSemiCircle: "m 4,0 b 270 180 0 4 4", BackwardSemiCircle: "m 4,8 b 90 180 0 -4 4", Feather: "m 0,0 l 3,4 -3,4", BackwardFeather: "m 3,0 l -3,4 3,4", DoubleFeathers: "m 0,0 l 3,4 -3,4 m 3,-8 l 3,4 -3,4", BackwardDoubleFeathers: "m 3,0 l -3,4 3,4 m 3,-8 l -3,4 3,4", TripleFeathers: "m 0,0 l 3,4 -3,4 m 3,-8 l 3,4 -3,4 m 3,-8 l 3,4 -3,4", BackwardTripleFeathers: "m 3,0 l -3,4 3,4 m 3,-8 l -3,4 3,4 m 3,-8 l -3,4 3,4", ForwardSlash: "m 0,8 l 5,-8", BackSlash: "m 0,0 l 5,8", DoubleForwardSlash: "m 0,8 l 4,-8 m -2,8 l 4,-8", DoubleBackSlash: "m 0,0 l 4,8 m -2,-8 l 4,8", TripleForwardSlash: "m 0,8 l 4,-8 m -2,8 l 4,-8 m -2,8 l 4,-8", TripleBackSlash: "m 0,0 l 4,8 m -2,-8 l 4,8 m -2,-8 l 4,8", Fork: "m 0,4 l 8,0 m -8,0 l 8,-4 m -8,4 l 8,4", BackwardFork: "m 8,4 l -8,0 m 8,0 l -8,-4 m 8,4 l -8,4", LineFork: "m 0,0 l 0,8 m 0,-4 l 8,0 m -8,0 l 8,-4 m -8,4 l 8,4", BackwardLineFork: "m 8,4 l -8,0 m 8,0 l -8,-4 m 8,4 l -8,4 m 8,-8 l 0,8", CircleFork: "F1 m 6,4 b 0 360 -3 0 3 z m 0,0 l 6,0 m -6,0 l 6,-4 m -6,4 l 6,4", BackwardCircleFork: "F1 m 0,4 l 6,0 m -6,-4 l 6,4 m -6,4 l 6,-4 m 6,0 b 0 360 -3 0 3", CircleLineFork: "F1 m 6,4 b 0 360 -3 0 3 z m 1,-4 l 0,8 m 0,-4 l 6,0 m -6,0 l 6,-4 m -6,4 l 6,4", BackwardCircleLineFork: "F1 m 0,4 l 6,0 m -6,-4 l 6,4 m -6,4 l 6,-4 m 0,-4 l 0,8 m 7,-4 b 0 360 -3 0 3", Circle: "F1 m 8,4 b 0 360 -4 0 4 z", Block: "F1 m 0,0 l 0,8 8,0 0,-8 z", StretchedDiamond: "F1 m 0,3 l 5,-3 5,3 -5,3 -5,-3 z", Diamond: "F1 m 0,4 l 4,-4 4,4 -4,4 -4,-4 z", Chevron: "F1 m 0,0 l 5,0 3,4 -3,4 -5,0 3,-4 -3,-4 z", StretchedChevron: "F1 m 0,0 l 8,0 3,4 -3,4 -8,0 3,-4 -3,-4 z", NormalArrow: "F1 m 0,2 l 4,0 0,-2 4,4 -4,4 0,-2 -4,0 z", X: "m 0,0 l 8,8 m 0,-8 l -8,8", TailedNormalArrow: "F1 m 0,0 l 2,0 1,2 3,0 0,-2 2,4 -2,4 0,-2 -3,0 -1,2 -2,0 1,-4 -1,-4 z", DoubleTriangle: "F1 m 0,0 l 4,4 -4,4 0,-8 z m 4,0 l 4,4 -4,4 0,-8 z", BigEndArrow: "F1 m 0,0 l 5,2 0,-2 3,4 -3,4 0,-2 -5,2 0,-8 z", ConcaveTailArrow: "F1 m 0,2 h 4 v -2 l 4,4 -4,4 v -2 h -4 l 2,-2 -2,-2 z", RoundedTriangle: "F1 m 0,1 a 1,1 0 0 1 1,-1 l 7,3 a 0.5,1 0 0 1 0,2 l -7,3 a 1,1 0 0 1 -1,-1 l 0,-6 z", SimpleArrow: "F1 m 1,2 l -1,-2 2,0 1,2 -1,2 -2,0 1,-2 5,0 0,-2 2,2 -2,2 0,-2 z", AccelerationArrow: "F1 m 0,0 l 0,8 0.2,0 0,-8 -0.2,0 z m 2,0 l 0,8 1,0 0,-8 -1,0 z m 3,0 l 2,0 2,4 -2,4 -2,0 0,-8 z", BoxArrow: "F1 m 0,0 l 4,0 0,2 2,0 0,-2 2,4 -2,4 0,-2 -2,0 0,2 -4,0 0,-8 z", TriangleLine: "F1 m 8,4 l -8,-4 0,8 8,-4 z m 0.5,4 l 0,-8", CircleEndedArrow: "F1 m 10,4 l -2,-3 0,2 -2,0 0,2 2,0 0,2 2,-3 z m -4,0 b 0 360 -3 0 3 z", DynamicWidthArrow: "F1 m 0,3 l 2,0 2,-1 2,-2 2,4 -2,4 -2,-2 -2,-1 -2,0 0,-2 z", EquilibriumArrow: "m 0,3 l 8,0 -3,-3 m 3,5 l -8,0 3,3", FastForward: "F1 m 0,0 l 3.5,4 0,-4 3.5,4 0,-4 1,0 0,8 -1,0 0,-4 -3.5,4 0,-4 -3.5,4 0,-8 z", Kite: "F1 m 0,4 l 2,-4 6,4 -6,4 -2,-4 z", HalfArrowTop: "F1 m 0,0 l 4,4 4,0 -8,-4 z m 0,8", HalfArrowBottom: "F1 m 0,8 l 4,-4 4,0 -8,4 z", OpposingDirectionDoubleArrow: "F1 m 0,4 l 2,-4 0,2 4,0 0,-2 2,4 -2,4 0,-2 -4,0 0,2 -2,-4 z", PartialDoubleTriangle: "F1 m 0,0 4,3 0,-3 4,4 -4,4 0,-3 -4,3 0,-8 z", LineCircle: "F1 m 0,0 l 0,8 m 7 -4 b 0 360 -3 0 3 z", DoubleLineCircle: "F1 m 0,0 l 0,8 m 2,-8 l 0,8 m 7 -4 b 0 360 -3 0 3 z", TripleLineCircle: "F1 m 0,0 l 0,8 m 2,-8 l 0,8 m 2,-8 l 0,8 m 7 -4 b 0 360 -3 0 3 z", CircleLine: "F1 m 6 4 b 0 360 -3 0 3 z m 1,-4 l 0,8", DiamondCircle: "F1 m 8,4 l -4,4 -4,-4 4,-4 4,4 m 8,0 b 0 360 -4 0 4 z", PlusCircle: "F1 m 8,4 b 0 360 -4 0 4 l -8 0 z m -4 -4 l 0 8", OpenRightTriangleTop: "m 8,0 l 0,4 -8,0 m 0,4", OpenRightTriangleBottom: "m 8,8 l 0,-4 -8,0", Line: "m 0,0 l 0,8", DoubleLine: "m 0,0 l 0,8 m 2,0 l 0,-8", TripleLine: "m 0,0 l 0,8 m 2,0 l 0,-8 m 2,0 l 0,8", PentagonArrow: "F1 m 8,4 l -4,-4 -4,0 0,8 4,0 4,-4 z" }; function wo(a) { if (null !== fp) { for (var b in fp) { var c = sf(fp[b], !1); ke[b] = c; b.toLowerCase() !== b && (ke[b.toLowerCase()] = b) } fp = null } b = ke[a]; if (void 0 === b) { b = a.toLowerCase(); if ("none" === b) return "None"; b = ke[b] } return "string" === typeof b ? b : b instanceof hf ? a : null } function D(a) { 0 === arguments.length ? I.call(this) : I.call(this, a); this.T = 311807; this.cl = this.si = ""; this.ss = this.ps = this.Cs = this.xr = null; this.Es = ""; this.Wg = this.Ds = this.Hm = null; this.rs = ""; this.Io = null; this.qs = fe; this.ts = ""; this.Jo = null; this.we = ""; this.Fv = this.Aq = this.Ok = null; this.Ki = (new N(NaN, NaN)).freeze(); this.Cr = ""; this.gl = null; this.Dr = Zb; this.Mr = Nd; this.Fr = Od; this.Tq = null; this.yr = gp; this.Jm = Md; this.Im = "gray"; this.zg = 4; this.AC = -1; this.et = NaN; this.oG = new w; this.il = null; this.Qj = NaN } z.Qa(D, I); z.ia("Part", D); D.prototype.cloneProtected = function(a) { I.prototype.cloneProtected.call(this, a); a.T = this.T & -4097 | 49152; a.si = this.si; a.cl = this.cl; a.xr = this.xr; a.Cs = this.Cs; a.ps = this.ps; a.ss = this.ss; a.Es = this.Es; a.Ds = this.Ds; a.Wg = null; a.rs = this.rs; a.qs = this.qs.V(); a.ts = this.ts; a.we = this.we; a.Aq = this.Aq; a.Ki.assign(this.Ki); a.Cr = this.Cr; a.Dr = this.Dr.V(); a.Mr = this.Mr.V(); a.Fr = this.Fr.V(); a.Tq = this.Tq; a.yr = this.yr; a.Jm = this.Jm.V(); a.Im = this.Im; a.zg = this.zg; a.et = this.et }; D.prototype.ji = function(a) { I.prototype.ji.call(this, a); a.Nl(); a.Hm = null; a.Io = null; a.Jo = null; a.gl = null; a.il = null }; D.prototype.toString = function() { var a = z.kf(Object.getPrototypeOf(this)) + "#" + z.nd(this); null !== this.data && (a += "(" + ka(this.data) + ")"); return a }; D.LayoutNone = 0; var vl; D.LayoutAdded = vl = 1; var Dl; D.LayoutRemoved = Dl = 2; D.LayoutShown = 4; D.LayoutHidden = 8; D.LayoutNodeSized = 16; var gm; D.LayoutGroupLayout = gm = 32; D.LayoutNodeReplaced = 64; var gp; D.LayoutStandard = gp = vl | Dl | 28 | gm | 64; D.LayoutAll = 16777215; D.prototype.tn = function(a, b, c, d, e, g, h) { var k = this.h; null !== k && (a === Uf && "elements" === b ? e instanceof I ? wl(e, function(a) { yl(k, a); xl(k, a) }) : e instanceof vk && Tl(k, e) : a === Vf && "elements" === b && (e instanceof I ? wl(e, function(a) { Cl(k, a); Bl(k, a) }) : e instanceof vk && Ul(k, e)), k.Rc(a, b, c, d, e, g, h)) }; D.prototype.updateTargetBindings = D.prototype.Mb = function(a) { I.prototype.Mb.call(this, a); if (null !== this.data) { a = this.va.o; for (var b = a.length, c = 0; c < b; c++) { var d = a[c]; d instanceof I && wl(d, function(a) { null !== a.data && a.Mb() }) } } }; D.prototype.updateRelationshipsFromData = function() { var a = this.data; if (null !== a) { var b = this.h; if (null !== b) { var c = b.ha; if (c instanceof V) { var d = c.fn(a), b = b.HH(d), e = this.Va; b !== e && (b = null !== e ? c.pb(e.data) : void 0, e = c.Pp, "function" === typeof e ? e(a, b) : a[e] = b, c.Lx(a, d)) } } } }; z.w(D, { Dw: "adornments" }, function() { return null === this.Wg ? Pa : this.Wg.VE }); D.prototype.findAdornment = D.prototype.lp = function(a) { u && z.g(a, "string", D, "findAdornment:category"); var b = this.Wg; return null === b ? null : b.na(a) }; D.prototype.addAdornment = D.prototype.ql = function(a, b) { if (null !== b) { u && (z.g(a, "string", D, "addAdornment:category"), z.l(b, da, D, "addAdornment:ad")); var c = null, d = this.Wg; null !== d && (c = d.na(a)); if (c !== b) { if (null !== c) { var e = c.h; null !== e && e.remove(c) } null === d && (this.Wg = d = new na("string", da)); b.si !== a && (b.nc = a); d.add(a, b); c = this.h; null !== c && (c.add(b), b.data = this.data) } } }; D.prototype.removeAdornment = D.prototype.rj = function(a) { u && z.g(a, "string", D, "removeAdornment:category"); var b = this.Wg; if (null !== b) { var c = b.na(a); if (null !== c) { var d = c.h; null !== d && d.remove(c) } b.remove(a); 0 === b.count && (this.Wg = null) } }; D.prototype.clearAdornments = D.prototype.pt = function() { var a = this.Wg; if (null !== a) { for (var b = z.rb(), a = a.i; a.next();) b.push(a.key); for (var a = b.length, c = 0; c < a; c++) this.rj(b[c]); z.xa(b) } }; D.prototype.updateAdornments = function() { var a = this.h; if (null !== a) { a: { if (this.kb && this.GF) { var b = this.vn; if (!(null !== b && this.W.F() && this.isVisible() && b.nj() && b.W.F())) break a; var c = this.lp("Selection"); if (null === c) { c = this.gJ; null === c && (c = this instanceof G ? a.wI : this instanceof F ? a.TH : a.MI); if (!(c instanceof da)) break a; gh(c); c = c.copy(); null !== c && (c.nc = "Selection", c.fc = b) } if (null !== c) { var d = c.placeholder; if (null !== d) { var e = b.gj(), g = 0; b instanceof X && (g = b.ub); var h = z.Xl(); h.n((b.Ga.width + g) * e, (b.Ga.height + g) * e); d.Aa = h; z.pk(h) } c.angle = b.Kl(); c.type !== Ki && (d = z.O(), c.location = b.fb(Zb, d), z.A(d)); this.ql("Selection", c); break a } } this.rj("Selection") } hp(this, a); for (a = this.Dw; a.next();) b = a.value, b.Mb(), b.S() } }; function hp(a, b) { b.hb.Ye.each(function(b) { b.isEnabled && b.updateAdornments(a) }); b.hb.updateAdornments(a) } z.w(D, { layer: "layer" }, function() { return this.Fv }); z.w(D, { h: "diagram" }, function() { var a = this.Fv; return null !== a ? a.h : null }); z.defineProperty(D, { If: "layerName" }, function() { return this.cl }, function(a) { var b = this.cl; if (b !== a) { z.g(a, "string", D, "layerName"); var c = this.h; if (null === c || null !== c.Fl(a) && !c.lq) if (this.cl = a, null !== c && c.yc(), this.j("layerName", b, a), b = this.layer, null !== b && b.name !== a && (c = b.h, null !== c && (a = c.Fl(a), null !== a && a !== b))) { var d = b.Ve(-1, this, !0); 0 <= d && c.Rc(Vf, "parts", b, this, null, d, !0); b.visible !== a.visible && this.wd(a.visible); d = a.xp(99999999, this, !0); 0 <= d && c.Rc(Uf, "parts", a, null, this, !0, d); d = this.Ut; if (null !== d) { var e = c.$a; c.$a = !0; d(this, b, a); c.$a = e } } } }); z.defineProperty(D, { Ut: "layerChanged" }, function() { return this.xr }, function(a) { var b = this.xr; b !== a && (null !== a && z.g(a, "function", D, "layerChanged"), this.xr = a, this.j("layerChanged", b, a)) }); z.defineProperty(D, { En: "zOrder" }, function() { return this.et }, function(a) { var b = this.et; if (b !== a) { z.g(a, "number", D, "zOrder"); this.et = a; var c = this.layer; null !== c && mk(c, -1, this); this.j("zOrder", b, a); a = this.h; null !== a && a.ta() } }); D.prototype.invalidateAdornments = D.prototype.ae = function() { var a = this.h; null !== a && (Ik(a), 0 !== (this.T & 16384) !== !0 && (this.T |= 16384, a.Ce())) }; function ik(a) { 0 !== (a.T & 16384) !== !1 && (a.updateAdornments(), a.T &= -16385) } function cn(a) { if (!1 === ol(a)) { var b = a.h; null !== b && (b.qg.add(a), a instanceof E && !b.pa.qb && a.mf(), b.Ce()); ip(a, !0); a.Fi() } } function jp(a) { if (!1 !== ol(a)) { var b = a.position, c = a.location; c.F() && b.F() || kp(a, b, c); var c = a.Xb, d = c.copy(); c.Wa(); c.x = b.x; c.y = b.y; c.freeze(); a.vx(d, c); ip(a, !1) } } z.w(D, { Zb: "locationObject" }, function() { if (null === this.gl) { var a = this.sx; "" !== a ? (a = this.oe(a), this.gl = null !== a ? a : this) : this.gl = this instanceof da ? this.type !== Ki && null !== this.placeholder ? this.placeholder : this : this } return this.gl.visible ? this.gl : this }); z.defineProperty(D, { GI: "minLocation" }, function() { return this.Mr }, function(a) { var b = this.Mr; b.N(a) || (u && z.l(a, N, D, "minLocation"), this.Mr = a = a.V(), this.j("minLocation", b, a)) }); z.defineProperty(D, { BI: "maxLocation" }, function() { return this.Fr }, function(a) { var b = this.Fr; b.N(a) || (u && z.l(a, N, D, "maxLocation"), this.Fr = a = a.V(), this.j("maxLocation", b, a)) }); z.defineProperty(D, { sx: "locationObjectName" }, function() { return this.Cr }, function(a) { var b = this.Cr; b !== a && (u && z.g(a, "string", D, "locationObjectName"), this.Cr = a, this.gl = null, Ym(this), this.j("locationObjectName", b, a)) }); z.defineProperty(D, { of: "locationSpot" }, function() { return this.Dr }, function(a) { var b = this.Dr; b.N(a) || (u && (z.l(a, Q, D, "locationSpot"), a.cd() || z.k("Part.locationSpot must be a specific Spot value, not: " + a)), this.Dr = a = a.V(), Ym(this), this.j("locationSpot", b, a)) }); D.prototype.move = function(a) { this.position = a }; D.prototype.moveTo = D.prototype.moveTo = function(a, b) { var c = z.Tb(a, b); this.move(c); z.A(c) }; D.prototype.isVisible = function() { if (!this.visible) return !1; var a = this.layer; if (null !== a && !a.visible) return !1; a = this.h; if (null !== a && (a = a.Ua, a.nf && (a = a.ym.na(this), null !== a && a.Cx))) return !0; a = this.Va; return null === a || a.re && a.isVisible() ? !0 : !1 }; D.prototype.wd = function(a) { var b = this.h; a ? (this.I(4), this.ae(), null !== b && b.qg.add(this)) : (this.I(8), this.pt()); this.Nl(); null !== b && (b.yc(), b.ta()) }; D.prototype.findObject = D.prototype.oe = function(a) { if (this.name === a) return this; var b = this.il; null === b && (this.il = b = new ma); if (void 0 !== b[a]) return b[a]; for (var c = this.va.o, d = c.length, e = 0; e < d; e++) { var g = c[e]; if (g.name === a) return b[a] = g; if (g instanceof I) if (null === g.Ii && null === g.sg) { if (g = g.oe(a), null !== g) return b[a] = g } else if (Rl(g) && (g = g.va.first(), null !== g && g.name === a)) return b[a] = g } return b[a] = null }; function lp(a, b, c, d) { void 0 === d && (d = new N); c = c.Be() ? ec : c; var e = b.Ga; d.n(e.width * c.x + c.offsetX, e.height * c.y + c.offsetY); if (null === b || b === a) return d; b.transform.Cb(d); for (b = b.U; null !== b && b !== a;) b.transform.Cb(d), b = b.U; a.fl.Cb(d); d.offset(-a.ud.x, -a.ud.y); return d } D.prototype.ensureBounds = D.prototype.Bf = function() { rj(this, Infinity, Infinity); this.Lc() }; function lk(a, b) { var c = a.oG, d; isNaN(a.Qj) && (a.Qj = jo(a)); d = a.Qj; var e = 2 * d; if (!a.sk) return c.n(b.x - 1 - d, b.y - 1 - d, b.width + 2 + e, b.height + 2 + e), c; d = b.x; var e = b.y, g = b.width, h = b.height, k = a.shadowBlur, l = a.lJ, g = g + k, h = h + k; d -= k / 2; e -= k / 2; 0 < l.x ? g += l.x : (d += l.x, g -= l.x); 0 < l.y ? h += l.y : (e += l.y, h -= l.y); c.n(d - 1, e - 1, g + 2, h + 2); return c } D.prototype.Lc = function() { this.Fi(); if (!1 === nl(this)) jp(this); else { var a = this.Xb, b = z.kg(); b.assign(a); a.Wa(); var c = hk(this); this.$i(0, 0, this.ud.width, this.ud.height); var d = this.position; kp(this, d, this.location); a.x = d.x; a.y = d.y; a.freeze(); this.vx(b, a); Om(this, !1); b.N(a) ? this.Jf(c) : !this.be() || eb(b.width, a.width) && eb(b.height, a.height) || 0 <= this.AC && this.I(16); z.dc(b); ip(this, !1) } }; D.prototype.vx = function(a, b) { var c = this.h; if (null !== c) { var d = !1; if (!1 === c.Ij && a.F()) { var e = c.ad, g = c.padding, h = e.x + g.left, k = e.y + g.top, l = e.width - 2 * g.right, e = e.height - 2 * g.bottom; a.x > h && a.y > k && a.right < l && a.bottom < e && b.x > h && b.y > k && b.right < l && b.bottom < e && (d = !0) } 0 !== (this.T & 65536) !== !0 && a.N(b) || zl(this, d, c); c.ta(); a.N(b) || this.Nl() } }; z.defineProperty(D, { location: "location" }, function() { return this.Ki }, function(a) { var b = this.Ki; if (!b.N(a)) { u && z.l(a, N, D, "location"); a = a.V(); var c; c = a; if (this instanceof G) c = !1; else { this.Ki = c; if (!1 === nl(this)) { cn(this); var d = this.sb; if (d.F()) { var e = d.copy(); d.n(d.x + (c.x - b.x), d.y + (c.y - b.y)); mp(this, this.h, d, e); this.j("position", e, d) } } c = !0 } c && this.j("location", b, a) } }); D.prototype.RA = function(a, b) { if (this instanceof G || !a.F()) return !1; var c = this.h; if (null !== c && (mp(this, c, a, b), !0 === c.pa.qb)) return !0; this.sb = a; c = this.Ki; if (c.F()) { var d = c.copy(); c.n(c.x + (a.x - b.x), c.y + (a.y - b.y)); this.j("location", d, c) }!1 === ol(this) && !1 === nl(this) && (cn(this), jp(this)); return !0 }; function mp(a, b, c, d) { null === b || a instanceof da || (b = b.Ua, b.wc && Vj(b, a, "position", d.copy(), c.copy(), !1)) } D.prototype.Nx = function(a, b) { var c = this.Ki, d = this.sb; ol(this) || nl(this) ? c.n(NaN, NaN) : c.n(c.x + a - d.x, c.y + b - d.y); d.n(a, b); cn(this) }; function kp(a, b, c) { var d = z.O(), e = a.of, g = a.Zb; e.Be() && z.k("determineOffset: Part's locationSpot must be real: " + e.toString()); var h = g.Ga, k = g instanceof X ? g.ub : 0; d.tu(0, 0, h.width + k, h.height + k, e); if (g !== a) for (d.offset(-k / 2, -k / 2), g.transform.Cb(d), e = g.U; null !== e && e !== a;) e.transform.Cb(d), e = e.U; a.fl.Cb(d); d.offset(-a.ud.x, -a.ud.y); e = a.h; c.F() ? (g = b.x, h = b.y, b.n(c.x - d.x, c.y - d.y), null !== e && (c = e.Ua, (k = c.Jj) || !c.wc || a instanceof da || Vj(c, a, "position", new N(g, h), b, !1), k || b.x === g && b.y === h || (k = e.Bb, e.Bb = !0, a.j("position", new N(g, h), b), e.Bb = k))) : b.F() && (g = c.copy(), c.n(b.x + d.x, b.y + d.y), c.N(g) || null === e || (k = e.Bb, e.Bb = !0, a.j("location", g, c), e.Bb = k)); z.A(d); a.Fi() } function zl(a, b, c) { Pm(a, !1); a instanceof E && nm(c, a); a.layer.Nc || b || c.yc(); b = a.Xb; var d = c.xb; d.F() ? (hk(a) ? Hb(b, d) || a.Jf(!1) : b.Ig(d) && a.Jf(!0), a.updateAdornments()) : c.Yk = !0 } D.prototype.Ql = function() { return !0 }; function jk(a, b) { var c = a.Xb; if (0 !== c.width && 0 !== c.height && !isNaN(c.x) && !isNaN(c.y) && a.isVisible()) { var d = a.transform; null !== a.uc && (Um(a, b, a.uc, !0, !0), b.fillRect(c.x, c.y, c.width, c.height)); null === a.uc && null === a.Nb && (Um(a, b, "rgba(0,0,0,0.4)", !0, !1), b.fillRect(c.x, c.y, c.width, c.height)); null !== a.Nb && (d.Pt() || b.transform(d.m11, d.m12, d.m21, d.m22, d.dx, d.dy), c = a.Ga, Um(a, b, a.Nb, !0, !1), b.fillRect(0, 0, c.width, c.height), d.Pt() || (c = 1 / (d.m11 * d.m22 - d.m12 * d.m21), b.transform(d.m22 * c, -d.m12 * c, -d.m21 * c, d.m11 * c, c * (d.m21 * d.dy - d.m22 * d.dx), c * (d.m12 * d.dx - d.m11 * d.dy)))) } } D.prototype.be = function() { return !0 }; z.defineProperty(D, { nc: "category" }, function() { return this.si }, function(a) { var b = this.si; if (b !== a) { z.g(a, "string", D, "category"); var c = this.h, d = this.data, e = null; if (null !== c && null !== d && !(this instanceof da)) { var g = c.ha.pa; g.isEnabled && !g.qb && (e = this.clone(), e.va.$c(this.va)) } this.si = a; this.j("category", b, a); null === c || null === d || this instanceof da ? (e = this.Wf, null !== e && (a = e.Wg, null !== a && a.remove(b), e.ql(this.nc, this))) : (g = c.ha, g.pa.qb || (this instanceof G ? (g instanceof V ? g.IF(d, a) : g instanceof ng && g.jJ(d, a), c = am(c, a), null !== c && (gh(c), c = c.copy(), null !== c && np(this, c, b, a))) : (null !== g && g.Jx(d, a), c = Yl(c, d, a), null !== c && (gh(c), c = c.copy(), null === c || c instanceof G || (c.location = this.location, np(this, c, b, a)))), null !== e && (b = this.clone(), b.va.$c(this.va), this.j("self", e, b)))) } }); z.defineProperty(D, { self: "self" }, function() { return this }, function(a) { np(this, a, this.nc, a.nc) }); var op = !1; function np(a, b, c, d) { b.constructor === a.constructor || op || (op = !0, z.trace('Should not change the class of the Part when changing category from "' + c + '" to "' + d + '"'), z.trace(" Old class: " + z.kf(a) + ", new class: " + z.kf(b) + ", part: " + a.toString())); a.pt(); var e = a.data; c = a.If; var g = a.kb, h = a.wh, k = !0, l = !0, m = !1; if (a instanceof E) var n = a, k = n.mj, l = n.vd, m = n.Cu; b.ji(a); b.cloneProtected(a); a.si = d; a.S(); a.ta(); b = a.h; d = !0; null !== b && (d = b.Bb, b.Bb = !0); a.fe = e; null !== e && a.Mb(); null !== b && (b.Bb = d); e = a.If; e !== c && (a.cl = c, a.If = e); a instanceof E && (n = a, n.mj = k, n.vd = l, n.Cu = m, n.be() && n.I(64)); a.kb = g; a.wh = h } D.prototype.canCopy = function() { if (!this.$D) return !1; var a = this.layer; if (null === a) return !0; if (!a.kk) return !1; a = a.h; return null === a ? !0 : a.kk ? !0 : !1 }; D.prototype.canDelete = function() { if (!this.dE) return !1; var a = this.layer; if (null === a) return !0; if (!a.Sm) return !1; a = a.h; return null === a ? !0 : a.Sm ? !0 : !1 }; D.prototype.canEdit = function() { if (!this.RF) return !1; var a = this.layer; if (null === a) return !0; if (!a.Hw) return !1; a = a.h; return null === a ? !0 : a.Hw ? !0 : !1 }; D.prototype.canGroup = function() { if (!this.CE) return !1; var a = this.layer; if (null === a) return !0; if (!a.Ew) return !1; a = a.h; return null === a ? !0 : a.Ew ? !0 : !1 }; D.prototype.canMove = function() { if (!this.dF) return !1; var a = this.layer; if (null === a) return !0; if (!a.ul) return !1; a = a.h; return null === a ? !0 : a.ul ? !0 : !1 }; D.prototype.canReshape = function() { if (!this.sF) return !1; var a = this.layer; if (null === a) return !0; if (!a.Fw) return !1; a = a.h; return null === a ? !0 : a.Fw ? !0 : !1 }; D.prototype.canResize = function() { if (!this.tF) return !1; var a = this.layer; if (null === a) return !0; if (!a.mt) return !1; a = a.h; return null === a ? !0 : a.mt ? !0 : !1 }; D.prototype.canRotate = function() { if (!this.yF) return !1; var a = this.layer; if (null === a) return !0; if (!a.Gw) return !1; a = a.h; return null === a ? !0 : a.Gw ? !0 : !1 }; D.prototype.canSelect = function() { if (!this.vk) return !1; var a = this.layer; if (null === a) return !0; if (!a.xf) return !1; a = a.h; return null === a ? !0 : a.xf ? !0 : !1 }; z.defineProperty(D, { $D: "copyable" }, function() { return 0 !== (this.T & 1) }, function(a) { var b = 0 !== (this.T & 1); b !== a && (u && z.g(a, "boolean", D, "copyable"), this.T ^= 1, this.j("copyable", b, a)) }); z.defineProperty(D, { dE: "deletable" }, function() { return 0 !== (this.T & 2) }, function(a) { var b = 0 !== (this.T & 2); b !== a && (u && z.g(a, "boolean", D, "deletable"), this.T ^= 2, this.j("deletable", b, a)) }); z.defineProperty(D, { RF: "textEditable" }, function() { return 0 !== (this.T & 4) }, function(a) { var b = 0 !== (this.T & 4); b !== a && (u && z.g(a, "boolean", D, "textEditable"), this.T ^= 4, this.j("textEditable", b, a), this.ae()) }); z.defineProperty(D, { CE: "groupable" }, function() { return 0 !== (this.T & 8) }, function(a) { var b = 0 !== (this.T & 8); b !== a && (u && z.g(a, "boolean", D, "groupable"), this.T ^= 8, this.j("groupable", b, a)) }); z.defineProperty(D, { dF: "movable" }, function() { return 0 !== (this.T & 16) }, function(a) { var b = 0 !== (this.T & 16); b !== a && (u && z.g(a, "boolean", D, "movable"), this.T ^= 16, this.j("movable", b, a)) }); z.defineProperty(D, { GF: "selectionAdorned" }, function() { return 0 !== (this.T & 32) }, function(a) { var b = 0 !== (this.T & 32); b !== a && (u && z.g(a, "boolean", D, "selectionAdorned"), this.T ^= 32, this.j("selectionAdorned", b, a), this.ae()) }); z.defineProperty(D, { jx: "isInDocumentBounds" }, function() { return 0 !== (this.T & 64) }, function(a) { var b = 0 !== (this.T & 64); if (b !== a) { u && z.g(a, "boolean", D, "isInDocumentBounds"); this.T ^= 64; var c = this.h; null !== c && c.yc(); this.j("isInDocumentBounds", b, a) } }); z.defineProperty(D, { jA: "isLayoutPositioned" }, function() { return 0 !== (this.T & 128) }, function(a) { var b = 0 !== (this.T & 128); b !== a && (u && z.g(a, "boolean", D, "isLayoutPositioned"), this.T ^= 128, this.j("isLayoutPositioned", b, a), this.I(a ? 4 : 8)) }); z.defineProperty(D, { vk: "selectable" }, function() { return 0 !== (this.T & 256) }, function(a) { var b = 0 !== (this.T & 256); b !== a && (u && z.g(a, "boolean", D, "selectable"), this.T ^= 256, this.j("selectable", b, a), this.ae()) }); z.defineProperty(D, { sF: "reshapable" }, function() { return 0 !== (this.T & 512) }, function(a) { var b = 0 !== (this.T & 512); b !== a && (u && z.g(a, "boolean", D, "reshapable"), this.T ^= 512, this.j("reshapable", b, a), this.ae()) }); z.defineProperty(D, { tF: "resizable" }, function() { return 0 !== (this.T & 1024) }, function(a) { var b = 0 !== (this.T & 1024); b !== a && (u && z.g(a, "boolean", D, "resizable"), this.T ^= 1024, this.j("resizable", b, a), this.ae()) }); z.defineProperty(D, { yF: "rotatable" }, function() { return 0 !== (this.T & 2048) }, function(a) { var b = 0 !== (this.T & 2048); b !== a && (u && z.g(a, "boolean", D, "rotatable"), this.T ^= 2048, this.j("rotatable", b, a), this.ae()) }); z.defineProperty(D, { kb: "isSelected" }, function() { return 0 !== (this.T & 4096) }, function(a) { var b = 0 !== (this.T & 4096); if (b !== a) { u && z.g(a, "boolean", D, "isSelected"); var c = this.h; if (!a || this.canSelect() && !(null !== c && c.selection.count >= c.CI)) { this.T ^= 4096; var d = !1; if (null !== c) { d = c.Bb; c.Bb = !0; var e = c.selection; e.Wa(); a ? e.add(this) : e.remove(this); e.freeze() } this.j("isSelected", b, a); this.ae(); a = this.hJ; null !== a && a(this); null !== c && (c.Ce(), c.Bb = d) } } }); z.defineProperty(D, { wh: "isHighlighted" }, function() { return 0 !== (this.T & 524288) }, function(a) { var b = 0 !== (this.T & 524288); if (b !== a) { u && z.g(a, "boolean", D, "isHighlighted"); this.T ^= 524288; var c = this.h; null !== c && (c = c.hn, c.Wa(), a ? c.add(this) : c.remove(this), c.freeze()); this.j("isHighlighted", b, a); this.ta() } }); z.defineProperty(D, { sk: "isShadowed" }, function() { return 0 !== (this.T & 8192) }, function(a) { var b = 0 !== (this.T & 8192); b !== a && (u && z.g(a, "boolean", D, "isShadowed"), this.T ^= 8192, this.j("isShadowed", b, a), this.ta()) }); function ol(a) { return 0 !== (a.T & 32768) } function ip(a, b) { a.T = b ? a.T | 32768 : a.T & -32769 } function Pm(a, b) { a.T = b ? a.T | 65536 : a.T & -65537 } function hk(a) { return 0 !== (a.T & 131072) } D.prototype.Jf = function(a) { this.T = a ? this.T | 131072 : this.T & -131073 }; function pp(a, b) { a.T = b ? a.T | 1048576 : a.T & -1048577 } z.defineProperty(D, { IE: "isAnimated" }, function() { return 0 !== (this.T & 262144) }, function(a) { var b = 0 !== (this.T & 262144); b !== a && (u && z.g(a, "boolean", D, "isAnimated"), this.T ^= 262144, this.j("isAnimated", b, a)) }); z.defineProperty(D, { Ix: "selectionObjectName" }, function() { return this.Es }, function(a) { var b = this.Es; b !== a && (u && z.g(a, "string", D, "selectionObjectName"), this.Es = a, this.Hm = null, this.j("selectionObjectName", b, a)) }); z.defineProperty(D, { gJ: "selectionAdornmentTemplate" }, function() { return this.Cs }, function(a) { var b = this.Cs; b !== a && (u && z.l(a, da, D, "selectionAdornmentTemplate"), this instanceof G && (a.type = Ki), this.Cs = a, this.j("selectionAdornmentTemplate", b, a)) }); z.w(D, { vn: "selectionObject" }, function() { if (null === this.Hm) { var a = this.Ix; null !== a && "" !== a ? (a = this.oe(a), this.Hm = null !== a ? a : this) : this instanceof G ? (a = this.path, this.Hm = null !== a ? a : this) : this.Hm = this } return this.Hm }); z.defineProperty(D, { hJ: "selectionChanged" }, function() { return this.Ds }, function(a) { var b = this.Ds; b !== a && (null !== a && z.g(a, "function", D, "selectionChanged"), this.Ds = a, this.j("selectionChanged", b, a)) }); z.defineProperty(D, { uF: "resizeAdornmentTemplate" }, function() { return this.ps }, function(a) { var b = this.ps; b !== a && (u && z.l(a, da, D, "resizeAdornmentTemplate"), this.ps = a, this.j("resizeAdornmentTemplate", b, a)) }); z.defineProperty(D, { wF: "resizeObjectName" }, function() { return this.rs }, function(a) { var b = this.rs; b !== a && (u && z.g(a, "string", D, "resizeObjectName"), this.rs = a, this.Io = null, this.j("resizeObjectName", b, a)) }); z.w(D, { vF: "resizeObject" }, function() { if (null === this.Io) { var a = this.wF; null !== a && "" !== a ? (a = this.oe(a), this.Io = null !== a ? a : this) : this.Io = this } return this.Io }); z.defineProperty(D, { ZI: "resizeCellSize" }, function() { return this.qs }, function(a) { var b = this.qs; b.N(a) || (u && z.l(a, Ea, D, "resizeCellSize"), this.qs = a = a.V(), this.j("resizeCellSize", b, a)) }); z.defineProperty(D, { aJ: "rotateAdornmentTemplate" }, function() { return this.ss }, function(a) { var b = this.ss; b !== a && (u && z.l(a, da, D, "rotateAdornmentTemplate"), this.ss = a, this.j("rotateAdornmentTemplate", b, a)) }); z.defineProperty(D, { bJ: "rotateObjectName" }, function() { return this.ts }, function(a) { var b = this.ts; b !== a && (u && z.g(a, "string", D, "rotateObjectName"), this.ts = a, this.Jo = null, this.j("rotateObjectName", b, a)) }); z.w(D, { zF: "rotateObject" }, function() { if (null === this.Jo) { var a = this.bJ; null !== a && "" !== a ? (a = this.oe(a), this.Jo = null !== a ? a : this) : this.Jo = this } return this.Jo }); z.defineProperty(D, { text: "text" }, function() { return this.we }, function(a) { var b = this.we; b !== a && (u && z.g(a, "string", D, "text"), this.we = a, this.j("text", b, a)) }); z.defineProperty(D, { Va: "containingGroup" }, function() { return this.Ok }, function(a) { if (this.be()) { var b = this.Ok; if (b !== a) { u && null !== a && z.l(a, F, D, "containingGroup"); null === a || this !== a && !a.li(this) || (this === a && z.k("Cannot make a Group a member of itself: " + this.toString()), z.k("Cannot make a Group indirectly contain itself: " + this.toString() + " already contains " + a.toString())); this.I(Dl); var c = this.h; null !== b ? qp(b, this) : this instanceof F && null !== c && c.ol.remove(this); this.Ok = a; null !== a ? rp(a, this) : this instanceof F && null !== c && c.ol.add(this); this.I(vl); if (null !== c) { var d = this.data, e = c.ha; null !== d && e instanceof V && e.Lx(d, e.pb(null !== a ? a.data : null)) } d = this.WD; null !== d && (e = !0, null !== c && (e = c.$a, c.$a = !0), d(this, b, a), null !== c && (c.$a = e)); if (this instanceof F) for (c = new K(D), eh(c, this, !0, 0, !0), c = c.i; c.next();) if (d = c.value, d instanceof E) for (d = d.ee; d.next();) Wl(d.value); if (this instanceof E) for (d = this.ee; d.next();) Wl(d.value); this.j("containingGroup", b, a); null !== a && (b = a.layer, null !== b && mk(b, -1, a)) } } else z.k("cannot set the Part.containingGroup of a Link or Adornment") }); f = D.prototype; f.Nl = function() { var a = this.Va; null !== a && (a.S(), null !== a.Lb && a.Lb.S(), a.mf()) }; f.ta = function() { var a = this.h; null !== a && !nl(this) && !ol(this) && this.isVisible() && this.Xb.F() && a.ta(lk(this, this.Xb)) }; f.Kt = function(a) { a || (a = this.Ok, null !== a && rp(a, this)) }; f.Lt = function(a) { a || (a = this.Ok, null !== a && qp(a, this)) }; f.cn = function() { var a = this.data; if (null !== a) { var b = this.h; null !== b && (b = b.ha, null !== b && b.Ex(a)) } }; z.defineProperty(D, { WD: "containingGroupChanged" }, function() { return this.Aq }, function(a) { var b = this.Aq; b !== a && (null !== a && z.g(a, "function", D, "containingGroupChanged"), this.Aq = a, this.j("containingGroupChanged", b, a)) }); D.prototype.findSubGraphLevel = function() { return sp(this, this) }; function sp(a, b) { var c = b.Va; return null !== c ? 1 + sp(a, c) : b instanceof E && (c = b.Nd, null !== c) ? sp(a, c) : 0 } D.prototype.findTopLevelPart = function() { return tp(this, this) }; function tp(a, b) { var c = b.Va; return null !== c ? tp(a, c) : b instanceof E && (c = b.Nd, null !== c) ? tp(a, c) : b } z.w(D, { Bp: "isTopLevel" }, function() { return null !== this.Va || this instanceof E && this.Df ? !1 : !0 }); D.prototype.isMemberOf = D.prototype.li = function(a) { return a instanceof F ? up(this, this, a) : !1 }; function up(a, b, c) { if (b === c || null === c) return !1; var d = b.Va; return null === d || d !== c && !up(a, d, c) ? b instanceof E && (b = b.Nd, null !== b) ? up(a, b, c) : !1 : !0 } D.prototype.findCommonContainingGroup = D.prototype.DH = function(a) { if (null === a) return null; u && z.l(a, D, D, "findCommonContainingGroup:other"); if (this === a) return this.Va; for (var b = this; null !== b;) b instanceof F && pp(b, !0), b = b.Va; for (var c = null, b = a; null !== b;) { if (0 !== (b.T & 1048576)) { c = b; break } b = b.Va } for (b = this; null !== b;) b instanceof F && pp(b, !1), b = b.Va; return c }; z.defineProperty(D, { rI: "layoutConditions" }, function() { return this.yr }, function(a) { var b = this.yr; b !== a && (u && z.g(a, "number", D, "layoutConditions"), this.yr = a, this.j("layoutConditions", b, a)) }); D.prototype.canLayout = function() { if (!this.jA || !this.isVisible()) return !1; var a = this.layer; return null !== a && a.Nc || this instanceof E && this.Df ? !1 : !0 }; D.prototype.invalidateLayout = D.prototype.I = function(a) { void 0 === a && (a = 16777215); var b; this.jA && 0 !== (a & this.rI) ? (b = this.layer, null !== b && b.Nc || this instanceof E && this.Df ? b = !1 : (b = this.h, b = null !== b && b.pa.qb ? !1 : !0)) : b = !1; if (b) if (b = this.Ok, null !== b) { var c = b.Sb; null !== c ? c.I() : b.I(a) } else a = this.h, null !== a && (c = a.Sb, null !== c && c.I()) }; function Al(a) { if (!a.isVisible()) return !1; a = a.layer; return null !== a && a.Nc ? !1 : !0 } z.defineProperty(D, { iE: "dragComputation" }, function() { return this.Tq }, function(a) { var b = this.Tq; b !== a && (null !== a && z.g(a, "function", D, "dragComputation"), this.Tq = a, this.j("dragComputation", b, a)) }); z.defineProperty(D, { lJ: "shadowOffset" }, function() { return this.Jm }, function(a) { var b = this.Jm; b.N(a) || (u && z.l(a, N, D, "shadowOffset"), this.Jm = a = a.V(), this.ta(), this.j("shadowOffset", b, a)) }); z.defineProperty(D, { shadowColor: "shadowColor" }, function() { return this.Im }, function(a) { var b = this.Im; b !== a && (u && z.g(a, "string", D, "shadowColor"), this.Im = a, this.ta(), this.j("shadowColor", b, a)) }); z.defineProperty(D, { shadowBlur: "shadowBlur" }, function() { return this.zg }, function(a) { var b = this.zg; b !== a && (u && z.g(a, "number", D, "shadowBlur"), this.zg = a, this.ta(), this.j("shadowBlur", b, a)) }); function da(a) { 0 === arguments.length ? D.call(this, ej) : D.call(this, a); this.T &= -257; this.cl = "Adornment"; this.Lb = this.Zg = this.Ib = null } z.Qa(da, D); z.ia("Adornment", da); da.prototype.toString = function() { var a = this.Wf; return "Adornment(" + this.nc + ")" + (null !== a ? a.toString() : "") }; da.prototype.updateRelationshipsFromData = function() {}; da.prototype.on = function(a) { var b = this.fc.ca, c = this.fc; if (b instanceof G && c instanceof X) { var d = b.path, c = d.ab; b.on(a); c = d.ab; a = this.va.o; b = a.length; for (d = 0; d < b; d++) { var e = a[d]; e.Ff && e instanceof X && (e.ab = c) } } }; z.w(da, { placeholder: "placeholder" }, function() { return this.Lb }); z.defineProperty(da, { fc: "adornedObject" }, function() { return this.Ib }, function(a) { u && null !== a && z.l(a, O, D, "adornedObject:value"); var b = this.Wf, c = null; null !== a && (c = a.ca); null === b || null !== a && b === c || b.rj(this.nc); this.Ib = a; null !== c && c.ql(this.nc, this) }); z.w(da, { Wf: "adornedPart" }, function() { var a = this.Ib; return null !== a ? a.ca : null }); da.prototype.Ql = function() { var a = this.Ib; if (null === a) return !0; a = a.ca; return null === a || !nl(a) }; da.prototype.be = function() { return !1 }; z.w(da, { Va: "containingGroup" }, function() { return null }); da.prototype.tn = function(a, b, c, d, e, g, h) { if (a === Uf && "elements" === b) if (e instanceof Zi) { var k = e; null === this.Lb ? this.Lb = k : this.Lb !== k && z.k("Cannot insert a second Placeholder into the visual tree of an Adornment.") } else e instanceof I && (k = e.yt(function(a) { return a instanceof Zi }), k instanceof Zi && (null === this.Lb ? this.Lb = k : this.Lb !== k && z.k("Cannot insert a second Placeholder into the visual tree of an Adornment."))); else a === Vf && "elements" === b && null !== this.Lb && (d === this.Lb ? this.Lb = null : d instanceof I && this.Lb.Pl(d) && (this.Lb = null)); D.prototype.tn.call(this, a, b, c, d, e, g, h) }; da.prototype.updateAdornments = function() {}; da.prototype.cn = function() {}; function E(a) { 0 === arguments.length ? D.call(this, ej) : D.call(this, a); this.mc = new J(G); this.wo = this.el = this.Ar = this.zr = null; this.rr = !0; this.bt = !1; this.Ys = null; this.sq = this.sr = !0; this.tq = Ld; this.Dd = this.Hh = null; this.hs = vp; this.hk = !1 } z.Qa(E, D); z.ia("Node", E); E.prototype.cloneProtected = function(a) { D.prototype.cloneProtected.call(this, a); a.zr = this.zr; a.Ar = this.Ar; a.el = this.el; a.rr = this.rr; a.bt = this.bt; a.Ys = this.Ys; a.sr = this.sr; a.sq = this.sq; a.tq = this.tq.V(); a.hs = this.hs }; E.prototype.ji = function(a) { D.prototype.ji.call(this, a); a.mf(); a.Hh = this.Hh; a.Dd = null }; var wp; E.DirectionDefault = wp = z.s(E, "DirectionDefault", 0); E.DirectionAbsolute = z.s(E, "DirectionAbsolute", 1); var xp; E.DirectionRotatedNode = xp = z.s(E, "DirectionRotatedNode", 2); var Gm; E.DirectionRotatedNodeOrthogonal = Gm = z.s(E, "DirectionRotatedNodeOrthogonal", 3); E.SpreadingNone = z.s(E, "SpreadingNone", 10); var vp; E.SpreadingEvenly = vp = z.s(E, "SpreadingEvenly", 11); var yp; E.SpreadingPacked = yp = z.s(E, "SpreadingPacked", 12); function zp(a, b) { null !== b && (null === a.Hh && (a.Hh = new K(wk)), a.Hh.add(b)) } function Ap(a, b, c, d) { if (null === b || null === a.Hh) return null; for (var e = a.Hh.i; e.next();) { var g = e.value; if (g.Op === a && g.du === b && g.yx === c && g.zx === d || g.Op === b && g.du === a && g.yx === d && g.zx === c) return g } return null } E.prototype.invalidateLinkBundle = function(a, b, c) { if (void 0 === b || null === b) b = ""; if (void 0 === c || null === c) c = ""; a = Ap(this, a, b, c); null !== a && a.zp() }; E.prototype.tn = function(a, b, c, d, e, g, h) { a === Uf && "elements" === b ? this.Dd = null : a === Vf && "elements" === b && (null === this.h ? this.Dd = null : d instanceof O && eo(this, d, function(a, b) { dn(a, b, !0) })); D.prototype.tn.call(this, a, b, c, d, e, g, h) }; E.prototype.invalidateConnectedLinks = E.prototype.mf = function(a) { void 0 === a && (a = null); for (var b = this.ee; b.next();) { var c = b.value; null !== a && a.contains(c) || (Bp(this, c.md), Bp(this, c.Qd), c.qc()) } }; function Bp(a, b) { if (null !== b) { var c = b.gs; null !== c && c.zp(); c = a.Va; null === c || c.re || Bp(c, c.Gl("")) } } E.prototype.Ql = function() { return !0 }; z.defineProperty(E, { TI: "portSpreading" }, function() { return this.hs }, function(a) { var b = this.hs; b !== a && (u && z.Ba(a, E, E, "portSpreading"), this.hs = a, this.j("portSpreading", b, a), a = this.h, null !== a && a.pa.qb || this.mf()) }); z.defineProperty(E, { ND: "avoidable" }, function() { return this.sq }, function(a) { var b = this.sq; if (b !== a) { u && z.g(a, "boolean", E, "avoidable"); this.sq = a; var c = this.h; null !== c && nm(c, this); this.j("avoidable", b, a) } }); z.defineProperty(E, { WG: "avoidableMargin" }, function() { return this.tq }, function(a) { "number" === typeof a ? a = new Db(a) : z.l(a, Db, E, "avoidableMargin"); var b = this.tq; if (!b.N(a)) { this.tq = a = a.V(); var c = this.h; null !== c && nm(c, this); this.j("avoidableMargin", b, a) } }); E.prototype.canAvoid = function() { return this.ND && !this.Df }; E.prototype.getAvoidableRect = function(a) { a.set(this.W); a.Cw(this.WG); return a }; E.prototype.findVisibleNode = function() { for (var a = this; null !== a && !a.isVisible();) a = a.Va; return a }; E.prototype.isVisible = function() { if (!D.prototype.isVisible.call(this)) return !1; var a = !0, b = !0, c = this.h; if (null !== c) { a = c.Ua; if (a.nf && (a = a.ym.na(this), null !== a && a.Cx)) return !0; a = c.ce; b = c.bB === sk } if (b) { if (c = this.Hl(), null !== c && !c.vd) return !1 } else if (c = a ? this.FH() : this.GH(), 0 < c.count && c.all(function(a) { return !a.vd })) return !1; c = this.Nd; return null !== c ? c.isVisible() : !0 }; E.prototype.wd = function(a) { D.prototype.wd.call(this, a); for (var b = this.ee; b.next();) b.value.wd(a) }; z.w(E, { ee: "linksConnected" }, function() { return this.mc.i }); E.prototype.findLinksConnected = E.prototype.qE = function(a) { void 0 === a && (a = null); if (null === a) return this.mc.i; u && z.g(a, "string", E, "findLinksConnected:pid"); var b = new Ta(this.mc), c = this; b.rn = function(b) { return b.Y === c && b.$f === a || b.da === c && b.Ug === a }; return b }; E.prototype.findLinksOutOf = E.prototype.Yw = function(a) { void 0 === a && (a = null); u && null !== a && z.g(a, "string", E, "findLinksOutOf:pid"); var b = new Ta(this.mc), c = this; b.rn = function(b) { return b.Y !== c ? !1 : null === a ? !0 : b.$f === a }; return b }; E.prototype.findLinksInto = E.prototype.Hg = function(a) { void 0 === a && (a = null); u && null !== a && z.g(a, "string", E, "findLinksInto:pid"); var b = new Ta(this.mc), c = this; b.rn = function(b) { return b.da !== c ? !1 : null === a ? !0 : b.Ug === a }; return b }; E.prototype.findNodesConnected = E.prototype.rE = function(a) { void 0 === a && (a = null); u && null !== a && z.g(a, "string", E, "findNodesConnected:pid"); for (var b = null, c = null, d = this.mc.i; d.next();) { var e = d.value; if (e.Y === this) { if (null === a || e.$f === a) e = e.da, null !== b ? b.add(e) : null !== c && c !== e ? (b = new K(E), b.add(c), b.add(e)) : c = e } else e.da !== this || null !== a && e.Ug !== a || (e = e.Y, null !== b ? b.add(e) : null !== c && c !== e ? (b = new K(E), b.add(c), b.add(e)) : c = e) } return null !== b ? b.i : null !== c ? new Ra(c) : Pa }; E.prototype.findNodesOutOf = E.prototype.GH = function(a) { void 0 === a && (a = null); u && null !== a && z.g(a, "string", E, "findNodesOutOf:pid"); for (var b = null, c = null, d = this.mc.i; d.next();) { var e = d.value; e.Y !== this || null !== a && e.$f !== a || (e = e.da, null !== b ? b.add(e) : null !== c && c !== e ? (b = new K(E), b.add(c), b.add(e)) : c = e) } return null !== b ? b.i : null !== c ? new Ra(c) : Pa }; E.prototype.findNodesInto = E.prototype.FH = function(a) { void 0 === a && (a = null); u && null !== a && z.g(a, "string", E, "findNodesInto:pid"); for (var b = null, c = null, d = this.mc.i; d.next();) { var e = d.value; e.da !== this || null !== a && e.Ug !== a || (e = e.Y, null !== b ? b.add(e) : null !== c && c !== e ? (b = new K(E), b.add(c), b.add(e)) : c = e) } return null !== b ? b.i : null !== c ? new Ra(c) : Pa }; E.prototype.findLinksBetween = function(a, b, c) { void 0 === b && (b = null); void 0 === c && (c = null); u && (z.l(a, E, E, "findLinksBetween:othernode"), null !== b && z.g(b, "string", E, "findLinksBetween:pid"), null !== c && z.g(c, "string", E, "findLinksBetween:otherpid")); var d = new Ta(this.mc), e = this; d.rn = function(d) { return (d.Y !== e || d.da !== a || null !== b && d.$f !== b || null !== c && d.Ug !== c) && (d.Y !== a || d.da !== e || null !== c && d.$f !== c || null !== b && d.Ug !== b) ? !1 : !0 }; return d }; E.prototype.findLinksTo = function(a, b, c) { void 0 === b && (b = null); void 0 === c && (c = null); u && (z.l(a, E, E, "findLinksTo:othernode"), null !== b && z.g(b, "string", E, "findLinksTo:pid"), null !== c && z.g(c, "string", E, "findLinksTo:otherpid")); var d = new Ta(this.mc), e = this; d.rn = function(d) { return d.Y !== e || d.da !== a || null !== b && d.$f !== b || null !== c && d.Ug === c ? !1 : !0 }; return d }; z.defineProperty(E, { tI: "linkConnected" }, function() { return this.zr }, function(a) { var b = this.zr; b !== a && (null !== a && z.g(a, "function", E, "linkConnected"), this.zr = a, this.j("linkConnected", b, a)) }); z.defineProperty(E, { uI: "linkDisconnected" }, function() { return this.Ar }, function(a) { var b = this.Ar; b !== a && (null !== a && z.g(a, "function", E, "linkDisconnected"), this.Ar = a, this.j("linkDisconnected", b, a)) }); z.defineProperty(E, { px: "linkValidation" }, function() { return this.el }, function(a) { var b = this.el; b !== a && (null !== a && z.g(a, "function", E, "linkValidation"), this.el = a, this.j("linkValidation", b, a)) }); function Cp(a, b, c) { Bp(a, c); if (!a.mc.contains(b)) { a.mc.add(b); var d = a.tI; if (null !== d) { var e = !0, g = a.h; null !== g && (e = g.$a, g.$a = !0); d(a, b, c); null !== g && (g.$a = e) } b.Oc && (c = b.Y, b = b.da, null !== c && null !== b && c !== b && (d = !0, g = a.h, null !== g && (d = g.ce), a = d ? b : c, e = d ? c : b, a.hk || (a.hk = e), !e.mj || null !== g && g.pa.qb || (d ? c === e && (e.mj = !1) : b === e && (e.mj = !1)))) } } function Dp(a, b, c) { Bp(a, c); if (a.mc.remove(b)) { var d = a.uI, e = a.h; if (null !== d) { var g = !0; null !== e && (g = e.$a, e.$a = !0); d(a, b, c); null !== e && (e.$a = g) } b.Oc && (c = !0, null !== e && (c = e.ce), a = c ? b.da : b.Y, b = c ? b.Y : b.da, null !== a && (a.hk = !1), null === b || b.mj || (0 === b.mc.count ? (b.hk = null, null !== e && e.pa.qb || (b.mj = !0)) : hm(b))) } } function hm(a) { a.hk = !1; if (0 !== a.mc.count) { var b = !0, c = a.h; if (null === c || !c.pa.qb) { null !== c && (b = c.ce); for (c = a.mc.i; c.next();) { var d = c.value; if (d.Oc) if (b) { if (d.Y === a) { a.mj = !1; return } } else if (d.da === a) { a.mj = !1; return } } a.mj = !0 } } } E.prototype.updateRelationshipsFromData = function() { D.prototype.updateRelationshipsFromData.call(this); var a = this.data; if (null !== a) { var b = this.h; if (null !== b) { var c = b.ha; if (c instanceof ng) { var d = c.gn(a), b = b.hf(d), e = this.Hl(); b !== e && (b = null !== e ? c.pb(e.data) : void 0, e = c.Qp, "function" === typeof e ? e(a, b) : a[e] = b, c.Eh(a, d)) } } } }; E.prototype.Kt = function(a) { D.prototype.Kt.call(this, a); a || (hm(this), a = this.wo, null !== a && Ep(a, this)) }; E.prototype.Lt = function(a) { D.prototype.Lt.call(this, a); a || (a = this.wo, null !== a && null !== a.Ke && (a.Ke.remove(this), a.S())) }; E.prototype.cn = function() { if (0 < this.mc.count) { var a = this.h; if (null !== a) for (var b = a.wb.hE, c = this.mc.copy().i; c.next();) { var d = c.value; b ? a.remove(d) : (d.Y === this && (d.Y = null), d.da === this && (d.da = null)) } } this.Nd = null; D.prototype.cn.call(this) }; z.w(E, { Df: "isLinkLabel" }, function() { return null !== this.wo }); z.defineProperty(E, { Nd: "labeledLink" }, function() { return this.wo }, function(a) { var b = this.wo; if (b !== a) { u && null !== a && z.l(a, G, E, "labeledLink"); var c = this.h, d = this.data; if (null !== b && (null !== b.Ke && (b.Ke.remove(this), b.S()), null !== c && null !== d && !c.pa.qb)) { var e = b.data, g = c.ha; if (null !== e && g instanceof V) { var h = g.pb(d); void 0 !== h && g.nF(e, h) } } this.wo = a; null !== a && (Ep(a, this), null === c || null === d || c.pa.qb || (e = a.data, g = c.ha, null !== e && g instanceof V && (h = g.pb(d), void 0 !== h && g.zz(e, h)))); Ym(this); this.j("labeledLink", b, a) } }); E.prototype.findPort = E.prototype.Gl = function(a) { u && z.g(a, "string", E, "findPort:pid"); if (null === this.Dd) { if ("" === a && !1 === this.Ph) return this; en(this) } var b = this.Dd.na(a); return null !== b || "" !== a && (b = this.Dd.na(""), null !== b) ? b : this }; z.w(E, { port: "port" }, function() { return this.Gl("") }); z.w(E, { ports: "ports" }, function() { null === this.Dd && en(this); return this.Dd.VE }); function en(a) { null === a.Dd ? a.Dd = new na("string", O) : a.Dd.clear(); eo(a, a, function(a, c) { var d = c.yd; null !== d && a.Dd.add(d, c) }); 0 === a.Dd.count && a.Dd.add("", a) } function dn(a, b, c) { var d = b.yd; if (null !== d && (null !== a.Dd && a.Dd.remove(d), b = a.h, null !== b && c)) { c = null; for (d = a.qE(d); d.next();) a = d.value, null === c && (c = z.rb()), c.push(a); if (null !== c) { for (d = 0; d < c.length; d++) a = c[d], b.remove(a); z.xa(c) } } } E.prototype.isInTreeOf = function(a) { if (null === a || a === this) return !1; var b = !0, c = this.h; null !== c && (b = c.ce); c = this; if (b) for (; c !== a;) { for (var b = null, d = c.mc.i; d.next();) { var e = d.value; if (e.Oc && (b = e.Y, b !== c && b !== this)) break } if (b === this || null === b || b === c) return !1; c = b } else for (; c !== a;) { b = null; for (d = c.mc.i; d.next() && (e = d.value, !e.Oc || (b = e.da, b === c || b === this));); if (b === this || null === b || b === c) return !1; c = b } return !0 }; E.prototype.findTreeRoot = function() { var a = !0, b = this.h; null !== b && (a = b.ce); b = this; if (a) for (;;) { for (var a = null, c = b.mc.i; c.next();) { var d = c.value; if (d.Oc && (a = d.Y, a !== b && a !== this)) break } if (a === this) return this; if (null === a || a === b) return b; b = a } else for (;;) { a = null; for (c = b.mc.i; c.next() && (d = c.value, !d.Oc || (a = d.da, a === b || a === this));); if (a === this) return this; if (null === a || a === b) return b; b = a } }; E.prototype.findCommonTreeParent = function(a) { if (null === a) return null; u && z.l(a, E, E, "findCommonTreeParent:other"); if (this === a) return this; for (var b = this; null !== b;) pp(b, !0), b = b.Hl(); for (var c = null, b = a; null !== b;) { if (0 !== (b.T & 1048576)) { c = b; break } b = b.Hl() } for (b = this; null !== b;) pp(b, !1), b = b.Hl(); return c }; E.prototype.findTreeParentLink = E.prototype.pp = function() { var a = !0, b = this.h; null !== b && (a = b.ce); b = this.mc.i; if (a) for (; b.next();) { if (a = b.value, a.Oc && a.Y !== this) return a } else for (; b.next();) if (a = b.value, a.Oc && a.da !== this) return a; return null }; E.prototype.findTreeParentNode = E.prototype.Hl = function() { var a = this.hk; if (null === a) return null; if (a instanceof E) return a; var b = !0, a = this.h; null !== a && (b = a.ce); a = this.mc.i; if (b) for (; a.next();) { if (b = a.value, b.Oc && (b = b.Y, b !== this)) return this.hk = b } else for (; a.next();) if (b = a.value, b.Oc && (b = b.da, b !== this)) return this.hk = b; return this.hk = null }; E.prototype.findTreeParentChain = function() { function a(b, d) { if (null !== b) { d.add(b); var e = b.pp(); null !== e && (d.add(e), a(b.Hl(), d)) } } var b = new K(D); a(this, b); return b }; E.prototype.findTreeLevel = function() { return Fp(this, this) }; function Fp(a, b) { var c = b.Hl(); return null === c ? 0 : 1 + Fp(a, c) } E.prototype.findTreeChildrenLinks = E.prototype.$w = function() { var a = !0, b = this.h; null !== b && (a = b.ce); if (a) { var a = new Ta(this.mc), c = this; a.rn = function(a) { return a.Oc && a.Y === c ? !0 : !1 } } else a = new Ta(this.mc), c = this, a.rn = function(a) { return a.Oc && a.da === c ? !0 : !1 }; return a }; E.prototype.findTreeChildrenNodes = E.prototype.tE = function() { var a = !0, b = this.h; null !== b && (a = b.ce); var c = b = null, d = this.mc.i; if (a) for (; d.next();) a = d.value, a.Oc && a.Y === this && (a = a.da, null !== b ? b.add(a) : null !== c && c !== a ? (b = new J(E), b.add(c), b.add(a)) : c = a); else for (; d.next();) a = d.value, a.Oc && a.da === this && (a = a.Y, null !== b ? b.add(a) : null !== c && c !== a ? (b = new J(E), b.add(c), b.add(a)) : c = a); return null !== b ? b.i : null !== c ? new Ra(c) : Pa }; E.prototype.findTreeParts = function(a) { void 0 === a && (a = Infinity); z.g(a, "number", E, "collapseTree:level"); var b = new K(D); eh(b, this, !1, a, !0); return b }; E.prototype.collapseTree = E.prototype.collapseTree = function(a) { void 0 === a && (a = 1); z.p(a, E, "collapseTree:level"); 1 > a && (a = 1); var b = this.h; if (null !== b && !b.vh) { b.vh = !0; var c = new K(E); c.add(this); Gp(this, c, b.ce, a, b.Ua, this, b.bB === sk); b.vh = !1 } }; function Gp(a, b, c, d, e, g, h) { if (1 < d) for (var k = c ? a.Yw() : a.Hg(); k.next();) { var l = k.value; l.Oc && (l = l.aA(a), null === l || l === a || b.contains(l) || (b.add(l), Gp(l, b, c, d - 1, e, g, h))) } else Hp(a, b, c, e, g, h) } function Hp(a, b, c, d, e, g) { for (var h = e === a ? !0 : a.vd, k = c ? a.Yw() : a.Hg(); k.next();) { var l = k.value; l.Oc && (l = l.aA(a), null === l || l === a || b.contains(l) || (b.add(l), h && (g && ek(d, l, e), l.Nl(), l.wd(!1)), l.vd && (l.Cu = l.vd, Hp(l, b, c, d, e, g)))) } a.vd = !1 } E.prototype.expandTree = E.prototype.expandTree = function(a) { void 0 === a && (a = 2); z.p(a, E, "expandTree:level"); 2 > a && (a = 2); var b = this.h; if (null !== b && !b.vh) { b.vh = !0; var c = new K(E); c.add(this); Ip(this, c, b.ce, a, b.Ua, this, b.bB === sk); b.vh = !1 } }; function Ip(a, b, c, d, e, g, h) { for (var k = g === a ? !1 : a.vd, l = c ? a.Yw() : a.Hg(); l.next();) { var m = l.value; m.Oc && (k || m.Cg || m.qc(), m = m.aA(a), null !== m && m !== a && !b.contains(m) && (b.add(m), k || (m.wd(!0), m.Nl(), h && dk(e, m, g)), 2 < d || m.Cu)) && (m.Cu = !1, Ip(m, b, c, d - 1, e, g, h)) } a.vd = !0 } z.defineProperty(E, { vd: "isTreeExpanded" }, function() { return this.rr }, function(a) { var b = this.rr; if (b !== a) { u && z.g(a, "boolean", E, "isTreeExpanded"); this.rr = a; var c = this.h; this.j("isTreeExpanded", b, a); b = this.yJ; if (null !== b) { var d = !0; null !== c && (d = c.$a, c.$a = !0); b(this); null !== c && (c.$a = d) } null !== c && c.pa.qb ? this.wd(a) : a ? this.expandTree() : this.collapseTree() } }); z.defineProperty(E, { Cu: "wasTreeExpanded" }, function() { return this.bt }, function(a) { var b = this.bt; b !== a && (u && z.g(a, "boolean", E, "wasTreeExpanded"), this.bt = a, this.j("wasTreeExpanded", b, a)) }); z.defineProperty(E, { yJ: "treeExpandedChanged" }, function() { return this.Ys }, function(a) { var b = this.Ys; b !== a && (null !== a && z.g(a, "function", E, "treeExpandedChanged"), this.Ys = a, this.j("treeExpandedChanged", b, a)) }); z.defineProperty(E, { mj: "isTreeLeaf" }, function() { return this.sr }, function(a) { var b = this.sr; b !== a && (u && z.g(a, "boolean", E, "isTreeLeaf"), this.sr = a, this.j("isTreeLeaf", b, a)) }); function G() { D.call(this, Ki); this.pg = null; this.Oh = ""; this.Bg = this.ar = null; this.ei = ""; this.Xs = null; this.os = this.ns = this.ms = !1; this.tr = !0; this.mq = Ni; this.Fq = 0; this.Iq = Ni; this.Jq = NaN; this.Dm = nn; this.Ms = .5; this.Ke = null; this.Yc = (new J(N)).freeze(); this.Ko = this.Me = null; this.Cg = !1; this.cw = null; this.mz = !1; this.Zg = this.Zn = this.Vn = this.ri = this.Di = this.ab = null; this.pz = new N; this.jD = this.hD = null; this.sy = !1; this.la = null } z.Qa(G, D); z.ia("Link", G); G.prototype.cloneProtected = function(a) { D.prototype.cloneProtected.call(this, a); a.Oh = this.Oh; a.ar = this.ar; a.ei = this.ei; a.Xs = this.Xs; a.ms = this.ms; a.ns = this.ns; a.os = this.os; a.tr = this.tr; a.mq = this.mq; a.Fq = this.Fq; a.Iq = this.Iq; a.Jq = this.Jq; a.Dm = this.Dm; a.Ms = this.Ms; null !== this.la && (a.la = this.la.copy()) }; G.prototype.ji = function(a) { D.prototype.ji.call(this, a); this.Oh = a.Oh; this.ei = a.ei; a.Me = null; a.qc(); a.ri = this.ri }; var nn; G.Normal = nn = z.s(G, "Normal", 1); G.Orthogonal = z.s(G, "Orthogonal", 2); G.AvoidsNodes = z.s(G, "AvoidsNodes", 6); var Jp; G.AvoidsNodesStraight = Jp = z.s(G, "AvoidsNodesStraight", 7); var Ni; G.None = Ni = z.s(G, "None", 0); var Ui; G.Bezier = Ui = z.s(G, "Bezier", 9); var Mi; G.JumpGap = Mi = z.s(G, "JumpGap", 10); var Li; G.JumpOver = Li = z.s(G, "JumpOver", 11); var kn; G.End = kn = z.s(G, "End", 17); var ln; G.Scale = ln = z.s(G, "Scale", 18); var mn; G.Stretch = mn = z.s(G, "Stretch", 19); var yo; G.OrientAlong = yo = z.s(G, "OrientAlong", 21); var Kp; G.OrientPlus90 = Kp = z.s(G, "OrientPlus90", 22); var Lp; G.OrientMinus90 = Lp = z.s(G, "OrientMinus90", 23); var Mp; G.OrientOpposite = Mp = z.s(G, "OrientOpposite", 24); var Np; G.OrientUpright = Np = z.s(G, "OrientUpright", 25); var Op; G.OrientPlus90Upright = Op = z.s(G, "OrientPlus90Upright", 26); var Pp; G.OrientMinus90Upright = Pp = z.s(G, "OrientMinus90Upright", 27); var Qp; G.OrientUpright45 = Qp = z.s(G, "OrientUpright45", 28); G.prototype.Ue = function() { null === this.la && (this.la = new Fm) }; G.prototype.Ql = function() { var a = this.Y; if (null !== a) { var b = a.findVisibleNode(); null !== b && (a = b); if (nl(a) || ol(a)) return !1 } a = this.da; return null !== a && (b = a.findVisibleNode(), null !== b && (a = b), nl(a) || ol(a)) ? !1 : !0 }; G.prototype.RA = function() { return !1 }; G.prototype.be = function() { return !1 }; G.prototype.computeAngle = function(a, b, c) { a = 0; switch (b) { default: case Ni: a = 0; break; case yo: a = c; break; case Kp: a = c + 90; break; case Lp: a = c - 90; break; case Mp: a = c + 180; break; case Np: a = df(c);90 < a && 270 > a && (a -= 180); break; case Op: a = df(c + 90);90 < a && 270 > a && (a -= 180); break; case Pp: a = df(c - 90);90 < a && 270 > a && (a -= 180); break; case Qp: a = df(c); if (45 < a && 135 > a || 225 < a && 315 > a) return 0;90 < a && 270 > a && (a -= 180) } return df(a) }; z.defineProperty(G, { Y: "fromNode" }, function() { return this.pg }, function(a) { var b = this.pg; if (b !== a) { u && null !== a && z.l(a, E, G, "fromNode"); var c = this.md; null !== b && (this.Bg !== b && Dp(b, this, c), Rp(this), this.I(Dl)); this.pg = a; null !== a && this.wd(a.isVisible()); this.Di = null; this.qc(); var d = this.h; if (null !== d) { var e = this.data, g = d.ha; if (null !== e) if (g instanceof V) { var h = null !== a ? a.data : null; g.Kx(e, g.pb(h)) } else g instanceof ng && (h = null !== a ? a.data : null, d.ce ? g.Eh(e, g.pb(h)) : (null !== b && g.Eh(b.data, void 0), g.Eh(h, g.pb(null !== this.Bg ? this.Bg.data : null)))) } e = this.md; g = this.wE; null !== g && (h = !0, null !== d && (h = d.$a, d.$a = !0), g(this, c, e), null !== d && (d.$a = h)); null !== a && (this.Bg !== a && Cp(a, this, e), Sp(this), this.I(vl)); this.j("fromNode", b, a); Wl(this) } }); z.defineProperty(G, { $f: "fromPortId" }, function() { return this.Oh }, function(a) { var b = this.Oh; if (b !== a) { u && z.g(a, "string", G, "fromPortId"); var c = this.md; null !== c && Bp(this.Y, c); Rp(this); this.Oh = a; var d = this.md; null !== d && Bp(this.Y, d); var e = this.h; if (null !== e) { var g = this.data, h = e.ha; null !== g && h instanceof V && h.PA(g, a) } c !== d && (this.Di = null, this.qc(), g = this.wE, null !== g && (h = !0, null !== e && (h = e.$a, e.$a = !0), g(this, c, d), null !== e && (e.$a = h))); Sp(this); this.j("fromPortId", b, a) } }); z.w(G, { md: "fromPort" }, function() { var a = this.pg; return null === a ? null : a.Gl(this.Oh) }); z.defineProperty(G, { wE: "fromPortChanged" }, function() { return this.ar }, function(a) { var b = this.ar; b !== a && (null !== a && z.g(a, "function", G, "fromPortChanged"), this.ar = a, this.j("fromPortChanged", b, a)) }); z.defineProperty(G, { da: "toNode" }, function() { return this.Bg }, function(a) { var b = this.Bg; if (b !== a) { u && null !== a && z.l(a, E, G, "toNode"); var c = this.Qd; null !== b && (this.pg !== b && Dp(b, this, c), Rp(this), this.I(Dl)); this.Bg = a; null !== a && this.wd(a.isVisible()); this.Di = null; this.qc(); var d = this.h; if (null !== d) { var e = this.data, g = d.ha; if (null !== e) if (g instanceof V) { var h = null !== a ? a.data : null; g.Ox(e, g.pb(h)) } else g instanceof ng && (h = null !== a ? a.data : null, d.ce ? (null !== b && g.Eh(b.data, void 0), g.Eh(h, g.pb(null !== this.pg ? this.pg.data : null))) : g.Eh(e, g.pb(h))) } e = this.Qd; g = this.UF; null !== g && (h = !0, null !== d && (h = d.$a, d.$a = !0), g(this, c, e), null !== d && (d.$a = h)); null !== a && (this.pg !== a && Cp(a, this, e), Sp(this), this.I(vl)); this.j("toNode", b, a); Wl(this) } }); z.defineProperty(G, { Ug: "toPortId" }, function() { return this.ei }, function(a) { var b = this.ei; if (b !== a) { u && z.g(a, "string", G, "toPortId"); var c = this.Qd; null !== c && Bp(this.da, c); Rp(this); this.ei = a; var d = this.Qd; null !== d && Bp(this.da, d); var e = this.h; if (null !== e) { var g = this.data, h = e.ha; null !== g && h instanceof V && h.SA(g, a) } c !== d && (this.Di = null, this.qc(), g = this.UF, null !== g && (h = !0, null !== e && (h = e.$a, e.$a = !0), g(this, c, d), null !== e && (e.$a = h))); Sp(this); this.j("toPortId", b, a) } }); z.w(G, { Qd: "toPort" }, function() { var a = this.Bg; return null === a ? null : a.Gl(this.ei) }); z.defineProperty(G, { UF: "toPortChanged" }, function() { return this.Xs }, function(a) { var b = this.Xs; b !== a && (null !== a && z.g(a, "function", G, "toPortChanged"), this.Xs = a, this.j("toPortChanged", b, a)) }); z.defineProperty(G, { Db: "fromSpot" }, function() { return null !== this.la ? this.la.Gj : Pc }, function(a) { this.Ue(); var b = this.la.Gj; b.N(a) || (u && z.l(a, Q, G, "fromSpot"), a = a.V(), this.la.Gj = a, this.j("fromSpot", b, a), this.qc()) }); z.defineProperty(G, { Il: "fromEndSegmentLength" }, function() { return null !== this.la ? this.la.Ej : NaN }, function(a) { this.Ue(); var b = this.la.Ej; b !== a && (u && z.g(a, "number", G, "fromEndSegmentLength"), 0 > a && z.ka(a, ">= 0", G, "fromEndSegmentLength"), this.la.Ej = a, this.j("fromEndSegmentLength", b, a), this.qc()) }); z.defineProperty(G, { Et: "fromEndSegmentDirection" }, function() { return null !== this.la ? this.la.Dj : wp }, function(a) { this.Ue(); var b = this.la.Dj; b !== a && (u && z.Ba(a, E, G, "fromEndSegmentDirection"), this.la.Dj = a, this.j("fromEndSegmentDirection", b, a), this.qc()) }); z.defineProperty(G, { Ft: "fromShortLength" }, function() { return null !== this.la ? this.la.Fj : NaN }, function(a) { this.Ue(); var b = this.la.Fj; b !== a && (u && z.g(a, "number", G, "fromShortLength"), this.la.Fj = a, this.j("fromShortLength", b, a), this.qc()) }); z.defineProperty(G, { Eb: "toSpot" }, function() { return null !== this.la ? this.la.gk : Pc }, function(a) { this.Ue(); var b = this.la.gk; b.N(a) || (u && z.l(a, Q, G, "toSpot"), a = a.V(), this.la.gk = a, this.j("toSpot", b, a), this.qc()) }); z.defineProperty(G, { Yl: "toEndSegmentLength" }, function() { return null !== this.la ? this.la.ek : NaN }, function(a) { this.Ue(); var b = this.la.ek; b !== a && (u && z.g(a, "number", G, "toEndSegmentLength"), 0 > a && z.ka(a, ">= 0", G, "toEndSegmentLength"), this.la.ek = a, this.j("toEndSegmentLength", b, a), this.qc()) }); z.defineProperty(G, { zu: "toEndSegmentDirection" }, function() { return null !== this.la ? this.la.dk : wp }, function(a) { this.Ue(); var b = this.la.dk; b !== a && (u && z.Ba(a, E, G, "toEndSegmentDirection"), this.la.dk = a, this.j("toEndSegmentDirection", b, a), this.qc()) }); z.defineProperty(G, { Au: "toShortLength" }, function() { return null !== this.la ? this.la.fk : NaN }, function(a) { this.Ue(); var b = this.la.fk; b !== a && (u && z.g(a, "number", G, "toShortLength"), this.la.fk = a, this.j("toShortLength", b, a), this.qc()) }); function Wl(a) { var b = a.Y, c = a.da; null !== b ? null !== c ? Tp(a, b.DH(c)) : Tp(a, null) : Tp(a, null) } function Tp(a, b) { var c = a.Ok; if (c !== b) { null !== c && qp(c, a); a.Ok = b; null !== b && rp(b, a); var d = a.WD; if (null !== d) { var e = !0, g = a.h; null !== g && (e = g.$a, g.$a = !0); d(a, c, b); null !== g && (g.$a = e) }!a.Cg || a.hD !== c && a.jD !== c || a.qc() } } G.prototype.Nl = function() { var a = this.Va; null !== a && this.Y !== a && this.da !== a && a.Ow && D.prototype.Nl.call(this) }; G.prototype.getOtherNode = G.prototype.aA = function(a) { u && z.l(a, E, G, "getOtherNode:node"); var b = this.Y; return a === b ? this.da : b }; G.prototype.getOtherPort = function(a) { u && z.l(a, O, G, "getOtherPort:port"); var b = this.md; return a === b ? this.Qd : b }; z.w(G, { HK: "isLabeledLink" }, function() { return null === this.Ke ? !1 : 0 < this.Ke.count }); z.w(G, { Hf: "labelNodes" }, function() { return null === this.Ke ? Pa : this.Ke.i }); function Ep(a, b) { null === a.Ke && (a.Ke = new K(E)); a.Ke.add(b); a.S() } G.prototype.Kt = function(a) { D.prototype.Kt.call(this, a); Up(this) && Oi(this, this.W); a || (a = this.pg, null !== a && Cp(a, this, this.md), a = this.Bg, null !== a && Cp(a, this, this.Qd), Sp(this)) }; G.prototype.Lt = function(a) { D.prototype.Lt.call(this, a); Up(this) && Oi(this, this.W); a || (a = this.pg, null !== a && Dp(a, this, this.md), a = this.Bg, null !== a && Dp(a, this, this.Qd), Rp(this)) }; G.prototype.cn = function() { this.Cg = !0; if (null !== this.Ke) { var a = this.h; if (null !== a) for (var b = this.Ke.copy().i; b.next();) a.remove(b.value) } b = this.data; null !== b && (a = this.h, null !== a && (a = a.ha, a instanceof V ? a.Dx(b) : a instanceof ng && a.Eh(b, void 0))) }; G.prototype.updateRelationshipsFromData = function() { var a = this.data; if (null !== a) { var b = this.h; if (null !== b) { var c = b.ha; if (c instanceof V) { var d = c.Ll(a), e = b.hf(d), g = this.Y; e !== g && (e = null !== g ? c.pb(g.data) : void 0, g = c.Ep, "function" === typeof g ? g(a, e) : a[g] = e, c.Kx(a, d)); d = c.Ml(a); e = b.hf(d); g = this.da; e !== g && (e = null !== g ? c.pb(g.data) : void 0, g = c.Gp, "function" === typeof g ? g(a, e) : a[g] = e, c.Ox(a, d)); var h = c.qk(a); if (0 < h.length || 0 < this.Hf.count) { if (1 === h.length && 1 === this.Hf.count && (b = h[0], d = this.Hf.first(), c.pb(d.data) === b)) return; var d = (new K).$c(h), k = new K; this.Hf.each(function(a) { null !== a.data && (a = c.pb(a.data), void 0 !== a && k.add(a)) }); b = k.copy(); b.IA(d); d = d.copy(); d.IA(k); if (0 < b.count || 0 < d.count) h.length = 0, k.each(function(a) { h.push(a) }), b.each(function(b) { c.nF(a, b) }), d.each(function(b) { c.zz(a, b) }) } } } } }; G.prototype.move = function(a) { var b = this.position, c = b.x; isNaN(c) && (c = 0); b = b.y; isNaN(b) && (b = 0); c = a.x - c; b = a.y - b; D.prototype.move.call(this, a); this.Rl(c, b); for (a = this.Hf; a.next();) { var d = a.value, e = d.position; d.moveTo(e.x + c, e.y + b) } }; z.defineProperty(G, { WI: "relinkableFrom" }, function() { return this.ms }, function(a) { var b = this.ms; b !== a && (u && z.g(a, "boolean", G, "relinkableFrom"), this.ms = a, this.j("relinkableFrom", b, a), this.ae()) }); z.defineProperty(G, { XI: "relinkableTo" }, function() { return this.ns }, function(a) { var b = this.ns; b !== a && (u && z.g(a, "boolean", G, "relinkableTo"), this.ns = a, this.j("relinkableTo", b, a), this.ae()) }); G.prototype.canRelinkFrom = function() { if (!this.WI) return !1; var a = this.layer; if (null === a) return !0; if (!a.Tm) return !1; a = a.h; return null === a || a.Tm ? !0 : !1 }; G.prototype.canRelinkTo = function() { if (!this.XI) return !1; var a = this.layer; if (null === a) return !0; if (!a.Tm) return !1; a = a.h; return null === a || a.Tm ? !0 : !1 }; z.defineProperty(G, { lu: "resegmentable" }, function() { return this.os }, function(a) { var b = this.os; b !== a && (u && z.g(a, "boolean", G, "resegmentable"), this.os = a, this.j("resegmentable", b, a), this.ae()) }); z.defineProperty(G, { Oc: "isTreeLink" }, function() { return this.tr }, function(a) { var b = this.tr; b !== a && (u && z.g(a, "boolean", G, "isTreeLink"), this.tr = a, this.j("isTreeLink", b, a), null !== this.Y && hm(this.Y), null !== this.da && hm(this.da)) }); z.w(G, { path: "path" }, function() { var a = this.gf(); return a instanceof X ? a : null }); z.w(G, { un: "routeBounds" }, function() { this.Bn(); var a = new w; var b = Infinity, c = Infinity, d = this.sa; if (0 === d) a.n(NaN, NaN, 0, 0); else { if (1 === d) d = this.m(0), b = Math.min(d.x, b), c = Math.min(d.y, c), a.n(d.x, d.y, 0, 0); else if (2 === d) { var e = this.m(0), g = this.m(1), b = Math.min(e.x, g.x), c = Math.min(e.y, g.y); a.n(e.x, e.y, 0, 0); a.vj(g) } else if (this.computeCurve() === Ui && 3 <= d && !this.rc) if (e = this.m(0), b = e.x, c = e.y, a.n(b, c, 0, 0), 3 === d) d = this.m(1), b = Math.min(d.x, b), c = Math.min(d.y, c), g = this.m(2), b = Math.min(g.x, b), c = Math.min(g.y, c), ve(e.x, e.y, d.x, d.y, d.x, d.y, g.x, g.y, .5, a); else for (var h = 3; h < d; h += 3) { var k = this.m(h - 2); h + 3 >= d && (h = d - 1); var l = this.m(h - 1), g = this.m(h); ve(e.x, e.y, k.x, k.y, l.x, l.y, g.x, g.y, .5, a); b = Math.min(g.x, b); c = Math.min(g.y, c); e = g } else for (e = this.m(0), g = this.m(1), b = Math.min(e.x, g.x), c = Math.min(e.y, g.y), a.n(e.x, e.y, 0, 0), a.vj(g), h = 2; h < d; h++) e = this.m(h), b = Math.min(e.x, b), c = Math.min(e.y, c), a.vj(e); this.pz.n(b - a.x, c - a.y) } return this.cw = a }); z.w(G, { bF: "midPoint" }, function() { this.Bn(); return this.computeMidPoint(new N) }); G.prototype.computeMidPoint = function(a) { var b = this.sa; if (0 === b) return a.assign(ee), a; if (1 === b) return a.assign(this.m(0)), a; if (2 === b) { var c = this.m(0), d = this.m(1); a.n((c.x + d.x) / 2, (c.y + d.y) / 2); return a } if (this.computeCurve() === Ui && 3 <= b && !this.rc) { if (3 === b) return this.m(1); var c = (b - 1) / 3 | 0, e = 3 * (c / 2 | 0); if (1 === c % 2) { var c = this.m(e), d = this.m(e + 1), g = this.m(e + 2), e = this.m(e + 3), b = d.x, h = d.y, d = g.x, k = g.y, g = (b + d) / 2, l = (h + k) / 2, h = ((c.y + h) / 2 + l) / 2, k = (l + (k + e.y) / 2) / 2; a.x = (((c.x + b) / 2 + g) / 2 + (g + (d + e.x) / 2) / 2) / 2; a.y = (h + k) / 2 } else a.assign(this.m(e)); return a } e = 0; g = z.rb(); for (h = 0; h < b - 1; h++) c = 0, c = this.m(h), d = this.m(h + 1), td(c.x, d.x) ? (c = d.y - c.y, 0 > c && (c = -c)) : td(c.y, d.y) ? (c = d.x - c.x, 0 > c && (c = -c)) : c = Math.sqrt(c.Af(d)), g.push(c), e += c; for (d = h = c = 0; c < e / 2 && h < b;) { d = g[h]; if (c + d > e / 2) break; c += d; h++ } z.xa(g); b = this.m(h); g = this.m(h + 1); b.x === g.x ? b.y > g.y ? a.n(b.x, b.y - (e / 2 - c)) : a.n(b.x, b.y + (e / 2 - c)) : b.y === g.y ? b.x > g.x ? a.n(b.x - (e / 2 - c), b.y) : a.n(b.x + (e / 2 - c), b.y) : (c = (e / 2 - c) / d, a.n(b.x + c * (g.x - b.x), b.y + c * (g.y - b.y))); return a }; z.w(G, { aF: "midAngle" }, function() { this.Bn(); return this.computeMidAngle() }); G.prototype.computeMidAngle = function() { var a = this.sa; if (2 > a) return NaN; if (this.computeCurve() === Ui && 4 <= a && !this.rc) { var b = (a - 1) / 3 | 0, c = 3 * (b / 2 | 0); if (1 === b % 2) { var c = Math.floor(c), b = this.m(c), d = this.m(c + 1), a = this.m(c + 2), c = this.m(c + 3), e = d.x, d = d.y, g = a.x, a = a.y, h = (e + g) / 2, k = (d + a) / 2; return xb(((b.x + e) / 2 + h) / 2, ((b.y + d) / 2 + k) / 2, (h + (g + c.x) / 2) / 2, (k + (a + c.y) / 2) / 2) } if (0 < c && c + 1 < a) return b = this.m(c - 1), d = this.m(c + 1), b.Ec(d) } c = a / 2 | 0; if (0 === a % 2) return b = this.m(c - 1), d = this.m(c), 4 <= a && b.Mc(d) && (b = this.m(c - 2), a = this.m(c + 1), c = b.Af(d), e = d.Af(a), !(c > e + 10)) ? e > c + 10 ? d.Ec(a) : b.Ec(a) : b.Ec(d); b = this.m(c - 1); d = this.m(c); a = this.m(c + 1); c = b.Af(d); e = d.Af(a); return c > e + 10 ? b.Ec(d) : e > c + 10 ? d.Ec(a) : b.Ec(a) }; z.defineProperty(G, { points: "points" }, function() { return this.Yc }, function(a) { var b = this.Yc; if (b !== a) { var c = null; if (Array.isArray(a)) { var d = 0 === a.length % 2; if (d) for (var e = 0; e < a.length; e++) if ("number" !== typeof a[e] || isNaN(a[e])) { d = !1; break } if (d) for (c = new J(N), d = 0; d < a.length / 2; d++) e = (new N(a[2 * d], a[2 * d + 1])).freeze(), c.add(e); else { for (var g = !0, d = 0; d < a.length; d++) if (e = a[d], !z.Za(e) || "number" !== typeof e.x || isNaN(e.x) || "number" !== typeof e.y || isNaN(e.y)) { g = !1; break } if (g) for (c = new J(N), d = 0; d < a.length; d++) e = a[d], c.add((new N(e.x, e.y)).freeze()); else z.k("Link.points array must contain only an even number of numbers or objects with x and y properties, not: " + a) } } else if (a instanceof J) for (c = a.copy(), a = c.i; a.next();) a.value.freeze(); else z.k("Link.points value is not an instance of List or Array: " + a); c.freeze(); this.Yc = c; this.Ae(); this.S(); Vp(this); a = this.h; null !== a && (a.kn || a.pa.qb || a.qx.add(this), a.Ua.wc && (this.Ko = c)); this.j("points", b, c) } }); z.w(G, { sa: "pointsCount" }, function() { return this.Yc.count }); G.prototype.getPoint = G.prototype.m = function(a) { return this.Yc.o[a] }; G.prototype.setPoint = G.prototype.Kf = function(a, b) { u && (z.l(b, N, G, "setPoint"), b.F() || z.k("Link.setPoint called with a Point that does not have real numbers: " + b.toString())); null === this.Me && z.k("Call Link.startRoute before modifying the points of the route."); this.Yc.Rg(a, b) }; G.prototype.setPointAt = G.prototype.aa = function(a, b, c) { u && (z.p(b, G, "setPointAt:x"), z.p(c, G, "setPointAt:y")); null === this.Me && z.k("Call Link.startRoute before modifying the points of the route."); this.Yc.Rg(a, new N(b, c)) }; G.prototype.insertPoint = function(a, b) { u && (z.l(b, N, G, "insertPoint"), b.F() || z.k("Link.insertPoint called with a Point that does not have real numbers: " + b.toString())); null === this.Me && z.k("Call Link.startRoute before modifying the points of the route."); this.Yc.Ld(a, b) }; G.prototype.insertPointAt = G.prototype.B = function(a, b, c) { u && (z.p(b, G, "insertPointAt:x"), z.p(c, G, "insertPointAt:y")); null === this.Me && z.k("Call Link.startRoute before modifying the points of the route."); this.Yc.Ld(a, new N(b, c)) }; G.prototype.addPoint = G.prototype.gi = function(a) { u && (z.l(a, N, G, "addPoint"), a.F() || z.k("Link.addPoint called with a Point that does not have real numbers: " + a.toString())); null === this.Me && z.k("Call Link.startRoute before modifying the points of the route."); this.Yc.add(a) }; G.prototype.addPointAt = G.prototype.sl = function(a, b) { u && (z.p(a, G, "insertPointAt:x"), z.p(b, G, "insertPointAt:y")); null === this.Me && z.k("Call Link.startRoute before modifying the points of the route."); this.Yc.add(new N(a, b)) }; G.prototype.removePoint = G.prototype.oF = function(a) { null === this.Me && z.k("Call Link.startRoute before modifying the points of the route."); this.Yc.dd(a) }; G.prototype.clearPoints = G.prototype.fp = function() { null === this.Me && z.k("Call Link.startRoute before modifying the points of the route."); this.Yc.clear() }; G.prototype.movePoints = G.prototype.Rl = function(a, b) { for (var c = new J(N), d = this.Yc.i; d.next();) { var e = d.value; c.add((new N(e.x + a, e.y + b)).freeze()) } c.freeze(); d = this.Yc; this.Yc = c; this.S(); Vp(this); e = this.h; null !== e && e.Ua.wc && (this.Ko = c); this.j("points", d, c) }; G.prototype.startRoute = G.prototype.Ul = function() { null === this.Me && (this.Me = this.Yc, this.Yc = this.Yc.copy()) }; G.prototype.commitRoute = G.prototype.cj = function() { if (null !== this.Me) { for (var a = this.Me, b = this.Yc, c = Infinity, d = Infinity, e = a.o, g = e.length, h = 0; h < g; h++) var k = e[h], c = Math.min(k.x, c), d = Math.min(k.y, d); for (var l = Infinity, m = Infinity, n = b.o, p = n.length, h = 0; h < p; h++) k = n[h], l = Math.min(k.x, l), m = Math.min(k.y, m), k.freeze(); b.freeze(); if (p === g) for (h = 0; h < p; h++) { if (g = e[h], k = n[h], g.x - c !== k.x - l || g.y - d !== k.y - m) { this.S(); this.Ae(); break } } else this.S(), this.Ae(); this.Me = null; c = this.h; null !== c && c.Ua.wc && (this.Ko = b); Vp(this); this.j("points", a, b) } }; G.prototype.rollbackRoute = G.prototype.$I = function() { null !== this.Me && (this.Yc = this.Me, this.Me = null) }; function Vp(a) { 0 === a.Yc.count ? a.Cg = !1 : (a.Cg = !0, a.Vn = a.m(0).copy(), a.Zn = a.m(a.sa - 1).copy(), Wp(a, !1)) } G.prototype.invalidateRoute = G.prototype.qc = function() { if (!this.mz) { var a = this.h; a && (a.qx.contains(this) || a.pa.qb || a.Ua.kI && !a.Ua.nf) || (a = this.path, null !== a && (this.Cg = !1, this.S(), a.S())) } }; z.defineProperty(G, { eq: "suspendsRouting" }, function() { return this.mz }, function(a) { this.mz = a }); G.prototype.updateRoute = G.prototype.Bn = function() { if (!this.Cg && !this.sy) { var a = !0; try { this.sy = !0, this.Ul(), a = this.computePoints() } finally { this.sy = !1, a ? this.cj() : this.$I() } } }; G.prototype.computePoints = function() { var a = this.h; if (null === a) return !1; var b = this.Y, c = null; null === b ? (a.Em || (a.dw = new X, a.dw.Aa = Pd, a.dw.ub = 0, a.Em = new E, a.Em.add(a.dw), a.Em.Bf()), this.Vn && (a.Em.position = a.Em.location = this.Vn, a.Em.Bf(), b = a.Em, c = a.dw)) : c = this.md; if (null !== c && !b.isVisible()) { var d = b.findVisibleNode(); null !== d && d !== b ? (b = d, c = d.Gl("")) : b = d } this.hD = b; if (null === b || !b.location.F()) return !1; for (; !(null === c || c.W.F() && c.nj());) c = c.U; if (null === c) return !1; var d = this.da, e = null; null === d ? (a.Fm || (a.ew = new X, a.ew.Aa = Pd, a.ew.ub = 0, a.Fm = new E, a.Fm.add(a.ew), a.Fm.Bf()), this.Zn && (a.Fm.position = a.Fm.location = this.Zn, a.Fm.Bf(), d = a.Fm, e = a.ew)) : e = this.Qd; null === e || d.isVisible() || (a = d.findVisibleNode(), null !== a && a !== d ? (d = a, e = a.Gl("")) : d = a); this.jD = d; if (null === d || !d.location.F()) return !1; for (; !(null === e || e.W.F() && e.nj());) e = e.U; if (null === e) return !1; var a = this.sa, g = Xp(this, c), h = Yp(this, e), k = c === e && null !== c, l = this.rc, m = this.Se === Ui; this.Di = k && !l ? m = !0 : !1; var n = this.it === Ni || k; if (l || g !== Yb || h !== Yb || k) { m = this.jj; n && (l && m || k) && this.fp(); var p = k ? this.computeCurviness() : 0, q = this.getLinkPoint(b, c, g, !0, l, d, e), r = 0, s = 0, t = 0; if (l || g !== Yb || k) { var v = this.computeEndSegmentLength(b, c, g, !0), t = this.getLinkDirection(b, c, q, g, !0, l, d, e); k && (t -= l ? 90 : 30, 0 > p && (t -= 180)); 0 > t ? t += 360 : 360 <= t && (t -= 360); k && (v += Math.abs(p)); 0 === t ? r = v : 90 === t ? s = v : 180 === t ? r = -v : 270 === t ? s = -v : (r = v * Math.cos(t * Math.PI / 180), s = v * Math.sin(t * Math.PI / 180)); if (g.Be() && k) { var x = c.fb(ec, z.O()), y = z.Tb(x.x + 1E3 * r, x.y + 1E3 * s); this.getLinkPointFromPoint(b, c, x, y, !0, q); z.A(x); z.A(y) } } var v = this.getLinkPoint(d, e, h, !1, l, b, c), A = 0, B = 0, L = 0; if (l || h !== Yb || k) x = this.computeEndSegmentLength(d, e, h, !1), L = this.getLinkDirection(d, e, v, h, !1, l, b, c), k && (L += l ? 0 : 30, 0 > p && (L += 180)), 0 > L ? L += 360 : 360 <= L && (L -= 360), k && (x += Math.abs(p)), 0 === L ? A = x : 90 === L ? B = x : 180 === L ? A = -x : 270 === L ? B = -x : (A = x * Math.cos(L * Math.PI / 180), B = x * Math.sin(L * Math.PI / 180)), h.Be() && k && (x = e.fb(ec, z.O()), y = z.Tb(x.x + 1E3 * A, x.y + 1E3 * B), this.getLinkPointFromPoint(d, e, x, y, !1, v), z.A(x), z.A(y)); e = q; if (l || g !== Yb || k) e = new N(q.x + r, q.y + s); c = v; if (l || h !== Yb || k) c = new N(v.x + A, v.y + B); !n && !l && g === Yb && 3 < a && this.adjustPoints(0, q, a - 2, c) ? this.Kf(a - 1, v) : !n && !l && h === Yb && 3 < a && this.adjustPoints(1, e, a - 1, v) ? this.Kf(0, q) : !n && !l && 4 < a && this.adjustPoints(1, e, a - 2, c) ? (this.Kf(0, q), this.Kf(a - 1, v)) : !n && l && 6 <= a && !m && this.adjustPoints(1, e, a - 2, c) ? (this.Kf(0, q), this.Kf(a - 1, v)) : (this.fp(), this.gi(q), (l || g !== Yb || k) && this.gi(e), l && this.addOrthoPoints(e, t, c, L, b, d), (l || h !== Yb || k) && this.gi(c), this.gi(v)) } else g = !1, !n && 3 <= a && (n = this.getLinkPoint(b, c, Yb, !0, !1, d, e), h = this.getLinkPoint(d, e, Yb, !1, !1, b, c), g = this.adjustPoints(0, n, a - 1, h)) && (n = this.getLinkPoint(b, c, Yb, !0, !1, d, e), h = this.getLinkPoint(d, e, Yb, !1, !1, b, c), this.adjustPoints(0, n, a - 1, h)), g || (this.fp(), m ? (a = this.getLinkPoint(b, c, Yb, !0, !1, d, e), n = this.getLinkPoint(d, e, Yb, !1, !1, b, c), g = n.x - a.x, h = n.y - a.y, k = this.computeCurviness(), m = l = 0, q = a.x + g / 3, t = a.y + h / 3, r = q, s = t, eb(h, 0) ? s = 0 < g ? s - k : s + k : (l = -g / h, m = Math.sqrt(k * k / (l * l + 1)), 0 > k && (m = -m), r = (0 > h ? -1 : 1) * m + q, s = l * (r - q) + t), q = a.x + 2 * g / 3, t = a.y + 2 * h / 3, v = q, A = t, eb(h, 0) ? A = 0 < g ? A - k : A + k : (v = (0 > h ? -1 : 1) * m + q, A = l * (v - q) + t), this.fp(), this.gi(a), this.sl(r, s), this.sl(v, A), this.gi(n), this.Kf(0, this.getLinkPoint(b, c, Yb, !0, !1, d, e)), this.Kf(3, this.getLinkPoint(d, e, Yb, !1, !1, b, c))) : (a = d, d = this.getLinkPoint(b, c, Yb, !0, !1, a, e), e = this.getLinkPoint(a, e, Yb, !1, !1, b, c), this.hasCurviness() ? (h = e.x - d.x, b = e.y - d.y, c = this.computeCurviness(), a = d.x + h / 2, n = d.y + b / 2, g = a, k = n, eb(b, 0) ? k = 0 < h ? k - c : k + c : (h = -h / b, g = Math.sqrt(c * c / (h * h + 1)), 0 > c && (g = -g), g = (0 > b ? -1 : 1) * g + a, k = h * (g - a) + n), this.gi(d), this.sl(g, k)) : this.gi(d), this.gi(e))); return !0 }; function Zp(a, b) { Math.abs(b.x - a.x) > Math.abs(b.y - a.y) ? (b.x = b.x >= a.x ? a.x + 9E9 : a.x - 9E9, b.y = a.y) : (b.y = b.y >= a.y ? a.y + 9E9 : a.y - 9E9, b.x = a.x); return b } G.prototype.getLinkPointFromPoint = function(a, b, c, d, e, g) { void 0 === g && (g = new N); if (null === a || null === b) return g.assign(c), g; a.isVisible() || (e = a.findVisibleNode(), null !== e && e !== a && (b = e.port)); var h = e = 0, k = 0, l = 0; a = null; e = b.U; null === e || e.Vg() || (e = e.U); if (null === e) e = d.x, h = d.y, k = c.x, l = c.y; else { a = e.ph; e = 1 / (a.m11 * a.m22 - a.m12 * a.m21); var k = a.m22 * e, l = -a.m12 * e, m = -a.m21 * e, n = a.m11 * e, p = e * (a.m21 * a.dy - a.m22 * a.dx), q = e * (a.m12 * a.dx - a.m11 * a.dy); e = d.x * k + d.y * m + p; h = d.x * l + d.y * n + q; k = c.x * k + c.y * m + p; l = c.x * l + c.y * n + q } b.tp(e, h, k, l, g); null !== a && g.transform(a); return g }; function $p(a, b) { var c = b.gs; null === c && (c = new aq, c.port = b, c.Pc = b.ca, b.gs = c); return bq(c, a) } G.prototype.getLinkPoint = function(a, b, c, d, e, g, h, k) { void 0 === k && (k = new N); if (c.cd()) return b.fb(c, k), k; if (c.kj() && (c = $p(this, b), null !== c)) { k.assign(c.Fp); if (e && this.Gx === Jp) { var l = $p(this, h); if (null !== l && c.an < l.an) { c = z.O(); var l = z.O(), m = new w(b.fb(Zb, c), b.fb(ic, l)), n = this.computeSpot(!d); a = this.getLinkPoint(g, h, n, !d, e, a, b, l); a.x >= m.x && a.x <= m.x + m.width ? k.x = a.x : a.y >= m.y && a.y <= m.y + m.height && (k.y = a.y); z.A(c); z.A(l) } } return k } g = b.fb(ec, z.O()); l = c = null; this.sa > (e ? 6 : 2) ? (l = d ? this.m(1) : this.m(this.sa - 2), e && (l = Zp(g, l.copy()))) : (c = z.O(), l = h.fb(ec, c), e && (l = Zp(g, l)), z.A(c)); this.getLinkPointFromPoint(a, b, g, l, d, k); z.A(g); return k }; G.prototype.getLinkDirection = function(a, b, c, d, e, g, h, k) { a: if (d.cd()) c = d.x > d.y ? d.x > 1 - d.y ? 0 : d.x < 1 - d.y ? 270 : 315 : d.x < d.y ? d.x > 1 - d.y ? 90 : d.x < 1 - d.y ? 180 : 135 : .5 > d.x ? 225 : .5 < d.x ? 45 : 0; else { if (d.kj()) { var l = $p(this, b); if (null !== l) switch (l.se) { case z.pd: c = 270; break a; case z.Tc: c = 180; break a; default: case z.fd: c = 0; break a; case z.ed: c = 90; break a } } var l = b.fb(ec, z.O()), m = null, n = null; this.sa > (g ? 6 : 2) ? (n = e ? this.m(1) : this.m(this.sa - 2), n = g ? Zp(l, n.copy()) : c) : (m = z.O(), n = k.fb(ec, m), z.A(m)); c = 0; c = Math.abs(n.x - l.x) > Math.abs(n.y - l.y) ? n.x >= l.x ? 0 : 180 : n.y >= l.y ? 90 : 270; z.A(l) }d.Be() && h.li(a) && (c += 180, 360 <= c && (c -= 360));a = wp;a = e ? this.Et : this.zu;a === wp && (a = e ? b.Et : b.zu); switch (a) { case xp: b = b.Kl(); c += b; 360 <= c && (c -= 360); break; case wp: case Gm: b = b.Kl(); if (0 === b) break; 45 <= b && 135 > b ? c += 90 : 135 <= b && 225 > b ? c += 180 : 225 <= b && 315 > b && (c += 270); 360 <= c && (c -= 360) } return c }; G.prototype.computeEndSegmentLength = function(a, b, c, d) { if (null !== b && c.kj() && (a = $p(this, b), null !== a)) return a.Uw; a = NaN; a = d ? this.Il : this.Yl; null !== b && isNaN(a) && (a = d ? b.Il : b.Yl); isNaN(a) && (a = 10); return a }; G.prototype.computeSpot = function(a) { return a ? Xp(this, this.md) : Yp(this, this.Qd) }; function Xp(a, b) { if (null === b) return ec; var c = a.Db; c.bd() && (void 0 === b && (b = a.md), null !== b && (c = b.Db)); return c === Pc ? Yb : c } function Yp(a, b) { if (null === b) return ec; var c = a.Eb; c.bd() && (void 0 === b && (b = a.Qd), null !== b && (c = b.Eb)); return c === Pc ? Yb : c } G.prototype.computeOtherPoint = function(a, b) { var c = b.fb(ec), d; d = b.gs; d = null !== d ? bq(d, this) : null; null !== d && (c = d.Fp); return c }; G.prototype.computeShortLength = function(a) { return a ? cq(this) : dq(this) }; function cq(a) { var b = a.Ft; isNaN(b) && (a = a.md, null !== a && (b = a.Ft)); return isNaN(b) ? 0 : b } function dq(a) { var b = a.Au; isNaN(b) && (a = a.Qd, null !== a && (b = a.Au)); return isNaN(b) ? 0 : b } G.prototype.ok = function(a, b, c, d, e, g) { if (!1 === this.ig) return !1; void 0 === b && (b = null); void 0 === c && (c = null); var h = g; void 0 === g && (h = z.Fh(), h.reset()); h.multiply(this.transform); if (this.Ym(a, h)) return ko(this, b, c, e), void 0 === g && z.jf(h), !0; if (this.Ig(a, h)) { var k = !1; if (!this.dh) for (var l = this.va.o, m = l.length; m--;) { var n = l[m]; if (n.visible || n === this.Zb) { var p = n.W, q = this.Ga; if (!(p.x > q.width || p.y > q.height || 0 > p.x + p.width || 0 > p.y + p.height)) { p = z.Fh(); p.set(h); if (n instanceof I) k = n.ok(a, b, c, d, e, p); else if (this.path === n) { var k = n, r = a, s = d, q = p; if (!1 === k.ig) k = !1; else if (q.multiply(k.transform), s) b: { var t = r, v = q; if (k.Ym(t, v)) k = !0; else { if (void 0 === v && (v = k.transform, t.mk(k.W))) { k = !0; break b } var q = t.left, r = t.right, s = t.top, t = t.bottom, x = z.O(), y = z.O(), A = z.O(), B = z.Fh(); B.set(v); B.vA(k.transform); B.fA(); y.x = r; y.y = s; y.transform(B); x.x = q; x.y = s; x.transform(B); v = !1; vo(k, x, y, A) ? v = !0 : (x.x = r, x.y = t, x.transform(B), vo(k, x, y, A) ? v = !0 : (y.x = q, y.y = t, y.transform(B), vo(k, x, y, A) ? v = !0 : (x.x = q, x.y = s, x.transform(B), vo(k, x, y, A) && (v = !0)))); z.jf(B); z.A(x); z.A(y); z.A(A); k = v } } else k = k.Ym(r, q) } else k = Lm(n, a, d, p); k && (null !== b && (n = b(n)), n && (null === c || c(n)) && e.add(n)); z.jf(p) } } } void 0 === g && z.jf(h); return k || null !== this.background || null !== this.vl } void 0 === g && z.jf(h); return !1 }; z.w(G, { rc: "isOrthogonal" }, function() { return 2 === (this.Dm.value & 2) }); z.w(G, { jj: "isAvoiding" }, function() { return 4 === (this.Dm.value & 4) }); G.prototype.computeCurve = function() { if (null === this.Di) { var a = this.md, b = this.rc; this.Di = null !== a && a === this.Qd && !b } return this.Di ? Ui : this.Se }; G.prototype.computeCorner = function() { if (this.Se === Ui) return 0; var a = this.Kz; if (isNaN(a) || 0 > a) a = 10; return a }; G.prototype.findMidLabel = function() { for (var a = this.path, b = this.va.o, c = b.length, d = 0; d < c; d++) { var e = b[d]; if (e !== a && !e.Ff && (-Infinity === e.De || isNaN(e.De))) return e } for (a = this.Hf; a.next();) if (b = a.value, -Infinity === b.De || isNaN(b.De)) return b; return null }; G.prototype.computeSpacing = function() { if (!this.isVisible()) return 0; var a; a = Math.max(14, this.computeThickness()); var b = this.md, c = this.Qd; if (null !== b && null !== c) { var d = this.findMidLabel(); if (null !== d) { var e = d.Ga, g = d.margin, h = isNaN(e.width) ? 30 : e.width * d.scale + g.left + g.right, e = isNaN(e.height) ? 14 : e.height * d.scale + g.top + g.bottom, d = d.pu; d === yo || d === Np || d === Mp ? a = Math.max(a, e) : d === Lp || d === Pp || d === Kp || d === Op ? a = Math.max(a, h) : (b = b.fb(ec).Ec(c.fb(ec)) / 180 * Math.PI, a = Math.max(a, Math.abs(Math.sin(b) * h) + Math.abs(Math.cos(b) * e) + 1)); this.Se === Ui && (a *= 1.333) } } return a }; G.prototype.arrangeBundledLinks = function(a, b) { if (b) for (var c = 0; c < a.length; c++) a[c].qc() }; G.prototype.computeCurviness = function() { var a = this.Qw; if (isNaN(a)) { var a = 16, b = this.ri; if (null !== b) { for (var c = z.rb(), d = 0, e = b.links, g = 0; g < e.length; g++) { var h = e[g], h = h.computeSpacing(); c.push(h); d += h } d = -d / 2; for (g = 0; g < e.length; g++) { h = e[g]; if (h === this) { a = d + c[g] / 2; break } d += c[g] } b.Op === this.Y && (a = -a); z.xa(c) } } return a }; G.prototype.computeThickness = function() { if (!this.isVisible()) return 0; var a = this.path; return null !== a ? Math.max(a.ub, 1) : 1 }; G.prototype.hasCurviness = function() { return !isNaN(this.Qw) || null !== this.ri }; G.prototype.adjustPoints = function(a, b, c, d) { var e = this.it; if (this.rc) { if (e === ln) return !1; e === mn && (e = kn) } switch (e) { case ln: var g = this.m(a), h = this.m(c); if (!g.Mc(b) || !h.Mc(d)) { var e = g.x, g = g.y, k = h.x - e, l = h.y - g, m = Math.sqrt(k * k + l * l); if (!td(m, 0)) { var n = 0; td(k, 0) ? n = 0 > l ? -Math.PI / 2 : Math.PI / 2 : (n = Math.atan(l / Math.abs(k)), 0 > k && (n = Math.PI - n)); var h = b.x, p = b.y, l = d.x - h, q = d.y - p, r = Math.sqrt(l * l + q * q), k = 0; td(l, 0) ? k = 0 > q ? -Math.PI / 2 : Math.PI / 2 : (k = Math.atan(q / Math.abs(l)), 0 > l && (k = Math.PI - k)); m = r / m; n = k - n; this.Kf(a, b); for (a += 1; a < c; a++) b = this.m(a), k = b.x - e, l = b.y - g, b = Math.sqrt(k * k + l * l), td(b, 0) || (q = 0, td(k, 0) ? q = 0 > l ? -Math.PI / 2 : Math.PI / 2 : (q = Math.atan(l / Math.abs(k)), 0 > k && (q = Math.PI - q)), k = q + n, b *= m, this.aa(a, h + b * Math.cos(k), p + b * Math.sin(k))); this.Kf(c, d) } } return !0; case mn: g = this.m(a); p = this.m(c); if (!g.Mc(b) || !p.Mc(d)) { var e = g.x, g = g.y, h = p.x, p = p.y, m = (h - e) * (h - e) + (p - g) * (p - g), k = b.x, n = b.y, l = d.x, q = d.y, r = 0, s = 1; 0 !== l - k ? (r = (q - n) / (l - k), s = Math.sqrt(1 + 1 / (r * r))) : r = 9E9; this.Kf(a, b); for (a += 1; a < c; a++) { b = this.m(a); var t = b.x, v = b.y, x = .5; 0 !== m && (x = ((e - t) * (e - h) + (g - v) * (g - p)) / m); var y = e + x * (h - e), A = g + x * (p - g); b = Math.sqrt((t - y) * (t - y) + (v - A) * (v - A)); v < r * (t - y) + A && (b = -b); 0 < r && (b = -b); t = k + x * (l - k); x = n + x * (q - n); 0 !== r ? (b = t + b / s, this.aa(a, b, x - (b - t) / r)) : this.aa(a, t, x + b) } this.Kf(c, d) } return !0; case kn: return this.rc && (e = this.m(a), g = this.m(a + 1), h = this.m(a + 2), eb(e.y, g.y) ? eb(g.x, h.x) ? this.aa(a + 1, g.x, b.y) : eb(g.y, h.y) && this.aa(a + 1, b.x, g.y) : eb(e.x, g.x) && (eb(g.y, h.y) ? this.aa(a + 1, b.x, g.y) : eb(g.x, h.x) && this.aa(a + 1, g.x, b.y)), e = this.m(c), g = this.m(c - 1), h = this.m(c - 2), eb(e.y, g.y) ? eb(g.x, h.x) ? this.aa(c - 1, g.x, d.y) : eb(g.y, h.y) && this.aa(c - 1, d.x, g.y) : eb(e.x, g.x) && (eb(g.y, h.y) ? this.aa(c - 1, d.x, g.y) : eb(g.x, h.x) && this.aa(c - 1, g.x, d.y))), this.Kf(a, b), this.Kf(c, d), !0; default: return !1 } }; G.prototype.addOrthoPoints = function(a, b, c, d, e, g) { b = -45 <= b && 45 > b ? 0 : 45 <= b && 135 > b ? 90 : 135 <= b && 225 > b ? 180 : 270; d = -45 <= d && 45 > d ? 0 : 45 <= d && 135 > d ? 90 : 135 <= d && 225 > d ? 180 : 270; var h = e.W.copy(), k = g.W.copy(); if (h.F() && k.F()) { h.ag(8, 8); k.ag(8, 8); h.vj(a); k.vj(c); var l, m; if (0 === b) if (c.x > a.x || 270 === d && c.y < a.y && k.right > a.x || 90 === d && c.y > a.y && k.right > a.x) l = new N(c.x, a.y), m = new N(c.x, (a.y + c.y) / 2), 180 === d ? (l.x = this.computeMidOrthoPosition(a.x, c.x, !1), m.x = l.x, m.y = c.y) : 270 === d && c.y < a.y || 90 === d && c.y > a.y ? (l.x = a.x < k.left ? this.computeMidOrthoPosition(a.x, k.left, !1) : a.x < k.right && (270 === d && a.y < k.top || 90 === d && a.y > k.bottom) ? this.computeMidOrthoPosition(a.x, c.x, !1) : k.right, m.x = l.x, m.y = c.y) : 0 === d && a.x < k.left && a.y > k.top && a.y < k.bottom && (l.x = a.x, l.y = a.y < c.y ? Math.min(c.y, k.top) : Math.max(c.y, k.bottom), m.y = l.y); else { l = new N(a.x, c.y); m = new N((a.x + c.x) / 2, c.y); if (180 === d || 90 === d && c.y < h.top || 270 === d && c.y > h.bottom) 180 === d && (k.Ma(a) || h.Ma(c)) ? l.y = this.computeMidOrthoPosition(a.y, c.y, !0) : c.y < a.y && (180 === d || 90 === d) ? l.y = this.computeMidOrthoPosition(h.top, Math.max(c.y, k.bottom), !0) : c.y > a.y && (180 === d || 270 === d) && (l.y = this.computeMidOrthoPosition(h.bottom, Math.min(c.y, k.top), !0)), m.x = c.x, m.y = l.y; if (l.y > h.top && l.y < h.bottom) if (c.x >= h.left && c.x <= a.x || a.x <= k.right && a.x >= c.x) { if (90 === d || 270 === d) l = new N(Math.max((a.x + c.x) / 2, a.x), a.y), m = new N(l.x, c.y) } else l.y = 270 === d || (0 === d || 180 === d) && c.y < a.y ? Math.min(c.y, 0 === d ? h.top : Math.min(h.top, k.top)) : Math.max(c.y, 0 === d ? h.bottom : Math.max(h.bottom, k.bottom)), m.x = c.x, m.y = l.y } else if (180 === b) if (c.x < a.x || 270 === d && c.y < a.y && k.left < a.x || 90 === d && c.y > a.y && k.left < a.x) l = new N(c.x, a.y), m = new N(c.x, (a.y + c.y) / 2), 0 === d ? (l.x = this.computeMidOrthoPosition(a.x, c.x, !1), m.x = l.x, m.y = c.y) : 270 === d && c.y < a.y || 90 === d && c.y > a.y ? (l.x = a.x > k.right ? this.computeMidOrthoPosition(a.x, k.right, !1) : a.x > k.left && (270 === d && a.y < k.top || 90 === d && a.y > k.bottom) ? this.computeMidOrthoPosition(a.x, c.x, !1) : k.left, m.x = l.x, m.y = c.y) : 180 === d && a.x > k.right && a.y > k.top && a.y < k.bottom && (l.x = a.x, l.y = a.y < c.y ? Math.min(c.y, k.top) : Math.max(c.y, k.bottom), m.y = l.y); else { l = new N(a.x, c.y); m = new N((a.x + c.x) / 2, c.y); if (0 === d || 90 === d && c.y < h.top || 270 === d && c.y > h.bottom) 0 === d && (k.Ma(a) || h.Ma(c)) ? l.y = this.computeMidOrthoPosition(a.y, c.y, !0) : c.y < a.y && (0 === d || 90 === d) ? l.y = this.computeMidOrthoPosition(h.top, Math.max(c.y, k.bottom), !0) : c.y > a.y && (0 === d || 270 === d) && (l.y = this.computeMidOrthoPosition(h.bottom, Math.min(c.y, k.top), !0)), m.x = c.x, m.y = l.y; if (l.y > h.top && l.y < h.bottom) if (c.x <= h.right && c.x >= a.x || a.x >= k.left && a.x <= c.x) { if (90 === d || 270 === d) l = new N(Math.min((a.x + c.x) / 2, a.x), a.y), m = new N(l.x, c.y) } else l.y = 270 === d || (0 === d || 180 === d) && c.y < a.y ? Math.min(c.y, 180 === d ? h.top : Math.min(h.top, k.top)) : Math.max(c.y, 180 === d ? h.bottom : Math.max(h.bottom, k.bottom)), m.x = c.x, m.y = l.y } else if (90 === b) if (c.y > a.y || 180 === d && c.x < a.x && k.bottom > a.y || 0 === d && c.x > a.x && k.bottom > a.y) l = new N(a.x, c.y), m = new N((a.x + c.x) / 2, c.y), 270 === d ? (l.y = this.computeMidOrthoPosition(a.y, c.y, !0), m.x = c.x, m.y = l.y) : 180 === d && c.x < a.x || 0 === d && c.x > a.x ? (l.y = a.y < k.top ? this.computeMidOrthoPosition(a.y, k.top, !0) : a.y < k.bottom && (180 === d && a.x < k.left || 0 === d && a.x > k.right) ? this.computeMidOrthoPosition(a.y, c.y, !0) : k.bottom, m.x = c.x, m.y = l.y) : 90 === d && a.y < k.top && a.x > k.left && a.x < k.right && (l.x = a.x < c.x ? Math.min(c.x, k.left) : Math.max(c.x, k.right), l.y = a.y, m.x = l.x); else { l = new N(c.x, a.y); m = new N(c.x, (a.y + c.y) / 2); if (270 === d || 0 === d && c.x < h.left || 180 === d && c.x > h.right) 270 === d && (k.Ma(a) || h.Ma(c)) ? l.x = this.computeMidOrthoPosition(a.x, c.x, !1) : c.x < a.x && (270 === d || 0 === d) ? l.x = this.computeMidOrthoPosition(h.left, Math.max(c.x, k.right), !1) : c.x > a.x && (270 === d || 180 === d) && (l.x = this.computeMidOrthoPosition(h.right, Math.min(c.x, k.left), !1)), m.x = l.x, m.y = c.y; if (l.x > h.left && l.x < h.right) if (c.y >= h.top && c.y <= a.y || a.y <= k.bottom && a.y >= c.y) { if (0 === d || 180 === d) l = new N(a.x, Math.max((a.y + c.y) / 2, a.y)), m = new N(c.x, l.y) } else l.x = 180 === d || (90 === d || 270 === d) && c.x < a.x ? Math.min(c.x, 90 === d ? h.left : Math.min(h.left, k.left)) : Math.max(c.x, 90 === d ? h.right : Math.max(h.right, k.right)), m.x = l.x, m.y = c.y } else if (c.y < a.y || 180 === d && c.x < a.x && k.top < a.y || 0 === d && c.x > a.x && k.top < a.y) l = new N(a.x, c.y), m = new N((a.x + c.x) / 2, c.y), 90 === d ? (l.y = this.computeMidOrthoPosition(a.y, c.y, !0), m.x = c.x, m.y = l.y) : 180 === d && c.x < a.x || 0 === d && c.x >= a.x ? (l.y = a.y > k.bottom ? this.computeMidOrthoPosition(a.y, k.bottom, !0) : a.y > k.top && (180 === d && a.x < k.left || 0 === d && a.x > k.right) ? this.computeMidOrthoPosition(a.y, c.y, !0) : k.top, m.x = c.x, m.y = l.y) : 270 === d && a.y > k.bottom && a.x > k.left && a.x < k.right && (l.x = a.x < c.x ? Math.min(c.x, k.left) : Math.max(c.x, k.right), l.y = a.y, m.x = l.x); else { l = new N(c.x, a.y); m = new N(c.x, (a.y + c.y) / 2); if (90 === d || 0 === d && c.x < h.left || 180 === d && c.x > h.right) 90 === d && (k.Ma(a) || h.Ma(c)) ? l.x = this.computeMidOrthoPosition(a.x, c.x, !1) : c.x < a.x && (90 === d || 0 === d) ? l.x = this.computeMidOrthoPosition(h.left, Math.max(c.x, k.right), !1) : c.x > a.x && (90 === d || 180 === d) && (l.x = this.computeMidOrthoPosition(h.right, Math.min(c.x, k.left), !1)), m.x = l.x, m.y = c.y; if (l.x > h.left && l.x < h.right) if (c.y <= h.bottom && c.y >= a.y || a.y >= k.top && a.y <= c.y) { if (0 === d || 180 === d) l = new N(a.x, Math.min((a.y + c.y) / 2, a.y)), m = new N(c.x, l.y) } else l.x = 180 === d || (90 === d || 270 === d) && c.x < a.x ? Math.min(c.x, 270 === d ? h.left : Math.min(h.left, k.left)) : Math.max(c.x, 270 === d ? h.right : Math.max(h.right, k.right)), m.x = l.x, m.y = c.y } var n = l, p = m; if (this.jj) { var q = this.h, r; (r = null === q) || (q.Ua.nf ? r = !1 : (r = q.eb, r = r instanceof ih ? !r.tw || r.dI : !0), r = !r); if (r || h.Ma(c) && !g.li(e) || k.Ma(a) && !e.li(g) || e === g || this.layer.Nc) a = !1; else if (e = ja(q, !0, this.Va, null), e.Dp(Math.min(a.x, n.x), Math.min(a.y, n.y), Math.abs(a.x - n.x), Math.abs(a.y - n.y)) && e.Dp(Math.min(n.x, p.x), Math.min(n.y, p.y), Math.abs(n.x - p.x), Math.abs(n.y - p.y)) && e.Dp(Math.min(p.x, c.x), Math.min(p.y, c.y), Math.abs(p.x - c.x), Math.abs(p.y - c.y))) a = !1; else if (h = h.copy().qi(k), h.ag(2 * e.ep, 2 * e.cp), eq(e, a, b, c, d, h), k = fq(e, c.x, c.y), e.abort || 999999 !== k || (lm(e), k = e.NF, h.ag(e.ep * k, e.cp * k), eq(e, a, b, c, d, h), k = fq(e, c.x, c.y)), e.abort || 999999 !== k || (lm(e), k = e.WE, h.ag(e.ep * k, e.cp * k), eq(e, a, b, c, d, h), k = fq(e, c.x, c.y)), !e.abort && 999999 === k && e.gG && (lm(e), eq(e, a, b, c, d, e.vb), k = fq(e, c.x, c.y)), !e.abort && 999999 > k && 0 !== fq(e, c.x, c.y)) { gq(this, e, c.x, c.y, d, !0); d = this.m(2); if (4 > this.sa) 0 === b || 180 === b ? (d.x = a.x, d.y = c.y) : (d.x = c.x, d.y = a.y), this.aa(2, d.x, d.y), this.B(3, d.x, d.y); else if (c = this.m(3), 0 === b || 180 === b) eb(d.x, c.x) ? (b = 0 === b ? Math.max(d.x, a.x) : Math.min(d.x, a.x), this.aa(2, b, a.y), this.aa(3, b, c.y)) : eb(d.y, c.y) ? (Math.abs(a.y - d.y) <= e.cp / 2 && (this.aa(2, d.x, a.y), this.aa(3, c.x, a.y)), this.B(2, d.x, a.y)) : this.aa(2, a.x, d.y); else if (90 === b || 270 === b) eb(d.y, c.y) ? (b = 90 === b ? Math.max(d.y, a.y) : Math.min(d.y, a.y), this.aa(2, a.x, b), this.aa(3, c.x, b)) : eb(d.x, c.x) ? (Math.abs(a.x - d.x) <= e.ep / 2 && (this.aa(2, a.x, d.y), this.aa(3, a.x, c.y)), this.B(2, a.x, d.y)) : this.aa(2, d.x, a.y); a = !0 } else a = !1 } else a = !1; a || (this.gi(l), this.gi(m)) } }; G.prototype.computeMidOrthoPosition = function(a, b) { if (this.hasCurviness()) { var c = this.computeCurviness(); return (a + b) / 2 + c } return (a + b) / 2 }; function Wh(a) { if (null === a.h || !a.jj) return !1; var b = a.points.o, c = b.length; if (4 > c) return !1; a = ja(a.h, !0, a.Va, null); for (var d = 1; d < c - 2; d++) { var e = b[d], g = b[d + 1]; if (!a.Dp(Math.min(e.x, g.x), Math.min(e.y, g.y), Math.abs(e.x - g.x), Math.abs(e.y - g.y))) return !0 } return !1 } function gq(a, b, c, d, e, g) { var h = b.ep, k = b.cp, l = fq(b, c, d), m = c, n = d; for (0 === e ? m += h : 90 === e ? n += k : 180 === e ? m -= h : n -= k; 1 < l && fq(b, m, n) === l - 1;) c = m, d = n, 0 === e ? m += h : 90 === e ? n += k : 180 === e ? m -= h : n -= k, l -= 1; if (g) { if (1 < l) if (180 === e || 0 === e) c = Math.floor(c / h) * h + h / 2; else if (90 === e || 270 === e) d = Math.floor(d / k) * k + k / 2 } else c = Math.floor(c / h) * h + h / 2, d = Math.floor(d / k) * k + k / 2; 1 < l && (g = e, m = c, n = d, 0 === e ? (g = 90, n += k) : 90 === e ? (g = 180, m -= h) : 180 === e ? (g = 270, n -= k) : 270 === e && (g = 0, m += h), fq(b, m, n) === l - 1 ? gq(a, b, m, n, g, !1) : (m = c, n = d, 0 === e ? (g = 270, n -= k) : 90 === e ? (g = 0, m += h) : 180 === e ? (g = 90, n += k) : 270 === e && (g = 180, m -= h), fq(b, m, n) === l - 1 && gq(a, b, m, n, g, !1))); a.sl(c, d) } G.prototype.findClosestSegment = function(a) { u && z.l(a, N, G, "findClosestSegment:p"); var b = a.x; a = a.y; for (var c = this.m(0), d = this.m(1), e = vb(b, a, c.x, c.y, d.x, d.y), g = 0, h = 1; h < this.sa - 1; h++) { var c = this.m(h + 1), k = vb(b, a, d.x, d.y, c.x, c.y), d = c; k < e && (g = h, e = k) } return g }; G.prototype.invalidateGeometry = G.prototype.Ae = function() { this.ab = null }; z.w(G, { Jl: "geometry" }, function() { null === this.ab && (this.Bn(), this.ab = this.makeGeometry()); return this.ab }); G.prototype.on = function(a) { if (!a) { if (!1 === this.Cg) return; a = this.gf(); if (null !== this.ab && (null === a || null !== a.Jl)) return } this.ab = this.makeGeometry(); a = this.path; if (null !== a) { a.ab = this.ab; for (var b = this.va.o, c = b.length, d = 0; d < c; d++) { var e = b[d]; e !== a && e.Ff && e instanceof X && (e.ab = this.ab) } } }; G.prototype.makeGeometry = function() { var a = this.sa; if (2 > a) { var b = new hf(jf), c = new kf(0, 0); b.cc.add(c); return b } var d = !1, b = this.h; null !== b && Up(this) && b.Rk.contains(this) && null !== this.cw && (d = !0); var c = b = 0, e = this.m(0).copy(), g = e.copy(), b = this.Yc.o, h = this.computeCurve(); if (h === Ui && 3 <= a && !td(this.cq, 0)) if (3 === a) var k = this.m(1), b = Math.min(e.x, k.x), c = Math.min(e.y, k.y), k = this.m(2), b = Math.min(b, k.x), c = Math.min(c, k.y); else { if (this.rc) for (k = 0; k < a; k++) c = b[k], g.x = Math.min(c.x, g.x), g.y = Math.min(c.y, g.y); else for (k = 3; k < a; k += 3) k + 3 >= a && (k = a - 1), b = this.m(k), g.x = Math.min(b.x, g.x), g.y = Math.min(b.y, g.y); b = g.x; c = g.y } else { for (k = 0; k < a; k++) c = b[k], g.x = Math.min(c.x, g.x), g.y = Math.min(c.y, g.y); b = g.x; c = g.y } b -= this.pz.x; c -= this.pz.y; e.x -= b; e.y -= c; if (2 === a) { var l = this.m(1).copy(); l.x -= b; l.y -= c; 0 !== cq(this) && hq(this, e, !0, g); 0 !== dq(this) && hq(this, l, !1, g); b = new hf(mf); b.Ha = e.x; b.Da = e.y; b.L = l.x; b.M = l.y } else { l = z.v(); 0 !== cq(this) && hq(this, e, !0, g); R(l, e.x, e.y, !1, !1); if (h === Ui && 3 <= a && !td(this.cq, 0)) if (3 === a) k = this.m(1), a = k.x - b, d = k.y - c, k = this.m(2).copy(), k.x -= b, k.y -= c, 0 !== dq(this) && hq(this, k, !1, g), S(l, a, d, a, d, k.x, k.y); else if (this.rc) { for (var g = new N(b, c), e = this.m(1).copy(), h = new N(b, c), a = new N(b, c), d = this.m(0), m = null, n = this.cq / 3, k = 1; k < this.sa - 1; k++) { var m = this.m(k), p = d, q = m, r = this.m(iq(this, m, k, !1)); if (!td(p.x, q.x) || !td(q.x, r.x)) if (!td(p.y, q.y) || !td(q.y, r.y)) { var s = n, t = h, v = a; isNaN(s) && (s = this.cq / 3); var x = p.x, p = p.y, y = q.x, q = q.y, A = r.x, r = r.y, B = s * jq(x, p, y, q), s = s * jq(y, q, A, r); td(p, q) && td(y, A) && (y > x ? r > q ? (t.x = y - B, t.y = q - B, v.x = y + s, v.y = q + s) : (t.x = y - B, t.y = q + B, v.x = y + s, v.y = q - s) : r > q ? (t.x = y + B, t.y = q - B, v.x = y - s, v.y = q + s) : (t.x = y + B, t.y = q + B, v.x = y - s, v.y = q - s)); td(x, y) && td(q, r) && (q > p ? (A > y ? (t.x = y - B, t.y = q - B, v.x = y + s) : (t.x = y + B, t.y = q - B, v.x = y - s), v.y = q + s) : (A > y ? (t.x = y - B, t.y = q + B, v.x = y + s) : (t.x = y + B, t.y = q + B, v.x = y - s), v.y = q - s)); if (td(x, y) && td(y, A) || td(p, q) && td(q, r)) x = .5 * (x + A), p = .5 * (p + r), t.x = x, t.y = p, v.x = x, v.y = p; 1 === k ? (e.x = .5 * (d.x + m.x), e.y = .5 * (d.y + m.y)) : 2 === k && td(d.x, this.m(0).x) && td(d.y, this.m(0).y) && (e.x = .5 * (d.x + m.x), e.y = .5 * (d.y + m.y)); S(l, e.x - b, e.y - c, h.x - b, h.y - c, m.x - b, m.y - c); g.set(h); e.set(a); d = m } } k = d.x; d = d.y; g = this.m(this.sa - 1); k = .5 * (k + g.x); d = .5 * (d + g.y); S(l, a.x - b, a.y - c, k - b, d - c, g.x - b, g.y - c) } else for (k = 3; k < a; k += 3) d = this.m(k - 2), k + 3 >= a && (k = a - 1), g = this.m(k - 1), e = this.m(k), k === a - 1 && 0 !== dq(this) && (e = e.copy(), hq(this, e, !1, Id)), S(l, d.x - b, d.y - c, g.x - b, g.y - c, e.x - b, e.y - c); else { g = z.O(); g.assign(this.m(0)); for (k = 1; k < a;) { k = iq(this, g, k, 1 < k); t = this.m(k); if (k >= a - 1) { g !== t && (0 !== dq(this) && (t = t.copy(), hq(this, t, !1, Id)), kq(this, l, -b, -c, g, t, d)); break } k = iq(this, t, k + 1, k < a - 3); e = l; h = -b; m = -c; n = g; v = this.m(k); x = g; p = d; eb(n.y, t.y) && eb(t.x, v.x) ? (s = this.computeCorner(), s = Math.min(s, Math.abs(t.x - n.x) / 2), s = y = Math.min(s, Math.abs(v.y - t.y) / 2), eb(s, 0) ? (kq(this, e, h, m, n, t, p), x.assign(t)) : (q = t.x, A = t.y, r = q, B = A, q = t.x > n.x ? t.x - s : t.x + s, B = v.y > t.y ? t.y + y : t.y - y, kq(this, e, h, m, n, new N(q, A), p), yf(e, t.x + h, t.y + m, r + h, B + m), x.n(r, B))) : eb(n.x, t.x) && eb(t.y, v.y) ? (s = this.computeCorner(), y = Math.min(s, Math.abs(t.y - n.y) / 2), y = s = Math.min(y, Math.abs(v.x - t.x) / 2), eb(s, 0) ? (kq(this, e, h, m, n, t, p), x.assign(t)) : (q = t.x, B = A = t.y, A = t.y > n.y ? t.y - y : t.y + y, r = v.x > t.x ? t.x + s : t.x - s, kq(this, e, h, m, n, new N(q, A), p), yf(e, t.x + h, t.y + m, r + h, B + m), x.n(r, B))) : (kq(this, e, h, m, n, t, p), x.assign(t)) } z.A(g) } b = l.q; z.u(l) } return b }; function jq(a, b, c, d) { a = c - a; if (isNaN(a) || Infinity === a || -Infinity === a) return NaN; 0 > a && (a = -a); b = d - b; if (isNaN(b) || Infinity === b || -Infinity === b) return NaN; 0 > b && (b = -b); return td(a, 0) ? b : td(b, 0) ? a : Math.sqrt(a * a + b * b) } function hq(a, b, c, d) { var e = a.sa; if (!(2 > e)) if (c) { var g = a.m(1); c = g.x - d.x; d = g.y - d.y; g = jq(b.x, b.y, c, d); 0 !== g && (e = 2 === e ? .5 * g : g, a = cq(a), a > e && (a = e), c = a * (c - b.x) / g, a = a * (d - b.y) / g, b.x += c, b.y += a) } else g = a.m(e - 2), c = g.x - d.x, d = g.y - d.y, g = jq(b.x, b.y, c, d), 0 !== g && (e = 2 === e ? .5 * g : g, a = dq(a), a > e && (a = e), c = a * (b.x - c) / g, a = a * (b.y - d) / g, b.x -= c, b.y -= a) } function iq(a, b, c, d) { for (var e = a.sa, g = b; td(b.x, g.x) && td(b.y, g.y);) { if (c >= e) return e - 1; g = a.m(c++) } if (!td(b.x, g.x) && !td(b.y, g.y)) return c - 1; for (var h = g; td(b.x, g.x) && td(g.x, h.x) && (!d || (b.y >= g.y ? g.y >= h.y : g.y <= h.y)) || td(b.y, g.y) && td(g.y, h.y) && (!d || (b.x >= g.x ? g.x >= h.x : g.x <= h.x));) { if (c >= e) return e - 1; h = a.m(c++) } return c - 2 } function kq(a, b, c, d, e, g, h) { if (!h && Up(a)) { h = []; var k = 0; a.isVisible() && (k = lq(a, e, g, h)); var l = e.x, l = e.y; if (0 < k) if (eb(e.y, g.y)) if (e.x < g.x) for (var m = 0; m < k;) { var n = Math.max(e.x, Math.min(h[m++] - 5, g.x - 10)); b.lineTo(n + c, g.y + d); for (var l = n + c, p = Math.min(n + 10, g.x); m < k;) { var q = h[m]; if (q < p + 10) m++, p = Math.min(q + 5, g.x); else break } q = (n + p) / 2 + c; q = g.y - 10 + d; n = p + c; p = g.y + d; a.Se === Mi ? R(b, n, p, !1, !1) : S(b, l, q, n, q, n, p) } else for (m = k - 1; 0 <= m;) { n = Math.min(e.x, Math.max(h[m--] + 5, g.x + 10)); b.lineTo(n + c, g.y + d); l = n + c; for (p = Math.max(n - 10, g.x); 0 <= m;) if (q = h[m], q > p - 10) m--, p = Math.max(q - 5, g.x); else break; q = g.y - 10 + d; n = p + c; p = g.y + d; a.Se === Mi ? R(b, n, p, !1, !1) : S(b, l, q, n, q, n, p) } else if (eb(e.x, g.x)) if (e.y < g.y) for (m = 0; m < k;) { n = Math.max(e.y, Math.min(h[m++] - 5, g.y - 10)); b.lineTo(g.x + c, n + d); l = n + d; for (p = Math.min(n + 10, g.y); m < k;) if (q = h[m], q < p + 10) m++, p = Math.min(q + 5, g.y); else break; q = g.x - 10 + c; n = g.x + c; p += d; a.Se === Mi ? R(b, n, p, !1, !1) : S(b, q, l, q, p, n, p) } else for (m = k - 1; 0 <= m;) { n = Math.min(e.y, Math.max(h[m--] + 5, g.y + 10)); b.lineTo(g.x + c, n + d); l = n + d; for (p = Math.max(n - 10, g.y); 0 <= m;) if (q = h[m], q > p - 10) m--, p = Math.max(q - 5, g.y); else break; q = g.x - 10 + c; n = g.x + c; p += d; a.Se === Mi ? R(b, n, p, !1, !1) : S(b, q, l, q, p, n, p) } } b.lineTo(g.x + c, g.y + d) } function lq(a, b, c, d) { var e = a.h; if (null === e || b.N(c)) return 0; for (e = e.mn; e.next();) { var g = e.value; if (null !== g && g.visible) for (var g = g.mb.o, h = g.length, k = 0; k < h; k++) { var l = g[k]; if (l instanceof G) { if (l === a) return 0 < d.length && d.sort(function(a, b) { return a - b }), d.length; if (l.isVisible() && Up(l)) { var m = l.un; m.F() && a.un.Ig(m) && !a.usesSamePort(l) && (m = l.path, null !== m && m.nj() && mq(b, c, d, l)) } } } } 0 < d.length && d.sort(function(a, b) { return a - b }); return d.length } function mq(a, b, c, d) { for (var e = eb(a.y, b.y), g = d.sa, h = d.m(0), k = z.O(), l = 1; l < g; l++) { var m = d.m(l); if (l < g - 1) { var n = d.m(l + 1); if (h.y === m.y && m.y === n.y) { if (m.x > h.x && n.x > m.x || m.x < h.x && n.x < m.x) m = n, l++ } else h.x === m.x && m.x === n.x && (m.y > h.y && n.y > m.y || m.y < h.y && n.y < m.y) && (m = n, l++) } a: { var n = k, p = a.x, q = a.y, r = b.x, s = b.y, t = h.x, h = h.y, v = m.x, x = m.y; if (!eb(p, r)) { if (eb(q, s) && eb(t, v) && Math.min(p, r) < t && Math.max(p, r) > t && Math.min(h, x) < q && Math.max(h, x) > q && !eb(h, x)) { n.x = t; n.y = q; n = !0; break a } } else if (!eb(q, s) && eb(h, x) && Math.min(q, s) < h && Math.max(q, s) > h && Math.min(t, v) < p && Math.max(t, v) > p && !eb(t, v)) { n.x = p; n.y = h; n = !0; break a } n.x = 0;n.y = 0;n = !1 } n && (e ? c.push(k.x) : c.push(k.y)); h = m } z.A(k) } z.w(G, { Bt: "firstPickIndex" }, function() { return 2 >= this.sa ? 0 : this.rc || Xp(this) !== Yb ? 1 : 0 }); z.w(G, { ox: "lastPickIndex" }, function() { var a = this.sa; return 0 === a ? 0 : 2 >= a ? a - 1 : this.rc || Yp(this) !== Yb ? a - 2 : a - 1 }); function Up(a) { a = a.Se; return a === Li || a === Mi } function Wp(a, b) { if (b || Up(a)) { var c = a.h; null === c || c.Rk.contains(a) || null === a.cw || c.Rk.add(a, a.cw) } } function Oi(a, b) { var c = a.layer; if (null !== c && c.visible && !c.Nc) { var d = c.h; if (null !== d) for (var e = !1, d = d.mn; d.next();) { var g = d.value; if (g.visible) if (g === c) for (var e = !0, h = !1, g = g.mb.o, k = g.length, l = 0; l < k; l++) { var m = g[l]; m instanceof G && (m === a ? h = !0 : h && nq(a, m, b)) } else if (e) for (g = g.mb.o, k = g.length, l = 0; l < k; l++) m = g[l], m instanceof G && nq(a, m, b) } } } function nq(a, b, c) { if (null !== b && null !== b.ab && Up(b)) { var d = b.un; d.F() && (a.un.Ig(d) || c.Ig(d)) && (a.usesSamePort(b) || b.Ae()) } } G.prototype.usesSamePort = function(a) { var b = this.sa, c = a.sa; if (0 < b && 0 < c) { var d = this.m(0), e = a.m(0); if (d.Mc(e)) return !0; b = this.m(b - 1); a = a.m(c - 1); if (b.Mc(a) || d.Mc(a) || b.Mc(e)) return !0 } else if (this.Y === a.Y || this.da === a.da || this.Y === a.da || this.da === a.Y) return !0; return !1 }; G.prototype.isVisible = function() { if (!D.prototype.isVisible.call(this)) return !1; var a = this.Va, b = !0, c = this.h; null !== c && (b = c.ce); c = this.Y; if (null !== c) { if (this.Oc && b && !c.vd) return !1; if (c === a) return !0; c = c.findVisibleNode(); if (null === c || c === a) return !1 } c = this.da; if (null !== c) { if (this.Oc && !b && !c.vd) return !1; if (c === a) return !0; b = c.findVisibleNode(); if (null === b || b === a) return !1 } return !0 }; G.prototype.wd = function(a) { D.prototype.wd.call(this, a); null !== this.ri && this.ri.zp(); if (null !== this.Ke) for (var b = this.Ke.i; b.next();) b.value.wd(a) }; z.defineProperty(G, { it: "adjusting" }, function() { return this.mq }, function(a) { var b = this.mq; b !== a && (u && z.Ba(a, G, G, "adjusting"), this.mq = a, this.j("adjusting", b, a)) }); z.defineProperty(G, { Kz: "corner" }, function() { return this.Fq }, function(a) { var b = this.Fq; b !== a && (u && z.g(a, "number", G, "corner"), this.Fq = a, this.Ae(), this.j("corner", b, a)) }); z.defineProperty(G, { Se: "curve" }, function() { return this.Iq }, function(a) { var b = this.Iq; b !== a && (u && z.Ba(a, G, G, "curve"), this.Iq = a, this.qc(), this.Ae(), Wp(this, b === Mi || b === Li || a === Mi || a === Li), this.j("curve", b, a)) }); z.defineProperty(G, { Qw: "curviness" }, function() { return this.Jq }, function(a) { var b = this.Jq; b !== a && (u && z.g(a, "number", G, "curviness"), this.Jq = a, this.qc(), this.Ae(), this.j("curviness", b, a)) }); z.defineProperty(G, { Gx: "routing" }, function() { return this.Dm }, function(a) { var b = this.Dm; b !== a && (u && z.Ba(a, G, G, "routing"), this.Dm = a, this.Di = null, this.qc(), Wp(this, 2 === (b.value & 2) || 2 === (a.value & 2)), this.j("routing", b, a)) }); z.defineProperty(G, { cq: "smoothness" }, function() { return this.Ms }, function(a) { var b = this.Ms; b !== a && (u && z.g(a, "number", G, "smoothness"), this.Ms = a, this.Ae(), this.j("smoothness", b, a)) }); function Sp(a) { var b = a.pg; if (null !== b) { var c = a.Bg; if (null !== c) { var d = a.Oh; a = a.ei; for (var e = null, g = null, h = b.mc.o, k = h.length, l = 0; l < k; l++) { var m = h[l]; if (m.pg === b && m.Oh === d && m.Bg === c && m.ei === a || m.pg === c && m.Oh === a && m.Bg === b && m.ei === d) null === g ? g = m : (null === e && (e = [], e.push(g)), e.push(m)) } if (null !== e) { g = Ap(b, c, d, a); null === g && (g = new wk, g.Op = b, g.yx = d, g.du = c, g.zx = a, zp(b, g), zp(c, g)); g.links = e; for (l = 0; l < e.length; l++) m = e[l], m.ri = g; g.zp() } } } } function Rp(a) { var b = a.ri; null !== b && (a.ri = null, a = b.links.indexOf(a), 0 <= a && (z.hi(b.links, a), b.zp())) } function wk() { z.kc(this); this.zv = !1; this.zx = this.du = this.yx = this.Op = null; this.links = [] } wk.prototype.zp = function() { if (!this.zv) { var a = this.links; 0 < a.length && (a = a[0].h, null !== a && a.jC.add(this)) } this.zv = !0 }; wk.prototype.dB = function() { if (this.zv) { this.zv = !1; var a = this.links; if (0 < a.length) { var b = a[0], c = b.h; b.arrangeBundledLinks(a, null === c || c.kn); 1 === a.length && (b.ri = null, a.length = 0) } 0 === a.length && (a = this.Op, null !== this && null !== a.Hh && a.Hh.remove(this), a = this.du, null !== this && null !== a.Hh && a.Hh.remove(this)) } }; z.Yd(wk, { Op: !0, yx: !0, du: !0, zx: !0, links: !0, spacing: !0 }); function jm() { z.kc(this); this.UA = this.group = null; this.yp = !0; this.abort = !1; this.Tf = this.Sf = 1; this.Hr = this.Gr = -1; this.zd = this.Rd = 8; this.lc = null; this.gG = !1; this.NF = 22; this.WE = 111 } z.Yd(jm, { group: !0, UA: !0, yp: !0, abort: !0, gG: !0, NF: !0, WE: !0 }); jm.prototype.initialize = function(a) { if (!(0 >= a.width || 0 >= a.height)) { var b = a.y, c = a.x + a.width, d = a.y + a.height; this.Sf = Math.floor((a.x - this.Rd) / this.Rd) * this.Rd; this.Tf = Math.floor((b - this.zd) / this.zd) * this.zd; this.Gr = Math.ceil((c + 2 * this.Rd) / this.Rd) * this.Rd; this.Hr = Math.ceil((d + 2 * this.zd) / this.zd) * this.zd; a = 1 + (Math.ceil((this.Gr - this.Sf) / this.Rd) | 0); b = 1 + (Math.ceil((this.Hr - this.Tf) / this.zd) | 0); if (null === this.lc || this.Om < a - 1 || this.Pm < b - 1) { c = []; for (d = 0; d <= a; d++) { for (var e = [], g = 0; g <= b; g++) e[g] = 0; c[d] = e } this.lc = c; this.Om = a - 1; this.Pm = b - 1 } if (null !== this.lc) for (a = 0; a <= this.Om; a++) for (b = 0; b <= this.Pm; b++) this.lc[a][b] = 999999 } }; z.w(jm, { vb: null }, function() { return new w(this.Sf, this.Tf, this.Gr - this.Sf, this.Hr - this.Tf) }); z.defineProperty(jm, { ep: null }, function() { return this.Rd }, function(a) { 0 < a && a !== this.Rd && (this.Rd = a, this.initialize(this.vb)) }); z.defineProperty(jm, { cp: null }, function() { return this.zd }, function(a) { 0 < a && a !== this.zd && (this.zd = a, this.initialize(this.vb)) }); function oq(a, b, c) { return a.Sf <= b && b <= a.Gr && a.Tf <= c && c <= a.Hr } function fq(a, b, c) { if (!oq(a, b, c)) return 0; b -= a.Sf; b /= a.Rd; c -= a.Tf; c /= a.zd; return a.lc[b | 0][c | 0] } function mm(a, b, c) { oq(a, b, c) && (b -= a.Sf, b /= a.Rd, c -= a.Tf, c /= a.zd, a.lc[b | 0][c | 0] = 0) } function lm(a) { if (null !== a.lc) for (var b = 0; b <= a.Om; b++) for (var c = 0; c <= a.Pm; c++) 1 <= a.lc[b][c] && (a.lc[b][c] |= 999999) } jm.prototype.Dp = function(a, b, c, d) { if (a > this.Gr || a + c < this.Sf || b > this.Hr || b + d < this.Tf) return !0; a = (a - this.Sf) / this.Rd | 0; b = (b - this.Tf) / this.zd | 0; c = Math.max(0, c) / this.Rd + 1 | 0; var e = Math.max(0, d) / this.zd + 1 | 0; 0 > a && (c += a, a = 0); 0 > b && (e += b, b = 0); if (0 > c || 0 > e) return !0; d = Math.min(a + c - 1, this.Om) | 0; for (c = Math.min(b + e - 1, this.Pm) | 0; a <= d; a++) for (e = b; e <= c; e++) if (0 === this.lc[a][e]) return !1; return !0 }; function pq(a, b, c, d, e, g, h, k, l) { if (!(b < g || b > h || c < k || c > l)) { var m, n; m = b | 0; n = c | 0; var p = a.lc[m][n]; if (1 <= p && 999999 > p) for (e ? n += d : m += d, p += 1; g <= m && m <= h && k <= n && n <= l && !(p >= a.lc[m][n]);) a.lc[m][n] = p, p += 1, e ? n += d : m += d; m = e ? n : m; if (e) if (0 < d) for (c += d; c < m; c += d) pq(a, b, c, 1, !e, g, h, k, l), pq(a, b, c, -1, !e, g, h, k, l); else for (c += d; c > m; c += d) pq(a, b, c, 1, !e, g, h, k, l), pq(a, b, c, -1, !e, g, h, k, l); else if (0 < d) for (b += d; b < m; b += d) pq(a, b, c, 1, !e, g, h, k, l), pq(a, b, c, -1, !e, g, h, k, l); else for (b += d; b > m; b += d) pq(a, b, c, 1, !e, g, h, k, l), pq(a, b, c, -1, !e, g, h, k, l) } } function qq(a, b, c, d, e, g, h, k, l, m, n) { for (var p = b | 0, q = c | 0, r = a.lc[p][q]; 0 === r && p > k && p < l && q > m && q < n;) if (h ? q += g : p += g, r = a.lc[p][q], 1 >= Math.abs(p - d) && 1 >= Math.abs(q - e)) return a.abort = !0, 0; p = b | 0; q = c | 0; r = a.lc[p][q]; b = 1; for (a.lc[p][q] = b; 0 === r && p > k && p < l && q > m && q < n;) h ? q += g : p += g, r = a.lc[p][q], a.lc[p][q] = b, b += 1; return h ? q : p } function eq(a, b, c, d, e, g) { if (null !== a.lc) { a.abort = !1; var h = b.x, k = b.y; if (oq(a, h, k)) { var h = h - a.Sf, h = h / a.Rd, k = k - a.Tf, k = k / a.zd, l = d.x, m = d.y; if (oq(a, l, m)) if (l -= a.Sf, l /= a.Rd, m -= a.Tf, m /= a.zd, 1 >= Math.abs(h - l) && 1 >= Math.abs(k - m)) a.abort = !0; else { var n = g.x; b = g.y; d = g.x + g.width; var p = g.y + g.height, n = n - a.Sf, n = n / a.Rd; b -= a.Tf; b /= a.zd; d -= a.Sf; d /= a.Rd; p -= a.Tf; p /= a.zd; g = Math.max(0, Math.min(a.Om, n | 0)); d = Math.min(a.Om, Math.max(0, d | 0)); b = Math.max(0, Math.min(a.Pm, b | 0)); var p = Math.min(a.Pm, Math.max(0, p | 0)), h = h | 0, k = k | 0, l = l | 0, m = m | 0, n = h, q = k, r = 0 === c || 90 === c ? 1 : -1; (c = 90 === c || 270 === c) ? q = qq(a, h, k, l, m, r, c, g, d, b, p): n = qq(a, h, k, l, m, r, c, g, d, b, p); if (!a.abort) { a: { c = 0 === e || 90 === e ? 1 : -1;e = 90 === e || 270 === e; for (var r = l | 0, s = m | 0, t = a.lc[r][s]; 0 === t && r > g && r < d && s > b && s < p;) if (e ? s += c : r += c, t = a.lc[r][s], 1 >= Math.abs(r - h) && 1 >= Math.abs(s - k)) { a.abort = !0; break a } r = l | 0;s = m | 0;t = a.lc[r][s]; for (a.lc[r][s] = 999999; 0 === t && r > g && r < d && s > b && s < p;) e ? s += c : r += c, t = a.lc[r][s], a.lc[r][s] = 999999 } a.abort || (pq(a, n, q, 1, !1, g, d, b, p), pq(a, n, q, -1, !1, g, d, b, p), pq(a, n, q, 1, !0, g, d, b, p), pq(a, n, q, -1, !0, g, d, b, p)) } } } } } function aq() { z.kc(this); this.port = this.Pc = null; this.fg = []; this.Np = !1 } z.Yd(aq, { Pc: !0, port: !0, fg: !0, Np: !0 }); aq.prototype.toString = function() { for (var a = this.fg, b = this.Pc.toString() + " " + a.length.toString() + ":", c = 0; c < a.length; c++) { var d = a[c]; null !== d && (b += "\n " + d.toString()) } return b }; function rq(a, b, c, d) { b = b.offsetY; switch (b) { case z.ed: return 90; case z.Tc: return 180; case z.pd: return 270; case z.fd: return 0 } switch (b) { case z.ed | z.pd: return 180 < c ? 270 : 90; case z.Tc | z.fd: return 90 < c && 270 >= c ? 180 : 0 } a = 180 * Math.atan2(a.height, a.width) / Math.PI; switch (b) { case z.Tc | z.pd: return c > a && c <= 180 + a ? 180 : 270; case z.pd | z.fd: return c > 180 - a && c <= 360 - a ? 270 : 0; case z.fd | z.ed: return c > a && c <= 180 + a ? 90 : 0; case z.ed | z.Tc: return c > 180 - a && c <= 360 - a ? 180 : 90; case z.Tc | z.pd | z.fd: return 90 < c && c <= 180 + a ? 180 : c > 180 + a && c <= 360 - a ? 270 : 0; case z.pd | z.fd | z.ed: return 180 < c && c <= 360 - a ? 270 : c > a && 180 >= c ? 90 : 0; case z.fd | z.ed | z.Tc: return c > a && c <= 180 - a ? 90 : c > 180 - a && 270 >= c ? 180 : 0; case z.ed | z.Tc | z.pd: return c > 180 - a && c <= 180 + a ? 180 : c > 180 + a ? 270 : 90 } d && b !== (z.Tc | z.pd | z.fd | z.ed) && (c -= 15, 0 > c && (c += 360)); return c > a && c < 180 - a ? 90 : c >= 180 - a && c <= 180 + a ? 180 : c > 180 + a && c < 360 - a ? 270 : 0 } aq.prototype.zp = function() { this.fg.length = 0 }; function bq(a, b) { var c = a.fg; if (0 === c.length) { a: if (!a.Np) { c = a.Np; a.Np = !0; var d, e = null, g = a.Pc, g = g instanceof F ? g : null; if (null === g || g.re) d = a.Pc.qE(a.port.yd); else { if (!g.W.F()) { a.Np = c; break a } e = g; d = e.pE() } var h = a.fg.length = 0, k = a.port.fb(Zb, z.O()), l = a.port.fb(ic, z.O()), g = z.yk(k.x, k.y, 0, 0); g.vj(l); z.A(k); z.A(l); k = z.Tb(g.x + g.width / 2, g.y + g.height / 2); for (d = d.i; d.next();) if (l = d.value, l.isVisible()) { var m = Yb, n = l.md === a.port || l.Y.li(e), m = n ? Xp(l, a.port) : Yp(l, a.port); if (m.kj() && (n = n ? l.Qd : l.md, null !== n)) { var p = n.ca; if (null !== p) { var n = l.computeOtherPoint(p, n), p = k.Ec(n), m = rq(g, m, p, l.rc), q = 0; 0 === m ? (q = z.fd, 180 < p && (p -= 360)) : q = 90 === m ? z.ed : 180 === m ? z.Tc : z.pd; m = a.fg[h]; void 0 === m ? (m = new sq(l, p, q), a.fg[h] = m) : (m.link = l, m.angle = p, m.se = q); m.wx.set(n); h++ } } } z.A(k); a.fg.sort(aq.prototype.LI); e = a.fg.length; k = -1; for (h = d = 0; h < e; h++) m = a.fg[h], void 0 !== m && (m.se !== k && (k = m.se, d = 0), m.wp = d, d++); k = -1; d = 0; for (h = e - 1; 0 <= h; h--) m = a.fg[h], void 0 !== m && (m.se !== k && (k = m.se, d = m.wp + 1), m.an = d); h = a.fg; n = a.port; e = a.Pc.TI; k = z.O(); d = z.O(); l = z.O(); m = z.O(); n.fb(Zb, k); n.fb(cc, d); n.fb(ic, l); n.fb(gc, m); var r = q = p = n = 0; if (e === yp) for (var s = 0; s < h.length; s++) { var t = h[s]; if (null !== t) { var v = t.link.computeThickness(); switch (t.se) { case z.ed: q += v; break; case z.Tc: r += v; break; case z.pd: n += v; break; default: case z.fd: p += v } } } for (var x = 0, y = 0, A = 1, s = 0; s < h.length; s++) if (t = h[s], null !== t) { var B, L; if (x !== t.se) { x = t.se; switch (x) { case z.ed: B = l; L = m; break; case z.Tc: B = m; L = k; break; case z.pd: B = k; L = d; break; default: case z.fd: B = d, L = l } var H = L.x - B.x; L = L.y - B.y; switch (x) { case z.ed: q > Math.abs(H) ? (A = Math.abs(H) / q, q = Math.abs(H)) : A = 1; break; case z.Tc: r > Math.abs(L) ? (A = Math.abs(L) / r, r = Math.abs(L)) : A = 1; break; case z.pd: n > Math.abs(H) ? (A = Math.abs(H) / n, n = Math.abs(H)) : A = 1; break; default: case z.fd: p > Math.abs(L) ? (A = Math.abs(L) / p, p = Math.abs(L)) : A = 1 } y = 0 } var U = t.Fp; if (e === yp) { v = t.link.computeThickness(); v *= A; U.set(B); switch (x) { case z.ed: U.x = B.x + H / 2 + q / 2 - y - v / 2; break; case z.Tc: U.y = B.y + L / 2 + r / 2 - y - v / 2; break; case z.pd: U.x = B.x + H / 2 - n / 2 + y + v / 2; break; default: case z.fd: U.y = B.y + L / 2 - p / 2 + y + v / 2 } y += v } else v = .5, e === vp && (v = (t.wp + 1) / (t.an + 1)), U.x = B.x + H * v, U.y = B.y + L * v } z.A(k); z.A(d); z.A(l); z.A(m); B = a.fg; for (H = 0; H < B.length; H++) L = B[H], null !== L && (L.Uw = a.computeEndSegmentLength(L)); a.Np = c; z.dc(g) }c = a.fg } for (g = 0; g < c.length; g++) if (B = c[g], null !== B && B.link === b) return B; return null } aq.prototype.LI = function(a, b) { return a === b ? 0 : null === a ? -1 : null === b ? 1 : a.se < b.se ? -1 : a.se > b.se ? 1 : a.angle < b.angle ? -1 : a.angle > b.angle ? 1 : 0 }; aq.prototype.computeEndSegmentLength = function(a) { var b = a.link, c = b.computeEndSegmentLength(this.Pc, this.port, Yb, b.md === this.port), d = a.wp; if (0 > d) return c; var e = a.an; if (1 >= e || !b.rc) return c; var b = a.wx, g = a.Fp; if (a.se === z.Tc || a.se === z.ed) d = e - 1 - d; return ((a = a.se === z.Tc || a.se === z.fd) ? b.y < g.y : b.x < g.x) ? c + 8 * d : (a ? b.y === g.y : b.x === g.x) ? c : c + 8 * (e - 1 - d) }; function sq(a, b, c) { this.link = a; this.angle = b; this.se = c; this.wx = new N; this.an = this.wp = 0; this.Fp = new N; this.Uw = 0 } z.Yd(sq, { link: !0, angle: !0, se: !0, wx: !0, wp: !0, an: !0, Fp: !0, Uw: !0 }); sq.prototype.toString = function() { return this.link.toString() + " " + this.angle.toString() + " " + this.se.toString() + ":" + this.wp.toString() + "/" + this.an.toString() + " " + this.Fp.toString() + " " + this.Uw.toString() + " " + this.wx.toString() }; function Fm() { this.gk = this.Gj = Pc; this.ek = this.Ej = NaN; this.dk = this.Dj = wp; this.fk = this.Fj = NaN } Fm.prototype.copy = function() { var a = new Fm; a.Gj = this.Gj.V(); a.gk = this.gk.V(); a.Ej = this.Ej; a.ek = this.ek; a.Dj = this.Dj; a.dk = this.dk; a.Fj = this.Fj; a.fk = this.fk; return a }; function F(a) { 0 === arguments.length ? E.call(this, ej) : E.call(this, a); this.Jr = new K(D); this.wm = new K(F); this.hl = this.Kr = this.Ir = null; this.$s = !1; this.pr = !0; this.at = !1; this.Lb = this.Qs = null; this.xq = !1; this.yq = !0; this.er = this.zq = !1; this.he = new vg; this.he.group = this; this.dz = !1 } z.Qa(F, E); z.ia("Group", F); F.prototype.cloneProtected = function(a) { E.prototype.cloneProtected.call(this, a); a.Ir = this.Ir; a.Kr = this.Kr; a.hl = this.hl; a.$s = this.$s; a.pr = this.pr; a.at = this.at; a.Qs = this.Qs; var b = a.yt(function(a) { return a instanceof Zi }); a.Lb = b instanceof Zi ? b : null; a.xq = this.xq; a.yq = this.yq; a.zq = this.zq; a.er = this.er; null !== this.he ? (a.he = this.he.copy(), a.he.group = a) : (null !== a.he && (a.he.group = null), a.he = null) }; F.prototype.ji = function(a) { E.prototype.ji.call(this, a); var b = a.np(); for (a = a.Hc; a.next();) { var c = a.value; c.S(); c.I(8); c.pt(); if (c instanceof E) c.mf(b); else if (c instanceof G) for (c = c.Hf; c.next();) c.value.mf(b) } }; F.prototype.tn = function(a, b, c, d, e, g, h) { if (a === Uf && "elements" === b) if (e instanceof Zi) { var k = e; null === this.Lb ? this.Lb = k : this.Lb !== k && z.k("Cannot insert a second Placeholder into the visual tree of a Group.") } else e instanceof I && (k = e.yt(function(a) { return a instanceof Zi }), k instanceof Zi && (null === this.Lb ? this.Lb = k : this.Lb !== k && z.k("Cannot insert a second Placeholder into the visual tree of a Group."))); else a === Vf && "elements" === b && null !== this.Lb && (d === this.Lb ? this.Lb = null : d instanceof I && this.Lb.Pl(d) && (this.Lb = null)); E.prototype.tn.call(this, a, b, c, d, e, g, h) }; F.prototype.$i = function(a, b, c, d) { this.gl = this.Lb; I.prototype.$i.call(this, a, b, c, d) }; F.prototype.Ql = function() { if (!E.prototype.Ql.call(this)) return !1; for (var a = this.Hc; a.next();) { var b = a.value; if (b instanceof E) { if (b.isVisible() && nl(b)) return !1 } else if (b instanceof G && b.isVisible() && nl(b) && b.Y !== this && b.da !== this) return !1 } return !0 }; z.w(F, { placeholder: "placeholder" }, function() { return this.Lb }); z.defineProperty(F, { VD: "computesBoundsAfterDrag" }, function() { return this.xq }, function(a) { var b = this.xq; b !== a && (z.g(a, "boolean", F, "computesBoundsAfterDrag"), this.xq = a, this.j("computesBoundsAfterDrag", b, a)) }); z.defineProperty(F, { Ow: "computesBoundsIncludingLinks" }, function() { return this.yq }, function(a) { z.g(a, "boolean", F, "computesBoundsIncludingLinks"); var b = this.yq; b !== a && (this.yq = a, this.j("computesBoundsIncludingLinks", b, a)) }); z.defineProperty(F, { gH: "computesBoundsIncludingLocation" }, function() { return this.zq }, function(a) { z.g(a, "boolean", F, "computesBoundsIncludingLocation"); var b = this.zq; b !== a && (this.zq = a, this.j("computesBoundsIncludingLocation", b, a)) }); z.defineProperty(F, { UH: "handlesDragDropForMembers" }, function() { return this.er }, function(a) { z.g(a, "boolean", F, "handlesDragDropForMembers"); var b = this.er; b !== a && (this.er = a, this.j("handlesDragDropForMembers", b, a)) }); z.w(F, { Hc: "memberParts" }, function() { return this.Jr.i }); function rp(a, b) { if (a.Jr.add(b)) { b instanceof F && a.wm.add(b); var c = a.DI; if (null !== c) { var d = !0, e = a.h; null !== e && (d = e.$a, e.$a = !0); c(a, b); null !== e && (e.$a = d) } a.isVisible() && a.re || b.wd(!1) } b instanceof G && !a.Ow || (c = a.Lb, null === c && (c = a), c.S()) } function qp(a, b) { if (a.Jr.remove(b)) { b instanceof F && a.wm.remove(b); var c = a.EI; if (null !== c) { var d = !0, e = a.h; null !== e && (d = e.$a, e.$a = !0); c(a, b); null !== e && (e.$a = d) } a.isVisible() && a.re || b.wd(!0) } b instanceof G && !a.Ow || (c = a.Lb, null === c && (c = a), c.S()) } F.prototype.cn = function() { if (0 < this.Jr.count) { var a = this.h; if (null !== a) for (var b = this.Jr.copy().i; b.next();) a.remove(b.value) } E.prototype.cn.call(this) }; z.defineProperty(F, { Sb: "layout" }, function() { return this.he }, function(a) { var b = this.he; b !== a && (null !== a && z.l(a, vg, F, "layout"), null !== b && (b.h = null, b.group = null), this.he = a, null !== a && (a.h = this.h, a.group = this), this.j("layout", b, a)) }); z.defineProperty(F, { DI: "memberAdded" }, function() { return this.Ir }, function(a) { var b = this.Ir; b !== a && (null !== a && z.g(a, "function", F, "memberAdded"), this.Ir = a, this.j("memberAdded", b, a)) }); z.defineProperty(F, { EI: "memberRemoved" }, function() { return this.Kr }, function(a) { var b = this.Kr; b !== a && (null !== a && z.g(a, "function", F, "memberRemoved"), this.Kr = a, this.j("memberRemoved", b, a)) }); z.defineProperty(F, { qA: "memberValidation" }, function() { return this.hl }, function(a) { var b = this.hl; b !== a && (null !== a && z.g(a, "function", F, "memberValidation"), this.hl = a, this.j("memberValidation", b, a)) }); F.prototype.canAddMembers = function(a) { var b = this.h; if (null === b) return !1; b = b.wb; for (a = kh(a).i; a.next();) if (!b.isValidMember(this, a.value)) return !1; return !0 }; F.prototype.addMembers = function(a, b) { var c = this.h; if (null === c) return !1; for (var c = c.wb, d = !0, e = kh(a).i; e.next();) { var g = e.value; !b || c.isValidMember(this, g) ? g.Va = this : d = !1 } return d }; z.defineProperty(F, { AJ: "ungroupable" }, function() { return this.$s }, function(a) { var b = this.$s; b !== a && (z.g(a, "boolean", F, "ungroupable"), this.$s = a, this.j("ungroupable", b, a)) }); F.prototype.canUngroup = function() { if (!this.AJ) return !1; var a = this.layer; if (null !== a && !a.Iw) return !1; a = a.h; return null === a || a.Iw ? !0 : !1 }; F.prototype.mf = function(a) { void 0 === a && (a = null); E.prototype.mf.call(this, a); for (var b = this.pE(); b.next();) { var c = b.value; if (null === a || !a.contains(c)) { var d = c.Y; null !== d && d !== this && d.li(this) && !d.isVisible() ? c.qc() : (d = c.da, null !== d && d !== this && d.li(this) && !d.isVisible() && c.qc()) } } }; F.prototype.findExternalLinksConnected = F.prototype.pE = function() { var a = this.np(); a.add(this); for (var b = new K(G), c = a.i; c.next();) { var d = c.value; if (d instanceof E) for (d = d.ee; d.next();) { var e = d.value; a.contains(e) || b.add(e) } } return b.i }; F.prototype.findExternalNodesConnected = function() { var a = this.np(); a.add(this); for (var b = new K(E), c = a.i; c.next();) { var d = c.value; if (d instanceof E) for (d = d.ee; d.next();) { var e = d.value, g = e.Y; a.contains(g) && g !== this || b.add(g); e = e.da; a.contains(e) && e !== this || b.add(e) } } return b.i }; F.prototype.findContainingGroupChain = function() { function a(b, d) { null !== b && (d.add(b), a(b.Va, d)) } var b = new K(D); a(this, b); return b }; F.prototype.findSubGraphParts = F.prototype.np = function() { var a = new K(D); eh(a, this, !0, 0, !0); a.remove(this); return a }; F.prototype.wd = function(a) { E.prototype.wd.call(this, a); for (var b = this.Hc; b.next();) b.value.wd(a) }; F.prototype.collapseSubGraph = F.prototype.collapseSubGraph = function() { var a = this.h; if (null !== a && !a.vh) { a.vh = !0; var b = this.np(); tq(this, b, a.Ua, this); a.vh = !1 } }; function tq(a, b, c, d) { for (var e = a.Hc; e.next();) { var g = e.value; g.wd(!1); if (g instanceof F) { var h = g; h.re && (h.fB = h.re, tq(h, b, c, d)) } if (g instanceof E) g.mf(b), ek(c, g, d); else if (g instanceof G) for (g = g.Hf; g.next();) g.value.mf(b) } a.re = !1 } F.prototype.expandSubGraph = F.prototype.expandSubGraph = function() { var a = this.h; if (null !== a && !a.vh) { a.vh = !0; var b = this.np(); uq(this, b, a.Ua, this); a.vh = !1 } }; function uq(a, b, c, d) { for (var e = a.Hc; e.next();) { var g = e.value; g.wd(!0); if (g instanceof F) { var h = g; h.fB && (h.fB = !1, uq(h, b, c, d)) } if (g instanceof E) g.mf(b), dk(c, g, d); else if (g instanceof G) for (g = g.Hf; g.next();) g.value.mf(b) } a.re = !0 } z.defineProperty(F, { re: "isSubGraphExpanded" }, function() { return this.pr }, function(a) { var b = this.pr; if (b !== a) { z.g(a, "boolean", F, "isSubGraphExpanded"); this.pr = a; var c = this.h; this.j("isSubGraphExpanded", b, a); b = this.qJ; if (null !== b) { var d = !0; null !== c && (d = c.$a, c.$a = !0); b(this); null !== c && (c.$a = d) } null !== c && c.pa.qb ? null !== this.Lb && this.Lb.S() : a ? this.expandSubGraph() : this.collapseSubGraph() } }); z.defineProperty(F, { fB: "wasSubGraphExpanded" }, function() { return this.at }, function(a) { var b = this.at; b !== a && (z.g(a, "boolean", F, "wasSubGraphExpanded"), this.at = a, this.j("wasSubGraphExpanded", b, a)) }); z.defineProperty(F, { qJ: "subGraphExpandedChanged" }, function() { return this.Qs }, function(a) { var b = this.Qs; b !== a && (null !== a && z.g(a, "function", F, "subGraphExpandedChanged"), this.Qs = a, this.j("subGraphExpandedChanged", b, a)) }); F.prototype.move = function(a) { var b = this.position, c = b.x; isNaN(c) && (c = 0); b = b.y; isNaN(b) && (b = 0); var c = a.x - c, b = a.y - b, d = z.Tb(c, b); E.prototype.move.call(this, a); for (a = this.np().i; a.next();) { var e = a.value; if (!(e instanceof G || e instanceof E && e.Df)) { var g = e.position, h = e.location; g.F() ? (d.x = g.x + c, d.y = g.y + b, e.position = d) : h.F() && (d.x = h.x + c, d.y = h.y + b, e.location = d) } } for (a.reset(); a.next();) e = a.value, e instanceof G && (g = e.position, d.x = g.x + c, d.y = g.y + b, e.move(d)); z.A(d) }; function Zi() { O.call(this); this.df = Kd; this.ws = new w(NaN, NaN, NaN, NaN) } z.Qa(Zi, O); z.ia("Placeholder", Zi); Zi.prototype.cloneProtected = function(a) { O.prototype.cloneProtected.call(this, a); a.df = this.df.V(); a.ws = this.ws.copy() }; Zi.prototype.lk = function(a) { if (null === this.background && null === this.vl) return !1; var b = this.Ga; return Jb(0, 0, b.width, b.height, a.x, a.y) }; Zi.prototype.Ip = function() { var a = this.ca; null !== a && (a instanceof F || a instanceof da) || z.k("Placeholder is not inside a Group or Adornment."); if (a instanceof F) { var b = this.computeBorder(this.ws), c = this.Wc; yb(c, b.width || 0, b.height || 0); Jm(this, 0, 0, c.width, c.height); for (var c = a.Hc, d = !1; c.next();) if (c.value.isVisible()) { d = !0; break }!d || isNaN(b.x) || isNaN(b.y) || (c = new N, c.ru(b, a.of), a.location = new N(c.x, c.y)) } else { var b = this.Aa, c = this.Wc, d = this.padding, e = d.left + d.right, g = d.top + d.bottom; if (b.F()) yb(c, b.width + e || 0, b.height + g || 0), Jm(this, -d.left, -d.top, c.width, c.height); else { var h = a.fc, k = h.fb(Zb, z.O()), b = z.yk(k.x, k.y, 0, 0); b.vj(h.fb(ic, k)); b.vj(h.fb(cc, k)); b.vj(h.fb(gc, k)); a.Ki.n(b.x, b.y); yb(c, b.width + e || 0, b.height + g || 0); Jm(this, -d.left, -d.top, c.width, c.height); z.A(k); z.dc(b) } } }; Zi.prototype.$i = function(a, b, c, d) { var e = this.W; e.x = a; e.y = b; e.width = c; e.height = d }; Zi.prototype.computeBorder = function(a) { var b = this.ca; if (b instanceof F) { var c = b; if (c.VD && this.ws.F()) { var d = c.h; if (null !== d && (d = d.eb, d instanceof ih && !d.Uq && null !== d.hc && !d.hc.contains(c))) return a.assign(this.ws), a } } var c = z.kg(), d = this.computeMemberBounds(c), e = this.padding; a.n(d.x - e.left, d.y - e.top, d.width + e.left + e.right, d.height + e.top + e.bottom); z.dc(c); b instanceof F && (c = b, c.gH && c.location.F() && a.vj(c.location)); return a }; Zi.prototype.computeMemberBounds = function(a) { if (!(this.ca instanceof F)) return a.n(0, 0, 0, 0), a; for (var b = this.ca, c = Infinity, d = Infinity, e = -Infinity, g = -Infinity, h = b.Hc; h.next();) { var k = h.value; if (k.isVisible()) { if (k instanceof G) { var l = k; if (!b.Ow) continue; if (ml(l)) continue; if (l.Y === b || l.da === b) continue } k = k.W; k.left < c && (c = k.left); k.top < d && (d = k.top); k.right > e && (e = k.right); k.bottom > g && (g = k.bottom) } } isFinite(c) && isFinite(d) ? a.n(c, d, e - c, g - d) : (b = b.location, c = this.padding, a.n(b.x + c.left, b.y + c.top, 0, 0)); return a }; z.defineProperty(Zi, { padding: "padding" }, function() { return this.df }, function(a) { "number" === typeof a ? ((isNaN(a) || 0 > a) && z.ka(a, ">= 0", Zi, "padding"), a = new Db(a)) : (z.l(a, Db, Zi, "padding"), (isNaN(a.left) || 0 > a.left) && z.ka(a.left, ">= 0", Zi, "padding:value.left"), (isNaN(a.right) || 0 > a.right) && z.ka(a.right, ">= 0", Zi, "padding:value.right"), (isNaN(a.top) || 0 > a.top) && z.ka(a.top, ">= 0", Zi, "padding:value.top"), (isNaN(a.bottom) || 0 > a.bottom) && z.ka(a.bottom, ">= 0", Zi, "padding:value.bottom")); var b = this.df; b.N(a) || (this.df = a = a.V(), this.j("padding", b, a)) }); function vg() { 0 < arguments.length && z.od(vg); z.kc(this); this.Py = this.Z = null; this.Kj = this.lr = !0; this.ur = !1; this.pq = (new N(0, 0)).freeze(); this.nr = this.or = !0; this.VB = ""; this.uo = !1; this.ez = null } z.ia("Layout", vg); vg.prototype.cloneProtected = function(a) { a.lr = this.lr; a.Kj = this.Kj; a.ur = this.ur; a.pq.assign(this.pq); a.or = this.or; a.nr = this.nr; a.VB = this.VB; this.Kj || (a.uo = !0) }; vg.prototype.copy = function() { var a = new this.constructor; this.cloneProtected(a); return a }; vg.prototype.toString = function() { var a = z.kf(Object.getPrototypeOf(this)), a = a + "("; null !== this.group && (a += " in " + this.group); null !== this.h && (a += " for " + this.h); return a + ")" }; z.defineProperty(vg, { h: "diagram" }, function() { return this.Z }, function(a) { null !== a && z.l(a, C, vg, "diagram"); this.Z = a }); z.defineProperty(vg, { group: "group" }, function() { return this.Py }, function(a) { this.Py !== a && (null !== a && z.l(a, F, vg, "group"), this.Py = a, null !== a && (this.Z = a.h)) }); z.defineProperty(vg, { iI: "isOngoing" }, function() { return this.lr }, function(a) { this.lr !== a && (z.g(a, "boolean", vg, "isOngoing"), this.lr = a) }); z.defineProperty(vg, { RE: "isInitial" }, function() { return this.Kj }, function(a) { z.g(a, "boolean", vg, "isInitial"); this.Kj = a; a || (this.uo = !0) }); z.defineProperty(vg, { mx: "isViewportSized" }, function() { return this.ur }, function(a) { this.ur !== a && (z.g(a, "boolean", vg, "isViewportSized"), (this.ur = a) && this.I()) }); z.defineProperty(vg, { Rt: "isRouting" }, function() { return this.or }, function(a) { this.or !== a && (z.g(a, "boolean", vg, "isRouting"), this.or = a) }); z.defineProperty(vg, { SE: "isRealtime" }, function() { return this.nr }, function(a) { this.nr !== a && (z.g(a, "boolean", vg, "isRealtime"), this.nr = a) }); z.defineProperty(vg, { Gf: "isValidLayout" }, function() { return this.uo }, function(a) { this.uo !== a && (z.g(a, "boolean", vg, "isValidLayout"), this.uo = a, a || (a = this.h, null !== a && (a.Qu = !0))) }); vg.prototype.invalidateLayout = vg.prototype.I = function() { if (this.uo) { var a = this.h; if (null !== a && !a.pa.qb) { var b = a.Ua; !b.to && (b.nf && b.oi(), this.iI && a.kn || this.RE && !a.kn) && (this.Gf = !1, a.Ce()) } } }; z.defineProperty(vg, { network: "network" }, function() { return this.ez }, function(a) { var b = this.ez; b !== a && (null !== a && z.l(a, wa, vg, "network"), null !== b && (b.Sb = null), this.ez = a, null !== a && (a.Sb = this)) }); vg.prototype.createNetwork = function() { return new wa }; vg.prototype.makeNetwork = function(a) { var b = this.createNetwork(); b.Sb = this; a instanceof C ? (b.ik(a.Lg, !0), b.ik(a.links, !0)) : a instanceof F ? b.ik(a.Hc) : b.ik(a.i); return b }; vg.prototype.updateParts = function() { var a = this.h; if (null === a && null !== this.network) for (var b = this.network.vertexes.i; b.next();) { var c = b.value.Pc; if (null !== c && (a = c.h, null !== a)) break } this.Gf = !0; try { null !== a && a.Wb("Layout"), this.commitLayout() } finally { null !== a && a.Jd("Layout") } }; vg.prototype.commitLayout = function() { for (var a = this.network.vertexes.i; a.next();) a.value.commit(); if (this.Rt) for (a = this.network.edges.i; a.next();) a.value.commit() }; vg.prototype.doLayout = function(a) { null === a && z.k("Layout.doLayout(collection) argument must not be null but a Diagram, a Group, or an Iterable of Parts"); var b = new K(D); a instanceof C ? (vq(this, b, a.Lg, !0, this.wA, !0, !1, !0), vq(this, b, a.ni, !0, this.wA, !0, !1, !0)) : a instanceof F ? vq(this, b, a.Hc, !1, this.wA, !0, !1, !0) : b.$c(a.i); var c = b.count; if (0 < c) { a = this.h; null !== a && a.Wb("Layout"); for (var c = Math.ceil(Math.sqrt(c)), d = this.je.x, e = d, g = this.je.y, h = 0, k = 0, b = b.i; b.next();) { var l = b.value; l.Bf(); var m = l.Ia, n = m.width, m = m.height; l.moveTo(e, g); l.dz = !1; e += Math.max(n, 50) + 20; k = Math.max(k, Math.max(m, 50)); h >= c - 1 ? (h = 0, e = d, g += k + 20, k = 0) : h++ } null !== a && a.Jd("Layout") } this.Gf = !0 }; vg.prototype.wA = function(a) { return !a.location.F() || a instanceof F && a.dz ? !0 : !1 }; function vq(a, b, c, d, e, g, h, k) { for (c = c.i; c.next();) { var l = c.value; d && !l.Bp || null !== e && !e(l) || !l.canLayout() || (g && l instanceof E ? l.Df || (l instanceof F ? null === l.Sb ? vq(a, b, l.Hc, !1, e, g, h, k) : b.add(l) : b.add(l)) : h && l instanceof G ? b.add(l) : !k || !l.be() || l instanceof E || b.add(l)) } } vg.prototype.collectParts = vg.prototype.aH = function(a) { var b = new K(D); a instanceof C ? (vq(this, b, a.Lg, !0, null, !0, !0, !0), vq(this, b, a.links, !0, null, !0, !0, !0), vq(this, b, a.ni, !0, null, !0, !0, !0)) : a instanceof F ? vq(this, b, a.Hc, !1, null, !0, !0, !0) : vq(this, b, a.i, !1, null, !0, !0, !0); return b }; z.defineProperty(vg, { je: "arrangementOrigin" }, function() { return this.pq }, function(a) { z.l(a, N, vg, "arrangementOrigin"); this.pq.N(a) || (this.pq.assign(a), this.I()) }); vg.prototype.initialOrigin = function(a) { var b = this.group; if (null !== b) { var c = b.position.copy(); (isNaN(c.x) || isNaN(c.y)) && c.set(a); b = b.placeholder; null !== b && (c = b.fb(Zb), (isNaN(c.x) || isNaN(c.y)) && c.set(a), c.x += b.padding.left, c.y += b.padding.top); return c } return a }; function wa() { z.kc(this); this.he = null; this.clear() } z.ia("LayoutNetwork", wa); wa.prototype.clear = function() { if (this.vertexes) for (var a = this.vertexes.i; a.next();) { var b = a.value; b.clear(); b.network = null } if (this.edges) for (a = this.edges.i; a.next();) b = a.value, b.clear(), b.network = null; this.vertexes = new K(xa); this.edges = new K(ya); this.AA = new na(E, xa); this.mA = new na(G, ya) }; wa.prototype.toString = function(a) { void 0 === a && (a = 0); var b = "LayoutNetwork" + (null !== this.Sb ? "(" + this.Sb.toString() + ")" : ""); if (0 >= a) return b; b += " vertexes: " + this.vertexes.count + " edges: " + this.edges.count; if (1 < a) { for (var c = this.vertexes.i; c.next();) b += "\n " + c.value.toString(a - 1); for (c = this.edges.i; c.next();) b += "\n " + c.value.toString(a - 1) } return b }; z.defineProperty(wa, { Sb: "layout" }, function() { return this.he }, function(a) { u && null !== a && z.l(a, vg, wa, "layout"); this.he = a }); wa.prototype.createVertex = function() { return new xa }; wa.prototype.createEdge = function() { return new ya }; wa.prototype.addParts = wa.prototype.ik = function(a, b, c) { if (null !== a) { void 0 === b && (b = !1); z.g(b, "boolean", wa, "addParts:toplevelonly"); void 0 === c && (c = null); null === c && (c = function(a) { if (a instanceof E) return !a.Df; if (a instanceof G) { var b = a.Y; if (null === b || b.Df) return !1; a = a.da; return null === a || a.Df ? !1 : !0 } return !1 }); for (a = a.i; a.next();) { var d = a.value; if (d instanceof E && (!b || d.Bp) && d.canLayout() && c(d)) if (d instanceof F && null === d.Sb) this.ik(d.Hc, !1); else if (null === this.en(d)) { var e = this.createVertex(); e.Pc = d; this.tl(e) } } for (a.reset(); a.next();) if (d = a.value, d instanceof G && (!b || d.Bp) && d.canLayout() && c(d) && null === this.Ww(d)) { var g = d.Y, e = d.da; null !== g && null !== e && g !== e && (g = this.findGroupVertex(g), e = this.findGroupVertex(e), null !== g && null !== e && this.Hp(g, e, d)) } } }; wa.prototype.findGroupVertex = function(a) { if (null === a) return null; var b = a.findVisibleNode(); if (null === b) return null; a = this.en(b); if (null !== a) return a; for (b = b.Va; null !== b;) { a = this.en(b); if (null !== a) return a; b = b.Va } return null }; wa.prototype.addVertex = wa.prototype.tl = function(a) { if (null !== a) { u && z.l(a, xa, wa, "addVertex:vertex"); this.vertexes.add(a); var b = a.Pc; null !== b && this.AA.add(b, a); a.network = this } }; wa.prototype.addNode = wa.prototype.ht = function(a) { if (null === a) return null; u && z.l(a, E, wa, "addNode:node"); var b = this.en(a); null === b && (b = this.createVertex(), b.Pc = a, this.tl(b)); return b }; wa.prototype.deleteVertex = wa.prototype.gE = function(a) { if (null !== a && (u && z.l(a, xa, wa, "deleteVertex:vertex"), wq(this, a))) { for (var b = a.Ze, c = b.count - 1; 0 <= c; c--) { var d = b.ea(c); this.ip(d) } b = a.Te; for (c = b.count - 1; 0 <= c; c--) d = b.ea(c), this.ip(d) } }; function wq(a, b) { if (null === b) return !1; var c = a.vertexes.remove(b); c && (a.AA.remove(b.Pc), b.network = null); return c } wa.prototype.deleteNode = function(a) { null !== a && (u && z.l(a, E, wa, "deleteNode:node"), a = this.en(a), null !== a && this.gE(a)) }; wa.prototype.findVertex = wa.prototype.en = function(a) { if (null === a) return null; u && z.l(a, E, wa, "findVertex:node"); return this.AA.na(a) }; wa.prototype.addEdge = wa.prototype.$o = function(a) { if (null !== a) { u && z.l(a, ya, wa, "addEdge:edge"); this.edges.add(a); var b = a.link; null !== b && null === this.Ww(b) && this.mA.add(b, a); b = a.toVertex; null !== b && b.ED(a); b = a.fromVertex; null !== b && b.DD(a); a.network = this } }; wa.prototype.addLink = function(a) { if (null === a) return null; u && z.l(a, G, wa, "addLink:link"); var b = a.Y, c = a.da, d = this.Ww(a); null === d ? (d = this.createEdge(), d.link = a, null !== b && (d.fromVertex = this.ht(b)), null !== c && (d.toVertex = this.ht(c)), this.$o(d)) : (d.fromVertex = null !== b ? this.ht(b) : null, d.toVertex = null !== c ? this.ht(c) : null); return d }; wa.prototype.deleteEdge = wa.prototype.ip = function(a) { if (null !== a) { u && z.l(a, ya, wa, "deleteEdge:edge"); var b = a.toVertex; null !== b && b.fE(a); b = a.fromVertex; null !== b && b.eE(a); xq(this, a) } }; function xq(a, b) { null !== b && a.edges.remove(b) && (a.mA.remove(b.link), b.network = null) } wa.prototype.deleteLink = function(a) { null !== a && (u && z.l(a, G, wa, "deleteLink:link"), a = this.Ww(a), null !== a && this.ip(a)) }; wa.prototype.findEdge = wa.prototype.Ww = function(a) { if (null === a) return null; u && z.l(a, G, wa, "findEdge:link"); return this.mA.na(a) }; wa.prototype.linkVertexes = wa.prototype.Hp = function(a, b, c) { if (null === a || null === b) return null; u && (z.l(a, xa, wa, "linkVertexes:fromVertex"), z.l(b, xa, wa, "linkVertexes:toVertex"), null !== c && z.l(c, G, wa, "linkVertexes:link")); if (a.network === this && b.network === this) { var d = this.createEdge(); d.link = c; d.fromVertex = a; d.toVertex = b; this.$o(d); return d } return null }; wa.prototype.reverseEdge = wa.prototype.Fx = function(a) { if (null !== a) { u && z.l(a, ya, wa, "reverseEdge:edge"); var b = a.fromVertex, c = a.toVertex; null !== b && null !== c && (b.eE(a), c.fE(a), a.Fx(), b.ED(a), c.DD(a)) } }; wa.prototype.deleteSelfEdges = wa.prototype.Sw = function() { for (var a = z.rb(), b = this.edges.i; b.next();) { var c = b.value; c.fromVertex === c.toVertex && a.push(c) } b = a.length; for (c = 0; c < b; c++) this.ip(a[c]); z.xa(a) }; wa.prototype.deleteArtificialVertexes = function() { for (var a = z.rb(), b = this.vertexes.i; b.next();) { var c = b.value; null === c.Pc && a.push(c) } c = a.length; for (b = 0; b < c; b++) this.gE(a[b]); c = z.rb(); for (b = this.edges.i; b.next();) { var d = b.value; null === d.link && c.push(d) } d = c.length; for (b = 0; b < d; b++) this.ip(c[b]); z.xa(a); z.xa(c) }; function yq(a) { for (var b = z.rb(), c = a.edges.i; c.next();) { var d = c.value; null !== d.fromVertex && null !== d.toVertex || b.push(d) } c = b.length; for (d = 0; d < c; d++) a.ip(b[d]); z.xa(b) } wa.prototype.splitIntoSubNetworks = wa.prototype.pJ = function() { this.deleteArtificialVertexes(); yq(this); this.Sw(); for (var a = new J(wa), b = !0; b;) for (var b = !1, c = this.vertexes.i; c.next();) { var d = c.value; if (0 < d.Ze.count || 0 < d.Te.count) { b = this.Sb.createNetwork(); a.add(b); zq(this, b, d); b = !0; break } } a.sort(function(a, b) { return null === a || null === b || a === b ? 0 : b.vertexes.count - a.vertexes.count }); return a }; function zq(a, b, c) { if (null !== c && c.network !== b) { wq(a, c); b.tl(c); for (var d = c.tc; d.next();) { var e = d.value; e.network !== b && (xq(a, e), b.$o(e), zq(a, b, e.fromVertex)) } for (d = c.pc; d.next();) c = d.value, c.network !== b && (xq(a, c), b.$o(c), zq(a, b, c.toVertex)) } } wa.prototype.findAllParts = function() { for (var a = new K(D), b = this.vertexes.i; b.next();) a.add(b.value.Pc); for (b = this.edges.i; b.next();) a.add(b.value.link); return a }; function xa() { z.kc(this); this.network = null; this.P = (new w(0, 0, 10, 10)).freeze(); this.R = (new N(5, 5)).freeze(); this.clear() } z.ia("LayoutVertex", xa); xa.prototype.clear = function() { this.Bd = this.fe = null; this.Ze = new J(ya); this.Te = new J(ya) }; xa.prototype.toString = function(a) { void 0 === a && (a = 0); var b = "LayoutVertex#" + z.nd(this); if (0 < a && (b += null !== this.Pc ? "(" + this.Pc.toString() + ")" : "", 1 < a)) { a = ""; for (var c = !0, d = this.Ze.i; d.next();) { var e = d.value; c ? c = !1 : a += ","; a += e.toString(0) } e = ""; c = !0; for (d = this.Te.i; d.next();) { var g = d.value; c ? c = !1 : e += ","; e += g.toString(0) } b += " sources: " + a + " destinations: " + e } return b }; z.defineProperty(xa, { data: "data" }, function() { return this.fe }, function(a) { this.fe = a; if (null !== a) { var b = a.bounds; a = b.x; var c = b.y, d = b.width, b = b.height; this.R.n(d / 2, b / 2); this.P.n(a, c, d, b) } }); z.defineProperty(xa, { Pc: "node" }, function() { return this.Bd }, function(a) { if (this.Bd !== a) { u && null !== a && z.l(a, E, xa, "node"); this.Bd = a; a.Bf(); var b = a.W, c = b.x, d = b.y, e = b.width, b = b.height; isNaN(c) && (c = 0); isNaN(d) && (d = 0); this.P.n(c, d, e, b); if (!(a instanceof F) && (a = a.Zb.fb(ec), a.F())) { this.R.n(a.x - c, a.y - d); return } this.R.n(e / 2, b / 2) } }); z.defineProperty(xa, { vb: "bounds" }, function() { return this.P }, function(a) { this.P.N(a) || (u && z.l(a, w, xa, "bounds"), this.P.assign(a)) }); z.defineProperty(xa, { focus: "focus" }, function() { return this.R }, function(a) { this.R.N(a) || (u && z.l(a, N, xa, "focus"), this.R.assign(a)) }); z.defineProperty(xa, { ra: "centerX" }, function() { return this.P.x + this.R.x }, function(a) { var b = this.P; b.x + this.R.x !== a && (u && z.p(a, xa, "centerX"), b.Wa(), b.x = a - this.R.x, b.freeze()) }); z.defineProperty(xa, { za: "centerY" }, function() { return this.P.y + this.R.y }, function(a) { var b = this.P; b.y + this.R.y !== a && (u && z.p(a, xa, "centerY"), b.Wa(), b.y = a - this.R.y, b.freeze()) }); z.defineProperty(xa, { Ct: "focusX" }, function() { return this.R.x }, function(a) { var b = this.R; b.x !== a && (b.Wa(), b.x = a, b.freeze()) }); z.defineProperty(xa, { Dt: "focusY" }, function() { return this.R.y }, function(a) { var b = this.R; b.y !== a && (b.Wa(), b.y = a, b.freeze()) }); z.defineProperty(xa, { x: "x" }, function() { return this.P.x }, function(a) { var b = this.P; b.x !== a && (b.Wa(), b.x = a, b.freeze()) }); z.defineProperty(xa, { y: "y" }, function() { return this.P.y }, function(a) { var b = this.P; b.y !== a && (b.Wa(), b.y = a, b.freeze()) }); z.defineProperty(xa, { width: "width" }, function() { return this.P.width }, function(a) { var b = this.P; b.width !== a && (b.Wa(), b.width = a, b.freeze()) }); z.defineProperty(xa, { height: "height" }, function() { return this.P.height }, function(a) { var b = this.P; b.height !== a && (b.Wa(), b.height = a, b.freeze()) }); xa.prototype.commit = function() { var a = this.fe; if (null !== a) { var b = this.vb, c = a.bounds; z.Za(c) ? (c.x = b.x, c.y = b.y, c.width = b.width, c.height = b.height) : a.bounds = b.copy() } else if (a = this.Pc, null !== a) { b = this.vb; if (!(a instanceof F)) { var c = a.W, d = a.Zb.fb(ec); if (c.F() && d.F()) { a.moveTo(b.x + this.Ct - (d.x - c.x), b.y + this.Dt - (d.y - c.y)); return } } a.moveTo(b.x, b.y) } }; xa.prototype.addSourceEdge = xa.prototype.ED = function(a) { null !== a && (u && z.l(a, ya, xa, "addSourceEdge:edge"), this.Ze.contains(a) || this.Ze.add(a)) }; xa.prototype.deleteSourceEdge = xa.prototype.fE = function(a) { null !== a && (u && z.l(a, ya, xa, "deleteSourceEdge:edge"), this.Ze.remove(a)) }; xa.prototype.addDestinationEdge = xa.prototype.DD = function(a) { null !== a && (u && z.l(a, ya, xa, "addDestinationEdge:edge"), this.Te.contains(a) || this.Te.add(a)) }; xa.prototype.deleteDestinationEdge = xa.prototype.eE = function(a) { null !== a && (u && z.l(a, ya, xa, "deleteDestinationEdge:edge"), this.Te.remove(a)) }; z.w(xa, { oJ: "sourceVertexes" }, function() { for (var a = new K(xa), b = this.tc; b.next();) a.add(b.value.fromVertex); return a.i }); z.w(xa, { rH: "destinationVertexes" }, function() { for (var a = new K(xa), b = this.pc; b.next();) a.add(b.value.toVertex); return a.i }); z.w(xa, { vertexes: "vertexes" }, function() { for (var a = new K(xa), b = this.tc; b.next();) a.add(b.value.fromVertex); for (b = this.pc; b.next();) a.add(b.value.toVertex); return a.i }); z.w(xa, { tc: "sourceEdges" }, function() { return this.Ze.i }); z.w(xa, { pc: "destinationEdges" }, function() { return this.Te.i }); z.w(xa, { edges: "edges" }, function() { for (var a = new J(ya), b = this.tc; b.next();) a.add(b.value); for (b = this.pc; b.next();) a.add(b.value); return a.i }); z.w(xa, { CH: "edgesCount" }, function() { return this.Ze.count + this.Te.count }); var Aq; xa.standardComparer = Aq = function(a, b) { u && z.l(a, xa, xa, "standardComparer:m"); u && z.l(b, xa, xa, "standardComparer:n"); var c = a.Bd, d = b.Bd; return c ? d ? (c = c.text, d = d.text, c < d ? -1 : c > d ? 1 : 0) : 1 : null !== d ? -1 : 0 }; xa.smartComparer = function(a, b) { u && z.l(a, xa, xa, "smartComparer:m"); u && z.l(b, xa, xa, "smartComparer:n"); if (null !== a) { if (null !== b) { var c = a.Bd, d = b.Bd; if (null !== c) { if (null !== d) { for (var c = c.text.toLocaleLowerCase().split(/([+\-]?[\.]?\d+(?:\.\d*)?(?:e[+\-]?\d+)?)/), d = d.text.toLocaleLowerCase().split(/([+\-]?[\.]?\d+(?:\.\d*)?(?:e[+\-]?\d+)?)/), e = 0; e < c.length; e++) if ("" !== d[e] && void 0 !== d[e]) { var g = parseFloat(c[e]), h = parseFloat(d[e]); if (isNaN(g)) { if (!isNaN(h)) return 1; if (0 !== c[e].localeCompare(d[e])) return c[e].localeCompare(d[e]) } else { if (isNaN(h)) return -1; if (0 !== g - h) return g - h } } else if ("" !== c[e]) return 1; return "" !== d[e] && void 0 !== d[e] ? -1 : 0 } return 1 } return null !== d ? -1 : 0 } return 1 } return null !== b ? -1 : 0 }; function ya() { z.kc(this); this.network = null; this.clear() } z.ia("LayoutEdge", ya); ya.prototype.clear = function() { this.toVertex = this.fromVertex = this.link = this.data = null }; ya.prototype.toString = function(a) { void 0 === a && (a = 0); var b = "LayoutEdge#" + z.nd(this); 0 < a && (b += null !== this.link ? "(" + this.link.toString() + ")" : "", 1 < a && (b += " " + (this.fromVertex ? this.fromVertex.toString() : "null") + " --\x3e " + (this.toVertex ? this.toVertex.toString() : "null"))); return b }; ya.prototype.Fx = function() { var a = this.fromVertex; this.fromVertex = this.toVertex; this.toVertex = a }; ya.prototype.commit = function() {}; ya.prototype.getOtherVertex = ya.prototype.NH = function(a) { u && z.l(a, xa, ya, "getOtherVertex:v"); return this.toVertex === a ? this.fromVertex : this.fromVertex === a ? this.toVertex : null }; function tm() { 0 < arguments.length && z.od(tm); vg.call(this); this.mx = !0; this.ct = this.dt = NaN; this.zj = (new Ea(NaN, NaN)).freeze(); this.ai = (new Ea(10, 10)).freeze(); this.Ie = An; this.qd = tn; this.$h = pn; this.Jh = Bq } z.Qa(tm, vg); z.ia("GridLayout", tm); tm.prototype.cloneProtected = function(a) { vg.prototype.cloneProtected.call(this, a); a.dt = this.dt; a.ct = this.ct; a.zj.assign(this.zj); a.ai.assign(this.ai); a.Ie = this.Ie; a.qd = this.qd; a.$h = this.$h; a.Jh = this.Jh }; tm.prototype.doLayout = function(a) { null === a && z.k("Layout.doLayout(collection) argument must not be null but a Diagram, a Group, or an Iterable of Parts"); this.je = this.initialOrigin(this.je); var b = this.h; a = this.aH(a); for (var c = a.copy().i; c.next();) { var d = c.value; if (d instanceof G) { var e = d; if (null !== e.Y || null !== e.da) { a.remove(e); continue } } d.Bf(); if (d instanceof F) for (d = d.Hc; d.next();) a.remove(d.value) } e = a.jc(); if (0 !== e.length) { switch (this.sorting) { case sn: e.reverse(); break; case pn: e.sort(this.comparer); break; case qn: e.sort(this.comparer), e.reverse() } var g = this.EJ; isNaN(g) && (g = 0); var h = this.jG, h = isNaN(h) && null !== b ? Math.max(b.xb.width - b.padding.left - b.padding.right, 0) : Math.max(this.jG, 0); 0 >= g && 0 >= h && (g = 1); a = this.spacing.width; isFinite(a) || (a = 0); c = this.spacing.height; isFinite(c) || (c = 0); null !== b && b.Wb("Layout"); d = []; switch (this.alignment) { case Bn: var k = a, l = c, m = Math.max(this.dp.width, 1); if (!isFinite(m)) for (var n = m = 0; n < e.length; n++) var p = e[n], q = p.Ia, m = Math.max(m, q.width); var m = Math.max(m + k, 1), r = Math.max(this.dp.height, 1); if (!isFinite(r)) for (n = r = 0; n < e.length; n++) p = e[n], q = p.Ia, r = Math.max(r, q.height); for (var r = Math.max(r + l, 1), s = this.Xf, t = this.je.x, v = t, x = this.je.y, y = 0, A = 0, n = 0; n < e.length; n++) { var p = e[n], q = p.Ia, B = Math.ceil((q.width + k) / m) * m, L = Math.ceil((q.height + l) / r) * r, H = 0; switch (s) { case zn: H = Math.abs(v - q.width); break; default: H = v + q.width } if (0 < g && y > g - 1 || 0 < h && 0 < y && H > h) d.push(new w(0, x, h + k, A)), y = 0, v = t, x += A, A = 0; A = Math.max(A, L); L = 0; switch (s) { case zn: L = -q.width; break; default: L = 0 } p.moveTo(v + L, x); switch (s) { case zn: v -= B; break; default: v += B } y++ } d.push(new w(0, x, h + k, A)); break; case An: k = g; l = a; m = c; n = Math.max(this.dp.width, 1); p = x = B = 0; q = z.O(); for (g = 0; g < e.length; g++) r = e[g], s = r.Ia, t = lp(r, r.Zb, r.of, q), B = Math.max(B, t.x), x = Math.max(x, s.width - t.x), p = Math.max(p, t.y); v = this.Xf; switch (v) { case zn: B += l; break; default: x += l } var n = isFinite(n) ? Math.max(n + l, 1) : Math.max(B + x, 1), U = x = this.je.x, y = this.je.y, A = 0; h >= B && (h -= B); for (var B = L = 0, H = Math.max(this.dp.height, 1), ea = p = 0, W = !0, P = z.O(), g = 0; g < e.length; g++) { r = e[g]; s = r.Ia; t = lp(r, r.Zb, r.of, q); if (0 < A) switch (v) { case zn: U = (U - x - (s.width - t.x)) / n; U = td(Math.round(U), U) ? Math.round(U) : Math.floor(U); U = U * n + x; break; default: U = (U - x + t.x) / n, U = td(Math.round(U), U) ? Math.round(U) : Math.ceil(U), U = U * n + x } else switch (v) { case zn: L = U + t.x + s.width; break; default: L = U - t.x } var ba = 0; switch (v) { case zn: ba = -(U + t.x) + L; break; default: ba = U + s.width - t.x - L } if (0 < k && A > k - 1 || 0 < h && 0 < A && ba > h) { d.push(new w(0, W ? y - p : y, h + l, ea + p + m)); for (U = 0; U < A && g !== A; U++) { var ba = e[g - A + U], Oa = lp(ba, ba.Zb, ba.of, P); ba.moveTo(ba.position.x, ba.position.y + p - Oa.y) } ea += m; y = W ? y + ea : y + (ea + p); A = ea = p = 0; U = x; W = !1 } U === x && (B = v === zn ? Math.max(B, s.width - t.x) : Math.min(B, -t.x)); p = Math.max(p, t.y); ea = Math.max(ea, s.height - t.y); isFinite(H) && (ea = Math.max(ea, Math.max(s.height, H) - t.y)); W ? r.moveTo(U - t.x, y - t.y) : r.moveTo(U - t.x, y); switch (v) { case zn: U -= t.x + l; break; default: U += s.width - t.x + l } A++ } d.push(new w(0, y, h + l, (W ? ea : ea + p) + m)); for (U = 0; U < A && g !== A; U++) ba = e[g - A + U], Oa = lp(ba, ba.Zb, ba.of, q), ba.moveTo(ba.position.x, ba.position.y + p - Oa.y); z.A(q); z.A(P); if (v === zn) for (g = 0; g < d.length; g++) e = d[g], e.width += B, e.x -= B; else for (g = 0; g < d.length; g++) e = d[g], e.x > B && (e.width += e.x - B, e.x = B) } for (k = g = h = e = 0; k < d.length; k++) l = d[k], e = Math.min(e, l.x), h = Math.min(h, l.y), g = Math.max(g, l.x + l.width); this.Xf === zn ? this.commitLayers(d, new N(e + a / 2 - (g + e), h - c / 2)) : this.commitLayers(d, new N(e - a / 2, h - c / 2)); null !== b && b.Jd("Layout"); this.Gf = !0 } }; tm.prototype.commitLayers = function() {}; z.defineProperty(tm, { jG: "wrappingWidth" }, function() { return this.dt }, function(a) { this.dt !== a && (z.g(a, "number", tm, "wrappingWidth"), 0 < a || isNaN(a)) && (this.dt = a, this.mx = isNaN(a), this.I()) }); z.defineProperty(tm, { EJ: "wrappingColumn" }, function() { return this.ct }, function(a) { this.ct !== a && (z.g(a, "number", tm, "wrappingColumn"), 0 < a || isNaN(a)) && (this.ct = a, this.I()) }); z.defineProperty(tm, { dp: "cellSize" }, function() { return this.zj }, function(a) { z.l(a, Ea, tm, "cellSize"); this.zj.N(a) || (this.zj.assign(a), this.I()) }); z.defineProperty(tm, { spacing: "spacing" }, function() { return this.ai }, function(a) { z.l(a, Ea, tm, "spacing"); this.ai.N(a) || (this.ai.assign(a), this.I()) }); z.defineProperty(tm, { alignment: "alignment" }, function() { return this.Ie }, function(a) { this.Ie !== a && (z.Ba(a, tm, tm, "alignment"), a === An || a === Bn) && (this.Ie = a, this.I()) }); z.defineProperty(tm, { Xf: "arrangement" }, function() { return this.qd }, function(a) { this.qd !== a && (z.Ba(a, tm, tm, "arrangement"), a === tn || a === zn) && (this.qd = a, this.I()) }); z.defineProperty(tm, { sorting: "sorting" }, function() { return this.$h }, function(a) { this.$h !== a && (z.Ba(a, tm, tm, "sorting"), a === rn || a === sn || a === pn || a === qn) && (this.$h = a, this.I()) }); z.defineProperty(tm, { comparer: "comparer" }, function() { return this.Jh }, function(a) { this.Jh !== a && (z.g(a, "function", tm, "comparer"), this.Jh = a, this.I()) }); var Bq; tm.standardComparer = Bq = function(a, b) { u && z.l(a, D, tm, "standardComparer:a"); u && z.l(b, D, tm, "standardComparer:b"); var c = a.text, d = b.text; return c < d ? -1 : c > d ? 1 : 0 }; tm.smartComparer = function(a, b) { u && z.l(a, D, tm, "standardComparer:a"); u && z.l(b, D, tm, "standardComparer:b"); if (null !== a) { if (null !== b) { for (var c = a.text.toLocaleLowerCase().split(/([+\-]?[\.]?\d+(?:\.\d*)?(?:e[+\-]?\d+)?)/), d = b.text.toLocaleLowerCase().split(/([+\-]?[\.]?\d+(?:\.\d*)?(?:e[+\-]?\d+)?)/), e = 0; e < c.length; e++) if ("" !== d[e] && void 0 !== d[e]) { var g = parseFloat(c[e]), h = parseFloat(d[e]); if (isNaN(g)) { if (!isNaN(h)) return 1; if (0 !== c[e].localeCompare(d[e])) return c[e].localeCompare(d[e]) } else { if (isNaN(h)) return -1; if (0 !== g - h) return g - h } } else if ("" !== c[e]) return 1; return "" !== d[e] && void 0 !== d[e] ? -1 : 0 } return 1 } return null !== b ? -1 : 0 }; var Bn; tm.Position = Bn = z.s(tm, "Position", 0); var An; tm.Location = An = z.s(tm, "Location", 1); var tn; tm.LeftToRight = tn = z.s(tm, "LeftToRight", 2); var zn; tm.RightToLeft = zn = z.s(tm, "RightToLeft", 3); var rn; tm.Forward = rn = z.s(tm, "Forward", 4); var sn; tm.Reverse = sn = z.s(tm, "Reverse", 5); var pn; tm.Ascending = pn = z.s(tm, "Ascending", 6); var qn; tm.Descending = qn = z.s(tm, "Descending", 7); function Cn() { 0 < arguments.length && z.od(Cn); vg.call(this); this.Gy = this.co = this.Ud = 0; this.Vq = 360; this.Fy = On; this.Sk = 0; this.cC = On; this.Yu = this.Eg = this.sD = 0; this.zw = new Cq; this.$u = this.zm = 0; this.zG = 600; this.js = NaN; this.rq = 1; this.Ps = 0; this.Rs = 360; this.qd = On; this.fa = Kn; this.$h = Hn; this.Jh = Aq; this.ai = 6; this.Yr = Rn } z.Qa(Cn, vg); z.ia("CircularLayout", Cn); Cn.prototype.cloneProtected = function(a) { vg.prototype.cloneProtected.call(this, a); a.js = this.js; a.rq = this.rq; a.Ps = this.Ps; a.Rs = this.Rs; a.qd = this.qd; a.fa = this.fa; a.$h = this.$h; a.Jh = this.Jh; a.ai = this.ai; a.Yr = this.Yr }; Cn.prototype.createNetwork = function() { return new Dq }; Cn.prototype.doLayout = function(a) { null === a && z.k("Layout.doLayout(collection) argument must not be null but a Diagram, a Group, or an Iterable of Parts"); null === this.network && (this.network = this.makeNetwork(a)); a = this.network.vertexes; if (1 >= a.count) 1 === a.count && (a = a.first(), a.ra = 0, a.za = 0); else { var b = new J(Eq); b.$c(a.i); a = new J(Eq); var c = new J(Eq), d; d = this.sort(b); var e = this.Fy, g = this.cC, h = this.Ud, k = this.co, l = this.Gy, m = this.Vq, b = this.Sk, n = this.sD, p = this.Eg, q = this.Yu, e = this.Xf, g = this.tx, h = this.UI; if (!isFinite(h) || 0 >= h) h = NaN; k = this.VG; if (!isFinite(k) || 0 >= k) k = 1; l = this.Fe; isFinite(l) || (l = 0); m = this.Lf; if (!isFinite(m) || 360 < m || 1 > m) m = 360; b = this.spacing; isFinite(b) || (b = NaN); e === Pn && g === Qn ? e = On : e === Pn && g !== Qn && (g = Qn, e = this.Xf); if ((this.direction === In || this.direction === Jn) && this.sorting !== Hn) { for (var r = 0; !(r >= d.length); r += 2) { a.add(d.ea(r)); if (r + 1 >= d.length) break; c.add(d.ea(r + 1)) } this.direction === In ? (this.Xf === Pn && a.reverse(), d = new J(Eq), d.$c(a), d.$c(c)) : (this.Xf === Pn && c.reverse(), d = new J(Eq), d.$c(c), d.$c(a)) } for (var s = d.length, t = n = 0, r = 0; r < d.length; r++) { var p = l + m * t * (this.direction === Kn ? 1 : -1) / s, v = d.ea(r).diameter; isNaN(v) && (v = Fq(d.ea(r), p)); 360 > m && (0 === r || r === d.length - 1) && (v /= 2); n += v; t++ } if (isNaN(h) || e === Pn) { isNaN(b) && (b = 6); if (e !== On && e !== Pn) { v = -Infinity; for (r = 0; r < s; r++) { var q = d.ea(r), x = d.ea(r === s - 1 ? 0 : r + 1); isNaN(q.diameter) && Fq(q, 0); isNaN(x.diameter) && Fq(x, 0); v = Math.max(v, (q.diameter + x.diameter) / 2) } q = v + b; e === Mn ? (p = 2 * Math.PI / s, h = (v + b) / p) : h = Gq(this, q * (360 <= m ? s : s - 1), k, l * Math.PI / 180, m * Math.PI / 180) } else h = Gq(this, n + (360 <= m ? s : s - 1) * (e !== Pn ? b : 1.6 * b), k, l * Math.PI / 180, m * Math.PI / 180); p = h * k } else if (p = h * k, t = Hq(this, h, p, l * Math.PI / 180, m * Math.PI / 180), isNaN(b)) { if (e === On || e === Pn) b = (t - n) / (360 <= m ? s : s - 1) } else if (e === On || e === Pn) r = (t - n) / (360 <= m ? s : s - 1), r < b ? (h = Gq(this, n + b * (360 <= m ? s : s - 1), k, l * Math.PI / 180, m * Math.PI / 180), p = h * k) : b = r; else { v = -Infinity; for (r = 0; r < s; r++) q = d.ea(r), x = d.ea(r === s - 1 ? 0 : r + 1), isNaN(q.diameter) && Fq(q, 0), isNaN(x.diameter) && Fq(x, 0), v = Math.max(v, (q.diameter + x.diameter) / 2); q = v + b; r = Gq(this, q * (360 <= m ? s : s - 1), k, l * Math.PI / 180, m * Math.PI / 180); r > h ? (h = r, p = h * k) : q = t / (360 <= m ? s : s - 1) } this.Fy = e; this.cC = g; this.Ud = h; this.co = k; this.Gy = l; this.Vq = m; this.Sk = b; this.sD = n; this.Eg = p; this.Yu = q; b = d; d = this.Fy; e = this.Ud; g = this.Gy; k = this.Vq; l = this.Sk; m = this.Eg; n = this.Yu; if (this.direction !== In && this.direction !== Jn || d !== Pn) if (this.direction === In || this.direction === Jn) { h = 0; switch (d) { case Nn: h = 180 * Iq(this, e, m, g, n) / Math.PI; break; case On: n = b = 0; h = a.first(); null !== h && (b = Fq(h, Math.PI / 2)); h = c.first(); null !== h && (n = Fq(h, Math.PI / 2)); h = 180 * Iq(this, e, m, g, l + (b + n) / 2) / Math.PI; break; case Mn: h = k / b.length } if (this.direction === In) { switch (d) { case Nn: Jq(this, a, g, Ln); break; case On: Kq(this, a, g, Ln); break; case Mn: Lq(this, a, k / 2, g, Ln) } switch (d) { case Nn: Jq(this, c, g + h, Kn); break; case On: Kq(this, c, g + h, Kn); break; case Mn: Lq(this, c, k / 2, g + h, Kn) } } else { switch (d) { case Nn: Jq(this, c, g, Ln); break; case On: Kq(this, c, g, Ln); break; case Mn: Lq(this, c, k / 2, g, Ln) } switch (d) { case Nn: Jq(this, a, g + h, Kn); break; case On: Kq(this, a, g + h, Kn); break; case Mn: Lq(this, a, k / 2, g + h, Kn) } } } else switch (d) { case Nn: Jq(this, b, g, this.direction); break; case On: Kq(this, b, g, this.direction); break; case Mn: Lq(this, b, k, g, this.direction); break; case Pn: Mq(this, b, k, g, this.direction) } else Mq(this, b, k, g - k / 2, Kn) } this.updateParts(); this.network = null; this.Gf = !0 }; function Lq(a, b, c, d, e) { var g = a.Vq, h = a.Ud; a = a.Eg; d = d * Math.PI / 180; c = c * Math.PI / 180; for (var k = b.length, l = 0; l < k; l++) { var m = d + (e === Kn ? l * c / (360 <= g ? k : k - 1) : -(l * c) / k), n = b.ea(l), p = h * Math.tan(m) / a, p = Math.sqrt((h * h + a * a * p * p) / (1 + p * p)); n.ra = p * Math.cos(m); n.za = p * Math.sin(m); n.actualAngle = 180 * m / Math.PI } } function Kq(a, b, c, d) { var e = a.Ud, g = a.Eg, h = a.Sk; c = c * Math.PI / 180; for (var k = b.length, l = 0; l < k; l++) { var m = b.ea(l), n = b.ea(l === k - 1 ? 0 : l + 1), p = g * Math.sin(c); m.ra = e * Math.cos(c); m.za = p; m.actualAngle = 180 * c / Math.PI; isNaN(m.diameter) && Fq(m, 0); isNaN(n.diameter) && Fq(n, 0); m = Iq(a, e, g, d === Kn ? c : -c, (m.diameter + n.diameter) / 2 + h); c += d === Kn ? m : -m } } function Jq(a, b, c, d) { var e = a.Ud, g = a.Eg, h = a.Yu; c = c * Math.PI / 180; for (var k = b.length, l = 0; l < k; l++) { var m = b.ea(l); m.ra = e * Math.cos(c); m.za = g * Math.sin(c); m.actualAngle = 180 * c / Math.PI; m = Iq(a, e, g, d === Kn ? c : -c, h); c += d === Kn ? m : -m } } function Mq(a, b, c, d, e) { var g = a.$u, g = a.Vq; a.zm = 0; a.zw = new Cq; if (360 > c) { for (g = d + (e === Kn ? g : -g); 0 > g;) g += 360; g %= 360; 180 < g && (g -= 360); g *= Math.PI / 180; a.$u = g; Nq(a, b, c, d, e) } else Oq(a, b, c, d, e); a.zw.commit(b) } function Oq(a, b, c, d, e) { var g = a.Ud, h = a.Sk, k = a.co, l = g * Math.cos(d * Math.PI / 180), m = a.Eg * Math.sin(d * Math.PI / 180), n = b.jc(); if (3 === n.length) n[0].ra = g, n[0].za = 0, n[1].ra = n[0].ra - n[0].width / 2 - n[1].width / 2 - h, n[1].y = n[0].y, n[2].ra = (n[0].ra + n[1].ra) / 2, n[2].y = n[0].y - n[2].height - h; else if (4 === n.length) n[0].ra = g, n[0].za = 0, n[2].ra = -n[0].ra, n[2].za = n[0].za, n[1].ra = 0, n[1].y = Math.min(n[0].y, n[2].y) - n[1].height - h, n[3].ra = 0, n[3].y = Math.max(n[0].y + n[0].height + h, n[2].y + n[2].height + h); else { for (var g = z.O(), p = 0; p < n.length; p++) { n[p].ra = l; n[p].za = m; if (p >= n.length - 1) break; Pq(a, l, m, n, p, e, g) || Qq(a, l, m, n, p, e, g); l = g.x; m = g.y } z.A(g); a.zm++; if (!(23 < a.zm)) { var l = n[0].ra, m = n[0].za, g = n[n.length - 1].ra, p = n[n.length - 1].za, q = Math.abs(l - g) - ((n[0].width + n[n.length - 1].width) / 2 + h), r = Math.abs(m - p) - ((n[0].height + n[n.length - 1].height) / 2 + h), h = 0; 1 > Math.abs(r) ? Math.abs(l - g) < (n[0].width + n[n.length - 1].width) / 2 && (h = 0) : h = 0 < r ? r : 1 > Math.abs(q) ? 0 : q; q = !1; q = Math.abs(g) > Math.abs(p) ? 0 < g !== m > p : 0 < p !== l < g; if (q = e === Kn ? q : !q) h = -Math.abs(h), h = Math.min(h, -n[n.length - 1].width), h = Math.min(h, -n[n.length - 1].height); a.zw.compare(h, n); 1 < Math.abs(h) && (a.Ud = 8 > a.zm ? a.Ud - h / (2 * Math.PI) : 5 > n.length && 10 < h ? a.Ud / 2 : a.Ud - (0 < h ? 1.7 : -2.3), a.Eg = a.Ud * k, Oq(a, b, c, d, e)) } } } function Nq(a, b, c, d, e) { for (var g = a.Ud, h = a.Eg, k = a.co, l = g * Math.cos(d * Math.PI / 180), m = h * Math.sin(d * Math.PI / 180), n = z.O(), p = b.jc(), q = 0; q < p.length; q++) { p[q].ra = l; p[q].za = m; if (q >= p.length - 1) break; Pq(a, l, m, p, q, e, n) || Qq(a, l, m, p, q, e, n); l = n.x; m = n.y } z.A(n); a.zm++; if (!(23 < a.zm)) { l = Math.atan2(m, l); l = e === Kn ? a.$u - l : l - a.$u; l = Math.abs(l) < Math.abs(l - 2 * Math.PI) ? l : l - 2 * Math.PI; g = l * (g + h) / 2; h = a.zw; if (Math.abs(g) < Math.abs(h.qp)) for (h.qp = g, h.Dn = [], h.gq = [], l = 0; l < p.length; l++) h.Dn[l] = p[l].vb.x, h.gq[l] = p[l].vb.y; 1 < Math.abs(g) && (a.Ud = 8 > a.zm ? a.Ud - g / (2 * Math.PI) : a.Ud - (0 < g ? 1.7 : -2.3), a.Eg = a.Ud * k, Nq(a, b, c, d, e)) } } function Pq(a, b, c, d, e, g, h) { var k = a.Ud, l = a.Eg, m = 0, n = 0; a = (d[e].width + d[e + 1].width) / 2 + a.Sk; var p = !1; if (0 <= c !== (g === Kn)) { if (m = b + a, m > k) { m = b - a; if (m < -k) return h.x = m, h.y = n, !1; p = !0 } } else if (m = b - a, m < -k) { m = b + a; if (m > k) return h.x = m, h.y = n, !1; p = !0 } n = Math.sqrt(1 - Math.min(1, m * m / (k * k))) * l; 0 > c !== p && (n = -n); if (Math.abs(c - n) > (d[e].height + d[e + 1].height) / 2) return h.x = m, h.y = n, !1; h.x = m; h.y = n; return !0 } function Qq(a, b, c, d, e, g, h) { var k = a.Ud, l = a.Eg, m = 0, n = 0; a = (d[e].height + d[e + 1].height) / 2 + a.Sk; d = !1; if (0 <= b !== (g === Kn)) { if (n = c - a, n < -l) { n = c + a; if (n > l) { h.x = m; h.y = n; return } d = !0 } } else if (n = c + a, n > l) { n = c - a; if (n < -l) { h.x = m; h.y = n; return } d = !0 } m = Math.sqrt(1 - Math.min(1, n * n / (l * l))) * k; 0 > b !== d && (m = -m); h.x = m; h.y = n } Cn.prototype.commitLayout = function() { this.commitNodes(); this.Rt && this.commitLinks() }; Cn.prototype.commitNodes = function() { for (var a = this.KG, b = this.network.vertexes.i; b.next();) { var c = b.value; c.x += a.x; c.y += a.y; c.commit() } }; Cn.prototype.commitLinks = function() { for (var a = this.network.edges.i; a.next();) a.value.commit() }; function Hq(a, b, c, d, e) { var g = a.zG; if (.001 > Math.abs(a.co - 1)) return void 0 !== d && void 0 !== e ? e * b : 2 * Math.PI * b; a = b > c ? Math.sqrt(b * b - c * c) / b : Math.sqrt(c * c - b * b) / c; for (var h = 0, k = 0, k = void 0 !== d && void 0 !== e ? e / (g + 1) : Math.PI / (2 * (g + 1)), l = 0, m = 0; m <= g; m++) l = void 0 !== d && void 0 !== e ? d + m * e / g : m * Math.PI / (2 * g), l = Math.sin(l), h += Math.sqrt(1 - a * a * l * l) * k; return void 0 !== d && void 0 !== e ? (b > c ? b : c) * h : 4 * (b > c ? b : c) * h } function Gq(a, b, c, d, e) { var g = 0, g = void 0 !== d && void 0 !== e ? Hq(a, 1, c, d, e) : Hq(a, 1, c); return b / g } function Iq(a, b, c, d, e) { if (.001 > Math.abs(a.co - 1)) return e / b; var g = b > c ? Math.sqrt(b * b - c * c) / b : Math.sqrt(c * c - b * b) / c, h = 0; a = 2 * Math.PI / (700 * a.network.vertexes.count); b > c && (d += Math.PI / 2); for (var k = 0;; k++) { var l = Math.sin(d + k * a), h = h + (b > c ? b : c) * Math.sqrt(1 - g * g * l * l) * a; if (h >= e) return k * a } } Cn.prototype.sort = function(a) { switch (this.sorting) { case Fn: break; case Gn: a.reverse(); break; case Dn: a.sort(this.comparer); break; case En: a.sort(this.comparer); a.reverse(); break; case Hn: for (var b = [], c = 0; c < a.length; c++) b.push(0); for (var d = new J(Eq), c = 0; c < a.length; c++) { var e = -1, g = -1; if (0 === c) for (var h = 0; h < a.length; h++) { var k = a.ea(h).CH; k > e && (e = k, g = h) } else for (h = 0; h < a.length; h++) k = b[h], k > e && (e = k, g = h); d.add(a.ea(g)); b[g] = -1; g = a.ea(g); e = 0; for (h = g.tc; h.next();) e = a.indexOf(h.value.fromVertex), 0 > e || 0 <= b[e] && b[e]++; for (g = g.pc; g.next();) e = a.indexOf(g.value.toVertex), 0 > e || 0 <= b[e] && b[e]++ } a = []; for (b = 0; b < d.length; b++) { h = d.ea(b); a[b] = []; for (var l = 0, c = h.pc; c.next();) l = d.indexOf(c.value.toVertex), l !== b && 0 > a[b].indexOf(l) && a[b].push(l); for (c = h.tc; c.next();) l = d.indexOf(c.value.fromVertex), l !== b && 0 > a[b].indexOf(l) && a[b].push(l) } h = []; for (b = 0; b < a.length; b++) h[b] = 0; for (var c = [], k = [], m = [], e = [], g = new J(Eq), n = 0, b = 0; b < a.length; b++) { var p = a[b].length; if (1 === p) e.push(b); else if (0 === p) g.add(d.ea(b)); else { if (0 === n) c.push(b); else { for (var q = Infinity, r = Infinity, s = -1, t = [], p = 0; p < c.length; p++) 0 > a[c[p]].indexOf(c[p === c.length - 1 ? 0 : p + 1]) && t.push(p === c.length - 1 ? 0 : p + 1); if (0 === t.length) for (p = 0; p < c.length; p++) t.push(p); for (p = 0; p < t.length; p++) { var v = t[p], x, l = a[b]; x = k; for (var y = m, A = h, B = v, L = c, H = 0, U = 0; U < x.length; U++) { var ea = A[x[U]], W = A[y[U]], P = 0, ba = 0; ea < W ? (P = ea, ba = W) : (P = W, ba = ea); if (P < B && B <= ba) for (ea = 0; ea < l.length; ea++) W = l[ea], 0 > L.indexOf(W) || P < A[W] && A[W] < ba || P === A[W] || ba === A[W] || H++; else for (ea = 0; ea < l.length; ea++) W = l[ea], 0 > L.indexOf(W) || P < A[W] && A[W] < ba && P !== A[W] && ba !== A[W] && H++ } x = H; for (A = y = 0; A < a[b].length; A++) l = c.indexOf(a[b][A]), 0 <= l && (l = Math.abs(v - (l >= v ? l + 1 : l)), y += l < c.length + 1 - l ? l : c.length + 1 - l); for (A = 0; A < k.length; A++) l = h[k[A]], B = h[m[A]], l >= v && l++, B >= v && B++, l > B && (L = B, B = l, l = L), B - l < (c.length + 2) / 2 === (l < v && v <= B) && y++; if (x < q || x === q && y < r) q = x, r = y, s = v } c.splice(s, 0, b); for (p = 0; p < c.length; p++) h[c[p]] = p; for (p = 0; p < a[b].length; p++) q = a[b][p], 0 <= c.indexOf(q) && (k.push(b), m.push(q)) } n++ } } k = !1; for (m = c.length;;) { k = !0; for (h = 0; h < e.length; h++) if (b = e[h], n = a[b][0], l = c.indexOf(n), 0 <= l) { for (r = p = 0; r < a[n].length; r++) q = a[n][r], q = c.indexOf(q), 0 > q || q === l || (s = q > l ? q - l : l - q, p += q < l !== s > m - s ? 1 : -1); c.splice(0 > p ? l : l + 1, 0, b); e.splice(h, 1); h-- } else k = !1; if (k) break; else c.push(e[0]), e.splice(0, 1) } for (b = 0; b < c.length; b++) l = c[b], g.add(d.ea(l)); return g; default: z.k("Invalid sorting type.") } return a }; z.defineProperty(Cn, { UI: "radius" }, function() { return this.js }, function(a) { this.js !== a && (z.g(a, "number", Cn, "radius"), 0 < a || isNaN(a)) && (this.js = a, this.I()) }); z.defineProperty(Cn, { VG: "aspectRatio" }, function() { return this.rq }, function(a) { this.rq !== a && (z.g(a, "number", Cn, "aspectRatio"), 0 < a && (this.rq = a, this.I())) }); z.defineProperty(Cn, { Fe: "startAngle" }, function() { return this.Ps }, function(a) { this.Ps !== a && (z.g(a, "number", Cn, "startAngle"), this.Ps = a, this.I()) }); z.defineProperty(Cn, { Lf: "sweepAngle" }, function() { return this.Rs }, function(a) { this.Rs !== a && (z.g(a, "number", Cn, "sweepAngle"), this.Rs = 0 < a && 360 >= a ? a : 360, this.I()) }); z.defineProperty(Cn, { Xf: "arrangement" }, function() { return this.qd }, function(a) { this.qd !== a && (z.Ba(a, Cn, Cn, "arrangement"), a === Pn || a === On || a === Nn || a === Mn) && (this.qd = a, this.I()) }); z.defineProperty(Cn, { direction: "direction" }, function() { return this.fa }, function(a) { this.fa !== a && (z.Ba(a, Cn, Cn, "direction"), a === Kn || a === Ln || a === In || a === Jn) && (this.fa = a, this.I()) }); z.defineProperty(Cn, { sorting: "sorting" }, function() { return this.$h }, function(a) { this.$h !== a && (z.Ba(a, Cn, Cn, "sorting"), a === Fn || a === Gn || a === Dn || En || a === Hn) && (this.$h = a, this.I()) }); z.defineProperty(Cn, { comparer: "comparer" }, function() { return this.Jh }, function(a) { this.Jh !== a && (z.g(a, "function", Cn, "comparer"), this.Jh = a, this.I()) }); z.defineProperty(Cn, { spacing: "spacing" }, function() { return this.ai }, function(a) { this.ai !== a && (z.g(a, "number", Cn, "spacing"), this.ai = a, this.I()) }); z.defineProperty(Cn, { tx: "nodeDiameterFormula" }, function() { return this.Yr }, function(a) { this.Yr !== a && (z.Ba(a, Cn, Cn, "nodeDiameterFormula"), a === Rn || a === Qn) && (this.Yr = a, this.I()) }); z.w(Cn, { LG: "actualXRadius" }, function() { return this.Ud }); z.w(Cn, { MG: "actualYRadius" }, function() { return this.Eg }); z.w(Cn, { HJ: "actualSpacing" }, function() { return this.Sk }); z.w(Cn, { KG: "actualCenter" }, function() { return isNaN(this.je.x) || isNaN(this.je.y) ? new N(0, 0) : new N(this.je.x + this.LG, this.je.y + this.MG) }); var On; Cn.ConstantSpacing = On = z.s(Cn, "ConstantSpacing", 0); var Nn; Cn.ConstantDistance = Nn = z.s(Cn, "ConstantDistance", 1); var Mn; Cn.ConstantAngle = Mn = z.s(Cn, "ConstantAngle", 2); var Pn; Cn.Packed = Pn = z.s(Cn, "Packed", 3); var Kn; Cn.Clockwise = Kn = z.s(Cn, "Clockwise", 4); var Ln; Cn.Counterclockwise = Ln = z.s(Cn, "Counterclockwise", 5); var In; Cn.BidirectionalLeft = In = z.s(Cn, "BidirectionalLeft", 6); var Jn; Cn.BidirectionalRight = Jn = z.s(Cn, "BidirectionalRight", 7); var Fn; Cn.Forwards = Fn = z.s(Cn, "Forwards", 8); var Gn; Cn.Reverse = Gn = z.s(Cn, "Reverse", 9); var Dn; Cn.Ascending = Dn = z.s(Cn, "Ascending", 10); var En; Cn.Descending = En = z.s(Cn, "Descending", 11); var Hn; Cn.Optimized = Hn = z.s(Cn, "Optimized", 12); var Rn; Cn.Pythagorean = Rn = z.s(Cn, "Pythagorean", 13); var Qn; Cn.Circular = Qn = z.s(Cn, "Circular", 14); function Cq() { this.qp = -Infinity; this.gq = this.Dn = null } Cq.prototype.compare = function(a, b) { if (0 < a && 0 > this.qp || Math.abs(a) < Math.abs(this.qp) && !(0 > a && 0 < this.qp)) { this.qp = a; this.Dn = []; this.gq = []; for (var c = 0; c < b.length; c++) this.Dn[c] = b[c].vb.x, this.gq[c] = b[c].vb.y } }; Cq.prototype.commit = function(a) { if (null !== this.Dn && null !== this.gq) for (var b = 0; b < this.Dn.length; b++) { var c = a.ea(b); c.x = this.Dn[b]; c.y = this.gq[b] } }; function Dq() { wa.call(this) } z.Qa(Dq, wa); z.ia("CircularNetwork", Dq); Dq.prototype.createVertex = function() { return new Eq }; Dq.prototype.createEdge = function() { return new Rq }; function Eq() { xa.call(this); this.actualAngle = this.diameter = NaN } z.Qa(Eq, xa); z.ia("CircularVertex", Eq); function Fq(a, b) { var c = a.network; if (null === c) return NaN; c = c.Sb; if (null === c) return NaN; if (c.Xf === Pn) if (c.tx === Qn) a.diameter = Math.max(a.width, a.height); else { var c = Math.abs(Math.sin(b)), d = Math.abs(Math.cos(b)); if (0 === c) return a.width; if (0 === d) return a.height; a.diameter = Math.min(a.height / c, a.width / d) } else a.diameter = c.tx === Qn ? Math.max(a.width, a.height) : Math.sqrt(a.width * a.width + a.height * a.height); return a.diameter } function Rq() { ya.call(this) } z.Qa(Rq, ya); z.ia("CircularEdge", Rq); function Sq() { 0 < arguments.length && z.od(Sq); vg.call(this); this.Dg = null; this.wr = 0; this.lg = (new Ea(100, 100)).freeze(); this.qq = !1; this.Zh = !0; this.Ih = !1; this.Co = 100; this.Xq = 1; this.Qh = 1E3; this.ks = Math; this.Yn = .05; this.Xn = 50; this.Un = 150; this.Wn = 0; this.Nq = 10; this.Mq = 5 } z.Qa(Sq, vg); z.ia("ForceDirectedLayout", Sq); Sq.prototype.cloneProtected = function(a) { vg.prototype.cloneProtected.call(this, a); a.lg.assign(this.lg); a.qq = this.qq; a.Zh = this.Zh; a.Ih = this.Ih; a.Co = this.Co; a.Xq = this.Xq; a.Qh = this.Qh; a.ks = this.ks; a.Yn = this.Yn; a.Xn = this.Xn; a.Un = this.Un; a.Wn = this.Wn; a.Nq = this.Nq; a.Mq = this.Mq }; Sq.prototype.createNetwork = function() { return new Tq }; Sq.prototype.doLayout = function(a) { null === a && z.k("Layout.doLayout(collection) argument must not be null but a Diagram, a Group, or an Iterable of Parts"); null === this.network && (this.network = this.makeNetwork(a)); a = this.pA; if (0 < this.network.vertexes.count) { this.network.Sw(); for (var b = this.network.vertexes.i; b.next();) { var c = b.value; c.charge = this.electricalCharge(c); c.mass = this.gravitationalMass(c) } for (b = this.network.edges.i; b.next();) c = b.value, c.stiffness = this.springStiffness(c), c.length = this.springLength(c); this.Bz(); this.wr = 0; if (this.needsClusterLayout()) { b = this.network; for (c = b.pJ().i; c.next();) { this.network = c.value; for (var d = this.network.vertexes.i; d.next();) { var e = d.value; e.hg = e.vertexes.count; e.uk = 1; e.Xm = null; e.Dh = null } Uq(this, 0, a) } this.network = b; c.reset(); u && z.l(b, Tq, Sq, "arrangeConnectedGraphs:singletons"); for (var d = this.KD, g = c.count, h = !0, k = e = 0, l = z.rb(), m = 0; m < g + b.vertexes.count + 2; m++) l[m] = null; g = 0; c.reset(); for (var n = z.kg(); c.next();) if (m = c.value, this.rh(m, n), h) h = !1, e = n.x + n.width / 2, k = n.y + n.height / 2, l[0] = new N(n.x + n.width + d.width, n.y), l[1] = new N(n.x, n.y + n.height + d.height), g = 2; else { var p = Vq(l, g, e, k, n.width, n.height, d), q = l[p], r = new N(q.x + n.width + d.width, q.y), s = new N(q.x, q.y + n.height + d.height); p + 1 < g && l.splice(p + 1, 0, null); l[p] = r; l[p + 1] = s; g++; p = q.x - n.x; q = q.y - n.y; for (m = m.vertexes.i; m.next();) r = m.value, r.ra += p, r.za += q } z.dc(n); for (m = b.vertexes.i; m.next();) h = m.value, n = h.vb, 2 > g ? (e = n.x + n.width / 2, k = n.y + n.height / 2, l[0] = new N(n.x + n.width + d.width, n.y), l[1] = new N(n.x, n.y + n.height + d.height), g = 2) : (p = Vq(l, g, e, k, n.width, n.height, d), q = l[p], r = new N(q.x + n.width + d.width, q.y), s = new N(q.x, q.y + n.height + d.height), p + 1 < g && l.splice(p + 1, 0, null), l[p] = r, l[p + 1] = s, g++, h.ra = q.x + h.width / 2, h.za = q.y + h.height / 2); z.xa(l); for (c.reset(); c.next();) { d = c.value; for (e = d.vertexes.i; e.next();) b.tl(e.value); for (d = d.edges.i; d.next();) b.$o(d.value) } } Wq(this, a); this.updateParts() } this.Co = a; this.network = null; this.Gf = !0 }; Sq.prototype.needsClusterLayout = function() { if (3 > this.network.vertexes.count) return !1; for (var a = 0, b = 0, c = this.network.vertexes.first().vb, d = this.network.vertexes.i; d.next();) { if (d.value.vb.Ig(c) && (a++, 2 < a)) return !0; if (10 < b) break; b++ } return !1 }; Sq.prototype.rh = function(a, b) { for (var c = !0, d = a.vertexes.i; d.next();) { var e = d.value; c ? (c = !1, b.set(e.vb)) : b.qi(e.vb) } return b }; function fr(a, b, c) { u && (z.p(b, Sq, "computeClusterLayoutIterations:level"), z.p(c, Sq, "computeClusterLayoutIterations:maxiter")); return Math.max(Math.min(a.network.vertexes.count, c * (b + 1) / 11), 10) } function Uq(a, b, c) { u && (z.p(b, Sq, "layoutClusters:level"), z.p(c, Sq, "layoutClusters:maxiter")); if (lr(a, b)) { var d = a.Qh; a.Qh *= 1 + 1 / (b + 1); var e = mr(a, b), g = Math.max(0, fr(a, b, c)); a.pA += g; Uq(a, b + 1, c); Wq(a, g); nr(a, e, b); c = a.Dg; null === c ? c = new J(or) : c.clear(); c.$c(e.vertexes); c.sort(function(a, b) { return null === a || null === b || a === b ? 0 : b.hg - a.hg }); for (e = c.i; e.next();) pr(a, e.value, b); a.Qh = d } } function lr(a, b) { u && z.p(b, Sq, "hasClusters:level"); if (10 < b || 3 > a.network.vertexes.count) return !1; null === a.Dg ? a.Dg = new J(or) : a.Dg.clear(); a.Dg.$c(a.network.vertexes); var c = a.Dg; c.sort(function(a, b) { return null === a || null === b || a === b ? 0 : b.hg - a.hg }); for (var d = c.count - 1; 0 <= d && 1 >= c.ea(d).hg;) d--; return 1 < c.count - d } function mr(a, b) { u && z.p(b, Sq, "pushSubNetwork:level"); for (var c = a.network, d = new Tq, e = a.Dg.i; e.next();) { var g = e.value; if (1 < g.hg) { d.tl(g); var h = new qr; h.Wx = g.hg; h.Xx = g.width; h.Vx = g.height; h.jB = g.R.x; h.kB = g.R.y; null === g.Dh && (g.Dh = new J(qr)); g.Dh.add(h); g.LA = g.Dh.count - 1 } else break } for (var k = c.edges.i; k.next();) if (e = k.value, e.fromVertex.network === d && e.toVertex.network === d) d.$o(e); else if (e.fromVertex.network === d) { var l = e.fromVertex.Xm; null === l && (l = new J(or), e.fromVertex.Xm = l); l.add(e.toVertex); e.fromVertex.hg--; e.fromVertex.uk += e.toVertex.uk } else e.toVertex.network === d && (l = e.toVertex.Xm, null === l && (l = new J(or), e.toVertex.Xm = l), l.add(e.fromVertex), e.toVertex.hg--, e.toVertex.uk += e.fromVertex.uk); for (e = d.edges.i; e.next();) g = e.value, g.length *= Math.max(1, se((g.fromVertex.uk + g.toVertex.uk) / (4 * b + 1))); for (e = d.vertexes.i; e.next();) if (g = e.value, l = g.Xm, null !== l && 0 < l.count && (h = g.Dh.ea(g.Dh.count - 1), h = h.Wx - g.hg, !(0 >= h))) { for (var m = 0, n = 0, p = l.count - h; p < l.count; p++) { for (var q = l.ea(p), r = null, k = q.edges.i; k.next();) { var s = k.value; if (s.NH(q) === g) { r = s; break } } null !== r && (n += r.length, m += q.width * q.height) } l = g.ra; k = g.za; p = g.width; q = g.height; r = g.R; s = p * q; 1 > s && (s = 1); m = se((m + s + n * n * 4 / (h * h)) / s); h = (m - 1) * p / 2; m = (m - 1) * q / 2; g.vb = new w(l - r.x - h, k - r.y - m, p + 2 * h, q + 2 * m); g.focus = new N(r.x + h, r.y + m) } a.network = d; return c } function nr(a, b, c) { u && (z.l(b, Tq, Sq, "popNetwork:oldnet"), z.p(c, Sq, "popNetwork:level")); for (c = a.network.vertexes.i; c.next();) { var d = c.value; d.network = b; if (null !== d.Dh) { var e = d.Dh.ea(d.LA); d.hg = e.Wx; var g = e.jB, h = e.kB; d.vb = new w(d.ra - g, d.za - h, e.Xx, e.Vx); d.focus = new N(g, h); d.LA-- } } for (c = a.network.edges.i; c.next();) c.value.network = b; a.network = b } function pr(a, b, c) { u && (z.l(b, or, Sq, "surroundNode:oldnet"), z.p(c, Sq, "surroundNode:level")); var d = b.Xm; if (null !== d && 0 !== d.count) { c = b.ra; var e = b.za, g = b.width, h = b.height; null !== b.Dh && 0 < b.Dh.count && (h = b.Dh.ea(0), g = h.Xx, h = h.Vx); for (var g = se(g * g + h * h) / 2, k = !1, l = h = 0, m = 0, n = b.vertexes.i; n.next();) { var p = n.value; 1 >= p.hg ? l++ : (k = !0, m++, h += Math.atan2(b.za - p.za, b.ra - p.ra)) } if (0 !== l) for (0 < m && (h /= m), m = b = 0, b = k ? 2 * Math.PI / (l + 1) : 2 * Math.PI / l, 0 === l % 2 && (m = b / 2), 1 < d.count && d.sort(function(a, b) { return null === a || null === b || a === b ? 0 : b.width * b.height - a.width * a.height }), k = 0 === l % 2 ? 0 : 1, d = d.i; d.next();) if (l = d.value, !(1 < l.hg || a.isFixed(l))) { n = null; for (p = l.edges.i; p.next();) { n = p.value; break } var p = l.width, q = l.height, p = se(p * p + q * q) / 2, n = g + n.length + p, p = h + (b * (k / 2 >> 1) + m) * (0 === k % 2 ? 1 : -1); l.ra = c + n * Math.cos(p); l.za = e + n * Math.sin(p); k++ } } } function Vq(a, b, c, d, e, g, h) { var k = 9E19, l = -1, m = 0; a: for (; m < b; m++) { var n = a[m], p = n.x - c, q = n.y - d, p = p * p + q * q; if (p < k) { for (q = m - 1; 0 <= q; q--) if (a[q].y > n.y && a[q].x - n.x < e + h.width) continue a; for (q = m + 1; q < b; q++) if (a[q].x > n.x && a[q].y - n.y < g + h.height) continue a; l = m; k = p } } return l } Sq.prototype.Bz = function() { if (this.comments) for (var a = this.network.vertexes.i; a.next();) this.addComments(a.value) }; Sq.prototype.addComments = function(a) { var b = a.Pc; if (null !== b) for (b = b.rE(); b.next();) { var c = b.value; if ("Comment" === c.nc && c.isVisible()) { var d = this.network.en(c); null === d && (d = this.network.ht(c)); d.charge = this.nH; for (var c = null, e = d.pc; e.next();) { var g = e.value; if (g.toVertex === a) { c = g; break } } if (null === c) for (e = d.tc; e.next();) if (g = e.value, g.fromVertex === a) { c = g; break } null === c && (c = this.network.Hp(a, d, null)); c.length = this.oH } } }; function rr(a, b) { u && (z.l(a, or, Sq, "getNodeDistance:vertexA"), z.l(b, or, Sq, "getNodeDistance:vertexB")); var c = a.P, d = c.x, e = c.y, g = c.width, c = c.height, h = b.P, k = h.x, l = h.y, m = h.width, h = h.height; return d + g < k ? e > l + h ? (d = d + g - k, e = e - l - h, se(d * d + e * e)) : e + c < l ? (d = d + g - k, e = e + c - l, se(d * d + e * e)) : k - (d + g) : d > k + m ? e > l + h ? (d = d - k - m, e = e - l - h, se(d * d + e * e)) : e + c < l ? (d = d - k - m, e = e + c - l, se(d * d + e * e)) : d - (k + m) : e > l + h ? e - (l + h) : e + c < l ? l - (e + c) : .1 } function Wq(a, b) { u && z.p(b, Sq, "performIterations:num"); a.Dg = null; for (var c = a.wr + b; a.wr < c && (a.wr++, sr(a));); a.Dg = null } function sr(a) { null === a.Dg && (a.Dg = new J(or), a.Dg.$c(a.network.vertexes)); var b = a.Dg.o; if (0 >= b.length) return !1; var c = b[0]; c.forceX = 0; c.forceY = 0; for (var d = c.ra, e = d, g = c.za, h = g, c = 1; c < b.length; c++) { var k = b[c]; k.forceX = 0; k.forceY = 0; var l = k.ra, k = k.za, d = Math.min(d, l), e = Math.max(e, l), g = Math.min(g, k), h = Math.max(h, k) }(g = e - d > h - g) ? b.sort(function(a, b) { return null === a || null === b || a === b ? 0 : a.ra - b.ra }): b.sort(function(a, b) { return null === a || null === b || a === b ? 0 : a.za - b.za }); for (var h = a.Qh, m = 0, n = 0, p = 0, c = 0; c < b.length; c++) { var k = b[c], l = k.P, q = k.R, d = l.x + q.x, l = l.y + q.y, n = k.charge * a.electricalFieldX(d, l), p = k.charge * a.electricalFieldY(d, l), n = n + k.mass * a.gravitationalFieldX(d, l), p = p + k.mass * a.gravitationalFieldY(d, l); k.forceX += n; k.forceY += p; for (q = c + 1; q < b.length; q++) if (e = b[q], e !== k) { var r = e.P, n = e.R, p = r.x + n.x, r = r.y + n.y; if (d - p > h || p - d > h) { if (g) break } else if (l - r > h || r - l > h) { if (!g) break } else { var s = rr(k, e); 1 > s ? (n = a.Bx, null === n && (a.Bx = n = new Ka(0)), m = n.random(), s = n.random(), d > p ? (n = Math.abs(e.P.right - k.P.x), n = (1 + n) * m) : d < p ? (n = Math.abs(e.P.x - k.P.right), n = -(1 + n) * m) : (n = Math.max(e.width, k.width), n = (1 + n) * m - n / 2), l > r ? (p = Math.abs(e.P.bottom - k.P.y), p = (1 + p) * s) : d < p ? (p = Math.abs(e.P.y - k.P.bottom), p = -(1 + p) * s) : (p = Math.max(e.height, k.height), p = (1 + p) * s - p / 2)) : (m = -(k.charge * e.charge) / (s * s), n = (p - d) / s * m, p = (r - l) / s * m); k.forceX += n; k.forceY += p; e.forceX -= n; e.forceY -= p } } } for (c = a.network.edges.i; c.next();) g = c.value, k = g.fromVertex, e = g.toVertex, l = k.P, q = k.R, d = l.x + q.x, l = l.y + q.y, r = e.P, n = e.R, p = r.x + n.x, r = r.y + n.y, s = rr(k, e), 1 > s ? (n = a.Bx, null === n && (a.Bx = n = new Ka(0)), m = n.random(), s = n.random(), n = (d > p ? 1 : -1) * (1 + (e.width > k.width) ? e.width : k.width) * m, p = (l > r ? 1 : -1) * (1 + (e.height > k.height) ? e.height : k.height) * s) : (m = g.stiffness * (s - g.length), n = (p - d) / s * m, p = (r - l) / s * m), k.forceX += n, k.forceY += p, e.forceX -= n, e.forceY -= p; c = 0; d = Math.max(a.Qh / 20, 50); for (e = 0; e < b.length; e++) k = b[e], a.isFixed(k) ? a.moveFixedVertex(k) : (g = k.forceX, h = k.forceY, g < -d ? g = -d : g > d && (g = d), h < -d ? h = -d : h > d && (h = d), k.ra += g, k.za += h, c = Math.max(c, g * g + h * h)); return c > a.oE * a.oE } Sq.prototype.moveFixedVertex = function() {}; Sq.prototype.commitLayout = function() { this.QA(); this.commitNodes(); this.Rt && this.commitLinks() }; Sq.prototype.QA = function() { if (this.aq) for (var a = this.network.edges.i; a.next();) { var b = a.value.link; null !== b && (b.Db = Pc, b.Eb = Pc) } }; Sq.prototype.commitNodes = function() { var a = 0, b = 0; if (this.UG) { var c = z.kg(); this.rh(this.network, c); b = this.je; a = b.x - c.x; b = b.y - c.y; z.dc(c) } for (var c = z.kg(), d = this.network.vertexes.i; d.next();) { var e = d.value; if (0 !== a || 0 !== b) c.assign(e.vb), c.x += a, c.y += b, e.vb = c; e.commit() } z.dc(c) }; Sq.prototype.commitLinks = function() { for (var a = this.network.edges.i; a.next();) a.value.commit() }; Sq.prototype.springStiffness = function(a) { a = a.stiffness; return isNaN(a) ? this.Yn : a }; Sq.prototype.springLength = function(a) { a = a.length; return isNaN(a) ? this.Xn : a }; Sq.prototype.electricalCharge = function(a) { a = a.charge; return isNaN(a) ? this.Un : a }; Sq.prototype.electricalFieldX = function() { return 0 }; Sq.prototype.electricalFieldY = function() { return 0 }; Sq.prototype.gravitationalMass = function(a) { a = a.mass; return isNaN(a) ? this.Wn : a }; Sq.prototype.gravitationalFieldX = function() { return 0 }; Sq.prototype.gravitationalFieldY = function() { return 0 }; Sq.prototype.isFixed = function(a) { return a.isFixed }; z.w(Sq, { gK: "currentIteration" }, function() { return this.wr }); z.defineProperty(Sq, { KD: "arrangementSpacing" }, function() { return this.lg }, function(a) { z.l(a, Ea, Sq, "arrangementSpacing"); this.lg.N(a) || (this.lg.assign(a), this.I()) }); z.defineProperty(Sq, { UG: "arrangesToOrigin" }, function() { return this.qq }, function(a) { this.qq !== a && (z.g(a, "boolean", Sq, "arrangesToOrigin"), this.qq = a, this.I()) }); z.defineProperty(Sq, { aq: "setsPortSpots" }, function() { return this.Zh }, function(a) { this.Zh !== a && (z.g(a, "boolean", Sq, "setsPortSpots"), this.Zh = a, this.I()) }); z.defineProperty(Sq, { comments: "comments" }, function() { return this.Ih }, function(a) { this.Ih !== a && (z.g(a, "boolean", Sq, "comments"), this.Ih = a, this.I()) }); z.defineProperty(Sq, { pA: "maxIterations" }, function() { return this.Co }, function(a) { this.Co !== a && (z.g(a, "number", Sq, "maxIterations"), 0 <= a && (this.Co = a, this.I())) }); z.defineProperty(Sq, { oE: "epsilonDistance" }, function() { return this.Xq }, function(a) { this.Xq !== a && (z.g(a, "number", Sq, "epsilonDistance"), 0 < a && (this.Xq = a, this.I())) }); z.defineProperty(Sq, { CK: "infinityDistance" }, function() { return this.Qh }, function(a) { this.Qh !== a && (z.g(a, "number", Sq, "infinityDistance"), 1 < a && (this.Qh = a, this.I())) }); z.defineProperty(Sq, { Bx: "randomNumberGenerator" }, function() { return this.ks }, function(a) { this.ks !== a && (null !== a && "function" !== typeof a.random && z.k('ForceDirectedLayout.randomNumberGenerator must have a "random()" function on it: ' + a), this.ks = a) }); z.defineProperty(Sq, { sK: "defaultSpringStiffness" }, function() { return this.Yn }, function(a) { this.Yn !== a && (z.g(a, "number", Sq, "defaultSpringStiffness"), this.Yn = a, this.I()) }); z.defineProperty(Sq, { rK: "defaultSpringLength" }, function() { return this.Xn }, function(a) { this.Xn !== a && (z.g(a, "number", Sq, "defaultSpringLength"), this.Xn = a, this.I()) }); z.defineProperty(Sq, { lK: "defaultElectricalCharge" }, function() { return this.Un }, function(a) { this.Un !== a && (z.g(a, "number", Sq, "defaultElectricalCharge"), this.Un = a, this.I()) }); z.defineProperty(Sq, { mK: "defaultGravitationalMass" }, function() { return this.Wn }, function(a) { this.Wn !== a && (z.g(a, "number", Sq, "defaultGravitationalMass"), this.Wn = a, this.I()) }); z.defineProperty(Sq, { oH: "defaultCommentSpringLength" }, function() { return this.Nq }, function(a) { this.Nq !== a && (z.g(a, "number", Sq, "defaultCommentSpringLength"), this.Nq = a, this.I()) }); z.defineProperty(Sq, { nH: "defaultCommentElectricalCharge" }, function() { return this.Mq }, function(a) { this.Mq !== a && (z.g(a, "number", Sq, "defaultCommentElectricalCharge"), this.Mq = a, this.I()) }); function qr() { this.kB = this.jB = this.Vx = this.Xx = this.Wx = 0 } function Tq() { wa.call(this) } z.Qa(Tq, wa); z.ia("ForceDirectedNetwork", Tq); Tq.prototype.createVertex = function() { return new or }; Tq.prototype.createEdge = function() { return new tr }; function or() { xa.call(this); this.isFixed = !1; this.mass = this.charge = NaN; this.uk = this.hg = this.forceY = this.forceX = 0; this.Dh = this.Xm = null; this.LA = 0 } z.Qa(or, xa); z.ia("ForceDirectedVertex", or); function tr() { ya.call(this); this.length = this.stiffness = NaN } z.Qa(tr, ya); z.ia("ForceDirectedEdge", tr); function on() { 0 < arguments.length && z.od(on); vg.call(this); this.Td = this.qm = 25; this.fa = 0; this.Tn = ur; this.yo = vr; this.oo = wr; this.om = 4; this.Gn = xr; this.Ri = yr; this.Zh = !0; this.Br = 4; this.Kb = this.Iv = this.yb = -1; this.Rf = this.Lr = 0; this.Rb = this.Pf = this.Qf = this.tg = this.ge = null; this.Ur = 0; this.Tr = this.vm = null; this.vg = 0; this.Vr = null; this.hh = []; this.hh.length = 100 } z.Qa(on, vg); z.ia("LayeredDigraphLayout", on); on.prototype.cloneProtected = function(a) { vg.prototype.cloneProtected.call(this, a); a.qm = this.qm; a.Td = this.Td; a.fa = this.fa; a.Tn = this.Tn; a.yo = this.yo; a.oo = this.oo; a.om = this.om; a.Gn = this.Gn; a.Ri = this.Ri; a.Zh = this.Zh; a.Br = this.Br }; on.prototype.createNetwork = function() { return new zr }; on.prototype.doLayout = function(a) { null === a && z.k("Layout.doLayout(collection) argument must not be null but a Diagram, a Group, or an Iterable of Parts"); null === this.network && (this.network = this.makeNetwork(a)); this.je = this.initialOrigin(this.je); this.Iv = -1; this.Rf = this.Lr = 0; this.Vr = this.Tr = this.vm = null; for (a = 0; a < this.hh.length; a++) this.hh[a] = null; if (0 < this.network.vertexes.count) { this.network.Sw(); for (a = this.network.edges.i; a.next();) a.value.rev = !1; switch (this.Tn) { default: case Ar: var b = 0, c = this.network.vertexes.count - 1;a = [];a.length = c + 1; for (var d = this.network.vertexes.i; d.next();) d.value.valid = !0; for (; null !== Br(this.network);) { for (d = Cr(this.network); null !== d;) a[c] = d, c--, d.valid = !1, d = Cr(this.network); for (d = Dr(this.network); null !== d;) a[b] = d, b++, d.valid = !1, d = Dr(this.network); for (var d = null, e = 0, g = this.network.vertexes.i; g.next();) { var h = g.value; if (h.valid) { for (var k = 0, l = h.pc; l.next();) l.value.toVertex.valid && k++; for (var l = 0, m = h.tc; m.next();) m.value.fromVertex.valid && l++; if (null === d || e < k - l) d = h, e = k - l } } null !== d && (a[b] = d, b++, d.valid = !1) } for (b = 0; b < this.network.vertexes.count; b++) a[b].index = b; for (a = this.network.edges.i; a.next();) b = a.value, b.fromVertex.index > b.toVertex.index && (this.network.Fx(b), b.rev = !0); break; case ur: for (b = this.network.vertexes.i; b.next();) a = b.value, a.jp = -1, a.finish = -1; for (a = this.network.edges.i; a.next();) a.value.forest = !1;this.Ur = 0; for (b.reset(); b.next();) c = b.value, 0 === c.tc.count && Er(this, c); for (b.reset(); b.next();) c = b.value, -1 === c.jp && Er(this, c); for (a.reset(); a.next();) b = a.value, b.forest || (c = b.fromVertex, d = c.finish, e = b.toVertex, g = e.finish, e.jp < c.jp && d < g && (this.network.Fx(b), b.rev = !0)) } for (a = this.network.vertexes.i; a.next();) a.value.layer = -1; this.yb = -1; this.assignLayers(); for (a.reset(); a.next();) this.yb = Math.max(this.yb, a.value.layer); a = []; for (c = this.network.edges.i; c.next();) b = c.value, b.valid = !1, a.push(b); for (c = 0; c < a.length; c++) if (b = a[c], !b.valid && (null !== b.fromVertex.Bd && null !== b.toVertex.Bd || b.fromVertex.layer !== b.toVertex.layer)) { l = h = k = g = 0; e = b.fromVertex; d = b.toVertex; if (null !== b.link) { k = b.link; if (null === k) continue; var n = e.Bd, g = d.Bd; if (null === n || null === g) continue; var p = k.Y, h = k.da, q = k.md, l = k.Qd; b.rev && (k = p, m = q, p = h, q = l, h = k, l = m); var r = e.R, k = b.toVertex.R, s = b.rev ? d.P : e.P, m = z.O(); s.F() ? (lp(p, q, ec, m), m.F() || m.assign(r)) : m.assign(r); n !== p && s.F() && p.isVisible() && (n = e.P, n.F() && (m.x += s.x - n.x, m.y += s.y - n.y)); p = b.rev ? e.P : d.P; n = z.O(); p.F() ? (lp(h, l, ec, n), n.F() || n.assign(k)) : n.assign(k); g !== h && p.F() && h.isVisible() && (g = d.P, g.F() && (n.x += p.x - g.x, n.y += p.y - g.y)); 90 === this.fa || 270 === this.fa ? (g = Math.round((m.x - r.x) / this.Td), h = m.x, k = Math.round((n.x - k.x) / this.Td), l = n.x) : (g = Math.round((m.y - r.y) / this.Td), h = m.y, k = Math.round((n.y - k.y) / this.Td), l = n.y); z.A(m); z.A(n); b.portFromColOffset = g; b.portFromPos = h; b.portToColOffset = k; b.portToPos = l } else b.portFromColOffset = 0, b.portFromPos = 0, b.portToColOffset = 0, b.portToPos = 0; m = e.layer; r = d.layer; a: if (n = b, p = 0, s = n.link, null !== s) { var t = s.md, v = s.Qd; if (null !== t && null !== v) { var x = s.Y, q = s.da; if (null !== x && null !== q) { var y = t.Db, A = v.Eb; this.aq || (s.Db.bd() || (y = s.Db), s.Eb.bd() || (A = s.Eb)); var B = s.rc, L = Fr(this, !0); if (y.bd() || y === Yb) y = L; var H = Fr(this, !1); if (A.bd() || A === Yb) A = H; if (y.kj() && y.vp(H) && A.kj() && A.vp(L)) { p = 0; break a } L = s.getLinkPoint(x, t, y, !0, B, q, v, z.O()); y = s.getLinkDirection(x, t, L, y, !0, B, q, v); z.A(L); y === Gr(this, n, !0) ? p += 1 : this.aq && null !== x && 1 === x.ports.count && n.rev && (p += 1); y = s.getLinkPoint(q, v, A, !1, B, x, t, z.O()); s = s.getLinkDirection(q, v, y, A, !1, B, x, t); z.A(y); s === Gr(this, n, !1) ? p += 2 : this.aq && null !== q && 1 === q.ports.count && n.rev && (p += 2) } } } n = 1 === p || 3 === p ? !0 : !1; if (p = 2 === p || 3 === p ? !0 : !1) q = this.network.createVertex(), q.Bd = null, q.Um = 1, q.layer = m, q.near = e, this.network.tl(q), e = this.network.Hp(e, q, b.link), e.valid = !1, e.rev = b.rev, e.portFromColOffset = g, e.portToColOffset = 0, e.portFromPos = h, e.portToPos = 0, e = q; s = 1; n && s--; if (m - r > s && 0 < m) { b.valid = !1; q = this.network.createVertex(); q.Bd = null; q.Um = 2; q.layer = m - 1; this.network.tl(q); e = this.network.Hp(e, q, b.link); e.valid = !0; e.rev = b.rev; e.portFromColOffset = p ? 0 : g; e.portToColOffset = 0; e.portFromPos = p ? 0 : h; e.portToPos = 0; e = q; for (m--; m - r > s && 0 < m;) q = this.network.createVertex(), q.Bd = null, q.Um = 3, q.layer = m - 1, this.network.tl(q), e = this.network.Hp(e, q, b.link), e.valid = !0, e.rev = b.rev, e.portFromColOffset = 0, e.portToColOffset = 0, e.portFromPos = 0, e.portToPos = 0, e = q, m--; e = this.network.Hp(q, d, b.link); e.valid = !n; n && (q.near = d); e.rev = b.rev; e.portFromColOffset = 0; e.portToColOffset = k; e.portFromPos = 0; e.portToPos = l } else b.valid = !0 } b = this.ge = []; for (c = 0; c <= this.yb; c++) b[c] = 0; for (a = this.network.vertexes.i; a.next();) c = a.value, c.index = -1; this.initializeIndices(); this.Iv = -1; for (c = this.Rf = this.Lr = 0; c <= this.yb; c++) b[c] > b[this.Rf] && (this.Iv = b[c] - 1, this.Rf = c), b[c] < b[this.Lr] && (this.Lr = c); this.Vr = []; for (c = 0; c < b.length; c++) this.Vr[c] = []; for (a.reset(); a.next();) b = a.value, c = this.Vr[b.layer], c[b.index] = b; this.Kb = -1; for (a = 0; a <= this.yb; a++) { b = Hr(this, a); c = 0; d = this.ge[a]; for (e = 0; e < d; e++) g = b[e], c += this.nodeMinColumnSpace(g, !0), g.column = c, c += 1, c += this.nodeMinColumnSpace(g, !1); this.Kb = Math.max(this.Kb, c - 1); Ir(this, a, b) } this.reduceCrossings(); this.straightenAndPack(); this.updateParts() } this.network = null; this.Gf = !0 }; on.prototype.linkMinLength = function() { return 1 }; function Jr(a) { var b = a.fromVertex.Bd; a = a.toVertex.Bd; return null === b && null === a ? 8 : null === b || null === a ? 4 : 1 } on.prototype.nodeMinLayerSpace = function(a, b) { return null === a.Bd ? 0 : 90 === this.fa || 270 === this.fa ? b ? a.R.y + 10 : a.P.height - a.R.y + 10 : b ? a.R.x + 10 : a.P.width - a.R.x + 10 }; on.prototype.nodeMinColumnSpace = function(a, b) { if (null === a.Bd) return 0; var c = b ? a.yA : a.xA; if (null !== c) return c; c = this.fa; return 90 === c || 270 === c ? b ? a.yA = a.R.x / this.Td + 1 | 0 : a.xA = (a.P.width - a.R.x) / this.Td + 1 | 0 : b ? a.yA = a.R.y / this.Td + 1 | 0 : a.xA = (a.P.height - a.R.y) / this.Td + 1 | 0 }; function Kr(a) { null === a.vm && (a.vm = []); for (var b = 0, c = a.network.vertexes.i; c.next();) { var d = c.value; a.vm[b] = d.layer; b++; a.vm[b] = d.column; b++; a.vm[b] = d.index; b++ } return a.vm } function Lr(a, b) { for (var c = 0, d = a.network.vertexes.i; d.next();) { var e = d.value; e.layer = b[c]; c++; e.column = b[c]; c++; e.index = b[c]; c++ } } function Mr(a, b, c) { u && (z.p(b, on, "crossingMatrix:unfixedLayer"), z.p(c, on, "crossingMatrix:direction")); var d = Hr(a, b), e = a.ge[b]; if (null === a.Tr || a.Tr.length < e * e) a.Tr = []; for (var g = a.Tr, h = 0; h < e; h++) { var k = 0, l = d[h], m = l.near, n = 0; if (null !== m && m.layer === l.layer) if (n = m.index, n > h) for (var p = h + 1; p < n; p++) l = d[p], l.near === m && l.Um === m.Um || k++; else for (p = h - 1; p > n; p--) l = d[p], l.near === m && l.Um === m.Um || k++; var m = 0, q, r = q = p = l = 0, s, t = 0, v = 0; s = 0; var x; if (0 <= c) for (n = d[h].Ze, m = 0; m < n.count; m++) if (q = n.o[m], q.valid && q.fromVertex.layer !== b) for (l = q.fromVertex.index, p = q.portToPos, q = q.portFromPos, r = m + 1; r < n.count; r++) s = n.o[r], s.valid && s.fromVertex.layer !== b && (t = s.fromVertex.index, v = s.portToPos, s = s.portFromPos, p < v && (l > t || l === t && q > s) && k++, v < p && (t > l || t === l && s > q) && k++); if (0 >= c) for (n = d[h].Te, m = 0; m < n.count; m++) if (q = n.o[m], q.valid && q.toVertex.layer !== b) for (l = q.toVertex.index, p = q.portToPos, q = q.portFromPos, r = m + 1; r < n.count; r++) s = n.o[r], s.valid && s.toVertex.layer !== b && (t = s.toVertex.index, v = s.portToPos, s = s.portFromPos, q < s && (l > t || l === t && p > v) && k++, s < q && (t > l || t === l && v > p) && k++); g[h * e + h] = k; for (n = h + 1; n < e; n++) { var y = 0, A = 0; if (0 <= c) for (k = d[h].Ze, x = d[n].Ze, m = 0; m < k.count; m++) if (q = k.o[m], q.valid && q.fromVertex.layer !== b) for (l = q.fromVertex.index, q = q.portFromPos, r = 0; r < x.count; r++) s = x.o[r], s.valid && s.fromVertex.layer !== b && (t = s.fromVertex.index, s = s.portFromPos, (l < t || l === t && q < s) && A++, (t < l || t === l && s < q) && y++); if (0 >= c) for (k = d[h].Te, x = d[n].Te, m = 0; m < k.count; m++) if (q = k.o[m], q.valid && q.toVertex.layer !== b) for (l = q.toVertex.index, p = q.portToPos, r = 0; r < x.count; r++) s = x.o[r], s.valid && s.toVertex.layer !== b && (t = s.toVertex.index, v = s.portToPos, (l < t || l === t && p < v) && A++, (t < l || t === l && v < p) && y++); g[h * e + n] = y; g[n * e + h] = A } } Ir(a, b, d); return g } on.prototype.countCrossings = function() { for (var a = 0, b = 0; b <= this.yb; b++) for (var c = Mr(this, b, 1), d = this.ge[b], e = 0; e < d; e++) for (var g = e; g < d; g++) a += c[e * d + g]; return a }; function Nr(a) { for (var b = 0, c = 0; c <= a.yb; c++) { for (var d = a, e = c, g = Hr(d, e), h = d.ge[e], k = 0, l = 0; l < h; l++) { var m = null, m = g[l].Te, n, p = 0, q = 0; if (null !== m) for (var r = 0; r < m.count; r++) n = m.o[r], n.valid && n.toVertex.layer !== e && (p = n.fromVertex.column + n.portFromColOffset, q = n.toVertex.column + n.portToColOffset, k += (Math.abs(p - q) + 1) * Jr(n)) } Ir(d, e, g); b += k } return b } on.prototype.normalize = function() { var a = Infinity; this.Kb = -1; for (var b = this.network.vertexes.i; b.next();) { var c = b.value, a = Math.min(a, c.column - this.nodeMinColumnSpace(c, !0)); this.Kb = Math.max(this.Kb, c.column + this.nodeMinColumnSpace(c, !1)) } for (b.reset(); b.next();) b.value.column -= a; this.Kb -= a }; function Or(a, b, c) { u && (z.p(b, on, "barycenters:unfixedLayer"), z.p(c, on, "barycenters:direction")); for (var d = Hr(a, b), e = a.ge[b], g = [], h = 0; h < e; h++) { var k = d[h], l = null; 0 >= c && (l = k.Ze); var m = null; 0 <= c && (m = k.Te); var n = 0, p = 0, q = k.near; null !== q && q.layer === k.layer && (n += q.column - 1, p++); if (null !== l) for (q = 0; q < l.count; q++) { var k = l.o[q], r = k.fromVertex; k.valid && !k.rev && r.layer !== b && (n += r.column, p++) } if (null !== m) for (l = 0; l < m.count; l++) k = m.o[l], q = k.toVertex, k.valid && !k.rev && q.layer !== b && (n += q.column, p++); g[h] = 0 === p ? -1 : n / p } Ir(a, b, d); return g } function Pr(a, b, c) { u && (z.p(b, on, "medians:unfixedLayer"), z.p(c, on, "medians:direction")); for (var d = Hr(a, b), e = a.ge[b], g = [], h = 0; h < e; h++) { var k = d[h], l = null; 0 >= c && (l = k.Ze); var m = null; 0 <= c && (m = k.Te); var n = 0, p = [], q = k.near; null !== q && q.layer === k.layer && (p[n] = q.column - 1, n++); if (null !== l) for (q = 0; q < l.count; q++) { var k = l.o[q], r = k.fromVertex; k.valid && !k.rev && r.layer !== b && (p[n] = r.column + k.portFromColOffset, n++) } if (null !== m) for (l = 0; l < m.count; l++) k = m.o[l], q = k.toVertex, k.valid && !k.rev && q.layer !== b && (p[n] = q.column + k.portToColOffset, n++); 0 === n ? g[h] = -1 : (p.sort(function(a, b) { return a - b }), m = n >> 1, g[h] = n & 1 ? p[m] : p[m - 1] + p[m] >> 1) } Ir(a, b, d); return g } function Qr(a, b, c, d, e, g) { if (b.component === d) { b.component = c; var h = 0, k = 0; if (e) for (var l = b.pc; l.next();) { var k = l.value, m = k.toVertex, h = b.layer - m.layer, k = a.linkMinLength(k); h === k && Qr(a, m, c, d, e, g) } if (g) for (l = b.tc; l.next();) k = l.value, m = k.fromVertex, h = m.layer - b.layer, k = a.linkMinLength(k), h === k && Qr(a, m, c, d, e, g) } } function Rr(a, b, c, d, e, g) { if (b.component === d) { b.component = c; if (e) for (var h = b.pc; h.next();) Rr(a, h.value.toVertex, c, d, e, g); if (g) for (b = b.tc; b.next();) Rr(a, b.value.fromVertex, c, d, e, g) } } function Br(a) { for (a = a.vertexes.i; a.next();) { var b = a.value; if (b.valid) return b } return null } function Cr(a) { for (a = a.vertexes.i; a.next();) { var b = a.value; if (b.valid) { for (var c = !0, d = b.pc; d.next();) if (d.value.toVertex.valid) { c = !1; break } if (c) return b } } return null } function Dr(a) { for (a = a.vertexes.i; a.next();) { var b = a.value; if (b.valid) { for (var c = !0, d = b.tc; d.next();) if (d.value.fromVertex.valid) { c = !1; break } if (c) return b } } return null } function Er(a, b) { b.jp = a.Ur; a.Ur++; for (var c = b.pc; c.next();) { var d = c.value, e = d.toVertex; - 1 === e.jp && (d.forest = !0, Er(a, e)) } b.finish = a.Ur; a.Ur++ } on.prototype.assignLayers = function() { switch (this.yo) { case Sr: Tr(this); break; case Ur: for (var a = 0, b = this.network.vertexes.i; b.next();) a = Vr(this, b.value), this.yb = Math.max(a, this.yb); for (b.reset(); b.next();) a = b.value, a.layer = this.yb - a.layer; break; default: case vr: Tr(this); for (b = this.network.vertexes.i; b.next();) b.value.valid = !1; for (b.reset(); b.next();) a = b.value, 0 === a.tc.count && Wr(this, a); a = Infinity; for (b.reset(); b.next();) a = Math.min(a, b.value.layer); this.yb = -1; for (b.reset(); b.next();) { var c = b.value; c.layer -= a; this.yb = Math.max(this.yb, c.layer) } } }; function Tr(a) { for (var b = a.network.vertexes.i; b.next();) { var c = Xr(a, b.value); a.yb = Math.max(c, a.yb) } } function Xr(a, b) { var c = 0; if (-1 === b.layer) { for (var d = b.pc; d.next();) var e = d.value, g = e.toVertex, e = a.linkMinLength(e), c = Math.max(c, Xr(a, g) + e); b.layer = c } else c = b.layer; return c } function Vr(a, b) { var c = 0; if (-1 === b.layer) { for (var d = b.tc; d.next();) var e = d.value, g = e.fromVertex, e = a.linkMinLength(e), c = Math.max(c, Vr(a, g) + e); b.layer = c } else c = b.layer; return c } function Wr(a, b) { if (!b.valid) { b.valid = !0; for (var c = b.pc; c.next();) Wr(a, c.value.toVertex); for (c = a.network.vertexes.i; c.next();) c.value.component = -1; for (var d = b.Ze.o, e = d.length, g = 0; g < e; g++) { var h = d[g], k = a.linkMinLength(h); h.fromVertex.layer - h.toVertex.layer > k && Qr(a, h.fromVertex, 0, -1, !0, !1) } for (Qr(a, b, 1, -1, !0, !0); 0 !== b.component;) { for (var k = 0, d = Infinity, l = 0, m = null, n = a.network.vertexes.i; n.next();) { var p = n.value; if (1 === p.component) { for (var q = 0, r = !1, s = p.Ze.o, e = s.length, g = 0; g < e; g++) { var h = s[g], t = h.fromVertex, q = q + 1; 1 !== t.component && (k += 1, t = t.layer - p.layer, h = a.linkMinLength(h), d = Math.min(d, t - h)) } h = p.Te.o; e = h.length; for (g = 0; g < e; g++) s = h[g].toVertex, q -= 1, 1 !== s.component ? k -= 1 : r = !0; (null === m || q < l) && !r && (m = p, l = q) } } if (0 < k) { for (c.reset(); c.next();) e = c.value, 1 === e.component && (e.layer += d); b.component = 0 } else m.component = 0 } for (c = a.network.vertexes.i; c.next();) c.value.component = -1; for (Qr(a, b, 1, -1, !0, !1); 0 !== b.component;) { g = 0; e = Infinity; d = 0; k = null; for (l = a.network.vertexes.i; l.next();) if (m = l.value, 1 === m.component) { n = 0; p = !1; h = m.Ze.o; q = h.length; for (r = 0; r < q; r++) s = h[r].fromVertex, n += 1, 1 !== s.component ? g += 1 : p = !0; h = m.Te.o; q = h.length; for (r = 0; r < q; r++) s = h[r], t = s.toVertex, n -= 1, 1 !== t.component && (g -= 1, t = m.layer - t.layer, s = a.linkMinLength(s), e = Math.min(e, t - s)); (null === k || n > d) && !p && (k = m, d = n) } if (0 > g) { for (c.reset(); c.next();) g = c.value, 1 === g.component && (g.layer -= e); b.component = 0 } else k.component = 0 } } } function Gr(a, b, c) { return 90 === a.fa ? c && !b.rev || !c && b.rev ? 270 : 90 : 180 === a.fa ? c && !b.rev || !c && b.rev ? 0 : 180 : 270 === a.fa ? c && !b.rev || !c && b.rev ? 90 : 270 : c && !b.rev || !c && b.rev ? 180 : 0 } on.prototype.initializeIndices = function() { switch (this.oo) { default: case Yr: for (var a = this.network.vertexes.i; a.next();) { var b = a.value, c = b.layer; b.index = this.ge[c]; this.ge[c]++ } break; case wr: a = this.network.vertexes.i; for (b = this.yb; 0 <= b; b--) for (a.reset(); a.next();) c = a.value, c.layer === b && -1 === c.index && Zr(this, c); break; case $r: for (a = this.network.vertexes.i, b = 0; b <= this.yb; b++) for (a.reset(); a.next();) c = a.value, c.layer === b && -1 === c.index && as(this, c) } }; function Zr(a, b) { var c = b.layer; b.index = a.ge[c]; a.ge[c]++; for (var c = b.Te.jc(), d = !0; d;) for (var d = !1, e = 0; e < c.length - 1; e++) { var g = c[e], h = c[e + 1]; g.portFromColOffset > h.portFromColOffset && (d = !0, c[e] = h, c[e + 1] = g) } for (e = 0; e < c.length; e++) d = c[e], d.valid && (d = d.toVertex, -1 === d.index && Zr(a, d)) } function as(a, b) { var c = b.layer; b.index = a.ge[c]; a.ge[c]++; for (var c = b.Ze.jc(), d = !0, e = 0; d;) for (d = !1, e = 0; e < c.length - 1; e++) { var g = c[e], h = c[e + 1]; g.portToColOffset > h.portToColOffset && (d = !0, c[e] = h, c[e + 1] = g) } for (e = 0; e < c.length; e++) d = c[e], d.valid && (d = d.fromVertex, -1 === d.index && as(a, d)) } on.prototype.reduceCrossings = function() { for (var a = this.countCrossings(), b = Kr(this), c = 0, d = 0, e = 0, c = 0; c < this.om; c++) { for (d = 0; d <= this.yb; d++) bs(this, d, 1), cs(this, d, 1); e = this.countCrossings(); e < a && (a = e, b = Kr(this)); for (d = this.yb; 0 <= d; d--) bs(this, d, -1), cs(this, d, -1); e = this.countCrossings(); e < a && (a = e, b = Kr(this)) } Lr(this, b); for (c = 0; c < this.om; c++) { for (d = 0; d <= this.yb; d++) bs(this, d, 0), cs(this, d, 0); e = this.countCrossings(); e < a && (a = e, b = Kr(this)); for (d = this.yb; 0 <= d; d--) bs(this, d, 0), cs(this, d, 0); e = this.countCrossings(); e < a && (a = e, b = Kr(this)) } Lr(this, b); var g = !1, h = c = 0, k = 0, d = 0; switch (this.Gn) { case ds: break; case es: for (k = a + 1; (d = this.countCrossings()) < k;) for (k = d, c = this.yb; 0 <= c; c--) for (h = 0; h <= c; h++) { for (g = !0; g;) for (g = !1, d = c; d >= h; d--) g = cs(this, d, -1) || g; e = this.countCrossings(); e >= a ? Lr(this, b) : (a = e, b = Kr(this)); for (g = !0; g;) for (g = !1, d = c; d >= h; d--) g = cs(this, d, 1) || g; e = this.countCrossings(); e >= a ? Lr(this, b) : (a = e, b = Kr(this)); for (g = !0; g;) for (g = !1, d = h; d <= c; d++) g = cs(this, d, 1) || g; e >= a ? Lr(this, b) : (a = e, b = Kr(this)); for (g = !0; g;) for (g = !1, d = h; d <= c; d++) g = cs(this, d, -1) || g; e >= a ? Lr(this, b) : (a = e, b = Kr(this)); for (g = !0; g;) for (g = !1, d = c; d >= h; d--) g = cs(this, d, 0) || g; e >= a ? Lr(this, b) : (a = e, b = Kr(this)); for (g = !0; g;) for (g = !1, d = h; d <= c; d++) g = cs(this, d, 0) || g; e >= a ? Lr(this, b) : (a = e, b = Kr(this)) } break; default: case xr: for (c = this.yb, h = 0, k = a + 1; (d = this.countCrossings()) < k;) { k = d; for (g = !0; g;) for (g = !1, d = c; d >= h; d--) g = cs(this, d, -1) || g; e = this.countCrossings(); e >= a ? Lr(this, b) : (a = e, b = Kr(this)); for (g = !0; g;) for (g = !1, d = c; d >= h; d--) g = cs(this, d, 1) || g; e = this.countCrossings(); e >= a ? Lr(this, b) : (a = e, b = Kr(this)); for (g = !0; g;) for (g = !1, d = h; d <= c; d++) g = cs(this, d, 1) || g; e >= a ? Lr(this, b) : (a = e, b = Kr(this)); for (g = !0; g;) for (g = !1, d = h; d <= c; d++) g = cs(this, d, -1) || g; e >= a ? Lr(this, b) : (a = e, b = Kr(this)); for (g = !0; g;) for (g = !1, d = c; d >= h; d--) g = cs(this, d, 0) || g; e >= a ? Lr(this, b) : (a = e, b = Kr(this)); for (g = !0; g;) for (g = !1, d = h; d <= c; d++) g = cs(this, d, 0) || g; e >= a ? Lr(this, b) : (a = e, b = Kr(this)) } } Lr(this, b) }; function bs(a, b, c) { u && (z.p(b, on, "medianBarycenterCrossingReduction:unfixedLayer"), z.p(c, on, "medianBarycenterCrossingReduction:direction")); var d = 0, e = Hr(a, b), g = a.ge[b], h = Pr(a, b, c); c = Or(a, b, c); for (d = 0; d < g; d++) - 1 === c[d] && (c[d] = e[d].column), -1 === h[d] && (h[d] = e[d].column); for (var k = !0, l; k;) for (k = !1, d = 0; d < g - 1; d++) if (h[d + 1] < h[d] || h[d + 1] === h[d] && c[d + 1] < c[d]) k = !0, l = h[d], h[d] = h[d + 1], h[d + 1] = l, l = c[d], c[d] = c[d + 1], c[d + 1] = l, l = e[d], e[d] = e[d + 1], e[d + 1] = l; for (d = h = 0; d < g; d++) l = e[d], l.index = d, h += a.nodeMinColumnSpace(l, !0), l.column = h, h += 1, h += a.nodeMinColumnSpace(l, !1); Ir(a, b, e) } function cs(a, b, c) { var d = Hr(a, b), e = a.ge[b]; c = Mr(a, b, c); var g = 0, h; h = []; for (g = 0; g < e; g++) h[g] = -1; var k; k = []; for (g = 0; g < e; g++) k[g] = -1; for (var l = !1, m = !0; m;) for (m = !1, g = 0; g < e - 1; g++) { var n = c[d[g].index * e + d[g + 1].index], p = c[d[g + 1].index * e + d[g].index], q = 0, r = 0, s = d[g].column, t = d[g + 1].column, v = a.nodeMinColumnSpace(d[g], !0), x = a.nodeMinColumnSpace(d[g], !1), y = a.nodeMinColumnSpace(d[g + 1], !0), A = a.nodeMinColumnSpace(d[g + 1], !1), v = s - v + y, x = t - x + A, y = y = 0, B = d[g].tc.i; for (B.reset(); B.next();) if (A = B.value, A.valid && A.fromVertex.layer === b) { A = A.fromVertex; for (y = 0; d[y] !== A;) y++; y < g && (q += 2 * (g - y), r += 2 * (g + 1 - y)); y === g + 1 && (q += 1); y > g + 1 && (q += 4 * (y - g), r += 4 * (y - (g + 1))) } B = d[g].pc.i; for (B.reset(); B.next();) if (A = B.value, A.valid && A.toVertex.layer === b) { A = A.toVertex; for (y = 0; d[y] !== A;) y++; y === g + 1 && (r += 1) } B = d[g + 1].tc.i; for (B.reset(); B.next();) if (A = B.value, A.valid && A.fromVertex.layer === b) { A = A.fromVertex; for (y = 0; d[y] !== A;) y++; y < g && (q += 2 * (g + 1 - y), r += 2 * (g - y)); y === g && (r += 1); y > g + 1 && (q += 4 * (y - (g + 1)), r += 4 * (y - g)) } B = d[g + 1].pc.i; for (B.reset(); B.next();) if (A = B.value, A.valid && A.toVertex.layer === b) { A = A.toVertex; for (y = 0; d[y] !== A;) y++; y === g && (q += 1) } var y = A = 0, B = h[d[g].index], L = k[d[g].index], H = h[d[g + 1].index], U = k[d[g + 1].index]; - 1 !== B && (A += Math.abs(B - s), y += Math.abs(B - x)); - 1 !== L && (A += Math.abs(L - s), y += Math.abs(L - x)); - 1 !== H && (A += Math.abs(H - t), y += Math.abs(H - v)); - 1 !== U && (A += Math.abs(U - t), y += Math.abs(U - v)); if (r < q - .5 || r === q && p < n - .5 || r === q && p === n && y < A - .5) m = l = !0, d[g].column = x, d[g + 1].column = v, n = d[g], d[g] = d[g + 1], d[g + 1] = n } for (g = 0; g < e; g++) d[g].index = g; Ir(a, b, d); return l } on.prototype.straightenAndPack = function() { var a = 0, b = !1, c = 0 !== (this.Ri & fs), a = this.Ri === yr; 1E3 < this.network.edges.count && !a && (c = !1); if (c) { b = []; for (a = a = 0; a <= this.yb; a++) b[a] = 0; for (var d = 0, e = this.network.vertexes.i; e.next();) { var g = e.value, a = g.layer, d = g.column, g = this.nodeMinColumnSpace(g, !1); b[a] = Math.max(b[a], d + g) } for (e.reset(); e.next();) g = e.value, a = g.layer, d = g.column, g.column = (8 * (this.Kb - b[a]) >> 1) + 8 * d; this.Kb *= 8 } if (0 !== (this.Ri & gs)) for (b = !0; b;) { b = !1; for (a = this.Rf + 1; a <= this.yb; a++) b = hs(this, a, 1) || b; for (a = this.Rf - 1; 0 <= a; a--) b = hs(this, a, -1) || b; b = hs(this, this.Rf, 0) || b } if (0 !== (this.Ri & is)) { for (a = this.Rf + 1; a <= this.yb; a++) js(this, a, 1); for (a = this.Rf - 1; 0 <= a; a--) js(this, a, -1); js(this, this.Rf, 0) } c && (ks(this, -1), ks(this, 1)); if (0 !== (this.Ri & gs)) for (b = !0; b;) { b = !1; b = hs(this, this.Rf, 0) || b; for (a = this.Rf + 1; a <= this.yb; a++) b = hs(this, a, 0) || b; for (a = this.Rf - 1; 0 <= a; a--) b = hs(this, a, 0) || b } }; function hs(a, b, c) { u && (z.p(b, on, "bendStraighten:unfixedLayer"), z.p(c, on, "bendStraighten:direction")); for (var d = !1; ls(a, b, c);) d = !0; return d } function ls(a, b, c) { u && (z.p(b, on, "shiftbendStraighten:unfixedLayer"), z.p(c, on, "shiftbendStraighten:direction")); var d = 0, e = Hr(a, b), g = a.ge[b], h = Or(a, b, -1); if (0 < c) for (d = 0; d < g; d++) h[d] = -1; var k = Or(a, b, 1); if (0 > c) for (d = 0; d < g; d++) k[d] = -1; for (var l = !1, m = !0; m;) for (m = !1, d = 0; d < g; d++) { var n = e[d].column, p = a.nodeMinColumnSpace(e[d], !0), q = a.nodeMinColumnSpace(e[d], !1), r = 0, r = 0 > d - 1 || n - e[d - 1].column - 1 > p + a.nodeMinColumnSpace(e[d - 1], !1) ? n - 1 : n, p = 0, p = d + 1 >= g || e[d + 1].column - n - 1 > q + a.nodeMinColumnSpace(e[d + 1], !0) ? n + 1 : n, s = q = 0, t = 0, v = 0, x = 0, y = 0; if (0 >= c) for (var A = e[d].tc.i; A.next();) { var B = A.value; B.valid && B.fromVertex.layer !== b && (v = Jr(B), x = B.portFromColOffset, y = B.portToColOffset, B = B.fromVertex.column, q += (Math.abs(n + y - (B + x)) + 1) * v, s += (Math.abs(r + y - (B + x)) + 1) * v, t += (Math.abs(p + y - (B + x)) + 1) * v) } if (0 <= c) for (A = e[d].pc.i; A.next();) B = A.value, B.valid && B.toVertex.layer !== b && (v = Jr(B), x = B.portFromColOffset, y = B.portToColOffset, B = B.toVertex.column, q += (Math.abs(n + x - (B + y)) + 1) * v, s += (Math.abs(r + x - (B + y)) + 1) * v, t += (Math.abs(p + x - (B + y)) + 1) * v); y = x = v = 0; A = h[e[d].index]; B = k[e[d].index]; - 1 !== A && (v += Math.abs(A - n), x += Math.abs(A - r), y += Math.abs(A - p)); - 1 !== B && (v += Math.abs(B - n), x += Math.abs(B - r), y += Math.abs(B - p)); if (s < q || s === q && x < v) m = l = !0, e[d].column = r; else if (t < q || t === q && y < v) m = l = !0, e[d].column = p } Ir(a, b, e); a.normalize(); return l } function js(a, b, c) { u && (z.p(b, on, "medianStraighten:unfixedLayer"), z.p(c, on, "medianStraighten:direction")); var d = 0, e = Hr(a, b), g = a.ge[b], h = Pr(a, b, c); c = []; for (d = 0; d < g; d++) c[d] = h[d]; for (h = !0; h;) for (h = !1, d = 0; d < g; d++) { var k = e[d].column, l = a.nodeMinColumnSpace(e[d], !0), m = a.nodeMinColumnSpace(e[d], !1), n = 0, p = 0, q = 0, q = p = 0; - 1 === c[d] ? 0 === d && d === g - 1 ? n = k : 0 === d ? (p = e[d + 1].column, n = p - k === m + a.nodeMinColumnSpace(e[d + 1], !0) ? k - 1 : k) : d === g - 1 ? (q = e[d - 1].column, n = k - q === l + a.nodeMinColumnSpace(e[d - 1], !1) ? k + 1 : k) : (q = e[d - 1].column, q = q + a.nodeMinColumnSpace(e[d - 1], !1) + l + 1, p = e[d + 1].column, p = p - a.nodeMinColumnSpace(e[d + 1], !0) - m - 1, n = (q + p) / 2 | 0) : 0 === d && d === g - 1 ? n = c[d] : 0 === d ? (p = e[d + 1].column, p = p - a.nodeMinColumnSpace(e[d + 1], !0) - m - 1, n = Math.min(c[d], p)) : d === g - 1 ? (q = e[d - 1].column, q = q + a.nodeMinColumnSpace(e[d - 1], !1) + l + 1, n = Math.max(c[d], q)) : (q = e[d - 1].column, q = q + a.nodeMinColumnSpace(e[d - 1], !1) + l + 1, p = e[d + 1].column, p = p - a.nodeMinColumnSpace(e[d + 1], !0) - m - 1, q < c[d] && c[d] < p ? n = c[d] : q >= c[d] ? n = q : p <= c[d] && (n = p)); n !== k && (h = !0, e[d].column = n) } Ir(a, b, e); a.normalize() } function ms(a, b) { u && (z.p(b, on, "packAux:column"), z.p(1, on, "packAux:direction")); for (var c = !0, d = a.network.vertexes.i; d.next();) { var e = d.value, g = a.nodeMinColumnSpace(e, !0), h = a.nodeMinColumnSpace(e, !1); if (e.column - g <= b && e.column + h >= b) { c = !1; break } } e = !1; if (c) for (d.reset(); d.next();) c = d.value, c.column > b && (c.column -= 1, e = !0); return e } function ns(a, b) { u && (z.p(b, on, "tightPackAux:column"), z.p(1, on, "tightPackAux:direction")); for (var c = b, c = b + 1, d = 0, e = [], g = [], d = 0; d <= a.yb; d++) e[d] = !1, g[d] = !1; for (var h = a.network.vertexes.i; h.next();) { var d = h.value, k = d.column - a.nodeMinColumnSpace(d, !0), l = d.column + a.nodeMinColumnSpace(d, !1); k <= b && l >= b && (e[d.layer] = !0); k <= c && l >= c && (g[d.layer] = !0) } k = !0; c = !1; for (d = 0; d <= a.yb; d++) k = k && !(e[d] && g[d]); if (k) for (h.reset(); h.next();) e = h.value, e.column > b && (e.column -= 1, c = !0); return c } function ks(a, b) { u && z.p(b, on, "componentPack:direction"); for (var c = 0; c <= a.Kb; c++) for (; ms(a, c);); a.normalize(); for (c = 0; c < a.Kb; c++) for (; ns(a, c);); a.normalize(); var c = 0, d, e = 0, g = 0, h = 0; if (0 < b) for (c = 0; c <= a.Kb; c++) for (d = Kr(a), e = Nr(a), g = e + 1; e < g;) g = e, os(a, c, 1), h = Nr(a), h > e ? Lr(a, d) : h < e && (e = h, d = Kr(a)); if (0 > b) for (c = a.Kb; 0 <= c; c--) for (d = Kr(a), e = Nr(a), g = e + 1; e < g;) g = e, os(a, c, -1), h = Nr(a), h > e ? Lr(a, d) : h < e && (e = h, d = Kr(a)); a.normalize() } function os(a, b, c) { a.vg = 0; for (var d = a.network.vertexes.i; d.next();) d.value.component = -1; if (0 < c) for (d.reset(); d.next();) { var e = d.value; e.column - a.nodeMinColumnSpace(e, !0) <= b && (e.component = a.vg) } if (0 > c) for (d.reset(); d.next();) e = d.value, e.column + a.nodeMinColumnSpace(e, !1) >= b && (e.component = a.vg); a.vg++; for (d.reset(); d.next();) b = d.value, -1 === b.component && (Rr(a, b, a.vg, -1, !0, !0), a.vg++); var g = 0; b = []; for (g = 0; g < a.vg * a.vg; g++) b[g] = !1; e = []; for (g = 0; g < (a.yb + 1) * (a.Kb + 1); g++) e[g] = -1; for (d.reset(); d.next();) for (var g = d.value, h = g.layer, k = Math.max(0, g.column - a.nodeMinColumnSpace(g, !0)), l = Math.min(a.Kb, g.column + a.nodeMinColumnSpace(g, !1)); k <= l; k++) e[h * (a.Kb + 1) + k] = g.component; for (g = 0; g <= a.yb; g++) { if (0 < c) for (k = 0; k < a.Kb; k++) - 1 !== e[g * (a.Kb + 1) + k] && -1 !== e[g * (a.Kb + 1) + k + 1] && e[g * (a.Kb + 1) + k] !== e[g * (a.Kb + 1) + k + 1] && (b[e[g * (a.Kb + 1) + k] * a.vg + e[g * (a.Kb + 1) + k + 1]] = !0); if (0 > c) for (k = a.Kb; 0 < k; k--) - 1 !== e[g * (a.Kb + 1) + k] && -1 !== e[g * (a.Kb + 1) + k - 1] && e[g * (a.Kb + 1) + k] !== e[g * (a.Kb + 1) + k - 1] && (b[e[g * (a.Kb + 1) + k] * a.vg + e[g * (a.Kb + 1) + k - 1]] = !0) } e = []; for (g = 0; g < a.vg; g++) e[g] = !0; h = new J("number"); h.add(0); for (l = 0; 0 !== h.count;) if (l = h.o[h.count - 1], h.dd(h.count - 1), e[l]) for (e[l] = !1, g = 0; g < a.vg; g++) b[l * a.vg + g] && h.Ld(0, g); if (0 < c) for (d.reset(); d.next();) a = d.value, e[a.component] && (a.column -= 1); if (0 > c) for (d.reset(); d.next();) c = d.value, e[c.component] && (c.column += 1) } on.prototype.commitLayout = function() { if (this.aq) for (var a = Fr(this, !0), b = Fr(this, !1), c = this.network.edges.i; c.next();) { var d = c.value.link; null !== d && (d.Db = a, d.Eb = b) } this.commitNodes(); this.Fz(); this.Rt && this.commitLinks() }; function Fr(a, b) { return 270 === a.fa ? b ? Zc : bd : 90 === a.fa ? b ? bd : Zc : 180 === a.fa ? b ? $c : ad : b ? ad : $c } on.prototype.commitNodes = function() { this.tg = []; this.Qf = []; this.Pf = []; this.Rb = []; for (var a = 0; a <= this.yb; a++) this.tg[a] = 0, this.Qf[a] = 0, this.Pf[a] = 0, this.Rb[a] = 0; for (a = this.network.vertexes.i; a.next();) { var b = a.value, c = b.layer; this.tg[c] = Math.max(this.tg[c], this.nodeMinLayerSpace(b, !0)); this.Qf[c] = Math.max(this.Qf[c], this.nodeMinLayerSpace(b, !1)) } for (var b = 0, d = this.qm, c = 0; c <= this.yb; c++) { var e = d; 0 >= this.tg[c] + this.Qf[c] && (e = 0); 0 < c && (b += e / 2); 90 === this.fa || 0 === this.fa ? (b += this.Qf[c], this.Pf[c] = b, b += this.tg[c]) : (b += this.tg[c], this.Pf[c] = b, b += this.Qf[c]); c < this.yb && (b += e / 2); this.Rb[c] = b } d = b; b = this.je.copy(); null !== this.group && (270 === this.direction || 90 === this.direction ? b.y -= 10 : b.x -= 10, 270 === this.direction || 90 === this.direction ? b.x -= this.SD / 2 : b.y -= this.SD / 2); for (c = 0; c <= this.yb; c++) 270 === this.fa ? this.Pf[c] = b.y + this.Pf[c] : 90 === this.fa ? (this.Pf[c] = b.y + d - this.Pf[c], this.Rb[c] = d - this.Rb[c]) : 180 === this.fa ? this.Pf[c] = b.x + this.Pf[c] : (this.Pf[c] = b.x + d - this.Pf[c], this.Rb[c] = d - this.Rb[c]); for (a.reset(); a.next();) { var c = a.value, d = c.layer, e = c.column | 0, g = 0, h = 0; 270 === this.fa || 90 === this.fa ? (g = b.x + this.Td * e, h = this.Pf[d]) : (g = this.Pf[d], h = b.y + this.Td * e); c.ra = g; c.za = h; c.commit() } }; on.prototype.Fz = function() { for (var a = 0, b = this.qm, c = 0; c <= this.yb; c++) a += this.tg[c], a += this.Qf[c]; for (var a = a + this.yb * b, b = [], c = this.Td * this.Kb, d = this.zI; 0 <= d; d--) 270 === this.fa ? 0 === d ? b.push(new w(0, 0, c, Math.abs(this.Rb[0]))) : b.push(new w(0, this.Rb[d - 1], c, Math.abs(this.Rb[d - 1] - this.Rb[d]))) : 90 === this.fa ? 0 === d ? b.push(new w(0, this.Rb[0], c, Math.abs(this.Rb[0] - a))) : b.push(new w(0, this.Rb[d], c, Math.abs(this.Rb[d - 1] - this.Rb[d]))) : 180 === this.fa ? 0 === d ? b.push(new w(0, 0, Math.abs(this.Rb[0]), c)) : b.push(new w(this.Rb[d - 1], 0, Math.abs(this.Rb[d - 1] - this.Rb[d]), c)) : 0 === d ? b.push(new w(this.Rb[0], 0, Math.abs(this.Rb[0] - a), c)) : b.push(new w(this.Rb[d], 0, Math.abs(this.Rb[d - 1] - this.Rb[d]), c)); this.commitLayers(b, Id) }; on.prototype.commitLayers = function() {}; on.prototype.commitLinks = function() { for (var a = this.network.edges.i, b; a.next();) b = a.value.link, null !== b && (b.Ul(), b.fp(), b.cj()); for (a.reset(); a.next();) b = a.value.link, null !== b && b.Bn(); for (a.reset(); a.next();) { var c = a.value; b = c.link; if (null !== b) { b.Ul(); var d = b, e = d.Y, g = d.da, h = d.md, k = d.Qd; if (c.valid) { if (b.Se === Ui && 4 === b.sa) { if (c.rev) var l = e, e = g, g = l, m = h, h = k, k = m; if (c.fromVertex.column === c.toVertex.column) { var n = b.getLinkPoint(e, h, b.computeSpot(!0), !0, !1, g, k), p = b.getLinkPoint(g, k, b.computeSpot(!1), !1, !1, e, h); n.F() || n.set(e.W.xl); p.F() || p.set(g.W.xl); b.fp(); b.sl(n.x, n.y); b.sl((2 * n.x + p.x) / 3, (2 * n.y + p.y) / 3); b.sl((n.x + 2 * p.x) / 3, (n.y + 2 * p.y) / 3); b.sl(p.x, p.y) } else { var q = !1, r = !1; null !== h && b.computeSpot(!0) === Yb && (q = !0); null !== k && b.computeSpot(!1) === Yb && (r = !0); if (q || r) { var s = b.m(0).x, t = b.m(0).y, v = b.m(1).x, x = b.m(1).y, y = b.m(2).x, A = b.m(2).y, B = b.m(3).x, L = b.m(3).y; if (q) { 90 === this.fa || 270 === this.fa ? (v = s, x = (t + L) / 2) : (v = (s + B) / 2, x = t); b.aa(1, v, x); var H = b.getLinkPoint(e, h, b.computeSpot(!0), !0, !1, g, k); H.F() || H.set(e.W.xl); b.aa(0, H.x, H.y) } r && (90 === this.fa || 270 === this.fa ? (y = B, A = (t + L) / 2) : (y = (s + B) / 2, A = L), b.aa(2, y, A), H = b.getLinkPoint(g, k, b.computeSpot(!1), !1, !1, e, h), H.F() || H.set(g.W.xl), b.aa(3, H.x, H.y)) } } } b.cj() } else if (c.fromVertex.layer === c.toVertex.layer) b.cj(); else { var U = !1, ea = !1, W = 0, P = b.Bt + 1; if (b.rc) ea = !0, W = b.sa, 4 < W && b.points.removeRange(2, W - 3); else if (b.Se === Ui) U = !0, W = b.sa, 4 < W && b.points.removeRange(2, W - 3), P = 2; else { var W = b.sa, ba = b.computeSpot(!0) === Yb, Oa = b.computeSpot(!1) === Yb; 2 < W && ba && Oa ? b.points.removeRange(1, W - 2) : 3 < W && ba && !Oa ? b.points.removeRange(1, W - 3) : 3 < W && !ba && Oa ? b.points.removeRange(2, W - 2) : 4 < W && !ba && !Oa && b.points.removeRange(2, W - 3) } var sa = c.fromVertex, Na = c.toVertex, ua, Ha; if (c.rev) { for (var Aa = 0; null !== Na && sa !== Na;) { Ha = ua = null; for (var jc = Na.tc.i; jc.next();) { var zd = jc.value; if (zd.link === c.link && (ua = zd.fromVertex, Ha = zd.toVertex, null === ua.Bd)) break } if (ua !== sa) if (sb = b.m(P - 1).x, gb = b.m(P - 1).y, oa = ua.ra, pa = ua.za, ea) 180 === this.fa || 0 === this.fa ? 2 === P ? (b.B(P++, sb, gb), b.B(P++, sb, pa)) : (Ae = null !== Ha ? Ha.za : gb, Ae !== pa && (tb = this.Rb[ua.layer - 1], b.B(P++, tb, gb), b.B(P++, tb, pa))) : 2 === P ? (b.B(P++, sb, gb), b.B(P++, oa, gb)) : (Cd = null !== Ha ? Ha.ra : sb, Cd !== oa && (tb = this.Rb[ua.layer - 1], b.B(P++, sb, tb), b.B(P++, oa, tb))); else if (2 === P) if (Xa = Math.max(10, this.tg[Na.layer]), Va = Math.max(10, this.Qf[Na.layer]), U) 180 === this.fa ? oa <= Na.P.x ? (Aa = Na.P.x, b.B(P++, Aa - Xa, pa), b.B(P++, Aa, pa), b.B(P++, Aa + Va, pa)) : (b.B(P++, oa - Xa, pa), b.B(P++, oa, pa), b.B(P++, oa + Va, pa)) : 90 === this.fa ? pa >= Na.P.bottom ? (Aa = Na.P.y + Na.P.height, b.B(P++, oa, Aa + Va), b.B(P++, oa, Aa), b.B(P++, oa, Aa - Xa)) : (b.B(P++, oa, pa + Va), b.B(P++, oa, pa), b.B(P++, oa, pa - Xa)) : 270 === this.fa ? pa <= Na.P.y ? (Aa = Na.P.y, b.B(P++, oa, Aa - Xa), b.B(P++, oa, Aa), b.B(P++, oa, Aa + Va)) : (b.B(P++, oa, pa - Xa), b.B(P++, oa, pa), b.B(P++, oa, pa + Va)) : 0 === this.fa && (oa >= Na.P.right ? (Aa = Na.P.x + Na.P.width, b.B(P++, Aa + Va, pa), b.B(P++, Aa, pa), b.B(P++, Aa - Xa, pa)) : (b.B(P++, oa + Va, pa), b.B(P++, oa, pa), b.B(P++, oa - Xa, pa))); else { b.B(P++, sb, gb); var Ad = 0; if (180 === this.fa || 0 === this.fa) { if (180 === this.fa ? oa >= Na.P.right : oa <= Na.P.x) Ad = (0 === this.fa ? -Xa : Va) / 2; b.B(P++, sb + Ad, pa) } else { if (270 === this.fa ? pa >= Na.P.bottom : pa <= Na.P.y) Ad = (90 === this.fa ? -Xa : Va) / 2; b.B(P++, oa, gb + Ad) } b.B(P++, oa, pa) } else Xa = Math.max(10, this.tg[ua.layer]), Va = Math.max(10, this.Qf[ua.layer]), 180 === this.fa ? (U && b.B(P++, oa - Xa, pa), b.B(P++, oa, pa), U && b.B(P++, oa + Va, pa)) : 90 === this.fa ? (U && b.B(P++, oa, pa + Va), b.B(P++, oa, pa), U && b.B(P++, oa, pa - Xa)) : 270 === this.fa ? (U && b.B(P++, oa, pa - Xa), b.B(P++, oa, pa), U && b.B(P++, oa, pa + Va)) : (U && b.B(P++, oa + Va, pa), b.B(P++, oa, pa), U && b.B(P++, oa - Xa, pa)); Na = ua } if (null === k || b.computeSpot(!1) !== Yb || ea) if (sb = b.m(P - 1).x, gb = b.m(P - 1).y, oa = b.m(P).x, pa = b.m(P).y, ea) { var Qe = this.Qf[sa.layer], ac = 0; 180 === this.fa || 0 === this.fa ? (ac = gb, ac >= sa.P.y && ac <= sa.P.bottom && (180 === this.fa ? oa >= sa.P.x : oa <= sa.P.right) && (Aa = sa.ra + (180 === this.fa ? -Qe : Qe), ac = ac < sa.P.y + sa.P.height / 2 ? sa.P.y - this.Td / 2 : sa.P.bottom + this.Td / 2, b.B(P++, Aa, gb), b.B(P++, Aa, ac)), b.B(P++, oa, ac)) : (ac = sb, ac >= sa.P.x && ac <= sa.P.right && (270 === this.fa ? pa >= sa.P.y : pa <= sa.P.bottom) && (Aa = sa.za + (270 === this.fa ? -Qe : Qe), ac = ac < sa.P.x + sa.P.width / 2 ? sa.P.x - this.Td / 2 : sa.P.right + this.Td / 2, b.B(P++, sb, Aa), b.B(P++, ac, Aa)), b.B(P++, ac, pa)); b.B(P++, oa, pa) } else if (U) Xa = Math.max(10, this.tg[sa.layer]), Va = Math.max(10, this.Qf[sa.layer]), 180 === this.fa && oa >= sa.P.x ? (Aa = sa.P.x + sa.P.width, b.aa(P - 2, Aa, gb), b.aa(P - 1, Aa + Va, gb)) : 90 === this.fa && pa <= sa.P.bottom ? (Aa = sa.P.y, b.aa(P - 2, sb, Aa), b.aa(P - 1, sb, Aa - Xa)) : 270 === this.fa && pa >= sa.P.y ? (Aa = sa.P.y + sa.P.height, b.aa(P - 2, sb, Aa), b.aa(P - 1, sb, Aa + Va)) : 0 === this.fa && oa <= sa.P.right && (Aa = sa.P.x, b.aa(P - 2, Aa, gb), b.aa(P - 1, Aa - Xa, gb)); else { Xa = Math.max(10, this.tg[sa.layer]); Va = Math.max(10, this.Qf[sa.layer]); Ad = 0; if (180 === this.fa || 0 === this.fa) { if (180 === this.fa ? oa <= sa.P.x : oa >= sa.P.right) Ad = (0 === this.fa ? Va : -Xa) / 2; b.B(P++, oa + Ad, gb) } else { if (270 === this.fa ? pa <= sa.P.y : pa >= sa.P.bottom) Ad = (90 === this.fa ? Va : -Xa) / 2; b.B(P++, sb, pa + Ad) } b.B(P++, oa, pa) } } else { for (; null !== sa && sa !== Na;) { Ha = ua = null; for (var Ig = sa.pc.i; Ig.next();) { var Bd = Ig.value; if (Bd.link === c.link && (ua = Bd.toVertex, Ha = Bd.fromVertex, null !== Ha.Bd && (Ha = null), null === ua.Bd)) break } var sb = 0, gb = 0, oa = 0, pa = 0, tb = 0, Xa = 0, Va = 0; if (ua !== Na) if (sb = b.m(P - 1).x, gb = b.m(P - 1).y, oa = ua.ra, pa = ua.za, ea) if (180 === this.fa || 0 === this.fa) { var Ae = null !== Ha ? Ha.za : gb; Ae !== pa && (tb = this.Rb[ua.layer], 2 === P && (tb = 0 === this.fa ? Math.max(tb, sb) : Math.min(tb, sb)), b.B(P++, tb, gb), b.B(P++, tb, pa)) } else { var Cd = null !== Ha ? Ha.ra : sb; Cd !== oa && (tb = this.Rb[ua.layer], 2 === P && (tb = 90 === this.fa ? Math.max(tb, gb) : Math.min(tb, gb)), b.B(P++, sb, tb), b.B(P++, oa, tb)) } else Xa = Math.max(10, this.tg[ua.layer]), Va = Math.max(10, this.Qf[ua.layer]), 180 === this.fa ? (b.B(P++, oa + Va, pa), U && b.B(P++, oa, pa), b.B(P++, oa - Xa, pa)) : 90 === this.fa ? (b.B(P++, oa, pa - Xa), U && b.B(P++, oa, pa), b.B(P++, oa, pa + Va)) : 270 === this.fa ? (b.B(P++, oa, pa + Va), U && b.B(P++, oa, pa), b.B(P++, oa, pa - Xa)) : (b.B(P++, oa - Xa, pa), U && b.B(P++, oa, pa), b.B(P++, oa + Va, pa)); sa = ua } ea && (sb = b.m(P - 1).x, gb = b.m(P - 1).y, oa = b.m(P).x, pa = b.m(P).y, 180 === this.fa || 0 === this.fa ? gb !== pa && (tb = 0 === this.fa ? Math.min(Math.max((oa + sb) / 2, this.Rb[Na.layer]), oa) : Math.max(Math.min((oa + sb) / 2, this.Rb[Na.layer]), oa), b.B(P++, tb, gb), b.B(P++, tb, pa)) : sb !== oa && (tb = 90 === this.fa ? Math.min(Math.max((pa + gb) / 2, this.Rb[Na.layer]), pa) : Math.max(Math.min((pa + gb) / 2, this.Rb[Na.layer]), pa), b.B(P++, sb, tb), b.B(P++, oa, tb))) } if (null !== d && U) { if (null !== h) { if (b.computeSpot(!0) === Yb) { var me = b.m(0), Rd = b.m(2); me.N(Rd) || b.aa(1, (me.x + Rd.x) / 2, (me.y + Rd.y) / 2) } H = b.getLinkPoint(e, h, Yb, !0, !1, g, k); H.F() || H.set(e.W.xl); b.aa(0, H.x, H.y) } null !== k && (b.computeSpot(!1) === Yb && (me = b.m(b.sa - 1), Rd = b.m(b.sa - 3), me.N(Rd) || b.aa(b.sa - 2, (me.x + Rd.x) / 2, (me.y + Rd.y) / 2)), H = b.getLinkPoint(g, k, Yb, !1, !1, e, h), H.F() || H.set(g.W.xl), b.aa(b.sa - 1, H.x, H.y)) } b.cj(); c.commit() } } } for (var ne = new J(G), Jg = this.network.edges.i; Jg.next();) { var fd = Jg.value.link; null !== fd && fd.rc && !ne.contains(fd) && ne.add(fd) } if (0 < ne.count) if (90 === this.fa || 270 === this.fa) { for (var pi = 0, Ab = new J(ps), Qb, gd, lh = ne.i; lh.next();) { var Lb = lh.value; if (null !== Lb && Lb.rc) for (var kb = 2; kb < Lb.sa - 3; kb++) if (Qb = Lb.m(kb), gd = Lb.m(kb + 1), qs(Qb.y, gd.y) && !qs(Qb.x, gd.x)) { var cb = new ps; cb.layer = Math.floor(Qb.y / 2); var Re = Lb.m(0), Sd = Lb.m(Lb.sa - 1); cb.first = Re.x * Re.x + Re.y; cb.de = Sd.x * Sd.x + Sd.y; cb.Qe = Math.min(Qb.x, gd.x); cb.ke = Math.max(Qb.x, gd.x); cb.index = kb; cb.link = Lb; if (kb + 2 < Lb.sa) { var Kg = Lb.m(kb - 1), Lg = Lb.m(kb + 2), kc = 0; Kg.y < Qb.y ? kc = Lg.y < Qb.y ? 3 : Qb.x < gd.x ? 2 : 1 : Kg.y > Qb.y && (kc = Lg.y > Qb.y ? 0 : gd.x < Qb.x ? 2 : 1); cb.pi = kc } Ab.add(cb) } } if (1 < Ab.count) { Ab.sort(this.DF); for (var lc = 0; lc < Ab.count;) { for (var oe = Ab.o[lc].layer, hd = lc + 1; hd < Ab.count && Ab.o[hd].layer === oe;) hd++; if (1 < hd - lc) for (var nb = lc; nb < hd;) { for (var Uc = Ab.o[nb].ke, Qa = lc + 1; Qa < hd && Ab.o[Qa].Qe < Uc;) Uc = Math.max(Uc, Ab.o[Qa].ke), Qa++; var ob = Qa - nb; if (1 < ob) { Ab.dq(this.Hx, nb, nb + ob); for (var yc = 1, Dd = Ab.o[nb].de, kb = nb; kb < Qa; kb++) { var Mb = Ab.o[kb]; Mb.de !== Dd && (yc++, Dd = Mb.de) } Ab.dq(this.CF, nb, nb + ob); for (var pe = 1, Dd = Ab.o[nb].first, kb = nb; kb < Qa; kb++) Mb = Ab.o[kb], Mb.first !== Dd && (pe++, Dd = Mb.first); var tf = !0, Se = pe; yc < pe ? (tf = !1, Se = yc, Dd = Ab.o[nb].de, Ab.dq(this.Hx, nb, nb + ob)) : Dd = Ab.o[nb].first; for (var Lf = 0, kb = nb; kb < Qa; kb++) { Mb = Ab.o[kb]; (tf ? Mb.first : Mb.de) !== Dd && (Lf++, Dd = tf ? Mb.first : Mb.de); Lb = Mb.link; Qb = Lb.m(Mb.index); gd = Lb.m(Mb.index + 1); var Fb = this.YE * (Lf - (Se - 1) / 2); if (!Lb.jj || rs(Qb.x, Qb.y + Fb, gd.x, gd.y + Fb)) pi++, Lb.Ul(), Lb.aa(Mb.index, Qb.x, Qb.y + Fb), Lb.aa(Mb.index + 1, gd.x, gd.y + Fb), Lb.cj() } } nb = Qa } lc = hd } } } else { for (var Be = 0, Rb = new J(ps), Vb, Nb, Jc = ne.i; Jc.next();) { var lb = Jc.value; if (null !== lb && lb.rc) for (var Gb = 2; Gb < lb.sa - 3; Gb++) if (Vb = lb.m(Gb), Nb = lb.m(Gb + 1), qs(Vb.x, Nb.x) && !qs(Vb.y, Nb.y)) { var Ob = new ps; Ob.layer = Math.floor(Vb.x / 2); var Td = lb.m(0), Mg = lb.m(lb.sa - 1); Ob.first = Td.x + Td.y * Td.y; Ob.de = Mg.x + Mg.y * Mg.y; Ob.Qe = Math.min(Vb.y, Nb.y); Ob.ke = Math.max(Vb.y, Nb.y); Ob.index = Gb; Ob.link = lb; if (Gb + 2 < lb.sa) { var mh = lb.m(Gb - 1), nh = lb.m(Gb + 2), Ce = 0; mh.x < Vb.x ? Ce = nh.x < Vb.x ? 3 : Vb.y < Nb.y ? 2 : 1 : mh.x > Vb.x && (Ce = nh.x > Vb.x ? 0 : Nb.y < Vb.y ? 2 : 1); Ob.pi = Ce } Rb.add(Ob) } } if (1 < Rb.count) { Rb.sort(this.DF); for (var Kc = 0; Kc < Rb.count;) { for (var De = Rb.o[Kc].layer, mc = Kc + 1; mc < Rb.count && Rb.o[mc].layer === De;) mc++; if (1 < mc - Kc) for (var Bb = Kc; Bb < mc;) { for (var Cb = Rb.o[Bb].ke, Lc = Kc + 1; Lc < mc && Rb.o[Lc].Qe < Cb;) Cb = Math.max(Cb, Rb.o[Lc].ke), Lc++; var Ng = Lc - Bb; if (1 < Ng) { Rb.dq(this.Hx, Bb, Bb + Ng); for (var Vc = 1, Wc = Rb.o[Bb].de, Gb = Bb; Gb < Lc; Gb++) { var mb = Rb.o[Gb]; mb.de !== Wc && (Vc++, Wc = mb.de) } Rb.dq(this.CF, Bb, Bb + Ng); for (var Mc = 1, Wc = Rb.o[Bb].first, Gb = Bb; Gb < Lc; Gb++) mb = Rb.o[Gb], mb.first !== Wc && (Mc++, Wc = mb.first); var Ud = !0, Vd = Mc; Vc < Mc ? (Ud = !1, Vd = Vc, Wc = Rb.o[Bb].de, Rb.dq(this.Hx, Bb, Bb + Ng)) : Wc = Rb.o[Bb].first; for (var uf = 0, Gb = Bb; Gb < Lc; Gb++) { mb = Rb.o[Gb]; (Ud ? mb.first : mb.de) !== Wc && (uf++, Wc = Ud ? mb.first : mb.de); lb = mb.link; Vb = lb.m(mb.index); Nb = lb.m(mb.index + 1); var Og = this.YE * (uf - (Vd - 1) / 2); if (!lb.jj || rs(Vb.x + Og, Vb.y, Nb.x + Og, Nb.y)) Be++, lb.Ul(), lb.aa(mb.index, Vb.x + Og, Vb.y), lb.aa(mb.index + 1, Nb.x + Og, Nb.y), lb.cj() } } Bb = Lc } Kc = mc } } } }; on.prototype.DF = function(a, b) { return a instanceof ps && b instanceof ps && a !== b ? a.layer < b.layer ? -1 : a.layer > b.layer ? 1 : a.Qe < b.Qe ? -1 : a.Qe > b.Qe ? 1 : a.ke < b.ke ? -1 : a.ke > b.ke ? 1 : 0 : 0 }; on.prototype.CF = function(a, b) { return a instanceof ps && b instanceof ps && a !== b ? a.first < b.first ? -1 : a.first > b.first || a.pi < b.pi ? 1 : a.pi > b.pi || a.Qe < b.Qe ? -1 : a.Qe > b.Qe ? 1 : a.ke < b.ke ? -1 : a.ke > b.ke ? 1 : 0 : 0 }; on.prototype.Hx = function(a, b) { return a instanceof ps && b instanceof ps && a !== b ? a.de < b.de ? -1 : a.de > b.de || a.pi < b.pi ? 1 : a.pi > b.pi || a.Qe < b.Qe ? -1 : a.Qe > b.Qe ? 1 : a.ke < b.ke ? -1 : a.ke > b.ke ? 1 : 0 : 0 }; function qs(a, b) { u && (z.p(a, on, "isApprox:a"), z.p(b, on, "isApprox:b")); var c = a - b; return -1 < c && 1 > c } function rs(a, b, c, d) { u && (z.p(a, on, "isUnoccupied2:px"), z.p(b, on, "isUnoccupied2:py"), z.p(c, on, "isUnoccupied2:qx"), z.p(d, on, "isUnoccupied2:qy")); return !0 } function Hr(a, b) { var c, d = a.ge[b]; if (d >= a.hh.length) { c = []; for (var e = 0; e < a.hh.length; e++) c[e] = a.hh[e]; a.hh = c } void 0 === a.hh[d] || null === a.hh[d] ? c = [] : (c = a.hh[d], a.hh[d] = null); d = a.Vr[b]; for (e = 0; e < d.length; e++) { var g = d[e]; c[g.index] = g } return c } function Ir(a, b, c) { a.hh[a.ge[b]] = c } z.defineProperty(on, { layerSpacing: "layerSpacing" }, function() { return this.qm }, function(a) { this.qm !== a && (z.g(a, "number", on, "layerSpacing"), 0 <= a && (this.qm = a, this.I())) }); z.defineProperty(on, { SD: "columnSpacing" }, function() { return this.Td }, function(a) { this.Td !== a && (z.g(a, "number", on, "columnSpacing"), 0 < a && (this.Td = a, this.I())) }); z.defineProperty(on, { direction: "direction" }, function() { return this.fa }, function(a) { this.fa !== a && (z.g(a, "number", on, "direction"), 0 === a || 90 === a || 180 === a || 270 === a ? (this.fa = a, this.I()) : z.k("LayeredDigraphLayout.direction must be 0, 90, 180, or 270")) }); z.defineProperty(on, { angle: "angle" }, function() { return this.direction }, function(a) { this.direction = a }); z.defineProperty(on, { mH: "cycleRemoveOption" }, function() { return this.Tn }, function(a) { this.Tn !== a && (z.Ba(a, on, on, "cycleRemoveOption"), a === Ar || a === ur) && (this.Tn = a, this.I()) }); z.defineProperty(on, { qI: "layeringOption" }, function() { return this.yo }, function(a) { this.yo !== a && (z.Ba(a, on, on, "layeringOption"), a === vr || a === Sr || a === Ur) && (this.yo = a, this.I()) }); z.defineProperty(on, { bI: "initializeOption" }, function() { return this.oo }, function(a) { this.oo !== a && (z.Ba(a, on, on, "initializeOption"), a === wr || a === $r || a === Yr) && (this.oo = a, this.I()) }); z.defineProperty(on, { MK: "iterations" }, function() { return this.om }, function(a) { this.om !== a && (z.p(a, zr, "iterations"), 0 <= a && (this.om = a, this.I())) }); z.defineProperty(on, { SG: "aggressiveOption" }, function() { return this.Gn }, function(a) { this.Gn !== a && (z.Ba(a, on, on, "aggressiveOption"), a === ds || a === xr || a === es) && (this.Gn = a, this.I()) }); z.defineProperty(on, { hL: "packOption" }, function() { return this.Ri }, function(a) { this.Ri !== a && (z.g(a, "number", on, "packOption"), 0 <= a && 8 > a && (this.Ri = a, this.I())) }); z.defineProperty(on, { aq: "setsPortSpots" }, function() { return this.Zh }, function(a) { this.Zh !== a && (z.g(a, "boolean", on, "setsPortSpots"), this.Zh = a, this.I()) }); z.defineProperty(on, { YE: "linkSpacing" }, function() { return this.Br }, function(a) { this.Br !== a && (z.g(a, "number", on, "linkSpacing"), 0 <= a && (this.Br = a, this.I())) }); z.w(on, { zI: "maxLayer" }, function() { return this.yb }); z.w(on, { RK: "maxIndex" }, function() { return this.Iv }); z.w(on, { QK: "maxColumn" }, function() { return this.Kb }); z.w(on, { WK: "minIndexLayer" }, function() { return this.Lr }); z.w(on, { SK: "maxIndexLayer" }, function() { return this.Rf }); var ur; on.CycleDepthFirst = ur = z.s(on, "CycleDepthFirst", 0); var Ar; on.CycleGreedy = Ar = z.s(on, "CycleGreedy", 1); var vr; on.LayerOptimalLinkLength = vr = z.s(on, "LayerOptimalLinkLength", 0); var Sr; on.LayerLongestPathSink = Sr = z.s(on, "LayerLongestPathSink", 1); var Ur; on.LayerLongestPathSource = Ur = z.s(on, "LayerLongestPathSource", 2); var wr; on.InitDepthFirstOut = wr = z.s(on, "InitDepthFirstOut", 0); var $r; on.InitDepthFirstIn = $r = z.s(on, "InitDepthFirstIn", 1); var Yr; on.InitNaive = Yr = z.s(on, "InitNaive", 2); var ds; on.AggressiveNone = ds = z.s(on, "AggressiveNone", 0); var xr; on.AggressiveLess = xr = z.s(on, "AggressiveLess", 1); var es; on.AggressiveMore = es = z.s(on, "AggressiveMore", 2); on.PackNone = 0; var fs; on.PackExpand = fs = 1; var gs; on.PackStraighten = gs = 2; var is; on.PackMedian = is = 4; var yr; on.PackAll = yr = 7; function ps() { this.index = this.ke = this.Qe = this.de = this.first = this.layer = 0; this.link = null; this.pi = 0 } z.Yd(ps, { layer: !0, first: !0, de: !0, Qe: !0, ke: !0, index: !0, link: !0, pi: !0 }); function zr() { wa.call(this) } z.Qa(zr, wa); z.ia("LayeredDigraphNetwork", zr); zr.prototype.createVertex = function() { return new ss }; zr.prototype.createEdge = function() { return new ts }; function ss() { xa.call(this); this.index = this.column = this.layer = -1; this.component = NaN; this.near = null; this.valid = !1; this.finish = this.jp = NaN; this.Um = 0; this.xA = this.yA = null } z.Qa(ss, xa); z.ia("LayeredDigraphVertex", ss); function ts() { ya.call(this); this.forest = this.rev = this.valid = !1; this.portToPos = this.portFromPos = NaN; this.portToColOffset = this.portFromColOffset = 0 } z.Qa(ts, ya); z.ia("LayeredDigraphEdge", ts); function Y() { 0 < arguments.length && z.od(Y); vg.call(this); this.Fd = new K(Object); this.ds = us; this.Of = vs; this.Zs = ws; this.Gv = xs; this.rB = null; this.Ih = !0; this.qd = ys; this.lg = (new Ea(10, 10)).freeze(); this.wa = new zs; this.ya = new zs; this.nz = [] } z.Qa(Y, vg); z.ia("TreeLayout", Y); Y.prototype.cloneProtected = function(a) { vg.prototype.cloneProtected.call(this, a); a.ds = this.ds; a.Zs = this.Zs; a.Gv = this.Gv; a.Ih = this.Ih; a.qd = this.qd; a.lg.assign(this.lg); a.wa.copyInheritedPropertiesFrom(this.wa); a.ya.copyInheritedPropertiesFrom(this.ya) }; Y.prototype.createNetwork = function() { return new As }; Y.prototype.makeNetwork = function(a) { function b(a) { if (a instanceof E) return !a.Df && "Comment" !== a.nc; if (a instanceof G) { var b = a.Y; if (null === b || b.Df || "Comment" === b.nc) return !1; a = a.da; return null === a || a.Df || "Comment" === a.nc ? !1 : !0 } return !1 } var c = this.createNetwork(); c.Sb = this; a instanceof C ? (c.ik(a.Lg, !0, b), c.ik(a.links, !0, b)) : a instanceof F ? c.ik(a.Hc, !1, b) : c.ik(a.i, !1, b); return c }; Y.prototype.doLayout = function(a) { null === a && z.k("Layout.doLayout(collection) argument must not be null but a Diagram, a Group, or an Iterable of Parts"); null === this.network && (this.network = this.makeNetwork(a)); this.Xf !== Bs && (this.je = this.initialOrigin(this.je)); var b = this.h; null === b && a instanceof C && (b = a); this.Of = this.path === us && null !== b ? b.ce ? vs : Cs : this.path === us ? vs : this.path; if (0 < this.network.vertexes.count) { this.network.Sw(); for (a = this.network.vertexes.i; a.next();) b = a.value, b.initialized = !1, b.level = 0, b.parent = null, b.children = []; if (0 < this.Fd.count) { a = new K(zs); for (b = this.Fd.i; b.next();) { var c = b.value; c instanceof E ? (c = this.network.en(c), null !== c && a.add(c)) : c instanceof zs && a.add(c) } this.Fd = a } 0 === this.Fd.count && this.findRoots(); for (a = this.Fd.copy().i; a.next();) b = a.value, b.initialized || (b.initialized = !0, Ds(this, b)); for (a = this.Fd.i; a.next();) b = a.value, b instanceof zs && Es(this, b); for (a = this.Fd.i; a.next();) b = a.value, b instanceof zs && Fs(this, b); for (a = this.Fd.i; a.next();) b = a.value, b instanceof zs && Gs(this, b); this.Bz(); if (this.kA === Hs) { c = []; for (a = this.network.vertexes.i; a.next();) { var d = a.value, b = d.parent; null === b && (b = d); var b = 0 === b.angle || 180 === b.angle, e = c[d.level]; void 0 === e && (e = 0); c[d.level] = Math.max(e, b ? d.width : d.height) } for (d = 0; d < c.length; d++) void 0 === c[d] && (c[d] = 0); this.rB = c; for (a = this.network.vertexes.i; a.next();) d = a.value, b = d.parent, null === b && (b = d), 0 === b.angle || 180 === b.angle ? (180 === b.angle && (d.Ct += c[d.level] - d.width), d.width = c[d.level]) : (270 === b.angle && (d.Dt += c[d.level] - d.height), d.height = c[d.level]) } else if (this.kA === Is) for (a = this.network.vertexes.i; a.next();) { c = a.value; b = 0 === c.angle || 180 === c.angle; e = -1; for (d = 0; d < c.children.length; d++) var g = c.children[d], e = Math.max(e, b ? g.width : g.height); if (0 <= e) for (d = 0; d < c.children.length; d++) g = c.children[d], b ? (180 === c.angle && (g.Ct += e - g.width), g.width = e) : (270 === c.angle && (g.Dt += e - g.height), g.height = e) } for (a = this.Fd.i; a.next();) b = a.value, b instanceof zs && this.layoutTree(b); this.arrangeTrees(); this.updateParts() } this.network = null; this.Fd = new K(Object); this.Gf = !0 }; Y.prototype.findRoots = function() { for (var a = this.network.vertexes.i; a.next();) { var b = a.value; switch (this.Of) { case vs: 0 === b.tc.count && this.Fd.add(b); break; case Cs: 0 === b.pc.count && this.Fd.add(b); break; default: z.k("Unhandled path value " + this.Of.toString()) } } if (0 === this.Fd.count) { for (var a = 999999, b = null, c = this.network.vertexes.i; c.next();) { var d = c.value; switch (this.Of) { case vs: d.tc.count < a && (a = d.tc.count, b = d); break; case Cs: d.pc.count < a && (a = d.pc.count, b = d); break; default: z.k("Unhandled path value " + this.Of.toString()) } } null !== b && this.Fd.add(b) } }; function Ds(a, b) { if (null !== b) { u && z.l(b, zs, Y, "walkTree:v"); switch (a.Of) { case vs: if (0 < b.pc.count) { for (var c = new J(zs), d = b.rH; d.next();) { var e = d.value; Js(a, b, e) && c.add(e) } 0 < c.count && (b.children = c.jc()) } break; case Cs: if (0 < b.tc.count) { c = new J(zs); for (d = b.oJ; d.next();) e = d.value, Js(a, b, e) && c.add(e); 0 < c.count && (b.children = c.jc()) } break; default: z.k("Unhandled path value" + a.Of.toString()) } c = b.children; d = c.length; for (e = 0; e < d; e++) { var g = c[e]; g.initialized = !0; g.level = b.level + 1; g.parent = b; a.Fd.remove(g) } for (e = 0; e < d; e++) g = c[e], Ds(a, g) } } function Js(a, b, c) { u && z.l(b, zs, Y, "walkOK:v"); u && z.l(c, zs, Y, "walkOK:c"); if (c.initialized) { var d; if (null === b) d = !1; else { u && z.l(c, zs, Y, "isAncestor:a"); u && z.l(b, zs, Y, "isAncestor:b"); for (d = b.parent; null !== d && d !== c;) d = d.parent; d = d === c } if (d || c.level > b.level) return !1; a.removeChild(c.parent, c) } return !0 } Y.prototype.removeChild = function(a, b) { if (null !== a && null !== b) { u && z.l(a, zs, Y, "removeChild:p"); u && z.l(b, zs, Y, "removeChild:c"); for (var c = a.children, d = 0, e = 0; e < c.length; e++) c[e] === b && d++; if (0 < d) { for (var d = Array(c.length - d), g = 0, e = 0; e < c.length; e++) c[e] !== b && (d[g++] = c[e]); a.children = d } } }; function Es(a, b) { if (null !== b) { u && z.l(b, zs, Y, "initializeTree:v"); a.initializeTreeVertexValues(b); b.alignment === Ks && a.sortTreeVertexChildren(b); for (var c = 0, d = b.Wm, e = 0, g = b.children, h = g.length, k = 0; k < h; k++) { var l = g[k]; Es(a, l); c += l.descendantCount + 1; d = Math.max(d, l.maxChildrenCount); e = Math.max(e, l.maxGenerationCount) } b.descendantCount = c; b.maxChildrenCount = d; b.maxGenerationCount = 0 < d ? e + 1 : 0 } } function Ls(a, b) { u && z.l(b, zs, Y, "mom:v"); switch (a.Zs) { default: case ws: return null !== b.parent ? b.parent : a.wa; case Ms: return null === b.parent ? a.wa : null === b.parent.parent ? a.ya : b.parent; case Ns: return null !== b.parent ? null !== b.parent.parent ? b.parent.parent : a.ya : a.wa; case Os: var c = !0; if (0 === b.Wm) c = !1; else for (var d = b.children, e = d.length, g = 0; g < e; g++) if (0 < d[g].Wm) { c = !1; break } return c && null !== b.parent ? a.ya : null !== b.parent ? b.parent : a.wa } } Y.prototype.initializeTreeVertexValues = function(a) { u && z.l(a, zs, Y, "initializeTreeVertexValues:v"); var b = Ls(this, a); a.copyInheritedPropertiesFrom(b); if (null !== a.parent && a.parent.alignment === Ks) { for (var b = a.angle, c = a.parent.children, d = 0; d < c.length && a !== c[d];) d++; 0 === d % 2 ? d !== c.length - 1 && (b = 90 === b ? 180 : 180 === b ? 270 : 270 === b ? 180 : 270) : b = 90 === b ? 0 : 180 === b ? 90 : 270 === b ? 0 : 90; a.angle = b } a.initialized = !0 }; function Fs(a, b) { if (null !== b) { u && z.l(b, zs, Y, "assignTree:v"); a.assignTreeVertexValues(b); for (var c = b.children, d = c.length, e = 0; e < d; e++) Fs(a, c[e]) } } Y.prototype.assignTreeVertexValues = function() {}; function Gs(a, b) { if (null !== b) { u && z.l(b, zs, Y, "sortTree:v"); b.alignment !== Ks && a.sortTreeVertexChildren(b); for (var c = b.children, d = c.length, e = 0; e < d; e++) Gs(a, c[e]) } } Y.prototype.sortTreeVertexChildren = function(a) { u && z.l(a, zs, Y, "sortTreeVertexChildren:v"); switch (a.sorting) { case Ps: break; case Qs: a.children.reverse(); break; case Rs: a.children.sort(a.comparer); break; case Ss: a.children.sort(a.comparer); a.children.reverse(); break; default: z.k("Unhandled sorting value " + a.sorting.toString()) } }; Y.prototype.Bz = function() { if (this.comments) for (var a = this.network.vertexes.i; a.next();) this.addComments(a.value) }; Y.prototype.addComments = function(a) { u && z.l(a, zs, Y, "addComments:v"); var b = a.angle, c = a.parent, d = 0, e = Ts, e = !1; null !== c && (d = c.angle, e = c.alignment, e = Us(e)); var b = 90 === b || 270 === b, d = 90 === d || 270 === d, c = 0 === a.Wm, g = 0, h = 0, k = 0, l = a.commentSpacing; if (null !== a.Pc) for (var m = a.Pc.rE(); m.next();) { var n = m.value; "Comment" === n.nc && n.canLayout() && (null === a.comments && (a.comments = []), a.comments.push(n), n.Bf(), n = n.Ia, b && !c || !e && !d && c || e && d && c ? (g = Math.max(g, n.width), h += n.height + Math.abs(k)) : (g += n.width + Math.abs(k), h = Math.max(h, n.height)), k = l) } null !== a.comments && (b && !c || !e && !d && c || e && d && c ? (g += Math.abs(a.commentMargin), h = Math.max(0, h - a.height)) : (h += Math.abs(a.commentMargin), g = Math.max(0, g - a.width)), e = z.yk(0, 0, a.P.width + g, a.P.height + h), a.vb = e, z.dc(e)) }; function Us(a) { return a === Vs || a === Ks || a === Ws || a === Xs } function Ys(a) { return a === Vs || a === Ks } function Zs(a) { u && z.l(a, zs, Y, "isLeftSideBus:v"); var b = a.parent; if (null !== b) { var c = b.alignment; if (Us(c)) { if (Ys(c)) { b = b.children; for (c = 0; c < b.length && a !== b[c];) c++; return 0 === c % 2 } if (c === Ws) return !0 } } return !1 } Y.prototype.layoutComments = function(a) { u && z.l(a, zs, Y, "layoutComments:v"); if (null !== a.comments) { var b = a.Pc.Ia, c = a.parent, d = a.angle, e = 0, g = Ts, g = !1; null !== c && (e = c.angle, g = c.alignment, g = Us(g)); for (var c = 90 === d || 270 === d, d = 90 === e || 270 === e, h = 0 === a.Wm, k = Zs(a), l = 0, m = a.comments, n = m.length, p = z.O(), q = 0; q < n; q++) { var r = m[q], s = r.Ia; if (c && !h || !g && !d && h || g && d && h) { if (135 < e && !g || d && k) if (0 <= a.commentMargin) for (p.n(a.P.x - a.commentMargin - s.width, a.P.y + l), r.move(p), r = r.Hg(); r.next();) { var t = r.value; t.Db = $c; t.Eb = ad } else for (p.n(a.P.x + 2 * a.R.x - a.commentMargin, a.P.y + l), r.move(p), r = r.Hg(); r.next();) t = r.value, t.Db = ad, t.Eb = $c; else if (0 <= a.commentMargin) for (p.n(a.P.x + 2 * a.R.x + a.commentMargin, a.P.y + l), r.move(p), r = r.Hg(); r.next();) t = r.value, t.Db = ad, t.Eb = $c; else for (p.n(a.P.x + a.commentMargin - s.width, a.P.y + l), r.move(p), r = r.Hg(); r.next();) t = r.value, t.Db = $c, t.Eb = ad; l = 0 <= a.commentSpacing ? l + (s.height + a.commentSpacing) : l + (a.commentSpacing - s.height) } else { if (135 < e && !g || !d && k) if (0 <= a.commentMargin) for (p.n(a.P.x + l, a.P.y - a.commentMargin - s.height), r.move(p), r = r.Hg(); r.next();) t = r.value, t.Db = Zc, t.Eb = bd; else for (p.n(a.P.x + l, a.P.y + 2 * a.R.y - a.commentMargin), r.move(p), r = r.Hg(); r.next();) t = r.value, t.Db = bd, t.Eb = Zc; else if (0 <= a.commentMargin) for (p.n(a.P.x + l, a.P.y + 2 * a.R.y + a.commentMargin), r.move(p), r = r.Hg(); r.next();) t = r.value, t.Db = bd, t.Eb = Zc; else for (p.n(a.P.x + l, a.P.y + a.commentMargin - s.height), r.move(p), r = r.Hg(); r.next();) t = r.value, t.Db = Zc, t.Eb = bd; l = 0 <= a.commentSpacing ? l + (s.width + a.commentSpacing) : l + (a.commentSpacing - s.width) } } z.A(p); b = l - a.commentSpacing - (c ? b.height : b.width); if (this.Of === vs) for (e = a.pc; e.next();) a = e.value.link, null === a || a.jj || (a.Il = 0 < b ? b : NaN); else for (e = a.tc; e.next();) a = e.value.link, null === a || a.jj || (a.Yl = 0 < b ? b : NaN) } }; Y.prototype.layoutTree = function(a) { if (null !== a) { u && z.l(a, zs, Y, "layoutTree:v"); for (var b = a.children, c = b.length, d = 0; d < c; d++) this.layoutTree(b[d]); switch (a.compaction) { case $s: at(this, a); break; case bt: if (a.alignment === Ks) at(this, a); else if (u && z.l(a, zs, Y, "layoutTreeBlock:v"), 0 === a.Wm) { var d = a.parent, b = !1, c = 0, e = Ts; null !== d && (c = d.angle, e = d.alignment, b = Us(e)); d = Zs(a); a.qa.n(0, 0); a.ob.n(a.width, a.height); null === a.parent || null === a.comments || (180 !== c && 270 !== c || b) && !d ? a.Ta.n(0, 0) : 180 === c && !b || (90 === c || 270 === c) && d ? a.Ta.n(a.width - 2 * a.R.x, 0) : a.Ta.n(0, a.height - 2 * a.R.y); a.Vt = null; a.mu = null } else { for (var g = ct(a), b = 90 === g || 270 === g, h = 0, k = a.children, l = k.length, m = 0; m < l; m++) var n = k[m], h = Math.max(h, b ? n.ob.width : n.ob.height); var p = a.alignment, d = p === dt, q = p === et, r = Us(p), s = Math.max(0, a.breadthLimit), c = ft(a), t = a.nodeSpacing, v = gt(a), x = a.rowSpacing, y = 0; if (d || q || a.Wp || a.Xp && 1 === a.maxGenerationCount) y = Math.max(0, a.rowIndent); var d = a.width, e = a.height, A = 0, B = 0, L = 0, H = null, U = null, ea = 0, W = 0, P = 0, ba = 0, Oa = 0, sa = 0, Na = 0, ua = 0, n = 0; r && !Ys(p) && 135 < g && k.reverse(); if (Ys(p)) if (1 < l) for (m = 0; m < l; m++) 0 === m % 2 && m !== l - 1 ? ua = Math.max(ua, b ? k[m].ob.width : k[m].ob.height) : 0 !== m % 2 && (n = Math.max(n, b ? k[m].ob.width : k[m].ob.height)); else 1 === l && (ua = b ? k[0].ob.width : k[0].ob.height); if (r) { switch (p) { case Vs: W = 135 > g ? ht(a, k, ua, A, B) : it(a, k, ua, A, B); ua = W.x; A = W.width; B = W.height; break; case Ws: for (m = 0; m < l; m++) { var n = k[m], Ha = n.ob, H = 0 === sa ? 0 : x; b ? (n.qa.n(h - Ha.width, ba + H), A = Math.max(A, Ha.width), B = Math.max(B, ba + H + Ha.height), ba += H + Ha.height) : (n.qa.n(P + H, h - Ha.height), A = Math.max(A, P + H + Ha.width), B = Math.max(B, Ha.height), P += H + Ha.width); sa++ } break; case Xs: for (m = 0; m < l; m++) n = k[m], Ha = n.ob, H = 0 === sa ? 0 : x, b ? (n.qa.n(t / 2 + a.R.x, ba + H), A = Math.max(A, Ha.width), B = Math.max(B, ba + H + Ha.height), ba += H + Ha.height) : (n.qa.n(P + H, t / 2 + a.R.y), A = Math.max(A, P + H + Ha.width), B = Math.max(B, Ha.height), P += H + Ha.width), sa++ } H = jt(this, 2); U = jt(this, 2); b ? (H[0].n(0, 0), H[1].n(0, B), U[0].n(A, 0)) : (H[0].n(0, 0), H[1].n(A, 0), U[0].n(0, B)); U[1].n(A, B) } else for (m = 0; m < l; m++) { n = k[m]; Ha = n.ob; if (b) { 0 < s && 0 < sa && P + t + Ha.width > s && (P < h && pt(a, p, h - P, 0, Na, m - 1), Oa++, sa = 0, Na = m, L = B, P = 0, ba = 135 < g ? -B - x : B + x); qt(this, n, 0, ba); var Aa = 0; if (0 === sa) { if (H = n.Vt, U = n.mu, ea = Ha.width, W = Ha.height, null === H || null === U || g !== ct(n)) H = jt(this, 2), U = jt(this, 2), H[0].n(0, 0), H[1].n(0, W), U[0].n(ea, 0), U[1].n(ea, W) } else { var jc = z.rb(), W = rt(this, a, n, H, U, ea, W, jc), Aa = W.x, H = jc[0], U = jc[1], ea = W.width, W = W.height; z.xa(jc); P < Ha.width && 0 > Aa && (st(a, -Aa, 0, Na, m - 1), tt(H, -Aa, 0), tt(U, -Aa, 0), Aa = 0) } n.qa.n(Aa, ba); A = Math.max(A, ea); B = Math.max(B, L + (0 === Oa ? 0 : x) + Ha.height); P = ea } else { 0 < s && 0 < sa && ba + t + Ha.height > s && (ba < h && pt(a, p, 0, h - ba, Na, m - 1), Oa++, sa = 0, Na = m, L = A, ba = 0, P = 135 < g ? -A - x : A + x); qt(this, n, P, 0); Aa = 0; if (0 === sa) { if (H = n.Vt, U = n.mu, ea = Ha.width, W = Ha.height, null === H || null === U || g !== ct(n)) H = jt(this, 2), U = jt(this, 2), H[0].n(0, 0), H[1].n(ea, 0), U[0].n(0, W), U[1].n(ea, W) } else jc = z.rb(), W = rt(this, a, n, H, U, ea, W, jc), Aa = W.x, H = jc[0], U = jc[1], ea = W.width, W = W.height, z.xa(jc), ba < Ha.height && 0 > Aa && (st(a, 0, -Aa, Na, m - 1), tt(H, 0, -Aa), tt(U, 0, -Aa), Aa = 0); n.qa.n(P, Aa); B = Math.max(B, W); A = Math.max(A, L + (0 === Oa ? 0 : x) + Ha.width); ba = W } sa++ } 0 < Oa && (b ? (B += Math.max(0, c), P < A && pt(a, p, A - P, 0, Na, l - 1), 0 < y && (q || st(a, y, 0, 0, l - 1), A += y)) : (A += Math.max(0, c), ba < B && pt(a, p, 0, B - ba, Na, l - 1), 0 < y && (q || st(a, 0, y, 0, l - 1), B += y))); q = h = 0; switch (p) { case ut: b ? h += A / 2 - a.R.x - v / 2 : q += B / 2 - a.R.y - v / 2; break; case Ts: 0 < Oa ? b ? h += A / 2 - a.R.x - v / 2 : q += B / 2 - a.R.y - v / 2 : b ? (m = k[0].qa.x + k[0].Ta.x, ua = k[l - 1].qa.x + k[l - 1].Ta.x + 2 * k[l - 1].R.x, h += m + (ua - m) / 2 - a.R.x - v / 2) : (m = k[0].qa.y + k[0].Ta.y, ua = k[l - 1].qa.y + k[l - 1].Ta.y + 2 * k[l - 1].R.y, q += m + (ua - m) / 2 - a.R.y - v / 2); break; case dt: b ? (h -= v, A += v) : (q -= v, B += v); break; case et: b ? (h += A - a.width + v, A += v) : (q += B - a.height + v, B += v); break; case Vs: b ? h = 1 < l ? h + (ua + t / 2 - a.R.x) : h + (k[0].R.x - a.R.x + k[0].Ta.x) : q = 1 < l ? q + (ua + t / 2 - a.R.y) : q + (k[0].R.y - a.R.y + k[0].Ta.y); break; case Ws: b ? h += A + t / 2 - a.R.x : q += B + t / 2 - a.R.y; break; case Xs: break; default: z.k("Unhandled alignment value " + p.toString()) } for (m = 0; m < l; m++) n = k[m], b ? n.qa.n(n.qa.x + n.Ta.x - h, n.qa.y + (135 < g ? (r ? -B : -n.ob.height) + n.Ta.y - c : e + c + n.Ta.y)) : n.qa.n(n.qa.x + (135 < g ? (r ? -A : -n.ob.width) + n.Ta.x - c : d + c + n.Ta.x), n.qa.y + n.Ta.y - q); l = k = 0; r ? b ? (A = vt(a, A, h), 0 > h && (h = 0), 135 < g && (q += B + c), B += e + c, p === Xs && (k += t / 2 + a.R.x), l += e + c) : (135 < g && (h += A + c), A += d + c, B = wt(a, B, q), 0 > q && (q = 0), p === Xs && (l += t / 2 + a.R.y), k += d + c) : b ? (null === a.comments ? d > A && (p = xt(p, d - A, 0), k = p.x, l = p.y, A = d, h = 0) : A = vt(a, A, h), 0 > h && (k -= h, h = 0), 135 < g && (q += B + c), B = Math.max(Math.max(B, e), B + e + c), l += e + c) : (135 < g && (h += A + c), A = Math.max(Math.max(A, d), A + d + c), null === a.comments ? e > B && (p = xt(p, 0, e - B), k = p.x, l = p.y, B = e, q = 0) : B = wt(a, B, q), 0 > q && (l -= q, q = 0), k += d + c); if (0 < Oa) g = jt(this, 4), p = jt(this, 4), b ? (g[2].n(0, e + c), g[3].n(g[2].x, B), p[2].n(A, g[2].y), p[3].n(p[2].x, g[3].y)) : (g[2].n(d + c, 0), g[3].n(A, g[2].y), p[2].n(g[2].x, B), p[3].n(g[3].x, p[2].y)); else { g = jt(this, H.length + 2); p = jt(this, U.length + 2); for (m = 0; m < H.length; m++) r = H[m], g[m + 2].n(r.x + k, r.y + l); for (m = 0; m < U.length; m++) r = U[m], p[m + 2].n(r.x + k, r.y + l) } b ? (g[0].n(h, 0), g[1].n(g[0].x, e), g[2].y < g[1].y && (g[2].x > g[0].x ? g[2].assign(g[1]) : g[1].assign(g[2])), g[3].y < g[2].y && (g[3].x > g[0].x ? g[3].assign(g[2]) : g[2].assign(g[3])), p[0].n(h + d, 0), p[1].n(p[0].x, e), p[2].y < p[1].y && (p[2].x < p[0].x ? p[2].assign(p[1]) : p[1].assign(p[2])), p[3].y < p[2].y && (p[3].x < p[0].x ? p[3].assign(p[2]) : p[2].assign(p[3])), g[2].y -= c / 2, p[2].y -= c / 2) : (g[0].n(0, q), g[1].n(d, g[0].y), g[2].x < g[1].x && (g[2].y > g[0].y ? g[2].assign(g[1]) : g[1].assign(g[2])), g[3].x < g[2].x && (g[3].y > g[0].y ? g[3].assign(g[2]) : g[2].assign(g[3])), p[0].n(0, q + e), p[1].n(d, p[0].y), p[2].x < p[1].x && (p[2].y < p[0].y ? p[2].assign(p[1]) : p[1].assign(p[2])), p[3].x < p[2].x && (p[3].y < p[0].y ? p[3].assign(p[2]) : p[2].assign(p[3])), g[2].x -= c / 2, p[2].x -= c / 2); yt(this, H); yt(this, U); a.Vt = g; a.mu = p; a.Ta.n(h, q); a.ob.n(A, B) } break; default: z.k("Unhandled compaction value " + a.compaction.toString()) } } }; function at(a, b) { u && z.l(b, zs, Y, "layoutTreeNone:v"); if (0 === b.Wm) { var c = !1, d = 0, e = Ts; null !== b.parent && (d = b.parent.angle, e = b.parent.alignment, c = Us(e)); e = Zs(b); b.qa.n(0, 0); b.ob.n(b.width, b.height); null === b.parent || null === b.comments || (180 !== d && 270 !== d || c) && !e ? b.Ta.n(0, 0) : 180 === d && !c || (90 === d || 270 === d) && e ? b.Ta.n(b.width - 2 * b.R.x, 0) : b.Ta.n(0, b.height - 2 * b.R.y) } else { for (var c = ct(b), d = 90 === c || 270 === c, g = 0, e = b.children, h = e.length, k = 0; k < h; k++) var l = e[k], g = Math.max(g, d ? l.ob.width : l.ob.height); var m = b.alignment, n = m === dt, p = m === et, q = Us(m), r = Math.max(0, b.breadthLimit), s = ft(b), t = b.nodeSpacing, v = gt(b), x = n || p ? 0 : v / 2, y = b.rowSpacing, A = 0; if (n || p || b.Wp || b.Xp && 1 === b.maxGenerationCount) A = Math.max(0, b.rowIndent); var n = b.width, B = b.height, L = 0, H = 0, U = 0, ea = 0, W = 0, P = 0, ba = 0, Oa = 0, sa = 0, Na = 0; q && !Ys(m) && 135 < c && e.reverse(); if (Ys(m)) if (1 < h) for (k = 0; k < h; k++) { var l = e[k], ua = l.ob; 0 === k % 2 && k !== h - 1 ? sa = Math.max(sa, (d ? ua.width : ua.height) + zt(l) - t) : 0 !== k % 2 && (Na = Math.max(Na, (d ? ua.width : ua.height) + zt(l) - t)) } else 1 === h && (sa = d ? e[0].ob.width : e[0].ob.height); if (q) switch (m) { case Vs: case Ks: H = 135 > c ? ht(b, e, sa, L, H) : it(b, e, sa, L, H); sa = H.x; L = H.width; H = H.height; break; case Ws: for (k = 0; k < h; k++) l = e[k], ua = l.ob, r = 0 === ba ? 0 : y, d ? (l.qa.n(g - ua.width, W + r), L = Math.max(L, ua.width), H = Math.max(H, W + r + ua.height), W += r + ua.height) : (l.qa.n(ea + r, g - ua.height), L = Math.max(L, ea + r + ua.width), H = Math.max(H, ua.height), ea += r + ua.width), ba++; break; case Xs: for (g = 0; g < h; g++) l = e[g], ua = l.ob, r = 0 === ba ? 0 : y, d ? (l.qa.n(t / 2 + b.R.x, W + r), L = Math.max(L, ua.width), H = Math.max(H, W + r + ua.height), W += r + ua.height) : (l.qa.n(ea + r, t / 2 + b.R.y), L = Math.max(L, ea + r + ua.width), H = Math.max(H, ua.height), ea += r + ua.width), ba++ } else for (k = 0; k < h; k++) l = e[k], ua = l.ob, d ? (0 < r && 0 < ba && ea + t + ua.width > r && (ea < g && pt(b, m, g - ea, 0, Oa, k - 1), P++, ba = 0, Oa = k, U = H, ea = 0, W = 135 < c ? -H - y : H + y), Na = 0 === ba ? x : t, qt(a, l, 0, W), l.qa.n(ea + Na, W), L = Math.max(L, ea + Na + ua.width), H = Math.max(H, U + (0 === P ? 0 : y) + ua.height), ea += Na + ua.width) : (0 < r && 0 < ba && W + t + ua.height > r && (W < g && pt(b, m, 0, g - W, Oa, k - 1), P++, ba = 0, Oa = k, U = L, W = 0, ea = 135 < c ? -L - y : L + y), Na = 0 === ba ? x : t, qt(a, l, ea, 0), l.qa.n(ea, W + Na), H = Math.max(H, W + Na + ua.height), L = Math.max(L, U + (0 === P ? 0 : y) + ua.width), W += Na + ua.height), ba++; 0 < P && (d ? (H += Math.max(0, s), ea < L && pt(b, m, L - ea, 0, Oa, h - 1), 0 < A && (p || st(b, A, 0, 0, h - 1), L += A)) : (L += Math.max(0, s), W < H && pt(b, m, 0, H - W, Oa, h - 1), 0 < A && (p || st(b, 0, A, 0, h - 1), H += A))); A = p = 0; switch (m) { case ut: d ? p += L / 2 - b.R.x - v / 2 : A += H / 2 - b.R.y - v / 2; break; case Ts: 0 < P ? d ? p += L / 2 - b.R.x - v / 2 : A += H / 2 - b.R.y - v / 2 : d ? (m = e[0].qa.x + e[0].Ta.x, t = e[h - 1].qa.x + e[h - 1].Ta.x + 2 * e[h - 1].R.x, p += m + (t - m) / 2 - b.R.x - v / 2) : (m = e[0].qa.y + e[0].Ta.y, t = e[h - 1].qa.y + e[h - 1].Ta.y + 2 * e[h - 1].R.y, A += m + (t - m) / 2 - b.R.y - v / 2); break; case dt: d ? (p -= v, L += v) : (A -= v, H += v); break; case et: d ? (p += L - b.width + v, L += v) : (A += H - b.height + v, H += v); break; case Vs: case Ks: d ? p = 1 < h ? p + (sa + t / 2 - b.R.x) : p + (e[0].R.x - b.R.x + e[0].Ta.x) : A = 1 < h ? A + (sa + t / 2 - b.R.y) : A + (e[0].R.y - b.R.y + e[0].Ta.y); break; case Ws: d ? p += L + t / 2 - b.R.x : A += H + t / 2 - b.R.y; break; case Xs: break; default: z.k("Unhandled alignment value " + m.toString()) } for (k = 0; k < h; k++) l = e[k], d ? l.qa.n(l.qa.x + l.Ta.x - p, l.qa.y + (135 < c ? (q ? -H : -l.ob.height) + l.Ta.y - s : B + s + l.Ta.y)) : l.qa.n(l.qa.x + (135 < c ? (q ? -L : -l.ob.width) + l.Ta.x - s : n + s + l.Ta.x), l.qa.y + l.Ta.y - A); d ? (L = vt(b, L, p), 0 > p && (p = 0), 135 < c && (A += H + s), H += B + s) : (135 < c && (p += L + s), L += n + s, H = wt(b, H, A), 0 > A && (A = 0)); b.Ta.n(p, A); b.ob.n(L, H) } } function ht(a, b, c, d, e) { u && z.l(a, zs, Y, "layoutBusChildrenPosDir:v"); var g = b.length; if (0 === g) return new w(c, 0, d, e); if (1 === g) { var h = b[0]; d = h.ob.width; e = h.ob.height; return new w(c, 0, d, e) } for (var k = a.nodeSpacing, l = a.rowSpacing, m = 90 === ct(a), n = 0, p = 0, q = 0, r = 0; r < g; r++) if (!(0 !== r % 2 || 1 < g && r === g - 1)) { var h = b[r], s = h.ob, t = 0 === n ? 0 : l; if (m) { var v = zt(h) - k; h.qa.n(c - (s.width + v), q + t); d = Math.max(d, s.width + v); e = Math.max(e, q + t + s.height); q += t + s.height } else v = zt(h) - k, h.qa.n(p + t, c - (s.height + v)), e = Math.max(e, s.height + v), d = Math.max(d, p + t + s.width), p += t + s.width; n++ } var n = 0, x = p, y = q; m ? (p = c + k, q = 0) : (p = 0, q = c + k); for (r = 0; r < g; r++) 0 !== r % 2 && (h = b[r], s = h.ob, t = 0 === n ? 0 : l, m ? (v = zt(h) - k, h.qa.n(p + v, q + t), d = Math.max(d, p + s.width + v), e = Math.max(e, q + t + s.height), q += t + s.height) : (v = zt(h) - k, h.qa.n(p + t, q + v), d = Math.max(d, p + t + s.width), e = Math.max(e, q + s.height + v), p += t + s.width), n++); 1 < g && 1 === g % 2 && (h = b[g - 1], s = h.ob, b = At(h, m ? Math.max(Math.abs(y), Math.abs(q)) : Math.max(Math.abs(x), Math.abs(p))), m ? (h.qa.n(c + k / 2 - h.R.x - h.Ta.x, e + b), m = c + k / 2 - h.R.x - h.Ta.x, d = Math.max(d, m + s.width), 0 > m && (d -= m), e = Math.max(e, Math.max(y, q) + b + s.height), 0 > h.qa.x && (c = Bt(a, h.qa.x, !1, c, k))) : (h.qa.n(d + b, c + k / 2 - h.R.y - h.Ta.y), d = Math.max(d, Math.max(x, p) + b + s.width), m = c + k / 2 - h.R.y - h.Ta.y, e = Math.max(e, m + s.height), 0 > m && (e -= m), 0 > h.qa.y && (c = Bt(a, h.qa.y, !0, c, k)))); return new w(c, 0, d, e) } function it(a, b, c, d, e) { u && z.l(a, zs, Y, "layoutBusChildrenNegDir:v"); var g = b.length; if (0 === g) return new w(c, 0, d, e); if (1 === g) { var h = b[0]; d = h.ob.width; e = h.ob.height; return new w(c, 0, d, e) } for (var k = a.nodeSpacing, l = a.rowSpacing, m = 270 === ct(a), n = 0, p = 0, q = 0, r = 0; r < g; r++) if (!(0 !== r % 2 || 1 < g && r === g - 1)) { var h = b[r], s = h.ob, t = 0 === n ? 0 : l; if (m) { var v = zt(h) - k, q = q - (t + s.height); h.qa.n(c - (s.width + v), q); d = Math.max(d, s.width + v); e = Math.max(e, Math.abs(q)) } else v = zt(h) - k, p -= t + s.width, h.qa.n(p, c - (s.height + v)), e = Math.max(e, s.height + v), d = Math.max(d, Math.abs(p)); n++ } var n = 0, x = p, y = q; m ? (p = c + k, q = 0) : (p = 0, q = c + k); for (r = 0; r < g; r++) 0 !== r % 2 && (h = b[r], s = h.ob, t = 0 === n ? 0 : l, m ? (v = zt(h) - k, q -= t + s.height, h.qa.n(p + v, q), d = Math.max(d, p + s.width + v), e = Math.max(e, Math.abs(q))) : (v = zt(h) - k, p -= t + s.width, h.qa.n(p, q + v), e = Math.max(e, q + s.height + v), d = Math.max(d, Math.abs(p))), n++); 1 < g && 1 === g % 2 && (h = b[g - 1], s = h.ob, l = At(h, m ? Math.max(Math.abs(y), Math.abs(q)) : Math.max(Math.abs(x), Math.abs(p))), m ? (h.qa.n(c + k / 2 - h.R.x - h.Ta.x, -e - s.height - l), p = c + k / 2 - h.R.x - h.Ta.x, d = Math.max(d, p + s.width), 0 > p && (d -= p), e = Math.max(e, Math.abs(Math.min(y, q)) + l + s.height), 0 > h.qa.x && (c = Bt(a, h.qa.x, !1, c, k))) : (h.qa.n(-d - s.width - l, c + k / 2 - h.R.y - h.Ta.y), d = Math.max(d, Math.abs(Math.min(x, p)) + l + s.width), p = c + k / 2 - h.R.y - h.Ta.y, e = Math.max(e, p + s.height), 0 > p && (e -= p), 0 > h.qa.y && (c = Bt(a, h.qa.y, !0, c, k)))); for (r = 0; r < g; r++) h = b[r], m ? h.qa.n(h.qa.x, h.qa.y + e) : h.qa.n(h.qa.x + d, h.qa.y); return new w(c, 0, d, e) } function zt(a) { u && z.l(a, zs, Y, "fixRelativePostions:child"); return null === a.parent ? 0 : a.parent.nodeSpacing } function At(a) { u && z.l(a, zs, Y, "fixRelativePostions:lastchild"); return null === a.parent ? 0 : a.parent.rowSpacing } function Bt(a, b, c, d, e) { u && z.l(a, zs, Y, "fixRelativePostions:v"); a = a.children; for (var g = a.length, h = 0; h < g; h++) c ? a[h].qa.n(a[h].qa.x, a[h].qa.y - b) : a[h].qa.n(a[h].qa.x - b, a[h].qa.y); b = a[g - 1]; return Math.max(d, c ? b.Ta.y + b.R.y - e / 2 : b.Ta.x + b.R.x - e / 2) } function vt(a, b, c) { u && z.l(a, zs, Y, "calculateSubwidth:v"); switch (a.alignment) { case Ts: case ut: var d = b; c + a.width > d && (d = c + a.width); 0 > c && (d -= c); return d; case dt: return a.width > b ? a.width : b; case et: return 2 * a.R.x > b ? a.width : b + a.width - 2 * a.R.x; case Vs: case Ks: return d = Math.min(0, c), c = Math.max(b, c + a.width), Math.max(a.width, c - d); case Ws: return a.width - a.R.x + a.nodeSpacing / 2 + b; case Xs: return Math.max(a.width, a.R.x + a.nodeSpacing / 2 + b); default: return b } } function wt(a, b, c) { u && z.l(a, zs, Y, "calculateSubheight:v"); switch (a.alignment) { case Ts: case ut: var d = b; c + a.height > d && (d = c + a.height); 0 > c && (d -= c); return d; case dt: return a.height > b ? a.height : b; case et: return 2 * a.R.y > b ? a.height : b + a.height - 2 * a.R.y; case Vs: case Ks: return d = Math.min(0, c), c = Math.max(b, c + a.height), Math.max(a.height, c - d); case Ws: return a.height - a.R.y + a.nodeSpacing / 2 + b; case Xs: return Math.max(a.height, a.R.y + a.nodeSpacing / 2 + b); default: return b } } function xt(a, b, c) { u && z.l(a, Ba, Y, "alignOffset:align"); switch (a) { case ut: b /= 2; c /= 2; break; case Ts: b /= 2; c /= 2; break; case dt: c = b = 0; break; case et: break; default: z.k("Unhandled alignment value " + a.toString()) } return new N(b, c) } function pt(a, b, c, d, e, g) { u && z.l(a, zs, Y, "shiftRelPosAlign:v"); u && z.l(b, Ba, Y, "shiftRelPosAlign:align"); b = xt(b, c, d); st(a, b.x, b.y, e, g) } function st(a, b, c, d, e) { u && z.l(a, zs, Y, "shiftRelPos:v"); if (0 !== b || 0 !== c) for (a = a.children; d <= e; d++) { var g = a[d].qa; g.x += b; g.y += c } } function qt(a, b, c, d) { u && (z.l(b, zs, Y, "recordMidPoints:v"), z.g(c, "number", Y, "recordMidPoints:x"), z.g(d, "number", Y, "recordMidPoints:y")); var e = b.parent; switch (a.Of) { case vs: for (a = b.tc; a.next();) b = a.value, b.fromVertex === e && b.ls.n(c, d); break; case Cs: for (a = b.pc; a.next();) b = a.value, b.toVertex === e && b.ls.n(c, d); break; default: z.k("Unhandled path value " + a.Of.toString()) } } function tt(a, b, c) { for (var d = 0; d < a.length; d++) { var e = a[d]; e.x += b; e.y += c } } function rt(a, b, c, d, e, g, h, k) { u && z.l(b, zs, Y, "mergeFringes:parent"); u && z.l(c, zs, Y, "mergeFringes:child"); var l = ct(b), m = 90 === l || 270 === l, n = b.nodeSpacing; b = d; var p = e; d = g; e = h; var q = c.Vt, r = c.mu; h = c.ob; var s = m ? Math.max(e, h.height) : Math.max(d, h.width); if (null === q || l !== ct(c)) q = jt(a, 2), r = jt(a, 2), m ? (q[0].n(0, 0), q[1].n(0, h.height), r[0].n(h.width, 0), r[1].n(r[0].x, q[1].y)) : (q[0].n(0, 0), q[1].n(h.width, 0), r[0].n(0, h.height), r[1].n(q[1].x, r[0].y)); if (m) { c = d; d = 9999999; if (!(null === p || 2 > p.length || null === q || 2 > q.length)) for (m = l = 0; l < p.length && m < q.length;) { e = p[l]; var t = q[m]; g = t.x; var v = t.y; g += c; var x = e; l + 1 < p.length && (x = p[l + 1]); var y = t, t = y.x, y = y.y; m + 1 < q.length && (y = q[m + 1], t = y.x, y = y.y, t += c); var A = d; e.y === v ? A = g - e.x : e.y > v && e.y < y ? A = g + (e.y - v) / (y - v) * (t - g) - e.x : v > e.y && v < x.y && (A = g - (e.x + (v - e.y) / (x.y - e.y) * (x.x - e.x))); A < d && (d = A); x.y <= e.y ? l++ : y <= v ? m++ : (x.y <= y && l++, y <= x.y && m++) } c -= d; c += n; l = q; m = c; if (null === b || 2 > b.length || null === l || 2 > l.length) d = null; else { n = jt(a, b.length + l.length); for (d = g = e = 0; g < l.length && l[g].y < b[0].y;) v = l[g++], n[d++].n(v.x + m, v.y); for (; e < b.length;) v = b[e++], n[d++].n(v.x, v.y); for (e = b[b.length - 1].y; g < l.length && l[g].y <= e;) g++; for (; g < l.length && l[g].y > e;) v = l[g++], n[d++].n(v.x + m, v.y); l = jt(a, d); for (e = 0; e < d; e++) l[e].assign(n[e]); yt(a, n); d = l } g = r; v = c; if (null === p || 2 > p.length || null === g || 2 > g.length) e = null; else { n = jt(a, p.length + g.length); for (m = x = l = 0; l < p.length && p[l].y < g[0].y;) e = p[l++], n[m++].n(e.x, e.y); for (; x < g.length;) e = g[x++], n[m++].n(e.x + v, e.y); for (g = g[g.length - 1].y; l < p.length && p[l].y <= g;) l++; for (; l < p.length && p[l].y > g;) e = p[l++], n[m++].n(e.x, e.y); e = jt(a, m); for (l = 0; l < m; l++) e[l].assign(n[l]); yt(a, n) } g = Math.max(0, c) + h.width; h = s } else { c = e; d = 9999999; if (!(null === p || 2 > p.length || null === q || 2 > q.length)) for (m = l = 0; l < p.length && m < q.length;) e = p[l], t = q[m], g = t.x, v = t.y, v += c, x = e, l + 1 < p.length && (x = p[l + 1]), y = t, t = y.x, y = y.y, m + 1 < q.length && (y = q[m + 1], t = y.x, y = y.y, y += c), A = d, e.x === g ? A = v - e.y : e.x > g && e.x < t ? A = v + (e.x - g) / (t - g) * (y - v) - e.y : g > e.x && g < x.x && (A = v - (e.y + (g - e.x) / (x.x - e.x) * (x.y - e.y))), A < d && (d = A), x.x <= e.x ? l++ : t <= g ? m++ : (x.x <= t && l++, t <= x.x && m++); c -= d; c += n; l = q; m = c; if (null === b || 2 > b.length || null === l || 2 > l.length) d = null; else { n = jt(a, b.length + l.length); for (d = g = e = 0; g < l.length && l[g].x < b[0].x;) v = l[g++], n[d++].n(v.x, v.y + m); for (; e < b.length;) v = b[e++], n[d++].n(v.x, v.y); for (e = b[b.length - 1].x; g < l.length && l[g].x <= e;) g++; for (; g < l.length && l[g].x > e;) v = l[g++], n[d++].n(v.x, v.y + m); l = jt(a, d); for (e = 0; e < d; e++) l[e].assign(n[e]); yt(a, n); d = l } g = r; v = c; if (null === p || 2 > p.length || null === g || 2 > g.length) e = null; else { n = jt(a, p.length + g.length); for (m = x = l = 0; l < p.length && p[l].x < g[0].x;) e = p[l++], n[m++].n(e.x, e.y); for (; x < g.length;) e = g[x++], n[m++].n(e.x, e.y + v); for (g = g[g.length - 1].x; l < p.length && p[l].x <= g;) l++; for (; l < p.length && p[l].x > g;) e = p[l++], n[m++].n(e.x, e.y); e = jt(a, m); for (l = 0; l < m; l++) e[l].assign(n[l]); yt(a, n) } g = s; h = Math.max(0, c) + h.height } yt(a, b); yt(a, q); yt(a, p); yt(a, r); k[0] = d; k[1] = e; return new w(c, 0, g, h) } function jt(a, b) { var c = a.nz[b]; if (void 0 !== c && (c = c.pop(), void 0 !== c)) return c; for (var c = [], d = 0; d < b; d++) c[d] = new N; return c } function yt(a, b) { var c = b.length, d = a.nz[c]; void 0 === d && (d = [], a.nz[c] = d); d.push(b) } Y.prototype.arrangeTrees = function() { if (this.qd === Bs) for (var a = this.Fd.i; a.next();) { var b = a.value; if (b instanceof zs) { var c = b.Pc; if (null !== c) { var d = c.position, c = d.x, d = d.y; isFinite(c) || (c = 0); isFinite(d) || (d = 0); Ct(this, b, c, d) } } } else { c = []; for (a = this.Fd.i; a.next();) b = a.value, b instanceof zs && c.push(b); switch (this.sorting) { case Ps: break; case Qs: c.reverse(); break; case Rs: c.sort(this.comparer); break; case Ss: c.sort(this.comparer); c.reverse(); break; default: z.k("Unhandled sorting value " + this.sorting.toString()) } b = this.je; a = b.x; b = b.y; for (d = 0; d < c.length; d++) { var e = c[d]; Ct(this, e, a + e.Ta.x, b + e.Ta.y); switch (this.qd) { case ys: b += e.ob.height + this.lg.height; break; case Dt: a += e.ob.width + this.lg.width; break; default: z.k("Unhandled arrangement value " + this.qd.toString()) } } } }; function Ct(a, b, c, d) { if (null !== b) { u && z.l(b, zs, Y, "assignAbsolutePositions:v"); b.x = c; b.y = d; b = b.children; for (var e = b.length, g = 0; g < e; g++) { var h = b[g]; Ct(a, h, c + h.qa.x, d + h.qa.y) } } } Y.prototype.commitLayout = function() { this.QA(); this.commitNodes(); this.Fz(); this.Rt && this.commitLinks() }; Y.prototype.commitNodes = function() { for (var a = this.network.vertexes.i; a.next();) a.value.commit(); for (a.reset(); a.next();) this.layoutComments(a.value) }; Y.prototype.Fz = function() { if (this.kA === Hs) { for (var a = this.rB, b = [], c = null, d = this.network.vertexes.i; d.next();) { var e = d.value; null === c ? c = e.vb.copy() : c.qi(e.vb); var g = b[e.level], g = void 0 === g ? ft(e) : Math.max(g, ft(e)); b[e.level] = g } for (d = 0; d < b.length; d++) void 0 === b[d] && (b[d] = 0); 90 === this.angle || 270 === this.angle ? (c.ag(this.nodeSpacing / 2, this.layerSpacing), e = new N(-this.nodeSpacing / 2, -this.layerSpacing / 2)) : (c.ag(this.layerSpacing, this.nodeSpacing / 2), e = new N(-this.layerSpacing / 2, -this.nodeSpacing / 2)); var g = [], c = 90 === this.angle || 270 === this.angle ? c.width : c.height, h = 0; if (180 === this.angle || 270 === this.angle) for (d = 0; d < a.length; d++) h += a[d] + b[d]; for (d = 0; d < a.length; d++) { var k = a[d] + b[d]; 270 === this.angle ? (h -= k, g.push(new w(0, h, c, k))) : 90 === this.angle ? (g.push(new w(0, h, c, k)), h += k) : 180 === this.angle ? (h -= k, g.push(new w(h, 0, k, c))) : (g.push(new w(h, 0, k, c)), h += k) } this.commitLayers(g, e) } }; Y.prototype.commitLayers = function() {}; Y.prototype.commitLinks = function() { for (var a = this.network.edges.i; a.next();) a.value.commit() }; Y.prototype.QA = function() { for (var a = this.Fd.i; a.next();) { var b = a.value; b instanceof zs && Et(this, b) } }; function Et(a, b) { if (null !== b) { u && z.l(b, zs, Y, "setPortSpotsTree:v"); a.setPortSpots(b); for (var c = b.children, d = c.length, e = 0; e < d; e++) Et(a, c[e]) } } Y.prototype.setPortSpots = function(a) { u && z.l(a, zs, Y, "setPortSpots:v"); var b = a.alignment; if (Us(b)) { u && z.l(a, zs, Y, "setPortSpotsBus:v"); u && z.l(b, Ba, Y, "setPortSpots:align"); var c = this.Of === vs, d = ct(a), e; switch (d) { case 0: e = ad; break; case 90: e = bd; break; case 180: e = $c; break; default: e = Zc } var g = a.children, h = g.length; switch (b) { case Vs: case Ks: for (b = 0; b < h; b++) { var k = g[b], k = (c ? k.tc : k.pc).first(); if (null !== k && (k = k.link, null !== k)) { var l = 90 === d || 270 === d ? $c : Zc; if (1 === h || b === h - 1 && 1 === h % 2) switch (d) { case 0: l = $c; break; case 90: l = Zc; break; case 180: l = ad; break; default: l = bd } else 0 === b % 2 && (l = 90 === d || 270 === d ? ad : bd); c ? (a.setsPortSpot && (k.Db = e), a.setsChildPortSpot && (k.Eb = l)) : (a.setsPortSpot && (k.Db = l), a.setsChildPortSpot && (k.Eb = e)) } } break; case Ws: l = 90 === d || 270 === d ? ad : bd; for (d = c ? a.pc : a.tc; d.next();) k = d.value.link, null !== k && (c ? (a.setsPortSpot && (k.Db = e), a.setsChildPortSpot && (k.Eb = l)) : (a.setsPortSpot && (k.Db = l), a.setsChildPortSpot && (k.Eb = e))); break; case Xs: for (l = 90 === d || 270 === d ? $c : Zc, d = c ? a.pc : a.tc; d.next();) k = d.value.link, null !== k && (c ? (a.setsPortSpot && (k.Db = e), a.setsChildPortSpot && (k.Eb = l)) : (a.setsPortSpot && (k.Db = l), a.setsChildPortSpot && (k.Eb = e))) } } else if (c = ct(a), this.Of === vs) for (e = a.pc; e.next();) { if (d = e.value.link, null !== d) { if (a.setsPortSpot) if (a.portSpot.bd()) switch (c) { case 0: d.Db = ad; break; case 90: d.Db = bd; break; case 180: d.Db = $c; break; default: d.Db = Zc } else d.Db = a.portSpot; if (a.setsChildPortSpot) if (a.childPortSpot.bd()) switch (c) { case 0: d.Eb = $c; break; case 90: d.Eb = Zc; break; case 180: d.Eb = ad; break; default: d.Eb = bd } else d.Eb = a.childPortSpot } } else for (e = a.tc; e.next();) if (d = e.value.link, null !== d) { if (a.setsPortSpot) if (a.portSpot.bd()) switch (c) { case 0: d.Eb = ad; break; case 90: d.Eb = bd; break; case 180: d.Eb = $c; break; default: d.Eb = Zc } else d.Eb = a.portSpot; if (a.setsChildPortSpot) if (a.childPortSpot.bd()) switch (c) { case 0: d.Db = $c; break; case 90: d.Db = Zc; break; case 180: d.Db = ad; break; default: d.Db = bd } else d.Db = a.childPortSpot } }; function ct(a) { a = a.angle; return 45 >= a ? 0 : 135 >= a ? 90 : 225 >= a ? 180 : 315 >= a ? 270 : 0 } function ft(a) { u && z.l(a, zs, Y, "computeLayerSpacing:v"); var b = ct(a), b = 90 === b || 270 === b, c = a.layerSpacing; if (0 < a.layerSpacingParentOverlap) var d = Math.min(1, a.layerSpacingParentOverlap), c = c - (b ? a.height * d : a.width * d); c < (b ? -a.height : -a.width) && (c = b ? -a.height : -a.width); return c } function gt(a) { u && z.l(a, zs, Y, "computeNodeIndent:v"); var b = ct(a), b = 90 === b || 270 === b, c = a.nodeIndent; if (0 < a.nodeIndentPastParent) var d = Math.min(1, a.nodeIndentPastParent), c = c + (b ? a.width * d : a.height * d); return c = Math.max(0, c) } z.defineProperty(Y, { rL: "roots" }, function() { return this.Fd }, function(a) { this.Fd !== a && (z.l(a, K, Y, "roots"), this.Fd = a, this.I()) }); z.defineProperty(Y, { path: "path" }, function() { return this.ds }, function(a) { this.ds !== a && (z.Ba(a, Y, Y, "path"), this.ds = a, this.I()) }); z.defineProperty(Y, { zJ: "treeStyle" }, function() { return this.Zs }, function(a) { this.qd !== a && (z.Ba(a, Y, Y, "treeStyle"), a === ws || a === Ns || a === Os || a === Ms) && (this.Zs = a, this.I()) }); z.defineProperty(Y, { kA: "layerStyle" }, function() { return this.Gv }, function(a) { this.qd !== a && (z.Ba(a, Y, Y, "layerStyle"), a === xs || a === Is || a === Hs) && (this.Gv = a, this.I()) }); z.defineProperty(Y, { comments: "comments" }, function() { return this.Ih }, function(a) { this.Ih !== a && (z.g(a, "boolean", Y, "comments"), this.Ih = a, this.I()) }); z.defineProperty(Y, { Xf: "arrangement" }, function() { return this.qd }, function(a) { this.qd !== a && (z.Ba(a, Y, Y, "arrangement"), a === ys || a === Dt || a === Bs) && (this.qd = a, this.I()) }); z.defineProperty(Y, { KD: "arrangementSpacing" }, function() { return this.lg }, function(a) { z.l(a, Ea, Y, "arrangementSpacing"); this.lg.N(a) || (this.lg.assign(a), this.I()) }); z.defineProperty(Y, { qL: "rootDefaults" }, function() { return this.wa }, function(a) { this.wa !== a && (z.l(a, zs, Y, "rootDefaults"), this.wa = a, this.I()) }); z.defineProperty(Y, { QJ: "alternateDefaults" }, function() { return this.ya }, function(a) { this.ya !== a && (z.l(a, zs, Y, "alternateDefaults"), this.ya = a, this.I()) }); z.defineProperty(Y, { sorting: "sorting" }, function() { return this.wa.sorting }, function(a) { this.wa.sorting !== a && (z.Ba(a, Y, Y, "sorting"), a === Ps || a === Qs || a === Rs || Ss) && (this.wa.sorting = a, this.I()) }); z.defineProperty(Y, { comparer: "comparer" }, function() { return this.wa.comparer }, function(a) { this.wa.comparer !== a && (z.g(a, "function", Y, "comparer"), this.wa.comparer = a, this.I()) }); z.defineProperty(Y, { angle: "angle" }, function() { return this.wa.angle }, function(a) { this.wa.angle !== a && (z.g(a, "number", Y, "angle"), 0 === a || 90 === a || 180 === a || 270 === a ? (this.wa.angle = a, this.I()) : z.k("TreeLayout.angle must be 0, 90, 180, or 270")) }); z.defineProperty(Y, { alignment: "alignment" }, function() { return this.wa.alignment }, function(a) { this.wa.alignment !== a && (z.Ba(a, Y, Y, "alignment"), this.wa.alignment = a, this.I()) }); z.defineProperty(Y, { nodeIndent: "nodeIndent" }, function() { return this.wa.nodeIndent }, function(a) { this.wa.nodeIndent !== a && (z.g(a, "number", Y, "nodeIndent"), 0 <= a && (this.wa.nodeIndent = a, this.I())) }); z.defineProperty(Y, { nodeIndentPastParent: "nodeIndentPastParent" }, function() { return this.wa.nodeIndentPastParent }, function(a) { this.wa.nodeIndentPastParent !== a && (z.g(a, "number", Y, "nodeIndentPastParent"), 0 <= a && 1 >= a && (this.wa.nodeIndentPastParent = a, this.I())) }); z.defineProperty(Y, { nodeSpacing: "nodeSpacing" }, function() { return this.wa.nodeSpacing }, function(a) { this.wa.nodeSpacing !== a && (z.g(a, "number", Y, "nodeSpacing"), this.wa.nodeSpacing = a, this.I()) }); z.defineProperty(Y, { layerSpacing: "layerSpacing" }, function() { return this.wa.layerSpacing }, function(a) { this.wa.layerSpacing !== a && (z.g(a, "number", Y, "layerSpacing"), this.wa.layerSpacing = a, this.I()) }); z.defineProperty(Y, { layerSpacingParentOverlap: "layerSpacingParentOverlap" }, function() { return this.wa.layerSpacingParentOverlap }, function(a) { this.wa.layerSpacingParentOverlap !== a && (z.g(a, "number", Y, "layerSpacingParentOverlap"), 0 <= a && 1 >= a && (this.wa.layerSpacingParentOverlap = a, this.I())) }); z.defineProperty(Y, { compaction: "compaction" }, function() { return this.wa.compaction }, function(a) { this.wa.compaction !== a && (z.Ba(a, Y, Y, "compaction"), a === $s || a === bt) && (this.wa.compaction = a, this.I()) }); z.defineProperty(Y, { breadthLimit: "breadthLimit" }, function() { return this.wa.breadthLimit }, function(a) { this.wa.breadthLimit !== a && (z.g(a, "number", Y, "breadthLimit"), 0 <= a && (this.wa.breadthLimit = a, this.I())) }); z.defineProperty(Y, { rowSpacing: "rowSpacing" }, function() { return this.wa.rowSpacing }, function(a) { this.wa.rowSpacing !== a && (z.g(a, "number", Y, "rowSpacing"), this.wa.rowSpacing = a, this.I()) }); z.defineProperty(Y, { rowIndent: "rowIndent" }, function() { return this.wa.rowIndent }, function(a) { this.wa.rowIndent !== a && (z.g(a, "number", Y, "rowIndent"), 0 <= a && (this.wa.rowIndent = a, this.I())) }); z.defineProperty(Y, { commentSpacing: "commentSpacing" }, function() { return this.wa.commentSpacing }, function(a) { this.wa.commentSpacing !== a && (z.g(a, "number", Y, "commentSpacing"), this.wa.commentSpacing = a, this.I()) }); z.defineProperty(Y, { commentMargin: "commentMargin" }, function() { return this.wa.commentMargin }, function(a) { this.wa.commentMargin !== a && (z.g(a, "number", Y, "commentMargin"), this.wa.commentMargin = a, this.I()) }); z.defineProperty(Y, { setsPortSpot: "setsPortSpot" }, function() { return this.wa.setsPortSpot }, function(a) { this.wa.setsPortSpot !== a && (z.g(a, "boolean", Y, "setsPortSpot"), this.wa.setsPortSpot = a, this.I()) }); z.defineProperty(Y, { portSpot: "portSpot" }, function() { return this.wa.portSpot }, function(a) { z.l(a, Q, Y, "portSpot"); this.wa.portSpot.N(a) || (this.wa.portSpot = a, this.I()) }); z.defineProperty(Y, { setsChildPortSpot: "setsChildPortSpot" }, function() { return this.wa.setsChildPortSpot }, function(a) { this.wa.setsChildPortSpot !== a && (z.g(a, "boolean", Y, "setsChildPortSpot"), this.wa.setsChildPortSpot = a, this.I()) }); z.defineProperty(Y, { childPortSpot: "childPortSpot" }, function() { return this.wa.childPortSpot }, function(a) { z.l(a, Q, Y, "childPortSpot"); this.wa.childPortSpot.N(a) || (this.wa.childPortSpot = a, this.I()) }); z.defineProperty(Y, { aK: "alternateSorting" }, function() { return this.ya.sorting }, function(a) { this.ya.sorting !== a && (z.Ba(a, Y, Y, "alternateSorting"), a === Ps || a === Qs || a === Rs || Ss) && (this.ya.sorting = a, this.I()) }); z.defineProperty(Y, { PJ: "alternateComparer" }, function() { return this.ya.comparer }, function(a) { this.ya.comparer !== a && (z.g(a, "function", Y, "alternateComparer"), this.ya.comparer = a, this.I()) }); z.defineProperty(Y, { JJ: "alternateAngle" }, function() { return this.ya.angle }, function(a) { this.ya.angle !== a && (z.g(a, "number", Y, "alternateAngle"), 0 === a || 90 === a || 180 === a || 270 === a) && (this.ya.angle = a, this.I()) }); z.defineProperty(Y, { IJ: "alternateAlignment" }, function() { return this.ya.alignment }, function(a) { this.ya.alignment !== a && (z.Ba(a, Y, Y, "alternateAlignment"), this.ya.alignment = a, this.I()) }); z.defineProperty(Y, { TJ: "alternateNodeIndent" }, function() { return this.ya.nodeIndent }, function(a) { this.ya.nodeIndent !== a && (z.g(a, "number", Y, "alternateNodeIndent"), 0 <= a && (this.ya.nodeIndent = a, this.I())) }); z.defineProperty(Y, { UJ: "alternateNodeIndentPastParent" }, function() { return this.ya.nodeIndentPastParent }, function(a) { this.ya.nodeIndentPastParent !== a && (z.g(a, "number", Y, "alternateNodeIndentPastParent"), 0 <= a && 1 >= a && (this.ya.nodeIndentPastParent = a, this.I())) }); z.defineProperty(Y, { VJ: "alternateNodeSpacing" }, function() { return this.ya.nodeSpacing }, function(a) { this.ya.nodeSpacing !== a && (z.g(a, "number", Y, "alternateNodeSpacing"), this.ya.nodeSpacing = a, this.I()) }); z.defineProperty(Y, { RJ: "alternateLayerSpacing" }, function() { return this.ya.layerSpacing }, function(a) { this.ya.layerSpacing !== a && (z.g(a, "number", Y, "alternateLayerSpacing"), this.ya.layerSpacing = a, this.I()) }); z.defineProperty(Y, { SJ: "alternateLayerSpacingParentOverlap" }, function() { return this.ya.layerSpacingParentOverlap }, function(a) { this.ya.layerSpacingParentOverlap !== a && (z.g(a, "number", Y, "alternateLayerSpacingParentOverlap"), 0 <= a && 1 >= a && (this.ya.layerSpacingParentOverlap = a, this.I())) }); z.defineProperty(Y, { OJ: "alternateCompaction" }, function() { return this.ya.compaction }, function(a) { this.ya.compaction !== a && (z.Ba(a, Y, Y, "alternateCompaction"), a === $s || a === bt) && (this.ya.compaction = a, this.I()) }); z.defineProperty(Y, { KJ: "alternateBreadthLimit" }, function() { return this.ya.breadthLimit }, function(a) { this.ya.breadthLimit !== a && (z.g(a, "number", Y, "alternateBreadthLimit"), 0 <= a && (this.ya.breadthLimit = a, this.I())) }); z.defineProperty(Y, { YJ: "alternateRowSpacing" }, function() { return this.ya.rowSpacing }, function(a) { this.ya.rowSpacing !== a && (z.g(a, "number", Y, "alternateRowSpacing"), this.ya.rowSpacing = a, this.I()) }); z.defineProperty(Y, { XJ: "alternateRowIndent" }, function() { return this.ya.rowIndent }, function(a) { this.ya.rowIndent !== a && (z.g(a, "number", Y, "alternateRowIndent"), 0 <= a && (this.ya.rowIndent = a, this.I())) }); z.defineProperty(Y, { NJ: "alternateCommentSpacing" }, function() { return this.ya.commentSpacing }, function(a) { this.ya.commentSpacing !== a && (z.g(a, "number", Y, "alternateCommentSpacing"), this.ya.commentSpacing = a, this.I()) }); z.defineProperty(Y, { MJ: "alternateCommentMargin" }, function() { return this.ya.commentMargin }, function(a) { this.ya.commentMargin !== a && (z.g(a, "number", Y, "alternateCommentMargin"), this.ya.commentMargin = a, this.I()) }); z.defineProperty(Y, { $J: "alternateSetsPortSpot" }, function() { return this.ya.setsPortSpot }, function(a) { this.ya.setsPortSpot !== a && (z.g(a, "boolean", Y, "alternateSetsPortSpot"), this.ya.setsPortSpot = a, this.I()) }); z.defineProperty(Y, { WJ: "alternatePortSpot" }, function() { return this.ya.portSpot }, function(a) { z.l(a, Q, Y, "alternatePortSpot"); this.ya.portSpot.N(a) || (this.ya.portSpot = a, this.I()) }); z.defineProperty(Y, { ZJ: "alternateSetsChildPortSpot" }, function() { return this.ya.setsChildPortSpot }, function(a) { this.ya.setsChildPortSpot !== a && (z.g(a, "boolean", Y, "alternateSetsChildPortSpot"), this.ya.setsChildPortSpot = a, this.I()) }); z.defineProperty(Y, { LJ: "alternateChildPortSpot" }, function() { return this.ya.childPortSpot }, function(a) { z.l(a, Q, Y, "alternateChildPortSpot"); this.ya.childPortSpot.N(a) || (this.ya.childPortSpot = a, this.I()) }); var us; Y.PathDefault = us = z.s(Y, "PathDefault", -1); var vs; Y.PathDestination = vs = z.s(Y, "PathDestination", 0); var Cs; Y.PathSource = Cs = z.s(Y, "PathSource", 1); var Ps; Y.SortingForwards = Ps = z.s(Y, "SortingForwards", 10); var Qs; Y.SortingReverse = Qs = z.s(Y, "SortingReverse", 11); var Rs; Y.SortingAscending = Rs = z.s(Y, "SortingAscending", 12); var Ss; Y.SortingDescending = Ss = z.s(Y, "SortingDescending", 13); var ut; Y.AlignmentCenterSubtrees = ut = z.s(Y, "AlignmentCenterSubtrees", 20); var Ts; Y.AlignmentCenterChildren = Ts = z.s(Y, "AlignmentCenterChildren", 21); var dt; Y.AlignmentStart = dt = z.s(Y, "AlignmentStart", 22); var et; Y.AlignmentEnd = et = z.s(Y, "AlignmentEnd", 23); var Vs; Y.AlignmentBus = Vs = z.s(Y, "AlignmentBus", 24); var Ks; Y.AlignmentBusBranching = Ks = z.s(Y, "AlignmentBusBranching", 25); var Ws; Y.AlignmentTopLeftBus = Ws = z.s(Y, "AlignmentTopLeftBus", 26); var Xs; Y.AlignmentBottomRightBus = Xs = z.s(Y, "AlignmentBottomRightBus", 27); var $s; Y.CompactionNone = $s = z.s(Y, "CompactionNone", 30); var bt; Y.CompactionBlock = bt = z.s(Y, "CompactionBlock", 31); var ws; Y.StyleLayered = ws = z.s(Y, "StyleLayered", 40); var Os; Y.StyleLastParents = Os = z.s(Y, "StyleLastParents", 41); var Ns; Y.StyleAlternating = Ns = z.s(Y, "StyleAlternating", 42); var Ms; Y.StyleRootOnly = Ms = z.s(Y, "StyleRootOnly", 43); var ys; Y.ArrangementVertical = ys = z.s(Y, "ArrangementVertical", 50); var Dt; Y.ArrangementHorizontal = Dt = z.s(Y, "ArrangementHorizontal", 51); var Bs; Y.ArrangementFixedRoots = Bs = z.s(Y, "ArrangementFixedRoots", 52); var xs; Y.LayerIndividual = xs = z.s(Y, "LayerIndividual", 60); var Is; Y.LayerSiblings = Is = z.s(Y, "LayerSiblings", 61); var Hs; Y.LayerUniform = Hs = z.s(Y, "LayerUniform", 62); function As() { wa.call(this) } z.Qa(As, wa); z.ia("TreeNetwork", As); As.prototype.createVertex = function() { return new zs }; As.prototype.createEdge = function() { return new Ft }; function zs() { xa.call(this); this.initialized = !1; this.parent = null; this.children = []; this.maxGenerationCount = this.maxChildrenCount = this.descendantCount = this.level = 0; this.comments = null; this.qa = new N(0, 0); this.ob = new Ea(0, 0); this.Ta = new N(0, 0); this.Xp = this.Wp = this.dJ = !1; this.mu = this.Vt = null; this.sorting = Ps; this.comparer = Aq; this.angle = 0; this.alignment = Ts; this.nodeIndentPastParent = this.nodeIndent = 0; this.nodeSpacing = 20; this.layerSpacing = 50; this.layerSpacingParentOverlap = 0; this.compaction = bt; this.breadthLimit = 0; this.rowSpacing = 25; this.commentSpacing = this.rowIndent = 10; this.commentMargin = 20; this.setsPortSpot = !0; this.portSpot = Pc; this.setsChildPortSpot = !0; this.childPortSpot = Pc } z.Qa(zs, xa); z.ia("TreeVertex", zs); zs.prototype.copyInheritedPropertiesFrom = function(a) { null !== a && (this.sorting = a.sorting, this.comparer = a.comparer, this.angle = a.angle, this.alignment = a.alignment, this.nodeIndent = a.nodeIndent, this.nodeIndentPastParent = a.nodeIndentPastParent, this.nodeSpacing = a.nodeSpacing, this.layerSpacing = a.layerSpacing, this.layerSpacingParentOverlap = a.layerSpacingParentOverlap, this.compaction = a.compaction, this.breadthLimit = a.breadthLimit, this.rowSpacing = a.rowSpacing, this.rowIndent = a.rowIndent, this.commentSpacing = a.commentSpacing, this.commentMargin = a.commentMargin, this.setsPortSpot = a.setsPortSpot, this.portSpot = a.portSpot, this.setsChildPortSpot = a.setsChildPortSpot, this.childPortSpot = a.childPortSpot) }; z.w(zs, { Wm: "childrenCount" }, function() { return this.children.length }); z.defineProperty(zs, { pL: "relativePosition" }, function() { return this.qa }, function(a) { this.qa.set(a) }); z.defineProperty(zs, { BL: "subtreeSize" }, function() { return this.ob }, function(a) { this.ob.set(a) }); z.defineProperty(zs, { AL: "subtreeOffset" }, function() { return this.Ta }, function(a) { this.Ta.set(a) }); function Ft() { ya.call(this); this.ls = new N(0, 0) } z.Qa(Ft, ya); z.ia("TreeEdge", Ft); Ft.prototype.commit = function() { var a = this.link; if (null !== a && !a.jj) { var b = this.network.Sb, c = null, d = null; switch (b.Of) { case vs: c = this.fromVertex; d = this.toVertex; break; case Cs: c = this.toVertex; d = this.fromVertex; break; default: z.k("Unhandled path value " + b.Of.toString()) } if (null !== c && null !== d) if (b = this.ls, 0 !== b.x || 0 !== b.y || c.dJ) { var d = c.vb, e = ct(c), g = ft(c), h = c.rowSpacing; a.Bn(); var k = a.Se === Ui, l = a.rc, m = 0, n, p; a.Ul(); if (l || k) { for (m = 2; 4 < a.sa;) a.oF(2); n = a.m(1); p = a.m(2) } else { for (m = 1; 3 < a.sa;) a.oF(1); n = a.m(0); p = a.m(a.sa - 1) } var q = a.m(a.sa - 1), r = 0; 0 === e ? (c.alignment === et ? (r = d.bottom + b.y, 0 === b.y && n.y > q.y + c.rowIndent && (r = Math.min(r, Math.max(n.y, r - gt(c))))) : c.alignment === dt ? (r = d.top + b.y, 0 === b.y && n.y < q.y - c.rowIndent && (r = Math.max(r, Math.min(n.y, r + gt(c))))) : r = c.Wp || c.Xp && 1 === c.maxGenerationCount ? d.top - c.Ta.y + b.y : d.y + d.height / 2 + b.y, k ? (a.B(m, n.x, r), m++, a.B(m, d.right + g, r), m++, a.B(m, d.right + g + (b.x - h) / 3, r), m++, a.B(m, d.right + g + 2 * (b.x - h) / 3, r), m++, a.B(m, d.right + g + (b.x - h), r), m++, a.B(m, p.x, r)) : (l && (a.B(m, d.right + g / 2, n.y), m++), a.B(m, d.right + g / 2, r), m++, a.B(m, d.right + g + b.x - (l ? h / 2 : h), r), m++, l && a.B(m, a.m(m - 1).x, p.y))) : 90 === e ? (c.alignment === et ? (r = d.right + b.x, 0 === b.x && n.x > q.x + c.rowIndent && (r = Math.min(r, Math.max(n.x, r - gt(c))))) : c.alignment === dt ? (r = d.left + b.x, 0 === b.x && n.x < q.x - c.rowIndent && (r = Math.max(r, Math.min(n.x, r + gt(c))))) : r = c.Wp || c.Xp && 1 === c.maxGenerationCount ? d.left - c.Ta.x + b.x : d.x + d.width / 2 + b.x, k ? (a.B(m, r, n.y), m++, a.B(m, r, d.bottom + g), m++, a.B(m, r, d.bottom + g + (b.y - h) / 3), m++, a.B(m, r, d.bottom + g + 2 * (b.y - h) / 3), m++, a.B(m, r, d.bottom + g + (b.y - h)), m++, a.B(m, r, p.y)) : (l && (a.B(m, n.x, d.bottom + g / 2), m++), a.B(m, r, d.bottom + g / 2), m++, a.B(m, r, d.bottom + g + b.y - (l ? h / 2 : h)), m++, l && a.B(m, p.x, a.m(m - 1).y))) : 180 === e ? (c.alignment === et ? (r = d.bottom + b.y, 0 === b.y && n.y > q.y + c.rowIndent && (r = Math.min(r, Math.max(n.y, r - gt(c))))) : c.alignment === dt ? (r = d.top + b.y, 0 === b.y && n.y < q.y - c.rowIndent && (r = Math.max(r, Math.min(n.y, r + gt(c))))) : r = c.Wp || c.Xp && 1 === c.maxGenerationCount ? d.top - c.Ta.y + b.y : d.y + d.height / 2 + b.y, k ? (a.B(m, n.x, r), m++, a.B(m, d.left - g, r), m++, a.B(m, d.left - g + (b.x + h) / 3, r), m++, a.B(m, d.left - g + 2 * (b.x + h) / 3, r), m++, a.B(m, d.left - g + (b.x + h), r), m++, a.B(m, p.x, r)) : (l && (a.B(m, d.left - g / 2, n.y), m++), a.B(m, d.left - g / 2, r), m++, a.B(m, d.left - g + b.x + (l ? h / 2 : h), r), m++, l && a.B(m, a.m(m - 1).x, p.y))) : 270 === e ? (c.alignment === et ? (r = d.right + b.x, 0 === b.x && n.x > q.x + c.rowIndent && (r = Math.min(r, Math.max(n.x, r - gt(c))))) : c.alignment === dt ? (r = d.left + b.x, 0 === b.x && n.x < q.x - c.rowIndent && (r = Math.max(r, Math.min(n.x, r + gt(c))))) : r = c.Wp || c.Xp && 1 === c.maxGenerationCount ? d.left - c.Ta.x + b.x : d.x + d.width / 2 + b.x, k ? (a.B(m, r, n.y), m++, a.B(m, r, d.top - g), m++, a.B(m, r, d.top - g + (b.y + h) / 3), m++, a.B(m, r, d.top - g + 2 * (b.y + h) / 3), m++, a.B(m, r, d.top - g + (b.y + h)), m++, a.B(m, r, p.y)) : (l && (a.B(m, n.x, d.top - g / 2), m++), a.B(m, r, d.top - g / 2), m++, a.B(m, r, d.top - g + b.y + (l ? h / 2 : h)), m++, l && a.B(m, p.x, a.m(m - 1).y))) : z.k("Invalid angle " + e); a.cj() } else e = c, g = d, u && z.l(e, zs, Ft, "adjustRouteForAngleChange:parent"), u && z.l(g, zs, Ft, "adjustRouteForAngleChange:child"), a = this.link, c = ct(e), c !== ct(g) && (b = ft(e), d = e.vb, e = g.vb, 0 === c && e.left - d.right < b + 1 || 90 === c && e.top - d.bottom < b + 1 || 180 === c && d.left - e.right < b + 1 || 270 === c && d.top - e.bottom < b + 1 || (a.Bn(), e = a.Se === Ui, g = a.rc, h = Us(this.fromVertex.alignment), a.Ul(), 0 === c ? (c = d.right + b / 2, e ? 4 === a.sa && (b = a.m(3).y, a.aa(1, c - 20, a.m(1).y), a.B(2, c - 20, b), a.B(3, c, b), a.B(4, c + 20, b), a.aa(5, a.m(5).x, b)) : g ? h ? a.aa(3, a.m(2).x, a.m(4).y) : 6 === a.sa && (a.aa(2, c, a.m(2).y), a.aa(3, c, a.m(3).y)) : 4 === a.sa ? a.B(2, c, a.m(2).y) : 3 === a.sa ? a.aa(1, c, a.m(2).y) : 2 === a.sa && a.B(1, c, a.m(1).y)) : 90 === c ? (b = d.bottom + b / 2, e ? 4 === a.sa && (c = a.m(3).x, a.aa(1, a.m(1).x, b - 20), a.B(2, c, b - 20), a.B(3, c, b), a.B(4, c, b + 20), a.aa(5, c, a.m(5).y)) : g ? h ? a.aa(3, a.m(2).x, a.m(4).y) : 6 === a.sa && (a.aa(2, a.m(2).x, b), a.aa(3, a.m(3).x, b)) : 4 === a.sa ? a.B(2, a.m(2).x, b) : 3 === a.sa ? a.aa(1, a.m(2).x, b) : 2 === a.sa && a.B(1, a.m(1).x, b)) : 180 === c ? (c = d.left - b / 2, e ? 4 === a.sa && (b = a.m(3).y, a.aa(1, c + 20, a.m(1).y), a.B(2, c + 20, b), a.B(3, c, b), a.B(4, c - 20, b), a.aa(5, a.m(5).x, b)) : g ? h ? a.aa(3, a.m(2).x, a.m(4).y) : 6 === a.sa && (a.aa(2, c, a.m(2).y), a.aa(3, c, a.m(3).y)) : 4 === a.sa ? a.B(2, c, a.m(2).y) : 3 === a.sa ? a.aa(1, c, a.m(2).y) : 2 === a.sa && a.B(1, c, a.m(1).y)) : 270 === c && (b = d.top - b / 2, e ? 4 === a.sa && (c = a.m(3).x, a.aa(1, a.m(1).x, b + 20), a.B(2, c, b + 20), a.B(3, c, b), a.B(4, c, b - 20), a.aa(5, c, a.m(5).y)) : g ? h ? a.aa(3, a.m(2).x, a.m(4).y) : 6 === a.sa && (a.aa(2, a.m(2).x, b), a.aa(3, a.m(3).x, b)) : 4 === a.sa ? a.B(2, a.m(2).x, b) : 3 === a.sa ? a.aa(1, a.m(2).x, b) : 2 === a.sa && a.B(1, a.m(1).x, b)), a.cj())) } }; z.defineProperty(Ft, { oL: "relativePoint" }, function() { return this.ls }, function(a) { this.ls.set(a) }); function Gt() { O.call(this); this.$e = null } z.Qa(Gt, O); Gt.prototype.cloneProtected = function(a) { O.prototype.cloneProtected.call(this, a); a.element = this.$e.cloneNode(!0) }; Gt.prototype.toString = function() { return "HTMLHost(" + this.$e.toString() + ")#" + z.nd(this) }; Gt.prototype.nk = function(a, b) { var c = this.$e; if (null !== c) { var d = this.fb(ec); d.x -= this.W.width / 2; d.y -= this.W.height / 2; d.x -= this.W.x; d.y -= this.W.y; var d = b.aB(d), e = b.Dl; null === e || e.contains(c) || e.appendChild(c); e = this.transform; c.style.transform = "matrix(" + e.m11 + "," + e.m12 + "," + e.m21 + "," + e.m22 + "," + e.dx + "," + e.dy + ")"; c.style.transformOrigin = "0 0"; e = d.y; c.style.left = d.x + "px"; c.style.top = e + "px" } }; Gt.prototype.Ip = function(a, b, c, d) { var e = this.Aa; isFinite(e.width) && (a = e.width); isFinite(e.height) && (b = e.height); var e = this.Xe, g = this.cg; c = Math.max(c, g.width); d = Math.max(d, g.height); a = Math.min(e.width, a); b = Math.min(e.height, b); a = Math.max(c, a); b = Math.max(d, b); c = this.$e; null !== c && (b = c.getBoundingClientRect(), a = b.width, b = b.height); yb(this.Wc, a, b); Jm(this, 0, 0, a, b) }; Gt.prototype.$i = function(a, b, c, d) { Nm(this, a, b, c, d) }; z.w(Gt, { Ga: "naturalBounds" }, function() { return this.Wc }); z.defineProperty(Gt, { element: "element" }, function() { return this.$e }, function(a) { var b = this.$e; b !== a && (a instanceof HTMLElement || z.k("HTMLHost.element must be an instance of HTMLElement."), this.$e = a, a.className = "HTMLHost", this.j("element", b, a), this.ta()) }); aa.version = "1.6.18"; window && (window.module && "object" === typeof window.module && "object" === typeof window.module.exports ? window.module.exports = aa : window.define && "function" === typeof window.define && window.define.amd ? (window.go = aa, window.define(aa)) : window.go = aa); "undefined" !== typeof module && "object" === typeof module.exports && (module.exports = aa); })(window);