12.6.3 release

This commit is contained in:
Gaudenz Alder 2020-02-02 14:45:25 +01:00
parent f17e73b3f5
commit 71b774aa0b
30 changed files with 4642 additions and 3579 deletions

View file

@ -1,6 +1,18 @@
02-FEB-2020: 12.6.3
- Updates move preview after key events
- Fixes rounding errors for routing
- Uses mxGraph 4.1.1 beta 3
30-JAN-2020: 12.6.2
- Fixes WebKitBlobResource error on iOS
- Adds layers for VSDX export
- Uses mxGraph 4.1.1 beta 2
28-JAN-2020: 12.6.1
- Adds new Veeam sidebar
- Adds new Veeam shapes
28-JAN-2020: 12.6.0

View file

@ -1 +1 @@
12.6.1
12.6.3

View file

@ -56,7 +56,7 @@ e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&
b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b){for(var d in b)c++;for(d in a)if(c--,!(mxUtils.isNaN(a[d])&&mxUtils.isNaN(b[d])||a[d]==b[d]))return!1}return 0==c},removeDuplicates:function(a){for(var b=new mxDictionary,c=[],d=0;d<a.length;d++)b.get(a[d])||(c.push(a[d]),b.put(a[d],!0));return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},extend:function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a},toString:function(a){var b=
"",c;for(c in a)try{if(null==a[c])b+=c+" = [null]\n";else if("function"==typeof a[c])b+=c+" => [Function]\n";else if("object"==typeof a[c])var d=mxUtils.getFunctionName(a[c].constructor),b=b+(c+" => ["+d+"]\n");else b+=c+" = "+a[c]+"\n"}catch(e){b+=c+"="+e.message}return b},toRadians:function(a){return Math.PI*a/180},toDegree:function(a){return 180*a/Math.PI},arcToCurves:function(a,b,c,d,e,f,g,k,l){k-=a;l-=b;if(0===c||0===d)return q;c=Math.abs(c);d=Math.abs(d);var m=-k/2,n=-l/2,p=Math.cos(e*Math.PI/
180),q=Math.sin(e*Math.PI/180);e=p*m+q*n;var m=-1*q*m+p*n,n=e*e,r=m*m,t=c*c,u=d*d,x=n/t+r/u;1<x?(c*=Math.sqrt(x),d*=Math.sqrt(x),f=0):(x=1,f===g&&(x=-1),f=x*Math.sqrt((t*u-t*r-u*n)/(t*r+u*n)));n=f*c*m/d;r=-1*f*d*e/c;k=p*n-q*r+k/2;l=q*n+p*r+l/2;t=Math.atan2((m-r)/d,(e-n)/c)-Math.atan2(0,1);f=0<=t?t:2*Math.PI+t;t=Math.atan2((-m-r)/d,(-e-n)/c)-Math.atan2((m-r)/d,(e-n)/c);e=0<=t?t:2*Math.PI+t;0==g&&0<e?e-=2*Math.PI:0!=g&&0>e&&(e+=2*Math.PI);g=2*e/Math.PI;g=Math.ceil(0>g?-1*g:g);e/=g;m=8/3*Math.sin(e/
4)*Math.sin(e/4)/Math.sin(e/2);n=p*c;p*=d;c*=q;d*=q;for(var y=Math.cos(f),A=Math.sin(f),r=-m*(n*A+d*y),t=-m*(c*A-p*y),q=[],z=0;z<g;++z){f+=e;var y=Math.cos(f),A=Math.sin(f),u=n*y-d*A+k,x=c*y+p*A+l,v=-m*(n*A+d*y),y=-m*(c*A-p*y),A=6*z;q[A]=Number(r+a);q[A+1]=Number(t+b);q[A+2]=Number(u-v+a);q[A+3]=Number(x-y+b);q[A+4]=Number(u+a);q[A+5]=Number(x+b);r=u+v;t=x+y}return q},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=
4)*Math.sin(e/4)/Math.sin(e/2);n=p*c;p*=d;c*=q;d*=q;for(var y=Math.cos(f),B=Math.sin(f),r=-m*(n*B+d*y),t=-m*(c*B-p*y),q=[],A=0;A<g;++A){f+=e;var y=Math.cos(f),B=Math.sin(f),u=n*y-d*B+k,x=c*y+p*B+l,z=-m*(n*B+d*y),y=-m*(c*B-p*y),B=6*A;q[B]=Number(r+a);q[B+1]=Number(t+b);q[B+2]=Number(u-z+a);q[B+3]=Number(x-y+b);q[B+4]=Number(u+a);q[B+5]=Number(x+b);r=u+z;t=x+y}return q},getBoundingBox:function(a,b,c){var d=null;if(null!=a&&null!=b&&0!=b){b=mxUtils.toRadians(b);var d=Math.cos(b),e=Math.sin(b);c=null!=
c?c:new mxPoint(a.x+a.width/2,a.y+a.height/2);var f=new mxPoint(a.x,a.y);b=new mxPoint(a.x+a.width,a.y);var g=new mxPoint(b.x,a.y+a.height);a=new mxPoint(a.x,g.y);f=mxUtils.getRotatedPoint(f,d,e,c);b=mxUtils.getRotatedPoint(b,d,e,c);g=mxUtils.getRotatedPoint(g,d,e,c);a=mxUtils.getRotatedPoint(a,d,e,c);d=new mxRectangle(f.x,f.y,0,0);d.add(new mxRectangle(b.x,b.y,0,0));d.add(new mxRectangle(g.x,g.y,0,0));d.add(new mxRectangle(a.x,a.y,0,0))}return d},getRotatedPoint:function(a,b,c,d){d=null!=d?d:new mxPoint;
var e=a.x-d.x;a=a.y-d.y;return new mxPoint(e*b-a*c+d.x,a*b+e*c+d.y)},getPortConstraints:function(a,b,c,d){b=mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT,mxUtils.getValue(b.style,c?mxConstants.STYLE_SOURCE_PORT_CONSTRAINT:mxConstants.STYLE_TARGET_PORT_CONSTRAINT,null));if(null==b)return d;d=b.toString();b=mxConstants.DIRECTION_MASK_NONE;c=0;1==mxUtils.getValue(a.style,mxConstants.STYLE_PORT_CONSTRAINT_ROTATION,0)&&(c=mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0));a=0;45<c?(a=
1,135<=c&&(a=2)):-45>c&&(a=3,-135>=c&&(a=2));if(0<=d.indexOf(mxConstants.DIRECTION_NORTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 1:b|=mxConstants.DIRECTION_MASK_EAST;break;case 2:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 3:b|=mxConstants.DIRECTION_MASK_WEST}if(0<=d.indexOf(mxConstants.DIRECTION_WEST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_WEST;break;case 1:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 2:b|=mxConstants.DIRECTION_MASK_EAST;break;case 3:b|=mxConstants.DIRECTION_MASK_SOUTH}if(0<=
@ -134,7 +134,7 @@ START_EDITING:"startEditing",EDITING_STARTED:"editingStarted",EDITING_STOPPED:"e
mxXmlRequest.prototype.async=null;mxXmlRequest.prototype.binary=!1;mxXmlRequest.prototype.withCredentials=!1;mxXmlRequest.prototype.username=null;mxXmlRequest.prototype.password=null;mxXmlRequest.prototype.request=null;mxXmlRequest.prototype.decodeSimulateValues=!1;mxXmlRequest.prototype.isBinary=function(){return this.binary};mxXmlRequest.prototype.setBinary=function(a){this.binary=a};mxXmlRequest.prototype.getText=function(){return this.request.responseText};
mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState};mxXmlRequest.prototype.getDocumentElement=function(){var a=this.getXml();return null!=a?a.documentElement:null};mxXmlRequest.prototype.getXml=function(){var a=this.request.responseXML;if(9<=document.documentMode||null==a||null==a.documentElement)a=mxUtils.parseXml(this.request.responseText);return a};mxXmlRequest.prototype.getText=function(){return this.request.responseText};
mxXmlRequest.prototype.getStatus=function(){return null!=this.request?this.request.status:null};mxXmlRequest.prototype.create=function(){if(window.XMLHttpRequest)return function(){var a=new XMLHttpRequest;this.isBinary()&&a.overrideMimeType&&a.overrideMimeType("text/plain; charset=x-user-defined");return a};if("undefined"!=typeof ActiveXObject)return function(){return new ActiveXObject("Microsoft.XMLHTTP")}}();
mxXmlRequest.prototype.send=function(a,b,c,d){this.request=this.create();null!=this.request&&(null!=a&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(a(this),this.request.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),window.XMLHttpRequest&&this.withCredentials&&(this.request.withCredentials="true"),!mxClient.IS_QUIRKS&&(null==document.documentMode||9<document.documentMode)&&
mxXmlRequest.prototype.send=function(a,b,c,d){this.request=this.create();null!=this.request&&(null!=a&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(a(this),this.request.onreadystatechange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),window.XMLHttpRequest&&this.withCredentials&&(this.request.withCredentials="true"),!mxClient.IS_QUIRKS&&(null==document.documentMode||9<document.documentMode)&&
window.XMLHttpRequest&&null!=c&&null!=d&&(this.request.timeout=c,this.request.ontimeout=d),this.request.send(this.params))};mxXmlRequest.prototype.setRequestHeaders=function(a,b){null!=b&&a.setRequestHeader("Content-Type","application/x-www-form-urlencoded")};
mxXmlRequest.prototype.simulate=function(a,b){a=a||document;var c=null;a==document&&(c=window.onbeforeunload,window.onbeforeunload=null);var d=a.createElement("form");d.setAttribute("method",this.method);d.setAttribute("action",this.url);null!=b&&d.setAttribute("target",b);d.style.display="none";d.style.visibility="hidden";for(var e=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),f=0;f<e.length;f++){var g=e[f].indexOf("=");if(0<g){var k=e[f].substring(0,g),g=e[f].substring(g+
1);this.decodeSimulateValues&&(g=decodeURIComponent(g));var l=a.createElement("textarea");l.setAttribute("wrap","off");l.setAttribute("name",k);mxUtils.write(l,g);d.appendChild(l)}}a.body.appendChild(d);d.submit();null!=d.parentNode&&d.parentNode.removeChild(d);null!=c&&(window.onbeforeunload=c)};
@ -330,11 +330,11 @@ mxSvgCanvas2D.prototype.createDiv=function(a){mxUtils.isNode(a)||(a="<div><div>"
document?c.appendChild(a.cloneNode(!0)):c.appendChild(a);d.appendChild(c);b.appendChild(d)}else b.innerHTML=a;return b};mxSvgCanvas2D.prototype.updateText=function(a,b,c,d,e,f,g,k,l,m,n){null!=n&&null!=n.firstChild&&null!=n.firstChild.firstChild&&this.updateTextNodes(a,b,c,d,e,f,g,k,l,m,n.firstChild)};
mxSvgCanvas2D.prototype.addForeignObject=function(a,b,c,d,e,f,g,k,l,m,n,p,q,r,t){q=this.createElement("g");var u=this.createElement("foreignObject");u.setAttribute("style","overflow: visible; text-align: left;");u.setAttribute("pointer-events","none");r.ownerDocument!=document&&(r=mxUtils.importNodeImplementation(u.ownerDocument,r,!0));u.appendChild(r);q.appendChild(u);this.updateTextNodes(a,b,c,d,f,g,k,m,n,p,q);this.root.ownerDocument!=document&&(a=this.createAlternateContent(u,a,b,c,d,e,f,g,k,l,
m,n,p),null!=a&&(u.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility"),b=this.createElement("switch"),b.appendChild(u),b.appendChild(a),q.appendChild(b)));t.appendChild(q)};
mxSvgCanvas2D.prototype.updateTextNodes=function(a,b,c,d,e,f,g,k,l,m,n){var p=this.state.scale;mxSvgCanvas2D.createCss(c,d,e,f,g,k,l,null!=this.state.fontBackgroundColor?this.state.fontBackgroundColor:null,null!=this.state.fontBorderColor?this.state.fontBorderColor:null,"display: flex; align-items: unsafe "+(f==mxConstants.ALIGN_TOP?"flex-start":f==mxConstants.ALIGN_BOTTOM?"flex-end":"center")+"; justify-content: unsafe "+(e==mxConstants.ALIGN_LEFT?"flex-start":e==mxConstants.ALIGN_RIGHT?"flex-end":
mxSvgCanvas2D.prototype.updateTextNodes=function(a,b,c,d,e,f,g,k,l,m,n){var p=this.state.scale;mxSvgCanvas2D.createCss(c+2,d,e,f,g,k,l,null!=this.state.fontBackgroundColor?this.state.fontBackgroundColor:null,null!=this.state.fontBorderColor?this.state.fontBorderColor:null,"display: flex; align-items: unsafe "+(f==mxConstants.ALIGN_TOP?"flex-start":f==mxConstants.ALIGN_BOTTOM?"flex-end":"center")+"; justify-content: unsafe "+(e==mxConstants.ALIGN_LEFT?"flex-start":e==mxConstants.ALIGN_RIGHT?"flex-end":
"center")+"; ",this.getTextCss(),p,mxUtils.bind(this,function(c,d,e,f,g){a+=this.state.dx;b+=this.state.dy;var k=n.firstChild,l=k.firstChild,q=l.firstChild,r=(this.rotateHtml?this.state.rotation:0)+(null!=m?m:0),t=(0!=this.foOffset?"translate("+this.foOffset+" "+this.foOffset+")":"")+(1!=p?"scale("+p+")":"");q.firstChild.setAttribute("style",g);q.setAttribute("style",f);k.setAttribute("width",Math.ceil(1/Math.min(1,p)*100)+"%");k.setAttribute("height",Math.ceil(1/Math.min(1,p)*100)+"%");d=Math.round(b+
d);0>d?k.setAttribute("y",d):(k.removeAttribute("y"),e+="padding-top: "+d+"px; ");l.setAttribute("style",e+"margin-left: "+Math.round(a+c)+"px;");t+=0!=r?"rotate("+r+" "+a+" "+b+")":"";""!=t?n.setAttribute("transform",t):n.removeAttribute("transform");1!=this.state.alpha?n.setAttribute("opacity",this.state.alpha):n.removeAttribute("opacity")}))};
mxSvgCanvas2D.createCss=function(a,b,c,d,e,f,g,k,l,m,n,p,q){p="box-sizing: border-box; font-size: 0; text-align: "+(c==mxConstants.ALIGN_LEFT?"left":c==mxConstants.ALIGN_RIGHT?"right":"center")+"; ";var r=mxUtils.getAlignmentAsPoint(c,d);c="overflow: hidden; ";d="width: 1px; ";var t="height: 1px; ",u=r.x*a,r=r.y*b;g?(d="width: "+Math.round(a)+"px; ",p+="max-height: "+Math.round(b)+"px; ",r=0):"fill"==f?(d="width: "+Math.round(a)+"px; ",t="height: "+Math.round(b)+"px; ",n+="width: 100%; height: 100%; ",
p+=d+t):"width"==f?(d="width: "+Math.round(a)+"px; ",n+="width: 100%; ",p+=d,r=0,0<b&&(p+="max-height: "+Math.round(b)+"px; ")):(c="",r=0);b="";null!=k&&(b+="background-color: "+k+"; ");null!=l&&(b+="border: 1px solid "+l+"; ");""==c||g?n+=b:p+=b;e&&0<a?(n+="white-space: normal; word-wrap: "+mxConstants.WORD_WRAP+"; ",d="width: "+Math.round(a+2)+"px; ",""!=c&&"fill"!=f&&(r=0)):(n+="white-space: nowrap; ",""==c&&(u=0));q(u,r,m+d+t,p+c,n,c)};
p+=d+t):"width"==f?(d="width: "+Math.round(a)+"px; ",n+="width: 100%; ",p+=d,r=0,0<b&&(p+="max-height: "+Math.round(b)+"px; ")):(c="",r=0);b="";null!=k&&(b+="background-color: "+k+"; ");null!=l&&(b+="border: 1px solid "+l+"; ");""==c||g?n+=b:p+=b;e&&0<a?(n+="white-space: normal; word-wrap: "+mxConstants.WORD_WRAP+"; ",d="width: "+Math.round(a)+"px; ",""!=c&&"fill"!=f&&(r=0)):(n+="white-space: nowrap; ",""==c&&(u=0));q(u,r,m+d+t,p+c,n,c)};
mxSvgCanvas2D.prototype.getTextCss=function(){var a=this.state,b="display: inline-block; font-size: "+a.fontSize+"px; font-family: "+a.fontFamily+"; color: "+a.fontColor+"; line-height: "+(mxConstants.ABSOLUTE_LINE_HEIGHT?a.fontSize*mxConstants.LINE_HEIGHT+"px":mxConstants.LINE_HEIGHT*this.lineHeightCorrection)+"; pointer-events: "+(this.pointerEvents?this.pointerEventsValue:"none")+"; ";(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(b+="font-weight: bold; ");(a.fontStyle&mxConstants.FONT_ITALIC)==
mxConstants.FONT_ITALIC&&(b+="font-style: italic; ");var c=[];(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&c.push("underline");(a.fontStyle&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&c.push("line-through");0<c.length&&(b+="text-decoration: "+c.join(" ")+"; ");return b};
mxSvgCanvas2D.prototype.text=function(a,b,c,d,e,f,g,k,l,m,n,p,q){if(this.textEnabled&&null!=e)if(p=null!=p?p:0,this.foEnabled&&"html"==l){var r=this.createDiv(e);null!=r&&(null!=q&&r.setAttribute("dir",q),this.addForeignObject(a,b,c,d,e,f,g,k,l,m,n,p,q,r,this.root))}else this.plainText(a+this.state.dx,b+this.state.dy,c,d,e,f,g,k,m,n,p,q)};
@ -372,8 +372,8 @@ mxVmlCanvas2D.prototype.text=function(a,b,c,d,e,f,g,k,l,m,n,p,q){if(this.textEna
this.format(a)+"px";l.style.top=this.format(b)+"px";l.style.zoom=r.scale;var t=this.createElement("div");t.style.position="relative";t.style.display="inline";var u=mxUtils.getAlignmentAsPoint(f,g),x=u.x,u=u.y;e=this.createDiv(e,f,g,m);f=this.createElement("div");null!=q&&e.setAttribute("dir",q);if(k&&0<c){if(n||(e.style.width=Math.round(c)+"px"),e.style.wordWrap=mxConstants.WORD_WRAP,e.style.whiteSpace="normal","break-word"==e.style.wordWrap){var y=e;null!=y.firstChild&&"DIV"==y.firstChild.nodeName&&
(y.firstChild.style.width="100%")}}else e.style.whiteSpace="nowrap";p=r.rotation+(p||0);this.rotateHtml&&0!=p?(f.style.display="inline",f.style.zoom="1",f.appendChild(e),8!=document.documentMode||mxClient.IS_EM||"DIV"==this.root.nodeName?l.appendChild(f):(t.appendChild(f),l.appendChild(t))):8!=document.documentMode||mxClient.IS_EM?(e.style.display="inline",l.appendChild(e)):(t.appendChild(e),l.appendChild(t));"DIV"!=this.root.nodeName?(q=this.createVmlElement("rect"),q.stroked="false",q.filled="false",
q.appendChild(l),this.root.appendChild(q)):this.root.appendChild(l);n?(e.style.overflow="hidden",e.style.width=Math.round(c)+"px",mxClient.IS_QUIRKS||(e.style.maxHeight=Math.round(d)+"px")):"fill"==m?(e.style.overflow="hidden",e.style.width=Math.max(0,c)+1+"px",e.style.height=Math.max(0,d)+1+"px"):"width"==m&&(e.style.overflow="hidden",e.style.width=Math.max(0,c)+1+"px",e.style.maxHeight=Math.max(0,d)+1+"px");if(this.rotateHtml&&0!=p){y=Math.PI/180*p;p=parseFloat(parseFloat(Math.cos(y)).toFixed(8));
q=parseFloat(parseFloat(Math.sin(-y)).toFixed(8));y%=2*Math.PI;0>y&&(y+=2*Math.PI);y%=Math.PI;y>Math.PI/2&&(y=Math.PI-y);g=Math.cos(y);var A=Math.sin(y);8!=document.documentMode||mxClient.IS_EM||(e.style.display="inline-block",f.style.display="inline-block",t.style.display="inline-block");e.style.visibility="hidden";e.style.position="absolute";document.body.appendChild(e);t=e;null!=t.firstChild&&"DIV"==t.firstChild.nodeName&&(t=t.firstChild);y=t.offsetWidth+3;t=t.offsetHeight;n?(c=Math.min(c,y),t=
Math.min(t,d)):c=y;k&&(e.style.width=c+"px");mxClient.IS_QUIRKS&&(n||"width"==m)&&t>d&&(t=d,e.style.height=t+"px");d=t;n=(d-d*g+c*-A)/2-q*c*(x+.5)+p*d*(u+.5);k=(c-c*g+d*-A)/2+p*c*(x+.5)+q*d*(u+.5);"group"==l.nodeName&&"DIV"==this.root.nodeName?(m=this.createElement("div"),m.style.display="inline-block",m.style.position="absolute",m.style.left=this.format(a+(k-c/2)*r.scale)+"px",m.style.top=this.format(b+(n-d/2)*r.scale)+"px",l.parentNode.appendChild(m),m.appendChild(l)):(r=8!=document.documentMode||
q=parseFloat(parseFloat(Math.sin(-y)).toFixed(8));y%=2*Math.PI;0>y&&(y+=2*Math.PI);y%=Math.PI;y>Math.PI/2&&(y=Math.PI-y);g=Math.cos(y);var B=Math.sin(y);8!=document.documentMode||mxClient.IS_EM||(e.style.display="inline-block",f.style.display="inline-block",t.style.display="inline-block");e.style.visibility="hidden";e.style.position="absolute";document.body.appendChild(e);t=e;null!=t.firstChild&&"DIV"==t.firstChild.nodeName&&(t=t.firstChild);y=t.offsetWidth+3;t=t.offsetHeight;n?(c=Math.min(c,y),t=
Math.min(t,d)):c=y;k&&(e.style.width=c+"px");mxClient.IS_QUIRKS&&(n||"width"==m)&&t>d&&(t=d,e.style.height=t+"px");d=t;n=(d-d*g+c*-B)/2-q*c*(x+.5)+p*d*(u+.5);k=(c-c*g+d*-B)/2+p*c*(x+.5)+q*d*(u+.5);"group"==l.nodeName&&"DIV"==this.root.nodeName?(m=this.createElement("div"),m.style.display="inline-block",m.style.position="absolute",m.style.left=this.format(a+(k-c/2)*r.scale)+"px",m.style.top=this.format(b+(n-d/2)*r.scale)+"px",l.parentNode.appendChild(m),m.appendChild(l)):(r=8!=document.documentMode||
mxClient.IS_EM?r.scale:1,l.style.left=this.format(a+(k-c/2)*r)+"px",l.style.top=this.format(b+(n-d/2)*r)+"px");f.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+p+", M12="+q+", M21="+-q+", M22="+p+", sizingMethod='auto expand')";f.style.backgroundColor=this.rotatedHtmlBackground;1>this.state.alpha&&(f.style.filter+="alpha(opacity="+100*this.state.alpha+")");f.appendChild(e);e.style.position="";e.style.visibility=""}else 8!=document.documentMode||mxClient.IS_EM?(e.style.verticalAlign=
"top",1>this.state.alpha&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),r=e.parentNode,e.style.visibility="hidden",document.body.appendChild(e),c=e.offsetWidth,t=e.offsetHeight,mxClient.IS_QUIRKS&&n&&t>d&&(t=d,e.style.height=t+"px"),d=t,e.style.visibility="",r.appendChild(e),l.style.left=this.format(a+c*x*this.state.scale)+"px",l.style.top=this.format(b+d*u*this.state.scale)+"px"):(1>this.state.alpha&&(e.style.filter="alpha(opacity="+100*this.state.alpha+")"),t.style.left=100*x+"%",t.style.top=
100*u+"%")}else this.plainText(a,b,c,d,mxUtils.htmlEntities(e,!1),f,g,k,l,m,n,p,q)}};
@ -382,9 +382,9 @@ mxVmlCanvas2D.prototype.plainText=function(a,b,c,d,e,f,g,k,l,m,n,p,q){k=this.sta
g==mxConstants.ALIGN_BOTTOM?f=-k/2:g!=mxConstants.ALIGN_MIDDLE&&(f=k/2);null!=p&&(c.style.rotation=p,g=Math.PI/180*p,e=Math.sin(g)*f,f*=Math.cos(g));c.appendChild(d);c.style.left=this.format(a-e)+"px";c.style.top=this.format(b+f)+"px";this.root.appendChild(c)};mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)};mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)};mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};
function mxGuide(a,b){this.graph=a;this.setStates(b)}mxGuide.prototype.graph=null;mxGuide.prototype.states=null;mxGuide.prototype.horizontal=!0;mxGuide.prototype.vertical=!0;mxGuide.prototype.guideX=null;mxGuide.prototype.guideY=null;mxGuide.prototype.rounded=!1;mxGuide.prototype.tolerance=2;mxGuide.prototype.setStates=function(a){this.states=a};mxGuide.prototype.isEnabledForEvent=function(a){return!0};
mxGuide.prototype.getGuideTolerance=function(a){return a&&this.graph.gridEnabled?this.graph.gridSize/2:this.tolerance};mxGuide.prototype.createGuideShape=function(a){a=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH);a.isDashed=!0;return a};mxGuide.prototype.isStateIgnored=function(a){return!1};
mxGuide.prototype.move=function(a,b,c,d){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=b){d=function(c,d,e){c+=this.graph.panDy;var f=!1;e&&Math.abs(c-v)<=t?(b.y=c-a.getCenterY(),t=Math.abs(c-v),f=!0):e||(Math.abs(c-A)<=t?(b.y=c-a.y,t=Math.abs(c-A),f=!0):Math.abs(c-z)<=t&&(b.y=c-a.y-a.height,t=Math.abs(c-z),f=!0));f&&(p=d,q=Math.round(c-this.graph.panDy),null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?
mxGuide.prototype.move=function(a,b,c,d){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=b){d=function(c,d,e){c+=this.graph.panDy;var f=!1;e&&Math.abs(c-z)<=t?(b.y=c-a.getCenterY(),t=Math.abs(c-z),f=!0):e||(Math.abs(c-B)<=t?(b.y=c-a.y,t=Math.abs(c-B),f=!0):Math.abs(c-A)<=t&&(b.y=c-a.y-a.height,t=Math.abs(c-A),f=!0));f&&(p=d,q=Math.round(c-this.graph.panDy),null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?
mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane())));n=n||f};var e=function(c,d,e){c+=this.graph.panDx;var f=!1;e&&Math.abs(c-y)<=r?(b.x=c-a.getCenterX(),r=Math.abs(c-y),f=!0):e||(Math.abs(c-u)<=r?(b.x=c-a.x,r=Math.abs(c-u),f=!0):Math.abs(c-x)<=r&&(b.x=c-a.x-a.width,r=Math.abs(c-x),f=!0));f&&(l=d,m=Math.round(c-this.graph.panDx),null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=
mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane())));k=k||f};this.graph.getView();var f=this.graph.getView().scale,f=this.getGuideTolerance(c)*f,g=a.clone();g.x+=b.x;g.y+=b.y;for(var k=!1,l=null,m=null,n=!1,p=null,q=null,r=f,t=f,u=g.x,x=g.x+g.width,y=g.getCenterX(),A=g.y,z=g.y+g.height,v=g.getCenterY(),f=0;f<this.states.length;f++)g=this.states[f],null==g||this.isStateIgnored(g)||(this.horizontal&&
mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane())));k=k||f};this.graph.getView();var f=this.graph.getView().scale,f=this.getGuideTolerance(c)*f,g=a.clone();g.x+=b.x;g.y+=b.y;for(var k=!1,l=null,m=null,n=!1,p=null,q=null,r=f,t=f,u=g.x,x=g.x+g.width,y=g.getCenterX(),B=g.y,A=g.y+g.height,z=g.getCenterY(),f=0;f<this.states.length;f++)g=this.states[f],null==g||this.isStateIgnored(g)||(this.horizontal&&
(e.call(this,g.x+g.width,g,!1),e.call(this,g.x,g,!1),e.call(this,g.getCenterX(),g,!0)),this.vertical&&(d.call(this,g.y+g.height,g,!1),d.call(this,g.y,g,!1),d.call(this,g.getCenterY(),g,!0)));this.graph.snapDelta(b,a,!c,k,n);c=this.graph.container;k||null==this.guideX?null!=this.guideX&&(e=d=null,null!=l&&null!=a&&(d=Math.min(a.y+b.y-this.graph.panDy,l.y),e=Math.max(a.y+a.height+b.y-this.graph.panDy,l.y+l.height)),this.guideX.points=null!=d&&null!=e?[new mxPoint(m,d),new mxPoint(m,e)]:[new mxPoint(m,
-this.graph.panDy),new mxPoint(m,c.scrollHeight-3-this.graph.panDy)],this.guideX.stroke=this.getGuideColor(l,!0),this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden";n||null==this.guideY?null!=this.guideY&&(e=d=null,null!=p&&null!=a&&(d=Math.min(a.x+b.x-this.graph.panDx,p.x),e=Math.max(a.x+a.width+b.x-this.graph.panDx,p.x+p.width)),this.guideY.points=null!=d&&null!=e?[new mxPoint(d,q),new mxPoint(e,q)]:[new mxPoint(-this.graph.panDx,q),new mxPoint(c.scrollWidth-
3-this.graph.panDx,q)],this.guideY.stroke=this.getGuideColor(p,!1),this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden";b=this.getDelta(a,l,b.x,p,b.y)}return b};mxGuide.prototype.getDelta=function(a,b,c,d,e){if(this.rounded||null!=b&&null==b.cell)c=Math.floor(a.x+c)-a.x;if(this.rounded||null!=d&&null==d.cell)e=Math.floor(a.y+e)-a.y;return new mxPoint(c,e)};mxGuide.prototype.getGuideColor=function(a,b){return mxConstants.GUIDE_COLOR};
@ -470,14 +470,14 @@ function mxArrowConnector(a,b,c,d,e,f,g){mxShape.call(this);this.points=a;this.f
mxArrowConnector.prototype.resetStyles=function(){mxShape.prototype.resetStyles.apply(this,arguments);this.arrowSpacing=mxConstants.ARROW_SPACING};mxArrowConnector.prototype.apply=function(a){mxShape.prototype.apply.apply(this,arguments);null!=this.style&&(this.startSize=3*mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5),this.endSize=3*mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5))};
mxArrowConnector.prototype.augmentBoundingBox=function(a){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var b=this.getEdgeWidth();this.isMarkerStart()&&(b=Math.max(b,this.getStartArrowWidth()));this.isMarkerEnd()&&(b=Math.max(b,this.getEndArrowWidth()));a.grow((b/2+this.strokewidth)*this.scale)};
mxArrowConnector.prototype.paintEdgeShape=function(a,b){var c=this.strokewidth;this.outline&&(c=Math.max(1,mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth)));for(var d=this.getStartArrowWidth()+c,e=this.getEndArrowWidth()+c,f=this.outline?this.getEdgeWidth()+c:this.getEdgeWidth(),g=this.isOpenEnded(),k=this.isMarkerStart(),l=this.isMarkerEnd(),m=g?0:this.arrowSpacing+c/2,n=this.startSize+c,c=this.endSize+c,p=this.isArrowRounded(),q=b[b.length-1],r=1;r<b.length-1&&b[r].x==
b[0].x&&b[r].y==b[0].y;)r++;var t=b[r].x-b[0].x,r=b[r].y-b[0].y,u=Math.sqrt(t*t+r*r);if(0!=u){var x=t/u,y,A=x,z=r/u,v,B=z,u=f*z,C=-f*x,E=[];p?a.setLineJoin("round"):2<b.length&&a.setMiterLimit(1.42);a.begin();t=x;r=z;if(k&&!g)this.paintMarker(a,b[0].x,b[0].y,x,z,n,d,f,m,!0);else{y=b[0].x+u/2+m*x;v=b[0].y+C/2+m*z;var F=b[0].x-u/2+m*x,J=b[0].y-C/2+m*z;g?(a.moveTo(y,v),E.push(function(){a.lineTo(F,J)})):(a.moveTo(F,J),a.lineTo(y,v))}for(var D=v=y=0,u=0;u<b.length-2;u++)if(C=mxUtils.relativeCcw(b[u].x,
b[u].y,b[u+1].x,b[u+1].y,b[u+2].x,b[u+2].y),y=b[u+2].x-b[u+1].x,v=b[u+2].y-b[u+1].y,D=Math.sqrt(y*y+v*v),0!=D){A=y/D;B=v/D;D=Math.max(Math.sqrt((x*A+z*B+1)/2),.04);y=x+A;v=z+B;var G=Math.sqrt(y*y+v*v);if(0!=G){y/=G;v/=G;var G=Math.max(D,Math.min(this.strokewidth/200+.04,.35)),D=0!=C&&p?Math.max(.1,G):Math.max(D,.06),H=b[u+1].x+v*f/2/D,I=b[u+1].y-y*f/2/D;v=b[u+1].x-v*f/2/D;y=b[u+1].y+y*f/2/D;0!=C&&p?-1==C?(C=v+B*f,D=y-A*f,a.lineTo(v+z*f,y-x*f),a.quadTo(H,I,C,D),function(b,c){E.push(function(){a.lineTo(b,
c)})}(v,y)):(a.lineTo(H,I),function(b,c){var d=H-z*f,e=I+x*f,g=H-B*f,k=I+A*f;E.push(function(){a.quadTo(b,c,d,e)});E.push(function(){a.lineTo(g,k)})}(v,y)):(a.lineTo(H,I),function(b,c){E.push(function(){a.lineTo(b,c)})}(v,y));x=A;z=B}}u=f*B;C=-f*A;if(l&&!g)this.paintMarker(a,q.x,q.y,-x,-z,c,e,f,m,!1);else{a.lineTo(q.x-m*A+u/2,q.y-m*B+C/2);var K=q.x-m*A-u/2,L=q.y-m*B-C/2;g?(a.moveTo(K,L),E.splice(0,0,function(){a.moveTo(K,L)})):a.lineTo(K,L)}for(u=E.length-1;0<=u;u--)E[u]();g?(a.end(),a.stroke()):
(a.close(),a.fillAndStroke());a.setShadow(!1);a.setMiterLimit(4);p&&a.setLineJoin("flat");2<b.length&&(a.setMiterLimit(4),k&&!g&&(a.begin(),this.paintMarker(a,b[0].x,b[0].y,t,r,n,d,f,m,!0),a.stroke(),a.end()),l&&!g&&(a.begin(),this.paintMarker(a,q.x,q.y,-x,-z,c,e,f,m,!0),a.stroke(),a.end()))}};
b[0].x&&b[r].y==b[0].y;)r++;var t=b[r].x-b[0].x,r=b[r].y-b[0].y,u=Math.sqrt(t*t+r*r);if(0!=u){var x=t/u,y,B=x,A=r/u,z,C=A,u=f*A,v=-f*x,D=[];p?a.setLineJoin("round"):2<b.length&&a.setMiterLimit(1.42);a.begin();t=x;r=A;if(k&&!g)this.paintMarker(a,b[0].x,b[0].y,x,A,n,d,f,m,!0);else{y=b[0].x+u/2+m*x;z=b[0].y+v/2+m*A;var F=b[0].x-u/2+m*x,J=b[0].y-v/2+m*A;g?(a.moveTo(y,z),D.push(function(){a.lineTo(F,J)})):(a.moveTo(F,J),a.lineTo(y,z))}for(var E=z=y=0,u=0;u<b.length-2;u++)if(v=mxUtils.relativeCcw(b[u].x,
b[u].y,b[u+1].x,b[u+1].y,b[u+2].x,b[u+2].y),y=b[u+2].x-b[u+1].x,z=b[u+2].y-b[u+1].y,E=Math.sqrt(y*y+z*z),0!=E){B=y/E;C=z/E;E=Math.max(Math.sqrt((x*B+A*C+1)/2),.04);y=x+B;z=A+C;var G=Math.sqrt(y*y+z*z);if(0!=G){y/=G;z/=G;var G=Math.max(E,Math.min(this.strokewidth/200+.04,.35)),E=0!=v&&p?Math.max(.1,G):Math.max(E,.06),H=b[u+1].x+z*f/2/E,I=b[u+1].y-y*f/2/E;z=b[u+1].x-z*f/2/E;y=b[u+1].y+y*f/2/E;0!=v&&p?-1==v?(v=z+C*f,E=y-B*f,a.lineTo(z+A*f,y-x*f),a.quadTo(H,I,v,E),function(b,c){D.push(function(){a.lineTo(b,
c)})}(z,y)):(a.lineTo(H,I),function(b,c){var d=H-A*f,e=I+x*f,g=H-C*f,k=I+B*f;D.push(function(){a.quadTo(b,c,d,e)});D.push(function(){a.lineTo(g,k)})}(z,y)):(a.lineTo(H,I),function(b,c){D.push(function(){a.lineTo(b,c)})}(z,y));x=B;A=C}}u=f*C;v=-f*B;if(l&&!g)this.paintMarker(a,q.x,q.y,-x,-A,c,e,f,m,!1);else{a.lineTo(q.x-m*B+u/2,q.y-m*C+v/2);var K=q.x-m*B-u/2,L=q.y-m*C-v/2;g?(a.moveTo(K,L),D.splice(0,0,function(){a.moveTo(K,L)})):a.lineTo(K,L)}for(u=D.length-1;0<=u;u--)D[u]();g?(a.end(),a.stroke()):
(a.close(),a.fillAndStroke());a.setShadow(!1);a.setMiterLimit(4);p&&a.setLineJoin("flat");2<b.length&&(a.setMiterLimit(4),k&&!g&&(a.begin(),this.paintMarker(a,b[0].x,b[0].y,t,r,n,d,f,m,!0),a.stroke(),a.end()),l&&!g&&(a.begin(),this.paintMarker(a,q.x,q.y,-x,-A,c,e,f,m,!0),a.stroke(),a.end()))}};
mxArrowConnector.prototype.paintMarker=function(a,b,c,d,e,f,g,k,l,m){g=k/g;var n=k*e/2;k=-k*d/2;var p=(l+f)*d;f=(l+f)*e;m?a.moveTo(b-n+p,c-k+f):a.lineTo(b-n+p,c-k+f);a.lineTo(b-n/g+p,c-k/g+f);a.lineTo(b+l*d,c+l*e);a.lineTo(b+n/g+p,c+k/g+f);a.lineTo(b+n+p,c+k+f)};mxArrowConnector.prototype.isArrowRounded=function(){return this.isRounded};mxArrowConnector.prototype.getStartArrowWidth=function(){return mxConstants.ARROW_WIDTH};mxArrowConnector.prototype.getEndArrowWidth=function(){return mxConstants.ARROW_WIDTH};
mxArrowConnector.prototype.getEdgeWidth=function(){return mxConstants.ARROW_WIDTH/3};mxArrowConnector.prototype.isOpenEnded=function(){return!1};mxArrowConnector.prototype.isMarkerStart=function(){return mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE};mxArrowConnector.prototype.isMarkerEnd=function(){return mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE};
function mxText(a,b,c,d,e,f,g,k,l,m,n,p,q,r,t,u,x,y,A,z,v){mxShape.call(this);this.value=a;this.bounds=b;this.color=null!=e?e:"black";this.align=null!=c?c:mxConstants.ALIGN_CENTER;this.valign=null!=d?d:mxConstants.ALIGN_MIDDLE;this.family=null!=f?f:mxConstants.DEFAULT_FONTFAMILY;this.size=null!=g?g:mxConstants.DEFAULT_FONTSIZE;this.fontStyle=null!=k?k:mxConstants.DEFAULT_FONTSTYLE;this.spacing=parseInt(l||2);this.spacingTop=this.spacing+parseInt(m||0);this.spacingRight=this.spacing+parseInt(n||0);
this.spacingBottom=this.spacing+parseInt(p||0);this.spacingLeft=this.spacing+parseInt(q||0);this.horizontal=null!=r?r:!0;this.background=t;this.border=u;this.wrap=null!=x?x:!1;this.clipped=null!=y?y:!1;this.overflow=null!=A?A:"visible";this.labelPadding=null!=z?z:0;this.textDirection=v;this.rotation=0;this.updateMargin()}mxUtils.extend(mxText,mxShape);mxText.prototype.baseSpacingTop=0;mxText.prototype.baseSpacingBottom=0;mxText.prototype.baseSpacingLeft=0;mxText.prototype.baseSpacingRight=0;
function mxText(a,b,c,d,e,f,g,k,l,m,n,p,q,r,t,u,x,y,B,A,z){mxShape.call(this);this.value=a;this.bounds=b;this.color=null!=e?e:"black";this.align=null!=c?c:mxConstants.ALIGN_CENTER;this.valign=null!=d?d:mxConstants.ALIGN_MIDDLE;this.family=null!=f?f:mxConstants.DEFAULT_FONTFAMILY;this.size=null!=g?g:mxConstants.DEFAULT_FONTSIZE;this.fontStyle=null!=k?k:mxConstants.DEFAULT_FONTSTYLE;this.spacing=parseInt(l||2);this.spacingTop=this.spacing+parseInt(m||0);this.spacingRight=this.spacing+parseInt(n||0);
this.spacingBottom=this.spacing+parseInt(p||0);this.spacingLeft=this.spacing+parseInt(q||0);this.horizontal=null!=r?r:!0;this.background=t;this.border=u;this.wrap=null!=x?x:!1;this.clipped=null!=y?y:!1;this.overflow=null!=B?B:"visible";this.labelPadding=null!=A?A:0;this.textDirection=z;this.rotation=0;this.updateMargin()}mxUtils.extend(mxText,mxShape);mxText.prototype.baseSpacingTop=0;mxText.prototype.baseSpacingBottom=0;mxText.prototype.baseSpacingLeft=0;mxText.prototype.baseSpacingRight=0;
mxText.prototype.replaceLinefeeds=!0;mxText.prototype.verticalTextRotation=-90;mxText.prototype.ignoreClippedStringSize=!0;mxText.prototype.ignoreStringSize=!1;mxText.prototype.textWidthPadding=8!=document.documentMode||mxClient.IS_EM?3:4;mxText.prototype.lastValue=null;mxText.prototype.cacheEnabled=!0;mxText.prototype.isParseVml=function(){return!1};mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode||mxClient.IS_EM};mxText.prototype.getSvgScreenOffset=function(){return 0};
mxText.prototype.checkBounds=function(){return!isNaN(this.scale)&&isFinite(this.scale)&&0<this.scale&&null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)};
mxText.prototype.paint=function(a,b){var c=this.scale,d=this.bounds.x/c,e=this.bounds.y/c,f=this.bounds.width/c,c=this.bounds.height/c;this.updateTransform(a,d,e,f,c);this.configureCanvas(a,d,e,f,c);if(b)a.updateText(d,e,f,c,this.align,this.valign,this.wrap,this.overflow,this.clipped,this.getTextRotation(),this.node);else{var g=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,k=g||a instanceof mxVmlCanvas2D?"html":"",l=this.value;g||"html"!=k||(l=mxUtils.htmlEntities(l,!1));
@ -502,9 +502,9 @@ mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(t
mxText.prototype.getTextCss=function(){var a="display: inline-block; font-size: "+this.size+"px; font-family: "+this.family+"; color: "+this.color+"; line-height: "+(mxConstants.ABSOLUTE_LINE_HEIGHT?this.size*mxConstants.LINE_HEIGHT+"px":mxConstants.LINE_HEIGHT)+"; pointer-events: "+(this.pointerEvents?"all":"none")+"; ";(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight: bold; ");(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style: italic; ");
var b=[];(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&b.push("underline");(this.fontStyle&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&b.push("line-through");0<b.length&&(a+="text-decoration: "+b.join(" ")+"; ");return a};
mxText.prototype.redrawHtmlShape=function(){if(mxClient.IS_SVG)this.redrawHtmlShapeWithCss3();else{var a=this.node.style;a.whiteSpace="normal";a.overflow="";a.width="";a.height="";this.updateValue();this.updateFont(this.node);this.updateSize(this.node,null==this.state||null==this.state.view.textDiv);this.offsetHeight=this.offsetWidth=null;mxClient.IS_IE&&(null==document.documentMode||8>=document.documentMode)?this.updateHtmlFilter():this.updateHtmlTransform()}};
mxText.prototype.redrawHtmlShapeWithCss3=function(){var a=Math.max(0,Math.round(this.bounds.width/this.scale)),b=Math.max(0,Math.round(this.bounds.height/this.scale)),c="position: absolute; left: "+Math.round(this.bounds.x)+"px; top: "+Math.round(this.bounds.y)+"px; pointer-events: none; ",d=this.getTextCss()+(this.pointerEvents?"pointer-events: all; ":"");mxSvgCanvas2D.createCss(a,b,this.align,this.valign,this.wrap,this.overflow,this.clipped,null!=this.background?mxUtils.htmlEntities(this.background):
null,null!=this.border?mxUtils.htmlEntities(this.border):null,c,d,this.scale,mxUtils.bind(this,function(a,b,c,d,l,m){a=this.getTextRotation();a=(1!=this.scale?"scale("+this.scale+") ":"")+(0!=a?"rotate("+a+"deg) ":"")+(0!=this.margin.x||0!=this.margin.y?"translate("+100*this.margin.x+"%,"+100*this.margin.y+"%)":"");""!=a&&(a="transform-origin: 0 0; transform: "+a+"; ");""==m?(c+=d,d="display:inline-block; min-width: 100%; "+a):d+=a;100>this.opacity&&(l+="opacity: "+this.opacity/100+"; ");this.node.setAttribute("style",
c);c=mxUtils.isNode(this.value)?this.value.outerHTML:this.getHtmlValue();null==this.node.firstChild&&(this.node.innerHTML="<div><div>"+c+"</div></div>");this.node.firstChild.firstChild.setAttribute("style",l);this.node.firstChild.setAttribute("style",d)}))};
mxText.prototype.redrawHtmlShapeWithCss3=function(){var a=Math.max(0,Math.round(this.bounds.width/this.scale)),b=Math.max(0,Math.round(this.bounds.height/this.scale)),c="position: absolute; left: "+Math.round(this.bounds.x)+"px; top: "+Math.round(this.bounds.y)+"px; pointer-events: none; ",d=this.getTextCss();mxSvgCanvas2D.createCss(a+2,b,this.align,this.valign,this.wrap,this.overflow,this.clipped,null!=this.background?mxUtils.htmlEntities(this.background):null,null!=this.border?mxUtils.htmlEntities(this.border):
null,c,d,this.scale,mxUtils.bind(this,function(a,b,c,d,l,m){a=this.getTextRotation();a=(1!=this.scale?"scale("+this.scale+") ":"")+(0!=a?"rotate("+a+"deg) ":"")+(0!=this.margin.x||0!=this.margin.y?"translate("+100*this.margin.x+"%,"+100*this.margin.y+"%)":"");""!=a&&(a="transform-origin: 0 0; transform: "+a+"; ");""==m?(c+=d,d="display:inline-block; min-width: 100%; "+a):d+=a;100>this.opacity&&(l+="opacity: "+this.opacity/100+"; ");this.node.setAttribute("style",c);c=mxUtils.isNode(this.value)?this.value.outerHTML:
this.getHtmlValue();null==this.node.firstChild&&(this.node.innerHTML="<div><div>"+c+"</div></div>");this.node.firstChild.firstChild.setAttribute("style",l);this.node.firstChild.setAttribute("style",d)}))};
mxText.prototype.updateHtmlTransform=function(){var a=this.getTextRotation(),b=this.node.style,c=this.margin.x,d=this.margin.y;0!=a?(mxUtils.setPrefixedStyle(b,"transformOrigin",100*-c+"% "+100*-d+"%"),mxUtils.setPrefixedStyle(b,"transform","translate("+100*c+"%,"+100*d+"%) scale("+this.scale+") rotate("+a+"deg)")):(mxUtils.setPrefixedStyle(b,"transformOrigin","0% 0%"),mxUtils.setPrefixedStyle(b,"transform","scale("+this.scale+") translate("+100*c+"%,"+100*d+"%)"));b.left=Math.round(this.bounds.x-
Math.ceil(c*("fill"!=this.overflow&&"width"!=this.overflow?3:1)))+"px";b.top=Math.round(this.bounds.y-d*("fill"!=this.overflow?3:1))+"px";b.opacity=100>this.opacity?this.opacity/100:""};
mxText.prototype.updateInnerHtml=function(a){if(mxUtils.isNode(this.value))a.innerHTML=this.value.outerHTML;else{var b=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(b=mxUtils.htmlEntities(b,!1));b=mxUtils.replaceTrailingNewlines(b,"<div>&nbsp;</div>");b=this.replaceLinefeeds?b.replace(/\n/g,"<br/>"):b;a.innerHTML='<div style="display:inline-block;_display:inline;">'+b+"</div>"}};
@ -681,9 +681,9 @@ mxMedianHybridCrossingReduction.prototype.execute=function(a){a=this.layout.getM
k}else for(c++,e=0;e<this.nestedBestRanks.length;e++)for(f=a.ranks[e],g=0;g<f.length;g++)k=f[g],k.setGeneralPurposeVariable(e,g);if(0==d)break}c=[];d=[];for(b=0;b<a.maxRank+1;b++)d[b]=[],c[b]=d[b];for(b=0;b<this.nestedBestRanks.length;b++)for(e=0;e<this.nestedBestRanks[b].length;e++)d[b].push(this.nestedBestRanks[b][e]);a.ranks=c};mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(a){for(var b=a.ranks.length,c=0,d=1;d<b;d++)c+=this.calculateRankCrossing(d,a);return c};
mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(a,b){for(var c=0,d=b.ranks[a],e=b.ranks[a-1],f=[],g=0;g<d.length;g++){for(var k=d[g],l=k.getGeneralPurposeVariable(a),k=k.getPreviousLayerConnectedCells(a),m=[],n=0;n<k.length;n++){var p=k[n].getGeneralPurposeVariable(a-1);m.push(p)}m.sort(function(a,b){return a-b});f[l]=m}d=[];for(g=0;g<f.length;g++)d=d.concat(f[g]);for(f=1;f<e.length;)f<<=1;l=2*f-1;--f;e=[];for(g=0;g<l;++g)e[g]=0;for(g=0;g<d.length;g++)for(l=d[g]+f,++e[l];0<
l;)l%2&&(c+=e[l+1]),l=l-1>>1,++e[l];return c};
mxMedianHybridCrossingReduction.prototype.transpose=function(a,b){for(var c=!0,d=0;c&&10>d++;)for(var e=1==a%2&&1==d%2,c=!1,f=0;f<b.ranks.length;f++){for(var g=b.ranks[f],k=[],l=0;l<g.length;l++){var m=g[l],n=m.getGeneralPurposeVariable(f);0>n&&(n=l);k[n]=m}for(var p=null,q=null,r,t,u=null,x=null,y,A=null,l=0;l<g.length-1;l++){if(0==l){y=k[l];m=y.getNextLayerConnectedCells(f);n=y.getPreviousLayerConnectedCells(f);r=[];t=[];for(var z=0;z<m.length;z++)r[z]=m[z].getGeneralPurposeVariable(f+1);for(z=
0;z<n.length;z++)t[z]=n[z].getGeneralPurposeVariable(f-1)}else m=p,n=q,r=u,t=x,y=A;A=k[l+1];p=A.getNextLayerConnectedCells(f);q=A.getPreviousLayerConnectedCells(f);u=[];x=[];for(z=0;z<p.length;z++)u[z]=p[z].getGeneralPurposeVariable(f+1);for(z=0;z<q.length;z++)x[z]=q[z].getGeneralPurposeVariable(f-1);for(var v=0,B=0,z=0;z<r.length;z++)for(var C=0;C<u.length;C++)r[z]>u[C]&&v++,r[z]<u[C]&&B++;for(z=0;z<t.length;z++)for(C=0;C<x.length;C++)t[z]>x[C]&&v++,t[z]<x[C]&&B++;if(B<v||B==v&&e)p=y.getGeneralPurposeVariable(f),
y.setGeneralPurposeVariable(f,A.getGeneralPurposeVariable(f)),A.setGeneralPurposeVariable(f,p),p=m,q=n,u=r,x=t,A=y,e||(c=!0)}}};mxMedianHybridCrossingReduction.prototype.weightedMedian=function(a,b){var c=0==a%2;if(c)for(var d=b.maxRank-1;0<=d;d--)this.medianRank(d,c);else for(d=1;d<b.maxRank;d++)this.medianRank(d,c)};
mxMedianHybridCrossingReduction.prototype.transpose=function(a,b){for(var c=!0,d=0;c&&10>d++;)for(var e=1==a%2&&1==d%2,c=!1,f=0;f<b.ranks.length;f++){for(var g=b.ranks[f],k=[],l=0;l<g.length;l++){var m=g[l],n=m.getGeneralPurposeVariable(f);0>n&&(n=l);k[n]=m}for(var p=null,q=null,r,t,u=null,x=null,y,B=null,l=0;l<g.length-1;l++){if(0==l){y=k[l];m=y.getNextLayerConnectedCells(f);n=y.getPreviousLayerConnectedCells(f);r=[];t=[];for(var A=0;A<m.length;A++)r[A]=m[A].getGeneralPurposeVariable(f+1);for(A=
0;A<n.length;A++)t[A]=n[A].getGeneralPurposeVariable(f-1)}else m=p,n=q,r=u,t=x,y=B;B=k[l+1];p=B.getNextLayerConnectedCells(f);q=B.getPreviousLayerConnectedCells(f);u=[];x=[];for(A=0;A<p.length;A++)u[A]=p[A].getGeneralPurposeVariable(f+1);for(A=0;A<q.length;A++)x[A]=q[A].getGeneralPurposeVariable(f-1);for(var z=0,C=0,A=0;A<r.length;A++)for(var v=0;v<u.length;v++)r[A]>u[v]&&z++,r[A]<u[v]&&C++;for(A=0;A<t.length;A++)for(v=0;v<x.length;v++)t[A]>x[v]&&z++,t[A]<x[v]&&C++;if(C<z||C==z&&e)p=y.getGeneralPurposeVariable(f),
y.setGeneralPurposeVariable(f,B.getGeneralPurposeVariable(f)),B.setGeneralPurposeVariable(f,p),p=m,q=n,u=r,x=t,B=y,e||(c=!0)}}};mxMedianHybridCrossingReduction.prototype.weightedMedian=function(a,b){var c=0==a%2;if(c)for(var d=b.maxRank-1;0<=d;d--)this.medianRank(d,c);else for(d=1;d<b.maxRank;d++)this.medianRank(d,c)};
mxMedianHybridCrossingReduction.prototype.medianRank=function(a,b){for(var c=this.nestedBestRanks[a].length,d=[],e=[],f=0;f<c;f++){var g=this.nestedBestRanks[a][f],k=new MedianCellSorter;k.cell=g;var l;l=b?g.getNextLayerConnectedCells(a):g.getPreviousLayerConnectedCells(a);var m;m=b?a+1:a-1;null!=l&&0!=l.length?(k.medianValue=this.medianValue(l,m),d.push(k)):e[g.getGeneralPurposeVariable(a)]=!0}d.sort(MedianCellSorter.prototype.compare);for(f=0;f<c;f++)null==e[f]&&(g=d.shift().cell,g.setGeneralPurposeVariable(a,
f))};mxMedianHybridCrossingReduction.prototype.medianValue=function(a,b){for(var c=[],d=0,e=0;e<a.length;e++){var f=a[e];c[d++]=f.getGeneralPurposeVariable(b)}c.sort(function(a,b){return a-b});if(1==d%2)return c[Math.floor(d/2)];if(2==d)return(c[0]+c[1])/2;e=d/2;f=c[e-1]-c[0];d=c[d-1]-c[e];return(c[e-1]*d+c[e]*f)/(f+d)};function MedianCellSorter(){}MedianCellSorter.prototype.medianValue=0;MedianCellSorter.prototype.cell=!1;
MedianCellSorter.prototype.compare=function(a,b){return null!=a&&null!=b?b.medianValue>a.medianValue?-1:b.medianValue<a.medianValue?1:0:0};function mxMinimumCycleRemover(a){this.layout=a}mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage;mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover;mxMinimumCycleRemover.prototype.layout=null;
@ -718,7 +718,7 @@ t;if(r.isVertex()){t=0==k?e.connectsAsSource:e.connectsAsTarget;for(var u=0;u<t.
p+=this.prefVertEdgeOff:m>f/2&&(p-=this.prefVertEdgeOff),t=0;t<q;t++)r[4*t+2*k]=n,n+=l,r[4*t+2*k+1]=p}f=e.getNextLayerConnectedCells(b);g=b+1}}};
mxCoordinateAssignment.prototype.setEdgePosition=function(a){var b=0;if(101207!=a.temp[0]){var c=a.maxRank,d=a.minRank;c==d&&(c=a.source.maxRank,d=a.target.minRank);for(var e=0,f=this.jettyPositions[a.ids[0]],g=a.isReversed?a.target.cell:a.source.cell,k=this.layout.graph,l=this.orientation==mxConstants.DIRECTION_EAST||this.orientation==mxConstants.DIRECTION_SOUTH,m=0;m<a.edges.length;m++){var n=a.edges[m],p=this.layout.getVisibleTerminal(n,!0),q=[],r=a.isReversed;p!=g&&(r=!r);if(null!=f){var t=r?
2:0,u=r?l?this.rankBottomY[d]:this.rankTopY[d]:l?this.rankTopY[c]:this.rankBottomY[c],x=f[4*e+1+t];r!=l&&(x=-x);var u=u+x,t=f[4*e+t],y=k.model.getTerminal(n,!0);this.layout.isPort(y)&&k.model.getParent(y)==p&&(t=k.view.getState(y),t=null!=t?t.x:p.geometry.x+a.source.width*y.geometry.x);this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(q.push(new mxPoint(t,u)),this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&q.push(new mxPoint(t,u+x))):(q.push(new mxPoint(u,
t)),this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&q.push(new mxPoint(u+x,t)))}t=a.x.length-1;u=x=-1;p=a.maxRank-1;r&&(t=0,x=a.x.length,u=1,p=a.minRank+1);for(;a.maxRank!=a.minRank&&t!=x;t+=u){var y=a.x[t]+b,A=(this.rankTopY[p]+this.rankBottomY[p+1])/2,z=(this.rankTopY[p-1]+this.rankBottomY[p])/2;if(r)var v=A,A=z,z=v;this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(q.push(new mxPoint(y,A)),q.push(new mxPoint(y,z))):(q.push(new mxPoint(A,y)),q.push(new mxPoint(z,
t)),this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&q.push(new mxPoint(u+x,t)))}t=a.x.length-1;u=x=-1;p=a.maxRank-1;r&&(t=0,x=a.x.length,u=1,p=a.minRank+1);for(;a.maxRank!=a.minRank&&t!=x;t+=u){var y=a.x[t]+b,B=(this.rankTopY[p]+this.rankBottomY[p+1])/2,A=(this.rankTopY[p-1]+this.rankBottomY[p])/2;if(r)var z=B,B=A,A=z;this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(q.push(new mxPoint(y,B)),q.push(new mxPoint(y,A))):(q.push(new mxPoint(B,y)),q.push(new mxPoint(A,
y)));this.limitX=Math.max(this.limitX,y);p+=u}null!=f&&(t=r?2:0,u=r?l?this.rankTopY[c]:this.rankBottomY[c]:l?this.rankBottomY[d]:this.rankTopY[d],x=f[4*e+3-t],r!=l&&(x=-x),u-=x,t=f[4*e+2-t],r=k.model.getTerminal(n,!1),p=this.layout.getVisibleTerminal(n,!1),this.layout.isPort(r)&&k.model.getParent(r)==p&&(t=k.view.getState(r),t=null!=t?t.x:p.geometry.x+a.target.width*r.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&
q.push(new mxPoint(t,u-x)),q.push(new mxPoint(t,u))):(this.layout.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&q.push(new mxPoint(u-x,t)),q.push(new mxPoint(u,t))));a.isReversed&&this.processReversedEdge(a,n);this.layout.setEdgePoints(n,q);b=0==b?this.parallelEdgeSpacing:0<b?-b:-b+this.parallelEdgeSpacing;e++}a.temp[0]=101207}};
mxCoordinateAssignment.prototype.setVertexLocation=function(a){var b=a.cell,c=a.x[0]-a.width/2,d=a.y[0]-a.height/2;this.rankTopY[a.minRank]=Math.min(this.rankTopY[a.minRank],d);this.rankBottomY[a.minRank]=Math.max(this.rankBottomY[a.minRank],d+a.height);this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(b,c,d):this.layout.setVertexLocation(b,d,c);this.limitX=Math.max(this.limitX,c+a.width)};
@ -842,10 +842,10 @@ mxPrintPreview.prototype.getDoctype=function(){var a="";5==document.documentMode
mxPrintPreview.prototype.open=function(a,b,c,d){var e=this.graph.cellRenderer.initializeOverlay,f=null;try{this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(a,b){b.init(a.view.getDrawPane())});this.printControls&&(this.graph.cellRenderer.initControl=function(a,b,c,d){b.dialect=a.view.graph.dialect;b.init(a.view.getDrawPane())});this.wnd=null!=b?b:this.wnd;var g=!1;null==this.wnd&&(g=!0,this.wnd=window.open());var k=this.wnd.document;if(g){var l=this.getDoctype();null!=l&&0<l.length&&
k.writeln(l);mxClient.IS_VML?k.writeln('<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">'):("CSS1Compat"===document.compatMode&&k.writeln("<!DOCTYPE html>"),k.writeln("<html>"));k.writeln("<head>");this.writeHead(k,a);k.writeln("</head>");k.writeln('<body class="mxPage">')}var m=this.graph.getGraphBounds().clone(),n=this.graph.getView().getScale(),p=n/this.scale,q=this.graph.getView().getTranslate();this.autoOrigin||(this.x0-=q.x*this.scale,this.y0-=
q.y*this.scale,m.width+=m.x,m.height+=m.y,m.x=0,this.border=m.y=0);var r=this.pageFormat.width-2*this.border,t=this.pageFormat.height-2*this.border;this.pageFormat.height+=this.marginTop+this.marginBottom;m.width/=p;m.height/=p;var u=Math.max(1,Math.ceil((m.width+this.x0)/r)),x=Math.max(1,Math.ceil((m.height+this.y0)/t));this.pageCount=u*x;var y=mxUtils.bind(this,function(){if(this.pageSelector&&(1<x||1<u)){var a=this.createPageSelector(x,u);k.body.appendChild(a);if(mxClient.IS_IE&&null==k.documentMode||
5==k.documentMode||8==k.documentMode||7==k.documentMode){a.style.position="absolute";var b=function(){a.style.top=(k.body.scrollTop||k.documentElement.scrollTop)+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(a){b()});mxEvent.addListener(this.wnd,"resize",function(a){b()})}}}),A=mxUtils.bind(this,function(a,b){null!=this.borderColor&&(a.style.borderColor=this.borderColor,a.style.borderStyle="solid",a.style.borderWidth="1px");a.style.background=this.backgroundColor;if(c||b)a.style.pageBreakAfter=
"always";if(g&&(mxClient.IS_IE||11<=document.documentMode||mxClient.IS_EDGE))k.writeln(a.outerHTML),a.parentNode.removeChild(a);else if(mxClient.IS_IE||11<=document.documentMode||mxClient.IS_EDGE){var d=k.createElement("div");d.innerHTML=a.outerHTML;d=d.getElementsByTagName("div")[0];k.body.appendChild(d);a.parentNode.removeChild(a)}else a.parentNode.removeChild(a),k.body.appendChild(a);(c||b)&&this.addPageBreak(k)}),z=this.getCoverPages(this.pageFormat.width,this.pageFormat.height);if(null!=z)for(var v=
0;v<z.length;v++)A(z[v],!0);for(var B=this.getAppendices(this.pageFormat.width,this.pageFormat.height),v=0;v<x;v++){var C=v*t/this.scale-this.y0/this.scale+(m.y-q.y*n)/n;for(a=0;a<u;a++){if(null==this.wnd)return null;var E=a*r/this.scale-this.x0/this.scale+(m.x-q.x*n)/n,F=v*u+a+1,J=new mxRectangle(E,C,r,t),f=this.renderPage(this.pageFormat.width,this.pageFormat.height,0,0,mxUtils.bind(this,function(a){this.addGraphFragment(-E,-C,this.scale,F,a,J);this.printBackgroundImage&&this.insertBackgroundImage(a,
-E,-C)}),F);f.setAttribute("id","mxPage-"+F);A(f,null!=B||v<x-1||a<u-1)}}if(null!=B)for(v=0;v<B.length;v++)A(B[v],v<B.length-1);g&&!d&&(this.closeDocument(),y());this.wnd.focus()}catch(D){null!=f&&null!=f.parentNode&&f.parentNode.removeChild(f)}finally{this.graph.cellRenderer.initializeOverlay=e}return this.wnd};mxPrintPreview.prototype.addPageBreak=function(a){var b=a.createElement("hr");b.className="mxPageBreak";a.body.appendChild(b)};
5==k.documentMode||8==k.documentMode||7==k.documentMode){a.style.position="absolute";var b=function(){a.style.top=(k.body.scrollTop||k.documentElement.scrollTop)+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(a){b()});mxEvent.addListener(this.wnd,"resize",function(a){b()})}}}),B=mxUtils.bind(this,function(a,b){null!=this.borderColor&&(a.style.borderColor=this.borderColor,a.style.borderStyle="solid",a.style.borderWidth="1px");a.style.background=this.backgroundColor;if(c||b)a.style.pageBreakAfter=
"always";if(g&&(mxClient.IS_IE||11<=document.documentMode||mxClient.IS_EDGE))k.writeln(a.outerHTML),a.parentNode.removeChild(a);else if(mxClient.IS_IE||11<=document.documentMode||mxClient.IS_EDGE){var d=k.createElement("div");d.innerHTML=a.outerHTML;d=d.getElementsByTagName("div")[0];k.body.appendChild(d);a.parentNode.removeChild(a)}else a.parentNode.removeChild(a),k.body.appendChild(a);(c||b)&&this.addPageBreak(k)}),A=this.getCoverPages(this.pageFormat.width,this.pageFormat.height);if(null!=A)for(var z=
0;z<A.length;z++)B(A[z],!0);for(var C=this.getAppendices(this.pageFormat.width,this.pageFormat.height),z=0;z<x;z++){var v=z*t/this.scale-this.y0/this.scale+(m.y-q.y*n)/n;for(a=0;a<u;a++){if(null==this.wnd)return null;var D=a*r/this.scale-this.x0/this.scale+(m.x-q.x*n)/n,F=z*u+a+1,J=new mxRectangle(D,v,r,t),f=this.renderPage(this.pageFormat.width,this.pageFormat.height,0,0,mxUtils.bind(this,function(a){this.addGraphFragment(-D,-v,this.scale,F,a,J);this.printBackgroundImage&&this.insertBackgroundImage(a,
-D,-v)}),F);f.setAttribute("id","mxPage-"+F);B(f,null!=C||z<x-1||a<u-1)}}if(null!=C)for(z=0;z<C.length;z++)B(C[z],z<C.length-1);g&&!d&&(this.closeDocument(),y());this.wnd.focus()}catch(E){null!=f&&null!=f.parentNode&&f.parentNode.removeChild(f)}finally{this.graph.cellRenderer.initializeOverlay=e}return this.wnd};mxPrintPreview.prototype.addPageBreak=function(a){var b=a.createElement("hr");b.className="mxPageBreak";a.body.appendChild(b)};
mxPrintPreview.prototype.closeDocument=function(){try{if(null!=this.wnd&&null!=this.wnd.document){var a=this.wnd.document;this.writePostfix(a);a.writeln("</body>");a.writeln("</html>");a.close();mxEvent.release(a.body)}}catch(b){}};
mxPrintPreview.prototype.writeHead=function(a,b){null!=this.title&&a.writeln("<title>"+this.title+"</title>");mxClient.IS_VML&&a.writeln('<style type="text/css">v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}</style>');mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a);a.writeln('<style type="text/css">');a.writeln("@media print {");a.writeln(" * { -webkit-print-color-adjust: exact; }");a.writeln(" table.mxPageSelector { display: none; }");a.writeln(" hr.mxPageBreak { display: none; }");
a.writeln("}");a.writeln("@media screen {");a.writeln(" table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }");a.writeln(" table.mxPageSelector td { border: solid 1px gray; padding:4px; }");a.writeln(" body.mxPage { background: gray; }");a.writeln("}");null!=b&&a.writeln(b);a.writeln("</style>")};mxPrintPreview.prototype.writePostfix=function(a){};
@ -857,8 +857,8 @@ b-2*this.border+"px",l.style.overflow="hidden",!mxClient.IS_IE||null!=f.document
mxPrintPreview.prototype.getRoot=function(){var a=this.graph.view.currentRoot;null==a&&(a=this.graph.getModel().getRoot());return a};
mxPrintPreview.prototype.addGraphFragment=function(a,b,c,d,e,f){var g=this.graph.getView();d=this.graph.container;this.graph.container=e;var k=g.getCanvas(),l=g.getBackgroundPane(),m=g.getDrawPane(),n=g.getOverlayPane(),p=c;if(this.graph.dialect==mxConstants.DIALECT_SVG){if(g.createSvg(),!mxClient.NO_FO){var q=g.getDrawPane().parentNode;q.getAttribute("transform");q.setAttribute("transformOrigin","0 0");q.setAttribute("transform","scale("+c+","+c+")translate("+a+","+b+")");c=1;b=a=0}}else this.graph.dialect==
mxConstants.DIALECT_VML?g.createVml():g.createHtml();q=g.isEventsEnabled();g.setEventsEnabled(!1);var r=this.graph.isEnabled();this.graph.setEnabled(!1);var t=g.getTranslate();g.translate=new mxPoint(a,b);var u=this.graph.cellRenderer.redraw,x=g.states;a=g.scale;if(this.clipping){var y=new mxRectangle((f.x+t.x)*a,(f.y+t.y)*a,f.width*a/p,f.height*a/p);this.graph.cellRenderer.redraw=function(a,b,c){if(null!=a){var d=x.get(a.cell);if(null!=d&&(d=g.getBoundingBox(d,!1),null!=d&&!mxUtils.intersects(y,
d)))return}u.apply(this,arguments)}}a=null;try{var A=[this.getRoot()];a=new mxTemporaryCellStates(g,c,A,null,mxUtils.bind(this,function(a){return this.getLinkForCellState(a)}))}finally{if(mxClient.IS_IE)g.overlayPane.innerHTML="",g.canvas.style.overflow="hidden",g.canvas.style.position="relative",g.canvas.style.top=this.marginTop+"px",g.canvas.style.width=f.width+"px",g.canvas.style.height=f.height+"px";else for(c=e.firstChild;null!=c;)A=c.nextSibling,b=c.nodeName.toLowerCase(),"svg"==b?(c.style.overflow=
"hidden",c.style.position="relative",c.style.top=this.marginTop+"px",c.setAttribute("width",f.width),c.setAttribute("height",f.height),c.style.width="",c.style.height=""):"default"!=c.style.cursor&&"div"!=b&&c.parentNode.removeChild(c),c=A;this.printBackgroundImage&&(e=e.getElementsByTagName("svg"),0<e.length&&(e[0].style.position="absolute"));g.overlayPane.parentNode.removeChild(g.overlayPane);this.graph.setEnabled(r);this.graph.container=d;this.graph.cellRenderer.redraw=u;g.canvas=k;g.backgroundPane=
d)))return}u.apply(this,arguments)}}a=null;try{var B=[this.getRoot()];a=new mxTemporaryCellStates(g,c,B,null,mxUtils.bind(this,function(a){return this.getLinkForCellState(a)}))}finally{if(mxClient.IS_IE)g.overlayPane.innerHTML="",g.canvas.style.overflow="hidden",g.canvas.style.position="relative",g.canvas.style.top=this.marginTop+"px",g.canvas.style.width=f.width+"px",g.canvas.style.height=f.height+"px";else for(c=e.firstChild;null!=c;)B=c.nextSibling,b=c.nodeName.toLowerCase(),"svg"==b?(c.style.overflow=
"hidden",c.style.position="relative",c.style.top=this.marginTop+"px",c.setAttribute("width",f.width),c.setAttribute("height",f.height),c.style.width="",c.style.height=""):"default"!=c.style.cursor&&"div"!=b&&c.parentNode.removeChild(c),c=B;this.printBackgroundImage&&(e=e.getElementsByTagName("svg"),0<e.length&&(e[0].style.position="absolute"));g.overlayPane.parentNode.removeChild(g.overlayPane);this.graph.setEnabled(r);this.graph.container=d;this.graph.cellRenderer.redraw=u;g.canvas=k;g.backgroundPane=
l;g.drawPane=m;g.overlayPane=n;g.translate=t;a.destroy();g.setEventsEnabled(q)}};mxPrintPreview.prototype.getLinkForCellState=function(a){return this.graph.getLinkForCell(a.cell)};
mxPrintPreview.prototype.insertBackgroundImage=function(a,b,c){var d=this.graph.backgroundImage;if(null!=d){var e=document.createElement("img");e.style.position="absolute";e.style.marginLeft=Math.round(b*this.scale)+"px";e.style.marginTop=Math.round(c*this.scale)+"px";e.setAttribute("width",Math.round(this.scale*d.width));e.setAttribute("height",Math.round(this.scale*d.height));e.src=d.src;a.insertBefore(e,a.firstChild)}};mxPrintPreview.prototype.getCoverPages=function(){return null};
mxPrintPreview.prototype.getAppendices=function(){return null};mxPrintPreview.prototype.print=function(a){a=this.open(a);null!=a&&a.print()};mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)};function mxStylesheet(){this.styles={};this.putDefaultVertexStyle(this.createDefaultVertexStyle());this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}
@ -977,31 +977,32 @@ f),g=f.y<k||f.y>n,k=f.x<l||f.x>m;else l=Math.max(b.x,c.x),m=Math.min(b.x+b.width
b.x=k.x,b.y=k.y);null!=g&&(c=new mxCellState,c.x=g.x,c.y=g.y);null!=b&&null!=c&&(a=Math.max(b.x,c.x),k=Math.min(b.x+b.width,c.x+c.width),a=null!=d?d.x:Math.round(k+(a-k)/2),k=f.getRoutingCenterY(b),f=f.getRoutingCenterY(c),null!=d&&(d.y>=b.y&&d.y<=b.y+b.height&&(k=d.y),d.y>=c.y&&d.y<=c.y+c.height&&(f=d.y)),mxUtils.contains(c,a,k)||mxUtils.contains(b,a,k)||e.push(new mxPoint(a,k)),mxUtils.contains(c,a,f)||mxUtils.contains(b,a,f)||e.push(new mxPoint(a,f)),1==e.length&&(null!=d?mxUtils.contains(c,a,
d.y)||mxUtils.contains(b,a,d.y)||e.push(new mxPoint(a,d.y)):(f=Math.max(b.y,c.y),e.push(new mxPoint(a,f+(Math.min(b.y+b.height,c.y+c.height)-f)/2)))))},TopToBottom:function(a,b,c,d,e){var f=a.view;d=null!=d&&0<d.length?d[0]:null;var g=a.absolutePoints,k=g[0],g=g[g.length-1];null!=d&&(d=f.transformControlPoint(a,d));null!=k&&(b=new mxCellState,b.x=k.x,b.y=k.y);null!=g&&(c=new mxCellState,c.x=g.x,c.y=g.y);null!=b&&null!=c&&(k=Math.max(b.y,c.y),g=Math.min(b.y+b.height,c.y+c.height),a=f.getRoutingCenterX(b),
null!=d&&d.x>=b.x&&d.x<=b.x+b.width&&(a=d.x),k=null!=d?d.y:Math.round(g+(k-g)/2),mxUtils.contains(c,a,k)||mxUtils.contains(b,a,k)||e.push(new mxPoint(a,k)),a=null!=d&&d.x>=c.x&&d.x<=c.x+c.width?d.x:f.getRoutingCenterX(c),mxUtils.contains(c,a,k)||mxUtils.contains(b,a,k)||e.push(new mxPoint(a,k)),1==e.length&&(null!=d&&1==e.length?mxUtils.contains(c,d.x,k)||mxUtils.contains(b,d.x,k)||e.push(new mxPoint(d.x,k)):(f=Math.max(b.x,c.x),e.push(new mxPoint(f+(Math.min(b.x+b.width,c.x+c.width)-f)/2,k)))))},
SegmentConnector:function(a,b,c,d,e){function f(a){if(null==l||Math.abs(l.x-a.x)>=k||Math.abs(l.y-a.y)>=k)e.push(a),l=a;return l}var g=a.absolutePoints,k=Math.max(1,a.view.scale),l=0<e.length?e[0]:null,m=!0,n=null,p=g[0];null==p&&null!=b?p=new mxPoint(a.view.getRoutingCenterX(b),a.view.getRoutingCenterY(b)):null!=p&&(p=p.clone());p.x=Math.round(p.x);p.y=Math.round(p.y);var q=g.length-1;if(null!=d&&0<d.length){for(var n=[],r=0;r<d.length;r++){var t=a.view.transformControlPoint(a,d[r]);null!=t&&(t.x=
Math.round(t.x),t.y=Math.round(t.y),n.push(t))}if(0==n.length)return;d=n;null!=p&&null!=d[0]&&(Math.abs(d[0].x-p.x)<k&&(d[0].x=p.x),Math.abs(d[0].y-p.y)<k&&(d[0].y=p.y));t=g[q];null!=t&&null!=d[d.length-1]&&(Math.abs(d[d.length-1].x-t.x)<k&&(d[d.length-1].x=t.x),Math.abs(d[d.length-1].y-t.y)<k&&(d[d.length-1].y=t.y));var n=d[0],u=b,x=g[0],y=!1,A=!1,y=n;null!=x&&(x.x=Math.round(x.x),x.y=Math.round(x.y),u=null);for(r=0;2>r;r++){var z=null!=x&&x.x==y.x,v=null!=x&&x.y==y.y,B=null!=u&&y.y>=u.y&&y.y<=u.y+
u.height,u=null!=u&&y.x>=u.x&&y.x<=u.x+u.width,y=v||null==x&&B,A=z||null==x&&u;if(0!=r||!(y&&A||z&&v)){if(null!=x&&!v&&!z&&(B||u)){m=B?!1:!0;break}if(A||y){m=y;1==r&&(m=0==d.length%2?y:A);break}}u=c;x=g[q];null!=x&&(x.x=Math.round(x.x),x.y=Math.round(x.y),u=null);y=d[d.length-1];z&&v&&(d=d.slice(1))}m&&(null!=g[0]&&g[0].y!=n.y||null==g[0]&&null!=b&&(n.y<b.y||n.y>b.y+b.height))?f(new mxPoint(p.x,n.y)):!m&&(null!=g[0]&&g[0].x!=n.x||null==g[0]&&null!=b&&(n.x<b.x||n.x>b.x+b.width))&&f(new mxPoint(n.x,
p.y));m?p.y=n.y:p.x=n.x;for(r=0;r<d.length;r++)m=!m,n=d[r],m?p.y=n.y:p.x=n.x,f(p.clone())}else n=p,m=!0;p=g[q];null==p&&null!=c&&(p=new mxPoint(a.view.getRoutingCenterX(c),a.view.getRoutingCenterY(c)));null!=p&&(p.x=Math.round(p.x),p.y=Math.round(p.y),null!=n&&(m&&(null!=g[q]&&g[q].y!=n.y||null==g[q]&&null!=c&&(n.y<c.y||n.y>c.y+c.height))?f(new mxPoint(p.x,n.y)):!m&&(null!=g[q]&&g[q].x!=n.x||null==g[q]&&null!=c&&(n.x<c.x||n.x>c.x+c.width))&&f(new mxPoint(n.x,p.y))));if(null==g[0]&&null!=b)for(;1<
e.length&&null!=e[1]&&mxUtils.contains(b,e[1].x,e[1].y);)e.splice(1,1);if(null==g[q]&&null!=c)for(;1<e.length&&null!=e[e.length-1]&&mxUtils.contains(c,e[e.length-1].x,e[e.length-1].y);)e.splice(e.length-1,1);null!=t&&null!=e[e.length-1]&&Math.abs(t.x-e[e.length-1].x)<=k&&Math.abs(t.y-e[e.length-1].y)<=k&&(e.splice(e.length-1,1),null!=e[e.length-1]&&(Math.abs(e[e.length-1].x-t.x)<k&&(e[e.length-1].x=t.x),Math.abs(e[e.length-1].y-t.y)<k&&(e[e.length-1].y=t.y)))},orthBuffer:10,orthPointsFallback:!0,
dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,
2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,
VERTEX_MASK:3072,getJettySize:function(a,b,c,d,e){b=mxUtils.getValue(a.style,e?mxConstants.STYLE_SOURCE_JETTY_SIZE:mxConstants.STYLE_TARGET_JETTY_SIZE,mxUtils.getValue(a.style,mxConstants.STYLE_JETTY_SIZE,mxEdgeStyle.orthBuffer));"auto"==b&&(mxUtils.getValue(a.style,e?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE?(a=mxUtils.getNumber(a.style,e?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),b=Math.max(2,Math.ceil((a+
mxEdgeStyle.orthBuffer)/mxEdgeStyle.orthBuffer))*mxEdgeStyle.orthBuffer):b=2*mxEdgeStyle.orthBuffer);return b},OrthConnector:function(a,b,c,d,e){var f=a.view.graph,g=null==b?!1:f.getModel().isEdge(b.cell),k=null==c?!1:f.getModel().isEdge(c.cell),f=a.absolutePoints,l=f[0],m=f[f.length-1],n=null!=b?b.x:l.x,p=null!=b?b.y:l.y,q=null!=b?b.width:0,r=null!=b?b.height:0,t=null!=c?c.x:m.x,u=null!=c?c.y:m.y,x=null!=c?c.width:0,y=null!=c?c.height:0,f=a.view.scale*mxEdgeStyle.getJettySize(a,b,c,d,!0),A=a.view.scale*
mxEdgeStyle.getJettySize(a,b,c,d,!1);null!=b&&c==b&&(f=A=Math.max(f,A));var z=A+f,v=!1;if(null!=l&&null!=m)var v=m.x-l.x,B=m.y-l.y,v=v*v+B*B<z*z;if(v||mxEdgeStyle.orthPointsFallback&&null!=d&&0<d.length||g||k)mxEdgeStyle.SegmentConnector(a,b,c,d,e);else{d=[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL];null!=b&&(d[0]=mxUtils.getPortConstraints(b,a,!0,mxConstants.DIRECTION_MASK_ALL),v=mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0),0!=v&&(v=mxUtils.getBoundingBox(new mxRectangle(n,
p,q,r),v),n=v.x,p=v.y,q=v.width,r=v.height));null!=c&&(d[1]=mxUtils.getPortConstraints(c,a,!1,mxConstants.DIRECTION_MASK_ALL),v=mxUtils.getValue(c.style,mxConstants.STYLE_ROTATION,0),0!=v&&(v=mxUtils.getBoundingBox(new mxRectangle(t,u,x,y),v),t=v.x,u=v.y,x=v.width,y=v.height));n=Math.round(10*n)/10;p=Math.round(10*p)/10;q=Math.round(10*q)/10;r=Math.round(10*r)/10;t=Math.round(10*t)/10;u=Math.round(10*u)/10;x=Math.round(10*x)/10;y=Math.round(10*y)/10;a=[0,0];n=[[n,p,q,r],[t,u,x,y]];A=[f,A];for(v=0;2>
v;v++)mxEdgeStyle.limits[v][1]=n[v][0]-A[v],mxEdgeStyle.limits[v][2]=n[v][1]-A[v],mxEdgeStyle.limits[v][4]=n[v][0]+n[v][2]+A[v],mxEdgeStyle.limits[v][8]=n[v][1]+n[v][3]+A[v];A=n[0][1]+n[0][3]/2;p=n[1][1]+n[1][3]/2;v=n[0][0]+n[0][2]/2-(n[1][0]+n[1][2]/2);B=A-p;A=0;0>v?A=0>B?2:1:0>=B&&(A=3,0==v&&(A=2));p=null;null!=b&&(p=l);b=[[.5,.5],[.5,.5]];for(v=0;2>v;v++)null!=p&&(b[v][0]=(p.x-n[v][0])/n[v][2],1>=Math.abs(p.x-n[v][0])?a[v]=mxConstants.DIRECTION_MASK_WEST:1>=Math.abs(p.x-n[v][0]-n[v][2])&&(a[v]=
mxConstants.DIRECTION_MASK_EAST),b[v][1]=(p.y-n[v][1])/n[v][3],1>=Math.abs(p.y-n[v][1])?a[v]=mxConstants.DIRECTION_MASK_NORTH:1>=Math.abs(p.y-n[v][1]-n[v][3])&&(a[v]=mxConstants.DIRECTION_MASK_SOUTH)),p=null,null!=c&&(p=m);v=n[0][1]-(n[1][1]+n[1][3]);m=n[0][0]-(n[1][0]+n[1][2]);p=n[1][1]-(n[0][1]+n[0][3]);q=n[1][0]-(n[0][0]+n[0][2]);mxEdgeStyle.vertexSeperations[1]=Math.max(m-z,0);mxEdgeStyle.vertexSeperations[2]=Math.max(v-z,0);mxEdgeStyle.vertexSeperations[4]=Math.max(p-z,0);mxEdgeStyle.vertexSeperations[3]=
Math.max(q-z,0);z=[];c=[];l=[];c[0]=m>=q?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST;l[0]=v>=p?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH;c[1]=mxUtils.reversePortConstraints(c[0]);l[1]=mxUtils.reversePortConstraints(l[0]);m=m>=q?m:q;p=v>=p?v:p;q=[[0,0],[0,0]];r=!1;for(v=0;2>v;v++)0==a[v]&&(0==(c[v]&d[v])&&(c[v]=mxUtils.reversePortConstraints(c[v])),0==(l[v]&d[v])&&(l[v]=mxUtils.reversePortConstraints(l[v])),q[v][0]=l[v],q[v][1]=c[v]);0<p&&0<m&&(0<(c[0]&d[0])&&
0<(l[1]&d[1])?(q[0][0]=c[0],q[0][1]=l[0],q[1][0]=l[1],q[1][1]=c[1],r=!0):0<(l[0]&d[0])&&0<(c[1]&d[1])&&(q[0][0]=l[0],q[0][1]=c[0],q[1][0]=c[1],q[1][1]=l[1],r=!0));0<p&&!r&&(q[0][0]=l[0],q[0][1]=c[0],q[1][0]=l[1],q[1][1]=c[1],r=!0);0<m&&!r&&(q[0][0]=c[0],q[0][1]=l[0],q[1][0]=c[1],q[1][1]=l[1]);for(v=0;2>v;v++)0==a[v]&&(0==(q[v][0]&d[v])&&(q[v][0]=q[v][1]),z[v]=q[v][0]&d[v],z[v]|=(q[v][1]&d[v])<<8,z[v]|=(q[1-v][v]&d[v])<<16,z[v]|=(q[1-v][1-v]&d[v])<<24,0==(z[v]&15)&&(z[v]<<=8),0==(z[v]&3840)&&(z[v]=
z[v]&15|z[v]>>8),0==(z[v]&983040)&&(z[v]=z[v]&65535|(z[v]&251658240)>>8),a[v]=z[v]&15,d[v]==mxConstants.DIRECTION_MASK_WEST||d[v]==mxConstants.DIRECTION_MASK_NORTH||d[v]==mxConstants.DIRECTION_MASK_EAST||d[v]==mxConstants.DIRECTION_MASK_SOUTH)&&(a[v]=d[v]);d=a[0]==mxConstants.DIRECTION_MASK_EAST?3:a[0];z=a[1]==mxConstants.DIRECTION_MASK_EAST?3:a[1];d-=A;z-=A;1>d&&(d+=4);1>z&&(z+=4);d=mxEdgeStyle.routePatterns[d-1][z-1];mxEdgeStyle.wayPoints1[0][0]=n[0][0];mxEdgeStyle.wayPoints1[0][1]=n[0][1];switch(a[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=
f;mxEdgeStyle.wayPoints1[0][1]+=b[0][1]*n[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=b[0][0]*n[0][2];mxEdgeStyle.wayPoints1[0][1]+=n[0][3]+f;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=n[0][2]+f;mxEdgeStyle.wayPoints1[0][1]+=b[0][1]*n[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=b[0][0]*n[0][2],mxEdgeStyle.wayPoints1[0][1]-=f}f=0;c=z=0<(a[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?
0:1;for(v=0;v<d.length;v++)l=d[v]&15,r=l==mxConstants.DIRECTION_MASK_EAST?3:l,r+=A,4<r&&(r-=4),m=mxEdgeStyle.dirVectors[r-1],l=0<r%2?0:1,l!=z&&(f++,mxEdgeStyle.wayPoints1[f][0]=mxEdgeStyle.wayPoints1[f-1][0],mxEdgeStyle.wayPoints1[f][1]=mxEdgeStyle.wayPoints1[f-1][1]),t=0<(d[v]&mxEdgeStyle.TARGET_MASK),u=0<(d[v]&mxEdgeStyle.SOURCE_MASK),p=(d[v]&mxEdgeStyle.SIDE_MASK)>>5,p<<=A,15<p&&(p>>=4),q=0<(d[v]&mxEdgeStyle.CENTER_MASK),(u||t)&&9>p?(r=u?0:1,p=q&&0==l?n[r][0]+b[r][0]*n[r][2]:q?n[r][1]+b[r][1]*
n[r][3]:mxEdgeStyle.limits[r][p],0==l?(p=(p-mxEdgeStyle.wayPoints1[f][0])*m[0],0<p&&(mxEdgeStyle.wayPoints1[f][0]+=m[0]*p)):(p=(p-mxEdgeStyle.wayPoints1[f][1])*m[1],0<p&&(mxEdgeStyle.wayPoints1[f][1]+=m[1]*p))):q&&(mxEdgeStyle.wayPoints1[f][0]+=m[0]*Math.abs(mxEdgeStyle.vertexSeperations[r]/2),mxEdgeStyle.wayPoints1[f][1]+=m[1]*Math.abs(mxEdgeStyle.vertexSeperations[r]/2)),0<f&&mxEdgeStyle.wayPoints1[f][l]==mxEdgeStyle.wayPoints1[f-1][l]?f--:z=l;for(v=0;v<=f&&(v!=f||((0<(a[1]&(mxConstants.DIRECTION_MASK_EAST|
mxConstants.DIRECTION_MASK_WEST))?0:1)==c?0:1)==(f+1)%2);v++)e.push(new mxPoint(Math.round(mxEdgeStyle.wayPoints1[v][0]),Math.round(mxEdgeStyle.wayPoints1[v][1])));for(a=1;a<e.length;)null==e[a-1]||null==e[a]||e[a-1].x!=e[a].x||e[a-1].y!=e[a].y?a++:e.splice(a,1)}},getRoutePattern:function(a,b,c,d){var e=a[0]==mxConstants.DIRECTION_MASK_EAST?3:a[0];a=a[1]==mxConstants.DIRECTION_MASK_EAST?3:a[1];e-=b;a-=b;1>e&&(e+=4);1>a&&(a+=4);b=routePatterns[e-1][a-1];0!=c&&0!=d||null==inlineRoutePatterns[e-1][a-
1]||(b=inlineRoutePatterns[e-1][a-1]);return b}},mxStyleRegistry={values:[],putValue:function(a,b){mxStyleRegistry.values[a]=b},getValue:function(a){return mxStyleRegistry.values[a]},getName:function(a){for(var b in mxStyleRegistry.values)if(mxStyleRegistry.values[b]==a)return b;return null}};mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector);mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation);
mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop);mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide);mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom);mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector);mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector);mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter);
mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter);mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter);mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter);mxStyleRegistry.putValue(mxConstants.PERIMETER_HEXAGON,mxPerimeter.HexagonPerimeter);function mxGraphView(a){this.graph=a;this.translate=new mxPoint;this.graphBounds=new mxRectangle;this.states=new mxDictionary}mxGraphView.prototype=new mxEventSource;
mxGraphView.prototype.constructor=mxGraphView;mxGraphView.prototype.EMPTY_POINT=new mxPoint;mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"";mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"";mxGraphView.prototype.allowEval=!1;mxGraphView.prototype.captureDocumentGesture=!0;mxGraphView.prototype.optimizeVmlReflows=!0;mxGraphView.prototype.rendering=!0;mxGraphView.prototype.graph=null;mxGraphView.prototype.currentRoot=null;
mxGraphView.prototype.graphBounds=null;mxGraphView.prototype.scale=1;mxGraphView.prototype.translate=null;mxGraphView.prototype.states=null;mxGraphView.prototype.updateStyle=!1;mxGraphView.prototype.lastNode=null;mxGraphView.prototype.lastHtmlNode=null;mxGraphView.prototype.lastForegroundNode=null;mxGraphView.prototype.lastForegroundHtmlNode=null;mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds};mxGraphView.prototype.setGraphBounds=function(a){this.graphBounds=a};
SegmentConnector:function(a,b,c,d,e){function f(b){b.x=Math.round(b.x*a.view.scale*10)/10;b.y=Math.round(b.y*a.view.scale*10)/10;if(null==k||1<=Math.abs(k.x-b.x)||Math.abs(k.y-b.y)>=Math.max(1,a.view.scale))e.push(b),k=b;return k}var g=mxEdgeStyle.scalePointArray(a.absolutePoints,a.view.scale);b=mxEdgeStyle.scaleCellState(b,a.view.scale);c=mxEdgeStyle.scaleCellState(c,a.view.scale);var k=0<e.length?e[0]:null,l=!0,m=null,n=g[0];null==n&&null!=b?n=new mxPoint(a.view.getRoutingCenterX(b),a.view.getRoutingCenterY(b)):
null!=n&&(n=n.clone());var p=g.length-1;if(null!=d&&0<d.length){for(var q=[],r=0;r<d.length;r++){var t=a.view.transformControlPoint(a,d[r],!0);null!=t&&q.push(t)}if(0==q.length)return;null!=n&&null!=q[0]&&(1>Math.abs(q[0].x-n.x)&&(q[0].x=n.x),1>Math.abs(q[0].y-n.y)&&(q[0].y=n.y));t=g[p];null!=t&&null!=q[q.length-1]&&(1>Math.abs(q[q.length-1].x-t.x)&&(q[q.length-1].x=t.x),1>Math.abs(q[q.length-1].y-t.y)&&(q[q.length-1].y=t.y));var m=q[0],u=b;d=g[0];var x=!1,y=!1,x=m;null!=d&&(u=null);for(r=0;2>r;r++){var B=
null!=d&&d.x==x.x,A=null!=d&&d.y==x.y,z=null!=u&&x.y>=u.y&&x.y<=u.y+u.height,u=null!=u&&x.x>=u.x&&x.x<=u.x+u.width,x=A||null==d&&z,y=B||null==d&&u;if(0!=r||!(x&&y||B&&A)){if(null!=d&&!A&&!B&&(z||u)){l=z?!1:!0;break}if(y||x){l=x;1==r&&(l=0==q.length%2?x:y);break}}u=c;d=g[p];null!=d&&(u=null);x=q[q.length-1];B&&A&&(q=q.slice(1))}l&&(null!=g[0]&&g[0].y!=m.y||null==g[0]&&null!=b&&(m.y<b.y||m.y>b.y+b.height))?f(new mxPoint(n.x,m.y)):!l&&(null!=g[0]&&g[0].x!=m.x||null==g[0]&&null!=b&&(m.x<b.x||m.x>b.x+
b.width))&&f(new mxPoint(m.x,n.y));l?n.y=m.y:n.x=m.x;for(r=0;r<q.length;r++)l=!l,m=q[r],l?n.y=m.y:n.x=m.x,f(n.clone())}else m=n,l=!0;n=g[p];null==n&&null!=c&&(n=new mxPoint(a.view.getRoutingCenterX(c),a.view.getRoutingCenterY(c)));null!=n&&null!=m&&(l&&(null!=g[p]&&g[p].y!=m.y||null==g[p]&&null!=c&&(m.y<c.y||m.y>c.y+c.height))?f(new mxPoint(n.x,m.y)):!l&&(null!=g[p]&&g[p].x!=m.x||null==g[p]&&null!=c&&(m.x<c.x||m.x>c.x+c.width))&&f(new mxPoint(m.x,n.y)));if(null==g[0]&&null!=b)for(;1<e.length&&null!=
e[1]&&mxUtils.contains(b,e[1].x,e[1].y);)e.splice(1,1);if(null==g[p]&&null!=c)for(;1<e.length&&null!=e[e.length-1]&&mxUtils.contains(c,e[e.length-1].x,e[e.length-1].y);)e.splice(e.length-1,1);null!=t&&null!=e[e.length-1]&&1>=Math.abs(t.x-e[e.length-1].x)&&1>=Math.abs(t.y-e[e.length-1].y)&&(e.splice(e.length-1,1),null!=e[e.length-1]&&(1>Math.abs(e[e.length-1].x-t.x)&&(e[e.length-1].x=t.x),1>Math.abs(e[e.length-1].y-t.y)&&(e[e.length-1].y=t.y)))},orthBuffer:10,orthPointsFallback:!0,dirVectors:[[-1,
0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,
2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,
getJettySize:function(a,b){var c=mxUtils.getValue(a.style,b?mxConstants.STYLE_SOURCE_JETTY_SIZE:mxConstants.STYLE_TARGET_JETTY_SIZE,mxUtils.getValue(a.style,mxConstants.STYLE_JETTY_SIZE,mxEdgeStyle.orthBuffer));"auto"==c&&(mxUtils.getValue(a.style,b?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE?(c=mxUtils.getNumber(a.style,b?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),c=Math.max(2,Math.ceil((c+mxEdgeStyle.orthBuffer)/
mxEdgeStyle.orthBuffer))*mxEdgeStyle.orthBuffer):c=2*mxEdgeStyle.orthBuffer);return c},scalePointArray:function(a,b){var c=[];if(null!=a)for(var d=0;d<a.length;d++)if(null!=a[d]){var e=new mxPoint(Math.round(a[d].x/b*10)/10,Math.round(a[d].y/b*10)/10);c[d]=e}else c[d]=null;else c=null;return c},scaleCellState:function(a,b){var c;null!=a?(c=a.clone(),c.setRect(Math.round(a.x/b*10)/10,Math.round(a.y/b*10)/10,Math.round(a.width/b*10)/10,Math.round(a.height/b*10)/10)):c=null;return c},OrthConnector:function(a,
b,c,d,e){var f=a.view.graph,g=null==l?!1:f.getModel().isEdge(l.cell),k=null==m?!1:f.getModel().isEdge(m.cell),f=mxEdgeStyle.scalePointArray(a.absolutePoints,a.view.scale),l=mxEdgeStyle.scaleCellState(b,a.view.scale),m=mxEdgeStyle.scaleCellState(c,a.view.scale),n=f[0],p=f[f.length-1],q=null!=l?l.x:n.x,r=null!=l?l.y:n.y,t=null!=l?l.width:0,u=null!=l?l.height:0,x=null!=m?m.x:p.x,y=null!=m?m.y:p.y,B=null!=m?m.width:0,A=null!=m?m.height:0,f=mxEdgeStyle.getJettySize(a,!0),z=mxEdgeStyle.getJettySize(a,!1);
null!=l&&m==l&&(f=z=Math.max(f,z));var C=z+f,v=!1;if(null!=n&&null!=p)var v=p.x-n.x,D=p.y-n.y,v=v*v+D*D<C*C;if(v||mxEdgeStyle.orthPointsFallback&&null!=d&&0<d.length||g||k)mxEdgeStyle.SegmentConnector(a,b,c,d,e);else{c=[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL];null!=l&&(c[0]=mxUtils.getPortConstraints(l,a,!0,mxConstants.DIRECTION_MASK_ALL),b=mxUtils.getValue(l.style,mxConstants.STYLE_ROTATION,0),0!=b&&(b=mxUtils.getBoundingBox(new mxRectangle(q,r,t,u),b),q=b.x,r=b.y,t=b.width,
u=b.height));null!=m&&(c[1]=mxUtils.getPortConstraints(m,a,!1,mxConstants.DIRECTION_MASK_ALL),b=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION,0),0!=b&&(b=mxUtils.getBoundingBox(new mxRectangle(x,y,B,A),b),x=b.x,y=b.y,B=b.width,A=b.height));b=[0,0];q=[[q,r,t,u],[x,y,B,A]];z=[f,z];for(v=0;2>v;v++)mxEdgeStyle.limits[v][1]=q[v][0]-z[v],mxEdgeStyle.limits[v][2]=q[v][1]-z[v],mxEdgeStyle.limits[v][4]=q[v][0]+q[v][2]+z[v],mxEdgeStyle.limits[v][8]=q[v][1]+q[v][3]+z[v];z=q[0][1]+q[0][3]/2;r=q[1][1]+q[1][3]/
2;v=q[0][0]+q[0][2]/2-(q[1][0]+q[1][2]/2);D=z-r;z=0;0>v?z=0>D?2:1:0>=D&&(z=3,0==v&&(z=2));r=null;null!=l&&(r=n);l=[[.5,.5],[.5,.5]];for(v=0;2>v;v++)null!=r&&(l[v][0]=(r.x-q[v][0])/q[v][2],1>=Math.abs(r.x-q[v][0])?b[v]=mxConstants.DIRECTION_MASK_WEST:1>=Math.abs(r.x-q[v][0]-q[v][2])&&(b[v]=mxConstants.DIRECTION_MASK_EAST),l[v][1]=(r.y-q[v][1])/q[v][3],1>=Math.abs(r.y-q[v][1])?b[v]=mxConstants.DIRECTION_MASK_NORTH:1>=Math.abs(r.y-q[v][1]-q[v][3])&&(b[v]=mxConstants.DIRECTION_MASK_SOUTH)),r=null,null!=
m&&(r=p);v=q[0][1]-(q[1][1]+q[1][3]);p=q[0][0]-(q[1][0]+q[1][2]);r=q[1][1]-(q[0][1]+q[0][3]);t=q[1][0]-(q[0][0]+q[0][2]);mxEdgeStyle.vertexSeperations[1]=Math.max(p-C,0);mxEdgeStyle.vertexSeperations[2]=Math.max(v-C,0);mxEdgeStyle.vertexSeperations[4]=Math.max(r-C,0);mxEdgeStyle.vertexSeperations[3]=Math.max(t-C,0);C=[];m=[];n=[];m[0]=p>=t?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST;n[0]=v>=r?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH;m[1]=mxUtils.reversePortConstraints(m[0]);
n[1]=mxUtils.reversePortConstraints(n[0]);p=p>=t?p:t;r=v>=r?v:r;t=[[0,0],[0,0]];u=!1;for(v=0;2>v;v++)0==b[v]&&(0==(m[v]&c[v])&&(m[v]=mxUtils.reversePortConstraints(m[v])),0==(n[v]&c[v])&&(n[v]=mxUtils.reversePortConstraints(n[v])),t[v][0]=n[v],t[v][1]=m[v]);0<r&&0<p&&(0<(m[0]&c[0])&&0<(n[1]&c[1])?(t[0][0]=m[0],t[0][1]=n[0],t[1][0]=n[1],t[1][1]=m[1],u=!0):0<(n[0]&c[0])&&0<(m[1]&c[1])&&(t[0][0]=n[0],t[0][1]=m[0],t[1][0]=m[1],t[1][1]=n[1],u=!0));0<r&&!u&&(t[0][0]=n[0],t[0][1]=m[0],t[1][0]=n[1],t[1][1]=
m[1],u=!0);0<p&&!u&&(t[0][0]=m[0],t[0][1]=n[0],t[1][0]=m[1],t[1][1]=n[1]);for(v=0;2>v;v++)0==b[v]&&(0==(t[v][0]&c[v])&&(t[v][0]=t[v][1]),C[v]=t[v][0]&c[v],C[v]|=(t[v][1]&c[v])<<8,C[v]|=(t[1-v][v]&c[v])<<16,C[v]|=(t[1-v][1-v]&c[v])<<24,0==(C[v]&15)&&(C[v]<<=8),0==(C[v]&3840)&&(C[v]=C[v]&15|C[v]>>8),0==(C[v]&983040)&&(C[v]=C[v]&65535|(C[v]&251658240)>>8),b[v]=C[v]&15,c[v]==mxConstants.DIRECTION_MASK_WEST||c[v]==mxConstants.DIRECTION_MASK_NORTH||c[v]==mxConstants.DIRECTION_MASK_EAST||c[v]==mxConstants.DIRECTION_MASK_SOUTH)&&
(b[v]=c[v]);c=b[0]==mxConstants.DIRECTION_MASK_EAST?3:b[0];C=b[1]==mxConstants.DIRECTION_MASK_EAST?3:b[1];c-=z;C-=z;1>c&&(c+=4);1>C&&(C+=4);c=mxEdgeStyle.routePatterns[c-1][C-1];mxEdgeStyle.wayPoints1[0][0]=q[0][0];mxEdgeStyle.wayPoints1[0][1]=q[0][1];switch(b[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=f;mxEdgeStyle.wayPoints1[0][1]+=l[0][1]*q[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=l[0][0]*q[0][2];mxEdgeStyle.wayPoints1[0][1]+=q[0][3]+
f;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=q[0][2]+f;mxEdgeStyle.wayPoints1[0][1]+=l[0][1]*q[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=l[0][0]*q[0][2],mxEdgeStyle.wayPoints1[0][1]-=f}f=0;m=C=0<(b[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1;for(v=0;v<c.length;v++)n=c[v]&15,u=n==mxConstants.DIRECTION_MASK_EAST?3:n,u+=z,4<u&&(u-=4),p=mxEdgeStyle.dirVectors[u-1],n=0<u%2?0:1,n!=C&&(f++,mxEdgeStyle.wayPoints1[f][0]=
mxEdgeStyle.wayPoints1[f-1][0],mxEdgeStyle.wayPoints1[f][1]=mxEdgeStyle.wayPoints1[f-1][1]),x=0<(c[v]&mxEdgeStyle.TARGET_MASK),y=0<(c[v]&mxEdgeStyle.SOURCE_MASK),r=(c[v]&mxEdgeStyle.SIDE_MASK)>>5,r<<=z,15<r&&(r>>=4),t=0<(c[v]&mxEdgeStyle.CENTER_MASK),(y||x)&&9>r?(u=y?0:1,r=t&&0==n?q[u][0]+l[u][0]*q[u][2]:t?q[u][1]+l[u][1]*q[u][3]:mxEdgeStyle.limits[u][r],0==n?(r=(r-mxEdgeStyle.wayPoints1[f][0])*p[0],0<r&&(mxEdgeStyle.wayPoints1[f][0]+=p[0]*r)):(r=(r-mxEdgeStyle.wayPoints1[f][1])*p[1],0<r&&(mxEdgeStyle.wayPoints1[f][1]+=
p[1]*r))):t&&(mxEdgeStyle.wayPoints1[f][0]+=p[0]*Math.abs(mxEdgeStyle.vertexSeperations[u]/2),mxEdgeStyle.wayPoints1[f][1]+=p[1]*Math.abs(mxEdgeStyle.vertexSeperations[u]/2)),0<f&&mxEdgeStyle.wayPoints1[f][n]==mxEdgeStyle.wayPoints1[f-1][n]?f--:C=n;for(v=0;v<=f&&(v!=f||((0<(b[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==m?0:1)==(f+1)%2);v++)e.push(new mxPoint(Math.round(mxEdgeStyle.wayPoints1[v][0]*a.view.scale*10)/10,Math.round(mxEdgeStyle.wayPoints1[v][1]*a.view.scale*
10)/10));for(a=1;a<e.length;)null==e[a-1]||null==e[a]||e[a-1].x!=e[a].x||e[a-1].y!=e[a].y?a++:e.splice(a,1)}},getRoutePattern:function(a,b,c,d){var e=a[0]==mxConstants.DIRECTION_MASK_EAST?3:a[0];a=a[1]==mxConstants.DIRECTION_MASK_EAST?3:a[1];e-=b;a-=b;1>e&&(e+=4);1>a&&(a+=4);b=routePatterns[e-1][a-1];0!=c&&0!=d||null==inlineRoutePatterns[e-1][a-1]||(b=inlineRoutePatterns[e-1][a-1]);return b}},mxStyleRegistry={values:[],putValue:function(a,b){mxStyleRegistry.values[a]=b},getValue:function(a){return mxStyleRegistry.values[a]},
getName:function(a){for(var b in mxStyleRegistry.values)if(mxStyleRegistry.values[b]==a)return b;return null}};mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector);mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation);mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop);mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide);mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom);
mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector);mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector);mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter);mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter);mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter);mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter);
mxStyleRegistry.putValue(mxConstants.PERIMETER_HEXAGON,mxPerimeter.HexagonPerimeter);function mxGraphView(a){this.graph=a;this.translate=new mxPoint;this.graphBounds=new mxRectangle;this.states=new mxDictionary}mxGraphView.prototype=new mxEventSource;mxGraphView.prototype.constructor=mxGraphView;mxGraphView.prototype.EMPTY_POINT=new mxPoint;mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"";
mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"";mxGraphView.prototype.allowEval=!1;mxGraphView.prototype.captureDocumentGesture=!0;mxGraphView.prototype.optimizeVmlReflows=!0;mxGraphView.prototype.rendering=!0;mxGraphView.prototype.graph=null;mxGraphView.prototype.currentRoot=null;mxGraphView.prototype.graphBounds=null;mxGraphView.prototype.scale=1;mxGraphView.prototype.translate=null;mxGraphView.prototype.states=null;
mxGraphView.prototype.updateStyle=!1;mxGraphView.prototype.lastNode=null;mxGraphView.prototype.lastHtmlNode=null;mxGraphView.prototype.lastForegroundNode=null;mxGraphView.prototype.lastForegroundHtmlNode=null;mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds};mxGraphView.prototype.setGraphBounds=function(a){this.graphBounds=a};
mxGraphView.prototype.getBounds=function(a){var b=null;if(null!=a&&0<a.length)for(var c=this.graph.getModel(),d=0;d<a.length;d++)if(c.isVertex(a[d])||c.isEdge(a[d])){var e=this.getState(a[d]);null!=e&&(null==b?b=mxRectangle.fromRectangle(e):b.add(e))}return b};mxGraphView.prototype.setCurrentRoot=function(a){if(this.currentRoot!=a){var b=new mxCurrentRootChange(this,a);b.execute();var c=new mxUndoableEdit(this,!0);c.add(b);this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",c));this.graph.sizeDidChange()}return a};
mxGraphView.prototype.scaleAndTranslate=function(a,b,c){var d=this.scale,e=new mxPoint(this.translate.x,this.translate.y);if(this.scale!=a||this.translate.x!=b||this.translate.y!=c)this.scale=a,this.translate.x=b,this.translate.y=c,this.isEventsEnabled()&&this.viewStateChanged();this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",a,"previousScale",d,"translate",this.translate,"previousTranslate",e))};mxGraphView.prototype.getScale=function(){return this.scale};
mxGraphView.prototype.setScale=function(a){var b=this.scale;this.scale!=a&&(this.scale=a,this.isEventsEnabled()&&this.viewStateChanged());this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",a,"previousScale",b))};mxGraphView.prototype.getTranslate=function(){return this.translate};
@ -1036,7 +1037,7 @@ mxGraphView.prototype.updateFixedTerminalPoints=function(a,b,c){this.updateFixed
mxGraphView.prototype.getFixedTerminalPoint=function(a,b,c,d){var e=null;null!=d&&(e=this.graph.getConnectionPoint(b,d,!1));if(null==e&&null==b){b=this.scale;d=this.translate;var f=a.origin,e=this.graph.getCellGeometry(a.cell).getTerminalPoint(c);null!=e&&(e=new mxPoint(b*(d.x+e.x+f.x),b*(d.y+e.y+f.y)))}return e};
mxGraphView.prototype.updateBoundsFromStencil=function(a){var b=null;if(null!=a&&null!=a.shape&&null!=a.shape.stencil&&"fixed"==a.shape.stencil.aspect){var b=mxRectangle.fromRectangle(a),c=a.shape.stencil.computeAspect(a.style,a.x,a.y,a.width,a.height);a.setRect(c.x,c.y,a.shape.stencil.w0*c.width,a.shape.stencil.h0*c.height)}return b};
mxGraphView.prototype.updatePoints=function(a,b,c,d){if(null!=a){var e=[];e.push(a.absolutePoints[0]);var f=this.getEdgeStyle(a,b,c,d);if(null!=f){c=this.getTerminalPort(a,c,!0);d=this.getTerminalPort(a,d,!1);var g=this.updateBoundsFromStencil(c),k=this.updateBoundsFromStencil(d);f(a,c,d,b,e);null!=g&&c.setRect(g.x,g.y,g.width,g.height);null!=k&&d.setRect(k.x,k.y,k.width,k.height)}else if(null!=b)for(f=0;f<b.length;f++)null!=b[f]&&(c=mxUtils.clone(b[f]),e.push(this.transformControlPoint(a,c)));b=
a.absolutePoints;e.push(b[b.length-1]);a.absolutePoints=e}};mxGraphView.prototype.transformControlPoint=function(a,b){if(null!=a&&null!=b){var c=a.origin;return new mxPoint(this.scale*(b.x+this.translate.x+c.x),this.scale*(b.y+this.translate.y+c.y))}return null};
a.absolutePoints;e.push(b[b.length-1]);a.absolutePoints=e}};mxGraphView.prototype.transformControlPoint=function(a,b,c){return null!=a&&null!=b?(a=a.origin,c=c?1:this.scale,new mxPoint(c*(b.x+this.translate.x+a.x),c*(b.y+this.translate.y+a.y))):null};
mxGraphView.prototype.isLoopStyleEnabled=function(a,b,c,d){var e=this.graph.getConnectionConstraint(a,c,!0),f=this.graph.getConnectionConstraint(a,d,!1);return!(null==b||2>b.length)||mxUtils.getValue(a.style,mxConstants.STYLE_ORTHOGONAL_LOOP,!1)&&(null!=e&&null!=e.point||null!=f&&null!=f.point)?!1:null!=c&&c==d};
mxGraphView.prototype.getEdgeStyle=function(a,b,c,d){a=this.isLoopStyleEnabled(a,b,c,d)?mxUtils.getValue(a.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(a.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:a.style[mxConstants.STYLE_EDGE];"string"==typeof a&&(b=mxStyleRegistry.getValue(a),null==b&&this.isAllowEval()&&(b=mxUtils.eval(a)),a=b);return"function"==typeof a?a:null};
mxGraphView.prototype.updateFloatingTerminalPoints=function(a,b,c){var d=a.absolutePoints,e=d[0];null==d[d.length-1]&&null!=c&&this.updateFloatingTerminalPoint(a,c,b,!1);null==e&&null!=b&&this.updateFloatingTerminalPoint(a,b,c,!0)};mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,c,d){a.setAbsoluteTerminalPoint(this.getFloatingTerminalPoint(a,b,c,d),d)};
@ -1372,12 +1373,12 @@ mxCellStatePreview.prototype.revalidateState=function(a,b,c,d){if(null!=a){var e
g)),b,c,d)}};mxCellStatePreview.prototype.addEdges=function(a){for(var b=this.graph.getModel(),c=b.getEdgeCount(a.cell),d=0;d<c;d++){var e=a.view.getState(b.getEdgeAt(a.cell,d));null!=e&&this.moveState(e,0,0)}};function mxConnectionConstraint(a,b,c,d,e){this.point=a;this.perimeter=null!=b?b:!0;this.name=c;this.dx=d?d:0;this.dy=e?e:0}mxConnectionConstraint.prototype.point=null;mxConnectionConstraint.prototype.perimeter=null;mxConnectionConstraint.prototype.name=null;
mxConnectionConstraint.prototype.dx=null;mxConnectionConstraint.prototype.dy=null;
function mxGraphHandler(a){this.graph=a;this.graph.addMouseListener(this);this.panHandler=mxUtils.bind(this,function(){this.suspended||(this.updatePreview(),this.updateHint())});this.graph.addListener(mxEvent.PAN,this.panHandler);this.escapeHandler=mxUtils.bind(this,function(a,c){this.reset()});this.graph.addListener(mxEvent.ESCAPE,this.escapeHandler);this.refreshHandler=mxUtils.bind(this,function(a,c){window.setTimeout(mxUtils.bind(this,function(){if(null!=this.first&&!this.suspended){var a=this.currentDx,
b=this.currentDy;this.currentDy=this.currentDx=0;this.updatePreview();this.bounds=this.graph.getView().getBounds(this.cells);this.pBounds=this.getPreviewBounds(this.cells);null==this.pBounds?this.reset():(this.currentDx=a,this.currentDy=b,this.updatePreview(),this.updateHint(),this.livePreviewUsed&&this.setHandlesVisibleForCells(this.graph.getSelectionCells(),!1))}}),0)});this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler)}mxGraphHandler.prototype.graph=null;
mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50;mxGraphHandler.prototype.enabled=!0;mxGraphHandler.prototype.highlightEnabled=!0;mxGraphHandler.prototype.cloneEnabled=!0;mxGraphHandler.prototype.moveEnabled=!0;mxGraphHandler.prototype.guidesEnabled=!1;mxGraphHandler.prototype.guide=null;mxGraphHandler.prototype.currentDx=null;mxGraphHandler.prototype.currentDy=null;mxGraphHandler.prototype.updateCursor=!0;mxGraphHandler.prototype.selectEnabled=!0;
mxGraphHandler.prototype.removeCellsFromParent=!0;mxGraphHandler.prototype.removeEmptyParents=!1;mxGraphHandler.prototype.connectOnDrop=!1;mxGraphHandler.prototype.scrollOnMove=!0;mxGraphHandler.prototype.minimumSize=6;mxGraphHandler.prototype.previewColor="black";mxGraphHandler.prototype.htmlPreview=!1;mxGraphHandler.prototype.shape=null;mxGraphHandler.prototype.scaleGrid=!1;mxGraphHandler.prototype.rotationEnabled=!0;mxGraphHandler.prototype.maxLivePreview=0;
mxGraphHandler.prototype.allowLivePreview=mxClient.IS_SVG;mxGraphHandler.prototype.isEnabled=function(){return this.enabled};mxGraphHandler.prototype.setEnabled=function(a){this.enabled=a};mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled};mxGraphHandler.prototype.setCloneEnabled=function(a){this.cloneEnabled=a};mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled};mxGraphHandler.prototype.setMoveEnabled=function(a){this.moveEnabled=a};
mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled};mxGraphHandler.prototype.setSelectEnabled=function(a){this.selectEnabled=a};mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent};mxGraphHandler.prototype.setRemoveCellsFromParent=function(a){this.removeCellsFromParent=a};mxGraphHandler.prototype.getInitialCellForEvent=function(a){return a.getCell()};mxGraphHandler.prototype.isDelayedSelection=function(a,b){return this.graph.isCellSelected(a)};
mxGraphHandler.prototype.consumeMouseEvent=function(a,b){b.consume()};
b=this.currentDy;this.currentDy=this.currentDx=0;this.updatePreview();this.bounds=this.graph.getView().getBounds(this.cells);this.pBounds=this.getPreviewBounds(this.cells);null==this.pBounds?this.reset():(this.currentDx=a,this.currentDy=b,this.updatePreview(),this.updateHint(),this.livePreviewUsed&&this.setHandlesVisibleForCells(this.graph.getSelectionCells(),!1))}}),0)});this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler);this.keyHandler=mxUtils.bind(this,function(a){null!=this.graph.container&&
"hidden"!=this.graph.container.style.visibility&&(a=this.graph.isCloneEvent(a)&&this.graph.isCellsCloneable()&&this.isCloneEnabled(),a!=this.cloning&&(this.cloning=a,this.checkPreview(),this.updatePreview()))});mxEvent.addListener(document,"keydown",this.keyHandler);mxEvent.addListener(document,"keyup",this.keyHandler)}mxGraphHandler.prototype.graph=null;mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50;mxGraphHandler.prototype.enabled=!0;mxGraphHandler.prototype.highlightEnabled=!0;
mxGraphHandler.prototype.cloneEnabled=!0;mxGraphHandler.prototype.moveEnabled=!0;mxGraphHandler.prototype.guidesEnabled=!1;mxGraphHandler.prototype.handlesVisible=!0;mxGraphHandler.prototype.guide=null;mxGraphHandler.prototype.currentDx=null;mxGraphHandler.prototype.currentDy=null;mxGraphHandler.prototype.updateCursor=!0;mxGraphHandler.prototype.selectEnabled=!0;mxGraphHandler.prototype.removeCellsFromParent=!0;mxGraphHandler.prototype.removeEmptyParents=!1;
mxGraphHandler.prototype.connectOnDrop=!1;mxGraphHandler.prototype.scrollOnMove=!0;mxGraphHandler.prototype.minimumSize=6;mxGraphHandler.prototype.previewColor="black";mxGraphHandler.prototype.htmlPreview=!1;mxGraphHandler.prototype.shape=null;mxGraphHandler.prototype.scaleGrid=!1;mxGraphHandler.prototype.rotationEnabled=!0;mxGraphHandler.prototype.maxLivePreview=0;mxGraphHandler.prototype.allowLivePreview=mxClient.IS_SVG;mxGraphHandler.prototype.isEnabled=function(){return this.enabled};
mxGraphHandler.prototype.setEnabled=function(a){this.enabled=a};mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled};mxGraphHandler.prototype.setCloneEnabled=function(a){this.cloneEnabled=a};mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled};mxGraphHandler.prototype.setMoveEnabled=function(a){this.moveEnabled=a};mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled};
mxGraphHandler.prototype.setSelectEnabled=function(a){this.selectEnabled=a};mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent};mxGraphHandler.prototype.setRemoveCellsFromParent=function(a){this.removeCellsFromParent=a};mxGraphHandler.prototype.getInitialCellForEvent=function(a){return a.getCell()};mxGraphHandler.prototype.isDelayedSelection=function(a,b){return this.graph.isCellSelected(a)};mxGraphHandler.prototype.consumeMouseEvent=function(a,b){b.consume()};
mxGraphHandler.prototype.mouseDown=function(a,b){if(!b.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&null!=b.getState()&&!mxEvent.isMultiTouchEvent(b.getEvent())){var c=this.getInitialCellForEvent(b);this.delayedSelection=this.isDelayedSelection(c,b);this.cell=null;this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(c,b.getEvent());if(this.isMoveEnabled()){var d=this.graph.model,e=d.getGeometry(c);this.graph.isCellMovable(c)&&(!d.isEdge(c)||1<this.graph.getSelectionCount()||
null!=e.points&&0<e.points.length||null==d.getTerminal(c,!0)||null==d.getTerminal(c,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(b.getEvent())&&this.graph.isCellsCloneable())?this.start(c,b.getX(),b.getY()):this.delayedSelection&&(this.cell=c);this.cellWasClicked=!0;this.consumeMouseEvent(mxEvent.MOUSE_DOWN,b)}}};
mxGraphHandler.prototype.getGuideStates=function(){var a=this.graph.getDefaultParent(),b=this.graph.getModel(),c=mxUtils.bind(this,function(a){return null!=this.graph.view.getState(a)&&b.isVertex(a)&&null!=b.getGeometry(a)&&!b.getGeometry(a).relative});return this.graph.view.getCellStates(b.filterDescendants(c,a))};mxGraphHandler.prototype.getCells=function(a){return!this.delayedSelection&&this.graph.isCellMovable(a)?[a]:this.graph.getMovableCells(this.graph.getSelectionCells())};
@ -1388,20 +1389,21 @@ mxGraphHandler.prototype.start=function(a,b,c,d){this.cell=a;this.first=mxUtils.
var e=this.graph.model.getParent(a),f=2>this.graph.model.getChildCount(e),g=new mxDictionary;a=this.graph.getOpposites(this.graph.getEdges(this.cell),this.cell);for(b=0;b<a.length;b++)c=this.graph.view.getState(a[b]),null==c||g.get(c)||g.put(c,!0);this.guide.isStateIgnored=mxUtils.bind(this,function(a){var b=this.graph.model.getParent(a.cell);return null!=a.cell&&(!this.cloning&&this.isCellMoving(a.cell)||a.cell!=(this.target||e)&&!f&&!g.get(a)&&(null==this.target||2<=this.graph.model.getChildCount(this.target))&&
b!=(this.target||e))})}};mxGraphHandler.prototype.addStates=function(a,b){var c=this.graph.view.getState(a),d=0;if(null!=c&&null==b.get(a)){b.put(a,c);d++;for(var c=this.graph.model.getChildCount(a),e=0;e<c;e++)d+=this.addStates(this.graph.model.getChildAt(a,e),b)}return d};mxGraphHandler.prototype.isCellMoving=function(a){return null!=this.allCells.get(a)};mxGraphHandler.prototype.useGuidesForEvent=function(a){return null!=this.guide?this.guide.isEnabledForEvent(a.getEvent()):!0};
mxGraphHandler.prototype.snap=function(a){var b=this.scaleGrid?this.graph.view.scale:1;a.x=this.graph.snap(a.x/b)*b;a.y=this.graph.snap(a.y/b)*b;return a};mxGraphHandler.prototype.getDelta=function(a){a=mxUtils.convertPoint(this.graph.container,a.getX(),a.getY());return new mxPoint(a.x-this.first.x-this.graph.panDx,a.y-this.first.y-this.graph.panDy)};mxGraphHandler.prototype.updateHint=function(a){};mxGraphHandler.prototype.removeHint=function(){};
mxGraphHandler.prototype.roundLength=function(a){return Math.round(100*a)/100};
mxGraphHandler.prototype.roundLength=function(a){return Math.round(100*a)/100};mxGraphHandler.prototype.isValidDropTarget=function(a){return this.graph.model.getParent(this.cell)!=a};
mxGraphHandler.prototype.checkPreview=function(){this.livePreviewActive&&this.cloning?(this.resetLivePreview(),this.livePreviewActive=!1):this.maxLivePreview>=this.cellCount&&!this.livePreviewActive&&this.allowLivePreview?this.cloning&&this.livePreviewActive||(this.livePreviewUsed=this.livePreviewActive=!0):this.livePreviewUsed||null!=this.shape||(this.shape=this.createPreviewShape(this.bounds))};
mxGraphHandler.prototype.mouseMove=function(a,b){var c=this.graph;if(b.isConsumed()||!c.isMouseDown||null==this.cell||null==this.first||null==this.bounds||this.suspended)!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||b.isConsumed()||null==b.getState()&&null==b.sourceState||c.isMouseDown||(d=c.getCursorForMouseEvent(b),null==d&&c.isEnabled()&&c.isCellMovable(b.getCell())&&(d=c.getModel().isEdge(b.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),null!=
d&&null!=b.sourceState&&b.sourceState.setCursor(d));else if(mxEvent.isMultiTouchEvent(b.getEvent()))this.reset();else{var d=this.getDelta(b),e=c.tolerance;if(null!=this.shape||this.livePreviewActive||Math.abs(d.x)>e||Math.abs(d.y)>e){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3));var e=c.isCloneEvent(b.getEvent())&&c.isCellsCloneable()&&this.isCloneEnabled(),f=c.isGridEnabledEvent(b.getEvent()),g=b.getCell(),k=!0,l=null;this.cloning=e;c.isDropEnabled()&&
this.highlightEnabled&&(l=c.getDropTarget(this.cells,b.getEvent(),g,e));var m=c.getView().getState(l),n=!1;null==m||c.model.getParent(this.cell)==l&&!e?(this.target=null,this.connectOnDrop&&null!=g&&1==this.cells.length&&c.getModel().isVertex(g)&&c.isCellConnectable(g)&&(m=c.getView().getState(g),null!=m&&(g=null==c.getEdgeValidationError(null,this.cell,g)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(g),n=!0))):(this.target!=l&&(this.target=l,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),
n=!0);null!=m&&n?this.highlight.highlight(m):this.highlight.hide();this.livePreviewActive&&e?(this.resetLivePreview(),this.livePreviewActive=!1):this.maxLivePreview>=this.cellCount&&!this.livePreviewActive&&this.allowLivePreview?e&&this.livePreviewActive||(this.setHandlesVisibleForCells(this.graph.getSelectionCells(),!1),this.livePreviewUsed=this.livePreviewActive=!0):this.livePreviewUsed||null!=this.shape||(this.shape=this.createPreviewShape(this.bounds));null!=this.guide&&this.useGuidesForEvent(b)?
(d=this.guide.move(this.bounds,d,f,e),k=!1):d=this.graph.snapDelta(d,this.bounds,!f,!1,!1);null!=this.guide&&k&&this.guide.hide();c.isConstrainedEvent(b.getEvent())&&(Math.abs(d.x)>Math.abs(d.y)?d.y=0:d.x=0);if(this.currentDx!=d.x||this.currentDy!=d.y)this.currentDx=d.x,this.currentDy=d.y,this.updatePreview()}this.updateHint(b);this.consumeMouseEvent(mxEvent.MOUSE_MOVE,b);mxEvent.consume(b.getEvent())}};
mxGraphHandler.prototype.updatePreview=function(a){this.livePreviewUsed&&!a?null!=this.cells&&this.updateLivePreview(this.currentDx,this.currentDy):this.updatePreviewShape()};mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx),Math.round(this.pBounds.y+this.currentDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())};
this.highlightEnabled&&(l=c.getDropTarget(this.cells,b.getEvent(),g,e));var m=c.getView().getState(l),n=!1;null!=m&&(e||this.isValidDropTarget(l))?(this.target!=l&&(this.target=l,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),n=!0):(this.target=null,this.connectOnDrop&&null!=g&&1==this.cells.length&&c.getModel().isVertex(g)&&c.isCellConnectable(g)&&(m=c.getView().getState(g),null!=m&&(g=null==c.getEdgeValidationError(null,this.cell,g)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,
this.setHighlightColor(g),n=!0)));null!=m&&n?this.highlight.highlight(m):this.highlight.hide();null!=this.guide&&this.useGuidesForEvent(b)?(d=this.guide.move(this.bounds,d,f,e),k=!1):d=this.graph.snapDelta(d,this.bounds,!f,!1,!1);null!=this.guide&&k&&this.guide.hide();c.isConstrainedEvent(b.getEvent())&&(Math.abs(d.x)>Math.abs(d.y)?d.y=0:d.x=0);this.checkPreview();if(this.currentDx!=d.x||this.currentDy!=d.y)this.currentDx=d.x,this.currentDy=d.y,this.updatePreview()}this.updateHint(b);this.consumeMouseEvent(mxEvent.MOUSE_MOVE,
b);mxEvent.consume(b.getEvent())}};mxGraphHandler.prototype.updatePreview=function(a){this.livePreviewUsed&&!a?null!=this.cells&&(this.setHandlesVisibleForCells(this.graph.getSelectionCells(),!1),this.updateLivePreview(this.currentDx,this.currentDy)):this.updatePreviewShape()};
mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx),Math.round(this.pBounds.y+this.currentDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())};
mxGraphHandler.prototype.updateLivePreview=function(a,b){if(!this.suspended){var c=[];null!=this.allCells&&this.allCells.visit(mxUtils.bind(this,function(d,e){if(null==this.graph.view.getState(e.cell))e.destroy();else{var f=e.clone();c.push([e,f]);null!=e.shape&&(null==e.shape.originalPointerEvents&&(e.shape.originalPointerEvents=e.shape.pointerEvents),e.shape.pointerEvents=!1,null!=e.text&&(null==e.text.originalPointerEvents&&(e.text.originalPointerEvents=e.text.pointerEvents),e.text.pointerEvents=
!1));this.graph.model.isVertex(e.cell)&&(e.x+=a,e.y+=b,this.cloning||(e.view.graph.cellRenderer.redraw(e,!0),e.view.invalidate(e.cell),e.invalid=!1,null!=e.control&&null!=e.control.node&&(e.control.node.style.visibility="hidden")))}}));if(0==c.length)this.reset();else{for(var d=this.graph.view.scale,e=0;e<c.length;e++){var f=c[e][0];if(this.graph.model.isEdge(f.cell)){var g=this.graph.getCellGeometry(f.cell),k=[];if(null!=g&&null!=g.points)for(var l=0;l<g.points.length;l++)null!=g.points[l]&&k.push(new mxPoint(g.points[l].x+
a/d,g.points[l].y+b/d));var g=f.visibleSourceState,l=f.visibleTargetState,m=c[e][1].absolutePoints;null!=g&&this.isCellMoving(g.cell)?f.view.updateFixedTerminalPoint(f,g,!0,this.graph.getConnectionConstraint(f,g,!0)):(g=m[0],f.setAbsoluteTerminalPoint(new mxPoint(g.x+a,g.y+b),!0),g=null);null!=l&&this.isCellMoving(l.cell)?f.view.updateFixedTerminalPoint(f,l,!1,this.graph.getConnectionConstraint(f,l,!1)):(l=m[m.length-1],f.setAbsoluteTerminalPoint(new mxPoint(l.x+a,l.y+b),!1),l=null);f.view.updatePoints(f,
k,g,l);f.view.updateFloatingTerminalPoints(f,g,l);f.view.updateEdgeLabelOffset(f);f.invalid=!1;this.cloning||f.view.graph.cellRenderer.redraw(f,!0)}}this.graph.view.validate();this.redrawHandles(c);this.resetPreviewStates(c)}}};mxGraphHandler.prototype.redrawHandles=function(a){for(var b=0;b<a.length;b++){var c=this.graph.selectionCellsHandler.getHandler(a[b][0].cell);null!=c&&c.redraw(!0)}};mxGraphHandler.prototype.resetPreviewStates=function(a){for(var b=0;b<a.length;b++)a[b][0].setState(a[b][1])};
mxGraphHandler.prototype.suspend=function(){this.suspended||(this.livePreviewUsed&&this.updateLivePreview(0,0),null!=this.shape&&(this.shape.node.style.visibility="hidden"),null!=this.guide&&this.guide.setVisible(!1),this.suspended=!0)};mxGraphHandler.prototype.resume=function(){this.suspended&&(this.suspended=null,this.livePreviewUsed&&(this.livePreviewActive=!0),null!=this.shape&&(this.shape.node.style.visibility="visible"),null!=this.guide&&this.guide.setVisible(!0))};
mxGraphHandler.prototype.resetLivePreview=function(){null!=this.allCells&&(this.allCells.visit(mxUtils.bind(this,function(a,b){null!=b.shape&&null!=b.shape.originalPointerEvents&&(b.shape.pointerEvents=b.shape.originalPointerEvents,b.shape.originalPointerEvents=null,null!=b.text&&(b.text.pointerEvents=b.text.originalPointerEvents,b.text.originalPointerEvents=null));null!=b.control&&null!=b.control.node&&"hidden"==b.control.node.style.visibility&&(b.control.node.style.visibility="");b.view.invalidate(b.cell)})),
this.graph.view.validate())};mxGraphHandler.prototype.setHandlesVisibleForCells=function(a,b){for(var c=0;c<a.length;c++){var d=this.graph.selectionCellsHandler.getHandler(a[c]);null!=d&&(d.setHandlesVisible(b),b&&d.redraw())}};mxGraphHandler.prototype.setHighlightColor=function(a){null!=this.highlight&&this.highlight.setHighlightColor(a)};
mxGraphHandler.prototype.resetLivePreview=function(){null!=this.allCells&&(this.allCells.visit(mxUtils.bind(this,function(a,b){null!=b.shape&&null!=b.shape.originalPointerEvents&&(b.shape.pointerEvents=b.shape.originalPointerEvents,b.shape.originalPointerEvents=null,b.shape.bounds=null,null!=b.text&&(b.text.pointerEvents=b.text.originalPointerEvents,b.text.originalPointerEvents=null));null!=b.control&&null!=b.control.node&&"hidden"==b.control.node.style.visibility&&(b.control.node.style.visibility=
"");b.view.invalidate(b.cell)})),this.graph.view.validate())};mxGraphHandler.prototype.setHandlesVisibleForCells=function(a,b){if(this.handlesVisible!=b){this.handlesVisible=b;for(var c=0;c<a.length;c++){var d=this.graph.selectionCellsHandler.getHandler(a[c]);null!=d&&(d.setHandlesVisible(b),b&&d.redraw())}}};mxGraphHandler.prototype.setHighlightColor=function(a){null!=this.highlight&&this.highlight.setHighlightColor(a)};
mxGraphHandler.prototype.mouseUp=function(a,b){if(!b.isConsumed())if(this.livePreviewUsed&&this.resetLivePreview(),null==this.cell||null==this.first||null==this.shape&&!this.livePreviewUsed||null==this.currentDx||null==this.currentDy)this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(b);else{var c=this.graph,d=b.getCell();if(this.connectOnDrop&&null==this.target&&null!=d&&c.getModel().isVertex(d)&&c.isCellConnectable(d)&&c.isEdgeValid(null,this.cell,d))c.connectionHandler.connect(this.cell,
d,b.getEvent());else{var d=c.isCloneEvent(b.getEvent())&&c.isCellsCloneable()&&this.isCloneEnabled(),e=c.getView().scale,f=this.roundLength(this.currentDx/e),e=this.roundLength(this.currentDy/e),g=this.target;c.isSplitEnabled()&&c.isSplitTarget(g,this.cells,b.getEvent())?c.splitEdge(g,this.cells,null,f,e):this.moveCells(this.cells,f,e,d,this.target,b.getEvent())}}this.cellWasClicked&&this.consumeMouseEvent(mxEvent.MOUSE_UP,b);this.reset()};
mxGraphHandler.prototype.selectDelayed=function(a){this.graph.isCellSelected(this.cell)&&this.graph.popupMenuHandler.isPopupTrigger(a)||this.graph.selectCellForEvent(this.cell,a.getEvent())};
@ -1411,7 +1413,7 @@ mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,f){d&&(a=this.graph.getClo
this.graph.model.getParent(a[l]);null==m||k.get(m)||(k.put(m,!0),g.push(m))}}a=this.graph.moveCells(a,b,c,d,e,f);b=[];for(l=0;l<g.length;l++)this.shouldRemoveParent(g[l])&&b.push(g[l]);this.graph.removeCells(b,!1)}finally{this.graph.getModel().endUpdate()}d&&this.graph.setSelectionCells(a);this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(a[0])};
mxGraphHandler.prototype.shouldRemoveParent=function(a){a=this.graph.view.getState(a);return null!=a&&(this.graph.model.isEdge(a.cell)||this.graph.model.isVertex(a.cell))&&this.graph.isCellDeletable(a.cell)&&0==this.graph.model.getChildCount(a.cell)&&this.graph.isTransparentState(a)};
mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null);null!=this.guide&&(this.guide.destroy(),this.guide=null);null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)};
mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this);this.graph.removeListener(this.panHandler);null!=this.escapeHandler&&(this.graph.removeListener(this.escapeHandler),this.escapeHandler=null);null!=this.refreshHandler&&(this.graph.getModel().removeListener(this.refreshHandler),this.refreshHandler=null);this.destroyShapes();this.removeHint()};
mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this);this.graph.removeListener(this.panHandler);null!=this.escapeHandler&&(this.graph.removeListener(this.escapeHandler),this.escapeHandler=null);null!=this.refreshHandler&&(this.graph.getModel().removeListener(this.refreshHandler),this.refreshHandler=null);mxEvent.removeListener(document,"keydown",this.keyHandler);mxEvent.removeListener(document,"keyup",this.keyHandler);this.destroyShapes();this.removeHint()};
function mxPanningHandler(a){null!=a&&(this.graph=a,this.graph.addMouseListener(this),this.forcePanningHandler=mxUtils.bind(this,function(a,c){var b=c.getProperty("eventName"),e=c.getProperty("event");b==mxEvent.MOUSE_DOWN&&this.isForcePanningEvent(e)&&(this.start(e),this.active=!0,this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",e)),e.consume())}),this.graph.addListener(mxEvent.FIRE_MOUSE_EVENT,this.forcePanningHandler),this.gestureHandler=mxUtils.bind(this,function(a,c){if(this.isPinchEnabled()){var b=
c.getProperty("event");mxEvent.isConsumed(b)||"gesturestart"!=b.type?"gestureend"==b.type&&null!=this.initialScale&&(this.initialScale=null):(this.initialScale=this.graph.view.scale,this.active||null==this.mouseDownEvent||(this.start(this.mouseDownEvent),this.mouseDownEvent=null));null!=this.initialScale&&this.zoomGraph(b)}}),this.graph.addListener(mxEvent.GESTURE,this.gestureHandler),this.mouseUpListener=mxUtils.bind(this,function(){this.active&&this.reset()}),mxEvent.addListener(document,"mouseup",
this.mouseUpListener))}mxPanningHandler.prototype=new mxEventSource;mxPanningHandler.prototype.constructor=mxPanningHandler;mxPanningHandler.prototype.graph=null;mxPanningHandler.prototype.useLeftButtonForPanning=!1;mxPanningHandler.prototype.usePopupTrigger=!0;mxPanningHandler.prototype.ignoreCell=!1;mxPanningHandler.prototype.previewEnabled=!0;mxPanningHandler.prototype.useGrid=!1;mxPanningHandler.prototype.panningEnabled=!0;mxPanningHandler.prototype.pinchEnabled=!0;
@ -1468,8 +1470,9 @@ mxEvent.isAltDown(a.getEvent())&&null!=a.getState()||this.marker.highlight.isHig
mxConnectionHandler.prototype.updateCurrentState=function(a,b){this.constraintHandler.update(a,null==this.first,!1,null==this.first||a.isSource(this.marker.highlight.shape)?null:b);if(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint)null!=this.marker.highlight&&null!=this.marker.highlight.state&&this.marker.highlight.state.cell==this.constraintHandler.currentFocus.cell?"transparent"!=this.marker.highlight.shape.stroke&&(this.marker.highlight.shape.stroke="transparent",
this.marker.highlight.repaint()):this.marker.markCell(this.constraintHandler.currentFocus.cell,"transparent"),null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,this.constraintHandler.currentFocus.cell),null==this.error&&(this.currentState=this.constraintHandler.currentFocus),(null!=this.error||null!=this.currentState&&!this.isCellEnabled(this.currentState.cell))&&this.constraintHandler.reset());else{this.graph.isIgnoreTerminalEvent(a.getEvent())?(this.marker.reset(),this.currentState=
null):(this.marker.process(a),this.currentState=this.marker.getValidState());null==this.currentState||this.isCellEnabled(this.currentState.cell)||(this.constraintHandler.reset(),this.marker.reset(),this.currentState=null);var c=this.isOutlineConnectEvent(a);null!=this.currentState&&c&&(a.isSource(this.marker.highlight.shape)&&(b=new mxPoint(a.getGraphX(),a.getGraphY())),c=this.graph.getOutlineConstraint(b,this.currentState,a),this.constraintHandler.setFocus(a,this.currentState,!1),this.constraintHandler.currentConstraint=
c,this.constraintHandler.currentPoint=b);this.outlineConnect&&null!=this.marker.highlight&&null!=this.marker.highlight.shape&&(c=this.graph.view.scale,null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(this.marker.highlight.shape.stroke=mxConstants.OUTLINE_HIGHLIGHT_COLOR,this.marker.highlight.shape.strokewidth=mxConstants.OUTLINE_HIGHLIGHT_STROKEWIDTH/c/c,this.marker.highlight.repaint()):this.marker.hasValidState()&&(this.marker.getValidState()!=a.getState()?
(this.marker.highlight.shape.stroke="transparent",this.currentState=null):this.marker.highlight.shape.stroke=mxConstants.DEFAULT_VALID_COLOR,this.marker.highlight.shape.strokewidth=mxConstants.HIGHLIGHT_STROKEWIDTH/c/c,this.marker.highlight.repaint()))}};mxConnectionHandler.prototype.isCellEnabled=function(a){return!0};mxConnectionHandler.prototype.convertWaypoint=function(a){var b=this.graph.getView().getScale(),c=this.graph.getView().getTranslate();a.x=a.x/b-c.x;a.y=a.y/b-c.y};
c,this.constraintHandler.currentPoint=b);this.outlineConnect&&null!=this.marker.highlight&&null!=this.marker.highlight.shape&&(c=this.graph.view.scale,null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(this.marker.highlight.shape.stroke=mxConstants.OUTLINE_HIGHLIGHT_COLOR,this.marker.highlight.shape.strokewidth=mxConstants.OUTLINE_HIGHLIGHT_STROKEWIDTH/c/c,this.marker.highlight.repaint()):this.marker.hasValidState()&&(this.graph.isCellConnectable(a.getCell())&&
this.marker.getValidState()!=a.getState()?(this.marker.highlight.shape.stroke="transparent",this.currentState=null):this.marker.highlight.shape.stroke=mxConstants.DEFAULT_VALID_COLOR,this.marker.highlight.shape.strokewidth=mxConstants.HIGHLIGHT_STROKEWIDTH/c/c,this.marker.highlight.repaint()))}};mxConnectionHandler.prototype.isCellEnabled=function(a){return!0};
mxConnectionHandler.prototype.convertWaypoint=function(a){var b=this.graph.getView().getScale(),c=this.graph.getView().getTranslate();a.x=a.x/b-c.x;a.y=a.y/b-c.y};
mxConnectionHandler.prototype.snapToPreview=function(a,b){if(!mxEvent.isAltDown(a.getEvent())&&null!=this.previous){var c=this.graph.gridSize*this.graph.view.scale/2,d=null!=this.sourceConstraint?this.first:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());Math.abs(d.x-a.getGraphX())<c&&(b.x=d.x);Math.abs(d.y-a.getGraphY())<c&&(b.y=d.y)}};
mxConnectionHandler.prototype.mouseMove=function(a,b){if(b.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{this.isEnabled()||null==this.currentState||(this.destroyIcons(),this.currentState=null);var c=this.graph.getView(),d=c.scale,e=c.translate,c=new mxPoint(b.getGraphX(),b.getGraphY());this.error=null;this.graph.isGridEnabledEvent(b.getEvent())&&(c=new mxPoint((this.graph.snap(c.x/d-e.x)+e.x)*d,(this.graph.snap(c.y/d-e.y)+e.y)*d));
this.snapToPreview(b,c);this.currentPoint=c;(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&(null!=this.shape||null==this.first||Math.abs(b.getGraphX()-this.first.x)>this.graph.tolerance||Math.abs(b.getGraphY()-this.first.y)>this.graph.tolerance)&&this.updateCurrentState(b,c);if(null!=this.first){var f=null,d=c;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(f=this.constraintHandler.currentConstraint,
@ -1645,13 +1648,13 @@ mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){var b=mxUtils.getOffse
mxEvent.isAltDown(a.getEvent())&&null!=a.getState()||this.marker.highlight.isHighlightAt(d,c)||(f!=d||b!=c)&&null==a.getState()&&this.marker.highlight.isHighlightAt(f,b))};
mxEdgeHandler.prototype.updatePreviewState=function(a,b,c,d,e){var f=this.isSource?c:this.state.getVisibleTerminalState(!0),g=this.isTarget?c:this.state.getVisibleTerminalState(!1),k=this.graph.getConnectionConstraint(a,f,!0),l=this.graph.getConnectionConstraint(a,g,!1),m=this.constraintHandler.currentConstraint;null==m&&e&&(null!=c?(d.isSource(this.marker.highlight.shape)&&(b=new mxPoint(d.getGraphX(),d.getGraphY())),m=this.graph.getOutlineConstraint(b,c,d),this.constraintHandler.setFocus(d,c,this.isSource),
this.constraintHandler.currentConstraint=m,this.constraintHandler.currentPoint=b):m=new mxConnectionConstraint);if(this.outlineConnect&&null!=this.marker.highlight&&null!=this.marker.highlight.shape){var n=this.graph.view.scale;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(this.marker.highlight.shape.stroke=e?mxConstants.OUTLINE_HIGHLIGHT_COLOR:"transparent",this.marker.highlight.shape.strokewidth=mxConstants.OUTLINE_HIGHLIGHT_STROKEWIDTH/n/n,this.marker.highlight.repaint()):
this.marker.hasValidState()&&(this.marker.highlight.shape.stroke=this.marker.getValidState()==d.getState()?mxConstants.DEFAULT_VALID_COLOR:"transparent",this.marker.highlight.shape.strokewidth=mxConstants.HIGHLIGHT_STROKEWIDTH/n/n,this.marker.highlight.repaint())}this.isSource?k=m:this.isTarget&&(l=m);if(this.isSource||this.isTarget)null!=m&&null!=m.point?(a.style[this.isSource?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X]=m.point.x,a.style[this.isSource?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y]=
m.point.y):(delete a.style[this.isSource?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X],delete a.style[this.isSource?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y]);a.setVisibleTerminalState(f,!0);a.setVisibleTerminalState(g,!1);this.isSource&&null==f||a.view.updateFixedTerminalPoint(a,f,!0,k);this.isTarget&&null==g||a.view.updateFixedTerminalPoint(a,g,!1,l);(this.isSource||this.isTarget)&&null==c&&(a.setAbsoluteTerminalPoint(b,this.isSource),null==this.marker.getMarkedState()&&(this.error=
this.graph.allowDanglingEdges?null:""));a.view.updatePoints(a,this.points,f,g);a.view.updateFloatingTerminalPoints(a,f,g)};
this.marker.hasValidState()&&(this.marker.highlight.shape.stroke=this.graph.isCellConnectable(d.getCell())&&this.marker.getValidState()!=d.getState()?"transparent":mxConstants.DEFAULT_VALID_COLOR,this.marker.highlight.shape.strokewidth=mxConstants.HIGHLIGHT_STROKEWIDTH/n/n,this.marker.highlight.repaint())}this.isSource?k=m:this.isTarget&&(l=m);if(this.isSource||this.isTarget)null!=m&&null!=m.point?(a.style[this.isSource?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X]=m.point.x,a.style[this.isSource?
mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y]=m.point.y):(delete a.style[this.isSource?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X],delete a.style[this.isSource?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y]);a.setVisibleTerminalState(f,!0);a.setVisibleTerminalState(g,!1);this.isSource&&null==f||a.view.updateFixedTerminalPoint(a,f,!0,k);this.isTarget&&null==g||a.view.updateFixedTerminalPoint(a,g,!1,l);(this.isSource||this.isTarget)&&null==c&&(a.setAbsoluteTerminalPoint(b,this.isSource),
null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:""));a.view.updatePoints(a,this.points,f,g);a.view.updateFloatingTerminalPoints(a,f,g)};
mxEdgeHandler.prototype.mouseMove=function(a,b){if(null!=this.index&&null!=this.marker){this.currentPoint=this.getPointForEvent(b);this.error=null;!this.graph.isIgnoreTerminalEvent(b.getEvent())&&mxEvent.isShiftDown(b.getEvent())&&null!=this.snapPoint&&(Math.abs(this.snapPoint.x-this.currentPoint.x)<Math.abs(this.snapPoint.y-this.currentPoint.y)?this.currentPoint.x=this.snapPoint.x:this.currentPoint.y=this.snapPoint.y);if(this.index<=mxEvent.CUSTOM_HANDLE&&this.index>mxEvent.VIRTUAL_HANDLE)null!=
this.customHandles&&this.customHandles[mxEvent.CUSTOM_HANDLE-this.index].processEvent(b);else if(this.isLabel)this.label.x=this.currentPoint.x,this.label.y=this.currentPoint.y;else{this.points=this.getPreviewPoints(this.currentPoint,b);var c=this.isSource||this.isTarget?this.getPreviewTerminalState(b):null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint)this.currentPoint=this.constraintHandler.currentPoint.clone();
else if(this.outlineConnect){var d=this.isSource||this.isTarget?this.isOutlineConnectEvent(b):!1;d?c=this.marker.highlight.state:null!=c&&c!=b.getState()&&null!=this.marker.highlight.shape&&(this.marker.highlight.shape.stroke="transparent",this.marker.highlight.repaint(),c=null)}null==c||this.isCellEnabled(c.cell)||(c=null,this.marker.reset());var e=this.clonePreviewState(this.currentPoint,null!=c?c.cell:null);this.updatePreviewState(e,this.currentPoint,c,b,d);this.setPreviewColor(null==this.error?
this.marker.validColor:this.marker.invalidColor);this.abspoints=e.absolutePoints;this.active=!0}this.updateHint(b,this.currentPoint);this.drawPreview();mxEvent.consume(b.getEvent());b.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(b)&&b.consume(!1)};
else if(this.outlineConnect){var d=this.isSource||this.isTarget?this.isOutlineConnectEvent(b):!1;d?c=this.marker.highlight.state:null!=c&&c!=b.getState()&&this.graph.isCellConnectable(b.getCell())&&null!=this.marker.highlight.shape&&(this.marker.highlight.shape.stroke="transparent",this.marker.highlight.repaint(),c=null)}null==c||this.isCellEnabled(c.cell)||(c=null,this.marker.reset());var e=this.clonePreviewState(this.currentPoint,null!=c?c.cell:null);this.updatePreviewState(e,this.currentPoint,
c,b,d);this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor);this.abspoints=e.absolutePoints;this.active=!0}this.updateHint(b,this.currentPoint);this.drawPreview();mxEvent.consume(b.getEvent());b.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(b)&&b.consume(!1)};
mxEdgeHandler.prototype.mouseUp=function(a,b){if(null!=this.index&&null!=this.marker){var c=this.state.cell,d=this.index;this.index=null;if(b.getX()!=this.startX||b.getY()!=this.startY){var e=!this.graph.isIgnoreTerminalEvent(b.getEvent())&&this.graph.isCloneEvent(b.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable();if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(d<=mxEvent.CUSTOM_HANDLE&&d>mxEvent.VIRTUAL_HANDLE){if(null!=this.customHandles){var f=
this.graph.getModel();f.beginUpdate();try{this.customHandles[mxEvent.CUSTOM_HANDLE-d].execute()}finally{f.endUpdate()}}}else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget)if(d=null,null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(d=this.constraintHandler.currentFocus.cell),null==d&&this.marker.hasValidState()&&null!=this.marker.highlight&&null!=this.marker.highlight.shape&&"transparent"!=this.marker.highlight.shape.stroke&&
"white"!=this.marker.highlight.shape.stroke&&(d=this.marker.validState.cell),null!=d){var f=this.graph.getModel(),g=f.getParent(c);f.beginUpdate();try{if(e){var k=f.getGeometry(c),e=this.graph.cloneCell(c);f.add(g,e,f.getChildCount(g));null!=k&&(k=k.clone(),f.setGeometry(e,k));var l=f.getTerminal(c,!this.isSource);this.graph.connectCell(e,l,!this.isSource);c=e}c=this.connect(c,d,this.isSource,e,b)}finally{f.endUpdate()}}else this.graph.isAllowDanglingEdges()&&(f=this.abspoints[this.isSource?0:this.abspoints.length-

View file

@ -1,7 +1,7 @@
CACHE MANIFEST
# THIS FILE WAS GENERATED. DO NOT MODIFY!
# 01/28/2020 01:01 PM
# 02/02/2020 02:37 PM
app.html
index.html?offline=1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 101 KiB

View file

@ -0,0 +1,54 @@
<?xml version="1.0" standalone="no"?>
<svg contentScriptType="text/ecmascript" zoomAndPan="magnify" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" baseProfile="full"
contentStyleType="text/css" id="Layer_1" sodipodi:docname="PowerInstance.svg" enable-background="new 0 0 124.8 116"
version="1.1" xml:space="preserve" width="101.2969" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:cc="http://creativecommons.org/ns#"
preserveAspectRatio="xMidYMid meet" inkscape:version="0.92.3 (2405546, 2018-03-11)" viewBox="0 0 101.2969 101.29688"
height="101.29688" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px">
<defs id="defs1640">
<linearGradient id="linearGradient2232" inkscape:collect="always">
<stop style="stop-color:#008a80;stop-opacity:1" offset="0" id="stop2228"/>
<stop style="stop-color:#9ccc50;stop-opacity:1" offset="1" id="stop2230"/></linearGradient>
<linearGradient id="linearGradient2224" inkscape:collect="always">
<stop style="stop-color:#038e80;stop-opacity:1" offset="0" id="stop2220"/>
<stop style="stop-color:#9ccc50;stop-opacity:1" offset="1" id="stop2222"/></linearGradient>
<linearGradient id="linearGradient2216" inkscape:collect="always">
<stop style="stop-color:#008a88;stop-opacity:1" offset="0" id="stop2212"/>
<stop style="stop-color:#91d9f6;stop-opacity:1" offset="1" id="stop2214"/></linearGradient>
<linearGradient id="linearGradient2208" inkscape:collect="always">
<stop style="stop-color:#008884;stop-opacity:1;" offset="0" id="stop2204"/>
<stop style="stop-color:#91d9f6;stop-opacity:1" offset="1" id="stop2206"/></linearGradient>
<linearGradient x1="203.13477" xlink:href="#linearGradient2208"
y1="8.3691406" x2="203.13477" gradientUnits="userSpaceOnUse" y2="109.66602" id="linearGradient2210"
inkscape:collect="always"/>
<linearGradient x1="203.13477" xlink:href="#linearGradient2216"
y1="31.867188" x2="203.13477" gradientUnits="userSpaceOnUse" y2="86.166016" id="linearGradient2218"
inkscape:collect="always"/>
<linearGradient x1="196.41211" xlink:href="#linearGradient2224"
y1="59.017578" x2="195.96873" gradientUnits="userSpaceOnUse" y2="43.87558" id="linearGradient2226"
inkscape:collect="always"/>
<linearGradient x1="203.16788" xlink:href="#linearGradient2232"
y1="97.728539" x2="203.13477" gradientUnits="userSpaceOnUse" y2="20.302734" id="linearGradient2234"
inkscape:collect="always"/></defs>
<path style=
"color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient2210);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8.31496048;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 50.6485,0 C 22.7256,0 0,22.725527 0,50.648437 h 8.3145 c 0,-23.429172 18.9048,-42.3339836
42.334,-42.3339836 23.4291,0 42.332,18.9048116 42.332,42.3339836 0,23.429172 -18.9029,42.332032
-42.332,42.332032 v 8.316411 c 27.9229,0 50.6484,-22.725532 50.6484,-50.648443 C 101.2969,22.725527 78.5714,0
50.6485,0 Z"/>
<path style=
"color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient2234);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8.31496048;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 50.6485,11.933593 c -21.3326,0 -38.7149,17.382235 -38.7149,38.714844 0,21.332609 17.3823,38.714844
38.7149,38.714844 21.3326,0 38.7148,-17.382235 38.7148,-38.714844 h -8.3144 c 0,16.838871 -13.5616,30.400391
-30.4004,30.400391 -16.8389,0 -30.4004,-13.56152 -30.4004,-30.400391 0,-16.838871 13.5615,-30.400391
30.4004,-30.40039 z"/>
<path style=
"color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient2218);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8.31496048;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 50.6485,23.498047 v 8.316406 c 10.4511,0 18.8339,8.382852 18.8339,18.833984 0,10.451133 -8.3828,18.833985
-18.8339,18.833984 v 8.314454 c 14.9448,0 27.1484,-12.203567 27.1484,-27.148438 0,-14.944871 -12.2036,-27.150391
-27.1484,-27.15039 z"/>
<path style=
"color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient2226);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8.31496048;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 50.6485,35.611328 c -8.2558,0 -15.0371,6.781381 -15.0371,15.037109 h 8.3144 c 0,-3.761989 2.9607,-6.722656
6.7227,-6.722656 z"/></svg>

After

Width:  |  Height:  |  Size: 9.5 KiB

View file

@ -0,0 +1,72 @@
<?xml version="1.0" standalone="no"?>
<svg contentScriptType="text/ecmascript" zoomAndPan="magnify" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" baseProfile="full"
contentStyleType="text/css" id="Layer_1" sodipodi:docname="TransitGateway.svg" enable-background="new 0 0 124.8 116"
version="1.1" xml:space="preserve" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:cc="http://creativecommons.org/ns#"
preserveAspectRatio="xMidYMid meet" inkscape:version="0.92.3 (2405546, 2018-03-11)" viewBox="0 0 124.8 116" xmlns="http://www.w3.org/2000/svg"
x="0px" y="0px">
<defs id="defs2336">
<linearGradient id="linearGradient2442" inkscape:collect="always">
<stop style="stop-color:#00a5c6;stop-opacity:0.87843138" offset="0" id="stop2438"/>
<stop style="stop-color:#eff8fa;stop-opacity:0.98823529" offset="1" id="stop2440"/></linearGradient>
<linearGradient id="linearGradient2434" inkscape:collect="always">
<stop style="stop-color:#00a6c6;stop-opacity:0.8392157" offset="0" id="stop2430"/>
<stop style="stop-color:#a1dde9;stop-opacity:0.87058824" offset="1" id="stop2432"/></linearGradient>
<linearGradient id="linearGradient2426" inkscape:collect="always">
<stop style="stop-color:#2b8fe8;stop-opacity:0.7764706" offset="0" id="stop2422"/>
<stop style="stop-color:#f5f9fe;stop-opacity:0.98431373" offset="1" id="stop2424"/></linearGradient>
<linearGradient id="linearGradient2418" inkscape:collect="always">
<stop style="stop-color:#f4f9fe;stop-opacity:1" offset="0" id="stop2414"/>
<stop style="stop-color:#2b8fe8;stop-opacity:1" offset="1" id="stop2416"/></linearGradient>
<linearGradient gradientTransform="translate(-2.3894457e-6)" inkscape:collect="always" id="linearGradient2420"
gradientUnits="userSpaceOnUse" x1="42.63681" y1="11.249787" x2="79.849594" y2="11.249787" xlink:href=
"#linearGradient2418"
/>
<linearGradient gradientTransform="translate(-2.3894457e-6)" inkscape:collect="always" id="linearGradient2428"
gradientUnits="userSpaceOnUse" x1="104.16272" y1="39.751362" x2="103.9639" y2="74.368668" xlink:href=
"#linearGradient2426"
/>
<linearGradient gradientTransform="translate(-2.3894457e-6)" inkscape:collect="always" id="linearGradient2436"
gradientUnits="userSpaceOnUse" x1="16.785828" y1="42.248394" x2="16.99437" y2="71.87339" xlink:href=
"#linearGradient2434"
/>
<linearGradient gradientTransform="translate(-2.3894457e-6)" inkscape:collect="always" id="linearGradient2444"
gradientUnits="userSpaceOnUse" x1="44.565903" y1="102.61189" x2="75.326401" y2="102.61189" xlink:href=
"#linearGradient2442"
/></defs>
<linearGradient x1="43.8353" gradientUnits="userSpaceOnUse" y1="12.7512" x2="80.3484" y2="12.7512" id="SVGID_4_">
<stop offset="0.1181" style="stop-color:#F4F9FE" id="stop2298"/>
<stop offset="0.7124" style="stop-color:#2B8FE8" id="stop2300"/> </linearGradient>
<path style=
"color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#071e80;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 24.782078,13.994481 a 8.0035858,8.0035858 0 0 0 -8.00195,8.003906 8.0035858,8.0035858 0 0 0
8.00195,8.001953 8.0035858,8.0035858 0 0 0 3.77344,-0.949218 l 21.16406,21.113281 c -1.82751,2.479453
-2.92382,5.526232 -2.92382,8.820312 0,3.306164 1.10561,6.361786 2.94531,8.845704 L 28.653178,88.96909 a
8.0035858,8.0035858 0 0 0 -3.8711,-1.001953 8.0035858,8.0035858 0 0 0 -8.00195,8.003906 8.0035858,8.0035858 0 0
0 8.00195,8.003907 8.0035858,8.0035858 0 0 0 8.00391,-8.003907 8.0035858,8.0035858 0 0 0 -0.96875,-3.802734 l
21.10742,-21.160156 c 2.47953,1.827317 5.52606,2.923828 8.82032,2.923828 3.30568,0 6.36159,-1.104525
8.8457,-2.943359 l 21.13672,21.085937 a 8.0035858,8.0035858 0 0 0 -1.02344,3.896484 8.0035858,8.0035858 0 0 0
8.00195,8.003907 8.0035858,8.0035858 0 0 0 8.003912,-8.003907 8.0035858,8.0035858 0 0 0 -8.003912,-8.003906
8.0035858,8.0035858 0 0 0 -3.77343,0.949219 L 73.770368,67.803075 c 1.82719,-2.478946 2.92382,-5.524604
2.92382,-8.81836 0,-3.306475 -1.1053,-6.363236 -2.94531,-8.847656 L 94.836768,29.00034 a 8.0035858,8.0035858 0 0
0 3.86914,1 8.0035858,8.0035858 0 0 0 8.003912,-8.001953 8.0035858,8.0035858 0 0 0 -8.003912,-8.003906
8.0035858,8.0035858 0 0 0 -8.00195,8.003906 8.0035858,8.0035858 0 0 0 0.96875,3.802735 l -21.10742,21.158203 c
-2.47946,-1.827518 -5.52624,-2.923828 -8.82031,-2.923828 -3.30551,0 -6.36168,1.104331 -8.84571,2.943359 L
31.762548,25.892919 a 8.0035858,8.0035858 0 0 0 1.02344,-3.894532 8.0035858,8.0035858 0 0 0 -8.00391,-8.003906 z
m 36.9629,37.140625 c 4.37662,0 7.84765,3.472982 7.84765,7.849609 0,4.376628 -3.47103,7.847657 -7.84765,7.847657
-4.37663,0 -7.84766,-3.471029 -7.84766,-7.847657 0,-4.376627 3.47103,-7.849609 7.84766,-7.849609 z"/>
<path style=
"color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient2420);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 80.149258,21.320666 62.482218,3.6135142 42.936478,23.114986 l 4.39747,4.088161 15.13865,-15.104357
13.42622,13.456698 z"/>
<path style=
"color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient2436);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 26.787728,67.974314 16.641078,57.826479 28.239338,46.254496 23.730788,42.277174 8.1558076,57.816879
10.274718,59.940603 22.390188,72.083578 Z"/>
<path d="m 45.060878,94.80573 17.29829,17.33756 13.46221,-13.431715 -4.27384,-4.211529 -9.17875,9.157964
-12.85568,-12.807303 z" id="path2408" inkscape:connector-curvature="0" style=
"color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient2444);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/>
<path d="M 99.966678,74.62096 116.68558,57.939923 98.540498,39.753655 94.219818,43.918086 108.2003,57.930302
95.569228,70.532768 Z" id="rect2346" inkscape:connector-curvature="0" style=
"color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient2428);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/></svg>

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

View file

@ -1362,7 +1362,7 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
try
{
file.saveDelay = new Date().getTime() - t0;
file.saveLevel = 16;
file.saveLevel = 17;
if (resp == null)
{
@ -1375,7 +1375,7 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
if (delta <= 0 || etag0 == resp.etag || (revision && head0 == resp.headRevisionId))
{
file.saveLevel = 17;
file.saveLevel = 18;
var reasons = [];
if (delta <= 0)
@ -1637,6 +1637,7 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
{
file.saveLevel = 15;
var acceptResponse = true;
file.saveLevel = 16;
// Allow for re-auth flow with 3x timeout
var timeoutThread = window.setTimeout(mxUtils.bind(this, function()
@ -1730,8 +1731,15 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
executeSave(false);
}
catch (e)
{
try
{
executeSave(false)
}
catch (e2)
{
criticalError(e2);
}
}
});

View file

@ -4952,6 +4952,7 @@
mxStencilRegistry.libraries['bootstrap'] = [SHAPES_PATH + '/mxBootstrap.js', STENCIL_PATH + '/bootstrap.xml'];
mxStencilRegistry.libraries['gmdl'] = [SHAPES_PATH + '/mxGmdl.js', STENCIL_PATH + '/gmdl.xml'];
mxStencilRegistry.libraries['gcp2'] = [SHAPES_PATH + '/mxGCP2.js', STENCIL_PATH + '/gcp2.xml'];
mxStencilRegistry.libraries['ibm'] = [SHAPES_PATH + '/mxIBM.js', STENCIL_PATH + '/ibm.xml'];
mxStencilRegistry.libraries['cabinets'] = [SHAPES_PATH + '/mxCabinets.js', STENCIL_PATH + '/cabinets.xml'];
mxStencilRegistry.libraries['archimate'] = [SHAPES_PATH + '/mxArchiMate.js'];
mxStencilRegistry.libraries['archimate3'] = [SHAPES_PATH + '/mxArchiMate3.js'];

View file

@ -4054,7 +4054,7 @@
win.close();
}
}
else if (mxClient.IS_IOS && mxClient.IS_SF && this.isOffline())
else if (mxClient.IS_IOS && this.isOffline())
{
// Workaround for "WebKitBlobResource error 1" in mobile Safari
if (!navigator.standalone && mimeType != null && mimeType.substring(0, 6) == 'image/')
@ -4071,9 +4071,10 @@
var a = document.createElement('a');
// Workaround for mxXmlRequest.simulate no longer working in PaleMoon
// if this is used (ie PNG export broken after XML export in PaleMoon).
// if this is used (ie PNG export broken after XML export in PaleMoon)
// and for "WebKitBlobResource error 1" for all browsers on iOS.
var useDownload = navigator.userAgent.indexOf("PaleMoon/") < 0 &&
typeof a.download !== 'undefined';
!mxClient.IS_IOS && typeof a.download !== 'undefined';
// Workaround for Chromium 65 cross-domain anchor download issue
if (mxClient.IS_GC)

View file

@ -3043,6 +3043,13 @@ LucidImporter = {};
}
}
}
else if (text == null && props.t0 != null)
{
if (props.t0.t != null)
{
text = props.t0;
}
}
// TODO: Convert text object to HTML
if (text != null)
@ -3051,6 +3058,7 @@ LucidImporter = {};
{
text.t = text.t.replace(/</g, '&lt;');
text.t = text.t.replace(/>/g, '&gt;');
return text.t;
}
@ -3060,6 +3068,7 @@ LucidImporter = {};
{
text.Value.t = text.Value.t.replace(/</g, '&lt;');
text.Value.t = text.Value.t.replace(/>/g, '&gt;');
return text.Value.t;
}
}
@ -3784,6 +3793,42 @@ LucidImporter = {};
return '';
}
// Adds metadata
function addCustomData(cell, p, graph)
{
for (var property in p)
{
if (p.hasOwnProperty(property) &&
property.toString().startsWith('ShapeData_'))
{
try
{
var data = p[property];
var key = mxUtils.trim(data.Label).replace(/[^a-z0-9]+/ig, '_').
replace(/^\d+/, '').replace(/_+$/, '');
var currentKey = key;
var counter = 0;
// Resolves conflicts by adding counter postfix
while (graph.getAttributeForCell(cell, currentKey) != null)
{
counter++;
currentKey = key + '_' + counter;
}
graph.setAttributeForCell(cell, currentKey, (data.Value != null) ? data.Value : '');
}
catch (e)
{
if (window.console)
{
console.log('Ignored ' + property + ':', e);
}
}
}
}
};
function updateCell(cell, obj, graph)
{
var a = getAction(obj);
@ -3810,28 +3855,7 @@ LucidImporter = {};
cell.style += getStrokeColor(p, a);
}
// Adds custom data
for (var property in p)
{
if (p.hasOwnProperty(property) &&
property.toString().startsWith('ShapeData_'))
{
try
{
var data = p[property];
graph.setAttributeForCell(cell, data.Label.
replace(/[^a-z0-9]/ig, '_').
replace(/^\d*/, '_'), data.Value);
}
catch (e)
{
if (window.console)
{
console.log('Ignored ' + property + ':', e);
}
}
}
}
addCustomData(cell, p, graph);
// Edge style
if (cell.edge)
@ -3916,12 +3940,12 @@ LucidImporter = {};
return v;
};
function createEdge(obj)
function createEdge(obj, graph)
{
var e = new mxCell('', new mxGeometry(0, 0, 100, 100), edgeStyle);
e.geometry.relative = true;
e.edge = true;
updateCell(e, obj);
updateCell(e, obj, graph);
// Adds text labels
var a = getAction(obj);
@ -4087,7 +4111,7 @@ LucidImporter = {};
if (!created)
{
lookup[obj.id] = createVertex(obj);
lookup[obj.id] = createVertex(obj, graph);
queue.push(obj);
}
}
@ -4133,7 +4157,7 @@ LucidImporter = {};
{
var src = (p.Endpoint1.Block != null) ? lookup[p.Endpoint1.Block] : null;
var trg = (p.Endpoint2.Block != null) ? lookup[p.Endpoint2.Block] : null;
var e = createEdge(obj);
var e = createEdge(obj, graph);
if (src == null && p.Endpoint1 != null)
{

View file

@ -12,16 +12,17 @@
this.addPaletteFunctions('basic', mxResources.get('basic'), false,
[
this.createVertexTemplateEntry(s2 + 'rect;fillColor2=none;strokeWidth=1;size=20;indent=5;', 120, 60, '', 'Partial Rectangle'),
this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;top=0;bottom=0;fillColor=none;', 120, 60, '', 'Partial Rectangle'),
this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;right=0;top=0;bottom=0;fillColor=none;routingCenterX=-0.5;', 120, 60, '', 'Partial Rectangle'),
this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;bottom=0;right=0;fillColor=none;', 120, 60, '', 'Partial Rectangle'),
this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;top=0;left=0;fillColor=none;', 120, 60, '', 'Partial Rectangle'),
this.createVertexTemplateEntry(s2 + 'rect;fillColor2=none;strokeWidth=1;size=20;indent=5;', w * 1.2, h * 0.6, '', 'Partial Rectangle'),
this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;top=0;bottom=0;fillColor=none;', w * 1.2, h * 0.6, '', 'Partial Rectangle'),
this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;right=0;top=0;bottom=0;fillColor=none;routingCenterX=-0.5;', w * 1.2, h * 0.6, '', 'Partial Rectangle'),
this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;bottom=0;right=0;fillColor=none;', w * 1.2, h * 0.6, '', 'Partial Rectangle'),
this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;top=0;left=0;fillColor=none;', w * 1.2, h * 0.6, '', 'Partial Rectangle'),
this.createVertexTemplateEntry(s2 + '4_point_star_2;dx=0.8;', w, h, '', '4 Point Star', null, null, this.getTagsForStencil(gn, '4_point_star', dt).join(' ')),
this.createVertexTemplateEntry(s2 + '6_point_star', w, h * 0.9, '', '6 Point Star', null, null, this.getTagsForStencil(gn, '6_point_star', dt).join(' ')),
this.createVertexTemplateEntry(s2 + '8_point_star', w, h, '', '8 Point Star', null, null, this.getTagsForStencil(gn, '8_point_star', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'banner', w, h * 0.5, '', 'Banner', null, null, this.getTagsForStencil(gn, 'banner', dt).join(' ')),
this.createVertexTemplateEntry(s + 'cloud_callout', w * 0.9, h * 0.6, '', 'Cloud Callout', null, null, this.getTagsForStencil(gn, 'cloud_callout', dt).join(' ')),
this.createVertexTemplateEntry(s + 'cloud_rect', w * 1.2, h * 0.9, '', 'Cloud Rectangle', null, null, this.getTagsForStencil(gn, 'cloud_rect', dt + ' rectangle').join(' ')),
this.createVertexTemplateEntry(s2 + 'cone', w, h, '', 'Cone', null, null, this.getTagsForStencil(gn, 'cone', dt).join(' ')),
this.createVertexTemplateEntry(s2 + 'cone2;dx=0.5;dy=0.9;', w, h, '', 'Cone (adjustable)', null, null, this.getTagsForStencil(gn, 'cone', dt).join(' ')),
this.createVertexTemplateEntry(s + 'document', w, h, '', 'Document', null, null, this.getTagsForStencil(gn, 'document', dt).join(' ')),

View file

@ -20,6 +20,8 @@
this.addIBMSocialPalette(d, dt, sb, s);
this.addIBMUsersPalette(d, dt, sb, s);
this.addIBMVPCPalette(d, dt, sb, s);
this.addIBMBoxesPalette(d, dt, sb, s);
this.addIBMConnectorsPalette(d, dt, sb, s);
};
Sidebar.prototype.addIBMAnalyticsPalette = function(d, dt, sb, s)
@ -503,8 +505,6 @@
d, d, '', 'Instance', false, null, this.getTagsForStencil(gn, 'instance', dt).join(' ')),
this.createVertexTemplateEntry(s + 'LoadBalancer.svg;',
d, d, '', 'Load Balancer', false, null, this.getTagsForStencil(gn, 'load balancer', dt).join(' ')),
// this.createVertexTemplateEntry(s + 'BareMetalServer.svg;',
// d, d, '', 'Bare Metal Server', false, null, this.getTagsForStencil(gn, 'bare metal server', dt).join(' ')),
this.createVertexTemplateEntry(s + 'BlockStorage.svg;',
d, d, '', 'Block Storage', false, null, this.getTagsForStencil(gn, 'block storage', dt).join(' ')),
this.createVertexTemplateEntry(s + 'FloatingIP.svg;',
@ -539,129 +539,18 @@
d, d, '', 'Bridge', false, null, this.getTagsForStencil(gn, 'bridge', dt).join(' ')),
this.createVertexTemplateEntry(s + 'CloudServices.svg;',
d, d, '', 'Cloud Services', false, null, this.getTagsForStencil(gn, 'cloud services', dt).join(' ')),
this.addEntry(dt + '', function()
{
var bg1 = new mxCell('', new mxGeometry(0, 0, 320, 200), 'swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=0;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=0;strokeColor=#4376BB;verticalAlign=top;align=left;spacingLeft=5;dashed=0;strokeWidth=1;container=1;');
bg1.vertex = true;
var bg2 = new mxCell('Public', new mxGeometry(15, 0, 30, 30), 'aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;labelBackgroundColor=none;fontSize=12;spacingTop=-5;image;image=img/lib/ibm/vpc/PublicTag.svg;part=1;');
bg2.vertex = true;
bg1.insert(bg2);
var bg3 = new mxCell('Enterprise', new mxGeometry(275, 0, 30, 30), 'aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;labelBackgroundColor=none;fontSize=12;spacingTop=-5;image;image=img/lib/ibm/vpc/EnterpriseTag.svg;part=1;');
bg3.vertex = true;
bg1.insert(bg3);
var bg4 = new mxCell('IBM Cloud', new mxGeometry(60, 0, 200, 200), 'swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=0;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;verticalAlign=top;align=left;spacingLeft=30;spacingTop=1;dashed=0;strokeWidth=1;');
bg4.vertex = true;
bg1.insert(bg4);
var bg5 = new mxCell('', new mxGeometry(0, 0, 30, 30), s + 'CloudTag.svg;part=1;');
bg5.vertex = true;
bg4.insert(bg5);
return sb.createVertexTemplateFromCells([bg1], 320, 200, 'Cloud Universe');
}),
this.addEntry(dt + 'ibm cloud', function()
{
var bg1 = new mxCell('IBM Cloud', new mxGeometry(0, 0, 200, 200), 'swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=0;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;verticalAlign=top;align=left;spacingLeft=30;spacingTop=1;dashed=0;strokeWidth=1;');
bg1.vertex = true;
var bg2 = new mxCell('', new mxGeometry(0, 0, 30, 30), s + 'CloudTag.svg;part=1;');
bg2.vertex = true;
bg1.insert(bg2);
return sb.createVertexTemplateFromCells([bg1], 200, 200, 'IBM Cloud');
}),
this.addEntry(dt + '', function()
{
var bg1 = new mxCell('VPC', new mxGeometry(0, 0, 200, 200), 'swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=0;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#417CB9;verticalAlign=top;align=left;spacingLeft=30;spacingTop=1;dashed=0;strokeWidth=1;');
bg1.vertex = true;
var bg2 = new mxCell('', new mxGeometry(0, 0, 30, 30), s + 'VPCTag.svg;part=1;');
bg2.vertex = true;
bg1.insert(bg2);
return sb.createVertexTemplateFromCells([bg1], 200, 200, 'VPC');
}),
this.addEntry(dt + '', function()
{
var bg1 = new mxCell('Region', new mxGeometry(0, 0, 200, 200), 'swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=0;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=0;strokeColor=#00882B;verticalAlign=top;align=left;spacingLeft=30;dashed=1;strokeWidth=1;container=1;dashPattern=1 1;');
bg1.vertex = true;
var bg2 = new mxCell('', new mxGeometry(0, 0, 30, 30), s + 'RegionTag.svg;part=1;');
bg2.vertex = true;
bg1.insert(bg2);
return sb.createVertexTemplateFromCells([bg1], 200, 200, 'Region');
}),
this.addEntry(dt + '', function()
{
var bg1 = new mxCell('Zone', new mxGeometry(0, 0, 200, 200), 'swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=0;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=0;strokeColor=#00882B;verticalAlign=top;align=left;spacingLeft=30;dashed=1;strokeWidth=1;container=1;');
bg1.vertex = true;
var bg2 = new mxCell('', new mxGeometry(0, 0, 30, 30), s + 'ZoneTag.svg;part=1;');
bg2.vertex = true;
bg1.insert(bg2);
return sb.createVertexTemplateFromCells([bg1], 200, 200, 'Zone');
}),
this.addEntry(dt + '', function()
{
var bg1 = new mxCell('Subnet', new mxGeometry(0, 0, 200, 200), 'swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=0;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=12;strokeColor=#2A8838;verticalAlign=top;align=left;spacingLeft=30;spacingTop=1;dashed=0;strokeWidth=1;');
bg1.vertex = true;
var bg2 = new mxCell('', new mxGeometry(0, 0, 30, 40), s + 'SubnetTag.svg;part=1;');
bg2.vertex = true;
bg1.insert(bg2);
return sb.createVertexTemplateFromCells([bg1], 200, 200, 'Subnet');
}),
this.createVertexTemplateEntry(
'rounded=0;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=0;strokeColor=#FD0000;fillColor=none;verticalAlign=top;align=center;spacingLeft=5;dashed=1;dashPattern=5 2;labelPosition=center;verticalLabelPosition=bottom;strokeWidth=2;',
200, 200, 'Security Group', 'Security Group', true, null, this.getTagsForStencil(gn, '', dt).join(' ')),
this.addEntry(dt + '', function()
{
var bg1 = new mxCell('Classic Infrastructure', new mxGeometry(0, 0, 200, 200), 'swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=0;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=0;strokeColor=#4376BB;verticalAlign=top;align=left;spacingLeft=30;dashed=0;strokeWidth=1;container=1;');
bg1.vertex = true;
var bg2 = new mxCell('', new mxGeometry(0, 0, 30, 30), s + 'ClassicInfrastructure.svg;part=1;');
bg2.vertex = true;
bg1.insert(bg2);
return sb.createVertexTemplateFromCells([bg1], 200, 200, 'Classic Infrastructure');
}),
this.createVertexTemplateEntry('swimlane;fontStyle=0;horizontal=1;collapsible=0;startSize=28;swimlaneLine=0;swimlaneFillColor=none;fillColor=none;rounded=0;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=0;strokeColor=#4376BB;verticalAlign=top;align=left;spacingLeft=30;dashed=0;strokeWidth=1;container=1;',
200, 200, 'Other Group', 'Other Group', true, null, this.getTagsForStencil(gn, '', dt).join(' ')),
this.createVertexTemplateEntry(s + 'CloudTag.svg;',
d * 0.5, d * 0.5, '', 'IBM Cloud tag', false, null, this.getTagsForStencil(gn, 'cloud tag ibm', dt).join(' ')),
this.createVertexTemplateEntry(s + 'VPCTag.svg;',
d * 0.5, d * 0.5, '', 'VPC tag', false, null, this.getTagsForStencil(gn, 'tag', dt).join(' ')),
this.createVertexTemplateEntry(s + 'RegionTag.svg;',
d * 0.5, d * 0.5, '', 'Region tag', false, null, this.getTagsForStencil(gn, 'region tag', dt).join(' ')),
this.createVertexTemplateEntry(s + 'ZoneTag.svg;',
d * 0.5, d * 0.5, '', 'Zone tag', false, null, this.getTagsForStencil(gn, 'zone tag', dt).join(' ')),
this.createVertexTemplateEntry(s + 'SubnetTag2.svg;',
d * 0.5, d * 0.5, '', 'Subnet tag', false, null, this.getTagsForStencil(gn, 'subnet tag', dt).join(' ')),
this.createVertexTemplateEntry(s + 'ClassicInfrastructure.svg;',
d * 0.5, d * 0.5, '', 'Classic Infrastructure', false, null, this.getTagsForStencil(gn, 'classic', dt).join(' ')),
this.createVertexTemplateEntry(s + 'EnterpriseTag.svg;',
d * 0.5, d * 0.5, '', 'Enterprise tag', false, null, this.getTagsForStencil(gn, 'enterprise tag', dt).join(' ')),
this.createVertexTemplateEntry(s + 'PublicTag.svg;',
d * 0.5, d * 0.5, '', 'Public tag', false, null, this.getTagsForStencil(gn, 'public tag', dt).join(' ')),
this.createVertexTemplateEntry(s + 'Internet.svg;',
d, d, '', 'Internet', false, null, this.getTagsForStencil(gn, 'internet', dt).join(' ')),
this.createVertexTemplateEntry(s + 'Enterprise.svg;',
d, d, '', 'Data Center', false, null, this.getTagsForStencil(gn, 'dat acenter', dt).join(' ')),
this.createVertexTemplateEntry(s + 'Enterprise2.svg;',
d, d * 0.8, '', 'Enterprise', false, null, this.getTagsForStencil(gn, 'enterprise', dt).join(' ')),
this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeWidth=1;startArrow=classicThin;startFill=1;',
d, d, '', 'Bidirectional Connector', null, dt + 'bidirectional connector'),
this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=classicThin;endFill=1;rounded=0;strokeWidth=1;',
d, d, '', 'Directional Connector', null, dt + 'directional connector'),
this.createEdgeTemplateEntry('edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=none;endFill=0;rounded=0;strokeWidth=1;',
d, d, '', 'Nondirectional Connector', null, dt + 'nondirectional connector')
this.createVertexTemplateEntry(s + 'PowerInstance.svg;',
d, d, '', 'Power Instance', false, null, this.getTagsForStencil(gn, 'power instance', dt).join(' ')),
this.createVertexTemplateEntry(s + 'TransitGateway.svg;',
d, d, '', 'Transit Gateway', false, null, this.getTagsForStencil(gn, 'transit gateway', dt).join(' ')),
this.createVertexTemplateEntry(s + 'BareMetalServer.svg;',
d, d, '', 'Bare Metal Server', false, null, this.getTagsForStencil(gn, 'bare metal server', dt).join(' '))
];
this.addPalette('ibmVPC', 'IBM / VPC', false, mxUtils.bind(this, function(content)
@ -673,4 +562,91 @@
}));
};
Sidebar.prototype.addIBMBoxesPalette = function(d, dt, sb, s)
{
s += 'boxes/';
var gn = 'boxes box ';
var fns = [
this.createVertexTemplateEntry(
'shape=mxgraph.ibm.box;prType=cloud;fontStyle=0;verticalAlign=top;align=left;spacingLeft=32;spacingTop=4;fillColor=none;rounded=0;whiteSpace=wrap;html=1;strokeColor=#4376BB;strokeWidth=3;dashed=0;container=1;spacing=-4;collapsible=0;',
200, 200, 'IBM Cloud', 'IBM Cloud', true, null, this.getTagsForStencil(gn, 'ibm cloud', dt).join(' ')),
this.createVertexTemplateEntry(
'shape=mxgraph.ibm.box;prType=vpc;fontStyle=0;verticalAlign=top;align=left;spacingLeft=32;spacingTop=4;fillColor=none;rounded=0;whiteSpace=wrap;html=1;strokeColor=#4376BB;strokeWidth=2;dashed=0;container=1;spacing=-4;collapsible=0;',
200, 200, 'VPC', 'VPC', true, null, this.getTagsForStencil(gn, 'vpc virtual private cloud', dt).join(' ')),
this.createVertexTemplateEntry(
'shape=mxgraph.ibm.box;prType=region;fontStyle=0;verticalAlign=top;align=left;spacingLeft=32;spacingTop=4;fillColor=none;rounded=0;whiteSpace=wrap;html=1;strokeColor=#919191;strokeWidth=2;dashed=0;container=1;spacing=-4;collapsible=0;',
200, 200, 'Region', 'Region', true, null, this.getTagsForStencil(gn, 'region', dt).join(' ')),
this.createVertexTemplateEntry(
'shape=mxgraph.ibm.box;prType=zone;fontStyle=0;verticalAlign=top;align=left;spacingLeft=32;spacingTop=4;fillColor=#E0E0E0;rounded=0;whiteSpace=wrap;html=1;strokeColor=#919191;strokeWidth=1;dashed=0;container=1;spacing=-4;collapsible=0;',
200, 200, 'Zone', 'Zone', true, null, this.getTagsForStencil(gn, 'zone', dt).join(' ')),
this.createVertexTemplateEntry(
'shape=mxgraph.ibm.box;prType=subnet;fontStyle=0;verticalAlign=top;align=left;spacingLeft=32;spacingTop=4;fillColor=#E6F0E2;rounded=0;whiteSpace=wrap;html=1;strokeColor=#00882B;strokeWidth=1;dashed=0;container=1;spacing=-4;collapsible=0;',
200, 200, 'Subnet:ACL', 'Subnet:ACL', true, null, this.getTagsForStencil(gn, 'subnet acl', dt).join(' ')),
this.createVertexTemplateEntry(
'fontStyle=0;verticalAlign=top;align=center;spacingTop=-2;fillColor=none;rounded=0;whiteSpace=wrap;html=1;strokeColor=#FF0000;strokeWidth=2;dashed=1;container=1;collapsible=0;',
200, 200, 'Security Group', 'Security Group', true, null, this.getTagsForStencil(gn, 'security group', dt).join(' ')),
this.createVertexTemplateEntry(
'fontStyle=0;verticalAlign=top;align=center;spacingTop=-2;fillColor=none;rounded=0;whiteSpace=wrap;html=1;strokeColor=#00882B;strokeWidth=2;dashed=1;container=1;collapsible=0;',
200, 200, 'Instance Group', 'Instance Group', true, null, this.getTagsForStencil(gn, 'instance group', dt).join(' ')),
this.createVertexTemplateEntry(
'fontStyle=0;verticalAlign=top;align=center;spacingTop=-2;fillColor=none;rounded=0;whiteSpace=wrap;html=1;strokeColor=#919191;strokeWidth=2;dashed=1;container=1;collapsible=0;',
200, 200, 'Resource Group', 'Resource Group', true, null, this.getTagsForStencil(gn, 'resource group', dt).join(' ')),
this.createVertexTemplateEntry(
'shape=mxgraph.ibm.box;prType=public;fontStyle=0;verticalAlign=top;align=left;spacingLeft=32;spacingTop=4;fillColor=none;rounded=0;whiteSpace=wrap;html=1;strokeColor=#4376BB;strokeWidth=3;dashed=0;container=1;spacing=-4;collapsible=0;',
200, 200, 'Public Network', 'Public Network', true, null, this.getTagsForStencil(gn, 'public network', dt).join(' ')),
this.createVertexTemplateEntry(
'shape=mxgraph.ibm.box;prType=enterprise;fontStyle=0;verticalAlign=top;align=left;spacingLeft=32;spacingTop=4;fillColor=none;rounded=0;whiteSpace=wrap;html=1;strokeColor=#4376BB;strokeWidth=3;dashed=0;container=1;spacing=-4;collapsible=0;',
200, 200, 'Enterprise Network', 'Enterprise Network', true, null, this.getTagsForStencil(gn, 'enterprise network', dt).join(' ')),
this.createVertexTemplateEntry(
'shape=mxgraph.ibm.box;prType=classic;fontStyle=0;verticalAlign=top;align=left;spacingLeft=32;spacingTop=4;fillColor=none;rounded=0;whiteSpace=wrap;html=1;strokeColor=#4376BB;strokeWidth=2;dashed=0;container=1;spacing=-4;collapsible=0;',
200, 200, 'Classic Infrastructure', 'Classic Infrastructure', true, null, this.getTagsForStencil(gn, 'classic infrastructure', dt).join(' ')),
this.createVertexTemplateEntry(
'fontStyle=0;verticalAlign=top;align=center;spacingTop=-2;fillColor=none;rounded=0;whiteSpace=wrap;html=1;strokeColor=#4376BB;strokeWidth=1;dashed=0;container=1;collapsible=0;',
200, 200, 'Cloud Services', 'Cloud Services', true, null, this.getTagsForStencil(gn, 'cloud services', dt).join(' '))
];
this.addPalette('ibmBoxes', 'IBM / Boxes', false, mxUtils.bind(this, function(content)
{
for (var i = 0; i < fns.length; i++)
{
content.appendChild(fns[i](content));
}
}));
};
Sidebar.prototype.addIBMConnectorsPalette = function(d, dt, sb, s)
{
var gn = 'connectors ';
var fns = [
this.createEdgeTemplateEntry('html=1;labelBackgroundColor=#ffffff;jettySize=auto;orthogonalLoop=1;strokeWidth=1;fontSize=14;endArrow=none;endFill=0;',
d, d, '', 'Connector', null, dt + 'connector'),
this.createEdgeTemplateEntry('html=1;labelBackgroundColor=#ffffff;endArrow=classic;endFill=1;endSize=6;jettySize=auto;orthogonalLoop=1;strokeWidth=1;fontSize=14;',
d, d, '', 'Connector (Single Arrow)', null, dt + 'connector single arrow'),
this.createEdgeTemplateEntry('html=1;labelBackgroundColor=#ffffff;startArrow=classic;startFill=1;startSize=6;endArrow=classic;endFill=1;endSize=6;jettySize=auto;orthogonalLoop=1;strokeWidth=1;fontSize=14;',
d, d, '', 'Connector (Double Arrow)', null, dt + 'connector double arrow'),
this.createEdgeTemplateEntry('html=1;labelBackgroundColor=#ffffff;endArrow=none;endFill=0;jettySize=auto;orthogonalLoop=1;strokeWidth=1;dashed=1;fontSize=14;',
d, d, '', 'Dashed Connector', null, dt + 'dashed connector'),
this.createEdgeTemplateEntry('html=1;labelBackgroundColor=#ffffff;startArrow=none;startFill=0;startSize=6;endArrow=classic;endFill=1;endSize=6;jettySize=auto;orthogonalLoop=1;strokeWidth=1;dashed=1;fontSize=14;',
d, d, '', 'Dashed Connector (Single Arrow)', null, dt + 'dashed connector single arrow'),
this.createEdgeTemplateEntry('html=1;labelBackgroundColor=#ffffff;startArrow=classic;startFill=1;startSize=6;endArrow=classic;endFill=1;endSize=6;jettySize=auto;orthogonalLoop=1;strokeWidth=1;dashed=1;fontSize=14;',
d, d, '', 'Dashed Connector (Double Arrow)', null, dt + 'dashed connector double arrow'),
this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;rounded=0;elbow=vertical;html=1;labelBackgroundColor=#ffffff;jettySize=auto;orthogonalLoop=1;strokeWidth=1;fontSize=14;endArrow=none;endFill=0;',
d, d, '', 'Elbow Connector', null, dt + 'elbow connector'),
this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;rounded=0;elbow=vertical;html=1;labelBackgroundColor=#ffffff;endArrow=classic;endFill=1;endSize=6;jettySize=auto;orthogonalLoop=1;strokeWidth=1;fontSize=14;',
d, d, '', 'Elbow Connector (Single Arrow)', null, dt + 'elbow connector single arrow'),
this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;rounded=0;elbow=vertical;html=1;labelBackgroundColor=#ffffff;startArrow=classic;startFill=1;startSize=6;endArrow=classic;endFill=1;endSize=6;jettySize=auto;orthogonalLoop=1;strokeWidth=1;fontSize=14;',
d, d, '', 'Elbow Connector (Double Arrow)', null, dt + 'elbow connector double arrow')
];
this.addPalette('ibmConnectors', 'IBM / Connectors', false, mxUtils.bind(this, function(content)
{
for (var i = 0; i < fns.length; i++)
{
content.appendChild(fns[i](content));
}
}));
};
})();

View file

@ -33,7 +33,7 @@
*/
Sidebar.prototype.signs = ['Animals', 'Food', 'Healthcare', 'Nature', 'People', 'Safety', 'Science', 'Sports', 'Tech', 'Transportation', 'Travel'];
Sidebar.prototype.ibm = ['Analytics', 'Applications', 'Blockchain', 'Data', 'DevOps', 'Infrastructure', 'Management', 'Miscellaneous', 'Security', 'Social', 'Users', 'VPC'];
Sidebar.prototype.ibm = ['Analytics', 'Applications', 'Blockchain', 'Data', 'DevOps', 'Infrastructure', 'Management', 'Miscellaneous', 'Security', 'Social', 'Users', 'VPC', 'Boxes', 'Connectors'];
Sidebar.prototype.allied_telesis = ['Buildings', 'Computer and Terminals', 'Media Converters', 'Security', 'Storage', 'Switch', 'Wireless'];

View file

@ -334,7 +334,7 @@ function VsdxExport(editorUi)
if (lbkgnd) shape.appendChild(createCellElem("TextBkgnd", lbkgnd, xmlDoc));
};
function createShape(id, geo, xmlDoc, parentHeight, isChild)
function createShape(id, geo, layerIndex, xmlDoc, parentHeight, isChild)
{
var shape = createElt(xmlDoc, that.XMLNS, "Shape");
@ -352,6 +352,7 @@ function VsdxExport(editorUi)
shape.appendChild(createCellElemScaled("Height", geo.height, xmlDoc));
shape.appendChild(createCellElemScaled("LocPinX", hw, xmlDoc));
shape.appendChild(createCellElemScaled("LocPinY", hh, xmlDoc));
shape.appendChild(createCellElem("LayerMember", layerIndex + "", xmlDoc));
return shape;
};
@ -388,7 +389,7 @@ function VsdxExport(editorUi)
return 6;
};
function createEdge(cell, graph, xmlDoc, parentHeight, isChild)
function createEdge(cell, layerIndex, graph, xmlDoc, parentHeight, isChild)
{
var state = graph.view.getState(cell, true);
@ -444,7 +445,7 @@ function VsdxExport(editorUi)
shape.appendChild(createCellElem("BegTrigger", "2", xmlDoc, cell.source? "_XFTRIGGER(Sheet."+ getCellVsdxId(cell.source.id) +"!EventXFMod)" : null));
shape.appendChild(createCellElem("EndTrigger", "2", xmlDoc, cell.target? "_XFTRIGGER(Sheet."+ getCellVsdxId(cell.target.id) +"!EventXFMod)" : null));
shape.appendChild(createCellElem("ConFixedCode", "6", xmlDoc));
shape.appendChild(createCellElem("LayerMember", "0", xmlDoc));
shape.appendChild(createCellElem("LayerMember", layerIndex + "", xmlDoc));
applyMxCellStyle(state, shape, xmlDoc);
@ -491,7 +492,7 @@ function VsdxExport(editorUi)
return shape;
};
function convertMxCell2Shape(cell, graph, xmlDoc, parentHeight, parentGeo, isChild)
function convertMxCell2Shape(cell, layerIndex, graph, xmlDoc, parentHeight, parentGeo, isChild)
{
var geo = cell.geometry;
@ -511,7 +512,7 @@ function VsdxExport(editorUi)
if (!cell.treatAsSingle && cell.getChildCount() > 0) //Group
{
//Create group shape as an empty shape with no geo
var shape = createShape(vsdxId + "10000", geo, xmlDoc, parentHeight, isChild);
var shape = createShape(vsdxId + "10000", geo, layerIndex, xmlDoc, parentHeight, isChild);
shape.setAttribute("Type", "Group");
//Create group shape
@ -528,7 +529,7 @@ function VsdxExport(editorUi)
newGeo.y = 0;
cell.setGeometry(newGeo);
cell.treatAsSingle = true;
var subShape = convertMxCell2Shape(cell, graph, xmlDoc, geo.height, geo, true);
var subShape = convertMxCell2Shape(cell, layerIndex, graph, xmlDoc, geo.height, geo, true);
cell.treatAsSingle = false;
cell.setGeometry(geo);
@ -542,7 +543,7 @@ function VsdxExport(editorUi)
{
var child = cell.children[i];
var subShape = convertMxCell2Shape(child, graph, xmlDoc, geo.height, geo, true);
var subShape = convertMxCell2Shape(child, layerIndex, graph, xmlDoc, geo.height, geo, true);
if (subShape != null)
{
@ -560,7 +561,7 @@ function VsdxExport(editorUi)
else if (cell.vertex)
{
var shape = createShape(vsdxId, geo, xmlDoc, parentHeight, isChild);
var shape = createShape(vsdxId, geo, layerIndex, xmlDoc, parentHeight, isChild);
var state = graph.view.getState(cell, true);
@ -591,7 +592,7 @@ function VsdxExport(editorUi)
}
else
{
return createEdge(cell, graph, xmlDoc, parentHeight, isChild);
return createEdge(cell, layerIndex, graph, xmlDoc, parentHeight, isChild);
}
}
else
@ -632,15 +633,23 @@ function VsdxExport(editorUi)
vsdxCanvas.scale(1 / s);
vsdxCanvas.newPage();
var defParent = graph.getDefaultParent();
var layers = graph.model.getChildCells(graph.model.root);
var layerIdsMaps = {};
for (var k = 0; k < layers.length; k++)
{
layerIdsMaps[layers[k].id] = k;
}
for (var id in model.cells)
{
var cell = model.cells[id];
//top-most cells
if (cell.parent == defParent)
var layerIndex = cell.parent != null? layerIdsMaps[cell.parent.id] : null;
if (layerIndex != null)
{
var shape = convertMxCell2Shape(cell, graph, xmlDoc, modelAttrib.pageHeight);
var shape = convertMxCell2Shape(cell, layerIndex, graph, xmlDoc, modelAttrib.pageHeight);
if (shape != null)
shapes.appendChild(shape);
@ -689,7 +698,7 @@ function VsdxExport(editorUi)
zip.file(name, (noHeader? "" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>") + mxUtils.getXml(xmlDoc, '\n'));
};
function addPagesXML(zip, pages, modelsAttr)
function addPagesXML(zip, pages, pageLayers, modelsAttr)
{
var pagesXmlDoc = mxUtils.createXmlDocument();
var pagesRelsXmlDoc = mxUtils.createXmlDocument();
@ -721,26 +730,31 @@ function VsdxExport(editorUi)
var relE = createElt(pagesXmlDoc, that.XMLNS,"Rel");
relE.setAttributeNS(that.XMLNS_R, "r:id", "rId" + i);
//Layer (not needed!, it works without it)
//Add Layers
var layerSec = createElt(pagesXmlDoc, that.XMLNS, "Section");
layerSec.setAttribute("N", "Layer");
var layers = pageLayers[name];
for (var k = 0; k < layers.length; k++)
{
var layerRow = createElt(pagesXmlDoc, that.XMLNS, "Row");
layerRow.setAttribute("IX", "0");
layerRow.setAttribute("IX", k + "");
layerSec.appendChild(layerRow)
layerRow.appendChild(createCellElem("Name", 'Connector', pagesXmlDoc));
layerRow.appendChild(createCellElem("Name", layers[k].name, pagesXmlDoc));
layerRow.appendChild(createCellElem("Color", '255', pagesXmlDoc));
layerRow.appendChild(createCellElem("Status", '0', pagesXmlDoc));
layerRow.appendChild(createCellElem("Visible", '1', pagesXmlDoc));
layerRow.appendChild(createCellElem("Visible", layers[k].visible? '1' : '0', pagesXmlDoc));
layerRow.appendChild(createCellElem("Print", '1', pagesXmlDoc));
layerRow.appendChild(createCellElem("Active", '0', pagesXmlDoc));
layerRow.appendChild(createCellElem("Lock", '0', pagesXmlDoc));
layerRow.appendChild(createCellElem("Lock", layers[k].locked? '1' : '0', pagesXmlDoc));
layerRow.appendChild(createCellElem("Snap", '1', pagesXmlDoc));
layerRow.appendChild(createCellElem("Glue", '1', pagesXmlDoc));
layerRow.appendChild(createCellElem("NameUniv", 'Connector', pagesXmlDoc));
layerRow.appendChild(createCellElem("NameUniv", layers[k].name, pagesXmlDoc));
layerRow.appendChild(createCellElem("ColorTrans", '0', pagesXmlDoc));
}
pageSheet.appendChild(layerSec);
@ -820,10 +834,30 @@ function VsdxExport(editorUi)
idsCounter = 1;
var pages = {};
var pageLayers = {};
var modelsAttr = {};
var pagesCount = editorUi.pages != null? editorUi.pages.length : 1;
function collectLayers(graph, diagramName)
{
var layers = graph.model.getChildCells(graph.model.root);
pageLayers[diagramName] = [];
for (var k = 0; k < layers.length; k++)
{
//KNOWN We don't export invisible layers, we may support it later but we need to have a full cell state for invisible cells
if (layers[k].visible)
{
pageLayers[diagramName].push({
name: layers[k].value || 'Background',
visible: layers[k].visible,
locked: layers[k].style && layers[k].style.indexOf('locked=1') >= 0
});
}
}
};
if (editorUi.pages != null)
{
var selectedCells = editorUi.editor.graph.getSelectionCells();
@ -855,6 +889,7 @@ function VsdxExport(editorUi)
{
var modelAttrib = getGraphAttributes(graph);
pages[diagramName] = convertMxModel2Page(graph, modelAttrib);
collectLayers(graph, diagramName);
addImagesRels(zip, i+1);
modelsAttr[diagramName] = modelAttrib;
}
@ -881,13 +916,14 @@ function VsdxExport(editorUi)
var modelAttrib = getGraphAttributes(graph);
var diagramName = "Page1";
pages[diagramName] = convertMxModel2Page(graph, modelAttrib);
collectLayers(graph, diagramName);
addImagesRels(zip, 1);
modelsAttr[diagramName] = modelAttrib;
}
createVsdxSkeleton(zip, pagesCount);
addPagesXML(zip, pages, modelsAttr);
addPagesXML(zip, pages, pageLayers, modelsAttr);
var createZipFile = function()
{

View file

@ -595,12 +595,20 @@ var com;
var layers = page.getLayers();
this.layersMap[0] = graph.getDefaultParent();
if (layers.length > 1)
{
for (var k = 1; k < layers.length; k++)
for (var k = 0; k < layers.length; k++)
{
var layer = layers[k];
if (k == 0)
{
var layerCell = graph.getDefaultParent();
}
else
{
var layerCell = new mxCell();
graph.addCell(layerCell, graph.model.root, k);
}
layerCell.setVisible(layer.Visible == 1);
if (layer.Lock == 1)
@ -612,9 +620,8 @@ var com;
layerCell.setValue(layer.Name);
this.layersMap[k] = layerCell;
graph.addCell(layerCell, graph.model.root, k);
}
}
//add shapes
var shapes = page.getShapes();
var entries = (function (a) { var i = 0; return { next: function () { return i < a.length ? a[i++] : null; }, hasNext: function () { return i < a.length; } }; })(/* entrySet */ (function (m) { if (m.entries == null)

File diff suppressed because one or more lines are too long

View file

@ -1606,6 +1606,11 @@ var EditDataDialog = function(ui, cell)
texts[index] = form.addTextarea(names[count] + ':', value, 2);
texts[index].style.width = '100%';
if (value.indexOf('\n') > 0)
{
texts[index].setAttribute('rows', '2');
}
addRemoveButton(texts[index], name);
};

View file

@ -4222,6 +4222,32 @@ EditorUi.prototype.createKeyHandler = function(editor)
}
else
{
var cells = graph.getMovableCells(graph.getSelectionCells());
var realCells = [];
for (var i = 0; i < cells.length; i++)
{
var state = graph.view.getState(cells[i]);
var style = (state != null) ? state.style : graph.getCellStyle(cells[i]);
if (mxUtils.getValue(style, 'part', '0') == '1')
{
var parent = graph.model.getParent(cells[i]);
if (graph.model.isVertex(parent) && mxUtils.indexOf(cells, parent) < 0)
{
realCells.push(parent);
}
}
else
{
realCells.push(cells[i]);
}
}
if (realCells.length > 0)
{
cells = realCells;
var dx = 0;
var dy = 0;
@ -4242,7 +4268,8 @@ EditorUi.prototype.createKeyHandler = function(editor)
dy = stepSize;
}
graph.moveCells(graph.getMovableCells(graph.getSelectionCells()), dx, dy);
graph.moveCells(cells, dx, dy);
}
}
}
}

View file

@ -585,9 +585,11 @@ Graph = function(container, model, renderHint, stylesheet, themes, standalone)
// if the parent is not already in the list of cells. container style is used to disable
// step into swimlanes and dropTarget style is used to disable acting as a drop target.
// LATER: Handle recursive parts
var graphHandlerGetCells = this.graphHandler.getCells;
this.graphHandler.getCells = function(initialCell)
{
var cells = mxGraphHandler.prototype.getCells.apply(this, arguments);
var cells = graphHandlerGetCells.apply(this, arguments);
var newCells = [];
for (var i = 0; i < cells.length; i++)
@ -613,6 +615,21 @@ Graph = function(container, model, renderHint, stylesheet, themes, standalone)
return newCells;
};
// Handles parts of cells for drag and drop
var graphHandlerStart = this.graphHandler.start;
this.graphHandler.start = function(cell, x, y, cells)
{
var state = this.graph.view.getState(cell);
if (state != null && mxUtils.getValue(state.style, 'part', false))
{
cell = this.graph.model.getParent(cell);
}
graphHandlerStart.apply(this, arguments);
};
// Handles parts of cells when cloning the source for new connections
this.connectionHandler.createTargetVertex = function(evt, source)
{
@ -5906,9 +5923,10 @@ if (typeof mxVertexHandler != 'undefined')
*/
Graph.prototype.getAttributeForCell = function(cell, attributeName, defaultValue)
{
return (cell.value != null && typeof cell.value === 'object') ?
(cell.value.getAttribute(attributeName) || defaultValue) :
defaultValue;
var value = (cell.value != null && typeof cell.value === 'object') ?
cell.value.getAttribute(attributeName) : null;
return (value != null) ? value : defaultValue;
};
/**

View file

@ -2227,7 +2227,11 @@ Graph.handleFactory[mxShapeGmdlSliderDiscreteDots.prototype.cst.SHAPE_DISCRETE_D
function mxShapeGmdlProgressBar(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dx1=.8}mxUtils.extend(mxShapeGmdlProgressBar,mxShape);mxShapeGmdlProgressBar.prototype.cst={PROGRESS_BAR:"mxgraph.gmdl.progressBar"};mxShapeGmdlProgressBar.prototype.customProperties=[{name:"dx1",dispName:"Handle Position",type:"int",min:0,defVal:.8}];
mxShapeGmdlProgressBar.prototype.paintVertexShape=function(a,d,e,b,c){var f=b*Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx1",this.dx1))));a.translate(d,e);a.save();a.setStrokeColor("#aaaaaa");a.begin();a.moveTo(0,.5*c);a.lineTo(b,.5*c);a.stroke();a.restore();a.setShadow(!1);a.begin();a.moveTo(0,.5*c);a.lineTo(f,.5*c);a.stroke()};mxCellRenderer.registerShape(mxShapeGmdlProgressBar.prototype.cst.PROGRESS_BAR,mxShapeGmdlProgressBar);mxShapeGmdlProgressBar.prototype.constraints=null;
Graph.handleFactory[mxShapeGmdlProgressBar.prototype.cst.PROGRESS_BAR]=function(a){var d=[Graph.createHandle(a,["dx1"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dx1",this.dx1))));return new mxPoint(a.x+b*a.width,a.y+a.height/2)},function(a,b){this.state.style.dx1=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100})];a=Graph.createHandle(a,["dx2"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dx2",this.dx1))));
return new mxPoint(a.x+b*a.width,a.y+a.height/2)},function(a,b){this.state.style.dx2=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100});d.push(a);return d};function mxShapeInfographicNumEntryVert(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dy=.5}mxUtils.extend(mxShapeInfographicNumEntryVert,mxActor);mxShapeInfographicNumEntryVert.prototype.cst={NUM_ENTRY_VERT:"mxgraph.infographic.numberedEntryVert"};
return new mxPoint(a.x+b*a.width,a.y+a.height/2)},function(a,b){this.state.style.dx2=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100});d.push(a);return d};function mxShapeIBMBox(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeIBMBox,mxShape);mxShapeIBMBox.prototype.cst={IBM_BOX:"mxgraph.ibm.box"};
mxShapeIBMBox.prototype.customProperties=[{name:"prType",dispName:"Box Type",defVal:"cloud",type:"enum",enumList:[{val:"cloud",dispName:"IBM Cloud"},{val:"vpc",dispName:"VPC"},{val:"region",dispName:"Region"},{val:"zone",dispName:"Zone"},{val:"subnet",dispName:"Subnet ACL"},{val:"public",dispName:"Public Network"},{val:"enterprise",dispName:"Enterprise Network"},{val:"classic",dispName:"Classic Infrastructure"}]}];
mxShapeIBMBox.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.rect(0,0,b,c);a.fillAndStroke();d=mxUtils.getValue(this.state.style,"strokeColor","none");a.setFillColor(d);a.setStrokeColor("none");switch(mxUtils.getValue(this.state.style,"prType","")){case "cloud":d=mxStencilRegistry.getStencil("mxgraph.ibm.cloudtag");d.drawShape(a,this,0,0,25,25);break;case "vpc":d=mxStencilRegistry.getStencil("mxgraph.ibm.vpctag");d.drawShape(a,this,0,0,25,25);break;case "region":d=mxStencilRegistry.getStencil("mxgraph.ibm.regiontag");
d.drawShape(a,this,0,0,25,25);break;case "zone":d=mxStencilRegistry.getStencil("mxgraph.ibm.zonetag");d.drawShape(a,this,0,0,25,25);break;case "subnet":d=mxStencilRegistry.getStencil("mxgraph.ibm.subnettag");d.drawShape(a,this,0,0,25,25);break;case "public":d=mxStencilRegistry.getStencil("mxgraph.ibm.publictag");d.drawShape(a,this,0,0,25,25);break;case "enterprise":d=mxStencilRegistry.getStencil("mxgraph.ibm.enterprisetag");d.drawShape(a,this,0,0,25,25);break;case "classic":d=mxStencilRegistry.getStencil("mxgraph.ibm.classictag"),
d.drawShape(a,this,0,0,25,25)}};mxCellRenderer.registerShape(mxShapeIBMBox.prototype.cst.IBM_BOX,mxShapeIBMBox);function mxShapeInfographicNumEntryVert(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1;this.dy=.5}mxUtils.extend(mxShapeInfographicNumEntryVert,mxActor);mxShapeInfographicNumEntryVert.prototype.cst={NUM_ENTRY_VERT:"mxgraph.infographic.numberedEntryVert"};
mxShapeInfographicNumEntryVert.prototype.customProperties=[{name:"dy",dispName:"Circle Size",min:0,defVal:25}];
mxShapeInfographicNumEntryVert.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));d=Math.min(d,b-10,c-5);a.ellipse(.5*b-.5*d,0,d,d);a.fillAndStroke();a.begin();a.moveTo(0,.5*d);a.lineTo(.5*b-.5*d-5,.5*d);a.arcTo(.5*d+5,.5*d+5,0,0,0,.5*b+.5*d+5,.5*d);a.lineTo(b,.5*d);a.lineTo(b,c);a.lineTo(0,c);a.close();a.fillAndStroke()};
mxCellRenderer.registerShape(mxShapeInfographicNumEntryVert.prototype.cst.NUM_ENTRY_VERT,mxShapeInfographicNumEntryVert);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -2,6 +2,10 @@
* Sample plugin.
*/
Draw.loadPlugin(function(ui) {
// Sidebar is null in lightbox
if (ui.sidebar != null)
{
// Adds custom sidebar entry
ui.sidebar.addPalette('esolia', 'eSolia', true, function(content) {
@ -80,4 +84,5 @@ Draw.loadPlugin(function(ui) {
// // Cannot use built-in sprites
// elt.firstChild.style.backgroundImage = 'url(https://www.draw.io/images/logo-small.gif)';
// elt.firstChild.style.backgroundPosition = '2px 3px';
}
});

View file

@ -6,7 +6,7 @@ if (workbox)
workbox.precaching.precacheAndRoute([
{
"url": "js/app.min.js",
"revision": "a47c27e2820bc498831b2c5bedccc800"
"revision": "0bc6d325a00a8b17599888b78f240e69"
},
{
"url": "index.html",
@ -18,15 +18,15 @@ if (workbox)
},
{
"url": "js/shapes.min.js",
"revision": "114ed79fe7b406c1b7d034459b989e1d"
"revision": "6d1fdbc4b5e424d0713b28de2676d9e9"
},
{
"url": "js/stencils.min.js",
"revision": "29c858398e8354cd77d0c81b3e8a43ca"
"revision": "fdb0ffc3355997c93f0e7773d1376a82"
},
{
"url": "js/extensions.min.js",
"revision": "25b5872708446c8f83ec4d7a8de3c915"
"revision": "9b497ff1ec749be17d547373bea332ef"
},
{
"url": "js/diagramly/ElectronApp.js",

View file

@ -0,0 +1,100 @@
/**
* $Id: mxIBM.js,v 1.0 2018/08/21 13:05:39 mate Exp $
* Copyright (c) 2006-2020, JGraph Ltd
*/
//**********************************************************************************************************************************************************
//Box
//**********************************************************************************************************************************************************
/**
* Extends mxShape.
*/
function mxShapeIBMBox(bounds, fill, stroke, strokewidth)
{
mxShape.call(this);
this.bounds = bounds;
this.fill = fill;
this.stroke = stroke;
this.strokewidth = (strokewidth != null) ? strokewidth : 1;
};
/**
* Extends mxShape.
*/
mxUtils.extend(mxShapeIBMBox, mxShape);
mxShapeIBMBox.prototype.cst = {
IBM_BOX : 'mxgraph.ibm.box'
};
mxShapeIBMBox.prototype.customProperties = [
{name: 'prType', dispName: 'Box Type', defVal: 'cloud', type: 'enum',
enumList: [{val: 'cloud', dispName: 'IBM Cloud'},
{val: 'vpc', dispName: 'VPC'},
{val: 'region', dispName: 'Region'},
{val: 'zone', dispName: 'Zone'},
{val: 'subnet', dispName: 'Subnet ACL'},
{val: 'public', dispName: 'Public Network'},
{val: 'enterprise', dispName: 'Enterprise Network'},
{val: 'classic', dispName: 'Classic Infrastructure'}]}
];
/**
* Function: paintVertexShape
*
* Paints the vertex shape.
*/
mxShapeIBMBox.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
c.begin();
c.rect(0,0, w, h);
c.fillAndStroke();
var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', 'none');
c.setFillColor(strokeColor);
c.setStrokeColor('none');
var prType = mxUtils.getValue(this.state.style, 'prType', '');
switch(prType)
{
case 'cloud':
var bgSt1 = mxStencilRegistry.getStencil('mxgraph.ibm.cloudtag');
bgSt1.drawShape(c, this, 0, 0, 25, 25);
break;
case 'vpc':
var bgSt1 = mxStencilRegistry.getStencil('mxgraph.ibm.vpctag');
bgSt1.drawShape(c, this, 0, 0, 25, 25);
break;
case 'region':
var bgSt1 = mxStencilRegistry.getStencil('mxgraph.ibm.regiontag');
bgSt1.drawShape(c, this, 0, 0, 25, 25);
break;
case 'zone':
var bgSt1 = mxStencilRegistry.getStencil('mxgraph.ibm.zonetag');
bgSt1.drawShape(c, this, 0, 0, 25, 25);
break;
case 'subnet':
var bgSt1 = mxStencilRegistry.getStencil('mxgraph.ibm.subnettag');
bgSt1.drawShape(c, this, 0, 0, 25, 25);
break;
case 'public':
var bgSt1 = mxStencilRegistry.getStencil('mxgraph.ibm.publictag');
bgSt1.drawShape(c, this, 0, 0, 25, 25);
break;
case 'enterprise':
var bgSt1 = mxStencilRegistry.getStencil('mxgraph.ibm.enterprisetag');
bgSt1.drawShape(c, this, 0, 0, 25, 25);
break;
case 'classic':
var bgSt1 = mxStencilRegistry.getStencil('mxgraph.ibm.classictag');
bgSt1.drawShape(c, this, 0, 0, 25, 25);
break;
default:
break;
}
};
mxCellRenderer.registerShape(mxShapeIBMBox.prototype.cst.IBM_BOX, mxShapeIBMBox);

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,578 @@
<shapes name="mxgraph.ibm">
<shape aspect="variable" h="64" name="ClassicTag" strokewidth="inherit" w="64">
<connections/>
<foreground>
<rect h="64" w="64" x="0" y="0"/>
<fill/>
<fillcolor color="#ffffff"/>
<path>
<move x="33.73" y="11.71"/>
<curve x1="34.23" x2="34.73" x3="35.23" y1="11.71" y2="11.81" y3="11.81"/>
<curve x1="37.33" x2="39.23" x3="41.13" y1="12.01" y2="12.51" y3="13.41"/>
<curve x1="47.03" x2="50.83" x3="52.53" y1="16.21" y2="20.71" y3="27.01"/>
<curve x1="53.23" x2="53.33" x3="52.93" y1="29.61" y2="32.21" y3="34.91"/>
<curve x1="52.03" x2="49.33" x3="44.73" y1="40.61" y2="45.11" y3="48.51"/>
<curve x1="42.03" x2="38.93" x3="35.53" y1="50.51" y2="51.71" y3="52.11"/>
<curve x1="31.83" x2="28.23" x3="24.83" y1="52.61" y2="52.11" y3="50.61"/>
<curve x1="24.73" x2="24.73" x3="24.63" y1="50.61" y2="50.51" y3="50.51"/>
<curve x1="25.23" x2="25.73" x3="26.33" y1="49.41" y2="48.31" y3="47.21"/>
<curve x1="31.03" x2="35.63" x3="40.13" y1="49.11" y2="49.11" y3="46.91"/>
<curve x1="43.73" x2="46.33" x3="48.03" y1="45.21" y2="42.41" y3="38.81"/>
<curve x1="51.23" x2="48.93" x3="42.43" y1="31.51" y2="23.01" y3="18.51"/>
<curve x1="35.93" x2="27.03" x3="21.43" y1="14.01" y2="14.71" y3="20.21"/>
<curve x1="15.63" x2="15.33" x3="18.23" y1="25.81" y2="34.01" y3="39.51"/>
<curve x1="19.63" x2="21.03" x3="22.43" y1="38.21" y2="37.01" y3="35.71"/>
<curve x1="22.43" x2="22.43" x3="22.43" y1="39.31" y2="42.81" y3="46.31"/>
<curve x1="18.63" x2="14.73" x3="10.83" y1="46.31" y2="46.31" y3="46.31"/>
<curve x1="12.33" x2="13.83" x3="15.33" y1="44.91" y2="43.51" y3="42.21"/>
<curve x1="15.13" x2="14.83" x3="14.63" y1="41.71" y2="41.31" y3="40.81"/>
<curve x1="13.73" x2="13.13" x3="12.83" y1="38.91" y2="36.91" y3="34.81"/>
<curve x1="11.53" x2="17.03" x3="25.93" y1="25.21" y2="16.21" y3="12.91"/>
<curve x1="27.83" x2="29.73" x3="31.73" y1="12.21" y2="11.81" y3="11.71"/>
<curve x1="31.83" x2="31.93" x3="32.03" y1="11.71" y2="11.71" y3="11.71"/>
<curve x1="32.63" x2="33.13" x3="33.73" y1="11.71" y2="11.71" y3="11.71"/>
<close/>
</path>
<fill/>
</foreground>
</shape>
<shape aspect="variable" h="64" name="CloudTag" strokewidth="inherit" w="64">
<connections/>
<foreground>
<rect h="64" w="64" x="0" y="0"/>
<fill/>
<fillcolor color="#ffffff"/>
<path>
<move x="32.03" y="9"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="31.1" x-axis-rotation="0" y="9.96"/>
<line x="31.08" y="15.44"/>
<arc large-arc-flag="1" rx="0.95" ry="0.95" sweep-flag="0" x="32.97" x-axis-rotation="0" y="15.45"/>
<line x="32.99" y="9.97"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="32.03" x-axis-rotation="0" y="9.01"/>
<close/>
<move x="45.71" y="12.71"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="44.88" x-axis-rotation="0" y="13.2"/>
<line x="42.17" y="17.95"/>
<arc large-arc-flag="1" rx="0.94" ry="0.94" sweep-flag="0" x="43.81" x-axis-rotation="0" y="18.89"/>
<line x="46.52" y="14.13"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="45.71" x-axis-rotation="0" y="12.71"/>
<close/>
<move x="18.23" y="12.73"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="17.47" x-axis-rotation="0" y="14.17"/>
<line x="20.25" y="18.88"/>
<arc large-arc-flag="1" rx="0.95" ry="0.95" sweep-flag="0" x="21.88" x-axis-rotation="0" y="17.93"/>
<line x="19.1" y="13.21"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="18.23" x-axis-rotation="0" y="12.73"/>
<close/>
<move x="32.01" y="19.75"/>
<curve x1="31.31" x2="30.6" x3="29.87" y1="19.75" y2="19.79" y3="19.88"/>
<curve x1="27.92" x2="25.86" x3="23.73" y1="20.13" y2="20.75" y3="21.87"/>
<line x="23.72" y="21.88"/>
<line x="23.7" y="21.89"/>
<curve x1="15.34" x2="13.7" x3="14.77" y1="26.58" y2="34.86" y3="40.82"/>
<line x="16.62" y="40.48"/>
<curve x1="15.67" x2="16.99" x3="24.61" y1="35.15" y2="27.83" y3="23.54"/>
<curve x1="32.39" x2="38.77" x3="42.19" y1="19.47" y2="22.69" y3="25.46"/>
<line x="43.38" y="24"/>
<curve x1="40.9" x2="36.89" x3="32.01" y1="21.98" y2="19.77" y3="19.75"/>
<close/>
<move x="55.83" y="22.71"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="55.32" x-axis-rotation="0" y="22.84"/>
<line x="50.58" y="25.58"/>
<arc large-arc-flag="1" rx="0.95" ry="0.95" sweep-flag="0" x="51.52" x-axis-rotation="0" y="27.22"/>
<line x="56.26" y="24.47"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="55.83" x-axis-rotation="0" y="22.71"/>
<close/>
<move x="8.17" y="22.82"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="7.77" x-axis-rotation="0" y="24.59"/>
<line x="12.5" y="27.34"/>
<arc large-arc-flag="1" rx="0.95" ry="0.95" sweep-flag="0" x="13.45" x-axis-rotation="0" y="25.71"/>
<line x="8.72" y="22.96"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="8.17" x-axis-rotation="0" y="22.82"/>
<close/>
<move x="44.8" y="28.15"/>
<curve x1="41.97" x2="39.48" x3="37.1" y1="28.15" y2="28.88" y3="30.32"/>
<line x="38.08" y="31.94"/>
<curve x1="40.21" x2="42.29" x3="44.8" y1="30.65" y2="30.04" y3="30.04"/>
<curve x1="50.9" x2="56.07" x3="56.07" y1="30.04" y2="35.17" y3="41.65"/>
<curve x1="56.07" x2="50.91" x3="44.28" y1="47.73" y2="53.11" y3="53.11"/>
<line x="16.84" y="53.06"/>
<curve x1="14.92" x2="12.64" x3="10.89" y1="53.06" y2="52.12" y3="50.51"/>
<curve x1="9.15" x2="7.94" x3="7.94" y1="48.9" y2="46.68" y3="44.11"/>
<line x="7.94" y="44.09"/>
<line x="7.94" y="44.07"/>
<curve x1="7.86" x2="9.02" x3="11.2" y1="41.59" y2="38.44" y3="36.44"/>
<line x="9.92" y="35.05"/>
<curve x1="7.28" x2="5.95" x3="6.05" y1="37.47" y2="41.04" y3="44.13"/>
<curve x1="6.06" x2="7.55" x3="9.61" y1="47.29" y2="50" y3="51.9"/>
<curve x1="11.68" x2="14.32" x3="16.84" y1="53.81" y2="54.95" y3="54.95"/>
<line x="44.28" y="55"/>
<curve x1="51.93" x2="57.96" x3="57.96" y1="55" y2="48.8" y3="41.65"/>
<curve x1="57.96" x2="51.95" x3="44.8" y1="34.16" y2="28.15" y3="28.15"/>
<close/>
</path>
<fill/>
</foreground>
</shape>
<shape aspect="variable" h="64" name="EnterpriseTag" strokewidth="inherit" w="64">
<connections/>
<foreground>
<rect h="64" w="64" x="0" y="0"/>
<fill/>
<fillcolor color="#ffffff"/>
<path>
<move x="21.8" y="7"/>
<line x="21.8" y="18.2"/>
<curve x1="21.6" x2="21.4" x3="21.3" y1="18.3" y2="18.3" y3="18.3"/>
<line x="4.3" y="18.3"/>
<line x="4.1" y="18.3"/>
<line x="4.1" y="56.9"/>
<line x="12.8" y="56.9"/>
<line x="21.2" y="56.9"/>
<curve x1="21.4" x2="21.6" x3="21.8" y1="56.9" y2="57" y3="57"/>
<line x="59.9" y="57"/>
<curve x1="59.9" x2="59.9" x3="59.8" y1="47.2" y2="37.4" y3="27.4"/>
<line x="45.1" y="27.4"/>
<line x="45.1" y="7"/>
<close/>
<move x="23.5" y="8.7"/>
<line x="43.5" y="8.7"/>
<line x="43.5" y="29.1"/>
<line x="58.2" y="29.1"/>
<line x="58.2" y="55.3"/>
<line x="37.5" y="55.3"/>
<line x="37.5" y="38.9"/>
<line x="30.4" y="38.9"/>
<line x="30.4" y="55.3"/>
<line x="23.5" y="55.3"/>
<close/>
<move x="32.1" y="12.6"/>
<line x="32.1" y="20.1"/>
<line x="35.4" y="20.1"/>
<line x="35.4" y="12.6"/>
<close/>
<move x="38.4" y="12.6"/>
<line x="38.4" y="20.1"/>
<line x="41.7" y="20.1"/>
<line x="41.7" y="12.6"/>
<close/>
<move x="25.5" y="12.7"/>
<line x="25.5" y="20.2"/>
<line x="28.9" y="20.2"/>
<line x="28.9" y="12.7"/>
<close/>
<move x="5.9" y="20"/>
<line x="21.8" y="20"/>
<curve x1="21.8" x2="21.8" x3="21.9" y1="31.8" y2="43.5" y3="55.3"/>
<line x="15.9" y="55.3"/>
<line x="15.9" y="46.1"/>
<line x="11.9" y="46.1"/>
<line x="11.9" y="55.3"/>
<line x="5.9" y="55.3"/>
<close/>
<move x="8.6" y="22.7"/>
<line x="8.6" y="30.4"/>
<line x="11.9" y="30.4"/>
<line x="11.9" y="22.7"/>
<close/>
<move x="15.7" y="22.7"/>
<line x="15.7" y="30.4"/>
<line x="19.1" y="30.4"/>
<line x="19.1" y="22.7"/>
<close/>
<move x="25.6" y="24.3"/>
<line x="25.6" y="32.6"/>
<line x="28.9" y="32.6"/>
<line x="28.9" y="24.3"/>
<close/>
<move x="32.1" y="24.3"/>
<line x="32.1" y="32.6"/>
<line x="35.4" y="32.6"/>
<line x="35.4" y="24.3"/>
<close/>
<move x="38.4" y="24.3"/>
<line x="38.4" y="32.6"/>
<line x="41.7" y="32.6"/>
<line x="41.7" y="24.3"/>
<close/>
<move x="44.5" y="32.8"/>
<line x="44.5" y="40.6"/>
<line x="47.8" y="40.6"/>
<line x="47.8" y="32.8"/>
<close/>
<move x="51.7" y="32.8"/>
<line x="51.7" y="40.6"/>
<line x="55" y="40.6"/>
<line x="55" y="32.8"/>
<close/>
<move x="8.6" y="35"/>
<line x="8.6" y="42.9"/>
<line x="11.9" y="42.9"/>
<line x="11.9" y="35"/>
<close/>
<move x="15.8" y="35"/>
<line x="15.8" y="42.9"/>
<line x="19.1" y="42.9"/>
<line x="19.1" y="35"/>
<close/>
<move x="44.5" y="45.1"/>
<line x="44.5" y="53"/>
<line x="47.8" y="53"/>
<line x="47.8" y="45.1"/>
<close/>
<move x="51.7" y="45.1"/>
<line x="51.7" y="53"/>
<line x="55" y="53"/>
<line x="55" y="45.1"/>
<close/>
</path>
<fill/>
</foreground>
</shape>
<shape aspect="variable" h="64" name="PublicTag" strokewidth="inherit" w="64">
<connections/>
<foreground>
<rect h="64" w="64" x="0" y="0"/>
<fill/>
<fillcolor color="#ffffff"/>
<path>
<move x="31.9" y="26.6"/>
<curve x1="27" x2="23" x3="23" y1="26.6" y2="22.6" y3="17.7"/>
<curve x1="23" x2="27" x3="31.9" y1="12.8" y2="8.8" y3="8.8"/>
<curve x1="36.8" x2="40.8" x3="40.8" y1="8.8" y2="12.8" y3="17.7"/>
<curve x1="40.9" x2="36.9" x3="31.9" y1="22.6" y2="26.6" y3="26.6"/>
<close/>
<move x="31.9" y="9.9"/>
<curve x1="27.6" x2="24.1" x3="24.1" y1="9.9" y2="13.4" y3="17.7"/>
<curve x1="24.1" x2="27.6" x3="31.9" y1="22" y2="25.5" y3="25.5"/>
<curve x1="36.2" x2="39.7" x3="39.7" y1="25.5" y2="22" y3="17.7"/>
<curve x1="39.8" x2="36.3" x3="31.9" y1="13.4" y2="9.9" y3="9.9"/>
<close/>
<move x="43.5" y="44.6"/>
<curve x1="38.6" x2="34.6" x3="34.6" y1="44.6" y2="40.6" y3="35.7"/>
<curve x1="34.6" x2="38.6" x3="43.5" y1="30.8" y2="26.8" y3="26.8"/>
<curve x1="48.4" x2="52.4" x3="52.4" y1="26.8" y2="30.8" y3="35.7"/>
<curve x1="52.4" x2="48.4" x3="43.5" y1="40.6" y2="44.6" y3="44.6"/>
<close/>
<move x="43.5" y="27.9"/>
<curve x1="39.2" x2="35.7" x3="35.7" y1="27.9" y2="31.4" y3="35.7"/>
<curve x1="35.7" x2="39.2" x3="43.5" y1="40" y2="43.5" y3="43.5"/>
<curve x1="47.8" x2="51.3" x3="51.3" y1="43.5" y2="40" y3="35.7"/>
<curve x1="51.3" x2="47.8" x3="43.5" y1="31.4" y2="27.9" y3="27.9"/>
<close/>
<move x="50.5" y="48.2"/>
<line x="36.5" y="48.1"/>
<curve x1="34.6" x2="33" x3="33" y1="48.1" y2="49.6" y3="51.6"/>
<line x="33" y="55.1"/>
<line x="54" y="55.2"/>
<line x="54" y="51.7"/>
<curve x1="54" x2="52.5" x3="50.5" y1="49.8" y2="48.2" y3="48.2"/>
<close/>
<move x="20.4" y="44.6"/>
<curve x1="15.5" x2="11.5" x3="11.5" y1="44.6" y2="40.6" y3="35.7"/>
<curve x1="11.5" x2="15.5" x3="20.4" y1="30.8" y2="26.8" y3="26.8"/>
<curve x1="25.3" x2="29.3" x3="29.3" y1="26.8" y2="30.8" y3="35.7"/>
<curve x1="29.3" x2="25.3" x3="20.4" y1="40.6" y2="44.6" y3="44.6"/>
<close/>
<move x="20.4" y="27.9"/>
<curve x1="16.1" x2="12.6" x3="12.6" y1="27.9" y2="31.4" y3="35.7"/>
<curve x1="12.6" x2="16.1" x3="20.4" y1="40" y2="43.5" y3="43.5"/>
<curve x1="24.7" x2="28.2" x3="28.2" y1="43.5" y2="40" y3="35.7"/>
<curve x1="28.2" x2="24.7" x3="20.4" y1="31.4" y2="27.9" y3="27.9"/>
<close/>
<move x="27.5" y="48.2"/>
<line x="13.5" y="48.1"/>
<curve x1="11.6" x2="10" x3="10" y1="48.1" y2="49.6" y3="51.6"/>
<line x="10" y="55.1"/>
<line x="31" y="55.2"/>
<line x="31" y="51.7"/>
<curve x1="31" x2="29.4" x3="27.5" y1="49.8" y2="48.2" y3="48.2"/>
<close/>
</path>
<fill/>
</foreground>
</shape>
<shape aspect="variable" h="64" name="RegionTag" strokewidth="inherit" w="64">
<connections/>
<foreground>
<rect h="64" w="64" x="0" y="0"/>
<fill/>
<fillcolor color="#ffffff"/>
<path>
<move x="13.16" y="8.9"/>
<line x="13.16" y="12"/>
<line x="13.16" y="55.1"/>
<line x="15.78" y="55.1"/>
<line x="15.78" y="33.31"/>
<line x="50.38" y="33.31"/>
<line x="38.59" y="21.19"/>
<line x="50.84" y="10.79"/>
<line x="15.78" y="10.79"/>
<line x="15.78" y="8.9"/>
<close/>
<move x="15.78" y="13.41"/>
<line x="43.7" y="13.41"/>
<line x="34.75" y="21.01"/>
<line x="44.17" y="30.69"/>
<line x="15.78" y="30.69"/>
<close/>
</path>
<fill/>
</foreground>
</shape>
<shape aspect="variable" h="64" name="SubnetTag" strokewidth="inherit" w="64">
<connections/>
<foreground>
<rect h="64" w="64" x="0" y="0"/>
<fill/>
<fillcolor color="#ffffff"/>
<path>
<move x="31.85" y="6.85"/>
<curve x1="30.73" x2="27.68" x3="24.71" y1="6.85" y2="6.95" y3="8.96"/>
<curve x1="24.71" x2="24.7" x3="24.7" y1="8.96" y2="8.96" y3="8.96"/>
<curve x1="24.69" x2="21.93" x3="20.63" y1="8.97" y2="10.69" y3="13.78"/>
<curve x1="20.08" x2="20.07" x3="20.07" y1="15.04" y2="16.22" y3="16.22"/>
<line x="20.07" y="18.52"/>
<line x="20.07" y="21.62"/>
<line x="20.07" y="25.68"/>
<line x="18.35" y="25.68"/>
<curve x1="16.85" x2="15.51" x3="15.51" y1="25.68" y2="26.91" y3="28.52"/>
<line x="15.51" y="54.32"/>
<curve x1="15.51" x2="16.74" x3="18.35" y1="55.82" y2="57.16" y3="57.16"/>
<line x="45.55" y="57.16"/>
<curve x1="47.11" x2="48.49" x3="48.49" y1="57.16" y2="55.93" y3="54.32"/>
<line x="48.49" y="28.52"/>
<curve x1="48.49" x2="47.26" x3="45.65" y1="27.02" y2="25.68" y3="25.68"/>
<line x="43.73" y="25.68"/>
<line x="43.73" y="21.08"/>
<line x="43.73" y="21.04"/>
<curve x1="43.63" x2="43.64" x3="43.41" y1="18.9" y2="17.31" y3="15.86"/>
<curve x1="43.28" x2="43.01" x3="42.68" y1="14.88" y2="14.05" y3="13.28"/>
<line x="42.68" y="13.27"/>
<line x="42.68" y="13.26"/>
<curve x1="41.32" x2="38.81" x3="37.99" y1="10.18" y2="8.65" y3="8.19"/>
<line x="37.96" y="8.17"/>
<line x="37.93" y="8.15"/>
<curve x1="35.42" x2="33.06" x3="31.86" y1="6.84" y2="6.84" y3="6.84"/>
<close/>
<move x="31.85" y="10.6"/>
<curve x1="33.05" x2="34.48" x3="36.16" y1="10.6" y2="10.61" y3="11.48"/>
<curve x1="36.76" x2="38.4" x3="39.23" y1="11.83" y2="12.89" y3="14.78"/>
<line x="39.23" y="14.78"/>
<curve x1="39.49" x2="39.61" x3="39.69" y1="15.39" y2="15.75" y3="16.36"/>
<line x="39.69" y="16.4"/>
<line x="39.7" y="16.43"/>
<curve x1="39.85" x2="39.87" x3="39.98" y1="17.36" y2="18.96" y3="21.17"/>
<line x="39.98" y="25.68"/>
<line x="23.83" y="25.68"/>
<line x="23.83" y="21.62"/>
<line x="23.83" y="18.52"/>
<line x="23.83" y="16.22"/>
<curve x1="23.83" x2="23.84" x3="24.07" y1="16.22" y2="15.81" y3="15.29"/>
<line x="24.08" y="15.27"/>
<line x="24.09" y="15.24"/>
<curve x1="24.79" x2="26.8" x3="26.8" y1="13.56" y2="12.09" y3="12.09"/>
<line x="26.81" y="12.08"/>
<line x="26.82" y="12.08"/>
<curve x1="28.84" x2="30.98" x3="31.86" y1="10.7" y2="10.6" y3="10.6"/>
<close/>
<move x="41.38" y="30.56"/>
<line x="44.33" y="33.49"/>
<line x="28.39" y="49.53"/>
<line x="19.52" y="39.82"/>
<line x="22.58" y="37.03"/>
<line x="28.52" y="43.52"/>
<close/>
</path>
<fill/>
</foreground>
</shape>
<shape aspect="variable" h="64" name="VPCTag" strokewidth="inherit" w="64">
<connections/>
<foreground>
<rect h="64" w="64" x="0" y="0"/>
<fill/>
<fillcolor color="#ffffff"/>
<path>
<move x="32.03" y="9"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="31.1" x-axis-rotation="0" y="9.96"/>
<line x="31.08" y="15.44"/>
<arc large-arc-flag="1" rx="0.95" ry="0.95" sweep-flag="0" x="32.97" x-axis-rotation="0" y="15.45"/>
<line x="32.99" y="9.97"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="32.03" x-axis-rotation="0" y="9.01"/>
<close/>
<move x="45.71" y="12.71"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="44.88" x-axis-rotation="0" y="13.2"/>
<line x="42.17" y="17.95"/>
<arc large-arc-flag="1" rx="0.94" ry="0.94" sweep-flag="0" x="43.81" x-axis-rotation="0" y="18.89"/>
<line x="46.52" y="14.13"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="45.71" x-axis-rotation="0" y="12.71"/>
<close/>
<move x="18.23" y="12.73"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="17.47" x-axis-rotation="0" y="14.17"/>
<line x="20.25" y="18.89"/>
<arc large-arc-flag="1" rx="0.95" ry="0.95" sweep-flag="0" x="21.88" x-axis-rotation="0" y="17.93"/>
<line x="19.1" y="13.21"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="18.23" x-axis-rotation="0" y="12.73"/>
<close/>
<move x="32.01" y="19.75"/>
<curve x1="31.31" x2="30.6" x3="29.87" y1="19.75" y2="19.79" y3="19.88"/>
<curve x1="27.92" x2="25.86" x3="23.73" y1="20.13" y2="20.75" y3="21.87"/>
<line x="23.72" y="21.88"/>
<line x="23.7" y="21.89"/>
<curve x1="15.34" x2="13.7" x3="14.76" y1="26.58" y2="34.87" y3="40.82"/>
<line x="16.63" y="40.49"/>
<curve x1="15.67" x2="17" x3="24.61" y1="35.15" y2="27.83" y3="23.54"/>
<curve x1="32.39" x2="38.77" x3="42.19" y1="19.47" y2="22.69" y3="25.46"/>
<line x="43.38" y="24"/>
<curve x1="40.9" x2="36.89" x3="32.01" y1="21.98" y2="19.77" y3="19.75"/>
<close/>
<move x="55.73" y="22.71"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="55.32" x-axis-rotation="0" y="22.84"/>
<line x="50.58" y="25.58"/>
<arc large-arc-flag="1" rx="0.95" ry="0.95" sweep-flag="0" x="51.52" x-axis-rotation="0" y="27.22"/>
<line x="56.26" y="24.48"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="55.83" x-axis-rotation="0" y="22.71"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="55.73" x-axis-rotation="0" y="22.71"/>
<close/>
<move x="8.27" y="22.82"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="8.17" x-axis-rotation="0" y="22.82"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="7.77" x-axis-rotation="0" y="24.59"/>
<line x="12.5" y="27.34"/>
<arc large-arc-flag="0" rx="0.95" ry="0.95" sweep-flag="0" x="13.45" x-axis-rotation="0" y="25.71"/>
<line x="8.72" y="22.96"/>
<arc large-arc-flag="0" rx="0.94" ry="0.94" sweep-flag="0" x="8.27" x-axis-rotation="0" y="22.82"/>
<close/>
<move x="28.68" y="25.05"/>
<curve x1="27" x2="25.26" x3="23.91" y1="25.05" y2="25.59" y3="26.77"/>
<curve x1="22.56" x2="21.67" x3="21.67" y1="27.96" y2="29.82" y3="32.15"/>
<line x="21.67" y="34.88"/>
<arc large-arc-flag="0" rx="9.04" ry="9.04" sweep-flag="0" x="19.41" x-axis-rotation="0" y="40.84"/>
<arc large-arc-flag="0" rx="9.04" ry="9.04" sweep-flag="0" x="28.45" x-axis-rotation="0" y="49.89"/>
<arc large-arc-flag="0" rx="9.04" ry="9.04" sweep-flag="0" x="37.49" x-axis-rotation="0" y="40.84"/>
<arc large-arc-flag="0" rx="9.04" ry="9.04" sweep-flag="0" x="35.23" x-axis-rotation="0" y="34.89"/>
<line x="35.23" y="32.15"/>
<curve x1="35.23" x2="34.53" x3="33.39" y1="30.42" y2="28.71" y3="27.37"/>
<curve x1="32.24" x2="30.59" x3="28.68" y1="26.04" y2="25.05" y3="25.05"/>
<close/>
<move x="28.68" y="27.32"/>
<curve x1="29.8" x2="30.86" x3="31.66" y1="27.32" y2="27.91" y3="28.85"/>
<curve x1="32.47" x2="32.97" x3="32.97" y1="29.79" y2="31.06" y3="32.15"/>
<line x="32.97" y="33.02"/>
<arc large-arc-flag="0" rx="9.04" ry="9.04" sweep-flag="0" x="28.45" x-axis-rotation="0" y="31.81"/>
<arc large-arc-flag="0" rx="9.04" ry="9.04" sweep-flag="0" x="23.93" x-axis-rotation="0" y="33.03"/>
<line x="23.93" y="32.15"/>
<curve x1="23.93" x2="24.54" x3="25.41" y1="30.36" y2="29.24" y3="28.48"/>
<curve x1="26.28" x2="27.48" x3="28.68" y1="27.71" y2="27.32" y3="27.32"/>
<close/>
<move x="44.8" y="28.15"/>
<line x="44.8" y="28.15"/>
<curve x1="41.97" x2="39.48" x3="37.1" y1="28.15" y2="28.88" y3="30.33"/>
<line x="38.08" y="31.94"/>
<curve x1="40.21" x2="42.29" x3="44.8" y1="30.65" y2="30.04" y3="30.04"/>
<curve x1="50.9" x2="56.07" x3="56.07" y1="30.04" y2="35.17" y3="41.65"/>
<curve x1="56.07" x2="50.91" x3="44.28" y1="47.73" y2="53.11" y3="53.11"/>
<line x="16.84" y="53.06"/>
<curve x1="14.92" x2="12.64" x3="10.89" y1="53.06" y2="52.12" y3="50.51"/>
<curve x1="9.15" x2="7.94" x3="7.94" y1="48.91" y2="46.68" y3="44.11"/>
<line x="7.94" y="44.09"/>
<line x="7.94" y="44.07"/>
<curve x1="7.86" x2="9.02" x3="11.2" y1="41.59" y2="38.44" y3="36.44"/>
<line x="9.92" y="35.05"/>
<curve x1="7.28" x2="5.95" x3="6.05" y1="37.47" y2="41.03" y3="44.13"/>
<curve x1="6.06" x2="7.55" x3="9.61" y1="47.28" y2="50" y3="51.9"/>
<curve x1="11.68" x2="14.32" x3="16.84" y1="53.81" y2="54.95" y3="54.95"/>
<line x="44.28" y="55"/>
<curve x1="51.93" x2="57.96" x3="57.96" y1="55" y2="48.8" y3="41.65"/>
<curve x1="57.96" x2="51.95" x3="44.8" y1="34.16" y2="28.15" y3="28.15"/>
<close/>
<move x="32.6" y="36.65"/>
<line x="34.2" y="38.26"/>
<line x="26.7" y="45.74"/>
<line x="22.5" y="41.53"/>
<line x="24.1" y="39.93"/>
<line x="26.71" y="42.53"/>
<close/>
</path>
<fill/>
</foreground>
</shape>
<shape aspect="variable" h="64" name="ZoneTag" strokewidth="inherit" w="64">
<connections/>
<foreground>
<rect h="64" w="64" x="0" y="0"/>
<fill/>
<fillcolor color="#ffffff"/>
<path>
<move x="21.12" y="9.52"/>
<line x="21.12" y="15.15"/>
<line x="8.15" y="15.15"/>
<line x="8.15" y="51.25"/>
<line x="21.12" y="51.25"/>
<line x="21.12" y="54.48"/>
<line x="42.88" y="54.48"/>
<line x="42.88" y="51.25"/>
<line x="55.85" y="51.25"/>
<line x="55.85" y="15.15"/>
<line x="42.88" y="15.15"/>
<line x="42.88" y="9.52"/>
<close/>
<move x="23.08" y="11.48"/>
<line x="40.92" y="11.48"/>
<line x="40.92" y="52.52"/>
<line x="23.08" y="52.52"/>
<close/>
<move x="27.2" y="16.52"/>
<line x="27.2" y="18.48"/>
<line x="36.8" y="18.48"/>
<line x="36.8" y="16.52"/>
<close/>
<move x="10.05" y="17.05"/>
<line x="21.12" y="17.05"/>
<line x="21.12" y="19.42"/>
<line x="12.5" y="19.42"/>
<line x="12.5" y="21.38"/>
<line x="21.12" y="21.38"/>
<line x="21.12" y="23.52"/>
<line x="12.5" y="23.52"/>
<line x="12.5" y="25.48"/>
<line x="21.12" y="25.48"/>
<line x="21.12" y="27.52"/>
<line x="12.5" y="27.52"/>
<line x="12.5" y="29.48"/>
<line x="21.12" y="29.48"/>
<line x="21.12" y="49.35"/>
<line x="10.05" y="49.35"/>
<close/>
<move x="42.88" y="17.05"/>
<line x="53.95" y="17.05"/>
<line x="53.95" y="49.35"/>
<line x="42.88" y="49.35"/>
<line x="42.88" y="29.48"/>
<line x="51.5" y="29.48"/>
<line x="51.5" y="27.52"/>
<line x="42.88" y="27.52"/>
<line x="42.88" y="25.48"/>
<line x="51.5" y="25.48"/>
<line x="51.5" y="23.52"/>
<line x="42.88" y="23.52"/>
<line x="42.88" y="21.38"/>
<line x="51.5" y="21.38"/>
<line x="51.5" y="19.42"/>
<line x="42.88" y="19.42"/>
<close/>
<move x="27.2" y="20.52"/>
<line x="27.2" y="22.48"/>
<line x="36.8" y="22.48"/>
<line x="36.8" y="20.52"/>
<close/>
<move x="27.2" y="24.62"/>
<line x="27.2" y="26.58"/>
<line x="36.8" y="26.58"/>
<line x="36.8" y="24.62"/>
<close/>
</path>
<fill/>
</foreground>
</shape>
</shapes>