Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jgraph/drawio.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Benson <david@draw.io>2021-12-17 18:36:36 +0300
committerDavid Benson <david@draw.io>2021-12-17 18:36:36 +0300
commitc02986677e97035007c4fb0221363441045e0283 (patch)
treedbaa729200cba4217623211dea96add87385a3d5
parentbfd8058a2e1c284a20440757f03c5fbd68ea0287 (diff)
16.0.0 releasev16.0.0
-rw-r--r--ChangeLog15
-rw-r--r--VERSION2
-rw-r--r--src/main/webapp/electron.js8
-rw-r--r--src/main/webapp/js/app.min.js2129
-rw-r--r--src/main/webapp/js/diagramly/App.js87
-rw-r--r--src/main/webapp/js/diagramly/Devel.js6
-rw-r--r--src/main/webapp/js/diagramly/DrawioFile.js1
-rw-r--r--src/main/webapp/js/diagramly/Editor.js53
-rw-r--r--src/main/webapp/js/diagramly/EditorUi.js22
-rw-r--r--src/main/webapp/js/diagramly/ElectronApp.js116
-rw-r--r--src/main/webapp/js/diagramly/GraphViewer.js2
-rw-r--r--src/main/webapp/js/diagramly/Minimal.js4
-rw-r--r--src/main/webapp/js/diagramly/Settings.js10
-rw-r--r--src/main/webapp/js/grapheditor/Actions.js2
-rw-r--r--src/main/webapp/js/grapheditor/Editor.js2
-rw-r--r--src/main/webapp/js/grapheditor/EditorUi.js378
-rw-r--r--src/main/webapp/js/grapheditor/Format.js654
-rw-r--r--src/main/webapp/js/grapheditor/Graph.js98
-rw-r--r--src/main/webapp/js/grapheditor/Shapes.js2
-rw-r--r--src/main/webapp/js/viewer-static.min.js2857
-rw-r--r--src/main/webapp/js/viewer.min.js2857
-rw-r--r--src/main/webapp/mxgraph/mxClient.js148
-rw-r--r--src/main/webapp/resources/dia_ar.txt2
-rw-r--r--src/main/webapp/resources/dia_eu.txt6
-rw-r--r--src/main/webapp/service-worker.js2
-rw-r--r--src/main/webapp/service-worker.js.map2
-rw-r--r--src/main/webapp/shortcuts.svg2
-rw-r--r--src/main/webapp/templates/cloud/aws/aws_1.xml2
-rw-r--r--src/main/webapp/templates/cloud/aws/aws_10.xml2
-rw-r--r--src/main/webapp/templates/cloud/aws/aws_2.xml2
-rw-r--r--src/main/webapp/templates/cloud/aws/aws_3.xml2
-rw-r--r--src/main/webapp/templates/cloud/aws/aws_4.xml2
-rw-r--r--src/main/webapp/templates/cloud/aws/aws_5.xml2
-rw-r--r--src/main/webapp/templates/cloud/aws/aws_6.xml2
-rw-r--r--src/main/webapp/templates/cloud/aws/aws_7.xml2
-rw-r--r--src/main/webapp/templates/cloud/aws/aws_8.xml2
-rw-r--r--src/main/webapp/templates/cloud/aws/aws_9.xml2
37 files changed, 4699 insertions, 4788 deletions
diff --git a/ChangeLog b/ChangeLog
index a3b183f1..a579adf4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+17-DEC-2021: 16.0.0
+
+The reason for going to version 16 is there is a breaking change in the docker image. The
+default base image used has been changed because the previous image was not supported. There
+is no breaking change in the editor codebase, but the docker images follow the same numbering.
+
+- Fixes clipping on initial arrow drop down https://github.com/jgraph/drawio/issues/2482
+- Fixes table and template icon in sketch mode
+- Restores sync problem icon
+- Hides Cmd+R keyboard shortcut in Safari https://github.com/jgraph/drawio/issues/1757
+- Moves selection state to EditorUi
+- Added scrollbar to layersDialog in GraphViewer https://github.com/jgraph/drawio/issues/1347
+- Added dark mode support for Mermaid https://github.com/jgraph/drawio-desktop/issues/785
+- [conf cloud] Added minorEdit for page changes just in case it is effective
+
13-DEC-2021: 15.9.6
- Fixes NPE for wheel event in outline window
diff --git a/VERSION b/VERSION
index c7c1b691..0e94e314 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-15.9.6 \ No newline at end of file
+16.0.0 \ No newline at end of file
diff --git a/src/main/webapp/electron.js b/src/main/webapp/electron.js
index bec09f79..709acac6 100644
--- a/src/main/webapp/electron.js
+++ b/src/main/webapp/electron.js
@@ -26,6 +26,12 @@ autoUpdater.logger = log
autoUpdater.logger.transports.file.level = 'info'
autoUpdater.autoDownload = false
+//Command option to disable hardware acceleration
+if (process.argv.indexOf('--disable-acceleration') !== -1)
+{
+ app.disableHardwareAcceleration();
+}
+
const __DEV__ = process.env.DRAWIO_ENV === 'dev'
let windowsRegistry = []
@@ -149,6 +155,8 @@ function createWindow (opt = {})
if (choice === 1)
{
+ //If user chose not to save, remove the draft
+ contents.executeJavaScript('global.__emt_removeDraft()', true);
win.destroy()
}
else
diff --git a/src/main/webapp/js/app.min.js b/src/main/webapp/js/app.min.js
index f13d9a12..1a782062 100644
--- a/src/main/webapp/js/app.min.js
+++ b/src/main/webapp/js/app.min.js
@@ -236,7 +236,7 @@ null!=a&&(DRAWIO_GITLAB_ID=a);window.DRAWIO_LOG_URL=window.DRAWIO_LOG_URL||"";a=
if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==urlParams.local||"1"==urlParams.lockdown)urlParams.picker="0",urlParams.gapi="0",urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0";
"se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1");
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";
-window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"15.9.6",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
+window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"16.0.0",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform),IS_WEBVIEW:/((iPhone|iPod|iPad).*AppleWebKit(?!.*Version)|; wv)/i.test(navigator.userAgent),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&
0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!==document.createElementNS("http://www.w3.org/2000/svg","foreignObject").toString()||0<=navigator.userAgent.indexOf("Opera/"),
@@ -276,79 +276,79 @@ return a},remove:function(a,b){var c=null;if("object"==typeof b)for(var d=mxUtil
if(c&&b.childNodes&&0<b.childNodes.length)for(e=0;e<b.childNodes.length;e++)d.appendChild(mxUtils.importNodeImplementation(a,b.childNodes[e],c));return d;case 3:case 4:case 8:return a.createTextNode(null!=b.nodeValue?b.nodeValue:b.value)}},createXmlDocument:function(){var a=null;document.implementation&&document.implementation.createDocument?a=document.implementation.createDocument("","",null):"ActiveXObject"in window&&(a=mxUtils.createMsXmlDocument());return a},createMsXmlDocument:function(){var a=
new ActiveXObject("Microsoft.XMLDOM");a.async=!1;a.validateOnParse=!1;a.resolveExternals=!1;return a},parseXml:function(){return window.DOMParser?function(a){return(new DOMParser).parseFromString(a,"text/xml")}:function(a){var b=mxUtils.createMsXmlDocument();b.loadXML(a);return b}}(),clearSelection:function(){return document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&
window.getSelection().removeAllRanges()}:function(){}}(),removeWhitespace:function(a,b){for(var c=b?a.previousSibling:a.nextSibling;null!=c&&c.nodeType==mxConstants.NODETYPE_TEXT;){var d=b?c.previousSibling:c.nextSibling,e=mxUtils.getTextContent(c);0==mxUtils.trim(e).length&&c.parentNode.removeChild(c);c=d}},htmlEntities:function(a,b){a=String(a||"");a=a.replace(/&/g,"&amp;");a=a.replace(/"/g,"&quot;");a=a.replace(/\'/g,"&#39;");a=a.replace(/</g,"&lt;");a=a.replace(/>/g,"&gt;");if(null==b||b)a=a.replace(/\n/g,
-"&#xa;");return a},getXml:function(a,b){var c="";mxClient.IS_IE||mxClient.IS_IE11?c=mxUtils.getPrettyXml(a,"","",""):null!=window.XMLSerializer?c=(new XMLSerializer).serializeToString(a):null!=a.xml&&(c=a.xml.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n"));return c.replace(/\n/g,b||"&#xa;")},getPrettyXml:function(a,b,c,d,e){var f=[];if(null!=a)if(b=null!=b?b:" ",c=null!=c?c:"",d=null!=d?d:"\n",null!=a.namespaceURI&&a.namespaceURI!=e&&(e=a.namespaceURI,null==a.getAttribute("xmlns")&&
-a.setAttribute("xmlns",a.namespaceURI)),a.nodeType==mxConstants.NODETYPE_DOCUMENT)f.push(mxUtils.getPrettyXml(a.documentElement,b,c,d,e));else if(a.nodeType==mxConstants.NODETYPE_DOCUMENT_FRAGMENT){var g=a.firstChild;if(null!=g)for(;null!=g;)f.push(mxUtils.getPrettyXml(g,b,c,d,e)),g=g.nextSibling}else if(a.nodeType==mxConstants.NODETYPE_COMMENT)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+"\x3c!--"+a+"--\x3e"+d);else if(a.nodeType==mxConstants.NODETYPE_TEXT)a=mxUtils.trim(mxUtils.getTextContent(a)),
-0<a.length&&f.push(c+mxUtils.htmlEntities(a,!1)+d);else if(a.nodeType==mxConstants.NODETYPE_CDATA)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+"<![CDATA["+a+"]]"+d);else{f.push(c+"<"+a.nodeName);g=a.attributes;if(null!=g)for(var k=0;k<g.length;k++){var l=mxUtils.htmlEntities(g[k].value);f.push(" "+g[k].nodeName+'="'+l+'"')}g=a.firstChild;if(null!=g){for(f.push(">"+d);null!=g;)f.push(mxUtils.getPrettyXml(g,b,c+b,d,e)),g=g.nextSibling;f.push(c+"</"+a.nodeName+">"+d)}else f.push(" />"+d)}return f.join("")},
-extractTextWithWhitespace:function(a){function b(a){if(1!=a.length||"BR"!=a[0].nodeName&&"\n"!=a[0].innerHTML)for(var e=0;e<a.length;e++){var g=a[e];"BR"==g.nodeName||"\n"==g.innerHTML||(1==a.length||0==e)&&"DIV"==g.nodeName&&"<br>"==g.innerHTML.toLowerCase()?d.push("\n"):(3===g.nodeType||4===g.nodeType?0<g.nodeValue.length&&d.push(g.nodeValue):8!==g.nodeType&&0<g.childNodes.length&&b(g.childNodes),e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n"))}}var c="BLOCKQUOTE DIV H1 H2 H3 H4 H5 H6 OL P PRE TABLE UL".split(" "),
-d=[];b(a);return d.join("")},replaceTrailingNewlines:function(a,b){for(var c="";0<a.length&&"\n"==a.charAt(a.length-1);)a=a.substring(0,a.length-1),c+=b;return a+c},getTextContent:function(a){return mxClient.IS_IE&&void 0!==a.innerText?a.innerText:null!=a?a[void 0===a.textContent?"text":"textContent"]:""},setTextContent:function(a,b){void 0!==a.innerText?a.innerText=b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:
-""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName),b.push('="'),b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:
-function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c=null,d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");
-mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,
-b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement;try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},
-fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null,"GET",!1);a.send();return a},get:function(a,b,c,d,e,f,g){a=new mxXmlRequest(a,null,"GET");var k=a.setRequestHeaders;g&&(a.setRequestHeaders=
-function(a,b){k.apply(this,arguments);for(var c in g)a.setRequestHeader(c,g[c])});null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},
-loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,
-e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(null!=a[c]&&null==b[c]||null==a[c]&&null!=b[c]||null!=a[c]&&null!=b[c]&&(a[c].x!=b[c].x||a[c].y!=b[c].y))return!1;return!0},equalEntries:function(a,b){var c=0;if(null==a&&null!=b||null!=a&&null==
-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),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<=
-d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;
-b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,
-mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=
-b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+
-d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},intersectsPoints:function(a,b){for(var c=0;c<b.length-1;c++)if(mxUtils.rectangleIntersectsSegment(a,b[c],b[c+1]))return!0;return!1},rectangleIntersectsSegment:function(a,
-b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+
-g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,
-mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();
-null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:
-document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a);null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+
-(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;
-e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,
-b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;b=document.createElement("img");b.setAttribute("src",a);b.setAttribute("border","0");return b},
-sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>
-a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=
-a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},hex2rgb:function(a){if(null!=a&&7==a.length&&"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16);a=parseInt(a.substring(5,7),16);a="rgb("+b+", "+c+", "+a+")"}return a},
-hex2rgba:function(a){if(null!=a&&7<=a.length&&"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16),d=parseInt(a.substring(5,7),16),e=1;7<a.length&&(e=parseInt(a.substring(7,9),16)/255);a="rgba("+b+", "+c+", "+d+", "+e+")"}return a},rgba2hex:function(a){return(rgb=a&&a.match?a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i):a)&&4===rgb.length?"#"+("0"+parseInt(rgb[1],10).toString(16)).slice(-2)+("0"+parseInt(rgb[2],10).toString(16)).slice(-2)+
-("0"+parseInt(rgb[3],10).toString(16)).slice(-2):a},setCssText:function(a,b){if(null!=a&&null!=b)for(var c=b.split(";"),d=0;d<c.length;d++){var e=c[d].split(":");1<e.length&&(e[0]=mxUtils.trim(e[0].replace(/-([a-z])/gi,function(a,b){return b.toUpperCase()})),a[e[0]]=mxUtils.trim(e[1]))}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):
-0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,
-b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,b){var c=-.5,d=-.5;a==mxConstants.ALIGN_LEFT?c=0:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_TOP?
-d=0:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d,e){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var f=document.createElement("div");f.style.fontFamily=c;f.style.fontSize=Math.round(b)+"px";f.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";null!=e&&((e&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(f.style.fontWeight="bold"),(e&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(f.style.fontStyle=
-"italic"),b=[],(e&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&b.push("underline"),(e&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&b.push("line-through"),0<b.length&&(f.style.textDecoration=b.join(" ")));f.style.position="absolute";f.style.visibility="hidden";f.style.display="inline-block";f.style.zoom="1";null!=d?(f.style.width=d+"px",f.style.whiteSpace="normal"):f.style.whiteSpace="nowrap";f.innerHTML=a;document.body.appendChild(f);a=new mxRectangle(0,0,f.offsetWidth,
-f.offsetHeight);document.body.removeChild(f);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),
-f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=n,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=
-c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=
-null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;
-d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+k+"px;top:"+l+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");
-for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==
-a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+k+","+l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=
-document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;");c.appendChild(d);c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+
-"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign",
-"bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?
-c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=
-l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",
-RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,
-NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00",OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",
-CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,
-HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,DEFAULT_TEXT_DIRECTION:"",LINE_HEIGHT:1.2,WORD_WRAP:"normal",ABSOLUTE_LINE_HEIGHT:!1,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,
-ARROW_SPACING:0,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,827,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,827),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_PORT_CONSTRAINT_ROTATION:"portConstraintRotation",STYLE_SOURCE_PORT_CONSTRAINT:"sourcePortConstraint",
-STYLE_TARGET_PORT_CONSTRAINT:"targetPortConstraint",STYLE_OPACITY:"opacity",STYLE_FILL_OPACITY:"fillOpacity",STYLE_STROKE_OPACITY:"strokeOpacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_TEXT_DIRECTION:"textDirection",STYLE_OVERFLOW:"overflow",STYLE_BLOCK_SPACING:"blockSpacing",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_DX:"exitDx",STYLE_EXIT_DY:"exitDy",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_DX:"entryDx",
-STYLE_ENTRY_DY:"entryDy",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_POINTER_EVENTS:"pointerEvents",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_MARGIN:"margin",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_WIDTH:"labelWidth",
-STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",
-STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",
-STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_FIX_DASH:"fixDash",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_ABSOLUTE_ARCSIZE:"absoluteArcSize",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",
-STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ANCHOR_POINT_DIRECTION:"anchorPointDirection",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",
-STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",
-STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",
-ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",
-TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",
-PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_HEXAGON:"hexagonPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments.length;b+=2)null!=arguments[b+1]&&(this.properties[arguments[b]]=arguments[b+1])}mxEventObject.prototype.name=null;mxEventObject.prototype.properties=null;mxEventObject.prototype.consumed=!1;mxEventObject.prototype.getName=function(){return this.name};
-mxEventObject.prototype.getProperties=function(){return this.properties};mxEventObject.prototype.getProperty=function(a){return this.properties[a]};mxEventObject.prototype.isConsumed=function(){return this.consumed};mxEventObject.prototype.consume=function(){this.consumed=!0};function mxMouseEvent(a,b){this.evt=a;this.sourceState=this.state=b}mxMouseEvent.prototype.consumed=!1;mxMouseEvent.prototype.evt=null;mxMouseEvent.prototype.graphX=null;mxMouseEvent.prototype.graphY=null;
-mxMouseEvent.prototype.state=null;mxMouseEvent.prototype.sourceState=null;mxMouseEvent.prototype.getEvent=function(){return this.evt};mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)};mxMouseEvent.prototype.isSource=function(a){return null!=a?mxUtils.isAncestorNode(a.node,this.getSource()):!1};mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())};mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())};
-mxMouseEvent.prototype.getGraphX=function(){return this.graphX};mxMouseEvent.prototype.getGraphY=function(){return this.graphY};mxMouseEvent.prototype.getState=function(){return this.state};mxMouseEvent.prototype.getCell=function(){var a=this.getState();return null!=a?a.cell:null};mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())};mxMouseEvent.prototype.isConsumed=function(){return this.consumed};
+"&#xa;");return a},decodeHtml:function(a){var b=document.createElement("textarea");b.innerHTML=a;return b.value},getXml:function(a,b){var c="";mxClient.IS_IE||mxClient.IS_IE11?c=mxUtils.getPrettyXml(a,"","",""):null!=window.XMLSerializer?c=(new XMLSerializer).serializeToString(a):null!=a.xml&&(c=a.xml.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n"));return c.replace(/\n/g,b||"&#xa;")},getPrettyXml:function(a,b,c,d,e){var f=[];if(null!=a)if(b=null!=b?b:" ",c=null!=c?c:"",d=
+null!=d?d:"\n",null!=a.namespaceURI&&a.namespaceURI!=e&&(e=a.namespaceURI,null==a.getAttribute("xmlns")&&a.setAttribute("xmlns",a.namespaceURI)),a.nodeType==mxConstants.NODETYPE_DOCUMENT)f.push(mxUtils.getPrettyXml(a.documentElement,b,c,d,e));else if(a.nodeType==mxConstants.NODETYPE_DOCUMENT_FRAGMENT){var g=a.firstChild;if(null!=g)for(;null!=g;)f.push(mxUtils.getPrettyXml(g,b,c,d,e)),g=g.nextSibling}else if(a.nodeType==mxConstants.NODETYPE_COMMENT)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+
+"\x3c!--"+a+"--\x3e"+d);else if(a.nodeType==mxConstants.NODETYPE_TEXT)a=mxUtils.trim(mxUtils.getTextContent(a)),0<a.length&&f.push(c+mxUtils.htmlEntities(a,!1)+d);else if(a.nodeType==mxConstants.NODETYPE_CDATA)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+"<![CDATA["+a+"]]"+d);else{f.push(c+"<"+a.nodeName);g=a.attributes;if(null!=g)for(var k=0;k<g.length;k++){var l=mxUtils.htmlEntities(g[k].value);f.push(" "+g[k].nodeName+'="'+l+'"')}g=a.firstChild;if(null!=g){for(f.push(">"+d);null!=g;)f.push(mxUtils.getPrettyXml(g,
+b,c+b,d,e)),g=g.nextSibling;f.push(c+"</"+a.nodeName+">"+d)}else f.push(" />"+d)}return f.join("")},extractTextWithWhitespace:function(a){function b(a){if(1!=a.length||"BR"!=a[0].nodeName&&"\n"!=a[0].innerHTML)for(var e=0;e<a.length;e++){var g=a[e];"BR"==g.nodeName||"\n"==g.innerHTML||(1==a.length||0==e)&&"DIV"==g.nodeName&&"<br>"==g.innerHTML.toLowerCase()?d.push("\n"):(3===g.nodeType||4===g.nodeType?0<g.nodeValue.length&&d.push(g.nodeValue):8!==g.nodeType&&0<g.childNodes.length&&b(g.childNodes),
+e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n"))}}var c="BLOCKQUOTE DIV H1 H2 H3 H4 H5 H6 OL P PRE TABLE UL".split(" "),d=[];b(a);return d.join("")},replaceTrailingNewlines:function(a,b){for(var c="";0<a.length&&"\n"==a.charAt(a.length-1);)a=a.substring(0,a.length-1),c+=b;return a+c},getTextContent:function(a){return mxClient.IS_IE&&void 0!==a.innerText?a.innerText:null!=a?a[void 0===a.textContent?"text":"textContent"]:""},setTextContent:function(a,b){void 0!==a.innerText?a.innerText=
+b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName),b.push('="'),
+b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c=null,
+d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},
+linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement;
+try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null,
+"GET",!1);a.send();return a},get:function(a,b,c,d,e,f,g){a=new mxXmlRequest(a,null,"GET");var k=a.setRequestHeaders;g&&(a.setRequestHeaders=function(a,b){k.apply(this,arguments);for(var c in g)a.setRequestHeader(c,g[c])});null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&
+b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&
+(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(null!=a[c]&&null==b[c]||null==a[c]&&null!=b[c]||null!=a[c]&&
+null!=b[c]&&(a[c].x!=b[c].x||a[c].y!=b[c].y))return!1;return!0},equalEntries:function(a,b){var c=0;if(null==a&&null!=b||null!=a&&null==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),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<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=
+mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,
+e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,
+b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,
+d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},intersectsPoints:function(a,
+b){for(var c=0;c<b.length-1;c++)if(mxUtils.rectangleIntersectsSegment(a,b[c],b[c+1]))return!0;return!1},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,
+b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=
+n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=
+mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:
+(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a);null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,
+b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===
+String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},
+relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?
+"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;b=document.createElement("img");b.setAttribute("src",a);b.setAttribute("border","0");return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},
+getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,
+b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},hex2rgb:function(a){if(null!=a&&7==a.length&&
+"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16);a=parseInt(a.substring(5,7),16);a="rgb("+b+", "+c+", "+a+")"}return a},hex2rgba:function(a){if(null!=a&&7<=a.length&&"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16),d=parseInt(a.substring(5,7),16),e=1;7<a.length&&(e=parseInt(a.substring(7,9),16)/255);a="rgba("+b+", "+c+", "+d+", "+e+")"}return a},rgba2hex:function(a){return(rgb=a&&a.match?a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i):
+a)&&4===rgb.length?"#"+("0"+parseInt(rgb[1],10).toString(16)).slice(-2)+("0"+parseInt(rgb[2],10).toString(16)).slice(-2)+("0"+parseInt(rgb[3],10).toString(16)).slice(-2):a},setCssText:function(a,b){if(null!=a&&null!=b)for(var c=b.split(";"),d=0;d<c.length;d++){var e=c[d].split(":");1<e.length&&(e[0]=mxUtils.trim(e[0].replace(/-([a-z])/gi,function(a,b){return b.toUpperCase()})),a[e[0]]=mxUtils.trim(e[1]))}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==
+a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=
+b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,
+b){var c=-.5,d=-.5;a==mxConstants.ALIGN_LEFT?c=0:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_TOP?d=0:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d,e){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var f=document.createElement("div");f.style.fontFamily=c;f.style.fontSize=Math.round(b)+"px";f.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";null!=e&&((e&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&
+(f.style.fontWeight="bold"),(e&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(f.style.fontStyle="italic"),b=[],(e&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&b.push("underline"),(e&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&b.push("line-through"),0<b.length&&(f.style.textDecoration=b.join(" ")));f.style.position="absolute";f.style.visibility="hidden";f.style.display="inline-block";f.style.zoom="1";null!=d?(f.style.width=d+"px",f.style.whiteSpace="normal"):f.style.whiteSpace=
+"nowrap";f.innerHTML=a;document.body.appendChild(f);a=new mxRectangle(0,0,f.offsetWidth,f.offsetHeight);document.body.removeChild(f);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,
+"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=n,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;
+c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*
+c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");
+for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+k+"px;top:"+l+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));
+d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;
+for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+k+","+l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,
+500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;");c.appendChild(d);c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=
+window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",
+d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),
+c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=
+g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,
+MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,
+NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00",OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",
+CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",
+OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,DEFAULT_TEXT_DIRECTION:"",LINE_HEIGHT:1.2,WORD_WRAP:"normal",ABSOLUTE_LINE_HEIGHT:!1,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,
+DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:0,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,827,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,827),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_PORT_CONSTRAINT_ROTATION:"portConstraintRotation",
+STYLE_SOURCE_PORT_CONSTRAINT:"sourcePortConstraint",STYLE_TARGET_PORT_CONSTRAINT:"targetPortConstraint",STYLE_OPACITY:"opacity",STYLE_FILL_OPACITY:"fillOpacity",STYLE_STROKE_OPACITY:"strokeOpacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_TEXT_DIRECTION:"textDirection",STYLE_OVERFLOW:"overflow",STYLE_BLOCK_SPACING:"blockSpacing",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_DX:"exitDx",STYLE_EXIT_DY:"exitDy",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",
+STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_DX:"entryDx",STYLE_ENTRY_DY:"entryDy",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_POINTER_EVENTS:"pointerEvents",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_MARGIN:"margin",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",
+STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_WIDTH:"labelWidth",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",
+STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",
+STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_FIX_DASH:"fixDash",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_ABSOLUTE_ARCSIZE:"absoluteArcSize",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",
+STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ANCHOR_POINT_DIRECTION:"anchorPointDirection",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",
+STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",
+STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",
+SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",
+DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",
+EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_HEXAGON:"hexagonPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments.length;b+=2)null!=arguments[b+1]&&(this.properties[arguments[b]]=arguments[b+1])}mxEventObject.prototype.name=null;
+mxEventObject.prototype.properties=null;mxEventObject.prototype.consumed=!1;mxEventObject.prototype.getName=function(){return this.name};mxEventObject.prototype.getProperties=function(){return this.properties};mxEventObject.prototype.getProperty=function(a){return this.properties[a]};mxEventObject.prototype.isConsumed=function(){return this.consumed};mxEventObject.prototype.consume=function(){this.consumed=!0};function mxMouseEvent(a,b){this.evt=a;this.sourceState=this.state=b}
+mxMouseEvent.prototype.consumed=!1;mxMouseEvent.prototype.evt=null;mxMouseEvent.prototype.graphX=null;mxMouseEvent.prototype.graphY=null;mxMouseEvent.prototype.state=null;mxMouseEvent.prototype.sourceState=null;mxMouseEvent.prototype.getEvent=function(){return this.evt};mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)};mxMouseEvent.prototype.isSource=function(a){return null!=a?mxUtils.isAncestorNode(a.node,this.getSource()):!1};mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())};
+mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())};mxMouseEvent.prototype.getGraphX=function(){return this.graphX};mxMouseEvent.prototype.getGraphY=function(){return this.graphY};mxMouseEvent.prototype.getState=function(){return this.state};mxMouseEvent.prototype.getCell=function(){var a=this.getState();return null!=a?a.cell:null};mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())};mxMouseEvent.prototype.isConsumed=function(){return this.consumed};
mxMouseEvent.prototype.consume=function(a){(null!=a?a:null!=this.evt.touches||mxEvent.isMouseEvent(this.evt))&&this.evt.preventDefault&&this.evt.preventDefault();mxClient.IS_IE&&(this.evt.returnValue=!0);this.consumed=!0};function mxEventSource(a){this.setEventSource(a)}mxEventSource.prototype.eventListeners=null;mxEventSource.prototype.eventsEnabled=!0;mxEventSource.prototype.eventSource=null;mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled};
mxEventSource.prototype.setEventsEnabled=function(a){this.eventsEnabled=a};mxEventSource.prototype.getEventSource=function(){return this.eventSource};mxEventSource.prototype.setEventSource=function(a){this.eventSource=a};mxEventSource.prototype.addListener=function(a,b){null==this.eventListeners&&(this.eventListeners=[]);this.eventListeners.push(a);this.eventListeners.push(b)};
mxEventSource.prototype.removeListener=function(a){if(null!=this.eventListeners)for(var b=0;b<this.eventListeners.length;)this.eventListeners[b+1]==a?this.eventListeners.splice(b,2):b+=2};
@@ -2073,14 +2073,14 @@ Editor.closeBlackImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy
Editor.plusImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==";Editor.shapesImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxwYXRoIGQ9Ik0wLDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPjwvZz48Zz48Zz48cGF0aCBkPSJNMywxMWg4VjNIM1YxMXogTTUsNWg0djRINVY1eiIvPjxwYXRoIGQ9Ik0xMywzdjhoOFYzSDEzeiBNMTksOWgtNFY1aDRWOXoiLz48cGF0aCBkPSJNMywyMWg4di04SDNWMjF6IE01LDE1aDR2NEg1VjE1eiIvPjxwb2x5Z29uIHBvaW50cz0iMTgsMTMgMTYsMTMgMTYsMTYgMTMsMTYgMTMsMTggMTYsMTggMTYsMjEgMTgsMjEgMTgsMTggMjEsMTggMjEsMTYgMTgsMTYiLz48L2c+PC9nPjwvc3ZnPg==";
Editor.formatImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==";
Editor.freehandImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0Ii8+PHBhdGggZD0iTTQuNSw4YzEuMDQsMCwyLjM0LTEuNSw0LjI1LTEuNWMxLjUyLDAsMi43NSwxLjIzLDIuNzUsMi43NWMwLDIuMDQtMS45OSwzLjE1LTMuOTEsNC4yMkM1LjQyLDE0LjY3LDQsMTUuNTcsNCwxNyBjMCwxLjEsMC45LDIsMiwydjJjLTIuMjEsMC00LTEuNzktNC00YzAtMi43MSwyLjU2LTQuMTQsNC42Mi01LjI4YzEuNDItMC43OSwyLjg4LTEuNiwyLjg4LTIuNDdjMC0wLjQxLTAuMzQtMC43NS0wLjc1LTAuNzUgQzcuNSw4LjUsNi4yNSwxMCw0LjUsMTBDMy4xMiwxMCwyLDguODgsMiw3LjVDMiw1LjQ1LDQuMTcsMi44Myw1LDJsMS40MSwxLjQxQzUuNDEsNC40Miw0LDYuNDMsNCw3LjVDNCw3Ljc4LDQuMjIsOCw0LjUsOHogTTgsMjEgbDMuNzUsMGw4LjA2LTguMDZsLTMuNzUtMy43NUw4LDE3LjI1TDgsMjF6IE0xMCwxOC4wOGw2LjA2LTYuMDZsMC45MiwwLjkyTDEwLjkyLDE5TDEwLDE5TDEwLDE4LjA4eiBNMjAuMzcsNi4yOSBjLTAuMzktMC4zOS0xLjAyLTAuMzktMS40MSwwbC0xLjgzLDEuODNsMy43NSwzLjc1bDEuODMtMS44M2MwLjM5LTAuMzksMC4zOS0xLjAyLDAtMS40MUwyMC4zNyw2LjI5eiIvPjwvc3ZnPg==";
-Editor.templateImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTEzIDExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6bTEtOUg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTQgMThINlY0aDd2NWg1djExeiIvPjwvc3ZnPg==";Editor.darkImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxwYXRoIGQ9Ik05LjM3LDUuNTFDOS4xOSw2LjE1LDkuMSw2LjgyLDkuMSw3LjVjMCw0LjA4LDMuMzIsNy40LDcuNCw3LjRjMC42OCwwLDEuMzUtMC4wOSwxLjk5LTAuMjdDMTcuNDUsMTcuMTksMTQuOTMsMTksMTIsMTkgYy0zLjg2LDAtNy0zLjE0LTctN0M1LDkuMDcsNi44MSw2LjU1LDkuMzcsNS41MXogTTEyLDNjLTQuOTcsMC05LDQuMDMtOSw5czQuMDMsOSw5LDlzOS00LjAzLDktOWMwLTAuNDYtMC4wNC0wLjkyLTAuMS0xLjM2IGMtMC45OCwxLjM3LTIuNTgsMi4yNi00LjQsMi4yNmMtMi45OCwwLTUuNC0yLjQyLTUuNC01LjRjMC0xLjgxLDAuODktMy40MiwyLjI2LTQuNEMxMi45MiwzLjA0LDEyLjQ2LDMsMTIsM0wxMiwzeiIvPjwvc3ZnPg==";
+Editor.darkImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxwYXRoIGQ9Ik05LjM3LDUuNTFDOS4xOSw2LjE1LDkuMSw2LjgyLDkuMSw3LjVjMCw0LjA4LDMuMzIsNy40LDcuNCw3LjRjMC42OCwwLDEuMzUtMC4wOSwxLjk5LTAuMjdDMTcuNDUsMTcuMTksMTQuOTMsMTksMTIsMTkgYy0zLjg2LDAtNy0zLjE0LTctN0M1LDkuMDcsNi44MSw2LjU1LDkuMzcsNS41MXogTTEyLDNjLTQuOTcsMC05LDQuMDMtOSw5czQuMDMsOSw5LDlzOS00LjAzLDktOWMwLTAuNDYtMC4wNC0wLjkyLTAuMS0xLjM2IGMtMC45OCwxLjM3LTIuNTgsMi4yNi00LjQsMi4yNmMtMi45OCwwLTUuNC0yLjQyLTUuNC01LjRjMC0xLjgxLDAuODktMy40MiwyLjI2LTQuNEMxMi45MiwzLjA0LDEyLjQ2LDMsMTIsM0wxMiwzeiIvPjwvc3ZnPg==";
Editor.lightImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxwYXRoIGQ9Ik0xMiw5YzEuNjUsMCwzLDEuMzUsMywzcy0xLjM1LDMtMywzcy0zLTEuMzUtMy0zUzEwLjM1LDksMTIsOSBNMTIsN2MtMi43NiwwLTUsMi4yNC01LDVzMi4yNCw1LDUsNXM1LTIuMjQsNS01IFMxNC43Niw3LDEyLDdMMTIsN3ogTTIsMTNsMiwwYzAuNTUsMCwxLTAuNDUsMS0xcy0wLjQ1LTEtMS0xbC0yLDBjLTAuNTUsMC0xLDAuNDUtMSwxUzEuNDUsMTMsMiwxM3ogTTIwLDEzbDIsMGMwLjU1LDAsMS0wLjQ1LDEtMSBzLTAuNDUtMS0xLTFsLTIsMGMtMC41NSwwLTEsMC40NS0xLDFTMTkuNDUsMTMsMjAsMTN6IE0xMSwydjJjMCwwLjU1LDAuNDUsMSwxLDFzMS0wLjQ1LDEtMVYyYzAtMC41NS0wLjQ1LTEtMS0xUzExLDEuNDUsMTEsMnogTTExLDIwdjJjMCwwLjU1LDAuNDUsMSwxLDFzMS0wLjQ1LDEtMXYtMmMwLTAuNTUtMC40NS0xLTEtMUMxMS40NSwxOSwxMSwxOS40NSwxMSwyMHogTTUuOTksNC41OGMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDAgYy0wLjM5LDAuMzktMC4zOSwxLjAzLDAsMS40MWwxLjA2LDEuMDZjMC4zOSwwLjM5LDEuMDMsMC4zOSwxLjQxLDBzMC4zOS0xLjAzLDAtMS40MUw1Ljk5LDQuNTh6IE0xOC4zNiwxNi45NSBjLTAuMzktMC4zOS0xLjAzLTAuMzktMS40MSwwYy0wLjM5LDAuMzktMC4zOSwxLjAzLDAsMS40MWwxLjA2LDEuMDZjMC4zOSwwLjM5LDEuMDMsMC4zOSwxLjQxLDBjMC4zOS0wLjM5LDAuMzktMS4wMywwLTEuNDEgTDE4LjM2LDE2Ljk1eiBNMTkuNDIsNS45OWMwLjM5LTAuMzksMC4zOS0xLjAzLDAtMS40MWMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDBsLTEuMDYsMS4wNmMtMC4zOSwwLjM5LTAuMzksMS4wMywwLDEuNDEgczEuMDMsMC4zOSwxLjQxLDBMMTkuNDIsNS45OXogTTcuMDUsMTguMzZjMC4zOS0wLjM5LDAuMzktMS4wMywwLTEuNDFjLTAuMzktMC4zOS0xLjAzLTAuMzktMS40MSwwbC0xLjA2LDEuMDYgYy0wLjM5LDAuMzktMC4zOSwxLjAzLDAsMS40MXMxLjAzLDAuMzksMS40MSwwTDcuMDUsMTguMzZ6Ii8+PC9zdmc+";
Editor.undoImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ii8+PC9zdmc+";Editor.redoImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiIvPjwvc3ZnPg==";
Editor.outlineImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMC41IDNsLS4xNi4wM0wxNSA1LjEgOSAzIDMuMzYgNC45Yy0uMjEuMDctLjM2LjI1LS4zNi40OFYyMC41YzAgLjI4LjIyLjUuNS41bC4xNi0uMDNMOSAxOC45bDYgMi4xIDUuNjQtMS45Yy4yMS0uMDcuMzYtLjI1LjM2LS40OFYzLjVjMC0uMjgtLjIyLS41LS41LS41ek0xNSAxOWwtNi0yLjExVjVsNiAyLjExVjE5eiIvPjwvc3ZnPg==";
-Editor.saveImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMThweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMThweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE5IDEydjdINXYtN0gzdjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnptLTYgLjY3bDIuNTktMi41OEwxNyAxMS41bC01IDUtNS01IDEuNDEtMS40MUwxMSAxMi42N1YzaDJ2OS42N3oiLz48L3N2Zz4=";Editor.tableImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTIwIDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDJ2M0g1VjVoMTV6bS01IDE0aC01di05aDV2OXpNNSAxMGgzdjlINXYtOXptMTIgOXYtOWgzdjloLTN6Ii8+PC9zdmc+";
+Editor.saveImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMThweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMThweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE5IDEydjdINXYtN0gzdjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnptLTYgLjY3bDIuNTktMi41OEwxNyAxMS41bC01IDUtNS01IDEuNDEtMS40MUwxMSAxMi42N1YzaDJ2OS42N3oiLz48L3N2Zz4=";
Editor.roughFillStyles=[{val:"auto",dispName:"Auto"},{val:"hachure",dispName:"Hachure"},{val:"solid",dispName:"Solid"},{val:"zigzag",dispName:"ZigZag"},{val:"cross-hatch",dispName:"Cross Hatch"},{val:"dashed",dispName:"Dashed"},{val:"zigzag-line",dispName:"ZigZag Line"}];Editor.themes=null;Editor.ctrlKey=mxClient.IS_MAC?"Cmd":"Ctrl";Editor.hintOffset=20;Editor.shapePickerHoverDelay=300;Editor.fitWindowBorders=null;Editor.popupsAllowed=null!=window.urlParams?"1"!=urlParams.noDevice:!0;
Editor.simpleLabels=!1;Editor.enableNativeCipboard=window==window.top&&!mxClient.IS_FF&&null!=navigator.clipboard;Editor.sketchMode=!1;Editor.darkMode=!1;Editor.darkColor="#2a2a2a";Editor.lightColor="#f0f0f0";Editor.isPngDataUrl=function(a){return null!=a&&"data:image/png;"==a.substring(0,15)};Editor.isPngData=function(a){return 8<a.length&&137==a.charCodeAt(0)&&80==a.charCodeAt(1)&&78==a.charCodeAt(2)&&71==a.charCodeAt(3)&&13==a.charCodeAt(4)&&10==a.charCodeAt(5)&&26==a.charCodeAt(6)&&10==a.charCodeAt(7)};
-Editor.extractGraphModelFromPng=function(a){var b=null;try{var c=a.substring(a.indexOf(",")+1),e=window.atob&&!mxClient.IS_SF?atob(c):Base64.decode(c,!0);EditorUi.parsePng(e,mxUtils.bind(this,function(a,c,k){a=e.substring(a+8,a+8+k);"zTXt"==c?(k=a.indexOf(String.fromCharCode(0)),"mxGraphModel"==a.substring(0,k)&&(a=pako.inflateRaw(Graph.stringToArrayBuffer(a.substring(k+2)),{to:"string"}).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==c&&(a=a.split(String.fromCharCode(0)),1<a.length&&("mxGraphModel"==
+Editor.extractGraphModelFromPng=function(a){var b=null;try{var c=a.substring(a.indexOf(",")+1),e=window.atob&&!mxClient.IS_SF?atob(c):Base64.decode(c,!0);EditorUi.parsePng(e,mxUtils.bind(this,function(a,c,h){a=e.substring(a+8,a+8+h);"zTXt"==c?(h=a.indexOf(String.fromCharCode(0)),"mxGraphModel"==a.substring(0,h)&&(a=pako.inflateRaw(Graph.stringToArrayBuffer(a.substring(h+2)),{to:"string"}).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==c&&(a=a.split(String.fromCharCode(0)),1<a.length&&("mxGraphModel"==
a[0]||"mxfile"==a[0])&&(b=a[1]));if(null!=b||"IDAT"==c)return!0}))}catch(d){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};Editor.isDarkMode=function(a){return Editor.darkMode||"dark"==uiTheme};Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;mxUtils.extend(Editor,mxEventSource);
Editor.prototype.originalNoForeignObject=mxClient.NO_FO;Editor.prototype.transparentImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhMAAwAIAAAP///wAAACH5BAEAAAAALAAAAAAwADAAAAIxhI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8egpAAA7":IMAGE_PATH+"/transparent.gif";Editor.prototype.extendCanvas=!0;Editor.prototype.chromeless=!1;Editor.prototype.cancelFirst=!0;Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;
Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.defaultGraphOverflow="hidden";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(a){this.autosave=a;this.fireEvent(new mxEventObject("autosaveChanged"))};Editor.prototype.getEditBlankUrl=function(a){return this.editBlankUrl+a};
@@ -2097,56 +2097,56 @@ Editor.prototype.getGraphXml=function(a){a=(null!=a?a:1)?(new mxCodec(mxUtils.cr
this.graph.gridSize);a.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0");a.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0");a.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0");a.setAttribute("arrows",this.graph.connectionArrowsEnabled?"1":"0");a.setAttribute("fold",this.graph.foldingEnabled?"1":"0");a.setAttribute("page",this.graph.pageVisible?"1":"0");a.setAttribute("pageScale",this.graph.pageScale);a.setAttribute("pageWidth",this.graph.pageFormat.width);
a.setAttribute("pageHeight",this.graph.pageFormat.height);null!=this.graph.background&&a.setAttribute("background",this.graph.background);return a};Editor.prototype.updateGraphComponents=function(){var a=this.graph;null!=a.container&&(a.view.validateBackground(),a.container.style.overflow=a.scrollbars?"auto":this.defaultGraphOverflow,this.fireEvent(new mxEventObject("updateGraphComponents")))};Editor.prototype.setModified=function(a){this.modified=a};
Editor.prototype.setFilename=function(a){this.filename=a};
-Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(a,c){b.undoableEditHappened(c.getProperty("edit"))};var c=mxUtils.bind(this,function(a,b){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,c);a.getView().addListener(mxEvent.UNDO,c);c=function(b,c){var d=a.getSelectionCellsForChanges(c.getProperty("edit").changes,function(a){return!(a instanceof mxChildChange)});if(0<d.length){a.getModel();for(var e=[],h=0;h<
-d.length;h++)null!=a.view.getState(d[h])&&e.push(d[h]);a.setSelectionCells(e)}};b.addListener(mxEvent.UNDO,c);b.addListener(mxEvent.REDO,c);return b};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};
+Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(a,c){b.undoableEditHappened(c.getProperty("edit"))};var c=mxUtils.bind(this,function(a,b){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,c);a.getView().addListener(mxEvent.UNDO,c);c=function(b,c){var d=a.getSelectionCellsForChanges(c.getProperty("edit").changes,function(a){return!(a instanceof mxChildChange)});if(0<d.length){a.getModel();for(var e=[],k=0;k<
+d.length;k++)null!=a.view.getState(d[k])&&e.push(d[k]);a.setSelectionCells(e)}};b.addListener(mxEvent.UNDO,c);b.addListener(mxEvent.REDO,c);return b};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};
OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(a){this.cancel(!0);mxUtils.alert(a)};OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(a){null!=this.done&&this.done(null!=a?a:!0)};
-function Dialog(a,b,c,e,d,f,k,h,g,m,l){var n=g?57:0,p=c,r=e,u=g?0:64,v=Editor.inlineFullscreen||null==a.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(a.embedViewport);null==a.embedViewport&&null!=window.innerHeight&&(v.height=window.innerHeight);var t=v.height,x=Math.max(1,Math.round((v.width-c-u)/2)),w=Math.max(1,Math.round((t-e-a.footerHeight)/3));b.style.maxHeight="100%";c=null!=document.body?Math.min(c,document.body.scrollWidth-u):c;e=Math.min(e,t-u);0<a.dialogs.length&&(this.zIndex+=
+function Dialog(a,b,c,e,d,f,h,k,g,m,l){var n=g?57:0,p=c,r=e,u=g?0:64,v=Editor.inlineFullscreen||null==a.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(a.embedViewport);null==a.embedViewport&&null!=window.innerHeight&&(v.height=window.innerHeight);var t=v.height,x=Math.max(1,Math.round((v.width-c-u)/2)),w=Math.max(1,Math.round((t-e-a.footerHeight)/3));b.style.maxHeight="100%";c=null!=document.body?Math.min(c,document.body.scrollWidth-u):c;e=Math.min(e,t-u);0<a.dialogs.length&&(this.zIndex+=
2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=t+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));v=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=v.x+"px";this.bg.style.top=v.y+"px";x+=v.x;w+=v.y;Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px",
-w+=a.embedViewport.y,x+=a.embedViewport.x);d&&document.body.appendChild(this.bg);var y=a.createDiv(g?"geTransDialog":"geDialog");d=this.getPosition(x,w,c,e);x=d.x;w=d.y;y.style.width=c+"px";y.style.height=e+"px";y.style.left=x+"px";y.style.top=w+"px";y.style.zIndex=this.zIndex;y.appendChild(b);document.body.appendChild(y);!h&&b.clientHeight>y.clientHeight-u&&(b.style.overflowY="auto");b.style.overflowX="hidden";if(f&&(f=document.createElement("img"),f.setAttribute("src",Dialog.prototype.closeImage),
+w+=a.embedViewport.y,x+=a.embedViewport.x);d&&document.body.appendChild(this.bg);var y=a.createDiv(g?"geTransDialog":"geDialog");d=this.getPosition(x,w,c,e);x=d.x;w=d.y;y.style.width=c+"px";y.style.height=e+"px";y.style.left=x+"px";y.style.top=w+"px";y.style.zIndex=this.zIndex;y.appendChild(b);document.body.appendChild(y);!k&&b.clientHeight>y.clientHeight-u&&(b.style.overflowY="auto");b.style.overflowX="hidden";if(f&&(f=document.createElement("img"),f.setAttribute("src",Dialog.prototype.closeImage),
f.setAttribute("title",mxResources.get("close")),f.className="geDialogClose",f.style.top=w+14+"px",f.style.left=x+c+38-n+"px",f.style.zIndex=this.zIndex,mxEvent.addListener(f,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(f),this.dialogImg=f,!l)){var F=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(a){F=!0}),null,mxUtils.bind(this,function(b){F&&(a.hideDialog(!0),F=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=m){var d=m();
-null!=d&&(p=c=d.w,r=e=d.h)}d=mxUtils.getDocumentSize();t=d.height;this.bg.style.height=t+"px";Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");x=Math.max(1,Math.round((d.width-c-u)/2));w=Math.max(1,Math.round((t-e-a.footerHeight)/3));c=null!=document.body?Math.min(p,document.body.scrollWidth-u):p;e=Math.min(r,t-u);d=this.getPosition(x,w,c,e);x=d.x;w=d.y;y.style.left=x+"px";y.style.top=w+"px";y.style.width=c+"px";y.style.height=e+"px";!h&&
-b.clientHeight>y.clientHeight-u&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=w+14+"px",this.dialogImg.style.left=x+c+38-n+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=k;this.container=y;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
+null!=d&&(p=c=d.w,r=e=d.h)}d=mxUtils.getDocumentSize();t=d.height;this.bg.style.height=t+"px";Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");x=Math.max(1,Math.round((d.width-c-u)/2));w=Math.max(1,Math.round((t-e-a.footerHeight)/3));c=null!=document.body?Math.min(p,document.body.scrollWidth-u):p;e=Math.min(r,t-u);d=this.getPosition(x,w,c,e);x=d.x;w=d.y;y.style.left=x+"px";y.style.top=w+"px";y.style.width=c+"px";y.style.height=e+"px";!k&&
+b.clientHeight>y.clientHeight-u&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=w+14+"px",this.dialogImg.style.left=x+c+38-n+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=h;this.container=y;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC":IMAGE_PATH+
"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png";
Dialog.prototype.clearImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQAKAIABAMDAwP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUIzOEM1NzI4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUIzOEM1NzM4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QjM4QzU3MDg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QjM4QzU3MTg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAEALAAAAAANAAoAAAIXTGCJebD9jEOTqRlttXdrB32PJ2ncyRQAOw==":IMAGE_PATH+
"/clear.gif";Dialog.prototype.bgOpacity=80;Dialog.prototype.getPosition=function(a,b){return new mxPoint(a,b)};Dialog.prototype.close=function(a,b){if(null!=this.onDialogClose){if(0==this.onDialogClose(a,b))return!1;this.onDialogClose=null}null!=this.dialogImg&&(this.dialogImg.parentNode.removeChild(this.dialogImg),this.dialogImg=null);null!=this.bg&&null!=this.bg.parentNode&&this.bg.parentNode.removeChild(this.bg);mxEvent.removeListener(window,"resize",this.resizeListener);this.container.parentNode.removeChild(this.container)};
-var ErrorDialog=function(a,b,c,e,d,f,k,h,g,m,l){g=null!=g?g:!0;var n=document.createElement("div");n.style.textAlign="center";if(null!=b){var p=document.createElement("div");p.style.padding="0px";p.style.margin="0px";p.style.fontSize="18px";p.style.paddingBottom="16px";p.style.marginBottom="10px";p.style.borderBottom="1px solid #c0c0c0";p.style.color="gray";p.style.whiteSpace="nowrap";p.style.textOverflow="ellipsis";p.style.overflow="hidden";mxUtils.write(p,b);p.setAttribute("title",b);n.appendChild(p)}b=
+var ErrorDialog=function(a,b,c,e,d,f,h,k,g,m,l){g=null!=g?g:!0;var n=document.createElement("div");n.style.textAlign="center";if(null!=b){var p=document.createElement("div");p.style.padding="0px";p.style.margin="0px";p.style.fontSize="18px";p.style.paddingBottom="16px";p.style.marginBottom="10px";p.style.borderBottom="1px solid #c0c0c0";p.style.color="gray";p.style.whiteSpace="nowrap";p.style.textOverflow="ellipsis";p.style.overflow="hidden";mxUtils.write(p,b);p.setAttribute("title",b);n.appendChild(p)}b=
document.createElement("div");b.style.lineHeight="1.2em";b.style.padding="6px";b.innerHTML=c;n.appendChild(b);c=document.createElement("div");c.style.marginTop="12px";c.style.textAlign="center";null!=f&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();f()}),b.className="geBtn",c.appendChild(b),c.style.textAlign="center");null!=m&&(m=mxUtils.button(m,function(){null!=l&&l()}),m.className="geBtn",c.appendChild(m));var r=mxUtils.button(e,function(){g&&a.hideDialog();null!=d&&d()});
-r.className="geBtn";c.appendChild(r);null!=k&&(e=mxUtils.button(k,function(){g&&a.hideDialog();null!=h&&h()}),e.className="geBtn gePrimaryBtn",c.appendChild(e));this.init=function(){r.focus()};n.appendChild(c);this.container=n},PrintDialog=function(a,b){this.create(a,b)};
-PrintDialog.prototype.create=function(a){function b(a){var b=h.checked||m.checked,d=parseInt(n.value)/100;isNaN(d)&&(d=1,n.value="100%");var d=.75*d,e=c.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,f=1/c.pageScale;if(b){var g=h.checked?1:parseInt(l.value);isNaN(g)||(f=mxUtils.getScaleForPageCount(g,c,e))}c.getGraphBounds();var k=g=0,e=mxRectangle.fromRectangle(e);e.width=Math.ceil(e.width*d);e.height=Math.ceil(e.height*d);f*=d;!b&&c.pageVisible?(d=c.getPageLayout(),g-=d.x*e.width,k-=d.y*e.height):
-b=!0;b=PrintDialog.createPrintPreview(c,f,e,0,g,k,b);b.open();a&&PrintDialog.printPreview(b)}var c=a.editor.graph,e,d,f=document.createElement("table");f.style.width="100%";f.style.height="100%";var k=document.createElement("tbody");e=document.createElement("tr");var h=document.createElement("input");h.setAttribute("type","checkbox");d=document.createElement("td");d.setAttribute("colspan","2");d.style.fontSize="10pt";d.appendChild(h);var g=document.createElement("span");mxUtils.write(g," "+mxResources.get("fitPage"));
-d.appendChild(g);mxEvent.addListener(g,"click",function(a){h.checked=!h.checked;m.checked=!h.checked;mxEvent.consume(a)});mxEvent.addListener(h,"change",function(){m.checked=!h.checked});e.appendChild(d);k.appendChild(e);e=e.cloneNode(!1);var m=document.createElement("input");m.setAttribute("type","checkbox");d=document.createElement("td");d.style.fontSize="10pt";d.appendChild(m);g=document.createElement("span");mxUtils.write(g," "+mxResources.get("posterPrint")+":");d.appendChild(g);mxEvent.addListener(g,
-"click",function(a){m.checked=!m.checked;h.checked=!m.checked;mxEvent.consume(a)});e.appendChild(d);var l=document.createElement("input");l.setAttribute("value","1");l.setAttribute("type","number");l.setAttribute("min","1");l.setAttribute("size","4");l.setAttribute("disabled","disabled");l.style.width="50px";d=document.createElement("td");d.style.fontSize="10pt";d.appendChild(l);mxUtils.write(d," "+mxResources.get("pages")+" (max)");e.appendChild(d);k.appendChild(e);mxEvent.addListener(m,"change",
-function(){m.checked?l.removeAttribute("disabled"):l.setAttribute("disabled","disabled");h.checked=!m.checked});e=e.cloneNode(!1);d=document.createElement("td");mxUtils.write(d,mxResources.get("pageScale")+":");e.appendChild(d);d=document.createElement("td");var n=document.createElement("input");n.setAttribute("value","100 %");n.setAttribute("size","5");n.style.width="50px";d.appendChild(n);e.appendChild(d);k.appendChild(e);e=document.createElement("tr");d=document.createElement("td");d.colSpan=2;
+r.className="geBtn";c.appendChild(r);null!=h&&(e=mxUtils.button(h,function(){g&&a.hideDialog();null!=k&&k()}),e.className="geBtn gePrimaryBtn",c.appendChild(e));this.init=function(){r.focus()};n.appendChild(c);this.container=n},PrintDialog=function(a,b){this.create(a,b)};
+PrintDialog.prototype.create=function(a){function b(a){var b=k.checked||m.checked,d=parseInt(n.value)/100;isNaN(d)&&(d=1,n.value="100%");var d=.75*d,e=c.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,f=1/c.pageScale;if(b){var g=k.checked?1:parseInt(l.value);isNaN(g)||(f=mxUtils.getScaleForPageCount(g,c,e))}c.getGraphBounds();var h=g=0,e=mxRectangle.fromRectangle(e);e.width=Math.ceil(e.width*d);e.height=Math.ceil(e.height*d);f*=d;!b&&c.pageVisible?(d=c.getPageLayout(),g-=d.x*e.width,h-=d.y*e.height):
+b=!0;b=PrintDialog.createPrintPreview(c,f,e,0,g,h,b);b.open();a&&PrintDialog.printPreview(b)}var c=a.editor.graph,e,d,f=document.createElement("table");f.style.width="100%";f.style.height="100%";var h=document.createElement("tbody");e=document.createElement("tr");var k=document.createElement("input");k.setAttribute("type","checkbox");d=document.createElement("td");d.setAttribute("colspan","2");d.style.fontSize="10pt";d.appendChild(k);var g=document.createElement("span");mxUtils.write(g," "+mxResources.get("fitPage"));
+d.appendChild(g);mxEvent.addListener(g,"click",function(a){k.checked=!k.checked;m.checked=!k.checked;mxEvent.consume(a)});mxEvent.addListener(k,"change",function(){m.checked=!k.checked});e.appendChild(d);h.appendChild(e);e=e.cloneNode(!1);var m=document.createElement("input");m.setAttribute("type","checkbox");d=document.createElement("td");d.style.fontSize="10pt";d.appendChild(m);g=document.createElement("span");mxUtils.write(g," "+mxResources.get("posterPrint")+":");d.appendChild(g);mxEvent.addListener(g,
+"click",function(a){m.checked=!m.checked;k.checked=!m.checked;mxEvent.consume(a)});e.appendChild(d);var l=document.createElement("input");l.setAttribute("value","1");l.setAttribute("type","number");l.setAttribute("min","1");l.setAttribute("size","4");l.setAttribute("disabled","disabled");l.style.width="50px";d=document.createElement("td");d.style.fontSize="10pt";d.appendChild(l);mxUtils.write(d," "+mxResources.get("pages")+" (max)");e.appendChild(d);h.appendChild(e);mxEvent.addListener(m,"change",
+function(){m.checked?l.removeAttribute("disabled"):l.setAttribute("disabled","disabled");k.checked=!m.checked});e=e.cloneNode(!1);d=document.createElement("td");mxUtils.write(d,mxResources.get("pageScale")+":");e.appendChild(d);d=document.createElement("td");var n=document.createElement("input");n.setAttribute("value","100 %");n.setAttribute("size","5");n.style.width="50px";d.appendChild(n);e.appendChild(d);h.appendChild(e);e=document.createElement("tr");d=document.createElement("td");d.colSpan=2;
d.style.paddingTop="20px";d.setAttribute("align","right");g=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});g.className="geBtn";a.editor.cancelFirst&&d.appendChild(g);if(PrintDialog.previewEnabled){var p=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});p.className="geBtn";d.appendChild(p)}p=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});p.className="geBtn gePrimaryBtn";d.appendChild(p);a.editor.cancelFirst||
-d.appendChild(g);e.appendChild(d);k.appendChild(e);f.appendChild(k);this.container=f};PrintDialog.printPreview=function(a){try{if(null!=a.wnd){var b=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(b,500):b()}}catch(c){}};
-PrintDialog.createPrintPreview=function(a,b,c,e,d,f,k){b=new mxPrintPreview(a,b,c,e,d,f);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=k;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var h=b.writeHead;b.writeHead=function(a){h.apply(this,arguments);a.writeln('<style type="text/css">');a.writeln("@media screen {");a.writeln(" body > div { padding:30px;box-sizing:content-box; }");a.writeln("}");a.writeln("</style>")};return b};
+d.appendChild(g);e.appendChild(d);h.appendChild(e);f.appendChild(h);this.container=f};PrintDialog.printPreview=function(a){try{if(null!=a.wnd){var b=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(b,500):b()}}catch(c){}};
+PrintDialog.createPrintPreview=function(a,b,c,e,d,f,h){b=new mxPrintPreview(a,b,c,e,d,f);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=h;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var k=b.writeHead;b.writeHead=function(a){k.apply(this,arguments);a.writeln('<style type="text/css">');a.writeln("@media screen {");a.writeln(" body > div { padding:30px;box-sizing:content-box; }");a.writeln("}");a.writeln("</style>")};return b};
PrintDialog.previewEnabled=!0;
-var PageSetupDialog=function(a){function b(){null==l||l==mxConstants.NONE?(m.style.backgroundColor="",m.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(m.style.backgroundColor=l,m.style.backgroundImage="")}function c(){var b=u;null!=b&&Graph.isPageLink(b.src)&&(b=a.createImageForPageLink(b.src,null));null!=b&&null!=b.src?(r.setAttribute("src",b.src),r.style.display=""):(r.removeAttribute("src"),r.style.display="none")}var e=a.editor.graph,d,f,k=document.createElement("table");k.style.width=
-"100%";k.style.height="100%";var h=document.createElement("tbody");d=document.createElement("tr");f=document.createElement("td");f.style.verticalAlign="top";f.style.fontSize="10pt";mxUtils.write(f,mxResources.get("paperSize")+":");d.appendChild(f);f=document.createElement("td");f.style.verticalAlign="top";f.style.fontSize="10pt";var g=PageSetupDialog.addPageFormatPanel(f,"pagesetupdialog",e.pageFormat);d.appendChild(f);h.appendChild(d);d=document.createElement("tr");f=document.createElement("td");
+var PageSetupDialog=function(a){function b(){null==l||l==mxConstants.NONE?(m.style.backgroundColor="",m.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(m.style.backgroundColor=l,m.style.backgroundImage="")}function c(){var b=u;null!=b&&Graph.isPageLink(b.src)&&(b=a.createImageForPageLink(b.src,null));null!=b&&null!=b.src?(r.setAttribute("src",b.src),r.style.display=""):(r.removeAttribute("src"),r.style.display="none")}var e=a.editor.graph,d,f,h=document.createElement("table");h.style.width=
+"100%";h.style.height="100%";var k=document.createElement("tbody");d=document.createElement("tr");f=document.createElement("td");f.style.verticalAlign="top";f.style.fontSize="10pt";mxUtils.write(f,mxResources.get("paperSize")+":");d.appendChild(f);f=document.createElement("td");f.style.verticalAlign="top";f.style.fontSize="10pt";var g=PageSetupDialog.addPageFormatPanel(f,"pagesetupdialog",e.pageFormat);d.appendChild(f);k.appendChild(d);d=document.createElement("tr");f=document.createElement("td");
mxUtils.write(f,mxResources.get("background")+":");d.appendChild(f);f=document.createElement("td");f.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var m=document.createElement("button");m.style.width="22px";m.style.height="22px";m.style.cursor="pointer";m.style.marginRight="20px";m.style.backgroundPosition="center center";m.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(m.style.position="relative",m.style.top="-6px");var l=e.background;b();mxEvent.addListener(m,
-"click",function(c){a.pickColor(l||"none",function(a){l=a;b()});mxEvent.consume(c)});f.appendChild(m);mxUtils.write(f,mxResources.get("gridSize")+":");var n=document.createElement("input");n.setAttribute("type","number");n.setAttribute("min","0");n.style.width="40px";n.style.marginLeft="6px";n.value=e.getGridSize();f.appendChild(n);mxEvent.addListener(n,"change",function(){var a=parseInt(n.value);n.value=Math.max(1,isNaN(a)?e.getGridSize():a)});d.appendChild(f);h.appendChild(d);d=document.createElement("tr");
+"click",function(c){a.pickColor(l||"none",function(a){l=a;b()});mxEvent.consume(c)});f.appendChild(m);mxUtils.write(f,mxResources.get("gridSize")+":");var n=document.createElement("input");n.setAttribute("type","number");n.setAttribute("min","0");n.style.width="40px";n.style.marginLeft="6px";n.value=e.getGridSize();f.appendChild(n);mxEvent.addListener(n,"change",function(){var a=parseInt(n.value);n.value=Math.max(1,isNaN(a)?e.getGridSize():a)});d.appendChild(f);k.appendChild(d);d=document.createElement("tr");
f=document.createElement("td");mxUtils.write(f,mxResources.get("image")+":");d.appendChild(f);f=document.createElement("td");var p=document.createElement("button");p.className="geBtn";p.style.margin="0px";mxUtils.write(p,mxResources.get("change")+"...");var r=document.createElement("img");r.setAttribute("valign","middle");r.style.verticalAlign="middle";r.style.border="1px solid lightGray";r.style.borderRadius="4px";r.style.marginRight="14px";r.style.maxWidth="100px";r.style.cursor="pointer";r.style.height=
-"60px";r.style.padding="4px";var u=e.backgroundImage,v=function(b){a.showBackgroundImageDialog(function(a,b){b||(u=a,c())},u);mxEvent.consume(b)};mxEvent.addListener(p,"click",v);mxEvent.addListener(r,"click",v);c();f.appendChild(r);f.appendChild(p);d.appendChild(f);h.appendChild(d);d=document.createElement("tr");f=document.createElement("td");f.colSpan=2;f.style.paddingTop="16px";f.setAttribute("align","right");p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";
+"60px";r.style.padding="4px";var u=e.backgroundImage,v=function(b){a.showBackgroundImageDialog(function(a,b){b||(u=a,c())},u);mxEvent.consume(b)};mxEvent.addListener(p,"click",v);mxEvent.addListener(r,"click",v);c();f.appendChild(r);f.appendChild(p);d.appendChild(f);k.appendChild(d);d=document.createElement("tr");f=document.createElement("td");f.colSpan=2;f.style.paddingTop="16px";f.setAttribute("align","right");p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";
a.editor.cancelFirst&&f.appendChild(p);v=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var b=parseInt(n.value);isNaN(b)||e.gridSize===b||e.setGridSize(b);b=new ChangePageSetup(a,l,u,g.get());b.ignoreColor=e.background==l;b.ignoreImage=(null!=e.backgroundImage?e.backgroundImage.src:null)===(null!=u?u.src:null);e.pageFormat.width==b.previousFormat.width&&e.pageFormat.height==b.previousFormat.height&&b.ignoreColor&&b.ignoreImage||e.model.execute(b)});v.className="geBtn gePrimaryBtn";
-f.appendChild(v);a.editor.cancelFirst||f.appendChild(p);d.appendChild(f);h.appendChild(d);k.appendChild(h);this.container=k};
-PageSetupDialog.addPageFormatPanel=function(a,b,c,e){function d(a,b,d){if(d||n!=document.activeElement&&p!=document.activeElement){a=!1;for(b=0;b<u.length;b++)d=u[b],w?"custom"==d.key&&(h.value=d.key,w=!1):null!=d.format&&("a4"==d.key?826==c.width?(c=mxRectangle.fromRectangle(c),c.width=827):826==c.height&&(c=mxRectangle.fromRectangle(c),c.height=827):"a5"==d.key&&(584==c.width?(c=mxRectangle.fromRectangle(c),c.width=583):584==c.height&&(c=mxRectangle.fromRectangle(c),c.height=583)),c.width==d.format.width&&
-c.height==d.format.height?(h.value=d.key,f.setAttribute("checked","checked"),f.defaultChecked=!0,f.checked=!0,k.removeAttribute("checked"),k.defaultChecked=!1,k.checked=!1,a=!0):c.width==d.format.height&&c.height==d.format.width&&(h.value=d.key,f.removeAttribute("checked"),f.defaultChecked=!1,f.checked=!1,k.setAttribute("checked","checked"),k.defaultChecked=!0,a=k.checked=!0));a?(g.style.display="",l.style.display="none"):(n.value=c.width/100,p.value=c.height/100,f.setAttribute("checked","checked"),
-h.value="custom",g.style.display="none",l.style.display="")}}b="format-"+b;var f=document.createElement("input");f.setAttribute("name",b);f.setAttribute("type","radio");f.setAttribute("value","portrait");var k=document.createElement("input");k.setAttribute("name",b);k.setAttribute("type","radio");k.setAttribute("value","landscape");var h=document.createElement("select");h.style.marginBottom="8px";h.style.borderRadius="4px";h.style.border="1px solid rgb(160, 160, 160)";h.style.width="206px";var g=
-document.createElement("div");g.style.marginLeft="4px";g.style.width="210px";g.style.height="24px";f.style.marginRight="6px";g.appendChild(f);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));g.appendChild(b);k.style.marginLeft="10px";k.style.marginRight="6px";g.appendChild(k);var m=document.createElement("span");m.style.width="100px";mxUtils.write(m,mxResources.get("landscape"));g.appendChild(m);var l=document.createElement("div");l.style.marginLeft=
+f.appendChild(v);a.editor.cancelFirst||f.appendChild(p);d.appendChild(f);k.appendChild(d);h.appendChild(k);this.container=h};
+PageSetupDialog.addPageFormatPanel=function(a,b,c,e){function d(a,b,d){if(d||n!=document.activeElement&&p!=document.activeElement){a=!1;for(b=0;b<u.length;b++)d=u[b],w?"custom"==d.key&&(k.value=d.key,w=!1):null!=d.format&&("a4"==d.key?826==c.width?(c=mxRectangle.fromRectangle(c),c.width=827):826==c.height&&(c=mxRectangle.fromRectangle(c),c.height=827):"a5"==d.key&&(584==c.width?(c=mxRectangle.fromRectangle(c),c.width=583):584==c.height&&(c=mxRectangle.fromRectangle(c),c.height=583)),c.width==d.format.width&&
+c.height==d.format.height?(k.value=d.key,f.setAttribute("checked","checked"),f.defaultChecked=!0,f.checked=!0,h.removeAttribute("checked"),h.defaultChecked=!1,h.checked=!1,a=!0):c.width==d.format.height&&c.height==d.format.width&&(k.value=d.key,f.removeAttribute("checked"),f.defaultChecked=!1,f.checked=!1,h.setAttribute("checked","checked"),h.defaultChecked=!0,a=h.checked=!0));a?(g.style.display="",l.style.display="none"):(n.value=c.width/100,p.value=c.height/100,f.setAttribute("checked","checked"),
+k.value="custom",g.style.display="none",l.style.display="")}}b="format-"+b;var f=document.createElement("input");f.setAttribute("name",b);f.setAttribute("type","radio");f.setAttribute("value","portrait");var h=document.createElement("input");h.setAttribute("name",b);h.setAttribute("type","radio");h.setAttribute("value","landscape");var k=document.createElement("select");k.style.marginBottom="8px";k.style.borderRadius="4px";k.style.border="1px solid rgb(160, 160, 160)";k.style.width="206px";var g=
+document.createElement("div");g.style.marginLeft="4px";g.style.width="210px";g.style.height="24px";f.style.marginRight="6px";g.appendChild(f);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));g.appendChild(b);h.style.marginLeft="10px";h.style.marginRight="6px";g.appendChild(h);var m=document.createElement("span");m.style.width="100px";mxUtils.write(m,mxResources.get("landscape"));g.appendChild(m);var l=document.createElement("div");l.style.marginLeft=
"4px";l.style.width="210px";l.style.height="24px";var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";l.appendChild(n);mxUtils.write(l," in x ");var p=document.createElement("input");p.setAttribute("size","7");p.style.textAlign="right";l.appendChild(p);mxUtils.write(l," in");g.style.display="none";l.style.display="none";for(var r={},u=PageSetupDialog.getFormats(),v=0;v<u.length;v++){var t=u[v];r[t.key]=t;var x=document.createElement("option");x.setAttribute("value",
-t.key);mxUtils.write(x,t.title);h.appendChild(x)}var w=!1;d();a.appendChild(h);mxUtils.br(a);a.appendChild(g);a.appendChild(l);var y=c,F=function(a,b){var d=r[h.value];null!=d.format?(n.value=d.format.width/100,p.value=d.format.height/100,l.style.display="none",g.style.display=""):(g.style.display="none",l.style.display="");d=parseFloat(n.value);if(isNaN(d)||0>=d)n.value=c.width/100;d=parseFloat(p.value);if(isNaN(d)||0>=d)p.value=c.height/100;d=new mxRectangle(0,0,Math.floor(100*parseFloat(n.value)),
-Math.floor(100*parseFloat(p.value)));"custom"!=h.value&&k.checked&&(d=new mxRectangle(0,0,d.height,d.width));b&&w||d.width==y.width&&d.height==y.height||(y=d,null!=e&&e(y))};mxEvent.addListener(b,"click",function(a){f.checked=!0;F(a);mxEvent.consume(a)});mxEvent.addListener(m,"click",function(a){k.checked=!0;F(a);mxEvent.consume(a)});mxEvent.addListener(n,"blur",F);mxEvent.addListener(n,"click",F);mxEvent.addListener(p,"blur",F);mxEvent.addListener(p,"click",F);mxEvent.addListener(k,"change",F);mxEvent.addListener(f,
-"change",F);mxEvent.addListener(h,"change",function(a){w="custom"==h.value;F(a,!0)});F();return{set:function(a){c=a;d(null,null,!0)},get:function(){return y},widthInput:n,heightInput:p}};
+t.key);mxUtils.write(x,t.title);k.appendChild(x)}var w=!1;d();a.appendChild(k);mxUtils.br(a);a.appendChild(g);a.appendChild(l);var y=c,F=function(a,b){var d=r[k.value];null!=d.format?(n.value=d.format.width/100,p.value=d.format.height/100,l.style.display="none",g.style.display=""):(g.style.display="none",l.style.display="");d=parseFloat(n.value);if(isNaN(d)||0>=d)n.value=c.width/100;d=parseFloat(p.value);if(isNaN(d)||0>=d)p.value=c.height/100;d=new mxRectangle(0,0,Math.floor(100*parseFloat(n.value)),
+Math.floor(100*parseFloat(p.value)));"custom"!=k.value&&h.checked&&(d=new mxRectangle(0,0,d.height,d.width));b&&w||d.width==y.width&&d.height==y.height||(y=d,null!=e&&e(y))};mxEvent.addListener(b,"click",function(a){f.checked=!0;F(a);mxEvent.consume(a)});mxEvent.addListener(m,"click",function(a){h.checked=!0;F(a);mxEvent.consume(a)});mxEvent.addListener(n,"blur",F);mxEvent.addListener(n,"click",F);mxEvent.addListener(p,"blur",F);mxEvent.addListener(p,"click",F);mxEvent.addListener(h,"change",F);mxEvent.addListener(f,
+"change",F);mxEvent.addListener(k,"change",function(a){w="custom"==k.value;F(a,!0)});F();return{set:function(a){c=a;d(null,null,!0)},get:function(){return y},widthInput:n,heightInput:p}};
PageSetupDialog.getFormats=function(){return[{key:"letter",title:'US-Letter (8,5" x 11")',format:mxConstants.PAGE_FORMAT_LETTER_PORTRAIT},{key:"legal",title:'US-Legal (8,5" x 14")',format:new mxRectangle(0,0,850,1400)},{key:"tabloid",title:'US-Tabloid (11" x 17")',format:new mxRectangle(0,0,1100,1700)},{key:"executive",title:'US-Executive (7" x 10")',format:new mxRectangle(0,0,700,1E3)},{key:"a0",title:"A0 (841 mm x 1189 mm)",format:new mxRectangle(0,0,3300,4681)},{key:"a1",title:"A1 (594 mm x 841 mm)",
format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)",format:new mxRectangle(0,0,1654,2336)},{key:"a3",title:"A3 (297 mm x 420 mm)",format:new mxRectangle(0,0,1169,1654)},{key:"a4",title:"A4 (210 mm x 297 mm)",format:mxConstants.PAGE_FORMAT_A4_PORTRAIT},{key:"a5",title:"A5 (148 mm x 210 mm)",format:new mxRectangle(0,0,583,827)},{key:"a6",title:"A6 (105 mm x 148 mm)",format:new mxRectangle(0,0,413,583)},{key:"a7",title:"A7 (74 mm x 105 mm)",format:new mxRectangle(0,0,291,413)},
{key:"b4",title:"B4 (250 mm x 353 mm)",format:new mxRectangle(0,0,980,1390)},{key:"b5",title:"B5 (176 mm x 250 mm)",format:new mxRectangle(0,0,690,980)},{key:"16-9",title:"16:9 (1600 x 900)",format:new mxRectangle(0,0,900,1600)},{key:"16-10",title:"16:10 (1920 x 1200)",format:new mxRectangle(0,0,1200,1920)},{key:"4-3",title:"4:3 (1600 x 1200)",format:new mxRectangle(0,0,1200,1600)},{key:"custom",title:mxResources.get("custom"),format:null}]};
-var FilenameDialog=function(a,b,c,e,d,f,k,h,g,m,l,n){g=null!=g?g:!0;var p,r,u=document.createElement("table"),v=document.createElement("tbody");u.style.position="absolute";u.style.top="30px";u.style.left="20px";p=document.createElement("tr");r=document.createElement("td");r.style.textOverflow="ellipsis";r.style.textAlign="right";r.style.maxWidth="100px";r.style.fontSize="10pt";r.style.width="84px";mxUtils.write(r,(d||mxResources.get("filename"))+":");p.appendChild(r);var t=document.createElement("input");
-t.setAttribute("value",b||"");t.style.marginLeft="4px";t.style.width=null!=n?n+"px":"180px";var x=mxUtils.button(c,function(){if(null==f||f(t.value))g&&a.hideDialog(),e(t.value)});x.className="geBtn gePrimaryBtn";this.init=function(){if(null!=d||null==k)if(t.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?t.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=u.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor=
+var FilenameDialog=function(a,b,c,e,d,f,h,k,g,m,l,n){g=null!=g?g:!0;var p,r,u=document.createElement("table"),v=document.createElement("tbody");u.style.position="absolute";u.style.top="30px";u.style.left="20px";p=document.createElement("tr");r=document.createElement("td");r.style.textOverflow="ellipsis";r.style.textAlign="right";r.style.maxWidth="100px";r.style.fontSize="10pt";r.style.width="84px";mxUtils.write(r,(d||mxResources.get("filename"))+":");p.appendChild(r);var t=document.createElement("input");
+t.setAttribute("value",b||"");t.style.marginLeft="4px";t.style.width=null!=n?n+"px":"180px";var x=mxUtils.button(c,function(){if(null==f||f(t.value))g&&a.hideDialog(),e(t.value)});x.className="geBtn gePrimaryBtn";this.init=function(){if(null!=d||null==h)if(t.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?t.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=u.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor=
"",b=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=t,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&&(b.style.backgroundColor="",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(t.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),x.click());a.stopPropagation();
-a.preventDefault()}))}}};r=document.createElement("td");r.style.whiteSpace="nowrap";r.appendChild(t);p.appendChild(r);if(null!=d||null==k)v.appendChild(p),null!=l&&(r.appendChild(FilenameDialog.createTypeHint(a,t,l)),null!=a.editor.diagramFileTypes&&(p=document.createElement("tr"),r=document.createElement("td"),r.style.textOverflow="ellipsis",r.style.textAlign="right",r.style.maxWidth="100px",r.style.fontSize="10pt",r.style.width="84px",mxUtils.write(r,mxResources.get("type")+":"),p.appendChild(r),
-r=document.createElement("td"),r.style.whiteSpace="nowrap",p.appendChild(r),b=FilenameDialog.createFileTypes(a,t,a.editor.diagramFileTypes),b.style.marginLeft="4px",b.style.width="198px",r.appendChild(b),t.style.width=null!=n?n-40+"px":"190px",p.appendChild(r),v.appendChild(p)));null!=k&&(p=document.createElement("tr"),r=document.createElement("td"),r.colSpan=2,r.appendChild(k),p.appendChild(r),v.appendChild(p));p=document.createElement("tr");r=document.createElement("td");r.colSpan=2;r.style.paddingTop=
-null!=l?"12px":"20px";r.style.whiteSpace="nowrap";r.setAttribute("align","right");l=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=m&&m()});l.className="geBtn";a.editor.cancelFirst&&r.appendChild(l);null!=h&&(n=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(h)}),n.className="geBtn",r.appendChild(n));mxEvent.addListener(t,"keypress",function(a){13==a.keyCode&&x.click()});r.appendChild(x);a.editor.cancelFirst||r.appendChild(l);p.appendChild(r);v.appendChild(p);
+a.preventDefault()}))}}};r=document.createElement("td");r.style.whiteSpace="nowrap";r.appendChild(t);p.appendChild(r);if(null!=d||null==h)v.appendChild(p),null!=l&&(r.appendChild(FilenameDialog.createTypeHint(a,t,l)),null!=a.editor.diagramFileTypes&&(p=document.createElement("tr"),r=document.createElement("td"),r.style.textOverflow="ellipsis",r.style.textAlign="right",r.style.maxWidth="100px",r.style.fontSize="10pt",r.style.width="84px",mxUtils.write(r,mxResources.get("type")+":"),p.appendChild(r),
+r=document.createElement("td"),r.style.whiteSpace="nowrap",p.appendChild(r),b=FilenameDialog.createFileTypes(a,t,a.editor.diagramFileTypes),b.style.marginLeft="4px",b.style.width="198px",r.appendChild(b),t.style.width=null!=n?n-40+"px":"190px",p.appendChild(r),v.appendChild(p)));null!=h&&(p=document.createElement("tr"),r=document.createElement("td"),r.colSpan=2,r.appendChild(h),p.appendChild(r),v.appendChild(p));p=document.createElement("tr");r=document.createElement("td");r.colSpan=2;r.style.paddingTop=
+null!=l?"12px":"20px";r.style.whiteSpace="nowrap";r.setAttribute("align","right");l=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=m&&m()});l.className="geBtn";a.editor.cancelFirst&&r.appendChild(l);null!=k&&(n=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(k)}),n.className="geBtn",r.appendChild(n));mxEvent.addListener(t,"keypress",function(a){13==a.keyCode&&x.click()});r.appendChild(x);a.editor.cancelFirst||r.appendChild(l);p.appendChild(r);v.appendChild(p);
u.appendChild(v);this.container=u};FilenameDialog.filenameHelpLink=null;
FilenameDialog.createTypeHint=function(a,b,c){var e=document.createElement("img");e.style.backgroundPosition="center bottom";e.style.backgroundRepeat="no-repeat";e.style.margin="2px 0 0 4px";e.style.verticalAlign="top";e.style.cursor="pointer";e.style.height="16px";e.style.width="16px";mxUtils.setOpacity(e,70);var d=function(){e.setAttribute("src",Editor.helpImage);e.setAttribute("title",mxResources.get("help"));for(var a=0;a<c.length;a++)if(0<c[a].ext.length&&b.value.toLowerCase().substring(b.value.length-
c[a].ext.length-1)=="."+c[a].ext){e.setAttribute("title",mxResources.get(c[a].title));break}};mxEvent.addListener(b,"keyup",d);mxEvent.addListener(b,"change",d);mxEvent.addListener(e,"click",function(b){var c=e.getAttribute("title");e.getAttribute("src")==Editor.helpImage?a.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=c&&a.showError(null,c,mxResources.get("help"),function(){a.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);mxEvent.consume(b)});
@@ -2160,60 +2160,66 @@ mxGraphView.prototype.validateBackgroundStyles=function(){var a=this.graph,b=nul
")";var f=c=0;null!=a.view.backgroundPageShape&&(f=this.getBackgroundPageBounds(),c=1+f.x,f=1+f.y);e=-Math.round(e-mxUtils.mod(this.translate.x*this.scale-c,e))+"px "+-Math.round(e-mxUtils.mod(this.translate.y*this.scale-f,e))+"px"}c=a.view.canvas;null!=c.ownerSVGElement&&(c=c.ownerSVGElement);null!=a.view.backgroundPageShape?(a.view.backgroundPageShape.node.style.backgroundPosition=e,a.view.backgroundPageShape.node.style.backgroundImage=d,a.view.backgroundPageShape.node.style.backgroundColor=b,a.view.backgroundPageShape.node.style.borderColor=
a.defaultPageBorderColor,a.container.className="geDiagramContainer geDiagramBackdrop",c.style.backgroundImage="none",c.style.backgroundColor=""):(a.container.className="geDiagramContainer",c.style.backgroundPosition=e,c.style.backgroundColor=b,c.style.backgroundImage=d)};mxGraphView.prototype.createSvgGrid=function(a){for(var b=this.graph.gridSize*this.scale;b<this.minGridSize;)b*=2;for(var c=this.gridSteps*b,d=[],e=1;e<this.gridSteps;e++){var f=e*b;d.push("M 0 "+f+" L "+c+" "+f+" M "+f+" 0 L "+f+
" "+c)}return'<svg width="'+c+'" height="'+c+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+c+'" height="'+c+'" patternUnits="userSpaceOnUse"><path d="'+d.join(" ")+'" fill="none" stroke="'+a+'" opacity="0.2" stroke-width="1"/><path d="M '+c+" 0 L 0 0 0 "+c+'" fill="none" stroke="'+a+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var a=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(b,c){a.apply(this,arguments);
-if(null!=this.shiftPreview1){var d=this.view.canvas;null!=d.ownerSVGElement&&(d=d.ownerSVGElement);var e=this.gridSize*this.view.scale*this.view.gridSteps,e=-Math.round(e-mxUtils.mod(this.view.translate.x*this.view.scale+b,e))+"px "+-Math.round(e-mxUtils.mod(this.view.translate.y*this.view.scale+c,e))+"px";d.style.backgroundPosition=e}};mxGraph.prototype.updatePageBreaks=function(a,b,c){var d=this.view.scale,e=this.view.translate,f=this.pageFormat,g=d*this.pageScale,k=this.view.getBackgroundPageBounds();
-b=k.width;c=k.height;var h=new mxRectangle(d*e.x,d*e.y,f.width*g,f.height*g),v=(a=a&&Math.min(h.width,h.height)>this.minPageBreakDist)?Math.ceil(c/h.height)-1:0,t=a?Math.ceil(b/h.width)-1:0,x=k.x+b,w=k.y+c;null==this.horizontalPageBreaks&&0<v&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<t&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var b=a==this.horizontalPageBreaks?v:t,c=0;c<=b;c++){var d=a==this.horizontalPageBreaks?[new mxPoint(Math.round(k.x),
-Math.round(k.y+(c+1)*h.height)),new mxPoint(Math.round(x),Math.round(k.y+(c+1)*h.height))]:[new mxPoint(Math.round(k.x+(c+1)*h.width),Math.round(k.y)),new mxPoint(Math.round(k.x+(c+1)*h.width),Math.round(w))];null!=a[c]?(a[c].points=d,a[c].redraw()):(d=new mxPolyline(d,this.pageBreakColor),d.dialect=this.dialect,d.isDashed=this.pageBreakDashed,d.pointerEvents=!1,d.init(this.view.backgroundPane),d.redraw(),a[c]=d)}for(c=b;c<a.length;c++)a[c].destroy();a.splice(b,a.length-b)}});a(this.horizontalPageBreaks);
+if(null!=this.shiftPreview1){var d=this.view.canvas;null!=d.ownerSVGElement&&(d=d.ownerSVGElement);var e=this.gridSize*this.view.scale*this.view.gridSteps,e=-Math.round(e-mxUtils.mod(this.view.translate.x*this.view.scale+b,e))+"px "+-Math.round(e-mxUtils.mod(this.view.translate.y*this.view.scale+c,e))+"px";d.style.backgroundPosition=e}};mxGraph.prototype.updatePageBreaks=function(a,b,c){var d=this.view.scale,e=this.view.translate,f=this.pageFormat,g=d*this.pageScale,h=this.view.getBackgroundPageBounds();
+b=h.width;c=h.height;var k=new mxRectangle(d*e.x,d*e.y,f.width*g,f.height*g),v=(a=a&&Math.min(k.width,k.height)>this.minPageBreakDist)?Math.ceil(c/k.height)-1:0,t=a?Math.ceil(b/k.width)-1:0,x=h.x+b,w=h.y+c;null==this.horizontalPageBreaks&&0<v&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<t&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var b=a==this.horizontalPageBreaks?v:t,c=0;c<=b;c++){var d=a==this.horizontalPageBreaks?[new mxPoint(Math.round(h.x),
+Math.round(h.y+(c+1)*k.height)),new mxPoint(Math.round(x),Math.round(h.y+(c+1)*k.height))]:[new mxPoint(Math.round(h.x+(c+1)*k.width),Math.round(h.y)),new mxPoint(Math.round(h.x+(c+1)*k.width),Math.round(w))];null!=a[c]?(a[c].points=d,a[c].redraw()):(d=new mxPolyline(d,this.pageBreakColor),d.dialect=this.dialect,d.isDashed=this.pageBreakDashed,d.pointerEvents=!1,d.init(this.view.backgroundPane),d.redraw(),a[c]=d)}for(c=b;c<a.length;c++)a[c].destroy();a.splice(b,a.length-b)}});a(this.horizontalPageBreaks);
a(this.verticalPageBreaks)};var b=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,c,d){for(var e=0;e<c.length;e++){if(this.graph.isTableCell(c[e])||this.graph.isTableRow(c[e]))return!1;if(this.graph.getModel().isVertex(c[e])){var f=this.graph.getCellGeometry(c[e]);if(null!=f&&f.relative)return!1}}return b.apply(this,arguments)};var c=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=
c.apply(this,arguments);a.intersects=mxUtils.bind(this,function(b,c){return this.isConnecting()?!0:mxCellMarker.prototype.intersects.apply(a,arguments)});return a};mxGraphView.prototype.createBackgroundPageShape=function(a){return new mxRectangleShape(a,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var a=this.getGraphBounds(),b=0<a.width?a.x/this.scale-this.translate.x:0,c=0<a.height?a.y/this.scale-this.translate.y:0,d=this.graph.pageFormat,
e=this.graph.pageScale,f=d.width*e,d=d.height*e,e=Math.floor(Math.min(0,b)/f),p=Math.floor(Math.min(0,c)/d);return new mxRectangle(this.scale*(this.translate.x+e*f),this.scale*(this.translate.y+p*d),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/f)-e)*f,this.scale*(Math.ceil(Math.max(1,c+a.height/this.scale)/d)-p)*d)};var e=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){e.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=a+"px",this.view.backgroundPageShape.node.style.marginTop=b+"px")};var d=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(a,b,c,e,f,n){var g=d.apply(this,arguments);null==n||n||mxEvent.addListener(g,"mousedown",function(a){mxEvent.consume(a)});return g};var f=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
function(a,b,c){var d,e=this.graph.model.getParent(a);if(b)d=this.graph.model.isEdge(a)?null:this.graph.getCellGeometry(a),d=!this.graph.model.isEdge(e)&&!this.graph.isSiblingSelected(a)&&(null!=d&&d.relative||!this.graph.isContainer(e)||this.graph.isPart(a));else if(d=f.apply(this,arguments),this.graph.isTableCell(a)||this.graph.isTableRow(a))d=e,this.graph.isTable(d)||(d=this.graph.model.getParent(d)),d=!this.graph.selectionCellsHandler.isHandled(d)||this.graph.isCellSelected(d)&&this.graph.isToggleEvent(c.getEvent())||
this.graph.isCellSelected(a)&&!this.graph.isToggleEvent(c.getEvent())||this.graph.isTableCell(a)&&this.graph.isCellSelected(e);return d};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(a){a=a.getCell();for(var b=this.graph.getModel(),c=b.getParent(a),d=this.graph.view.getState(c),e=this.graph.isCellSelected(a);null!=d&&(b.isVertex(c)||b.isEdge(c));){var f=this.graph.isCellSelected(c),e=e||f;if(f||!e&&(this.graph.isTableCell(a)||this.graph.isTableRow(a)))a=c;c=b.getParent(c)}return a}})();EditorUi=function(a,b,c){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=b||document.body;var e=this.editor.graph;e.lightbox=c;var d=e.getGraphBounds;e.getGraphBounds=function(a){var b=d.apply(this,arguments);a=this.backgroundImage;if(null!=a){var c=this.view.translate,e=this.view.scale,b=mxRectangle.fromRectangle(b);b.add(new mxRectangle((c.x+a.x)*e,(c.y+a.y)*e,a.width*e,a.height*e))}return b};e.useCssTransforms&&(this.lazyZoomDelay=0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage=
-"data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,e.isEnabled=function(){return!1},e.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())});this.actions=new Actions(this);
-this.menus=this.createMenus();if(!e.standalone){var f="rounded shadow glass dashed dashPattern labelBackgroundColor labelBorderColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle pointerEvents".split(" "),k="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),
-h="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(a){try{var b=e.getCellStyle(a,!1),c=[],d=[],f;for(f in b)c.push(b[f]),d.push(f);e.getModel().isEdge(a)?e.currentEdgeStyle={}:e.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",d,"values",c,"cells",[a]))}catch(O){this.handleError(O)}};this.clearDefaultStyle=function(){e.currentEdgeStyle=mxUtils.clone(e.defaultEdgeStyle);
-e.currentVertexStyle=mxUtils.clone(e.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var g=["fontFamily","fontSource","fontSize","fontColor"];for(b=0;b<g.length;b++)0>mxUtils.indexOf(f,g[b])&&f.push(g[b]);var m="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),l=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
-["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(b=0;b<l.length;b++)for(c=0;c<l[b].length;c++)f.push(l[b][c]);for(b=0;b<k.length;b++)0>mxUtils.indexOf(f,k[b])&&f.push(k[b]);var n=function(a,b,c,d,g,k,m){d=null!=d?d:e.currentVertexStyle;g=null!=g?g:e.currentEdgeStyle;k=null!=k?k:!0;c=null!=c?c:e.getModel();if(m){m=[];for(var n=0;n<a.length;n++)m=m.concat(c.getDescendants(a[n]));a=m}c.beginUpdate();try{for(n=0;n<a.length;n++){var p=a[n],r;if(b)r=["fontSize","fontFamily","fontColor"];
-else{var u=c.getStyle(p),Q=null!=u?u.split(";"):[];r=f.slice();for(var t=0;t<Q.length;t++){var v=Q[t],x=v.indexOf("=");if(0<=x){var N=v.substring(0,x),F=mxUtils.indexOf(r,N);0<=F&&r.splice(F,1);for(m=0;m<l.length;m++){var y=l[m];if(0<=mxUtils.indexOf(y,N))for(var X=0;X<y.length;X++){var O=mxUtils.indexOf(r,y[X]);0<=O&&r.splice(O,1)}}}}}var w=c.isEdge(p);m=w?g:d;for(var J=c.getStyle(p),t=0;t<r.length;t++){var N=r[t],D=m[N];null!=D&&"edgeStyle"!=N&&("shape"!=N||w)&&(!w||k||0>mxUtils.indexOf(h,N))&&
-(J=mxUtils.setStyle(J,N,D))}Editor.simpleLabels&&(J=mxUtils.setStyle(mxUtils.setStyle(J,"html",null),"whiteSpace",null));c.setStyle(p,J)}}finally{c.endUpdate()}return a};e.addListener("cellsInserted",function(a,b){n(b.getProperty("cells"),null,null,null,null,!0,!0)});e.addListener("textInserted",function(a,b){n(b.getProperty("cells"),!0)});this.insertHandler=n;this.createDivs();this.createUi();this.refresh();var p=mxUtils.bind(this,function(a){null==a&&(a=window.event);return e.isEditing()||null!=
-a&&this.isSelectionAllowed(a)});this.container==document.body&&(this.menubarContainer.onselectstart=p,this.menubarContainer.onmousedown=p,this.toolbarContainer.onselectstart=p,this.toolbarContainer.onmousedown=p,this.diagramContainer.onselectstart=p,this.diagramContainer.onmousedown=p,this.sidebarContainer.onselectstart=p,this.sidebarContainer.onmousedown=p,this.formatContainer.onselectstart=p,this.formatContainer.onmousedown=p,this.footerContainer.onselectstart=p,this.footerContainer.onmousedown=
-p,null!=this.tabContainer&&(this.tabContainer.onselectstart=p));!this.editor.chromeless||this.editor.editable?(b=function(a){if(null!=a){var b=mxEvent.getSource(a);if("A"==b.nodeName)for(;null!=b;){if("geHint"==b.className)return!0;b=b.parentNode}}return p(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",b):this.diagramContainer.oncontextmenu=b):e.panningHandler.usePopupTrigger=!1;e.init(this.diagramContainer);
-mxClient.IS_SVG&&null!=e.view.getDrawPane()&&(b=e.view.getDrawPane().ownerSVGElement,null!=b&&(b.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=e.graphHandler){var r=e.graphHandler.start;e.graphHandler.start=function(){null!=z.hoverIcons&&z.hoverIcons.reset();r.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var b=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-b.x-this.diagramContainer.clientWidth||
-0<mxEvent.getClientY(a)-b.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var u=!1,v=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,b){return u||v.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32!=a.which||e.isEditing()?mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0):(u=!0,this.hoverIcons.reset(),e.container.style.cursor="move",
-e.isEditing()||mxEvent.getSource(a)!=e.container||mxEvent.consume(a))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){e.container.style.cursor="";u=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var t=e.panningHandler.isForcePanningEvent;e.panningHandler.isForcePanningEvent=function(a){return t.apply(this,arguments)||u||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&
-mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var x=e.cellEditor.isStopEditingEvent;e.cellEditor.isStopEditingEvent=function(a){return x.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))};var w=e.isZoomWheelEvent;e.isZoomWheelEvent=function(){return u||w.apply(this,arguments)};var y=!1,F=null,I=null,A=null,G=mxUtils.bind(this,function(){if(null!=this.toolbar&&
-y!=e.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var c=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=c}a=this.toolbar.fontMenu;c=this.toolbar.sizeMenu;if(null==A)this.toolbar.createTextToolbar();else{for(var d=0;d<A.length;d++)this.toolbar.container.appendChild(A[d]);this.toolbar.fontMenu=F;this.toolbar.sizeMenu=I}y=e.cellEditor.isContentEditing();F=a;I=c;A=b}}),z=this,D=e.cellEditor.startEditing;
-e.cellEditor.startEditing=function(){D.apply(this,arguments);G();if(e.cellEditor.isContentEditing()){var a=!1,b=function(){a||(a=!0,window.setTimeout(function(){var b=e.getSelectedEditingElement();null!=b&&(b=mxUtils.getCurrentStyle(b),null!=b&&null!=z.toolbar&&(z.toolbar.setFontName(Graph.stripQuotes(b.fontFamily)),z.toolbar.setFontSize(parseInt(b.fontSize))));a=!1},0))};mxEvent.addListener(e.cellEditor.textarea,"input",b);mxEvent.addListener(e.cellEditor.textarea,"touchend",b);mxEvent.addListener(e.cellEditor.textarea,
-"mouseup",b);mxEvent.addListener(e.cellEditor.textarea,"keyup",b);b()}};var K=e.cellEditor.stopEditing;e.cellEditor.stopEditing=function(a,b){try{K.apply(this,arguments),G()}catch(Q){z.handleError(Q)}};e.container.setAttribute("tabindex","0");e.container.style.cursor="default";if(window.self===window.top&&null!=e.container.parentNode)try{e.container.focus()}catch(N){}var L=e.fireMouseEvent;e.fireMouseEvent=function(a,b,c){a==mxEvent.MOUSE_DOWN&&this.container.focus();L.apply(this,arguments)};e.popupMenuHandler.autoExpand=
-!0;null!=this.menus&&(e.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,c){this.menus.createPopupMenu(a,b,c)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){e.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};e.connectionHandler.addListener(mxEvent.CONNECT,function(a,b){var c=[b.getProperty("cell")];b.getProperty("terminalInserted")&&(c.push(b.getProperty("terminal")),window.setTimeout(function(){null!=
-z.hoverIcons&&z.hoverIcons.update(e.view.getState(c[c.length-1]))},0));n(c)});this.addListener("styleChanged",mxUtils.bind(this,function(a,b){var c=b.getProperty("cells"),d=!1,h=!1;if(0<c.length)for(var l=0;l<c.length&&(d=e.getModel().isVertex(c[l])||d,!(h=e.getModel().isEdge(c[l])||h)||!d);l++);else h=d=!0;for(var c=b.getProperty("keys"),n=b.getProperty("values"),l=0;l<c.length;l++){var p=0<=mxUtils.indexOf(g,c[l]);if("strokeColor"!=c[l]||null!=n[l]&&"none"!=n[l])if(0<=mxUtils.indexOf(k,c[l]))h||
-0<=mxUtils.indexOf(m,c[l])?null==n[l]?delete e.currentEdgeStyle[c[l]]:e.currentEdgeStyle[c[l]]=n[l]:d&&0<=mxUtils.indexOf(f,c[l])&&(null==n[l]?delete e.currentVertexStyle[c[l]]:e.currentVertexStyle[c[l]]=n[l]);else if(0<=mxUtils.indexOf(f,c[l])){if(d||p)null==n[l]?delete e.currentVertexStyle[c[l]]:e.currentVertexStyle[c[l]]=n[l];if(h||p||0<=mxUtils.indexOf(m,c[l]))null==n[l]?delete e.currentEdgeStyle[c[l]]:e.currentEdgeStyle[c[l]]=n[l]}}null!=this.toolbar&&(this.toolbar.setFontName(e.currentVertexStyle.fontFamily||
-Menus.prototype.defaultFont),this.toolbar.setFontSize(e.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==e.currentEdgeStyle.edgeStyle&&"1"==e.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==e.currentEdgeStyle.edgeStyle||"none"==e.currentEdgeStyle.edgeStyle||null==e.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==
-e.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==e.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==e.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==e.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==e.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==e.currentEdgeStyle.shape?
-"geSprite geSprite-linkedge":"flexArrow"==e.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==e.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",e.currentEdgeStyle.shape,e.currentEdgeStyle[mxConstants.STYLE_STARTARROW],mxUtils.getValue(e.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className=
-this.getCssClassForMarker("end",e.currentEdgeStyle.shape,e.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(e.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var a=e.currentVertexStyle.fontFamily||"Helvetica",b=String(e.currentVertexStyle.fontSize||"12"),c=e.getView().getState(e.getSelectionCell());null!=c&&(a=c.style[mxConstants.STYLE_FONTFAMILY]||a,b=c.style[mxConstants.STYLE_FONTSIZE]||b,10<a.length&&(a=a.substring(0,8)+"..."));this.toolbar.setFontName(a);
-this.toolbar.setFontSize(b)}),e.getSelectionModel().addListener(mxEvent.CHANGE,a),e.getModel().addListener(mxEvent.CHANGE,a));e.addListener(mxEvent.CELLS_ADDED,function(a,b){var c=b.getProperty("cells"),d=b.getProperty("parent");null!=d&&e.getModel().isLayer(d)&&!e.isCellVisible(d)&&null!=c&&0<c.length&&e.getModel().setVisible(d,!0)});this.gestureHandler=mxUtils.bind(this,function(a){null!=this.currentMenu&&mxEvent.getSource(a)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,
-this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,
-"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){e.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){e.view.validateBackground()}));e.addListener("gridSizeChanged",mxUtils.bind(this,function(){e.isGridEnabled()&&e.view.validateBackground()}));this.editor.resetGraph()}this.init();e.standalone||this.open()};
-EditorUi.compactUi=!0;EditorUi.parsePng=function(a,b,c){function e(a,b){var c=f;f+=b;return a.substring(c,f)}function d(a){a=e(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var f=0;if(e(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=c&&c();else if(e(a,4),"IHDR"!=e(a,4))null!=c&&c();else{e(a,17);do{c=d(a);var k=e(a,4);if(null!=b&&b(f-8,k,c))break;value=e(a,c);e(a,4);if("IEND"==k)break}while(c)}};mxUtils.extend(EditorUi,mxEventSource);
+"data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.selectionStateListener=mxUtils.bind(this,function(a,b){this.clearSelectionState()});e.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionStateListener);e.getModel().addListener(mxEvent.CHANGE,this.selectionStateListener);
+e.addListener(mxEvent.EDITING_STARTED,this.selectionStateListener);e.addListener(mxEvent.EDITING_STOPPED,this.selectionStateListener);e.getView().addListener("unitChanged",this.selectionStateListener);this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,e.isEnabled=function(){return!1},e.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();if(!e.standalone){var f="rounded shadow glass dashed dashPattern labelBackgroundColor labelBorderColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle pointerEvents".split(" "),
+h="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),k="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(a){try{var b=e.getCellStyle(a,!1),c=[],d=[],f;for(f in b)c.push(b[f]),d.push(f);e.getModel().isEdge(a)?e.currentEdgeStyle={}:e.currentVertexStyle=
+{};this.fireEvent(new mxEventObject("styleChanged","keys",d,"values",c,"cells",[a]))}catch(O){this.handleError(O)}};this.clearDefaultStyle=function(){e.currentEdgeStyle=mxUtils.clone(e.defaultEdgeStyle);e.currentVertexStyle=mxUtils.clone(e.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var g=["fontFamily","fontSource","fontSize","fontColor"];for(b=0;b<g.length;b++)0>mxUtils.indexOf(f,g[b])&&f.push(g[b]);var m="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),
+l=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(b=0;b<l.length;b++)for(c=0;c<l[b].length;c++)f.push(l[b][c]);for(b=0;b<h.length;b++)0>mxUtils.indexOf(f,h[b])&&f.push(h[b]);var n=function(a,b,c,d,g,h,m){d=null!=d?d:e.currentVertexStyle;g=null!=g?g:e.currentEdgeStyle;h=null!=h?h:!0;c=null!=c?c:e.getModel();if(m){m=[];
+for(var n=0;n<a.length;n++)m=m.concat(c.getDescendants(a[n]));a=m}c.beginUpdate();try{for(n=0;n<a.length;n++){var p=a[n],r;if(b)r=["fontSize","fontFamily","fontColor"];else{var u=c.getStyle(p),Q=null!=u?u.split(";"):[];r=f.slice();for(var t=0;t<Q.length;t++){var v=Q[t],x=v.indexOf("=");if(0<=x){var N=v.substring(0,x),F=mxUtils.indexOf(r,N);0<=F&&r.splice(F,1);for(m=0;m<l.length;m++){var y=l[m];if(0<=mxUtils.indexOf(y,N))for(var Y=0;Y<y.length;Y++){var O=mxUtils.indexOf(r,y[Y]);0<=O&&r.splice(O,1)}}}}}var w=
+c.isEdge(p);m=w?g:d;for(var J=c.getStyle(p),t=0;t<r.length;t++){var N=r[t],D=m[N];null!=D&&"edgeStyle"!=N&&("shape"!=N||w)&&(!w||h||0>mxUtils.indexOf(k,N))&&(J=mxUtils.setStyle(J,N,D))}Editor.simpleLabels&&(J=mxUtils.setStyle(mxUtils.setStyle(J,"html",null),"whiteSpace",null));c.setStyle(p,J)}}finally{c.endUpdate()}return a};e.addListener("cellsInserted",function(a,b){n(b.getProperty("cells"),null,null,null,null,!0,!0)});e.addListener("textInserted",function(a,b){n(b.getProperty("cells"),!0)});this.insertHandler=
+n;this.createDivs();this.createUi();this.refresh();var p=mxUtils.bind(this,function(a){null==a&&(a=window.event);return e.isEditing()||null!=a&&this.isSelectionAllowed(a)});this.container==document.body&&(this.menubarContainer.onselectstart=p,this.menubarContainer.onmousedown=p,this.toolbarContainer.onselectstart=p,this.toolbarContainer.onmousedown=p,this.diagramContainer.onselectstart=p,this.diagramContainer.onmousedown=p,this.sidebarContainer.onselectstart=p,this.sidebarContainer.onmousedown=p,
+this.formatContainer.onselectstart=p,this.formatContainer.onmousedown=p,this.footerContainer.onselectstart=p,this.footerContainer.onmousedown=p,null!=this.tabContainer&&(this.tabContainer.onselectstart=p));!this.editor.chromeless||this.editor.editable?(b=function(a){if(null!=a){var b=mxEvent.getSource(a);if("A"==b.nodeName)for(;null!=b;){if("geHint"==b.className)return!0;b=b.parentNode}}return p(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,
+"contextmenu",b):this.diagramContainer.oncontextmenu=b):e.panningHandler.usePopupTrigger=!1;e.init(this.diagramContainer);mxClient.IS_SVG&&null!=e.view.getDrawPane()&&(b=e.view.getDrawPane().ownerSVGElement,null!=b&&(b.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=e.graphHandler){var r=e.graphHandler.start;e.graphHandler.start=function(){null!=z.hoverIcons&&z.hoverIcons.reset();r.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,
+function(a){var b=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-b.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-b.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var u=!1,v=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,b){return u||v.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32!=a.which||e.isEditing()?
+mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0):(u=!0,this.hoverIcons.reset(),e.container.style.cursor="move",e.isEditing()||mxEvent.getSource(a)!=e.container||mxEvent.consume(a))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){e.container.style.cursor="";u=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var t=e.panningHandler.isForcePanningEvent;e.panningHandler.isForcePanningEvent=function(a){return t.apply(this,
+arguments)||u||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var x=e.cellEditor.isStopEditingEvent;e.cellEditor.isStopEditingEvent=function(a){return x.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))};var w=e.isZoomWheelEvent;
+e.isZoomWheelEvent=function(){return u||w.apply(this,arguments)};var y=!1,F=null,I=null,B=null,G=mxUtils.bind(this,function(){if(null!=this.toolbar&&y!=e.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var c=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=c}a=this.toolbar.fontMenu;c=this.toolbar.sizeMenu;if(null==B)this.toolbar.createTextToolbar();else{for(var d=0;d<B.length;d++)this.toolbar.container.appendChild(B[d]);
+this.toolbar.fontMenu=F;this.toolbar.sizeMenu=I}y=e.cellEditor.isContentEditing();F=a;I=c;B=b}}),z=this,D=e.cellEditor.startEditing;e.cellEditor.startEditing=function(){D.apply(this,arguments);G();if(e.cellEditor.isContentEditing()){var a=!1,b=function(){a||(a=!0,window.setTimeout(function(){var b=e.getSelectedEditingElement();null!=b&&(b=mxUtils.getCurrentStyle(b),null!=b&&null!=z.toolbar&&(z.toolbar.setFontName(Graph.stripQuotes(b.fontFamily)),z.toolbar.setFontSize(parseInt(b.fontSize))));a=!1},
+0))};mxEvent.addListener(e.cellEditor.textarea,"input",b);mxEvent.addListener(e.cellEditor.textarea,"touchend",b);mxEvent.addListener(e.cellEditor.textarea,"mouseup",b);mxEvent.addListener(e.cellEditor.textarea,"keyup",b);b()}};var K=e.cellEditor.stopEditing;e.cellEditor.stopEditing=function(a,b){try{K.apply(this,arguments),G()}catch(Q){z.handleError(Q)}};e.container.setAttribute("tabindex","0");e.container.style.cursor="default";if(window.self===window.top&&null!=e.container.parentNode)try{e.container.focus()}catch(N){}var L=
+e.fireMouseEvent;e.fireMouseEvent=function(a,b,c){a==mxEvent.MOUSE_DOWN&&this.container.focus();L.apply(this,arguments)};e.popupMenuHandler.autoExpand=!0;null!=this.menus&&(e.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,c){this.menus.createPopupMenu(a,b,c)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){e.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};e.connectionHandler.addListener(mxEvent.CONNECT,
+function(a,b){var c=[b.getProperty("cell")];b.getProperty("terminalInserted")&&(c.push(b.getProperty("terminal")),window.setTimeout(function(){null!=z.hoverIcons&&z.hoverIcons.update(e.view.getState(c[c.length-1]))},0));n(c)});this.addListener("styleChanged",mxUtils.bind(this,function(a,b){var c=b.getProperty("cells"),d=!1,k=!1;if(0<c.length)for(var l=0;l<c.length&&(d=e.getModel().isVertex(c[l])||d,!(k=e.getModel().isEdge(c[l])||k)||!d);l++);else k=d=!0;for(var c=b.getProperty("keys"),n=b.getProperty("values"),
+l=0;l<c.length;l++){var p=0<=mxUtils.indexOf(g,c[l]);if("strokeColor"!=c[l]||null!=n[l]&&"none"!=n[l])if(0<=mxUtils.indexOf(h,c[l]))k||0<=mxUtils.indexOf(m,c[l])?null==n[l]?delete e.currentEdgeStyle[c[l]]:e.currentEdgeStyle[c[l]]=n[l]:d&&0<=mxUtils.indexOf(f,c[l])&&(null==n[l]?delete e.currentVertexStyle[c[l]]:e.currentVertexStyle[c[l]]=n[l]);else if(0<=mxUtils.indexOf(f,c[l])){if(d||p)null==n[l]?delete e.currentVertexStyle[c[l]]:e.currentVertexStyle[c[l]]=n[l];if(k||p||0<=mxUtils.indexOf(m,c[l]))null==
+n[l]?delete e.currentEdgeStyle[c[l]]:e.currentEdgeStyle[c[l]]=n[l]}}null!=this.toolbar&&(this.toolbar.setFontName(e.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(e.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==e.currentEdgeStyle.edgeStyle&&"1"==e.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==e.currentEdgeStyle.edgeStyle||
+"none"==e.currentEdgeStyle.edgeStyle||null==e.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==e.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==e.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==e.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==e.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==e.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),
+null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==e.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==e.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==e.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",e.currentEdgeStyle.shape,e.currentEdgeStyle[mxConstants.STYLE_STARTARROW],
+mxUtils.getValue(e.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("end",e.currentEdgeStyle.shape,e.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(e.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var a=e.currentVertexStyle.fontFamily||"Helvetica",b=String(e.currentVertexStyle.fontSize||"12"),c=e.getView().getState(e.getSelectionCell());
+null!=c&&(a=c.style[mxConstants.STYLE_FONTFAMILY]||a,b=c.style[mxConstants.STYLE_FONTSIZE]||b,10<a.length&&(a=a.substring(0,8)+"..."));this.toolbar.setFontName(a);this.toolbar.setFontSize(b)}),e.getSelectionModel().addListener(mxEvent.CHANGE,a),e.getModel().addListener(mxEvent.CHANGE,a));e.addListener(mxEvent.CELLS_ADDED,function(a,b){var c=b.getProperty("cells"),d=b.getProperty("parent");null!=d&&e.getModel().isLayer(d)&&!e.isCellVisible(d)&&null!=c&&0<c.length&&e.getModel().setVisible(d,!0)});this.gestureHandler=
+mxUtils.bind(this,function(a){null!=this.currentMenu&&mxEvent.getSource(a)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",
+this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){e.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){e.view.validateBackground()}));
+e.addListener("gridSizeChanged",mxUtils.bind(this,function(){e.isGridEnabled()&&e.view.validateBackground()}));this.editor.resetGraph()}this.init();e.standalone||this.open()};EditorUi.compactUi=!0;
+EditorUi.parsePng=function(a,b,c){function e(a,b){var c=f;f+=b;return a.substring(c,f)}function d(a){a=e(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var f=0;if(e(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=c&&c();else if(e(a,4),"IHDR"!=e(a,4))null!=c&&c();else{e(a,17);do{c=d(a);var h=e(a,4);if(null!=b&&b(f-8,h,c))break;value=e(a,c);e(a,4);if("IEND"==h)break}while(c)}};mxUtils.extend(EditorUi,mxEventSource);
EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=38;EditorUi.prototype.footerHeight=28;EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:"large"!=urlParams["sidebar-entries"]?212:240;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2;
EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1;
EditorUi.prototype.init=function(){var a=this.editor.graph;if(!a.standalone){"0"!=urlParams["shape-picker"]&&this.installShapePicker();mxEvent.addListener(a.container,"scroll",mxUtils.bind(this,function(){a.tooltipHandler.hide();null!=a.connectionHandler&&null!=a.connectionHandler.constraintHandler&&a.connectionHandler.constraintHandler.reset()}));a.addListener(mxEvent.ESCAPE,mxUtils.bind(this,function(){a.tooltipHandler.hide();var b=a.getRubberband();null!=b&&b.cancel()}));mxEvent.addListener(a.container,
"keydown",mxUtils.bind(this,function(a){this.onKeyDown(a)}));mxEvent.addListener(a.container,"keypress",mxUtils.bind(this,function(a){this.onKeyPress(a)}));this.addUndoListener();this.addBeforeUnloadListener();a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));var b=a.setDefaultParent,c=this;this.editor.graph.setDefaultParent=function(){b.apply(this,
-arguments);c.updateActionStates()};a.editLink=c.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()}};
+arguments);c.updateActionStates()};a.editLink=c.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()}};EditorUi.prototype.clearSelectionState=function(){this.selectionState=null};EditorUi.prototype.getSelectionState=function(){null==this.selectionState&&(this.selectionState=this.createSelectionState());return this.selectionState};
+EditorUi.prototype.createSelectionState=function(){for(var a=this.editor.graph,b=a.getSelectionCells(),c=this.initSelectionState(),e=!0,d=0;d<b.length;d++){var f=a.getCurrentCellStyle(b[d]);"0"!=mxUtils.getValue(f,mxConstants.STYLE_EDITABLE,"1")&&(this.updateSelectionStateForCell(c,b[d],b,e),e=!1)}this.updateSelectionStateForTableCells(c);return c};
+EditorUi.prototype.initSelectionState=function(){return{vertices:[],edges:[],cells:[],x:null,y:null,width:null,height:null,style:{},containsImage:!1,containsLabel:!1,fill:!0,glass:!0,rounded:!0,autoSize:!1,image:!0,shadow:!0,lineJumps:!0,resizable:!0,table:!1,cell:!1,row:!1,movable:!0,rotatable:!0,stroke:!0,unlocked:this.editor.graph.isEnabled(),connections:!1}};EditorUi.prototype.updateSelectionStateForTableCells=function(a){};
+EditorUi.prototype.updateSelectionStateForCell=function(a,b,c,e){c=this.editor.graph;a.cells.push(b);if(c.getModel().isVertex(b)){a.connections=0<c.model.getEdgeCount(b);a.unlocked=a.unlocked&&!c.isCellLocked(b);a.resizable=a.resizable&&c.isCellResizable(b);a.rotatable=a.rotatable&&c.isCellRotatable(b);a.movable=a.movable&&c.isCellMovable(b)&&!c.isTableRow(b)&&!c.isTableCell(b);a.table=a.table||c.isTable(b);a.cell=a.cell||c.isTableCell(b);a.row=a.row||c.isTableRow(b);a.vertices.push(b);var d=c.getCellGeometry(b);
+if(null!=d&&(0<d.width?null==a.width?a.width=d.width:a.width!=d.width&&(a.width=""):a.containsLabel=!0,0<d.height?null==a.height?a.height=d.height:a.height!=d.height&&(a.height=""):a.containsLabel=!0,!d.relative||null!=d.offset)){var f=d.relative?d.offset.x:d.x,d=d.relative?d.offset.y:d.y;null==a.x?a.x=f:a.x!=f&&(a.x="");null==a.y?a.y=d:a.y!=d&&(a.y="")}}else c.getModel().isEdge(b)&&(a.edges.push(b),a.connections=!0,a.resizable=!1,a.rotatable=!1,a.movable=!1);b=c.view.getState(b);null!=b&&(a.autoSize=
+a.autoSize||c.isAutoSizeState(b),a.glass=a.glass&&c.isGlassState(b),a.rounded=a.rounded&&c.isRoundedState(b),a.lineJumps=a.lineJumps&&c.isLineJumpState(b),a.image=a.image&&c.isImageState(b),a.shadow=a.shadow&&c.isShadowState(b),a.fill=a.fill&&c.isFillState(b),a.stroke=a.stroke&&c.isStrokeState(b),f=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null),a.containsImage=a.containsImage||"image"==f,c.mergeStyle(b.style,a.style,e))};
EditorUi.prototype.installShapePicker=function(){var a=this.editor.graph,b=this;a.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,c){"mouseDown"==c.getProperty("eventName")&&b.hideShapePicker()}));var c=mxUtils.bind(this,function(){b.hideShapePicker(!0)});a.addListener("wheel",c);a.addListener(mxEvent.ESCAPE,c);a.view.addListener(mxEvent.SCALE,c);a.view.addListener(mxEvent.SCALE_AND_TRANSLATE,c);a.getSelectionModel().addListener(mxEvent.CHANGE,c);a.getModel().addListener(mxEvent.CHANGE,
c);var e=a.popupMenuHandler.isMenuShowing;a.popupMenuHandler.isMenuShowing=function(){return e.apply(this,arguments)||null!=b.shapePicker};var d=a.dblClick;a.dblClick=function(c,e){if(this.isEnabled())if(null!=e||null==b.sidebar||mxEvent.isShiftDown(c)||a.isCellLocked(a.getDefaultParent()))d.apply(this,arguments);else{var f=mxUtils.convertPoint(this.container,mxEvent.getClientX(c),mxEvent.getClientY(c));mxEvent.consume(c);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(f.x,f.y)}),
-30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",c);var f=this.hoverIcons.drag;this.hoverIcons.drag=function(){b.hideShapePicker();f.apply(this,arguments)};var k=this.hoverIcons.execute;this.hoverIcons.execute=function(c,d,e){var f=e.getEvent();this.graph.isCloneEvent(f)||mxEvent.isShiftDown(f)?k.apply(this,arguments):this.graph.connectVertex(c.cell,d,this.graph.defaultEdgeLength,f,null,null,mxUtils.bind(this,function(f,g,k){var h=a.getCompositeParent(c.cell);f=a.getCellGeometry(h);
-for(e.consume();null!=h&&a.model.isVertex(h)&&null!=f&&f.relative;)cell=h,h=a.model.getParent(cell),f=a.getCellGeometry(h);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(e.getGraphX(),e.getGraphY(),h,mxUtils.bind(this,function(c){k(c);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(c))}),d)}),30)}),mxUtils.bind(this,function(a){this.graph.selectCellsForConnectVertex(a,f,this)}))};var h=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(c,d){null!=h&&window.clearTimeout(h);
-h=window.setTimeout(mxUtils.bind(this,function(){var c=d.getProperty("arrow"),e=d.getProperty("direction"),f=d.getProperty("event"),c=c.getBoundingClientRect(),g=mxUtils.getOffset(a.container),k=a.container.scrollLeft+c.x-g.x,g=a.container.scrollTop+c.y-g.y,h=a.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),m=b.showShapePicker(k,g,h,mxUtils.bind(this,function(c){null!=c&&a.connectVertex(h,e,a.defaultEdgeLength,f,!0,!0,function(d,e,f){f(c);null!=b.hoverIcons&&
-b.hoverIcons.update(a.view.getState(c))},function(b){a.selectCellsForConnectVertex(b)},f,this.hoverIcons)}),e,!0);this.centerShapePicker(m,c,k,g,e);mxUtils.setOpacity(m,30);mxEvent.addListener(m,"mouseenter",function(){mxUtils.setOpacity(m,100)});mxEvent.addListener(m,"mouseleave",function(){b.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(a,b){null!=h&&window.clearTimeout(h)}))}};
+30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",c);var f=this.hoverIcons.drag;this.hoverIcons.drag=function(){b.hideShapePicker();f.apply(this,arguments)};var h=this.hoverIcons.execute;this.hoverIcons.execute=function(c,d,e){var f=e.getEvent();this.graph.isCloneEvent(f)||mxEvent.isShiftDown(f)?h.apply(this,arguments):this.graph.connectVertex(c.cell,d,this.graph.defaultEdgeLength,f,null,null,mxUtils.bind(this,function(f,g,h){var k=a.getCompositeParent(c.cell);f=a.getCellGeometry(k);
+for(e.consume();null!=k&&a.model.isVertex(k)&&null!=f&&f.relative;)cell=k,k=a.model.getParent(cell),f=a.getCellGeometry(k);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(e.getGraphX(),e.getGraphY(),k,mxUtils.bind(this,function(c){h(c);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(c))}),d)}),30)}),mxUtils.bind(this,function(a){this.graph.selectCellsForConnectVertex(a,f,this)}))};var k=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(c,d){null!=k&&window.clearTimeout(k);
+k=window.setTimeout(mxUtils.bind(this,function(){var c=d.getProperty("arrow"),e=d.getProperty("direction"),f=d.getProperty("event"),c=c.getBoundingClientRect(),g=mxUtils.getOffset(a.container),h=a.container.scrollLeft+c.x-g.x,g=a.container.scrollTop+c.y-g.y,k=a.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),m=b.showShapePicker(h,g,k,mxUtils.bind(this,function(c){null!=c&&a.connectVertex(k,e,a.defaultEdgeLength,f,!0,!0,function(d,e,f){f(c);null!=b.hoverIcons&&
+b.hoverIcons.update(a.view.getState(c))},function(b){a.selectCellsForConnectVertex(b)},f,this.hoverIcons)}),e,!0);this.centerShapePicker(m,c,h,g,e);mxUtils.setOpacity(m,30);mxEvent.addListener(m,"mouseenter",function(){mxUtils.setOpacity(m,100)});mxEvent.addListener(m,"mouseleave",function(){b.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(a,b){null!=k&&window.clearTimeout(k)}))}};
EditorUi.prototype.centerShapePicker=function(a,b,c,e,d){if(d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST)a.style.width="40px";var f=a.getBoundingClientRect();d==mxConstants.DIRECTION_NORTH?(c-=f.width/2-10,e-=f.height+6):d==mxConstants.DIRECTION_SOUTH?(c-=f.width/2-10,e+=b.height+6):d==mxConstants.DIRECTION_WEST?(c-=f.width+6,e-=f.height/2-10):d==mxConstants.DIRECTION_EAST&&(c+=b.width+6,e-=f.height/2-10);a.style.left=c+"px";a.style.top=e+"px"};
EditorUi.prototype.showShapePicker=function(a,b,c,e,d,f){a=this.createShapePicker(a,b,c,e,d,mxUtils.bind(this,function(){this.hideShapePicker()}),this.getCellsForShapePicker(c,f),f);null!=a&&(null==this.hoverIcons||f||this.hoverIcons.reset(),f=this.editor.graph,f.popupMenuHandler.hideMenu(),f.tooltipHandler.hideTooltip(),this.hideCurrentMenu(),this.hideShapePicker(),this.shapePickerCallback=e,this.shapePicker=a);return a};
-EditorUi.prototype.createShapePicker=function(a,b,c,e,d,f,k,h){var g=null;if(null!=k&&0<k.length){var m=this,l=this.editor.graph,g=document.createElement("div");d=l.view.getState(c);var n=null==c||null!=d&&l.isTransparentState(d)?null:l.copyStyle(c);c=6>k.length?35*k.length:140;g.className="geToolbarContainer geSidebarContainer";g.style.cssText="position:absolute;left:"+a+"px;top:"+b+"px;width:"+c+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
-mxPopupMenu.prototype.zIndex+1+";";h||mxUtils.setPrefixedStyle(g.style,"transform","translate(-22px,-22px)");null!=l.background&&l.background!=mxConstants.NONE&&(g.style.backgroundColor=l.background);l.container.appendChild(g);c=mxUtils.bind(this,function(c){var d=document.createElement("a");d.className="geItem";d.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";g.appendChild(d);null!=n&&"1"!=urlParams.sketch?
+EditorUi.prototype.createShapePicker=function(a,b,c,e,d,f,h,k){var g=null;if(null!=h&&0<h.length){var m=this,l=this.editor.graph,g=document.createElement("div");d=l.view.getState(c);var n=null==c||null!=d&&l.isTransparentState(d)?null:l.copyStyle(c);c=6>h.length?35*h.length:140;g.className="geToolbarContainer geSidebarContainer";g.style.cssText="position:absolute;left:"+a+"px;top:"+b+"px;width:"+c+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
+mxPopupMenu.prototype.zIndex+1+";";k||mxUtils.setPrefixedStyle(g.style,"transform","translate(-22px,-22px)");null!=l.background&&l.background!=mxConstants.NONE&&(g.style.backgroundColor=l.background);l.container.appendChild(g);c=mxUtils.bind(this,function(c){var d=document.createElement("a");d.className="geItem";d.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";g.appendChild(d);null!=n&&"1"!=urlParams.sketch?
this.sidebar.graph.pasteStyle(n,[c]):m.insertHandler([c],""!=c.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([c],25,25,d,null,!0,!1,c.geometry.width,c.geometry.height);mxEvent.addListener(d,"click",function(){var d=l.cloneCell(c);if(null!=e)e(d);else{d.geometry.x=l.snap(Math.round(a/l.view.scale)-l.view.translate.x-c.geometry.width/2);d.geometry.y=l.snap(Math.round(b/l.view.scale)-l.view.translate.y-c.geometry.height/2);l.model.beginUpdate();try{l.addCell(d)}finally{l.model.endUpdate()}l.setSelectionCell(d);
-l.scrollCellToVisible(d);l.startEditingAtCell(d);null!=m.hoverIcons&&m.hoverIcons.update(l.view.getState(d))}null!=f&&f()})});for(d=0;d<(h?Math.min(k.length,4):k.length);d++)c(k[d]);k=g.offsetTop+g.clientHeight-(l.container.scrollTop+l.container.offsetHeight);0<k&&(g.style.top=Math.max(l.container.scrollTop+22,b-k)+"px");k=g.offsetLeft+g.clientWidth-(l.container.scrollLeft+l.container.offsetWidth);0<k&&(g.style.left=Math.max(l.container.scrollLeft+22,a-k)+"px")}return g};
-EditorUi.prototype.getCellsForShapePicker=function(a,b){var c=mxUtils.bind(this,function(a,b,c,k){return this.editor.graph.createVertex(null,null,k||"",0,0,b||120,c||60,a,!1)});return[null!=a?this.editor.graph.cloneCell(a):c("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;",40,20,"Text"),c("whiteSpace=wrap;html=1;"),c("ellipse;whiteSpace=wrap;html=1;"),c("rhombus;whiteSpace=wrap;html=1;",80,80),c("rounded=1;whiteSpace=wrap;html=1;"),
+l.scrollCellToVisible(d);l.startEditingAtCell(d);null!=m.hoverIcons&&m.hoverIcons.update(l.view.getState(d))}null!=f&&f()})});for(d=0;d<(k?Math.min(h.length,4):h.length);d++)c(h[d]);h=g.offsetTop+g.clientHeight-(l.container.scrollTop+l.container.offsetHeight);0<h&&(g.style.top=Math.max(l.container.scrollTop+22,b-h)+"px");h=g.offsetLeft+g.clientWidth-(l.container.scrollLeft+l.container.offsetWidth);0<h&&(g.style.left=Math.max(l.container.scrollLeft+22,a-h)+"px")}return g};
+EditorUi.prototype.getCellsForShapePicker=function(a,b){var c=mxUtils.bind(this,function(a,b,c,h){return this.editor.graph.createVertex(null,null,h||"",0,0,b||120,c||60,a,!1)});return[null!=a?this.editor.graph.cloneCell(a):c("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;",40,20,"Text"),c("whiteSpace=wrap;html=1;"),c("ellipse;whiteSpace=wrap;html=1;"),c("rhombus;whiteSpace=wrap;html=1;",80,80),c("rounded=1;whiteSpace=wrap;html=1;"),
c("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;"),c("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,60),c("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),c("triangle;whiteSpace=wrap;html=1;",60,80),c("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",
120,80),c("shape=tape;whiteSpace=wrap;html=1;",120,100),c("ellipse;shape=cloud;whiteSpace=wrap;html=1;",120,80),c("shape=singleArrow;whiteSpace=wrap;html=1;arrowWidth=0.4;arrowSize=0.4;",80,60),c("shape=waypoint;sketch=0;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;",40,40)]};
EditorUi.prototype.hideShapePicker=function(a){null!=this.shapePicker&&(this.shapePicker.parentNode.removeChild(this.shapePicker),this.shapePicker=null,a||null==this.shapePickerCallback||this.shapePickerCallback(),this.shapePickerCallback=null)};
@@ -2231,16 +2237,16 @@ EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipb
null;b.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):d=c.apply(this,arguments);a.updatePasteActionStates();return d};var e=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){e.apply(this,arguments);a.updatePasteActionStates()};var d=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(b,c){d.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};
EditorUi.prototype.lazyZoomDelay=20;EditorUi.prototype.wheelZoomDelay=400;EditorUi.prototype.buttonZoomDelay=600;
EditorUi.prototype.initCanvas=function(){var a=this.editor.graph;a.timerAutoScroll=!0;a.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((a.container.offsetWidth-34)/a.view.scale)),Math.max(0,Math.round((a.container.offsetHeight-34)/a.view.scale)))};a.view.getBackgroundPageBounds=function(){var a=this.graph.getPageLayout(),b=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,
-this.scale*a.height*b.height)};a.getPreferredPageSize=function(a,b,c){a=this.getPageLayout();b=this.getPageSize();return new mxRectangle(0,0,a.width*b.width,a.height*b.height)};var b=null,c=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(b,c,d,e){if(null!=a.container&&!a.isViewer()){d=null!=d?d:0;e=null!=e?e:0;var f=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),g=mxUtils.hasScrollbars(a.container),k=a.view.translate,h=a.view.scale,l=mxRectangle.fromRectangle(f);
-l.x=l.x/h-k.x;l.y=l.y/h-k.y;l.width/=h;l.height/=h;var k=a.container.scrollTop,m=a.container.scrollLeft,n=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)n+=3;var p=a.container.offsetWidth-n,n=a.container.offsetHeight-n;b=b?Math.max(.3,Math.min(c||1,p/l.width)):h;c=(p-b*l.width)/2/b;var r=0==this.lightboxVerticalDivider?0:(n-b*l.height)/this.lightboxVerticalDivider/b;g&&(c=Math.max(c,0),r=Math.max(r,0));if(g||f.width<p||f.height<n)a.view.scaleAndTranslate(b,Math.floor(c-
-l.x),Math.floor(r-l.y)),a.container.scrollTop=k*b/h,a.container.scrollLeft=m*b/h;else if(0!=d||0!=e)f=a.view.translate,a.view.setTranslate(Math.floor(f.x+d/h),Math.floor(f.y+e/h))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var e=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",e);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",e)});this.editor.addListener("resetGraphView",mxUtils.bind(this,
+this.scale*a.height*b.height)};a.getPreferredPageSize=function(a,b,c){a=this.getPageLayout();b=this.getPageSize();return new mxRectangle(0,0,a.width*b.width,a.height*b.height)};var b=null,c=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(b,c,d,e){if(null!=a.container&&!a.isViewer()){d=null!=d?d:0;e=null!=e?e:0;var f=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),g=mxUtils.hasScrollbars(a.container),h=a.view.translate,k=a.view.scale,l=mxRectangle.fromRectangle(f);
+l.x=l.x/k-h.x;l.y=l.y/k-h.y;l.width/=k;l.height/=k;var h=a.container.scrollTop,m=a.container.scrollLeft,n=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)n+=3;var p=a.container.offsetWidth-n,n=a.container.offsetHeight-n;b=b?Math.max(.3,Math.min(c||1,p/l.width)):k;c=(p-b*l.width)/2/b;var r=0==this.lightboxVerticalDivider?0:(n-b*l.height)/this.lightboxVerticalDivider/b;g&&(c=Math.max(c,0),r=Math.max(r,0));if(g||f.width<p||f.height<n)a.view.scaleAndTranslate(b,Math.floor(c-
+l.x),Math.floor(r-l.y)),a.container.scrollTop=h*b/k,a.container.scrollLeft=m*b/k;else if(0!=d||0!=e)f=a.view.translate,a.view.setTranslate(Math.floor(f.x+d/k),Math.floor(f.y+e/k))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var e=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",e);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",e)});this.editor.addListener("resetGraphView",mxUtils.bind(this,
function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(b){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(b){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var d=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";this.chromelessToolbar.style.boxSizing=
"border-box";this.chromelessToolbar.style.whiteSpace="nowrap";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left=a.isViewer()?"0":"50%";mxClient.IS_IE||mxClient.IS_IE11?(this.chromelessToolbar.style.backgroundColor="#ffffff",this.chromelessToolbar.style.border="3px solid black"):this.chromelessToolbar.style.backgroundColor="#000000";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","16px");mxUtils.setPrefixedStyle(this.chromelessToolbar.style,
-"transition","opacity 600ms ease-in-out");var f=mxUtils.bind(this,function(){var b=mxUtils.getCurrentStyle(a.container);a.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=b?parseInt(b["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",f);f();var k=0,f=mxUtils.bind(this,function(a,b,c){k++;var d=document.createElement("span");d.style.paddingLeft="8px";d.style.paddingRight=
-"8px";d.style.cursor="pointer";mxEvent.addListener(d,"click",a);null!=c&&d.setAttribute("title",c);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",b);a.style.width="36px";a.style.filter="invert(100%)";d.appendChild(a);this.chromelessToolbar.appendChild(d);return d});null!=d.backBtn&&f(mxUtils.bind(this,function(a){window.location.href=d.backBtn.url;mxEvent.consume(a)}),Editor.backImage,mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var h=f(mxUtils.bind(this,
+"transition","opacity 600ms ease-in-out");var f=mxUtils.bind(this,function(){var b=mxUtils.getCurrentStyle(a.container);a.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=b?parseInt(b["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",f);f();var h=0,f=mxUtils.bind(this,function(a,b,c){h++;var d=document.createElement("span");d.style.paddingLeft="8px";d.style.paddingRight=
+"8px";d.style.cursor="pointer";mxEvent.addListener(d,"click",a);null!=c&&d.setAttribute("title",c);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",b);a.style.width="36px";a.style.filter="invert(100%)";d.appendChild(a);this.chromelessToolbar.appendChild(d);return d});null!=d.backBtn&&f(mxUtils.bind(this,function(a){window.location.href=d.backBtn.url;mxEvent.consume(a)}),Editor.backImage,mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var k=f(mxUtils.bind(this,
function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousImage,mxResources.get("previousPage")),g=document.createElement("div");g.style.fontFamily=Editor.defaultHtmlFont;g.style.display="inline-block";g.style.verticalAlign="top";g.style.fontWeight="bold";g.style.marginTop="8px";g.style.fontSize="14px";g.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";this.chromelessToolbar.appendChild(g);var m=f(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();
-mxEvent.consume(a)}),Editor.nextImage,mxResources.get("nextPage")),l=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(g.innerHTML="",mxUtils.write(g,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});h.style.paddingLeft="0px";h.style.paddingRight="4px";m.style.paddingLeft="4px";m.style.paddingRight="0px";var n=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(m.style.display="",h.style.display=
-"",g.style.display="inline-block"):(m.style.display="none",h.style.display="none",g.style.display="none");l()});this.editor.addListener("resetGraphView",n);this.editor.addListener("pageSelected",l)}f(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");f(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");
+mxEvent.consume(a)}),Editor.nextImage,mxResources.get("nextPage")),l=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(g.innerHTML="",mxUtils.write(g,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});k.style.paddingLeft="0px";k.style.paddingRight="4px";m.style.paddingLeft="4px";m.style.paddingRight="0px";var n=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(m.style.display="",k.style.display=
+"",g.style.display="inline-block"):(m.style.display="none",k.style.display="none",g.style.display="none");l()});this.editor.addListener("resetGraphView",n);this.editor.addListener("pageSelected",l)}f(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");f(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");
f(mxUtils.bind(this,function(b){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(b)}),Editor.zoomFitImage,mxResources.get("fit"));var p=null,r=null,u=mxUtils.bind(this,function(a){null!=p&&(window.clearTimeout(p),p=null);null!=r&&(window.clearTimeout(r),r=null);p=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);p=null;r=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display=
"none";r=null}),600)}),a||200)}),v=mxUtils.bind(this,function(a){null!=p&&(window.clearTimeout(p),p=null);null!=r&&(window.clearTimeout(r),r=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var t=f(mxUtils.bind(this,function(b){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog(null,!0);mxEvent.addListener(this.layersDialog,
"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var c=t.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily=Editor.defaultHtmlFont;this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.left=c.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
@@ -2253,12 +2259,12 @@ mxUtils.bind(this,function(b){a.tooltipHandler.resetTimer();a.tooltipHandler.hid
c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(b,d){mxEvent.isTouchEvent(d.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<y&&Math.abs(this.scrollTop-a.container.scrollTop)<y&&Math.abs(this.startX-d.getGraphX())<y&&Math.abs(this.startY-d.getGraphY())<y&&(0<parseFloat(c.chromelessToolbar.style.opacity||0)?u():v(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var F=
a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y=a.y-(this.y0||0)*b.height}F.apply(this,arguments)};if(!a.isViewer()){var I=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var b=this.getPageLayout(),c=this.getPagePadding(),d=this.getPageSize(),e=Math.ceil(2*
c.x+b.width*d.width),f=Math.ceil(2*c.y+b.height*d.height),g=a.minimumGraphSize;if(null==g||g.width!=e||g.height!=f)a.minimumGraphSize=new mxRectangle(0,0,e,f);e=c.x-b.x*d.width;c=c.y-b.y*d.height;this.autoTranslate||this.view.translate.x==e&&this.view.translate.y==c?I.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=b.x,this.view.y0=b.y,b=a.view.translate.x,d=a.view.translate.y,a.view.setTranslate(e,c),a.container.scrollLeft+=Math.round((e-b)*a.view.scale),a.container.scrollTop+=Math.round((c-
-d)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var A=a.view.getBackgroundPane(),G=a.view.getDrawPane();a.cumulativeZoomFactor=1;var z=null,D=null,K=null,L=null,N=null,J=function(d){null!=z&&window.clearTimeout(z);window.setTimeout(function(){if(!a.isMouseDown||L)z=window.setTimeout(mxUtils.bind(this,function(){a.isFastZoomEnabled()&&(null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,
-"transform-origin",null),mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,"transform",null)),G.style.transformOrigin="",A.style.transformOrigin="",mxClient.IS_SF?(G.style.transform="scale(1)",A.style.transform="scale(1)",window.setTimeout(function(){G.style.transform="";A.style.transform=""},0)):(G.style.transform="",A.style.transform=""),a.view.getDecoratorPane().style.opacity="",a.view.getOverlayPane().style.opacity="");var d=new mxPoint(a.container.scrollLeft,a.container.scrollTop),
-e=mxUtils.getOffset(a.container),f=a.view.scale,g=0,k=0;null!=D&&(g=a.container.offsetWidth/2-D.x+e.x,k=a.container.offsetHeight/2-D.y+e.y);a.zoom(a.cumulativeZoomFactor,null,20);a.view.scale!=f&&(null!=K&&(g+=d.x-K.x,k+=d.y-K.y),null!=b&&c.chromelessResize(!1,null,g*(a.cumulativeZoomFactor-1),k*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==g&&0==k||(a.container.scrollLeft-=g*(a.cumulativeZoomFactor-1),a.container.scrollTop-=k*(a.cumulativeZoomFactor-1)));null!=N&&G.setAttribute("filter",
+d)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var B=a.view.getBackgroundPane(),G=a.view.getDrawPane();a.cumulativeZoomFactor=1;var z=null,D=null,K=null,L=null,N=null,J=function(d){null!=z&&window.clearTimeout(z);window.setTimeout(function(){if(!a.isMouseDown||L)z=window.setTimeout(mxUtils.bind(this,function(){a.isFastZoomEnabled()&&(null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,
+"transform-origin",null),mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,"transform",null)),G.style.transformOrigin="",B.style.transformOrigin="",mxClient.IS_SF?(G.style.transform="scale(1)",B.style.transform="scale(1)",window.setTimeout(function(){G.style.transform="";B.style.transform=""},0)):(G.style.transform="",B.style.transform=""),a.view.getDecoratorPane().style.opacity="",a.view.getOverlayPane().style.opacity="");var d=new mxPoint(a.container.scrollLeft,a.container.scrollTop),
+e=mxUtils.getOffset(a.container),f=a.view.scale,g=0,h=0;null!=D&&(g=a.container.offsetWidth/2-D.x+e.x,h=a.container.offsetHeight/2-D.y+e.y);a.zoom(a.cumulativeZoomFactor,null,20);a.view.scale!=f&&(null!=K&&(g+=d.x-K.x,h+=d.y-K.y),null!=b&&c.chromelessResize(!1,null,g*(a.cumulativeZoomFactor-1),h*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==g&&0==h||(a.container.scrollLeft-=g*(a.cumulativeZoomFactor-1),a.container.scrollTop-=h*(a.cumulativeZoomFactor-1)));null!=N&&G.setAttribute("filter",
N);a.cumulativeZoomFactor=1;N=L=D=K=z=null}),null!=d?d:a.isFastZoomEnabled()?c.wheelZoomDelay:c.lazyZoomDelay)},0)};a.lazyZoom=function(b,d,e,f){f=null!=f?f:this.zoomFactor;(d=d||!a.scrollbars)&&(D=new mxPoint(a.container.offsetLeft+a.container.clientWidth/2,a.container.offsetTop+a.container.clientHeight/2));b?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=f,this.cumulativeZoomFactor=Math.round(this.view.scale*
this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=f,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;a.isFastZoomEnabled()&&(null==N&&""!=G.getAttribute("filter")&&(N=G.getAttribute("filter"),
-G.removeAttribute("filter")),K=new mxPoint(a.container.scrollLeft,a.container.scrollTop),b=d||null==D?a.container.scrollLeft+a.container.clientWidth/2:D.x+a.container.scrollLeft-a.container.offsetLeft,f=d||null==D?a.container.scrollTop+a.container.clientHeight/2:D.y+a.container.scrollTop-a.container.offsetTop,G.style.transformOrigin=b+"px "+f+"px",G.style.transform="scale("+this.cumulativeZoomFactor+")",A.style.transformOrigin=b+"px "+f+"px",A.style.transform="scale("+this.cumulativeZoomFactor+")",
+G.removeAttribute("filter")),K=new mxPoint(a.container.scrollLeft,a.container.scrollTop),b=d||null==D?a.container.scrollLeft+a.container.clientWidth/2:D.x+a.container.scrollLeft-a.container.offsetLeft,f=d||null==D?a.container.scrollTop+a.container.clientHeight/2:D.y+a.container.scrollTop-a.container.offsetTop,G.style.transformOrigin=b+"px "+f+"px",G.style.transform="scale("+this.cumulativeZoomFactor+")",B.style.transformOrigin=b+"px "+f+"px",B.style.transform="scale("+this.cumulativeZoomFactor+")",
null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(b=a.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(b.style,"transform-origin",(d||null==D?a.container.clientWidth/2+a.container.scrollLeft-b.offsetLeft+"px":D.x+a.container.scrollLeft-b.offsetLeft-a.container.offsetLeft+"px")+" "+(d||null==D?a.container.clientHeight/2+a.container.scrollTop-b.offsetTop+"px":D.y+a.container.scrollTop-b.offsetTop-a.container.offsetTop+"px")),mxUtils.setPrefixedStyle(b.style,"transform",
"scale("+this.cumulativeZoomFactor+")")),a.view.getDecoratorPane().style.opacity="0",a.view.getOverlayPane().style.opacity="0",null!=c.hoverIcons&&c.hoverIcons.reset());J(e)};mxEvent.addGestureListeners(a.container,function(a){null!=z&&window.clearTimeout(z)},null,function(b){1!=a.cumulativeZoomFactor&&J(0)});mxEvent.addListener(a.container,"scroll",function(b){null==z||a.isMouseDown||1==a.cumulativeZoomFactor||J(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(b,c,d,e,f){a.fireEvent(new mxEventObject("wheel"));
if(null==this.dialogs||0==this.dialogs.length)if(!a.scrollbars&&!d&&a.isScrollWheelEvent(b))d=a.view.getTranslate(),e=40/a.view.scale,mxEvent.isShiftDown(b)?a.view.setTranslate(d.x+(c?-e:e),d.y):a.view.setTranslate(d.x,d.y+(c?e:-e));else if(d||a.isZoomWheelEvent(b))for(var g=mxEvent.getSource(b);null!=g;){if(g==a.container)return a.tooltipHandler.hideTooltip(),D=null!=e&&null!=f?new mxPoint(e,f):new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b)),L=d,d=a.zoomFactor,null!=b.deltaY&&Math.round(b.deltaY)!=
@@ -2287,18 +2293,18 @@ EditorUi.prototype.setPageFormat=function(a,b){b=null!=b?b:"1"==urlParams.sketch
EditorUi.prototype.setPageScale=function(a){this.editor.graph.pageScale=a;this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct();this.fireEvent(new mxEventObject("pageScaleChanged"))};EditorUi.prototype.setGridColor=function(a){this.editor.graph.view.gridColor=a;this.editor.graph.view.validateBackground();this.fireEvent(new mxEventObject("gridColorChanged"))};
EditorUi.prototype.addUndoListener=function(){var a=this.actions.get("undo"),b=this.actions.get("redo"),c=this.editor.undoManager,e=mxUtils.bind(this,function(){a.setEnabled(this.canUndo());b.setEnabled(this.canRedo())});c.addListener(mxEvent.ADD,e);c.addListener(mxEvent.UNDO,e);c.addListener(mxEvent.REDO,e);c.addListener(mxEvent.CLEAR,e);var d=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){d.apply(this,arguments);e()};var f=this.editor.graph.cellEditor.stopEditing;
this.editor.graph.cellEditor.stopEditing=function(a,b){f.apply(this,arguments);e()};e()};
-EditorUi.prototype.updateActionStates=function(){var a=this.editor.graph,b=!1,c=!1,e=!1,d=!1,f=!1,k=!1,h=!1,g=[],m=a.getSelectionCells();if(null!=m)for(var l=0;l<m.length;l++){var n=m[l],d=d||a.isTable(n),k=k||a.isTableCell(n),f=f||a.isTableRow(n);a.isCellEditable(n)&&(g.push(n),h=!0,a.getModel().isEdge(n)&&(e=!0),a.getModel().isVertex(n)&&(b=!0,0<a.getModel().getChildCount(n)||a.isContainer(n)))&&(c=!0)}d="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" ");for(l=
-0;l<d.length;l++)this.actions.get(d[l]).setEnabled(h);this.actions.get("lockUnlock").setEnabled(!a.isSelectionEmpty());this.actions.get("setAsDefaultStyle").setEnabled(1==a.getSelectionCount());this.actions.get("clearWaypoints").setEnabled(h);this.actions.get("copySize").setEnabled(1==a.getSelectionCount());this.actions.get("bringForward").setEnabled(1==g.length);this.actions.get("sendBackward").setEnabled(1==g.length);this.actions.get("turn").setEnabled(0<a.getResizableCells(a.getSelectionCells()).length);
-this.actions.get("curved").setEnabled(e);this.actions.get("rotation").setEnabled(b);this.actions.get("wordWrap").setEnabled(b);this.actions.get("autosize").setEnabled(b);e=b&&1==a.getSelectionCount();this.actions.get("group").setEnabled((1<a.getSelectionCount()||e&&!a.isContainer(a.getSelectionCell())&&0==a.model.getChildCount(a.getSelectionCell()))&&!f&&!k);this.actions.get("ungroup").setEnabled(c&&!f&&!k);this.actions.get("removeFromGroup").setEnabled(e&&a.getModel().isVertex(a.getModel().getParent(g[0])));
-a.view.getState(a.getSelectionCell());this.menus.get("navigation").setEnabled(h||null!=a.view.currentRoot);this.actions.get("collapsible").setEnabled(b&&(a.isContainer(a.getSelectionCell())||0<a.model.getChildCount(a.getSelectionCell())));this.actions.get("home").setEnabled(null!=a.view.currentRoot);this.actions.get("exitGroup").setEnabled(null!=a.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==a.getSelectionCount()&&a.isValidRoot(a.getSelectionCell()));c=1==a.getSelectionCount()&&
-a.isCellFoldable(a.getSelectionCell());this.actions.get("expand").setEnabled(c);this.actions.get("collapse").setEnabled(c);this.actions.get("editLink").setEnabled(1==g.length);this.actions.get("openLink").setEnabled(1==a.getSelectionCount()&&null!=a.getLinkForCell(a.getSelectionCell()));this.actions.get("guides").setEnabled(a.isEnabled());this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);g=a.isEnabled()&&!a.isCellLocked(a.getDefaultParent());this.menus.get("layout").setEnabled(g);
-this.menus.get("insert").setEnabled(g);this.menus.get("direction").setEnabled(g&&b);this.menus.get("align").setEnabled(g&&b&&1<a.getSelectionCount());this.menus.get("distribute").setEnabled(g&&b&&1<a.getSelectionCount());this.actions.get("selectVertices").setEnabled(g);this.actions.get("selectEdges").setEnabled(g);this.actions.get("selectAll").setEnabled(g);this.actions.get("selectNone").setEnabled(g);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);
-EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
+EditorUi.prototype.updateActionStates=function(){for(var a=this.editor.graph,b=this.getSelectionState(),c=a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()),e="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" "),d=0;d<e.length;d++)this.actions.get(e[d]).setEnabled(0<b.cells.length);this.actions.get("grid").setEnabled(!this.editor.chromeless||
+this.editor.editable);this.actions.get("pasteSize").setEnabled(null!=this.copiedSize&&0<b.vertices.length);this.actions.get("pasteData").setEnabled(null!=this.copiedValue&&0<b.cells.length);this.actions.get("setAsDefaultStyle").setEnabled(1==a.getSelectionCount());this.actions.get("copySize").setEnabled(1==a.getSelectionCount());this.actions.get("lockUnlock").setEnabled(!a.isSelectionEmpty());this.actions.get("bringForward").setEnabled(1==b.cells.length);this.actions.get("sendBackward").setEnabled(1==
+b.cells.length);this.actions.get("rotation").setEnabled(1==b.vertices.length);this.actions.get("wordWrap").setEnabled(1==b.vertices.length);this.actions.get("autosize").setEnabled(1==b.vertices.length);this.actions.get("clearWaypoints").setEnabled(b.connections);this.actions.get("curved").setEnabled(0<b.edges.length);this.actions.get("turn").setEnabled(b.resizable);this.actions.get("group").setEnabled(!b.row&&!b.cell&&(1<b.cells.length||1==b.vertices.length&&0==a.model.getChildCount(b.cells[0])&&
+!a.isContainer(b.vertices[0])));this.actions.get("ungroup").setEnabled(!b.row&&!b.cell&&!b.table&&0<b.vertices.length&&(a.isContainer(b.vertices[0])||0<a.getModel().getChildCount(b.vertices[0])));this.actions.get("removeFromGroup").setEnabled(1==b.cells.length&&a.getModel().isVertex(a.getModel().getParent(b.cells[0])));this.actions.get("collapsible").setEnabled(1==b.vertices.length&&(0<a.model.getChildCount(b.vertices[0])||a.isContainer(b.vertices[0])));this.actions.get("exitGroup").setEnabled(null!=
+a.view.currentRoot);this.actions.get("home").setEnabled(null!=a.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==b.cells.length&&a.isValidRoot(b.cells[0]));this.actions.get("editLink").setEnabled(1==b.cells.length);this.actions.get("openLink").setEnabled(1==b.cells.length&&null!=a.getLinkForCell(b.cells[0]));this.actions.get("guides").setEnabled(a.isEnabled());this.actions.get("selectVertices").setEnabled(c);this.actions.get("selectEdges").setEnabled(c);this.actions.get("selectAll").setEnabled(c);
+this.actions.get("selectNone").setEnabled(c);e=1==b.vertices.length&&a.isCellFoldable(b.vertices[0]);this.actions.get("expand").setEnabled(e);this.actions.get("collapse").setEnabled(e);this.menus.get("navigation").setEnabled(0<b.cells.length||null!=a.view.currentRoot);this.menus.get("layout").setEnabled(c);this.menus.get("insert").setEnabled(c);this.menus.get("direction").setEnabled(b.unlocked&&1==b.vertices.length);this.menus.get("distribute").setEnabled(b.unlocked&&1<b.vertices.length);this.menus.get("align").setEnabled(b.unlocked&&
+1<b.vertices.length);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
EditorUi.prototype.refresh=function(a){a=null!=a?a:!0;var b=this.container.clientWidth,c=this.container.clientHeight;this.container==document.body&&(b=document.body.clientWidth||document.documentElement.clientWidth,c=document.documentElement.clientHeight);var e=0;mxClient.IS_IOS&&!window.navigator.standalone&&window.innerHeight!=document.documentElement.clientHeight&&(e=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var d=Math.max(0,Math.min(this.hsplitPosition,b-this.splitSize-
-20)),b=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",b+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",b+=this.toolbarHeight);0<b&&(b+=1);var f=0;if(null!=this.sidebarFooterContainer){var k=this.footerHeight+e,f=Math.max(0,Math.min(c-b-k,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=d+"px";this.sidebarFooterContainer.style.height=f+"px";
-this.sidebarFooterContainer.style.bottom=k+"px"}c=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=b+"px";this.sidebarContainer.style.width=d+"px";this.formatContainer.style.top=b+"px";this.formatContainer.style.width=c+"px";this.formatContainer.style.display=null!=this.format?"":"none";var k=this.getDiagramContainerOffset(),h=null!=this.hsplit.parentNode?d+this.splitSize:0;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;
-this.hsplit.style.bottom=this.footerHeight+e+"px";this.hsplit.style.left=d+"px";this.footerContainer.style.display=0==this.footerHeight?"none":"";null!=this.tabContainer&&(this.tabContainer.style.left=h+"px");0<this.footerHeight&&(this.footerContainer.style.bottom=e+"px");d=0;null!=this.tabContainer&&(this.tabContainer.style.bottom=this.footerHeight+e+"px",this.tabContainer.style.right=this.diagramContainer.style.right,d=this.tabContainer.clientHeight);this.sidebarContainer.style.bottom=this.footerHeight+
-f+e+"px";this.formatContainer.style.bottom=this.footerHeight+e+"px";"1"!=urlParams.embedInline&&(this.diagramContainer.style.left=h+k.x+"px",this.diagramContainer.style.top=b+k.y+"px",this.diagramContainer.style.right=c+"px",this.diagramContainer.style.bottom=this.footerHeight+e+d+"px");a&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null};
+20)),b=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",b+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",b+=this.toolbarHeight);0<b&&(b+=1);var f=0;if(null!=this.sidebarFooterContainer){var h=this.footerHeight+e,f=Math.max(0,Math.min(c-b-h,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=d+"px";this.sidebarFooterContainer.style.height=f+"px";
+this.sidebarFooterContainer.style.bottom=h+"px"}c=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=b+"px";this.sidebarContainer.style.width=d+"px";this.formatContainer.style.top=b+"px";this.formatContainer.style.width=c+"px";this.formatContainer.style.display=null!=this.format?"":"none";var h=this.getDiagramContainerOffset(),k=null!=this.hsplit.parentNode?d+this.splitSize:0;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;
+this.hsplit.style.bottom=this.footerHeight+e+"px";this.hsplit.style.left=d+"px";this.footerContainer.style.display=0==this.footerHeight?"none":"";null!=this.tabContainer&&(this.tabContainer.style.left=k+"px");0<this.footerHeight&&(this.footerContainer.style.bottom=e+"px");d=0;null!=this.tabContainer&&(this.tabContainer.style.bottom=this.footerHeight+e+"px",this.tabContainer.style.right=this.diagramContainer.style.right,d=this.tabContainer.clientHeight);this.sidebarContainer.style.bottom=this.footerHeight+
+f+e+"px";this.formatContainer.style.bottom=this.footerHeight+e+"px";"1"!=urlParams.embedInline&&(this.diagramContainer.style.left=k+h.x+"px",this.diagramContainer.style.top=b+h.y+"px",this.diagramContainer.style.right=c+"px",this.diagramContainer.style.bottom=this.footerHeight+e+d+"px");a&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null};
EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer");this.toolbarContainer=this.createDiv("geToolbarContainer");this.sidebarContainer=this.createDiv("geSidebarContainer");this.formatContainer=this.createDiv("geSidebarContainer geFormatContainer");this.diagramContainer=this.createDiv("geDiagramContainer");this.footerContainer=this.createDiv("geFooterContainer");this.hsplit=this.createDiv("geHsplit");this.hsplit.setAttribute("title",mxResources.get("collapseExpand"));
this.menubarContainer.style.top="0px";this.menubarContainer.style.left="0px";this.menubarContainer.style.right="0px";this.toolbarContainer.style.left="0px";this.toolbarContainer.style.right="0px";this.sidebarContainer.style.left="0px";this.formatContainer.style.right="0px";this.formatContainer.style.zIndex="1";this.diagramContainer.style.right=(null!=this.format?this.formatWidth:0)+"px";this.footerContainer.style.left="0px";this.footerContainer.style.right="0px";this.footerContainer.style.bottom=
"0px";this.footerContainer.style.zIndex=mxPopupMenu.prototype.zIndex-3;this.hsplit.style.width=this.splitSize+"px";if(this.sidebarFooterContainer=this.createSidebarFooterContainer())this.sidebarFooterContainer.style.left="0px";this.editor.chromeless?this.diagramContainer.style.border="none":this.tabContainer=this.createTabContainer()};EditorUi.prototype.createSidebarFooterContainer=function(){return null};
@@ -2307,12 +2313,12 @@ this.sidebar=this.editor.chromeless?null:this.createSidebar(this.sidebarContaine
this.container.appendChild(this.sidebarFooterContainer);this.container.appendChild(this.diagramContainer);null!=this.container&&null!=this.tabContainer&&this.container.appendChild(this.tabContainer);this.toolbar=this.editor.chromeless?null:this.createToolbar(this.createDiv("geToolbar"));null!=this.toolbar&&(this.toolbarContainer.appendChild(this.toolbar.container),this.container.appendChild(this.toolbarContainer));null!=this.sidebar&&(this.container.appendChild(this.hsplit),this.addSplitHandler(this.hsplit,
!0,0,mxUtils.bind(this,function(a){this.hsplitPosition=a;this.refresh()})))};EditorUi.prototype.createStatusContainer=function(){var a=document.createElement("a");a.className="geItem geStatus";return a};EditorUi.prototype.setStatusText=function(a){this.statusContainer.innerHTML=a};EditorUi.prototype.createToolbar=function(a){return new Toolbar(this,a)};EditorUi.prototype.createSidebar=function(a){return new Sidebar(this,a)};EditorUi.prototype.createFormat=function(a){return new Format(this,a)};
EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")};EditorUi.prototype.createDiv=function(a){var b=document.createElement("div");b.className=a;return b};
-EditorUi.prototype.addSplitHandler=function(a,b,c,e){function d(a){if(null!=k){var d=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a));e(Math.max(0,h+(b?d.x-k.x:k.y-d.y)-c));mxEvent.consume(a);h!=l()&&(g=!0,m=null)}}function f(a){d(a);k=h=null}var k=null,h=null,g=!0,m=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var l=mxUtils.bind(this,function(){var d=parseInt(b?a.style.left:a.style.bottom);b||(d=d+c-this.footerHeight);return d});mxEvent.addGestureListeners(a,function(a){k=new mxPoint(mxEvent.getClientX(a),
-mxEvent.getClientY(a));h=l();g=!1;mxEvent.consume(a)});mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){if(!g&&this.hsplitClickEnabled){var b=null!=m?m-c:0;m=l();e(b);mxEvent.consume(a)}}));mxEvent.addGestureListeners(document,null,d,f);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,d,f)})};
+EditorUi.prototype.addSplitHandler=function(a,b,c,e){function d(a){if(null!=h){var d=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a));e(Math.max(0,k+(b?d.x-h.x:h.y-d.y)-c));mxEvent.consume(a);k!=l()&&(g=!0,m=null)}}function f(a){d(a);h=k=null}var h=null,k=null,g=!0,m=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var l=mxUtils.bind(this,function(){var d=parseInt(b?a.style.left:a.style.bottom);b||(d=d+c-this.footerHeight);return d});mxEvent.addGestureListeners(a,function(a){h=new mxPoint(mxEvent.getClientX(a),
+mxEvent.getClientY(a));k=l();g=!1;mxEvent.consume(a)});mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){if(!g&&this.hsplitClickEnabled){var b=null!=m?m-c:0;m=l();e(b);mxEvent.consume(a)}}));mxEvent.addGestureListeners(document,null,d,f);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,d,f)})};
EditorUi.prototype.handleError=function(a,b,c,e,d){a=null!=a&&null!=a.error?a.error:a;if(null!=a||null!=b){d=mxUtils.htmlEntities(mxResources.get("unknownError"));var f=mxResources.get("ok");b=null!=b?b:mxResources.get("error");null!=a&&null!=a.message&&(d=mxUtils.htmlEntities(a.message));this.showError(b,d,f,c,null,null,null,null,null,null,null,null,e?c:null)}else null!=c&&c()};
-EditorUi.prototype.showError=function(a,b,c,e,d,f,k,h,g,m,l,n,p){a=new ErrorDialog(this,a,b,c||mxResources.get("ok"),e,d,f,k,n,h,g);b=Math.ceil(null!=b?b.length/50:1);this.showDialog(a.container,m||340,l||100+20*b,!0,!1,p);a.init()};EditorUi.prototype.showDialog=function(a,b,c,e,d,f,k,h,g,m){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,c,e,d,f,k,h,g,m);this.dialogs.push(this.dialog)};
+EditorUi.prototype.showError=function(a,b,c,e,d,f,h,k,g,m,l,n,p){a=new ErrorDialog(this,a,b,c||mxResources.get("ok"),e,d,f,h,n,k,g);b=Math.ceil(null!=b?b.length/50:1);this.showDialog(a.container,m||340,l||100+20*b,!0,!1,p);a.init()};EditorUi.prototype.showDialog=function(a,b,c,e,d,f,h,k,g,m){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,c,e,d,f,h,k,g,m);this.dialogs.push(this.dialog)};
EditorUi.prototype.hideDialog=function(a,b,c){null!=this.dialogs&&0<this.dialogs.length&&(null==c||c==this.dialog.container.firstChild)&&(c=this.dialogs.pop(),0==c.close(a,b)?this.dialogs.push(c):(this.dialog=0<this.dialogs.length?this.dialogs[this.dialogs.length-1]:null,this.editor.fireEvent(new mxEventObject("hideDialog")),null==this.dialog&&"hidden"!=this.editor.graph.container.style.visibility&&window.setTimeout(mxUtils.bind(this,function(){this.editor.graph.isEditing()&&null!=this.editor.graph.cellEditor.textarea?
-this.editor.graph.cellEditor.textarea.focus():(mxUtils.clearSelection(),this.editor.graph.container.focus())}),0)))};EditorUi.prototype.ctrlEnter=function(){var a=this.editor.graph;if(a.isEnabled())try{for(var b=a.getSelectionCells(),c=new mxDictionary,e=[],d=0;d<b.length;d++){var f=a.isTableCell(b[d])?a.model.getParent(b[d]):b[d];null==f||c.get(f)||(c.put(f,!0),e.push(f))}a.setSelectionCells(a.duplicateCells(e,!1))}catch(k){this.handleError(k)}};
+this.editor.graph.cellEditor.textarea.focus():(mxUtils.clearSelection(),this.editor.graph.container.focus())}),0)))};EditorUi.prototype.ctrlEnter=function(){var a=this.editor.graph;if(a.isEnabled())try{for(var b=a.getSelectionCells(),c=new mxDictionary,e=[],d=0;d<b.length;d++){var f=a.isTableCell(b[d])?a.model.getParent(b[d]):b[d];null==f||c.get(f)||(c.put(f,!0),e.push(f))}a.setSelectionCells(a.duplicateCells(e,!1))}catch(h){this.handleError(h)}};
EditorUi.prototype.pickColor=function(a,b){var c=this.editor.graph,e=c.cellEditor.saveSelection(),d=230+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12)),f=new ColorDialog(this,mxUtils.rgba2hex(a)||"none",function(a){c.cellEditor.restoreSelection(e);b(a)},function(){c.cellEditor.restoreSelection(e)});this.showDialog(f.container,230,d,!0,!1);f.init()};
EditorUi.prototype.openFile=function(){window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:320,Editor.useLocalStorage?480:220,!0,!0,function(){window.openFile=null})};
EditorUi.prototype.extractGraphModelFromHtml=function(a){var b=null;try{var c=a.indexOf("&lt;mxGraphModel ");if(0<=c){var e=a.lastIndexOf("&lt;/mxGraphModel&gt;");e>c&&(b=a.substring(c,e+21).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}}catch(d){}return b};
@@ -2328,25 +2334,26 @@ EditorUi.prototype.extractGraphModelFromEvent=function(a){var b=null,c=null;null
EditorUi.prototype.save=function(a){if(null!=a){this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var b=mxUtils.getXml(this.editor.getGraphXml());try{if(Editor.useLocalStorage){if(null!=localStorage.getItem(a)&&!mxUtils.confirm(mxResources.get("replaceIt",[a])))return;localStorage.setItem(a,b);this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("saved"))+" "+new Date)}else if(b.length<MAX_REQUEST_SIZE)(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(a)+"&xml="+encodeURIComponent(b))).simulate(document,
"_blank");else{mxUtils.alert(mxResources.get("drawingTooLarge"));mxUtils.popup(b);return}this.editor.setModified(!1);this.editor.setFilename(a);this.updateDocumentTitle()}catch(c){this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("errorSavingFile")))}}};
EditorUi.prototype.executeLayout=function(a,b,c){var e=this.editor.graph;if(e.isEnabled()){e.getModel().beginUpdate();try{a()}catch(d){throw d;}finally{this.allowAnimation&&b&&(null==navigator.userAgent||0>navigator.userAgent.indexOf("Camino"))?(a=new mxMorphing(e),a.addListener(mxEvent.DONE,mxUtils.bind(this,function(){e.getModel().endUpdate();null!=c&&c()})),a.startAnimation()):(e.getModel().endUpdate(),null!=c&&c())}}};
-EditorUi.prototype.showImageDialog=function(a,b,c,e){e=this.editor.graph.cellEditor;var d=e.saveSelection(),f=mxUtils.prompt(a,b);e.restoreSelection(d);if(null!=f&&0<f.length){var k=new Image;k.onload=function(){c(f,k.width,k.height)};k.onerror=function(){c(null);mxUtils.alert(mxResources.get("fileNotFound"))};k.src=f}else c(null)};EditorUi.prototype.showLinkDialog=function(a,b,c){a=new LinkDialog(this,a,b,c);this.showDialog(a.container,420,90,!0,!0);a.init()};
+EditorUi.prototype.showImageDialog=function(a,b,c,e){e=this.editor.graph.cellEditor;var d=e.saveSelection(),f=mxUtils.prompt(a,b);e.restoreSelection(d);if(null!=f&&0<f.length){var h=new Image;h.onload=function(){c(f,h.width,h.height)};h.onerror=function(){c(null);mxUtils.alert(mxResources.get("fileNotFound"))};h.src=f}else c(null)};EditorUi.prototype.showLinkDialog=function(a,b,c){a=new LinkDialog(this,a,b,c);this.showDialog(a.container,420,90,!0,!0);a.init()};
EditorUi.prototype.showDataDialog=function(a){null!=a&&(a=new EditDataDialog(this,a),this.showDialog(a.container,480,420,!0,!1,null,!1),a.init())};
EditorUi.prototype.showBackgroundImageDialog=function(a,b){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor=!0;this.editor.graph.model.execute(a)});var c=mxUtils.prompt(mxResources.get("backgroundImage"),null!=b?b.src:"");null!=c&&0<c.length?(b=new Image,b.onload=function(){a(new mxImage(c,b.width,b.height),!1)},b.onerror=function(){a(null,!0);mxUtils.alert(mxResources.get("fileNotFound"))},b.src=c):a(null)};
EditorUi.prototype.setBackgroundImage=function(a){this.editor.graph.setBackgroundImage(a);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(a,b,c){mxUtils.confirm(a)?null!=b&&b():null!=c&&c()};EditorUi.prototype.createOutline=function(a){var b=new mxOutline(this.editor.graph);mxEvent.addListener(window,"resize",function(){b.update(!1)});return b};
EditorUi.prototype.altShiftActions={67:"clearWaypoints",65:"connectionArrows",76:"editLink",80:"connectionPoints",84:"editTooltip",86:"pasteSize",88:"copySize",66:"copyData",69:"pasteData"};
EditorUi.prototype.createKeyHandler=function(a){function b(a,b,c){if(!e.isSelectionEmpty()&&e.isEnabled())if(b=null!=b?b:1,c){e.getModel().beginUpdate();try{var d=e.getSelectionCells();for(c=0;c<d.length;c++)if(e.getModel().isVertex(d[c])&&e.isCellResizable(d[c])){var f=e.getCellGeometry(d[c]);null!=f&&(f=f.clone(),37==a?f.width=Math.max(0,f.width-b):38==a?f.height=Math.max(0,f.height-b):39==a?f.width+=b:40==a&&(f.height+=b),e.getModel().setGeometry(d[c],f))}}finally{e.getModel().endUpdate()}}else{var d=
-e.getSelectionCell(),f=e.model.getParent(d),g=e.getView().scale;c=null;1==e.getSelectionCount()&&e.model.isVertex(d)&&null!=e.layoutManager&&!e.isCellLocked(d)&&(c=e.layoutManager.getLayout(f));if(null!=c&&c.constructor==mxStackLayout)b=f.getIndex(d),37==a||38==a?e.model.add(f,d,Math.max(0,b-1)):39!=a&&40!=a||e.model.add(f,d,Math.min(e.model.getChildCount(f),b+1));else{var h=e.graphHandler;null!=h&&(null==h.first&&h.start(e.getSelectionCell(),0,0,e.getSelectionCells()),null!=h.first&&(f=d=0,37==a?
-d=-b:38==a?f=-b:39==a?d=b:40==a&&(f=b),h.currentDx+=d*g,h.currentDy+=f*g,h.checkPreview(),h.updatePreview()),null!=k&&window.clearTimeout(k),k=window.setTimeout(function(){if(null!=h.first){var a=h.roundLength(h.currentDx/g),b=h.roundLength(h.currentDy/g);h.moveCells(h.cells,a,b);h.reset()}},400))}}}var c=this,e=this.editor.graph,d=new mxKeyHandler(e),f=d.isEventIgnored;d.isEventIgnored=function(a){return!(mxEvent.isShiftDown(a)&&9==a.keyCode)&&(!this.isControlDown(a)||mxEvent.isShiftDown(a)||90!=
-a.keyCode&&89!=a.keyCode&&188!=a.keyCode&&190!=a.keyCode&&85!=a.keyCode)&&(66!=a.keyCode&&73!=a.keyCode||!this.isControlDown(a)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&&!mxClient.IS_SF)&&f.apply(this,arguments)};d.isEnabledForEvent=function(a){return!mxEvent.isConsumed(a)&&this.isGraphEvent(a)&&this.isEnabled()&&(null==c.dialogs||0==c.dialogs.length)};d.isControlDown=function(a){return mxEvent.isControlDown(a)||mxClient.IS_MAC&&a.metaKey};var k=null,h={37:mxConstants.DIRECTION_WEST,
-38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},g=d.getFunction;mxKeyHandler.prototype.getFunction=function(a){if(e.isEnabled()){if(mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){var d=c.actions.get(c.altShiftActions[a.keyCode]);if(null!=d)return d.funct}if(null!=h[a.keyCode]&&!e.isSelectionEmpty())if(!this.isControlDown(a)&&mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){if(e.model.isVertex(e.getSelectionCell()))return function(){var b=e.connectVertex(e.getSelectionCell(),
-h[a.keyCode],e.defaultEdgeLength,a,!0);null!=b&&0<b.length&&(1==b.length&&e.model.isEdge(b[0])?e.setSelectionCell(e.model.getTerminal(b[0],!1)):e.setSelectionCell(b[b.length-1]),e.scrollCellToVisible(e.getSelectionCell()),null!=c.hoverIcons&&c.hoverIcons.update(e.view.getState(e.getSelectionCell())))}}else return this.isControlDown(a)?function(){b(a.keyCode,mxEvent.isShiftDown(a)?e.gridSize:null,!0)}:function(){b(a.keyCode,mxEvent.isShiftDown(a)?e.gridSize:null)}}return g.apply(this,arguments)};d.bindAction=
+e.getSelectionCell(),f=e.model.getParent(d),g=e.getView().scale;c=null;1==e.getSelectionCount()&&e.model.isVertex(d)&&null!=e.layoutManager&&!e.isCellLocked(d)&&(c=e.layoutManager.getLayout(f));if(null!=c&&c.constructor==mxStackLayout)b=f.getIndex(d),37==a||38==a?e.model.add(f,d,Math.max(0,b-1)):39!=a&&40!=a||e.model.add(f,d,Math.min(e.model.getChildCount(f),b+1));else{var k=e.graphHandler;null!=k&&(null==k.first&&k.start(e.getSelectionCell(),0,0,e.getSelectionCells()),null!=k.first&&(f=d=0,37==a?
+d=-b:38==a?f=-b:39==a?d=b:40==a&&(f=b),k.currentDx+=d*g,k.currentDy+=f*g,k.checkPreview(),k.updatePreview()),null!=h&&window.clearTimeout(h),h=window.setTimeout(function(){if(null!=k.first){var a=k.roundLength(k.currentDx/g),b=k.roundLength(k.currentDy/g);k.moveCells(k.cells,a,b);k.reset()}},400))}}}var c=this,e=this.editor.graph,d=new mxKeyHandler(e),f=d.isEventIgnored;d.isEventIgnored=function(a){return!(mxEvent.isShiftDown(a)&&9==a.keyCode)&&(!this.isControlDown(a)||mxEvent.isShiftDown(a)||90!=
+a.keyCode&&89!=a.keyCode&&188!=a.keyCode&&190!=a.keyCode&&85!=a.keyCode)&&(66!=a.keyCode&&73!=a.keyCode||!this.isControlDown(a)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&&!mxClient.IS_SF)&&f.apply(this,arguments)};d.isEnabledForEvent=function(a){return!mxEvent.isConsumed(a)&&this.isGraphEvent(a)&&this.isEnabled()&&(null==c.dialogs||0==c.dialogs.length)};d.isControlDown=function(a){return mxEvent.isControlDown(a)||mxClient.IS_MAC&&a.metaKey};var h=null,k={37:mxConstants.DIRECTION_WEST,
+38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},g=d.getFunction;mxKeyHandler.prototype.getFunction=function(a){if(e.isEnabled()){if(mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){var d=c.actions.get(c.altShiftActions[a.keyCode]);if(null!=d)return d.funct}if(null!=k[a.keyCode]&&!e.isSelectionEmpty())if(!this.isControlDown(a)&&mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){if(e.model.isVertex(e.getSelectionCell()))return function(){var b=e.connectVertex(e.getSelectionCell(),
+k[a.keyCode],e.defaultEdgeLength,a,!0);null!=b&&0<b.length&&(1==b.length&&e.model.isEdge(b[0])?e.setSelectionCell(e.model.getTerminal(b[0],!1)):e.setSelectionCell(b[b.length-1]),e.scrollCellToVisible(e.getSelectionCell()),null!=c.hoverIcons&&c.hoverIcons.update(e.view.getState(e.getSelectionCell())))}}else return this.isControlDown(a)?function(){b(a.keyCode,mxEvent.isShiftDown(a)?e.gridSize:null,!0)}:function(){b(a.keyCode,mxEvent.isShiftDown(a)?e.gridSize:null)}}return g.apply(this,arguments)};d.bindAction=
mxUtils.bind(this,function(a,b,c,e){var f=this.actions.get(c);null!=f&&(c=function(){f.isEnabled()&&f.funct()},b?e?d.bindControlShiftKey(a,c):d.bindControlKey(a,c):e?d.bindShiftKey(a,c):d.bindKey(a,c))});var m=this,l=d.escape;d.escape=function(a){l.apply(this,arguments)};d.enter=function(){};d.bindControlShiftKey(36,function(){e.exitGroup()});d.bindControlShiftKey(35,function(){e.enterGroup()});d.bindShiftKey(36,function(){e.home()});d.bindKey(35,function(){e.refresh()});d.bindAction(107,!0,"zoomIn");
d.bindAction(109,!0,"zoomOut");d.bindAction(80,!0,"print");d.bindAction(79,!0,"outline",!0);if(!this.editor.chromeless||this.editor.editable)d.bindControlKey(36,function(){e.isEnabled()&&e.foldCells(!0)}),d.bindControlKey(35,function(){e.isEnabled()&&e.foldCells(!1)}),d.bindControlKey(13,function(){m.ctrlEnter()}),d.bindAction(8,!1,"delete"),d.bindAction(8,!0,"deleteAll"),d.bindAction(8,!1,"deleteLabels",!0),d.bindAction(46,!1,"delete"),d.bindAction(46,!0,"deleteAll"),d.bindAction(46,!1,"deleteLabels",
!0),d.bindAction(36,!1,"resetView"),d.bindAction(72,!0,"fitWindow",!0),d.bindAction(74,!0,"fitPage"),d.bindAction(74,!0,"fitTwoPages",!0),d.bindAction(48,!0,"customZoom"),d.bindAction(82,!0,"turn"),d.bindAction(82,!0,"clearDefaultStyle",!0),d.bindAction(83,!0,"save"),d.bindAction(83,!0,"saveAs",!0),d.bindAction(65,!0,"selectAll"),d.bindAction(65,!0,"selectNone",!0),d.bindAction(73,!0,"selectVertices",!0),d.bindAction(69,!0,"selectEdges",!0),d.bindAction(69,!0,"editStyle"),d.bindAction(66,!0,"bold"),
d.bindAction(66,!0,"toBack",!0),d.bindAction(70,!0,"toFront",!0),d.bindAction(68,!0,"duplicate"),d.bindAction(68,!0,"setAsDefaultStyle",!0),d.bindAction(90,!0,"undo"),d.bindAction(89,!0,"autosize",!0),d.bindAction(88,!0,"cut"),d.bindAction(67,!0,"copy"),d.bindAction(86,!0,"paste"),d.bindAction(71,!0,"group"),d.bindAction(77,!0,"editData"),d.bindAction(71,!0,"grid",!0),d.bindAction(73,!0,"italic"),d.bindAction(76,!0,"lockUnlock"),d.bindAction(76,!0,"layers",!0),d.bindAction(80,!0,"formatPanel",!0),
d.bindAction(85,!0,"underline"),d.bindAction(85,!0,"ungroup",!0),d.bindAction(190,!0,"superscript"),d.bindAction(188,!0,"subscript"),d.bindAction(13,!1,"keyPressEnter"),d.bindKey(113,function(){e.isEnabled()&&e.startEditingAtCell()});mxClient.IS_WIN?d.bindAction(89,!0,"redo"):d.bindAction(90,!0,"redo",!0);return d};
-EditorUi.prototype.destroy=function(){null!=this.editor&&(this.editor.destroy(),this.editor=null);null!=this.menubar&&(this.menubar.destroy(),this.menubar=null);null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null);null!=this.sidebar&&(this.sidebar.destroy(),this.sidebar=null);null!=this.keyHandler&&(this.keyHandler.destroy(),this.keyHandler=null);null!=this.keydownHandler&&(mxEvent.removeListener(document,"keydown",this.keydownHandler),this.keydownHandler=null);null!=this.keyupHandler&&
-(mxEvent.removeListener(document,"keyup",this.keyupHandler),this.keyupHandler=null);null!=this.resizeHandler&&(mxEvent.removeListener(window,"resize",this.resizeHandler),this.resizeHandler=null);null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null);null!=this.orientationChangeHandler&&(mxEvent.removeListener(window,"orientationchange",this.orientationChangeHandler),this.orientationChangeHandler=null);null!=this.scrollHandler&&(mxEvent.removeListener(window,
-"scroll",this.scrollHandler),this.scrollHandler=null);if(null!=this.destroyFunctions){for(var a=0;a<this.destroyFunctions.length;a++)this.destroyFunctions[a]();this.destroyFunctions=null}for(var b=[this.menubarContainer,this.toolbarContainer,this.sidebarContainer,this.formatContainer,this.diagramContainer,this.footerContainer,this.chromelessToolbar,this.hsplit,this.sidebarFooterContainer,this.layersDialog],a=0;a<b.length;a++)null!=b[a]&&null!=b[a].parentNode&&b[a].parentNode.removeChild(b[a])};function Sidebar(a,b){this.editorUi=a;this.container=b;this.palettes={};this.taglist={};this.lastCreated=0;this.showTooltips=!0;this.graph=a.createTemporaryGraph(this.editorUi.editor.graph.getStylesheet());this.graph.cellRenderer.minSvgStrokeWidth=this.minThumbStrokeWidth;this.graph.cellRenderer.antiAlias=this.thumbAntiAlias;this.graph.container.style.visibility="hidden";this.graph.foldingEnabled=!1;document.body.appendChild(this.graph.container);this.pointerUpHandler=mxUtils.bind(this,function(){if(null==
+EditorUi.prototype.destroy=function(){var a=this.editor.graph;null!=a&&null!=this.selectionStateListener&&(a.getSelectionModel().removeListener(mxEvent.CHANGE,this.selectionStateListener),a.getModel().removeListener(mxEvent.CHANGE,this.selectionStateListener),a.removeListener(mxEvent.EDITING_STARTED,this.selectionStateListener),a.removeListener(mxEvent.EDITING_STOPPED,this.selectionStateListener),a.getView().removeListener("unitChanged",this.selectionStateListener),this.selectionStateListener=null);
+null!=this.editor&&(this.editor.destroy(),this.editor=null);null!=this.menubar&&(this.menubar.destroy(),this.menubar=null);null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null);null!=this.sidebar&&(this.sidebar.destroy(),this.sidebar=null);null!=this.keyHandler&&(this.keyHandler.destroy(),this.keyHandler=null);null!=this.keydownHandler&&(mxEvent.removeListener(document,"keydown",this.keydownHandler),this.keydownHandler=null);null!=this.keyupHandler&&(mxEvent.removeListener(document,"keyup",
+this.keyupHandler),this.keyupHandler=null);null!=this.resizeHandler&&(mxEvent.removeListener(window,"resize",this.resizeHandler),this.resizeHandler=null);null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null);null!=this.orientationChangeHandler&&(mxEvent.removeListener(window,"orientationchange",this.orientationChangeHandler),this.orientationChangeHandler=null);null!=this.scrollHandler&&(mxEvent.removeListener(window,"scroll",this.scrollHandler),
+this.scrollHandler=null);if(null!=this.destroyFunctions){for(a=0;a<this.destroyFunctions.length;a++)this.destroyFunctions[a]();this.destroyFunctions=null}for(var b=[this.menubarContainer,this.toolbarContainer,this.sidebarContainer,this.formatContainer,this.diagramContainer,this.footerContainer,this.chromelessToolbar,this.hsplit,this.sidebarFooterContainer,this.layersDialog],a=0;a<b.length;a++)null!=b[a]&&null!=b[a].parentNode&&b[a].parentNode.removeChild(b[a])};function Sidebar(a,b){this.editorUi=a;this.container=b;this.palettes={};this.taglist={};this.lastCreated=0;this.showTooltips=!0;this.graph=a.createTemporaryGraph(this.editorUi.editor.graph.getStylesheet());this.graph.cellRenderer.minSvgStrokeWidth=this.minThumbStrokeWidth;this.graph.cellRenderer.antiAlias=this.thumbAntiAlias;this.graph.container.style.visibility="hidden";this.graph.foldingEnabled=!1;document.body.appendChild(this.graph.container);this.pointerUpHandler=mxUtils.bind(this,function(){if(null==
this.tooltipCloseImage||"none"==this.tooltipCloseImage.style.display)this.showTooltips=!0,this.hideTooltip()});mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler);this.pointerDownHandler=mxUtils.bind(this,function(){if(null==this.tooltipCloseImage||"none"==this.tooltipCloseImage.style.display)this.showTooltips=!1,this.hideTooltip()});mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler);this.pointerMoveHandler=
mxUtils.bind(this,function(a){if(300<Date.now()-this.lastCreated&&(null==this.tooltipCloseImage||"none"==this.tooltipCloseImage.style.display)){for(a=mxEvent.getSource(a);null!=a;){if(a==this.currentElt)return;a=a.parentNode}this.hideTooltip()}});mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler);this.pointerOutHandler=mxUtils.bind(this,function(a){null==a.toElement&&null==a.relatedTarget&&this.hideTooltip()});mxEvent.addListener(document,mxClient.IS_POINTER?
"pointerout":"mouseout",this.pointerOutHandler);mxEvent.addListener(b,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0;this.hideTooltip()}));this.init()}
@@ -2362,33 +2369,33 @@ Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgo
"large"!=urlParams["sidebar-entries"]&&(Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=1,Sidebar.prototype.thumbWidth=32,Sidebar.prototype.thumbHeight=30,Sidebar.prototype.minThumbStrokeWidth=1.3,Sidebar.prototype.thumbAntiAlias=!0);Sidebar.prototype.sidebarTitleSize=8;Sidebar.prototype.sidebarTitles=!1;Sidebar.prototype.tooltipTitles=!0;Sidebar.prototype.maxTooltipWidth=400;Sidebar.prototype.maxTooltipHeight=400;Sidebar.prototype.addStencilsToIndex=!0;
Sidebar.prototype.defaultImageWidth=80;Sidebar.prototype.defaultImageHeight=80;Sidebar.prototype.tooltipMouseDown=null;
Sidebar.prototype.getTooltipOffset=function(a,b){var c=b.height+2*this.tooltipBorder;return new mxPoint(this.container.offsetWidth+this.editorUi.splitSize+10+this.editorUi.container.offsetLeft,Math.min(Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)-c-20,Math.max(0,this.editorUi.container.offsetTop+this.container.offsetTop+a.offsetTop-this.container.scrollTop-c/2+16)))};
-Sidebar.prototype.createTooltip=function(a,b,c,e,d,f,k,h,g,m,l){l=null!=l?l:!0;this.tooltipMouseDown=g;null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.userSelect="none",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),mxEvent.addMouseWheelListener(mxUtils.bind(this,function(a){this.hideTooltip()}),this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),
+Sidebar.prototype.createTooltip=function(a,b,c,e,d,f,h,k,g,m,l){l=null!=l?l:!0;this.tooltipMouseDown=g;null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.userSelect="none",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),mxEvent.addMouseWheelListener(mxUtils.bind(this,function(a){this.hideTooltip()}),this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),
this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setPanning(!1),this.graph2.setEnabled(!1),this.graph2.openLink=mxUtils.bind(this,function(){this.hideTooltip()}),mxEvent.addGestureListeners(this.tooltip,mxUtils.bind(this,function(a){null!=this.tooltipMouseDown&&this.tooltipMouseDown(a);window.setTimeout(mxUtils.bind(this,function(){null!=this.tooltipCloseImage&&
"none"!=this.tooltipCloseImage.style.display||this.hideTooltip()}),0)}),null,mxUtils.bind(this,function(a){this.hideTooltip()})),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),g=document.createElement("img"),g.setAttribute("src",Dialog.prototype.closeImage),g.setAttribute("title",mxResources.get("close")),g.style.position="absolute",g.style.cursor="default",g.style.padding="8px",g.style.right="2px",g.style.top="2px",this.tooltip.appendChild(g),this.tooltipCloseImage=g,mxEvent.addListener(g,
-"click",mxUtils.bind(this,function(a){this.hideTooltip();mxEvent.consume(a)})));this.tooltipCloseImage.style.display=m?"":"none";this.graph2.model.clear();this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder);this.graph2.view.scale=!h&&(c>this.maxTooltipWidth||e>this.maxTooltipHeight)?Math.round(100*Math.min(this.maxTooltipWidth/c,this.maxTooltipHeight/e))/100:1;this.tooltip.style.display="block";this.graph2.labelsVisible=null==f||f;f=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;
-b=this.graph2.cloneCells(b);this.editorUi.insertHandler(b,null,this.graph2.model,l?null:this.editorUi.editor.graph.defaultVertexStyle,l?null:this.editorUi.editor.graph.defaultEdgeStyle,l,!0);this.graph2.addCells(b);mxClient.NO_FO=f;l=this.graph2.getGraphBounds();h&&0<c&&0<e&&(l.width>c||l.height>e)?(c=Math.round(100*Math.min(c/l.width,e/l.height))/100,mxClient.NO_FO?(this.graph2.view.setScale(Math.round(100*Math.min(this.maxTooltipWidth/l.width,this.maxTooltipHeight/l.height))/100),l=this.graph2.getGraphBounds()):
-(this.graph2.view.getDrawPane().ownerSVGElement.style.transform="scale("+c+")",this.graph2.view.getDrawPane().ownerSVGElement.style.transformOrigin="0 0",l.width*=c,l.height*=c)):mxClient.NO_FO||(this.graph2.view.getDrawPane().ownerSVGElement.style.transform="");c=l.width+2*this.tooltipBorder+4;e=l.height+2*this.tooltipBorder;this.tooltip.style.overflow="visible";this.tooltip.style.width=c+"px";h=c;this.tooltipTitles&&null!=d&&0<d.length?(null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),
-this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",this.tooltipTitle.style.position="absolute",this.tooltipTitle.style.paddingTop="6px",this.tooltipTitle.style.bottom="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,d),h=Math.min(this.maxTooltipWidth,Math.max(c,this.tooltipTitle.scrollWidth+
-4)),d=this.tooltipTitle.offsetHeight+10,e+=d,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-d+"px":(e-=6,this.tooltipTitle.style.top=e-d+"px")):null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");h>c&&(this.tooltip.style.width=h+"px");this.tooltip.style.height=e+"px";d=-Math.round(l.x-this.tooltipBorder)+(h>c?(h-c)/2:0);c=-Math.round(l.y-this.tooltipBorder);k=null!=k?k:this.getTooltipOffset(a,l);a=k.x;k=k.y;mxClient.IS_SVG?0!=d||0!=c?this.graph2.view.canvas.setAttribute("transform",
-"translate("+d+","+c+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=d+"px",this.graph2.view.drawPane.style.top=c+"px");this.tooltip.style.position="absolute";this.tooltip.style.left=a+"px";this.tooltip.style.top=k+"px";mxUtils.fit(this.tooltip);this.lastCreated=Date.now()};
-Sidebar.prototype.showTooltip=function(a,b,c,e,d,f){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=a){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var k=mxUtils.bind(this,function(){this.createTooltip(a,b,c,e,d,f)});null!=this.tooltip&&"none"!=this.tooltip.style.display?k():this.thread=window.setTimeout(k,this.tooltipDelay);this.currentElt=a}};
+"click",mxUtils.bind(this,function(a){this.hideTooltip();mxEvent.consume(a)})));this.tooltipCloseImage.style.display=m?"":"none";this.graph2.model.clear();this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder);this.graph2.view.scale=!k&&(c>this.maxTooltipWidth||e>this.maxTooltipHeight)?Math.round(100*Math.min(this.maxTooltipWidth/c,this.maxTooltipHeight/e))/100:1;this.tooltip.style.display="block";this.graph2.labelsVisible=null==f||f;f=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;
+b=this.graph2.cloneCells(b);this.editorUi.insertHandler(b,null,this.graph2.model,l?null:this.editorUi.editor.graph.defaultVertexStyle,l?null:this.editorUi.editor.graph.defaultEdgeStyle,l,!0);this.graph2.addCells(b);mxClient.NO_FO=f;l=this.graph2.getGraphBounds();k&&0<c&&0<e&&(l.width>c||l.height>e)?(c=Math.round(100*Math.min(c/l.width,e/l.height))/100,mxClient.NO_FO?(this.graph2.view.setScale(Math.round(100*Math.min(this.maxTooltipWidth/l.width,this.maxTooltipHeight/l.height))/100),l=this.graph2.getGraphBounds()):
+(this.graph2.view.getDrawPane().ownerSVGElement.style.transform="scale("+c+")",this.graph2.view.getDrawPane().ownerSVGElement.style.transformOrigin="0 0",l.width*=c,l.height*=c)):mxClient.NO_FO||(this.graph2.view.getDrawPane().ownerSVGElement.style.transform="");c=l.width+2*this.tooltipBorder+4;e=l.height+2*this.tooltipBorder;this.tooltip.style.overflow="visible";this.tooltip.style.width=c+"px";k=c;this.tooltipTitles&&null!=d&&0<d.length?(null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),
+this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",this.tooltipTitle.style.position="absolute",this.tooltipTitle.style.paddingTop="6px",this.tooltipTitle.style.bottom="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,d),k=Math.min(this.maxTooltipWidth,Math.max(c,this.tooltipTitle.scrollWidth+
+4)),d=this.tooltipTitle.offsetHeight+10,e+=d,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-d+"px":(e-=6,this.tooltipTitle.style.top=e-d+"px")):null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");k>c&&(this.tooltip.style.width=k+"px");this.tooltip.style.height=e+"px";d=-Math.round(l.x-this.tooltipBorder)+(k>c?(k-c)/2:0);c=-Math.round(l.y-this.tooltipBorder);h=null!=h?h:this.getTooltipOffset(a,l);a=h.x;h=h.y;mxClient.IS_SVG?0!=d||0!=c?this.graph2.view.canvas.setAttribute("transform",
+"translate("+d+","+c+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=d+"px",this.graph2.view.drawPane.style.top=c+"px");this.tooltip.style.position="absolute";this.tooltip.style.left=a+"px";this.tooltip.style.top=h+"px";mxUtils.fit(this.tooltip);this.lastCreated=Date.now()};
+Sidebar.prototype.showTooltip=function(a,b,c,e,d,f){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=a){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var h=mxUtils.bind(this,function(){this.createTooltip(a,b,c,e,d,f)});null!=this.tooltip&&"none"!=this.tooltip.style.display?h():this.thread=window.setTimeout(h,this.tooltipDelay);this.currentElt=a}};
Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);null!=this.tooltip&&(this.tooltip.style.display="none",this.currentElt=null);this.tooltipMouseDown=null};Sidebar.prototype.addDataEntry=function(a,b,c,e,d){return this.addEntry(a,mxUtils.bind(this,function(){return this.createVertexTemplateFromData(d,b,c,e)}))};
Sidebar.prototype.addEntries=function(a){for(var b=0;b<a.length;b++)mxUtils.bind(this,function(a){var b=a.data,c=null!=a.title?a.title:"";null!=a.tags&&(c+=" "+a.tags);null!=b&&0<c.length?this.addEntry(c,mxUtils.bind(this,function(){b=this.editorUi.convertDataUri(b);var c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==a.aspect&&(c+="aspect=fixed;");return this.createVertexTemplate(c+"image="+b,a.w,a.h,"",a.title||"",!1,!1,!0)})):null!=a.xml&&0<c.length&&this.addEntry(c,
mxUtils.bind(this,function(){var b=this.editorUi.stringToCells(Graph.decompress(a.xml));return this.createVertexTemplateFromCells(b,a.w,a.h,a.title||"",!0,!1,!0)}))})(a[b])};Sidebar.prototype.setCurrentSearchEntryLibrary=function(a,b){this.currentSearchEntryLibrary=null!=a?{id:a,lib:b}:null};
-Sidebar.prototype.addEntry=function(a,b){if(null!=this.taglist&&null!=a&&0<a.length){null!=this.currentSearchEntryLibrary&&(b.parentLibraries=[this.currentSearchEntryLibrary]);for(var c=a.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),e=[],d={},f=0;f<c.length;f++){null==d[c[f]]&&(d[c[f]]=!0,e.push(c[f]));var k=c[f].replace(/\.*\d*$/,"");k!=c[f]&&null==d[k]&&(d[k]=!0,e.push(k))}for(f=0;f<e.length;f++)this.addEntryForTag(e[f],b)}return b};
+Sidebar.prototype.addEntry=function(a,b){if(null!=this.taglist&&null!=a&&0<a.length){null!=this.currentSearchEntryLibrary&&(b.parentLibraries=[this.currentSearchEntryLibrary]);for(var c=a.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),e=[],d={},f=0;f<c.length;f++){null==d[c[f]]&&(d[c[f]]=!0,e.push(c[f]));var h=c[f].replace(/\.*\d*$/,"");h!=c[f]&&null==d[h]&&(d[h]=!0,e.push(h))}for(f=0;f<e.length;f++)this.addEntryForTag(e[f],b)}return b};
Sidebar.prototype.addEntryForTag=function(a,b){if(null!=a&&1<a.length){var c=this.taglist[a];"object"!==typeof c&&(c={entries:[]},this.taglist[a]=c);c.entries.push(b)}};
-Sidebar.prototype.searchEntries=function(a,b,c,e,d){if(null!=this.taglist&&null!=a){var f=a.toLowerCase().split(" ");d=new mxDictionary;var k=(c+1)*b;a=[];for(var h=0,g=0;g<f.length;g++)if(0<f[g].length){var m=this.taglist[f[g]],l=new mxDictionary;if(null!=m){var n=m.entries;a=[];for(var p=0;p<n.length;p++)if(m=n[p],0==h==(null==d.get(m))&&(l.put(m,m),a.push(m),g==f.length-1&&a.length==k)){e(a.slice(c*b,k),k,!0,f);return}}else a=[];d=l;h++}d=a.length;e(a.slice(c*b,(c+1)*b),d,!1,f)}else e([],null,
+Sidebar.prototype.searchEntries=function(a,b,c,e,d){if(null!=this.taglist&&null!=a){var f=a.toLowerCase().split(" ");d=new mxDictionary;var h=(c+1)*b;a=[];for(var k=0,g=0;g<f.length;g++)if(0<f[g].length){var m=this.taglist[f[g]],l=new mxDictionary;if(null!=m){var n=m.entries;a=[];for(var p=0;p<n.length;p++)if(m=n[p],0==k==(null==d.get(m))&&(l.put(m,m),a.push(m),g==f.length-1&&a.length==h)){e(a.slice(c*b,h),h,!0,f);return}}else a=[];d=l;k++}d=a.length;e(a.slice(c*b,(c+1)*b),d,!1,f)}else e([],null,
null,f)};Sidebar.prototype.filterTags=function(a){if(null!=a){a=a.split(" ");for(var b=[],c={},e=0;e<a.length;e++)null==c[a[e]]&&(c[a[e]]="1",b.push(a[e]));return b.join(" ")}return null};Sidebar.prototype.cloneCell=function(a,b){var c=a.clone();null!=b&&(c.value=b);return c};Sidebar.prototype.showPopupMenuForEntry=function(a,b,c){};
Sidebar.prototype.addSearchPalette=function(a){var b=document.createElement("div");b.style.visibility="hidden";this.container.appendChild(b);var c=document.createElement("div");c.className="geSidebar";c.style.boxSizing="border-box";c.style.overflow="hidden";c.style.width="100%";c.style.padding="8px";c.style.paddingTop="14px";c.style.paddingBottom="0px";a||(c.style.display="none");var e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.textOverflow="clip";e.style.paddingBottom="8px";
e.style.cursor="default";var d=document.createElement("input");d.setAttribute("placeholder",mxResources.get("searchShapes"));d.setAttribute("type","text");d.style.fontSize="12px";d.style.overflow="hidden";d.style.boxSizing="border-box";d.style.border="solid 1px #d5d5d5";d.style.borderRadius="4px";d.style.width="100%";d.style.outline="none";d.style.padding="6px";d.style.paddingRight="20px";e.appendChild(d);var f=document.createElement("img");f.setAttribute("src",Sidebar.prototype.searchImage);f.setAttribute("title",
-mxResources.get("search"));f.style.position="relative";f.style.left="-18px";f.style.top="1px";f.style.background="url('"+this.editorUi.editor.transparentImage+"')";var k;e.appendChild(f);c.appendChild(e);var h=document.createElement("center"),g=mxUtils.button(mxResources.get("moreResults"),function(){k()});g.style.display="none";g.style.lineHeight="normal";g.style.fontSize="12px";g.style.padding="6px 12px 6px 12px";g.style.marginTop="4px";g.style.marginBottom="8px";h.style.paddingTop="4px";h.style.paddingBottom=
-"4px";h.appendChild(g);c.appendChild(h);var m="",l=!1,n=!1,p=0,r={},u=12,v=mxUtils.bind(this,function(){l=!1;this.currentSearch=null;for(var a=c.firstChild;null!=a;){var b=a.nextSibling;a!=e&&a!=h&&a.parentNode.removeChild(a);a=b}});mxEvent.addListener(f,"click",function(){f.getAttribute("src")==Dialog.prototype.closeImage&&(f.setAttribute("src",Sidebar.prototype.searchImage),f.setAttribute("title",mxResources.get("search")),g.style.display="none",m=d.value="",v());d.focus()});k=mxUtils.bind(this,
-function(){u=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=d.value){if(null!=h.parentNode&&(m!=d.value&&(v(),m=d.value,r={},n=!1,p=0),!l&&!n)){g.setAttribute("disabled","true");g.style.display="";g.style.cursor="wait";g.innerHTML=mxResources.get("loading")+"...";l=!0;var a={};this.currentSearch=a;this.searchEntries(m,u,p,mxUtils.bind(this,function(b,d,e,f){if(this.currentSearch==a){b=null!=b?b:[];l=!1;p++;this.insertSearchHint(c,m,u,p,b,d,e,f);
-0==b.length&&1==p&&(m="");null!=h.parentNode&&h.parentNode.removeChild(h);for(d=0;d<b.length;d++)mxUtils.bind(this,function(a){try{var b=a();null==r[b.innerHTML]?(r[b.innerHTML]=null!=a.parentLibraries?a.parentLibraries.slice():[],c.appendChild(b)):null!=a.parentLibraries&&(r[b.innerHTML]=r[b.innerHTML].concat(a.parentLibraries));mxEvent.addGestureListeners(b,null,null,mxUtils.bind(this,function(a){var c=r[b.innerHTML];mxEvent.isPopupTrigger(a)&&this.showPopupMenuForEntry(b,c,a)}));mxEvent.disableContextMenu(b)}catch(G){}})(b[d]);
-e?(g.removeAttribute("disabled"),g.innerHTML=mxResources.get("moreResults")):(g.innerHTML=mxResources.get("reset"),g.style.display="none",n=!0);g.style.cursor="";c.appendChild(h)}}),mxUtils.bind(this,function(){g.style.cursor=""}))}}else v(),m=d.value="",r={},g.style.display="none",n=!1,d.focus()});this.searchShapes=function(a){d.value=a;k()};mxEvent.addListener(d,"keydown",mxUtils.bind(this,function(a){13==a.keyCode&&(k(),mxEvent.consume(a))}));mxEvent.addListener(d,"keyup",mxUtils.bind(this,function(a){""==
+mxResources.get("search"));f.style.position="relative";f.style.left="-18px";f.style.top="1px";f.style.background="url('"+this.editorUi.editor.transparentImage+"')";var h;e.appendChild(f);c.appendChild(e);var k=document.createElement("center"),g=mxUtils.button(mxResources.get("moreResults"),function(){h()});g.style.display="none";g.style.lineHeight="normal";g.style.fontSize="12px";g.style.padding="6px 12px 6px 12px";g.style.marginTop="4px";g.style.marginBottom="8px";k.style.paddingTop="4px";k.style.paddingBottom=
+"4px";k.appendChild(g);c.appendChild(k);var m="",l=!1,n=!1,p=0,r={},u=12,v=mxUtils.bind(this,function(){l=!1;this.currentSearch=null;for(var a=c.firstChild;null!=a;){var b=a.nextSibling;a!=e&&a!=k&&a.parentNode.removeChild(a);a=b}});mxEvent.addListener(f,"click",function(){f.getAttribute("src")==Dialog.prototype.closeImage&&(f.setAttribute("src",Sidebar.prototype.searchImage),f.setAttribute("title",mxResources.get("search")),g.style.display="none",m=d.value="",v());d.focus()});h=mxUtils.bind(this,
+function(){u=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=d.value){if(null!=k.parentNode&&(m!=d.value&&(v(),m=d.value,r={},n=!1,p=0),!l&&!n)){g.setAttribute("disabled","true");g.style.display="";g.style.cursor="wait";g.innerHTML=mxResources.get("loading")+"...";l=!0;var a={};this.currentSearch=a;this.searchEntries(m,u,p,mxUtils.bind(this,function(b,d,e,f){if(this.currentSearch==a){b=null!=b?b:[];l=!1;p++;this.insertSearchHint(c,m,u,p,b,d,e,f);
+0==b.length&&1==p&&(m="");null!=k.parentNode&&k.parentNode.removeChild(k);for(d=0;d<b.length;d++)mxUtils.bind(this,function(a){try{var b=a();null==r[b.innerHTML]?(r[b.innerHTML]=null!=a.parentLibraries?a.parentLibraries.slice():[],c.appendChild(b)):null!=a.parentLibraries&&(r[b.innerHTML]=r[b.innerHTML].concat(a.parentLibraries));mxEvent.addGestureListeners(b,null,null,mxUtils.bind(this,function(a){var c=r[b.innerHTML];mxEvent.isPopupTrigger(a)&&this.showPopupMenuForEntry(b,c,a)}));mxEvent.disableContextMenu(b)}catch(G){}})(b[d]);
+e?(g.removeAttribute("disabled"),g.innerHTML=mxResources.get("moreResults")):(g.innerHTML=mxResources.get("reset"),g.style.display="none",n=!0);g.style.cursor="";c.appendChild(k)}}),mxUtils.bind(this,function(){g.style.cursor=""}))}}else v(),m=d.value="",r={},g.style.display="none",n=!1,d.focus()});this.searchShapes=function(a){d.value=a;h()};mxEvent.addListener(d,"keydown",mxUtils.bind(this,function(a){13==a.keyCode&&(h(),mxEvent.consume(a))}));mxEvent.addListener(d,"keyup",mxUtils.bind(this,function(a){""==
d.value?(f.setAttribute("src",Sidebar.prototype.searchImage),f.setAttribute("title",mxResources.get("search"))):(f.setAttribute("src",Dialog.prototype.closeImage),f.setAttribute("title",mxResources.get("reset")));""==d.value?(n=!0,g.style.display="none"):d.value!=m?(g.style.display="none",n=!1):l||(g.style.display=n?"none":"")}));mxEvent.addListener(d,"mousedown",function(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0});mxEvent.addListener(d,"selectstart",function(a){a.stopPropagation&&
a.stopPropagation();a.cancelBubble=!0});a=document.createElement("div");a.appendChild(c);this.container.appendChild(a);this.palettes.search=[b,a]};
-Sidebar.prototype.insertSearchHint=function(a,b,c,e,d,f,k,h){0==d.length&&1==e&&(c=document.createElement("div"),c.className="geTitle",c.style.cssText="background-color:transparent;border-color:transparent;color:gray;padding:6px 0px 0px 0px !important;margin:4px 8px 4px 8px;text-align:center;cursor:default !important",mxUtils.write(c,mxResources.get("noResultsFor",[b])),a.appendChild(c))};
+Sidebar.prototype.insertSearchHint=function(a,b,c,e,d,f,h,k){0==d.length&&1==e&&(c=document.createElement("div"),c.className="geTitle",c.style.cssText="background-color:transparent;border-color:transparent;color:gray;padding:6px 0px 0px 0px !important;margin:4px 8px 4px 8px;text-align:center;cursor:default !important",mxUtils.write(c,mxResources.get("noResultsFor",[b])),a.appendChild(c))};
Sidebar.prototype.addGeneralPalette=function(a){this.setCurrentSearchEntryLibrary("general","general");var b=this,c=parseInt(this.editorUi.editor.graph.defaultVertexStyle.fontSize),c=isNaN(c)?"":"fontSize="+Math.min(16,c)+";",e=new mxCell("List Item",new mxGeometry(0,0,80,30),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;"+c);e.vertex=!0;c=[this.createVertexTemplateEntry("rounded=0;whiteSpace=wrap;html=1;",
120,60,"","Rectangle",null,null,"rect rectangle box"),this.createVertexTemplateEntry("rounded=1;whiteSpace=wrap;html=1;",120,60,"","Rounded Rectangle",null,null,"rounded rect rectangle box"),this.createVertexTemplateEntry("text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",60,30,"Text","Text",null,null,"text textbox textarea label"),this.createVertexTemplateEntry("text;html=1;strokeColor=none;fillColor=none;spacing=5;spacingTop=-20;whiteSpace=wrap;overflow=hidden;rounded=0;",
190,120,"<h1>Heading</h1><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>","Textbox",null,null,"text textbox textarea"),this.createVertexTemplateEntry("ellipse;whiteSpace=wrap;html=1;",120,80,"","Ellipse",null,null,"oval ellipse state"),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;aspect=fixed;",80,80,"","Square",null,null,"square"),this.createVertexTemplateEntry("ellipse;whiteSpace=wrap;html=1;aspect=fixed;",
@@ -2497,100 +2504,100 @@ a.geometry.setTerminalPoint(new mxPoint(0,0),!0);a.geometry.setTerminalPoint(new
0,"Use","Dependency",null,"uml dependency use"),this.createEdgeTemplateEntry("endArrow=block;endSize=16;endFill=0;html=1;",160,0,"Extends","Generalization",null,"uml generalization extend"),this.createEdgeTemplateEntry("endArrow=block;startArrow=block;endFill=1;startFill=1;html=1;",160,0,"","Association 2",null,"uml association"),this.createEdgeTemplateEntry("endArrow=open;startArrow=circlePlus;endFill=0;startFill=0;endSize=8;html=1;",160,0,"","Inner Class",null,"uml inner class"),this.createEdgeTemplateEntry("endArrow=open;startArrow=cross;endFill=0;startFill=0;endSize=8;startSize=10;html=1;",
160,0,"","Terminate",null,"uml terminate"),this.createEdgeTemplateEntry("endArrow=block;dashed=1;endFill=0;endSize=12;html=1;",160,0,"","Implementation",null,"uml realization implementation"),this.createEdgeTemplateEntry("endArrow=diamondThin;endFill=0;endSize=24;html=1;",160,0,"","Aggregation 2",null,"uml aggregation"),this.createEdgeTemplateEntry("endArrow=diamondThin;endFill=1;endSize=24;html=1;",160,0,"","Composition 2",null,"uml composition"),this.createEdgeTemplateEntry("endArrow=open;endFill=1;endSize=12;html=1;",
160,0,"","Association 3",null,"uml association")];this.addPaletteFunctions("uml",mxResources.get("uml"),a||!1,d);this.setCurrentSearchEntryLibrary()};Sidebar.prototype.createTitle=function(a){var b=document.createElement("a");b.setAttribute("title",mxResources.get("sidebarTooltip"));b.className="geTitle";mxUtils.write(b,a);return b};
-Sidebar.prototype.createThumb=function(a,b,c,e,d,f,k){this.graph.labelsVisible=null==f||f;f=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;this.graph.view.scaleAndTranslate(1,0,0);this.graph.addCells(a);a=this.graph.getGraphBounds();var h=Math.floor(100*Math.min((b-2*this.thumbBorder)/a.width,(c-2*this.thumbBorder)/a.height))/100;this.graph.view.scaleAndTranslate(h,Math.floor((b-a.width*h)/2/h-a.x),Math.floor((c-a.height*h)/2/h-a.y));this.graph.dialect!=mxConstants.DIALECT_SVG||
-mxClient.NO_FO||null==this.graph.view.getCanvas().ownerSVGElement?(h=this.graph.container.cloneNode(!1),h.innerHTML=this.graph.container.innerHTML):h=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0);this.graph.getModel().clear();mxClient.NO_FO=f;h.style.position="relative";h.style.overflow="hidden";h.style.left=this.thumbBorder+"px";h.style.top=this.thumbBorder+"px";h.style.width=b+"px";h.style.height=c+"px";h.style.visibility="";h.style.minWidth="";h.style.minHeight="";e.appendChild(h);
-this.sidebarTitles&&null!=d&&0!=k&&(e.style.height=this.thumbHeight+0+this.sidebarTitleSize+8+"px",b=document.createElement("div"),b.style.color=Editor.isDarkMode()?"#A0A0A0":"#303030",b.style.fontSize=this.sidebarTitleSize+"px",b.style.textAlign="center",b.style.whiteSpace="nowrap",b.style.overflow="hidden",b.style.textOverflow="ellipsis",mxClient.IS_IE&&(b.style.height=this.sidebarTitleSize+12+"px"),b.style.paddingTop="4px",mxUtils.write(b,d),e.appendChild(b));return a};
+Sidebar.prototype.createThumb=function(a,b,c,e,d,f,h){this.graph.labelsVisible=null==f||f;f=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;this.graph.view.scaleAndTranslate(1,0,0);this.graph.addCells(a);a=this.graph.getGraphBounds();var k=Math.floor(100*Math.min((b-2*this.thumbBorder)/a.width,(c-2*this.thumbBorder)/a.height))/100;this.graph.view.scaleAndTranslate(k,Math.floor((b-a.width*k)/2/k-a.x),Math.floor((c-a.height*k)/2/k-a.y));this.graph.dialect!=mxConstants.DIALECT_SVG||
+mxClient.NO_FO||null==this.graph.view.getCanvas().ownerSVGElement?(k=this.graph.container.cloneNode(!1),k.innerHTML=this.graph.container.innerHTML):k=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0);this.graph.getModel().clear();mxClient.NO_FO=f;k.style.position="relative";k.style.overflow="hidden";k.style.left=this.thumbBorder+"px";k.style.top=this.thumbBorder+"px";k.style.width=b+"px";k.style.height=c+"px";k.style.visibility="";k.style.minWidth="";k.style.minHeight="";e.appendChild(k);
+this.sidebarTitles&&null!=d&&0!=h&&(e.style.height=this.thumbHeight+0+this.sidebarTitleSize+8+"px",b=document.createElement("div"),b.style.color=Editor.isDarkMode()?"#A0A0A0":"#303030",b.style.fontSize=this.sidebarTitleSize+"px",b.style.textAlign="center",b.style.whiteSpace="nowrap",b.style.overflow="hidden",b.style.textOverflow="ellipsis",mxClient.IS_IE&&(b.style.height=this.sidebarTitleSize+12+"px"),b.style.paddingTop="4px",mxUtils.write(b,d),e.appendChild(b));return a};
Sidebar.prototype.createSection=function(a){return mxUtils.bind(this,function(){var b=document.createElement("div");b.setAttribute("title",a);b.style.textOverflow="ellipsis";b.style.whiteSpace="nowrap";b.style.textAlign="center";b.style.overflow="hidden";b.style.width="100%";b.style.padding="14px 0";mxUtils.write(b,a);return b})};
-Sidebar.prototype.createItem=function(a,b,c,e,d,f,k,h){h=null!=h?h:!0;var g=document.createElement("a");g.className="geItem";g.style.overflow="hidden";var m=2*this.thumbBorder;g.style.width=this.thumbWidth+m+"px";g.style.height=this.thumbHeight+m+"px";g.style.padding=this.thumbPadding+"px";mxEvent.addListener(g,"click",function(a){mxEvent.consume(a)});m=a;a=this.graph.cloneCells(a);this.editorUi.insertHandler(m,null,this.graph.model,this.editorUi.editor.graph.defaultVertexStyle,this.editorUi.editor.graph.defaultEdgeStyle,
-!0,!0);this.createThumb(m,this.thumbWidth,this.thumbHeight,g,b,c,e,d,f);var l=new mxRectangle(0,0,d,f);1<a.length||a[0].vertex?(e=this.createDragSource(g,this.createDropHandler(a,!0,k,l),this.createDragPreview(d,f),a,l),this.addClickHandler(g,e,a),e.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})):null!=a[0]&&a[0].edge&&(e=this.createDragSource(g,this.createDropHandler(a,!1,k,l),this.createDragPreview(d,f),a,l),this.addClickHandler(g,e,a));
-!mxClient.IS_IOS&&h&&mxEvent.addGestureListeners(g,null,mxUtils.bind(this,function(d){mxEvent.isMouseEvent(d)&&this.showTooltip(g,a,l.width,l.height,b,c)}));return g};
-Sidebar.prototype.updateShapes=function(a,b){var c=this.editorUi.editor.graph,e=c.getCellStyle(a),d=[];c.model.beginUpdate();try{for(var f=c.getModel().getStyle(a),k="shadow dashed dashPattern fontFamily fontSize fontColor align startFill startSize endFill endSize strokeColor strokeWidth fillColor gradientColor html part noEdgeStyle edgeStyle elbow childLayout recursiveResize container collapsible connectable comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),h=
-0;h<b.length;h++){var g=b[h];if(c.getModel().isVertex(g)==c.getModel().isVertex(a)||c.getModel().isEdge(g)==c.getModel().isEdge(a)){var m=c.getCurrentCellStyle(b[h]);c.getModel().setStyle(g,f);if("1"==mxUtils.getValue(m,"composite","0"))for(var l=c.model.getChildCount(g);0<=l;l--)c.model.remove(c.model.getChildAt(g,l));"umlLifeline"==m[mxConstants.STYLE_SHAPE]&&"umlLifeline"!=e[mxConstants.STYLE_SHAPE]&&(c.setCellStyles(mxConstants.STYLE_SHAPE,"umlLifeline",[g]),c.setCellStyles("participant",e[mxConstants.STYLE_SHAPE],
-[g]));for(l=0;l<k.length;l++){var n=m[k[l]];null!=n&&c.setCellStyles(k[l],n,[g])}d.push(g)}}}finally{c.model.endUpdate()}return d};
-Sidebar.prototype.createDropHandler=function(a,b,c,e){c=null!=c?c:!0;return mxUtils.bind(this,function(d,f,k,h,g,m){for(m=m?null:mxEvent.isTouchEvent(f)||mxEvent.isPenEvent(f)?document.elementFromPoint(mxEvent.getClientX(f),mxEvent.getClientY(f)):mxEvent.getSource(f);null!=m&&m!=this.container;)m=m.parentNode;if(null==m&&d.isEnabled()){a=d.getImportableCells(a);if(0<a.length){d.stopEditing();m=null==k||mxEvent.isAltDown(f)?!1:d.isValidDropTarget(k,a,f);var l=null;null==k||m||(k=null);if(!d.isCellLocked(k||
-d.getDefaultParent())){d.model.beginUpdate();try{h=Math.round(h);g=Math.round(g);if(b&&d.isSplitTarget(k,a,f)){var n=d.view.scale,p=d.view.translate,r=(h+p.x)*n,u=(g+p.y)*n,v=d.cloneCells(a);d.splitEdge(k,v,null,h-e.width/2,g-e.height/2,r,u);l=v}else 0<a.length&&(l=d.importCells(a,h,g,k));if(null!=d.layoutManager){var t=d.layoutManager.getLayout(k);if(null!=t)for(n=d.view.scale,p=d.view.translate,r=(h+p.x)*n,u=(g+p.y)*n,k=0;k<l.length;k++)t.moveCell(l[k],r,u)}!c||null!=f&&mxEvent.isShiftDown(f)||
+Sidebar.prototype.createItem=function(a,b,c,e,d,f,h,k){k=null!=k?k:!0;var g=document.createElement("a");g.className="geItem";g.style.overflow="hidden";var m=2*this.thumbBorder;g.style.width=this.thumbWidth+m+"px";g.style.height=this.thumbHeight+m+"px";g.style.padding=this.thumbPadding+"px";mxEvent.addListener(g,"click",function(a){mxEvent.consume(a)});m=a;a=this.graph.cloneCells(a);this.editorUi.insertHandler(m,null,this.graph.model,this.editorUi.editor.graph.defaultVertexStyle,this.editorUi.editor.graph.defaultEdgeStyle,
+!0,!0);this.createThumb(m,this.thumbWidth,this.thumbHeight,g,b,c,e,d,f);var l=new mxRectangle(0,0,d,f);1<a.length||a[0].vertex?(e=this.createDragSource(g,this.createDropHandler(a,!0,h,l),this.createDragPreview(d,f),a,l),this.addClickHandler(g,e,a),e.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})):null!=a[0]&&a[0].edge&&(e=this.createDragSource(g,this.createDropHandler(a,!1,h,l),this.createDragPreview(d,f),a,l),this.addClickHandler(g,e,a));
+!mxClient.IS_IOS&&k&&mxEvent.addGestureListeners(g,null,mxUtils.bind(this,function(d){mxEvent.isMouseEvent(d)&&this.showTooltip(g,a,l.width,l.height,b,c)}));return g};
+Sidebar.prototype.updateShapes=function(a,b){var c=this.editorUi.editor.graph,e=c.getCellStyle(a),d=[];c.model.beginUpdate();try{for(var f=c.getModel().getStyle(a),h="shadow dashed dashPattern fontFamily fontSize fontColor align startFill startSize endFill endSize strokeColor strokeWidth fillColor gradientColor html part noEdgeStyle edgeStyle elbow childLayout recursiveResize container collapsible connectable comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),k=
+0;k<b.length;k++){var g=b[k];if(c.getModel().isVertex(g)==c.getModel().isVertex(a)||c.getModel().isEdge(g)==c.getModel().isEdge(a)){var m=c.getCurrentCellStyle(b[k]);c.getModel().setStyle(g,f);if("1"==mxUtils.getValue(m,"composite","0"))for(var l=c.model.getChildCount(g);0<=l;l--)c.model.remove(c.model.getChildAt(g,l));"umlLifeline"==m[mxConstants.STYLE_SHAPE]&&"umlLifeline"!=e[mxConstants.STYLE_SHAPE]&&(c.setCellStyles(mxConstants.STYLE_SHAPE,"umlLifeline",[g]),c.setCellStyles("participant",e[mxConstants.STYLE_SHAPE],
+[g]));for(l=0;l<h.length;l++){var n=m[h[l]];null!=n&&c.setCellStyles(h[l],n,[g])}d.push(g)}}}finally{c.model.endUpdate()}return d};
+Sidebar.prototype.createDropHandler=function(a,b,c,e){c=null!=c?c:!0;return mxUtils.bind(this,function(d,f,h,k,g,m){for(m=m?null:mxEvent.isTouchEvent(f)||mxEvent.isPenEvent(f)?document.elementFromPoint(mxEvent.getClientX(f),mxEvent.getClientY(f)):mxEvent.getSource(f);null!=m&&m!=this.container;)m=m.parentNode;if(null==m&&d.isEnabled()){a=d.getImportableCells(a);if(0<a.length){d.stopEditing();m=null==h||mxEvent.isAltDown(f)?!1:d.isValidDropTarget(h,a,f);var l=null;null==h||m||(h=null);if(!d.isCellLocked(h||
+d.getDefaultParent())){d.model.beginUpdate();try{k=Math.round(k);g=Math.round(g);if(b&&d.isSplitTarget(h,a,f)){var n=d.view.scale,p=d.view.translate,r=(k+p.x)*n,u=(g+p.y)*n,v=d.cloneCells(a);d.splitEdge(h,v,null,k-e.width/2,g-e.height/2,r,u);l=v}else 0<a.length&&(l=d.importCells(a,k,g,h));if(null!=d.layoutManager){var t=d.layoutManager.getLayout(h);if(null!=t)for(n=d.view.scale,p=d.view.translate,r=(k+p.x)*n,u=(g+p.y)*n,h=0;h<l.length;h++)t.moveCell(l[h],r,u)}!c||null!=f&&mxEvent.isShiftDown(f)||
d.fireEvent(new mxEventObject("cellsInserted","cells",l))}catch(x){this.editorUi.handleError(x)}finally{d.model.endUpdate()}null!=l&&0<l.length&&(d.scrollCellToVisible(l[0]),d.setSelectionCells(l));d.editAfterInsert&&null!=f&&mxEvent.isMouseEvent(f)&&null!=l&&1==l.length&&window.setTimeout(function(){d.startEditing(l[0])},0)}}mxEvent.consume(f)}})};
Sidebar.prototype.createDragPreview=function(a,b){var c=document.createElement("div");c.className="geDragPreview";c.style.width=a+"px";c.style.height=b+"px";return c};
-Sidebar.prototype.dropAndConnect=function(a,b,c,e,d){var f=this.getDropAndConnectGeometry(a,b[e],c,b),k=[];if(null!=f){var h=this.editorUi.editor.graph,g=null;h.model.beginUpdate();try{var m=h.getCellGeometry(a),l=h.getCellGeometry(b[e]),n=h.model.getParent(a),p=!0;if(null!=h.layoutManager){var r=h.layoutManager.getLayout(n);null!=r&&r.constructor==mxStackLayout&&(p=!1)}var k=h.model.isEdge(a)?null:h.view.getState(n),u=r=0;if(null!=k){var v=k.origin,r=v.x,u=v.y,t=f.getTerminalPoint(!1);null!=t&&(t.x+=
-v.x,t.y+=v.y)}var x=!h.isTableRow(a)&&!h.isTableCell(a)&&(h.model.isEdge(a)||null!=m&&!m.relative&&p),w=h.getCellAt((f.x+r+h.view.translate.x)*h.view.scale,(f.y+u+h.view.translate.y)*h.view.scale,null,null,null,function(a,b,c){return!h.isContainer(a.cell)});if(null!=w&&w!=n)k=h.view.getState(w),null!=k&&(v=k.origin,n=w,x=!0,h.model.isEdge(a)||(f.x-=v.x-r,f.y-=v.y-u));else if(!p||h.isTableRow(a)||h.isTableCell(a))f.x+=r,f.y+=u;r=l.x;u=l.y;h.model.isEdge(b[e])&&(u=r=0);k=b=h.importCells(b,f.x-(x?r:
-0),f.y-(x?u:0),x?n:null);if(h.model.isEdge(a))h.model.setTerminal(a,b[e],c==mxConstants.DIRECTION_NORTH);else if(h.model.isEdge(b[e])){h.model.setTerminal(b[e],a,!0);var y=h.getCellGeometry(b[e]);y.points=null;if(null!=y.getTerminalPoint(!1))y.setTerminalPoint(f.getTerminalPoint(!1),!1);else if(x&&h.model.isVertex(n)){var F=h.view.getState(n),v=F.cell!=h.view.currentRoot?F.origin:new mxPoint(0,0);h.cellsMoved(b,v.x,v.y,null,null,!0)}}else l=h.getCellGeometry(b[e]),r=f.x-Math.round(l.x),u=f.y-Math.round(l.y),
-f.x=Math.round(l.x),f.y=Math.round(l.y),h.model.setGeometry(b[e],f),h.cellsMoved(b,r,u,null,null,!0),k=b.slice(),g=1==k.length?k[0]:null,b.push(h.insertEdge(null,null,"",a,b[e],h.createCurrentEdgeStyle()));null!=d&&mxEvent.isShiftDown(d)||h.fireEvent(new mxEventObject("cellsInserted","cells",b))}catch(I){this.editorUi.handleError(I)}finally{h.model.endUpdate()}h.editAfterInsert&&null!=d&&mxEvent.isMouseEvent(d)&&null!=g&&window.setTimeout(function(){h.startEditing(g)},0)}return k};
-Sidebar.prototype.getDropAndConnectGeometry=function(a,b,c,e){var d=this.editorUi.editor.graph,f=d.view,k=1<e.length,h=d.getCellGeometry(a);e=d.getCellGeometry(b);null!=h&&null!=e&&(e=e.clone(),d.model.isEdge(a)?(a=d.view.getState(a),h=a.absolutePoints,b=h[0],d=h[h.length-1],c==mxConstants.DIRECTION_NORTH?(e.x=b.x/f.scale-f.translate.x-e.width/2,e.y=b.y/f.scale-f.translate.y-e.height/2):(e.x=d.x/f.scale-f.translate.x-e.width/2,e.y=d.y/f.scale-f.translate.y-e.height/2)):(h.relative&&(a=d.view.getState(a),
-h=h.clone(),h.x=(a.x-f.translate.x)/f.scale,h.y=(a.y-f.translate.y)/f.scale),f=d.defaultEdgeLength,d.model.isEdge(b)&&null!=e.getTerminalPoint(!0)&&null!=e.getTerminalPoint(!1)?(b=e.getTerminalPoint(!0),d=e.getTerminalPoint(!1),f=d.x-b.x,b=d.y-b.y,f=Math.sqrt(f*f+b*b),e.x=h.getCenterX(),e.y=h.getCenterY(),e.width=1,e.height=1,c==mxConstants.DIRECTION_NORTH?(e.height=f,e.y=h.y-f,e.setTerminalPoint(new mxPoint(e.x,e.y),!1)):c==mxConstants.DIRECTION_EAST?(e.width=f,e.x=h.x+h.width,e.setTerminalPoint(new mxPoint(e.x+
-e.width,e.y),!1)):c==mxConstants.DIRECTION_SOUTH?(e.height=f,e.y=h.y+h.height,e.setTerminalPoint(new mxPoint(e.x,e.y+e.height),!1)):c==mxConstants.DIRECTION_WEST&&(e.width=f,e.x=h.x-f,e.setTerminalPoint(new mxPoint(e.x,e.y),!1))):(!k&&45<e.width&&45<e.height&&45<h.width&&45<h.height&&(e.width*=h.height/e.height,e.height=h.height),e.x=h.x+h.width/2-e.width/2,e.y=h.y+h.height/2-e.height/2,c==mxConstants.DIRECTION_NORTH?e.y=e.y-h.height/2-e.height/2-f:c==mxConstants.DIRECTION_EAST?e.x=e.x+h.width/2+
-e.width/2+f:c==mxConstants.DIRECTION_SOUTH?e.y=e.y+h.height/2+e.height/2+f:c==mxConstants.DIRECTION_WEST&&(e.x=e.x-h.width/2-e.width/2-f),d.model.isEdge(b)&&null!=e.getTerminalPoint(!0)&&null!=b.getTerminal(!1)&&(h=d.getCellGeometry(b.getTerminal(!1)),null!=h&&(c==mxConstants.DIRECTION_NORTH?(e.x-=h.getCenterX(),e.y-=h.getCenterY()+h.height/2):c==mxConstants.DIRECTION_EAST?(e.x-=h.getCenterX()-h.width/2,e.y-=h.getCenterY()):c==mxConstants.DIRECTION_SOUTH?(e.x-=h.getCenterX(),e.y-=h.getCenterY()-h.height/
-2):c==mxConstants.DIRECTION_WEST&&(e.x-=h.getCenterX()+h.width/2,e.y-=h.getCenterY()))))));return e};Sidebar.prototype.isDropStyleEnabled=function(a,b){var c=!0;if(null!=b&&1==a.length){var e=this.graph.getCellStyle(a[b]);null!=e&&(c=mxUtils.getValue(e,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE)}return c};
+Sidebar.prototype.dropAndConnect=function(a,b,c,e,d){var f=this.getDropAndConnectGeometry(a,b[e],c,b),h=[];if(null!=f){var k=this.editorUi.editor.graph,g=null;k.model.beginUpdate();try{var m=k.getCellGeometry(a),l=k.getCellGeometry(b[e]),n=k.model.getParent(a),p=!0;if(null!=k.layoutManager){var r=k.layoutManager.getLayout(n);null!=r&&r.constructor==mxStackLayout&&(p=!1)}var h=k.model.isEdge(a)?null:k.view.getState(n),u=r=0;if(null!=h){var v=h.origin,r=v.x,u=v.y,t=f.getTerminalPoint(!1);null!=t&&(t.x+=
+v.x,t.y+=v.y)}var x=!k.isTableRow(a)&&!k.isTableCell(a)&&(k.model.isEdge(a)||null!=m&&!m.relative&&p),w=k.getCellAt((f.x+r+k.view.translate.x)*k.view.scale,(f.y+u+k.view.translate.y)*k.view.scale,null,null,null,function(a,b,c){return!k.isContainer(a.cell)});if(null!=w&&w!=n)h=k.view.getState(w),null!=h&&(v=h.origin,n=w,x=!0,k.model.isEdge(a)||(f.x-=v.x-r,f.y-=v.y-u));else if(!p||k.isTableRow(a)||k.isTableCell(a))f.x+=r,f.y+=u;r=l.x;u=l.y;k.model.isEdge(b[e])&&(u=r=0);h=b=k.importCells(b,f.x-(x?r:
+0),f.y-(x?u:0),x?n:null);if(k.model.isEdge(a))k.model.setTerminal(a,b[e],c==mxConstants.DIRECTION_NORTH);else if(k.model.isEdge(b[e])){k.model.setTerminal(b[e],a,!0);var y=k.getCellGeometry(b[e]);y.points=null;if(null!=y.getTerminalPoint(!1))y.setTerminalPoint(f.getTerminalPoint(!1),!1);else if(x&&k.model.isVertex(n)){var F=k.view.getState(n),v=F.cell!=k.view.currentRoot?F.origin:new mxPoint(0,0);k.cellsMoved(b,v.x,v.y,null,null,!0)}}else l=k.getCellGeometry(b[e]),r=f.x-Math.round(l.x),u=f.y-Math.round(l.y),
+f.x=Math.round(l.x),f.y=Math.round(l.y),k.model.setGeometry(b[e],f),k.cellsMoved(b,r,u,null,null,!0),h=b.slice(),g=1==h.length?h[0]:null,b.push(k.insertEdge(null,null,"",a,b[e],k.createCurrentEdgeStyle()));null!=d&&mxEvent.isShiftDown(d)||k.fireEvent(new mxEventObject("cellsInserted","cells",b))}catch(I){this.editorUi.handleError(I)}finally{k.model.endUpdate()}k.editAfterInsert&&null!=d&&mxEvent.isMouseEvent(d)&&null!=g&&window.setTimeout(function(){k.startEditing(g)},0)}return h};
+Sidebar.prototype.getDropAndConnectGeometry=function(a,b,c,e){var d=this.editorUi.editor.graph,f=d.view,h=1<e.length,k=d.getCellGeometry(a);e=d.getCellGeometry(b);null!=k&&null!=e&&(e=e.clone(),d.model.isEdge(a)?(a=d.view.getState(a),k=a.absolutePoints,b=k[0],d=k[k.length-1],c==mxConstants.DIRECTION_NORTH?(e.x=b.x/f.scale-f.translate.x-e.width/2,e.y=b.y/f.scale-f.translate.y-e.height/2):(e.x=d.x/f.scale-f.translate.x-e.width/2,e.y=d.y/f.scale-f.translate.y-e.height/2)):(k.relative&&(a=d.view.getState(a),
+k=k.clone(),k.x=(a.x-f.translate.x)/f.scale,k.y=(a.y-f.translate.y)/f.scale),f=d.defaultEdgeLength,d.model.isEdge(b)&&null!=e.getTerminalPoint(!0)&&null!=e.getTerminalPoint(!1)?(b=e.getTerminalPoint(!0),d=e.getTerminalPoint(!1),f=d.x-b.x,b=d.y-b.y,f=Math.sqrt(f*f+b*b),e.x=k.getCenterX(),e.y=k.getCenterY(),e.width=1,e.height=1,c==mxConstants.DIRECTION_NORTH?(e.height=f,e.y=k.y-f,e.setTerminalPoint(new mxPoint(e.x,e.y),!1)):c==mxConstants.DIRECTION_EAST?(e.width=f,e.x=k.x+k.width,e.setTerminalPoint(new mxPoint(e.x+
+e.width,e.y),!1)):c==mxConstants.DIRECTION_SOUTH?(e.height=f,e.y=k.y+k.height,e.setTerminalPoint(new mxPoint(e.x,e.y+e.height),!1)):c==mxConstants.DIRECTION_WEST&&(e.width=f,e.x=k.x-f,e.setTerminalPoint(new mxPoint(e.x,e.y),!1))):(!h&&45<e.width&&45<e.height&&45<k.width&&45<k.height&&(e.width*=k.height/e.height,e.height=k.height),e.x=k.x+k.width/2-e.width/2,e.y=k.y+k.height/2-e.height/2,c==mxConstants.DIRECTION_NORTH?e.y=e.y-k.height/2-e.height/2-f:c==mxConstants.DIRECTION_EAST?e.x=e.x+k.width/2+
+e.width/2+f:c==mxConstants.DIRECTION_SOUTH?e.y=e.y+k.height/2+e.height/2+f:c==mxConstants.DIRECTION_WEST&&(e.x=e.x-k.width/2-e.width/2-f),d.model.isEdge(b)&&null!=e.getTerminalPoint(!0)&&null!=b.getTerminal(!1)&&(k=d.getCellGeometry(b.getTerminal(!1)),null!=k&&(c==mxConstants.DIRECTION_NORTH?(e.x-=k.getCenterX(),e.y-=k.getCenterY()+k.height/2):c==mxConstants.DIRECTION_EAST?(e.x-=k.getCenterX()-k.width/2,e.y-=k.getCenterY()):c==mxConstants.DIRECTION_SOUTH?(e.x-=k.getCenterX(),e.y-=k.getCenterY()-k.height/
+2):c==mxConstants.DIRECTION_WEST&&(e.x-=k.getCenterX()+k.width/2,e.y-=k.getCenterY()))))));return e};Sidebar.prototype.isDropStyleEnabled=function(a,b){var c=!0;if(null!=b&&1==a.length){var e=this.graph.getCellStyle(a[b]);null!=e&&(c=mxUtils.getValue(e,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE)}return c};
Sidebar.prototype.isDropStyleTargetIgnored=function(a){return this.graph.isSwimlane(a.cell)||this.graph.isTableCell(a.cell)||this.graph.isTableRow(a.cell)||this.graph.isTable(a.cell)};
-Sidebar.prototype.createDragSource=function(a,b,c,e,d){function f(a,b){var c;c=mxUtils.createImage(a.src);c.style.width=a.width+"px";c.style.height=a.height+"px";null!=b&&c.setAttribute("title",b);mxUtils.setOpacity(c,a==this.refreshTarget?30:20);c.style.position="absolute";c.style.cursor="crosshair";return c}function k(a,b,c,d){null!=d.parentNode&&(mxUtils.contains(c,a,b)?(mxUtils.setOpacity(d,100),J=d):mxUtils.setOpacity(d,d==z?30:20));return c}for(var h=this.editorUi,g=h.editor.graph,m=null,l=
-null,n=this,p=0;p<e.length&&(null==l&&g.model.isVertex(e[p])?l=p:null==m&&g.model.isEdge(e[p])&&null==g.model.getTerminal(e[p],!0)&&(m=p),null==l||null==m);p++);var r=this.isDropStyleEnabled(e,l),u=mxUtils.makeDraggable(a,g,mxUtils.bind(this,function(a,c,d,g,f){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=e&&null!=w&&J==z){var k=a.isCellSelected(w.cell)?a.getSelectionCells():[w.cell],k=this.updateShapes(a.model.isEdge(w.cell)?e[0]:e[l],k);a.setSelectionCells(k)}else null!=
-e&&null!=J&&null!=t&&J!=z?(k=a.model.isEdge(t.cell)||null==m?l:m,a.setSelectionCells(this.dropAndConnect(t.cell,e,N,k,c))):b.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(a.view.getState(a.getSelectionCell()))}),c,0,0,g.autoscroll,!0,!0);g.addListener(mxEvent.ESCAPE,function(a,b){u.isActive()&&u.reset()});var v=u.mouseDown;u.mouseDown=function(a){mxEvent.isPopupTrigger(a)||mxEvent.isMultiTouchEvent(a)||g.isCellLocked(g.getDefaultParent())||(g.stopEditing(),
-v.apply(this,arguments))};var t=null,x=null,w=null,y=!1,F=f(this.triangleUp,mxResources.get("connect")),I=f(this.triangleRight,mxResources.get("connect")),A=f(this.triangleDown,mxResources.get("connect")),G=f(this.triangleLeft,mxResources.get("connect")),z=f(this.refreshTarget,mxResources.get("replace")),D=null,K=f(this.roundDrop),L=f(this.roundDrop),N=mxConstants.DIRECTION_NORTH,J=null,Q=u.createPreviewElement;u.createPreviewElement=function(a){var b=Q.apply(this,arguments);mxClient.IS_SVG&&(b.style.pointerEvents=
-"none");this.previewElementWidth=b.style.width;this.previewElementHeight=b.style.height;return b};var X=u.dragEnter;u.dragEnter=function(a,b){null!=h.hoverIcons&&h.hoverIcons.setDisplay("none");X.apply(this,arguments)};var ba=u.dragExit;u.dragExit=function(a,b){null!=h.hoverIcons&&h.hoverIcons.setDisplay("");ba.apply(this,arguments)};u.dragOver=function(a,b){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=J&&this.currentGuide.hide();if(null!=this.previewElement){var c=
-a.view;if(null!=w&&J==z)this.previewElement.style.display=a.model.isEdge(w.cell)?"none":"",this.previewElement.style.left=w.x+"px",this.previewElement.style.top=w.y+"px",this.previewElement.style.width=w.width+"px",this.previewElement.style.height=w.height+"px";else if(null!=t&&null!=J){null!=u.currentHighlight&&null!=u.currentHighlight.state&&u.currentHighlight.hide();var g=a.model.isEdge(t.cell)||null==m?l:m,f=n.getDropAndConnectGeometry(t.cell,e[g],N,e),k=a.model.isEdge(t.cell)?null:a.getCellGeometry(t.cell),
-h=a.getCellGeometry(e[g]),p=a.model.getParent(t.cell),r=c.translate.x*c.scale,v=c.translate.y*c.scale;null!=k&&!k.relative&&a.model.isVertex(p)&&p!=c.currentRoot&&(v=c.getState(p),r=v.x,v=v.y);k=h.x;h=h.y;a.model.isEdge(e[g])&&(h=k=0);this.previewElement.style.left=(f.x-k)*c.scale+r+"px";this.previewElement.style.top=(f.y-h)*c.scale+v+"px";1==e.length&&(this.previewElement.style.width=f.width*c.scale+"px",this.previewElement.style.height=f.height*c.scale+"px");this.previewElement.style.display=""}else null!=
+Sidebar.prototype.createDragSource=function(a,b,c,e,d){function f(a,b){var c;c=mxUtils.createImage(a.src);c.style.width=a.width+"px";c.style.height=a.height+"px";null!=b&&c.setAttribute("title",b);mxUtils.setOpacity(c,a==this.refreshTarget?30:20);c.style.position="absolute";c.style.cursor="crosshair";return c}function h(a,b,c,d){null!=d.parentNode&&(mxUtils.contains(c,a,b)?(mxUtils.setOpacity(d,100),J=d):mxUtils.setOpacity(d,d==z?30:20));return c}for(var k=this.editorUi,g=k.editor.graph,m=null,l=
+null,n=this,p=0;p<e.length&&(null==l&&g.model.isVertex(e[p])?l=p:null==m&&g.model.isEdge(e[p])&&null==g.model.getTerminal(e[p],!0)&&(m=p),null==l||null==m);p++);var r=this.isDropStyleEnabled(e,l),u=mxUtils.makeDraggable(a,g,mxUtils.bind(this,function(a,c,d,g,f){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=e&&null!=w&&J==z){var h=a.isCellSelected(w.cell)?a.getSelectionCells():[w.cell],h=this.updateShapes(a.model.isEdge(w.cell)?e[0]:e[l],h);a.setSelectionCells(h)}else null!=
+e&&null!=J&&null!=t&&J!=z?(h=a.model.isEdge(t.cell)||null==m?l:m,a.setSelectionCells(this.dropAndConnect(t.cell,e,N,h,c))):b.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(a.view.getState(a.getSelectionCell()))}),c,0,0,g.autoscroll,!0,!0);g.addListener(mxEvent.ESCAPE,function(a,b){u.isActive()&&u.reset()});var v=u.mouseDown;u.mouseDown=function(a){mxEvent.isPopupTrigger(a)||mxEvent.isMultiTouchEvent(a)||g.isCellLocked(g.getDefaultParent())||(g.stopEditing(),
+v.apply(this,arguments))};var t=null,x=null,w=null,y=!1,F=f(this.triangleUp,mxResources.get("connect")),I=f(this.triangleRight,mxResources.get("connect")),B=f(this.triangleDown,mxResources.get("connect")),G=f(this.triangleLeft,mxResources.get("connect")),z=f(this.refreshTarget,mxResources.get("replace")),D=null,K=f(this.roundDrop),L=f(this.roundDrop),N=mxConstants.DIRECTION_NORTH,J=null,Q=u.createPreviewElement;u.createPreviewElement=function(a){var b=Q.apply(this,arguments);mxClient.IS_SVG&&(b.style.pointerEvents=
+"none");this.previewElementWidth=b.style.width;this.previewElementHeight=b.style.height;return b};var Y=u.dragEnter;u.dragEnter=function(a,b){null!=k.hoverIcons&&k.hoverIcons.setDisplay("none");Y.apply(this,arguments)};var ca=u.dragExit;u.dragExit=function(a,b){null!=k.hoverIcons&&k.hoverIcons.setDisplay("");ca.apply(this,arguments)};u.dragOver=function(a,b){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=J&&this.currentGuide.hide();if(null!=this.previewElement){var c=
+a.view;if(null!=w&&J==z)this.previewElement.style.display=a.model.isEdge(w.cell)?"none":"",this.previewElement.style.left=w.x+"px",this.previewElement.style.top=w.y+"px",this.previewElement.style.width=w.width+"px",this.previewElement.style.height=w.height+"px";else if(null!=t&&null!=J){null!=u.currentHighlight&&null!=u.currentHighlight.state&&u.currentHighlight.hide();var g=a.model.isEdge(t.cell)||null==m?l:m,f=n.getDropAndConnectGeometry(t.cell,e[g],N,e),h=a.model.isEdge(t.cell)?null:a.getCellGeometry(t.cell),
+k=a.getCellGeometry(e[g]),p=a.model.getParent(t.cell),r=c.translate.x*c.scale,v=c.translate.y*c.scale;null!=h&&!h.relative&&a.model.isVertex(p)&&p!=c.currentRoot&&(v=c.getState(p),r=v.x,v=v.y);h=k.x;k=k.y;a.model.isEdge(e[g])&&(k=h=0);this.previewElement.style.left=(f.x-h)*c.scale+r+"px";this.previewElement.style.top=(f.y-k)*c.scale+v+"px";1==e.length&&(this.previewElement.style.width=f.width*c.scale+"px",this.previewElement.style.height=f.height*c.scale+"px");this.previewElement.style.display=""}else null!=
u.currentHighlight.state&&a.model.isEdge(u.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)-d.width*c.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-d.height*c.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,this.previewElement.style.display="")}};var O=(new Date).getTime(),R=0,T=null,U=this.editorUi.editor.graph.getCellStyle(e[0]);
-u.getDropTarget=mxUtils.bind(this,function(a,b,c,d){var g=mxEvent.isAltDown(d)||null==e?null:a.getCellAt(b,c,null,null,null,function(b,c,d){return a.isContainer(b.cell)});if(null!=g&&!this.graph.isCellConnectable(g)&&!this.graph.model.isEdge(g)){var f=this.graph.getModel().getParent(g);this.graph.getModel().isVertex(f)&&this.graph.isCellConnectable(f)&&(g=f)}a.isCellLocked(g)&&(g=null);var h=a.view.getState(g),f=J=null;T!=h?(O=(new Date).getTime(),R=0,T=h,null!=this.updateThread&&window.clearTimeout(this.updateThread),
-null!=h&&(this.updateThread=window.setTimeout(function(){null==J&&(T=h,u.getDropTarget(a,b,c,d))},this.dropTargetDelay+10))):R=(new Date).getTime()-O;if(r&&2500>R&&null!=h&&!mxEvent.isShiftDown(d)&&(mxUtils.getValue(h.style,mxConstants.STYLE_SHAPE)!=mxUtils.getValue(U,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(h.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(h.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(h.style,
-mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(U,mxConstants.STYLE_SHAPE)||1500<R||a.model.isEdge(h.cell))&&R>this.dropTargetDelay&&!this.isDropStyleTargetIgnored(h)&&(a.model.isVertex(h.cell)&&null!=l||a.model.isEdge(h.cell)&&a.model.isEdge(e[0]))){if(a.isCellEditable(h.cell)){w=h;var m=a.model.isEdge(h.cell)?a.view.getPoint(h):new mxPoint(h.getCenterX(),h.getCenterY()),m=new mxRectangle(m.x-this.refreshTarget.width/2,m.y-this.refreshTarget.height/
-2,this.refreshTarget.width,this.refreshTarget.height);z.style.left=Math.floor(m.x)+"px";z.style.top=Math.floor(m.y)+"px";null==D&&(a.container.appendChild(z),D=z.parentNode);k(b,c,m,z)}}else null==w||!mxUtils.contains(w,b,c)||1500<R&&!mxEvent.isShiftDown(d)?(w=null,null!=D&&(z.parentNode.removeChild(z),D=null)):null!=w&&null!=D&&(m=a.model.isEdge(w.cell)?a.view.getPoint(w):new mxPoint(w.getCenterX(),w.getCenterY()),m=new mxRectangle(m.x-this.refreshTarget.width/2,m.y-this.refreshTarget.height/2,this.refreshTarget.width,
-this.refreshTarget.height),k(b,c,m,z));if(y&&null!=t&&!mxEvent.isAltDown(d)&&null==J){f=mxRectangle.fromRectangle(t);if(a.model.isEdge(t.cell)){var n=t.absolutePoints;null!=K.parentNode&&(m=n[0],f.add(k(b,c,new mxRectangle(m.x-this.roundDrop.width/2,m.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),K)));null!=L.parentNode&&(n=n[n.length-1],f.add(k(b,c,new mxRectangle(n.x-this.roundDrop.width/2,n.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),L)))}else m=
+u.getDropTarget=mxUtils.bind(this,function(a,b,c,d){var g=mxEvent.isAltDown(d)||null==e?null:a.getCellAt(b,c,null,null,null,function(b,c,d){return a.isContainer(b.cell)});if(null!=g&&!this.graph.isCellConnectable(g)&&!this.graph.model.isEdge(g)){var f=this.graph.getModel().getParent(g);this.graph.getModel().isVertex(f)&&this.graph.isCellConnectable(f)&&(g=f)}a.isCellLocked(g)&&(g=null);var k=a.view.getState(g),f=J=null;T!=k?(O=(new Date).getTime(),R=0,T=k,null!=this.updateThread&&window.clearTimeout(this.updateThread),
+null!=k&&(this.updateThread=window.setTimeout(function(){null==J&&(T=k,u.getDropTarget(a,b,c,d))},this.dropTargetDelay+10))):R=(new Date).getTime()-O;if(r&&2500>R&&null!=k&&!mxEvent.isShiftDown(d)&&(mxUtils.getValue(k.style,mxConstants.STYLE_SHAPE)!=mxUtils.getValue(U,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(k.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,
+mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(U,mxConstants.STYLE_SHAPE)||1500<R||a.model.isEdge(k.cell))&&R>this.dropTargetDelay&&!this.isDropStyleTargetIgnored(k)&&(a.model.isVertex(k.cell)&&null!=l||a.model.isEdge(k.cell)&&a.model.isEdge(e[0]))){if(a.isCellEditable(k.cell)){w=k;var m=a.model.isEdge(k.cell)?a.view.getPoint(k):new mxPoint(k.getCenterX(),k.getCenterY()),m=new mxRectangle(m.x-this.refreshTarget.width/2,m.y-this.refreshTarget.height/
+2,this.refreshTarget.width,this.refreshTarget.height);z.style.left=Math.floor(m.x)+"px";z.style.top=Math.floor(m.y)+"px";null==D&&(a.container.appendChild(z),D=z.parentNode);h(b,c,m,z)}}else null==w||!mxUtils.contains(w,b,c)||1500<R&&!mxEvent.isShiftDown(d)?(w=null,null!=D&&(z.parentNode.removeChild(z),D=null)):null!=w&&null!=D&&(m=a.model.isEdge(w.cell)?a.view.getPoint(w):new mxPoint(w.getCenterX(),w.getCenterY()),m=new mxRectangle(m.x-this.refreshTarget.width/2,m.y-this.refreshTarget.height/2,this.refreshTarget.width,
+this.refreshTarget.height),h(b,c,m,z));if(y&&null!=t&&!mxEvent.isAltDown(d)&&null==J){f=mxRectangle.fromRectangle(t);if(a.model.isEdge(t.cell)){var n=t.absolutePoints;null!=K.parentNode&&(m=n[0],f.add(h(b,c,new mxRectangle(m.x-this.roundDrop.width/2,m.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),K)));null!=L.parentNode&&(n=n[n.length-1],f.add(h(b,c,new mxRectangle(n.x-this.roundDrop.width/2,n.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),L)))}else m=
mxRectangle.fromRectangle(t),null!=t.shape&&null!=t.shape.boundingBox&&(m=mxRectangle.fromRectangle(t.shape.boundingBox)),m.grow(this.graph.tolerance),m.grow(HoverIcons.prototype.arrowSpacing),n=this.graph.selectionCellsHandler.getHandler(t.cell),null!=n&&(m.x-=n.horizontalOffset/2,m.y-=n.verticalOffset/2,m.width+=n.horizontalOffset,m.height+=n.verticalOffset,null!=n.rotationShape&&null!=n.rotationShape.node&&"hidden"!=n.rotationShape.node.style.visibility&&"none"!=n.rotationShape.node.style.display&&
-null!=n.rotationShape.boundingBox&&m.add(n.rotationShape.boundingBox)),f.add(k(b,c,new mxRectangle(t.getCenterX()-this.triangleUp.width/2,m.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),F)),f.add(k(b,c,new mxRectangle(m.x+m.width,t.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height),I)),f.add(k(b,c,new mxRectangle(t.getCenterX()-this.triangleDown.width/2,m.y+m.height,this.triangleDown.width,this.triangleDown.height),A)),f.add(k(b,c,
-new mxRectangle(m.x-this.triangleLeft.width,t.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),G));null!=f&&f.grow(10)}N=mxConstants.DIRECTION_NORTH;J==I?N=mxConstants.DIRECTION_EAST:J==A||J==L?N=mxConstants.DIRECTION_SOUTH:J==G&&(N=mxConstants.DIRECTION_WEST);null!=w&&J==z&&(h=w);m=(null==l||a.isCellConnectable(e[l]))&&(a.model.isEdge(g)&&null!=l||a.model.isVertex(g)&&a.isCellConnectable(g));if(null!=t&&5E3<=R||t!=h&&(null==f||!mxUtils.contains(f,b,c)||500<
-R&&null==J&&m))if(y=!1,t=5E3>R&&R>this.dropTargetDelay||a.model.isEdge(g)?h:null,null!=t&&m){f=[K,L,F,I,A,G];for(m=0;m<f.length;m++)null!=f[m].parentNode&&f[m].parentNode.removeChild(f[m]);a.model.isEdge(g)?(n=h.absolutePoints,null!=n&&(m=n[0],n=n[n.length-1],f=a.tolerance,new mxRectangle(b-f,c-f,2*f,2*f),K.style.left=Math.floor(m.x-this.roundDrop.width/2)+"px",K.style.top=Math.floor(m.y-this.roundDrop.height/2)+"px",L.style.left=Math.floor(n.x-this.roundDrop.width/2)+"px",L.style.top=Math.floor(n.y-
-this.roundDrop.height/2)+"px",null==a.model.getTerminal(g,!0)&&a.container.appendChild(K),null==a.model.getTerminal(g,!1)&&a.container.appendChild(L))):(m=mxRectangle.fromRectangle(h),null!=h.shape&&null!=h.shape.boundingBox&&(m=mxRectangle.fromRectangle(h.shape.boundingBox)),m.grow(this.graph.tolerance),m.grow(HoverIcons.prototype.arrowSpacing),n=this.graph.selectionCellsHandler.getHandler(h.cell),null!=n&&(m.x-=n.horizontalOffset/2,m.y-=n.verticalOffset/2,m.width+=n.horizontalOffset,m.height+=n.verticalOffset,
-null!=n.rotationShape&&null!=n.rotationShape.node&&"hidden"!=n.rotationShape.node.style.visibility&&"none"!=n.rotationShape.node.style.display&&null!=n.rotationShape.boundingBox&&m.add(n.rotationShape.boundingBox)),F.style.left=Math.floor(h.getCenterX()-this.triangleUp.width/2)+"px",F.style.top=Math.floor(m.y-this.triangleUp.height)+"px",I.style.left=Math.floor(m.x+m.width)+"px",I.style.top=Math.floor(h.getCenterY()-this.triangleRight.height/2)+"px",A.style.left=F.style.left,A.style.top=Math.floor(m.y+
-m.height)+"px",G.style.left=Math.floor(m.x-this.triangleLeft.width)+"px",G.style.top=I.style.top,"eastwest"!=h.style.portConstraint&&(a.container.appendChild(F),a.container.appendChild(A)),a.container.appendChild(I),a.container.appendChild(G));null!=h&&(x=a.selectionCellsHandler.getHandler(h.cell),null!=x&&null!=x.setHandlesVisible&&x.setHandlesVisible(!1));y=!0}else for(f=[K,L,F,I,A,G],m=0;m<f.length;m++)null!=f[m].parentNode&&f[m].parentNode.removeChild(f[m]);y||null==x||x.setHandlesVisible(!0);
+null!=n.rotationShape.boundingBox&&m.add(n.rotationShape.boundingBox)),f.add(h(b,c,new mxRectangle(t.getCenterX()-this.triangleUp.width/2,m.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),F)),f.add(h(b,c,new mxRectangle(m.x+m.width,t.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height),I)),f.add(h(b,c,new mxRectangle(t.getCenterX()-this.triangleDown.width/2,m.y+m.height,this.triangleDown.width,this.triangleDown.height),B)),f.add(h(b,c,
+new mxRectangle(m.x-this.triangleLeft.width,t.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),G));null!=f&&f.grow(10)}N=mxConstants.DIRECTION_NORTH;J==I?N=mxConstants.DIRECTION_EAST:J==B||J==L?N=mxConstants.DIRECTION_SOUTH:J==G&&(N=mxConstants.DIRECTION_WEST);null!=w&&J==z&&(k=w);m=(null==l||a.isCellConnectable(e[l]))&&(a.model.isEdge(g)&&null!=l||a.model.isVertex(g)&&a.isCellConnectable(g));if(null!=t&&5E3<=R||t!=k&&(null==f||!mxUtils.contains(f,b,c)||500<
+R&&null==J&&m))if(y=!1,t=5E3>R&&R>this.dropTargetDelay||a.model.isEdge(g)?k:null,null!=t&&m){f=[K,L,F,I,B,G];for(m=0;m<f.length;m++)null!=f[m].parentNode&&f[m].parentNode.removeChild(f[m]);a.model.isEdge(g)?(n=k.absolutePoints,null!=n&&(m=n[0],n=n[n.length-1],f=a.tolerance,new mxRectangle(b-f,c-f,2*f,2*f),K.style.left=Math.floor(m.x-this.roundDrop.width/2)+"px",K.style.top=Math.floor(m.y-this.roundDrop.height/2)+"px",L.style.left=Math.floor(n.x-this.roundDrop.width/2)+"px",L.style.top=Math.floor(n.y-
+this.roundDrop.height/2)+"px",null==a.model.getTerminal(g,!0)&&a.container.appendChild(K),null==a.model.getTerminal(g,!1)&&a.container.appendChild(L))):(m=mxRectangle.fromRectangle(k),null!=k.shape&&null!=k.shape.boundingBox&&(m=mxRectangle.fromRectangle(k.shape.boundingBox)),m.grow(this.graph.tolerance),m.grow(HoverIcons.prototype.arrowSpacing),n=this.graph.selectionCellsHandler.getHandler(k.cell),null!=n&&(m.x-=n.horizontalOffset/2,m.y-=n.verticalOffset/2,m.width+=n.horizontalOffset,m.height+=n.verticalOffset,
+null!=n.rotationShape&&null!=n.rotationShape.node&&"hidden"!=n.rotationShape.node.style.visibility&&"none"!=n.rotationShape.node.style.display&&null!=n.rotationShape.boundingBox&&m.add(n.rotationShape.boundingBox)),F.style.left=Math.floor(k.getCenterX()-this.triangleUp.width/2)+"px",F.style.top=Math.floor(m.y-this.triangleUp.height)+"px",I.style.left=Math.floor(m.x+m.width)+"px",I.style.top=Math.floor(k.getCenterY()-this.triangleRight.height/2)+"px",B.style.left=F.style.left,B.style.top=Math.floor(m.y+
+m.height)+"px",G.style.left=Math.floor(m.x-this.triangleLeft.width)+"px",G.style.top=I.style.top,"eastwest"!=k.style.portConstraint&&(a.container.appendChild(F),a.container.appendChild(B)),a.container.appendChild(I),a.container.appendChild(G));null!=k&&(x=a.selectionCellsHandler.getHandler(k.cell),null!=x&&null!=x.setHandlesVisible&&x.setHandlesVisible(!1));y=!0}else for(f=[K,L,F,I,B,G],m=0;m<f.length;m++)null!=f[m].parentNode&&f[m].parentNode.removeChild(f[m]);y||null==x||x.setHandlesVisible(!0);
g=mxEvent.isAltDown(d)&&!mxEvent.isShiftDown(d)||null!=w&&J==z?null:mxDragSource.prototype.getDropTarget.apply(this,arguments);f=a.getModel();if(null!=g&&(null!=J||!a.isSplitTarget(g,e,d))){for(;null!=g&&!a.isValidDropTarget(g,e,d)&&f.isVertex(f.getParent(g));)g=f.getParent(g);null!=g&&(a.view.currentRoot==g||!a.isValidRoot(g)&&0==a.getModel().getChildCount(g)||a.isCellLocked(g)||f.isEdge(g)||!a.isValidDropTarget(g,e,d))&&(g=null)}a.isCellLocked(g)&&(g=null);return g});u.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,
-arguments);for(var a=[K,L,z,F,I,A,G],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=t&&null!=x&&x.reset();J=D=w=t=x=null};return u};
+arguments);for(var a=[K,L,z,F,I,B,G],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=t&&null!=x&&x.reset();J=D=w=t=x=null};return u};
Sidebar.prototype.itemClicked=function(a,b,c,e){e=this.editorUi.editor.graph;e.container.focus();if(mxEvent.isAltDown(c)&&1==e.getSelectionCount()&&e.model.isVertex(e.getSelectionCell())){b=null;for(var d=0;d<a.length&&null==b;d++)e.model.isVertex(a[d])&&(b=d);null!=b&&(e.setSelectionCells(this.dropAndConnect(e.getSelectionCell(),a,mxEvent.isMetaDown(c)||mxEvent.isControlDown(c)?mxEvent.isShiftDown(c)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(c)?mxConstants.DIRECTION_EAST:
mxConstants.DIRECTION_SOUTH,b,c)),e.scrollCellToVisible(e.getSelectionCell()))}else mxEvent.isShiftDown(c)&&!e.isSelectionEmpty()?(c=e.getEditableCells(e.getSelectionCells()),this.updateShapes(a[0],c),e.scrollCellToVisible(c)):(a=mxEvent.isAltDown(c)?e.getFreeInsertPoint():e.getCenterInsertPoint(e.getBoundingBoxFromGeometry(a,!0)),b.drop(e,c,null,a.x,a.y,!0))};
-Sidebar.prototype.addClickHandler=function(a,b,c){var e=b.mouseDown,d=b.mouseMove,f=b.mouseUp,k=this.editorUi.editor.graph.tolerance,h=null,g=this;b.mouseDown=function(b){e.apply(this,arguments);h=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));null!=this.dragElement&&(this.dragElement.style.display="none",mxUtils.setOpacity(a,50))};b.mouseMove=function(b){null!=this.dragElement&&"none"==this.dragElement.style.display&&null!=h&&(Math.abs(h.x-mxEvent.getClientX(b))>k||Math.abs(h.y-mxEvent.getClientY(b))>
-k)&&(this.dragElement.style.display="",mxUtils.setOpacity(a,100));d.apply(this,arguments)};b.mouseUp=function(d){try{mxEvent.isPopupTrigger(d)||null!=this.currentGraph||null==this.dragElement||"none"!=this.dragElement.style.display||g.itemClicked(c,b,d,a),f.apply(b,arguments),mxUtils.setOpacity(a,100),h=null,g.currentElt=a}catch(l){b.reset(),g.editorUi.handleError(l)}}};
-Sidebar.prototype.createVertexTemplateEntry=function(a,b,c,e,d,f,k,h){null!=h&&null!=d&&(h+=" "+d);h=null!=h&&0<h.length?h:null!=d?d.toLowerCase():"";return this.addEntry(h,mxUtils.bind(this,function(){return this.createVertexTemplate(a,b,c,e,d,f,k)}))};Sidebar.prototype.createVertexTemplate=function(a,b,c,e,d,f,k,h,g){a=[new mxCell(null!=e?e:"",new mxGeometry(0,0,b,c),a)];a[0].vertex=!0;return this.createVertexTemplateFromCells(a,b,c,d,f,k,h,g)};
-Sidebar.prototype.createVertexTemplateFromData=function(a,b,c,e,d,f,k,h){a=mxUtils.parseXml(Graph.decompress(a));var g=new mxCodec(a),m=new mxGraphModel;g.decode(a.documentElement,m);a=this.graph.cloneCells(m.root.getChildAt(0).children);return this.createVertexTemplateFromCells(a,b,c,e,d,f,k,h)};Sidebar.prototype.createVertexTemplateFromCells=function(a,b,c,e,d,f,k,h){return this.createItem(a,e,d,f,b,c,k,h)};
-Sidebar.prototype.createEdgeTemplateEntry=function(a,b,c,e,d,f,k,h,g){k=null!=k&&0<k.length?k:d.toLowerCase();return this.addEntry(k,mxUtils.bind(this,function(){return this.createEdgeTemplate(a,b,c,e,d,f,h,g)}))};
-Sidebar.prototype.createEdgeTemplate=function(a,b,c,e,d,f,k,h){a=new mxCell(null!=e?e:"",new mxGeometry(0,0,b,c),a);a.geometry.setTerminalPoint(new mxPoint(0,c),!0);a.geometry.setTerminalPoint(new mxPoint(b,0),!1);a.geometry.relative=!0;a.edge=!0;return this.createEdgeTemplateFromCells([a],b,c,d,f,k,h)};Sidebar.prototype.createEdgeTemplateFromCells=function(a,b,c,e,d,f,k,h){return this.createItem(a,e,d,null!=h?h:!0,b,c,f,k)};
+Sidebar.prototype.addClickHandler=function(a,b,c){var e=b.mouseDown,d=b.mouseMove,f=b.mouseUp,h=this.editorUi.editor.graph.tolerance,k=null,g=this;b.mouseDown=function(b){e.apply(this,arguments);k=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));null!=this.dragElement&&(this.dragElement.style.display="none",mxUtils.setOpacity(a,50))};b.mouseMove=function(b){null!=this.dragElement&&"none"==this.dragElement.style.display&&null!=k&&(Math.abs(k.x-mxEvent.getClientX(b))>h||Math.abs(k.y-mxEvent.getClientY(b))>
+h)&&(this.dragElement.style.display="",mxUtils.setOpacity(a,100));d.apply(this,arguments)};b.mouseUp=function(d){try{mxEvent.isPopupTrigger(d)||null!=this.currentGraph||null==this.dragElement||"none"!=this.dragElement.style.display||g.itemClicked(c,b,d,a),f.apply(b,arguments),mxUtils.setOpacity(a,100),k=null,g.currentElt=a}catch(l){b.reset(),g.editorUi.handleError(l)}}};
+Sidebar.prototype.createVertexTemplateEntry=function(a,b,c,e,d,f,h,k){null!=k&&null!=d&&(k+=" "+d);k=null!=k&&0<k.length?k:null!=d?d.toLowerCase():"";return this.addEntry(k,mxUtils.bind(this,function(){return this.createVertexTemplate(a,b,c,e,d,f,h)}))};Sidebar.prototype.createVertexTemplate=function(a,b,c,e,d,f,h,k,g){a=[new mxCell(null!=e?e:"",new mxGeometry(0,0,b,c),a)];a[0].vertex=!0;return this.createVertexTemplateFromCells(a,b,c,d,f,h,k,g)};
+Sidebar.prototype.createVertexTemplateFromData=function(a,b,c,e,d,f,h,k){a=mxUtils.parseXml(Graph.decompress(a));var g=new mxCodec(a),m=new mxGraphModel;g.decode(a.documentElement,m);a=this.graph.cloneCells(m.root.getChildAt(0).children);return this.createVertexTemplateFromCells(a,b,c,e,d,f,h,k)};Sidebar.prototype.createVertexTemplateFromCells=function(a,b,c,e,d,f,h,k){return this.createItem(a,e,d,f,b,c,h,k)};
+Sidebar.prototype.createEdgeTemplateEntry=function(a,b,c,e,d,f,h,k,g){h=null!=h&&0<h.length?h:d.toLowerCase();return this.addEntry(h,mxUtils.bind(this,function(){return this.createEdgeTemplate(a,b,c,e,d,f,k,g)}))};
+Sidebar.prototype.createEdgeTemplate=function(a,b,c,e,d,f,h,k){a=new mxCell(null!=e?e:"",new mxGeometry(0,0,b,c),a);a.geometry.setTerminalPoint(new mxPoint(0,c),!0);a.geometry.setTerminalPoint(new mxPoint(b,0),!1);a.geometry.relative=!0;a.edge=!0;return this.createEdgeTemplateFromCells([a],b,c,d,f,h,k)};Sidebar.prototype.createEdgeTemplateFromCells=function(a,b,c,e,d,f,h,k){return this.createItem(a,e,d,null!=k?k:!0,b,c,f,h)};
Sidebar.prototype.addPaletteFunctions=function(a,b,c,e){this.addPalette(a,b,c,mxUtils.bind(this,function(a){for(var b=0;b<e.length;b++)a.appendChild(e[b](a))}))};
Sidebar.prototype.addPalette=function(a,b,c,e){b=this.createTitle(b);this.container.appendChild(b);var d=document.createElement("div");d.className="geSidebar";mxClient.IS_POINTER&&(d.style.touchAction="none");c?(e(d),e=null):d.style.display="none";this.addFoldingHandler(b,d,e);c=document.createElement("div");c.appendChild(d);this.container.appendChild(c);null!=a&&(this.palettes[a]=[b,c]);return d};
Sidebar.prototype.addFoldingHandler=function(a,b,c){var e=!1;if(!mxClient.IS_IE||8<=document.documentMode)a.style.backgroundImage="none"==b.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')";a.style.backgroundRepeat="no-repeat";a.style.backgroundPosition="0% 50%";mxEvent.addListener(a,"click",mxUtils.bind(this,function(d){if("none"==b.style.display){if(e)b.style.display="block";else if(e=!0,null!=c){a.style.cursor="wait";var f=a.innerHTML;a.innerHTML=mxResources.get("loading")+
"...";window.setTimeout(function(){b.style.display="block";a.style.cursor="";a.innerHTML=f;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;c(b,a);mxClient.NO_FO=d},mxClient.IS_FF?20:0)}else b.style.display="block";a.style.backgroundImage="url('"+this.expandedImage+"')"}else a.style.backgroundImage="url('"+this.collapsedImage+"')",b.style.display="none";mxEvent.consume(d)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}))};
Sidebar.prototype.removePalette=function(a){var b=this.palettes[a];if(null!=b){this.palettes[a]=null;for(a=0;a<b.length;a++)this.container.removeChild(b[a]);return!0}return!1};
-Sidebar.prototype.addImagePalette=function(a,b,c,e,d,f,k){for(var h=[],g=0;g<d.length;g++)mxUtils.bind(this,function(a,b,d){if(null==d){d=a.lastIndexOf("/");var g=a.lastIndexOf(".");d=a.substring(0<=d?d+1:0,0<=g?g:a.length).replace(/[-_]/g," ")}h.push(this.createVertexTemplateEntry("image;html=1;image="+c+a+e,this.defaultImageWidth,this.defaultImageHeight,"",b,null!=b,null,this.filterTags(d)))})(d[g],null!=f?f[g]:null,null!=k?k[d[g]]:null);this.addPaletteFunctions(a,b,!1,h)};
+Sidebar.prototype.addImagePalette=function(a,b,c,e,d,f,h){for(var k=[],g=0;g<d.length;g++)mxUtils.bind(this,function(a,b,d){if(null==d){d=a.lastIndexOf("/");var g=a.lastIndexOf(".");d=a.substring(0<=d?d+1:0,0<=g?g:a.length).replace(/[-_]/g," ")}k.push(this.createVertexTemplateEntry("image;html=1;image="+c+a+e,this.defaultImageWidth,this.defaultImageHeight,"",b,null!=b,null,this.filterTags(d)))})(d[g],null!=f?f[g]:null,null!=h?h[d[g]]:null);this.addPaletteFunctions(a,b,!1,k)};
Sidebar.prototype.getTagsForStencil=function(a,b,c){a=a.split(".");for(var e=1;e<a.length;e++)a[e]=a[e].replace(/_/g," ");a.push(b.replace(/_/g," "));null!=c&&a.push(c);return a.slice(1,a.length)};
-Sidebar.prototype.addStencilPalette=function(a,b,c,e,d,f,k,h,g,m){k=null!=k?k:1;if(this.addStencilsToIndex){var l=[];if(null!=g)for(m=0;m<g.length;m++)l.push(g[m]);mxStencilRegistry.loadStencilSet(c,mxUtils.bind(this,function(a,b,c,g,f){if(null==d||0>mxUtils.indexOf(d,b)){c=this.getTagsForStencil(a,b);var m=null!=h?h[b]:null;null!=m&&c.push(m);l.push(this.createVertexTemplateEntry("shape="+a+b.toLowerCase()+e,Math.round(g*k),Math.round(f*k),"",b.replace(/_/g," "),null,null,this.filterTags(c.join(" "))))}}),
-!0,!0);this.addPaletteFunctions(a,b,!1,l)}else this.addPalette(a,b,!1,mxUtils.bind(this,function(a){null==e&&(e="");null!=f&&f.call(this,a);if(null!=g)for(var b=0;b<g.length;b++)g[b](a);mxStencilRegistry.loadStencilSet(c,mxUtils.bind(this,function(b,c,g,f,h){(null==d||0>mxUtils.indexOf(d,c))&&a.appendChild(this.createVertexTemplate("shape="+b+c.toLowerCase()+e,Math.round(f*k),Math.round(h*k),"",c.replace(/_/g," "),!0))}),!0)}))};
+Sidebar.prototype.addStencilPalette=function(a,b,c,e,d,f,h,k,g,m){h=null!=h?h:1;if(this.addStencilsToIndex){var l=[];if(null!=g)for(m=0;m<g.length;m++)l.push(g[m]);mxStencilRegistry.loadStencilSet(c,mxUtils.bind(this,function(a,b,c,g,f){if(null==d||0>mxUtils.indexOf(d,b)){c=this.getTagsForStencil(a,b);var m=null!=k?k[b]:null;null!=m&&c.push(m);l.push(this.createVertexTemplateEntry("shape="+a+b.toLowerCase()+e,Math.round(g*h),Math.round(f*h),"",b.replace(/_/g," "),null,null,this.filterTags(c.join(" "))))}}),
+!0,!0);this.addPaletteFunctions(a,b,!1,l)}else this.addPalette(a,b,!1,mxUtils.bind(this,function(a){null==e&&(e="");null!=f&&f.call(this,a);if(null!=g)for(var b=0;b<g.length;b++)g[b](a);mxStencilRegistry.loadStencilSet(c,mxUtils.bind(this,function(b,c,g,f,k){(null==d||0>mxUtils.indexOf(d,c))&&a.appendChild(this.createVertexTemplate("shape="+b+c.toLowerCase()+e,Math.round(f*h),Math.round(k*h),"",c.replace(/_/g," "),!0))}),!0)}))};
Sidebar.prototype.destroy=function(){null!=this.graph&&(null!=this.graph.container&&null!=this.graph.container.parentNode&&this.graph.container.parentNode.removeChild(this.graph.container),this.graph.destroy(),this.graph=null);null!=this.pointerUpHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerUpHandler=null);null!=this.pointerDownHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),
this.pointerDownHandler=null);null!=this.pointerMoveHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerMoveHandler=null);null!=this.pointerOutHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),this.pointerOutHandler=null)};"undefined"!==typeof html4&&(html4.ATTRIBS["a::target"]=0,html4.ATTRIBS["source::src"]=0,html4.ATTRIBS["video::src"]=0);(function(){var a=[["nbsp","160"],["shy","173"]],b=mxUtils.parseXml;mxUtils.parseXml=function(c){for(var e=0;e<a.length;e++)c=c.replace(new RegExp("&"+a[e][0]+";","g"),"&#"+a[e][1]+";");return b(c)}})();
Date.prototype.toISOString||function(){function a(a){a=String(a);1===a.length&&(a="0"+a);return a}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}}();Date.now||(Date.now=function(){return(new Date).getTime()});
-Uint8Array.from||(Uint8Array.from=function(){var a=Object.prototype.toString,b=function(b){return"function"===typeof b||"[object Function]"===a.call(b)},c=Math.pow(2,53)-1;return function(a){var d=Object(a);if(null==a)throw new TypeError("Array.from requires an array-like object - not null or undefined");var e=1<arguments.length?arguments[1]:void 0,k;if("undefined"!==typeof e){if(!b(e))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(k=
-arguments[2])}var h;h=Number(d.length);h=isNaN(h)?0:0!==h&&isFinite(h)?(0<h?1:-1)*Math.floor(Math.abs(h)):h;h=Math.min(Math.max(h,0),c);for(var g=b(this)?Object(new this(h)):Array(h),m=0,l;m<h;)l=d[m],g[m]=e?"undefined"===typeof k?e(l,m):e.call(k,l,m):l,m+=1;g.length=h;return g}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
+Uint8Array.from||(Uint8Array.from=function(){var a=Object.prototype.toString,b=function(b){return"function"===typeof b||"[object Function]"===a.call(b)},c=Math.pow(2,53)-1;return function(a){var d=Object(a);if(null==a)throw new TypeError("Array.from requires an array-like object - not null or undefined");var e=1<arguments.length?arguments[1]:void 0,h;if("undefined"!==typeof e){if(!b(e))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(h=
+arguments[2])}var k;k=Number(d.length);k=isNaN(k)?0:0!==k&&isFinite(k)?(0<k?1:-1)*Math.floor(Math.abs(k)):k;k=Math.min(Math.max(k,0),c);for(var g=b(this)?Object(new this(k)):Array(k),m=0,l;m<k;)l=d[m],g[m]=e?"undefined"===typeof h?e(l,m):e.call(h,l,m):l,m+=1;g.length=k;return g}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(b){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;
mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;mxGraphView.prototype.unit=mxConstants.POINTS;
mxGraphView.prototype.setUnit=function(a){this.unit!=a&&(this.unit=a,this.fireEvent(new mxEventObject("unitChanged","unit",a)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,c){return null};
mxImageShape.prototype.getImageDataUri=function(){var a=this.image;if("data:image/svg+xml;base64,"==a.substring(0,26)&&null!=this.style&&"1"==mxUtils.getValue(this.style,"clipSvg","0")){if(null==this.clippedSvg||this.clippedImage!=a)this.clippedSvg=Graph.clipSvgDataUri(a,!0),this.clippedImage=a;a=this.clippedSvg}return a};
Graph=function(a,b,c,e,d,f){mxGraph.call(this,a,b,c,e);this.themes=d||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=f?f:!1;a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(a){a=this.getCurrentCellStyle(a);
-return null!=a?"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var k=null,h=null,g=null,m=null,l=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var c=b.getProperty("event"),d=c.getState(),e=this.view.scale;if(!mxEvent.isAltDown(c.getEvent())&&null!=d)if(this.model.isEdge(d.cell))if(k=new mxPoint(c.getGraphX(),c.getGraphY()),l=this.isCellSelected(d.cell),g=d,h=c,null!=d.text&&null!=
+return null!=a?"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var h=null,k=null,g=null,m=null,l=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var c=b.getProperty("event"),d=c.getState(),e=this.view.scale;if(!mxEvent.isAltDown(c.getEvent())&&null!=d)if(this.model.isEdge(d.cell))if(h=new mxPoint(c.getGraphX(),c.getGraphY()),l=this.isCellSelected(d.cell),g=d,k=c,null!=d.text&&null!=
d.text.boundingBox&&mxUtils.contains(d.text.boundingBox,c.getGraphX(),c.getGraphY()))m=mxEvent.LABEL_HANDLE;else{var f=this.selectionCellsHandler.getHandler(d.cell);null!=f&&null!=f.bends&&0<f.bends.length&&(m=f.getHandleForEvent(c))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(c.getEvent())&&(f=this.selectionCellsHandler.getHandler(d.cell),null==f||null==f.getHandleForEvent(c))){var n=new mxRectangle(c.getGraphX()-1,c.getGraphY()-1);n.grow(mxEvent.isTouchEvent(c.getEvent())?mxShape.prototype.svgStrokeTolerance-
1:(mxShape.prototype.svgStrokeTolerance+1)/2);if(this.isTableCell(d.cell)&&!this.isCellSelected(d.cell)){var p=this.model.getParent(d.cell),f=this.model.getParent(p);if(!this.isCellSelected(f)){var r=this.getCellGeometry(d.cell),r=null!=r.alternateBounds?r.alternateBounds:r;if(mxUtils.intersects(n,new mxRectangle(d.x,d.y-2,r.width*e,3))&&this.model.getChildAt(f,0)!=p||mxUtils.intersects(n,new mxRectangle(d.x,d.y+r.height-2,r.width,3))||mxUtils.intersects(n,new mxRectangle(d.x-2,d.y,2,r.height*e))&&
this.model.getChildAt(p,0)!=d.cell||mxUtils.intersects(n,new mxRectangle(d.x+r.width*e-2,d.y,2,r.height*e)))p=this.selectionCellsHandler.isHandled(f),this.selectCellForEvent(f,c.getEvent()),f=this.selectionCellsHandler.getHandler(f),null!=f&&(r=f.getHandleForEvent(c),null!=r&&(f.start(c.getGraphX(),c.getGraphY(),r),f.blockDelayedSelection=!p,c.consume()))}}for(;!c.isConsumed()&&null!=d&&(this.isTableCell(d.cell)||this.isTableRow(d.cell)||this.isTable(d.cell));)this.isSwimlane(d.cell)&&(f=this.getActualStartSize(d.cell),
(0<f.x||0<f.width)&&mxUtils.intersects(n,new mxRectangle(d.x+(f.x-f.width-1)*e+(0==f.x?d.width:0),d.y,1,d.height))||(0<f.y||0<f.height)&&mxUtils.intersects(n,new mxRectangle(d.x,d.y+(f.y-f.height-1)*e+(0==f.y?d.height:0),d.width,1)))&&(this.selectCellForEvent(d.cell,c.getEvent()),f=this.selectionCellsHandler.getHandler(d.cell),null!=f&&(r=mxEvent.CUSTOM_HANDLE-f.customHandles.length+1,f.start(c.getGraphX(),c.getGraphY(),r),c.consume())),d=this.view.getState(this.model.getParent(d.cell))}}}));this.addMouseListener({mouseDown:function(a,
-b){},mouseMove:mxUtils.bind(this,function(a,b){var c=this.selectionCellsHandler.handlers.map,d;for(d in c)if(null!=c[d].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(b.getEvent()))if(d=this.tolerance,null!=k&&null!=g&&null!=h){if(c=g,Math.abs(k.x-b.getGraphX())>d||Math.abs(k.y-b.getGraphY())>d){var e=this.selectionCellsHandler.getHandler(c.cell);null==e&&this.model.isEdge(c.cell)&&(e=this.createHandler(c));if(null!=e&&null!=e.bends&&0<e.bends.length){d=e.getHandleForEvent(h);
-var f=this.view.getEdgeStyle(c),n=f==mxEdgeStyle.EntityRelation;l||m!=mxEvent.LABEL_HANDLE||(d=m);if(n&&0!=d&&d!=e.bends.length-1&&d!=mxEvent.LABEL_HANDLE)!n||null==c.visibleSourceState&&null==c.visibleTargetState||(this.graphHandler.reset(),b.consume());else if(d==mxEvent.LABEL_HANDLE||0==d||null!=c.visibleSourceState||d==e.bends.length-1||null!=c.visibleTargetState)n||d==mxEvent.LABEL_HANDLE||(n=c.absolutePoints,null!=n&&(null==f&&null==d||f==mxEdgeStyle.OrthConnector)&&(d=m,null==d&&(d=new mxRectangle(k.x,
-k.y),d.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(d,n[0].x,n[0].y)?d=0:mxUtils.contains(d,n[n.length-1].x,n[n.length-1].y)?d=e.bends.length-1:null!=f&&(2==n.length||3==n.length&&(0==Math.round(n[0].x-n[1].x)&&0==Math.round(n[1].x-n[2].x)||0==Math.round(n[0].y-n[1].y)&&0==Math.round(n[1].y-n[2].y)))?d=2:(d=mxUtils.findNearestSegment(c,k.x,k.y),d=null==f?mxEvent.VIRTUAL_HANDLE-d:d+1))),null==d&&(d=mxEvent.VIRTUAL_HANDLE)),e.start(b.getGraphX(),b.getGraphX(),d),b.consume(),this.graphHandler.reset()}null!=
-e&&(this.selectionCellsHandler.isHandlerActive(e)?this.isCellSelected(c.cell)||(this.selectionCellsHandler.handlers.put(c.cell,e),this.selectCellForEvent(c.cell,b.getEvent())):this.isCellSelected(c.cell)||e.destroy());l=!1;k=h=g=m=null}}else if(c=b.getState(),null!=c&&this.isCellEditable(c.cell)){e=null;if(this.model.isEdge(c.cell)){if(d=new mxRectangle(b.getGraphX(),b.getGraphY()),d.grow(mxEdgeHandler.prototype.handleImage.width/2),n=c.absolutePoints,null!=n)if(null!=c.text&&null!=c.text.boundingBox&&
+b){},mouseMove:mxUtils.bind(this,function(a,b){var c=this.selectionCellsHandler.handlers.map,d;for(d in c)if(null!=c[d].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(b.getEvent()))if(d=this.tolerance,null!=h&&null!=g&&null!=k){if(c=g,Math.abs(h.x-b.getGraphX())>d||Math.abs(h.y-b.getGraphY())>d){var e=this.selectionCellsHandler.getHandler(c.cell);null==e&&this.model.isEdge(c.cell)&&(e=this.createHandler(c));if(null!=e&&null!=e.bends&&0<e.bends.length){d=e.getHandleForEvent(k);
+var f=this.view.getEdgeStyle(c),n=f==mxEdgeStyle.EntityRelation;l||m!=mxEvent.LABEL_HANDLE||(d=m);if(n&&0!=d&&d!=e.bends.length-1&&d!=mxEvent.LABEL_HANDLE)!n||null==c.visibleSourceState&&null==c.visibleTargetState||(this.graphHandler.reset(),b.consume());else if(d==mxEvent.LABEL_HANDLE||0==d||null!=c.visibleSourceState||d==e.bends.length-1||null!=c.visibleTargetState)n||d==mxEvent.LABEL_HANDLE||(n=c.absolutePoints,null!=n&&(null==f&&null==d||f==mxEdgeStyle.OrthConnector)&&(d=m,null==d&&(d=new mxRectangle(h.x,
+h.y),d.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(d,n[0].x,n[0].y)?d=0:mxUtils.contains(d,n[n.length-1].x,n[n.length-1].y)?d=e.bends.length-1:null!=f&&(2==n.length||3==n.length&&(0==Math.round(n[0].x-n[1].x)&&0==Math.round(n[1].x-n[2].x)||0==Math.round(n[0].y-n[1].y)&&0==Math.round(n[1].y-n[2].y)))?d=2:(d=mxUtils.findNearestSegment(c,h.x,h.y),d=null==f?mxEvent.VIRTUAL_HANDLE-d:d+1))),null==d&&(d=mxEvent.VIRTUAL_HANDLE)),e.start(b.getGraphX(),b.getGraphX(),d),b.consume(),this.graphHandler.reset()}null!=
+e&&(this.selectionCellsHandler.isHandlerActive(e)?this.isCellSelected(c.cell)||(this.selectionCellsHandler.handlers.put(c.cell,e),this.selectCellForEvent(c.cell,b.getEvent())):this.isCellSelected(c.cell)||e.destroy());l=!1;h=k=g=m=null}}else if(c=b.getState(),null!=c&&this.isCellEditable(c.cell)){e=null;if(this.model.isEdge(c.cell)){if(d=new mxRectangle(b.getGraphX(),b.getGraphY()),d.grow(mxEdgeHandler.prototype.handleImage.width/2),n=c.absolutePoints,null!=n)if(null!=c.text&&null!=c.text.boundingBox&&
mxUtils.contains(c.text.boundingBox,b.getGraphX(),b.getGraphY()))e="move";else if(mxUtils.contains(d,n[0].x,n[0].y)||mxUtils.contains(d,n[n.length-1].x,n[n.length-1].y))e="pointer";else if(null!=c.visibleSourceState||null!=c.visibleTargetState)d=this.view.getEdgeStyle(c),e="crosshair",d!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(c)&&(d=mxUtils.findNearestSegment(c,b.getGraphX(),b.getGraphY()),d<n.length-1&&0<=d&&(e=0==Math.round(n[d].x-n[d+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(b.getEvent())){d=
new mxRectangle(b.getGraphX()-1,b.getGraphY()-1);d.grow(mxShape.prototype.svgStrokeTolerance/2);if(this.isTableCell(c.cell)&&(n=this.model.getParent(c.cell),f=this.model.getParent(n),!this.isCellSelected(f)))if(mxUtils.intersects(d,new mxRectangle(c.x-2,c.y,2,c.height))&&this.model.getChildAt(n,0)!=c.cell||mxUtils.intersects(d,new mxRectangle(c.x+c.width-2,c.y,2,c.height)))e="col-resize";else if(mxUtils.intersects(d,new mxRectangle(c.x,c.y-2,c.width,3))&&this.model.getChildAt(f,0)!=n||mxUtils.intersects(d,
new mxRectangle(c.x,c.y+c.height-2,c.width,3)))e="row-resize";for(n=c;null==e&&null!=n&&(this.isTableCell(n.cell)||this.isTableRow(n.cell)||this.isTable(n.cell));){if(this.isSwimlane(n.cell)){var f=this.getActualStartSize(n.cell),p=this.view.scale;(0<f.x||0<f.width)&&mxUtils.intersects(d,new mxRectangle(n.x+(f.x-f.width-1)*p+(0==f.x?n.width*p:0),n.y,1,n.height))?e="col-resize":(0<f.y||0<f.height)&&mxUtils.intersects(d,new mxRectangle(n.x,n.y+(f.y-f.height-1)*p+(0==f.y?n.height:0),n.width,1))&&(e=
-"row-resize")}n=this.view.getState(this.model.getParent(n.cell))}}null!=e&&c.setCursor(e)}}),mouseUp:mxUtils.bind(this,function(a,b){m=k=h=g=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(a){var b=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtmlLabel(a.cell)&&(b=1!=a.style.html?mxUtils.htmlEntities(b,!1):a.view.graph.sanitizeHtml(b));return b};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);
+"row-resize")}n=this.view.getState(this.model.getParent(n.cell))}}null!=e&&c.setCursor(e)}}),mouseUp:mxUtils.bind(this,function(a,b){m=h=k=g=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(a){var b=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtmlLabel(a.cell)&&(b=1!=a.style.html?mxUtils.htmlEntities(b,!1):a.view.graph.sanitizeHtml(b));return b};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);
this.setPanning(!0);this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(a,b){return!1};this.alternateEdgeStyle="vertical";null==e&&this.loadStylesheet();var n=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=
-function(){var a=n.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],c=this.graph.pageFormat,d=this.graph.pageScale,e=c.width*d,c=c.height*d,d=this.graph.view.translate,f=this.graph.view.scale,g=this.graph.getPageLayout(),k=0;k<g.width;k++)b.push(new mxRectangle(((g.x+k)*e+d.x)*f,(g.y*c+d.y)*f,e*f,c*f));for(k=1;k<g.height;k++)b.push(new mxRectangle((g.x*e+d.x)*f,((g.y+k)*c+d.y)*f,e*f,c*f));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=
+function(){var a=n.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],c=this.graph.pageFormat,d=this.graph.pageScale,e=c.width*d,c=c.height*d,d=this.graph.view.translate,f=this.graph.view.scale,g=this.graph.getPageLayout(),h=0;h<g.width;h++)b.push(new mxRectangle(((g.x+h)*e+d.x)*f,(g.y*c+d.y)*f,e*f,c*f));for(h=1;h<g.height;h++)b.push(new mxRectangle((g.x*e+d.x)*f,((g.y+h)*c+d.y)*f,e*f,c*f));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=
function(a,b){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var p=this.graphHandler.getCells;this.graphHandler.getCells=function(a){for(var b=p.apply(this,arguments),c=new mxDictionary,d=[],e=0;e<b.length;e++){var f=this.graph.isTableCell(a)&&this.graph.isTableCell(b[e])&&
this.graph.isCellSelected(b[e])?this.graph.model.getParent(b[e]):this.graph.isTableRow(a)&&this.graph.isTableRow(b[e])&&this.graph.isCellSelected(b[e])?b[e]:this.graph.getCompositeParent(b[e]);null==f||c.get(f)||(c.put(f,!0),d.push(f))}return d};var r=this.graphHandler.start;this.graphHandler.start=function(a,b,c,d){var e=!1;this.graph.isTableCell(a)&&(this.graph.isCellSelected(a)?e=!0:a=this.graph.model.getParent(a));e||this.graph.isTableRow(a)&&this.graph.isCellSelected(a)||(a=this.graph.getCompositeParent(a));
r.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(a,b){b=this.graph.getCompositeParent(b);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var u=new mxRubberband(this);this.getRubberband=function(){return u};var v=(new Date).getTime(),t=0,x=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;x.apply(this,arguments);a!=this.currentState?(v=(new Date).getTime(),t=0):t=(new Date).getTime()-v};var w=
this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<t||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&w.apply(this,arguments)};var y=this.isToggleEvent;this.isToggleEvent=function(a){return y.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a)};var F=u.isForceRubberbandEvent;u.isForceRubberbandEvent=function(a){return F.apply(this,
arguments)&&!mxEvent.isShiftDown(a.getEvent())&&!mxEvent.isControlDown(a.getEvent())||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var I=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(I=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,
-mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=I)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var A=this.click;this.click=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!b||a.isConsumed())return A.apply(this,arguments);var c=b?a.sourceState.cell:a.getCell();null!=c&&(c=this.getClickableLinkForCell(c),null!=c&&(this.isCustomLink(c)?
+mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=I)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var B=this.click;this.click=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!b||a.isConsumed())return B.apply(this,arguments);var c=b?a.sourceState.cell:a.getCell();null!=c&&(c=this.getClickableLinkForCell(c),null!=c&&(this.isCustomLink(c)?
this.customLinkClicked(c):this.openLink(c)));this.isEnabled()&&b&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};var G=this.tooltipHandler.show;this.tooltipHandler.show=function(){G.apply(this,arguments);if(null!=this.div)for(var a=this.div.getElementsByTagName("a"),b=0;b<a.length;b++)null!=a[b].getAttribute("href")&&null==a[b].getAttribute("target")&&a[b].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};
this.getCursorForMouseEvent=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(b?a.sourceState.cell:a.getCell())};var z=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!=this.getClickableLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return z.apply(this,arguments)};this.selectRegion=function(a,b){var c=mxEvent.isAltDown(b)?a:null,c=this.getCells(a.x,
a.y,a.width,a.height,null,null,c,function(a){return"1"==mxUtils.getValue(a.style,"locked","0")},!0);if(this.isToggleEvent(b))for(var d=0;d<c.length;d++)this.selectCellForEvent(c[d],b);else this.selectCellsForEvent(c,b);return c};var D=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,c){return this.graph.isCellSelected(a)?!1:D.apply(this,arguments)};this.isCellLocked=function(a){for(;null!=a;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(a),
@@ -2612,22 +2619,25 @@ Graph.setTransitionForNodes=function(a,b){for(var c=0;c<a.length;c++)mxUtils.set
Graph.sanitizeHtml=function(a,b){return html_sanitize(a,function(a){return null!=a&&"javascript:"!==a.toString().toLowerCase().substring(0,11)?a:null},function(a){return a})};
Graph.sanitizeSvg=function(a){function b(b){for(b=a.getElementsByTagName(b);0<b.length;)b[0].parentNode.removeChild(b[0])}for(var c=a.getElementsByTagName("*"),e=0;e<c.length;e++)for(var d=0;d<c[e].attributes.length;d++){var f=c[e].attributes[d];2<f.name.length&&"on"==f.name.toLowerCase().substring(0,2)&&c[e].removeAttribute(f.name)}b("meta");b("script");b("metadata")};
Graph.clipSvgDataUri=function(a,b){if(!mxClient.IS_IE&&!mxClient.IS_IE11&&null!=a&&"data:image/svg+xml;base64,"==a.substring(0,26))try{var c=document.createElement("div");c.style.position="absolute";c.style.visibility="hidden";var e=decodeURIComponent(escape(atob(a.substring(26)))),d=e.indexOf("<svg");if(0<=d){c.innerHTML=e.substring(d);Graph.sanitizeSvg(c);var f=c.getElementsByTagName("svg");if(0<f.length){if(b||null!=f[0].getAttribute("preserveAspectRatio")){document.body.appendChild(c);try{var d=
-e=1,k=f[0].getAttribute("width"),h=f[0].getAttribute("height"),k=null!=k&&"%"!=k.charAt(k.length-1)?parseFloat(k):NaN,h=null!=h&&"%"!=h.charAt(h.length-1)?parseFloat(h):NaN,g=f[0].getAttribute("viewBox");if(null!=g&&!isNaN(k)&&!isNaN(h)){var m=g.split(" ");4<=g.length&&(e=parseFloat(m[2])/k,d=parseFloat(m[3])/h)}var l=f[0].getBBox();0<l.width&&0<l.height&&(c.getElementsByTagName("svg")[0].setAttribute("viewBox",l.x+" "+l.y+" "+l.width+" "+l.height),c.getElementsByTagName("svg")[0].setAttribute("width",
+e=1,h=f[0].getAttribute("width"),k=f[0].getAttribute("height"),h=null!=h&&"%"!=h.charAt(h.length-1)?parseFloat(h):NaN,k=null!=k&&"%"!=k.charAt(k.length-1)?parseFloat(k):NaN,g=f[0].getAttribute("viewBox");if(null!=g&&!isNaN(h)&&!isNaN(k)){var m=g.split(" ");4<=g.length&&(e=parseFloat(m[2])/h,d=parseFloat(m[3])/k)}var l=f[0].getBBox();0<l.width&&0<l.height&&(c.getElementsByTagName("svg")[0].setAttribute("viewBox",l.x+" "+l.y+" "+l.width+" "+l.height),c.getElementsByTagName("svg")[0].setAttribute("width",
l.width/e),c.getElementsByTagName("svg")[0].setAttribute("height",l.height/d))}catch(n){}finally{document.body.removeChild(c)}}a=Editor.createSvgDataUri(mxUtils.getXml(f[0]))}}}catch(n){}return a};Graph.stripQuotes=function(a){null!=a&&("'"==a.charAt(0)&&(a=a.substring(1)),"'"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1)),'"'==a.charAt(0)&&(a=a.substring(1)),'"'==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1)));return a};
Graph.createRemoveIcon=function(a,b){var c=document.createElement("img");c.setAttribute("src",Dialog.prototype.clearImage);c.setAttribute("title",a);c.setAttribute("width","13");c.setAttribute("height","10");c.style.marginLeft="4px";c.style.marginBottom="-1px";c.style.cursor="pointer";mxEvent.addListener(c,"click",b);return c};Graph.isPageLink=function(a){return null!=a&&"data:page/id,"==a.substring(0,13)};Graph.isLink=function(a){return null!=a&&Graph.linkPattern.test(a)};Graph.linkPattern=/^(https?:\/\/)?((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*(\?[;&a-z\d%_.~+=-]*)?(\#[-a-z\d_]*)?$/i;
mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null;Graph.prototype.linkPolicy="frame"==urlParams.target?"blank":urlParams.target||"auto";Graph.prototype.linkTarget="frame"==urlParams.target?"_self":"_blank";Graph.prototype.linkRelation="nofollow noopener noreferrer";Graph.prototype.defaultScrollbars=!mxClient.IS_IOS;Graph.prototype.defaultPageVisible=!0;Graph.prototype.defaultGridEnabled="0"!=urlParams.grid;Graph.prototype.lightbox=!1;
Graph.prototype.defaultPageBackgroundColor="#ffffff";Graph.prototype.defaultPageBorderColor="#ffffff";Graph.prototype.shapeForegroundColor="#000000";Graph.prototype.shapeBackgroundColor="#ffffff";Graph.prototype.scrollTileSize=new mxRectangle(0,0,400,400);Graph.prototype.transparentBackground=!0;Graph.prototype.selectParentAfterDelete=!1;Graph.prototype.defaultEdgeLength=80;Graph.prototype.edgeMode=!1;Graph.prototype.connectionArrowsEnabled=!0;
Graph.prototype.placeholderPattern=RegExp("%(date{.*}|[^%^{^}^ ^\"^ '^=^;]+)%","g");Graph.prototype.absoluteUrlPattern=/^(?:[a-z]+:)?\/\//i;Graph.prototype.defaultThemeName="default";Graph.prototype.defaultThemes={};Graph.prototype.baseUrl=null!=urlParams.base?decodeURIComponent(urlParams.base):(window!=window.top?document.referrer:document.location.toString()).split("#")[0];Graph.prototype.editAfterInsert=!1;Graph.prototype.builtInProperties=["label","tooltip","placeholders","placeholder"];
-Graph.prototype.standalone=!1;Graph.prototype.enableFlowAnimation=!1;
-Graph.prototype.init=function(a){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(a,b){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var c=a.view.graph.tolerance,e=!0,k=null,h=mxUtils.bind(this,function(a){e=!0;k=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a))}),g=mxUtils.bind(this,function(a){e=e&&null!=k&&Math.abs(k.x-mxEvent.getClientX(a))<c&&Math.abs(k.y-mxEvent.getClientY(a))<c}),m=mxUtils.bind(this,function(c){if(e)for(var d=mxEvent.getSource(c);null!=
-d&&d!=b.node;){if("a"==d.nodeName.toLowerCase()){a.view.graph.labelLinkClicked(a,d,c);break}d=d.parentNode}});mxEvent.addGestureListeners(b.node,h,g,m);mxEvent.addListener(b.node,"click",function(a){mxEvent.consume(a)})};if(null!=this.tooltipHandler){var b=this.tooltipHandler.init;this.tooltipHandler.init=function(){b.apply(this,arguments);null!=this.div&&mxEvent.addListener(this.div,"click",mxUtils.bind(this,function(a){var b=mxEvent.getSource(a);"A"==b.nodeName&&(b=b.getAttribute("href"),null!=
+Graph.prototype.standalone=!1;Graph.prototype.enableFlowAnimation=!1;Graph.prototype.roundableShapes="label rectangle internalStorage corner parallelogram swimlane triangle trapezoid ext step tee process link rhombus offPageConnector loopLimit hexagon manualInput card curlyBracket singleArrow callout doubleArrow flexArrow umlLifeline".split(" ");
+Graph.prototype.init=function(a){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(a,b){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var c=a.view.graph.tolerance,e=!0,h=null,k=mxUtils.bind(this,function(a){e=!0;h=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a))}),g=mxUtils.bind(this,function(a){e=e&&null!=h&&Math.abs(h.x-mxEvent.getClientX(a))<c&&Math.abs(h.y-mxEvent.getClientY(a))<c}),m=mxUtils.bind(this,function(c){if(e)for(var d=mxEvent.getSource(c);null!=
+d&&d!=b.node;){if("a"==d.nodeName.toLowerCase()){a.view.graph.labelLinkClicked(a,d,c);break}d=d.parentNode}});mxEvent.addGestureListeners(b.node,k,g,m);mxEvent.addListener(b.node,"click",function(a){mxEvent.consume(a)})};if(null!=this.tooltipHandler){var b=this.tooltipHandler.init;this.tooltipHandler.init=function(){b.apply(this,arguments);null!=this.div&&mxEvent.addListener(this.div,"click",mxUtils.bind(this,function(a){var b=mxEvent.getSource(a);"A"==b.nodeName&&(b=b.getAttribute("href"),null!=
b&&this.graph.isCustomLink(b)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&this.graph.customLinkClicked(b)&&mxEvent.consume(a))}))}}this.addListener(mxEvent.SIZE,mxUtils.bind(this,function(a,b){if(null!=this.container&&this.flowAnimationStyle){var c=this.flowAnimationStyle.getAttribute("id");this.flowAnimationStyle.innerHTML=this.getFlowAnimationStyleCss(c)}}));this.initLayoutManager()};
-(function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.getVerticesAndEdges=function(a,b){a=null!=a?a:!0;b=null!=b?b:!0;var c=this.model;return c.filterDescendants(function(d){return a&&c.isVertex(d)||b&&c.isEdge(d)},c.getRoot())};Graph.prototype.getCommonStyle=function(a){for(var b={},c=0;c<a.length;c++){var d=this.view.getState(a[c]);this.mergeStyle(d.style,b,0==c)}return b};Graph.prototype.mergeStyle=function(a,
-b,c){if(null!=a){var d={},e;for(e in a){var f=a[e];null!=f&&(d[e]=!0,null==b[e]&&c?b[e]=f:b[e]!=f&&delete b[e])}for(e in b)d[e]||delete b[e]}};Graph.prototype.getStartEditingCell=function(a,b){var c=this.getCellStyle(a),c=parseInt(mxUtils.getValue(c,mxConstants.STYLE_STARTSIZE,0));this.isTable(a)&&(!this.isSwimlane(a)||0==c)&&""==this.getLabel(a)&&0<this.model.getChildCount(a)&&(a=this.model.getChildAt(a,0),c=this.getCellStyle(a),c=parseInt(mxUtils.getValue(c,mxConstants.STYLE_STARTSIZE,0)));if(this.isTableRow(a)&&
+(function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.isFillState=function(a){return!this.isSpecialColor(a.style[mxConstants.STYLE_FILLCOLOR])&&(this.model.isVertex(a.cell)||"arrow"==mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null)||"filledEdge"==mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null)||"flexArrow"==mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null))};Graph.prototype.isStrokeState=function(a){return!this.isSpecialColor(a.style[mxConstants.STYLE_STROKECOLOR])};
+Graph.prototype.isSpecialColor=function(a){return 0<=mxUtils.indexOf([mxConstants.STYLE_STROKECOLOR,mxConstants.STYLE_FILLCOLOR,"inherit","swimlane","indicated"],a)};Graph.prototype.isGlassState=function(a){a=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);return"label"==a||"rectangle"==a||"internalStorage"==a||"ext"==a||"umlLifeline"==a||"swimlane"==a||"process"==a};Graph.prototype.isRoundedState=function(a){return null!=a.shape?a.shape.isRoundable():0<=mxUtils.indexOf(this.roundableShapes,
+mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null))};Graph.prototype.isLineJumpState=function(a){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);return!mxUtils.getValue(a.style,mxConstants.STYLE_CURVED,!1)&&("connector"==b||"filledEdge"==b)};Graph.prototype.isAutoSizeState=function(a){return"1"==mxUtils.getValue(a.style,mxConstants.STYLE_AUTOSIZE,null)};Graph.prototype.isImageState=function(a){a=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);return"label"==a||"image"==a};
+Graph.prototype.isShadowState=function(a){return"image"!=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null)};Graph.prototype.getVerticesAndEdges=function(a,b){a=null!=a?a:!0;b=null!=b?b:!0;var c=this.model;return c.filterDescendants(function(d){return a&&c.isVertex(d)||b&&c.isEdge(d)},c.getRoot())};Graph.prototype.getCommonStyle=function(a){for(var b={},c=0;c<a.length;c++){var d=this.view.getState(a[c]);this.mergeStyle(d.style,b,0==c)}return b};Graph.prototype.mergeStyle=function(a,b,c){if(null!=
+a){var d={},e;for(e in a){var f=a[e];null!=f&&(d[e]=!0,null==b[e]&&c?b[e]=f:b[e]!=f&&delete b[e])}for(e in b)d[e]||delete b[e]}};Graph.prototype.getStartEditingCell=function(a,b){var c=this.getCellStyle(a),c=parseInt(mxUtils.getValue(c,mxConstants.STYLE_STARTSIZE,0));this.isTable(a)&&(!this.isSwimlane(a)||0==c)&&""==this.getLabel(a)&&0<this.model.getChildCount(a)&&(a=this.model.getChildAt(a,0),c=this.getCellStyle(a),c=parseInt(mxUtils.getValue(c,mxConstants.STYLE_STARTSIZE,0)));if(this.isTableRow(a)&&
(!this.isSwimlane(a)||0==c)&&""==this.getLabel(a)&&0<this.model.getChildCount(a))for(c=0;c<this.model.getChildCount(a);c++){var d=this.model.getChildAt(a,c);if(this.isCellEditable(d)){a=d;break}}return a};Graph.prototype.copyStyle=function(a){return this.getCellStyle(a,!1)};Graph.prototype.pasteStyle=function(a,b,c){c=null!=c?c:Graph.pasteStyles;Graph.removeKeys(a,function(a){return 0>mxUtils.indexOf(c,a)});this.updateCellStyles(a,b)};Graph.prototype.updateCellStyles=function(a,b){this.model.beginUpdate();
try{for(var c=0;c<b.length;c++)if(this.model.isVertex(b[c])||this.model.isEdge(b[c])){var d=this.getCellStyle(b[c],!1),e;for(e in a){var f=a[e];d[e]!=f&&this.setCellStyles(e,f,[b[c]])}}}finally{this.model.endUpdate()}};Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&(this.isCssTransformsSupported()||mxClient.IS_IOS)};Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&
-!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(a,b,c,d,e,f){this.useCssTransforms&&(a=a/this.currentScale-this.currentTranslate.x,b=b/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(a,b,c,d,e,f){d=null!=d?d:!0;e=null!=e?e:!0;null==c&&(c=this.getCurrentRoot(),null==c&&(c=this.getModel().getRoot()));if(null!=c)for(var g=this.model.getChildCount(c)-1;0<=g;g--){var k=this.model.getChildAt(c,
-g),h=this.getScaledCellAt(a,b,k,d,e,f);if(null!=h)return h;if(this.isCellVisible(k)&&(e&&this.model.isEdge(k)||d&&this.model.isVertex(k))&&(h=this.view.getState(k),null!=h&&(null==f||!f(h,a,b))&&this.intersects(h,a,b)))return k}return null};Graph.prototype.isRecursiveVertexResize=function(a){return!this.isSwimlane(a.cell)&&0<this.model.getChildCount(a.cell)&&!this.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};Graph.prototype.getAbsoluteParent=
+!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(a,b,c,d,e,f){this.useCssTransforms&&(a=a/this.currentScale-this.currentTranslate.x,b=b/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(a,b,c,d,e,f){d=null!=d?d:!0;e=null!=e?e:!0;null==c&&(c=this.getCurrentRoot(),null==c&&(c=this.getModel().getRoot()));if(null!=c)for(var g=this.model.getChildCount(c)-1;0<=g;g--){var h=this.model.getChildAt(c,
+g),k=this.getScaledCellAt(a,b,h,d,e,f);if(null!=k)return k;if(this.isCellVisible(h)&&(e&&this.model.isEdge(h)||d&&this.model.isVertex(h))&&(k=this.view.getState(h),null!=k&&(null==f||!f(k,a,b))&&this.intersects(k,a,b)))return h}return null};Graph.prototype.isRecursiveVertexResize=function(a){return!this.isSwimlane(a.cell)&&0<this.model.getChildCount(a.cell)&&!this.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};Graph.prototype.getAbsoluteParent=
function(a){for(var b=this.getCellGeometry(a);null!=b&&b.relative;)a=this.getModel().getParent(a),b=this.getCellGeometry(a);return a};Graph.prototype.isPart=function(a){return"1"==mxUtils.getValue(this.getCurrentCellStyle(a),"part","0")||this.isTableCell(a)||this.isTableRow(a)};Graph.prototype.getCompositeParent=function(a){for(;this.isPart(a);){var b=this.model.getParent(a);if(!this.model.isVertex(b))break;a=b}return a};Graph.prototype.filterSelectionCells=function(a){var b=this.getSelectionCells();
if(null!=a){for(var c=[],d=0;d<b.length;d++)a(b[d])||c.push(b[d]);b=c}return b};var a=mxGraph.prototype.scrollRectToVisible;Graph.prototype.scrollRectToVisible=function(b){if(this.useCssTransforms){var c=this.currentScale,d=this.currentTranslate;b=new mxRectangle((b.x+2*d.x)*c-d.x,(b.y+2*d.y)*c-d.y,b.width*c,b.height*c)}a.apply(this,arguments)};mxCellHighlight.prototype.getStrokeWidth=function(a){a=this.strokeWidth;this.graph.useCssTransforms&&(a/=this.graph.currentScale);return a};mxGraphView.prototype.getGraphBounds=
function(){var a=this.graphBounds;if(this.graph.useCssTransforms)var b=this.graph.currentTranslate,c=this.graph.currentScale,a=new mxRectangle((a.x+b.x)*c,(a.y+b.y)*c,a.width*c,a.height*c);return a};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var b=mxGraphView.prototype.validate;mxGraphView.prototype.validate=function(a){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=
@@ -2646,10 +2656,10 @@ mxUtils.getValue(c,"parentPadding",20),e.maintainParentLocation=!0,e.intraCellSp
e;if("circleLayout"==c.childLayout)return new mxCircleLayout(this.graph);if("organicLayout"==c.childLayout)return new mxFastOrganicLayout(this.graph);if("tableLayout"==c.childLayout)return new TableLayout(this.graph)}return null}};Graph.prototype.getDataForCells=function(a){for(var b=[],c=0;c<a.length;c++){var e=null!=a[c].value?a[c].value.attributes:null,d={};d.id=a[c].id;if(null!=e)for(var f=0;f<e.length;f++)d[e[f].nodeName]=e[f].nodeValue;else d.label=this.convertValueToString(a[c]);b.push(d)}return b};
Graph.prototype.getNodesForCells=function(a){for(var b=[],c=0;c<a.length;c++){var e=this.view.getState(a[c]);if(null!=e){for(var d=this.cellRenderer.getShapesForState(e),f=0;f<d.length;f++)null!=d[f]&&null!=d[f].node&&b.push(d[f].node);null!=e.control&&null!=e.control.node&&b.push(e.control.node)}}return b};
Graph.prototype.createWipeAnimations=function(a,b){for(var c=[],e=0;e<a.length;e++){var d=this.view.getState(a[e]);null!=d&&null!=d.shape&&(this.model.isEdge(d.cell)&&null!=d.absolutePoints&&1<d.absolutePoints.length?c.push(this.createEdgeWipeAnimation(d,b)):this.model.isVertex(d.cell)&&null!=d.shape.bounds&&c.push(this.createVertexWipeAnimation(d,b)))}return c};
-Graph.prototype.createEdgeWipeAnimation=function(a,b){var c=a.absolutePoints.slice(),e=a.segments,d=a.length,f=c.length;return{execute:mxUtils.bind(this,function(k,h){if(null!=a.shape){var g=[c[0]],m=k/h;b||(m=1-m);for(var l=d*m,n=1;n<f;n++)if(l<=e[n-1]){g.push(new mxPoint(c[n-1].x+(c[n].x-c[n-1].x)*l/e[n-1],c[n-1].y+(c[n].y-c[n-1].y)*l/e[n-1]));break}else l-=e[n-1],g.push(c[n]);a.shape.points=g;a.shape.redraw();0==k&&Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),1);null!=a.text&&null!=
+Graph.prototype.createEdgeWipeAnimation=function(a,b){var c=a.absolutePoints.slice(),e=a.segments,d=a.length,f=c.length;return{execute:mxUtils.bind(this,function(h,k){if(null!=a.shape){var g=[c[0]],m=h/k;b||(m=1-m);for(var l=d*m,n=1;n<f;n++)if(l<=e[n-1]){g.push(new mxPoint(c[n-1].x+(c[n].x-c[n-1].x)*l/e[n-1],c[n-1].y+(c[n].y-c[n-1].y)*l/e[n-1]));break}else l-=e[n-1],g.push(c[n]);a.shape.points=g;a.shape.redraw();0==h&&Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),1);null!=a.text&&null!=
a.text.node&&(a.text.node.style.opacity=m)}}),stop:mxUtils.bind(this,function(){null!=a.shape&&(a.shape.points=c,a.shape.redraw(),null!=a.text&&null!=a.text.node&&(a.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),b?1:0))})}};
Graph.prototype.createVertexWipeAnimation=function(a,b){var c=new mxRectangle.fromRectangle(a.shape.bounds);return{execute:mxUtils.bind(this,function(e,d){if(null!=a.shape){var f=e/d;b||(f=1-f);a.shape.bounds=new mxRectangle(c.x,c.y,c.width*f,c.height);a.shape.redraw();0==e&&Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),1);null!=a.text&&null!=a.text.node&&(a.text.node.style.opacity=f)}}),stop:mxUtils.bind(this,function(){null!=a.shape&&(a.shape.bounds=c,a.shape.redraw(),null!=a.text&&null!=
-a.text.node&&(a.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),b?1:0))})}};Graph.prototype.executeAnimations=function(a,b,c,e){c=null!=c?c:30;e=null!=e?e:30;var d=null,f=0,k=mxUtils.bind(this,function(){if(f==c||this.stoppingCustomActions){window.clearInterval(d);for(var e=0;e<a.length;e++)a[e].stop();null!=b&&b()}else for(e=0;e<a.length;e++)a[e].execute(f,c);f++}),d=window.setInterval(k,e);k()};
+a.text.node&&(a.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),b?1:0))})}};Graph.prototype.executeAnimations=function(a,b,c,e){c=null!=c?c:30;e=null!=e?e:30;var d=null,f=0,h=mxUtils.bind(this,function(){if(f==c||this.stoppingCustomActions){window.clearInterval(d);for(var e=0;e<a.length;e++)a[e].stop();null!=b&&b()}else for(e=0;e<a.length;e++)a[e].execute(f,c);f++}),d=window.setInterval(h,e);h()};
Graph.prototype.getPageSize=function(){return this.pageVisible?new mxRectangle(0,0,this.pageFormat.width*this.pageScale,this.pageFormat.height*this.pageScale):this.scrollTileSize};
Graph.prototype.getPageLayout=function(){var a=this.getPageSize(),b=this.getGraphBounds();if(0==b.width||0==b.height)return new mxRectangle(0,0,1,1);var c=Math.floor(Math.ceil(b.x/this.view.scale-this.view.translate.x)/a.width),e=Math.floor(Math.ceil(b.y/this.view.scale-this.view.translate.y)/a.height);return new mxRectangle(c,e,Math.ceil((Math.floor((b.x+b.width)/this.view.scale)-this.view.translate.x)/a.width)-c,Math.ceil((Math.floor((b.y+b.height)/this.view.scale)-this.view.translate.y)/a.height)-
e)};Graph.prototype.sanitizeHtml=function(a,b){return Graph.sanitizeHtml(a,b)};Graph.prototype.updatePlaceholders=function(){var a=!1,b;for(b in this.model.cells){var c=this.model.cells[b];this.isReplacePlaceholders(c)&&(this.view.invalidate(c,!1,!1),a=!0)}a&&this.view.validate()};Graph.prototype.isReplacePlaceholders=function(a){return null!=a.value&&"object"==typeof a.value&&"1"==a.value.getAttribute("placeholders")};
@@ -2659,23 +2669,23 @@ Graph.prototype.getLabel=function(a){var b=mxGraph.prototype.getLabel.apply(this
Graph.prototype.setGridSize=function(a){this.gridSize=a;this.fireEvent(new mxEventObject("gridSizeChanged"))};Graph.prototype.setDefaultParent=function(a){this.defaultParent=a;this.fireEvent(new mxEventObject("defaultParentChanged"))};Graph.prototype.getClickableLinkForCell=function(a){do{var b=this.getLinkForCell(a);if(null!=b)return b;a=this.model.getParent(a)}while(null!=a);return null};
Graph.prototype.getGlobalVariable=function(a){var b=null;"date"==a?b=(new Date).toLocaleDateString():"time"==a?b=(new Date).toLocaleTimeString():"timestamp"==a?b=(new Date).toLocaleString():"date{"==a.substring(0,5)&&(a=a.substring(5,a.length-1),b=this.formatDate(new Date,a));return b};
Graph.prototype.formatDate=function(a,b,c){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",
-shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var e=this.dateFormatCache,d=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,f=/[^-+\dA-Z]/g,k=function(a,b){a=String(a);for(b=b||2;a.length<b;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)||
-/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(e.masks[b]||b||e.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),c=!0);var h=c?"getUTC":"get",g=a[h+"Date"](),m=a[h+"Day"](),l=a[h+"Month"](),n=a[h+"FullYear"](),p=a[h+"Hours"](),r=a[h+"Minutes"](),u=a[h+"Seconds"](),h=a[h+"Milliseconds"](),v=c?0:a.getTimezoneOffset(),t={d:g,dd:k(g),ddd:e.i18n.dayNames[m],dddd:e.i18n.dayNames[m+7],m:l+1,mm:k(l+1),mmm:e.i18n.monthNames[l],mmmm:e.i18n.monthNames[l+
-12],yy:String(n).slice(2),yyyy:n,h:p%12||12,hh:k(p%12||12),H:p,HH:k(p),M:r,MM:k(r),s:u,ss:k(u),l:k(h,3),L:k(99<h?Math.round(h/10):h),t:12>p?"a":"p",tt:12>p?"am":"pm",T:12>p?"A":"P",TT:12>p?"AM":"PM",Z:c?"UTC":(String(a).match(d)||[""]).pop().replace(f,""),o:(0<v?"-":"+")+k(100*Math.floor(Math.abs(v)/60)+Math.abs(v)%60,4),S:["th","st","nd","rd"][3<g%10?0:(10!=g%100-g%10)*g%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in t?t[a]:a.slice(1,
+shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var e=this.dateFormatCache,d=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,f=/[^-+\dA-Z]/g,h=function(a,b){a=String(a);for(b=b||2;a.length<b;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)||
+/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(e.masks[b]||b||e.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),c=!0);var k=c?"getUTC":"get",g=a[k+"Date"](),m=a[k+"Day"](),l=a[k+"Month"](),n=a[k+"FullYear"](),p=a[k+"Hours"](),r=a[k+"Minutes"](),u=a[k+"Seconds"](),k=a[k+"Milliseconds"](),v=c?0:a.getTimezoneOffset(),t={d:g,dd:h(g),ddd:e.i18n.dayNames[m],dddd:e.i18n.dayNames[m+7],m:l+1,mm:h(l+1),mmm:e.i18n.monthNames[l],mmmm:e.i18n.monthNames[l+
+12],yy:String(n).slice(2),yyyy:n,h:p%12||12,hh:h(p%12||12),H:p,HH:h(p),M:r,MM:h(r),s:u,ss:h(u),l:h(k,3),L:h(99<k?Math.round(k/10):k),t:12>p?"a":"p",tt:12>p?"am":"pm",T:12>p?"A":"P",TT:12>p?"AM":"PM",Z:c?"UTC":(String(a).match(d)||[""]).pop().replace(f,""),o:(0<v?"-":"+")+h(100*Math.floor(Math.abs(v)/60)+Math.abs(v)%60,4),S:["th","st","nd","rd"][3<g%10?0:(10!=g%100-g%10)*g%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in t?t[a]:a.slice(1,
a.length-1)})};Graph.prototype.getLayerForCells=function(a){var b=null;if(0<a.length){for(b=a[0];!this.model.isLayer(b);)b=this.model.getParent(b);for(var c=1;c<a.length;c++)if(!this.model.isAncestor(b,a[c])){b=null;break}}return b};
-Graph.prototype.createLayersDialog=function(a,b){var c=document.createElement("div");c.style.position="absolute";for(var e=this.getModel(),d=e.getChildCount(e.root),f=0;f<d;f++)mxUtils.bind(this,function(d){function f(){e.isVisible(d)?(l.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(k,75)):(l.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(k,25))}var g=this.convertValueToString(d)||mxResources.get("background")||"Background",k=document.createElement("div");k.style.overflow=
-"hidden";k.style.textOverflow="ellipsis";k.style.padding="2px";k.style.whiteSpace="nowrap";k.style.cursor="pointer";k.setAttribute("title",mxResources.get(e.isVisible(d)?"hideIt":"show",[g]));var l=document.createElement("img");l.setAttribute("draggable","false");l.setAttribute("align","absmiddle");l.setAttribute("border","0");l.style.position="relative";l.style.width="16px";l.style.padding="0px 6px 0 4px";b&&(l.style.filter="invert(100%)",l.style.top="-2px");k.appendChild(l);mxUtils.write(k,g);c.appendChild(k);
-mxEvent.addListener(k,"click",function(){e.setVisible(d,!e.isVisible(d));f();null!=a&&a(d)});f()})(e.getChildAt(e.root,f));return c};
-Graph.prototype.replacePlaceholders=function(a,b,c,e){e=[];if(null!=b){for(var d=0;match=this.placeholderPattern.exec(b);){var f=match[0];if(2<f.length&&"%label%"!=f&&"%tooltip%"!=f){var k=null;if(match.index>d&&"%"==b.charAt(match.index-1))k=f.substring(1);else{var h=f.substring(1,f.length-1);if("id"==h)k=a.id;else if(0>h.indexOf("{"))for(var g=a;null==k&&null!=g;)null!=g.value&&"object"==typeof g.value&&(Graph.translateDiagram&&null!=Graph.diagramLanguage&&(k=g.getAttribute(h+"_"+Graph.diagramLanguage)),
-null==k&&(k=g.hasAttribute(h)?null!=g.getAttribute(h)?g.getAttribute(h):"":null)),g=this.model.getParent(g);null==k&&(k=this.getGlobalVariable(h));null==k&&null!=c&&(k=c[h])}e.push(b.substring(d,match.index)+(null!=k?k:f));d=match.index+f.length}}e.push(b.substring(d))}return e.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var b=[],c=0;c<a.length;c++){var e=this.model.getCell(a[c].id);null!=e&&b.push(e)}this.setSelectionCells(b)}else this.clearSelection()};
+Graph.prototype.createLayersDialog=function(a,b){var c=document.createElement("div");c.style.position="absolute";for(var e=this.getModel(),d=e.getChildCount(e.root),f=0;f<d;f++)mxUtils.bind(this,function(d){function f(){e.isVisible(d)?(l.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(h,75)):(l.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(h,25))}var g=this.convertValueToString(d)||mxResources.get("background")||"Background",h=document.createElement("div");h.style.overflow=
+"hidden";h.style.textOverflow="ellipsis";h.style.padding="2px";h.style.whiteSpace="nowrap";h.style.cursor="pointer";h.setAttribute("title",mxResources.get(e.isVisible(d)?"hideIt":"show",[g]));var l=document.createElement("img");l.setAttribute("draggable","false");l.setAttribute("align","absmiddle");l.setAttribute("border","0");l.style.position="relative";l.style.width="16px";l.style.padding="0px 6px 0 4px";b&&(l.style.filter="invert(100%)",l.style.top="-2px");h.appendChild(l);mxUtils.write(h,g);c.appendChild(h);
+mxEvent.addListener(h,"click",function(){e.setVisible(d,!e.isVisible(d));f();null!=a&&a(d)});f()})(e.getChildAt(e.root,f));return c};
+Graph.prototype.replacePlaceholders=function(a,b,c,e){e=[];if(null!=b){for(var d=0;match=this.placeholderPattern.exec(b);){var f=match[0];if(2<f.length&&"%label%"!=f&&"%tooltip%"!=f){var h=null;if(match.index>d&&"%"==b.charAt(match.index-1))h=f.substring(1);else{var k=f.substring(1,f.length-1);if("id"==k)h=a.id;else if(0>k.indexOf("{"))for(var g=a;null==h&&null!=g;)null!=g.value&&"object"==typeof g.value&&(Graph.translateDiagram&&null!=Graph.diagramLanguage&&(h=g.getAttribute(k+"_"+Graph.diagramLanguage)),
+null==h&&(h=g.hasAttribute(k)?null!=g.getAttribute(k)?g.getAttribute(k):"":null)),g=this.model.getParent(g);null==h&&(h=this.getGlobalVariable(k));null==h&&null!=c&&(h=c[k])}e.push(b.substring(d,match.index)+(null!=h?h:f));d=match.index+f.length}}e.push(b.substring(d))}return e.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var b=[],c=0;c<a.length;c++){var e=this.model.getCell(a[c].id);null!=e&&b.push(e)}this.setSelectionCells(b)}else this.clearSelection()};
Graph.prototype.selectCellsForConnectVertex=function(a,b,c){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=c&&(mxEvent.isTouchEvent(b)?c.update(c.getState(this.view.getState(a[1]))):c.reset())):this.setSelectionCells(a)};Graph.prototype.isCloneConnectSource=function(a){var b=null;null!=this.layoutManager&&(b=this.layoutManager.getLayout(this.model.getParent(a)));return this.isTableRow(a)||this.isTableCell(a)||null!=b&&b.constructor==mxStackLayout};
-Graph.prototype.connectVertex=function(a,b,c,e,d,f,k,h){f=f?f:!1;if(a.geometry.relative&&this.model.isEdge(a.parent))return[];for(;a.geometry.relative&&this.model.isVertex(a.parent);)a=a.parent;var g=this.isCloneConnectSource(a),m=g?a:this.getCompositeParent(a),l=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(m.geometry.x,m.geometry.y);b==mxConstants.DIRECTION_NORTH?(l.x+=m.geometry.width/2,l.y-=c):b==
+Graph.prototype.connectVertex=function(a,b,c,e,d,f,h,k){f=f?f:!1;if(a.geometry.relative&&this.model.isEdge(a.parent))return[];for(;a.geometry.relative&&this.model.isVertex(a.parent);)a=a.parent;var g=this.isCloneConnectSource(a),m=g?a:this.getCompositeParent(a),l=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(m.geometry.x,m.geometry.y);b==mxConstants.DIRECTION_NORTH?(l.x+=m.geometry.width/2,l.y-=c):b==
mxConstants.DIRECTION_SOUTH?(l.x+=m.geometry.width/2,l.y+=m.geometry.height+c):(l.x=b==mxConstants.DIRECTION_WEST?l.x-c:l.x+(m.geometry.width+c),l.y+=m.geometry.height/2);var n=this.view.getState(this.model.getParent(a));c=this.view.scale;var p=this.view.translate,m=p.x*c,p=p.y*c;null!=n&&this.model.isVertex(n.cell)&&(m=n.x,p=n.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(l.x+=a.parent.geometry.x,l.y+=a.parent.geometry.y);f=f?null:(new mxRectangle(m+l.x*c,p+l.y*c)).grow(40*c);f=null!=f?
this.getCells(0,0,0,0,null,null,f,null,!0):null;var n=this.view.getState(a),r=null,u=null;if(null!=f){f=f.reverse();for(var v=0;v<f.length;v++)if(!this.isCellLocked(f[v])&&!this.model.isEdge(f[v])&&f[v]!=a)if(!this.model.isAncestor(a,f[v])&&this.isContainer(f[v])&&(null==r||f[v]==this.model.getParent(a)))r=f[v];else if(null==u&&this.isCellConnectable(f[v])&&!this.model.isAncestor(f[v],a)&&!this.isSwimlane(f[v])){var t=this.view.getState(f[v]);null==n||null==t||mxUtils.intersects(n,t)||(u=f[v])}}var x=
-!mxEvent.isShiftDown(e)||mxEvent.isControlDown(e)||d;x&&("1"!=urlParams.sketch||d)&&(b==mxConstants.DIRECTION_NORTH?l.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?l.y+=a.geometry.height/2:l.x=b==mxConstants.DIRECTION_WEST?l.x-a.geometry.width/2:l.x+a.geometry.width/2);var w=[],y=u,u=r;d=mxUtils.bind(this,function(c){if(null==k||null!=c||null==u&&g){this.model.beginUpdate();try{if(null==y&&x){var d=this.getAbsoluteParent(null!=c?c:a),d=g?a:this.getCompositeParent(d);y=null!=c?c:this.duplicateCells([d],
+!mxEvent.isShiftDown(e)||mxEvent.isControlDown(e)||d;x&&("1"!=urlParams.sketch||d)&&(b==mxConstants.DIRECTION_NORTH?l.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?l.y+=a.geometry.height/2:l.x=b==mxConstants.DIRECTION_WEST?l.x-a.geometry.width/2:l.x+a.geometry.width/2);var w=[],y=u,u=r;d=mxUtils.bind(this,function(c){if(null==h||null!=c||null==u&&g){this.model.beginUpdate();try{if(null==y&&x){var d=this.getAbsoluteParent(null!=c?c:a),d=g?a:this.getCompositeParent(d);y=null!=c?c:this.duplicateCells([d],
!1)[0];null!=c&&this.addCells([y],this.model.getParent(a),null,null,null,!0);var f=this.getCellGeometry(y);null!=f&&(null!=c&&"1"==urlParams.sketch&&(b==mxConstants.DIRECTION_NORTH?l.y-=f.height/2:b==mxConstants.DIRECTION_SOUTH?l.y+=f.height/2:l.x=b==mxConstants.DIRECTION_WEST?l.x-f.width/2:l.x+f.width/2),f.x=l.x-f.width/2,f.y=l.y-f.height/2);null!=r?(this.addCells([y],r,null,null,null,!0),u=null):x&&!g&&this.addCells([y],this.getDefaultParent(),null,null,null,!0)}var m=mxEvent.isControlDown(e)&&
mxEvent.isShiftDown(e)&&x||null==u&&g?null:this.insertEdge(this.model.getParent(a),null,"",a,y,this.createCurrentEdgeStyle());if(null!=m&&this.connectionHandler.insertBeforeSource){var n=null;for(c=a;null!=c.parent&&null!=c.geometry&&c.geometry.relative&&c.parent!=m.parent;)c=this.model.getParent(c);null!=c&&null!=c.parent&&c.parent==m.parent&&(n=c.parent.getIndex(c),this.model.add(c.parent,m,n))}null==u&&null!=y&&null!=a.parent&&g&&b==mxConstants.DIRECTION_WEST&&(n=a.parent.getIndex(a),this.model.add(a.parent,
-y,n));null!=m&&w.push(m);null==u&&null!=y&&w.push(y);null==y&&null!=m&&m.geometry.setTerminalPoint(l,!1);null!=m&&this.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{this.model.endUpdate()}}if(null!=h)h(w);else return w});if(null==k||null!=y||!x||null==u&&g)return d(y);k(m+l.x*c,p+l.y*c,d)};
+y,n));null!=m&&w.push(m);null==u&&null!=y&&w.push(y);null==y&&null!=m&&m.geometry.setTerminalPoint(l,!1);null!=m&&this.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{this.model.endUpdate()}}if(null!=k)k(w);else return w});if(null==h||null!=y||!x||null==u&&g)return d(y);h(m+l.x*c,p+l.y*c,d)};
Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),b=[],c,e;for(e in this.model.cells)if(c=this.model.cells[e],this.model.isVertex(c)||this.model.isEdge(c))this.isHtmlLabel(c)?(a.innerHTML=this.sanitizeHtml(this.getLabel(c)),c=mxUtils.extractTextWithWhitespace([a])):c=this.getLabel(c),c=mxUtils.trim(c.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<c.length&&b.push(c);return b.join(" ")};
Graph.prototype.convertValueToString=function(a){var b=this.model.getValue(a);if(null!=b&&"object"==typeof b){var c=null;if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var b=a.getAttribute("placeholder"),e=a;null==c&&null!=e;)null!=e.value&&"object"==typeof e.value&&(c=e.hasAttribute(b)?null!=e.getAttribute(b)?e.getAttribute(b):"":null),e=this.model.getParent(e);else c=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(c=b.getAttribute("label_"+Graph.diagramLanguage)),
null==c&&(c=b.getAttribute("label")||"");return c||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null};
@@ -2684,10 +2694,10 @@ Graph.prototype.updateHorizontalStyle=function(a,b){if(null!=a&&null!=b&&null!=t
Graph.prototype.replaceDefaultColors=function(a,b){if(null!=b){var c=mxUtils.hex2rgb(this.shapeBackgroundColor),e=mxUtils.hex2rgb(this.shapeForegroundColor);this.replaceDefaultColor(b,mxConstants.STYLE_FONTCOLOR,e);this.replaceDefaultColor(b,mxConstants.STYLE_FILLCOLOR,c);this.replaceDefaultColor(b,mxConstants.STYLE_STROKECOLOR,e);this.replaceDefaultColor(b,mxConstants.STYLE_IMAGE_BORDER,e);this.replaceDefaultColor(b,mxConstants.STYLE_IMAGE_BACKGROUND,c);this.replaceDefaultColor(b,mxConstants.STYLE_LABEL_BORDERCOLOR,
e);this.replaceDefaultColor(b,mxConstants.STYLE_SWIMLANE_FILLCOLOR,c);this.replaceDefaultColor(b,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,c)}return b};Graph.prototype.replaceDefaultColor=function(a,b,c){null!=a&&"default"==a[b]&&null!=c&&(a[b]=c)};
Graph.prototype.updateAlternateBounds=function(a,b,c){if(null!=a&&null!=b&&null!=this.layoutManager&&null!=b.alternateBounds){var e=this.layoutManager.getLayout(this.model.getParent(a));null!=e&&e.constructor==mxStackLayout&&(e.horizontal?b.alternateBounds.height=0:b.alternateBounds.width=0)}mxGraph.prototype.updateAlternateBounds.apply(this,arguments)};Graph.prototype.isMoveCellsEvent=function(a,b){return mxEvent.isShiftDown(a)||"1"==mxUtils.getValue(b.style,"moveCells","0")};
-Graph.prototype.foldCells=function(a,b,c,e,d){b=null!=b?b:!1;null==c&&(c=this.getFoldableCells(this.getSelectionCells(),a));if(null!=c){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var f=0;f<c.length;f++){var k=this.view.getState(c[f]),h=this.getCellGeometry(c[f]);if(null!=k&&null!=h){var g=Math.round(h.width-k.width/this.view.scale),m=Math.round(h.height-k.height/this.view.scale);if(0!=m||0!=g){var l=this.model.getParent(c[f]),n=this.layoutManager.getLayout(l);
-null==n?null!=d&&this.isMoveCellsEvent(d,k)&&this.moveSiblings(k,l,g,m):null!=d&&mxEvent.isAltDown(d)||n.constructor!=mxStackLayout||n.resizeLast||this.resizeParentStacks(l,n,g,m)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(c)}};
-Graph.prototype.moveSiblings=function(a,b,c,e){this.model.beginUpdate();try{var d=this.getCellsBeyond(a.x,a.y,b,!0,!0);for(b=0;b<d.length;b++)if(d[b]!=a.cell){var f=this.view.getState(d[b]),k=this.getCellGeometry(d[b]);null!=f&&null!=k&&(k=k.clone(),k.translate(Math.round(c*Math.max(0,Math.min(1,(f.x-a.x)/a.width))),Math.round(e*Math.max(0,Math.min(1,(f.y-a.y)/a.height)))),this.model.setGeometry(d[b],k))}}finally{this.model.endUpdate()}};
-Graph.prototype.resizeParentStacks=function(a,b,c,e){if(null!=this.layoutManager&&null!=b&&b.constructor==mxStackLayout&&!b.resizeLast){this.model.beginUpdate();try{for(var d=b.horizontal;null!=a&&null!=b&&b.constructor==mxStackLayout&&b.horizontal==d&&!b.resizeLast;){var f=this.getCellGeometry(a),k=this.view.getState(a);null!=k&&null!=f&&(f=f.clone(),b.horizontal?f.width+=c+Math.min(0,k.width/this.view.scale-f.width):f.height+=e+Math.min(0,k.height/this.view.scale-f.height),this.model.setGeometry(a,
+Graph.prototype.foldCells=function(a,b,c,e,d){b=null!=b?b:!1;null==c&&(c=this.getFoldableCells(this.getSelectionCells(),a));if(null!=c){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var f=0;f<c.length;f++){var h=this.view.getState(c[f]),k=this.getCellGeometry(c[f]);if(null!=h&&null!=k){var g=Math.round(k.width-h.width/this.view.scale),m=Math.round(k.height-h.height/this.view.scale);if(0!=m||0!=g){var l=this.model.getParent(c[f]),n=this.layoutManager.getLayout(l);
+null==n?null!=d&&this.isMoveCellsEvent(d,h)&&this.moveSiblings(h,l,g,m):null!=d&&mxEvent.isAltDown(d)||n.constructor!=mxStackLayout||n.resizeLast||this.resizeParentStacks(l,n,g,m)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(c)}};
+Graph.prototype.moveSiblings=function(a,b,c,e){this.model.beginUpdate();try{var d=this.getCellsBeyond(a.x,a.y,b,!0,!0);for(b=0;b<d.length;b++)if(d[b]!=a.cell){var f=this.view.getState(d[b]),h=this.getCellGeometry(d[b]);null!=f&&null!=h&&(h=h.clone(),h.translate(Math.round(c*Math.max(0,Math.min(1,(f.x-a.x)/a.width))),Math.round(e*Math.max(0,Math.min(1,(f.y-a.y)/a.height)))),this.model.setGeometry(d[b],h))}}finally{this.model.endUpdate()}};
+Graph.prototype.resizeParentStacks=function(a,b,c,e){if(null!=this.layoutManager&&null!=b&&b.constructor==mxStackLayout&&!b.resizeLast){this.model.beginUpdate();try{for(var d=b.horizontal;null!=a&&null!=b&&b.constructor==mxStackLayout&&b.horizontal==d&&!b.resizeLast;){var f=this.getCellGeometry(a),h=this.view.getState(a);null!=h&&null!=f&&(f=f.clone(),b.horizontal?f.width+=c+Math.min(0,h.width/this.view.scale-f.width):f.height+=e+Math.min(0,h.height/this.view.scale-f.height),this.model.setGeometry(a,
f));a=this.model.getParent(a);b=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var b=this.getCurrentCellStyle(a);return this.isSwimlane(a)?"0"!=b.container:"1"==b.container};Graph.prototype.isCellConnectable=function(a){var b=this.getCurrentCellStyle(a);return null!=b.connectable?"0"!=b.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)};
Graph.prototype.isLabelMovable=function(a){var b=this.getCurrentCellStyle(a);return null!=b.movableLabel?"0"!=b.movableLabel:mxGraph.prototype.isLabelMovable.apply(this,arguments)};Graph.prototype.selectAll=function(a){a=a||this.getDefaultParent();this.isCellLocked(a)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(a,b,c){c=c||this.getDefaultParent();this.isCellLocked(c)||mxGraph.prototype.selectCells.apply(this,arguments)};
Graph.prototype.getSwimlaneAt=function(a,b,c){var e=mxGraph.prototype.getSwimlaneAt.apply(this,arguments);this.isCellLocked(e)&&(e=null);return e};Graph.prototype.isCellFoldable=function(a){var b=this.getCurrentCellStyle(a);return this.foldingEnabled&&"0"!=mxUtils.getValue(b,mxConstants.STYLE_RESIZABLE,"1")&&("1"==b.treeFolding||!this.isCellLocked(a)&&(this.isContainer(a)&&"0"!=b.collapsible||!this.isContainer(a)&&"1"==b.collapsible))};
@@ -2724,91 +2734,91 @@ HoverIcons.prototype.repaint=function(){this.bbox=null;if(null!=this.currentStat
var b=this.graph.selectionCellsHandler.getHandler(this.currentState.cell);this.graph.isTableRow(this.currentState.cell)&&(b=this.graph.selectionCellsHandler.getHandler(this.graph.model.getParent(this.currentState.cell)));var c=null;null!=b&&(a.x-=b.horizontalOffset/2,a.y-=b.verticalOffset/2,a.width+=b.horizontalOffset,a.height+=b.verticalOffset,null!=b.rotationShape&&null!=b.rotationShape.node&&"hidden"!=b.rotationShape.node.style.visibility&&"none"!=b.rotationShape.node.style.display&&null!=b.rotationShape.boundingBox&&
(c=b.rotationShape.boundingBox));b=mxUtils.bind(this,function(a,b,d){if(null!=c){var e=new mxRectangle(b,d,a.clientWidth,a.clientHeight);mxUtils.intersects(e,c)&&(a==this.arrowUp?d-=e.y+e.height-c.y:a==this.arrowRight?b+=c.x+c.width-e.x:a==this.arrowDown?d+=c.y+c.height-e.y:a==this.arrowLeft&&(b-=e.x+e.width-c.x))}a.style.left=b+"px";a.style.top=d+"px";mxUtils.setOpacity(a,this.inactiveOpacity)});b(this.arrowUp,Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance),Math.round(a.y-
this.triangleUp.height-this.tolerance));b(this.arrowRight,Math.round(a.x+a.width-this.tolerance),Math.round(this.currentState.getCenterY()-this.triangleRight.height/2-this.tolerance));b(this.arrowDown,parseInt(this.arrowUp.style.left),Math.round(a.y+a.height-this.tolerance));b(this.arrowLeft,Math.round(a.x-this.triangleLeft.width-this.tolerance),parseInt(this.arrowRight.style.top));if(this.checkCollisions){var b=this.graph.getCellAt(a.x+a.width+this.triangleRight.width/2,this.currentState.getCenterY()),
-e=this.graph.getCellAt(a.x-this.triangleLeft.width/2,this.currentState.getCenterY()),d=this.graph.getCellAt(this.currentState.getCenterX(),a.y-this.triangleUp.height/2),a=this.graph.getCellAt(this.currentState.getCenterX(),a.y+a.height+this.triangleDown.height/2);null!=b&&b==e&&e==d&&d==a&&(a=d=e=b=null);var f=this.graph.getCellGeometry(this.currentState.cell),k=mxUtils.bind(this,function(a,b){var c=this.graph.model.isVertex(a)&&this.graph.getCellGeometry(a);null==a||this.graph.model.isAncestor(a,
-this.currentState.cell)||this.graph.isSwimlane(a)||!(null==c||null==f||c.height<3*f.height&&c.width<3*f.width)?b.style.visibility="visible":b.style.visibility="hidden"});k(b,this.arrowRight);k(e,this.arrowLeft);k(d,this.arrowUp);k(a,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),
+e=this.graph.getCellAt(a.x-this.triangleLeft.width/2,this.currentState.getCenterY()),d=this.graph.getCellAt(this.currentState.getCenterX(),a.y-this.triangleUp.height/2),a=this.graph.getCellAt(this.currentState.getCenterX(),a.y+a.height+this.triangleDown.height/2);null!=b&&b==e&&e==d&&d==a&&(a=d=e=b=null);var f=this.graph.getCellGeometry(this.currentState.cell),h=mxUtils.bind(this,function(a,b){var c=this.graph.model.isVertex(a)&&this.graph.getCellGeometry(a);null==a||this.graph.model.isAncestor(a,
+this.currentState.cell)||this.graph.isSwimlane(a)||!(null==c||null==f||c.height<3*f.height&&c.width<3*f.width)?b.style.visibility="visible":b.style.visibility="hidden"});h(b,this.arrowRight);h(e,this.arrowLeft);h(d,this.arrowUp);h(a,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),
this.arrowRight.setAttribute("title",mxResources.get("plusTooltip")),this.arrowUp.setAttribute("title",mxResources.get("plusTooltip")),this.arrowDown.setAttribute("title",mxResources.get("plusTooltip"))):(this.arrowLeft.removeAttribute("title"),this.arrowRight.removeAttribute("title"),this.arrowUp.removeAttribute("title"),this.arrowDown.removeAttribute("title"))}else this.reset();null!=this.currentState&&(this.bbox=this.computeBoundingBox(),null!=this.bbox&&this.bbox.grow(10))}};
HoverIcons.prototype.computeBoundingBox=function(){var a=this.graph.model.isEdge(this.currentState.cell)?null:mxRectangle.fromRectangle(this.currentState);this.visitNodes(function(b){null!=b.parentNode&&(b=new mxRectangle(b.offsetLeft,b.offsetTop,b.offsetWidth,b.offsetHeight),null==a?a=b:a.add(b))});return a};
HoverIcons.prototype.getState=function(a){if(null!=a)if(a=a.cell,this.graph.getModel().contains(a)){if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var b=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(b)&&this.graph.isCellConnectable(b)&&(a=b)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a);null!=a&&null==a.style&&(a=null)}else a=null;return a};
HoverIcons.prototype.update=function(a,b,c){if(!this.graph.connectionArrowsEnabled||null!=a&&"0"==mxUtils.getValue(a.style,"allowArrows","1"))this.reset();else{null!=a&&null!=a.cell.geometry&&a.cell.geometry.relative&&this.graph.model.isEdge(a.cell.parent)&&(a=null);var e=null;this.prev!=a||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=a,e=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=a&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||
this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=a,this.update(a,b,c))}),this.updateDelay+10))):null!=this.startTime&&(e=(new Date).getTime()-this.startTime);this.setDisplay("");null!=this.currentState&&this.currentState!=a&&e<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,b,c)?this.reset(!1):(null!=this.currentState||e>this.activationDelay)&&this.currentState!=a&&(e>this.updateDelay&&null!=a||null==this.bbox||null==b||null==c||!mxUtils.contains(this.bbox,
b,c))&&(null!=a&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(a),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=a&&this.graph.connectionHandler.constraintHandler.reset()):this.reset())}};
-HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a};Graph.prototype.createParent=function(a,b,c,e,d){a=this.cloneCell(a);for(var f=0;f<c;f++){var k=this.cloneCell(b),h=this.getCellGeometry(k);null!=h&&(h.x+=f*e,h.y+=f*d);a.insert(k)}return a};
-Graph.prototype.createTable=function(a,b,c,e,d,f,k,h,g){c=null!=c?c:60;e=null!=e?e:40;f=null!=f?f:30;h=null!=h?h:"shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;top=0;left=0;bottom=0;right=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;";g=null!=g?g:"shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;";return this.createParent(this.createVertex(null,null,null!=d?d:"",0,0,b*c,
-a*e+(null!=d?f:0),null!=k?k:"shape=table;startSize="+(null!=d?f:"0")+";container=1;collapsible=0;childLayout=tableLayout;"),this.createParent(this.createVertex(null,null,"",0,0,b*c,e,h),this.createVertex(null,null,"",0,0,c,e,g),b,c,0),a,0,e)};Graph.prototype.setTableValues=function(a,b,c){for(var e=this.model.getChildCells(a,!0),d=0;d<e.length;d++)if(null!=c&&(e[d].value=c[d]),null!=b)for(var f=this.model.getChildCells(e[d],!0),k=0;k<f.length;k++)null!=b[d][k]&&(f[k].value=b[d][k]);return a};
-Graph.prototype.createCrossFunctionalSwimlane=function(a,b,c,e,d,f,k,h,g){c=null!=c?c:120;e=null!=e?e:120;var m=null==d?0:40;k=null!=k?k:"swimlane;horizontal=0;fontStyle=0;points=[[0,0.5],[1,0.5]];fillColor=none;strokeColor=none;portConstraint=eastwest;startSize="+m+";collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";h=null!=h?h:"swimlane;fontStyle=0;connectable=0;fillColor=none;startSize=40;collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";g=null!=g?g:"swimlane;fontStyle=0;connectable=0;fillColor=none;startSize="+
-(null==d?"40":"0")+";collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";d=this.createVertex(null,null,null!=d?d:"",0,0,b*c,a*e,null!=f?f:"shape=table;childLayout=tableLayout;startSize="+m+";"+(null==d?"fillColor=none;":"")+"collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;");f=mxUtils.getValue(this.getCellStyle(d),mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);d.geometry.width+=f;d.geometry.height+=f;k=this.createVertex(null,null,"",0,f,b*c+f,e,k);d.insert(this.createParent(k,
-this.createVertex(null,null,"",f,0,c,e,h),b,c,0));return 1<a?(k.geometry.y=e+f,this.createParent(d,this.createParent(k,this.createVertex(null,null,"",f,0,c,e,g),b,c,0),a-1,0,e)):d};
-Graph.prototype.visitTableCells=function(a,b){for(var c=null,e=this.model.getChildCells(a,!0),d=this.getActualStartSize(a,!0),f=0;f<e.length;f++){for(var k=this.getActualStartSize(e[f],!0),h=this.model.getChildCells(e[f],!0),g=null,m=[],l=0;l<h.length;l++){var n=this.getCellGeometry(h[l]),p={cell:h[l],rospan:1,colspan:1,row:f,col:l,geo:n},n=null!=n.alternateBounds?n.alternateBounds:n;p.point=new mxPoint(n.width+(null!=g?g.point.x:d.x+k.x),n.height+(null!=c&&null!=c[0]?c[0].point.y:d.y+k.y));p.actual=
-p;null!=c&&null!=c[l]&&1<c[l].rowspan?(p.rowspan=c[l].rowspan-1,p.colspan=c[l].colspan,p.actual=c[l].actual):null!=g&&1<g.colspan?(p.rowspan=g.rowspan,p.colspan=g.colspan-1,p.actual=g.actual):(g=this.getCurrentCellStyle(h[l],!0),null!=g&&(p.rowspan=parseInt(g.rowspan||1),p.colspan=parseInt(g.colspan||1)));b(p,h.length,e.length,d.x+k.x,d.y+k.y);m.push(p);g=p}c=m}};
-Graph.prototype.getTableLines=function(a,b,c){var e=[],d=[];(b||c)&&this.visitTableCells(a,mxUtils.bind(this,function(a,k,h,g,m){b&&a.row<h-1&&(null==e[a.row]&&(e[a.row]=[new mxPoint(g,a.point.y)]),1<a.rowspan&&e[a.row].push(null),e[a.row].push(a.point));c&&a.col<k-1&&(null==d[a.col]&&(d[a.col]=[new mxPoint(a.point.x,m)]),1<a.colspan&&d[a.col].push(null),d[a.col].push(a.point))}));return e.concat(d)};Graph.prototype.isTableCell=function(a){return this.model.isVertex(a)&&this.isTableRow(this.model.getParent(a))};
+HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a};Graph.prototype.createParent=function(a,b,c,e,d){a=this.cloneCell(a);for(var f=0;f<c;f++){var h=this.cloneCell(b),k=this.getCellGeometry(h);null!=k&&(k.x+=f*e,k.y+=f*d);a.insert(h)}return a};
+Graph.prototype.createTable=function(a,b,c,e,d,f,h,k,g){c=null!=c?c:60;e=null!=e?e:40;f=null!=f?f:30;k=null!=k?k:"shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;top=0;left=0;bottom=0;right=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;";g=null!=g?g:"shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;";return this.createParent(this.createVertex(null,null,null!=d?d:"",0,0,b*c,
+a*e+(null!=d?f:0),null!=h?h:"shape=table;startSize="+(null!=d?f:"0")+";container=1;collapsible=0;childLayout=tableLayout;"),this.createParent(this.createVertex(null,null,"",0,0,b*c,e,k),this.createVertex(null,null,"",0,0,c,e,g),b,c,0),a,0,e)};Graph.prototype.setTableValues=function(a,b,c){for(var e=this.model.getChildCells(a,!0),d=0;d<e.length;d++)if(null!=c&&(e[d].value=c[d]),null!=b)for(var f=this.model.getChildCells(e[d],!0),h=0;h<f.length;h++)null!=b[d][h]&&(f[h].value=b[d][h]);return a};
+Graph.prototype.createCrossFunctionalSwimlane=function(a,b,c,e,d,f,h,k,g){c=null!=c?c:120;e=null!=e?e:120;var m=null==d?0:40;h=null!=h?h:"swimlane;horizontal=0;fontStyle=0;points=[[0,0.5],[1,0.5]];fillColor=none;strokeColor=none;portConstraint=eastwest;startSize="+m+";collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";k=null!=k?k:"swimlane;fontStyle=0;connectable=0;fillColor=none;startSize=40;collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";g=null!=g?g:"swimlane;fontStyle=0;connectable=0;fillColor=none;startSize="+
+(null==d?"40":"0")+";collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";d=this.createVertex(null,null,null!=d?d:"",0,0,b*c,a*e,null!=f?f:"shape=table;childLayout=tableLayout;startSize="+m+";"+(null==d?"fillColor=none;":"")+"collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;");f=mxUtils.getValue(this.getCellStyle(d),mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);d.geometry.width+=f;d.geometry.height+=f;h=this.createVertex(null,null,"",0,f,b*c+f,e,h);d.insert(this.createParent(h,
+this.createVertex(null,null,"",f,0,c,e,k),b,c,0));return 1<a?(h.geometry.y=e+f,this.createParent(d,this.createParent(h,this.createVertex(null,null,"",f,0,c,e,g),b,c,0),a-1,0,e)):d};
+Graph.prototype.visitTableCells=function(a,b){for(var c=null,e=this.model.getChildCells(a,!0),d=this.getActualStartSize(a,!0),f=0;f<e.length;f++){for(var h=this.getActualStartSize(e[f],!0),k=this.model.getChildCells(e[f],!0),g=null,m=[],l=0;l<k.length;l++){var n=this.getCellGeometry(k[l]),p={cell:k[l],rospan:1,colspan:1,row:f,col:l,geo:n},n=null!=n.alternateBounds?n.alternateBounds:n;p.point=new mxPoint(n.width+(null!=g?g.point.x:d.x+h.x),n.height+(null!=c&&null!=c[0]?c[0].point.y:d.y+h.y));p.actual=
+p;null!=c&&null!=c[l]&&1<c[l].rowspan?(p.rowspan=c[l].rowspan-1,p.colspan=c[l].colspan,p.actual=c[l].actual):null!=g&&1<g.colspan?(p.rowspan=g.rowspan,p.colspan=g.colspan-1,p.actual=g.actual):(g=this.getCurrentCellStyle(k[l],!0),null!=g&&(p.rowspan=parseInt(g.rowspan||1),p.colspan=parseInt(g.colspan||1)));b(p,k.length,e.length,d.x+h.x,d.y+h.y);m.push(p);g=p}c=m}};
+Graph.prototype.getTableLines=function(a,b,c){var e=[],d=[];(b||c)&&this.visitTableCells(a,mxUtils.bind(this,function(a,h,k,g,m){b&&a.row<k-1&&(null==e[a.row]&&(e[a.row]=[new mxPoint(g,a.point.y)]),1<a.rowspan&&e[a.row].push(null),e[a.row].push(a.point));c&&a.col<h-1&&(null==d[a.col]&&(d[a.col]=[new mxPoint(a.point.x,m)]),1<a.colspan&&d[a.col].push(null),d[a.col].push(a.point))}));return e.concat(d)};Graph.prototype.isTableCell=function(a){return this.model.isVertex(a)&&this.isTableRow(this.model.getParent(a))};
Graph.prototype.isTableRow=function(a){return this.model.isVertex(a)&&this.isTable(this.model.getParent(a))};Graph.prototype.isTable=function(a){a=this.getCellStyle(a);return null!=a&&"tableLayout"==a.childLayout};Graph.prototype.isStack=function(a){a=this.getCellStyle(a);return null!=a&&"stackLayout"==a.childLayout};Graph.prototype.isStackChild=function(a){return this.model.isVertex(a)&&this.isStack(this.model.getParent(a))};
-Graph.prototype.setTableRowHeight=function(a,b,c){c=null!=c?c:!0;var e=this.getModel();e.beginUpdate();try{var d=this.getCellGeometry(a);if(null!=d){d=d.clone();d.height+=b;e.setGeometry(a,d);var f=e.getParent(a),k=e.getChildCells(f,!0);if(!c){var h=mxUtils.indexOf(k,a);if(h<k.length-1){var g=k[h+1],m=this.getCellGeometry(g);null!=m&&(m=m.clone(),m.y+=b,m.height-=b,e.setGeometry(g,m))}}var l=this.getCellGeometry(f);null!=l&&(c||(c=a==k[k.length-1]),c&&(l=l.clone(),l.height+=b,e.setGeometry(f,l)))}}finally{e.endUpdate()}};
-Graph.prototype.setTableColumnWidth=function(a,b,c){c=null!=c?c:!1;var e=this.getModel(),d=e.getParent(a),f=e.getParent(d),k=e.getChildCells(d,!0);a=mxUtils.indexOf(k,a);var h=a==k.length-1;e.beginUpdate();try{for(var g=e.getChildCells(f,!0),m=0;m<g.length;m++){var d=g[m],k=e.getChildCells(d,!0),l=k[a],n=this.getCellGeometry(l);null!=n&&(n=n.clone(),n.width+=b,null!=n.alternateBounds&&(n.alternateBounds.width+=b),e.setGeometry(l,n));a<k.length-1&&(l=k[a+1],n=this.getCellGeometry(l),null!=n&&(n=n.clone(),
-n.x+=b,c||(n.width-=b,null!=n.alternateBounds&&(n.alternateBounds.width-=b)),e.setGeometry(l,n)))}if(h||c){var p=this.getCellGeometry(f);null!=p&&(p=p.clone(),p.width+=b,e.setGeometry(f,p))}}finally{e.endUpdate()}};function TableLayout(a){mxGraphLayout.call(this,a)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};TableLayout.prototype.isVertexIgnored=function(a){return!this.graph.getModel().isVertex(a)||!this.graph.isCellVisible(a)};
+Graph.prototype.setTableRowHeight=function(a,b,c){c=null!=c?c:!0;var e=this.getModel();e.beginUpdate();try{var d=this.getCellGeometry(a);if(null!=d){d=d.clone();d.height+=b;e.setGeometry(a,d);var f=e.getParent(a),h=e.getChildCells(f,!0);if(!c){var k=mxUtils.indexOf(h,a);if(k<h.length-1){var g=h[k+1],m=this.getCellGeometry(g);null!=m&&(m=m.clone(),m.y+=b,m.height-=b,e.setGeometry(g,m))}}var l=this.getCellGeometry(f);null!=l&&(c||(c=a==h[h.length-1]),c&&(l=l.clone(),l.height+=b,e.setGeometry(f,l)))}}finally{e.endUpdate()}};
+Graph.prototype.setTableColumnWidth=function(a,b,c){c=null!=c?c:!1;var e=this.getModel(),d=e.getParent(a),f=e.getParent(d),h=e.getChildCells(d,!0);a=mxUtils.indexOf(h,a);var k=a==h.length-1;e.beginUpdate();try{for(var g=e.getChildCells(f,!0),m=0;m<g.length;m++){var d=g[m],h=e.getChildCells(d,!0),l=h[a],n=this.getCellGeometry(l);null!=n&&(n=n.clone(),n.width+=b,null!=n.alternateBounds&&(n.alternateBounds.width+=b),e.setGeometry(l,n));a<h.length-1&&(l=h[a+1],n=this.getCellGeometry(l),null!=n&&(n=n.clone(),
+n.x+=b,c||(n.width-=b,null!=n.alternateBounds&&(n.alternateBounds.width-=b)),e.setGeometry(l,n)))}if(k||c){var p=this.getCellGeometry(f);null!=p&&(p=p.clone(),p.width+=b,e.setGeometry(f,p))}}finally{e.endUpdate()}};function TableLayout(a){mxGraphLayout.call(this,a)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};TableLayout.prototype.isVertexIgnored=function(a){return!this.graph.getModel().isVertex(a)||!this.graph.isCellVisible(a)};
TableLayout.prototype.getSize=function(a,b){for(var c=0,e=0;e<a.length;e++)if(!this.isVertexIgnored(a[e])){var d=this.graph.getCellGeometry(a[e]);null!=d&&(c+=b?d.width:d.height)}return c};
-TableLayout.prototype.getRowLayout=function(a,b){for(var c=this.graph.model.getChildCells(a,!0),e=this.graph.getActualStartSize(a,!0),d=this.getSize(c,!0),f=b-e.x-e.width,k=[],e=e.x,h=0;h<c.length;h++){var g=this.graph.getCellGeometry(c[h]);null!=g&&(e+=(null!=g.alternateBounds?g.alternateBounds.width:g.width)*f/d,k.push(Math.round(e)))}return k};
-TableLayout.prototype.layoutRow=function(a,b,c,e,d){d=this.graph.getModel();var f=d.getChildCells(a,!0);a=this.graph.getActualStartSize(a,!0);var k=a.x,h=0;null!=b&&(b=b.slice(),b.splice(0,0,a.x));for(var g=0;g<f.length;g++){var m=this.graph.getCellGeometry(f[g]);null!=m&&(m=m.clone(),m.y=a.y,m.height=c-a.y-a.height,null!=b?(m.x=b[g],m.width=b[g+1]-m.x,g==f.length-1&&g<b.length-2&&(m.width=e-m.x-a.x-a.width)):(m.x=k,k+=m.width,g==f.length-1?m.width=e-a.x-a.width-h:h+=m.width),m.alternateBounds=new mxRectangle(0,
-0,m.width,m.height),d.setGeometry(f[g],m))}return h};
-TableLayout.prototype.execute=function(a){if(null!=a){var b=this.graph.getActualStartSize(a,!0),c=this.graph.getCellGeometry(a),e=this.graph.getCellStyle(a),d="1"==mxUtils.getValue(e,"resizeLastRow","0"),f="1"==mxUtils.getValue(e,"resizeLast","0"),e="1"==mxUtils.getValue(e,"fixedRows","0"),k=this.graph.getModel(),h=0;k.beginUpdate();try{var g=c.height-b.y-b.height,m=c.width-b.x-b.width,l=k.getChildCells(a,!0),n=this.getSize(l,!1);if(0<g&&0<m&&0<l.length&&0<n){if(d){var p=this.graph.getCellGeometry(l[l.length-
-1]);null!=p&&(p=p.clone(),p.height=g-n+p.height,k.setGeometry(l[l.length-1],p))}for(var r=f?null:this.getRowLayout(l[0],m),u=[],v=b.y,t=0;t<l.length;t++)p=this.graph.getCellGeometry(l[t]),null!=p&&(p=p.clone(),p.x=b.x,p.width=m,p.y=Math.round(v),v=d||e?v+p.height:v+p.height/n*g,p.height=Math.round(v)-p.y,k.setGeometry(l[t],p)),h=Math.max(h,this.layoutRow(l[t],r,p.height,m,u));e&&g<n&&(c=c.clone(),c.height=v+b.height,k.setGeometry(a,c));f&&m<h+Graph.minTableColumnWidth&&(c=c.clone(),c.width=h+b.width+
-b.x+Graph.minTableColumnWidth,k.setGeometry(a,c));this.graph.visitTableCells(a,mxUtils.bind(this,function(a){k.setVisible(a.cell,a.actual.cell==a.cell);if(a.actual.cell!=a.cell){if(a.actual.row==a.row){var b=null!=a.geo.alternateBounds?a.geo.alternateBounds:a.geo;a.actual.geo.width+=b.width}a.actual.col==a.col&&(b=null!=a.geo.alternateBounds?a.geo.alternateBounds:a.geo,a.actual.geo.height+=b.height)}}))}}finally{k.endUpdate()}}};
+TableLayout.prototype.getRowLayout=function(a,b){for(var c=this.graph.model.getChildCells(a,!0),e=this.graph.getActualStartSize(a,!0),d=this.getSize(c,!0),f=b-e.x-e.width,h=[],e=e.x,k=0;k<c.length;k++){var g=this.graph.getCellGeometry(c[k]);null!=g&&(e+=(null!=g.alternateBounds?g.alternateBounds.width:g.width)*f/d,h.push(Math.round(e)))}return h};
+TableLayout.prototype.layoutRow=function(a,b,c,e,d){d=this.graph.getModel();var f=d.getChildCells(a,!0);a=this.graph.getActualStartSize(a,!0);var h=a.x,k=0;null!=b&&(b=b.slice(),b.splice(0,0,a.x));for(var g=0;g<f.length;g++){var m=this.graph.getCellGeometry(f[g]);null!=m&&(m=m.clone(),m.y=a.y,m.height=c-a.y-a.height,null!=b?(m.x=b[g],m.width=b[g+1]-m.x,g==f.length-1&&g<b.length-2&&(m.width=e-m.x-a.x-a.width)):(m.x=h,h+=m.width,g==f.length-1?m.width=e-a.x-a.width-k:k+=m.width),m.alternateBounds=new mxRectangle(0,
+0,m.width,m.height),d.setGeometry(f[g],m))}return k};
+TableLayout.prototype.execute=function(a){if(null!=a){var b=this.graph.getActualStartSize(a,!0),c=this.graph.getCellGeometry(a),e=this.graph.getCellStyle(a),d="1"==mxUtils.getValue(e,"resizeLastRow","0"),f="1"==mxUtils.getValue(e,"resizeLast","0"),e="1"==mxUtils.getValue(e,"fixedRows","0"),h=this.graph.getModel(),k=0;h.beginUpdate();try{var g=c.height-b.y-b.height,m=c.width-b.x-b.width,l=h.getChildCells(a,!0),n=this.getSize(l,!1);if(0<g&&0<m&&0<l.length&&0<n){if(d){var p=this.graph.getCellGeometry(l[l.length-
+1]);null!=p&&(p=p.clone(),p.height=g-n+p.height,h.setGeometry(l[l.length-1],p))}for(var r=f?null:this.getRowLayout(l[0],m),u=[],v=b.y,t=0;t<l.length;t++)p=this.graph.getCellGeometry(l[t]),null!=p&&(p=p.clone(),p.x=b.x,p.width=m,p.y=Math.round(v),v=d||e?v+p.height:v+p.height/n*g,p.height=Math.round(v)-p.y,h.setGeometry(l[t],p)),k=Math.max(k,this.layoutRow(l[t],r,p.height,m,u));e&&g<n&&(c=c.clone(),c.height=v+b.height,h.setGeometry(a,c));f&&m<k+Graph.minTableColumnWidth&&(c=c.clone(),c.width=k+b.width+
+b.x+Graph.minTableColumnWidth,h.setGeometry(a,c));this.graph.visitTableCells(a,mxUtils.bind(this,function(a){h.setVisible(a.cell,a.actual.cell==a.cell);if(a.actual.cell!=a.cell){if(a.actual.row==a.row){var b=null!=a.geo.alternateBounds?a.geo.alternateBounds:a.geo;a.actual.geo.width+=b.width}a.actual.col==a.col&&(b=null!=a.geo.alternateBounds?a.geo.alternateBounds:a.geo,a.actual.geo.height+=b.height)}}))}}finally{h.endUpdate()}}};
(function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var b=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,c){c=null!=c?c:!0;var d=this.getState(a);null!=d&&c&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&!d.invalid&&this.updateLineJumps(d)&&this.graph.cellRenderer.redraw(d,!1,this.isRendering());d=b.apply(this,
arguments);null!=d&&c&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var c=mxShape.prototype.paint;mxShape.prototype.paint=function(){c.apply(this,arguments);if(null!=this.state&&null!=this.node&&this.state.view.graph.enableFlowAnimation&&this.state.view.graph.model.isEdge(this.state.cell)&&"1"==mxUtils.getValue(this.state.style,"flowAnimation","0")){var a=this.node.getElementsByTagName("path");if(1<a.length){"1"!=mxUtils.getValue(this.state.style,
mxConstants.STYLE_DASHED,"0")&&a[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var b=this.state.view.graph.getFlowAnimationStyle();null!=b&&a[1].setAttribute("class",b.getAttribute("id"))}}};var e=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return e.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var d=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
function(a){d.apply(this,arguments);this.graph.model.isEdge(a.cell)&&1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,d=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,c,e){var f=new mxPoint(c,e);f.type=b;d.push(f);f=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==f||f.type!=
-b||f.x!=c||f.y!=e},f=.5*this.scale,c=!1,d=[],g=0;g<b.length-1;g++){for(var k=b[g+1],h=b[g],m=[],l=b[g+2];g<b.length-2&&mxUtils.ptSegDistSq(h.x,h.y,l.x,l.y,k.x,k.y)<1*this.scale*this.scale;)k=l,g++,l=b[g+2];for(var c=e(0,h.x,h.y)||c,I=0;I<this.validEdges.length;I++){var A=this.validEdges[I],G=A.absolutePoints;if(null!=G&&mxUtils.intersects(a,A)&&"1"!=A.style.noJump)for(A=0;A<G.length-1;A++){for(var z=G[A+1],D=G[A],l=G[A+2];A<G.length-2&&mxUtils.ptSegDistSq(D.x,D.y,l.x,l.y,z.x,z.y)<1*this.scale*this.scale;)z=
-l,A++,l=G[A+2];l=mxUtils.intersection(h.x,h.y,k.x,k.y,D.x,D.y,z.x,z.y);if(null!=l&&(Math.abs(l.x-h.x)>f||Math.abs(l.y-h.y)>f)&&(Math.abs(l.x-k.x)>f||Math.abs(l.y-k.y)>f)&&(Math.abs(l.x-D.x)>f||Math.abs(l.y-D.y)>f)&&(Math.abs(l.x-z.x)>f||Math.abs(l.y-z.y)>f)){z=l.x-h.x;D=l.y-h.y;l={distSq:z*z+D*D,x:l.x,y:l.y};for(z=0;z<m.length;z++)if(m[z].distSq>l.distSq){m.splice(z,0,l);l=null;break}null==l||0!=m.length&&m[m.length-1].x===l.x&&m[m.length-1].y===l.y||m.push(l)}}}for(A=0;A<m.length;A++)c=e(1,m[A].x,
-m[A].y)||c}l=b[b.length-1];c=e(0,l.x,l.y)||c}a.routedPoints=d;return c}return!1};var f=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,b,c){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)f.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,
-"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),k=!0,h=null,m=null,l=[],n=null;a.begin();for(var p=0;p<this.state.routedPoints.length;p++){var A=this.state.routedPoints[p],G=new mxPoint(A.x/this.scale,A.y/this.scale);0==p?G=b[0]:p==this.state.routedPoints.length-1&&(G=b[b.length-1]);var z=!1;if(null!=h&&1==A.type){var D=this.state.routedPoints[p+1],A=D.x/this.scale-G.x,D=D.y/this.scale-G.y,A=A*A+D*D;null==n&&(n=new mxPoint(G.x-h.x,G.y-h.y),
-m=Math.sqrt(n.x*n.x+n.y*n.y),0<m?(n.x=n.x*e/m,n.y=n.y*e/m):n=null);A>e*e&&0<m&&(A=h.x-G.x,D=h.y-G.y,A=A*A+D*D,A>e*e&&(z=new mxPoint(G.x-n.x,G.y-n.y),A=new mxPoint(G.x+n.x,G.y+n.y),l.push(z),this.addPoints(a,l,c,d,!1,null,k),l=0>Math.round(n.x)||0==Math.round(n.x)&&0>=Math.round(n.y)?1:-1,k=!1,"sharp"==g?(a.lineTo(z.x-n.y*l,z.y+n.x*l),a.lineTo(A.x-n.y*l,A.y+n.x*l),a.lineTo(A.x,A.y)):"line"==g?(a.moveTo(z.x+n.y*l,z.y-n.x*l),a.lineTo(z.x-n.y*l,z.y+n.x*l),a.moveTo(A.x-n.y*l,A.y+n.x*l),a.lineTo(A.x+n.y*
-l,A.y-n.x*l),a.moveTo(A.x,A.y)):"arc"==g?(l*=1.3,a.curveTo(z.x-n.y*l,z.y+n.x*l,A.x-n.y*l,A.y+n.x*l,A.x,A.y)):(a.moveTo(A.x,A.y),k=!0),l=[A],z=!0))}else n=null;z||(l.push(G),h=G)}this.addPoints(a,l,c,d,!1,null,k);a.stroke()}};var k=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(a,b,c,d){return null!=b&&"centerPerimeter"==b.style[mxConstants.STYLE_PERIMETER]?new mxPoint(b.getCenterX(),b.getCenterY()):k.apply(this,arguments)};var h=mxGraphView.prototype.updateFloatingTerminalPoint;
-mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,c,d){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)h.apply(this,arguments);else{b=this.getTerminalPort(a,b,d);var e=this.getNextPoint(a,c,d),f=this.graph.isOrthogonal(a),g=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),k=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=g)var m=Math.cos(-g),l=Math.sin(-g),e=mxUtils.getRotatedPoint(e,m,l,k);m=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||
-0);m+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);e=this.getPerimeterPoint(b,e,0==g&&f,m);0!=g&&(m=Math.cos(g),l=Math.sin(g),e=mxUtils.getRotatedPoint(e,m,l,k));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,d,e),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,d,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);d=c=null;if(null!=a)for(var f=0;f<a.length;f++){var g=this.graph.getConnectionPoint(b,
-a[f]);if(null!=g){var k=(g.x-e.x)*(g.x-e.x)+(g.y-e.y)*(g.y-e.y);if(null==d||k<d)c=g,d=k}}null!=c&&(e=c)}return e};var g=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var d=g.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(d=c.state.view.graph.replacePlaceholders(c.state.cell,d));return d};var m=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=
+b||f.x!=c||f.y!=e},f=.5*this.scale,c=!1,d=[],g=0;g<b.length-1;g++){for(var h=b[g+1],k=b[g],m=[],l=b[g+2];g<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,l.x,l.y,h.x,h.y)<1*this.scale*this.scale;)h=l,g++,l=b[g+2];for(var c=e(0,k.x,k.y)||c,I=0;I<this.validEdges.length;I++){var B=this.validEdges[I],G=B.absolutePoints;if(null!=G&&mxUtils.intersects(a,B)&&"1"!=B.style.noJump)for(B=0;B<G.length-1;B++){for(var z=G[B+1],D=G[B],l=G[B+2];B<G.length-2&&mxUtils.ptSegDistSq(D.x,D.y,l.x,l.y,z.x,z.y)<1*this.scale*this.scale;)z=
+l,B++,l=G[B+2];l=mxUtils.intersection(k.x,k.y,h.x,h.y,D.x,D.y,z.x,z.y);if(null!=l&&(Math.abs(l.x-k.x)>f||Math.abs(l.y-k.y)>f)&&(Math.abs(l.x-h.x)>f||Math.abs(l.y-h.y)>f)&&(Math.abs(l.x-D.x)>f||Math.abs(l.y-D.y)>f)&&(Math.abs(l.x-z.x)>f||Math.abs(l.y-z.y)>f)){z=l.x-k.x;D=l.y-k.y;l={distSq:z*z+D*D,x:l.x,y:l.y};for(z=0;z<m.length;z++)if(m[z].distSq>l.distSq){m.splice(z,0,l);l=null;break}null==l||0!=m.length&&m[m.length-1].x===l.x&&m[m.length-1].y===l.y||m.push(l)}}}for(B=0;B<m.length;B++)c=e(1,m[B].x,
+m[B].y)||c}l=b[b.length-1];c=e(0,l.x,l.y)||c}a.routedPoints=d;return c}return!1};var f=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,b,c){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)f.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,
+"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),h=!0,k=null,m=null,l=[],n=null;a.begin();for(var p=0;p<this.state.routedPoints.length;p++){var B=this.state.routedPoints[p],G=new mxPoint(B.x/this.scale,B.y/this.scale);0==p?G=b[0]:p==this.state.routedPoints.length-1&&(G=b[b.length-1]);var z=!1;if(null!=k&&1==B.type){var D=this.state.routedPoints[p+1],B=D.x/this.scale-G.x,D=D.y/this.scale-G.y,B=B*B+D*D;null==n&&(n=new mxPoint(G.x-k.x,G.y-k.y),
+m=Math.sqrt(n.x*n.x+n.y*n.y),0<m?(n.x=n.x*e/m,n.y=n.y*e/m):n=null);B>e*e&&0<m&&(B=k.x-G.x,D=k.y-G.y,B=B*B+D*D,B>e*e&&(z=new mxPoint(G.x-n.x,G.y-n.y),B=new mxPoint(G.x+n.x,G.y+n.y),l.push(z),this.addPoints(a,l,c,d,!1,null,h),l=0>Math.round(n.x)||0==Math.round(n.x)&&0>=Math.round(n.y)?1:-1,h=!1,"sharp"==g?(a.lineTo(z.x-n.y*l,z.y+n.x*l),a.lineTo(B.x-n.y*l,B.y+n.x*l),a.lineTo(B.x,B.y)):"line"==g?(a.moveTo(z.x+n.y*l,z.y-n.x*l),a.lineTo(z.x-n.y*l,z.y+n.x*l),a.moveTo(B.x-n.y*l,B.y+n.x*l),a.lineTo(B.x+n.y*
+l,B.y-n.x*l),a.moveTo(B.x,B.y)):"arc"==g?(l*=1.3,a.curveTo(z.x-n.y*l,z.y+n.x*l,B.x-n.y*l,B.y+n.x*l,B.x,B.y)):(a.moveTo(B.x,B.y),h=!0),l=[B],z=!0))}else n=null;z||(l.push(G),k=G)}this.addPoints(a,l,c,d,!1,null,h);a.stroke()}};var h=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(a,b,c,d){return null!=b&&"centerPerimeter"==b.style[mxConstants.STYLE_PERIMETER]?new mxPoint(b.getCenterX(),b.getCenterY()):h.apply(this,arguments)};var k=mxGraphView.prototype.updateFloatingTerminalPoint;
+mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,c,d){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)k.apply(this,arguments);else{b=this.getTerminalPort(a,b,d);var e=this.getNextPoint(a,c,d),f=this.graph.isOrthogonal(a),g=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),h=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=g)var m=Math.cos(-g),l=Math.sin(-g),e=mxUtils.getRotatedPoint(e,m,l,h);m=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||
+0);m+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);e=this.getPerimeterPoint(b,e,0==g&&f,m);0!=g&&(m=Math.cos(g),l=Math.sin(g),e=mxUtils.getRotatedPoint(e,m,l,h));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,d,e),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,d,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);d=c=null;if(null!=a)for(var f=0;f<a.length;f++){var g=this.graph.getConnectionPoint(b,
+a[f]);if(null!=g){var h=(g.x-e.x)*(g.x-e.x)+(g.y-e.y)*(g.y-e.y);if(null==d||h<d)c=g,d=h}}null!=c&&(e=c)}return e};var g=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var d=g.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(d=c.state.view.graph.replacePlaceholders(c.state.cell,d));return d};var m=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=
mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!=b&&"string"===typeof b&&"stencil("==b.substring(0,8))try{var c=b.substring(8,b.length-1),d=mxUtils.parseXml(Graph.decompress(c));return new mxShape(new mxStencil(d.documentElement))}catch(u){null!=window.console&&console.log("Error in shape: "+u)}}return m.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[];
mxStencilRegistry.filesLoaded={};
mxStencilRegistry.getStencil=function(a){var b=mxStencilRegistry.stencils[a];if(null==b&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var c=mxStencilRegistry.getBasenameForStencil(a);if(null!=c){b=mxStencilRegistry.libraries[c];if(null!=b){if(null==mxStencilRegistry.packages[c]){for(var e=0;e<b.length;e++){var d=b[e];if(!mxStencilRegistry.filesLoaded[d])if(mxStencilRegistry.filesLoaded[d]=!0,".xml"==d.toLowerCase().substring(d.length-4,d.length))mxStencilRegistry.loadStencilSet(d,
-null);else if(".js"==d.toLowerCase().substring(d.length-3,d.length))try{if(mxStencilRegistry.allowEval){var f=mxUtils.load(d);null!=f&&200<=f.getStatus()&&299>=f.getStatus()&&eval.call(window,f.getText())}}catch(k){null!=window.console&&console.log("error in getStencil:",a,c,b,d,k)}}mxStencilRegistry.packages[c]=1}}else c=c.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+c+".xml",null);b=mxStencilRegistry.stencils[a]}}return b};
+null);else if(".js"==d.toLowerCase().substring(d.length-3,d.length))try{if(mxStencilRegistry.allowEval){var f=mxUtils.load(d);null!=f&&200<=f.getStatus()&&299>=f.getStatus()&&eval.call(window,f.getText())}}catch(h){null!=window.console&&console.log("error in getStencil:",a,c,b,d,h)}}mxStencilRegistry.packages[c]=1}}else c=c.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+c+".xml",null);b=mxStencilRegistry.stencils[a]}}return b};
mxStencilRegistry.getBasenameForStencil=function(a){var b=null;if(null!=a&&"string"===typeof a&&(a=a.split("."),0<a.length&&"mxgraph"==a[0]))for(var b=a[1],c=2;c<a.length-1;c++)b+="/"+a[c];return b};
-mxStencilRegistry.loadStencilSet=function(a,b,c,e){var d=mxStencilRegistry.packages[a];if(null!=c&&c||null==d){var f=!1;if(null==d)try{if(e){mxStencilRegistry.loadStencil(a,mxUtils.bind(this,function(c){null!=c&&null!=c.documentElement&&(mxStencilRegistry.packages[a]=c,f=!0,mxStencilRegistry.parseStencilSet(c.documentElement,b,f))}));return}d=mxStencilRegistry.loadStencil(a);mxStencilRegistry.packages[a]=d;f=!0}catch(k){null!=window.console&&console.log("error in loadStencilSet:",a,k)}null!=d&&null!=
+mxStencilRegistry.loadStencilSet=function(a,b,c,e){var d=mxStencilRegistry.packages[a];if(null!=c&&c||null==d){var f=!1;if(null==d)try{if(e){mxStencilRegistry.loadStencil(a,mxUtils.bind(this,function(c){null!=c&&null!=c.documentElement&&(mxStencilRegistry.packages[a]=c,f=!0,mxStencilRegistry.parseStencilSet(c.documentElement,b,f))}));return}d=mxStencilRegistry.loadStencil(a);mxStencilRegistry.packages[a]=d;f=!0}catch(h){null!=window.console&&console.log("error in loadStencilSet:",a,h)}null!=d&&null!=
d.documentElement&&mxStencilRegistry.parseStencilSet(d.documentElement,b,f)}};mxStencilRegistry.loadStencil=function(a,b){if(null!=b)mxUtils.get(a,mxUtils.bind(this,function(a){b(200<=a.getStatus()&&299>=a.getStatus()?a.getXml():null)}));else return mxUtils.load(a).getXml()};mxStencilRegistry.parseStencilSets=function(a){for(var b=0;b<a.length;b++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(a[b]).documentElement)};
-mxStencilRegistry.parseStencilSet=function(a,b,c){if("stencils"==a.nodeName)for(var e=a.firstChild;null!=e;)"shapes"==e.nodeName&&mxStencilRegistry.parseStencilSet(e,b,c),e=e.nextSibling;else{c=null!=c?c:!0;var e=a.firstChild,d="";a=a.getAttribute("name");for(null!=a&&(d=a+".");null!=e;){if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=e.getAttribute("name"),null!=a)){var d=d.toLowerCase(),f=a.replace(/ /g,"_");c&&mxStencilRegistry.addStencil(d+f.toLowerCase(),new mxStencil(e));if(null!=b){var k=e.getAttribute("w"),
-h=e.getAttribute("h"),k=null==k?80:parseInt(k,10),h=null==h?80:parseInt(h,10);b(d,f,a,k,h)}}e=e.nextSibling}}};
+mxStencilRegistry.parseStencilSet=function(a,b,c){if("stencils"==a.nodeName)for(var e=a.firstChild;null!=e;)"shapes"==e.nodeName&&mxStencilRegistry.parseStencilSet(e,b,c),e=e.nextSibling;else{c=null!=c?c:!0;var e=a.firstChild,d="";a=a.getAttribute("name");for(null!=a&&(d=a+".");null!=e;){if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=e.getAttribute("name"),null!=a)){var d=d.toLowerCase(),f=a.replace(/ /g,"_");c&&mxStencilRegistry.addStencil(d+f.toLowerCase(),new mxStencil(e));if(null!=b){var h=e.getAttribute("w"),
+k=e.getAttribute("h"),h=null==h?80:parseInt(h,10),k=null==k?80:parseInt(k,10);b(d,f,a,h,k)}}e=e.nextSibling}}};
"undefined"!=typeof mxVertexHandler&&function(){function a(){var a=document.createElement("div");a.className="geHint";a.style.whiteSpace="nowrap";a.style.position="absolute";return a}function b(a,b){switch(b){case mxConstants.POINTS:return a;case mxConstants.MILLIMETERS:return(a/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(a/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(a/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
mxConstants.HANDLE_STROKECOLOR="#0088cf";mxConstants.VERTEX_SELECTION_COLOR="#00a8ff";mxConstants.OUTLINE_COLOR="#00a8ff";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.EDGE_SELECTION_COLOR="#00a8ff";mxConstants.DEFAULT_VALID_COLOR="#00a8ff";mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff";mxConstants.GUIDE_COLOR="#0088cf";mxConstants.HIGHLIGHT_OPACITY=30;mxConstants.HIGHLIGHT_SIZE=5;mxEdgeHandler.prototype.snapToTerminals=
!0;mxGraphHandler.prototype.guidesEnabled=!0;mxGraphHandler.prototype.removeEmptyParents=!0;mxRubberband.prototype.fadeOut=!0;mxGuide.prototype.isEnabledForEvent=function(a){return!mxEvent.isAltDown(a)};var c=mxGraphLayout.prototype.isVertexIgnored;mxGraphLayout.prototype.isVertexIgnored=function(a){return c.apply(this,arguments)||this.graph.isTableRow(a)||this.graph.isTableCell(a)};var e=mxGraphLayout.prototype.isEdgeIgnored;mxGraphLayout.prototype.isEdgeIgnored=function(a){return e.apply(this,arguments)||
this.graph.isEdgeIgnored(a)};var d=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(a){return this.graph.isCloneEvent(a)!=d.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var a=new mxEllipse(null,this.highlightColor,this.highlightColor,0);a.opacity=mxConstants.HIGHLIGHT_OPACITY;return a};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=
function(a){a=this.graph.createCurrentEdgeStyle();a=this.graph.createEdge(null,null,null,null,null,a);a=new mxCellState(this.graph.view,a,this.graph.getCellStyle(a));for(var b in this.graph.currentEdgeStyle)a.style[b]=this.graph.currentEdgeStyle[b];a.style=this.graph.postProcessCellStyle(a.cell,a.style);return a};var f=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var a=f.apply(this,arguments);a.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];
-return a};mxConnectionHandler.prototype.updatePreview=function(a){};var k=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=k.apply(this,arguments),b=a.getCell;a.getCell=mxUtils.bind(this,function(a){var c=b.apply(this,arguments);this.error=null;return c});return a};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=
+return a};mxConnectionHandler.prototype.updatePreview=function(a){};var h=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=h.apply(this,arguments),b=a.getCell;a.getCell=mxUtils.bind(this,function(a){var c=b.apply(this,arguments);this.error=null;return c});return a};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=
function(){for(var a="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",b="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),c=0;c<b.length;c++)null!=this.currentEdgeStyle[b[c]]&&(a+=b[c]+"="+this.currentEdgeStyle[b[c]]+";");null!=this.currentEdgeStyle.orthogonalLoop?a+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
(a+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?a+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(a+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};
Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())};Graph.prototype.createCellLookup=function(a,b){b=null!=b?b:{};for(var c=0;c<a.length;c++){var d=a[c];b[mxObjectIdentity.get(d)]=d.getId();for(var e=this.model.getChildCount(d),
-f=0;f<e;f++)this.createCellLookup([this.model.getChildAt(d,f)],b)}return b};Graph.prototype.createCellMapping=function(a,b,c){c=null!=c?c:{};for(var d in a){var e=b[d];null==c[e]&&(c[e]=a[d].getId()||"")}return c};Graph.prototype.importGraphModel=function(a,b,c,d){b=null!=b?b:0;c=null!=c?c:0;var e=new mxCodec(a.ownerDocument),f=new mxGraphModel;e.decode(a,f);a=[];var e={},g={},k=f.getChildren(this.cloneCell(f.root,this.isCloneInvalidEdges(),e));if(null!=k){var h=this.createCellLookup([f.root]),k=
-k.slice();this.model.beginUpdate();try{if(1!=k.length||this.isCellLocked(this.getDefaultParent()))for(f=0;f<k.length;f++)m=this.model.getChildren(this.moveCells([k[f]],b,c,!1,this.model.getRoot())[0]),null!=m&&(a=a.concat(m));else{var m=f.getChildren(k[0]);null!=m&&(a=this.moveCells(m,b,c,!1,this.getDefaultParent()),g[f.getChildAt(f.root,0).getId()]=this.getDefaultParent().getId())}if(null!=a&&(this.createCellMapping(e,h,g),this.updateCustomLinks(g,a),d)){this.isGridEnabled()&&(b=this.snap(b),c=this.snap(c));
-var l=this.getBoundingBoxFromGeometry(a,!0);null!=l&&this.moveCells(a,b-l.x,c-l.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.encodeCells=function(a){for(var b={},c=this.cloneCells(a,null,b),d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(var f=new mxCodec,g=new mxGraphModel,k=g.getChildAt(g.getRoot(),0),e=0;e<c.length;e++){g.add(k,c[e]);var h=this.view.getState(a[e]);if(null!=h){var m=this.getCellGeometry(c[e]);null!=m&&m.relative&&!this.model.isEdge(a[e])&&null==d.get(this.model.getParent(a[e]))&&
-(m.offset=null,m.relative=!1,m.x=h.x/h.view.scale-h.view.translate.x,m.y=h.y/h.view.scale-h.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(b,this.createCellLookup(a)),c);return f.encode(g)};Graph.prototype.isSwimlane=function(a,b){if(null!=a&&this.model.getParent(a)!=this.model.getRoot()&&!this.model.isEdge(a)){var c=this.getCurrentCellStyle(a,b)[mxConstants.STYLE_SHAPE];return c==mxConstants.SHAPE_SWIMLANE||"table"==c}return!1};var h=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=
-function(a){var b=this.model.getParent(a);if(null!=b){var c=this.getCurrentCellStyle(b);if(null!=c.expand)return"0"!=c.expand}return h.apply(this,arguments)&&(null==b||!this.isTable(b))};var g=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(a,b,c,d,e,f,k,h){null==h&&(h=this.model.getParent(a),this.isTable(h)||this.isTableRow(h))&&(h=this.getCellAt(f,k,null,!0,!1));c=null;this.model.beginUpdate();try{c=g.apply(this,[a,b,c,d,e,f,k,h]);this.model.setValue(c,"");var m=this.getChildCells(c,
+f=0;f<e;f++)this.createCellLookup([this.model.getChildAt(d,f)],b)}return b};Graph.prototype.createCellMapping=function(a,b,c){c=null!=c?c:{};for(var d in a){var e=b[d];null==c[e]&&(c[e]=a[d].getId()||"")}return c};Graph.prototype.importGraphModel=function(a,b,c,d){b=null!=b?b:0;c=null!=c?c:0;var e=new mxCodec(a.ownerDocument),f=new mxGraphModel;e.decode(a,f);a=[];var e={},g={},h=f.getChildren(this.cloneCell(f.root,this.isCloneInvalidEdges(),e));if(null!=h){var k=this.createCellLookup([f.root]),h=
+h.slice();this.model.beginUpdate();try{if(1!=h.length||this.isCellLocked(this.getDefaultParent()))for(f=0;f<h.length;f++)m=this.model.getChildren(this.moveCells([h[f]],b,c,!1,this.model.getRoot())[0]),null!=m&&(a=a.concat(m));else{var m=f.getChildren(h[0]);null!=m&&(a=this.moveCells(m,b,c,!1,this.getDefaultParent()),g[f.getChildAt(f.root,0).getId()]=this.getDefaultParent().getId())}if(null!=a&&(this.createCellMapping(e,k,g),this.updateCustomLinks(g,a),d)){this.isGridEnabled()&&(b=this.snap(b),c=this.snap(c));
+var P=this.getBoundingBoxFromGeometry(a,!0);null!=P&&this.moveCells(a,b-P.x,c-P.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.encodeCells=function(a){for(var b={},c=this.cloneCells(a,null,b),d=new mxDictionary,e=0;e<a.length;e++)d.put(a[e],!0);for(var f=new mxCodec,g=new mxGraphModel,h=g.getChildAt(g.getRoot(),0),e=0;e<c.length;e++){g.add(h,c[e]);var k=this.view.getState(a[e]);if(null!=k){var m=this.getCellGeometry(c[e]);null!=m&&m.relative&&!this.model.isEdge(a[e])&&null==d.get(this.model.getParent(a[e]))&&
+(m.offset=null,m.relative=!1,m.x=k.x/k.view.scale-k.view.translate.x,m.y=k.y/k.view.scale-k.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(b,this.createCellLookup(a)),c);return f.encode(g)};Graph.prototype.isSwimlane=function(a,b){if(null!=a&&this.model.getParent(a)!=this.model.getRoot()&&!this.model.isEdge(a)){var c=this.getCurrentCellStyle(a,b)[mxConstants.STYLE_SHAPE];return c==mxConstants.SHAPE_SWIMLANE||"table"==c}return!1};var k=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=
+function(a){var b=this.model.getParent(a);if(null!=b){var c=this.getCurrentCellStyle(b);if(null!=c.expand)return"0"!=c.expand}return k.apply(this,arguments)&&(null==b||!this.isTable(b))};var g=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(a,b,c,d,e,f,h,k){null==k&&(k=this.model.getParent(a),this.isTable(k)||this.isTableRow(k))&&(k=this.getCellAt(f,h,null,!0,!1));c=null;this.model.beginUpdate();try{c=g.apply(this,[a,b,c,d,e,f,h,k]);this.model.setValue(c,"");var m=this.getChildCells(c,
!0);for(b=0;b<m.length;b++){var l=this.getCellGeometry(m[b]);null!=l&&l.relative&&0<l.x&&this.model.remove(m[b])}var P=this.getChildCells(a,!0);for(b=0;b<P.length;b++)l=this.getCellGeometry(P[b]),null!=l&&l.relative&&0>=l.x&&this.model.remove(P[b]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[c]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[c]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,null,[a]);this.setCellStyles(mxConstants.STYLE_STARTARROW,
-mxConstants.NONE,[a]);var n=this.model.getTerminal(c,!1);if(null!=n){var V=this.getCurrentCellStyle(n);null!=V&&"1"==V.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[a]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[a]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[c]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[c]))}}finally{this.model.endUpdate()}return c};var m=Graph.prototype.selectCell;Graph.prototype.selectCell=function(a,b,c){if(b||c)m.apply(this,arguments);
+mxConstants.NONE,[a]);var n=this.model.getTerminal(c,!1);if(null!=n){var W=this.getCurrentCellStyle(n);null!=W&&"1"==W.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[a]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[a]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[c]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[c]))}}finally{this.model.endUpdate()}return c};var m=Graph.prototype.selectCell;Graph.prototype.selectCell=function(a,b,c){if(b||c)m.apply(this,arguments);
else{var d=this.getSelectionCell(),e=null,f=[],g=mxUtils.bind(this,function(b){if(null!=this.view.getState(b)&&(this.model.isVertex(b)||this.model.isEdge(b)))if(f.push(b),b==d)e=f.length-1;else if(a&&null==d&&0<f.length||null!=e&&a&&f.length>e||!a&&0<e)return;for(var c=0;c<this.model.getChildCount(b);c++)g(this.model.getChildAt(b,c))});g(this.model.root);0<f.length&&(e=null!=e?mxUtils.mod(e+(a?1:-1),f.length):0,this.setSelectionCell(f[e]))}};Graph.prototype.swapUmlLifelines=function(a,b){var c=!1;
if(null!=b&&1==a.length){var d=this.view.getState(b),e=this.view.getState(a[0]);if(null!=d&&null!=e&&"umlLifeline"==d.style.shape&&"umlLifeline"==e.style.shape&&(e=this.getCellGeometry(b),d=this.getCellGeometry(a[0]),null!=e&&null!=d)){c=e.clone();e=d.clone();e.x=c.x;e.y=c.y;c.x=d.x;c.y=d.y;this.model.beginUpdate();try{this.model.setGeometry(b,c),this.model.setGeometry(a[0],e)}finally{this.model.endUpdate()}c=!0}}return c};var l=Graph.prototype.moveCells;Graph.prototype.moveCells=function(a,b,c,d,
-e,f,g){if(!d&&this.swapUmlLifelines(a,e))return a;g=null!=g?g:{};if(this.isTable(e)){for(var k=[],h=0;h<a.length;h++)this.isTable(a[h])?k=k.concat(this.model.getChildCells(a[h],!0).reverse()):k.push(a[h]);a=k}this.model.beginUpdate();try{k=[];for(h=0;h<a.length;h++)if(null!=e&&this.isTableRow(a[h])){var m=this.model.getParent(a[h]),P=this.getCellGeometry(a[h]);this.isTable(m)&&k.push(m);if(null!=m&&null!=P&&this.isTable(m)&&this.isTable(e)&&(d||m!=e)){if(!d){var n=this.getCellGeometry(m);null!=n&&
-(n=n.clone(),n.height-=P.height,this.model.setGeometry(m,n))}n=this.getCellGeometry(e);null!=n&&(n=n.clone(),n.height+=P.height,this.model.setGeometry(e,n));var V=this.model.getChildCells(e,!0);if(0<V.length){a[h]=d?this.cloneCell(a[h]):a[h];var p=this.model.getChildCells(a[h],!0),ca=this.model.getChildCells(V[0],!0),ea=ca.length-p.length;if(0<ea)for(var r=0;r<ea;r++){var ha=this.cloneCell(p[p.length-1]);null!=ha&&(ha.value="",this.model.add(a[h],ha))}else if(0>ea)for(r=0;r>ea;r--)this.model.remove(p[p.length+
-r-1]);p=this.model.getChildCells(a[h],!0);for(r=0;r<ca.length;r++){var u=this.getCellGeometry(ca[r]),t=this.getCellGeometry(p[r]);null!=u&&null!=t&&(t=t.clone(),t.width=u.width,this.model.setGeometry(p[r],t))}}}}for(var wa=l.apply(this,arguments),h=0;h<k.length;h++)!d&&this.model.contains(k[h])&&0==this.model.getChildCount(k[h])&&this.model.remove(k[h]);d&&this.updateCustomLinks(this.createCellMapping(g,this.createCellLookup(a)),wa)}finally{this.model.endUpdate()}return wa};var n=Graph.prototype.removeCells;
-Graph.prototype.removeCells=function(a,b){var c=[];this.model.beginUpdate();try{for(var d=0;d<a.length;d++)if(this.isTableCell(a[d])){var e=this.model.getParent(a[d]),f=this.model.getParent(e);1==this.model.getChildCount(e)&&1==this.model.getChildCount(f)?0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(c,f)&&c.push(f):this.labelChanged(a[d],"")}else{if(this.isTableRow(a[d])&&(f=this.model.getParent(a[d]),0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(c,f))){for(var g=this.model.getChildCells(f,!0),k=0,h=0;h<
-g.length;h++)0<=mxUtils.indexOf(a,g[h])&&k++;k==g.length&&c.push(f)}c.push(a[d])}c=n.apply(this,[c,b])}finally{this.model.endUpdate()}return c};Graph.prototype.updateCustomLinks=function(a,b,c){c=null!=c?c:new Graph;for(var d=0;d<b.length;d++)null!=b[d]&&c.updateCustomLinksForCell(a,b[d],c)};Graph.prototype.updateCustomLinksForCell=function(a,b){this.doUpdateCustomLinksForCell(a,b);for(var c=this.model.getChildCount(b),d=0;d<c;d++)this.updateCustomLinksForCell(a,this.model.getChildAt(b,d))};Graph.prototype.doUpdateCustomLinksForCell=
-function(a,b){};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var c=mxUtils.getValue(a.style,"points",null);if(null!=c){var d=[];try{for(var e=JSON.parse(c),c=0;c<e.length;c++){var f=e[c];d.push(new mxConnectionConstraint(new mxPoint(f[0],f[1]),2<f.length?"0"!=f[2]:!0,null,3<f.length?f[3]:0,4<f.length?f[4]:0))}}catch(Ba){}return d}if(null!=a.shape&&null!=a.shape.bounds){f=a.shape.direction;e=a.shape.bounds;c=a.shape.scale;d=e.width/c;e=e.height/c;if(f==mxConstants.DIRECTION_NORTH||
+e,f,g){if(!d&&this.swapUmlLifelines(a,e))return a;g=null!=g?g:{};if(this.isTable(e)){for(var h=[],k=0;k<a.length;k++)this.isTable(a[k])?h=h.concat(this.model.getChildCells(a[k],!0).reverse()):h.push(a[k]);a=h}this.model.beginUpdate();try{h=[];for(k=0;k<a.length;k++)if(null!=e&&this.isTableRow(a[k])){var m=this.model.getParent(a[k]),P=this.getCellGeometry(a[k]);this.isTable(m)&&h.push(m);if(null!=m&&null!=P&&this.isTable(m)&&this.isTable(e)&&(d||m!=e)){if(!d){var n=this.getCellGeometry(m);null!=n&&
+(n=n.clone(),n.height-=P.height,this.model.setGeometry(m,n))}n=this.getCellGeometry(e);null!=n&&(n=n.clone(),n.height+=P.height,this.model.setGeometry(e,n));var W=this.model.getChildCells(e,!0);if(0<W.length){a[k]=d?this.cloneCell(a[k]):a[k];var p=this.model.getChildCells(a[k],!0),da=this.model.getChildCells(W[0],!0),r=da.length-p.length;if(0<r)for(var V=0;V<r;V++){var ha=this.cloneCell(p[p.length-1]);null!=ha&&(ha.value="",this.model.add(a[k],ha))}else if(0>r)for(V=0;V>r;V--)this.model.remove(p[p.length+
+V-1]);p=this.model.getChildCells(a[k],!0);for(V=0;V<da.length;V++){var u=this.getCellGeometry(da[V]),t=this.getCellGeometry(p[V]);null!=u&&null!=t&&(t=t.clone(),t.width=u.width,this.model.setGeometry(p[V],t))}}}}for(var v=l.apply(this,arguments),k=0;k<h.length;k++)!d&&this.model.contains(h[k])&&0==this.model.getChildCount(h[k])&&this.model.remove(h[k]);d&&this.updateCustomLinks(this.createCellMapping(g,this.createCellLookup(a)),v)}finally{this.model.endUpdate()}return v};var n=Graph.prototype.removeCells;
+Graph.prototype.removeCells=function(a,b){var c=[];this.model.beginUpdate();try{for(var d=0;d<a.length;d++)if(this.isTableCell(a[d])){var e=this.model.getParent(a[d]),f=this.model.getParent(e);1==this.model.getChildCount(e)&&1==this.model.getChildCount(f)?0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(c,f)&&c.push(f):this.labelChanged(a[d],"")}else{if(this.isTableRow(a[d])&&(f=this.model.getParent(a[d]),0>mxUtils.indexOf(a,f)&&0>mxUtils.indexOf(c,f))){for(var g=this.model.getChildCells(f,!0),h=0,k=0;k<
+g.length;k++)0<=mxUtils.indexOf(a,g[k])&&h++;h==g.length&&c.push(f)}c.push(a[d])}c=n.apply(this,[c,b])}finally{this.model.endUpdate()}return c};Graph.prototype.updateCustomLinks=function(a,b,c){c=null!=c?c:new Graph;for(var d=0;d<b.length;d++)null!=b[d]&&c.updateCustomLinksForCell(a,b[d],c)};Graph.prototype.updateCustomLinksForCell=function(a,b){this.doUpdateCustomLinksForCell(a,b);for(var c=this.model.getChildCount(b),d=0;d<c;d++)this.updateCustomLinksForCell(a,this.model.getChildAt(b,d))};Graph.prototype.doUpdateCustomLinksForCell=
+function(a,b){};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var c=mxUtils.getValue(a.style,"points",null);if(null!=c){var d=[];try{for(var e=JSON.parse(c),c=0;c<e.length;c++){var f=e[c];d.push(new mxConnectionConstraint(new mxPoint(f[0],f[1]),2<f.length?"0"!=f[2]:!0,null,3<f.length?f[3]:0,4<f.length?f[4]:0))}}catch(Aa){}return d}if(null!=a.shape&&null!=a.shape.bounds){f=a.shape.direction;e=a.shape.bounds;c=a.shape.scale;d=e.width/c;e=e.height/c;if(f==mxConstants.DIRECTION_NORTH||
f==mxConstants.DIRECTION_SOUTH)f=d,d=e,e=f;c=a.shape.getConstraints(a.style,d,e);if(null!=c)return c;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints;if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var b=this.getCurrentCellStyle(a),b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;
this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a])}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),c=0,d=0;d<b;d++){var e=this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(a)};Graph.prototype.isValidDropTarget=function(a,b,c){for(var d=this.getCurrentCellStyle(a),e=!0,f=!0,g=0;g<b.length&&f;g++)e=e&&this.isTable(b[g]),f=f&&this.isTableRow(b[g]);return("1"!=mxUtils.getValue(d,"part","0")||
this.isContainer(a))&&"0"!=mxUtils.getValue(d,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(a))&&!this.isTableRow(a)&&(!this.isTable(a)||f||e)&&!this.isCellLocked(a)};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(b&&null!=a&&null!=this.layoutManager){var c=
this.model.getParent(a);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a,b){var c=this.getModel(),d=[];c.beginUpdate();try{for(var e=0;e<a.length;e++){var f=a[e];if(c.isEdge(f)){var g=
-c.getTerminal(f,!0),k=c.getTerminal(f,!1);c.setTerminal(f,k,!0);c.setTerminal(f,g,!1);var h=c.getGeometry(f);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var m=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(m,!1);h.setTerminalPoint(l,!0);c.setGeometry(f,h);var n=this.view.getState(f),P=this.view.getState(g),p=this.view.getState(k);if(null!=n){var V=null!=P?this.getConnectionConstraint(n,P,!0):null,r=null!=p?this.getConnectionConstraint(n,p,!1):null;this.setConnectionConstraint(f,
-g,!0,r);this.setConnectionConstraint(f,k,!1,V);var u=mxUtils.getValue(n.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(n.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[f]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,u,[f])}d.push(f)}}else if(c.isVertex(f)&&(h=this.getCellGeometry(f),null!=h)){if(!(this.isTable(f)||this.isTableRow(f)||this.isTableCell(f)||this.isSwimlane(f))){h=h.clone();h.x+=h.width/
-2-h.height/2;h.y+=h.height/2-h.width/2;var t=h.width;h.width=h.height;h.height=t;c.setGeometry(f,h)}var v=this.view.getState(f);if(null!=v){var D=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],U=mxUtils.getValue(v.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,D[mxUtils.mod(mxUtils.indexOf(D,U)+(b?-1:1),D.length)],[f])}d.push(f)}}}finally{c.endUpdate()}return d};Graph.prototype.stencilHasPlaceholders=
+c.getTerminal(f,!0),h=c.getTerminal(f,!1);c.setTerminal(f,h,!0);c.setTerminal(f,g,!1);var k=c.getGeometry(f);if(null!=k){k=k.clone();null!=k.points&&k.points.reverse();var m=k.getTerminalPoint(!0),l=k.getTerminalPoint(!1);k.setTerminalPoint(m,!1);k.setTerminalPoint(l,!0);c.setGeometry(f,k);var n=this.view.getState(f),P=this.view.getState(g),p=this.view.getState(h);if(null!=n){var W=null!=P?this.getConnectionConstraint(n,P,!0):null,r=null!=p?this.getConnectionConstraint(n,p,!1):null;this.setConnectionConstraint(f,
+g,!0,r);this.setConnectionConstraint(f,h,!1,W);var u=mxUtils.getValue(n.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(n.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[f]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,u,[f])}d.push(f)}}else if(c.isVertex(f)&&(k=this.getCellGeometry(f),null!=k)){if(!(this.isTable(f)||this.isTableRow(f)||this.isTableCell(f)||this.isSwimlane(f))){k=k.clone();k.x+=k.width/
+2-k.height/2;k.y+=k.height/2-k.width/2;var t=k.width;k.width=k.height;k.height=t;c.setGeometry(f,k)}var v=this.view.getState(f);if(null!=v){var D=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],U=mxUtils.getValue(v.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,D[mxUtils.mod(mxUtils.indexOf(D,U)+(b?-1:1),D.length)],[f])}d.push(f)}}}finally{c.endUpdate()}return d};Graph.prototype.stencilHasPlaceholders=
function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};var p=Graph.prototype.processChange;Graph.prototype.processChange=function(a){if(a instanceof mxGeometryChange&&(this.isTableCell(a.cell)||this.isTableRow(a.cell))&&(null==a.previous&&null!=a.geometry||null!=a.previous&&!a.previous.equals(a.geometry))){var b=a.cell;this.isTableCell(b)&&(b=this.model.getParent(b));this.isTableRow(b)&&
(b=this.model.getParent(b));var c=this.view.getState(b);null!=c&&null!=c.shape&&(this.view.invalidate(b),c.shape.bounds=null)}p.apply(this,arguments);a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value&&this.invalidateDescendantsWithPlaceholders(a.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(a){a=this.model.getDescendants(a);if(0<a.length)for(var b=0;b<a.length;b++){var c=this.view.getState(a[b]);null!=c&&null!=c.shape&&null!=c.shape.stencil&&
this.stencilHasPlaceholders(c.shape.stencil)?this.removeStateForCell(a[b]):this.isReplacePlaceholders(a[b])&&this.view.invalidate(a[b],!1,!1)}};Graph.prototype.replaceElement=function(a,b){for(var c=a.ownerDocument.createElement(null!=b?b:"span"),d=Array.prototype.slice.call(a.attributes);attr=d.pop();)c.setAttribute(attr.nodeName,attr.nodeValue);c.innerHTML=a.innerHTML;a.parentNode.replaceChild(c,a)};Graph.prototype.processElements=function(a,b){if(null!=a)for(var c=a.getElementsByTagName("*"),d=
-0;d<c.length;d++)b(c[d])};Graph.prototype.updateLabelElements=function(a,b,c){a=null!=a?a:this.getSelectionCells();for(var d=document.createElement("div"),e=0;e<a.length;e++)if(this.isHtmlLabel(a[e])){var f=this.convertValueToString(a[e]);if(null!=f&&0<f.length){d.innerHTML=f;for(var g=d.getElementsByTagName(null!=c?c:"*"),k=0;k<g.length;k++)b(g[k]);d.innerHTML!=f&&this.cellLabelChanged(a[e],d.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,b,c){b=Graph.zapGremlins(b);this.model.beginUpdate();
+0;d<c.length;d++)b(c[d])};Graph.prototype.updateLabelElements=function(a,b,c){a=null!=a?a:this.getSelectionCells();for(var d=document.createElement("div"),e=0;e<a.length;e++)if(this.isHtmlLabel(a[e])){var f=this.convertValueToString(a[e]);if(null!=f&&0<f.length){d.innerHTML=f;for(var g=d.getElementsByTagName(null!=c?c:"*"),h=0;h<g.length;h++)b(g[h]);d.innerHTML!=f&&this.cellLabelChanged(a[e],d.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,b,c){b=Graph.zapGremlins(b);this.model.beginUpdate();
try{if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var d=a.getAttribute("placeholder"),e=a;null!=e;){if(e==this.model.getRoot()||null!=e.value&&"object"==typeof e.value&&e.hasAttribute(d)){this.setAttributeForCell(e,d,b);break}e=this.model.getParent(e)}var f=a.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&f.hasAttribute("label_"+Graph.diagramLanguage)?f.setAttribute("label_"+Graph.diagramLanguage,b):
f.setAttribute("label",b);b=f}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(a){if(null!=a){for(var b=new mxDictionary,c=0;c<a.length;c++)b.put(a[c],!0);for(var d=[],c=0;c<a.length;c++){var e=this.model.getParent(a[c]);null==e||b.get(e)||(b.put(e,!0),d.push(e))}for(c=0;c<d.length;c++)if(e=this.view.getState(d[c]),null!=e&&(this.model.isEdge(e.cell)||this.model.isVertex(e.cell))&&this.isCellDeletable(e.cell)&&this.isTransparentState(e)){for(var f=
!0,g=0;g<this.model.getChildCount(e.cell)&&f;g++)b.get(this.model.getChildAt(e.cell,g))||(f=!1);f&&a.push(e.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(a){for(var b=[],c=0;c<a.length;c++)this.isCellDeletable(a[c])&&this.isTransparentState(this.view.getState(a[c]))&&b.push(a[c]);a=b;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(a,b){this.setAttributeForCell(a,"link",b)};Graph.prototype.setTooltipForCell=
@@ -2821,39 +2831,39 @@ a))};Graph.prototype.getFreeInsertPoint=function(){var a=this.view,b=this.getGra
this.container.clientWidth/2)/this.view.scale-this.view.translate.x-a.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/2)/this.view.scale-this.view.translate.y-a.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-a.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-a.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=
function(a,b,c){var d=new mxCell;d.value="Text";d.geometry=new mxGeometry(0,0,0,0);d.vertex=!0;if(null!=c&&this.model.isEdge(c.cell)){d.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";d.geometry.relative=!0;d.connectable=!1;var e=this.view.getRelativePoint(c,a,b);d.geometry.x=Math.round(1E4*e.x)/1E4;d.geometry.y=Math.round(e.y);d.geometry.offset=new mxPoint(0,0);var e=this.view.getPoint(c,d.geometry),f=this.view.scale;d.geometry.offset=new mxPoint(Math.round((a-e.x)/
f),Math.round((b-e.y)/f))}else e=this.view.translate,d.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",d.geometry.width=40,d.geometry.height=20,d.geometry.x=Math.round(a/this.view.scale)-e.x-(null!=c?c.origin.x:0),d.geometry.y=Math.round(b/this.view.scale)-e.y-(null!=c?c.origin.y:0),d.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([d],null!=c?c.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[d])),this.autoSizeCell(d)}finally{this.getModel().endUpdate()}return d};
-Graph.prototype.addClickHandler=function(a,b,c){var d=mxUtils.bind(this,function(){var a=this.container.getElementsByTagName("a");if(null!=a)for(var c=0;c<a.length;c++){var d=this.getAbsoluteUrl(a[c].getAttribute("href"));null!=d&&(a[c].setAttribute("rel",this.linkRelation),a[c].setAttribute("href",d),null!=b&&mxEvent.addGestureListeners(a[c],null,null,b))}});this.model.addListener(mxEvent.CHANGE,d);d();var e=this.container.style.cursor,f=this.getTolerance(),g=this,k={currentState:null,currentLink:null,
+Graph.prototype.addClickHandler=function(a,b,c){var d=mxUtils.bind(this,function(){var a=this.container.getElementsByTagName("a");if(null!=a)for(var c=0;c<a.length;c++){var d=this.getAbsoluteUrl(a[c].getAttribute("href"));null!=d&&(a[c].setAttribute("rel",this.linkRelation),a[c].setAttribute("href",d),null!=b&&mxEvent.addGestureListeners(a[c],null,null,b))}});this.model.addListener(mxEvent.CHANGE,d);d();var e=this.container.style.cursor,f=this.getTolerance(),g=this,h={currentState:null,currentLink:null,
currentTarget:null,highlight:null!=a&&""!=a&&a!=mxConstants.NONE?new mxCellHighlight(g,a,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(a){var b=a.sourceState;if(null==b||null==g.getLinkForCell(b.cell))a=g.getCellAt(a.getGraphX(),a.getGraphY(),null,null,null,function(a,b,c){return null==g.getLinkForCell(a.cell)}),b=null==b||g.model.isAncestor(a,b.cell)?g.view.getState(a):null;b!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=b,null!=this.currentState&&
this.activate(this.currentState))},mouseDown:function(a,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft=g.container.scrollLeft;this.scrollTop=g.container.scrollTop;null==this.currentLink&&"auto"==g.container.style.overflow&&(g.container.style.cursor="move");this.updateCurrentState(b)},mouseMove:function(a,b){if(g.isMouseDown){if(null!=this.currentLink){var c=Math.abs(this.startX-b.getGraphX()),d=Math.abs(this.startY-b.getGraphY());(c>f||d>f)&&this.clear()}}else{for(c=b.getSource();null!=
-c&&"a"!=c.nodeName.toLowerCase();)c=c.parentNode;null!=c?this.clear():(null!=g.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&g.tooltipHandler.reset(b,!0,this.currentState),(null==this.currentState||b.getState()!=this.currentState&&null!=b.sourceState||!g.intersects(this.currentState,b.getGraphX(),b.getGraphY()))&&this.updateCurrentState(b))}},mouseUp:function(a,d){for(var e=d.getSource(),k=d.getEvent();null!=e&&"a"!=e.nodeName.toLowerCase();)e=e.parentNode;null==e&&Math.abs(this.scrollLeft-
-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&(null==d.sourceState||!d.isSource(d.sourceState.control))&&((mxEvent.isLeftMouseButton(k)||mxEvent.isMiddleMouseButton(k))&&!mxEvent.isPopupTrigger(k)||mxEvent.isTouchEvent(k))&&(null!=this.currentLink?(e=g.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==b||b(k,this.currentLink),mxEvent.isConsumed(k)||(k=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(k)?"_blank":
-e?g.linkTarget:"_top",g.openLink(this.currentLink,k),d.consume())):null!=c&&!d.isConsumed()&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&Math.abs(this.startX-d.getGraphX())<f&&Math.abs(this.startY-d.getGraphY())<f&&c(d.getEvent()));this.clear()},activate:function(a){this.currentLink=g.getAbsoluteUrl(g.getLinkForCell(a.cell));null!=this.currentLink&&(this.currentTarget=g.getLinkTargetForCell(a.cell),g.container.style.cursor="pointer",null!=
-this.highlight&&this.highlight.highlight(a))},clear:function(){null!=g.container&&(g.container.style.cursor=e);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=g.tooltipHandler&&g.tooltipHandler.hide()}};g.click=function(a){};g.addMouseListener(k);mxEvent.addListener(document,"mouseleave",function(a){k.clear()})};Graph.prototype.duplicateCells=function(a,b){a=null!=a?a:this.getSelectionCells();b=null!=b?b:!0;for(var c=0;c<a.length;c++)this.isTableCell(a[c])&&
-(a[c]=this.model.getParent(a[c]));a=this.model.getTopmostCells(a);var d=this.getModel(),e=this.gridSize,f=[];d.beginUpdate();try{for(var g={},k=this.createCellLookup(a),h=this.cloneCells(a,!1,g,!0),c=0;c<a.length;c++){var m=d.getParent(a[c]);if(null!=m){var l=this.moveCells([h[c]],e,e,!1)[0];f.push(l);if(b)d.add(m,h[c]);else{var n=m.getIndex(a[c]);d.add(m,h[c],n+1)}if(this.isTable(m)){var P=this.getCellGeometry(h[c]),p=this.getCellGeometry(m);null!=P&&null!=p&&(p=p.clone(),p.height+=P.height,d.setGeometry(m,
-p))}}else f.push(h[c])}this.updateCustomLinks(this.createCellMapping(g,k),h,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",h))}finally{d.endUpdate()}return f};Graph.prototype.insertImage=function(a,b,c){if(null!=a&&null!=this.cellEditor.textarea){for(var d=this.cellEditor.textarea.getElementsByTagName("img"),e=[],f=0;f<d.length;f++)e.push(d[f]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==e.length+1)for(f=a.length-
+c&&"a"!=c.nodeName.toLowerCase();)c=c.parentNode;null!=c?this.clear():(null!=g.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&g.tooltipHandler.reset(b,!0,this.currentState),(null==this.currentState||b.getState()!=this.currentState&&null!=b.sourceState||!g.intersects(this.currentState,b.getGraphX(),b.getGraphY()))&&this.updateCurrentState(b))}},mouseUp:function(a,d){for(var e=d.getSource(),h=d.getEvent();null!=e&&"a"!=e.nodeName.toLowerCase();)e=e.parentNode;null==e&&Math.abs(this.scrollLeft-
+g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&(null==d.sourceState||!d.isSource(d.sourceState.control))&&((mxEvent.isLeftMouseButton(h)||mxEvent.isMiddleMouseButton(h))&&!mxEvent.isPopupTrigger(h)||mxEvent.isTouchEvent(h))&&(null!=this.currentLink?(e=g.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==b||b(h,this.currentLink),mxEvent.isConsumed(h)||(h=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(h)?"_blank":
+e?g.linkTarget:"_top",g.openLink(this.currentLink,h),d.consume())):null!=c&&!d.isConsumed()&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&Math.abs(this.startX-d.getGraphX())<f&&Math.abs(this.startY-d.getGraphY())<f&&c(d.getEvent()));this.clear()},activate:function(a){this.currentLink=g.getAbsoluteUrl(g.getLinkForCell(a.cell));null!=this.currentLink&&(this.currentTarget=g.getLinkTargetForCell(a.cell),g.container.style.cursor="pointer",null!=
+this.highlight&&this.highlight.highlight(a))},clear:function(){null!=g.container&&(g.container.style.cursor=e);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=g.tooltipHandler&&g.tooltipHandler.hide()}};g.click=function(a){};g.addMouseListener(h);mxEvent.addListener(document,"mouseleave",function(a){h.clear()})};Graph.prototype.duplicateCells=function(a,b){a=null!=a?a:this.getSelectionCells();b=null!=b?b:!0;for(var c=0;c<a.length;c++)this.isTableCell(a[c])&&
+(a[c]=this.model.getParent(a[c]));a=this.model.getTopmostCells(a);var d=this.getModel(),e=this.gridSize,f=[];d.beginUpdate();try{for(var g={},h=this.createCellLookup(a),k=this.cloneCells(a,!1,g,!0),c=0;c<a.length;c++){var m=d.getParent(a[c]);if(null!=m){var l=this.moveCells([k[c]],e,e,!1)[0];f.push(l);if(b)d.add(m,k[c]);else{var n=m.getIndex(a[c]);d.add(m,k[c],n+1)}if(this.isTable(m)){var P=this.getCellGeometry(k[c]),p=this.getCellGeometry(m);null!=P&&null!=p&&(p=p.clone(),p.height+=P.height,d.setGeometry(m,
+p))}}else f.push(k[c])}this.updateCustomLinks(this.createCellMapping(g,h),k,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",k))}finally{d.endUpdate()}return f};Graph.prototype.insertImage=function(a,b,c){if(null!=a&&null!=this.cellEditor.textarea){for(var d=this.cellEditor.textarea.getElementsByTagName("img"),e=[],f=0;f<d.length;f++)e.push(d[f]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==e.length+1)for(f=a.length-
1;0<=f;f--)if(0==f||a[f]!=e[f-1]){a[f].setAttribute("width",b);a[f].setAttribute("height",c);break}}};Graph.prototype.insertLink=function(a){if(null!=this.cellEditor.textarea)if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var b=this.cellEditor.textarea.getElementsByTagName("a"),c=[],d=0;d<b.length;d++)c.push(b[d]);document.execCommand("createlink",!1,mxUtils.trim(a));b=this.cellEditor.textarea.getElementsByTagName("a");if(b.length==c.length+1)for(d=b.length-1;0<=d;d--)if(b[d]!=
c[d-1]){for(b=b[d].getElementsByTagName("a");0<b.length;){for(c=b[0].parentNode;null!=b[0].firstChild;)c.insertBefore(b[0].firstChild,b[0]);c.removeChild(b[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var b=mxGraph.prototype.isCellResizable.apply(this,arguments),c=this.getCurrentCellStyle(a);return!this.isTableCell(a)&&!this.isTableRow(a)&&(b||"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==c[mxConstants.STYLE_WHITE_SPACE])};
-Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var c=[],d=null,e=null,f=0;f<b.length;f++)if(this.getModel().isVertex(b[f])){var g=this.view.getState(b[f]);if(null!=g){var k=a?g.getCenterX():g.getCenterY(),d=null!=d?Math.max(d,k):k,e=null!=e?Math.min(e,k):k;c.push(g)}}if(2<c.length){c.sort(function(b,c){return a?b.x-c.x:b.y-c.y});g=this.view.translate;k=this.view.scale;e=e/k-(a?g.x:g.y);d=d/k-(a?g.x:g.y);this.getModel().beginUpdate();
-try{for(var h=(d-e)/(c.length-1),d=e,f=1;f<c.length-1;f++){var m=this.view.getState(this.model.getParent(c[f].cell)),l=this.getCellGeometry(c[f].cell),d=d+h;null!=l&&null!=m&&(l=l.clone(),a?l.x=Math.round(d-l.width/2)-m.origin.x:l.y=Math.round(d-l.height/2)-m.origin.y,this.getModel().setGeometry(c[f].cell,l))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.createSvgImageExport=
-function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.parseBackgroundImage=function(a){var b=null;null!=a&&0<a.length&&(a=JSON.parse(a),b=new mxImage(a.src,a.width,a.height));return b};Graph.prototype.getBackgroundImageObject=function(a){return a};Graph.prototype.getSvg=function(a,b,c,d,e,f,g,k,h,m,l,n,p,r){var P=null;if(null!=r)for(P=new mxDictionary,l=0;l<r.length;l++)P.put(r[l],!0);if(r=this.useCssTransforms)this.useCssTransforms=
-!1,this.view.revalidate(),this.sizeDidChange();try{b=null!=b?b:1;c=null!=c?c:0;e=null!=e?e:!0;f=null!=f?f:!0;g=null!=g?g:!0;m=null!=m?m:!1;var V="page"==p?this.view.getBackgroundPageBounds():f&&null==P||d||"diagram"==p?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),ca=this.view.scale;"diagram"==p&&null!=this.backgroundImage&&(V=mxRectangle.fromRectangle(V),V.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*ca,(this.view.translate.y+this.backgroundImage.y)*ca,
-this.backgroundImage.width*ca,this.backgroundImage.height*ca)));if(null==V)throw Error(mxResources.get("drawingEmpty"));var u=mxUtils.createXmlDocument(),t=null!=u.createElementNS?u.createElementNS(mxConstants.NS_SVG,"svg"):u.createElement("svg");null!=a&&(null!=t.style?t.style.backgroundColor=a:t.setAttribute("style","background-color:"+a));null==u.createElementNS?(t.setAttribute("xmlns",mxConstants.NS_SVG),t.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):t.setAttributeNS("http://www.w3.org/2000/xmlns/",
-"xmlns:xlink",mxConstants.NS_XLINK);a=b/ca;var v=Math.max(1,Math.ceil(V.width*a)+2*c)+(m&&0==c?5:0),ea=Math.max(1,Math.ceil(V.height*a)+2*c)+(m&&0==c?5:0);t.setAttribute("version","1.1");t.setAttribute("width",v+"px");t.setAttribute("height",ea+"px");t.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+v+" "+ea);u.appendChild(t);var ha=null!=u.createElementNS?u.createElementNS(mxConstants.NS_SVG,"g"):u.createElement("g");t.appendChild(ha);var D=this.createSvgCanvas(ha);D.foOffset=e?-.5:0;D.textOffset=
-e?-.5:0;D.imageOffset=e?-.5:0;D.translate(Math.floor(c/b-V.x/ca),Math.floor(c/b-V.y/ca));var U=document.createElement("div"),x=D.getAlternateText;D.getAlternateText=function(a,b,c,d,e,f,g,k,h,m,l,n,q){if(null!=f&&0<this.state.fontSize)try{mxUtils.isNode(f)?f=f.innerText:(U.innerHTML=f,f=mxUtils.extractTextWithWhitespace(U.childNodes));for(var E=Math.ceil(2*d/this.state.fontSize),B=[],C=0,H=0;(0==E||C<E)&&H<f.length;){var Da=f.charCodeAt(H);if(10==Da||13==Da){if(0<C)break}else B.push(f.charAt(H)),
-255>Da&&C++;H++}B.length<f.length&&1<f.length-B.length&&(f=mxUtils.trim(B.join(""))+"...");return f}catch(db){return x.apply(this,arguments)}else return x.apply(this,arguments)};var y=this.backgroundImage;if(null!=y){b=ca/b;var A=this.view.translate,w=new mxRectangle((y.x+A.x)*b,(y.y+A.y)*b,y.width*b,y.height*b);mxUtils.intersects(V,w)&&D.image(y.x+A.x,y.y+A.y,y.width,y.height,y.src,!0)}D.scale(a);D.textEnabled=g;k=null!=k?k:this.createSvgImageExport();var G=k.drawCellState,z=k.getLinkForCellState;
-k.getLinkForCellState=function(a,b){var c=z.apply(this,arguments);return null==c||a.view.graph.isCustomLink(c)?null:c};k.getLinkTargetForCellState=function(a,b){return a.view.graph.getLinkTargetForCell(a.cell)};k.drawCellState=function(a,b){for(var c=a.view.graph,d=null!=P?P.get(a.cell):c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!(f&&null==P||d)&&null!=e;)d=null!=P?P.get(e):c.isCellSelected(e),e=c.model.getParent(e);(f&&null==P||d)&&G.apply(this,arguments)};k.drawState(this.getView().getState(this.model.root),
-D);this.updateSvgLinks(t,h,!0);this.addForeignObjectWarning(D,t);return t}finally{r&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(a,b){if("0"!=urlParams["svg-warning"]&&0<b.getElementsByTagName("foreignObject").length){var c=a.createElement("switch"),d=a.createElement("g");d.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=a.createElement("a");e.setAttribute("transform","translate(0,-5)");
+Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var c=[],d=null,e=null,f=0;f<b.length;f++)if(this.getModel().isVertex(b[f])){var g=this.view.getState(b[f]);if(null!=g){var h=a?g.getCenterX():g.getCenterY(),d=null!=d?Math.max(d,h):h,e=null!=e?Math.min(e,h):h;c.push(g)}}if(2<c.length){c.sort(function(b,c){return a?b.x-c.x:b.y-c.y});g=this.view.translate;h=this.view.scale;e=e/h-(a?g.x:g.y);d=d/h-(a?g.x:g.y);this.getModel().beginUpdate();
+try{for(var k=(d-e)/(c.length-1),d=e,f=1;f<c.length-1;f++){var m=this.view.getState(this.model.getParent(c[f].cell)),l=this.getCellGeometry(c[f].cell),d=d+k;null!=l&&null!=m&&(l=l.clone(),a?l.x=Math.round(d-l.width/2)-m.origin.x:l.y=Math.round(d-l.height/2)-m.origin.y,this.getModel().setGeometry(c[f].cell,l))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.createSvgImageExport=
+function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.parseBackgroundImage=function(a){var b=null;null!=a&&0<a.length&&(a=JSON.parse(a),b=new mxImage(a.src,a.width,a.height));return b};Graph.prototype.getBackgroundImageObject=function(a){return a};Graph.prototype.getSvg=function(a,b,c,d,e,f,g,h,k,m,l,n,p,r){var P=null;if(null!=r)for(P=new mxDictionary,l=0;l<r.length;l++)P.put(r[l],!0);if(r=this.useCssTransforms)this.useCssTransforms=
+!1,this.view.revalidate(),this.sizeDidChange();try{b=null!=b?b:1;c=null!=c?c:0;e=null!=e?e:!0;f=null!=f?f:!0;g=null!=g?g:!0;m=null!=m?m:!1;var W="page"==p?this.view.getBackgroundPageBounds():f&&null==P||d||"diagram"==p?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),da=this.view.scale;"diagram"==p&&null!=this.backgroundImage&&(W=mxRectangle.fromRectangle(W),W.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*da,(this.view.translate.y+this.backgroundImage.y)*da,
+this.backgroundImage.width*da,this.backgroundImage.height*da)));if(null==W)throw Error(mxResources.get("drawingEmpty"));var u=mxUtils.createXmlDocument(),t=null!=u.createElementNS?u.createElementNS(mxConstants.NS_SVG,"svg"):u.createElement("svg");null!=a&&(null!=t.style?t.style.backgroundColor=a:t.setAttribute("style","background-color:"+a));null==u.createElementNS?(t.setAttribute("xmlns",mxConstants.NS_SVG),t.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):t.setAttributeNS("http://www.w3.org/2000/xmlns/",
+"xmlns:xlink",mxConstants.NS_XLINK);a=b/da;var v=Math.max(1,Math.ceil(W.width*a)+2*c)+(m&&0==c?5:0),V=Math.max(1,Math.ceil(W.height*a)+2*c)+(m&&0==c?5:0);t.setAttribute("version","1.1");t.setAttribute("width",v+"px");t.setAttribute("height",V+"px");t.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+v+" "+V);u.appendChild(t);var ha=null!=u.createElementNS?u.createElementNS(mxConstants.NS_SVG,"g"):u.createElement("g");t.appendChild(ha);var D=this.createSvgCanvas(ha);D.foOffset=e?-.5:0;D.textOffset=
+e?-.5:0;D.imageOffset=e?-.5:0;D.translate(Math.floor(c/b-W.x/da),Math.floor(c/b-W.y/da));var U=document.createElement("div"),x=D.getAlternateText;D.getAlternateText=function(a,b,c,d,e,f,g,h,k,m,l,n,q){if(null!=f&&0<this.state.fontSize)try{mxUtils.isNode(f)?f=f.innerText:(U.innerHTML=f,f=mxUtils.extractTextWithWhitespace(U.childNodes));for(var A=Math.ceil(2*d/this.state.fontSize),C=[],E=0,H=0;(0==A||E<A)&&H<f.length;){var Ca=f.charCodeAt(H);if(10==Ca||13==Ca){if(0<E)break}else C.push(f.charAt(H)),
+255>Ca&&E++;H++}C.length<f.length&&1<f.length-C.length&&(f=mxUtils.trim(C.join(""))+"...");return f}catch(db){return x.apply(this,arguments)}else return x.apply(this,arguments)};var y=this.backgroundImage;if(null!=y){b=da/b;var B=this.view.translate,w=new mxRectangle((y.x+B.x)*b,(y.y+B.y)*b,y.width*b,y.height*b);mxUtils.intersects(W,w)&&D.image(y.x+B.x,y.y+B.y,y.width,y.height,y.src,!0)}D.scale(a);D.textEnabled=g;h=null!=h?h:this.createSvgImageExport();var G=h.drawCellState,z=h.getLinkForCellState;
+h.getLinkForCellState=function(a,b){var c=z.apply(this,arguments);return null==c||a.view.graph.isCustomLink(c)?null:c};h.getLinkTargetForCellState=function(a,b){return a.view.graph.getLinkTargetForCell(a.cell)};h.drawCellState=function(a,b){for(var c=a.view.graph,d=null!=P?P.get(a.cell):c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!(f&&null==P||d)&&null!=e;)d=null!=P?P.get(e):c.isCellSelected(e),e=c.model.getParent(e);(f&&null==P||d)&&G.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),
+D);this.updateSvgLinks(t,k,!0);this.addForeignObjectWarning(D,t);return t}finally{r&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(a,b){if("0"!=urlParams["svg-warning"]&&0<b.getElementsByTagName("foreignObject").length){var c=a.createElement("switch"),d=a.createElement("g");d.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=a.createElement("a");e.setAttribute("transform","translate(0,-5)");
null==e.setAttributeNS||b.ownerDocument!=document&&null==document.documentMode?(e.setAttribute("xlink:href",Graph.foreignObjectWarningLink),e.setAttribute("target","_blank")):(e.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),e.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var f=a.createElement("text");f.setAttribute("text-anchor","middle");f.setAttribute("font-size","10px");f.setAttribute("x","50%");f.setAttribute("y","100%");mxUtils.write(f,Graph.foreignObjectWarningText);
c.appendChild(d);e.appendChild(f);c.appendChild(e);b.appendChild(c)}};Graph.prototype.updateSvgLinks=function(a,b,c){a=a.getElementsByTagName("a");for(var d=0;d<a.length;d++)if(null==a[d].getAttribute("target")){var e=a[d].getAttribute("href");null==e&&(e=a[d].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[d].setAttribute("target",b):c&&this.isCustomLink(e)&&a[d].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){a=new mxSvgCanvas2D(a);
a.pointerEvents=!0;return a};Graph.prototype.getSelectedElement=function(){var a=null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getSelectedEditingElement=function(){for(var a=this.getSelectedElement();null!=a&&a.nodeType!=mxConstants.NODETYPE_ELEMENT;)a=a.parentNode;null!=a&&a==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&
this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=this.cellEditor.textarea.firstChild);return a};Graph.prototype.getParentByName=function(a,b,c){for(;null!=a&&a.nodeName!=b;){if(a==c)return null;a=a.parentNode}return a};Graph.prototype.getParentByNames=function(a,b,c){for(;null!=a&&!(0<=mxUtils.indexOf(b,a.nodeName));){if(a==c)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var b=null;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&
b.rangeCount){var c=document.createRange();c.selectNode(a);b.removeAllRanges();b.addRange(c)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),c=b.createRange(),c.setEndPoint("StartToStart",a),c.select())};Graph.prototype.deleteCells=function(a,b){var c=null;if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var d=0;d<a.length;d++){var e=this.model.getParent(a[d]);if(this.isTable(e)){var f=this.getCellGeometry(a[d]),g=this.getCellGeometry(e);null!=f&&null!=g&&
-(g=g.clone(),g.height-=f.height,this.model.setGeometry(e,g))}}var k=this.selectParentAfterDelete?this.model.getParents(a):null;this.removeCells(a,b)}finally{this.model.endUpdate()}if(null!=k)for(c=[],d=0;d<k.length;d++)this.model.contains(k[d])&&(this.model.isVertex(k[d])||this.model.isEdge(k[d]))&&c.push(k[d])}return c};Graph.prototype.insertTableColumn=function(a,b){var c=this.getModel();c.beginUpdate();try{var d=a,e=0;if(this.isTableCell(a))var f=c.getParent(a),d=c.getParent(f),e=mxUtils.indexOf(c.getChildCells(f,
-!0),a);else this.isTableRow(a)?d=c.getParent(a):a=c.getChildCells(d,!0)[0],b||(e=c.getChildCells(a,!0).length-1);for(var g=c.getChildCells(d,!0),k=Graph.minTableColumnWidth,f=0;f<g.length;f++){var h=c.getChildCells(g[f],!0)[e],m=c.cloneCell(h,!1),l=this.getCellGeometry(m);m.value=null;m.style=mxUtils.setStyle(mxUtils.setStyle(m.style,"rowspan",null),"colspan",null);if(null!=l){null!=l.alternateBounds&&(l.width=l.alternateBounds.width,l.height=l.alternateBounds.height,l.alternateBounds=null);var k=
-l.width,n=this.getCellGeometry(g[f]);null!=n&&(l.height=n.height)}c.add(g[f],m,e+(b?0:1))}var p=this.getCellGeometry(d);null!=p&&(p=p.clone(),p.width+=k,c.setGeometry(d,p))}finally{c.endUpdate()}};Graph.prototype.deleteLane=function(a){var b=this.getModel();b.beginUpdate();try{var c=null,c="stackLayout"==this.getCurrentCellStyle(a).childLayout?a:b.getParent(a),d=b.getChildCells(c,!0);0==d.length?b.remove(c):(c==a&&(a=d[d.length-1]),b.remove(a))}finally{b.endUpdate()}};Graph.prototype.insertLane=function(a,
+(g=g.clone(),g.height-=f.height,this.model.setGeometry(e,g))}}var h=this.selectParentAfterDelete?this.model.getParents(a):null;this.removeCells(a,b)}finally{this.model.endUpdate()}if(null!=h)for(c=[],d=0;d<h.length;d++)this.model.contains(h[d])&&(this.model.isVertex(h[d])||this.model.isEdge(h[d]))&&c.push(h[d])}return c};Graph.prototype.insertTableColumn=function(a,b){var c=this.getModel();c.beginUpdate();try{var d=a,e=0;if(this.isTableCell(a))var f=c.getParent(a),d=c.getParent(f),e=mxUtils.indexOf(c.getChildCells(f,
+!0),a);else this.isTableRow(a)?d=c.getParent(a):a=c.getChildCells(d,!0)[0],b||(e=c.getChildCells(a,!0).length-1);for(var g=c.getChildCells(d,!0),h=Graph.minTableColumnWidth,f=0;f<g.length;f++){var k=c.getChildCells(g[f],!0)[e],m=c.cloneCell(k,!1),l=this.getCellGeometry(m);m.value=null;m.style=mxUtils.setStyle(mxUtils.setStyle(m.style,"rowspan",null),"colspan",null);if(null!=l){null!=l.alternateBounds&&(l.width=l.alternateBounds.width,l.height=l.alternateBounds.height,l.alternateBounds=null);var h=
+l.width,n=this.getCellGeometry(g[f]);null!=n&&(l.height=n.height)}c.add(g[f],m,e+(b?0:1))}var p=this.getCellGeometry(d);null!=p&&(p=p.clone(),p.width+=h,c.setGeometry(d,p))}finally{c.endUpdate()}};Graph.prototype.deleteLane=function(a){var b=this.getModel();b.beginUpdate();try{var c=null,c="stackLayout"==this.getCurrentCellStyle(a).childLayout?a:b.getParent(a),d=b.getChildCells(c,!0);0==d.length?b.remove(c):(c==a&&(a=d[d.length-1]),b.remove(a))}finally{b.endUpdate()}};Graph.prototype.insertLane=function(a,
b){var c=this.getModel();c.beginUpdate();try{var d=null,e=a;if("stackLayout"==this.getCurrentCellStyle(e).childLayout)var d=e,f=c.getChildCells(d,!0),e=f[b?0:f.length-1];else d=c.getParent(e);var g=d.getIndex(e),e=c.cloneCell(e,!1);e.value=null;c.add(d,e,g+(b?0:1))}finally{c.endUpdate()}};Graph.prototype.insertTableRow=function(a,b){var c=this.getModel();c.beginUpdate();try{var d=a,e=a;if(this.isTableCell(a))e=c.getParent(a),d=c.getParent(e);else if(this.isTableRow(a))d=c.getParent(a);else var f=
-c.getChildCells(d,!0),e=f[b?0:f.length-1];var g=c.getChildCells(e,!0),k=d.getIndex(e),e=c.cloneCell(e,!1);e.value=null;var h=this.getCellGeometry(e);if(null!=h){for(f=0;f<g.length;f++){a=c.cloneCell(g[f],!1);a.value=null;a.style=mxUtils.setStyle(mxUtils.setStyle(a.style,"rowspan",null),"colspan",null);var m=this.getCellGeometry(a);null!=m&&(null!=m.alternateBounds&&(m.width=m.alternateBounds.width,m.height=m.alternateBounds.height,m.alternateBounds=null),m.height=h.height);e.insert(a)}c.add(d,e,k+
-(b?0:1));var l=this.getCellGeometry(d);null!=l&&(l=l.clone(),l.height+=h.height,c.setGeometry(d,l))}}finally{c.endUpdate()}};Graph.prototype.deleteTableColumn=function(a){var b=this.getModel();b.beginUpdate();try{var c=a,d=a;this.isTableCell(a)&&(d=b.getParent(a));this.isTableRow(d)&&(c=b.getParent(d));var e=b.getChildCells(c,!0);if(0==e.length)b.remove(c);else{this.isTableRow(d)||(d=e[0]);var f=b.getChildCells(d,!0);if(1>=f.length)b.remove(c);else{var g=f.length-1;this.isTableCell(a)&&(g=mxUtils.indexOf(f,
-a));for(d=a=0;d<e.length;d++){var k=b.getChildCells(e[d],!0)[g];b.remove(k);var h=this.getCellGeometry(k);null!=h&&(a=Math.max(a,h.width))}var m=this.getCellGeometry(c);null!=m&&(m=m.clone(),m.width-=a,b.setGeometry(c,m))}}}finally{b.endUpdate()}};Graph.prototype.deleteTableRow=function(a){var b=this.getModel();b.beginUpdate();try{var c=a,d=a;this.isTableCell(a)&&(a=d=b.getParent(a));this.isTableRow(a)&&(c=b.getParent(d));var e=b.getChildCells(c,!0);if(1>=e.length)b.remove(c);else{this.isTableRow(d)||
+c.getChildCells(d,!0),e=f[b?0:f.length-1];var g=c.getChildCells(e,!0),h=d.getIndex(e),e=c.cloneCell(e,!1);e.value=null;var k=this.getCellGeometry(e);if(null!=k){for(f=0;f<g.length;f++){a=c.cloneCell(g[f],!1);a.value=null;a.style=mxUtils.setStyle(mxUtils.setStyle(a.style,"rowspan",null),"colspan",null);var m=this.getCellGeometry(a);null!=m&&(null!=m.alternateBounds&&(m.width=m.alternateBounds.width,m.height=m.alternateBounds.height,m.alternateBounds=null),m.height=k.height);e.insert(a)}c.add(d,e,h+
+(b?0:1));var l=this.getCellGeometry(d);null!=l&&(l=l.clone(),l.height+=k.height,c.setGeometry(d,l))}}finally{c.endUpdate()}};Graph.prototype.deleteTableColumn=function(a){var b=this.getModel();b.beginUpdate();try{var c=a,d=a;this.isTableCell(a)&&(d=b.getParent(a));this.isTableRow(d)&&(c=b.getParent(d));var e=b.getChildCells(c,!0);if(0==e.length)b.remove(c);else{this.isTableRow(d)||(d=e[0]);var f=b.getChildCells(d,!0);if(1>=f.length)b.remove(c);else{var g=f.length-1;this.isTableCell(a)&&(g=mxUtils.indexOf(f,
+a));for(d=a=0;d<e.length;d++){var h=b.getChildCells(e[d],!0)[g];b.remove(h);var k=this.getCellGeometry(h);null!=k&&(a=Math.max(a,k.width))}var m=this.getCellGeometry(c);null!=m&&(m=m.clone(),m.width-=a,b.setGeometry(c,m))}}}finally{b.endUpdate()}};Graph.prototype.deleteTableRow=function(a){var b=this.getModel();b.beginUpdate();try{var c=a,d=a;this.isTableCell(a)&&(a=d=b.getParent(a));this.isTableRow(a)&&(c=b.getParent(d));var e=b.getChildCells(c,!0);if(1>=e.length)b.remove(c);else{this.isTableRow(d)||
(d=e[e.length-1]);b.remove(d);a=0;var f=this.getCellGeometry(d);null!=f&&(a=f.height);var g=this.getCellGeometry(c);null!=g&&(g=g.clone(),g.height-=a,b.setGeometry(c,g))}}finally{b.endUpdate()}};Graph.prototype.insertRow=function(a,b){for(var c=a.tBodies[0],d=c.rows[0].cells,e=0,f=0;f<d.length;f++)var g=d[f].getAttribute("colspan"),e=e+(null!=g?parseInt(g):1);c=c.insertRow(b);for(f=0;f<e;f++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};
Graph.prototype.insertColumn=function(a,b){var c=a.tHead;if(null!=c)for(var d=0;d<c.rows.length;d++){var e=document.createElement("th");c.rows[d].appendChild(e);mxUtils.br(e)}c=a.tBodies[0];for(d=0;d<c.rows.length;d++)e=c.rows[d].insertCell(b),mxUtils.br(e);return c.rows[0].cells[0<=b?b:c.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,b){if(0<=b)for(var c=a.tBodies[0].rows,d=0;d<c.length;d++)c[d].cells.length>b&&c[d].deleteCell(b)};Graph.prototype.pasteHtmlAtCaret=function(a){var b;
if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){b=b.getRangeAt(0);b.deleteContents();var c=document.createElement("div");c.innerHTML=a;a=document.createDocumentFragment();for(var d;d=c.firstChild;)lastNode=a.appendChild(d);b.insertNode(a)}}else(b=document.selection)&&"Control"!=b.type&&b.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,b){function c(a,b){a.length>b&&(a=a.substring(0,Math.round(b/2))+"..."+a.substring(a.length-Math.round(b/4)));
@@ -2864,18 +2874,18 @@ mxUtils.bind(this,function(a,e){var f=mxEvent.isMouseEvent(e.getEvent());this.po
b.x+1,e.getY()+b.y+1,a,e.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[a,e,f])})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var a="";window.getSelection?a=window.getSelection():
document.getSelection?a=document.getSelection():document.selection&&(a=document.selection.createRange().text);return""!=a};mxCellEditor.prototype.insertTab=function(a){var b=this.textarea.ownerDocument.defaultView.getSelection(),c=b.getRangeAt(0),d="\t";if(null!=a)for(d="";0<a;)d+=" ",a--;a=document.createElement("span");a.style.whiteSpace="pre";a.appendChild(document.createTextNode(d));c.insertNode(a);c.setStartAfter(a);c.setEndAfter(a);b.removeAllRanges();b.addRange(c)};mxCellEditor.prototype.alignText=
function(a,b){var c=null!=b&&mxEvent.isShiftDown(b);if(c||null!=window.getSelection&&null!=window.getSelection().containsNode){var d=!0;this.graph.processElements(this.textarea,function(a){c||window.getSelection().containsNode(a,!0)?(a.removeAttribute("align"),a.style.textAlign=null):d=!1});d&&this.graph.cellEditor.setAlign(a)}document.execCommand("justify"+a.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&
-a.rangeCount){for(var b=[],c=0,d=a.rangeCount;c<d;++c)b.push(a.getRangeAt(c));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var b=0,c=a.length;b<c;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(ea){}};var u=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=
+a.rangeCount){for(var b=[],c=0,d=a.rangeCount;c<d;++c)b.push(a.getRangeAt(c));return b}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var b=0,c=a.length;b<c;++b)sel.addRange(a[b])}else document.selection&&a.select&&a.select()}catch(V){}};var u=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=
function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));u.apply(this,arguments)};var v=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(a,b){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?v.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var t=mxCellEditor.prototype.startEditing;
mxCellEditor.prototype.startEditing=function(a,b){a=this.graph.getStartEditingCell(a,b);t.apply(this,arguments);var c=this.graph.view.getState(a);this.textarea.className=null!=c&&1==c.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var c=this.graph.getModel().getParent(a),d=this.graph.getCellGeometry(a);if(this.graph.getModel().isEdge(c)&&null!=d&&d.relative||this.graph.getModel().isEdge(a))this.textarea.style.outline=
mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var x=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,c){c.originalNode=a;a=a.firstChild;for(var d=c.firstChild;null!=a&&null!=d;)b(a,d),a=a.nextSibling,d=d.nextSibling;return c}function c(a,b){if(null!=a)if(b.originalNode!=a)d(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var e=a.nextSibling;null==b?d(a):(c(a,b),b=b.nextSibling);a=e}}function d(a){for(var b=
a.firstChild;null!=b;){var c=b.nextSibling;d(b);b=c}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")),1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"),a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}x.apply(this,arguments);
7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var d=b(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?c(this.textarea,d):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);
-if(null!=a){var b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){h=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<h.length&&"\n"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"<br/>"):h,!0);this.textarea.className="mxCellEditor geContentEditable";var d=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,
-mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,k=[];(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&k.push("underline");(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,
-0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&k.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration=k.join(" ");this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=e;this.textarea.style.padding=
-"0px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var h=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(h=mxUtils.replaceTrailingNewlines(h,"<div><br></div>"));h=this.graph.sanitizeHtml(b?
-h.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):h,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var d=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;
-this.textarea.style.textAlign="left";this.textarea.style.width="";this.textarea.style.padding="2px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=c;this.resize()}};var w=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=
+if(null!=a){var b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),c=this.saveSelection();if(this.codeViewMode){k=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<k.length&&"\n"==k.charAt(k.length-1)&&(k=k.substring(0,k.length-1));k=this.graph.sanitizeHtml(b?k.replace(/\n/g,"<br/>"):k,!0);this.textarea.className="mxCellEditor geContentEditable";var d=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,
+mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,h=[];(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&h.push("underline");(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,
+0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&h.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration=h.join(" ");this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=e;this.textarea.style.padding=
+"0px";this.textarea.innerHTML!=k&&(this.textarea.innerHTML=k,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var k=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(k=mxUtils.replaceTrailingNewlines(k,"<div><br></div>"));k=this.graph.sanitizeHtml(b?
+k.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):k,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var d=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(d*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(d)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;
+this.textarea.style.textAlign="left";this.textarea.style.width="";this.textarea.style.padding="2px";this.textarea.innerHTML!=k&&(this.textarea.innerHTML=k);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=c;this.resize()}};var w=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=
a){var c=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*c;this.bounds.height=60*c;var d=null!=a.text?a.text.margin:null;null==d&&(d=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=d.x*this.bounds.width;this.bounds.y+=d.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-
4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+
"px",this.bounds.width=parseInt(this.textarea.style.width)*c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+c+","+c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",w.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(a,b){if("0"==mxUtils.getValue(a.style,"html",
@@ -2886,26 +2896,26 @@ mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)||(b=mxUtils.getValue(a.
mxConstants.STYLE_STROKECOLOR,null));b==mxConstants.NONE&&(b=null);return b};mxCellEditor.prototype.getMinimumSize=function(a){var b=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*b+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(a,b){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(b.getEvent)};mxGraphView.prototype.formatUnitText=function(a){return a?
b(a,this.unit):a};mxGraphHandler.prototype.updateHint=function(c){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var d=this.graph.view.translate,e=this.graph.view.scale;c=this.roundLength((this.bounds.x+this.currentDx)/e-d.x);d=this.roundLength((this.bounds.y+this.currentDy)/e-d.y);e=this.graph.view.unit;this.hint.innerHTML=b(c,e)+", "+b(d,e);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-
this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};var I=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(a,b){I.apply(this,arguments);var c=this.graph.getCellStyle(a);if(null==c.childLayout){var d=this.graph.model.getParent(a),e=null!=d?this.graph.getCellGeometry(d):null;
-if(null!=e&&(c=this.graph.getCellStyle(d),"stackLayout"==c.childLayout)){var f=parseFloat(mxUtils.getValue(c,"stackBorder",mxStackLayout.prototype.border)),c="1"==mxUtils.getValue(c,"horizontalStack","1"),g=this.graph.getActualStartSize(d),e=e.clone();c?e.height=b.height+g.y+g.height+2*f:e.width=b.width+g.x+g.width+2*f;this.graph.model.setGeometry(d,e)}}};var A=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function a(a){c.get(a)||
-(c.put(a,!0),e.push(a))}for(var b=A.apply(this,arguments),c=new mxDictionary,d=this.graph.model,e=[],f=0;f<b.length;f++){var g=b[f];this.graph.isTableCell(g)?a(d.getParent(d.getParent(g))):this.graph.isTableRow(g)&&a(d.getParent(g));a(g)}return e};var G=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(a){var b=G.apply(this,arguments);b.stroke="#C0C0C0";b.strokewidth=1;return b};var z=mxEdgeHandler.prototype.createParentHighlightShape;
+if(null!=e&&(c=this.graph.getCellStyle(d),"stackLayout"==c.childLayout)){var f=parseFloat(mxUtils.getValue(c,"stackBorder",mxStackLayout.prototype.border)),c="1"==mxUtils.getValue(c,"horizontalStack","1"),g=this.graph.getActualStartSize(d),e=e.clone();c?e.height=b.height+g.y+g.height+2*f:e.width=b.width+g.x+g.width+2*f;this.graph.model.setGeometry(d,e)}}};var B=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function a(a){c.get(a)||
+(c.put(a,!0),e.push(a))}for(var b=B.apply(this,arguments),c=new mxDictionary,d=this.graph.model,e=[],f=0;f<b.length;f++){var g=b[f];this.graph.isTableCell(g)?a(d.getParent(d.getParent(g))):this.graph.isTableRow(g)&&a(d.getParent(g));a(g)}return e};var G=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(a){var b=G.apply(this,arguments);b.stroke="#C0C0C0";b.strokewidth=1;return b};var z=mxEdgeHandler.prototype.createParentHighlightShape;
mxEdgeHandler.prototype.createParentHighlightShape=function(a){var b=z.apply(this,arguments);b.stroke="#C0C0C0";b.strokewidth=1;return b};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var a=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+a.x/2,this.bounds.y+this.rotationHandleVSpacing-a.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(a,b){return this.graph.isRecursiveVertexResize(a)&&
!mxEvent.isControlDown(b.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(a,b){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(b.getEvent())||mxEvent.isMetaDown(b.getEvent())};var D=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return D.apply(this,
arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)&&!this.graph.isTable(this.state.cell)};mxVertexHandler.prototype.getSizerBounds=function(){return this.graph.isTableCell(this.state.cell)?this.graph.view.getState(this.graph.model.getParent(this.graph.model.getParent(this.state.cell))):this.bounds};var K=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return K.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&
!this.graph.isTableRow(this.state.cell)};var L=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(a){return a.tableHandle||L.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=function(){var a=0;this.graph.isTableRow(this.state.cell)?a=1:this.graph.isTableCell(this.state.cell)&&(a=2);return a};var N=mxVertexHandler.prototype.getSelectionBorderBounds;
-mxVertexHandler.prototype.getSelectionBorderBounds=function(){return N.apply(this,arguments).grow(-this.getSelectionBorderInset())};var J=null,Q=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==J&&(J=mxCellRenderer.defaultShapes.tableLine);var a=Q.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var b=function(a,b,c){for(var d=[],e=0;e<a.length;e++){var g=a[e];d.push(null==g?null:new mxPoint((h+g.x+b)*f,(m+g.y+c)*f))}return d},
-c=this,d=this.graph,e=d.model,f=d.view.scale,g=this.state,k=this.selectionBorder,h=this.state.origin.x+d.view.translate.x,m=this.state.origin.y+d.view.translate.y;null==a&&(a=[]);var l=d.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<l.length){for(var n=e.getChildCells(l[0].cell,!0),p=d.getTableLines(this.state.cell,!1,!0),r=d.getTableLines(this.state.cell,!0,!1),e=0;e<n.length;e++)mxUtils.bind(this,function(e){var h=d.view.getState(n[e]),m=d.getCellGeometry(n[e]),l=null!=m.alternateBounds?
-m.alternateBounds:m;null==h&&(h=new mxCellState(d.view,n[e],d.getCellStyle(n[e])),h.x=g.x+m.x*f,h.y=g.y+m.y*f,h.width=l.width*f,h.height=l.height*f,h.updateCachedBounds());var m=e<n.length-1?n[e+1]:null,m=null!=m?d.getCellGeometry(m):null,r=null!=m&&null!=m.alternateBounds?m.alternateBounds:m,m=null!=p[e]?new J(p[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);m.isDashed=k.isDashed;m.svgStrokeTolerance++;h=new mxHandle(h,"col-resize",null,m);h.tableHandle=!0;var t=0;h.shape.node.parentNode.insertBefore(h.shape.node,
-h.shape.node.parentNode.firstChild);h.redraw=function(){if(null!=this.shape&&null!=this.state.shape){this.shape.stroke=0==t?mxConstants.NONE:k.stroke;if(this.shape.constructor==J)this.shape.line=b(p[e],t,0),this.shape.updateBoundsFromLine();else{var a=d.getActualStartSize(g.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(l.width+t)*f;this.shape.bounds.y=g.y+(e==n.length-1?0:a.y*f);this.shape.bounds.height=g.height-(e==n.length-1?0:(a.height+a.y)*f)}this.shape.redraw()}};var u=
-!1;h.setPosition=function(a,b,c){t=Math.max(Graph.minTableColumnWidth-l.width,b.x-a.x-l.width);u=mxEvent.isShiftDown(c.getEvent());null==r||u||(t=Math.min(t,r.width-Graph.minTableColumnWidth))};h.execute=function(a){if(0!=t)d.setTableColumnWidth(this.state.cell,t,u);else if(!c.blockDelayedSelection){var b=d.getCellAt(a.getGraphX(),a.getGraphY())||g.cell;d.graphHandler.selectCellForEvent(b,a)}t=0};h.positionChanged=function(){};h.reset=function(){t=0};a.push(h)})(e);for(e=0;e<l.length;e++)mxUtils.bind(this,
-function(e){var h=l[e],m=e<l.length-1?l[e+1]:null,m=null!=m?d.getCellGeometry(m.cell):null,n=null!=m&&null!=m.alternateBounds?m.alternateBounds:m,m=null!=r[e]?new J(r[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);m.isDashed=k.isDashed;m.svgStrokeTolerance++;h=new mxHandle(h,"row-resize",null,m);h.tableHandle=!0;var p=0;h.shape.node.parentNode.insertBefore(h.shape.node,h.shape.node.parentNode.firstChild);h.redraw=function(){if(null!=this.shape&&null!=this.state.shape){this.shape.stroke=
-0==p?mxConstants.NONE:k.stroke;if(this.shape.constructor==J)this.shape.line=b(r[e],0,p),this.shape.updateBoundsFromLine();else{var a=d.getActualStartSize(g.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+p*f;this.shape.bounds.x=g.x+(e==l.length-1?0:a.x*f);this.shape.bounds.width=g.width-(e==l.length-1?0:a.width+a.x+f)}this.shape.redraw()}};var t=!1;h.setPosition=function(a,b,c){p=Math.max(Graph.minTableRowHeight-a.height,b.y-a.y-a.height);t=mxEvent.isShiftDown(c.getEvent());
-null!=n&&t&&(p=Math.min(p,n.height-Graph.minTableRowHeight))};h.execute=function(a){if(0!=p)d.setTableRowHeight(this.state.cell,p,!t);else if(!c.blockDelayedSelection){var b=d.getCellAt(a.getGraphX(),a.getGraphY())||g.cell;d.graphHandler.selectCellForEvent(b,a)}p=0};h.reset=function(){p=0};a.push(h)})(e)}}return null!=a?a.reverse():null};var X=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(a){X.apply(this,arguments);if(null!=this.moveHandles)for(var b=
+mxVertexHandler.prototype.getSelectionBorderBounds=function(){return N.apply(this,arguments).grow(-this.getSelectionBorderInset())};var J=null,Q=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==J&&(J=mxCellRenderer.defaultShapes.tableLine);var a=Q.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var b=function(a,b,c){for(var d=[],e=0;e<a.length;e++){var g=a[e];d.push(null==g?null:new mxPoint((k+g.x+b)*f,(m+g.y+c)*f))}return d},
+c=this,d=this.graph,e=d.model,f=d.view.scale,g=this.state,h=this.selectionBorder,k=this.state.origin.x+d.view.translate.x,m=this.state.origin.y+d.view.translate.y;null==a&&(a=[]);var l=d.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<l.length){for(var n=e.getChildCells(l[0].cell,!0),p=d.getTableLines(this.state.cell,!1,!0),r=d.getTableLines(this.state.cell,!0,!1),e=0;e<n.length;e++)mxUtils.bind(this,function(e){var k=d.view.getState(n[e]),m=d.getCellGeometry(n[e]),l=null!=m.alternateBounds?
+m.alternateBounds:m;null==k&&(k=new mxCellState(d.view,n[e],d.getCellStyle(n[e])),k.x=g.x+m.x*f,k.y=g.y+m.y*f,k.width=l.width*f,k.height=l.height*f,k.updateCachedBounds());var m=e<n.length-1?n[e+1]:null,m=null!=m?d.getCellGeometry(m):null,r=null!=m&&null!=m.alternateBounds?m.alternateBounds:m,m=null!=p[e]?new J(p[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);m.isDashed=h.isDashed;m.svgStrokeTolerance++;k=new mxHandle(k,"col-resize",null,m);k.tableHandle=!0;var t=0;k.shape.node.parentNode.insertBefore(k.shape.node,
+k.shape.node.parentNode.firstChild);k.redraw=function(){if(null!=this.shape&&null!=this.state.shape){this.shape.stroke=0==t?mxConstants.NONE:h.stroke;if(this.shape.constructor==J)this.shape.line=b(p[e],t,0),this.shape.updateBoundsFromLine();else{var a=d.getActualStartSize(g.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(l.width+t)*f;this.shape.bounds.y=g.y+(e==n.length-1?0:a.y*f);this.shape.bounds.height=g.height-(e==n.length-1?0:(a.height+a.y)*f)}this.shape.redraw()}};var u=
+!1;k.setPosition=function(a,b,c){t=Math.max(Graph.minTableColumnWidth-l.width,b.x-a.x-l.width);u=mxEvent.isShiftDown(c.getEvent());null==r||u||(t=Math.min(t,r.width-Graph.minTableColumnWidth))};k.execute=function(a){if(0!=t)d.setTableColumnWidth(this.state.cell,t,u);else if(!c.blockDelayedSelection){var b=d.getCellAt(a.getGraphX(),a.getGraphY())||g.cell;d.graphHandler.selectCellForEvent(b,a)}t=0};k.positionChanged=function(){};k.reset=function(){t=0};a.push(k)})(e);for(e=0;e<l.length;e++)mxUtils.bind(this,
+function(e){var k=l[e],m=e<l.length-1?l[e+1]:null,m=null!=m?d.getCellGeometry(m.cell):null,n=null!=m&&null!=m.alternateBounds?m.alternateBounds:m,m=null!=r[e]?new J(r[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);m.isDashed=h.isDashed;m.svgStrokeTolerance++;k=new mxHandle(k,"row-resize",null,m);k.tableHandle=!0;var p=0;k.shape.node.parentNode.insertBefore(k.shape.node,k.shape.node.parentNode.firstChild);k.redraw=function(){if(null!=this.shape&&null!=this.state.shape){this.shape.stroke=
+0==p?mxConstants.NONE:h.stroke;if(this.shape.constructor==J)this.shape.line=b(r[e],0,p),this.shape.updateBoundsFromLine();else{var a=d.getActualStartSize(g.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+p*f;this.shape.bounds.x=g.x+(e==l.length-1?0:a.x*f);this.shape.bounds.width=g.width-(e==l.length-1?0:a.width+a.x+f)}this.shape.redraw()}};var t=!1;k.setPosition=function(a,b,c){p=Math.max(Graph.minTableRowHeight-a.height,b.y-a.y-a.height);t=mxEvent.isShiftDown(c.getEvent());
+null!=n&&t&&(p=Math.min(p,n.height-Graph.minTableRowHeight))};k.execute=function(a){if(0!=p)d.setTableRowHeight(this.state.cell,p,!t);else if(!c.blockDelayedSelection){var b=d.getCellAt(a.getGraphX(),a.getGraphY())||g.cell;d.graphHandler.selectCellForEvent(b,a)}p=0};k.reset=function(){p=0};a.push(k)})(e)}}return null!=a?a.reverse():null};var Y=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(a){Y.apply(this,arguments);if(null!=this.moveHandles)for(var b=
0;b<this.moveHandles.length;b++)this.moveHandles[b].style.visibility=a?"":"hidden";if(null!=this.cornerHandles)for(b=0;b<this.cornerHandles.length;b++)this.cornerHandles[b].node.style.visibility=a?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var a=this.graph.model;if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);this.moveHandles=null}this.moveHandles=[];for(b=0;b<a.getChildCount(this.state.cell);b++)mxUtils.bind(this,
function(b){if(null!=b&&a.isVertex(b.cell)){var c=mxUtils.createImage(Editor.rowMoveImage);c.style.position="absolute";c.style.cursor="pointer";c.style.width="7px";c.style.height="4px";c.style.padding="4px 2px 4px 2px";c.rowState=b;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(a){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(a)&&this.graph.isCellSelected(b.cell)||this.graph.selectCellForEvent(b.cell,a);mxEvent.isPopupTrigger(a)||(this.graph.graphHandler.start(this.state.cell,
mxEvent.getClientX(a),mxEvent.getClientY(a),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(a),this.graph.isMouseDown=!0);mxEvent.consume(a)}),null,mxUtils.bind(this,function(a){mxEvent.isPopupTrigger(a)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(a),mxEvent.getClientY(a),b.cell,a),mxEvent.consume(a))}));this.moveHandles.push(c);this.graph.container.appendChild(c)}})(this.graph.view.getState(a.getChildAt(this.state.cell,
-b)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var a=0;a<this.customHandles.length;a++)this.customHandles[a].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var ba=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),b=this.tolerance,c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&mxStencilRegistry.getStencil(c);
+b)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var a=0;a<this.customHandles.length;a++)this.customHandles[a].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var ca=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),b=this.tolerance,c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&mxStencilRegistry.getStencil(c);
c=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!c&&null!=this.customHandles)for(var d=0;d<this.customHandles.length;d++)if(null!=this.customHandles[d].shape&&null!=this.customHandles[d].shape.bounds){var e=this.customHandles[d].shape.bounds,f=e.getCenterX(),g=e.getCenterY();if(Math.abs(this.state.x-f)<e.width/2||Math.abs(this.state.y-g)<e.height/2||Math.abs(this.state.x+this.state.width-f)<e.width/2||Math.abs(this.state.y+this.state.height-g)<e.height/
-2){c=!0;break}}c&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(b/=2,this.graph.isTable(this.state.cell)&&(b+=7),a.x=this.sizers[0].bounds.width+b,a.y=this.sizers[0].bounds.height+b):a=ba.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(c){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{c=
+2){c=!0;break}}c&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(b/=2,this.graph.isTable(this.state.cell)&&(b+=7),a.x=this.sizers[0].bounds.width+b,a.y=this.sizers[0].bounds.height+b):a=ca.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(c){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{c=
this.state.view.scale;var d=this.state.view.unit;this.hint.innerHTML=b(this.roundLength(this.bounds.width/c),d)+" x "+b(this.roundLength(this.bounds.height/c),d)}c=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==c&&(c=this.bounds);this.hint.style.left=c.x+Math.round((c.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=c.y+c.height+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")}};
mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};var O=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(a,b){O.apply(this,arguments);null!=this.linkHint&&"none"!=this.linkHint.style.display&&null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&(this.linkHint.style.display="none")};var R=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=
function(a,b){R.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(c,d){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var e=this.graph.view.translate,f=this.graph.view.scale,g=this.roundLength(d.x/f-e.x),e=this.roundLength(d.y/f-e.y),f=this.graph.view.unit;this.hint.innerHTML=b(g,f)+", "+b(e,f);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=
@@ -2927,7 +2937,7 @@ this.graph.view.getState(k[c]),m=this.graph.getCellGeometry(k[c]);null!=h&&null!
var d=b.getX()+c.x,c=b.getY()+c.y,e=this.first.x-d,f=this.first.y-c,g=this.graph.tolerance;if(null!=this.div||Math.abs(e)>g||Math.abs(f)>g)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(d,c),this.isSpaceEvent(b)?(d=this.x+this.width,c=this.y+this.height,e=this.graph.view.scale,mxEvent.isAltDown(b.getEvent())||(this.width=this.graph.snap(this.width/e)*e,this.height=this.graph.snap(this.height/e)*e,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=
0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=d-this.width),this.y<this.first.y&&(this.y=c-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor="white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=
this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),
-this.secondDiv=null)),b.consume()}};var U=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);U.apply(this,arguments)};var W=(new Date).getTime(),ka=0,ma=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,b,c,d){ma.apply(this,arguments);c!=this.currentTerminalState?(W=(new Date).getTime(),ka=0):ka=(new Date).getTime()-W;this.currentTerminalState=
+this.secondDiv=null)),b.consume()}};var U=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);U.apply(this,arguments)};var X=(new Date).getTime(),ka=0,ma=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,b,c,d){ma.apply(this,arguments);c!=this.currentTerminalState?(X=(new Date).getTime(),ka=0):ka=(new Date).getTime()-X;this.currentTerminalState=
c};var oa=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&&2E3<ka||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&oa.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=function(a,b,c){b=null!=a&&0==a;var d=this.state.getVisibleTerminalState(b);a=null!=a&&(0==a||a>=this.state.absolutePoints.length-
1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state,d,b):null;c=null!=(null!=a?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(b),a):null)?c?this.endFixedHandleImage:this.fixedHandleImage:null!=a&&null!=d?c?this.endTerminalHandleImage:this.terminalHandleImage:c?this.endHandleImage:this.handleImage;if(null!=c)return c=new mxImageShape(new mxRectangle(0,0,c.width,c.height),c.src),c.preserveImageAspect=!1,c;c=mxConstants.HANDLE_SIZE;this.preferHtml&&
--c;return new mxRectangleShape(new mxRectangle(0,0,c,c),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var pa=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(a,b,c){this.handleImage=b==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:b==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return pa.apply(this,arguments)};var ga=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=
@@ -2944,15 +2954,15 @@ mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.
mxEvent.addListener(d,"click",mxUtils.bind(this,function(a){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(a)}));this.linkHint.appendChildGraph.createRemoveIcon(mxResources.get("removeIt",[mxResources.get("link")]),mxUtils.bind(this,function(a){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(a)}))}if(null!=c)for(d=0;d<c.length;d++){var e=document.createElement("div");e.style.marginTop=null!=b||0<d?"6px":"0px";e.appendChild(this.graph.createLinkForHint(c[d].getAttribute("href"),
mxUtils.getTextContent(c[d])));this.linkHint.appendChild(e)}}}catch(ha){}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var ja=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){ja.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var a=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":
"none");null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.changeHandler=mxUtils.bind(this,function(b,c){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));a();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var b=
-this.graph.getLinkForCell(this.state.cell),c=this.graph.getLinksForState(this.state);if(null!=b||null!=c&&0<c.length)this.updateLinkHint(b,c),this.redrawHandles()};var da=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){da.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var fa=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var a=
+this.graph.getLinkForCell(this.state.cell),c=this.graph.getLinksForState(this.state);if(null!=b||null!=c&&0<c.length)this.updateLinkHint(b,c),this.redrawHandles()};var ea=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){ea.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var fa=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var a=
0;a<this.moveHandles.length;a++)this.moveHandles[a].style.left=this.moveHandles[a].rowState.x+this.moveHandles[a].rowState.width-5+"px",this.moveHandles[a].style.top=this.moveHandles[a].rowState.y+this.moveHandles[a].rowState.height/2-6+"px";if(null!=this.cornerHandles){var a=this.getSelectionBorderInset(),b=this.cornerHandles,c=b[0].bounds.height/2;b[0].bounds.x=this.state.x-b[0].bounds.width/2+a;b[0].bounds.y=this.state.y-c+a;b[0].redraw();b[1].bounds.x=b[0].bounds.x+this.state.width-2*a;b[1].bounds.y=
b[0].bounds.y;b[1].redraw();b[2].bounds.x=b[0].bounds.x;b[2].bounds.y=this.state.y+this.state.height-2*a;b[2].redraw();b[3].bounds.x=b[1].bounds.x;b[3].bounds.y=b[2].bounds.y;b[3].redraw();for(a=0;a<this.cornerHandles.length;a++)this.cornerHandles[a].node.style.display=1==this.graph.getSelectionCount()?"":"none"}null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=null!=this.moveHandles||1!=this.graph.getSelectionCount()||null!=this.index&&this.index!=mxEvent.ROTATION_HANDLE?
"none":"");fa.apply(this);null!=this.state&&null!=this.linkHint&&(a=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),b=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),c=mxUtils.getBoundingBox(b,this.state.style[mxConstants.STYLE_ROTATION]||"0",a),a=null!=c?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,b=null!=this.state.text?this.state.text.boundingBox:null,null==c&&(c=this.state),c=c.y+c.height,null!=
b&&(c=Math.max(c,b.y+b.height)),this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px",this.linkHint.style.top=Math.round(c+this.verticalOffset/2+Editor.hintOffset)+"px")};var sa=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){sa.apply(this,arguments);if(null!=this.moveHandles){for(var a=0;a<this.moveHandles.length;a++)null!=this.moveHandles[a]&&null!=this.moveHandles[a].parentNode&&this.moveHandles[a].parentNode.removeChild(this.moveHandles[a]);
this.moveHandles=null}if(null!=this.cornerHandles){for(a=0;a<this.cornerHandles.length;a++)null!=this.cornerHandles[a]&&null!=this.cornerHandles[a].node&&null!=this.cornerHandles[a].node.parentNode&&this.cornerHandles[a].node.parentNode.removeChild(this.cornerHandles[a].node);this.cornerHandles=null}null!=this.linkHint&&(null!=this.linkHint.parentNode&&this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getSelectionModel().removeListener(this.changeHandler),
-this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var Y=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(Y.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height),a.add(this.state.text.bounds));this.linkHint.style.left=
-Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+Editor.hintOffset)+"px"}};var Z=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){Z.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var aa=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){aa.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);
-null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();Format=function(a,b){this.editorUi=a;this.container=b};Format.inactiveTabBackgroundColor="#f1f3f4";Format.classicFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 10 2 L 5 8 L 10 14 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);Format.classicThinFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 4 L 3 8 L 8 12 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);
+this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var Z=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(Z.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height),a.add(this.state.text.bounds));this.linkHint.style.left=
+Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+Editor.hintOffset)+"px"}};var aa=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){aa.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var ba=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){ba.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=
+null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();Format=function(a,b){this.editorUi=a;this.container=b};Format.inactiveTabBackgroundColor="#f1f3f4";Format.classicFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 10 2 L 5 8 L 10 14 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);Format.classicThinFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 4 L 3 8 L 8 12 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);
Format.openFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 8 0 L 0 8 L 8 16 M 0 8 L 24 8" stroke="#404040" fill="transparent"/>',32,20);Format.openThinFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 8 4 L 0 8 L 8 12 M 0 8 L 24 8" stroke="#404040" fill="transparent"/>',32,20);
Format.openAsyncFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 8 4 L 0 8 L 24 8" stroke="#404040" fill="transparent"/>',32,20);Format.blockFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 2 L 8 14 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);
Format.blockThinFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 4 L 8 12 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);Format.asyncFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 6 8 L 6 4 L 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);
@@ -2970,186 +2980,172 @@ Format.ERzeroToOneMarkerImage=Graph.createSvgImage(20,22,'<path transform="trans
Format.ERzeroToManyMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 8 8 A 5 5 0 0 1 13 3 A 5 5 0 0 1 18 8 A 5 5 0 0 1 13 13 A 5 5 0 0 1 8 8 Z M 0 8 L 8 8 M 18 8 L 24 8 M 0 3 L 8 8 L 0 13" stroke="#404040" fill="transparent"/>',32,20);Format.EROneMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 5 2 L 5 14 M 0 8 L 24 8" stroke="#404040" fill="transparent"/>',32,20);
Format.baseDashMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 2 L 0 14 M 0 8 L 24 8" stroke="#404040" fill="transparent"/>',32,20);Format.doubleBlockMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 2 L 8 14 Z M 8 8 L 16 2 L 16 14 Z M 16 8 L 24 8" stroke="#404040" fill="transparent"/>',32,20);
Format.doubleBlockFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 2 L 8 14 Z M 8 8 L 16 2 L 16 14 Z M 16 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);Format.processMenuIcon=function(a,b){var c=a.getElementsByTagName("img");0<c.length&&(Editor.isDarkMode()&&(c[0].style.filter="invert(100%)"),c[0].className="geIcon",c[0].style.padding="0px",c[0].style.margin="0 0 0 2px",null!=b&&mxUtils.setPrefixedStyle(c[0].style,"transform",b));return a};
-Format.prototype.labelIndex=0;Format.prototype.diagramIndex=0;Format.prototype.currentIndex=0;Format.prototype.showCloseButton=!0;Format.prototype.roundableShapes="label rectangle internalStorage corner parallelogram swimlane triangle trapezoid ext step tee process link rhombus offPageConnector loopLimit hexagon manualInput card curlyBracket singleArrow callout doubleArrow flexArrow umlLifeline".split(" ");
-Format.prototype.init=function(){var a=this.editorUi,b=a.editor,c=b.graph;this.update=mxUtils.bind(this,function(a,b){this.clearSelectionState();this.refresh()});c.getSelectionModel().addListener(mxEvent.CHANGE,this.update);c.addListener(mxEvent.EDITING_STARTED,this.update);c.addListener(mxEvent.EDITING_STOPPED,this.update);c.getModel().addListener(mxEvent.CHANGE,this.update);c.getView().addListener("unitChanged",this.update);c.addListener(mxEvent.ROOT,mxUtils.bind(this,function(){this.refresh()}));
-a.addListener("styleChanged",mxUtils.bind(this,function(a,b){this.refresh()}));b.addListener("autosaveChanged",mxUtils.bind(this,function(){this.refresh()}));this.refresh()};Format.prototype.clearSelectionState=function(){this.selectionState=null};Format.prototype.getSelectionState=function(){null==this.selectionState&&(this.selectionState=this.createSelectionState());return this.selectionState};
-Format.prototype.createSelectionState=function(){for(var a=this.editorUi.editor.graph.getSelectionCells(),b=this.initSelectionState(),c=!0,e=0;e<a.length;e++){var d=this.editorUi.editor.graph.getCurrentCellStyle(a[e]);"0"!=mxUtils.getValue(d,mxConstants.STYLE_EDITABLE,"1")&&(this.updateSelectionStateForCell(b,a[e],a,c),c=!1)}return b};
-Format.prototype.initSelectionState=function(){return{vertices:[],edges:[],cells:[],x:null,y:null,width:null,height:null,style:{},containsImage:!1,containsLabel:!1,fill:!0,glass:!0,rounded:!0,autoSize:!1,image:!0,shadow:!0,lineJumps:!0,resizable:!0,table:!1,cell:!1,row:!1,movable:!0,rotatable:!0,stroke:!0}};
-Format.prototype.updateSelectionStateForCell=function(a,b,c,e){c=this.editorUi.editor.graph;a.cells.push(b);if(c.getModel().isVertex(b)){a.resizable=a.resizable&&c.isCellResizable(b);a.rotatable=a.rotatable&&c.isCellRotatable(b);a.movable=a.movable&&c.isCellMovable(b)&&!c.isTableRow(b)&&!c.isTableCell(b);a.table=a.table||c.isTable(b);a.cell=a.cell||c.isTableCell(b);a.row=a.row||c.isTableRow(b);a.vertices.push(b);var d=c.getCellGeometry(b);if(null!=d&&(0<d.width?null==a.width?a.width=d.width:a.width!=
-d.width&&(a.width=""):a.containsLabel=!0,0<d.height?null==a.height?a.height=d.height:a.height!=d.height&&(a.height=""):a.containsLabel=!0,!d.relative||null!=d.offset)){var f=d.relative?d.offset.x:d.x,d=d.relative?d.offset.y:d.y;null==a.x?a.x=f:a.x!=f&&(a.x="");null==a.y?a.y=d:a.y!=d&&(a.y="")}}else c.getModel().isEdge(b)&&(a.edges.push(b),a.resizable=!1,a.rotatable=!1,a.movable=!1);b=c.view.getState(b);null!=b&&(a.autoSize=a.autoSize||this.isAutoSizeState(b),a.glass=a.glass&&this.isGlassState(b),
-a.rounded=a.rounded&&this.isRoundedState(b),a.lineJumps=a.lineJumps&&this.isLineJumpState(b),a.image=a.image&&this.isImageState(b),a.shadow=a.shadow&&this.isShadowState(b),a.fill=a.fill&&this.isFillState(b),a.stroke=a.stroke&&this.isStrokeState(b),f=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null),a.containsImage=a.containsImage||"image"==f,c.mergeStyle(b.style,a.style,e))};
-Format.prototype.isFillState=function(a){return!this.isSpecialColor(a.style[mxConstants.STYLE_FILLCOLOR])&&(a.view.graph.model.isVertex(a.cell)||"arrow"==mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null)||"filledEdge"==mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null)||"flexArrow"==mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null))};Format.prototype.isStrokeState=function(a){return!this.isSpecialColor(a.style[mxConstants.STYLE_STROKECOLOR])};
-Format.prototype.isSpecialColor=function(a){return 0<=mxUtils.indexOf([mxConstants.STYLE_STROKECOLOR,mxConstants.STYLE_FILLCOLOR,"inherit","swimlane","indicated"],a)};Format.prototype.isGlassState=function(a){a=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);return"label"==a||"rectangle"==a||"internalStorage"==a||"ext"==a||"umlLifeline"==a||"swimlane"==a||"process"==a};
-Format.prototype.isRoundedState=function(a){return null!=a.shape?a.shape.isRoundable():0<=mxUtils.indexOf(this.roundableShapes,mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null))};Format.prototype.isLineJumpState=function(a){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);return!mxUtils.getValue(a.style,mxConstants.STYLE_CURVED,!1)&&("connector"==b||"filledEdge"==b)};Format.prototype.isAutoSizeState=function(a){return"1"==mxUtils.getValue(a.style,mxConstants.STYLE_AUTOSIZE,null)};
-Format.prototype.isImageState=function(a){a=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);return"label"==a||"image"==a};Format.prototype.isShadowState=function(a){return"image"!=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null)};Format.prototype.clear=function(){this.container.innerHTML="";if(null!=this.panels)for(var a=0;a<this.panels.length;a++)this.panels[a].destroy();this.panels=[]};
-Format.prototype.refresh=function(){null!=this.pendingRefresh&&(window.clearTimeout(this.pendingRefresh),this.pendingRefresh=null);this.pendingRefresh=window.setTimeout(mxUtils.bind(this,function(){this.immediateRefresh()}))};
+Format.prototype.labelIndex=0;Format.prototype.diagramIndex=0;Format.prototype.currentIndex=0;Format.prototype.showCloseButton=!0;
+Format.prototype.init=function(){var a=this.editorUi,b=a.editor,c=b.graph;this.update=mxUtils.bind(this,function(a,b){this.refresh()});c.getSelectionModel().addListener(mxEvent.CHANGE,this.update);c.getModel().addListener(mxEvent.CHANGE,this.update);c.addListener(mxEvent.EDITING_STARTED,this.update);c.addListener(mxEvent.EDITING_STOPPED,this.update);c.getView().addListener("unitChanged",this.update);b.addListener("autosaveChanged",this.update);c.addListener(mxEvent.ROOT,this.update);a.addListener("styleChanged",
+this.update);this.refresh()};Format.prototype.clear=function(){this.container.innerHTML="";if(null!=this.panels)for(var a=0;a<this.panels.length;a++)this.panels[a].destroy();this.panels=[]};Format.prototype.refresh=function(){null!=this.pendingRefresh&&(window.clearTimeout(this.pendingRefresh),this.pendingRefresh=null);this.pendingRefresh=window.setTimeout(mxUtils.bind(this,function(){this.immediateRefresh()}))};
Format.prototype.immediateRefresh=function(){if("0px"!=this.container.style.width){this.clear();var a=this.editorUi,b=a.editor.graph,c=document.createElement("div");c.style.whiteSpace="nowrap";c.style.color="rgb(112, 112, 112)";c.style.textAlign="left";c.style.cursor="default";var e=document.createElement("div");e.className="geFormatSection";e.style.textAlign="center";e.style.fontWeight="bold";e.style.paddingTop="8px";e.style.fontSize="13px";e.style.borderWidth="0px 0px 1px 1px";e.style.borderStyle=
-"solid";e.style.display="inline-block";e.style.height="25px";e.style.overflow="hidden";e.style.width="100%";this.container.appendChild(c);mxEvent.addListener(e,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));var d=this.getSelectionState(),f=d.containsLabel,k=null,h=null,g=mxUtils.bind(this,function(a,c,d,e){var g=mxUtils.bind(this,function(e){k!=a&&(f?this.labelIndex=d:b.isSelectionEmpty()?this.diagramIndex=d:this.currentIndex=d,null!=k&&(k.style.backgroundColor=
-Format.inactiveTabBackgroundColor,k.style.borderBottomWidth="1px"),k=a,k.style.backgroundColor="",k.style.borderBottomWidth="0px",h!=c&&(null!=h&&(h.style.display="none"),h=c,h.style.display=""))});mxEvent.addListener(a,"click",g);mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));(e&&null==k||d==(f?this.labelIndex:b.isSelectionEmpty()?this.diagramIndex:this.currentIndex))&&g()}),m=0;if(b.isSelectionEmpty()){mxUtils.write(e,mxResources.get("diagram"));
+"solid";e.style.display="inline-block";e.style.height="25px";e.style.overflow="hidden";e.style.width="100%";this.container.appendChild(c);mxEvent.addListener(e,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));var d=a.getSelectionState(),f=d.containsLabel,h=null,k=null,g=mxUtils.bind(this,function(a,c,d,e){var g=mxUtils.bind(this,function(e){h!=a&&(f?this.labelIndex=d:b.isSelectionEmpty()?this.diagramIndex=d:this.currentIndex=d,null!=h&&(h.style.backgroundColor=
+Format.inactiveTabBackgroundColor,h.style.borderBottomWidth="1px"),h=a,h.style.backgroundColor="",h.style.borderBottomWidth="0px",k!=c&&(null!=k&&(k.style.display="none"),k=c,k.style.display=""))});mxEvent.addListener(a,"click",g);mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));(e&&null==h||d==(f?this.labelIndex:b.isSelectionEmpty()?this.diagramIndex:this.currentIndex))&&g()}),m=0;if(b.isSelectionEmpty()){mxUtils.write(e,mxResources.get("diagram"));
e.style.borderLeftWidth="0px";c.appendChild(e);d=c.cloneNode(!1);this.panels.push(new DiagramFormatPanel(this,a,d));this.container.appendChild(d);if(null!=Editor.styles){d.style.display="none";e.style.width=this.showCloseButton?"106px":"50%";e.style.cursor="pointer";e.style.backgroundColor=Format.inactiveTabBackgroundColor;var l=e.cloneNode(!1);l.style.borderLeftWidth="1px";l.style.borderRightWidth="1px";l.style.backgroundColor=Format.inactiveTabBackgroundColor;g(e,d,m++);var n=c.cloneNode(!1);n.style.display=
"none";mxUtils.write(l,mxResources.get("style"));c.appendChild(l);this.panels.push(new DiagramStylePanel(this,a,n));this.container.appendChild(n);g(l,n,m++)}this.showCloseButton&&(l=e.cloneNode(!1),l.style.borderLeftWidth="1px",l.style.borderRightWidth="1px",l.style.borderBottomWidth="1px",l.style.backgroundColor=Format.inactiveTabBackgroundColor,l.style.position="absolute",l.style.right="0px",l.style.top="0px",l.style.width="25px",g=document.createElement("img"),g.setAttribute("border","0"),g.setAttribute("src",
Dialog.prototype.closeImage),g.setAttribute("title",mxResources.get("hide")),g.style.position="absolute",g.style.display="block",g.style.right="0px",g.style.top="8px",g.style.cursor="pointer",g.style.marginTop="1px",g.style.marginRight="6px",g.style.border="1px solid transparent",g.style.padding="1px",g.style.opacity=.5,l.appendChild(g),mxEvent.addListener(g,"click",function(){a.actions.get("formatPanel").funct()}),c.appendChild(l))}else if(b.isEditing())mxUtils.write(e,mxResources.get("text")),c.appendChild(e),
this.panels.push(new TextFormatPanel(this,a,c));else{e.style.backgroundColor=Format.inactiveTabBackgroundColor;e.style.borderLeftWidth="1px";e.style.cursor="pointer";e.style.width=f||0==d.cells.length?"50%":"33.3%";var l=e.cloneNode(!1),p=l.cloneNode(!1);l.style.backgroundColor=Format.inactiveTabBackgroundColor;p.style.backgroundColor=Format.inactiveTabBackgroundColor;f?l.style.borderLeftWidth="0px":(e.style.borderLeftWidth="0px",mxUtils.write(e,mxResources.get("style")),c.appendChild(e),n=c.cloneNode(!1),
n.style.display="none",this.panels.push(new StyleFormatPanel(this,a,n)),this.container.appendChild(n),g(e,n,m++));mxUtils.write(l,mxResources.get("text"));c.appendChild(l);e=c.cloneNode(!1);e.style.display="none";this.panels.push(new TextFormatPanel(this,a,e));this.container.appendChild(e);mxUtils.write(p,mxResources.get("arrange"));c.appendChild(p);c=c.cloneNode(!1);c.style.display="none";this.panels.push(new ArrangePanel(this,a,c));this.container.appendChild(c);0<d.cells.length?g(l,e,m++):l.style.display=
"none";g(p,c,m++,!0)}}};BaseFormatPanel=function(a,b,c){this.format=a;this.editorUi=b;this.container=c;this.listeners=[]};BaseFormatPanel.prototype.buttonBackgroundColor="white";
-BaseFormatPanel.prototype.installInputHandler=function(a,b,c,e,d,f,k,h){f=null!=f?f:"";h=null!=h?h:!1;var g=this.editorUi,m=g.editor.graph;e=null!=e?e:1;d=null!=d?d:999;var l=null,n=!1,p=mxUtils.bind(this,function(p){var r=h?parseFloat(a.value):parseInt(a.value);isNaN(r)||b!=mxConstants.STYLE_ROTATION||(r=mxUtils.mod(Math.round(100*r),36E3)/100);r=Math.min(d,Math.max(e,isNaN(r)?c:r));if(m.cellEditor.isContentEditing()&&k)n||(n=!0,null!=l&&(m.cellEditor.restoreSelection(l),l=null),k(r),a.value=r+f,
-n=!1);else if(r!=mxUtils.getValue(this.format.getSelectionState().style,b,c)){m.isEditing()&&m.stopEditing(!0);m.getModel().beginUpdate();try{var v=this.format.getSelectionState().cells;m.setCellStyles(b,r,v);b==mxConstants.STYLE_FONTSIZE&&m.updateLabelElements(v,function(a){a.style.fontSize=r+"px";a.removeAttribute("size")});for(var t=0;t<v.length;t++)0==m.model.getChildCount(v[t])&&m.autoSizeCell(v[t],!1);g.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[r],"cells",v))}finally{m.getModel().endUpdate()}}a.value=
-r+f;mxEvent.consume(p)});k&&m.cellEditor.isContentEditing()&&(mxEvent.addListener(a,"mousedown",function(){document.activeElement==m.cellEditor.textarea&&(l=m.cellEditor.saveSelection())}),mxEvent.addListener(a,"touchstart",function(){document.activeElement==m.cellEditor.textarea&&(l=m.cellEditor.saveSelection())}));mxEvent.addListener(a,"change",p);mxEvent.addListener(a,"blur",p);return p};
+BaseFormatPanel.prototype.installInputHandler=function(a,b,c,e,d,f,h,k){f=null!=f?f:"";k=null!=k?k:!1;var g=this.editorUi,m=g.editor.graph;e=null!=e?e:1;d=null!=d?d:999;var l=null,n=!1,p=mxUtils.bind(this,function(p){var r=k?parseFloat(a.value):parseInt(a.value);isNaN(r)||b!=mxConstants.STYLE_ROTATION||(r=mxUtils.mod(Math.round(100*r),36E3)/100);r=Math.min(d,Math.max(e,isNaN(r)?c:r));if(m.cellEditor.isContentEditing()&&h)n||(n=!0,null!=l&&(m.cellEditor.restoreSelection(l),l=null),h(r),a.value=r+f,
+n=!1);else if(r!=mxUtils.getValue(g.getSelectionState().style,b,c)){m.isEditing()&&m.stopEditing(!0);m.getModel().beginUpdate();try{var v=g.getSelectionState().cells;m.setCellStyles(b,r,v);b==mxConstants.STYLE_FONTSIZE&&m.updateLabelElements(v,function(a){a.style.fontSize=r+"px";a.removeAttribute("size")});for(var t=0;t<v.length;t++)0==m.model.getChildCount(v[t])&&m.autoSizeCell(v[t],!1);g.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[r],"cells",v))}finally{m.getModel().endUpdate()}}a.value=
+r+f;mxEvent.consume(p)});h&&m.cellEditor.isContentEditing()&&(mxEvent.addListener(a,"mousedown",function(){document.activeElement==m.cellEditor.textarea&&(l=m.cellEditor.saveSelection())}),mxEvent.addListener(a,"touchstart",function(){document.activeElement==m.cellEditor.textarea&&(l=m.cellEditor.saveSelection())}));mxEvent.addListener(a,"change",p);mxEvent.addListener(a,"blur",p);return p};
BaseFormatPanel.prototype.createPanel=function(){var a=document.createElement("div");a.className="geFormatSection";a.style.padding="12px 0px 12px 14px";return a};BaseFormatPanel.prototype.createTitle=function(a){var b=document.createElement("div");b.style.padding="0px 0px 6px 0px";b.style.whiteSpace="nowrap";b.style.overflow="hidden";b.style.width="200px";b.style.fontWeight="bold";mxUtils.write(b,a);return b};
-BaseFormatPanel.prototype.addAction=function(a,b,c){var e=!1;null!=b&&b.isEnabled()&&(e=mxUtils.button(b.label,function(a){b.funct()}),e.setAttribute("title",b.label+(null!=b.shortcut?" ("+b.shortcut+")":"")),e.style.width=(null!=c?c:210)+"px",e.style.marginBottom="2px",a.appendChild(e),e=!0);return e};
-BaseFormatPanel.prototype.createStepper=function(a,b,c,e,d,f,k){c=null!=c?c:1;e=null!=e?e:9;var h=10*c,g=document.createElement("div");mxUtils.setPrefixedStyle(g.style,"borderRadius","3px");g.style.border="1px solid rgb(192, 192, 192)";g.style.position="absolute";var m=document.createElement("div");m.style.borderBottom="1px solid rgb(192, 192, 192)";m.style.position="relative";m.style.height=e+"px";m.style.width="10px";m.className="geBtnUp";g.appendChild(m);var l=m.cloneNode(!1);l.style.border="none";
-l.style.height=e+"px";l.className="geBtnDown";g.appendChild(l);mxEvent.addGestureListeners(l,function(a){mxEvent.consume(a)},null,function(d){""==a.value&&(a.value=f||"2");var e=k?parseFloat(a.value):parseInt(a.value);isNaN(e)||(a.value=e-(mxEvent.isShiftDown(d)?h:c),null!=b&&b(d));mxEvent.consume(d)});mxEvent.addGestureListeners(m,function(a){mxEvent.consume(a)},null,function(d){""==a.value&&(a.value=f||"0");var e=k?parseFloat(a.value):parseInt(a.value);isNaN(e)||(a.value=e+(mxEvent.isShiftDown(d)?
-h:c),null!=b&&b(d));mxEvent.consume(d)});if(d){var n=null;mxEvent.addGestureListeners(g,function(a){mxEvent.consume(a)},null,function(a){if(null!=n){try{n.select()}catch(r){}n=null;mxEvent.consume(a)}})}else mxEvent.addListener(g,"click",function(a){mxEvent.consume(a)});return g};
-BaseFormatPanel.prototype.createOption=function(a,b,c,e,d){var f=document.createElement("div");f.style.padding="3px 0px 3px 0px";f.style.whiteSpace="nowrap";f.style.textOverflow="ellipsis";f.style.overflow="hidden";f.style.width="200px";f.style.height="18px";var k=document.createElement("input");k.setAttribute("type","checkbox");k.style.margin="1px 6px 0px 0px";k.style.verticalAlign="top";f.appendChild(k);var h=document.createElement("span");h.style.verticalAlign="top";mxUtils.write(h,a);f.appendChild(h);
-var g=!1,m=b(),l=function(a){g||(g=!0,a?(k.setAttribute("checked","checked"),k.defaultChecked=!0,k.checked=!0):(k.removeAttribute("checked"),k.defaultChecked=!1,k.checked=!1),m!=a&&(m=a,b()!=m&&c(m)),g=!1)};mxEvent.addListener(f,"click",function(a){if("disabled"!=k.getAttribute("disabled")){a=mxEvent.getSource(a);if(a==f||a==h)k.checked=!k.checked;l(k.checked)}});l(m);null!=e&&(e.install(l),this.listeners.push(e));null!=d&&d(f);return f};
-BaseFormatPanel.prototype.createCellOption=function(a,b,c,e,d,f,k,h,g){var m=this.editorUi,l=m.editor.graph,n=this;e=null!=e?"null"==e?null:e:1;d=null!=d?"null"==d?null:d:0;var p=null!=g?l.getCommonStyle(g):this.format.getSelectionState().style;return this.createOption(a,function(){return mxUtils.getValue(p,b,c)!=d},function(a){h&&l.stopEditing();if(null!=k)k.funct();else{l.getModel().beginUpdate();try{var c=null!=g?g:n.format.getSelectionState().cells;a=a?e:d;l.setCellStyles(b,a,c);null!=f&&f(c,
-a);m.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[a],"cells",c))}finally{l.getModel().endUpdate()}}},{install:function(a){this.listener=function(){a(mxUtils.getValue(p,b,c)!=d)};l.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){l.getModel().removeListener(this.listener)}})};
-BaseFormatPanel.prototype.createColorOption=function(a,b,c,e,d,f,k,h){var g=document.createElement("div");g.style.padding="3px 0px 3px 0px";g.style.whiteSpace="nowrap";g.style.overflow="hidden";g.style.width="200px";g.style.height="18px";var m=document.createElement("input");m.setAttribute("type","checkbox");m.style.margin="1px 6px 0px 0px";m.style.verticalAlign="top";k||g.appendChild(m);var l=document.createElement("span");l.style.verticalAlign="top";mxUtils.write(l,a);g.appendChild(l);var n=b(),
-p=!1,r=null,u=function(a,d,g){if(!p){var l="null"==e?null:e;p=!0;a=/(^#?[a-zA-Z0-9]*$)/.test(a)?a:l;var l=null!=a&&a!=mxConstants.NONE?a:l,t=document.createElement("div");t.style.width="36px";t.style.height="12px";t.style.margin="3px";t.style.border="1px solid black";t.style.backgroundColor="default"==l?h:l;r.innerHTML="";r.appendChild(t);null!=a&&a!=mxConstants.NONE&&1<a.length&&"string"===typeof a&&(l="#"==a.charAt(0)?a.substring(1).toUpperCase():a,l=ColorDialog.prototype.colorNames[l],r.setAttribute("title",
-null!=l?l+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper"));null!=a&&a!=mxConstants.NONE?(m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0):(m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1);r.style.display=m.checked||k?"":"none";null!=f&&f("null"==a?null:a);n=a;d||(g||k||b()!=n)&&c("null"==n?null:n,n);p=!1}},v=document.createElement("input");v.setAttribute("type","color");v.style.visibility="hidden";v.style.width="0px";v.style.height="0px";v.style.border=
-"none";g.appendChild(v);r=mxUtils.button("",mxUtils.bind(this,function(a){var b=n;"default"==b&&(b=h);!mxEvent.isShiftDown(a)||mxClient.IS_IE||mxClient.IS_IE11?this.editorUi.pickColor(b,function(a){u(a,null,!0)},h):(v.value=b,v.click(),mxEvent.addListener(v,"input",function(){u(v.value,null,!0)}));mxEvent.consume(a)}));r.style.position="absolute";r.style.marginTop="-3px";r.style.left="178px";r.style.height="22px";r.className="geColorBtn";r.style.display=m.checked||k?"":"none";g.appendChild(r);a=null!=
+BaseFormatPanel.prototype.addAction=function(a,b){var c=this.editorUi.actions.get(b),e=null;null!=c&&c.isEnabled()&&(e=mxUtils.button(c.label,function(a){c.funct(a,a)}),e.setAttribute("title",c.label+(null!=c.shortcut?" ("+c.shortcut+")":"")),e.style.marginBottom="2px",e.style.width="210px",a.appendChild(e),result=!0);return e};
+BaseFormatPanel.prototype.addActions=function(a,b){for(var c=null,e=0,d=0;d<b.length;d++){var f=this.addAction(a,b[d]);null!=f&&(e++,0==mxUtils.mod(e,2)&&(c.style.marginRight="2px",c.style.width="104px",f.style.width="104px"),c=f)}0<e&&mxUtils.br(a);return e};
+BaseFormatPanel.prototype.createStepper=function(a,b,c,e,d,f,h){c=null!=c?c:1;e=null!=e?e:9;var k=10*c,g=document.createElement("div");mxUtils.setPrefixedStyle(g.style,"borderRadius","3px");g.style.border="1px solid rgb(192, 192, 192)";g.style.position="absolute";var m=document.createElement("div");m.style.borderBottom="1px solid rgb(192, 192, 192)";m.style.position="relative";m.style.height=e+"px";m.style.width="10px";m.className="geBtnUp";g.appendChild(m);var l=m.cloneNode(!1);l.style.border="none";
+l.style.height=e+"px";l.className="geBtnDown";g.appendChild(l);mxEvent.addGestureListeners(l,function(a){mxEvent.consume(a)},null,function(d){""==a.value&&(a.value=f||"2");var e=h?parseFloat(a.value):parseInt(a.value);isNaN(e)||(a.value=e-(mxEvent.isShiftDown(d)?k:c),null!=b&&b(d));mxEvent.consume(d)});mxEvent.addGestureListeners(m,function(a){mxEvent.consume(a)},null,function(d){""==a.value&&(a.value=f||"0");var e=h?parseFloat(a.value):parseInt(a.value);isNaN(e)||(a.value=e+(mxEvent.isShiftDown(d)?
+k:c),null!=b&&b(d));mxEvent.consume(d)});if(d){var n=null;mxEvent.addGestureListeners(g,function(a){mxEvent.consume(a)},null,function(a){if(null!=n){try{n.select()}catch(r){}n=null;mxEvent.consume(a)}})}else mxEvent.addListener(g,"click",function(a){mxEvent.consume(a)});return g};
+BaseFormatPanel.prototype.createOption=function(a,b,c,e,d){var f=document.createElement("div");f.style.padding="3px 0px 3px 0px";f.style.whiteSpace="nowrap";f.style.textOverflow="ellipsis";f.style.overflow="hidden";f.style.width="200px";f.style.height="18px";var h=document.createElement("input");h.setAttribute("type","checkbox");h.style.margin="1px 6px 0px 0px";h.style.verticalAlign="top";f.appendChild(h);var k=document.createElement("span");k.style.verticalAlign="top";mxUtils.write(k,a);f.appendChild(k);
+var g=!1,m=b(),l=function(a){g||(g=!0,a?(h.setAttribute("checked","checked"),h.defaultChecked=!0,h.checked=!0):(h.removeAttribute("checked"),h.defaultChecked=!1,h.checked=!1),m!=a&&(m=a,b()!=m&&c(m)),g=!1)};mxEvent.addListener(f,"click",function(a){if("disabled"!=h.getAttribute("disabled")){a=mxEvent.getSource(a);if(a==f||a==k)h.checked=!h.checked;l(h.checked)}});l(m);null!=e&&(e.install(l),this.listeners.push(e));null!=d&&d(f);return f};
+BaseFormatPanel.prototype.createCellOption=function(a,b,c,e,d,f,h,k,g){var m=this.editorUi,l=m.editor.graph;e=null!=e?"null"==e?null:e:1;d=null!=d?"null"==d?null:d:0;var n=null!=g?l.getCommonStyle(g):m.getSelectionState().style;return this.createOption(a,function(){return mxUtils.getValue(n,b,c)!=d},function(a){k&&l.stopEditing();if(null!=h)h.funct();else{l.getModel().beginUpdate();try{var c=null!=g?g:m.getSelectionState().cells;a=a?e:d;l.setCellStyles(b,a,c);null!=f&&f(c,a);m.fireEvent(new mxEventObject("styleChanged",
+"keys",[b],"values",[a],"cells",c))}finally{l.getModel().endUpdate()}}},{install:function(a){this.listener=function(){a(mxUtils.getValue(n,b,c)!=d)};l.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){l.getModel().removeListener(this.listener)}})};
+BaseFormatPanel.prototype.createColorOption=function(a,b,c,e,d,f,h,k){var g=document.createElement("div");g.style.padding="3px 0px 3px 0px";g.style.whiteSpace="nowrap";g.style.overflow="hidden";g.style.width="200px";g.style.height="18px";var m=document.createElement("input");m.setAttribute("type","checkbox");m.style.margin="1px 6px 0px 0px";m.style.verticalAlign="top";h||g.appendChild(m);var l=document.createElement("span");l.style.verticalAlign="top";mxUtils.write(l,a);g.appendChild(l);var n=b(),
+p=!1,r=null,u=function(a,d,g){if(!p){var l="null"==e?null:e;p=!0;a=/(^#?[a-zA-Z0-9]*$)/.test(a)?a:l;var l=null!=a&&a!=mxConstants.NONE?a:l,t=document.createElement("div");t.style.width="36px";t.style.height="12px";t.style.margin="3px";t.style.border="1px solid black";t.style.backgroundColor="default"==l?k:l;r.innerHTML="";r.appendChild(t);null!=a&&a!=mxConstants.NONE&&1<a.length&&"string"===typeof a&&(l="#"==a.charAt(0)?a.substring(1).toUpperCase():a,l=ColorDialog.prototype.colorNames[l],r.setAttribute("title",
+null!=l?l+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper"));null!=a&&a!=mxConstants.NONE?(m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0):(m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1);r.style.display=m.checked||h?"":"none";null!=f&&f("null"==a?null:a);n=a;d||(g||h||b()!=n)&&c("null"==n?null:n,n);p=!1}},v=document.createElement("input");v.setAttribute("type","color");v.style.visibility="hidden";v.style.width="0px";v.style.height="0px";v.style.border=
+"none";g.appendChild(v);r=mxUtils.button("",mxUtils.bind(this,function(a){var b=n;"default"==b&&(b=k);!mxEvent.isShiftDown(a)||mxClient.IS_IE||mxClient.IS_IE11?this.editorUi.pickColor(b,function(a){u(a,null,!0)},k):(v.value=b,v.click(),mxEvent.addListener(v,"input",function(){u(v.value,null,!0)}));mxEvent.consume(a)}));r.style.position="absolute";r.style.marginTop="-3px";r.style.left="178px";r.style.height="22px";r.className="geColorBtn";r.style.display=m.checked||h?"":"none";g.appendChild(r);a=null!=
n&&"string"===typeof n&&"#"==n.charAt(0)?n.substring(1).toUpperCase():n;a=ColorDialog.prototype.colorNames[a];r.setAttribute("title",null!=a?a+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper");mxEvent.addListener(g,"click",function(a){a=mxEvent.getSource(a);if(a==m||"INPUT"!=a.nodeName)a!=m&&(m.checked=!m.checked),m.checked||null==n||n==mxConstants.NONE||e==mxConstants.NONE||(e=n),u(m.checked?e:mxConstants.NONE)});u(n,!0);null!=d&&(d.install(u),this.listeners.push(d));return g};
-BaseFormatPanel.prototype.createCellColorOption=function(a,b,c,e,d,f){var k=this.editorUi,h=k.editor.graph,g=this;return this.createColorOption(a,function(){var a=h.view.getState(g.format.getSelectionState().cells[0]);return null!=a?mxUtils.getValue(a.style,b,null):null},function(a,c){h.getModel().beginUpdate();try{var e=g.format.getSelectionState().cells;h.setCellStyles(b,a,e);null!=d&&d(a);k.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[a],"cells",e))}finally{h.getModel().endUpdate()}},
-c||mxConstants.NONE,{install:function(a){this.listener=function(){var c=h.view.getState(g.format.getSelectionState().cells[0]);null!=c&&a(mxUtils.getValue(c.style,b,null),!0)};h.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){h.getModel().removeListener(this.listener)}},e,null,f)};
+BaseFormatPanel.prototype.createCellColorOption=function(a,b,c,e,d,f){var h=this.editorUi,k=h.editor.graph;return this.createColorOption(a,function(){var a=k.view.getState(h.getSelectionState().cells[0]);return null!=a?mxUtils.getValue(a.style,b,null):null},function(a,c){k.getModel().beginUpdate();try{var e=h.getSelectionState().cells;k.setCellStyles(b,a,e);null!=d&&d(a);h.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[a],"cells",e))}finally{k.getModel().endUpdate()}},c||mxConstants.NONE,
+{install:function(a){this.listener=function(){var c=k.view.getState(h.getSelectionState().cells[0]);null!=c&&a(mxUtils.getValue(c.style,b,null),!0)};k.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){k.getModel().removeListener(this.listener)}},e,null,f)};
BaseFormatPanel.prototype.addArrow=function(a,b){b=null!=b?b:10;var c=document.createElement("div");c.style.display="inline-block";c.style.paddingRight="4px";c.style.padding="6px";var e=10-b;2==e?c.style.paddingTop="6px":0<e?c.style.paddingTop=6-e+"px":c.style.marginTop="-2px";c.style.height=b+"px";c.style.borderLeft="1px solid #a0a0a0";e=document.createElement("img");e.setAttribute("border","0");e.setAttribute("valign","middle");e.setAttribute("src",Toolbar.prototype.dropDownImage);c.appendChild(e);
e=c.getElementsByTagName("img")[0];e.style.position="relative";e.style.left="1px";e.style.top=mxClient.IS_FF?"0px":"-4px";mxUtils.setOpacity(c,70);e=a.getElementsByTagName("div")[0];null!=e&&(e.style.paddingRight="6px",e.style.marginLeft="4px",e.style.marginTop="-1px",e.style.display="inline-block",mxUtils.setOpacity(e,60));mxUtils.setOpacity(a,100);a.style.border="1px solid #a0a0a0";a.style.backgroundColor=this.buttonBackgroundColor;a.style.backgroundImage="none";a.style.width="auto";a.className+=
" geColorBtn";mxUtils.setPrefixedStyle(a.style,"borderRadius","3px");a.appendChild(c);return e};
-BaseFormatPanel.prototype.addUnitInput=function(a,b,c,e,d,f,k,h,g){k=null!=k?k:0;b=document.createElement("input");b.style.position="absolute";b.style.textAlign="right";b.style.marginTop="-2px";b.style.left=228-c-e+"px";b.style.width=e+"px";b.style.height="21px";b.style.border="1px solid rgb(160, 160, 160)";b.style.borderRadius="4px";b.style.boxSizing="border-box";a.appendChild(b);e=this.createStepper(b,d,f,null,h,null,g);e.style.marginTop=k-2+"px";e.style.left=228-c+"px";a.appendChild(e);return b};
-BaseFormatPanel.prototype.createRelativeOption=function(a,b,c,e,d){c=null!=c?c:52;var f=this.editorUi.editor.graph,k=this.createPanel();k.style.paddingTop="10px";k.style.paddingBottom="10px";mxUtils.write(k,a);k.style.fontWeight="bold";a=mxUtils.bind(this,function(a){if(null!=e)e(h);else{var c=parseInt(h.value),c=Math.min(100,Math.max(0,isNaN(c)?100:c)),d=f.view.getState(this.format.getSelectionState().cells[0]);null!=d&&c!=mxUtils.getValue(d.style,b,100)&&(100==c&&(c=null),d=this.format.getSelectionState().cells,
-f.setCellStyles(b,c,d),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[c],"cells",d)));h.value=(null!=c?c:"100")+" %"}mxEvent.consume(a)});var h=this.addUnitInput(k,"%",16,c,a,10,-15,null!=e);if(null!=b){var g=mxUtils.bind(this,function(a,c,d){if(d||h!=document.activeElement)a=this.format.getSelectionState(),a=parseInt(mxUtils.getValue(a.style,b,100)),h.value=isNaN(a)?"":a+" %"});mxEvent.addListener(h,"keydown",function(a){13==a.keyCode?(f.container.focus(),mxEvent.consume(a)):
-27==a.keyCode&&(g(null,null,!0),f.container.focus(),mxEvent.consume(a))});f.getModel().addListener(mxEvent.CHANGE,g);this.listeners.push({destroy:function(){f.getModel().removeListener(g)}});g()}mxEvent.addListener(h,"blur",a);mxEvent.addListener(h,"change",a);null!=d&&d(h);return k};
+BaseFormatPanel.prototype.addUnitInput=function(a,b,c,e,d,f,h,k,g){h=null!=h?h:0;b=document.createElement("input");b.style.position="absolute";b.style.textAlign="right";b.style.marginTop="-2px";b.style.left=228-c-e+"px";b.style.width=e+"px";b.style.height="21px";b.style.border="1px solid rgb(160, 160, 160)";b.style.borderRadius="4px";b.style.boxSizing="border-box";a.appendChild(b);e=this.createStepper(b,d,f,null,k,null,g);e.style.marginTop=h-2+"px";e.style.left=228-c+"px";a.appendChild(e);return b};
+BaseFormatPanel.prototype.createRelativeOption=function(a,b,c,e,d){c=null!=c?c:52;var f=this.editorUi,h=f.editor.graph,k=this.createPanel();k.style.paddingTop="10px";k.style.paddingBottom="10px";mxUtils.write(k,a);k.style.fontWeight="bold";a=mxUtils.bind(this,function(a){if(null!=e)e(g);else{var c=parseInt(g.value),c=Math.min(100,Math.max(0,isNaN(c)?100:c)),d=h.view.getState(f.getSelectionState().cells[0]);null!=d&&c!=mxUtils.getValue(d.style,b,100)&&(100==c&&(c=null),d=f.getSelectionState().cells,
+h.setCellStyles(b,c,d),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[c],"cells",d)));g.value=(null!=c?c:"100")+" %"}mxEvent.consume(a)});var g=this.addUnitInput(k,"%",16,c,a,10,-15,null!=e);if(null!=b){var m=mxUtils.bind(this,function(a,c,d){if(d||g!=document.activeElement)a=f.getSelectionState(),a=parseInt(mxUtils.getValue(a.style,b,100)),g.value=isNaN(a)?"":a+" %"});mxEvent.addListener(g,"keydown",function(a){13==a.keyCode?(h.container.focus(),mxEvent.consume(a)):
+27==a.keyCode&&(m(null,null,!0),h.container.focus(),mxEvent.consume(a))});h.getModel().addListener(mxEvent.CHANGE,m);this.listeners.push({destroy:function(){h.getModel().removeListener(m)}});m()}mxEvent.addListener(g,"blur",a);mxEvent.addListener(g,"change",a);null!=d&&d(g);return k};
BaseFormatPanel.prototype.addLabel=function(a,b,c,e){e=null!=e?e:61;var d=document.createElement("div");mxUtils.write(d,b);d.style.position="absolute";d.style.left=240-c-e+"px";d.style.width=e+"px";d.style.marginTop="6px";d.style.textAlign="center";a.appendChild(d)};
BaseFormatPanel.prototype.addKeyHandler=function(a,b){mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(a){13==a.keyCode?(this.editorUi.editor.graph.container.focus(),mxEvent.consume(a)):27==a.keyCode&&(null!=b&&b(null,null,!0),this.editorUi.editor.graph.container.focus(),mxEvent.consume(a))}))};
BaseFormatPanel.prototype.styleButtons=function(a){for(var b=0;b<a.length;b++)mxUtils.setPrefixedStyle(a[b].style,"borderRadius","3px"),mxUtils.setOpacity(a[b],100),a[b].style.border="1px solid #a0a0a0",a[b].style.padding="4px",a[b].style.paddingTop="3px",a[b].style.paddingRight="1px",a[b].style.margin="1px",a[b].style.marginRight="2px",a[b].style.width="24px",a[b].style.height="20px",a[b].className+=" geColorBtn"};
BaseFormatPanel.prototype.destroy=function(){if(null!=this.listeners){for(var a=0;a<this.listeners.length;a++)this.listeners[a].destroy();this.listeners=null}};ArrangePanel=function(a,b,c){BaseFormatPanel.call(this,a,b,c);this.init()};mxUtils.extend(ArrangePanel,BaseFormatPanel);
-ArrangePanel.prototype.init=function(){var a=this.format.getSelectionState();0<a.cells.length&&(this.container.appendChild(this.addLayerOps(this.createPanel())),this.addGeometry(this.container),this.addEdgeGeometry(this.container),a.containsLabel&&0!=a.edges.length||this.container.appendChild(this.addAngle(this.createPanel())),a.containsLabel||0!=a.edges.length||"rectangle"==a.style.shape||"label"==a.style.shape||this.container.appendChild(this.addFlip(this.createPanel())),1<a.vertices.length&&(this.container.appendChild(this.addAlign(this.createPanel())),
-this.container.appendChild(this.addDistribute(this.createPanel()))),this.container.appendChild(this.addTable(this.createPanel())));this.container.appendChild(this.addGroupOps(this.createPanel()));a.containsLabel&&(a=document.createElement("div"),a.style.width="100%",a.style.marginTop="0px",a.style.fontWeight="bold",a.style.padding="10px 0 0 14px",mxUtils.write(a,mxResources.get("style")),this.container.appendChild(a),new StyleFormatPanel(this.format,this.editorUi,this.container))};
-ArrangePanel.prototype.addTable=function(a){var b=this.editorUi,c=b.editor.graph,e=this.format.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="10px";var d=document.createElement("div");d.style.marginTop="2px";d.style.marginBottom="8px";d.style.fontWeight="bold";mxUtils.write(d,mxResources.get("table"));a.appendChild(d);d=document.createElement("div");d.style.position="relative";d.style.paddingLeft="0px";d.style.borderWidth="0px";d.style.width="220px";d.className="geToolbarContainer";
-var f=c.isTable(e.vertices[0])||c.isTableRow(e.vertices[0])||c.isTableCell(e.vertices[0]),k=c.isStack(e.vertices[0])||c.isStackChild(e.vertices[0]),h=f;k&&(f="0"==(c.isStack(e.vertices[0])?e.style:c.getCellStyle(c.model.getParent(e.vertices[0]))).horizontalStack,h=!f);var g=[];h&&(g=g.concat([b.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{k?c.insertLane(e.vertices[0],!0):c.insertTableColumn(e.vertices[0],!0)}catch(m){b.handleError(m)}}),
-d),b.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{k?c.insertLane(e.vertices[0],!1):c.insertTableColumn(e.vertices[0],!1)}catch(m){b.handleError(m)}}),d),b.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{k?c.deleteLane(e.vertices[0]):c.deleteTableColumn(e.vertices[0])}catch(m){b.handleError(m)}}),d)]));f&&(g=g.concat([b.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),
-mxUtils.bind(this,function(){try{k?c.insertLane(e.vertices[0],!0):c.insertTableRow(e.vertices[0],!0)}catch(m){b.handleError(m)}}),d),b.toolbar.addButton("geSprite-insertrowafter",mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{k?c.insertLane(e.vertices[0],!1):c.insertTableRow(e.vertices[0],!1)}catch(m){b.handleError(m)}}),d),b.toolbar.addButton("geSprite-deleterow",mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{k?c.deleteLane(e.vertices[0]):c.deleteTableRow(e.vertices[0])}catch(m){b.handleError(m)}}),
-d)]));0<g.length?(this.styleButtons(g),a.appendChild(d),3<g.length&&(g[2].style.marginRight="10px")):a.style.display="none";return a};
-ArrangePanel.prototype.addLayerOps=function(a){var b=this.editorUi,c=b.editor.graph,e=mxUtils.button(mxResources.get("toFront"),function(a){b.actions.get("toFront").funct()});e.setAttribute("title",mxResources.get("toFront")+" ("+this.editorUi.actions.get("toFront").shortcut+")");e.style.width="104px";e.style.marginRight="2px";a.appendChild(e);e=mxUtils.button(mxResources.get("toBack"),function(a){b.actions.get("toBack").funct()});e.setAttribute("title",mxResources.get("toBack")+" ("+this.editorUi.actions.get("toBack").shortcut+
-")");e.style.width="104px";a.appendChild(e);1==c.getSelectionCount()&&(mxUtils.br(a),e=mxUtils.button(mxResources.get("bringForward"),function(a){b.actions.get("bringForward").funct()}),e.setAttribute("title",mxResources.get("bringForward")),e.style.width="104px",e.style.marginRight="2px",e.style.marginTop="2px",a.appendChild(e),e=mxUtils.button(mxResources.get("sendBackward"),function(a){b.actions.get("sendBackward").funct()}),e.setAttribute("title",mxResources.get("sendBackward")),e.style.width=
-"104px",e.style.marginTop="2px",a.appendChild(e));return a};
-ArrangePanel.prototype.addGroupOps=function(a){var b=this.editorUi,c=b.editor.graph,e=this.format.getSelectionState(),d=e.cells[0],f=0,k=null;a.style.paddingTop="8px";a.style.paddingBottom="6px";this.addAction(a,b.actions.get("group"))&&(mxUtils.br(a),f++);this.addAction(a,b.actions.get("ungroup"))&&(mxUtils.br(a),f++);if(c.getModel().isVertex(c.getSelectionCell())&&(f=0,k=mxUtils.button(mxResources.get("copySize"),function(a){b.actions.get("copySize").funct(a)}),k.setAttribute("title",mxResources.get("copySize")+
-" ("+this.editorUi.actions.get("copySize").shortcut+")"),k.style.width="210px",k.style.marginBottom="2px",a.appendChild(k),f++,null!=b.copiedSize&&0<e.vertices.length)){var h=mxUtils.button(mxResources.get("pasteSize"),function(a){b.actions.get("pasteSize").funct(a)});h.setAttribute("title",mxResources.get("pasteSize")+" ("+this.editorUi.actions.get("pasteSize").shortcut+")");a.appendChild(h);f++;k.style.width="104px";k.style.marginBottom="2px";h.style.width="104px";h.style.marginBottom="2px"}0<c.getSelectionCount()&&
-(0<f&&(mxUtils.br(a),f=0),k=mxUtils.button(mxResources.get("copyData"),function(a){if(mxEvent.isShiftDown(a)){var d=c.getDataForCells(c.getSelectionCells());a=new EmbedDialog(b,JSON.stringify(d,null,2),null,null,function(){console.log(d);b.alert("Written to Console (Dev Tools)")},mxResources.get("copyData"),null,"Console","data.json");b.showDialog(a.container,450,240,!0,!0);a.init()}else b.actions.get("copyData").funct(a)}),k.setAttribute("title",mxResources.get("copyData")+" ("+this.editorUi.actions.get("copyData").shortcut+
-") Shift+Click to Extract Data"),k.style.width="210px",k.style.marginBottom="2px",a.appendChild(k),f++,null!=b.copiedValue&&0<e.cells.length&&(h=mxUtils.button(mxResources.get("pasteData"),function(a){b.actions.get("pasteData").funct(a)}),h.setAttribute("title",mxResources.get("pasteData")+" ("+this.editorUi.actions.get("pasteData").shortcut+")"),a.appendChild(h),f++,k.style.width="104px",k.style.marginBottom="2px",h.style.width="104px",h.style.marginBottom="2px"));1==e.cells.length&&c.getModel().isVertex(d)&&
-!e.row&&!e.cell&&c.getModel().isVertex(c.getModel().getParent(d))?(0<f&&mxUtils.br(a),k=mxUtils.button(mxResources.get("removeFromGroup"),function(a){b.actions.get("removeFromGroup").funct()}),k.setAttribute("title",mxResources.get("removeFromGroup")),k.style.width="210px",k.style.marginBottom="2px",a.appendChild(k),f++):0<e.cells.length&&(0<f&&mxUtils.br(a),k=mxUtils.button(mxResources.get("clearWaypoints"),mxUtils.bind(this,function(a){this.editorUi.actions.get("clearWaypoints").funct(a,a)})),k.setAttribute("title",
-mxResources.get("clearWaypoints")+" ("+this.editorUi.actions.get("clearWaypoints").shortcut+") Shift+Click to Clear Anchor Points"),k.style.width="210px",k.style.marginBottom="2px",a.appendChild(k),f++);1==e.cells.length&&(0<f&&mxUtils.br(a),k=mxUtils.button(mxResources.get("editData"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editData").funct()})),k.setAttribute("title",mxResources.get("editData")+" ("+this.editorUi.actions.get("editData").shortcut+")"),k.style.width="104px",k.style.marginBottom=
-"2px",a.appendChild(k),f++,k=mxUtils.button(mxResources.get("editLink"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editLink").funct()})),k.setAttribute("title",mxResources.get("editLink")+" ("+this.editorUi.actions.get("editLink").shortcut+")"),k.style.width="104px",k.style.marginLeft="2px",k.style.marginBottom="2px",a.appendChild(k),f++);0==f&&(a.style.display="none");return a};
+ArrangePanel.prototype.init=function(){var a=this.editorUi.getSelectionState();0<a.cells.length&&(this.container.appendChild(this.addLayerOps(this.createPanel())),this.addGeometry(this.container),this.addEdgeGeometry(this.container),a.containsLabel&&0!=a.edges.length||this.container.appendChild(this.addAngle(this.createPanel())),a.containsLabel||0!=a.edges.length||"rectangle"==a.style.shape||"label"==a.style.shape||this.container.appendChild(this.addFlip(this.createPanel())),1<a.vertices.length&&
+(this.container.appendChild(this.addAlign(this.createPanel())),this.container.appendChild(this.addDistribute(this.createPanel()))),this.container.appendChild(this.addTable(this.createPanel())));this.container.appendChild(this.addGroupOps(this.createPanel()));a.containsLabel&&(a=document.createElement("div"),a.style.width="100%",a.style.marginTop="0px",a.style.fontWeight="bold",a.style.padding="10px 0 0 14px",mxUtils.write(a,mxResources.get("style")),this.container.appendChild(a),new StyleFormatPanel(this.format,
+this.editorUi,this.container))};
+ArrangePanel.prototype.addTable=function(a){var b=this.editorUi,c=b.editor.graph,e=b.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="10px";var d=document.createElement("div");d.style.marginTop="2px";d.style.marginBottom="8px";d.style.fontWeight="bold";mxUtils.write(d,mxResources.get("table"));a.appendChild(d);d=document.createElement("div");d.style.position="relative";d.style.paddingLeft="0px";d.style.borderWidth="0px";d.style.width="220px";d.className="geToolbarContainer";var f=
+c.isTable(e.vertices[0])||c.isTableRow(e.vertices[0])||c.isTableCell(e.vertices[0]),h=c.isStack(e.vertices[0])||c.isStackChild(e.vertices[0]),k=f;h&&(f="0"==(c.isStack(e.vertices[0])?e.style:c.getCellStyle(c.model.getParent(e.vertices[0]))).horizontalStack,k=!f);var g=[];k&&(g=g.concat([b.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{h?c.insertLane(e.vertices[0],!0):c.insertTableColumn(e.vertices[0],!0)}catch(m){b.handleError(m)}}),
+d),b.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{h?c.insertLane(e.vertices[0],!1):c.insertTableColumn(e.vertices[0],!1)}catch(m){b.handleError(m)}}),d),b.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{h?c.deleteLane(e.vertices[0]):c.deleteTableColumn(e.vertices[0])}catch(m){b.handleError(m)}}),d)]));f&&(g=g.concat([b.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),
+mxUtils.bind(this,function(){try{h?c.insertLane(e.vertices[0],!0):c.insertTableRow(e.vertices[0],!0)}catch(m){b.handleError(m)}}),d),b.toolbar.addButton("geSprite-insertrowafter",mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{h?c.insertLane(e.vertices[0],!1):c.insertTableRow(e.vertices[0],!1)}catch(m){b.handleError(m)}}),d),b.toolbar.addButton("geSprite-deleterow",mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{h?c.deleteLane(e.vertices[0]):c.deleteTableRow(e.vertices[0])}catch(m){b.handleError(m)}}),
+d)]));0<g.length?(this.styleButtons(g),a.appendChild(d),3<g.length&&(g[2].style.marginRight="10px")):a.style.display="none";return a};ArrangePanel.prototype.addLayerOps=function(a){this.addActions(a,["toFront","toBack"]);this.addActions(a,["bringForward","sendBackward"]);return a};
+ArrangePanel.prototype.addGroupOps=function(a){var b=this.editorUi,c=b.editor.graph,e=b.getSelectionState(),d=null;a.style.paddingTop="8px";a.style.paddingBottom="6px";var f=this.addActions(a,["group","ungroup"]),f=f+this.addActions(a,["removeFromGroup"]),f=f+this.addActions(a,["copySize","pasteSize"]);0<c.getSelectionCount()&&(d=mxUtils.button(mxResources.get("copyData"),function(a){if(mxEvent.isShiftDown(a)){var d=c.getDataForCells(c.getSelectionCells());a=new EmbedDialog(b,JSON.stringify(d,null,
+2),null,null,function(){console.log(d);b.alert("Written to Console (Dev Tools)")},mxResources.get("copyData"),null,"Console","data.json");b.showDialog(a.container,450,240,!0,!0);a.init()}else b.actions.get("copyData").funct(a)}),d.setAttribute("title",mxResources.get("copyData")+" ("+this.editorUi.actions.get("copyData").shortcut+") Shift+Click to Extract Data"),d.style.width="210px",d.style.marginBottom="2px",a.appendChild(d),f++,null!=b.copiedValue&&0<e.cells.length&&(e=mxUtils.button(mxResources.get("pasteData"),
+function(a){b.actions.get("pasteData").funct(a)}),e.setAttribute("title",mxResources.get("pasteData")+" ("+this.editorUi.actions.get("pasteData").shortcut+")"),a.appendChild(e),f++,d.style.width="104px",d.style.marginBottom="2px",d.style.marginRight="2px",e.style.width="104px",e.style.marginBottom="2px"),mxUtils.br(a));d=this.addAction(a,"clearWaypoints");null!=d&&(mxUtils.br(a),d.setAttribute("title",mxResources.get("clearWaypoints")+" ("+this.editorUi.actions.get("clearWaypoints").shortcut+") Shift+Click to Clear Anchor Points"),
+f++);f+=this.addActions(a,["editData","editLink"]);0==f&&(a.style.display="none");return a};
ArrangePanel.prototype.addAlign=function(a){var b=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="12px";a.appendChild(this.createTitle(mxResources.get("align")));var c=document.createElement("div");c.style.position="relative";c.style.whiteSpace="nowrap";c.style.paddingLeft="0px";c.style.borderWidth="0px";c.style.width="220px";c.className="geToolbarContainer";var e=this.editorUi.toolbar.addButton("geSprite-alignleft",mxResources.get("left"),function(){b.alignCells(mxConstants.ALIGN_LEFT)},
-c),d=this.editorUi.toolbar.addButton("geSprite-aligncenter",mxResources.get("center"),function(){b.alignCells(mxConstants.ALIGN_CENTER)},c),f=this.editorUi.toolbar.addButton("geSprite-alignright",mxResources.get("right"),function(){b.alignCells(mxConstants.ALIGN_RIGHT)},c),k=this.editorUi.toolbar.addButton("geSprite-aligntop",mxResources.get("top"),function(){b.alignCells(mxConstants.ALIGN_TOP)},c),h=this.editorUi.toolbar.addButton("geSprite-alignmiddle",mxResources.get("middle"),function(){b.alignCells(mxConstants.ALIGN_MIDDLE)},
-c),g=this.editorUi.toolbar.addButton("geSprite-alignbottom",mxResources.get("bottom"),function(){b.alignCells(mxConstants.ALIGN_BOTTOM)},c);this.styleButtons([e,d,f,k,h,g]);f.style.marginRight="10px";a.appendChild(c);return a};
+c),d=this.editorUi.toolbar.addButton("geSprite-aligncenter",mxResources.get("center"),function(){b.alignCells(mxConstants.ALIGN_CENTER)},c),f=this.editorUi.toolbar.addButton("geSprite-alignright",mxResources.get("right"),function(){b.alignCells(mxConstants.ALIGN_RIGHT)},c),h=this.editorUi.toolbar.addButton("geSprite-aligntop",mxResources.get("top"),function(){b.alignCells(mxConstants.ALIGN_TOP)},c),k=this.editorUi.toolbar.addButton("geSprite-alignmiddle",mxResources.get("middle"),function(){b.alignCells(mxConstants.ALIGN_MIDDLE)},
+c),g=this.editorUi.toolbar.addButton("geSprite-alignbottom",mxResources.get("bottom"),function(){b.alignCells(mxConstants.ALIGN_BOTTOM)},c);this.styleButtons([e,d,f,h,k,g]);f.style.marginRight="10px";a.appendChild(c);return a};
ArrangePanel.prototype.addFlip=function(a){var b=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="10px";var c=document.createElement("div");c.style.marginTop="2px";c.style.marginBottom="8px";c.style.fontWeight="bold";mxUtils.write(c,mxResources.get("flip"));a.appendChild(c);c=mxUtils.button(mxResources.get("horizontal"),function(a){b.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)});c.setAttribute("title",mxResources.get("horizontal"));c.style.width="104px";c.style.marginRight=
"2px";a.appendChild(c);c=mxUtils.button(mxResources.get("vertical"),function(a){b.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)});c.setAttribute("title",mxResources.get("vertical"));c.style.width="104px";a.appendChild(c);return a};
ArrangePanel.prototype.addDistribute=function(a){var b=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="12px";a.appendChild(this.createTitle(mxResources.get("distribute")));var c=mxUtils.button(mxResources.get("horizontal"),function(a){b.distributeCells(!0)});c.setAttribute("title",mxResources.get("horizontal"));c.style.width="104px";c.style.marginRight="2px";a.appendChild(c);c=mxUtils.button(mxResources.get("vertical"),function(a){b.distributeCells(!1)});c.setAttribute("title",
mxResources.get("vertical"));c.style.width="104px";a.appendChild(c);return a};
-ArrangePanel.prototype.addAngle=function(a){var b=this.editorUi,c=b.editor.graph,e=this.format.getSelectionState();a.style.paddingBottom="8px";var d=document.createElement("div");d.style.position="absolute";d.style.width="70px";d.style.marginTop="0px";d.style.fontWeight="bold";var f=null,k=null,h=null;!e.rotatable||e.table||e.row||e.cell?a.style.paddingTop="8px":(mxUtils.write(d,mxResources.get("angle")),a.appendChild(d),f=this.addUnitInput(a,"°",16,52,function(){k.apply(this,arguments)}),mxUtils.br(a),
-a.style.paddingTop="10px");e.containsLabel||(d=mxResources.get("reverse"),0<e.vertices.length&&0<e.edges.length?d=mxResources.get("turn")+" / "+d:0<e.vertices.length&&(d=mxResources.get("turn")),h=mxUtils.button(d,function(a){b.actions.get("turn").funct(a)}),h.setAttribute("title",d+" ("+this.editorUi.actions.get("turn").shortcut+")"),h.style.width="210px",a.appendChild(h),null!=f&&(h.style.marginTop="8px"));if(null!=f){var g=mxUtils.bind(this,function(a,b,c){if(c||document.activeElement!=f)e=this.format.getSelectionState(),
-a=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0)),f.value=isNaN(a)?"":a+"°"}),k=this.installInputHandler(f,mxConstants.STYLE_ROTATION,0,0,360,"°",null,!0);this.addKeyHandler(f,g);c.getModel().addListener(mxEvent.CHANGE,g);this.listeners.push({destroy:function(){c.getModel().removeListener(g)}});g()}return a};
+ArrangePanel.prototype.addAngle=function(a){var b=this.editorUi,c=b.editor.graph,e=b.getSelectionState();a.style.paddingBottom="8px";var d=document.createElement("div");d.style.position="absolute";d.style.width="70px";d.style.marginTop="0px";d.style.fontWeight="bold";var f=null,h=null,k=null;!e.rotatable||e.table||e.row||e.cell?a.style.paddingTop="8px":(mxUtils.write(d,mxResources.get("angle")),a.appendChild(d),f=this.addUnitInput(a,"°",16,52,function(){h.apply(this,arguments)}),mxUtils.br(a),a.style.paddingTop=
+"10px");e.containsLabel||(d=mxResources.get("reverse"),0<e.vertices.length&&0<e.edges.length?d=mxResources.get("turn")+" / "+d:0<e.vertices.length&&(d=mxResources.get("turn")),k=mxUtils.button(d,function(a){b.actions.get("turn").funct(a)}),k.setAttribute("title",d+" ("+this.editorUi.actions.get("turn").shortcut+")"),k.style.width="210px",a.appendChild(k),null!=f&&(k.style.marginTop="8px"));if(null!=f){var g=mxUtils.bind(this,function(a,c,d){if(d||document.activeElement!=f)e=b.getSelectionState(),
+a=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0)),f.value=isNaN(a)?"":a+"°"}),h=this.installInputHandler(f,mxConstants.STYLE_ROTATION,0,0,360,"°",null,!0);this.addKeyHandler(f,g);c.getModel().addListener(mxEvent.CHANGE,g);this.listeners.push({destroy:function(){c.getModel().removeListener(g)}});g()}return a};
BaseFormatPanel.prototype.getUnit=function(){switch(this.editorUi.editor.graph.view.unit){case mxConstants.POINTS:return"pt";case mxConstants.INCHES:return'"';case mxConstants.MILLIMETERS:return"mm";case mxConstants.METERS:return"m"}};BaseFormatPanel.prototype.inUnit=function(a){return this.editorUi.editor.graph.view.formatUnitText(a)};
BaseFormatPanel.prototype.fromUnit=function(a){switch(this.editorUi.editor.graph.view.unit){case mxConstants.POINTS:return a;case mxConstants.INCHES:return a*mxConstants.PIXELS_PER_INCH;case mxConstants.MILLIMETERS:return a*mxConstants.PIXELS_PER_MM;case mxConstants.METERS:return a*mxConstants.PIXELS_PER_MM*1E3}};BaseFormatPanel.prototype.isFloatUnit=function(){return this.editorUi.editor.graph.view.unit!=mxConstants.POINTS};
BaseFormatPanel.prototype.getUnitStep=function(){switch(this.editorUi.editor.graph.view.unit){case mxConstants.POINTS:return 1;case mxConstants.INCHES:return.1;case mxConstants.MILLIMETERS:return.5;case mxConstants.METERS:return.001}};
-ArrangePanel.prototype.addGeometry=function(a){var b=this,c=this.editorUi,e=c.editor.graph,d=e.getModel(),f=this.format.getSelectionState(),k=this.createPanel();k.style.paddingBottom="8px";var h=document.createElement("div");h.style.position="absolute";h.style.width="50px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,mxResources.get("size"));k.appendChild(h);var g,m,l,n,p=this.addUnitInput(k,this.getUnit(),87,52,function(){g.apply(this,arguments)},this.getUnitStep(),null,null,
-this.isFloatUnit()),r=this.addUnitInput(k,this.getUnit(),16,52,function(){m.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),u=document.createElement("div");u.className="geSprite geSprite-fit";u.setAttribute("title",mxResources.get("autosize")+" ("+this.editorUi.actions.get("autosize").shortcut+")");u.style.position="relative";u.style.cursor="pointer";u.style.marginTop="-3px";u.style.border="0px";u.style.left="42px";mxUtils.setOpacity(u,50);mxEvent.addListener(u,"mouseenter",
-function(){mxUtils.setOpacity(u,100)});mxEvent.addListener(u,"mouseleave",function(){mxUtils.setOpacity(u,50)});mxEvent.addListener(u,"click",function(){c.actions.get("autosize").funct()});k.appendChild(u);f.row?(p.style.visibility="hidden",p.nextSibling.style.visibility="hidden"):this.addLabel(k,mxResources.get("width"),87);this.addLabel(k,mxResources.get("height"),16);mxUtils.br(k);h=document.createElement("div");h.style.paddingTop="8px";h.style.paddingRight="20px";h.style.whiteSpace="nowrap";h.style.textAlign=
-"right";var v=this.createCellOption(mxResources.get("constrainProportions"),mxConstants.STYLE_ASPECT,null,"fixed","null");v.style.width="210px";h.appendChild(v);f.cell||f.row?u.style.visibility="hidden":k.appendChild(h);var t=v.getElementsByTagName("input")[0];this.addKeyHandler(p,F);this.addKeyHandler(r,F);g=this.addGeometryHandler(p,function(a,c,d){if(e.isTableCell(d))return e.setTableColumnWidth(d,c-a.width,!0),!0;0<a.width&&(c=Math.max(1,b.fromUnit(c)),t.checked&&(a.height=Math.round(a.height*
-c*100/a.width)/100),a.width=c)});m=this.addGeometryHandler(r,function(a,c,d){e.isTableCell(d)&&(d=e.model.getParent(d));if(e.isTableRow(d))return e.setTableRowHeight(d,c-a.height),!0;0<a.height&&(c=Math.max(1,b.fromUnit(c)),t.checked&&(a.width=Math.round(a.width*c*100/a.height)/100),a.height=c)});(f.resizable||f.row||f.cell)&&a.appendChild(k);var x=this.createPanel();x.style.paddingBottom="30px";h=document.createElement("div");h.style.position="absolute";h.style.width="70px";h.style.marginTop="0px";
-h.style.fontWeight="bold";mxUtils.write(h,mxResources.get("position"));x.appendChild(h);var w=this.addUnitInput(x,this.getUnit(),87,52,function(){l.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),y=this.addUnitInput(x,this.getUnit(),16,52,function(){n.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit());mxUtils.br(x);this.addLabel(x,mxResources.get("left"),87);this.addLabel(x,mxResources.get("top"),16);var F=mxUtils.bind(this,function(a,b,c){f=this.format.getSelectionState();
-if(f.containsLabel||f.vertices.length!=e.getSelectionCount()||null==f.width||null==f.height)k.style.display="none";else{k.style.display="";if(c||document.activeElement!=p)p.value=this.inUnit(f.width)+(""==f.width?"":" "+this.getUnit());if(c||document.activeElement!=r)r.value=this.inUnit(f.height)+(""==f.height?"":" "+this.getUnit())}if(f.vertices.length==e.getSelectionCount()&&null!=f.x&&null!=f.y){x.style.display="";if(c||document.activeElement!=w)w.value=this.inUnit(f.x)+(""==f.x?"":" "+this.getUnit());
-if(c||document.activeElement!=y)y.value=this.inUnit(f.y)+(""==f.y?"":" "+this.getUnit())}else x.style.display="none"});this.addKeyHandler(w,F);this.addKeyHandler(y,F);d.addListener(mxEvent.CHANGE,F);this.listeners.push({destroy:function(){d.removeListener(F)}});F();l=this.addGeometryHandler(w,function(a,c){c=b.fromUnit(c);a.relative?a.offset.x=c:a.x=c});n=this.addGeometryHandler(y,function(a,c){c=b.fromUnit(c);a.relative?a.offset.y=c:a.y=c});if(f.movable){if(0==f.edges.length&&1==f.vertices.length&&
-d.isEdge(d.getParent(f.vertices[0]))){var I=e.getCellGeometry(f.vertices[0]);null!=I&&I.relative&&(h=mxUtils.button(mxResources.get("center"),mxUtils.bind(this,function(a){d.beginUpdate();try{I=I.clone(),I.x=0,I.y=0,I.offset=new mxPoint,d.setGeometry(f.vertices[0],I)}finally{d.endUpdate()}})),h.setAttribute("title",mxResources.get("center")),h.style.width="210px",h.style.position="absolute",mxUtils.br(x),mxUtils.br(x),x.appendChild(h))}a.appendChild(x)}};
-ArrangePanel.prototype.addGeometryHandler=function(a,b){function c(c){if(""!=a.value){var k=parseFloat(a.value);if(isNaN(k))a.value=d+" "+f.getUnit();else if(k!=d){e.getModel().beginUpdate();try{for(var g=f.format.getSelectionState().cells,m=0;m<g.length;m++)if(e.getModel().isVertex(g[m])){var l=e.getCellGeometry(g[m]);if(null!=l&&(l=l.clone(),!b(l,k,g[m]))){var n=e.view.getState(g[m]);null!=n&&e.isRecursiveVertexResize(n)&&e.resizeChildCells(g[m],l);e.getModel().setGeometry(g[m],l);e.constrainChildCells(g[m])}}}finally{e.getModel().endUpdate()}d=
-k;a.value=k+" "+f.getUnit()}}mxEvent.consume(c)}var e=this.editorUi.editor.graph,d=null,f=this;mxEvent.addListener(a,"blur",c);mxEvent.addListener(a,"change",c);mxEvent.addListener(a,"focus",function(){d=a.value});return c};
-ArrangePanel.prototype.addEdgeGeometryHandler=function(a,b){function c(c){if(""!=a.value){var k=parseFloat(a.value);if(isNaN(k))a.value=d+" pt";else if(k!=d){e.getModel().beginUpdate();try{for(var g=f.format.getSelectionState().cells,m=0;m<g.length;m++)if(e.getModel().isEdge(g[m])){var l=e.getCellGeometry(g[m]);null!=l&&(l=l.clone(),b(l,k),e.getModel().setGeometry(g[m],l))}}finally{e.getModel().endUpdate()}d=k;a.value=k+" pt"}}mxEvent.consume(c)}var e=this.editorUi.editor.graph,d=null,f=this;mxEvent.addListener(a,
-"blur",c);mxEvent.addListener(a,"change",c);mxEvent.addListener(a,"focus",function(){d=a.value});return c};
-ArrangePanel.prototype.addEdgeGeometry=function(a){var b=this.editorUi,c=b.editor.graph,e=this.format.getSelectionState(),d=this.createPanel(),f=document.createElement("div");f.style.position="absolute";f.style.width="70px";f.style.marginTop="0px";f.style.fontWeight="bold";mxUtils.write(f,mxResources.get("width"));d.appendChild(f);var k,h,g,m,l,n=this.addUnitInput(d,"pt",12,44,function(){k.apply(this,arguments)});mxUtils.br(d);this.addKeyHandler(n,w);k=mxUtils.bind(this,function(a){var d=parseInt(n.value),
-d=Math.min(999,Math.max(1,isNaN(d)?1:d));if(d!=mxUtils.getValue(e.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth)){var f=this.format.getSelectionState().cells;c.setCellStyles("width",d,f);b.fireEvent(new mxEventObject("styleChanged","keys",["width"],"values",[d],"cells",f))}n.value=d+" pt";mxEvent.consume(a)});mxEvent.addListener(n,"blur",k);mxEvent.addListener(n,"change",k);a.appendChild(d);var p=this.createPanel();p.style.paddingBottom="30px";f=document.createElement("div");
-f.style.position="absolute";f.style.width="70px";f.style.marginTop="0px";mxUtils.write(f,mxResources.get("linestart"));p.appendChild(f);var r=this.addUnitInput(p,"pt",87,52,function(){m.apply(this,arguments)}),u=this.addUnitInput(p,"pt",16,52,function(){l.apply(this,arguments)});mxUtils.br(p);this.addLabel(p,mxResources.get("left"),87);this.addLabel(p,mxResources.get("top"),16);a.appendChild(p);this.addKeyHandler(r,w);this.addKeyHandler(u,w);var v=this.createPanel();v.style.paddingBottom="30px";f=
-document.createElement("div");f.style.position="absolute";f.style.width="70px";f.style.marginTop="0px";mxUtils.write(f,mxResources.get("lineend"));v.appendChild(f);var t=this.addUnitInput(v,"pt",87,52,function(){h.apply(this,arguments)}),x=this.addUnitInput(v,"pt",16,52,function(){g.apply(this,arguments)});mxUtils.br(v);this.addLabel(v,mxResources.get("left"),87);this.addLabel(v,mxResources.get("top"),16);a.appendChild(v);this.addKeyHandler(t,w);this.addKeyHandler(x,w);var w=mxUtils.bind(this,function(a,
-b,f){e=this.format.getSelectionState();a=e.cells[0];if("link"==e.style.shape||"flexArrow"==e.style.shape){if(d.style.display="",f||document.activeElement!=n)f=mxUtils.getValue(e.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth),n.value=f+" pt"}else d.style.display="none";1==e.cells.length&&c.model.isEdge(a)?(f=c.model.getGeometry(a),null!=f.sourcePoint&&null==c.model.getTerminal(a,!0)?(r.value=f.sourcePoint.x,u.value=f.sourcePoint.y):p.style.display="none",null!=f.targetPoint&&
-null==c.model.getTerminal(a,!1)?(t.value=f.targetPoint.x,x.value=f.targetPoint.y):v.style.display="none"):(p.style.display="none",v.style.display="none")});m=this.addEdgeGeometryHandler(r,function(a,b){a.sourcePoint.x=b});l=this.addEdgeGeometryHandler(u,function(a,b){a.sourcePoint.y=b});h=this.addEdgeGeometryHandler(t,function(a,b){a.targetPoint.x=b});g=this.addEdgeGeometryHandler(x,function(a,b){a.targetPoint.y=b});c.getModel().addListener(mxEvent.CHANGE,w);this.listeners.push({destroy:function(){c.getModel().removeListener(w)}});
+ArrangePanel.prototype.addGeometry=function(a){var b=this,c=this.editorUi,e=c.editor.graph,d=e.getModel(),f=c.getSelectionState(),h=this.createPanel();h.style.paddingBottom="8px";var k=document.createElement("div");k.style.position="absolute";k.style.width="50px";k.style.marginTop="0px";k.style.fontWeight="bold";mxUtils.write(k,mxResources.get("size"));h.appendChild(k);var g,m,l,n,p=this.addUnitInput(h,this.getUnit(),87,52,function(){g.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),
+r=this.addUnitInput(h,this.getUnit(),16,52,function(){m.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),u=document.createElement("div");u.className="geSprite geSprite-fit";u.setAttribute("title",mxResources.get("autosize")+" ("+this.editorUi.actions.get("autosize").shortcut+")");u.style.position="relative";u.style.cursor="pointer";u.style.marginTop="-3px";u.style.border="0px";u.style.left="42px";mxUtils.setOpacity(u,50);mxEvent.addListener(u,"mouseenter",function(){mxUtils.setOpacity(u,
+100)});mxEvent.addListener(u,"mouseleave",function(){mxUtils.setOpacity(u,50)});mxEvent.addListener(u,"click",function(){c.actions.get("autosize").funct()});h.appendChild(u);f.row?(p.style.visibility="hidden",p.nextSibling.style.visibility="hidden"):this.addLabel(h,mxResources.get("width"),87);this.addLabel(h,mxResources.get("height"),16);mxUtils.br(h);k=document.createElement("div");k.style.paddingTop="8px";k.style.paddingRight="20px";k.style.whiteSpace="nowrap";k.style.textAlign="right";var v=this.createCellOption(mxResources.get("constrainProportions"),
+mxConstants.STYLE_ASPECT,null,"fixed","null");v.style.width="210px";k.appendChild(v);f.cell||f.row?u.style.visibility="hidden":h.appendChild(k);var t=v.getElementsByTagName("input")[0];this.addKeyHandler(p,F);this.addKeyHandler(r,F);g=this.addGeometryHandler(p,function(a,c,d){if(e.isTableCell(d))return e.setTableColumnWidth(d,c-a.width,!0),!0;0<a.width&&(c=Math.max(1,b.fromUnit(c)),t.checked&&(a.height=Math.round(a.height*c*100/a.width)/100),a.width=c)});m=this.addGeometryHandler(r,function(a,c,d){e.isTableCell(d)&&
+(d=e.model.getParent(d));if(e.isTableRow(d))return e.setTableRowHeight(d,c-a.height),!0;0<a.height&&(c=Math.max(1,b.fromUnit(c)),t.checked&&(a.width=Math.round(a.width*c*100/a.height)/100),a.height=c)});(f.resizable||f.row||f.cell)&&a.appendChild(h);var x=this.createPanel();x.style.paddingBottom="30px";k=document.createElement("div");k.style.position="absolute";k.style.width="70px";k.style.marginTop="0px";k.style.fontWeight="bold";mxUtils.write(k,mxResources.get("position"));x.appendChild(k);var w=
+this.addUnitInput(x,this.getUnit(),87,52,function(){l.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),y=this.addUnitInput(x,this.getUnit(),16,52,function(){n.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit());mxUtils.br(x);this.addLabel(x,mxResources.get("left"),87);this.addLabel(x,mxResources.get("top"),16);var F=mxUtils.bind(this,function(a,b,d){f=c.getSelectionState();if(f.containsLabel||f.vertices.length!=e.getSelectionCount()||null==f.width||null==
+f.height)h.style.display="none";else{h.style.display="";if(d||document.activeElement!=p)p.value=this.inUnit(f.width)+(""==f.width?"":" "+this.getUnit());if(d||document.activeElement!=r)r.value=this.inUnit(f.height)+(""==f.height?"":" "+this.getUnit())}if(f.vertices.length==e.getSelectionCount()&&null!=f.x&&null!=f.y){x.style.display="";if(d||document.activeElement!=w)w.value=this.inUnit(f.x)+(""==f.x?"":" "+this.getUnit());if(d||document.activeElement!=y)y.value=this.inUnit(f.y)+(""==f.y?"":" "+this.getUnit())}else x.style.display=
+"none"});this.addKeyHandler(w,F);this.addKeyHandler(y,F);d.addListener(mxEvent.CHANGE,F);this.listeners.push({destroy:function(){d.removeListener(F)}});F();l=this.addGeometryHandler(w,function(a,c){c=b.fromUnit(c);a.relative?a.offset.x=c:a.x=c});n=this.addGeometryHandler(y,function(a,c){c=b.fromUnit(c);a.relative?a.offset.y=c:a.y=c});if(f.movable){if(0==f.edges.length&&1==f.vertices.length&&d.isEdge(d.getParent(f.vertices[0]))){var I=e.getCellGeometry(f.vertices[0]);null!=I&&I.relative&&(k=mxUtils.button(mxResources.get("center"),
+mxUtils.bind(this,function(a){d.beginUpdate();try{I=I.clone(),I.x=0,I.y=0,I.offset=new mxPoint,d.setGeometry(f.vertices[0],I)}finally{d.endUpdate()}})),k.setAttribute("title",mxResources.get("center")),k.style.width="210px",k.style.position="absolute",mxUtils.br(x),mxUtils.br(x),x.appendChild(k))}a.appendChild(x)}};
+ArrangePanel.prototype.addGeometryHandler=function(a,b){function c(c){if(""!=a.value){var g=parseFloat(a.value);if(isNaN(g))a.value=f+" "+h.getUnit();else if(g!=f){d.getModel().beginUpdate();try{for(var k=e.getSelectionState().cells,l=0;l<k.length;l++)if(d.getModel().isVertex(k[l])){var n=d.getCellGeometry(k[l]);if(null!=n&&(n=n.clone(),!b(n,g,k[l]))){var p=d.view.getState(k[l]);null!=p&&d.isRecursiveVertexResize(p)&&d.resizeChildCells(k[l],n);d.getModel().setGeometry(k[l],n);d.constrainChildCells(k[l])}}}finally{d.getModel().endUpdate()}f=
+g;a.value=g+" "+h.getUnit()}}mxEvent.consume(c)}var e=this.editorUi,d=e.editor.graph,f=null,h=this;mxEvent.addListener(a,"blur",c);mxEvent.addListener(a,"change",c);mxEvent.addListener(a,"focus",function(){f=a.value});return c};
+ArrangePanel.prototype.addEdgeGeometryHandler=function(a,b){function c(c){if(""!=a.value){var k=parseFloat(a.value);if(isNaN(k))a.value=f+" pt";else if(k!=f){d.getModel().beginUpdate();try{for(var g=e.getSelectionState().cells,h=0;h<g.length;h++)if(d.getModel().isEdge(g[h])){var l=d.getCellGeometry(g[h]);null!=l&&(l=l.clone(),b(l,k),d.getModel().setGeometry(g[h],l))}}finally{d.getModel().endUpdate()}f=k;a.value=k+" pt"}}mxEvent.consume(c)}var e=this.editorUi,d=e.editor.graph,f=null;mxEvent.addListener(a,
+"blur",c);mxEvent.addListener(a,"change",c);mxEvent.addListener(a,"focus",function(){f=a.value});return c};
+ArrangePanel.prototype.addEdgeGeometry=function(a){var b=this.editorUi,c=b.editor.graph,e=b.getSelectionState(),d=this.createPanel(),f=document.createElement("div");f.style.position="absolute";f.style.width="70px";f.style.marginTop="0px";f.style.fontWeight="bold";mxUtils.write(f,mxResources.get("width"));d.appendChild(f);var h,k,g,m,l,n=this.addUnitInput(d,"pt",12,44,function(){h.apply(this,arguments)});mxUtils.br(d);this.addKeyHandler(n,w);h=mxUtils.bind(this,function(a){var d=parseInt(n.value),
+d=Math.min(999,Math.max(1,isNaN(d)?1:d));if(d!=mxUtils.getValue(e.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth)){var f=b.getSelectionState().cells;c.setCellStyles("width",d,f);b.fireEvent(new mxEventObject("styleChanged","keys",["width"],"values",[d],"cells",f))}n.value=d+" pt";mxEvent.consume(a)});mxEvent.addListener(n,"blur",h);mxEvent.addListener(n,"change",h);a.appendChild(d);var p=this.createPanel();p.style.paddingBottom="30px";f=document.createElement("div");f.style.position=
+"absolute";f.style.width="70px";f.style.marginTop="0px";mxUtils.write(f,mxResources.get("linestart"));p.appendChild(f);var r=this.addUnitInput(p,"pt",87,52,function(){m.apply(this,arguments)}),u=this.addUnitInput(p,"pt",16,52,function(){l.apply(this,arguments)});mxUtils.br(p);this.addLabel(p,mxResources.get("left"),87);this.addLabel(p,mxResources.get("top"),16);a.appendChild(p);this.addKeyHandler(r,w);this.addKeyHandler(u,w);var v=this.createPanel();v.style.paddingBottom="30px";f=document.createElement("div");
+f.style.position="absolute";f.style.width="70px";f.style.marginTop="0px";mxUtils.write(f,mxResources.get("lineend"));v.appendChild(f);var t=this.addUnitInput(v,"pt",87,52,function(){k.apply(this,arguments)}),x=this.addUnitInput(v,"pt",16,52,function(){g.apply(this,arguments)});mxUtils.br(v);this.addLabel(v,mxResources.get("left"),87);this.addLabel(v,mxResources.get("top"),16);a.appendChild(v);this.addKeyHandler(t,w);this.addKeyHandler(x,w);var w=mxUtils.bind(this,function(a,f,g){e=b.getSelectionState();
+a=e.cells[0];if("link"==e.style.shape||"flexArrow"==e.style.shape){if(d.style.display="",g||document.activeElement!=n)g=mxUtils.getValue(e.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth),n.value=g+" pt"}else d.style.display="none";1==e.cells.length&&c.model.isEdge(a)?(g=c.model.getGeometry(a),null!=g.sourcePoint&&null==c.model.getTerminal(a,!0)?(r.value=g.sourcePoint.x,u.value=g.sourcePoint.y):p.style.display="none",null!=g.targetPoint&&null==c.model.getTerminal(a,!1)?
+(t.value=g.targetPoint.x,x.value=g.targetPoint.y):v.style.display="none"):(p.style.display="none",v.style.display="none")});m=this.addEdgeGeometryHandler(r,function(a,b){a.sourcePoint.x=b});l=this.addEdgeGeometryHandler(u,function(a,b){a.sourcePoint.y=b});k=this.addEdgeGeometryHandler(t,function(a,b){a.targetPoint.x=b});g=this.addEdgeGeometryHandler(x,function(a,b){a.targetPoint.y=b});c.getModel().addListener(mxEvent.CHANGE,w);this.listeners.push({destroy:function(){c.getModel().removeListener(w)}});
w()};TextFormatPanel=function(a,b,c){BaseFormatPanel.call(this,a,b,c);this.init()};mxUtils.extend(TextFormatPanel,BaseFormatPanel);TextFormatPanel.prototype.init=function(){this.container.style.borderBottom="none";this.addFont(this.container)};
-TextFormatPanel.prototype.addFont=function(a){function b(a,b){a.style.backgroundImage=b?Editor.isDarkMode()?"linear-gradient(rgb(0 161 241) 0px, rgb(0, 97, 146) 100%)":"linear-gradient(#c5ecff 0px,#87d4fb 100%)":""}var c=this.editorUi,e=c.editor.graph,d=this.format.getSelectionState(),f=this.createTitle(mxResources.get("font"));f.style.paddingLeft="14px";f.style.paddingTop="10px";f.style.paddingBottom="6px";a.appendChild(f);f=this.createPanel();f.style.paddingTop="2px";f.style.paddingBottom="2px";
-f.style.position="relative";f.style.marginLeft="-2px";f.style.borderWidth="0px";f.className="geToolbarContainer";if(e.cellEditor.isContentEditing()){var k=f.cloneNode(),h=this.editorUi.toolbar.addMenu(mxResources.get("style"),mxResources.get("style"),!0,"formatBlock",k,null,!0);h.style.color="rgb(112, 112, 112)";h.style.whiteSpace="nowrap";h.style.overflow="hidden";h.style.margin="0px";this.addArrow(h);h.style.width="200px";h.style.height="15px";h=h.getElementsByTagName("div")[0];h.style.cssFloat=
-"right";a.appendChild(k)}a.appendChild(f);k=this.createPanel();k.style.marginTop="8px";k.style.borderTop="1px solid #c0c0c0";k.style.paddingTop="6px";k.style.paddingBottom="6px";var g=this.editorUi.toolbar.addMenu("Helvetica",mxResources.get("fontFamily"),!0,"fontFamily",f,null,!0);g.style.color="rgb(112, 112, 112)";g.style.whiteSpace="nowrap";g.style.overflow="hidden";g.style.margin="0px";this.addArrow(g);g.style.width="200px";g.style.height="15px";h=f.cloneNode(!1);h.style.marginLeft="-3px";var m=
-this.editorUi.toolbar.addItems(["bold","italic","underline"],h,!0);m[0].setAttribute("title",mxResources.get("bold")+" ("+this.editorUi.actions.get("bold").shortcut+")");m[1].setAttribute("title",mxResources.get("italic")+" ("+this.editorUi.actions.get("italic").shortcut+")");m[2].setAttribute("title",mxResources.get("underline")+" ("+this.editorUi.actions.get("underline").shortcut+")");var l=this.editorUi.toolbar.addItems(["vertical"],h,!0)[0];a.appendChild(h);this.styleButtons(m);this.styleButtons([l]);
-var n=f.cloneNode(!1);n.style.marginLeft="-3px";n.style.paddingBottom="0px";var p=function(a){return function(){return a()}},r=this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),e.cellEditor.isContentEditing()?function(a){e.cellEditor.alignText(mxConstants.ALIGN_LEFT,a);c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_LEFT],"cells",d.cells))}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT])),
-n),u=this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),e.cellEditor.isContentEditing()?function(a){e.cellEditor.alignText(mxConstants.ALIGN_CENTER,a);c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_CENTER],"cells",d.cells))}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),n),v=this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),e.cellEditor.isContentEditing()?
-function(a){e.cellEditor.alignText(mxConstants.ALIGN_RIGHT,a);c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_RIGHT],"cells",d.cells))}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),n);this.styleButtons([r,u,v]);if(e.cellEditor.isContentEditing()){var t=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",
-!1,null)},h);this.styleButtons([t]);t.firstChild.style.background="url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)";
+TextFormatPanel.prototype.addFont=function(a){function b(a,b){a.style.backgroundImage=b?Editor.isDarkMode()?"linear-gradient(rgb(0 161 241) 0px, rgb(0, 97, 146) 100%)":"linear-gradient(#c5ecff 0px,#87d4fb 100%)":""}var c=this.editorUi,e=c.editor.graph,d=c.getSelectionState(),f=this.createTitle(mxResources.get("font"));f.style.paddingLeft="14px";f.style.paddingTop="10px";f.style.paddingBottom="6px";a.appendChild(f);f=this.createPanel();f.style.paddingTop="2px";f.style.paddingBottom="2px";f.style.position=
+"relative";f.style.marginLeft="-2px";f.style.borderWidth="0px";f.className="geToolbarContainer";if(e.cellEditor.isContentEditing()){var h=f.cloneNode(),k=this.editorUi.toolbar.addMenu(mxResources.get("style"),mxResources.get("style"),!0,"formatBlock",h,null,!0);k.style.color="rgb(112, 112, 112)";k.style.whiteSpace="nowrap";k.style.overflow="hidden";k.style.margin="0px";this.addArrow(k);k.style.width="200px";k.style.height="15px";k=k.getElementsByTagName("div")[0];k.style.cssFloat="right";a.appendChild(h)}a.appendChild(f);
+h=this.createPanel();h.style.marginTop="8px";h.style.borderTop="1px solid #c0c0c0";h.style.paddingTop="6px";h.style.paddingBottom="6px";var g=this.editorUi.toolbar.addMenu("Helvetica",mxResources.get("fontFamily"),!0,"fontFamily",f,null,!0);g.style.color="rgb(112, 112, 112)";g.style.whiteSpace="nowrap";g.style.overflow="hidden";g.style.margin="0px";this.addArrow(g);g.style.width="200px";g.style.height="15px";k=f.cloneNode(!1);k.style.marginLeft="-3px";var m=this.editorUi.toolbar.addItems(["bold",
+"italic","underline"],k,!0);m[0].setAttribute("title",mxResources.get("bold")+" ("+this.editorUi.actions.get("bold").shortcut+")");m[1].setAttribute("title",mxResources.get("italic")+" ("+this.editorUi.actions.get("italic").shortcut+")");m[2].setAttribute("title",mxResources.get("underline")+" ("+this.editorUi.actions.get("underline").shortcut+")");var l=this.editorUi.toolbar.addItems(["vertical"],k,!0)[0];a.appendChild(k);this.styleButtons(m);this.styleButtons([l]);var n=f.cloneNode(!1);n.style.marginLeft=
+"-3px";n.style.paddingBottom="0px";var p=function(a){return function(){return a()}},r=this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),e.cellEditor.isContentEditing()?function(a){e.cellEditor.alignText(mxConstants.ALIGN_LEFT,a);c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_LEFT],"cells",d.cells))}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT])),n),u=this.editorUi.toolbar.addButton("geSprite-center",
+mxResources.get("center"),e.cellEditor.isContentEditing()?function(a){e.cellEditor.alignText(mxConstants.ALIGN_CENTER,a);c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_CENTER],"cells",d.cells))}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),n),v=this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),e.cellEditor.isContentEditing()?function(a){e.cellEditor.alignText(mxConstants.ALIGN_RIGHT,
+a);c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_RIGHT],"cells",d.cells))}:p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),n);this.styleButtons([r,u,v]);if(e.cellEditor.isContentEditing()){var t=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},k);this.styleButtons([t]);t.firstChild.style.background=
+"url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)";
t.firstChild.style.backgroundPosition="2px 2px";t.firstChild.style.backgroundSize="18px 18px";this.styleButtons([t])}var x=this.editorUi.toolbar.addButton("geSprite-top",mxResources.get("top"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP])),n),w=this.editorUi.toolbar.addButton("geSprite-middle",mxResources.get("middle"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE])),n),y=this.editorUi.toolbar.addButton("geSprite-bottom",
-mxResources.get("bottom"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),n);this.styleButtons([x,w,y]);a.appendChild(n);var F,I,A,G,z,D,K;e.cellEditor.isContentEditing()?(x.style.display="none",w.style.display="none",y.style.display="none",l.style.display="none",A=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){1==A.style.opacity&&document.execCommand("justifyfull",!1,null)},n),A.style.marginRight=
-"9px",A.style.opacity=1,this.styleButtons([A,F=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},n),I=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},n)]),F.style.marginLeft="10px",p=n.cloneNode(!1),p.style.paddingTop="4px",n=[this.editorUi.toolbar.addButton("geSprite-orderedlist",
+mxResources.get("bottom"),p(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),n);this.styleButtons([x,w,y]);a.appendChild(n);var F,I,B,G,z,D,K;e.cellEditor.isContentEditing()?(x.style.display="none",w.style.display="none",y.style.display="none",l.style.display="none",B=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){1==B.style.opacity&&document.execCommand("justifyfull",!1,null)},n),B.style.marginRight=
+"9px",B.style.opacity=1,this.styleButtons([B,F=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},n),I=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},n)]),F.style.marginLeft="10px",p=n.cloneNode(!1),p.style.paddingTop="4px",n=[this.editorUi.toolbar.addButton("geSprite-orderedlist",
mxResources.get("numberedList"),function(){document.execCommand("insertorderedlist",!1,null)},p),this.editorUi.toolbar.addButton("geSprite-unorderedlist",mxResources.get("bulletedList"),function(){document.execCommand("insertunorderedlist",!1,null)},p),this.editorUi.toolbar.addButton("geSprite-outdent",mxResources.get("decreaseIndent"),function(){document.execCommand("outdent",!1,null)},p),this.editorUi.toolbar.addButton("geSprite-indent",mxResources.get("increaseIndent"),function(){document.execCommand("indent",
!1,null)},p),this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("removeFormat"),function(){document.execCommand("removeformat",!1,null)},p),this.editorUi.toolbar.addButton("geSprite-code",mxResources.get("html"),function(){e.cellEditor.toggleViewMode()},p)],this.styleButtons(n),n[n.length-2].style.marginLeft="10px",a.appendChild(p)):(m[2].style.marginRight="12px",v.style.marginRight="12px");n=f.cloneNode(!1);n.style.marginLeft="0px";n.style.paddingTop="8px";n.style.paddingBottom=
"4px";n.style.fontWeight="normal";mxUtils.write(n,mxResources.get("position"));var L=document.createElement("select");L.style.position="absolute";L.style.left="126px";L.style.width="98px";L.style.border="1px solid rgb(160, 160, 160)";L.style.borderRadius="4px";L.style.marginTop="-2px";for(var t="topLeft top topRight left center right bottomLeft bottom bottomRight".split(" "),N={topLeft:[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_TOP,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_BOTTOM],top:[mxConstants.ALIGN_CENTER,
mxConstants.ALIGN_TOP,mxConstants.ALIGN_CENTER,mxConstants.ALIGN_BOTTOM],topRight:[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_TOP,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM],left:[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_MIDDLE],center:[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_CENTER,mxConstants.ALIGN_MIDDLE],right:[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_MIDDLE],bottomLeft:[mxConstants.ALIGN_LEFT,
mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_TOP],bottom:[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_CENTER,mxConstants.ALIGN_TOP],bottomRight:[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_TOP]},p=0;p<t.length;p++){var J=document.createElement("option");J.setAttribute("value",t[p]);mxUtils.write(J,mxResources.get(t[p]));L.appendChild(J)}n.appendChild(L);t=f.cloneNode(!1);t.style.marginLeft="0px";t.style.paddingTop=
-"4px";t.style.paddingBottom="4px";t.style.fontWeight="normal";mxUtils.write(t,mxResources.get("writingDirection"));var Q=document.createElement("select");Q.style.position="absolute";Q.style.border="1px solid rgb(160, 160, 160)";Q.style.left="126px";Q.style.width="98px";Q.style.borderRadius="4px";Q.style.marginTop="-2px";for(var J=["automatic","leftToRight","rightToLeft"],X={automatic:null,leftToRight:mxConstants.TEXT_DIRECTION_LTR,rightToLeft:mxConstants.TEXT_DIRECTION_RTL},p=0;p<J.length;p++){var ba=
-document.createElement("option");ba.setAttribute("value",J[p]);mxUtils.write(ba,mxResources.get(J[p]));Q.appendChild(ba)}t.appendChild(Q);e.isEditing()||(a.appendChild(n),mxEvent.addListener(L,"change",function(a){e.getModel().beginUpdate();try{var b=N[L.value];null!=b&&(e.setCellStyles(mxConstants.STYLE_LABEL_POSITION,b[0],d.cells),e.setCellStyles(mxConstants.STYLE_VERTICAL_LABEL_POSITION,b[1],d.cells),e.setCellStyles(mxConstants.STYLE_ALIGN,b[2],d.cells),e.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,
-b[3],d.cells))}finally{e.getModel().endUpdate()}mxEvent.consume(a)}),a.appendChild(t),mxEvent.addListener(Q,"change",function(a){e.setCellStyles(mxConstants.STYLE_TEXT_DIRECTION,X[Q.value],d.cells);mxEvent.consume(a)}));var O=document.createElement("input");O.style.position="absolute";O.style.border="1px solid rgb(160, 160, 160)";O.style.textAlign="right";O.style.marginTop="4px";O.style.left="161px";O.style.width="53px";O.style.borderRadius="4px";O.style.height="23px";O.style.boxSizing="border-box";
-h.appendChild(O);var R=null,n=this.installInputHandler(O,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize,1,999," pt",function(a){if(window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11){var b=function(b,g){null!=e.cellEditor.textarea&&b!=e.cellEditor.textarea&&e.cellEditor.textarea.contains(b)&&(g||f.containsNode(b,!0))&&("FONT"==b.nodeName?(b.removeAttribute("size"),b.style.fontSize=a+"px"):mxUtils.getCurrentStyle(b).fontSize!=a+"px"&&(mxUtils.getCurrentStyle(b.parentNode).fontSize!=
+"4px";t.style.paddingBottom="4px";t.style.fontWeight="normal";mxUtils.write(t,mxResources.get("writingDirection"));var Q=document.createElement("select");Q.style.position="absolute";Q.style.border="1px solid rgb(160, 160, 160)";Q.style.left="126px";Q.style.width="98px";Q.style.borderRadius="4px";Q.style.marginTop="-2px";for(var J=["automatic","leftToRight","rightToLeft"],Y={automatic:null,leftToRight:mxConstants.TEXT_DIRECTION_LTR,rightToLeft:mxConstants.TEXT_DIRECTION_RTL},p=0;p<J.length;p++){var ca=
+document.createElement("option");ca.setAttribute("value",J[p]);mxUtils.write(ca,mxResources.get(J[p]));Q.appendChild(ca)}t.appendChild(Q);e.isEditing()||(a.appendChild(n),mxEvent.addListener(L,"change",function(a){e.getModel().beginUpdate();try{var b=N[L.value];null!=b&&(e.setCellStyles(mxConstants.STYLE_LABEL_POSITION,b[0],d.cells),e.setCellStyles(mxConstants.STYLE_VERTICAL_LABEL_POSITION,b[1],d.cells),e.setCellStyles(mxConstants.STYLE_ALIGN,b[2],d.cells),e.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,
+b[3],d.cells))}finally{e.getModel().endUpdate()}mxEvent.consume(a)}),a.appendChild(t),mxEvent.addListener(Q,"change",function(a){e.setCellStyles(mxConstants.STYLE_TEXT_DIRECTION,Y[Q.value],d.cells);mxEvent.consume(a)}));var O=document.createElement("input");O.style.position="absolute";O.style.border="1px solid rgb(160, 160, 160)";O.style.textAlign="right";O.style.marginTop="4px";O.style.left="161px";O.style.width="53px";O.style.borderRadius="4px";O.style.height="23px";O.style.boxSizing="border-box";
+k.appendChild(O);var R=null,n=this.installInputHandler(O,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize,1,999," pt",function(a){if(window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11){var b=function(b,g){null!=e.cellEditor.textarea&&b!=e.cellEditor.textarea&&e.cellEditor.textarea.contains(b)&&(g||f.containsNode(b,!0))&&("FONT"==b.nodeName?(b.removeAttribute("size"),b.style.fontSize=a+"px"):mxUtils.getCurrentStyle(b).fontSize!=a+"px"&&(mxUtils.getCurrentStyle(b.parentNode).fontSize!=
a+"px"?b.style.fontSize=a+"px":b.style.fontSize=""));c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],"values",[a],"cells",d.cells))},f=window.getSelection(),g=0<f.rangeCount?f.getRangeAt(0).commonAncestorContainer:e.cellEditor.textarea;g!=e.cellEditor.textarea&&g.nodeType==mxConstants.NODETYPE_ELEMENT||document.execCommand("fontSize",!1,"1");g!=e.cellEditor.textarea&&(g=g.parentNode);if(null!=g&&g.nodeType==mxConstants.NODETYPE_ELEMENT){var k=g.getElementsByTagName("*");
b(g);for(g=0;g<k.length;g++)b(k[g])}O.value=a+" pt"}else if(window.getSelection||document.selection)if(b=function(a,b){for(;null!=b;){if(b===a)return!0;b=b.parentNode}return!1},k=null,document.selection?k=document.selection.createRange().parentElement():(f=window.getSelection(),0<f.rangeCount&&(k=f.getRangeAt(0).commonAncestorContainer)),null!=k&&b(e.cellEditor.textarea,k))for(R=a,document.execCommand("fontSize",!1,"4"),k=e.cellEditor.textarea.getElementsByTagName("font"),g=0;g<k.length;g++)if("4"==
-k[g].getAttribute("size")){k[g].removeAttribute("size");k[g].style.fontSize=R+"px";window.setTimeout(function(){O.value=R+" pt";R=null},0);break}},!0),n=this.createStepper(O,n,1,10,!0,Menus.prototype.defaultFontSize);n.style.display=O.style.display;n.style.marginTop="4px";n.style.left="214px";h.appendChild(n);h=g.getElementsByTagName("div")[0];h.style.cssFloat="right";var T=null,U=e.shapeBackgroundColor,W=null,ka=e.shapeForegroundColor,ma=e.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("backgroundColor"),
+k[g].getAttribute("size")){k[g].removeAttribute("size");k[g].style.fontSize=R+"px";window.setTimeout(function(){O.value=R+" pt";R=null},0);break}},!0),n=this.createStepper(O,n,1,10,!0,Menus.prototype.defaultFontSize);n.style.display=O.style.display;n.style.marginTop="4px";n.style.left="214px";k.appendChild(n);k=g.getElementsByTagName("div")[0];k.style.cssFloat="right";var T=null,U=e.shapeBackgroundColor,X=null,ka=e.shapeForegroundColor,ma=e.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("backgroundColor"),
function(){return U},function(a){document.execCommand("backcolor",!1,a!=mxConstants.NONE?a:"transparent");c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],"values",[a],"cells",d.cells))},e.shapeBackgroundColor,{install:function(a){T=a},destroy:function(){T=null}},null,!0):this.createCellColorOption(mxResources.get("backgroundColor"),mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"default",null,function(a){e.updateLabelElements(d.cells,function(a){a.style.backgroundColor=
-null})},e.shapeBackgroundColor);ma.style.fontWeight="bold";var oa=this.createCellColorOption(mxResources.get("borderColor"),mxConstants.STYLE_LABEL_BORDERCOLOR,"default",null,null,e.shapeForegroundColor);oa.style.fontWeight="bold";h=1<=d.vertices.length?e.stylesheet.getDefaultVertexStyle():e.stylesheet.getDefaultEdgeStyle();h=e.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("fontColor"),function(){return ka},function(a){if(mxClient.IS_FF){for(var b=e.cellEditor.textarea.getElementsByTagName("font"),
+null})},e.shapeBackgroundColor);ma.style.fontWeight="bold";var oa=this.createCellColorOption(mxResources.get("borderColor"),mxConstants.STYLE_LABEL_BORDERCOLOR,"default",null,null,e.shapeForegroundColor);oa.style.fontWeight="bold";k=1<=d.vertices.length?e.stylesheet.getDefaultVertexStyle():e.stylesheet.getDefaultEdgeStyle();k=e.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("fontColor"),function(){return ka},function(a){if(mxClient.IS_FF){for(var b=e.cellEditor.textarea.getElementsByTagName("font"),
f=[],g=0;g<b.length;g++)f.push({node:b[g],color:b[g].getAttribute("color")});document.execCommand("forecolor",!1,a!=mxConstants.NONE?a:"transparent");c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTCOLOR],"values",[a],"cells",d.cells));a=e.cellEditor.textarea.getElementsByTagName("font");for(g=0;g<a.length;g++)if(g>=f.length||a[g]!=f[g].node||a[g]==f[g].node&&a[g].getAttribute("color")!=f[g].color){f=a[g].firstChild;if(null!=f&&"A"==f.nodeName&&null==f.nextSibling&&null!=
-f.firstChild){a[g].parentNode.insertBefore(f,a[g]);for(b=f.firstChild;null!=b;){var k=b.nextSibling;a[g].appendChild(b);b=k}f.appendChild(a[g])}break}}else document.execCommand("forecolor",!1,a!=mxConstants.NONE?a:"transparent"),c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTCOLOR],"values",[a],"cells",d.cells))},null!=h[mxConstants.STYLE_FONTCOLOR]?h[mxConstants.STYLE_FONTCOLOR]:e.shapeForegroundColor,{install:function(a){W=a},destroy:function(){W=null}},null,!0):this.createCellColorOption(mxResources.get("fontColor"),
-mxConstants.STYLE_FONTCOLOR,"default",function(a){ma.style.display=a==mxConstants.NONE?"none":"";oa.style.display=ma.style.display},function(a){a==mxConstants.NONE?e.setCellStyles(mxConstants.STYLE_NOLABEL,"1",d.cells):e.setCellStyles(mxConstants.STYLE_NOLABEL,null,d.cells);e.setCellStyles(mxConstants.STYLE_FONTCOLOR,a,d.cells);e.updateLabelElements(d.cells,function(a){a.removeAttribute("color");a.style.color=null})},e.shapeForegroundColor);h.style.fontWeight="bold";k.appendChild(h);k.appendChild(ma);
-e.cellEditor.isContentEditing()||k.appendChild(oa);a.appendChild(k);k=this.createPanel();k.style.paddingTop="2px";k.style.paddingBottom="4px";h=e.filterSelectionCells(mxUtils.bind(this,function(a){var b=e.view.getState(a);return null==b||this.format.isAutoSizeState(b)||e.getModel().isEdge(a)||!e.isTableRow(a)&&!e.isTableCell(a)&&!e.isCellResizable(a)}));n=this.createCellOption(mxResources.get("wordWrap"),mxConstants.STYLE_WHITE_SPACE,null,"wrap","null",null,null,!0,h);n.style.fontWeight="bold";0<
-h.length&&k.appendChild(n);h=this.createCellOption(mxResources.get("formattedText"),"html",0,null,null,null,c.actions.get("formattedText"));h.style.fontWeight="bold";k.appendChild(h);h=this.createPanel();h.style.paddingTop="10px";h.style.paddingBottom="28px";h.style.fontWeight="normal";n=document.createElement("div");n.style.position="absolute";n.style.width="70px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("spacing"));h.appendChild(n);var pa,ga,na,ua,qa,ra=
-this.addUnitInput(h,"pt",87,52,function(){pa.apply(this,arguments)}),la=this.addUnitInput(h,"pt",16,52,function(){ga.apply(this,arguments)});mxUtils.br(h);this.addLabel(h,mxResources.get("top"),87);this.addLabel(h,mxResources.get("global"),16);mxUtils.br(h);mxUtils.br(h);var ia=this.addUnitInput(h,"pt",158,52,function(){na.apply(this,arguments)}),ja=this.addUnitInput(h,"pt",87,52,function(){ua.apply(this,arguments)}),da=this.addUnitInput(h,"pt",16,52,function(){qa.apply(this,arguments)});mxUtils.br(h);
-this.addLabel(h,mxResources.get("left"),158);this.addLabel(h,mxResources.get("bottom"),87);this.addLabel(h,mxResources.get("right"),16);if(e.cellEditor.isContentEditing()){var fa=null,sa=null;a.appendChild(this.createRelativeOption(mxResources.get("lineheight"),null,null,function(a){var b=""==a.value?120:parseInt(a.value),b=Math.max(0,isNaN(b)?120:b);null!=fa&&(e.cellEditor.restoreSelection(fa),fa=null);for(var c=e.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;
-null!=c&&c==e.cellEditor.textarea&&null!=e.cellEditor.textarea.firstChild&&("P"!=e.cellEditor.textarea.firstChild.nodeName&&(e.cellEditor.textarea.innerHTML="<p>"+e.cellEditor.textarea.innerHTML+"</p>"),c=e.cellEditor.textarea.firstChild);null!=c&&null!=e.cellEditor.textarea&&c!=e.cellEditor.textarea&&e.cellEditor.textarea.contains(c)&&(c.style.lineHeight=b/100);a.value=b+" %"},function(a){sa=a;mxEvent.addListener(a,"mousedown",function(){document.activeElement==e.cellEditor.textarea&&(fa=e.cellEditor.saveSelection())});
-mxEvent.addListener(a,"touchstart",function(){document.activeElement==e.cellEditor.textarea&&(fa=e.cellEditor.saveSelection())});a.value="120 %"}));k=f.cloneNode(!1);k.style.paddingLeft="0px";h=this.editorUi.toolbar.addItems(["link","image"],k,!0);n=[this.editorUi.toolbar.addButton("geSprite-horizontalrule",mxResources.get("insertHorizontalRule"),function(){document.execCommand("inserthorizontalrule",!1)},k),this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-table",mxResources.get("table"),
-!1,mxUtils.bind(this,function(a){this.editorUi.menus.addInsertTableItem(a,null,null,!1)}))];this.styleButtons(h);this.styleButtons(n);h=this.createPanel();h.style.paddingTop="10px";h.style.paddingBottom="10px";h.appendChild(this.createTitle(mxResources.get("insert")));h.appendChild(k);a.appendChild(h);h=f.cloneNode(!1);h.style.paddingLeft="0px";n=[this.editorUi.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{null!=z&&e.insertColumn(z,
-null!=D?D.cellIndex:0)}catch(aa){this.editorUi.handleError(aa)}}),h),this.editorUi.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{null!=z&&e.insertColumn(z,null!=D?D.cellIndex+1:-1)}catch(aa){this.editorUi.handleError(aa)}}),h),this.editorUi.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{null!=z&&null!=D&&e.deleteColumn(z,D.cellIndex)}catch(aa){this.editorUi.handleError(aa)}}),
-h),this.editorUi.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,function(){try{null!=z&&null!=K&&e.insertRow(z,K.sectionRowIndex)}catch(aa){this.editorUi.handleError(aa)}}),h),this.editorUi.toolbar.addButton("geSprite-insertrowafter",mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{null!=z&&null!=K&&e.insertRow(z,K.sectionRowIndex+1)}catch(aa){this.editorUi.handleError(aa)}}),h),this.editorUi.toolbar.addButton("geSprite-deleterow",
-mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{null!=z&&null!=K&&e.deleteRow(z,K.sectionRowIndex)}catch(aa){this.editorUi.handleError(aa)}}),h)];this.styleButtons(n);n[2].style.marginRight="10px";k=this.createPanel();k.style.paddingTop="10px";k.style.paddingBottom="10px";k.appendChild(this.createTitle(mxResources.get("table")));k.appendChild(h);f=f.cloneNode(!1);f.style.paddingLeft="0px";n=[this.editorUi.toolbar.addButton("geSprite-strokecolor",mxResources.get("borderColor"),mxUtils.bind(this,
+f.firstChild){a[g].parentNode.insertBefore(f,a[g]);for(b=f.firstChild;null!=b;){var k=b.nextSibling;a[g].appendChild(b);b=k}f.appendChild(a[g])}break}}else document.execCommand("forecolor",!1,a!=mxConstants.NONE?a:"transparent"),c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTCOLOR],"values",[a],"cells",d.cells))},null!=k[mxConstants.STYLE_FONTCOLOR]?k[mxConstants.STYLE_FONTCOLOR]:e.shapeForegroundColor,{install:function(a){X=a},destroy:function(){X=null}},null,!0):this.createCellColorOption(mxResources.get("fontColor"),
+mxConstants.STYLE_FONTCOLOR,"default",function(a){ma.style.display=a==mxConstants.NONE?"none":"";oa.style.display=ma.style.display},function(a){a==mxConstants.NONE?e.setCellStyles(mxConstants.STYLE_NOLABEL,"1",d.cells):e.setCellStyles(mxConstants.STYLE_NOLABEL,null,d.cells);e.setCellStyles(mxConstants.STYLE_FONTCOLOR,a,d.cells);e.updateLabelElements(d.cells,function(a){a.removeAttribute("color");a.style.color=null})},e.shapeForegroundColor);k.style.fontWeight="bold";h.appendChild(k);h.appendChild(ma);
+e.cellEditor.isContentEditing()||h.appendChild(oa);a.appendChild(h);h=this.createPanel();h.style.paddingTop="2px";h.style.paddingBottom="4px";k=e.filterSelectionCells(mxUtils.bind(this,function(a){var b=e.view.getState(a);return null==b||e.isAutoSizeState(b)||e.getModel().isEdge(a)||!e.isTableRow(a)&&!e.isTableCell(a)&&!e.isCellResizable(a)}));n=this.createCellOption(mxResources.get("wordWrap"),mxConstants.STYLE_WHITE_SPACE,null,"wrap","null",null,null,!0,k);n.style.fontWeight="bold";0<k.length&&
+h.appendChild(n);k=this.createCellOption(mxResources.get("formattedText"),"html",0,null,null,null,c.actions.get("formattedText"));k.style.fontWeight="bold";h.appendChild(k);k=this.createPanel();k.style.paddingTop="10px";k.style.paddingBottom="28px";k.style.fontWeight="normal";n=document.createElement("div");n.style.position="absolute";n.style.width="70px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("spacing"));k.appendChild(n);var pa,ga,na,ua,qa,ra=this.addUnitInput(k,
+"pt",87,52,function(){pa.apply(this,arguments)}),la=this.addUnitInput(k,"pt",16,52,function(){ga.apply(this,arguments)});mxUtils.br(k);this.addLabel(k,mxResources.get("top"),87);this.addLabel(k,mxResources.get("global"),16);mxUtils.br(k);mxUtils.br(k);var ia=this.addUnitInput(k,"pt",158,52,function(){na.apply(this,arguments)}),ja=this.addUnitInput(k,"pt",87,52,function(){ua.apply(this,arguments)}),ea=this.addUnitInput(k,"pt",16,52,function(){qa.apply(this,arguments)});mxUtils.br(k);this.addLabel(k,
+mxResources.get("left"),158);this.addLabel(k,mxResources.get("bottom"),87);this.addLabel(k,mxResources.get("right"),16);if(e.cellEditor.isContentEditing()){var fa=null,sa=null;a.appendChild(this.createRelativeOption(mxResources.get("lineheight"),null,null,function(a){var b=""==a.value?120:parseInt(a.value),b=Math.max(0,isNaN(b)?120:b);null!=fa&&(e.cellEditor.restoreSelection(fa),fa=null);for(var c=e.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;null!=c&&c==
+e.cellEditor.textarea&&null!=e.cellEditor.textarea.firstChild&&("P"!=e.cellEditor.textarea.firstChild.nodeName&&(e.cellEditor.textarea.innerHTML="<p>"+e.cellEditor.textarea.innerHTML+"</p>"),c=e.cellEditor.textarea.firstChild);null!=c&&null!=e.cellEditor.textarea&&c!=e.cellEditor.textarea&&e.cellEditor.textarea.contains(c)&&(c.style.lineHeight=b/100);a.value=b+" %"},function(a){sa=a;mxEvent.addListener(a,"mousedown",function(){document.activeElement==e.cellEditor.textarea&&(fa=e.cellEditor.saveSelection())});
+mxEvent.addListener(a,"touchstart",function(){document.activeElement==e.cellEditor.textarea&&(fa=e.cellEditor.saveSelection())});a.value="120 %"}));h=f.cloneNode(!1);h.style.paddingLeft="0px";k=this.editorUi.toolbar.addItems(["link","image"],h,!0);n=[this.editorUi.toolbar.addButton("geSprite-horizontalrule",mxResources.get("insertHorizontalRule"),function(){document.execCommand("inserthorizontalrule",!1)},h),this.editorUi.toolbar.addMenuFunctionInContainer(h,"geSprite-table",mxResources.get("table"),
+!1,mxUtils.bind(this,function(a){this.editorUi.menus.addInsertTableItem(a,null,null,!1)}))];this.styleButtons(k);this.styleButtons(n);k=this.createPanel();k.style.paddingTop="10px";k.style.paddingBottom="10px";k.appendChild(this.createTitle(mxResources.get("insert")));k.appendChild(h);a.appendChild(k);k=f.cloneNode(!1);k.style.paddingLeft="0px";n=[this.editorUi.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{null!=z&&e.insertColumn(z,
+null!=D?D.cellIndex:0)}catch(ba){this.editorUi.handleError(ba)}}),k),this.editorUi.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{null!=z&&e.insertColumn(z,null!=D?D.cellIndex+1:-1)}catch(ba){this.editorUi.handleError(ba)}}),k),this.editorUi.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{null!=z&&null!=D&&e.deleteColumn(z,D.cellIndex)}catch(ba){this.editorUi.handleError(ba)}}),
+k),this.editorUi.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,function(){try{null!=z&&null!=K&&e.insertRow(z,K.sectionRowIndex)}catch(ba){this.editorUi.handleError(ba)}}),k),this.editorUi.toolbar.addButton("geSprite-insertrowafter",mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{null!=z&&null!=K&&e.insertRow(z,K.sectionRowIndex+1)}catch(ba){this.editorUi.handleError(ba)}}),k),this.editorUi.toolbar.addButton("geSprite-deleterow",
+mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{null!=z&&null!=K&&e.deleteRow(z,K.sectionRowIndex)}catch(ba){this.editorUi.handleError(ba)}}),k)];this.styleButtons(n);n[2].style.marginRight="10px";h=this.createPanel();h.style.paddingTop="10px";h.style.paddingBottom="10px";h.appendChild(this.createTitle(mxResources.get("table")));h.appendChild(k);f=f.cloneNode(!1);f.style.paddingLeft="0px";n=[this.editorUi.toolbar.addButton("geSprite-strokecolor",mxResources.get("borderColor"),mxUtils.bind(this,
function(a){if(null!=z){var b=z.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(b,function(b){var c=null==D||null!=a&&mxEvent.isShiftDown(a)?z:D;e.processElements(c,function(a){a.style.border=null});null==b||b==mxConstants.NONE?(c.removeAttribute("border"),c.style.border="",c.style.borderCollapse=
""):(c.setAttribute("border","1"),c.style.border="1px solid "+b,c.style.borderCollapse="collapse")})}}),f),this.editorUi.toolbar.addButton("geSprite-fillcolor",mxResources.get("backgroundColor"),mxUtils.bind(this,function(a){if(null!=z){var b=z.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(b,
function(b){var c=null==D||null!=a&&mxEvent.isShiftDown(a)?z:D;e.processElements(c,function(a){a.style.backgroundColor=null});c.style.backgroundColor=null==b||b==mxConstants.NONE?"":b})}}),f),this.editorUi.toolbar.addButton("geSprite-fit",mxResources.get("spacing"),function(){if(null!=z){var a=z.getAttribute("cellPadding")||0,a=new FilenameDialog(c,a,mxResources.get("apply"),mxUtils.bind(this,function(a){null!=a&&0<a.length?z.setAttribute("cellPadding",a):z.removeAttribute("cellPadding")}),mxResources.get("spacing"));
-c.showDialog(a.container,300,80,!0,!0);a.init()}},f),this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),function(){null!=z&&z.setAttribute("align","left")},f),this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),function(){null!=z&&z.setAttribute("align","center")},f),this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),function(){null!=z&&z.setAttribute("align","right")},f)];this.styleButtons(n);n[2].style.marginRight="10px";k.appendChild(f);
-a.appendChild(k);G=k}else a.appendChild(k),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(h);var Y=mxUtils.bind(this,function(a,c,e){d=this.format.getSelectionState();a=mxUtils.getValue(d.style,mxConstants.STYLE_FONTSTYLE,0);b(m[0],(a&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);b(m[1],(a&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC);b(m[2],(a&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);g.firstChild.nodeValue=mxUtils.getValue(d.style,
-mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont);b(l,"0"==mxUtils.getValue(d.style,mxConstants.STYLE_HORIZONTAL,"1"));if(e||document.activeElement!=O)a=parseFloat(mxUtils.getValue(d.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),O.value=isNaN(a)?"":a+" pt";a=mxUtils.getValue(d.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);b(r,a==mxConstants.ALIGN_LEFT);b(u,a==mxConstants.ALIGN_CENTER);b(v,a==mxConstants.ALIGN_RIGHT);a=mxUtils.getValue(d.style,mxConstants.STYLE_VERTICAL_ALIGN,
-mxConstants.ALIGN_MIDDLE);b(x,a==mxConstants.ALIGN_TOP);b(w,a==mxConstants.ALIGN_MIDDLE);b(y,a==mxConstants.ALIGN_BOTTOM);a=mxUtils.getValue(d.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);c=mxUtils.getValue(d.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);L.value=a==mxConstants.ALIGN_LEFT&&c==mxConstants.ALIGN_TOP?"topLeft":a==mxConstants.ALIGN_CENTER&&c==mxConstants.ALIGN_TOP?"top":a==mxConstants.ALIGN_RIGHT&&c==mxConstants.ALIGN_TOP?"topRight":a==mxConstants.ALIGN_LEFT&&
-c==mxConstants.ALIGN_BOTTOM?"bottomLeft":a==mxConstants.ALIGN_CENTER&&c==mxConstants.ALIGN_BOTTOM?"bottom":a==mxConstants.ALIGN_RIGHT&&c==mxConstants.ALIGN_BOTTOM?"bottomRight":a==mxConstants.ALIGN_LEFT?"left":a==mxConstants.ALIGN_RIGHT?"right":"center";a=mxUtils.getValue(d.style,mxConstants.STYLE_TEXT_DIRECTION,mxConstants.DEFAULT_TEXT_DIRECTION);a==mxConstants.TEXT_DIRECTION_RTL?Q.value="rightToLeft":a==mxConstants.TEXT_DIRECTION_LTR?Q.value="leftToRight":a==mxConstants.TEXT_DIRECTION_AUTO&&(Q.value=
-"automatic");if(e||document.activeElement!=la)a=parseFloat(mxUtils.getValue(d.style,mxConstants.STYLE_SPACING,2)),la.value=isNaN(a)?"":a+" pt";if(e||document.activeElement!=ra)a=parseFloat(mxUtils.getValue(d.style,mxConstants.STYLE_SPACING_TOP,0)),ra.value=isNaN(a)?"":a+" pt";if(e||document.activeElement!=da)a=parseFloat(mxUtils.getValue(d.style,mxConstants.STYLE_SPACING_RIGHT,0)),da.value=isNaN(a)?"":a+" pt";if(e||document.activeElement!=ja)a=parseFloat(mxUtils.getValue(d.style,mxConstants.STYLE_SPACING_BOTTOM,
-0)),ja.value=isNaN(a)?"":a+" pt";if(e||document.activeElement!=ia)a=parseFloat(mxUtils.getValue(d.style,mxConstants.STYLE_SPACING_LEFT,0)),ia.value=isNaN(a)?"":a+" pt"});ga=this.installInputHandler(la,mxConstants.STYLE_SPACING,2,-999,999," pt");pa=this.installInputHandler(ra,mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");qa=this.installInputHandler(da,mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");ua=this.installInputHandler(ja,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");na=this.installInputHandler(ia,
-mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(O,Y);this.addKeyHandler(la,Y);this.addKeyHandler(ra,Y);this.addKeyHandler(da,Y);this.addKeyHandler(ja,Y);this.addKeyHandler(ia,Y);e.getModel().addListener(mxEvent.CHANGE,Y);this.listeners.push({destroy:function(){e.getModel().removeListener(Y)}});Y();if(e.cellEditor.isContentEditing()){var Z=!1,f=function(){Z||(Z=!0,window.setTimeout(function(){var a=e.getSelectedEditingElement();if(null!=a){var c=function(a,b){if(null!=a&&null!=
+c.showDialog(a.container,300,80,!0,!0);a.init()}},f),this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),function(){null!=z&&z.setAttribute("align","left")},f),this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),function(){null!=z&&z.setAttribute("align","center")},f),this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),function(){null!=z&&z.setAttribute("align","right")},f)];this.styleButtons(n);n[2].style.marginRight="10px";h.appendChild(f);
+a.appendChild(h);G=h}else a.appendChild(h),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(k);var Z=mxUtils.bind(this,function(a,e,f){d=c.getSelectionState();a=mxUtils.getValue(d.style,mxConstants.STYLE_FONTSTYLE,0);b(m[0],(a&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);b(m[1],(a&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC);b(m[2],(a&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);g.firstChild.nodeValue=mxUtils.getValue(d.style,
+mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont);b(l,"0"==mxUtils.getValue(d.style,mxConstants.STYLE_HORIZONTAL,"1"));if(f||document.activeElement!=O)a=parseFloat(mxUtils.getValue(d.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),O.value=isNaN(a)?"":a+" pt";a=mxUtils.getValue(d.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);b(r,a==mxConstants.ALIGN_LEFT);b(u,a==mxConstants.ALIGN_CENTER);b(v,a==mxConstants.ALIGN_RIGHT);a=mxUtils.getValue(d.style,mxConstants.STYLE_VERTICAL_ALIGN,
+mxConstants.ALIGN_MIDDLE);b(x,a==mxConstants.ALIGN_TOP);b(w,a==mxConstants.ALIGN_MIDDLE);b(y,a==mxConstants.ALIGN_BOTTOM);a=mxUtils.getValue(d.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);e=mxUtils.getValue(d.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);L.value=a==mxConstants.ALIGN_LEFT&&e==mxConstants.ALIGN_TOP?"topLeft":a==mxConstants.ALIGN_CENTER&&e==mxConstants.ALIGN_TOP?"top":a==mxConstants.ALIGN_RIGHT&&e==mxConstants.ALIGN_TOP?"topRight":a==mxConstants.ALIGN_LEFT&&
+e==mxConstants.ALIGN_BOTTOM?"bottomLeft":a==mxConstants.ALIGN_CENTER&&e==mxConstants.ALIGN_BOTTOM?"bottom":a==mxConstants.ALIGN_RIGHT&&e==mxConstants.ALIGN_BOTTOM?"bottomRight":a==mxConstants.ALIGN_LEFT?"left":a==mxConstants.ALIGN_RIGHT?"right":"center";a=mxUtils.getValue(d.style,mxConstants.STYLE_TEXT_DIRECTION,mxConstants.DEFAULT_TEXT_DIRECTION);a==mxConstants.TEXT_DIRECTION_RTL?Q.value="rightToLeft":a==mxConstants.TEXT_DIRECTION_LTR?Q.value="leftToRight":a==mxConstants.TEXT_DIRECTION_AUTO&&(Q.value=
+"automatic");if(f||document.activeElement!=la)a=parseFloat(mxUtils.getValue(d.style,mxConstants.STYLE_SPACING,2)),la.value=isNaN(a)?"":a+" pt";if(f||document.activeElement!=ra)a=parseFloat(mxUtils.getValue(d.style,mxConstants.STYLE_SPACING_TOP,0)),ra.value=isNaN(a)?"":a+" pt";if(f||document.activeElement!=ea)a=parseFloat(mxUtils.getValue(d.style,mxConstants.STYLE_SPACING_RIGHT,0)),ea.value=isNaN(a)?"":a+" pt";if(f||document.activeElement!=ja)a=parseFloat(mxUtils.getValue(d.style,mxConstants.STYLE_SPACING_BOTTOM,
+0)),ja.value=isNaN(a)?"":a+" pt";if(f||document.activeElement!=ia)a=parseFloat(mxUtils.getValue(d.style,mxConstants.STYLE_SPACING_LEFT,0)),ia.value=isNaN(a)?"":a+" pt"});ga=this.installInputHandler(la,mxConstants.STYLE_SPACING,2,-999,999," pt");pa=this.installInputHandler(ra,mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");qa=this.installInputHandler(ea,mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");ua=this.installInputHandler(ja,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");na=this.installInputHandler(ia,
+mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(O,Z);this.addKeyHandler(la,Z);this.addKeyHandler(ra,Z);this.addKeyHandler(ea,Z);this.addKeyHandler(ja,Z);this.addKeyHandler(ia,Z);e.getModel().addListener(mxEvent.CHANGE,Z);this.listeners.push({destroy:function(){e.getModel().removeListener(Z)}});Z();if(e.cellEditor.isContentEditing()){var aa=!1,f=function(){aa||(aa=!0,window.setTimeout(function(){var a=e.getSelectedEditingElement();if(null!=a){var c=function(a,b){if(null!=a&&null!=
b){if(a==b)return!0;if(a.length>b.length+1)return a.substring(a.length-b.length-1,a.length)=="-"+b}return!1},f=function(b){if(null!=e.getParentByName(a,b,e.cellEditor.textarea))return!0;for(var c=a;null!=c&&1==c.childNodes.length;)if(c=c.childNodes[0],c.nodeName==b)return!0;return!1},k=function(a){a=null!=a?a.fontSize:null;return null!=a&&"px"==a.substring(a.length-2)?parseFloat(a):mxConstants.DEFAULT_FONTSIZE},h=function(a,b,c){return null!=c.style&&null!=b?(b=b.lineHeight,null!=c.style.lineHeight&&
"%"==c.style.lineHeight.substring(c.style.lineHeight.length-1)?parseInt(c.style.lineHeight)/100:"px"==b.substring(b.length-2)?parseFloat(b)/a:parseInt(b)):""},l=mxUtils.getCurrentStyle(a),n=k(l),p=h(n,l,a),t=a.getElementsByTagName("*");if(0<t.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var x=window.getSelection(),w=0;w<t.length;w++)if(x.containsNode(t[w],!0)){temp=mxUtils.getCurrentStyle(t[w]);var n=Math.max(k(temp),n),y=h(n,temp,t[w]);if(y!=p||isNaN(y))p=""}null!=l&&(b(m[0],
-"bold"==l.fontWeight||400<l.fontWeight||f("B")||f("STRONG")),b(m[1],"italic"==l.fontStyle||f("I")||f("EM")),b(m[2],f("U")),b(I,f("SUP")),b(F,f("SUB")),e.cellEditor.isTableSelected()?(b(A,c(l.textAlign,"justify")),b(r,c(l.textAlign,"left")),b(u,c(l.textAlign,"center")),b(v,c(l.textAlign,"right"))):(f=e.cellEditor.align||mxUtils.getValue(d.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),c(l.textAlign,"justify")?(b(A,c(l.textAlign,"justify")),b(r,!1),b(u,!1),b(v,!1)):(b(A,!1),b(r,f==mxConstants.ALIGN_LEFT),
+"bold"==l.fontWeight||400<l.fontWeight||f("B")||f("STRONG")),b(m[1],"italic"==l.fontStyle||f("I")||f("EM")),b(m[2],f("U")),b(I,f("SUP")),b(F,f("SUB")),e.cellEditor.isTableSelected()?(b(B,c(l.textAlign,"justify")),b(r,c(l.textAlign,"left")),b(u,c(l.textAlign,"center")),b(v,c(l.textAlign,"right"))):(f=e.cellEditor.align||mxUtils.getValue(d.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),c(l.textAlign,"justify")?(b(B,c(l.textAlign,"justify")),b(r,!1),b(u,!1),b(v,!1)):(b(B,!1),b(r,f==mxConstants.ALIGN_LEFT),
b(u,f==mxConstants.ALIGN_CENTER),b(v,f==mxConstants.ALIGN_RIGHT))),z=e.getParentByName(a,"TABLE",e.cellEditor.textarea),K=null==z?null:e.getParentByName(a,"TR",z),D=null==z?null:e.getParentByNames(a,["TD","TH"],z),G.style.display=null!=z?"":"none",document.activeElement!=O&&("FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=R?(a.removeAttribute("size"),a.style.fontSize=R+" pt",R=null):O.value=isNaN(n)?"":n+" pt",y=parseFloat(p),isNaN(y)?sa.value="100 %":sa.value=Math.round(100*y)+" %"),null!=
-W&&(ka="rgba(0, 0, 0, 0)"==l.color||"transparent"==l.color?mxConstants.NONE:mxUtils.rgba2hex(l.color),W(ka,!0)),null!=T&&(U="rgba(0, 0, 0, 0)"==l.backgroundColor||"transparent"==l.backgroundColor?mxConstants.NONE:mxUtils.rgba2hex(l.backgroundColor),T(U,!0)),null!=g.firstChild&&(g.firstChild.nodeValue=Graph.stripQuotes(l.fontFamily)))}Z=!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(e.cellEditor.textarea,"DOMSubtreeModified",f);mxEvent.addListener(e.cellEditor.textarea,
+X&&(ka="rgba(0, 0, 0, 0)"==l.color||"transparent"==l.color?mxConstants.NONE:mxUtils.rgba2hex(l.color),X(ka,!0)),null!=T&&(U="rgba(0, 0, 0, 0)"==l.backgroundColor||"transparent"==l.backgroundColor?mxConstants.NONE:mxUtils.rgba2hex(l.backgroundColor),T(U,!0)),null!=g.firstChild&&(g.firstChild.nodeValue=Graph.stripQuotes(l.fontFamily)))}aa=!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(e.cellEditor.textarea,"DOMSubtreeModified",f);mxEvent.addListener(e.cellEditor.textarea,
"input",f);mxEvent.addListener(e.cellEditor.textarea,"touchend",f);mxEvent.addListener(e.cellEditor.textarea,"mouseup",f);mxEvent.addListener(e.cellEditor.textarea,"keyup",f);this.listeners.push({destroy:function(){}});f()}return a};StyleFormatPanel=function(a,b,c){BaseFormatPanel.call(this,a,b,c);this.init()};mxUtils.extend(StyleFormatPanel,BaseFormatPanel);StyleFormatPanel.prototype.defaultStrokeColor="black";
-StyleFormatPanel.prototype.init=function(){var a=this.format.getSelectionState();!a.containsLabel&&0<a.cells.length&&(a.containsImage&&1==a.vertices.length&&"image"==a.style.shape&&null!=a.style.image&&"data:image/svg+xml;"==a.style.image.substring(0,19)&&this.container.appendChild(this.addSvgStyles(this.createPanel())),a.containsImage&&"image"!=a.style.shape||this.container.appendChild(this.addFill(this.createPanel())),this.container.appendChild(this.addStroke(this.createPanel())),this.container.appendChild(this.addLineJumps(this.createPanel())),
+StyleFormatPanel.prototype.init=function(){var a=this.editorUi.getSelectionState();!a.containsLabel&&0<a.cells.length&&(a.containsImage&&1==a.vertices.length&&"image"==a.style.shape&&null!=a.style.image&&"data:image/svg+xml;"==a.style.image.substring(0,19)&&this.container.appendChild(this.addSvgStyles(this.createPanel())),a.containsImage&&"image"!=a.style.shape||this.container.appendChild(this.addFill(this.createPanel())),this.container.appendChild(this.addStroke(this.createPanel())),this.container.appendChild(this.addLineJumps(this.createPanel())),
a=this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_OPACITY),a.style.paddingTop="8px",a.style.paddingBottom="8px",this.container.appendChild(a),this.container.appendChild(this.addEffects(this.createPanel())));a=this.addEditOps(this.createPanel());null!=a.firstChild&&mxUtils.br(a);this.container.appendChild(this.addStyleOps(a))};
StyleFormatPanel.prototype.getCssRules=function(a){var b=document.implementation.createHTMLDocument(""),c=document.createElement("style");mxUtils.setTextContent(c,a);b.body.appendChild(c);return c.sheet.cssRules};
-StyleFormatPanel.prototype.addSvgStyles=function(a){var b=this.format.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";a.style.fontWeight="bold";a.style.display="none";try{var c=b.style.editableCssRules;if(null!=c){var e=new RegExp(c),d=b.style.image.substring(b.style.image.indexOf(",")+1),f=window.atob?atob(d):Base64.decode(d,!0),k=mxUtils.parseXml(f);if(null!=k)for(var h=k.getElementsByTagName("style"),b=0;b<h.length;b++)for(var g=this.getCssRules(mxUtils.getTextContent(h[b])),
-c=0;c<g.length;c++)this.addSvgRule(a,g[c],k,h[b],g,c,e)}}catch(m){}return a};
-StyleFormatPanel.prototype.addSvgRule=function(a,b,c,e,d,f,k){var h=this.editorUi.editor.graph;k.test(b.selectorText)&&(k=mxUtils.bind(this,function(b,k,l){var g=mxUtils.trim(b.style[k]);""!=g&&"url("!=g.substring(0,4)&&(b=this.createColorOption(l+" "+b.selectorText,function(){var a=g;return(a=a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===a.length?"#"+("0"+parseInt(a[1],10).toString(16)).slice(-2)+("0"+parseInt(a[2],10).toString(16)).slice(-2)+("0"+parseInt(a[3],
-10).toString(16)).slice(-2):""},mxUtils.bind(this,function(a){d[f].style[k]=a;a="";for(var b=0;b<d.length;b++)a+=d[b].cssText+" ";e.textContent=a;a=mxUtils.getXml(c.documentElement);h.setCellStyles(mxConstants.STYLE_IMAGE,"data:image/svg+xml,"+(window.btoa?btoa(a):Base64.encode(a,!0)),this.format.getSelectionState().cells)}),"#ffffff",{install:function(a){},destroy:function(){}}),a.appendChild(b),a.style.display="")}),k(b,"fill",mxResources.get("fill")),k(b,"stroke",mxResources.get("line")),k(b,"stop-color",
+StyleFormatPanel.prototype.addSvgStyles=function(a){var b=this.editorUi.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";a.style.fontWeight="bold";a.style.display="none";try{var c=b.style.editableCssRules;if(null!=c){var e=new RegExp(c),d=b.style.image.substring(b.style.image.indexOf(",")+1),f=window.atob?atob(d):Base64.decode(d,!0),h=mxUtils.parseXml(f);if(null!=h)for(var k=h.getElementsByTagName("style"),b=0;b<k.length;b++)for(var g=this.getCssRules(mxUtils.getTextContent(k[b])),
+c=0;c<g.length;c++)this.addSvgRule(a,g[c],h,k[b],g,c,e)}}catch(m){}return a};
+StyleFormatPanel.prototype.addSvgRule=function(a,b,c,e,d,f,h){var k=this.editorUi,g=k.editor.graph;h.test(b.selectorText)&&(h=mxUtils.bind(this,function(b,h,n){var m=mxUtils.trim(b.style[h]);""!=m&&"url("!=m.substring(0,4)&&(b=this.createColorOption(n+" "+b.selectorText,function(){var a=m;return(a=a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===a.length?"#"+("0"+parseInt(a[1],10).toString(16)).slice(-2)+("0"+parseInt(a[2],10).toString(16)).slice(-2)+("0"+parseInt(a[3],
+10).toString(16)).slice(-2):""},mxUtils.bind(this,function(a){d[f].style[h]=a;a="";for(var b=0;b<d.length;b++)a+=d[b].cssText+" ";e.textContent=a;a=mxUtils.getXml(c.documentElement);g.setCellStyles(mxConstants.STYLE_IMAGE,"data:image/svg+xml,"+(window.btoa?btoa(a):Base64.encode(a,!0)),k.getSelectionState().cells)}),"#ffffff",{install:function(a){},destroy:function(){}}),a.appendChild(b),a.style.display="")}),h(b,"fill",mxResources.get("fill")),h(b,"stroke",mxResources.get("line")),h(b,"stop-color",
mxResources.get("gradient")))};
-StyleFormatPanel.prototype.addEditOps=function(a){var b=this.format.getSelectionState(),c=null;1==b.cells.length&&(c=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),c.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),c.style.width="210px",c.style.marginBottom="2px",a.appendChild(c));b.image&&0<b.cells.length&&(b=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,
+StyleFormatPanel.prototype.addEditOps=function(a){var b=this.editorUi.getSelectionState(),c=null;1==b.cells.length&&(c=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),c.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),c.style.width="210px",c.style.marginBottom="2px",a.appendChild(c));b.image&&0<b.cells.length&&(b=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,
function(a){this.editorUi.actions.get("image").funct()})),b.setAttribute("title",mxResources.get("editImage")),b.style.marginBottom="2px",null==c?b.style.width="210px":(c.style.width="104px",b.style.width="104px",b.style.marginLeft="2px"),a.appendChild(b));return a};
-StyleFormatPanel.prototype.addFill=function(a){var b=this.editorUi,c=b.editor.graph,e=this.format.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";var d=document.createElement("select");d.style.position="absolute";d.style.left="104px";d.style.width="70px";d.style.height="22px";d.style.padding="0px";d.style.marginTop="-3px";d.style.borderRadius="4px";d.style.border="1px solid rgb(160, 160, 160)";d.style.boxSizing="border-box";var f=d.cloneNode(!1);mxEvent.addListener(d,"click",
-function(a){mxEvent.consume(a)});mxEvent.addListener(f,"click",function(a){mxEvent.consume(a)});var k=1<=e.vertices.length?c.stylesheet.getDefaultVertexStyle():c.stylesheet.getDefaultEdgeStyle(),h=this.createCellColorOption(mxResources.get("gradient"),mxConstants.STYLE_GRADIENTCOLOR,null!=k[mxConstants.STYLE_GRADIENTCOLOR]?k[mxConstants.STYLE_GRADIENTCOLOR]:"#ffffff",function(a){d.style.display=null==a||a==mxConstants.NONE?"none":""},function(a){c.updateCellStyles({gradientColor:a},c.getSelectionCells())}),
-g="image"==e.style.shape?mxConstants.STYLE_IMAGE_BACKGROUND:mxConstants.STYLE_FILLCOLOR,k="image"==e.style.shape?mxResources.get("background"):mxResources.get("fill"),k=this.createCellColorOption(k,g,"default",null,mxUtils.bind(this,function(a){c.setCellStyles(g,a,e.cells)}),c.shapeBackgroundColor);k.style.fontWeight="bold";var m=mxUtils.getValue(e.style,g,null);h.style.display=null!=m&&m!=mxConstants.NONE&&e.fill&&"image"!=e.style.shape?"":"none";for(var l=[mxConstants.DIRECTION_NORTH,mxConstants.DIRECTION_EAST,
-mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_RADIAL],m=0;m<l.length;m++){var n=document.createElement("option");n.setAttribute("value",l[m]);mxUtils.write(n,mxResources.get(l[m]));d.appendChild(n)}h.appendChild(d);for(m=0;m<Editor.roughFillStyles.length;m++)l=document.createElement("option"),l.setAttribute("value",Editor.roughFillStyles[m].val),mxUtils.write(l,Editor.roughFillStyles[m].dispName),f.appendChild(l);k.appendChild(f);var p=mxUtils.bind(this,function(){e=
-this.format.getSelectionState();var b=mxUtils.getValue(e.style,mxConstants.STYLE_GRADIENT_DIRECTION,mxConstants.DIRECTION_SOUTH),c=mxUtils.getValue(e.style,"fillStyle","auto");""==b&&(b=mxConstants.DIRECTION_SOUTH);d.value=b;f.value=c;a.style.display=e.fill?"":"none";b=mxUtils.getValue(e.style,mxConstants.STYLE_FILLCOLOR,null);!e.fill||e.containsImage||null==b||b==mxConstants.NONE||"filledEdge"==e.style.shape?(f.style.display="none",h.style.display="none"):(f.style.display="1"==e.style.sketch?"":
-"none",h.style.display="1"!=e.style.sketch||"solid"==c||"auto"==c?"":"none")});c.getModel().addListener(mxEvent.CHANGE,p);this.listeners.push({destroy:function(){c.getModel().removeListener(p)}});p();mxEvent.addListener(d,"change",function(a){c.setCellStyles(mxConstants.STYLE_GRADIENT_DIRECTION,d.value,e.cells);b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_GRADIENT_DIRECTION],"values",[d.value],"cells",e.cells));mxEvent.consume(a)});mxEvent.addListener(f,"change",function(a){c.setCellStyles("fillStyle",
-f.value,e.cells);b.fireEvent(new mxEventObject("styleChanged","keys",["fillStyle"],"values",[f.value],"cells",e.cells));mxEvent.consume(a)});a.appendChild(k);a.appendChild(h);k=this.getCustomColors();for(m=0;m<k.length;m++)a.appendChild(this.createCellColorOption(k[m].title,k[m].key,k[m].defaultValue));return a};
-StyleFormatPanel.prototype.getCustomColors=function(){var a=this.format.getSelectionState(),b=[];"swimlane"!=a.style.shape&&"table"!=a.style.shape||b.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return b};
+StyleFormatPanel.prototype.addFill=function(a){var b=this.editorUi,c=b.editor.graph,e=b.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";var d=document.createElement("select");d.style.position="absolute";d.style.left="104px";d.style.width="70px";d.style.height="22px";d.style.padding="0px";d.style.marginTop="-3px";d.style.borderRadius="4px";d.style.border="1px solid rgb(160, 160, 160)";d.style.boxSizing="border-box";var f=d.cloneNode(!1);mxEvent.addListener(d,"click",function(a){mxEvent.consume(a)});
+mxEvent.addListener(f,"click",function(a){mxEvent.consume(a)});var h=1<=e.vertices.length?c.stylesheet.getDefaultVertexStyle():c.stylesheet.getDefaultEdgeStyle(),k=this.createCellColorOption(mxResources.get("gradient"),mxConstants.STYLE_GRADIENTCOLOR,null!=h[mxConstants.STYLE_GRADIENTCOLOR]?h[mxConstants.STYLE_GRADIENTCOLOR]:"#ffffff",function(a){d.style.display=null==a||a==mxConstants.NONE?"none":""},function(a){c.updateCellStyles({gradientColor:a},c.getSelectionCells())}),g="image"==e.style.shape?
+mxConstants.STYLE_IMAGE_BACKGROUND:mxConstants.STYLE_FILLCOLOR,h="image"==e.style.shape?mxResources.get("background"):mxResources.get("fill"),h=this.createCellColorOption(h,g,"default",null,mxUtils.bind(this,function(a){c.setCellStyles(g,a,e.cells)}),c.shapeBackgroundColor);h.style.fontWeight="bold";var m=mxUtils.getValue(e.style,g,null);k.style.display=null!=m&&m!=mxConstants.NONE&&e.fill&&"image"!=e.style.shape?"":"none";for(var l=[mxConstants.DIRECTION_NORTH,mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,
+mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_RADIAL],m=0;m<l.length;m++){var n=document.createElement("option");n.setAttribute("value",l[m]);mxUtils.write(n,mxResources.get(l[m]));d.appendChild(n)}k.appendChild(d);for(m=0;m<Editor.roughFillStyles.length;m++)l=document.createElement("option"),l.setAttribute("value",Editor.roughFillStyles[m].val),mxUtils.write(l,Editor.roughFillStyles[m].dispName),f.appendChild(l);h.appendChild(f);var p=mxUtils.bind(this,function(){e=b.getSelectionState();var c=
+mxUtils.getValue(e.style,mxConstants.STYLE_GRADIENT_DIRECTION,mxConstants.DIRECTION_SOUTH),g=mxUtils.getValue(e.style,"fillStyle","auto");""==c&&(c=mxConstants.DIRECTION_SOUTH);d.value=c;f.value=g;a.style.display=e.fill?"":"none";c=mxUtils.getValue(e.style,mxConstants.STYLE_FILLCOLOR,null);!e.fill||e.containsImage||null==c||c==mxConstants.NONE||"filledEdge"==e.style.shape?(f.style.display="none",k.style.display="none"):(f.style.display="1"==e.style.sketch?"":"none",k.style.display="1"!=e.style.sketch||
+"solid"==g||"auto"==g?"":"none")});c.getModel().addListener(mxEvent.CHANGE,p);this.listeners.push({destroy:function(){c.getModel().removeListener(p)}});p();mxEvent.addListener(d,"change",function(a){c.setCellStyles(mxConstants.STYLE_GRADIENT_DIRECTION,d.value,e.cells);b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_GRADIENT_DIRECTION],"values",[d.value],"cells",e.cells));mxEvent.consume(a)});mxEvent.addListener(f,"change",function(a){c.setCellStyles("fillStyle",f.value,e.cells);
+b.fireEvent(new mxEventObject("styleChanged","keys",["fillStyle"],"values",[f.value],"cells",e.cells));mxEvent.consume(a)});a.appendChild(h);a.appendChild(k);h=this.getCustomColors();for(m=0;m<h.length;m++)a.appendChild(this.createCellColorOption(h[m].title,h[m].key,h[m].defaultValue));return a};
+StyleFormatPanel.prototype.getCustomColors=function(){var a=this.editorUi.getSelectionState(),b=[];"swimlane"!=a.style.shape&&"table"!=a.style.shape||b.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return b};
StyleFormatPanel.prototype.addStroke=function(a){function b(a){var b=parseFloat(t.value),b=Math.min(999,Math.max(0,isNaN(b)?1:b));b!=mxUtils.getValue(f.style,mxConstants.STYLE_STROKEWIDTH,1)&&(d.setCellStyles(mxConstants.STYLE_STROKEWIDTH,b,f.cells),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[b],"cells",f.cells)));t.value=b+" pt";mxEvent.consume(a)}function c(a){var b=parseFloat(x.value),b=Math.min(999,Math.max(0,isNaN(b)?1:b));b!=mxUtils.getValue(f.style,
-mxConstants.STYLE_STROKEWIDTH,1)&&(d.setCellStyles(mxConstants.STYLE_STROKEWIDTH,b,f.cells),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[b],"cells",f.cells)));x.value=b+" pt";mxEvent.consume(a)}var e=this.editorUi,d=e.editor.graph,f=this.format.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="4px";a.style.whiteSpace="normal";var k=document.createElement("div");k.style.fontWeight="bold";f.stroke||(k.style.display="none");var h=document.createElement("select");
-h.style.position="absolute";h.style.height="22px";h.style.padding="0px";h.style.marginTop="-3px";h.style.boxSizing="border-box";h.style.left="94px";h.style.width="80px";h.style.border="1px solid rgb(160, 160, 160)";h.style.borderRadius="4px";for(var g=["sharp","rounded","curved"],m=0;m<g.length;m++){var l=document.createElement("option");l.setAttribute("value",g[m]);mxUtils.write(l,mxResources.get(g[m]));h.appendChild(l)}mxEvent.addListener(h,"change",function(a){d.getModel().beginUpdate();try{var b=
-[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],c=["0",null];"rounded"==h.value?c=["1",null]:"curved"==h.value&&(c=[null,"1"]);for(var g=0;g<b.length;g++)d.setCellStyles(b[g],c[g],f.cells);e.fireEvent(new mxEventObject("styleChanged","keys",b,"values",c,"cells",f.cells))}finally{d.getModel().endUpdate()}mxEvent.consume(a)});mxEvent.addListener(h,"click",function(a){mxEvent.consume(a)});var n="image"==f.style.shape?mxConstants.STYLE_IMAGE_BORDER:mxConstants.STYLE_STROKECOLOR,g="image"==f.style.shape?
-mxResources.get("border"):mxResources.get("line"),g=this.createCellColorOption(g,n,"default",null,mxUtils.bind(this,function(a){d.setCellStyles(n,a,f.cells)}),d.shapeForegroundColor);g.appendChild(h);k.appendChild(g);var p=k.cloneNode(!1);p.style.fontWeight="normal";p.style.whiteSpace="nowrap";p.style.position="relative";p.style.paddingLeft="0px";p.style.marginBottom="2px";p.style.overflow="hidden";p.style.marginTop="2px";p.style.width="220px";p.className="geToolbarContainer";var r=mxUtils.bind(this,
+mxConstants.STYLE_STROKEWIDTH,1)&&(d.setCellStyles(mxConstants.STYLE_STROKEWIDTH,b,f.cells),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[b],"cells",f.cells)));x.value=b+" pt";mxEvent.consume(a)}var e=this.editorUi,d=e.editor.graph,f=e.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="4px";a.style.whiteSpace="normal";var h=document.createElement("div");h.style.fontWeight="bold";f.stroke||(h.style.display="none");var k=document.createElement("select");
+k.style.position="absolute";k.style.height="22px";k.style.padding="0px";k.style.marginTop="-3px";k.style.boxSizing="border-box";k.style.left="94px";k.style.width="80px";k.style.border="1px solid rgb(160, 160, 160)";k.style.borderRadius="4px";for(var g=["sharp","rounded","curved"],m=0;m<g.length;m++){var l=document.createElement("option");l.setAttribute("value",g[m]);mxUtils.write(l,mxResources.get(g[m]));k.appendChild(l)}mxEvent.addListener(k,"change",function(a){d.getModel().beginUpdate();try{var b=
+[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],c=["0",null];"rounded"==k.value?c=["1",null]:"curved"==k.value&&(c=[null,"1"]);for(var g=0;g<b.length;g++)d.setCellStyles(b[g],c[g],f.cells);e.fireEvent(new mxEventObject("styleChanged","keys",b,"values",c,"cells",f.cells))}finally{d.getModel().endUpdate()}mxEvent.consume(a)});mxEvent.addListener(k,"click",function(a){mxEvent.consume(a)});var n="image"==f.style.shape?mxConstants.STYLE_IMAGE_BORDER:mxConstants.STYLE_STROKECOLOR,g="image"==f.style.shape?
+mxResources.get("border"):mxResources.get("line"),g=this.createCellColorOption(g,n,"default",null,mxUtils.bind(this,function(a){d.setCellStyles(n,a,f.cells)}),d.shapeForegroundColor);g.appendChild(k);h.appendChild(g);var p=h.cloneNode(!1);p.style.fontWeight="normal";p.style.whiteSpace="nowrap";p.style.position="relative";p.style.paddingLeft="0px";p.style.marginBottom="2px";p.style.overflow="hidden";p.style.marginTop="2px";p.style.width="220px";p.className="geToolbarContainer";var r=mxUtils.bind(this,
function(a,b,c,d,e){a=this.editorUi.menus.styleChange(a,"",d,e,"geIcon",null);d=document.createElement("div");d.style.width=b+"px";d.style.height="1px";d.style.borderBottom="1px "+c+" "+this.defaultStrokeColor;d.style.paddingTop="6px";a.firstChild.firstChild.style.padding="0px 4px 0px 4px";a.firstChild.firstChild.style.width=b+"px";a.firstChild.firstChild.appendChild(d);return a}),m=this.editorUi.toolbar.addMenuFunctionInContainer(p,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,
function(a){r(a,75,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",mxResources.get("solid"));r(a,75,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",null]).setAttribute("title",mxResources.get("dashed"));r(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");r(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 2"]).setAttribute("title",
mxResources.get("dotted")+" (2)");r(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),u=p.cloneNode(!1),v=this.editorUi.toolbar.addMenuFunctionInContainer(u,"geSprite-connection",mxResources.get("connection"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],[null,null,null,null],"geIcon geSprite geSprite-connection",
@@ -3175,63 +3171,62 @@ null,!1,Format.diamondThinMarkerImage.src)),Format.processMenuIcon(this.editorUi
Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["baseDash",0],null,null,!1,Format.baseDashMarkerImage.src)),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERone",0],null,null,!1,Format.EROneMarkerImage.src)),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERmandOne",0],null,null,!1,Format.ERmandOneMarkerImage.src)),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,
"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERmany",0],null,null,!1,Format.ERmanyMarkerImage.src)),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERoneToMany",0],null,null,!1,Format.ERoneToManyMarkerImage.src)),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERzeroToOne",0],null,null,!1,Format.ERzeroToOneMarkerImage.src)),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,
"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERzeroToMany",0],null,null,!1,Format.ERzeroToManyMarkerImage.src)),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["doubleBlock",0],null,null,!1,Format.doubleBlockMarkerImage.src)),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["doubleBlock",1],null,null,!1,Format.doubleBlockFilledMarkerImage.src))):this.editorUi.menus.edgeStyleChange(a,
-"",[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-startblocktrans",null,!1).setAttribute("title",mxResources.get("block"));a.div.style.width="40px"}})),I=this.editorUi.toolbar.addMenuFunctionInContainer(g,"geSprite-endclassic",mxResources.get("lineend"),!1,mxUtils.bind(this,function(a){if("connector"==f.style.shape||"flexArrow"==f.style.shape||"filledEdge"==f.style.shape){var b=this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.NONE,
-0],"geIcon",null,!1);b.setAttribute("title",mxResources.get("none"));var c=document.createElement("font");c.style.fontSize="10px";mxUtils.write(c,mxResources.get("none"));b.firstChild.firstChild.appendChild(c);"connector"==f.style.shape||"filledEdge"==f.style.shape?(Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_CLASSIC,1],null,null,!1,Format.classicFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,
-"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_CLASSIC_THIN,1],null,null,!1,Format.classicThinFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_OPEN,0],null,null,!1,Format.openFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_OPEN_THIN,0],null,null,!1,Format.openThinFilledMarkerImage.src),
-"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["openAsync",0],null,null,!1,Format.openAsyncFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_BLOCK,1],null,null,!1,Format.blockFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_BLOCK_THIN,
-1],null,null,!1,Format.blockThinFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["async",1],null,null,!1,Format.asyncFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_OVAL,1],null,null,!1,Format.ovalFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",
-[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_DIAMOND,1],null,null,!1,Format.diamondFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_DIAMOND_THIN,1],null,null,!1,Format.diamondThinFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_CLASSIC,0],null,null,!1,Format.classicMarkerImage.src),
-"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_CLASSIC_THIN,0],null,null,!1,Format.classicThinMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_BLOCK,0],null,null,!1,Format.blockMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],
-[mxConstants.ARROW_BLOCK_THIN,0],null,null,!1,Format.blockThinMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["async",0],null,null,!1,Format.asyncMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_OVAL,0],null,null,!1,Format.ovalMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,
+"",[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-startblocktrans",null,!1).setAttribute("title",mxResources.get("block"));a.div.style.width="40px";window.setTimeout(mxUtils.bind(this,function(){mxUtils.fit(a.div)}),0)}})),I=this.editorUi.toolbar.addMenuFunctionInContainer(g,"geSprite-endclassic",mxResources.get("lineend"),!1,mxUtils.bind(this,function(a){if("connector"==f.style.shape||"flexArrow"==f.style.shape||"filledEdge"==f.style.shape){var b=this.editorUi.menus.edgeStyleChange(a,
+"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.NONE,0],"geIcon",null,!1);b.setAttribute("title",mxResources.get("none"));var c=document.createElement("font");c.style.fontSize="10px";mxUtils.write(c,mxResources.get("none"));b.firstChild.firstChild.appendChild(c);"connector"==f.style.shape||"filledEdge"==f.style.shape?(Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_CLASSIC,1],null,null,!1,Format.classicFilledMarkerImage.src),
+"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_CLASSIC_THIN,1],null,null,!1,Format.classicThinFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_OPEN,0],null,null,!1,Format.openFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,
+"endFill"],[mxConstants.ARROW_OPEN_THIN,0],null,null,!1,Format.openThinFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["openAsync",0],null,null,!1,Format.openAsyncFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_BLOCK,1],null,null,!1,Format.blockFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,
+"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_BLOCK_THIN,1],null,null,!1,Format.blockThinFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["async",1],null,null,!1,Format.asyncFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_OVAL,1],null,null,!1,Format.ovalFilledMarkerImage.src),"scaleX(-1)"),
+Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_DIAMOND,1],null,null,!1,Format.diamondFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_DIAMOND_THIN,1],null,null,!1,Format.diamondThinFilledMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],
+[mxConstants.ARROW_CLASSIC,0],null,null,!1,Format.classicMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_CLASSIC_THIN,0],null,null,!1,Format.classicThinMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_BLOCK,0],null,null,!1,Format.blockMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,
+"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_BLOCK_THIN,0],null,null,!1,Format.blockThinMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["async",0],null,null,!1,Format.asyncMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_OVAL,0],null,null,!1,Format.ovalMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,
"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_DIAMOND,0],null,null,!1,Format.diamondMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_DIAMOND_THIN,0],null,null,!1,Format.diamondThinMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["box",0],null,null,!1,Format.boxMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,
"",[mxConstants.STYLE_ENDARROW,"endFill"],["halfCircle",0],null,null,!1,Format.halfCircleMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["dash",0],null,null,!1,Format.dashMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["cross",0],null,null,!1,Format.crossMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,
"",[mxConstants.STYLE_ENDARROW,"endFill"],["circlePlus",0],null,null,!1,Format.circlePlusMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["circle",0],null,null,!1,Format.circleMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["baseDash",0],null,null,!1,Format.baseDashMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,
"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERone",0],null,null,!1,Format.EROneMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmandOne",0],null,null,!1,Format.ERmandOneMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmany",0],null,null,!1,Format.ERmanyMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,
"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERoneToMany",0],null,null,!1,Format.ERoneToManyMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToOne",0],null,null,!1,Format.ERzeroToOneMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToMany",0],null,null,!1,Format.ERzeroToManyMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,
"",[mxConstants.STYLE_ENDARROW,"endFill"],["doubleBlock",0],null,null,!1,Format.doubleBlockMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["doubleBlock",1],null,null,!1,Format.doubleBlockFilledMarkerImage.src),"scaleX(-1)")):this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"));
-a.div.style.width="40px"}})),w=this.addArrow(v,8);w.nextSibling.style.position="relative";w.nextSibling.style.top="-2px";w=this.addArrow(y,10);w.nextSibling.style.position="relative";w.nextSibling.style.top="-3px";y.getElementsByTagName("img")[0].style.top="-1px";this.addArrow(F);this.addArrow(I);w=this.addArrow(m,9);w.className="geIcon";w.style.width="auto";var A=this.addArrow(l,9);A.className="geIcon";A.style.width="22px";var G=document.createElement("div");G.style.width="84px";G.style.height="1px";
-G.style.borderBottom="1px solid "+this.defaultStrokeColor;G.style.marginBottom="7px";w.appendChild(G);var z=document.createElement("div");z.style.width="23px";z.style.height="1px";z.style.borderBottom="1px solid "+this.defaultStrokeColor;z.style.marginBottom="7px";A.appendChild(z);m.style.height="15px";m.style.marginLeft="16px";l.style.height="15px";l.style.marginLeft="3px";v.style.marginLeft="10px";v.style.height="15px";y.style.marginLeft="10px";y.style.height="17px";F.style.marginLeft="3px";F.style.height=
-"17px";I.style.marginLeft="3px";I.style.height="17px";a.appendChild(k);a.appendChild(u);a.appendChild(p);m=p.cloneNode(!1);m.style.padding="5px 4px 6px 0px";m.style.fontWeight="normal";l=document.createElement("div");l.style.position="absolute";l.style.marginLeft="0px";l.style.marginBottom="12px";l.style.marginTop="2px";l.style.fontWeight="normal";l.style.width="76px";mxUtils.write(l,mxResources.get("lineend"));m.appendChild(l);var D,K,L=this.addUnitInput(m,"pt",98,52,function(){D.apply(this,arguments)}),
-N=this.addUnitInput(m,"pt",30,52,function(){K.apply(this,arguments)});mxUtils.br(m);w=document.createElement("div");w.style.height="8px";m.appendChild(w);l=l.cloneNode(!1);mxUtils.write(l,mxResources.get("linestart"));m.appendChild(l);var J,Q,X=this.addUnitInput(m,"pt",98,52,function(){J.apply(this,arguments)}),ba=this.addUnitInput(m,"pt",30,52,function(){Q.apply(this,arguments)});mxUtils.br(m);this.addLabel(m,mxResources.get("spacing"),98,52);this.addLabel(m,mxResources.get("size"),30,52);mxUtils.br(m);
-k=k.cloneNode(!1);k.style.fontWeight="normal";k.style.position="relative";k.style.paddingLeft="16px";k.style.marginBottom="2px";k.style.marginTop="6px";k.style.borderWidth="0px";k.style.paddingBottom="18px";l=document.createElement("div");l.style.position="absolute";l.style.marginLeft="3px";l.style.marginBottom="12px";l.style.marginTop="1px";l.style.fontWeight="normal";l.style.width="120px";mxUtils.write(l,mxResources.get("perimeter"));k.appendChild(l);var O,R=this.addUnitInput(k,"pt",30,52,function(){O.apply(this,
-arguments)});f.edges.length==f.cells.length?(a.appendChild(g),a.appendChild(m)):f.vertices.length==f.cells.length&&a.appendChild(k);var T=mxUtils.bind(this,function(b,c,d){function g(a,b,c,d){c=c.getElementsByTagName("div")[0];null!=c&&(c.className=e.getCssClassForMarker(d,f.style.shape,a,b),c.nextSibling.style.marginLeft="1px",c.nextSibling.style.paddingRight="5px","geSprite geSprite-noarrow"==c.className?(c.innerHTML=mxUtils.htmlEntities(mxResources.get("none")),c.style.backgroundImage="none",c.style.verticalAlign=
-"top",c.style.marginTop="4px",c.style.fontSize="10px",c.style.filter="none",c.style.color=this.defaultStrokeColor,c.nextSibling.style.marginTop="0px"):(c.nextSibling.style.position="relative",c.nextSibling.style.top="-2px"));return c}f=this.format.getSelectionState();mxUtils.getValue(f.style,n,null);if(d||document.activeElement!=t)b=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_STROKEWIDTH,1)),t.value=isNaN(b)?"":b+" pt";if(d||document.activeElement!=x)b=parseFloat(mxUtils.getValue(f.style,
-mxConstants.STYLE_STROKEWIDTH,1)),x.value=isNaN(b)?"":b+" pt";h.style.visibility="connector"==f.style.shape||"filledEdge"==f.style.shape?"":"hidden";"1"==mxUtils.getValue(f.style,mxConstants.STYLE_CURVED,null)?h.value="curved":"1"==mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,null)&&(h.value="rounded");"1"==mxUtils.getValue(f.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(f.style,mxConstants.STYLE_DASH_PATTERN,null)?G.style.borderBottom="1px dashed "+this.defaultStrokeColor:G.style.borderBottom=
-"1px dotted "+this.defaultStrokeColor:G.style.borderBottom="1px solid "+this.defaultStrokeColor;z.style.borderBottom=G.style.borderBottom;b=y.getElementsByTagName("div")[0];null!=b&&(c=mxUtils.getValue(f.style,mxConstants.STYLE_EDGE,null),"1"==mxUtils.getValue(f.style,mxConstants.STYLE_NOEDGESTYLE,null)&&(c=null),"orthogonalEdgeStyle"==c&&"1"==mxUtils.getValue(f.style,mxConstants.STYLE_CURVED,null)?b.className="geSprite geSprite-curved":b.className="straight"==c||"none"==c||null==c?"geSprite geSprite-straight":
-"entityRelationEdgeStyle"==c?"geSprite geSprite-entity":"elbowEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(f.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalelbow":"geSprite-horizontalelbow"):"isometricEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(f.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal");b=v.getElementsByTagName("div")[0];null!=b&&(b.className="link"==f.style.shape?"geSprite geSprite-linkedge":
-"flexArrow"==f.style.shape?"geSprite geSprite-arrow":"arrow"==f.style.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection");f.edges.length==f.cells.length?(u.style.display="",p.style.display="none"):(u.style.display="none",p.style.display="");Graph.lineJumpsEnabled&&0<f.edges.length&&0==f.vertices.length&&f.lineJumps&&(a.style.borderBottomStyle="none");b=g(mxUtils.getValue(f.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(f.style,"startFill","1"),F,"start");c=g(mxUtils.getValue(f.style,
-mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(f.style,"endFill","1"),I,"end");null!=b&&null!=c&&("arrow"==f.style.shape?(b.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-endblocktrans"):"link"==f.style.shape&&(b.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-noarrow"));mxUtils.setOpacity(y,"arrow"==f.style.shape?30:100);"connector"!=f.style.shape&&"flexArrow"!=f.style.shape&&"filledEdge"!=f.style.shape?(mxUtils.setOpacity(F,30),mxUtils.setOpacity(I,
-30)):(mxUtils.setOpacity(F,100),mxUtils.setOpacity(I,100));if(d||document.activeElement!=ba)b=parseInt(mxUtils.getValue(f.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)),ba.value=isNaN(b)?"":b+" pt";if(d||document.activeElement!=X)b=parseInt(mxUtils.getValue(f.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0)),X.value=isNaN(b)?"":b+" pt";if(d||document.activeElement!=N)b=parseInt(mxUtils.getValue(f.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE)),N.value=isNaN(b)?
-"":b+" pt";if(d||document.activeElement!=X)b=parseInt(mxUtils.getValue(f.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0)),L.value=isNaN(b)?"":b+" pt";if(d||document.activeElement!=R)b=parseInt(mxUtils.getValue(f.style,mxConstants.STYLE_PERIMETER_SPACING,0)),R.value=isNaN(b)?"":b+" pt"});Q=this.installInputHandler(ba,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");J=this.installInputHandler(X,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0,-999,999," pt");K=this.installInputHandler(N,
-mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");D=this.installInputHandler(L,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0,-999,999," pt");O=this.installInputHandler(R,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(t,T);this.addKeyHandler(ba,T);this.addKeyHandler(X,T);this.addKeyHandler(N,T);this.addKeyHandler(L,T);this.addKeyHandler(R,T);d.getModel().addListener(mxEvent.CHANGE,T);this.listeners.push({destroy:function(){d.getModel().removeListener(T)}});
+a.div.style.width="40px";window.setTimeout(mxUtils.bind(this,function(){mxUtils.fit(a.div)}),0)}})),w=this.addArrow(v,8);w.nextSibling.style.position="relative";w.nextSibling.style.top="-2px";w=this.addArrow(y,10);w.nextSibling.style.position="relative";w.nextSibling.style.top="-3px";y.getElementsByTagName("img")[0].style.top="-1px";this.addArrow(F);this.addArrow(I);w=this.addArrow(m,9);w.className="geIcon";w.style.width="auto";var B=this.addArrow(l,9);B.className="geIcon";B.style.width="22px";var G=
+document.createElement("div");G.style.width="84px";G.style.height="1px";G.style.borderBottom="1px solid "+this.defaultStrokeColor;G.style.marginBottom="7px";w.appendChild(G);var z=document.createElement("div");z.style.width="23px";z.style.height="1px";z.style.borderBottom="1px solid "+this.defaultStrokeColor;z.style.marginBottom="7px";B.appendChild(z);m.style.height="15px";m.style.marginLeft="16px";l.style.height="15px";l.style.marginLeft="3px";v.style.marginLeft="10px";v.style.height="15px";y.style.marginLeft=
+"10px";y.style.height="17px";F.style.marginLeft="3px";F.style.height="17px";I.style.marginLeft="3px";I.style.height="17px";a.appendChild(h);a.appendChild(u);a.appendChild(p);m=p.cloneNode(!1);m.style.padding="5px 4px 6px 0px";m.style.fontWeight="normal";l=document.createElement("div");l.style.position="absolute";l.style.marginLeft="0px";l.style.marginBottom="12px";l.style.marginTop="2px";l.style.fontWeight="normal";l.style.width="76px";mxUtils.write(l,mxResources.get("lineend"));m.appendChild(l);
+var D,K,L=this.addUnitInput(m,"pt",98,52,function(){D.apply(this,arguments)}),N=this.addUnitInput(m,"pt",30,52,function(){K.apply(this,arguments)});mxUtils.br(m);w=document.createElement("div");w.style.height="8px";m.appendChild(w);l=l.cloneNode(!1);mxUtils.write(l,mxResources.get("linestart"));m.appendChild(l);var J,Q,Y=this.addUnitInput(m,"pt",98,52,function(){J.apply(this,arguments)}),ca=this.addUnitInput(m,"pt",30,52,function(){Q.apply(this,arguments)});mxUtils.br(m);this.addLabel(m,mxResources.get("spacing"),
+98,52);this.addLabel(m,mxResources.get("size"),30,52);mxUtils.br(m);h=h.cloneNode(!1);h.style.fontWeight="normal";h.style.position="relative";h.style.paddingLeft="16px";h.style.marginBottom="2px";h.style.marginTop="6px";h.style.borderWidth="0px";h.style.paddingBottom="18px";l=document.createElement("div");l.style.position="absolute";l.style.marginLeft="3px";l.style.marginBottom="12px";l.style.marginTop="1px";l.style.fontWeight="normal";l.style.width="120px";mxUtils.write(l,mxResources.get("perimeter"));
+h.appendChild(l);var O,R=this.addUnitInput(h,"pt",30,52,function(){O.apply(this,arguments)});f.edges.length==f.cells.length?(a.appendChild(g),a.appendChild(m)):f.vertices.length==f.cells.length&&a.appendChild(h);var T=mxUtils.bind(this,function(b,c,d){function g(a,b,c,d){c=c.getElementsByTagName("div")[0];null!=c&&(c.className=e.getCssClassForMarker(d,f.style.shape,a,b),c.nextSibling.style.marginLeft="1px",c.nextSibling.style.paddingRight="5px","geSprite geSprite-noarrow"==c.className?(c.innerHTML=
+mxUtils.htmlEntities(mxResources.get("none")),c.style.backgroundImage="none",c.style.verticalAlign="top",c.style.marginTop="4px",c.style.fontSize="10px",c.style.filter="none",c.style.color=this.defaultStrokeColor,c.nextSibling.style.marginTop="0px"):(c.nextSibling.style.position="relative",c.nextSibling.style.top="-2px"));return c}f=e.getSelectionState();if(d||document.activeElement!=t)b=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_STROKEWIDTH,1)),t.value=isNaN(b)?"":b+" pt";if(d||document.activeElement!=
+x)b=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_STROKEWIDTH,1)),x.value=isNaN(b)?"":b+" pt";k.style.visibility="connector"==f.style.shape||"filledEdge"==f.style.shape?"":"hidden";"1"==mxUtils.getValue(f.style,mxConstants.STYLE_CURVED,null)?k.value="curved":"1"==mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,null)&&(k.value="rounded");"1"==mxUtils.getValue(f.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(f.style,mxConstants.STYLE_DASH_PATTERN,null)?G.style.borderBottom="1px dashed "+
+this.defaultStrokeColor:G.style.borderBottom="1px dotted "+this.defaultStrokeColor:G.style.borderBottom="1px solid "+this.defaultStrokeColor;z.style.borderBottom=G.style.borderBottom;b=y.getElementsByTagName("div")[0];null!=b&&(c=mxUtils.getValue(f.style,mxConstants.STYLE_EDGE,null),"1"==mxUtils.getValue(f.style,mxConstants.STYLE_NOEDGESTYLE,null)&&(c=null),"orthogonalEdgeStyle"==c&&"1"==mxUtils.getValue(f.style,mxConstants.STYLE_CURVED,null)?b.className="geSprite geSprite-curved":b.className="straight"==
+c||"none"==c||null==c?"geSprite geSprite-straight":"entityRelationEdgeStyle"==c?"geSprite geSprite-entity":"elbowEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(f.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalelbow":"geSprite-horizontalelbow"):"isometricEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(f.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal");b=v.getElementsByTagName("div")[0];null!=b&&
+(b.className="link"==f.style.shape?"geSprite geSprite-linkedge":"flexArrow"==f.style.shape?"geSprite geSprite-arrow":"arrow"==f.style.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection");f.edges.length==f.cells.length?(u.style.display="",p.style.display="none"):(u.style.display="none",p.style.display="");Graph.lineJumpsEnabled&&0<f.edges.length&&0==f.vertices.length&&f.lineJumps&&(a.style.borderBottomStyle="none");b=g(mxUtils.getValue(f.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(f.style,
+"startFill","1"),F,"start");c=g(mxUtils.getValue(f.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(f.style,"endFill","1"),I,"end");null!=b&&null!=c&&("arrow"==f.style.shape?(b.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-endblocktrans"):"link"==f.style.shape&&(b.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-noarrow"));mxUtils.setOpacity(y,"arrow"==f.style.shape?30:100);"connector"!=f.style.shape&&"flexArrow"!=f.style.shape&&"filledEdge"!=f.style.shape?
+(mxUtils.setOpacity(F,30),mxUtils.setOpacity(I,30)):(mxUtils.setOpacity(F,100),mxUtils.setOpacity(I,100));if(d||document.activeElement!=ca)b=parseInt(mxUtils.getValue(f.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)),ca.value=isNaN(b)?"":b+" pt";if(d||document.activeElement!=Y)b=parseInt(mxUtils.getValue(f.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0)),Y.value=isNaN(b)?"":b+" pt";if(d||document.activeElement!=N)b=parseInt(mxUtils.getValue(f.style,mxConstants.STYLE_ENDSIZE,
+mxConstants.DEFAULT_MARKERSIZE)),N.value=isNaN(b)?"":b+" pt";if(d||document.activeElement!=Y)b=parseInt(mxUtils.getValue(f.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0)),L.value=isNaN(b)?"":b+" pt";if(d||document.activeElement!=R)b=parseInt(mxUtils.getValue(f.style,mxConstants.STYLE_PERIMETER_SPACING,0)),R.value=isNaN(b)?"":b+" pt"});Q=this.installInputHandler(ca,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");J=this.installInputHandler(Y,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
+0,-999,999," pt");K=this.installInputHandler(N,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");D=this.installInputHandler(L,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0,-999,999," pt");O=this.installInputHandler(R,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(t,T);this.addKeyHandler(ca,T);this.addKeyHandler(Y,T);this.addKeyHandler(N,T);this.addKeyHandler(L,T);this.addKeyHandler(R,T);d.getModel().addListener(mxEvent.CHANGE,T);this.listeners.push({destroy:function(){d.getModel().removeListener(T)}});
T();return a};
-StyleFormatPanel.prototype.addLineJumps=function(a){var b=this.format.getSelectionState();if(Graph.lineJumpsEnabled&&0<b.edges.length&&0==b.vertices.length&&b.lineJumps){a.style.padding="2px 0px 24px 14px";var c=this.editorUi,e=c.editor.graph,d=document.createElement("div");d.style.position="absolute";d.style.maxWidth="82px";d.style.overflow="hidden";d.style.textOverflow="ellipsis";mxUtils.write(d,mxResources.get("lineJumps"));a.appendChild(d);var f=document.createElement("select");f.style.position=
-"absolute";f.style.height="21px";f.style.padding="0px";f.style.marginTop="-2px";f.style.boxSizing="border-box";f.style.right="76px";f.style.width="54px";f.style.border="1px solid rgb(160, 160, 160)";f.style.borderRadius="4px";for(var d=["none","arc","gap","sharp","line"],k=0;k<d.length;k++){var h=document.createElement("option");h.setAttribute("value",d[k]);mxUtils.write(h,mxResources.get(d[k]));f.appendChild(h)}mxEvent.addListener(f,"change",function(a){e.getModel().beginUpdate();try{e.setCellStyles("jumpStyle",
-f.value,b.cells),c.fireEvent(new mxEventObject("styleChanged","keys",["jumpStyle"],"values",[f.value],"cells",b.cells))}finally{e.getModel().endUpdate()}mxEvent.consume(a)});mxEvent.addListener(f,"click",function(a){mxEvent.consume(a)});a.appendChild(f);var g,m=this.addUnitInput(a,"pt",16,42,function(){g.apply(this,arguments)});g=this.installInputHandler(m,"jumpSize",Graph.defaultJumpSize,0,999," pt");var l=mxUtils.bind(this,function(a,c,d){b=this.format.getSelectionState();f.value=mxUtils.getValue(b.style,
-"jumpStyle","none");if(d||document.activeElement!=m)a=parseInt(mxUtils.getValue(b.style,"jumpSize",Graph.defaultJumpSize)),m.value=isNaN(a)?"":a+" pt"});this.addKeyHandler(m,l);e.getModel().addListener(mxEvent.CHANGE,l);this.listeners.push({destroy:function(){e.getModel().removeListener(l)}});l()}else a.style.display="none";return a};
-StyleFormatPanel.prototype.addEffects=function(a){var b=this.editorUi.editor.graph,c=this.format.getSelectionState();a.style.paddingTop="4px";a.style.paddingBottom="0px";var e=document.createElement("table");e.style.width="210px";e.style.fontWeight="bold";e.style.tableLayout="fixed";var d=document.createElement("tbody"),f=document.createElement("tr");f.style.padding="0px";var k=document.createElement("td");k.style.padding="0px";k.style.width="50%";k.setAttribute("valign","top");var h=k.cloneNode(!0);
-h.style.paddingLeft="8px";f.appendChild(k);f.appendChild(h);d.appendChild(f);e.appendChild(d);a.appendChild(e);var g=k,m=0,l=mxUtils.bind(this,function(a,b,c){a=this.createCellOption(a,b,c);a.style.width="100%";g.appendChild(a);g=g==k?h:k;m++}),n=mxUtils.bind(this,function(a,b,d){c=this.format.getSelectionState();k.innerHTML="";h.innerHTML="";g=k;c.rounded&&l(mxResources.get("rounded"),mxConstants.STYLE_ROUNDED,0);"swimlane"==c.style.shape&&l(mxResources.get("divider"),"swimlaneLine",1);c.containsImage||
-l(mxResources.get("shadow"),mxConstants.STYLE_SHADOW,0);c.glass&&l(mxResources.get("glass"),mxConstants.STYLE_GLASS,0);l(mxResources.get("sketch"),"sketch",0)});b.getModel().addListener(mxEvent.CHANGE,n);this.listeners.push({destroy:function(){b.getModel().removeListener(n)}});n();return a};
-StyleFormatPanel.prototype.addStyleOps=function(a){a.style.paddingTop="10px";a.style.paddingBottom="10px";var b=mxUtils.button(mxResources.get("setAsDefaultStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("setAsDefaultStyle").funct()}));b.setAttribute("title",mxResources.get("setAsDefaultStyle")+" ("+this.editorUi.actions.get("setAsDefaultStyle").shortcut+")");b.style.width="210px";a.appendChild(b);return a};DiagramStylePanel=function(a,b,c){BaseFormatPanel.call(this,a,b,c);this.init()};
+StyleFormatPanel.prototype.addLineJumps=function(a){var b=this.editorUi,c=b.editor.graph,e=b.getSelectionState();if(Graph.lineJumpsEnabled&&0<e.edges.length&&0==e.vertices.length&&e.lineJumps){a.style.padding="2px 0px 24px 14px";var d=document.createElement("div");d.style.position="absolute";d.style.maxWidth="82px";d.style.overflow="hidden";d.style.textOverflow="ellipsis";mxUtils.write(d,mxResources.get("lineJumps"));a.appendChild(d);var f=document.createElement("select");f.style.position="absolute";
+f.style.height="21px";f.style.padding="0px";f.style.marginTop="-2px";f.style.boxSizing="border-box";f.style.right="76px";f.style.width="54px";f.style.border="1px solid rgb(160, 160, 160)";f.style.borderRadius="4px";for(var d=["none","arc","gap","sharp","line"],h=0;h<d.length;h++){var k=document.createElement("option");k.setAttribute("value",d[h]);mxUtils.write(k,mxResources.get(d[h]));f.appendChild(k)}mxEvent.addListener(f,"change",function(a){c.getModel().beginUpdate();try{c.setCellStyles("jumpStyle",
+f.value,e.cells),b.fireEvent(new mxEventObject("styleChanged","keys",["jumpStyle"],"values",[f.value],"cells",e.cells))}finally{c.getModel().endUpdate()}mxEvent.consume(a)});mxEvent.addListener(f,"click",function(a){mxEvent.consume(a)});a.appendChild(f);var g,m=this.addUnitInput(a,"pt",16,42,function(){g.apply(this,arguments)});g=this.installInputHandler(m,"jumpSize",Graph.defaultJumpSize,0,999," pt");var l=mxUtils.bind(this,function(a,c,d){e=b.getSelectionState();f.value=mxUtils.getValue(e.style,
+"jumpStyle","none");if(d||document.activeElement!=m)a=parseInt(mxUtils.getValue(e.style,"jumpSize",Graph.defaultJumpSize)),m.value=isNaN(a)?"":a+" pt"});this.addKeyHandler(m,l);c.getModel().addListener(mxEvent.CHANGE,l);this.listeners.push({destroy:function(){c.getModel().removeListener(l)}});l()}else a.style.display="none";return a};
+StyleFormatPanel.prototype.addEffects=function(a){var b=this.editorUi,c=b.editor.graph,e=b.getSelectionState();a.style.paddingTop="4px";a.style.paddingBottom="0px";var d=document.createElement("table");d.style.width="210px";d.style.fontWeight="bold";d.style.tableLayout="fixed";var f=document.createElement("tbody"),h=document.createElement("tr");h.style.padding="0px";var k=document.createElement("td");k.style.padding="0px";k.style.width="50%";k.setAttribute("valign","top");var g=k.cloneNode(!0);g.style.paddingLeft=
+"8px";h.appendChild(k);h.appendChild(g);f.appendChild(h);d.appendChild(f);a.appendChild(d);var m=k,l=0,n=mxUtils.bind(this,function(a,b,c){a=this.createCellOption(a,b,c);a.style.width="100%";m.appendChild(a);m=m==k?g:k;l++}),p=mxUtils.bind(this,function(a,c,d){e=b.getSelectionState();k.innerHTML="";g.innerHTML="";m=k;e.rounded&&n(mxResources.get("rounded"),mxConstants.STYLE_ROUNDED,0);"swimlane"==e.style.shape&&n(mxResources.get("divider"),"swimlaneLine",1);e.containsImage||n(mxResources.get("shadow"),
+mxConstants.STYLE_SHADOW,0);e.glass&&n(mxResources.get("glass"),mxConstants.STYLE_GLASS,0);n(mxResources.get("sketch"),"sketch",0)});c.getModel().addListener(mxEvent.CHANGE,p);this.listeners.push({destroy:function(){c.getModel().removeListener(p)}});p();return a};StyleFormatPanel.prototype.addStyleOps=function(a){a.style.paddingTop="10px";a.style.paddingBottom="10px";this.addActions(a,["setAsDefaultStyle"]);return a};DiagramStylePanel=function(a,b,c){BaseFormatPanel.call(this,a,b,c);this.init()};
mxUtils.extend(DiagramStylePanel,BaseFormatPanel);DiagramStylePanel.prototype.init=function(){var a=this.editorUi;this.darkModeChangedListener=mxUtils.bind(this,function(){this.format.cachedStyleEntries=[]});a.addListener("darkModeChanged",this.darkModeChangedListener);this.container.appendChild(this.addView(this.createPanel()))};
-DiagramStylePanel.prototype.addView=function(a){var b=this.editorUi,c=b.editor.graph,e=c.getModel();a.style.whiteSpace="normal";var d="1"==c.currentVertexStyle.sketch&&"1"==c.currentEdgeStyle.sketch,f="1"==c.currentVertexStyle.rounded,k="1"==c.currentEdgeStyle.curved,h=document.createElement("div");h.style.paddingBottom="12px";h.style.marginRight="16px";a.style.paddingTop="8px";var g=document.createElement("table");g.style.width="210px";g.style.fontWeight="bold";var m=document.createElement("tbody"),
+DiagramStylePanel.prototype.addView=function(a){var b=this.editorUi,c=b.editor.graph,e=c.getModel();a.style.whiteSpace="normal";var d="1"==c.currentVertexStyle.sketch&&"1"==c.currentEdgeStyle.sketch,f="1"==c.currentVertexStyle.rounded,h="1"==c.currentEdgeStyle.curved,k=document.createElement("div");k.style.paddingBottom="12px";k.style.marginRight="16px";a.style.paddingTop="8px";var g=document.createElement("table");g.style.width="210px";g.style.fontWeight="bold";var m=document.createElement("tbody"),
l=document.createElement("tr");l.style.padding="0px";var n=document.createElement("td");n.style.padding="0px";n.style.width="50%";n.setAttribute("valign","middle");var p=n.cloneNode(!0);p.style.paddingLeft="8px";l.appendChild(n);l.appendChild(p);m.appendChild(l);g.appendChild(m);n.appendChild(this.createOption(mxResources.get("sketch"),function(){return d},function(a){(d=a)?(c.currentEdgeStyle.sketch="1",c.currentVertexStyle.sketch="1"):(delete c.currentEdgeStyle.sketch,delete c.currentVertexStyle.sketch);
c.updateCellStyles({sketch:a?"1":null},c.getVerticesAndEdges())},null,function(a){a.style.width="auto"}));p.appendChild(this.createOption(mxResources.get("rounded"),function(){return f},function(a){(f=a)?(c.currentEdgeStyle.rounded="1",c.currentVertexStyle.rounded="1"):(delete c.currentEdgeStyle.rounded,delete c.currentVertexStyle.rounded);c.updateCellStyles({rounded:a?"1":"0"},c.getVerticesAndEdges())},null,function(a){a.style.width="auto"}));n=n.cloneNode(!1);p=p.cloneNode(!1);l=l.cloneNode(!1);
-l.appendChild(n);l.appendChild(p);m.appendChild(l);n.appendChild(this.createOption(mxResources.get("curved"),function(){return k},function(a){(k=a)?c.currentEdgeStyle.curved="1":delete c.currentEdgeStyle.curved;c.updateCellStyles({curved:a?"1":null},c.getVerticesAndEdges(!1,!0))},null,function(a){a.style.width="auto"}));h.appendChild(g);a.appendChild(h);var r=["fillColor","strokeColor","fontColor","gradientColor"],u=mxUtils.bind(this,function(a,b){var d=c.getVerticesAndEdges();e.beginUpdate();try{for(var f=
+l.appendChild(n);l.appendChild(p);m.appendChild(l);n.appendChild(this.createOption(mxResources.get("curved"),function(){return h},function(a){(h=a)?c.currentEdgeStyle.curved="1":delete c.currentEdgeStyle.curved;c.updateCellStyles({curved:a?"1":null},c.getVerticesAndEdges(!1,!0))},null,function(a){a.style.width="auto"}));k.appendChild(g);a.appendChild(k);var r=["fillColor","strokeColor","fontColor","gradientColor"],u=mxUtils.bind(this,function(a,b){var d=c.getVerticesAndEdges();e.beginUpdate();try{for(var f=
0;f<d.length;f++){var g=c.getCellStyle(d[f]);null!=g.labelBackgroundColor&&c.updateCellStyles({labelBackgroundColor:null!=b?b.background:null},[d[f]]);for(var k=e.isEdge(d[f]),h=e.getStyle(d[f]),m=k?c.currentEdgeStyle:c.currentVertexStyle,l=0;l<a.length;l++)if(null!=g[a[l]]&&g[a[l]]!=mxConstants.NONE||a[l]!=mxConstants.STYLE_FILLCOLOR&&a[l]!=mxConstants.STYLE_STROKECOLOR)h=mxUtils.setStyle(h,a[l],m[a[l]]);e.setStyle(d[f],h)}}finally{e.endUpdate()}}),v=mxUtils.bind(this,function(a,b,c){if(null!=a)for(var d=
0;d<b.length;d++)if(null!=a[b[d]]&&a[b[d]]!=mxConstants.NONE||b[d]!=mxConstants.STYLE_FILLCOLOR&&b[d]!=mxConstants.STYLE_STROKECOLOR)a[b[d]]=c[b[d]]}),t=mxUtils.bind(this,function(a,b,d,e,f){if(null!=a){null!=d&&null!=b.labelBackgroundColor&&(e=null!=e?e.background:null,f=null!=f?f:c,null==e&&(e=f.background),null==e&&(e=f.defaultPageBackgroundColor),b.labelBackgroundColor=e);for(var g in a)if(null==d||null!=b[g]&&b[g]!=mxConstants.NONE||g!=mxConstants.STYLE_FILLCOLOR&&g!=mxConstants.STYLE_STROKECOLOR)b[g]=
a[g]}}),n=mxUtils.button(mxResources.get("reset"),mxUtils.bind(this,function(a){a=c.getVerticesAndEdges(!0,!0);if(0<a.length){e.beginUpdate();try{c.updateCellStyles({sketch:null,rounded:null},a),c.updateCellStyles({curved:null},c.getVerticesAndEdges(!1,!0))}finally{e.endUpdate()}}b.clearDefaultStyle()}));n.setAttribute("title",mxResources.get("reset"));n.style.textOverflow="ellipsis";n.style.maxWidth="90px";p.appendChild(n);var x=mxUtils.bind(this,function(a,b,d,f,g){var k=document.createElement("div");
k.style.position="absolute";k.style.display="inline-block";k.style.overflow="hidden";k.style.pointerEvents="none";k.style.width="100%";k.style.height="100%";g.appendChild(k);var h=new Graph(k,null,null,c.getStylesheet());h.resetViewOnRootChange=!1;h.foldingEnabled=!1;h.gridEnabled=!1;h.autoScroll=!1;h.setTooltips(!1);h.setConnectable(!1);h.setPanning(!1);h.setEnabled(!1);h.getCellStyle=function(g,k){k=null!=k?k:!0;var m=mxUtils.clone(c.getCellStyle.apply(this,arguments)),l=c.stylesheet.getDefaultVertexStyle(),
n=b;e.isEdge(g)&&(l=c.stylesheet.getDefaultEdgeStyle(),n=d);v(m,r,l);t(a,m,g,f,h);t(n,m,g,f,h);k&&(m=c.postProcessCellStyle(g,m));return m};h.model.beginUpdate();try{var m=h.insertVertex(h.getDefaultParent(),null,"Shape",14,8,70,40,"strokeWidth=2;"),l=h.insertEdge(h.getDefaultParent(),null,"Connector",m,m,"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;endSize=5;strokeWidth=2;");l.geometry.points=[new mxPoint(32,70)];l.geometry.offset=new mxPoint(0,8)}finally{h.model.endUpdate()}}),
-w=document.createElement("div");w.style.position="relative";a.appendChild(w);null==this.format.cachedStyleEntries&&(this.format.cachedStyleEntries=[]);var y=mxUtils.bind(this,function(a,g,h,m,l){var n=this.format.cachedStyleEntries[l];null==n&&(n=document.createElement("div"),n.style.display="inline-block",n.style.position="relative",n.style.width="96px",n.style.height="90px",n.style.cursor="pointer",n.style.border="1px solid gray",n.style.borderRadius="8px",n.style.margin="2px",n.style.overflow=
-"hidden",null!=m&&null!=m.background&&(n.style.backgroundColor=m.background),x(a,g,h,m,n),mxEvent.addGestureListeners(n,mxUtils.bind(this,function(a){n.style.opacity=.5}),null,mxUtils.bind(this,function(l){n.style.opacity=1;c.currentVertexStyle=mxUtils.clone(c.defaultVertexStyle);c.currentEdgeStyle=mxUtils.clone(c.defaultEdgeStyle);t(a,c.currentVertexStyle);t(a,c.currentEdgeStyle);t(g,c.currentVertexStyle);t(h,c.currentEdgeStyle);d?(c.currentEdgeStyle.sketch="1",c.currentVertexStyle.sketch="1"):(c.currentEdgeStyle.sketch=
-"0",c.currentVertexStyle.sketch="0");c.currentVertexStyle.rounded=f?"1":"0";c.currentEdgeStyle.rounded="1";c.currentEdgeStyle.curved=k?"1":"0";e.beginUpdate();try{var p=r.slice(),v;for(v in a)p.push(v);u(p,m);var x=new ChangePageSetup(b,null!=m?m.background:null);x.ignoreImage=!0;e.execute(x);e.execute(new ChangeGridColor(b,null!=m&&null!=m.gridColor?m.gridColor:c.view.defaultGridColor))}finally{e.endUpdate()}})),mxEvent.addListener(n,"mouseenter",mxUtils.bind(this,function(b){var d=c.getCellStyle;
-b=c.background;var f=c.view.gridColor;c.background=null!=m?m.background:null;c.view.gridColor=null!=m&&null!=m.gridColor?m.gridColor:c.view.defaultGridColor;c.getCellStyle=function(b,f){f=null!=f?f:!0;var k=mxUtils.clone(d.apply(this,arguments)),l=c.stylesheet.getDefaultVertexStyle(),n=g;e.isEdge(b)&&(l=c.stylesheet.getDefaultEdgeStyle(),n=h);v(k,r,l);t(a,k,b,m);t(n,k,b,m);f&&(k=this.postProcessCellStyle(b,k));return k};c.refresh();c.getCellStyle=d;c.background=b;c.view.gridColor=f})),mxEvent.addListener(n,
-"mouseleave",mxUtils.bind(this,function(a){c.refresh()})),mxClient.IS_IE||mxClient.IS_IE11||(this.format.cachedStyleEntries[l]=n));w.appendChild(n)}),F=Math.ceil(Editor.styles.length/10);this.format.currentStylePage=null!=this.format.currentStylePage?this.format.currentStylePage:0;var I=[],A=mxUtils.bind(this,function(){0<I.length&&(I[this.format.currentStylePage].style.background="#84d7ff");for(var a=10*this.format.currentStylePage;a<Math.min(10*(this.format.currentStylePage+1),Editor.styles.length);a++){var b=
-Editor.styles[a];y(b.commonStyle,b.vertexStyle,b.edgeStyle,b.graph,a)}}),G=mxUtils.bind(this,function(a){0<=a&&a<F&&(I[this.format.currentStylePage].style.background="transparent",w.innerHTML="",this.format.currentStylePage=a,A())});if(1<F){h=document.createElement("div");h.style.whiteSpace="nowrap";h.style.position="relative";h.style.textAlign="center";h.style.paddingTop="4px";h.style.width="210px";a.style.paddingBottom="8px";for(p=0;p<F;p++){var z=document.createElement("div");z.style.display="inline-block";
-z.style.width="6px";z.style.height="6px";z.style.marginLeft="4px";z.style.marginRight="3px";z.style.borderRadius="3px";z.style.cursor="pointer";z.style.background="transparent";z.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(a,b){mxEvent.addListener(z,"click",mxUtils.bind(this,function(){G(a)}))})(p,z);h.appendChild(z);I.push(z)}a.appendChild(h);A();15>F&&(g=function(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity=
+w=document.createElement("div");w.style.position="relative";a.appendChild(w);null==this.format.cachedStyleEntries&&(this.format.cachedStyleEntries=[]);var y=mxUtils.bind(this,function(a,g,k,m,l){var n=this.format.cachedStyleEntries[l];null==n&&(n=document.createElement("div"),n.style.display="inline-block",n.style.position="relative",n.style.width="96px",n.style.height="90px",n.style.cursor="pointer",n.style.border="1px solid gray",n.style.borderRadius="8px",n.style.margin="2px",n.style.overflow=
+"hidden",null!=m&&null!=m.background&&(n.style.backgroundColor=m.background),x(a,g,k,m,n),mxEvent.addGestureListeners(n,mxUtils.bind(this,function(a){n.style.opacity=.5}),null,mxUtils.bind(this,function(l){n.style.opacity=1;c.currentVertexStyle=mxUtils.clone(c.defaultVertexStyle);c.currentEdgeStyle=mxUtils.clone(c.defaultEdgeStyle);t(a,c.currentVertexStyle);t(a,c.currentEdgeStyle);t(g,c.currentVertexStyle);t(k,c.currentEdgeStyle);d?(c.currentEdgeStyle.sketch="1",c.currentVertexStyle.sketch="1"):(c.currentEdgeStyle.sketch=
+"0",c.currentVertexStyle.sketch="0");c.currentVertexStyle.rounded=f?"1":"0";c.currentEdgeStyle.rounded="1";c.currentEdgeStyle.curved=h?"1":"0";e.beginUpdate();try{var p=r.slice(),v;for(v in a)p.push(v);u(p,m);var x=new ChangePageSetup(b,null!=m?m.background:null);x.ignoreImage=!0;e.execute(x);e.execute(new ChangeGridColor(b,null!=m&&null!=m.gridColor?m.gridColor:c.view.defaultGridColor))}finally{e.endUpdate()}})),mxEvent.addListener(n,"mouseenter",mxUtils.bind(this,function(b){var d=c.getCellStyle;
+b=c.background;var f=c.view.gridColor;c.background=null!=m?m.background:null;c.view.gridColor=null!=m&&null!=m.gridColor?m.gridColor:c.view.defaultGridColor;c.getCellStyle=function(b,f){f=null!=f?f:!0;var h=mxUtils.clone(d.apply(this,arguments)),l=c.stylesheet.getDefaultVertexStyle(),n=g;e.isEdge(b)&&(l=c.stylesheet.getDefaultEdgeStyle(),n=k);v(h,r,l);t(a,h,b,m);t(n,h,b,m);f&&(h=this.postProcessCellStyle(b,h));return h};c.refresh();c.getCellStyle=d;c.background=b;c.view.gridColor=f})),mxEvent.addListener(n,
+"mouseleave",mxUtils.bind(this,function(a){c.refresh()})),mxClient.IS_IE||mxClient.IS_IE11||(this.format.cachedStyleEntries[l]=n));w.appendChild(n)}),F=Math.ceil(Editor.styles.length/10);this.format.currentStylePage=null!=this.format.currentStylePage?this.format.currentStylePage:0;var I=[],B=mxUtils.bind(this,function(){0<I.length&&(I[this.format.currentStylePage].style.background="#84d7ff");for(var a=10*this.format.currentStylePage;a<Math.min(10*(this.format.currentStylePage+1),Editor.styles.length);a++){var b=
+Editor.styles[a];y(b.commonStyle,b.vertexStyle,b.edgeStyle,b.graph,a)}}),G=mxUtils.bind(this,function(a){0<=a&&a<F&&(I[this.format.currentStylePage].style.background="transparent",w.innerHTML="",this.format.currentStylePage=a,B())});if(1<F){k=document.createElement("div");k.style.whiteSpace="nowrap";k.style.position="relative";k.style.textAlign="center";k.style.paddingTop="4px";k.style.width="210px";a.style.paddingBottom="8px";for(p=0;p<F;p++){var z=document.createElement("div");z.style.display="inline-block";
+z.style.width="6px";z.style.height="6px";z.style.marginLeft="4px";z.style.marginRight="3px";z.style.borderRadius="3px";z.style.cursor="pointer";z.style.background="transparent";z.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(a,b){mxEvent.addListener(z,"click",mxUtils.bind(this,function(){G(a)}))})(p,z);k.appendChild(z);I.push(z)}a.appendChild(k);B();15>F&&(g=function(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity=
"0.5"})},n=document.createElement("div"),n.style.position="absolute",n.style.left="0px",n.style.top="0px",n.style.bottom="0px",n.style.width="24px",n.style.height="24px",n.style.margin="0px",n.style.cursor="pointer",n.style.opacity="0.5",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="center center",n.style.backgroundSize="24px 24px",n.style.backgroundImage="url("+Editor.previousImage+")",Editor.isDarkMode()&&(n.style.filter="invert(100%)"),p=n.cloneNode(!1),p.style.backgroundImage=
-"url("+Editor.nextImage+")",p.style.left="",p.style.right="2px",h.appendChild(n),h.appendChild(p),mxEvent.addListener(n,"click",mxUtils.bind(this,function(){G(mxUtils.mod(this.format.currentStylePage-1,F))})),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){G(mxUtils.mod(this.format.currentStylePage+1,F))})),g(n),g(p))}else A();return a};
+"url("+Editor.nextImage+")",p.style.left="",p.style.right="2px",k.appendChild(n),k.appendChild(p),mxEvent.addListener(n,"click",mxUtils.bind(this,function(){G(mxUtils.mod(this.format.currentStylePage-1,F))})),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){G(mxUtils.mod(this.format.currentStylePage+1,F))})),g(n),g(p))}else B();return a};
DiagramStylePanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.darkModeChangedListener&&(this.editorUi.removeListener(this.darkModeChangedListener),this.darkModeChangedListener=null)};DiagramFormatPanel=function(a,b,c){BaseFormatPanel.call(this,a,b,c);this.init()};mxUtils.extend(DiagramFormatPanel,BaseFormatPanel);DiagramFormatPanel.showPageView=!0;DiagramFormatPanel.prototype.showBackgroundImageOption=!0;
DiagramFormatPanel.prototype.init=function(){var a=this.editorUi.editor.graph;this.container.appendChild(this.addView(this.createPanel()));a.isEnabled()&&(this.container.appendChild(this.addOptions(this.createPanel())),this.container.appendChild(this.addPaperSize(this.createPanel())),this.container.appendChild(this.addStyleOps(this.createPanel())))};
DiagramFormatPanel.prototype.addView=function(a){var b=this.editorUi,c=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("view")));this.addGridOption(a);DiagramFormatPanel.showPageView&&a.appendChild(this.createOption(mxResources.get("pageView"),function(){return c.pageVisible},function(a){b.actions.get("pageView").funct()},{install:function(a){this.listener=function(){a(c.pageVisible)};b.addListener("pageViewChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}}));
@@ -3241,20 +3236,19 @@ DiagramFormatPanel.prototype.addOptions=function(a){var b=this.editorUi,c=b.edit
a.appendChild(this.createOption(mxResources.get("connectionPoints"),function(){return c.connectionHandler.isEnabled()},function(a){b.actions.get("connectionPoints").funct()},{install:function(a){this.listener=function(){a(c.connectionHandler.isEnabled())};b.addListener("connectionPointsChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}})),a.appendChild(this.createOption(mxResources.get("guides"),function(){return c.graphHandler.guidesEnabled},function(a){b.actions.get("guides").funct()},
{install:function(a){this.listener=function(){a(c.graphHandler.guidesEnabled)};b.addListener("guidesEnabledChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}})));return a};
DiagramFormatPanel.prototype.addGridOption=function(a){function b(a){var b=c.isFloatUnit()?parseFloat(f.value):parseInt(f.value),b=c.fromUnit(Math.max(c.inUnit(1),isNaN(b)?c.inUnit(10):b));b!=d.getGridSize()&&(mxGraph.prototype.gridSize=b,d.setGridSize(b));f.value=c.inUnit(b)+" "+c.getUnit();mxEvent.consume(a)}var c=this,e=this.editorUi,d=e.editor.graph,f=document.createElement("input");f.style.position="absolute";f.style.textAlign="right";f.style.width="48px";f.style.marginTop="-2px";f.style.height=
-"21px";f.style.border="1px solid rgb(160, 160, 160)";f.style.borderRadius="4px";f.style.boxSizing="border-box";f.value=this.inUnit(d.getGridSize())+" "+this.getUnit();var k=this.createStepper(f,b,this.getUnitStep(),null,null,null,this.isFloatUnit());f.style.display=d.isGridEnabled()?"":"none";k.style.display=f.style.display;mxEvent.addListener(f,"keydown",function(a){13==a.keyCode?(d.container.focus(),mxEvent.consume(a)):27==a.keyCode&&(f.value=d.getGridSize(),d.container.focus(),mxEvent.consume(a))});
-mxEvent.addListener(f,"blur",b);mxEvent.addListener(f,"change",b);f.style.right="78px";k.style.marginTop="-17px";k.style.right="66px";var h=this.createColorOption(mxResources.get("grid"),function(){var a=d.view.gridColor;return d.isGridEnabled()?a:null},function(a){var b=d.isGridEnabled();a==mxConstants.NONE?d.setGridEnabled(!1):(d.setGridEnabled(!0),e.setGridColor(a));f.style.display=d.isGridEnabled()?"":"none";k.style.display=f.style.display;b!=d.isGridEnabled()&&(d.defaultGridEnabled=d.isGridEnabled(),
-e.fireEvent(new mxEventObject("gridEnabledChanged")))},Editor.isDarkMode()?d.view.defaultDarkGridColor:d.view.defaultGridColor,{install:function(a){this.listener=function(){a(d.isGridEnabled()?d.view.gridColor:null)};e.addListener("gridColorChanged",this.listener);e.addListener("gridEnabledChanged",this.listener)},destroy:function(){e.removeListener(this.listener)}});h.appendChild(f);h.appendChild(k);a.appendChild(h)};
+"21px";f.style.border="1px solid rgb(160, 160, 160)";f.style.borderRadius="4px";f.style.boxSizing="border-box";f.value=this.inUnit(d.getGridSize())+" "+this.getUnit();var h=this.createStepper(f,b,this.getUnitStep(),null,null,null,this.isFloatUnit());f.style.display=d.isGridEnabled()?"":"none";h.style.display=f.style.display;mxEvent.addListener(f,"keydown",function(a){13==a.keyCode?(d.container.focus(),mxEvent.consume(a)):27==a.keyCode&&(f.value=d.getGridSize(),d.container.focus(),mxEvent.consume(a))});
+mxEvent.addListener(f,"blur",b);mxEvent.addListener(f,"change",b);f.style.right="78px";h.style.marginTop="-17px";h.style.right="66px";var k=this.createColorOption(mxResources.get("grid"),function(){var a=d.view.gridColor;return d.isGridEnabled()?a:null},function(a){var b=d.isGridEnabled();a==mxConstants.NONE?d.setGridEnabled(!1):(d.setGridEnabled(!0),e.setGridColor(a));f.style.display=d.isGridEnabled()?"":"none";h.style.display=f.style.display;b!=d.isGridEnabled()&&(d.defaultGridEnabled=d.isGridEnabled(),
+e.fireEvent(new mxEventObject("gridEnabledChanged")))},Editor.isDarkMode()?d.view.defaultDarkGridColor:d.view.defaultGridColor,{install:function(a){this.listener=function(){a(d.isGridEnabled()?d.view.gridColor:null)};e.addListener("gridColorChanged",this.listener);e.addListener("gridEnabledChanged",this.listener)},destroy:function(){e.removeListener(this.listener)}});k.appendChild(f);k.appendChild(h);a.appendChild(k)};
DiagramFormatPanel.prototype.addDocumentProperties=function(a){a.appendChild(this.createTitle(mxResources.get("options")));return a};
DiagramFormatPanel.prototype.addPaperSize=function(a){var b=this.editorUi,c=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("paperSize")));var e=PageSetupDialog.addPageFormatPanel(a,"formatpanel",c.pageFormat,function(a){if(null==c.pageFormat||c.pageFormat.width!=a.width||c.pageFormat.height!=a.height)a=new ChangePageSetup(b,null,null,a),a.ignoreColor=!0,a.ignoreImage=!0,c.model.execute(a)});this.addKeyHandler(e.widthInput,function(){e.set(c.pageFormat)});this.addKeyHandler(e.heightInput,
-function(){e.set(c.pageFormat)});var d=function(){e.set(c.pageFormat)};b.addListener("pageFormatChanged",d);this.listeners.push({destroy:function(){b.removeListener(d)}});c.getModel().addListener(mxEvent.CHANGE,d);this.listeners.push({destroy:function(){c.getModel().removeListener(d)}});return a};
-DiagramFormatPanel.prototype.addStyleOps=function(a){var b=mxUtils.button(mxResources.get("editData"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editData").funct()}));b.setAttribute("title",mxResources.get("editData")+" ("+this.editorUi.actions.get("editData").shortcut+")");b.style.width="210px";b.style.marginBottom="2px";a.appendChild(b);mxUtils.br(a);b=mxUtils.button(mxResources.get("clearDefaultStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("clearDefaultStyle").funct()}));
-b.setAttribute("title",mxResources.get("clearDefaultStyle")+" ("+this.editorUi.actions.get("clearDefaultStyle").shortcut+")");b.style.width="210px";a.appendChild(b);return a};DiagramFormatPanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.gridEnabledListener&&(this.editorUi.removeListener(this.gridEnabledListener),this.gridEnabledListener=null)};(function(){function a(a,b,c){mxShape.call(this);this.line=a;this.stroke=b;this.strokewidth=null!=c?c:1;this.updateBoundsFromLine()}function b(){mxSwimlane.call(this)}function c(){mxCylinder.call(this)}function e(){mxCylinder.call(this)}function d(){mxActor.call(this)}function f(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function h(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function m(){mxShape.call(this)}function l(){mxShape.call(this)}function n(a,b,c,d){mxShape.call(this);
-this.bounds=a;this.fill=b;this.stroke=c;this.strokewidth=null!=d?d:1}function p(){mxActor.call(this)}function r(){mxCylinder.call(this)}function u(){mxCylinder.call(this)}function v(){mxActor.call(this)}function t(){mxActor.call(this)}function x(){mxActor.call(this)}function w(){mxActor.call(this)}function y(){mxActor.call(this)}function F(){mxActor.call(this)}function I(){mxActor.call(this)}function A(a,b){this.canvas=a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=
-b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,A.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,A.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,A.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,A.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,A.prototype.curveTo);this.originalArcTo=
-this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,A.prototype.arcTo)}function G(){mxRectangleShape.call(this)}function z(){mxRectangleShape.call(this)}function D(){mxActor.call(this)}function K(){mxActor.call(this)}function L(){mxActor.call(this)}function N(){mxRectangleShape.call(this)}function J(){mxRectangleShape.call(this)}function Q(){mxCylinder.call(this)}function X(){mxShape.call(this)}function ba(){mxShape.call(this)}function O(){mxEllipse.call(this)}function R(){mxShape.call(this)}function T(){mxShape.call(this)}
-function U(){mxRectangleShape.call(this)}function W(){mxShape.call(this)}function ka(){mxShape.call(this)}function ma(){mxShape.call(this)}function oa(){mxShape.call(this)}function pa(){mxShape.call(this)}function ga(){mxCylinder.call(this)}function na(){mxCylinder.call(this)}function ua(){mxRectangleShape.call(this)}function qa(){mxDoubleEllipse.call(this)}function ra(){mxDoubleEllipse.call(this)}function la(){mxArrowConnector.call(this);this.spacing=0}function ia(){mxArrowConnector.call(this);this.spacing=
-0}function ja(){mxActor.call(this)}function da(){mxRectangleShape.call(this)}function fa(){mxActor.call(this)}function sa(){mxActor.call(this)}function Y(){mxActor.call(this)}function Z(){mxActor.call(this)}function aa(){mxActor.call(this)}function P(){mxActor.call(this)}function V(){mxActor.call(this)}function ca(){mxActor.call(this)}function ea(){mxActor.call(this)}function ha(){mxActor.call(this)}function wa(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Fa(){mxEllipse.call(this)}
-function Na(){mxRhombus.call(this)}function Oa(){mxEllipse.call(this)}function Pa(){mxEllipse.call(this)}function Ga(){mxEllipse.call(this)}function Ha(){mxEllipse.call(this)}function Ia(){mxActor.call(this)}function za(){mxActor.call(this)}function Aa(){mxActor.call(this)}function M(a,b,c,d){mxShape.call(this);this.bounds=a;this.fill=b;this.stroke=c;this.strokewidth=null!=d?d:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function xa(){mxConnector.call(this)}
+function(){e.set(c.pageFormat)});var d=function(){e.set(c.pageFormat)};b.addListener("pageFormatChanged",d);this.listeners.push({destroy:function(){b.removeListener(d)}});c.getModel().addListener(mxEvent.CHANGE,d);this.listeners.push({destroy:function(){c.getModel().removeListener(d)}});return a};DiagramFormatPanel.prototype.addStyleOps=function(a){this.addActions(a,["editData"]);this.addActions(a,["clearDefaultStyle"]);return a};
+DiagramFormatPanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.gridEnabledListener&&(this.editorUi.removeListener(this.gridEnabledListener),this.gridEnabledListener=null)};(function(){function a(a,b,c){mxShape.call(this);this.line=a;this.stroke=b;this.strokewidth=null!=c?c:1;this.updateBoundsFromLine()}function b(){mxSwimlane.call(this)}function c(){mxCylinder.call(this)}function e(){mxCylinder.call(this)}function d(){mxActor.call(this)}function f(){mxCylinder.call(this)}function h(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function m(){mxShape.call(this)}function l(){mxShape.call(this)}function n(a,b,c,d){mxShape.call(this);
+this.bounds=a;this.fill=b;this.stroke=c;this.strokewidth=null!=d?d:1}function p(){mxActor.call(this)}function r(){mxCylinder.call(this)}function u(){mxCylinder.call(this)}function v(){mxActor.call(this)}function t(){mxActor.call(this)}function x(){mxActor.call(this)}function w(){mxActor.call(this)}function y(){mxActor.call(this)}function F(){mxActor.call(this)}function I(){mxActor.call(this)}function B(a,b){this.canvas=a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=
+b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,B.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,B.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,B.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,B.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,B.prototype.curveTo);this.originalArcTo=
+this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,B.prototype.arcTo)}function G(){mxRectangleShape.call(this)}function z(){mxRectangleShape.call(this)}function D(){mxActor.call(this)}function K(){mxActor.call(this)}function L(){mxActor.call(this)}function N(){mxRectangleShape.call(this)}function J(){mxRectangleShape.call(this)}function Q(){mxCylinder.call(this)}function Y(){mxShape.call(this)}function ca(){mxShape.call(this)}function O(){mxEllipse.call(this)}function R(){mxShape.call(this)}function T(){mxShape.call(this)}
+function U(){mxRectangleShape.call(this)}function X(){mxShape.call(this)}function ka(){mxShape.call(this)}function ma(){mxShape.call(this)}function oa(){mxShape.call(this)}function pa(){mxShape.call(this)}function ga(){mxCylinder.call(this)}function na(){mxCylinder.call(this)}function ua(){mxRectangleShape.call(this)}function qa(){mxDoubleEllipse.call(this)}function ra(){mxDoubleEllipse.call(this)}function la(){mxArrowConnector.call(this);this.spacing=0}function ia(){mxArrowConnector.call(this);this.spacing=
+0}function ja(){mxActor.call(this)}function ea(){mxRectangleShape.call(this)}function fa(){mxActor.call(this)}function sa(){mxActor.call(this)}function Z(){mxActor.call(this)}function aa(){mxActor.call(this)}function ba(){mxActor.call(this)}function P(){mxActor.call(this)}function W(){mxActor.call(this)}function da(){mxActor.call(this)}function V(){mxActor.call(this)}function ha(){mxActor.call(this)}function Ea(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function Fa(){mxEllipse.call(this)}
+function Na(){mxRhombus.call(this)}function Oa(){mxEllipse.call(this)}function Pa(){mxEllipse.call(this)}function Ga(){mxEllipse.call(this)}function Ha(){mxEllipse.call(this)}function Ia(){mxActor.call(this)}function ya(){mxActor.call(this)}function za(){mxActor.call(this)}function M(a,b,c,d){mxShape.call(this);this.bounds=a;this.fill=b;this.stroke=c;this.strokewidth=null!=d?d:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function wa(){mxConnector.call(this)}
function Sa(a,b,c,d,e,f,g,k,h,m){g+=h;var q=d.clone();d.x-=e*(2*g+h);d.y-=f*(2*g+h);e*=g+h;f*=g+h;return function(){a.ellipse(q.x-e-g,q.y-f-g,2*g,2*g);m?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,mxShape);a.prototype.updateBoundsFromLine=function(){var a=null;if(null!=this.line)for(var b=0;b<this.line.length;b++){var c=this.line[b];null!=c&&(c=new mxRectangle(c.x,c.y,this.strokewidth,this.strokewidth),null==a?a=c:a.add(c))}this.bounds=null!=a?a:new mxRectangle};a.prototype.paintVertexShape=function(a,
b,c,d,e){this.paintTableLine(a,this.line,0,0)};a.prototype.paintTableLine=function(a,b,c,d){if(null!=b){var e=null;a.begin();for(var q=0;q<b.length;q++){var f=b[q];null!=f&&(null==e?a.moveTo(f.x+c,f.y+d):null!=e&&a.lineTo(f.x+c,f.y+d));e=f}a.end();a.stroke()}};a.prototype.intersectsRectangle=function(a){var b=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var c=null,d=0;d<this.line.length&&!b;d++){var e=this.line[d];null!=e&&null!=c&&(b=mxUtils.rectangleIntersectsSegment(a,
c,e));c=e}return b};mxCellRenderer.registerShape("tableLine",a);mxUtils.extend(b,mxSwimlane);b.prototype.getLabelBounds=function(a){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};b.prototype.paintVertexShape=function(a,b,c,d,e){0==this.getTitleSize()?mxRectangleShape.prototype.paintBackground.apply(this,arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),a.translate(-b,-c));this.paintForeground(a,
@@ -3262,18 +3256,18 @@ b,c,d,e)};b.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.state){v
"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(f=0;f<e.length;f++)a.prototype.paintTableLine(b,e[f],c,d)};mxCellRenderer.registerShape("table",b);mxUtils.extend(c,mxCylinder);c.prototype.size=20;c.prototype.darkOpacity=0;c.prototype.darkOpacity2=0;c.prototype.paintVertexShape=function(a,b,c,d,e){var q=Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),f=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"darkOpacity",this.darkOpacity)))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(b,c);a.begin();a.moveTo(0,0);a.lineTo(d-q,0);a.lineTo(d,q);a.lineTo(d,e);a.lineTo(q,e);a.lineTo(0,e-q);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=f&&(a.setFillAlpha(Math.abs(f)),a.setFillColor(0>f?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(d-q,0),a.lineTo(d,q),a.lineTo(q,q),a.close(),a.fill()),0!=g&&
(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(q,q),a.lineTo(q,e),a.lineTo(0,e-q),a.close(),a.fill()),a.begin(),a.moveTo(q,e),a.lineTo(q,q),a.lineTo(0,0),a.moveTo(q,q),a.lineTo(d,q),a.end(),a.stroke())};c.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",c);var Qa=Math.tan(mxUtils.toRadians(30)),
-ya=(.5-Qa)/2;mxCellRenderer.registerShape("isoRectangle",d);mxUtils.extend(e,mxCylinder);e.prototype.size=6;e.prototype.paintVertexShape=function(a,b,c,d,e){a.setFillColor(this.stroke);var q=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;a.ellipse(b+.5*(d-q),c+.5*(e-q),q,q);a.fill();a.setFillColor(mxConstants.NONE);a.rect(b,c,d,e);a.fill()};mxCellRenderer.registerShape("waypoint",e);mxUtils.extend(d,mxActor);d.prototype.size=20;d.prototype.redrawPath=function(a,
-b,c,d,e){b=Math.min(d,e/Qa);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5*b,b*ya);a.lineTo(b,.25*b);a.lineTo(.5*b,(.5-ya)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",d);mxUtils.extend(f,mxCylinder);f.prototype.size=20;f.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(d,e/(.5+Qa));f?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-ya)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-ya)*b),a.lineTo(.5*b,(1-ya)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*
-b),a.lineTo(.5*b,b*ya),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-ya)*b),a.lineTo(0,.75*b),a.close());a.end()};mxCellRenderer.registerShape("isoCube",f);mxUtils.extend(k,mxCylinder);k.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(e/2,Math.round(e/8)+this.strokewidth-1);if(f&&null!=this.fill||!f&&null==this.fill)a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,b/2),
-a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,-b);f||(a.moveTo(0,b),a.curveTo(0,-b/3,d,-b/3,d,b),a.lineTo(d,e-b),a.curveTo(d,e+b/3,0,e+b/3,0,e-b),a.close())};k.prototype.getLabelMargins=function(a){return new mxRectangle(0,2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",k);mxUtils.extend(h,mxCylinder);h.prototype.size=30;h.prototype.darkOpacity=0;h.prototype.paintVertexShape=function(a,b,c,d,e){var q=
+xa=(.5-Qa)/2;mxCellRenderer.registerShape("isoRectangle",d);mxUtils.extend(e,mxCylinder);e.prototype.size=6;e.prototype.paintVertexShape=function(a,b,c,d,e){a.setFillColor(this.stroke);var q=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;a.ellipse(b+.5*(d-q),c+.5*(e-q),q,q);a.fill();a.setFillColor(mxConstants.NONE);a.rect(b,c,d,e);a.fill()};mxCellRenderer.registerShape("waypoint",e);mxUtils.extend(d,mxActor);d.prototype.size=20;d.prototype.redrawPath=function(a,
+b,c,d,e){b=Math.min(d,e/Qa);a.translate((d-b)/2,(e-b)/2+b/4);a.moveTo(0,.25*b);a.lineTo(.5*b,b*xa);a.lineTo(b,.25*b);a.lineTo(.5*b,(.5-xa)*b);a.lineTo(0,.25*b);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",d);mxUtils.extend(f,mxCylinder);f.prototype.size=20;f.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(d,e/(.5+Qa));f?(a.moveTo(0,.25*b),a.lineTo(.5*b,(.5-xa)*b),a.lineTo(b,.25*b),a.moveTo(.5*b,(.5-xa)*b),a.lineTo(.5*b,(1-xa)*b)):(a.translate((d-b)/2,(e-b)/2),a.moveTo(0,.25*
+b),a.lineTo(.5*b,b*xa),a.lineTo(b,.25*b),a.lineTo(b,.75*b),a.lineTo(.5*b,(1-xa)*b),a.lineTo(0,.75*b),a.close());a.end()};mxCellRenderer.registerShape("isoCube",f);mxUtils.extend(h,mxCylinder);h.prototype.redrawPath=function(a,b,c,d,e,f){b=Math.min(e/2,Math.round(e/8)+this.strokewidth-1);if(f&&null!=this.fill||!f&&null==this.fill)a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,b/2),a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,b/2),
+a.moveTo(0,b),a.curveTo(0,2*b,d,2*b,d,b),f||(a.stroke(),a.begin()),a.translate(0,-b);f||(a.moveTo(0,b),a.curveTo(0,-b/3,d,-b/3,d,b),a.lineTo(d,e-b),a.curveTo(d,e+b/3,0,e+b/3,0,e-b),a.close())};h.prototype.getLabelMargins=function(a){return new mxRectangle(0,2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",h);mxUtils.extend(k,mxCylinder);k.prototype.size=30;k.prototype.darkOpacity=0;k.prototype.paintVertexShape=function(a,b,c,d,e){var q=
Math.max(0,Math.min(d,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),f=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(b,c);a.begin();a.moveTo(0,0);a.lineTo(d-q,0);a.lineTo(d,q);a.lineTo(d,e);a.lineTo(0,e);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=f&&(a.setFillAlpha(Math.abs(f)),a.setFillColor(0>f?"#FFFFFF":"#000000"),a.begin(),a.moveTo(d-q,0),a.lineTo(d-q,q),a.lineTo(d,
-q),a.close(),a.fill()),a.begin(),a.moveTo(d-q,0),a.lineTo(d-q,q),a.lineTo(d,q),a.end(),a.stroke())};mxCellRenderer.registerShape("note",h);mxUtils.extend(g,h);mxCellRenderer.registerShape("note2",g);g.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(a.height*this.scale,b*this.scale),0,0)}return null};mxUtils.extend(m,mxShape);m.prototype.isoAngle=15;m.prototype.paintVertexShape=function(a,
+q),a.close(),a.fill()),a.begin(),a.moveTo(d-q,0),a.lineTo(d-q,q),a.lineTo(d,q),a.end(),a.stroke())};mxCellRenderer.registerShape("note",k);mxUtils.extend(g,k);mxCellRenderer.registerShape("note2",g);g.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(a.height*this.scale,b*this.scale),0,0)}return null};mxUtils.extend(m,mxShape);m.prototype.isoAngle=15;m.prototype.paintVertexShape=function(a,
b,c,d,e){var q=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,q=Math.min(d*Math.tan(q),.5*e);a.translate(b,c);a.begin();a.moveTo(.5*d,0);a.lineTo(d,q);a.lineTo(d,e-q);a.lineTo(.5*d,e);a.lineTo(0,e-q);a.lineTo(0,q);a.close();a.fillAndStroke();a.setShadow(!1);a.begin();a.moveTo(0,q);a.lineTo(.5*d,2*q);a.lineTo(d,q);a.moveTo(.5*d,2*q);a.lineTo(.5*d,e);a.stroke()};mxCellRenderer.registerShape("isoCube2",m);mxUtils.extend(l,mxShape);l.prototype.size=
15;l.prototype.paintVertexShape=function(a,b,c,d,e){var q=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.translate(b,c);0==q?(a.rect(0,0,d,e),a.fillAndStroke()):(a.begin(),a.moveTo(0,q),a.arcTo(.5*d,q,0,0,1,.5*d,0),a.arcTo(.5*d,q,0,0,1,d,q),a.lineTo(d,e-q),a.arcTo(.5*d,q,0,0,1,.5*d,e),a.arcTo(.5*d,q,0,0,1,0,e-q),a.close(),a.fillAndStroke(),a.setShadow(!1),a.begin(),a.moveTo(d,q),a.arcTo(.5*d,q,0,0,1,.5*d,2*q),a.arcTo(.5*d,q,0,0,1,0,q),a.stroke())};mxCellRenderer.registerShape("cylinder2",
l);mxUtils.extend(n,mxCylinder);n.prototype.size=15;n.prototype.paintVertexShape=function(a,b,c,d,e){var q=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=mxUtils.getValue(this.style,"lid",!0);a.translate(b,c);0==q?(a.rect(0,0,d,e),a.fillAndStroke()):(a.begin(),f?(a.moveTo(0,q),a.arcTo(.5*d,q,0,0,1,.5*d,0),a.arcTo(.5*d,q,0,0,1,d,q)):(a.moveTo(0,0),a.arcTo(.5*d,q,0,0,0,.5*d,q),a.arcTo(.5*d,q,0,0,0,d,0)),a.lineTo(d,e-q),a.arcTo(.5*d,q,0,0,1,.5*d,e),a.arcTo(.5*
d,q,0,0,1,0,e-q),a.close(),a.fillAndStroke(),a.setShadow(!1),f&&(a.begin(),a.moveTo(d,q),a.arcTo(.5*d,q,0,0,1,.5*d,2*q),a.arcTo(.5*d,q,0,0,1,0,q),a.stroke()))};mxCellRenderer.registerShape("cylinder3",n);mxUtils.extend(p,mxActor);p.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d/2,.5*e,d,0);a.quadTo(.5*d,e/2,d,e);a.quadTo(d/2,.5*e,0,e);a.quadTo(.5*d,e/2,0,0);a.end()};mxCellRenderer.registerShape("switch",p);mxUtils.extend(r,mxCylinder);r.prototype.tabWidth=60;r.prototype.tabHeight=
-20;r.prototype.tabPosition="right";r.prototype.arcSize=.1;r.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var q=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),f=mxUtils.getValue(this.style,"rounded",!1),g=mxUtils.getValue(this.style,"absoluteArcSize",!1),k=parseFloat(mxUtils.getValue(this.style,
-"arcSize",this.arcSize));g||(k*=Math.min(d,e));k=Math.min(k,.5*d,.5*(e-c));b=Math.max(b,k);b=Math.min(d-k,b);f||(k=0);a.begin();"left"==q?(a.moveTo(Math.max(k,0),c),a.lineTo(Math.max(k,0),0),a.lineTo(b,0),a.lineTo(b,c)):(a.moveTo(d-b,c),a.lineTo(d-b,0),a.lineTo(d-Math.max(k,0),0),a.lineTo(d-Math.max(k,0),c));f?(a.moveTo(0,k+c),a.arcTo(k,k,0,0,1,k,c),a.lineTo(d-k,c),a.arcTo(k,k,0,0,1,d,k+c),a.lineTo(d,e-k),a.arcTo(k,k,0,0,1,d-k,e),a.lineTo(k,e),a.arcTo(k,k,0,0,1,0,e-k)):(a.moveTo(0,c),a.lineTo(d,c),
+20;r.prototype.tabPosition="right";r.prototype.arcSize=.1;r.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var q=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),f=mxUtils.getValue(this.style,"rounded",!1),g=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,
+"arcSize",this.arcSize));g||(A*=Math.min(d,e));A=Math.min(A,.5*d,.5*(e-c));b=Math.max(b,A);b=Math.min(d-A,b);f||(A=0);a.begin();"left"==q?(a.moveTo(Math.max(A,0),c),a.lineTo(Math.max(A,0),0),a.lineTo(b,0),a.lineTo(b,c)):(a.moveTo(d-b,c),a.lineTo(d-b,0),a.lineTo(d-Math.max(A,0),0),a.lineTo(d-Math.max(A,0),c));f?(a.moveTo(0,A+c),a.arcTo(A,A,0,0,1,A,c),a.lineTo(d-A,c),a.arcTo(A,A,0,0,1,d,A+c),a.lineTo(d,e-A),a.arcTo(A,A,0,0,1,d-A,e),a.lineTo(A,e),a.arcTo(A,A,0,0,1,0,e-A)):(a.moveTo(0,c),a.lineTo(d,c),
a.lineTo(d,e),a.lineTo(0,e));a.close();a.fillAndStroke();a.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(a.begin(),a.moveTo(d-30,c+20),a.lineTo(d-20,c+10),a.lineTo(d-10,c+20),a.close(),a.stroke())};mxCellRenderer.registerShape("folder",r);r.prototype.getLabelMargins=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var c=mxUtils.getValue(this.style,
"tabWidth",15)*this.scale,b=mxUtils.getValue(this.style,"tabHeight",15)*this.scale,d=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),q=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(q*=Math.min(a.width,a.height));q=Math.min(q,.5*a.width,.5*(a.height-b));d||(q=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(q,0,Math.min(a.width,a.width-c),Math.min(a.height,a.height-b)):new mxRectangle(Math.min(a.width,
a.width-c),0,q,Math.min(a.height,a.height-b))}return new mxRectangle(0,Math.min(a.height,b),0,0)}return null};mxUtils.extend(u,mxCylinder);u.prototype.arcSize=.1;u.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);var q=mxUtils.getValue(this.style,"rounded",!1),f=mxUtils.getValue(this.style,"absoluteArcSize",!1);b=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));c=mxUtils.getValue(this.style,"umlStateConnection",null);f||(b*=Math.min(d,e));b=Math.min(b,.5*d,.5*e);q||(b=
@@ -3290,35 +3284,35 @@ function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=mxUtils.getVa
d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(d,0),new mxPoint(d-b,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("parallelogram",w);mxUtils.extend(y,mxActor);y.prototype.size=.2;y.prototype.fixedSize=20;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath=function(a,b,c,d,e){b="0"!=
mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*d,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):d*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("trapezoid",y);mxUtils.extend(F,mxActor);F.prototype.size=
.5;F.prototype.redrawPath=function(a,b,c,d,e){a.setFillColor(null);b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(b,0),new mxPoint(b,e/2),new mxPoint(0,e/2),new mxPoint(b,e/2),new mxPoint(b,e),new mxPoint(d,e)],this.isRounded,c,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",F);mxUtils.extend(I,mxActor);I.prototype.redrawPath=
-function(a,b,c,d,e){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=d/5;a.rect(0,0,b,e);a.fillAndStroke();a.rect(2*b,0,b,e);a.fillAndStroke();a.rect(4*b,0,b,e);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",I);A.prototype.moveTo=function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;this.firstX=a;this.firstY=b};A.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,
-arguments));this.originalClose.apply(this.canvas,arguments)};A.prototype.quadTo=function(a,b,c,d){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=d};A.prototype.curveTo=function(a,b,c,d,e,f){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=f};A.prototype.arcTo=function(a,b,c,d,e,f,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=g};A.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var c=function(a){return"number"===
+function(a,b,c,d,e){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=d/5;a.rect(0,0,b,e);a.fillAndStroke();a.rect(2*b,0,b,e);a.fillAndStroke();a.rect(4*b,0,b,e);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",I);B.prototype.moveTo=function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;this.firstX=a;this.firstY=b};B.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,
+arguments));this.originalClose.apply(this.canvas,arguments)};B.prototype.quadTo=function(a,b,c,d){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=d};B.prototype.curveTo=function(a,b,c,d,e,f){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=f};B.prototype.arcTo=function(a,b,c,d,e,f,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=g};B.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var c=function(a){return"number"===
typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},d=Math.abs(a-this.lastX),e=Math.abs(b-this.lastY),q=Math.sqrt(d*d+e*e);if(2>q){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;return}var f=Math.round(q/10),g=this.defaultVariation;5>f&&(f=5,g/=3);for(var k=c(a-this.lastX)*d/f,c=c(b-this.lastY)*e/f,d=d/q,e=e/q,q=0;q<f;q++){var h=(Math.random()-.5)*g;this.originalLineTo.call(this.canvas,k*q+this.lastX-h*e,c*q+this.lastY-h*d)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,
-arguments);this.lastX=a;this.lastY=b};A.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var Ya=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(a){Ya.apply(this,arguments);null==a.handJiggle&&(a.handJiggle=this.createHandJiggle(a))};
-var Za=mxShape.prototype.afterPaint;mxShape.prototype.afterPaint=function(a){Za.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxShape.prototype.createComicCanvas=function(a){return new A(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(a){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(a)};mxRhombus.prototype.defaultJiggle=2;var $a=mxRectangleShape.prototype.isHtmlAllowed;
-mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&$a.apply(this,arguments)};var cb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,b,c,d,e){if(null==a.handJiggle||a.handJiggle.constructor!=A)cb.apply(this,arguments);else{var q=!0;null!=this.style&&(q="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
+arguments);this.lastX=a;this.lastY=b};B.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var Ya=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(a){Ya.apply(this,arguments);null==a.handJiggle&&(a.handJiggle=this.createHandJiggle(a))};
+var Za=mxShape.prototype.afterPaint;mxShape.prototype.afterPaint=function(a){Za.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxShape.prototype.createComicCanvas=function(a){return new B(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(a){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(a)};mxRhombus.prototype.defaultJiggle=2;var $a=mxRectangleShape.prototype.isHtmlAllowed;
+mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&$a.apply(this,arguments)};var cb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,b,c,d,e){if(null==a.handJiggle||a.handJiggle.constructor!=B)cb.apply(this,arguments);else{var q=!0;null!=this.style&&(q="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
"1"));if(q||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)q||null!=this.fill&&this.fill!=mxConstants.NONE||(a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?q=Math.min(d/2,Math.min(e/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,q=Math.min(d*
q,e*q)),a.moveTo(b+q,c),a.lineTo(b+d-q,c),a.quadTo(b+d,c,b+d,c+q),a.lineTo(b+d,c+e-q),a.quadTo(b+d,c+e,b+d-q,c+e),a.lineTo(b+q,c+e),a.quadTo(b,c+e,b,c+e-q),a.lineTo(b,c+q),a.quadTo(b,c,b+q,c)):(a.moveTo(b,c),a.lineTo(b+d,c),a.lineTo(b+d,c+e),a.lineTo(b,c+e),a.lineTo(b,c)),a.close(),a.end(),a.fillAndStroke()}};mxUtils.extend(G,mxRectangleShape);G.prototype.size=.1;G.prototype.fixedSize=!1;G.prototype.isHtmlAllowed=function(){return!1};G.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var b=a.width,c=a.height;a=new mxRectangle(a.x,a.y,b,c);var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(b*e,c*e));a.x+=Math.round(d);a.width-=Math.round(2*d)}return a};
G.prototype.paintForeground=function(a,b,c,d,e){var q=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),f=q?Math.max(0,Math.min(d,f)):d*Math.max(0,Math.min(1,f));this.isRounded&&(q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*q,e*q)));f=Math.round(f);a.begin();a.moveTo(b+f,c);a.lineTo(b+f,c+e);a.moveTo(b+d-f,c);a.lineTo(b+d-f,c+e);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("process",G);mxCellRenderer.registerShape("process2",G);mxUtils.extend(z,mxRectangleShape);z.prototype.paintBackground=function(a,b,c,d,e){a.setFillColor(mxConstants.NONE);a.rect(b,c,d,e);a.fill()};z.prototype.paintForeground=function(a,b,c,d,e){};mxCellRenderer.registerShape("transparent",z);mxUtils.extend(D,mxHexagon);D.prototype.size=30;D.prototype.position=.5;D.prototype.position2=.5;D.prototype.base=20;D.prototype.getLabelMargins=function(){return new mxRectangle(0,
-0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};D.prototype.isRoundable=function(){return!0};D.prototype.redrawPath=function(a,b,c,d,e){b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),q=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
-this.position2)))),g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-c),new mxPoint(Math.min(d,f+g),e-c),new mxPoint(q,e),new mxPoint(Math.max(0,f),e-c),new mxPoint(0,e-c)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",D);mxUtils.extend(K,mxActor);K.prototype.size=.2;K.prototype.fixedSize=20;K.prototype.isRoundable=function(){return!0};K.prototype.redrawPath=function(a,b,c,d,e){b=
+0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};D.prototype.isRoundable=function(){return!0};D.prototype.redrawPath=function(a,b,c,d,e){b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var q=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
+this.position2)))),g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-c),new mxPoint(Math.min(d,q+g),e-c),new mxPoint(f,e),new mxPoint(Math.max(0,q),e-c),new mxPoint(0,e-c)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",D);mxUtils.extend(K,mxActor);K.prototype.size=.2;K.prototype.fixedSize=20;K.prototype.isRoundable=function(){return!0};K.prototype.redrawPath=function(a,b,c,d,e){b=
"0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("step",K);
mxUtils.extend(L,mxHexagon);L.prototype.size=.25;L.prototype.fixedSize=20;L.prototype.isRoundable=function(){return!0};L.prototype.redrawPath=function(a,b,c,d,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*d,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,
0),new mxPoint(d-b,0),new mxPoint(d,.5*e),new mxPoint(d-b,e),new mxPoint(b,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("hexagon",L);mxUtils.extend(N,mxRectangleShape);N.prototype.isHtmlAllowed=function(){return!1};N.prototype.paintForeground=function(a,b,c,d,e){var f=Math.min(d/5,e/5)+1;a.begin();a.moveTo(b+d/2,c+f);a.lineTo(b+d/2,c+e-f);a.moveTo(b+f,c+e/2);a.lineTo(b+d-f,c+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
N);var Va=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Va.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&(a.setShadow(!1),Va.apply(this,[a,b,c,d,e]))}};mxUtils.extend(J,mxRectangleShape);J.prototype.isHtmlAllowed=function(){return!1};J.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};J.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=
-Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,q;do{q=mxCellRenderer.defaultShapes[this.style["symbol"+f]];if(null!=q){var g=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],h=this.style["symbol"+f+"Width"],m=this.style["symbol"+f+"Height"],E=this.style["symbol"+f+"Spacing"]||0,C=this.style["symbol"+f+"VSpacing"]||E,l=
-this.style["symbol"+f+"ArcSpacing"];null!=l&&(l*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),E+=l,C+=l);var l=b,B=c,l=g==mxConstants.ALIGN_CENTER?l+(d-h)/2:g==mxConstants.ALIGN_RIGHT?l+(d-h-E):l+E,B=k==mxConstants.ALIGN_MIDDLE?B+(e-m)/2:k==mxConstants.ALIGN_BOTTOM?B+(e-m-C):B+C;a.save();g=new q;g.style=this.style;q.prototype.paintVertexShape.call(g,a,l,B,h,m);a.restore()}f++}while(null!=q)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
-J);mxUtils.extend(Q,mxCylinder);Q.prototype.redrawPath=function(a,b,c,d,e,f){f?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message",Q);mxUtils.extend(X,mxShape);X.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/
-2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",X);mxUtils.extend(ba,mxShape);ba.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};ba.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
-ba);mxUtils.extend(O,mxEllipse);O.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",O);mxUtils.extend(R,mxShape);R.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(d,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",R);mxUtils.extend(T,mxShape);
+Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;c+=f;d-=2*f;e-=2*f;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,q;do{q=mxCellRenderer.defaultShapes[this.style["symbol"+f]];if(null!=q){var g=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],h=this.style["symbol"+f+"Width"],A=this.style["symbol"+f+"Height"],m=this.style["symbol"+f+"Spacing"]||0,E=this.style["symbol"+f+"VSpacing"]||m,l=
+this.style["symbol"+f+"ArcSpacing"];null!=l&&(l*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),m+=l,E+=l);var l=b,C=c,l=g==mxConstants.ALIGN_CENTER?l+(d-h)/2:g==mxConstants.ALIGN_RIGHT?l+(d-h-m):l+m,C=k==mxConstants.ALIGN_MIDDLE?C+(e-A)/2:k==mxConstants.ALIGN_BOTTOM?C+(e-A-E):C+E;a.save();g=new q;g.style=this.style;q.prototype.paintVertexShape.call(g,a,l,C,h,A);a.restore()}f++}while(null!=q)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
+J);mxUtils.extend(Q,mxCylinder);Q.prototype.redrawPath=function(a,b,c,d,e,f){f?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message",Q);mxUtils.extend(Y,mxShape);Y.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/
+2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",Y);mxUtils.extend(ca,mxShape);ca.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};ca.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
+ca);mxUtils.extend(O,mxEllipse);O.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",O);mxUtils.extend(R,mxShape);R.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(d,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",R);mxUtils.extend(T,mxShape);
T.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};T.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0,e/8,d,7*e/8);a.fillAndStroke()};T.prototype.paintForeground=function(a,b,c,d,e){a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,e/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",T);mxUtils.extend(U,mxRectangleShape);U.prototype.size=
40;U.prototype.isHtmlAllowed=function(){return!1};U.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};U.prototype.paintBackground=function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),q=mxUtils.getValue(this.style,"participant");null==q||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,
c,d,f):(q=this.state.view.graph.cellRenderer.getShape(q),null!=q&&q!=U&&(q=new q,q.apply(this.state),a.save(),q.paintVertexShape(a,b,c,d,f),a.restore()));f<e&&(a.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),a.begin(),a.moveTo(b+d/2,c+f),a.lineTo(b+d/2,c+e),a.end(),a.stroke())};U.prototype.paintForeground=function(a,b,c,d,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,c,d,Math.min(e,
-f))};mxCellRenderer.registerShape("umlLifeline",U);mxUtils.extend(W,mxShape);W.prototype.width=60;W.prototype.height=30;W.prototype.corner=10;W.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};W.prototype.paintBackground=function(a,b,c,d,e){var f=this.corner,q=Math.min(d,Math.max(f,parseFloat(mxUtils.getValue(this.style,
+f))};mxCellRenderer.registerShape("umlLifeline",U);mxUtils.extend(X,mxShape);X.prototype.width=60;X.prototype.height=30;X.prototype.corner=10;X.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};X.prototype.paintBackground=function(a,b,c,d,e){var f=this.corner,q=Math.min(d,Math.max(f,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),g=Math.min(e,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(a.setFillColor(k),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(a,b,c,d,e),a.setGradient(this.fill,this.gradient,b,c,d,e,this.gradientDirection)):a.setFillColor(this.fill);a.begin();
-a.moveTo(b,c);a.lineTo(b+q,c);a.lineTo(b+q,c+Math.max(0,g-1.5*f));a.lineTo(b+Math.max(0,q-f),c+g);a.lineTo(b,c+g);a.close();a.fillAndStroke();a.begin();a.moveTo(b+q,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+g);a.stroke()};mxCellRenderer.registerShape("umlFrame",W);mxPerimeter.CenterPerimeter=function(a,b,c,d){return new mxPoint(a.getCenterX(),a.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(a,b,
+a.moveTo(b,c);a.lineTo(b+q,c);a.lineTo(b+q,c+Math.max(0,g-1.5*f));a.lineTo(b+Math.max(0,q-f),c+g);a.lineTo(b,c+g);a.close();a.fillAndStroke();a.begin();a.moveTo(b+q,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+g);a.stroke()};mxCellRenderer.registerShape("umlFrame",X);mxPerimeter.CenterPerimeter=function(a,b,c,d){return new mxPoint(a.getCenterX(),a.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(a,b,
c,d){d=U.prototype.size;null!=b&&(d=mxUtils.getValue(b.style,"size",d)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;c.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+d,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,c,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(a,b,c,d){d=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(d+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return c.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,c.y)));c.y<a.getCenterY()&&(d=-1*(d+1));return new mxPoint(Math.min(a.x+
a.width,Math.max(a.x,c.x)),a.getCenterY()+d)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,b,c,d){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(b.style,"size",D.prototype.size))*b.view.scale))),b.style),b,c,d)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,
@@ -3341,58 +3335,58 @@ function(a,b,c,d,e){var f=d/2,g=e/2,q=mxUtils.getValue(this.style,mxConstants.ST
Math.min(d/5,e/5));0<d&&0<e&&(a.ellipse(b+f,c+f,d-2*f,e-2*f),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(b,c,d,e),a.stroke())};mxCellRenderer.registerShape("endState",qa);mxUtils.extend(ra,qa);ra.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",ra);mxUtils.extend(la,mxArrowConnector);la.prototype.defaultWidth=4;la.prototype.isOpenEnded=function(){return!0};la.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
this.strokewidth-1)};la.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",la);mxUtils.extend(ia,mxArrowConnector);ia.prototype.defaultWidth=10;ia.prototype.defaultArrowWidth=20;ia.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};ia.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};ia.prototype.getEdgeWidth=
function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",ia);mxUtils.extend(ja,mxActor);ja.prototype.size=30;ja.prototype.isRoundable=function(){return!0};ja.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(0,b),new mxPoint(d,
-0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("manualInput",ja);mxUtils.extend(da,mxRectangleShape);da.prototype.dx=20;da.prototype.dy=20;da.prototype.isHtmlAllowed=function(){return!1};da.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));g=
-Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+f);a.lineTo(b+d,c+f);a.end();a.stroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",da);mxUtils.extend(fa,mxActor);fa.prototype.dx=20;fa.prototype.dy=20;fa.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,
+0),new mxPoint(d,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("manualInput",ja);mxUtils.extend(ea,mxRectangleShape);ea.prototype.dx=20;ea.prototype.dy=20;ea.prototype.isHtmlAllowed=function(){return!1};ea.prototype.paintForeground=function(a,b,c,d,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(d*g,e*g));g=
+Math.max(f,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(b,c+f);a.lineTo(b+d,c+f);a.end();a.stroke();a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",ea);mxUtils.extend(fa,mxActor);fa.prototype.dx=20;fa.prototype.dy=20;fa.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,
"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(b,c),new mxPoint(b,e),new mxPoint(0,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("corner",fa);mxUtils.extend(sa,mxActor);sa.prototype.redrawPath=function(a,b,c,
-d,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(d,0);a.lineTo(d,e);a.end();a.moveTo(0,e/2);a.lineTo(d,e/2);a.end()};mxCellRenderer.registerShape("crossbar",sa);mxUtils.extend(Y,mxActor);Y.prototype.dx=20;Y.prototype.dy=20;Y.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint((d+b)/2,c),new mxPoint((d+b)/2,e),new mxPoint((d-b)/2,e),new mxPoint((d-b)/2,c),new mxPoint(0,c)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("tee",Y);mxUtils.extend(Z,mxActor);Z.prototype.arrowWidth=.3;Z.prototype.arrowSize=.2;Z.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
-this.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",Z);mxUtils.extend(aa,mxActor);aa.prototype.redrawPath=function(a,
-b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",Z.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",Z.prototype.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(b,
-f),new mxPoint(b,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",aa);mxUtils.extend(P,mxActor);P.prototype.size=.1;P.prototype.fixedSize=20;P.prototype.redrawPath=function(a,b,c,d,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);
-a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",P);mxUtils.extend(V,mxActor);V.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.registerShape("or",V);mxUtils.extend(ca,mxActor);ca.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0);a.close();a.end()};mxCellRenderer.registerShape("xor",ca);mxUtils.extend(ea,mxActor);ea.prototype.size=
-20;ea.prototype.isRoundable=function(){return!0};ea.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.8*b),new mxPoint(d,e),new mxPoint(0,e),new mxPoint(0,.8*b)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("loopLimit",ea);mxUtils.extend(ha,mxActor);ha.prototype.size=
-.375;ha.prototype.isRoundable=function(){return!0};ha.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-b),new mxPoint(d/2,e),new mxPoint(0,e-b)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("offPageConnector",ha);mxUtils.extend(wa,mxEllipse);wa.prototype.paintVertexShape=
-function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",wa);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",
-Ba);mxUtils.extend(Fa,mxEllipse);Fa.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse",Fa);mxUtils.extend(Na,mxRhombus);Na.prototype.paintVertexShape=function(a,b,c,d,e){mxRhombus.prototype.paintVertexShape.apply(this,
+d,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(d,0);a.lineTo(d,e);a.end();a.moveTo(0,e/2);a.lineTo(d,e/2);a.end()};mxCellRenderer.registerShape("crossbar",sa);mxUtils.extend(Z,mxActor);Z.prototype.dx=20;Z.prototype.dy=20;Z.prototype.redrawPath=function(a,b,c,d,e){b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,
+mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,c),new mxPoint((d+b)/2,c),new mxPoint((d+b)/2,e),new mxPoint((d-b)/2,e),new mxPoint((d-b)/2,c),new mxPoint(0,c)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("tee",Z);mxUtils.extend(aa,mxActor);aa.prototype.arrowWidth=.3;aa.prototype.arrowSize=.2;aa.prototype.redrawPath=function(a,b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
+this.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",aa);mxUtils.extend(ba,mxActor);ba.prototype.redrawPath=function(a,
+b,c,d,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",aa.prototype.arrowWidth))));b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",aa.prototype.arrowSize))));c=(e-f)/2;var f=c+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,c),new mxPoint(d-b,c),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(d-b,f),new mxPoint(b,
+f),new mxPoint(b,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",ba);mxUtils.extend(P,mxActor);P.prototype.size=.1;P.prototype.fixedSize=20;P.prototype.redrawPath=function(a,b,c,d,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(b,0);a.lineTo(d,0);a.quadTo(d-2*b,e/2,d,e);a.lineTo(b,e);
+a.quadTo(b-2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",P);mxUtils.extend(W,mxActor);W.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.close();a.end()};mxCellRenderer.registerShape("or",W);mxUtils.extend(da,mxActor);da.prototype.redrawPath=function(a,b,c,d,e){a.moveTo(0,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,0,e);a.quadTo(d/2,e/2,0,0);a.close();a.end()};mxCellRenderer.registerShape("xor",da);mxUtils.extend(V,mxActor);V.prototype.size=
+20;V.prototype.isRoundable=function(){return!0};V.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.8*b),new mxPoint(d,e),new mxPoint(0,e),new mxPoint(0,.8*b)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("loopLimit",V);mxUtils.extend(ha,mxActor);ha.prototype.size=
+.375;ha.prototype.isRoundable=function(){return!0};ha.prototype.redrawPath=function(a,b,c,d,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-b),new mxPoint(d/2,e),new mxPoint(0,e-b)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("offPageConnector",ha);mxUtils.extend(Ea,mxEllipse);Ea.prototype.paintVertexShape=
+function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/2,c+e);a.lineTo(b+d,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",Ea);mxUtils.extend(Aa,mxEllipse);Aa.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke();a.begin();a.moveTo(b+d/2,c);a.lineTo(b+d/2,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",
+Aa);mxUtils.extend(Fa,mxEllipse);Fa.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*d,c+.145*e);a.lineTo(b+.855*d,c+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*d,c+.145*e);a.lineTo(b+.145*d,c+.855*e);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse",Fa);mxUtils.extend(Na,mxRhombus);Na.prototype.paintVertexShape=function(a,b,c,d,e){mxRhombus.prototype.paintVertexShape.apply(this,
arguments);a.setShadow(!1);a.begin();a.moveTo(b,c+e/2);a.lineTo(b+d,c+e/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",Na);mxUtils.extend(Oa,mxEllipse);Oa.prototype.paintVertexShape=function(a,b,c,d,e){a.begin();a.moveTo(b,c);a.lineTo(b+d,c);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke();a.begin();a.moveTo(b,c+e);a.lineTo(b+d,c+e);a.lineTo(b+d/2,c+e/2);a.close();a.fillAndStroke()};mxCellRenderer.registerShape("collate",Oa);mxUtils.extend(Pa,mxEllipse);Pa.prototype.paintVertexShape=
function(a,b,c,d,e){var f=c+e-5;a.begin();a.moveTo(b,c);a.lineTo(b,c+e);a.moveTo(b,f);a.lineTo(b+10,f-5);a.moveTo(b,f);a.lineTo(b+10,f+5);a.moveTo(b,f);a.lineTo(b+d,f);a.moveTo(b+d,c);a.lineTo(b+d,c+e);a.moveTo(b+d,f);a.lineTo(b+d-10,f-5);a.moveTo(b+d,f);a.lineTo(b+d-10,f+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension",Pa);mxUtils.extend(Ga,mxEllipse);Ga.prototype.paintVertexShape=function(a,b,c,d,e){this.outline||a.setStrokeColor(null);if(null!=this.style){var f=a.pointerEvents;"1"==
mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||null!=this.fill&&this.fill!=mxConstants.NONE||(a.pointerEvents=!1);a.rect(b,c,d,e);a.fill();a.pointerEvents=f;a.setStrokeColor(this.stroke);a.setLineCap("square");a.begin();a.moveTo(b,c);this.outline||"1"==mxUtils.getValue(this.style,"top","1")?a.lineTo(b+d,c):a.moveTo(b+d,c);this.outline||"1"==mxUtils.getValue(this.style,"right","1")?a.lineTo(b+d,c+e):a.moveTo(b+d,c+e);this.outline||"1"==mxUtils.getValue(this.style,"bottom","1")?
a.lineTo(b,c+e):a.moveTo(b,c+e);(this.outline||"1"==mxUtils.getValue(this.style,"left","1"))&&a.lineTo(b,c);a.end();a.stroke();a.setLineCap("flat")}};mxCellRenderer.registerShape("partialRectangle",Ga);mxUtils.extend(Ha,mxEllipse);Ha.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+d/2,c),a.lineTo(b+d/2,c+e)):(a.moveTo(b,c+e/2),a.lineTo(b+d,c+e/2));a.end();
-a.stroke()};mxCellRenderer.registerShape("lineEllipse",Ha);mxUtils.extend(Ia,mxActor);Ia.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);a.moveTo(0,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.registerShape("delay",Ia);mxUtils.extend(za,mxActor);za.prototype.size=.2;za.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,d);var f=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=(e-f)/2;c=
-b+f;var g=(d-f)/2,f=g+f;a.moveTo(0,b);a.lineTo(g,b);a.lineTo(g,0);a.lineTo(f,0);a.lineTo(f,b);a.lineTo(d,b);a.lineTo(d,c);a.lineTo(f,c);a.lineTo(f,e);a.lineTo(g,e);a.lineTo(g,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.registerShape("cross",za);mxUtils.extend(Aa,mxActor);Aa.prototype.size=.25;Aa.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,
-0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.registerShape("display",Aa);mxUtils.extend(M,mxActor);M.prototype.cst={RECT2:"mxgraph.basic.rect"};M.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"size",dispName:"Corner Size",type:"float",defVal:10},
+a.stroke()};mxCellRenderer.registerShape("lineEllipse",Ha);mxUtils.extend(Ia,mxActor);Ia.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);a.moveTo(0,0);a.lineTo(d-b,0);a.quadTo(d,0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.registerShape("delay",Ia);mxUtils.extend(ya,mxActor);ya.prototype.size=.2;ya.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(e,d);var f=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=(e-f)/2;c=
+b+f;var g=(d-f)/2,f=g+f;a.moveTo(0,b);a.lineTo(g,b);a.lineTo(g,0);a.lineTo(f,0);a.lineTo(f,b);a.lineTo(d,b);a.lineTo(d,c);a.lineTo(f,c);a.lineTo(f,e);a.lineTo(g,e);a.lineTo(g,c);a.lineTo(0,c);a.close();a.end()};mxCellRenderer.registerShape("cross",ya);mxUtils.extend(za,mxActor);za.prototype.size=.25;za.prototype.redrawPath=function(a,b,c,d,e){b=Math.min(d,e/2);c=Math.min(d-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);a.moveTo(0,e/2);a.lineTo(c,0);a.lineTo(d-b,0);a.quadTo(d,
+0,d,e/2);a.quadTo(d,e,d-b,e);a.lineTo(c,e);a.close();a.end()};mxCellRenderer.registerShape("display",za);mxUtils.extend(M,mxActor);M.prototype.cst={RECT2:"mxgraph.basic.rect"};M.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"size",dispName:"Corner Size",type:"float",defVal:10},
{name:"absoluteCornerSize",dispName:"Abs. Corner Size",type:"bool",defVal:!0},{name:"indent",dispName:"Indent",type:"float",defVal:2},{name:"rectOutline",dispName:"Outline",type:"enum",defVal:"single",enumList:[{val:"single",dispName:"Single"},{val:"double",dispName:"Double"},{val:"frame",dispName:"Frame"}]},{name:"fillColor2",dispName:"Inside Fill Color",type:"color",defVal:"none"},{name:"gradientColor2",dispName:"Inside Gradient Color",type:"color",defVal:"none"},{name:"gradientDirection2",dispName:"Inside Gradient Direction",
type:"enum",defVal:"south",enumList:[{val:"south",dispName:"South"},{val:"west",dispName:"West"},{val:"north",dispName:"North"},{val:"east",dispName:"East"}]},{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"right",dispName:"Right",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left ",type:"bool",defVal:!0},{name:"topLeftStyle",dispName:"Top Left Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},
{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"topRightStyle",dispName:"Top Right Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"bottomRightStyle",dispName:"Bottom Right Style",
type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"bottomLeftStyle",dispName:"Bottom Left Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",
dispName:"Fold"}]}];M.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);this.strictDrawShape(a,0,0,d,e)};M.prototype.strictDrawShape=function(a,b,c,d,e,f){var g=f&&f.rectStyle?f.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),k=f&&f.absoluteCornerSize?f.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",this.absoluteCornerSize),h=f&&f.size?f.size:Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),m=f&&f.rectOutline?f.rectOutline:
-mxUtils.getValue(this.style,"rectOutline",this.rectOutline),q=f&&f.indent?f.indent:Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),l=f&&f.dashed?f.dashed:mxUtils.getValue(this.style,"dashed",!1),n=f&&f.dashPattern?f.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),p=f&&f.relIndent?f.relIndent:Math.max(0,Math.min(50,q)),C=f&&f.top?f.top:mxUtils.getValue(this.style,"top",!0),E=f&&f.right?f.right:mxUtils.getValue(this.style,"right",!0),B=f&&f.bottom?f.bottom:
-mxUtils.getValue(this.style,"bottom",!0),r=f&&f.left?f.left:mxUtils.getValue(this.style,"left",!0),t=f&&f.topLeftStyle?f.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),u=f&&f.topRightStyle?f.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),H=f&&f.bottomRightStyle?f.bottomRightStyle:mxUtils.getValue(this.style,"bottomRightStyle","default"),v=f&&f.bottomLeftStyle?f.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),Da=f&&f.fillColor?f.fillColor:
-mxUtils.getValue(this.style,"fillColor","#ffffff");f&&f.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var x=f&&f.strokeWidth?f.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),w=f&&f.fillColor2?f.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),y=f&&f.gradientColor2?f.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),D=f&&f.gradientDirection2?f.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),A=f&&f.opacity?f.opacity:
-mxUtils.getValue(this.style,"opacity","100"),z=Math.max(0,Math.min(50,h));f=M.prototype;a.setDashed(l);n&&""!=n&&a.setDashPattern(n);a.setStrokeWidth(x);h=Math.min(.5*e,.5*d,h);k||(h=z*Math.min(d,e)/100);h=Math.min(h,.5*Math.min(d,e));k||(q=Math.min(p*Math.min(d,e)/100));q=Math.min(q,.5*Math.min(d,e)-h);(C||E||B||r)&&"frame"!=m&&(a.begin(),C?f.moveNW(a,b,c,d,e,g,t,h,r):a.moveTo(0,0),C&&f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),E&&f.paintNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,b,c,d,
-e,g,H,h,B),B&&f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),r&&f.paintSW(a,b,c,d,e,g,v,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),a.close(),a.fill(),a.setShadow(!1),a.setFillColor(w),l=k=A,"none"==w&&(k=0),"none"==y&&(l=0),a.setGradient(w,y,0,0,d,e,D,k,l),a.begin(),C?f.moveNWInner(a,b,c,d,e,g,t,h,q,C,r):a.moveTo(q,0),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r),r&&B&&f.paintSWInner(a,b,c,d,e,g,v,h,q,B),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B),B&&E&&f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,
-b,c,d,e,g,u,h,q,C,E),E&&C&&f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C),C&&r&&f.paintNWInner(a,b,c,d,e,g,t,h,q),a.fill(),"none"==Da&&(a.begin(),f.paintFolds(a,b,c,d,e,g,t,u,H,v,h,C,E,B,r),a.stroke()));C||E||B||!r?C||E||!B||r?!C&&!E&&B&&r?"frame"!=m?(a.begin(),f.moveSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),"double"==m&&(f.moveNWInner(a,b,c,d,e,g,t,h,q,C,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r),f.paintSWInner(a,
-b,c,d,e,g,v,h,q,B),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B)),a.stroke()):(a.begin(),f.moveSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),f.lineNWInner(a,b,c,d,e,g,t,h,q,C,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r),f.paintSWInner(a,b,c,d,e,g,v,h,q,B),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B),a.close(),a.fillAndStroke()):C||!E||B||r?!C&&E&&!B&&r?"frame"!=m?(a.begin(),f.moveSW(a,b,c,d,e,g,t,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),"double"==
-m&&(f.moveNWInner(a,b,c,d,e,g,t,h,q,C,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r)),a.stroke(),a.begin(),f.moveNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,b,c,d,e,g,H,h,B),"double"==m&&(f.moveSEInner(a,b,c,d,e,g,H,h,q,B),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E)),a.stroke()):(a.begin(),f.moveSW(a,b,c,d,e,g,t,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),f.lineNWInner(a,b,c,d,e,g,t,h,q,C,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r),a.close(),a.fillAndStroke(),a.begin(),f.moveNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,b,c,d,e,
-g,H,h,B),f.lineSEInner(a,b,c,d,e,g,H,h,q,B),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E),a.close(),a.fillAndStroke()):!C&&E&&B&&!r?"frame"!=m?(a.begin(),f.moveNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,b,c,d,e,g,H,h,B),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),"double"==m&&(f.moveSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E)),a.stroke()):(a.begin(),f.moveNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,
-b,c,d,e,g,H,h,B),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.lineSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E),a.close(),a.fillAndStroke()):!C&&E&&B&&r?"frame"!=m?(a.begin(),f.moveNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,b,c,d,e,g,H,h,B),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),"double"==m&&(f.moveNWInner(a,
-b,c,d,e,g,t,h,q,C,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r),f.paintSWInner(a,b,c,d,e,g,v,h,q,B),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E)),a.stroke()):(a.begin(),f.moveNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,b,c,d,e,g,H,h,B),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),f.lineNWInner(a,b,c,d,e,g,t,h,q,C,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r),f.paintSWInner(a,
-b,c,d,e,g,v,h,q,B),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E),a.close(),a.fillAndStroke()):!C||E||B||r?C&&!E&&!B&&r?"frame"!=m?(a.begin(),f.moveSW(a,b,c,d,e,g,v,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),"double"==m&&(f.moveNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r)),a.stroke()):
-(a.begin(),f.moveSW(a,b,c,d,e,g,v,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.lineNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r),a.close(),a.fillAndStroke()):C&&!E&&B&&!r?"frame"!=m?(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),"double"==m&&(f.moveNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C)),a.stroke(),a.begin(),
-f.moveSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),"double"==m&&(f.moveSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B)),a.stroke()):(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.lineNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C),a.close(),a.fillAndStroke(),a.begin(),f.moveSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.lineSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B),a.close(),a.fillAndStroke()):
-C&&!E&&B&&r?"frame"!=m?(a.begin(),f.moveSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),"double"==m&&(f.moveNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r),f.paintSWInner(a,b,c,d,e,g,v,h,q,B),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B)),a.stroke()):(a.begin(),f.moveSE(a,b,c,d,e,g,H,
-h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.lineNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r),f.paintSWInner(a,b,c,d,e,g,v,h,q,B),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B),a.close(),a.fillAndStroke()):C&&E&&!B&&!r?"frame"!=m?(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,
-E),f.paintNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,b,c,d,e,g,H,h,B),"double"==m&&(f.moveSEInner(a,b,c,d,e,g,H,h,q,B),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C)),a.stroke()):(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.paintNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,b,c,d,e,g,H,h,B),f.lineSEInner(a,b,c,d,e,g,H,h,q,B),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,
-d,e,g,t,h,q,r,C),a.close(),a.fillAndStroke()):C&&E&&!B&&r?"frame"!=m?(a.begin(),f.moveSW(a,b,c,d,e,g,v,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.paintNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,b,c,d,e,g,H,h,B),"double"==m&&(f.moveSEInner(a,b,c,d,e,g,H,h,q,B),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r)),a.stroke()):
-(a.begin(),f.moveSW(a,b,c,d,e,g,v,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.paintNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,b,c,d,e,g,H,h,B),f.lineSEInner(a,b,c,d,e,g,H,h,q,B),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r),a.close(),a.fillAndStroke()):C&&E&&B&&!r?"frame"!=m?(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,
-r),f.paintTop(a,b,c,d,e,g,u,h,E),f.paintNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,b,c,d,e,g,H,h,B),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),"double"==m&&(f.moveSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C)),a.stroke()):(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.paintNE(a,b,c,d,e,g,u,
-h,C),f.paintRight(a,b,c,d,e,g,H,h,B),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.lineSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C),a.close(),a.fillAndStroke()):C&&E&&B&&r&&("frame"!=m?(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.paintNE(a,b,c,d,e,g,u,h,
-C),f.paintRight(a,b,c,d,e,g,H,h,B),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),a.close(),"double"==m&&(f.moveSWInner(a,b,c,d,e,g,v,h,q,r),f.paintSWInner(a,b,c,d,e,g,v,h,q,B),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,
-e,g,v,h,q,B,r),a.close()),a.stroke()):(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.paintNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,b,c,d,e,g,H,h,B),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),a.close(),f.moveSWInner(a,b,c,d,e,g,v,h,q,r),f.paintSWInner(a,b,c,d,e,g,v,h,q,B),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,
-e,g,u,h,q,C,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r),a.close(),a.fillAndStroke())):"frame"!=m?(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),"double"==m&&(f.moveNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,C)),a.stroke()):(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.lineNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,
-e,g,t,h,q,r,C),a.close(),a.fillAndStroke()):"frame"!=m?(a.begin(),f.moveNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,b,c,d,e,g,H,h,B),"double"==m&&(f.moveSEInner(a,b,c,d,e,g,H,h,q,B),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E)),a.stroke()):(a.begin(),f.moveNE(a,b,c,d,e,g,u,h,C),f.paintRight(a,b,c,d,e,g,H,h,B),f.lineSEInner(a,b,c,d,e,g,H,h,q,B),f.paintRightInner(a,b,c,d,e,g,u,h,q,C,E),a.close(),a.fillAndStroke()):"frame"!=m?(a.begin(),f.moveSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),"double"==m&&
-(f.moveSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B)),a.stroke()):(a.begin(),f.moveSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.lineSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,B),a.close(),a.fillAndStroke()):"frame"!=m?(a.begin(),f.moveSW(a,b,c,d,e,g,t,h,B),f.paintLeft(a,b,c,d,e,g,t,h,C),"double"==m&&(f.moveNWInner(a,b,c,d,e,g,t,h,q,C,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r)),a.stroke()):(a.begin(),f.moveSW(a,b,c,d,e,g,t,h,B),f.paintLeft(a,
-b,c,d,e,g,t,h,C),f.lineNWInner(a,b,c,d,e,g,t,h,q,C,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,B,r),a.close(),a.fillAndStroke());a.begin();f.paintFolds(a,b,c,d,e,g,t,u,H,v,h,C,E,B,r);a.stroke()};M.prototype.moveNW=function(a,b,c,d,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(0,0):a.moveTo(0,h)};M.prototype.moveNE=function(a,b,c,d,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(d,0):a.moveTo(d-h,0)};M.prototype.moveSE=function(a,b,c,d,e,f,g,h,k){"square"==g||"default"==g&&
+mxUtils.getValue(this.style,"rectOutline",this.rectOutline),q=f&&f.indent?f.indent:Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),l=f&&f.dashed?f.dashed:mxUtils.getValue(this.style,"dashed",!1),n=f&&f.dashPattern?f.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),p=f&&f.relIndent?f.relIndent:Math.max(0,Math.min(50,q)),A=f&&f.top?f.top:mxUtils.getValue(this.style,"top",!0),E=f&&f.right?f.right:mxUtils.getValue(this.style,"right",!0),C=f&&f.bottom?f.bottom:
+mxUtils.getValue(this.style,"bottom",!0),r=f&&f.left?f.left:mxUtils.getValue(this.style,"left",!0),t=f&&f.topLeftStyle?f.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),u=f&&f.topRightStyle?f.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),H=f&&f.bottomRightStyle?f.bottomRightStyle:mxUtils.getValue(this.style,"bottomRightStyle","default"),v=f&&f.bottomLeftStyle?f.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),Ca=f&&f.fillColor?f.fillColor:
+mxUtils.getValue(this.style,"fillColor","#ffffff");f&&f.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var x=f&&f.strokeWidth?f.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),w=f&&f.fillColor2?f.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),y=f&&f.gradientColor2?f.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),D=f&&f.gradientDirection2?f.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),B=f&&f.opacity?f.opacity:
+mxUtils.getValue(this.style,"opacity","100"),z=Math.max(0,Math.min(50,h));f=M.prototype;a.setDashed(l);n&&""!=n&&a.setDashPattern(n);a.setStrokeWidth(x);h=Math.min(.5*e,.5*d,h);k||(h=z*Math.min(d,e)/100);h=Math.min(h,.5*Math.min(d,e));k||(q=Math.min(p*Math.min(d,e)/100));q=Math.min(q,.5*Math.min(d,e)-h);(A||E||C||r)&&"frame"!=m&&(a.begin(),A?f.moveNW(a,b,c,d,e,g,t,h,r):a.moveTo(0,0),A&&f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),E&&f.paintNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,b,c,d,
+e,g,H,h,C),C&&f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),r&&f.paintSW(a,b,c,d,e,g,v,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),a.close(),a.fill(),a.setShadow(!1),a.setFillColor(w),l=k=B,"none"==w&&(k=0),"none"==y&&(l=0),a.setGradient(w,y,0,0,d,e,D,k,l),a.begin(),A?f.moveNWInner(a,b,c,d,e,g,t,h,q,A,r):a.moveTo(q,0),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r),r&&C&&f.paintSWInner(a,b,c,d,e,g,v,h,q,C),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C),C&&E&&f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,
+b,c,d,e,g,u,h,q,A,E),E&&A&&f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A),A&&r&&f.paintNWInner(a,b,c,d,e,g,t,h,q),a.fill(),"none"==Ca&&(a.begin(),f.paintFolds(a,b,c,d,e,g,t,u,H,v,h,A,E,C,r),a.stroke()));A||E||C||!r?A||E||!C||r?!A&&!E&&C&&r?"frame"!=m?(a.begin(),f.moveSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),"double"==m&&(f.moveNWInner(a,b,c,d,e,g,t,h,q,A,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r),f.paintSWInner(a,
+b,c,d,e,g,v,h,q,C),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C)),a.stroke()):(a.begin(),f.moveSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),f.lineNWInner(a,b,c,d,e,g,t,h,q,A,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r),f.paintSWInner(a,b,c,d,e,g,v,h,q,C),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C),a.close(),a.fillAndStroke()):A||!E||C||r?!A&&E&&!C&&r?"frame"!=m?(a.begin(),f.moveSW(a,b,c,d,e,g,t,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),"double"==
+m&&(f.moveNWInner(a,b,c,d,e,g,t,h,q,A,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r)),a.stroke(),a.begin(),f.moveNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,b,c,d,e,g,H,h,C),"double"==m&&(f.moveSEInner(a,b,c,d,e,g,H,h,q,C),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E)),a.stroke()):(a.begin(),f.moveSW(a,b,c,d,e,g,t,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),f.lineNWInner(a,b,c,d,e,g,t,h,q,A,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r),a.close(),a.fillAndStroke(),a.begin(),f.moveNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,b,c,d,e,
+g,H,h,C),f.lineSEInner(a,b,c,d,e,g,H,h,q,C),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E),a.close(),a.fillAndStroke()):!A&&E&&C&&!r?"frame"!=m?(a.begin(),f.moveNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,b,c,d,e,g,H,h,C),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),"double"==m&&(f.moveSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E)),a.stroke()):(a.begin(),f.moveNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,
+b,c,d,e,g,H,h,C),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.lineSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E),a.close(),a.fillAndStroke()):!A&&E&&C&&r?"frame"!=m?(a.begin(),f.moveNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,b,c,d,e,g,H,h,C),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),"double"==m&&(f.moveNWInner(a,
+b,c,d,e,g,t,h,q,A,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r),f.paintSWInner(a,b,c,d,e,g,v,h,q,C),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E)),a.stroke()):(a.begin(),f.moveNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,b,c,d,e,g,H,h,C),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),f.lineNWInner(a,b,c,d,e,g,t,h,q,A,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r),f.paintSWInner(a,
+b,c,d,e,g,v,h,q,C),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E),a.close(),a.fillAndStroke()):!A||E||C||r?A&&!E&&!C&&r?"frame"!=m?(a.begin(),f.moveSW(a,b,c,d,e,g,v,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),"double"==m&&(f.moveNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r)),a.stroke()):
+(a.begin(),f.moveSW(a,b,c,d,e,g,v,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.lineNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r),a.close(),a.fillAndStroke()):A&&!E&&C&&!r?"frame"!=m?(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),"double"==m&&(f.moveNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A)),a.stroke(),a.begin(),
+f.moveSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),"double"==m&&(f.moveSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C)),a.stroke()):(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.lineNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A),a.close(),a.fillAndStroke(),a.begin(),f.moveSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.lineSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C),a.close(),a.fillAndStroke()):
+A&&!E&&C&&r?"frame"!=m?(a.begin(),f.moveSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),"double"==m&&(f.moveNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r),f.paintSWInner(a,b,c,d,e,g,v,h,q,C),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C)),a.stroke()):(a.begin(),f.moveSE(a,b,c,d,e,g,H,
+h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.lineNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r),f.paintSWInner(a,b,c,d,e,g,v,h,q,C),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C),a.close(),a.fillAndStroke()):A&&E&&!C&&!r?"frame"!=m?(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,
+E),f.paintNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,b,c,d,e,g,H,h,C),"double"==m&&(f.moveSEInner(a,b,c,d,e,g,H,h,q,C),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A)),a.stroke()):(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.paintNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,b,c,d,e,g,H,h,C),f.lineSEInner(a,b,c,d,e,g,H,h,q,C),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,
+d,e,g,t,h,q,r,A),a.close(),a.fillAndStroke()):A&&E&&!C&&r?"frame"!=m?(a.begin(),f.moveSW(a,b,c,d,e,g,v,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.paintNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,b,c,d,e,g,H,h,C),"double"==m&&(f.moveSEInner(a,b,c,d,e,g,H,h,q,C),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r)),a.stroke()):
+(a.begin(),f.moveSW(a,b,c,d,e,g,v,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.paintNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,b,c,d,e,g,H,h,C),f.lineSEInner(a,b,c,d,e,g,H,h,q,C),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r),a.close(),a.fillAndStroke()):A&&E&&C&&!r?"frame"!=m?(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,
+r),f.paintTop(a,b,c,d,e,g,u,h,E),f.paintNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,b,c,d,e,g,H,h,C),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),"double"==m&&(f.moveSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A)),a.stroke()):(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.paintNE(a,b,c,d,e,g,u,
+h,A),f.paintRight(a,b,c,d,e,g,H,h,C),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.lineSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A),a.close(),a.fillAndStroke()):A&&E&&C&&r&&("frame"!=m?(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.paintNE(a,b,c,d,e,g,u,h,
+A),f.paintRight(a,b,c,d,e,g,H,h,C),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),a.close(),"double"==m&&(f.moveSWInner(a,b,c,d,e,g,v,h,q,r),f.paintSWInner(a,b,c,d,e,g,v,h,q,C),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,
+e,g,v,h,q,C,r),a.close()),a.stroke()):(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.paintNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,b,c,d,e,g,H,h,C),f.paintSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.paintSW(a,b,c,d,e,g,v,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),a.close(),f.moveSWInner(a,b,c,d,e,g,v,h,q,r),f.paintSWInner(a,b,c,d,e,g,v,h,q,C),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C),f.paintSEInner(a,b,c,d,e,g,H,h,q),f.paintRightInner(a,b,c,d,
+e,g,u,h,q,A,E),f.paintNEInner(a,b,c,d,e,g,u,h,q),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A),f.paintNWInner(a,b,c,d,e,g,t,h,q),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r),a.close(),a.fillAndStroke())):"frame"!=m?(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),"double"==m&&(f.moveNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,e,g,t,h,q,r,A)),a.stroke()):(a.begin(),f.moveNW(a,b,c,d,e,g,t,h,r),f.paintTop(a,b,c,d,e,g,u,h,E),f.lineNEInner(a,b,c,d,e,g,u,h,q,E),f.paintTopInner(a,b,c,d,
+e,g,t,h,q,r,A),a.close(),a.fillAndStroke()):"frame"!=m?(a.begin(),f.moveNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,b,c,d,e,g,H,h,C),"double"==m&&(f.moveSEInner(a,b,c,d,e,g,H,h,q,C),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E)),a.stroke()):(a.begin(),f.moveNE(a,b,c,d,e,g,u,h,A),f.paintRight(a,b,c,d,e,g,H,h,C),f.lineSEInner(a,b,c,d,e,g,H,h,q,C),f.paintRightInner(a,b,c,d,e,g,u,h,q,A,E),a.close(),a.fillAndStroke()):"frame"!=m?(a.begin(),f.moveSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),"double"==m&&
+(f.moveSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C)),a.stroke()):(a.begin(),f.moveSE(a,b,c,d,e,g,H,h,E),f.paintBottom(a,b,c,d,e,g,v,h,r),f.lineSWInner(a,b,c,d,e,g,v,h,q,r),f.paintBottomInner(a,b,c,d,e,g,H,h,q,E,C),a.close(),a.fillAndStroke()):"frame"!=m?(a.begin(),f.moveSW(a,b,c,d,e,g,t,h,C),f.paintLeft(a,b,c,d,e,g,t,h,A),"double"==m&&(f.moveNWInner(a,b,c,d,e,g,t,h,q,A,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r)),a.stroke()):(a.begin(),f.moveSW(a,b,c,d,e,g,t,h,C),f.paintLeft(a,
+b,c,d,e,g,t,h,A),f.lineNWInner(a,b,c,d,e,g,t,h,q,A,r),f.paintLeftInner(a,b,c,d,e,g,v,h,q,C,r),a.close(),a.fillAndStroke());a.begin();f.paintFolds(a,b,c,d,e,g,t,u,H,v,h,A,E,C,r);a.stroke()};M.prototype.moveNW=function(a,b,c,d,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(0,0):a.moveTo(0,h)};M.prototype.moveNE=function(a,b,c,d,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(d,0):a.moveTo(d-h,0)};M.prototype.moveSE=function(a,b,c,d,e,f,g,h,k){"square"==g||"default"==g&&
"square"==f||!k?a.moveTo(d,e):a.moveTo(d,e-h)};M.prototype.moveSW=function(a,b,c,d,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(0,e):a.moveTo(h,e)};M.prototype.paintNW=function(a,b,c,d,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==f)b=1;a.arcTo(h,h,0,0,b,h,0)}else("snip"==g||"default"==g&&"snip"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(h,0);else a.lineTo(0,0)};M.prototype.paintTop=
function(a,b,c,d,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.lineTo(d,0):a.lineTo(d-h,0)};M.prototype.paintNE=function(a,b,c,d,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==f)b=1;a.arcTo(h,h,0,0,b,d,h)}else("snip"==g||"default"==g&&"snip"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(d,h);else a.lineTo(d,0)};M.prototype.paintRight=function(a,b,c,d,e,f,g,h,k){"square"==g||"default"==
g&&"square"==f||!k?a.lineTo(d,e):a.lineTo(d,e-h)};M.prototype.paintLeft=function(a,b,c,d,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.lineTo(0,0):a.lineTo(0,h)};M.prototype.paintSE=function(a,b,c,d,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==f)b=1;a.arcTo(h,h,0,0,b,d-h,e)}else("snip"==g||"default"==g&&"snip"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(d-h,e);else a.lineTo(d,
@@ -3408,53 +3402,53 @@ f||"snip"==g||"default"==g&&"snip"==f?a.moveTo(d-k,e-h-.5*k):("invRound"==g||"de
k,e)};M.prototype.moveNEInner=function(a,b,c,d,e,f,g,h,k,m){m?"square"==g||"default"==g&&"square"==f||m?a.moveTo(d-k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.moveTo(d-k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(d-k,h+k):a.moveTo(d,k)};M.prototype.lineNEInner=function(a,b,c,d,e,f,g,h,k,m){m?"square"==g||"default"==g&&"square"==f||m?a.lineTo(d-k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==
g&&"snip"==f?a.lineTo(d-k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(d-k,h+k):a.lineTo(d,k)};M.prototype.moveNWInner=function(a,b,c,d,e,f,g,h,k,m,l){m||l?!m&&l?a.moveTo(k,0):m&&!l?a.moveTo(0,k):"square"==g||"default"==g&&"square"==f?a.moveTo(k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.moveTo(k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(k,h+k):a.moveTo(0,
0)};M.prototype.lineNWInner=function(a,b,c,d,e,f,g,h,k,m,l){m||l?!m&&l?a.lineTo(k,0):m&&!l?a.lineTo(0,k):"square"==g||"default"==g&&"square"==f?a.lineTo(k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(k,h+k):a.lineTo(0,0)};M.prototype.paintFolds=function(a,b,c,d,e,f,g,h,k,m,l,n,p,r,t){if("fold"==f||"fold"==g||"fold"==h||"fold"==k||"fold"==m)("fold"==g||"default"==
-g&&"fold"==f)&&n&&t&&(a.moveTo(0,l),a.lineTo(l,l),a.lineTo(l,0)),("fold"==h||"default"==h&&"fold"==f)&&n&&p&&(a.moveTo(d-l,0),a.lineTo(d-l,l),a.lineTo(d,l)),("fold"==k||"default"==k&&"fold"==f)&&r&&p&&(a.moveTo(d-l,e),a.lineTo(d-l,e-l),a.lineTo(d,e-l)),("fold"==m||"default"==m&&"fold"==f)&&r&&t&&(a.moveTo(0,e-l),a.lineTo(l,e-l),a.lineTo(l,e))};mxCellRenderer.registerShape(M.prototype.cst.RECT2,M);M.prototype.constraints=null;mxUtils.extend(xa,mxConnector);xa.prototype.origPaintEdgeShape=xa.prototype.paintEdgeShape;
-xa.prototype.paintEdgeShape=function(a,b,c){for(var d=[],e=0;e<b.length;e++)d.push(mxUtils.clone(b[e]));var e=a.state.dashed,f=a.state.fixDash;xa.prototype.origPaintEdgeShape.apply(this,[a,d,c]);3<=a.state.strokeWidth&&(d=mxUtils.getValue(this.style,"fillColor",null),null!=d&&(a.setStrokeColor(d),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,f),xa.prototype.origPaintEdgeShape.apply(this,[a,b,c])))};mxCellRenderer.registerShape("filledEdge",xa);"undefined"!==typeof StyleFormatPanel&&function(){var a=
-StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.format.getSelectionState(),c=a.apply(this,arguments);"umlFrame"==b.style.shape&&c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return c}}();mxMarker.addMarker("dash",function(a,b,c,d,e,f,g,h,k,m){var l=e*(g+k+1),q=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-l/2-q/2,d.y-q/2+l/2);a.lineTo(d.x+q/2-3*l/2,d.y-3*q/2-l/2);a.stroke()}});mxMarker.addMarker("box",
+g&&"fold"==f)&&n&&t&&(a.moveTo(0,l),a.lineTo(l,l),a.lineTo(l,0)),("fold"==h||"default"==h&&"fold"==f)&&n&&p&&(a.moveTo(d-l,0),a.lineTo(d-l,l),a.lineTo(d,l)),("fold"==k||"default"==k&&"fold"==f)&&r&&p&&(a.moveTo(d-l,e),a.lineTo(d-l,e-l),a.lineTo(d,e-l)),("fold"==m||"default"==m&&"fold"==f)&&r&&t&&(a.moveTo(0,e-l),a.lineTo(l,e-l),a.lineTo(l,e))};mxCellRenderer.registerShape(M.prototype.cst.RECT2,M);M.prototype.constraints=null;mxUtils.extend(wa,mxConnector);wa.prototype.origPaintEdgeShape=wa.prototype.paintEdgeShape;
+wa.prototype.paintEdgeShape=function(a,b,c){for(var d=[],e=0;e<b.length;e++)d.push(mxUtils.clone(b[e]));var e=a.state.dashed,f=a.state.fixDash;wa.prototype.origPaintEdgeShape.apply(this,[a,d,c]);3<=a.state.strokeWidth&&(d=mxUtils.getValue(this.style,"fillColor",null),null!=d&&(a.setStrokeColor(d),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,f),wa.prototype.origPaintEdgeShape.apply(this,[a,b,c])))};mxCellRenderer.registerShape("filledEdge",wa);"undefined"!==typeof StyleFormatPanel&&function(){var a=
+StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.editorUi.getSelectionState(),c=a.apply(this,arguments);"umlFrame"==b.style.shape&&c.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return c}}();mxMarker.addMarker("dash",function(a,b,c,d,e,f,g,h,k,m){var l=e*(g+k+1),q=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-l/2-q/2,d.y-q/2+l/2);a.lineTo(d.x+q/2-3*l/2,d.y-3*q/2-l/2);a.stroke()}});mxMarker.addMarker("box",
function(a,b,c,d,e,f,g,h,k,m){var l=e*(g+k+1),q=f*(g+k+1),n=d.x+l/2,p=d.y+q/2;d.x-=l;d.y-=q;return function(){a.begin();a.moveTo(n-l/2-q/2,p-q/2+l/2);a.lineTo(n-l/2+q/2,p-q/2-l/2);a.lineTo(n+q/2-3*l/2,p-3*q/2-l/2);a.lineTo(n-q/2-3*l/2,p-3*q/2+l/2);a.close();m?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("cross",function(a,b,c,d,e,f,g,h,k,m){var l=e*(g+k+1),q=f*(g+k+1);return function(){a.begin();a.moveTo(d.x-l/2-q/2,d.y-q/2+l/2);a.lineTo(d.x+q/2-3*l/2,d.y-3*q/2-l/2);a.moveTo(d.x-l/2+q/2,d.y-
q/2-l/2);a.lineTo(d.x-q/2-3*l/2,d.y-3*q/2+l/2);a.stroke()}});mxMarker.addMarker("circle",Sa);mxMarker.addMarker("circlePlus",function(a,b,c,d,e,f,g,h,k,m){var l=d.clone(),q=Sa.apply(this,arguments),n=e*(g+2*k),p=f*(g+2*k);return function(){q.apply(this,arguments);a.begin();a.moveTo(l.x-e*k,l.y-f*k);a.lineTo(l.x-2*n+e*k,l.y-2*p+f*k);a.moveTo(l.x-n-p+f*k,l.y-p+n-e*k);a.lineTo(l.x+p-n-f*k,l.y-p-n+e*k);a.stroke()}});mxMarker.addMarker("halfCircle",function(a,b,c,d,e,f,g,h,k,m){var l=e*(g+k+1),q=f*(g+
k+1),n=d.clone();d.x-=l;d.y-=q;return function(){a.begin();a.moveTo(n.x-q,n.y+l);a.quadTo(d.x-q,d.y+l,d.x,d.y);a.quadTo(d.x+q,d.y-l,n.x+q,n.y-l);a.stroke()}});mxMarker.addMarker("async",function(a,b,c,d,e,f,g,h,k,m){b=e*k*1.118;c=f*k*1.118;e*=g+k;f*=g+k;var l=d.clone();l.x-=b;l.y-=c;d.x+=1*-e-b;d.y+=1*-f-c;return function(){a.begin();a.moveTo(l.x,l.y);h?a.lineTo(l.x-e-f/2,l.y-f+e/2):a.lineTo(l.x+f/2-e,l.y-f-e/2);a.lineTo(l.x-e,l.y-f);a.close();m?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",
-function(a){a=null!=a?a:2;return function(b,c,d,e,f,g,h,k,m,l){f*=h+m;g*=h+m;var q=e.clone();return function(){b.begin();b.moveTo(q.x,q.y);k?b.lineTo(q.x-f-g/a,q.y-g+f/a):b.lineTo(q.x+g/a-f,q.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Wa=function(a,b,c){return Ea(a,["width"],b,function(b,d,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(f.x+d*b/4+e*g/2,f.y+e*b/4-d*g/2)},function(b,d,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width=
-Math.round(2*b)/a.view.scale-c})},Ea=function(a,b,c,d,e){return S(a,b,function(b){var e=a.absolutePoints,f=e.length-1;b=a.view.translate;var g=a.view.scale,h=c?e[0]:e[f],e=c?e[1]:e[f-1],f=e.x-h.x,k=e.y-h.y,m=Math.sqrt(f*f+k*k),h=d.call(this,m,f/m,k/m,h,e);return new mxPoint(h.x/g-b.x,h.y/g-b.y)},function(b,d,f){var g=a.absolutePoints,h=g.length-1;b=a.view.translate;var k=a.view.scale,m=c?g[0]:g[h],g=c?g[1]:g[h-1],h=g.x-m.x,l=g.y-m.y,q=Math.sqrt(h*h+l*l);d.x=(d.x+b.x)*k;d.y=(d.y+b.y)*k;e.call(this,
-q,h/q,l/q,m,g,d,f)})},va=function(a){return function(b){return[S(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",Z.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",Z.prototype.arrowSize)));return new mxPoint(b.x+(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0,
+function(a){a=null!=a?a:2;return function(b,c,d,e,f,g,h,k,m,l){f*=h+m;g*=h+m;var q=e.clone();return function(){b.begin();b.moveTo(q.x,q.y);k?b.lineTo(q.x-f-g/a,q.y-g+f/a):b.lineTo(q.x+g/a-f,q.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Wa=function(a,b,c){return Da(a,["width"],b,function(b,d,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+c;return new mxPoint(f.x+d*b/4+e*g/2,f.y+e*b/4-d*g/2)},function(b,d,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width=
+Math.round(2*b)/a.view.scale-c})},Da=function(a,b,c,d,e){return S(a,b,function(b){var e=a.absolutePoints,f=e.length-1;b=a.view.translate;var g=a.view.scale,h=c?e[0]:e[f],e=c?e[1]:e[f-1],f=e.x-h.x,k=e.y-h.y,m=Math.sqrt(f*f+k*k),h=d.call(this,m,f/m,k/m,h,e);return new mxPoint(h.x/g-b.x,h.y/g-b.y)},function(b,d,f){var g=a.absolutePoints,h=g.length-1;b=a.view.translate;var k=a.view.scale,m=c?g[0]:g[h],g=c?g[1]:g[h-1],h=g.x-m.x,l=g.y-m.y,q=Math.sqrt(h*h+l*l);d.x=(d.x+b.x)*k;d.y=(d.y+b.y)*k;e.call(this,
+q,h/q,l/q,m,g,d,f)})},va=function(a){return function(b){return[S(b,["arrowWidth","arrowSize"],function(b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",aa.prototype.arrowWidth))),d=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",aa.prototype.arrowSize)));return new mxPoint(b.x+(1-d)*b.width,b.y+(1-c)*b.height/2)},function(b,c){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-c.y)/b.height*2));this.state.style.arrowSize=Math.max(0,
Math.min(a,(b.x+b.width-c.x)/b.width))})]}},Ta=function(a){return function(b){return[S(b,["size"],function(b){var c=Math.max(0,Math.min(.5*b.height,parseFloat(mxUtils.getValue(this.state.style,"size",a))));return new mxPoint(b.x,b.y+c)},function(a,b){this.state.style.size=Math.max(0,b.y-a.y)},!0)]}},Ra=function(a,b,c){return function(d){var e=[S(d,["size"],function(c){var d=Math.max(0,Math.min(c.width,Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(c.x+
d,c.y+d)},function(b,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,c.x-b.x),Math.min(b.height,c.y-b.y)))/a)},!1)];c&&mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ta(d));return e}},Ja=function(a,b,c,d,e){c=null!=c?c:.5;return function(f){var g=[S(f,["size"],function(b){var c=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,d=parseFloat(mxUtils.getValue(this.state.style,"size",c?e:a));return new mxPoint(b.x+Math.max(0,Math.min(.5*b.width,
d*(c?1:b.width))),b.getCenterY())},function(a,b,d){a=null!=e&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?b.x-a.x:Math.max(0,Math.min(c,(b.x-a.x)/a.width));this.state.style.size=a},!1,d)];b&&mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(ta(f));return g}},Ua=function(a,b,c){a=null!=a?a:.5;return function(d){var e=[S(d,["size"],function(d){var e=null!=c?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,f=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,
-"size",e?c:b)));return new mxPoint(d.x+Math.min(.75*d.width*a,f*(e?.75:.75*d.width)),d.y+d.height/4)},function(b,d){var e=null!=c&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?d.x-b.x:Math.max(0,Math.min(a,(d.x-b.x)/b.width*.75));this.state.style.size=e},!1,!0)];mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ta(d));return e}},Ca=function(){return function(a){var b=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ta(a));return b}},ta=function(a,b){return S(a,
+"size",e?c:b)));return new mxPoint(d.x+Math.min(.75*d.width*a,f*(e?.75:.75*d.width)),d.y+d.height/4)},function(b,d){var e=null!=c&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?d.x-b.x:Math.max(0,Math.min(a,(d.x-b.x)/b.width*.75));this.state.style.size=e},!1,!0)];mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ta(d));return e}},Ba=function(){return function(a){var b=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ta(a));return b}},ta=function(a,b){return S(a,
[mxConstants.STYLE_ARCSIZE],function(c){var d=null!=b?b:c.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+d)}e=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/2,c.height/2),Math.min(c.width,c.height)*
e),c.y+d)},function(b,c,d){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(b.width,2*(b.x+b.width-c.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(b.width-c.x+b.x)/Math.min(b.width,b.height))))})},S=function(a,b,c,d,e,f,g){var h=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);h.execute=function(a){for(var c=0;c<b.length;c++)this.copyStyle(b[c]);
-g&&g(a)};h.getPosition=c;h.setPosition=d;h.ignoreGrid=null!=e?e:!0;if(f){var k=h.positionChanged;h.positionChanged=function(){k.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return h},Ka={link:function(a){return[Wa(a,!0,10),Wa(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(Ea(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
+g&&g(a)};h.getPosition=c;h.setPosition=d;h.ignoreGrid=null!=e?e:!0;if(f){var k=h.positionChanged;h.positionChanged=function(){k.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return h},Ka={link:function(a){return[Wa(a,!0,10),Wa(a,!1,10)]},flexArrow:function(a){var b=a.view.graph.gridSize/a.view.scale,c=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(Da(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
!0,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/
-3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(Ea(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,
+3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),c.push(Da(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(b,
c,d,e,f){b=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)+d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)-c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/
100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<b/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-
-parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(Ea(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*
+parseFloat(a.style.endWidth))<b&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(Da(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*
a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*c)/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<
-b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(Ea(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=
+b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),c.push(Da(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(b,c,d,e,f){b=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;f=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(e.x+c*(f+a.shape.strokewidth*a.view.scale)-d*b/2,e.y+d*(f+a.shape.strokewidth*a.view.scale)+c*b/2)},function(c,d,e,f,g,h,k){c=
Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));d=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-d,h.x,h.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(d-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*c)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(k.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-
parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<b&&(a.style.endWidth=a.style.startWidth))})));return c},swimlane:function(a){var b=[];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ta(a,c/2))}b.push(S(a,[mxConstants.STYLE_STARTSIZE],
function(b){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(b.getCenterX(),b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,
-Math.min(b.width,c.x-b.x)))},!1,null,function(b){if(mxEvent.isControlDown(b.getEvent())&&(b=a.view.graph,b.isTableRow(a.cell)||b.isTableCell(a.cell))){for(var c=b.getSwimlaneDirection(a.style),d=b.model.getParent(a.cell),d=b.model.getChildCells(d,!0),e=[],f=0;f<d.length;f++)d[f]!=a.cell&&b.isSwimlane(d[f])&&b.getSwimlaneDirection(b.getCurrentCellStyle(d[f]))==c&&e.push(d[f]);b.setCellStyles(mxConstants.STYLE_STARTSIZE,a.style[mxConstants.STYLE_STARTSIZE],e)}}));return b},label:Ca(),ext:Ca(),rectangle:Ca(),
-triangle:Ca(),rhombus:Ca(),umlLifeline:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",U.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){return[S(a,["width","height"],function(a){var b=Math.max(W.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",W.prototype.width))),
-c=Math.max(1.5*W.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",W.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(W.prototype.corner,Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*W.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)]},process:function(a){var b=[S(a,["size"],function(a){var b="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,
+Math.min(b.width,c.x-b.x)))},!1,null,function(b){if(mxEvent.isControlDown(b.getEvent())&&(b=a.view.graph,b.isTableRow(a.cell)||b.isTableCell(a.cell))){for(var c=b.getSwimlaneDirection(a.style),d=b.model.getParent(a.cell),d=b.model.getChildCells(d,!0),e=[],f=0;f<d.length;f++)d[f]!=a.cell&&b.isSwimlane(d[f])&&b.getSwimlaneDirection(b.getCurrentCellStyle(d[f]))==c&&e.push(d[f]);b.setCellStyles(mxConstants.STYLE_STARTSIZE,a.style[mxConstants.STYLE_STARTSIZE],e)}}));return b},label:Ba(),ext:Ba(),rectangle:Ba(),
+triangle:Ba(),rhombus:Ba(),umlLifeline:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",U.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){return[S(a,["width","height"],function(a){var b=Math.max(X.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",X.prototype.width))),
+c=Math.max(1.5*X.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",X.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(X.prototype.corner,Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*X.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)]},process:function(a){var b=[S(a,["size"],function(a){var b="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,
"size",G.prototype.size));return b?new mxPoint(a.x+c,a.y+a.height/4):new mxPoint(a.x+a.width*c,a.y+a.height/4)},function(a,b){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*a.width,b.x-a.x)):Math.max(0,Math.min(.5,(b.x-a.x)/a.width));this.state.style.size=c},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ta(a));return b},cross:function(a){return[S(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
-"size",za.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width,a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-b.y)/c*2,Math.max(0,a.getCenterX()-b.x)/c*2)))})]},note:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",h.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=
+"size",ya.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width,a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-b.y)/c*2,Math.max(0,a.getCenterX()-b.x)/c*2)))})]},note:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=
Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-b.x),Math.min(a.height,b.y-a.y))))})]},note2:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-b.x),Math.min(a.height,b.y-a.y))))})]},manualInput:function(a){var b=[S(a,["size"],function(a){var b=
Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",ja.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ta(a));return b},dataStorage:function(a){return[S(a,["size"],function(a){var b="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",b?P.prototype.fixedSize:
P.prototype.size));return new mxPoint(a.x+a.width-c*(b?1:a.width),a.getCenterY())},function(a,b){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(a.width,a.x+a.width-b.x)):Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width));this.state.style.size=c},!1)]},callout:function(a){var b=[S(a,["size","position"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",D.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
"position",D.prototype.position)));mxUtils.getValue(this.state.style,"base",D.prototype.base);return new mxPoint(a.x+c*a.width,a.y+a.height-b)},function(a,b){mxUtils.getValue(this.state.style,"base",D.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-b.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100},!1),S(a,["position2"],function(a){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",D.prototype.position2)));
return new mxPoint(a.x+b*a.width,a.y+a.height)},function(a,b){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(b.x-a.x)/a.width)))/100},!1),S(a,["base"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",D.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",D.prototype.position))),d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",D.prototype.base)));return new mxPoint(a.x+Math.min(a.width,
-c*a.width+d),a.y+a.height-b)},function(a,b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",D.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(a.width,b.x-a.x-c*a.width)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ta(a));return b},internalStorage:function(a){var b=[S(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",da.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,
-"dy",da.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ta(a));return b},module:function(a){return[S(a,["jettyWidth","jettyHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"jettyWidth",ga.prototype.jettyWidth))),c=Math.max(0,Math.min(a.height,
+c*a.width+d),a.y+a.height-b)},function(a,b){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",D.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(a.width,b.x-a.x-c*a.width)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ta(a));return b},internalStorage:function(a){var b=[S(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",ea.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,
+"dy",ea.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ta(a));return b},module:function(a){return[S(a,["jettyWidth","jettyHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"jettyWidth",ga.prototype.jettyWidth))),c=Math.max(0,Math.min(a.height,
mxUtils.getValue(this.state.style,"jettyHeight",ga.prototype.jettyHeight)));return new mxPoint(a.x+b/2,a.y+2*c)},function(a,b){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(a.height,b.y-a.y))/2)})]},corner:function(a){return[S(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",fa.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,
-"dy",fa.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},tee:function(a){return[S(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",Y.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",Y.prototype.dy)));return new mxPoint(a.x+(a.width+b)/2,a.y+c)},function(a,
+"dy",fa.prototype.dy)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,b.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},tee:function(a){return[S(a,["dx","dy"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",Z.prototype.dx))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",Z.prototype.dy)));return new mxPoint(a.x+(a.width+b)/2,a.y+c)},function(a,
b){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,b.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},singleArrow:va(1),doubleArrow:va(.5),folder:function(a){return[S(a,["tabWidth","tabHeight"],function(a){var b=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",r.prototype.tabWidth))),c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",r.prototype.tabHeight)));mxUtils.getValue(this.state.style,
"tabPosition",r.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);return new mxPoint(a.x+b,a.y+c)},function(a,b){var c=Math.max(0,Math.min(a.width,b.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",r.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},document:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
"size",x.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},!1)]},tape:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",t.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b*a.height/2)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(b.y-a.y)/a.height*2))},!1)]},isoCube2:function(a){return[S(a,
["isoAngle"],function(a){var b=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",m.isoAngle))))*Math.PI/200;return new mxPoint(a.x,a.y+Math.min(a.width*Math.tan(b),.5*a.height))},function(a,b){this.state.style.isoAngle=Math.max(0,50*(b.y-a.y)/a.height)},!0)]},cylinder2:Ta(l.prototype.size),cylinder3:Ta(n.prototype.size),offPageConnector:function(a){return[S(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ha.prototype.size))));
return new mxPoint(a.getCenterX(),a.y+(1-b)*a.height)},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-b.y)/a.height))},!1)]},"mxgraph.basic.rect":function(a){var b=[Graph.createHandle(a,["size"],function(a){var b=Math.max(0,Math.min(a.width/2,a.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(a.x+b,a.y+b)},function(a,b){this.state.style.size=Math.round(100*Math.max(0,Math.min(a.height/2,a.width/2,b.x-a.x)))/100})];a=Graph.createHandle(a,
-["indent"],function(a){var b=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(a.x+.75*a.width,a.y+b*a.height/200)},function(a,b){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(b.y-a.y)/a.height)))/100});b.push(a);return b},step:Ja(K.prototype.size,!0,null,!0,K.prototype.fixedSize),hexagon:Ja(L.prototype.size,!0,.5,!0,L.prototype.fixedSize),curlyBracket:Ja(F.prototype.size,!1),display:Ja(Aa.prototype.size,!1),cube:Ra(1,
-c.prototype.size,!1),card:Ra(.5,v.prototype.size,!0),loopLimit:Ra(.5,ea.prototype.size,!0),trapezoid:Ua(.5,y.prototype.size,y.prototype.fixedSize),parallelogram:Ua(1,w.prototype.size,w.prototype.fixedSize)};Graph.createHandle=S;Graph.handleFactory=Ka;var ab=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var a=ab.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&
+["indent"],function(a){var b=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(a.x+.75*a.width,a.y+b*a.height/200)},function(a,b){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(b.y-a.y)/a.height)))/100});b.push(a);return b},step:Ja(K.prototype.size,!0,null,!0,K.prototype.fixedSize),hexagon:Ja(L.prototype.size,!0,.5,!0,L.prototype.fixedSize),curlyBracket:Ja(F.prototype.size,!1),display:Ja(za.prototype.size,!1),cube:Ra(1,
+c.prototype.size,!1),card:Ra(.5,v.prototype.size,!0),loopLimit:Ra(.5,V.prototype.size,!0),trapezoid:Ua(.5,y.prototype.size,y.prototype.fixedSize),parallelogram:Ua(1,w.prototype.size,w.prototype.fixedSize)};Graph.createHandle=S;Graph.handleFactory=Ka;var ab=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var a=ab.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&
null==mxStencilRegistry.getStencil(b)?b=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(b=mxConstants.SHAPE_SWIMLANE);b=Ka[b];null==b&&null!=this.state.shape&&this.state.shape.isRoundable()&&(b=Ka[mxConstants.SHAPE_RECTANGLE]);null!=b&&(b=b(this.state),null!=b&&(a=null==a?b:a.concat(b)))}return a};mxEdgeHandler.prototype.createCustomHandles=function(){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);
a=Ka[a];return null!=a?a(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var La=new mxPoint(1,0),Ma=new mxPoint(1,0),va=mxUtils.toRadians(-30),La=mxUtils.getRotatedPoint(La,Math.cos(va),Math.sin(va)),va=mxUtils.toRadians(-150),Ma=mxUtils.getRotatedPoint(Ma,Math.cos(va),Math.sin(va));mxEdgeStyle.IsometricConnector=function(a,b,c,d,e){var f=a.view;d=null!=d&&0<d.length?d[0]:null;var g=a.absolutePoints,h=g[0],g=g[g.length-1];null!=d&&(d=f.transformControlPoint(a,d));null==
h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=c&&(g=new mxPoint(c.getCenterX(),c.getCenterY()));var k=La.x,m=La.y,l=Ma.x,n=Ma.y,q="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=h){a=function(a,b,c){a-=p.x;var d=b-p.y;b=(n*a-l*d)/(k*n-m*l);a=(m*a-k*d)/(m*l-k*n);q?(c&&(p=new mxPoint(p.x+k*b,p.y+m*b),e.push(p)),p=new mxPoint(p.x+l*a,p.y+n*a)):(c&&(p=new mxPoint(p.x+l*a,p.y+n*a),e.push(p)),p=new mxPoint(p.x+k*b,p.y+m*b));e.push(p)};var p=h;null==
@@ -3466,7 +3460,7 @@ function(a,b,c){a=[];var d=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(
b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-d)));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,
1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0)];mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];Ga.prototype.constraints=mxRectangleShape.prototype.constraints;
-mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;N.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;h.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,
+mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;N.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;k.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};v.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c+d)));a.push(new mxConnectionConstraint(new mxPoint(0,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,1),!1));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b>=2*d&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};c.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math.min(c,parseFloat(mxUtils.getValue(this.style,
@@ -3477,13 +3471,13 @@ mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwim
function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(a.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,d,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e))):(a.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-.5*d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,e)),a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,b,.25*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return a};da.prototype.constraints=mxRectangleShape.prototype.constraints;P.prototype.constraints=mxRectangleShape.prototype.constraints;wa.prototype.constraints=mxEllipse.prototype.constraints;Ba.prototype.constraints=mxEllipse.prototype.constraints;
-Fa.prototype.constraints=mxEllipse.prototype.constraints;Ha.prototype.constraints=mxEllipse.prototype.constraints;ja.prototype.constraints=mxRectangleShape.prototype.constraints;Ia.prototype.constraints=mxRectangleShape.prototype.constraints;Aa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(b,c/2),e=Math.min(b-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*b);a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,.75*(c-e)+e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));a.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return a};ea.prototype.constraints=mxRectangleShape.prototype.constraints;P.prototype.constraints=mxRectangleShape.prototype.constraints;Ea.prototype.constraints=mxEllipse.prototype.constraints;Aa.prototype.constraints=mxEllipse.prototype.constraints;
+Fa.prototype.constraints=mxEllipse.prototype.constraints;Ha.prototype.constraints=mxEllipse.prototype.constraints;ja.prototype.constraints=mxRectangleShape.prototype.constraints;Ia.prototype.constraints=mxRectangleShape.prototype.constraints;za.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(b,c/2),e=Math.min(b-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*b);a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};ga.prototype.getConstraints=function(a,b,c){b=parseFloat(mxUtils.getValue(a,
"jettyWidth",ga.prototype.jettyWidth))/2;a=parseFloat(mxUtils.getValue(a,"jettyHeight",ga.prototype.jettyHeight));var d=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,b),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,
.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,b),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(c-.5*a,1.5*a)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(c-.5*a,3.5*a))];c>5*a&&d.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,b));c>8*a&&d.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1,null,b));c>15*a&&d.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,b));return d};ea.prototype.constraints=mxRectangleShape.prototype.constraints;ha.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
-.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];X.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,
+.5),!1,null,b));c>15*a&&d.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,b));return d};V.prototype.constraints=mxRectangleShape.prototype.constraints;ha.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
+.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];Y.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,
.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];na.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,
.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];p.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,
@@ -3494,20 +3488,20 @@ Fa.prototype.constraints=mxEllipse.prototype.constraints;Ha.prototype.constraint
.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.375,
1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,
.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];w.prototype.constraints=mxRectangleShape.prototype.constraints;y.prototype.constraints=mxRectangleShape.prototype.constraints;x.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
-0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;Y.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,
+0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;Z.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*b+.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(b+d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*b-.25*d,e));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return a};fa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,b,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c+e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,
-1),!1));return a};sa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];Z.prototype.getConstraints=
+1),!1));return a};sa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];aa.prototype.getConstraints=
function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,
-.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));return a};aa.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",Z.prototype.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",Z.prototype.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};za.prototype.getConstraints=
+.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b-e),c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-d));return a};ba.prototype.getConstraints=function(a,b,c){a=[];var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",aa.prototype.arrowWidth)))),e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",aa.prototype.arrowSize)))),d=(c-d)/2;a.push(new mxConnectionConstraint(new mxPoint(0,
+.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*b,c-d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};ya.prototype.getConstraints=
function(a,b,c){a=[];var d=Math.min(c,b),e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),d=(c-e)/2,f=d+e,g=(b-e)/2,e=g+e;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,e,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),d));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,b,d));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(b+e),f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,d));return a};U.prototype.constraints=null;V.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,
-.9),!1)];ca.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];oa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];pa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,d));return a};U.prototype.constraints=null;W.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,
+.9),!1)];da.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];oa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];pa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(a){this.editorUi=a;this.actions={};this.init()}
Actions.prototype.init=function(){function a(a){d.escape();a=d.deleteCells(d.getDeletableCells(d.getSelectionCells()),a);null!=a&&d.setSelectionCells(a)}function b(){if(!d.isSelectionEmpty()){d.getModel().beginUpdate();try{for(var a=d.getSelectionCells(),b=0;b<a.length;b++)d.cellLabelChanged(a[b],"")}finally{d.getModel().endUpdate()}}}var c=this.editorUi,e=c.editor,d=e.graph,f=function(){return Action.prototype.isEnabled.apply(this,arguments)&&d.isEnabled()};this.addAction("new...",function(){d.openLink(c.getUrl())});
this.addAction("open...",function(){window.openNew=!0;window.openKey="open";c.openFile()});this.addAction("smartFit",function(){d.popupMenuHandler.hideMenu();var a=d.view.scale,b=d.view.translate.x,e=d.view.translate.y;c.actions.get("resetView").funct();1E-5>Math.abs(a-d.view.scale)&&b==d.view.translate.x&&e==d.view.translate.y&&c.actions.get(d.pageVisible?"fitPage":"fitWindow").funct()});this.addAction("keyPressEnter",function(){d.isEnabled()&&(d.isSelectionEmpty()?c.actions.get("smartFit").funct():
@@ -3521,36 +3515,36 @@ c-g)),d.cellsMoved(a,b-e.x,c-e.y))}}function e(){d.getModel().beginUpdate();try{
null,null,"Alt+Shift+V");this.addAction("copyData",function(){var a=d.getSelectionCell()||d.getModel().getRoot();d.isEnabled()&&null!=a&&(a=a.cloneValue(),null==a||isNaN(a.nodeType)||(c.copiedValue=a))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(a,b){function e(b,c){var e=f.getValue(b);c=b.cloneValue(c);c.removeAttribute("placeholders");null==e||isNaN(e.nodeType)||c.setAttribute("placeholders",e.getAttribute("placeholders"));null!=a&&mxEvent.isShiftDown(a)||c.setAttribute("label",
d.convertValueToString(b));f.setValue(b,c)}a=null!=b?b:a;var f=d.getModel();if(d.isEnabled()&&!d.isSelectionEmpty()&&null!=c.copiedValue){f.beginUpdate();try{var g=d.getEditableCells(d.getSelectionCells());if(0==g.length)e(f.getRoot(),c.copiedValue);else for(var h=0;h<g.length;h++)e(g[h],c.copiedValue)}finally{f.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(c,d){c=null!=d?d:c;null!=c&&mxEvent.isShiftDown(c)?b():a(null!=c&&(mxEvent.isControlDown(c)||mxEvent.isMetaDown(c)||
mxEvent.isAltDown(c)))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)});this.addAction("deleteLabels",function(){b()},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){try{d.setSelectionCells(d.duplicateCells()),d.scrollCellToVisible(d.getSelectionCell())}catch(g){c.handleError(g)}},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(a,b){a=null!=b?b:a;d.turnShapes(d.getResizableCells(d.getSelectionCells()),
-null!=a?mxEvent.isShiftDown(a):!1)},null,null,Editor.ctrlKey+"+R"));this.put("selectConnections",new Action(mxResources.get("selectEdges"),function(a){a=d.getSelectionCell();d.isEnabled()&&null!=a&&d.addSelectionCells(d.getEdges(a))}));this.addAction("selectVertices",function(){d.selectVertices(null,!0)},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){d.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){d.selectAll(null,!0)},null,
-null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){d.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!d.isSelectionEmpty()){d.getModel().beginUpdate();try{var a=d.getSelectionCells(),b=d.getCurrentCellStyle(d.getSelectionCell()),c=1==mxUtils.getValue(b,mxConstants.STYLE_EDITABLE,1)?0:1;d.setCellStyles(mxConstants.STYLE_MOVABLE,c,a);d.setCellStyles(mxConstants.STYLE_RESIZABLE,c,a);d.setCellStyles(mxConstants.STYLE_ROTATABLE,c,a);d.setCellStyles(mxConstants.STYLE_DELETABLE,
-c,a);d.setCellStyles(mxConstants.STYLE_EDITABLE,c,a);d.setCellStyles("connectable",c,a)}finally{d.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+L");this.addAction("home",function(){d.home()},null,null,"Shift+Home");this.addAction("exitGroup",function(){d.exitGroup()},null,null,Editor.ctrlKey+"+Shift+Home");this.addAction("enterGroup",function(){d.enterGroup()},null,null,Editor.ctrlKey+"+Shift+End");this.addAction("collapse",function(){d.foldCells(!0)},null,null,Editor.ctrlKey+"+Home");this.addAction("expand",
-function(){d.foldCells(!1)},null,null,Editor.ctrlKey+"+End");this.addAction("toFront",function(){d.orderCells(!1)},null,null,Editor.ctrlKey+"+Shift+F");this.addAction("toBack",function(){d.orderCells(!0)},null,null,Editor.ctrlKey+"+Shift+B");this.addAction("bringForward",function(a){d.orderCells(!1,null,!0)});this.addAction("sendBackward",function(a){d.orderCells(!0,null,!0)});this.addAction("group",function(){if(d.isEnabled()){var a=mxUtils.sortCells(d.getSelectionCells(),!0);1!=a.length||d.isTable(a[0])||
-d.isTableRow(a[0])?(a=d.getCellsForGroup(a),1<a.length&&d.setSelectionCell(d.groupCells(null,0,a))):d.setCellStyles("container","1")}},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){if(d.isEnabled()){var a=d.getEditableCells(d.getSelectionCells());d.model.beginUpdate();try{var b=d.ungroupCells();if(null!=a)for(var c=0;c<a.length;c++)d.model.contains(a[c])&&(0==d.model.getChildCount(a[c])&&d.model.isVertex(a[c])&&d.setCellStyles("container","0",[a[c]]),b.push(a[c]))}finally{d.model.endUpdate()}0<
-b.length&&d.setSelectionCells(b)}},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){if(d.isEnabled()){var a=d.getSelectionCells();if(null!=a){for(var b=[],c=0;c<a.length;c++)d.isTableRow(a[c])||d.isTableCell(a[c])||b.push(a[c]);d.removeCellsFromParent(b)}}});this.addAction("edit",function(){d.isEnabled()&&d.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var a=d.getSelectionCell()||d.getModel().getRoot();c.showDataDialog(a)},null,
-null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var a=d.getSelectionCell();if(d.isEnabled()&&null!=a&&d.isCellEditable(a)){var b="";if(mxUtils.isNode(a.value)){var e=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&a.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(e=a.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==e&&(e=a.value.getAttribute("tooltip"));null!=e&&(b=e)}b=new TextareaDialog(c,mxResources.get("editTooltip")+":",b,function(b){d.setTooltipForCell(a,
-b)});c.showDialog(b.container,320,200,!0,!0);b.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var a=d.getLinkForCell(d.getSelectionCell());null!=a&&d.openLink(a)});this.addAction("editLink...",function(){var a=d.getSelectionCell();if(d.isEnabled()&&null!=a&&d.isCellEditable(a)){var b=d.getLinkForCell(a)||"";c.showLinkDialog(b,mxResources.get("apply"),function(b,c,e){b=mxUtils.trim(b);d.setLinkForCell(a,0<b.length?b:null);d.setAttributeForCell(a,"linkTarget",e)},!0,d.getLinkTargetForCell(a))}},
-null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&(d.clearSelection(),c.actions.get("image").funct())})).isEnabled=f;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&c.showLinkDialog("",mxResources.get("insert"),function(a,b,c){a=mxUtils.trim(a);if(0<a.length){var e=null,f=d.getLinkTitle(a);null!=b&&0<b.length&&(e=b[0].iconUrl,
-f=b[0].name||b[0].type,f=f.charAt(0).toUpperCase()+f.substring(1),30<f.length&&(f=f.substring(0,30)+"..."));b=new mxCell(f,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+(null!=e?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+e:"spacing=10;"));b.vertex=!0;e=d.getCenterInsertPoint(d.getBoundingBoxFromGeometry([b],!0));b.geometry.x=e.x;b.geometry.y=e.y;d.setAttributeForCell(b,"linkTarget",c);d.setLinkForCell(b,a);d.cellSizeUpdated(b,
-!0);d.getModel().beginUpdate();try{b=d.addCell(b),d.fireEvent(new mxEventObject("cellsInserted","cells",[b]))}finally{d.getModel().endUpdate()}d.setSelectionCell(b);d.scrollCellToVisible(d.getSelectionCell())}},!0)})).isEnabled=f;this.addAction("link...",mxUtils.bind(this,function(){if(d.isEnabled())if(d.cellEditor.isContentEditing()){var a=d.getSelectedElement(),b=d.getParentByName(a,"A",d.cellEditor.textarea),e="";if(null==b&&null!=a&&null!=a.getElementsByTagName)for(var f=a.getElementsByTagName("a"),
-h=0;h<f.length&&null==b;h++)f[h].textContent==a.textContent&&(b=f[h]);null!=b&&"A"==b.nodeName&&(e=b.getAttribute("href")||"",d.selectNode(b));var k=d.cellEditor.saveSelection();c.showLinkDialog(e,mxResources.get("apply"),mxUtils.bind(this,function(a){d.cellEditor.restoreSelection(k);null!=a&&d.insertLink(a)}))}else d.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=f;this.addAction("autosize",function(){var a=d.getSelectionCells();if(null!=a){d.getModel().beginUpdate();
-try{for(var b=0;b<a.length;b++){var c=a[b];0<d.getModel().getChildCount(c)?d.updateGroupBounds([c],0,!0):d.updateCellSize(c)}}finally{d.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){d.stopEditing();var a=d.getCommonStyle(d.getSelectionCells()),a="1"==mxUtils.getValue(a,"html","0")?null:"1";d.getModel().beginUpdate();try{for(var b=d.getEditableCells(d.getSelectionCells()),e=0;e<b.length;e++)if(state=d.getView().getState(b[e]),null!=state){var f=
-mxUtils.getValue(state.style,"html","0");if("1"==f&&null==a){var h=d.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(h=h.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var k=document.createElement("div");k.innerHTML=d.sanitizeHtml(h);h=mxUtils.extractTextWithWhitespace(k.childNodes);d.cellLabelChanged(state.cell,h);d.setCellStyles("html",a,[b[e]])}else"0"==f&&"1"==a&&(h=mxUtils.htmlEntities(d.convertValueToString(state.cell),!1),"0"!=mxUtils.getValue(state.style,"nl2Br",
-"1")&&(h=h.replace(/\n/g,"<br/>")),d.cellLabelChanged(state.cell,d.sanitizeHtml(h)),d.setCellStyles("html",a,[b[e]]))}c.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=a?a:"0"],"cells",b))}finally{d.getModel().endUpdate()}});this.addAction("wordWrap",function(){var a=d.getView().getState(d.getSelectionCell()),b="wrap";d.stopEditing();null!=a&&"wrap"==a.style[mxConstants.STYLE_WHITE_SPACE]&&(b=null);d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,b)});this.addAction("rotation",
-function(){var a="0",b=d.getView().getState(d.getSelectionCell());null!=b&&(a=b.style[mxConstants.STYLE_ROTATION]||a);a=new FilenameDialog(c,a,mxResources.get("apply"),function(a){null!=a&&0<a.length&&d.setCellStyles(mxConstants.STYLE_ROTATION,a)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");c.showDialog(a.container,375,80,!0,!0);a.init()});this.addAction("resetView",function(){d.zoomTo(1);c.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",function(a){d.isFastZoomEnabled()?
-d.lazyZoom(!0,!0,c.buttonZoomDelay):d.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(a){d.isFastZoomEnabled()?d.lazyZoom(!1,!0,c.buttonZoomDelay):d.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var a=d.isSelectionEmpty()?d.getGraphBounds():d.getBoundingBox(d.getSelectionCells()),b=d.view.translate,e=d.view.scale;a.x=a.x/e-b.x;a.y=a.y/e-b.y;a.width/=e;a.height/=e;null!=d.backgroundImage&&
-(a=mxRectangle.fromRectangle(a),a.add(new mxRectangle(0,0,d.backgroundImage.width,d.backgroundImage.height)));0==a.width||0==a.height?(d.zoomTo(1),c.resetScrollbars()):(b=Editor.fitWindowBorders,null!=b&&(a.x-=b.x,a.y-=b.y,a.width+=b.width+b.x,a.height+=b.height+b.y),d.fitWindow(a))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var a=d.pageFormat,b=d.pageScale;d.zoomTo(Math.floor(20*Math.min((d.container.clientWidth-
-10)/a.width/b,(d.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(d.container)&&(a=d.getPagePadding(),d.container.scrollTop=a.y*d.view.scale-1,d.container.scrollLeft=Math.min(a.x*d.view.scale,(d.container.scrollWidth-d.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var a=d.pageFormat,b=d.pageScale;d.zoomTo(Math.floor(20*Math.min((d.container.clientWidth-10)/(2*a.width)/
-b,(d.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(d.container)&&(a=d.getPagePadding(),d.container.scrollTop=Math.min(a.y,(d.container.scrollHeight-d.container.clientHeight)/2),d.container.scrollLeft=Math.min(a.x,(d.container.scrollWidth-d.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();d.zoomTo(Math.floor(20*(d.container.clientWidth-10)/d.pageFormat.width/d.pageScale)/
-20);if(mxUtils.hasScrollbars(d.container)){var a=d.getPagePadding();d.container.scrollLeft=Math.min(a.x*d.view.scale,(d.container.scrollWidth-d.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*d.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&&0<a&&d.zoomTo(a/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(a.container,
-300,80,!0,!0);a.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*d.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&&0<a&&(a=new ChangePageSetup(c,null,null,null,a/100),a.ignoreColor=!0,a.ignoreImage=!0,d.model.execute(a))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}));var k=null,k=this.addAction("grid",
-function(){d.setGridEnabled(!d.isGridEnabled());d.defaultGridEnabled=d.isGridEnabled();c.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+"+Shift+G");k.setToggleAction(!0);k.setSelectedCallback(function(){return d.isGridEnabled()});k.setEnabled(!1);k=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled;c.fireEvent(new mxEventObject("guidesEnabledChanged"))});k.setToggleAction(!0);k.setSelectedCallback(function(){return d.graphHandler.guidesEnabled});
-k.setEnabled(!1);k=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled());c.fireEvent(new mxEventObject("tooltipsEnabledChanged"))});k.setToggleAction(!0);k.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()});k=this.addAction("collapseExpand",function(){var a=new ChangePageSetup(c);a.ignoreColor=!0;a.ignoreImage=!0;a.foldingEnabled=!d.foldingEnabled;d.model.execute(a)});k.setToggleAction(!0);k.setSelectedCallback(function(){return d.foldingEnabled});
-k.isEnabled=f;k=this.addAction("scrollbars",function(){c.setScrollbars(!c.hasScrollbars())});k.setToggleAction(!0);k.setSelectedCallback(function(){return d.scrollbars});k=this.addAction("pageView",mxUtils.bind(this,function(){c.setPageVisible(!d.pageVisible)}));k.setToggleAction(!0);k.setSelectedCallback(function(){return d.pageVisible});k=this.addAction("connectionArrows",function(){d.connectionArrowsEnabled=!d.connectionArrowsEnabled;c.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,
-null,"Alt+Shift+A");k.setToggleAction(!0);k.setSelectedCallback(function(){return d.connectionArrowsEnabled});k=this.addAction("connectionPoints",function(){d.setConnectable(!d.connectionHandler.isEnabled());c.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");k.setToggleAction(!0);k.setSelectedCallback(function(){return d.connectionHandler.isEnabled()});k=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget());
-c.fireEvent(new mxEventObject("copyConnectChanged"))});k.setToggleAction(!0);k.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()});k.isEnabled=f;k=this.addAction("autosave",function(){c.editor.setAutosave(!c.editor.autosave)});k.setToggleAction(!0);k.setSelectedCallback(function(){return c.editor.autosave});k.isEnabled=f;k.visible=!1;this.addAction("help",function(){var a="";mxResources.isLanguageSupported(mxClient.language)&&(a="_"+mxClient.language);d.openLink(RESOURCES_PATH+
-"/help"+a+".html")});var h=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){h||(c.showDialog((new AboutDialog(c)).container,320,280,!0,!0,function(){h=!1}),h=!0)}));k=mxUtils.bind(this,function(a,b,c,e){return this.addAction(a,function(){if(null!=c&&d.cellEditor.isContentEditing())c();else{d.stopEditing(!1);d.getModel().beginUpdate();try{var a=d.getEditableCells(d.getSelectionCells());d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,b,a);(b&mxConstants.FONT_BOLD)==
+null!=a?mxEvent.isShiftDown(a):!1)},null,null,mxClient.IS_SF?null:Editor.ctrlKey+"+R"));this.put("selectConnections",new Action(mxResources.get("selectEdges"),function(a){a=d.getSelectionCell();d.isEnabled()&&null!=a&&d.addSelectionCells(d.getEdges(a))}));this.addAction("selectVertices",function(){d.selectVertices(null,!0)},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){d.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){d.selectAll(null,
+!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){d.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!d.isSelectionEmpty()){d.getModel().beginUpdate();try{var a=d.getSelectionCells(),b=d.getCurrentCellStyle(d.getSelectionCell()),c=1==mxUtils.getValue(b,mxConstants.STYLE_EDITABLE,1)?0:1;d.setCellStyles(mxConstants.STYLE_MOVABLE,c,a);d.setCellStyles(mxConstants.STYLE_RESIZABLE,c,a);d.setCellStyles(mxConstants.STYLE_ROTATABLE,c,
+a);d.setCellStyles(mxConstants.STYLE_DELETABLE,c,a);d.setCellStyles(mxConstants.STYLE_EDITABLE,c,a);d.setCellStyles("connectable",c,a)}finally{d.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+L");this.addAction("home",function(){d.home()},null,null,"Shift+Home");this.addAction("exitGroup",function(){d.exitGroup()},null,null,Editor.ctrlKey+"+Shift+Home");this.addAction("enterGroup",function(){d.enterGroup()},null,null,Editor.ctrlKey+"+Shift+End");this.addAction("collapse",function(){d.foldCells(!0)},
+null,null,Editor.ctrlKey+"+Home");this.addAction("expand",function(){d.foldCells(!1)},null,null,Editor.ctrlKey+"+End");this.addAction("toFront",function(){d.orderCells(!1)},null,null,Editor.ctrlKey+"+Shift+F");this.addAction("toBack",function(){d.orderCells(!0)},null,null,Editor.ctrlKey+"+Shift+B");this.addAction("bringForward",function(a){d.orderCells(!1,null,!0)});this.addAction("sendBackward",function(a){d.orderCells(!0,null,!0)});this.addAction("group",function(){if(d.isEnabled()){var a=mxUtils.sortCells(d.getSelectionCells(),
+!0);1!=a.length||d.isTable(a[0])||d.isTableRow(a[0])?(a=d.getCellsForGroup(a),1<a.length&&d.setSelectionCell(d.groupCells(null,0,a))):d.setCellStyles("container","1")}},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){if(d.isEnabled()){var a=d.getEditableCells(d.getSelectionCells());d.model.beginUpdate();try{var b=d.ungroupCells();if(null!=a)for(var c=0;c<a.length;c++)d.model.contains(a[c])&&(0==d.model.getChildCount(a[c])&&d.model.isVertex(a[c])&&d.setCellStyles("container","0",
+[a[c]]),b.push(a[c]))}finally{d.model.endUpdate()}0<b.length&&d.setSelectionCells(b)}},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){if(d.isEnabled()){var a=d.getSelectionCells();if(null!=a){for(var b=[],c=0;c<a.length;c++)d.isTableRow(a[c])||d.isTableCell(a[c])||b.push(a[c]);d.removeCellsFromParent(b)}}});this.addAction("edit",function(){d.isEnabled()&&d.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var a=d.getSelectionCell()||
+d.getModel().getRoot();c.showDataDialog(a)},null,null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var a=d.getSelectionCell();if(d.isEnabled()&&null!=a&&d.isCellEditable(a)){var b="";if(mxUtils.isNode(a.value)){var e=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&a.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(e=a.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==e&&(e=a.value.getAttribute("tooltip"));null!=e&&(b=e)}b=new TextareaDialog(c,mxResources.get("editTooltip")+
+":",b,function(b){d.setTooltipForCell(a,b)});c.showDialog(b.container,320,200,!0,!0);b.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var a=d.getLinkForCell(d.getSelectionCell());null!=a&&d.openLink(a)});this.addAction("editLink...",function(){var a=d.getSelectionCell();if(d.isEnabled()&&null!=a&&d.isCellEditable(a)){var b=d.getLinkForCell(a)||"";c.showLinkDialog(b,mxResources.get("apply"),function(b,c,e){b=mxUtils.trim(b);d.setLinkForCell(a,0<b.length?b:null);d.setAttributeForCell(a,
+"linkTarget",e)},!0,d.getLinkTargetForCell(a))}},null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&(d.clearSelection(),c.actions.get("image").funct())})).isEnabled=f;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&c.showLinkDialog("",mxResources.get("insert"),function(a,b,c){a=mxUtils.trim(a);if(0<a.length){var e=null,
+f=d.getLinkTitle(a);null!=b&&0<b.length&&(e=b[0].iconUrl,f=b[0].name||b[0].type,f=f.charAt(0).toUpperCase()+f.substring(1),30<f.length&&(f=f.substring(0,30)+"..."));b=new mxCell(f,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+(null!=e?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+e:"spacing=10;"));b.vertex=!0;e=d.getCenterInsertPoint(d.getBoundingBoxFromGeometry([b],!0));b.geometry.x=e.x;b.geometry.y=e.y;d.setAttributeForCell(b,
+"linkTarget",c);d.setLinkForCell(b,a);d.cellSizeUpdated(b,!0);d.getModel().beginUpdate();try{b=d.addCell(b),d.fireEvent(new mxEventObject("cellsInserted","cells",[b]))}finally{d.getModel().endUpdate()}d.setSelectionCell(b);d.scrollCellToVisible(d.getSelectionCell())}},!0)})).isEnabled=f;this.addAction("link...",mxUtils.bind(this,function(){if(d.isEnabled())if(d.cellEditor.isContentEditing()){var a=d.getSelectedElement(),b=d.getParentByName(a,"A",d.cellEditor.textarea),e="";if(null==b&&null!=a&&null!=
+a.getElementsByTagName)for(var f=a.getElementsByTagName("a"),h=0;h<f.length&&null==b;h++)f[h].textContent==a.textContent&&(b=f[h]);null!=b&&"A"==b.nodeName&&(e=b.getAttribute("href")||"",d.selectNode(b));var k=d.cellEditor.saveSelection();c.showLinkDialog(e,mxResources.get("apply"),mxUtils.bind(this,function(a){d.cellEditor.restoreSelection(k);null!=a&&d.insertLink(a)}))}else d.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=f;this.addAction("autosize",
+function(){var a=d.getSelectionCells();if(null!=a){d.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var c=a[b];0<d.getModel().getChildCount(c)?d.updateGroupBounds([c],0,!0):d.updateCellSize(c)}}finally{d.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){d.stopEditing();var a=d.getCommonStyle(d.getSelectionCells()),a="1"==mxUtils.getValue(a,"html","0")?null:"1";d.getModel().beginUpdate();try{for(var b=d.getEditableCells(d.getSelectionCells()),
+e=0;e<b.length;e++)if(state=d.getView().getState(b[e]),null!=state){var f=mxUtils.getValue(state.style,"html","0");if("1"==f&&null==a){var h=d.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(h=h.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var k=document.createElement("div");k.innerHTML=d.sanitizeHtml(h);h=mxUtils.extractTextWithWhitespace(k.childNodes);d.cellLabelChanged(state.cell,h);d.setCellStyles("html",a,[b[e]])}else"0"==f&&"1"==a&&(h=mxUtils.htmlEntities(d.convertValueToString(state.cell),
+!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(h=h.replace(/\n/g,"<br/>")),d.cellLabelChanged(state.cell,d.sanitizeHtml(h)),d.setCellStyles("html",a,[b[e]]))}c.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=a?a:"0"],"cells",b))}finally{d.getModel().endUpdate()}});this.addAction("wordWrap",function(){var a=d.getView().getState(d.getSelectionCell()),b="wrap";d.stopEditing();null!=a&&"wrap"==a.style[mxConstants.STYLE_WHITE_SPACE]&&(b=null);d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,
+b)});this.addAction("rotation",function(){var a="0",b=d.getView().getState(d.getSelectionCell());null!=b&&(a=b.style[mxConstants.STYLE_ROTATION]||a);a=new FilenameDialog(c,a,mxResources.get("apply"),function(a){null!=a&&0<a.length&&d.setCellStyles(mxConstants.STYLE_ROTATION,a)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");c.showDialog(a.container,375,80,!0,!0);a.init()});this.addAction("resetView",function(){d.zoomTo(1);c.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",
+function(a){d.isFastZoomEnabled()?d.lazyZoom(!0,!0,c.buttonZoomDelay):d.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(a){d.isFastZoomEnabled()?d.lazyZoom(!1,!0,c.buttonZoomDelay):d.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var a=d.isSelectionEmpty()?d.getGraphBounds():d.getBoundingBox(d.getSelectionCells()),b=d.view.translate,e=d.view.scale;a.x=a.x/e-b.x;a.y=a.y/e-b.y;a.width/=e;
+a.height/=e;null!=d.backgroundImage&&(a=mxRectangle.fromRectangle(a),a.add(new mxRectangle(0,0,d.backgroundImage.width,d.backgroundImage.height)));0==a.width||0==a.height?(d.zoomTo(1),c.resetScrollbars()):(b=Editor.fitWindowBorders,null!=b&&(a.x-=b.x,a.y-=b.y,a.width+=b.width+b.x,a.height+=b.height+b.y),d.fitWindow(a))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var a=d.pageFormat,b=d.pageScale;d.zoomTo(Math.floor(20*
+Math.min((d.container.clientWidth-10)/a.width/b,(d.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(d.container)&&(a=d.getPagePadding(),d.container.scrollTop=a.y*d.view.scale-1,d.container.scrollLeft=Math.min(a.x*d.view.scale,(d.container.scrollWidth-d.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var a=d.pageFormat,b=d.pageScale;d.zoomTo(Math.floor(20*Math.min((d.container.clientWidth-
+10)/(2*a.width)/b,(d.container.clientHeight-10)/a.height/b))/20);mxUtils.hasScrollbars(d.container)&&(a=d.getPagePadding(),d.container.scrollTop=Math.min(a.y,(d.container.scrollHeight-d.container.clientHeight)/2),d.container.scrollLeft=Math.min(a.x,(d.container.scrollWidth-d.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();d.zoomTo(Math.floor(20*(d.container.clientWidth-10)/d.pageFormat.width/
+d.pageScale)/20);if(mxUtils.hasScrollbars(d.container)){var a=d.getPagePadding();d.container.scrollLeft=Math.min(a.x*d.view.scale,(d.container.scrollWidth-d.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*d.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&&0<a&&d.zoomTo(a/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(a.container,
+300,80,!0,!0);a.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.editorUi,parseInt(100*d.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(a){a=parseInt(a);!isNaN(a)&&0<a&&(a=new ChangePageSetup(c,null,null,null,a/100),a.ignoreColor=!0,a.ignoreImage=!0,d.model.execute(a))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}));var h=null,h=this.addAction("grid",
+function(){d.setGridEnabled(!d.isGridEnabled());d.defaultGridEnabled=d.isGridEnabled();c.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+"+Shift+G");h.setToggleAction(!0);h.setSelectedCallback(function(){return d.isGridEnabled()});h.setEnabled(!1);h=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled;c.fireEvent(new mxEventObject("guidesEnabledChanged"))});h.setToggleAction(!0);h.setSelectedCallback(function(){return d.graphHandler.guidesEnabled});
+h.setEnabled(!1);h=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled());c.fireEvent(new mxEventObject("tooltipsEnabledChanged"))});h.setToggleAction(!0);h.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()});h=this.addAction("collapseExpand",function(){var a=new ChangePageSetup(c);a.ignoreColor=!0;a.ignoreImage=!0;a.foldingEnabled=!d.foldingEnabled;d.model.execute(a)});h.setToggleAction(!0);h.setSelectedCallback(function(){return d.foldingEnabled});
+h.isEnabled=f;h=this.addAction("scrollbars",function(){c.setScrollbars(!c.hasScrollbars())});h.setToggleAction(!0);h.setSelectedCallback(function(){return d.scrollbars});h=this.addAction("pageView",mxUtils.bind(this,function(){c.setPageVisible(!d.pageVisible)}));h.setToggleAction(!0);h.setSelectedCallback(function(){return d.pageVisible});h=this.addAction("connectionArrows",function(){d.connectionArrowsEnabled=!d.connectionArrowsEnabled;c.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,
+null,"Alt+Shift+A");h.setToggleAction(!0);h.setSelectedCallback(function(){return d.connectionArrowsEnabled});h=this.addAction("connectionPoints",function(){d.setConnectable(!d.connectionHandler.isEnabled());c.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");h.setToggleAction(!0);h.setSelectedCallback(function(){return d.connectionHandler.isEnabled()});h=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget());
+c.fireEvent(new mxEventObject("copyConnectChanged"))});h.setToggleAction(!0);h.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()});h.isEnabled=f;h=this.addAction("autosave",function(){c.editor.setAutosave(!c.editor.autosave)});h.setToggleAction(!0);h.setSelectedCallback(function(){return c.editor.autosave});h.isEnabled=f;h.visible=!1;this.addAction("help",function(){var a="";mxResources.isLanguageSupported(mxClient.language)&&(a="_"+mxClient.language);d.openLink(RESOURCES_PATH+
+"/help"+a+".html")});var k=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){k||(c.showDialog((new AboutDialog(c)).container,320,280,!0,!0,function(){k=!1}),k=!0)}));h=mxUtils.bind(this,function(a,b,c,e){return this.addAction(a,function(){if(null!=c&&d.cellEditor.isContentEditing())c();else{d.stopEditing(!1);d.getModel().beginUpdate();try{var a=d.getEditableCells(d.getSelectionCells());d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,b,a);(b&mxConstants.FONT_BOLD)==
mxConstants.FONT_BOLD?d.updateLabelElements(a,function(a){a.style.fontWeight=null;"B"==a.nodeName&&d.replaceElement(a)}):(b&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?d.updateLabelElements(a,function(a){a.style.fontStyle=null;"I"==a.nodeName&&d.replaceElement(a)}):(b&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&d.updateLabelElements(a,function(a){a.style.textDecoration=null;"U"==a.nodeName&&d.replaceElement(a)});for(var e=0;e<a.length;e++)0==d.model.getChildCount(a[e])&&d.autoSizeCell(a[e],
-!1)}finally{d.getModel().endUpdate()}}},null,null,e)});k("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");k("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");k("underline",mxConstants.FONT_UNDERLINE,function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){c.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",
+!1)}finally{d.getModel().endUpdate()}}},null,null,e)});h("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");h("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");h("underline",mxConstants.FONT_UNDERLINE,function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){c.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",
function(){c.menus.pickColor(mxConstants.STYLE_STROKECOLOR)});this.addAction("fillColor...",function(){c.menus.pickColor(mxConstants.STYLE_FILLCOLOR)});this.addAction("gradientColor...",function(){c.menus.pickColor(mxConstants.STYLE_GRADIENTCOLOR)});this.addAction("backgroundColor...",function(){c.menus.pickColor(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"backcolor")});this.addAction("borderColor...",function(){c.menus.pickColor(mxConstants.STYLE_LABEL_BORDERCOLOR)});this.addAction("vertical",function(){c.menus.toggleStyle(mxConstants.STYLE_HORIZONTAL,
!0)});this.addAction("shadow",function(){c.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_DASHED,null),d.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("dashed",function(){d.getModel().beginUpdate();
try{d.setCellStyles(mxConstants.STYLE_DASHED,"1"),d.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("dotted",function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_DASHED,"1"),d.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),c.fireEvent(new mxEventObject("styleChanged",
@@ -3561,24 +3555,24 @@ e="1"==mxUtils.getValue(b,mxConstants.STYLE_ROUNDED,"0")?"0":"1";d.setCellStyles
mxUtils.bind(this,function(){var a=d.getEditableCells(d.getSelectionCells());if(null!=a&&0<a.length){var b=d.getModel(),b=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",b.getStyle(a[0])||"",function(b){null!=b&&d.setCellStyle(mxUtils.trim(b),a)},null,null,400,220);this.editorUi.showDialog(b.container,420,300,!0,!0);b.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){d.isEnabled()&&!d.isSelectionEmpty()&&c.setDefaultStyle(d.getSelectionCell())},
null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){d.isEnabled()&&c.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var a=d.getSelectionCell();if(null!=a&&d.getModel().isEdge(a)){var b=e.graph.selectionCellsHandler.getHandler(a);if(b instanceof mxEdgeHandler){for(var c=d.view.translate,f=d.view.scale,h=c.x,c=c.y,a=d.getModel().getParent(a),k=d.getCellGeometry(a);d.getModel().isVertex(a)&&null!=k;)h+=k.x,c+=k.y,a=d.getModel().getParent(a),
k=d.getCellGeometry(a);h=Math.round(d.snap(d.popupMenuHandler.triggerX/f-h));f=Math.round(d.snap(d.popupMenuHandler.triggerY/f-c));b.addPointAt(b.state,h,f)}}});this.addAction("removeWaypoint",function(){var a=c.actions.get("removeWaypoint");null!=a.handler&&a.handler.removePoint(a.handler.state,a.index)});this.addAction("clearWaypoints",function(a,b){a=null!=b?b:a;var c=d.getSelectionCells();if(null!=c){c=d.getEditableCells(d.addAllEdges(c));d.getModel().beginUpdate();try{for(var e=0;e<c.length;e++){var f=
-c[e];if(d.getModel().isEdge(f)){var g=d.getCellGeometry(f);null!=b&&mxEvent.isShiftDown(a)?(d.setCellStyles(mxConstants.STYLE_EXIT_X,null,[f]),d.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[f]),d.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[f]),d.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[f])):null!=g&&(g=g.clone(),g.points=null,g.x=0,g.y=0,g.offset=null,d.getModel().setGeometry(f,g))}}}finally{d.getModel().endUpdate()}}},null,null,"Alt+Shift+C");k=this.addAction("subscript",mxUtils.bind(this,
-function(){d.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");k=this.addAction("superscript",mxUtils.bind(this,function(){d.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())){var a=mxResources.get("image")+" ("+mxResources.get("url")+"):",b=d.getView().getState(d.getSelectionCell()),e="";null!=
+c[e];if(d.getModel().isEdge(f)){var g=d.getCellGeometry(f);null!=b&&mxEvent.isShiftDown(a)?(d.setCellStyles(mxConstants.STYLE_EXIT_X,null,[f]),d.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[f]),d.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[f]),d.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[f])):null!=g&&(g=g.clone(),g.points=null,g.x=0,g.y=0,g.offset=null,d.getModel().setGeometry(f,g))}}}finally{d.getModel().endUpdate()}}},null,null,"Alt+Shift+C");h=this.addAction("subscript",mxUtils.bind(this,
+function(){d.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");h=this.addAction("superscript",mxUtils.bind(this,function(){d.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())){var a=mxResources.get("image")+" ("+mxResources.get("url")+"):",b=d.getView().getState(d.getSelectionCell()),e="";null!=
b&&(e=b.style[mxConstants.STYLE_IMAGE]||e);var f=d.cellEditor.saveSelection();c.showImageDialog(a,e,function(a,b,c){if(d.cellEditor.isContentEditing())d.cellEditor.restoreSelection(f),d.insertImage(a,b,c);else{var e=d.getSelectionCells();if(null!=a&&(0<a.length||0<e.length)){var g=null;d.getModel().beginUpdate();try{if(0==e.length){var e=[d.insertVertex(d.getDefaultParent(),null,"",0,0,b,c,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")],h=d.getCenterInsertPoint(d.getBoundingBoxFromGeometry(e,
!0));e[0].geometry.x=h.x;e[0].geometry.y=h.y;g=e;d.fireEvent(new mxEventObject("cellsInserted","cells",g))}d.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,e);var k=d.getCurrentCellStyle(e[0]);"image"!=k[mxConstants.STYLE_SHAPE]&&"label"!=k[mxConstants.STYLE_SHAPE]?d.setCellStyles(mxConstants.STYLE_SHAPE,"image",e):0==a.length&&d.setCellStyles(mxConstants.STYLE_SHAPE,null,e);if(1==d.getSelectionCount()&&null!=b&&null!=c){var m=e[0],l=d.getModel().getGeometry(m);null!=l&&(l=l.clone(),l.width=
-b,l.height=c,d.getModel().setGeometry(m,l))}}finally{d.getModel().endUpdate()}null!=g&&(d.setSelectionCells(g),d.scrollCellToVisible(g[0]))}}},d.cellEditor.isContentEditing(),!d.cellEditor.isContentEditing())}}).isEnabled=f;k=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(c,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){c.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),
-this.layersWindow.window.addListener("hide",function(){c.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),c.fireEvent(new mxEventObject("layers")),this.layersWindow.init()):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");k.setToggleAction(!0);k.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));k=this.addAction("formatPanel",mxUtils.bind(this,
-function(){c.toggleFormatPanel()}),null,null,Editor.ctrlKey+"+Shift+P");k.setToggleAction(!0);k.setSelectedCallback(mxUtils.bind(this,function(){return 0<c.formatWidth}));k=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(c,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",mxUtils.bind(this,function(){c.fireEvent(new mxEventObject("outline"));this.outlineWindow.window.fit()})),this.outlineWindow.window.addListener("hide",
-function(){c.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0),c.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");k.setToggleAction(!0);k.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))};
+b,l.height=c,d.getModel().setGeometry(m,l))}}finally{d.getModel().endUpdate()}null!=g&&(d.setSelectionCells(g),d.scrollCellToVisible(g[0]))}}},d.cellEditor.isContentEditing(),!d.cellEditor.isContentEditing())}}).isEnabled=f;h=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(c,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){c.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),
+this.layersWindow.window.addListener("hide",function(){c.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),c.fireEvent(new mxEventObject("layers")),this.layersWindow.init()):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");h.setToggleAction(!0);h.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));h=this.addAction("formatPanel",mxUtils.bind(this,
+function(){c.toggleFormatPanel()}),null,null,Editor.ctrlKey+"+Shift+P");h.setToggleAction(!0);h.setSelectedCallback(mxUtils.bind(this,function(){return 0<c.formatWidth}));h=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(c,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",mxUtils.bind(this,function(){c.fireEvent(new mxEventObject("outline"));this.outlineWindow.window.fit()})),this.outlineWindow.window.addListener("hide",
+function(){c.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0),c.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");h.setToggleAction(!0);h.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))};
Actions.prototype.addAction=function(a,b,c,e,d){var f;"..."==a.substring(a.length-3)?(a=a.substring(0,a.length-3),f=mxResources.get(a)+"..."):f=mxResources.get(a);return this.put(a,new Action(f,b,c,e,d))};Actions.prototype.put=function(a,b){return this.actions[a]=b};Actions.prototype.get=function(a){return this.actions[a]};function Action(a,b,c,e,d){mxEventSource.call(this);this.label=a;this.funct=this.createFunction(b);this.enabled=null!=c?c:!0;this.iconCls=e;this.shortcut=d;this.visible=!0}
mxUtils.extend(Action,mxEventSource);Action.prototype.createFunction=function(a){return a};Action.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Action.prototype.isEnabled=function(){return this.enabled};Action.prototype.setToggleAction=function(a){this.toggleAction=a};Action.prototype.setSelectedCallback=function(a){this.selectedCallback=a};Action.prototype.isSelected=function(){return this.selectedCallback()};Menus=function(a){this.editorUi=a;this.menus={};this.init();mxClient.IS_SVG||((new Image).src=this.checkmarkImage)};Menus.prototype.defaultFont="Helvetica";Menus.prototype.defaultFontSize="12";Menus.prototype.defaultMenuItems="file edit view arrange extras help".split(" ");Menus.prototype.defaultFonts="Helvetica;Verdana;Times New Roman;Garamond;Comic Sans MS;Courier New;Georgia;Lucida Console;Tahoma".split(";");
Menus.prototype.init=function(){var a=this.editorUi,b=a.editor.graph,c=mxUtils.bind(b,b.isEnabled);this.customFonts=[];this.customFontSizes=[];this.put("fontFamily",new Menu(mxUtils.bind(this,function(c,d){for(var e=mxUtils.bind(this,function(e){this.styleChange(c,e,[mxConstants.STYLE_FONTFAMILY],[e],null,d,function(){document.execCommand("fontname",!1,e);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTFAMILY],"values",[e],"cells",[b.cellEditor.getEditingCell()]))},function(){b.updateLabelElements(b.getSelectionCells(),
-function(a){a.removeAttribute("face");a.style.fontFamily=null;"PRE"==a.nodeName&&b.replaceElement(a,"div")})}).firstChild.nextSibling.style.fontFamily=e}),k=0;k<this.defaultFonts.length;k++)e(this.defaultFonts[k]);c.addSeparator(d);if(0<this.customFonts.length){for(k=0;k<this.customFonts.length;k++)e(this.customFonts[k]);c.addSeparator(d);c.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFonts=[];this.editorUi.fireEvent(new mxEventObject("customFontsChanged"))}),d);c.addSeparator(d)}this.promptChange(c,
+function(a){a.removeAttribute("face");a.style.fontFamily=null;"PRE"==a.nodeName&&b.replaceElement(a,"div")})}).firstChild.nextSibling.style.fontFamily=e}),h=0;h<this.defaultFonts.length;h++)e(this.defaultFonts[h]);c.addSeparator(d);if(0<this.customFonts.length){for(h=0;h<this.customFonts.length;h++)e(this.customFonts[h]);c.addSeparator(d);c.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFonts=[];this.editorUi.fireEvent(new mxEventObject("customFontsChanged"))}),d);c.addSeparator(d)}this.promptChange(c,
mxResources.get("custom")+"...","",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,d,!0,mxUtils.bind(this,function(a){0>mxUtils.indexOf(this.customFonts,a)&&(this.customFonts.push(a),this.editorUi.fireEvent(new mxEventObject("customFontsChanged")))}))})));this.put("formatBlock",new Menu(mxUtils.bind(this,function(a,c){function d(d,e){return a.addItem(d,null,mxUtils.bind(this,function(){null!=b.cellEditor.textarea&&(b.cellEditor.textarea.focus(),document.execCommand("formatBlock",!1,"<"+
e+">"))}),c)}d(mxResources.get("normal"),"p");d("","h1").firstChild.nextSibling.innerHTML='<h1 style="margin:0px;">'+mxResources.get("heading")+" 1</h1>";d("","h2").firstChild.nextSibling.innerHTML='<h2 style="margin:0px;">'+mxResources.get("heading")+" 2</h2>";d("","h3").firstChild.nextSibling.innerHTML='<h3 style="margin:0px;">'+mxResources.get("heading")+" 3</h3>";d("","h4").firstChild.nextSibling.innerHTML='<h4 style="margin:0px;">'+mxResources.get("heading")+" 4</h4>";d("","h5").firstChild.nextSibling.innerHTML=
'<h5 style="margin:0px;">'+mxResources.get("heading")+" 5</h5>";d("","h6").firstChild.nextSibling.innerHTML='<h6 style="margin:0px;">'+mxResources.get("heading")+" 6</h6>";d("","pre").firstChild.nextSibling.innerHTML='<pre style="margin:0px;">'+mxResources.get("formatted")+"</pre>";d("","blockquote").firstChild.nextSibling.innerHTML='<blockquote style="margin-top:0px;margin-bottom:0px;">'+mxResources.get("blockquote")+"</blockquote>"})));this.put("fontSize",new Menu(mxUtils.bind(this,function(c,d){var e=
-[6,8,9,10,11,12,14,18,24,36,48,72];0>mxUtils.indexOf(e,this.defaultFontSize)&&(e.push(this.defaultFontSize),e.sort(function(a,b){return a-b}));for(var k=mxUtils.bind(this,function(c){if(null!=b.cellEditor.textarea){document.execCommand("fontSize",!1,"3");for(var d=b.cellEditor.textarea.getElementsByTagName("font"),e=0;e<d.length;e++)if("3"==d[e].getAttribute("size")){d[e].removeAttribute("size");d[e].style.fontSize=c+"px";break}a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],
-"values",[c],"cells",[b.cellEditor.getEditingCell()]))}}),h=mxUtils.bind(this,function(a){this.styleChange(c,a,[mxConstants.STYLE_FONTSIZE],[a],null,d,function(){k(a)})}),g=0;g<e.length;g++)h(e[g]);c.addSeparator(d);if(0<this.customFontSizes.length){for(var m=0,g=0;g<this.customFontSizes.length;g++)0>mxUtils.indexOf(e,this.customFontSizes[g])&&(h(this.customFontSizes[g]),m++);0<m&&c.addSeparator(d);c.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFontSizes=[]}),d);c.addSeparator(d)}var l=
-null;this.promptChange(c,mxResources.get("custom")+"...","("+mxResources.get("points")+")",this.defaultFontSize,mxConstants.STYLE_FONTSIZE,d,!0,mxUtils.bind(this,function(a){null!=l&&null!=b.cellEditor.textarea&&(b.cellEditor.textarea.focus(),b.cellEditor.restoreSelection(l));null!=a&&0<a.length&&(this.customFontSizes.push(a),k(a))}),null,function(){l=b.cellEditor.saveSelection();return!1})})));this.put("direction",new Menu(mxUtils.bind(this,function(a,c){a.addItem(mxResources.get("flipH"),null,function(){b.toggleCellStyles(mxConstants.STYLE_FLIPH,
+[6,8,9,10,11,12,14,18,24,36,48,72];0>mxUtils.indexOf(e,this.defaultFontSize)&&(e.push(this.defaultFontSize),e.sort(function(a,b){return a-b}));for(var h=mxUtils.bind(this,function(c){if(null!=b.cellEditor.textarea){document.execCommand("fontSize",!1,"3");for(var d=b.cellEditor.textarea.getElementsByTagName("font"),e=0;e<d.length;e++)if("3"==d[e].getAttribute("size")){d[e].removeAttribute("size");d[e].style.fontSize=c+"px";break}a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],
+"values",[c],"cells",[b.cellEditor.getEditingCell()]))}}),k=mxUtils.bind(this,function(a){this.styleChange(c,a,[mxConstants.STYLE_FONTSIZE],[a],null,d,function(){h(a)})}),g=0;g<e.length;g++)k(e[g]);c.addSeparator(d);if(0<this.customFontSizes.length){for(var m=0,g=0;g<this.customFontSizes.length;g++)0>mxUtils.indexOf(e,this.customFontSizes[g])&&(k(this.customFontSizes[g]),m++);0<m&&c.addSeparator(d);c.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFontSizes=[]}),d);c.addSeparator(d)}var l=
+null;this.promptChange(c,mxResources.get("custom")+"...","("+mxResources.get("points")+")",this.defaultFontSize,mxConstants.STYLE_FONTSIZE,d,!0,mxUtils.bind(this,function(a){null!=l&&null!=b.cellEditor.textarea&&(b.cellEditor.textarea.focus(),b.cellEditor.restoreSelection(l));null!=a&&0<a.length&&(this.customFontSizes.push(a),h(a))}),null,function(){l=b.cellEditor.saveSelection();return!1})})));this.put("direction",new Menu(mxUtils.bind(this,function(a,c){a.addItem(mxResources.get("flipH"),null,function(){b.toggleCellStyles(mxConstants.STYLE_FLIPH,
!1)},c);a.addItem(mxResources.get("flipV"),null,function(){b.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},c);this.addMenuItems(a,["-","rotation"],c)})));this.put("align",new Menu(mxUtils.bind(this,function(a,c){a.addItem(mxResources.get("leftAlign"),null,function(){b.alignCells(mxConstants.ALIGN_LEFT)},c);a.addItem(mxResources.get("center"),null,function(){b.alignCells(mxConstants.ALIGN_CENTER)},c);a.addItem(mxResources.get("rightAlign"),null,function(){b.alignCells(mxConstants.ALIGN_RIGHT)},c);
a.addSeparator(c);a.addItem(mxResources.get("topAlign"),null,function(){b.alignCells(mxConstants.ALIGN_TOP)},c);a.addItem(mxResources.get("middle"),null,function(){b.alignCells(mxConstants.ALIGN_MIDDLE)},c);a.addItem(mxResources.get("bottomAlign"),null,function(){b.alignCells(mxConstants.ALIGN_BOTTOM)},c)})));this.put("distribute",new Menu(mxUtils.bind(this,function(a,c){a.addItem(mxResources.get("horizontal"),null,function(){b.distributeCells(!0)},c);a.addItem(mxResources.get("vertical"),null,function(){b.distributeCells(!1)},
c)})));this.put("line",new Menu(mxUtils.bind(this,function(a,c){var d=b.view.getState(b.getSelectionCell());null!=d&&(d=mxUtils.getValue(d.style,mxConstants.STYLE_SHAPE),"arrow"!=d&&(this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],[null,null,null],"geIcon geSprite geSprite-straight",c,!0).setAttribute("title",mxResources.get("straight")),this.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],
@@ -3599,43 +3593,43 @@ a,b);this.addMenuItems(a,["turn","-"],b);this.addSubmenu("align",a,b);this.addSu
[.25,.5,.75,1,1.25,1.5,2,3,4],e=0;e<d.length;e++)(function(d){a.addItem(100*d+"%",null,function(){b.zoomTo(d)},c)})(d[e]);this.addMenuItems(a,"- fitWindow fitPageWidth fitPage fitTwoPages - customZoom".split(" "),c)})));this.put("file",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"new open - save saveAs - import export - pageSetup print".split(" "),b)})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"undo redo - cut copy paste delete - duplicate - editData editTooltip - editStyle - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));
this.put("extras",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["copyConnect","collapseExpand","-","editDiagram"])})));this.put("help",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["help","-","about"])})))};Menus.prototype.put=function(a,b){return this.menus[a]=b};Menus.prototype.get=function(a){return this.menus[a]};
Menus.prototype.addSubmenu=function(a,b,c,e){var d=this.get(a);null!=d&&(d=d.isEnabled(),b.showDisabled||d)&&(c=b.addItem(e||mxResources.get(a),null,null,c,null,d),this.addMenu(a,b,c))};Menus.prototype.addMenu=function(a,b,c){var e=this.get(a);null!=e&&(b.showDisabled||e.isEnabled())&&this.get(a).execute(b,c)};
-Menus.prototype.addInsertTableCellItem=function(a,b){var c=this.editorUi.editor.graph,e=c.getSelectionCell(),d=c.getCurrentCellStyle(e),f=c.isTable(e)||c.isTableRow(e)||c.isTableCell(e),k=c.isStack(e)||c.isStackChild(e),h=f,g=f;k&&(d=c.isStack(e)?d:c.getCellStyle(c.model.getParent(e)),g="0"==d.horizontalStack,h=!g);null!=b||!f&&!k?this.addInsertTableItem(a,mxUtils.bind(this,function(a,b,d,e,f){b=f||mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)?c.createCrossFunctionalSwimlane(b,d,null,null,e||mxEvent.isShiftDown(a)?
-"Cross-Functional Flowchart":null):c.createTable(b,d,null,null,e||mxEvent.isShiftDown(a)?"Table":null);a=mxEvent.isAltDown(a)?c.getFreeInsertPoint():c.getCenterInsertPoint(c.getBoundingBoxFromGeometry([b],!0));d=null;c.getModel().beginUpdate();try{d=c.importCells([b],a.x,a.y),c.fireEvent(new mxEventObject("cellsInserted","cells",c.model.getDescendants(d[0])))}finally{c.getModel().endUpdate()}null!=d&&0<d.length&&(c.scrollCellToVisible(d[0]),c.setSelectionCells(d))}),b):(h&&(d=a.addItem(mxResources.get("insertColumnBefore"),
-null,mxUtils.bind(this,function(){try{k?c.insertLane(e,!0):c.insertTableColumn(e,!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertcolumnbefore"),d.setAttribute("title",mxResources.get("insertColumnBefore")),d=a.addItem(mxResources.get("insertColumnAfter"),null,mxUtils.bind(this,function(){try{k?c.insertLane(e,!1):c.insertTableColumn(e,!1)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertcolumnafter"),d.setAttribute("title",mxResources.get("insertColumnAfter")),
-d=a.addItem(mxResources.get("deleteColumn"),null,mxUtils.bind(this,function(){if(null!=e)try{k?c.deleteLane(e):c.deleteTableColumn(e)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deletecolumn"),d.setAttribute("title",mxResources.get("deleteColumn"))),g&&(d=a.addItem(mxResources.get("insertRowBefore"),null,mxUtils.bind(this,function(){try{k?c.insertLane(e,!0):c.insertTableRow(e,!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowbefore"),
-d.setAttribute("title",mxResources.get("insertRowBefore")),d=a.addItem(mxResources.get("insertRowAfter"),null,mxUtils.bind(this,function(){try{k?c.insertLane(e,!1):c.insertTableRow(e,!1)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowafter"),d.setAttribute("title",mxResources.get("insertRowAfter")),d=a.addItem(mxResources.get("deleteRow"),null,mxUtils.bind(this,function(){try{k?c.deleteLane(e):c.deleteTableRow(e)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deleterow"),
+Menus.prototype.addInsertTableCellItem=function(a,b){var c=this.editorUi.editor.graph,e=c.getSelectionCell(),d=c.getCurrentCellStyle(e),f=c.isTable(e)||c.isTableRow(e)||c.isTableCell(e),h=c.isStack(e)||c.isStackChild(e),k=f,g=f;h&&(d=c.isStack(e)?d:c.getCellStyle(c.model.getParent(e)),g="0"==d.horizontalStack,k=!g);null!=b||!f&&!h?this.addInsertTableItem(a,mxUtils.bind(this,function(a,b,d,e,f){b=f||mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)?c.createCrossFunctionalSwimlane(b,d,null,null,e||mxEvent.isShiftDown(a)?
+"Cross-Functional Flowchart":null):c.createTable(b,d,null,null,e||mxEvent.isShiftDown(a)?"Table":null);a=mxEvent.isAltDown(a)?c.getFreeInsertPoint():c.getCenterInsertPoint(c.getBoundingBoxFromGeometry([b],!0));d=null;c.getModel().beginUpdate();try{d=c.importCells([b],a.x,a.y),c.fireEvent(new mxEventObject("cellsInserted","cells",c.model.getDescendants(d[0])))}finally{c.getModel().endUpdate()}null!=d&&0<d.length&&(c.scrollCellToVisible(d[0]),c.setSelectionCells(d))}),b):(k&&(d=a.addItem(mxResources.get("insertColumnBefore"),
+null,mxUtils.bind(this,function(){try{h?c.insertLane(e,!0):c.insertTableColumn(e,!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertcolumnbefore"),d.setAttribute("title",mxResources.get("insertColumnBefore")),d=a.addItem(mxResources.get("insertColumnAfter"),null,mxUtils.bind(this,function(){try{h?c.insertLane(e,!1):c.insertTableColumn(e,!1)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertcolumnafter"),d.setAttribute("title",mxResources.get("insertColumnAfter")),
+d=a.addItem(mxResources.get("deleteColumn"),null,mxUtils.bind(this,function(){if(null!=e)try{h?c.deleteLane(e):c.deleteTableColumn(e)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deletecolumn"),d.setAttribute("title",mxResources.get("deleteColumn"))),g&&(d=a.addItem(mxResources.get("insertRowBefore"),null,mxUtils.bind(this,function(){try{h?c.insertLane(e,!0):c.insertTableRow(e,!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowbefore"),
+d.setAttribute("title",mxResources.get("insertRowBefore")),d=a.addItem(mxResources.get("insertRowAfter"),null,mxUtils.bind(this,function(){try{h?c.insertLane(e,!1):c.insertTableRow(e,!1)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowafter"),d.setAttribute("title",mxResources.get("insertRowAfter")),d=a.addItem(mxResources.get("deleteRow"),null,mxUtils.bind(this,function(){try{h?c.deleteLane(e):c.deleteTableRow(e)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deleterow"),
d.setAttribute("title",mxResources.get("deleteRow"))))};
-Menus.prototype.addInsertTableItem=function(a,b,c,e){function d(a,b){for(var c=["<table>"],d=0;d<a;d++){c.push("<tr>");for(var e=0;e<b;e++)c.push("<td><br></td>");c.push("</tr>")}c.push("</table>");return c.join("")}function f(a){g=k.getParentByName(mxEvent.getSource(a),"TD");var b=!1;if(null!=g){h=k.getParentByName(g,"TR");for(var c=mxEvent.isMouseEvent(a)?2:4,d=p,e=Math.min(20,h.sectionRowIndex+c),c=Math.min(20,g.cellIndex+c),f=d.rows.length;f<e;f++)for(var l=d.insertRow(f),m=0;m<d.rows[0].cells.length;m++)l.insertCell(-1);
-for(f=0;f<d.rows.length;f++)for(l=d.rows[f],m=l.cells.length;m<c;m++)l.insertCell(-1);r.innerHTML=g.cellIndex+1+"x"+(h.sectionRowIndex+1);for(d=0;d<p.rows.length;d++)for(e=p.rows[d],c=0;c<e.cells.length;c++)f=e.cells[c],d==h.sectionRowIndex&&c==g.cellIndex&&(b="blue"==f.style.backgroundColor),f.style.backgroundColor=d<=h.sectionRowIndex&&c<=g.cellIndex?"blue":"transparent"}mxEvent.consume(a);return b}e=null!=e?e:!0;b=null!=b?b:mxUtils.bind(this,function(a,b,c){var e=this.editorUi.editor.graph;a=e.getParentByName(mxEvent.getSource(a),
-"TD");if(null!=a&&null!=e.cellEditor.textarea){e.getParentByName(a,"TR");var f=e.cellEditor.textarea.getElementsByTagName("table");a=[];for(var g=0;g<f.length;g++)a.push(f[g]);e.container.focus();e.pasteHtmlAtCaret(d(b,c));b=e.cellEditor.textarea.getElementsByTagName("table");if(b.length==a.length+1)for(g=b.length-1;0<=g;g--)if(0==g||b[g]!=a[g-1]){e.selectNode(b[g].rows[0].cells[0]);break}}});var k=this.editorUi.editor.graph,h=null,g=null;null==c&&(a.div.className+=" geToolbarMenu",a.labels=!1);a=
+Menus.prototype.addInsertTableItem=function(a,b,c,e){function d(a,b){for(var c=["<table>"],d=0;d<a;d++){c.push("<tr>");for(var e=0;e<b;e++)c.push("<td><br></td>");c.push("</tr>")}c.push("</table>");return c.join("")}function f(a){g=h.getParentByName(mxEvent.getSource(a),"TD");var b=!1;if(null!=g){k=h.getParentByName(g,"TR");for(var c=mxEvent.isMouseEvent(a)?2:4,d=p,e=Math.min(20,k.sectionRowIndex+c),c=Math.min(20,g.cellIndex+c),f=d.rows.length;f<e;f++)for(var m=d.insertRow(f),l=0;l<d.rows[0].cells.length;l++)m.insertCell(-1);
+for(f=0;f<d.rows.length;f++)for(m=d.rows[f],l=m.cells.length;l<c;l++)m.insertCell(-1);r.innerHTML=g.cellIndex+1+"x"+(k.sectionRowIndex+1);for(d=0;d<p.rows.length;d++)for(e=p.rows[d],c=0;c<e.cells.length;c++)f=e.cells[c],d==k.sectionRowIndex&&c==g.cellIndex&&(b="blue"==f.style.backgroundColor),f.style.backgroundColor=d<=k.sectionRowIndex&&c<=g.cellIndex?"blue":"transparent"}mxEvent.consume(a);return b}e=null!=e?e:!0;b=null!=b?b:mxUtils.bind(this,function(a,b,c){var e=this.editorUi.editor.graph;a=e.getParentByName(mxEvent.getSource(a),
+"TD");if(null!=a&&null!=e.cellEditor.textarea){e.getParentByName(a,"TR");var f=e.cellEditor.textarea.getElementsByTagName("table");a=[];for(var g=0;g<f.length;g++)a.push(f[g]);e.container.focus();e.pasteHtmlAtCaret(d(b,c));b=e.cellEditor.textarea.getElementsByTagName("table");if(b.length==a.length+1)for(g=b.length-1;0<=g;g--)if(0==g||b[g]!=a[g-1]){e.selectNode(b[g].rows[0].cells[0]);break}}});var h=this.editorUi.editor.graph,k=null,g=null;null==c&&(a.div.className+=" geToolbarMenu",a.labels=!1);a=
a.addItem("",null,null,c,null,null,null,!0);a.firstChild.style.fontSize=Menus.prototype.defaultFontSize+"px";a.firstChild.innerHTML="";var m=document.createElement("input");m.setAttribute("id","geTitleOption");m.setAttribute("type","checkbox");c=document.createElement("label");mxUtils.write(c,mxResources.get("title"));c.setAttribute("for","geTitleOption");mxEvent.addGestureListeners(c,null,null,mxUtils.bind(this,function(a){mxEvent.consume(a)}));mxEvent.addGestureListeners(m,null,null,mxUtils.bind(this,
function(a){mxEvent.consume(a)}));var l=document.createElement("input");l.setAttribute("id","geContainerOption");l.setAttribute("type","checkbox");var n=document.createElement("label");mxUtils.write(n,mxResources.get("container"));n.setAttribute("for","geContainerOption");mxEvent.addGestureListeners(n,null,null,mxUtils.bind(this,function(a){mxEvent.consume(a)}));mxEvent.addGestureListeners(l,null,null,mxUtils.bind(this,function(a){mxEvent.consume(a)}));e&&(a.firstChild.appendChild(m),a.firstChild.appendChild(c),
mxUtils.br(a.firstChild),a.firstChild.appendChild(l),a.firstChild.appendChild(n),mxUtils.br(a.firstChild),mxUtils.br(a.firstChild));var p=function(a,b){var c=document.createElement("table");c.setAttribute("border","1");c.style.borderCollapse="collapse";c.style.borderStyle="solid";c.setAttribute("cellPadding","8");for(var d=0;d<a;d++)for(var e=c.insertRow(d),f=0;f<b;f++)e.insertCell(-1);return c}(5,5);a.firstChild.appendChild(p);var r=document.createElement("div");r.style.padding="4px";r.innerHTML=
-"1x1";a.firstChild.appendChild(r);mxEvent.addGestureListeners(p,null,null,mxUtils.bind(this,function(a){var c=f(a);null!=g&&null!=h&&c&&(b(a,h.sectionRowIndex+1,g.cellIndex+1,m.checked,l.checked),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0))}));mxEvent.addListener(p,"mouseover",f)};
-Menus.prototype.edgeStyleChange=function(a,b,c,e,d,f,k,h){return this.showIconOnly(a.addItem(b,h,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;a.stopEditing(!1);a.getModel().beginUpdate();try{for(var b=a.getSelectionCells(),d=[],f=0;f<b.length;f++){var h=b[f];if(a.getModel().isEdge(h)){if(k){var r=a.getCellGeometry(h);null!=r&&(r=r.clone(),r.points=null,a.getModel().setGeometry(h,r))}for(var u=0;u<c.length;u++)a.setCellStyles(c[u],e[u],[h]);d.push(h)}}this.editorUi.fireEvent(new mxEventObject("styleChanged",
+"1x1";a.firstChild.appendChild(r);mxEvent.addGestureListeners(p,null,null,mxUtils.bind(this,function(a){var c=f(a);null!=g&&null!=k&&c&&(b(a,k.sectionRowIndex+1,g.cellIndex+1,m.checked,l.checked),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0))}));mxEvent.addListener(p,"mouseover",f)};
+Menus.prototype.edgeStyleChange=function(a,b,c,e,d,f,h,k){return this.showIconOnly(a.addItem(b,k,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;a.stopEditing(!1);a.getModel().beginUpdate();try{for(var b=a.getSelectionCells(),d=[],f=0;f<b.length;f++){var k=b[f];if(a.getModel().isEdge(k)){if(h){var r=a.getCellGeometry(k);null!=r&&(r=r.clone(),r.points=null,a.getModel().setGeometry(k,r))}for(var u=0;u<c.length;u++)a.setCellStyles(c[u],e[u],[k]);d.push(k)}}this.editorUi.fireEvent(new mxEventObject("styleChanged",
"keys",c,"values",e,"cells",d))}finally{a.getModel().endUpdate()}}),f,d))};Menus.prototype.showIconOnly=function(a){var b=a.getElementsByTagName("td");for(i=0;i<b.length;i++)"mxPopupMenuItem"==b[i].getAttribute("class")&&(b[i].style.display="none");return a};
-Menus.prototype.styleChange=function(a,b,c,e,d,f,k,h,g){var m=this.createStyleChangeFunction(c,e);a=a.addItem(b,null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;null!=k&&a.cellEditor.isContentEditing()?k():m(h)}),f,d);g&&this.showIconOnly(a);return a};
-Menus.prototype.createStyleChangeFunction=function(a,b){return mxUtils.bind(this,function(c){var e=this.editorUi.editor.graph;e.stopEditing(!1);e.getModel().beginUpdate();try{for(var d=e.getEditableCells(e.getSelectionCells()),f=!1,k=0;k<a.length;k++)if(e.setCellStyles(a[k],b[k],d),a[k]==mxConstants.STYLE_ALIGN&&e.updateLabelElements(d,function(a){a.removeAttribute("align");a.style.textAlign=null}),a[k]==mxConstants.STYLE_FONTFAMILY||"fontSource"==a[k])f=!0;if(f)for(f=0;f<d.length;f++)0==e.model.getChildCount(d[f])&&
+Menus.prototype.styleChange=function(a,b,c,e,d,f,h,k,g){var m=this.createStyleChangeFunction(c,e);a=a.addItem(b,null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;null!=h&&a.cellEditor.isContentEditing()?h():m(k)}),f,d);g&&this.showIconOnly(a);return a};
+Menus.prototype.createStyleChangeFunction=function(a,b){return mxUtils.bind(this,function(c){var e=this.editorUi.editor.graph;e.stopEditing(!1);e.getModel().beginUpdate();try{for(var d=e.getEditableCells(e.getSelectionCells()),f=!1,h=0;h<a.length;h++)if(e.setCellStyles(a[h],b[h],d),a[h]==mxConstants.STYLE_ALIGN&&e.updateLabelElements(d,function(a){a.removeAttribute("align");a.style.textAlign=null}),a[h]==mxConstants.STYLE_FONTFAMILY||"fontSource"==a[h])f=!0;if(f)for(f=0;f<d.length;f++)0==e.model.getChildCount(d[f])&&
e.autoSizeCell(d[f],!1);null!=c&&c();this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",a,"values",b,"cells",d))}finally{e.getModel().endUpdate()}})};
-Menus.prototype.promptChange=function(a,b,c,e,d,f,k,h,g,m){return a.addItem(b,null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph,b=e,f=a.getView().getState(a.getSelectionCell());null!=f&&(b=f.style[d]||b);var g=null!=m?m():!0,b=new FilenameDialog(this.editorUi,b,mxResources.get("apply"),mxUtils.bind(this,function(b){if(null!=b&&0<b.length){if(g){a.getModel().beginUpdate();try{a.stopEditing(!1),a.setCellStyles(d,b)}finally{a.getModel().endUpdate()}}null!=h&&h(b)}}),mxResources.get("enterValue")+
-(0<c.length?" "+c:""),null,null,null,null,function(){null!=h&&null!=m&&h(null)});this.editorUi.showDialog(b.container,300,80,!0,!0);b.init()}),f,g,k)};
-Menus.prototype.pickColor=function(a,b,c){var e=this.editorUi,d=e.editor.graph,f=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12));if(null!=b&&d.cellEditor.isContentEditing()){var k=d.cellEditor.saveSelection();a=new ColorDialog(this.editorUi,c||d.shapeForegroundColor,mxUtils.bind(this,function(a){d.cellEditor.restoreSelection(k);document.execCommand(b,!1,a!=mxConstants.NONE?a:"transparent");var c={forecolor:mxConstants.STYLE_FONTCOLOR,
-backcolor:mxConstants.STYLE_LABEL_BACKGROUNDCOLOR}[b];null!=c&&e.fireEvent(new mxEventObject("styleChanged","keys",[c],"values",[a],"cells",[d.cellEditor.getEditingCell()]))}),function(){d.cellEditor.restoreSelection(k)});this.editorUi.showDialog(a.container,230,f,!0,!0);a.init()}else{null==this.colorDialog&&(this.colorDialog=new ColorDialog(this.editorUi));this.colorDialog.currentColorKey=a;c=d.getView().getState(d.getSelectionCell());var h=mxConstants.NONE;null!=c&&(h=c.style[a]||h);h==mxConstants.NONE?
-(h=d.shapeBackgroundColor.substring(1),this.colorDialog.picker.fromString(h),this.colorDialog.colorInput.value=mxConstants.NONE):this.colorDialog.picker.fromString(mxUtils.rgba2hex(h));this.editorUi.showDialog(this.colorDialog.container,230,f,!0,!0);this.colorDialog.init()}};Menus.prototype.toggleStyle=function(a,b){var c=this.editorUi.editor.graph,e=c.toggleCellStyles(a,b);this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[a],"values",[e],"cells",c.getSelectionCells()))};
-Menus.prototype.addMenuItem=function(a,b,c,e,d,f){var k=this.editorUi.actions.get(b);return null!=k&&(a.showDisabled||k.isEnabled())&&k.visible?(b=a.addItem(f||k.label,null,function(a){k.funct(e,a)},c,d,k.isEnabled()),k.toggleAction&&k.isSelected()&&a.addCheckmark(b,Editor.checkmarkImage),this.addShortcut(b,k),b):null};
+Menus.prototype.promptChange=function(a,b,c,e,d,f,h,k,g,m){return a.addItem(b,null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph,b=e,f=a.getView().getState(a.getSelectionCell());null!=f&&(b=f.style[d]||b);var g=null!=m?m():!0,b=new FilenameDialog(this.editorUi,b,mxResources.get("apply"),mxUtils.bind(this,function(b){if(null!=b&&0<b.length){if(g){a.getModel().beginUpdate();try{a.stopEditing(!1),a.setCellStyles(d,b)}finally{a.getModel().endUpdate()}}null!=k&&k(b)}}),mxResources.get("enterValue")+
+(0<c.length?" "+c:""),null,null,null,null,function(){null!=k&&null!=m&&k(null)});this.editorUi.showDialog(b.container,300,80,!0,!0);b.init()}),f,g,h)};
+Menus.prototype.pickColor=function(a,b,c){var e=this.editorUi,d=e.editor.graph,f=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12));if(null!=b&&d.cellEditor.isContentEditing()){var h=d.cellEditor.saveSelection();a=new ColorDialog(this.editorUi,c||d.shapeForegroundColor,mxUtils.bind(this,function(a){d.cellEditor.restoreSelection(h);document.execCommand(b,!1,a!=mxConstants.NONE?a:"transparent");var c={forecolor:mxConstants.STYLE_FONTCOLOR,
+backcolor:mxConstants.STYLE_LABEL_BACKGROUNDCOLOR}[b];null!=c&&e.fireEvent(new mxEventObject("styleChanged","keys",[c],"values",[a],"cells",[d.cellEditor.getEditingCell()]))}),function(){d.cellEditor.restoreSelection(h)});this.editorUi.showDialog(a.container,230,f,!0,!0);a.init()}else{null==this.colorDialog&&(this.colorDialog=new ColorDialog(this.editorUi));this.colorDialog.currentColorKey=a;c=d.getView().getState(d.getSelectionCell());var k=mxConstants.NONE;null!=c&&(k=c.style[a]||k);k==mxConstants.NONE?
+(k=d.shapeBackgroundColor.substring(1),this.colorDialog.picker.fromString(k),this.colorDialog.colorInput.value=mxConstants.NONE):this.colorDialog.picker.fromString(mxUtils.rgba2hex(k));this.editorUi.showDialog(this.colorDialog.container,230,f,!0,!0);this.colorDialog.init()}};Menus.prototype.toggleStyle=function(a,b){var c=this.editorUi.editor.graph,e=c.toggleCellStyles(a,b);this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[a],"values",[e],"cells",c.getSelectionCells()))};
+Menus.prototype.addMenuItem=function(a,b,c,e,d,f){var h=this.editorUi.actions.get(b);return null!=h&&(a.showDisabled||h.isEnabled())&&h.visible?(b=a.addItem(f||h.label,null,function(a){h.funct(e,a)},c,d,h.isEnabled()),h.toggleAction&&h.isSelected()&&a.addCheckmark(b,Editor.checkmarkImage),this.addShortcut(b,h),b):null};
Menus.prototype.addShortcut=function(a,b){if(null!=b.shortcut){var c=a.firstChild.nextSibling.nextSibling,e=document.createElement("span");e.style.color="gray";mxUtils.write(e,b.shortcut);c.appendChild(e)}};Menus.prototype.addMenuItems=function(a,b,c,e,d){for(var f=0;f<b.length;f++)"-"==b[f]?a.addSeparator(c):this.addMenuItem(a,b[f],c,e,null!=d?d[f]:null)};
Menus.prototype.createPopupMenu=function(a,b,c){a.smartSeparators=!0;this.addPopupMenuHistoryItems(a,b,c);this.addPopupMenuEditItems(a,b,c);this.addPopupMenuStyleItems(a,b,c);this.addPopupMenuArrangeItems(a,b,c);this.addPopupMenuCellItems(a,b,c);this.addPopupMenuSelectionItems(a,b,c)};Menus.prototype.addPopupMenuHistoryItems=function(a,b,c){this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["undo","redo"],null,c)};
Menus.prototype.addPopupMenuEditItems=function(a,b,c){this.editorUi.editor.graph.isSelectionEmpty()?this.addMenuItems(a,["pasteHere"],null,c):this.addMenuItems(a,"delete - cut copy - duplicate".split(" "),null,c)};Menus.prototype.addPopupMenuStyleItems=function(a,b,c){1==this.editorUi.editor.graph.getSelectionCount()?this.addMenuItems(a,["-","setAsDefaultStyle"],null,c):this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["-","clearDefaultStyle"],null,c)};
Menus.prototype.addPopupMenuArrangeItems=function(a,b,c){var e=this.editorUi.editor.graph;0<e.getEditableCells(e.getSelectionCells()).length&&(this.addMenuItems(a,["-","toFront","toBack"],null,c),1==e.getSelectionCount()&&this.addMenuItems(a,["bringForward","sendBackward"],null,c));1<e.getSelectionCount()?this.addMenuItems(a,["-","group"],null,c):1==e.getSelectionCount()&&!e.getModel().isEdge(b)&&!e.isSwimlane(b)&&0<e.getModel().getChildCount(b)&&e.isCellEditable(b)&&this.addMenuItems(a,["-","ungroup"],
null,c)};
-Menus.prototype.addPopupMenuCellItems=function(a,b,c){var e=this.editorUi.editor.graph,d=e.view.getState(b);a.addSeparator();if(null!=d){var f=!1;1==e.getSelectionCount()&&e.getModel().isEdge(b)&&(a.addSeparator(),this.addSubmenu("line",a));if(e.getModel().isEdge(b)&&"entityRelationEdgeStyle"!=mxUtils.getValue(d.style,mxConstants.STYLE_EDGE,null)&&"arrow"!=mxUtils.getValue(d.style,mxConstants.STYLE_SHAPE,null)){var d=e.selectionCellsHandler.getHandler(b),k=!1;d instanceof mxEdgeHandler&&null!=d.bends&&
-2<d.bends.length&&(f=d.getHandleForEvent(e.updateMouseEvent(new mxMouseEvent(c))),0<f&&f<d.bends.length-1&&(null==d.bends[f]||null==d.bends[f].node||""==d.bends[f].node.style.opacity)&&(k=this.editorUi.actions.get("removeWaypoint"),k.handler=d,k.index=f,k=!0));a.addSeparator();this.addMenuItem(a,"turn",null,c,null,mxResources.get("reverse"));this.addMenuItems(a,[k?"removeWaypoint":"addWaypoint"],null,c);d=e.getModel().getGeometry(b);f=null!=d&&null!=d.points&&0<d.points.length}1==e.getSelectionCount()&&
+Menus.prototype.addPopupMenuCellItems=function(a,b,c){var e=this.editorUi.editor.graph,d=e.view.getState(b);a.addSeparator();if(null!=d){var f=!1;1==e.getSelectionCount()&&e.getModel().isEdge(b)&&(a.addSeparator(),this.addSubmenu("line",a));if(e.getModel().isEdge(b)&&"entityRelationEdgeStyle"!=mxUtils.getValue(d.style,mxConstants.STYLE_EDGE,null)&&"arrow"!=mxUtils.getValue(d.style,mxConstants.STYLE_SHAPE,null)){var d=e.selectionCellsHandler.getHandler(b),h=!1;d instanceof mxEdgeHandler&&null!=d.bends&&
+2<d.bends.length&&(f=d.getHandleForEvent(e.updateMouseEvent(new mxMouseEvent(c))),0<f&&f<d.bends.length-1&&(null==d.bends[f]||null==d.bends[f].node||""==d.bends[f].node.style.opacity)&&(h=this.editorUi.actions.get("removeWaypoint"),h.handler=d,h.index=f,h=!0));a.addSeparator();this.addMenuItem(a,"turn",null,c,null,mxResources.get("reverse"));this.addMenuItems(a,[h?"removeWaypoint":"addWaypoint"],null,c);d=e.getModel().getGeometry(b);f=null!=d&&null!=d.points&&0<d.points.length}1==e.getSelectionCount()&&
(f||e.getModel().isVertex(b)&&0<e.getModel().getEdgeCount(b))&&this.addMenuItems(a,["-","clearWaypoints"],null,c);1==e.getSelectionCount()&&e.isCellEditable(b)&&this.addPopupMenuCellEditItems(a,b,c)}};
Menus.prototype.addPopupMenuCellEditItems=function(a,b,c,e){var d=this.editorUi.editor.graph.view.getState(b);this.addMenuItems(a,["-","editStyle","editData","editLink"],e,c);this.editorUi.editor.graph.getModel().isVertex(b)&&null!=mxUtils.getValue(d.style,mxConstants.STYLE_IMAGE,null)&&(a.addSeparator(),this.addMenuItem(a,"image",e,c).firstChild.nextSibling.innerHTML=mxResources.get("editImage")+"...")};
Menus.prototype.addPopupMenuSelectionItems=function(a,b,c){this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["-","selectVertices","selectEdges","selectAll"],null,c)};Menus.prototype.createMenubar=function(a){for(var b=new Menubar(this.editorUi,a),c=this.defaultMenuItems,e=0;e<c.length;e++)mxUtils.bind(this,function(a){var d=b.addMenu(mxResources.get(c[e]),mxUtils.bind(this,function(){a.funct.apply(this,arguments)}));this.menuCreated(a,d)})(this.get(c[e]));return b};
Menus.prototype.menuCreated=function(a,b,c){null!=b&&(c=null!=c?c:"geItem",a.addListener("stateChanged",function(){(b.enabled=a.enabled)?(b.className=c,8==document.documentMode&&(b.style.color="")):(b.className=c+" mxDisabled",8==document.documentMode&&(b.style.color="#c3c3c3"))}))};function Menubar(a,b){this.editorUi=a;this.container=b}Menubar.prototype.hideMenu=function(){this.editorUi.hideCurrentMenu()};
Menubar.prototype.addMenu=function(a,b,c){var e=document.createElement("a");e.className="geItem";mxUtils.write(e,a);this.addMenuHandler(e,b);null!=c?this.container.insertBefore(e,c):this.container.appendChild(e);return e};
-Menubar.prototype.addMenuHandler=function(a,b){if(null!=b){var c=!0,e=mxUtils.bind(this,function(d){if(c&&null==a.enabled||a.enabled){this.editorUi.editor.graph.popupMenuHandler.hideMenu();var e=new mxPopupMenu(b);e.div.className+=" geMenubarMenu";e.smartSeparators=!0;e.showDisabled=!0;e.autoExpand=!0;e.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(e,arguments);this.editorUi.resetCurrentMenu();e.destroy()});var k=mxUtils.getOffset(a);e.popup(k.x,k.y+a.offsetHeight,null,
+Menubar.prototype.addMenuHandler=function(a,b){if(null!=b){var c=!0,e=mxUtils.bind(this,function(d){if(c&&null==a.enabled||a.enabled){this.editorUi.editor.graph.popupMenuHandler.hideMenu();var e=new mxPopupMenu(b);e.div.className+=" geMenubarMenu";e.smartSeparators=!0;e.showDisabled=!0;e.autoExpand=!0;e.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(e,arguments);this.editorUi.resetCurrentMenu();e.destroy()});var h=mxUtils.getOffset(a);e.popup(h.x,h.y+a.offsetHeight,null,
d);this.editorUi.setCurrentMenu(e,a)}mxEvent.consume(d)});mxEvent.addListener(a,"mousemove",mxUtils.bind(this,function(b){null!=this.editorUi.currentMenu&&this.editorUi.currentMenuElt!=a&&(this.editorUi.hideCurrentMenu(),e(b))}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){c=this.currentElt!=a;b.preventDefault()}));mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){e(a);c=!0}))}};Menubar.prototype.destroy=function(){};
function Menu(a,b){mxEventSource.call(this);this.funct=a;this.enabled=null!=b?b:!0}mxUtils.extend(Menu,mxEventSource);Menu.prototype.isEnabled=function(){return this.enabled};Menu.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Menu.prototype.execute=function(a,b){this.funct(a,b)};EditorUi.prototype.createMenus=function(){return new Menus(this)};function Toolbar(a,b){this.editorUi=a;this.container=b;this.staticElements=[];this.init();this.gestureHandler=mxUtils.bind(this,function(a){null!=this.editorUi.currentMenu&&mxEvent.getSource(a)!=this.editorUi.currentMenu.div&&this.hideMenu()});mxEvent.addGestureListeners(document,this.gestureHandler)}
Toolbar.prototype.dropDownImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAHt7e////yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCREM1NkJFMjE0NEMxMUU1ODk1Q0M5MjQ0MTA4QjNDMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCREM1NkJFMzE0NEMxMUU1ODk1Q0M5MjQ0MTA4QjNDMSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQzOUMzMjZCMTQ0QjExRTU4OTVDQzkyNDQxMDhCM0MxIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQzOUMzMjZDMTQ0QjExRTU4OTVDQzkyNDQxMDhCM0MxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+
@@ -3654,7 +3648,7 @@ a=this.addMenu("",mxResources.get("insert")+" ("+mxResources.get("doubleClickToo
Toolbar.prototype.appendDropDownImageHtml=function(a){var b=document.createElement("img");b.setAttribute("border","0");b.setAttribute("valign","middle");b.setAttribute("src",Toolbar.prototype.dropDownImage);a.appendChild(b);b.style.position="absolute";b.style.right="4px";b.style.top=(EditorUi.compactUi?6:8)+"px"};
Toolbar.prototype.addTableDropDown=function(){var a=this.addMenuFunction("geIcon geSprite geSprite-table",mxResources.get("table"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.addInsertTableCellItem(a)}));a.style.position="relative";a.style.whiteSpace="nowrap";a.style.overflow="hidden";a.style.width="30px";a.innerHTML='<div class="geSprite geSprite-table"></div>';this.appendDropDownImageHtml(a);a.getElementsByTagName("div")[0].style.marginLeft="-2px";EditorUi.compactUi&&(a.getElementsByTagName("img")[0].style.left=
"22px",a.getElementsByTagName("img")[0].style.top="5px");var b=this.editorUi.menus.get("insert");null!=b&&"function"===typeof a.setEnabled&&b.addListener("stateChanged",function(){a.setEnabled(b.enabled)});return a};
-Toolbar.prototype.addDropDownArrow=function(a,b,c,e,d,f,k,h){d=EditorUi.compactUi?d:h;a.style.whiteSpace="nowrap";a.style.overflow="hidden";a.style.position="relative";a.style.width=e-(null!=k?k:32)+"px";a.innerHTML='<div class="geSprite '+b+'"></div>';this.appendDropDownImageHtml(a);b=a.getElementsByTagName("div")[0];b.style.marginLeft=d+"px";b.style.marginTop=f+"px";EditorUi.compactUi&&(a.getElementsByTagName("img")[0].style.left="24px",a.getElementsByTagName("img")[0].style.top="5px",a.style.width=
+Toolbar.prototype.addDropDownArrow=function(a,b,c,e,d,f,h,k){d=EditorUi.compactUi?d:k;a.style.whiteSpace="nowrap";a.style.overflow="hidden";a.style.position="relative";a.style.width=e-(null!=h?h:32)+"px";a.innerHTML='<div class="geSprite '+b+'"></div>';this.appendDropDownImageHtml(a);b=a.getElementsByTagName("div")[0];b.style.marginLeft=d+"px";b.style.marginTop=f+"px";EditorUi.compactUi&&(a.getElementsByTagName("img")[0].style.left="24px",a.getElementsByTagName("img")[0].style.top="5px",a.style.width=
c-10+"px")};Toolbar.prototype.setFontName=function(a){if(null!=this.fontMenu){this.fontMenu.innerHTML="";var b=document.createElement("div");b.style.display="inline-block";b.style.overflow="hidden";b.style.textOverflow="ellipsis";b.style.maxWidth="66px";mxUtils.write(b,a);this.fontMenu.appendChild(b);this.appendDropDownImageHtml(this.fontMenu)}};
Toolbar.prototype.setFontSize=function(a){if(null!=this.sizeMenu){this.sizeMenu.innerHTML="";var b=document.createElement("div");b.style.display="inline-block";b.style.overflow="hidden";b.style.textOverflow="ellipsis";b.style.maxWidth="24px";mxUtils.write(b,a);this.sizeMenu.appendChild(b);this.appendDropDownImageHtml(this.sizeMenu)}};
Toolbar.prototype.createTextToolbar=function(){var a=this.editorUi,b=a.editor.graph,c=this.addMenu("",mxResources.get("style"),!0,"formatBlock");c.style.position="relative";c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.innerHTML=mxResources.get("style");this.appendDropDownImageHtml(c);EditorUi.compactUi&&(c.style.paddingRight="18px",c.getElementsByTagName("img")[0].style.right="1px",c.getElementsByTagName("img")[0].style.top="5px");this.addSeparator();this.fontMenu=this.addMenu("",mxResources.get("fontFamily"),
@@ -3679,28 +3673,28 @@ function(a){null==a||a==mxConstants.NONE?(f.removeAttribute("border"),f.style.bo
("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(a,function(a){f.style.backgroundColor=null==a||a==mxConstants.NONE?"":a})}),null,"geIcon geSprite geSprite-fillcolor");c.setAttribute("title",mxResources.get("backgroundColor"));c=a.addItem("",null,mxUtils.bind(this,function(){var a=f.getAttribute("cellPadding")||0,a=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),mxUtils.bind(this,function(a){null!=a&&0<a.length?f.setAttribute("cellPadding",
a):f.removeAttribute("cellPadding")}),mxResources.get("spacing"));this.editorUi.showDialog(a.container,300,80,!0,!0);a.init()}),null,"geIcon geSprite geSprite-fit");c.setAttribute("title",mxResources.get("spacing"));c=a.addItem("",null,mxUtils.bind(this,function(){f.setAttribute("align","left")}),null,"geIcon geSprite geSprite-left");c.setAttribute("title",mxResources.get("left"));c=a.addItem("",null,mxUtils.bind(this,function(){f.setAttribute("align","center")}),null,"geIcon geSprite geSprite-center");
c.setAttribute("title",mxResources.get("center"));c=a.addItem("",null,mxUtils.bind(this,function(){f.setAttribute("align","right")}),null,"geIcon geSprite geSprite-right");c.setAttribute("title",mxResources.get("right"))}}));d.style.position="relative";d.style.whiteSpace="nowrap";d.style.overflow="hidden";d.style.width="30px";d.innerHTML="";c=document.createElement("div");c.className="geSprite geSprite-table";c.style.marginLeft="-2px";d.appendChild(c);this.appendDropDownImageHtml(d);EditorUi.compactUi&&
-(d.getElementsByTagName("img")[0].style.left="22px",d.getElementsByTagName("img")[0].style.top="5px")};Toolbar.prototype.hideMenu=function(){this.editorUi.hideCurrentMenu()};Toolbar.prototype.addMenu=function(a,b,c,e,d,f,k){var h=this.editorUi.menus.get(e),g=this.addMenuFunction(a,b,c,function(){h.funct.apply(h,arguments)},d,f);k||"function"!==typeof g.setEnabled||h.addListener("stateChanged",function(){g.setEnabled(h.enabled)});return g};
+(d.getElementsByTagName("img")[0].style.left="22px",d.getElementsByTagName("img")[0].style.top="5px")};Toolbar.prototype.hideMenu=function(){this.editorUi.hideCurrentMenu()};Toolbar.prototype.addMenu=function(a,b,c,e,d,f,h){var k=this.editorUi.menus.get(e),g=this.addMenuFunction(a,b,c,function(){k.funct.apply(k,arguments)},d,f);h||"function"!==typeof g.setEnabled||k.addListener("stateChanged",function(){g.setEnabled(k.enabled)});return g};
Toolbar.prototype.addMenuFunction=function(a,b,c,e,d,f){return this.addMenuFunctionInContainer(null!=d?d:this.container,a,b,c,e,f)};Toolbar.prototype.addMenuFunctionInContainer=function(a,b,c,e,d,f){b=e?this.createLabel(b):this.createButton(b);this.initElement(b,c);this.addMenuHandler(b,e,d,f);a.appendChild(b);return b};Toolbar.prototype.addSeparator=function(a){a=null!=a?a:this.container;var b=document.createElement("div");b.className="geSeparator";a.appendChild(b);return b};
Toolbar.prototype.addItems=function(a,b,c){for(var e=[],d=0;d<a.length;d++){var f=a[d];"-"==f?e.push(this.addSeparator(b)):e.push(this.addItem("geSprite-"+f.toLowerCase(),f,b,c))}return e};Toolbar.prototype.addItem=function(a,b,c,e){var d=this.editorUi.actions.get(b),f=null;null!=d&&(b=d.label,null!=d.shortcut&&(b+=" ("+d.shortcut+")"),f=this.addButton(a,b,d.funct,c),e||"function"!==typeof f.setEnabled||(f.setEnabled(d.enabled),d.addListener("stateChanged",function(){f.setEnabled(d.enabled)})));return f};
Toolbar.prototype.addButton=function(a,b,c,e){a=this.createButton(a);e=null!=e?e:this.container;this.initElement(a,b);this.addClickHandler(a,c);e.appendChild(a);return a};Toolbar.prototype.initElement=function(a,b){null!=b&&a.setAttribute("title",b);this.addEnabledState(a)};Toolbar.prototype.addEnabledState=function(a){var b=a.className;a.setEnabled=function(c){a.enabled=c;a.className=c?b:b+" mxDisabled"};a.setEnabled(!0)};
Toolbar.prototype.addClickHandler=function(a,b){null!=b&&(mxEvent.addListener(a,"click",function(c){a.enabled&&b(c);mxEvent.consume(c)}),mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()})))};Toolbar.prototype.createButton=function(a){var b=document.createElement("a");b.className="geButton";var c=document.createElement("div");null!=a&&(c.className="geSprite "+a);b.appendChild(c);return b};
Toolbar.prototype.createLabel=function(a,b){var c=document.createElement("a");c.className="geLabel";mxUtils.write(c,a);return c};
-Toolbar.prototype.addMenuHandler=function(a,b,c,e){if(null!=c){var d=this.editorUi.editor.graph,f=null,k=!0;mxEvent.addListener(a,"click",mxUtils.bind(this,function(h){if(k&&(null==a.enabled||a.enabled)){d.popupMenuHandler.hideMenu();f=new mxPopupMenu(c);f.div.className+=" geToolbarMenu";f.showDisabled=e;f.labels=b;f.autoExpand=!0;var g=mxUtils.getOffset(a);f.popup(g.x,g.y+a.offsetHeight,null,h);this.editorUi.setCurrentMenu(f,a);!b&&f.div.scrollHeight>f.div.clientHeight&&(f.div.style.width="40px");
-f.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(f,arguments);this.editorUi.resetCurrentMenu();f.destroy()});f.addListener(mxEvent.EVENT_HIDE,mxUtils.bind(this,function(){this.currentElt=null}))}k=!0;mxEvent.consume(h)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){k=this.currentElt!=a;b.preventDefault()}))}};
-Toolbar.prototype.destroy=function(){null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null)};var OpenDialog=function(){var a=document.createElement("iframe");a.style.backgroundColor="transparent";a.allowTransparency="true";a.style.borderStyle="none";a.style.borderWidth="0px";a.style.overflow="hidden";a.frameBorder="0";a.setAttribute("width",(Editor.useLocalStorage?640:320)+0+"px");a.setAttribute("height",(Editor.useLocalStorage?480:220)+0+"px");a.setAttribute("src",OPEN_FORM);this.container=a},ColorDialog=function(a,b,c,e){function d(){var b=k.value;/(^#?[a-zA-Z0-9]*$)/.test(b)?("none"!=
-b&&"#"!=b.charAt(0)&&(b="#"+b),ColorDialog.addRecentColor("none"!=b?b.substring(1):b,12),h(b),a.hideDialog()):a.handleError({message:mxResources.get("invalidInput")})}function f(){var a=l(0==ColorDialog.recentColors.length?["FFFFFF"]:ColorDialog.recentColors,11,"FFFFFF",!0);a.style.marginBottom="8px";return a}this.editorUi=a;var k=document.createElement("input");k.style.marginBottom="10px";mxClient.IS_IE&&(k.style.marginTop="10px",document.body.appendChild(k));var h=null!=c?c:this.createApplyFunction();
-this.init=function(){mxClient.IS_TOUCH||k.focus()};var g=new mxJSColor.color(k);g.pickerOnfocus=!1;g.showPicker();c=document.createElement("div");mxJSColor.picker.box.style.position="relative";mxJSColor.picker.box.style.width="230px";mxJSColor.picker.box.style.height="100px";mxJSColor.picker.box.style.paddingBottom="10px";c.appendChild(mxJSColor.picker.box);var m=document.createElement("center"),l=mxUtils.bind(this,function(a,b,c,e){b=null!=b?b:12;var h=document.createElement("table");h.style.borderCollapse=
-"collapse";h.setAttribute("cellspacing","0");h.style.marginBottom="20px";h.style.cellSpacing="0px";var l=document.createElement("tbody");h.appendChild(l);for(var n=a.length/b,p=0;p<n;p++){for(var r=document.createElement("tr"),t=0;t<b;t++)mxUtils.bind(this,function(a){var b=document.createElement("td");b.style.border="1px solid black";b.style.padding="0px";b.style.width="16px";b.style.height="16px";null==a&&(a=c);if("none"==a)b.style.background="url('"+Dialog.prototype.noColorImage+"')";else if(null!=
-a){b.style.backgroundColor="#"+a;var e=this.colorNames[a.toUpperCase()];null!=e&&b.setAttribute("title",e)}r.appendChild(b);null!=a&&(b.style.cursor="pointer",mxEvent.addListener(b,"click",function(){"none"==a?(g.fromString("ffffff"),k.value="none"):g.fromString(a)}),mxEvent.addListener(b,"dblclick",d))})(a[p*b+t]);l.appendChild(r)}e&&(a=document.createElement("td"),a.setAttribute("title",mxResources.get("reset")),a.style.border="1px solid black",a.style.padding="0px",a.style.width="16px",a.style.height=
-"16px",a.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')",a.style.backgroundPosition="center center",a.style.backgroundRepeat="no-repeat",a.style.cursor="pointer",r.appendChild(a),mxEvent.addListener(a,"click",function(){ColorDialog.resetRecentColors();h.parentNode.replaceChild(f(),h)}));m.appendChild(h);return h});c.appendChild(k);if(mxClient.IS_IE||mxClient.IS_IE11)k.style.width="216px";else{k.style.width="182px";var n=document.createElement("input");n.setAttribute("type","color");
-n.style.visibility="hidden";n.style.width="0px";n.style.height="0px";n.style.border="none";n.style.marginLeft="2px";c.style.whiteSpace="nowrap";c.appendChild(n);c.appendChild(mxUtils.button("...",function(){document.activeElement==n?k.focus():(n.value="#"+k.value,n.click())}));mxEvent.addListener(n,"input",function(){g.fromString(n.value.substring(1))})}mxUtils.br(c);f();var p=l(this.presetColors);p.style.marginBottom="8px";p=l(this.defaultColors);p.style.marginBottom="16px";c.appendChild(m);p=document.createElement("div");
-p.style.textAlign="right";p.style.whiteSpace="nowrap";var r=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=e&&e()});r.className="geBtn";a.editor.cancelFirst&&p.appendChild(r);var u=mxUtils.button(mxResources.get("apply"),d);u.className="geBtn gePrimaryBtn";p.appendChild(u);a.editor.cancelFirst||p.appendChild(r);null!=b&&("none"==b?(g.fromString("ffffff"),k.value="none"):g.fromString(b));c.appendChild(p);this.picker=g;this.colorInput=k;mxEvent.addListener(c,"keydown",function(b){27==
+Toolbar.prototype.addMenuHandler=function(a,b,c,e){if(null!=c){var d=this.editorUi.editor.graph,f=null,h=!0;mxEvent.addListener(a,"click",mxUtils.bind(this,function(k){if(h&&(null==a.enabled||a.enabled)){d.popupMenuHandler.hideMenu();f=new mxPopupMenu(c);f.div.className+=" geToolbarMenu";f.showDisabled=e;f.labels=b;f.autoExpand=!0;var g=mxUtils.getOffset(a);f.popup(g.x,g.y+a.offsetHeight,null,k);this.editorUi.setCurrentMenu(f,a);!b&&f.div.scrollHeight>f.div.clientHeight&&(f.div.style.width="40px");
+f.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(f,arguments);this.editorUi.resetCurrentMenu();f.destroy()});f.addListener(mxEvent.EVENT_HIDE,mxUtils.bind(this,function(){this.currentElt=null}))}h=!0;mxEvent.consume(k)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){h=this.currentElt!=a;b.preventDefault()}))}};
+Toolbar.prototype.destroy=function(){null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null)};var OpenDialog=function(){var a=document.createElement("iframe");a.style.backgroundColor="transparent";a.allowTransparency="true";a.style.borderStyle="none";a.style.borderWidth="0px";a.style.overflow="hidden";a.frameBorder="0";a.setAttribute("width",(Editor.useLocalStorage?640:320)+0+"px");a.setAttribute("height",(Editor.useLocalStorage?480:220)+0+"px");a.setAttribute("src",OPEN_FORM);this.container=a},ColorDialog=function(a,b,c,e){function d(){var b=h.value;/(^#?[a-zA-Z0-9]*$)/.test(b)?("none"!=
+b&&"#"!=b.charAt(0)&&(b="#"+b),ColorDialog.addRecentColor("none"!=b?b.substring(1):b,12),k(b),a.hideDialog()):a.handleError({message:mxResources.get("invalidInput")})}function f(){var a=l(0==ColorDialog.recentColors.length?["FFFFFF"]:ColorDialog.recentColors,11,"FFFFFF",!0);a.style.marginBottom="8px";return a}this.editorUi=a;var h=document.createElement("input");h.style.marginBottom="10px";mxClient.IS_IE&&(h.style.marginTop="10px",document.body.appendChild(h));var k=null!=c?c:this.createApplyFunction();
+this.init=function(){mxClient.IS_TOUCH||h.focus()};var g=new mxJSColor.color(h);g.pickerOnfocus=!1;g.showPicker();c=document.createElement("div");mxJSColor.picker.box.style.position="relative";mxJSColor.picker.box.style.width="230px";mxJSColor.picker.box.style.height="100px";mxJSColor.picker.box.style.paddingBottom="10px";c.appendChild(mxJSColor.picker.box);var m=document.createElement("center"),l=mxUtils.bind(this,function(a,b,c,e){b=null!=b?b:12;var k=document.createElement("table");k.style.borderCollapse=
+"collapse";k.setAttribute("cellspacing","0");k.style.marginBottom="20px";k.style.cellSpacing="0px";var l=document.createElement("tbody");k.appendChild(l);for(var n=a.length/b,p=0;p<n;p++){for(var r=document.createElement("tr"),t=0;t<b;t++)mxUtils.bind(this,function(a){var b=document.createElement("td");b.style.border="1px solid black";b.style.padding="0px";b.style.width="16px";b.style.height="16px";null==a&&(a=c);if("none"==a)b.style.background="url('"+Dialog.prototype.noColorImage+"')";else if(null!=
+a){b.style.backgroundColor="#"+a;var e=this.colorNames[a.toUpperCase()];null!=e&&b.setAttribute("title",e)}r.appendChild(b);null!=a&&(b.style.cursor="pointer",mxEvent.addListener(b,"click",function(){"none"==a?(g.fromString("ffffff"),h.value="none"):g.fromString(a)}),mxEvent.addListener(b,"dblclick",d))})(a[p*b+t]);l.appendChild(r)}e&&(a=document.createElement("td"),a.setAttribute("title",mxResources.get("reset")),a.style.border="1px solid black",a.style.padding="0px",a.style.width="16px",a.style.height=
+"16px",a.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')",a.style.backgroundPosition="center center",a.style.backgroundRepeat="no-repeat",a.style.cursor="pointer",r.appendChild(a),mxEvent.addListener(a,"click",function(){ColorDialog.resetRecentColors();k.parentNode.replaceChild(f(),k)}));m.appendChild(k);return k});c.appendChild(h);if(mxClient.IS_IE||mxClient.IS_IE11)h.style.width="216px";else{h.style.width="182px";var n=document.createElement("input");n.setAttribute("type","color");
+n.style.visibility="hidden";n.style.width="0px";n.style.height="0px";n.style.border="none";n.style.marginLeft="2px";c.style.whiteSpace="nowrap";c.appendChild(n);c.appendChild(mxUtils.button("...",function(){document.activeElement==n?h.focus():(n.value="#"+h.value,n.click())}));mxEvent.addListener(n,"input",function(){g.fromString(n.value.substring(1))})}mxUtils.br(c);f();var p=l(this.presetColors);p.style.marginBottom="8px";p=l(this.defaultColors);p.style.marginBottom="16px";c.appendChild(m);p=document.createElement("div");
+p.style.textAlign="right";p.style.whiteSpace="nowrap";var r=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=e&&e()});r.className="geBtn";a.editor.cancelFirst&&p.appendChild(r);var u=mxUtils.button(mxResources.get("apply"),d);u.className="geBtn gePrimaryBtn";p.appendChild(u);a.editor.cancelFirst||p.appendChild(r);null!=b&&("none"==b?(g.fromString("ffffff"),h.value="none"):g.fromString(b));c.appendChild(p);this.picker=g;this.colorInput=h;mxEvent.addListener(c,"keydown",function(b){27==
b.keyCode&&(a.hideDialog(),null!=e&&e(),mxEvent.consume(b))});this.container=c};ColorDialog.prototype.presetColors="E6D0DE CDA2BE B5739D E1D5E7 C3ABD0 A680B8 D4E1F5 A9C4EB 7EA6E0 D5E8D4 9AC7BF 67AB9F D5E8D4 B9E0A5 97D077 FFF2CC FFE599 FFD966 FFF4C3 FFCE9F FFB570 F8CECC F19C99 EA6B66".split(" ");ColorDialog.prototype.colorNames={};ColorDialog.prototype.defaultColors="none FFFFFF E6E6E6 CCCCCC B3B3B3 999999 808080 666666 4D4D4D 333333 1A1A1A 000000 FFCCCC FFE6CC FFFFCC E6FFCC CCFFCC CCFFE6 CCFFFF CCE5FF CCCCFF E5CCFF FFCCFF FFCCE6 FF9999 FFCC99 FFFF99 CCFF99 99FF99 99FFCC 99FFFF 99CCFF 9999FF CC99FF FF99FF FF99CC FF6666 FFB366 FFFF66 B3FF66 66FF66 66FFB3 66FFFF 66B2FF 6666FF B266FF FF66FF FF66B3 FF3333 FF9933 FFFF33 99FF33 33FF33 33FF99 33FFFF 3399FF 3333FF 9933FF FF33FF FF3399 FF0000 FF8000 FFFF00 80FF00 00FF00 00FF80 00FFFF 007FFF 0000FF 7F00FF FF00FF FF0080 CC0000 CC6600 CCCC00 66CC00 00CC00 00CC66 00CCCC 0066CC 0000CC 6600CC CC00CC CC0066 990000 994C00 999900 4D9900 009900 00994D 009999 004C99 000099 4C0099 990099 99004D 660000 663300 666600 336600 006600 006633 006666 003366 000066 330066 660066 660033 330000 331A00 333300 1A3300 003300 00331A 003333 001933 000033 190033 330033 33001A".split(" ");
ColorDialog.prototype.createApplyFunction=function(){return mxUtils.bind(this,function(a){var b=this.editorUi.editor.graph;b.getModel().beginUpdate();try{b.setCellStyles(this.currentColorKey,a),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[this.currentColorKey],"values",[a],"cells",b.getSelectionCells()))}finally{b.getModel().endUpdate()}})};ColorDialog.recentColors=[];
ColorDialog.addRecentColor=function(a,b){null!=a&&(mxUtils.remove(a,ColorDialog.recentColors),ColorDialog.recentColors.splice(0,0,a),ColorDialog.recentColors.length>=b&&ColorDialog.recentColors.pop())};ColorDialog.resetRecentColors=function(){ColorDialog.recentColors=[]};
var AboutDialog=function(a){var b=document.createElement("div");b.setAttribute("align","center");var c=document.createElement("h3");mxUtils.write(c,mxResources.get("about")+" GraphEditor");b.appendChild(c);c=document.createElement("img");c.style.border="0px";c.setAttribute("width","176");c.setAttribute("width","151");c.setAttribute("src",IMAGE_PATH+"/logo.png");b.appendChild(c);mxUtils.br(b);mxUtils.write(b,"Powered by mxGraph "+mxClient.VERSION);mxUtils.br(b);c=document.createElement("a");c.setAttribute("href",
-"http://www.jgraph.com/");c.setAttribute("target","_blank");mxUtils.write(c,"www.jgraph.com");b.appendChild(c);mxUtils.br(b);mxUtils.br(b);c=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});c.className="geBtn gePrimaryBtn";b.appendChild(c);this.container=b},TextareaDialog=function(a,b,c,e,d,f,k,h,g,m,l,n,p,r){k=null!=k?k:300;h=null!=h?h:120;m=null!=m?m:!1;var u,v,t=document.createElement("table"),x=document.createElement("tbody");u=document.createElement("tr");v=document.createElement("td");
-v.style.fontSize="10pt";v.style.width="100px";mxUtils.write(v,b);u.appendChild(v);x.appendChild(u);u=document.createElement("tr");v=document.createElement("td");var w=document.createElement("textarea");l&&w.setAttribute("wrap","off");w.setAttribute("spellcheck","false");w.setAttribute("autocorrect","off");w.setAttribute("autocomplete","off");w.setAttribute("autocapitalize","off");mxUtils.write(w,c||"");w.style.resize="none";w.style.width=k+"px";w.style.height=h+"px";this.textarea=w;this.init=function(){w.focus();
+"http://www.jgraph.com/");c.setAttribute("target","_blank");mxUtils.write(c,"www.jgraph.com");b.appendChild(c);mxUtils.br(b);mxUtils.br(b);c=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});c.className="geBtn gePrimaryBtn";b.appendChild(c);this.container=b},TextareaDialog=function(a,b,c,e,d,f,h,k,g,m,l,n,p,r){h=null!=h?h:300;k=null!=k?k:120;m=null!=m?m:!1;var u,v,t=document.createElement("table"),x=document.createElement("tbody");u=document.createElement("tr");v=document.createElement("td");
+v.style.fontSize="10pt";v.style.width="100px";mxUtils.write(v,b);u.appendChild(v);x.appendChild(u);u=document.createElement("tr");v=document.createElement("td");var w=document.createElement("textarea");l&&w.setAttribute("wrap","off");w.setAttribute("spellcheck","false");w.setAttribute("autocorrect","off");w.setAttribute("autocomplete","off");w.setAttribute("autocapitalize","off");mxUtils.write(w,c||"");w.style.resize="none";w.style.width=h+"px";w.style.height=k+"px";this.textarea=w;this.init=function(){w.focus();
w.scrollTop=0};v.appendChild(w);u.appendChild(v);x.appendChild(u);u=document.createElement("tr");v=document.createElement("td");v.style.paddingTop="14px";v.style.whiteSpace="nowrap";v.setAttribute("align","right");null!=p&&(b=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(p)}),b.className="geBtn",v.appendChild(b));if(null!=r)for(b=0;b<r.length;b++)(function(a,b,c){a=mxUtils.button(a,function(a){b(a,w)});null!=c&&a.setAttribute("title",c);a.className="geBtn";v.appendChild(a)})(r[b][0],
r[b][1],r[b][2]);f=mxUtils.button(f||mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d()});f.setAttribute("title","Escape");f.className="geBtn";a.editor.cancelFirst&&v.appendChild(f);null!=g&&g(v,w);if(null!=e){var y=mxUtils.button(n||mxResources.get("apply"),function(){m||a.hideDialog();e(w.value)});y.setAttribute("title","Ctrl+Enter");y.className="geBtn gePrimaryBtn";v.appendChild(y);mxEvent.addListener(w,"keypress",function(a){13==a.keyCode&&mxEvent.isControlDown(a)&&y.click()})}a.editor.cancelFirst||
v.appendChild(f);u.appendChild(v);x.appendChild(u);t.appendChild(x);this.container=t},EditDiagramDialog=function(a){var b=document.createElement("div");b.style.textAlign="right";var c=document.createElement("textarea");c.setAttribute("wrap","off");c.setAttribute("spellcheck","false");c.setAttribute("autocorrect","off");c.setAttribute("autocomplete","off");c.setAttribute("autocapitalize","off");c.style.overflow="auto";c.style.resize="none";c.style.width="600px";c.style.height="360px";c.style.marginBottom=
@@ -3710,46 +3704,46 @@ d.appendChild(f);a.editor.graph.isEnabled()&&(f=document.createElement("option")
n}finally{a.editor.graph.model.endUpdate()}}else if("import"==d.value){a.editor.graph.model.beginUpdate();try{var f=mxUtils.parseXml(b),m=new mxGraphModel;(new mxCodec(f)).decode(f.documentElement,m);var l=m.getChildren(m.getChildAt(m.getRoot(),0));a.editor.graph.setSelectionCells(a.editor.graph.importCells(l));a.hideDialog()}catch(n){e=n}finally{a.editor.graph.model.endUpdate()}}null!=e&&mxUtils.alert(e.message)});f.className="geBtn gePrimaryBtn";b.appendChild(f);a.editor.cancelFirst||b.appendChild(e);
this.container=b};EditDiagramDialog.showNewWindowOption=!0;
var ExportDialog=function(a){function b(){var a=l.value,b=a.lastIndexOf(".");l.value=0<b?a.substring(0,b+1)+n.value:a+"."+n.value;"xml"===n.value?(p.setAttribute("disabled","true"),r.setAttribute("disabled","true"),u.setAttribute("disabled","true"),F.setAttribute("disabled","true")):(p.removeAttribute("disabled"),r.removeAttribute("disabled"),u.removeAttribute("disabled"),F.removeAttribute("disabled"));"png"===n.value||"svg"===n.value||"pdf"===n.value?w.removeAttribute("disabled"):w.setAttribute("disabled",
-"disabled");"png"===n.value||"jpg"===n.value||"pdf"===n.value?y.removeAttribute("disabled"):y.setAttribute("disabled","disabled");"png"===n.value?(v.removeAttribute("disabled"),t.removeAttribute("disabled")):(v.setAttribute("disabled","disabled"),t.setAttribute("disabled","disabled"))}function c(){r.style.backgroundColor=r.value*u.value>MAX_AREA||0>=r.value?"red":"";u.style.backgroundColor=r.value*u.value>MAX_AREA||0>=u.value?"red":""}var e=a.editor.graph,d=e.getGraphBounds(),f=e.view.scale,k=Math.ceil(d.width/
-f),h=Math.ceil(d.height/f),g,f=document.createElement("table"),m=document.createElement("tbody");f.setAttribute("cellpadding",mxClient.IS_SF?"0":"2");d=document.createElement("tr");g=document.createElement("td");g.style.fontSize="10pt";g.style.width="100px";mxUtils.write(g,mxResources.get("filename")+":");d.appendChild(g);var l=document.createElement("input");l.setAttribute("value",a.editor.getOrCreateFilename());l.style.width="180px";g=document.createElement("td");g.appendChild(l);d.appendChild(g);
+"disabled");"png"===n.value||"jpg"===n.value||"pdf"===n.value?y.removeAttribute("disabled"):y.setAttribute("disabled","disabled");"png"===n.value?(v.removeAttribute("disabled"),t.removeAttribute("disabled")):(v.setAttribute("disabled","disabled"),t.setAttribute("disabled","disabled"))}function c(){r.style.backgroundColor=r.value*u.value>MAX_AREA||0>=r.value?"red":"";u.style.backgroundColor=r.value*u.value>MAX_AREA||0>=u.value?"red":""}var e=a.editor.graph,d=e.getGraphBounds(),f=e.view.scale,h=Math.ceil(d.width/
+f),k=Math.ceil(d.height/f),g,f=document.createElement("table"),m=document.createElement("tbody");f.setAttribute("cellpadding",mxClient.IS_SF?"0":"2");d=document.createElement("tr");g=document.createElement("td");g.style.fontSize="10pt";g.style.width="100px";mxUtils.write(g,mxResources.get("filename")+":");d.appendChild(g);var l=document.createElement("input");l.setAttribute("value",a.editor.getOrCreateFilename());l.style.width="180px";g=document.createElement("td");g.appendChild(l);d.appendChild(g);
m.appendChild(d);d=document.createElement("tr");g=document.createElement("td");g.style.fontSize="10pt";mxUtils.write(g,mxResources.get("format")+":");d.appendChild(g);var n=document.createElement("select");n.style.width="180px";g=document.createElement("option");g.setAttribute("value","png");mxUtils.write(g,mxResources.get("formatPng"));n.appendChild(g);g=document.createElement("option");ExportDialog.showGifOption&&(g.setAttribute("value","gif"),mxUtils.write(g,mxResources.get("formatGif")),n.appendChild(g));
g=document.createElement("option");g.setAttribute("value","jpg");mxUtils.write(g,mxResources.get("formatJpg"));n.appendChild(g);g=document.createElement("option");g.setAttribute("value","pdf");mxUtils.write(g,mxResources.get("formatPdf"));n.appendChild(g);g=document.createElement("option");g.setAttribute("value","svg");mxUtils.write(g,mxResources.get("formatSvg"));n.appendChild(g);ExportDialog.showXmlOption&&(g=document.createElement("option"),g.setAttribute("value","xml"),mxUtils.write(g,mxResources.get("formatXml")),
n.appendChild(g));g=document.createElement("td");g.appendChild(n);d.appendChild(g);m.appendChild(d);d=document.createElement("tr");g=document.createElement("td");g.style.fontSize="10pt";mxUtils.write(g,mxResources.get("zoom")+" (%):");d.appendChild(g);var p=document.createElement("input");p.setAttribute("type","number");p.setAttribute("value","100");p.style.width="180px";g=document.createElement("td");g.appendChild(p);d.appendChild(g);m.appendChild(d);d=document.createElement("tr");g=document.createElement("td");
-g.style.fontSize="10pt";mxUtils.write(g,mxResources.get("width")+":");d.appendChild(g);var r=document.createElement("input");r.setAttribute("value",k);r.style.width="180px";g=document.createElement("td");g.appendChild(r);d.appendChild(g);m.appendChild(d);d=document.createElement("tr");g=document.createElement("td");g.style.fontSize="10pt";mxUtils.write(g,mxResources.get("height")+":");d.appendChild(g);var u=document.createElement("input");u.setAttribute("value",h);u.style.width="180px";g=document.createElement("td");
+g.style.fontSize="10pt";mxUtils.write(g,mxResources.get("width")+":");d.appendChild(g);var r=document.createElement("input");r.setAttribute("value",h);r.style.width="180px";g=document.createElement("td");g.appendChild(r);d.appendChild(g);m.appendChild(d);d=document.createElement("tr");g=document.createElement("td");g.style.fontSize="10pt";mxUtils.write(g,mxResources.get("height")+":");d.appendChild(g);var u=document.createElement("input");u.setAttribute("value",k);u.style.width="180px";g=document.createElement("td");
g.appendChild(u);d.appendChild(g);m.appendChild(d);d=document.createElement("tr");g=document.createElement("td");g.style.fontSize="10pt";mxUtils.write(g,mxResources.get("dpi")+":");d.appendChild(g);var v=document.createElement("select");v.style.width="180px";g=document.createElement("option");g.setAttribute("value","100");mxUtils.write(g,"100dpi");v.appendChild(g);g=document.createElement("option");g.setAttribute("value","200");mxUtils.write(g,"200dpi");v.appendChild(g);g=document.createElement("option");
g.setAttribute("value","300");mxUtils.write(g,"300dpi");v.appendChild(g);g=document.createElement("option");g.setAttribute("value","400");mxUtils.write(g,"400dpi");v.appendChild(g);g=document.createElement("option");g.setAttribute("value","custom");mxUtils.write(g,mxResources.get("custom"));v.appendChild(g);var t=document.createElement("input");t.style.width="180px";t.style.display="none";t.setAttribute("value","100");t.setAttribute("type","number");t.setAttribute("min","50");t.setAttribute("step",
"50");var x=!1;mxEvent.addListener(v,"change",function(){"custom"==this.value?(this.style.display="none",t.style.display="",t.focus()):(t.value=this.value,x||(p.value=this.value))});mxEvent.addListener(t,"change",function(){var a=parseInt(t.value);isNaN(a)||0>=a?t.style.backgroundColor="red":(t.style.backgroundColor="",x||(p.value=a))});g=document.createElement("td");g.appendChild(v);g.appendChild(t);d.appendChild(g);m.appendChild(d);d=document.createElement("tr");g=document.createElement("td");g.style.fontSize=
"10pt";mxUtils.write(g,mxResources.get("background")+":");d.appendChild(g);var w=document.createElement("input");w.setAttribute("type","checkbox");w.checked=null==e.background||e.background==mxConstants.NONE;g=document.createElement("td");g.appendChild(w);mxUtils.write(g,mxResources.get("transparent"));d.appendChild(g);m.appendChild(d);d=document.createElement("tr");g=document.createElement("td");g.style.fontSize="10pt";mxUtils.write(g,mxResources.get("grid")+":");d.appendChild(g);var y=document.createElement("input");
y.setAttribute("type","checkbox");y.checked=!1;g=document.createElement("td");g.appendChild(y);d.appendChild(g);m.appendChild(d);d=document.createElement("tr");g=document.createElement("td");g.style.fontSize="10pt";mxUtils.write(g,mxResources.get("borderWidth")+":");d.appendChild(g);var F=document.createElement("input");F.setAttribute("type","number");F.setAttribute("value",ExportDialog.lastBorderValue);F.style.width="180px";g=document.createElement("td");g.appendChild(F);d.appendChild(g);m.appendChild(d);
-f.appendChild(m);mxEvent.addListener(n,"change",b);b();mxEvent.addListener(p,"change",function(){x=!0;var a=Math.max(0,parseFloat(p.value)||100)/100;p.value=parseFloat((100*a).toFixed(2));0<k?(r.value=Math.floor(k*a),u.value=Math.floor(h*a)):(p.value="100",r.value=k,u.value=h);c()});mxEvent.addListener(r,"change",function(){var a=parseInt(r.value)/k;0<a?(p.value=parseFloat((100*a).toFixed(2)),u.value=Math.floor(h*a)):(p.value="100",r.value=k,u.value=h);c()});mxEvent.addListener(u,"change",function(){var a=
-parseInt(u.value)/h;0<a?(p.value=parseFloat((100*a).toFixed(2)),r.value=Math.floor(k*a)):(p.value="100",r.value=k,u.value=h);c()});d=document.createElement("tr");g=document.createElement("td");g.setAttribute("align","right");g.style.paddingTop="22px";g.colSpan=2;var I=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(p.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var b=l.value,c=n.value,d=Math.max(0,parseFloat(p.value)||100)/100,f=Math.max(0,parseInt(F.value)),
-g=e.background,h=Math.max(1,parseInt(t.value));if(("svg"==c||"png"==c||"pdf"==c)&&w.checked)g=null;else if(null==g||g==mxConstants.NONE)g="#ffffff";ExportDialog.lastBorderValue=f;ExportDialog.exportFile(a,b,c,g,d,f,h,y.checked)}}));I.className="geBtn gePrimaryBtn";var A=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});A.className="geBtn";a.editor.cancelFirst?(g.appendChild(A),g.appendChild(I)):(g.appendChild(I),g.appendChild(A));d.appendChild(g);m.appendChild(d);f.appendChild(m);
+f.appendChild(m);mxEvent.addListener(n,"change",b);b();mxEvent.addListener(p,"change",function(){x=!0;var a=Math.max(0,parseFloat(p.value)||100)/100;p.value=parseFloat((100*a).toFixed(2));0<h?(r.value=Math.floor(h*a),u.value=Math.floor(k*a)):(p.value="100",r.value=h,u.value=k);c()});mxEvent.addListener(r,"change",function(){var a=parseInt(r.value)/h;0<a?(p.value=parseFloat((100*a).toFixed(2)),u.value=Math.floor(k*a)):(p.value="100",r.value=h,u.value=k);c()});mxEvent.addListener(u,"change",function(){var a=
+parseInt(u.value)/k;0<a?(p.value=parseFloat((100*a).toFixed(2)),r.value=Math.floor(h*a)):(p.value="100",r.value=h,u.value=k);c()});d=document.createElement("tr");g=document.createElement("td");g.setAttribute("align","right");g.style.paddingTop="22px";g.colSpan=2;var I=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(p.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var b=l.value,c=n.value,d=Math.max(0,parseFloat(p.value)||100)/100,f=Math.max(0,parseInt(F.value)),
+g=e.background,h=Math.max(1,parseInt(t.value));if(("svg"==c||"png"==c||"pdf"==c)&&w.checked)g=null;else if(null==g||g==mxConstants.NONE)g="#ffffff";ExportDialog.lastBorderValue=f;ExportDialog.exportFile(a,b,c,g,d,f,h,y.checked)}}));I.className="geBtn gePrimaryBtn";var B=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});B.className="geBtn";a.editor.cancelFirst?(g.appendChild(B),g.appendChild(I)):(g.appendChild(I),g.appendChild(B));d.appendChild(g);m.appendChild(d);f.appendChild(m);
this.container=f};ExportDialog.lastBorderValue=0;ExportDialog.showGifOption=!0;ExportDialog.showXmlOption=!0;
-ExportDialog.exportFile=function(a,b,c,e,d,f,k,h){h=a.editor.graph;if("xml"==c)ExportDialog.saveLocalFile(a,mxUtils.getXml(a.editor.getGraphXml()),b,c);else if("svg"==c)ExportDialog.saveLocalFile(a,mxUtils.getXml(h.getSvg(e,d,f)),b,c);else{var g=h.getGraphBounds(),m=mxUtils.createXmlDocument(),l=m.createElement("output");m.appendChild(l);m=new mxXmlCanvas2D(l);m.translate(Math.floor((f/d-g.x)/h.view.scale),Math.floor((f/d-g.y)/h.view.scale));m.scale(d/h.view.scale);(new mxImageExport).drawState(h.getView().getState(h.model.root),
-m);l="xml="+encodeURIComponent(mxUtils.getXml(l));m=Math.ceil(g.width*d/h.view.scale+2*f);d=Math.ceil(g.height*d/h.view.scale+2*f);l.length<=MAX_REQUEST_SIZE&&m*d<MAX_AREA?(a.hideDialog(),(new mxXmlRequest(EXPORT_URL,"format="+c+"&filename="+encodeURIComponent(b)+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+d+"&"+l+"&dpi="+k)).simulate(document,"_blank")):mxUtils.alert(mxResources.get("drawingTooLarge"))}};
+ExportDialog.exportFile=function(a,b,c,e,d,f,h,k){k=a.editor.graph;if("xml"==c)ExportDialog.saveLocalFile(a,mxUtils.getXml(a.editor.getGraphXml()),b,c);else if("svg"==c)ExportDialog.saveLocalFile(a,mxUtils.getXml(k.getSvg(e,d,f)),b,c);else{var g=k.getGraphBounds(),m=mxUtils.createXmlDocument(),l=m.createElement("output");m.appendChild(l);m=new mxXmlCanvas2D(l);m.translate(Math.floor((f/d-g.x)/k.view.scale),Math.floor((f/d-g.y)/k.view.scale));m.scale(d/k.view.scale);(new mxImageExport).drawState(k.getView().getState(k.model.root),
+m);l="xml="+encodeURIComponent(mxUtils.getXml(l));m=Math.ceil(g.width*d/k.view.scale+2*f);d=Math.ceil(g.height*d/k.view.scale+2*f);l.length<=MAX_REQUEST_SIZE&&m*d<MAX_AREA?(a.hideDialog(),(new mxXmlRequest(EXPORT_URL,"format="+c+"&filename="+encodeURIComponent(b)+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+d+"&"+l+"&dpi="+h)).simulate(document,"_blank")):mxUtils.alert(mxResources.get("drawingTooLarge"))}};
ExportDialog.saveLocalFile=function(a,b,c,e){b.length<MAX_REQUEST_SIZE?(a.hideDialog(),(new mxXmlRequest(SAVE_URL,"xml="+encodeURIComponent(b)+"&filename="+encodeURIComponent(c)+"&format="+e)).simulate(document,"_blank")):(mxUtils.alert(mxResources.get("drawingTooLarge")),mxUtils.popup(xml))};
-var EditDataDialog=function(a,b){function c(){0<y.value.length?F.removeAttribute("disabled"):F.setAttribute("disabled","disabled")}var e=document.createElement("div"),d=a.editor.graph,f=d.getModel().getValue(b);if(!mxUtils.isNode(f)){var k=mxUtils.createXmlDocument().createElement("object");k.setAttribute("label",f||"");f=k}var h={};try{var g=mxUtils.getValue(a.editor.graph.getCurrentCellStyle(b),"metaData",null);null!=g&&(h=JSON.parse(g))}catch(A){}var m=new mxForm("properties");m.table.style.width=
+var EditDataDialog=function(a,b){function c(){0<y.value.length?F.removeAttribute("disabled"):F.setAttribute("disabled","disabled")}var e=document.createElement("div"),d=a.editor.graph,f=d.getModel().getValue(b);if(!mxUtils.isNode(f)){var h=mxUtils.createXmlDocument().createElement("object");h.setAttribute("label",f||"");f=h}var k={};try{var g=mxUtils.getValue(a.editor.graph.getCurrentCellStyle(b),"metaData",null);null!=g&&(k=JSON.parse(g))}catch(B){}var m=new mxForm("properties");m.table.style.width=
"100%";for(var l=f.attributes,n=[],p=[],r=0,u=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a,b):null,v=function(a,b){var c=document.createElement("div");c.style.position="relative";c.style.paddingRight="20px";c.style.boxSizing="border-box";c.style.width="100%";var d=document.createElement("a"),e=mxUtils.createImage(Dialog.prototype.closeImage);e.style.height="9px";e.style.fontSize="9px";e.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";d.className="geButton";d.setAttribute("title",
-mxResources.get("delete"));d.style.position="absolute";d.style.top="4px";d.style.right="0px";d.style.margin="0px";d.style.width="9px";d.style.height="9px";d.style.cursor="pointer";d.appendChild(e);e=function(a){return function(){for(var b=0,c=0;c<n.length;c++){if(n[c]==a){p[c]=null;m.table.deleteRow(b+(null!=u?1:0));break}null!=p[c]&&b++}}}(b);mxEvent.addListener(d,"click",e);e=a.parentNode;c.appendChild(a);c.appendChild(d);e.appendChild(c)},k=function(a,b,c){n[a]=b;p[a]=m.addTextarea(n[r]+":",c,
-2);p[a].style.width="100%";0<c.indexOf("\n")&&p[a].setAttribute("rows","2");v(p[a],b);null!=h[b]&&0==h[b].editable&&p[a].setAttribute("disabled","disabled")},g=[],t=d.getModel().getParent(b)==d.getModel().getRoot(),x=0;x<l.length;x++)!t&&"label"==l[x].nodeName||"placeholders"==l[x].nodeName||g.push({name:l[x].nodeName,value:l[x].nodeValue});g.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0});if(null!=u){l=document.createElement("div");l.style.width="100%";l.style.fontSize="11px";l.style.textAlign=
+mxResources.get("delete"));d.style.position="absolute";d.style.top="4px";d.style.right="0px";d.style.margin="0px";d.style.width="9px";d.style.height="9px";d.style.cursor="pointer";d.appendChild(e);e=function(a){return function(){for(var b=0,c=0;c<n.length;c++){if(n[c]==a){p[c]=null;m.table.deleteRow(b+(null!=u?1:0));break}null!=p[c]&&b++}}}(b);mxEvent.addListener(d,"click",e);e=a.parentNode;c.appendChild(a);c.appendChild(d);e.appendChild(c)},h=function(a,b,c){n[a]=b;p[a]=m.addTextarea(n[r]+":",c,
+2);p[a].style.width="100%";0<c.indexOf("\n")&&p[a].setAttribute("rows","2");v(p[a],b);null!=k[b]&&0==k[b].editable&&p[a].setAttribute("disabled","disabled")},g=[],t=d.getModel().getParent(b)==d.getModel().getRoot(),x=0;x<l.length;x++)!t&&"label"==l[x].nodeName||"placeholders"==l[x].nodeName||g.push({name:l[x].nodeName,value:l[x].nodeValue});g.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0});if(null!=u){l=document.createElement("div");l.style.width="100%";l.style.fontSize="11px";l.style.textAlign=
"center";mxUtils.write(l,u);var w=m.addField(mxResources.get("id")+":",l);mxEvent.addListener(l,"dblclick",function(c){mxEvent.isShiftDown(c)&&(c=new FilenameDialog(a,u,mxResources.get("apply"),mxUtils.bind(this,function(c){null!=c&&0<c.length&&c!=u&&(null==d.getModel().getCell(c)?(d.getModel().cellRemoved(b),b.setId(c),u=c,w.innerHTML=mxUtils.htmlEntities(c),d.getModel().cellAdded(b)):a.handleError({message:mxResources.get("alreadyExst",[c])}))}),mxResources.get("id")),a.showDialog(c.container,300,
-80,!0,!0),c.init())});l.setAttribute("title","Shift+Double Click to Edit ID")}for(x=0;x<g.length;x++)k(r,g[x].name,g[x].value),r++;g=document.createElement("div");g.style.position="absolute";g.style.top="30px";g.style.left="30px";g.style.right="30px";g.style.bottom="80px";g.style.overflowY="auto";g.appendChild(m.table);k=document.createElement("div");k.style.boxSizing="border-box";k.style.paddingRight="160px";k.style.whiteSpace="nowrap";k.style.marginTop="6px";k.style.width="100%";var y=document.createElement("input");
-y.setAttribute("placeholder",mxResources.get("enterPropertyName"));y.setAttribute("type","text");y.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"36":"40");y.style.boxSizing="border-box";y.style.marginLeft="2px";y.style.width="100%";k.appendChild(y);g.appendChild(k);e.appendChild(g);var F=mxUtils.button(mxResources.get("addProperty"),function(){var a=y.value;if(0<a.length&&"label"!=a&&"placeholders"!=a&&0>a.indexOf(":"))try{var b=mxUtils.indexOf(n,a);if(0<=b&&null!=p[b])p[b].focus();else{f.cloneNode(!1).setAttribute(a,
+80,!0,!0),c.init())});l.setAttribute("title","Shift+Double Click to Edit ID")}for(x=0;x<g.length;x++)h(r,g[x].name,g[x].value),r++;g=document.createElement("div");g.style.position="absolute";g.style.top="30px";g.style.left="30px";g.style.right="30px";g.style.bottom="80px";g.style.overflowY="auto";g.appendChild(m.table);h=document.createElement("div");h.style.boxSizing="border-box";h.style.paddingRight="160px";h.style.whiteSpace="nowrap";h.style.marginTop="6px";h.style.width="100%";var y=document.createElement("input");
+y.setAttribute("placeholder",mxResources.get("enterPropertyName"));y.setAttribute("type","text");y.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"36":"40");y.style.boxSizing="border-box";y.style.marginLeft="2px";y.style.width="100%";h.appendChild(y);g.appendChild(h);e.appendChild(g);var F=mxUtils.button(mxResources.get("addProperty"),function(){var a=y.value;if(0<a.length&&"label"!=a&&"placeholders"!=a&&0>a.indexOf(":"))try{var b=mxUtils.indexOf(n,a);if(0<=b&&null!=p[b])p[b].focus();else{f.cloneNode(!1).setAttribute(a,
"");0<=b&&(n.splice(b,1),p.splice(b,1));n.push(a);var c=m.addTextarea(a+":","",2);c.style.width="100%";p.push(c);v(c,a);c.focus()}F.setAttribute("disabled","disabled");y.value=""}catch(D){mxUtils.alert(D)}else mxUtils.alert(mxResources.get("invalidName"))});mxEvent.addListener(y,"keypress",function(a){13==a.keyCode&&F.click()});this.init=function(){0<p.length?p[0].focus():y.focus()};F.setAttribute("title",mxResources.get("addProperty"));F.setAttribute("disabled","disabled");F.style.textOverflow="ellipsis";
-F.style.position="absolute";F.style.overflow="hidden";F.style.width="144px";F.style.right="0px";F.className="geBtn";k.appendChild(F);g=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});g.setAttribute("title","Escape");g.className="geBtn";var I=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);f=f.cloneNode(!0);for(var c=!1,e=0;e<n.length;e++)null==p[e]?f.removeAttribute(n[e]):(f.setAttribute(n[e],p[e].value),c=c||"placeholder"==
-n[e]&&"1"==f.getAttribute("placeholders"));c&&f.removeAttribute("label");d.getModel().setValue(b,f)}catch(z){mxUtils.alert(z)}});I.setAttribute("title","Ctrl+Enter");I.className="geBtn gePrimaryBtn";mxEvent.addListener(e,"keypress",function(a){13==a.keyCode&&mxEvent.isControlDown(a)&&I.click()});mxEvent.addListener(y,"keyup",c);mxEvent.addListener(y,"change",c);k=document.createElement("div");k.style.cssText="position:absolute;left:30px;right:30px;text-align:right;bottom:30px;height:40px;";if(a.editor.graph.getModel().isVertex(b)||
+F.style.position="absolute";F.style.overflow="hidden";F.style.width="144px";F.style.right="0px";F.className="geBtn";h.appendChild(F);g=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});g.setAttribute("title","Escape");g.className="geBtn";var I=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);f=f.cloneNode(!0);for(var c=!1,e=0;e<n.length;e++)null==p[e]?f.removeAttribute(n[e]):(f.setAttribute(n[e],p[e].value),c=c||"placeholder"==
+n[e]&&"1"==f.getAttribute("placeholders"));c&&f.removeAttribute("label");d.getModel().setValue(b,f)}catch(z){mxUtils.alert(z)}});I.setAttribute("title","Ctrl+Enter");I.className="geBtn gePrimaryBtn";mxEvent.addListener(e,"keypress",function(a){13==a.keyCode&&mxEvent.isControlDown(a)&&I.click()});mxEvent.addListener(y,"keyup",c);mxEvent.addListener(y,"change",c);h=document.createElement("div");h.style.cssText="position:absolute;left:30px;right:30px;text-align:right;bottom:30px;height:40px;";if(a.editor.graph.getModel().isVertex(b)||
a.editor.graph.getModel().isEdge(b))l=document.createElement("span"),l.style.marginRight="10px",t=document.createElement("input"),t.setAttribute("type","checkbox"),t.style.marginRight="6px","1"==f.getAttribute("placeholders")&&(t.setAttribute("checked","checked"),t.defaultChecked=!0),mxEvent.addListener(t,"click",function(){"1"==f.getAttribute("placeholders")?f.removeAttribute("placeholders"):f.setAttribute("placeholders","1")}),l.appendChild(t),mxUtils.write(l,mxResources.get("placeholders")),null!=
EditDataDialog.placeholderHelpLink&&(t=document.createElement("a"),t.setAttribute("href",EditDataDialog.placeholderHelpLink),t.setAttribute("title",mxResources.get("help")),t.setAttribute("target","_blank"),t.style.marginLeft="8px",t.style.cursor="help",x=document.createElement("img"),mxUtils.setOpacity(x,50),x.style.height="16px",x.style.width="16px",x.setAttribute("border","0"),x.setAttribute("valign","middle"),x.style.marginTop=mxClient.IS_IE11?"0px":"-4px",x.setAttribute("src",Editor.helpImage),
-t.appendChild(x),l.appendChild(t)),k.appendChild(l);a.editor.cancelFirst?(k.appendChild(g),k.appendChild(I)):(k.appendChild(I),k.appendChild(g));e.appendChild(k);this.container=e};EditDataDialog.getDisplayIdForCell=function(a,b){var c=null;null!=a.editor.graph.getModel().getParent(b)&&(c=b.getId());return c};EditDataDialog.placeholderHelpLink=null;
-var LinkDialog=function(a,b,c,e){var d=document.createElement("div");mxUtils.write(d,mxResources.get("editLink")+":");var f=document.createElement("div");f.className="geTitle";f.style.backgroundColor="transparent";f.style.borderColor="transparent";f.style.whiteSpace="nowrap";f.style.textOverflow="clip";f.style.cursor="default";f.style.paddingRight="20px";var k=document.createElement("input");k.setAttribute("value",b);k.setAttribute("placeholder","http://www.example.com/");k.setAttribute("type","text");
-k.style.marginTop="6px";k.style.width="400px";k.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";k.style.backgroundRepeat="no-repeat";k.style.backgroundPosition="100% 50%";k.style.paddingRight="14px";b=document.createElement("div");b.setAttribute("title",mxResources.get("reset"));b.style.position="relative";b.style.left="-16px";b.style.width="12px";b.style.height="14px";b.style.cursor="pointer";b.style.display="inline-block";b.style.top="3px";b.style.background="url("+IMAGE_PATH+"/transparent.gif)";
-mxEvent.addListener(b,"click",function(){k.value="";k.focus()});f.appendChild(k);f.appendChild(b);d.appendChild(f);this.init=function(){k.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?k.select():document.execCommand("selectAll",!1,null)};f=document.createElement("div");f.style.marginTop="18px";f.style.textAlign="right";mxEvent.addListener(k,"keypress",function(b){13==b.keyCode&&(a.hideDialog(),e(k.value))});b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});
-b.className="geBtn";a.editor.cancelFirst&&f.appendChild(b);c=mxUtils.button(c,function(){a.hideDialog();e(k.value)});c.className="geBtn gePrimaryBtn";f.appendChild(c);a.editor.cancelFirst||f.appendChild(b);d.appendChild(f);this.container=d},OutlineWindow=function(a,b,c,e,d){var f=a.editor.graph,k=document.createElement("div");k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.overflow="hidden";this.window=new mxWindow(mxResources.get("outline"),k,b,c,e,d,!0,!0);this.window.minimumSize=
+t.appendChild(x),l.appendChild(t)),h.appendChild(l);a.editor.cancelFirst?(h.appendChild(g),h.appendChild(I)):(h.appendChild(I),h.appendChild(g));e.appendChild(h);this.container=e};EditDataDialog.getDisplayIdForCell=function(a,b){var c=null;null!=a.editor.graph.getModel().getParent(b)&&(c=b.getId());return c};EditDataDialog.placeholderHelpLink=null;
+var LinkDialog=function(a,b,c,e){var d=document.createElement("div");mxUtils.write(d,mxResources.get("editLink")+":");var f=document.createElement("div");f.className="geTitle";f.style.backgroundColor="transparent";f.style.borderColor="transparent";f.style.whiteSpace="nowrap";f.style.textOverflow="clip";f.style.cursor="default";f.style.paddingRight="20px";var h=document.createElement("input");h.setAttribute("value",b);h.setAttribute("placeholder","http://www.example.com/");h.setAttribute("type","text");
+h.style.marginTop="6px";h.style.width="400px";h.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";h.style.backgroundRepeat="no-repeat";h.style.backgroundPosition="100% 50%";h.style.paddingRight="14px";b=document.createElement("div");b.setAttribute("title",mxResources.get("reset"));b.style.position="relative";b.style.left="-16px";b.style.width="12px";b.style.height="14px";b.style.cursor="pointer";b.style.display="inline-block";b.style.top="3px";b.style.background="url("+IMAGE_PATH+"/transparent.gif)";
+mxEvent.addListener(b,"click",function(){h.value="";h.focus()});f.appendChild(h);f.appendChild(b);d.appendChild(f);this.init=function(){h.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?h.select():document.execCommand("selectAll",!1,null)};f=document.createElement("div");f.style.marginTop="18px";f.style.textAlign="right";mxEvent.addListener(h,"keypress",function(b){13==b.keyCode&&(a.hideDialog(),e(h.value))});b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});
+b.className="geBtn";a.editor.cancelFirst&&f.appendChild(b);c=mxUtils.button(c,function(){a.hideDialog();e(h.value)});c.className="geBtn gePrimaryBtn";f.appendChild(c);a.editor.cancelFirst||f.appendChild(b);d.appendChild(f);this.container=d},OutlineWindow=function(a,b,c,e,d){var f=a.editor.graph,h=document.createElement("div");h.style.position="absolute";h.style.width="100%";h.style.height="100%";h.style.overflow="hidden";this.window=new mxWindow(mxResources.get("outline"),h,b,c,e,d,!0,!0);this.window.minimumSize=
new mxRectangle(0,0,80,80);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-("1"==urlParams.sketch?
-3:48)));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var h=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",h);var g=a.createOutline(this.window);this.destroy=function(){mxEvent.removeListener(window,"resize",h);this.window.destroy();g.destroy()};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit();g.setSuspended(!1)}));this.window.addListener(mxEvent.HIDE,
-mxUtils.bind(this,function(){g.setSuspended(!0)}));this.window.addListener(mxEvent.NORMALIZE,mxUtils.bind(this,function(){g.setSuspended(!1)}));this.window.addListener(mxEvent.MINIMIZE,mxUtils.bind(this,function(){g.setSuspended(!0)}));g.init(k);a.actions.get("zoomIn");a.actions.get("zoomOut");mxEvent.addMouseWheelListener(function(a,b){for(var c=!1,d=mxEvent.getSource(a);null!=d;){if(d==g.svg){c=!0;break}d=d.parentNode}c&&(c=f.zoomFactor,null!=a.deltaY&&Math.round(a.deltaY)!=a.deltaY&&(c=1+Math.abs(a.deltaY)/
-20*(c-1)),f.lazyZoom(b,null,null,c),mxEvent.consume(a))})},LayersWindow=function(a,b,c,e,d){function f(b){if(g.isEnabled()&&null!=b){var c=g.convertValueToString(b),c=new FilenameDialog(a,c||mxResources.get("background"),mxResources.get("rename"),mxUtils.bind(this,function(a){null!=a&&g.cellLabelChanged(b,a)}),mxResources.get("enterName"));a.showDialog(c.container,300,100,!0,!0);c.init()}}function k(){var a=A.get(g.getLayerForCells(g.getSelectionCells()));null!=a?a.appendChild(G):null!=G.parentNode&&
-G.parentNode.removeChild(G)}function h(){function a(a,b,c,d){var e=document.createElement("div");e.className="geToolbarContainer";A.put(c,e);e.style.overflow="hidden";e.style.position="relative";e.style.padding="4px";e.style.height="22px";e.style.display="block";e.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";e.style.borderWidth="0px 0px 1px 0px";e.style.borderColor="#c3c3c3";e.style.borderStyle="solid";e.style.whiteSpace="nowrap";e.setAttribute("title",b);var h=document.createElement("div");
+3:48)));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var k=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",k);var g=a.createOutline(this.window);this.destroy=function(){mxEvent.removeListener(window,"resize",k);this.window.destroy();g.destroy()};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit();g.setSuspended(!1)}));this.window.addListener(mxEvent.HIDE,
+mxUtils.bind(this,function(){g.setSuspended(!0)}));this.window.addListener(mxEvent.NORMALIZE,mxUtils.bind(this,function(){g.setSuspended(!1)}));this.window.addListener(mxEvent.MINIMIZE,mxUtils.bind(this,function(){g.setSuspended(!0)}));g.init(h);a.actions.get("zoomIn");a.actions.get("zoomOut");mxEvent.addMouseWheelListener(function(a,b){for(var c=!1,d=mxEvent.getSource(a);null!=d;){if(d==g.svg){c=!0;break}d=d.parentNode}c&&(c=f.zoomFactor,null!=a.deltaY&&Math.round(a.deltaY)!=a.deltaY&&(c=1+Math.abs(a.deltaY)/
+20*(c-1)),f.lazyZoom(b,null,null,c),mxEvent.consume(a))})},LayersWindow=function(a,b,c,e,d){function f(b){if(g.isEnabled()&&null!=b){var c=g.convertValueToString(b),c=new FilenameDialog(a,c||mxResources.get("background"),mxResources.get("rename"),mxUtils.bind(this,function(a){null!=a&&g.cellLabelChanged(b,a)}),mxResources.get("enterName"));a.showDialog(c.container,300,100,!0,!0);c.init()}}function h(){var a=B.get(g.getLayerForCells(g.getSelectionCells()));null!=a?a.appendChild(G):null!=G.parentNode&&
+G.parentNode.removeChild(G)}function k(){function a(a,b,c,d){var e=document.createElement("div");e.className="geToolbarContainer";B.put(c,e);e.style.overflow="hidden";e.style.position="relative";e.style.padding="4px";e.style.height="22px";e.style.display="block";e.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";e.style.borderWidth="0px 0px 1px 0px";e.style.borderColor="#c3c3c3";e.style.borderStyle="solid";e.style.whiteSpace="nowrap";e.setAttribute("title",b);var h=document.createElement("div");
h.style.display="inline-block";h.style.width="100%";h.style.textOverflow="ellipsis";h.style.overflow="hidden";mxEvent.addListener(e,"dragover",function(b){b.dataTransfer.dropEffect="move";r=a;b.stopPropagation();b.preventDefault()});mxEvent.addListener(e,"dragstart",function(a){p=e;mxClient.IS_FF&&a.dataTransfer.setData("Text","<layer/>")});mxEvent.addListener(e,"dragend",function(a){null!=p&&null!=r&&g.addCell(c,g.model.root,r);r=p=null;a.stopPropagation();a.preventDefault()});var k=document.createElement("img");
k.setAttribute("draggable","false");k.setAttribute("align","top");k.setAttribute("border","0");k.style.width="16px";k.style.padding="0px 6px 0 4px";k.style.marginTop="2px";k.style.cursor="pointer";k.setAttribute("title",mxResources.get(g.model.isVisible(c)?"hide":"show"));g.model.isVisible(c)?(k.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(e,75)):(k.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(e,25));Editor.isDarkMode()&&(k.style.filter="invert(100%)");h.appendChild(k);
mxEvent.addListener(k,"click",function(a){g.model.setVisible(c,!g.model.isVisible(c));mxEvent.consume(a)});k=document.createElement("img");k.setAttribute("draggable","false");k.setAttribute("align","top");k.setAttribute("border","0");k.style.width="16px";k.style.padding="0px 6px 0 0";k.style.marginTop="2px";k.setAttribute("title",mxResources.get("lockUnlock"));var l=g.getCurrentCellStyle(c);"1"==mxUtils.getValue(l,"locked","0")?(k.setAttribute("src",Editor.lockedImage),mxUtils.setOpacity(k,75)):(k.setAttribute("src",
@@ -3757,8 +3751,8 @@ Editor.unlockedImage),mxUtils.setOpacity(k,25));Editor.isDarkMode()&&(k.style.fi
b);k.style.display="block";k.style.whiteSpace="nowrap";k.style.overflow="hidden";k.style.textOverflow="ellipsis";k.style.position="absolute";k.style.left="52px";k.style.right="8px";k.style.top="8px";h.appendChild(k);e.appendChild(h);if(g.isEnabled()){if(mxClient.IS_TOUCH||mxClient.IS_POINTER||mxClient.IS_IE&&10>document.documentMode)b=document.createElement("div"),b.style.display="block",b.style.textAlign="right",b.style.whiteSpace="nowrap",b.style.position="absolute",b.style.right="16px",b.style.top=
"6px",0<a&&(h=document.createElement("a"),h.setAttribute("title",mxResources.get("toBack")),h.className="geButton",h.style.cssFloat="none",h.innerHTML="&#9660;",h.style.width="14px",h.style.height="14px",h.style.fontSize="14px",h.style.margin="0px",h.style.marginTop="-1px",b.appendChild(h),mxEvent.addListener(h,"click",function(b){g.isEnabled()&&g.addCell(c,g.model.root,a-1);mxEvent.consume(b)})),0<=a&&a<u-1&&(h=document.createElement("a"),h.setAttribute("title",mxResources.get("toFront")),h.className=
"geButton",h.style.cssFloat="none",h.innerHTML="&#9650;",h.style.width="14px",h.style.height="14px",h.style.fontSize="14px",h.style.margin="0px",h.style.marginTop="-1px",b.appendChild(h),mxEvent.addListener(h,"click",function(b){g.isEnabled()&&g.addCell(c,g.model.root,a+1);mxEvent.consume(b)})),e.appendChild(b);mxClient.IS_SVG&&(!mxClient.IS_IE||10<=document.documentMode)&&(e.setAttribute("draggable","true"),e.style.cursor="move")}mxEvent.addListener(e,"dblclick",function(a){var b=mxEvent.getSource(a).nodeName;
-"INPUT"!=b&&"IMG"!=b&&(f(c),mxEvent.consume(a))});g.getDefaultParent()==c&&(e.style.background=Editor.isDarkMode()?"#505759":"#e6eff8",e.style.fontWeight=g.isEnabled()?"bold":"",v=c);mxEvent.addListener(e,"click",function(a){g.isEnabled()&&(g.setDefaultParent(d),g.view.setCurrentRoot(null),mxEvent.isShiftDown(a)&&g.setSelectionCells(c.children),mxEvent.consume(a))});n.appendChild(e)}u=g.model.getChildCount(g.model.root);n.innerHTML="";A.clear();for(var b=u-1;0<=b;b--)mxUtils.bind(this,function(c){a(b,
-g.convertValueToString(c)||mxResources.get("background"),c,c)})(g.model.getChildAt(g.model.root,b));var c=g.convertValueToString(v)||mxResources.get("background");w.setAttribute("title",mxResources.get("removeIt",[c]));I.setAttribute("title",mxResources.get("duplicateIt",[c]));g.isSelectionEmpty()&&(y.className="geButton mxDisabled");k()}var g=a.editor.graph,m=document.createElement("div");m.style.userSelect="none";m.style.background=Editor.isDarkMode()?Dialog.backdropColor:"#fff";m.style.border=
+"INPUT"!=b&&"IMG"!=b&&(f(c),mxEvent.consume(a))});g.getDefaultParent()==c&&(e.style.background=Editor.isDarkMode()?"#505759":"#e6eff8",e.style.fontWeight=g.isEnabled()?"bold":"",v=c);mxEvent.addListener(e,"click",function(a){g.isEnabled()&&(g.setDefaultParent(d),g.view.setCurrentRoot(null),mxEvent.isShiftDown(a)&&g.setSelectionCells(c.children),mxEvent.consume(a))});n.appendChild(e)}u=g.model.getChildCount(g.model.root);n.innerHTML="";B.clear();for(var b=u-1;0<=b;b--)mxUtils.bind(this,function(c){a(b,
+g.convertValueToString(c)||mxResources.get("background"),c,c)})(g.model.getChildAt(g.model.root,b));var c=g.convertValueToString(v)||mxResources.get("background");w.setAttribute("title",mxResources.get("removeIt",[c]));I.setAttribute("title",mxResources.get("duplicateIt",[c]));g.isSelectionEmpty()&&(y.className="geButton mxDisabled");h()}var g=a.editor.graph,m=document.createElement("div");m.style.userSelect="none";m.style.background=Editor.isDarkMode()?Dialog.backdropColor:"#fff";m.style.border=
"1px solid whiteSmoke";m.style.height="100%";m.style.marginBottom="10px";m.style.overflow="auto";var l=EditorUi.compactUi?"26px":"30px",n=document.createElement("div");n.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"#fff";n.style.position="absolute";n.style.overflow="auto";n.style.left="0px";n.style.right="0px";n.style.top="0px";n.style.bottom=parseInt(l)+7+"px";m.appendChild(n);var p=null,r=null;mxEvent.addListener(m,"dragover",function(a){a.dataTransfer.dropEffect="move";r=0;a.stopPropagation();
a.preventDefault()});mxEvent.addListener(m,"drop",function(a){a.stopPropagation();a.preventDefault()});var u=null,v=null,t=document.createElement("div");t.className="geToolbarContainer";t.style.position="absolute";t.style.bottom="0px";t.style.left="0px";t.style.right="0px";t.style.height=l;t.style.overflow="hidden";t.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";t.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";t.style.borderWidth="1px 0px 0px 0px";t.style.borderColor=
"#c3c3c3";t.style.borderStyle="solid";t.style.display="block";t.style.whiteSpace="nowrap";var x=document.createElement("a");x.className="geButton";var w=x.cloneNode(!1),l=document.createElement("img");l.setAttribute("border","0");l.setAttribute("width","22");l.setAttribute("src",Editor.trashImage);l.style.opacity="0.9";Editor.isDarkMode()&&(l.style.filter="invert(100%)");w.appendChild(l);mxEvent.addListener(w,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.model.root.getIndex(v);
@@ -3766,9 +3760,9 @@ g.removeCells([v],!1);0==g.model.getChildCount(g.model.root)?(g.model.add(g.mode
Editor.verticalDotsImage);y.appendChild(l);mxEvent.addListener(y,"click",function(b){if(g.isEnabled()&&!g.isSelectionEmpty()){var c=mxUtils.getOffset(y);a.showPopupMenu(mxUtils.bind(this,function(a,b){for(var c=u-1;0<=c;c--)mxUtils.bind(this,function(c){var d=a.addItem(g.convertValueToString(c)||mxResources.get("background"),null,mxUtils.bind(this,function(){g.moveCells(g.getSelectionCells(),0,0,!1,c)}),b);1==g.getSelectionCount()&&g.model.isAncestor(c,g.getSelectionCell())&&a.addCheckmark(d,Editor.checkmarkImage)})(g.model.getChildAt(g.model.root,
c))}),c.x,c.y+y.offsetHeight,b)}});t.appendChild(y);var F=x.cloneNode(!1);F.setAttribute("title",mxResources.get("editData"));l=l.cloneNode(!1);l.setAttribute("src",Editor.editImage);F.appendChild(l);mxEvent.addListener(F,"click",function(b){g.isEnabled()&&a.showDataDialog(v);mxEvent.consume(b)});g.isEnabled()||(F.className="geButton mxDisabled");t.appendChild(F);var I=x.cloneNode(!1);I.setAttribute("title",mxResources.get("duplicate"));l=l.cloneNode(!1);l.setAttribute("src",Editor.duplicateImage);
I.appendChild(l);mxEvent.addListener(I,"click",function(a){if(g.isEnabled()){a=null;g.model.beginUpdate();try{a=g.cloneCell(v),g.cellLabelChanged(a,mxResources.get("untitledLayer")),a.setVisible(!0),a=g.addCell(a,g.model.root),g.setDefaultParent(a)}finally{g.model.endUpdate()}null==a||g.isCellLocked(a)||g.selectAll(a)}});g.isEnabled()||(I.className="geButton mxDisabled");t.appendChild(I);x=x.cloneNode(!1);x.setAttribute("title",mxResources.get("addLayer"));l=l.cloneNode(!1);l.setAttribute("src",Editor.addImage);
-x.appendChild(l);mxEvent.addListener(x,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.addCell(new mxCell(mxResources.get("untitledLayer")),g.model.root);g.setDefaultParent(b)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(x.className="geButton mxDisabled");t.appendChild(x);m.appendChild(t);var A=new mxDictionary,G=document.createElement("span");G.setAttribute("title",mxResources.get("selectionOnly"));G.innerHTML="&#8226;";G.style.position="absolute";G.style.fontWeight=
-"bold";G.style.fontSize="16pt";G.style.right="2px";G.style.top="2px";h();g.model.addListener(mxEvent.CHANGE,h);g.addListener("defaultParentChanged",h);g.selectionModel.addListener(mxEvent.CHANGE,function(){g.isSelectionEmpty()?y.className="geButton mxDisabled":y.className="geButton";k()});this.window=new mxWindow(mxResources.get("layers"),m,b,c,e,d,!0,!0);this.window.minimumSize=new mxRectangle(0,0,150,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);
-this.window.setClosable(!0);this.window.setVisible(!0);this.init=function(){n.scrollTop=n.scrollHeight-n.clientHeight};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.refreshLayers=h;this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,
+x.appendChild(l);mxEvent.addListener(x,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.addCell(new mxCell(mxResources.get("untitledLayer")),g.model.root);g.setDefaultParent(b)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(x.className="geButton mxDisabled");t.appendChild(x);m.appendChild(t);var B=new mxDictionary,G=document.createElement("span");G.setAttribute("title",mxResources.get("selectionOnly"));G.innerHTML="&#8226;";G.style.position="absolute";G.style.fontWeight=
+"bold";G.style.fontSize="16pt";G.style.right="2px";G.style.top="2px";k();g.model.addListener(mxEvent.CHANGE,k);g.addListener("defaultParentChanged",k);g.selectionModel.addListener(mxEvent.CHANGE,function(){g.isSelectionEmpty()?y.className="geButton mxDisabled":y.className="geButton";h()});this.window=new mxWindow(mxResources.get("layers"),m,b,c,e,d,!0,!0);this.window.minimumSize=new mxRectangle(0,0,150,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);
+this.window.setClosable(!0);this.window.setVisible(!0);this.init=function(){n.scrollTop=n.scrollHeight-n.clientHeight};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.refreshLayers=k;this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,
Math.min(b,c-this.table.clientHeight-("1"==urlParams.sketch?3:48)));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var z=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",z);this.destroy=function(){mxEvent.removeListener(window,"resize",z);this.window.destroy()}};
(function(){Sidebar.prototype.tagIndex="5V1dV+M6sv01rDvngax0oLvveYQEaGaAziE0PW8sxVYSDbblI9uk6V9/VVWS7ST+kB0zL3etbmIn3ltlfZRKUqkU/rpRLN6MmFJym5yM/8QL/Xnw7yLceXQ03fA3JaOTyfjCQCKZehvu66tErCMW6J9E1M4jlJcFTJWIPP1VIKK1ixj/zML4VBRiTMaf9HOKx8G7/lwy71V/ZJEv8Vv8cKea9KW646tU41nk678/4tK7SZVu5FpC9oz/TDPVnkEPJlsn4wVma1lEnVemGByy6q+M+SXkSmaQ6Vv27gJeBDzyOQDMu1ma5FVEEVBEtuokgQhdyZ62Uv/9qWWoYPRltgx4A3U970/hc6BnIuD+kdI+KbGTcelGce6ec4evOBl/k0r8llGKtWBTvulF98xVKjzEvxWXDVS/M8VHF57Hk0TDpzpxJQGScC9TIoX3euXvVV/UcWWpDFkqsCYyfaM/1ly36vGfgVhv0oiasyfh7ypgyaaBaKHl5/nThqb5VeAvZEigXx8k0AolJJUkVjo7jGBOHFOm29Se3FZin6VsyRL42V+2U90z9crTOGAeIEK8Q1UCnMlGxk4CLWb/gsflKt0y/MLnbzyQccgjaIivAjgTT/Gtr4Quf9cXXWRLjRKxyRwvkBko75hHnjisPzUkP/kyESnHtwoAtQ7kkrehL7UyzUAtLrh6E5g7Nnn9iYo2SWW8ZVr1QYsTIW8gE+ll5kHWQlXGdr/Qug1Zl/RDe2O4FL+fWPBaiJSUZGoDT6HRYT3DN9Gdgy4agY3Q59gj+iIOdAOB/MmYYlHKqYp5PMLaFHMVirSSG2XYySnnZrGHNW19JdaZoiYxGV8LbGq+9DKsT0APT3Sk1ldzXaZszQvOpfzlkndUYodytAPDOEuxuocyEqlUmM+Jbm6HevkAq0sAW8+MB9BmQJs+8HQr1Wup3G2zL6uCetJZjXKofV7J+FLnUUWtxZyLTYa20FzpV1GxEgnVdxH4JOgyS0QECr4F3z3nEUHWUQfUjUi/ZUv7tjqTGaCkl0q6Wou0Ef9tdhslUBAn9Xq4GshZkG6gTmx0m8EqvuGoYzb4iwMYdDnVMcpbS2QM3TYB3mM0Sp71/0fuSVPf7lmki1d10DN3LE6x0/CKut+GuddVgGpRyFCtc/sZYS/Cm9FySdUj3sgIPlOZeZvWNAm1o0uTXH81UO3zZEEqQDkwD5q37t+zdAOqNe/RS/aJ6Tdi5purBt73xV930PiLapT8HTTXqz2Kh7JloQ26bIlVOtAl6dIY9uBPMhbeCdgtu/ZLJeEe1XdduTSPrpc6v9+TlIf64jakMpeQ9RumQFVr3YiV3vcb+eZyy9Viw4Ogl1p+nM2xmofSyNSdYgHjnSzA6m26fu+wTKtwYM30S1LXTkxPsYp0qp+nbu8yg271r4xnWM3/hoseBI+8qttygmLlSfLhZtmsS7CZUd1Kds295iT2m4dTh7aH0qLgF2QqGo5qVVdLtHiPvIp2mdDXinvvXtBgGhLRI4/1sJs09z5TqY6sRCNVqlU+2qxPDNuRuxm20MqLmqNOO3CqHRqxEGEclC3jNtATkMOLhFZpOynrH5FAc3UlcKRsbJHvy/9wD8iylUSFJHhrrfmRYBPaZCGDZ2Mu6QXolr3prFf16OdvsxOjqyqUVPXzVEngw+g2Qrur8WehCxWnqu71sE9gv/QWnrSalK00WglxllLFX+VXVaxv1TMae7yFcRrlV2059PNiNr2+wdxh60gmKamJ7trRDvIm4xsecYXqxI7z6sQ5pICWKDHp6jFiEyjpgtLioL1lU6MmSu3VHZm0QtcI1RVNeCPPjIeKHnuZLamxJzHnNIzdyIzsV2+DJm+Y22ZVlPINS35AxuFl1Bo4nQ5IJ7PIfxyW8xzGplLgaG9BGginPqsrUhn55RCZiLoxbRn4v4dAbkYubdBLFkWoRfXYs24CvPz8lGzpNZchT1XDzN8OSEkcF8ZBhnP+1cq2jJgddJORxMmOmMX7w5A96HXzILoS882Mr/IBWqAHTcjxejheKQPvJRo3kWNuP0g0msMlzn6upFoK36/o6A6R34t5fG0RKMGiNdXSwyFVJX4R6mwE9Y+GsodSb1gcv7cCTRUWmCEx1rI2SAbsPvY2+m9QmTl7mCeBdrAdKeMnTGC24X4ylMvU3qWtzY2Yf5/QdB+kwyKPB1i9agqkwEqZJqm+HLULWY27rx0Q72mUWoass8VjGOIQHihN0cRKenQVagMsqEtZ40YXPq4geB2yGWCXNjHdvWUBLwzZJqO0hL+TVEJ2va5urbACZWbCVYXEuLKywZep5bhnERlBRuANDHRa5c1HgwZlFJY2kWnipFFzIUE+znKy+EtINIQLcbvWDo8tdUmlOANNl1A7/85EXGmvHeBG00tYB81LS0AuLBVnVATUY8Ryv9DreSbjX5/Gw7BN6qTSVmRHniapOrKd1UqFa33dmLRcn4eiO68TzJgwXYga5OrAdj+l/P+s/3w5u4BXnkOdFpGwo5wOb+7Cf+7CX/0GtfRfzjCN8YfJX05g2BeQMAv9mxwCtgIWyOwr5L/o7pR+6SJ3Fe/5QLwwr4C6BIv1fKyzpToXHJTbLiG8/GQotrMJyTgA31zp7sYz07uavDfhI0+ET93fNFPKrlqZnmkCBaS85u7Qkeu8E9ciU7jYt/Oin4Cirkdwp8G3qlPh7jTYKupVrjsR5kytjqzkeYIFXRodnI/DcJL3VsvKmexWjgEoQCsdT/N5gLf5grrxeJ6vHTm4gO6UlxdM9fCJr5VdTooZGIdRDXwVSKniAK23gL3Xr/TsPT66RK06s+5MS1xeX2UqEqZDcGRYCDPKrMfWwKV89WhCtCt0umFC9cHJWKCO87lZ93ND0Yx1Ilesax5NH5/A6H4+Kc+ulmZcK+SoYJnx5BWnwRUNUOzoqJMouyS0VN6PSOkRm10jTnAgsGXKVzQTWkNVwXMVcD3cwHzgiccCc+0iwrV+eIB8vYYrzXPHQmiE1ZMQ1dCqZe8YRowhM391K5bkoGWFgTnpJC0cvypov69W1PHZKu61VvUKlrlgOFehv8dRqYiSVFVPrFeh9R+a6FKwUKF/2DYN5EtABZqrc/t6ZBF2b+Aky+I4EDDf0hE76YPlKyXWsFCNdaYrfEHqwDPaoVMBPZl25/OkuXfYh1AuGViPJI2HzBH4syPx50fiP/fFS0ErkVp1KFpUCxjqH1AdWqWlSspDr9t9mp8sRe05lZKcAbbwhWfvXCT5uaMGgh6KpJLW1xfoBw3LaFijA7pLbA/dLBaAHq0vExEoc+vIsCVvS8dsgKfzHs2zF5UcNegfdc9XQw7LtzEBEfnVuw5qsk9o/ZpU+TG0Qy5lmqJsZZKl/bKVR1cmoRI9kMKywhvIGYGrFIq+bi/73BQ0hZ97urenL6JXo5mqakobbtIVV66p/w8gNxay1cYALkHB9QnaBuTxx//OCudewXQalev3OcXoIopkah29PmH7C415oHVru0dODdPkGKapDAJyVt7oUe06YBVuotXIfZ+gJPdtaYfWuto0odAH8LSEDeELJ+eFgmTOYjMjHzutTu3jF0WpG5cTsOdrF/oO4OA7ZEqfB4GIEzsLWN3o6/CT3nipaAhKotcVWg06C0PjypdFnnW8zKDa16wc7zM8ads4WfHympGqW4QkbMBZ9BJqM5HWi99YkIFBog0Hzio7lkrk6FpEIqHNUzdS+rD2lUqc/dJZEPYVaHSDy8bczBP5mZ0nMo6LJDO2Kt7crnZYv2dpIkqO4Lj+UwiaZGA0N9XXHbZnPaKg7UVm+cmsVbpgLwQqTBDlK2QRjYqU9WGg36q1rR4EKSmgVoQS93g0qWbzMLnj/zKeThc2Ny9xdcxvW89tJ4FBZ+TrYS822IEJJ+OfG7MBproKdaU+lm6ha0k6VD5Wkg2Rn63EH5QRvWjn4LGOw95S7TY+lo3TH5bgr0x4r7qHlmhA5xdL8inC2+X+qnIjibHk+hEt7HPJHmiPr5FDKwqa25qJBIaLoGOvda+c0H4n10rRyKPrgymjDoVVMM5x8qynOBbcSwY9gDZTfidm4q9hNigH6Zq7EjwAgaEWn4CdRLdtSHCS1yLr+oE6voukO1CwEDCn2jNsm2CDCNlvtAe2HK3BYr8H2yZ1uJHuZl7so7STbMGZwqkd6+yc2C8a0q/ngU2T1/pvyFPmk83Tn/jK+AeZjy7QxdUCkrSe3NbTqNgL40jzsEOzt6u1D9tkTG81GT/skQ2ayLenp/lHp2H3zgzG+tdOZtsNHX1oJuNi99VAhH9Z9NF0P6/LNDBfboa6fZhgGdkTPhmqg3Eaf+zelGaa70Uruxfjpw7m7dWUBlIMPOJLqqEnlbYw7m/rCMN8W4EIq3yU28lRr/00O6EP07B7pPtJPgO3BzSObqMkNTPyh4nQVpli6C+Kh7umeGXIdYrzyrTE4a54V+7GdziaNakWdy8rutDfP+5Q6uGXHqZnFasiznRQXfSQERvNwMTfZtcLB/4N88lR1Bd6tC6Wmg+3UpO1nNAGReekn+dT/fCb2QYDbrLizeyyPyxWZ8bSBMBkfKP5KJTH8MncwhpdhJEJPjKZR2kWM4anfp4/4AqMtort1M9HJXJkDjXvCa99fDR7j1goZ+Ci5eNlH6zuA1JT24fiScpErMTelfGWWtwxQgHFjjzCtuJuPPlabFdZTK9hY7OU1LD5pjsLmKV+V7LRWsksxq1hcNHhDR5nYFYqnRg0I1Y7DGhmMD12qaM7njEng52y6I//yONAG9BDsy/0hb98H4T2Hv7Q9t5BMyMPDTB4Nn9XzMNV9SGpaZMwKq/cRu6MBdc0PRqMupDoGiLfYQUGNXqIoSzglobh11Ll0aDyYCql7wahxgrlvX5sEk9cZ8huDzRQKtakbzDk+1FCGCwTPmIQ6tuLe/08bRLHSBvMs1uV8of6M2tpff8UM/Pjklg8LY7ij2R0alrmSxLrke4KNjZKlWGvuIKL9jaT+K844epjeCsbzgtnkPNwXuM/X3fC4BwyjB44eY2kUW1gqzKElvowWzyKevTim5hHprYrSXGfbPU290OwgmbZRoHEXmVmBwR7emHQ9K589FG7k96B/hk0nQWuRNKy6Ee92NUl1NrCPFkWodFqXT7dWLX8EYuTjUw/LIFnGWQh/wD6BXjF5f1UsZTtMB/UxgsRVUy8uA9OYDJGlyEbZyNpS1HacBx90z06HU8knhzZ+GJAVIo1Vl/L92CjS6WtHnxx8r5FZ4xmPbZPYWNQQGbmEnRmuZ+BSxs5k2zBqQJpskiklWy1PIuQ4XrcZbGXdyOzpNmGIhLrhZhgucX6peINVyxIRreX0Gvda5tspRgFQCo8FlPjIwyemeTOGHtHJCIiCLF1sTgfj3fTib1jX+DJSDoQaa0feE+++5K/Z4mSnEGL3N11JS8SdE9HeEraqGfFD0fVEJwXKwldJ25PbrDKdG6T+y0F1RlOcDth5Q1LnHvED0S48Kx/2FCEsd33NxRhFplVkqLAB2obiywGV+ucayDaPEbVTg7QOnlfSrsfbDAhf+w3rmPInvWoA13OtB5XbLiyp9hIlxATesgqVVuZanqbKm6MJh1Y9lBCLL9k9Gl8cwW+HVN5dYJRLrKWiYZmurNPX2FH4z9mJNcfpaWJPKJ1YKpu6aZ3cv+m5HAb00cnVoSnzXdi39v8OjrjroXiW7JZiggXhh5ecLu4/2OIdA7Ih+C08S2Hz/Mi1Fqe56VEdMY8L6Zn4/H4j64J+gKCZEl0trLXXWAjGMsGJWQg26I8EcMmW9IrrmlhBZrg+JIlHLZJUsDSTda8UlJHNIXvj2Y5Dm0N7+NY9pee1o2LUIfB7vYSCPXf0b/4OxT2bsD8RsTjfKH/6Z9VXOcwfICpjK3rhMzX9DytZOyWPLfXrWCUPg9NPwImrq4cFDp2bgze3FOyVbYDpm9SprndbD67s+TRiPMDD27nJfk83rKrqZ7X5xQq0q9YDHNhWMhV5/fLowhZv+42gEJbG6qJssvEbZBSVOXSZTsKYuja+uiYEEIglnuoh940Z5eYnsnancUvHRghyGUuRsN2kzpsWYZVmcuVBAd9W77MgSF8cWI9JZs5sAeipm0DrrRhtrqDCGj+YStWogZxgwj9oEfBAkdsCZHMvHQ0uwCj1xdrQQeRMG1SSzqzI4JDRSpiZTWQ8TCDQIm6wsMEi66wv1qClVex6HKgZJe6zcRte5SqGO6zX6dWll1JmiVrIz2g68ZgQnab6IEXIcRmwh3ZYRxAHN5hGCfHMT5dGKlkiVuP1WAvj64TsOvFLGDWJOJAP/lY+rOPooctUXaFcG5CMCa1a0AHPB6LmSeMTZjfdEePpjmWiipzbiI1JJMhSCDb6SkZvNPUfwVnB0LYx541RzxuJ/k8hFT3ptWjI2OJC8b3RVLQnYF/CSf9GYYUlJRr45LCdn5cmnOM+J+nGctEOKfpC22h0DCFPGOcUCZPT0PubViEX01O6XyqRR4tbFvn7ONCdyczP8nnzoqrvnzzLNmUx3kP0PNFsKof4FFvGGqlYWNjR/bvu+xaITXs0W3mplMCaGSq9dDgslfw95VecO/809fRxfT0YkqMuRWRmxYdiWa1RIXZ4s43G5IMY9p07mxL6Mn4UtAY33ZVfdkuC2NpZQ2orngTjbcXfnaxl7EVNqU7WUX1OZLvoBYVfDWmbgulWK24yneHH1cVriJPvce4Kh95HZSwgX8Tx5T8neyLftHFIDycVUHfSFbhqFqHRluMTCF73Rk7urVIY0gLE+jEreOr5DkbiOfzMTy0c16rX25fTSgzM38k16QXl41tRaVVG+mqHQ9Kj2tRjO4N49KlY/vbrXN4V1f3WuAjOGZmozND0lk84L9yZ3zmzFEzTpQwu8YD2B2viUbXWWKDSOkmchQHFhbnzo2qkgRHQ8tEBty9dVYSnR8lzW0QZLBgZ46HuswCmA8R9ltgtcHh8HNJD3RKA4PMUdZbLlFOtrvUhnEyICPSHGYAsR3mR598eOA4RDUx91qTOIbeVNIBkpDJiqcJlB1dnsAJOg2hOSqwoxkt5cC8PixAfV9cX8Gqx8PJzjAM7N5oP9h+T2rYzFYabfWizslupwMJu8s4qIywhoDnZ+gK/DqkqPM94mMlfji1sFJxfTppGJD3YpwMzng2OOP54IyfB2f8cgzjvK6saydCejFOBmc8G5zxfHDGz4MzfunPCEXQt3+YDK4TahiP0Ak1jEfohBrGI3RCDeMROqGG8QidMBlcJ9QwHqETahiP0Ak1jEfohBrGI3RCDWMfnSDjVL6Y+cxIeMnoK67frkNzxEEetjrhb7XHe/VlzX35Z/NSCj73REj+FIdndDml9mfNO0Si1lGgL+nuK5gEjn+Du6vZ3iiMhyK1J7EeLjJ0IJ0MTApUp8xL0fUFY+1PIThD4lH4kcAc0ZZ7fsEUO87W7k3yOaX2XX9x6sksJg8y+L2461euSImrmyKhGTR4ZOeLfsTzjUylzdYYbqqzuZbvRY8OMSAUjkF3l2M7rL3GgfcSMN/nCg7P1gX0PUvjzEbVbDt124lo0ptoAFl6SwF7LF4S3QbMsrY0LjilL47hGt08fS+aQ3tDMPNvaYbHaMjVCm4278rUQudkb2+mtp+2Z3RgWoYf/YJS812Jv/v7mYQmH57QA7rd3d5cFu+VZMFuaksRSzpcr7Lp9ktr8l9M6+y/mNb5x6Y1f5j/18prJ60PLq+dtD64vHbS+uDyAhVlI6M799fdE5h8YAK31gsPt6BVaZt6RsUp69DTk3fr9ROx1h3yS5LHHaarfvARrtguLAODtUQzBeyZU8d6kM5KpOZkDlwuH5J18iGsZwOxPmOw7TcZpG2xuxs4cH33aI5Jd5J0A/u0wKZ8oZC56GjUdHaNAwVZp8aD2xqnlQ7dlXy5uknqlI8rfmfa4p+V00n/cZ2kaqGdDEA7r5a267C7hbLPjMiWvXFYo0Y/ZnPdiBUy+ToCJYpL0l6tk/j+06MLbE6e4m3OCmUMBlbBmIwYySAVIUXwCUXkNy1blzguKWaN4jE6VDljtma3rNJVX2ak5eHgFEcCGB0nG3TrWcrDQ+wrQdSQmIkm0+0tpXzFpGTTidwVMBCtiEwAsXob3RfLWCX4ypxyl0oZVL1mDXTKAh75Jk66e3WYbjBMgC8SL0vqzqOpBO7WH5vDDkAZ6haFYTV80TxG3EGhkULjQpwqMUeO68F4KirOKKgkwXBn/2FvzDVZc9pEc2C+SiA3Pgq6yskW3VGGFYeCeDJ2blwWhh1SQRGzpMmTZIdgizN+NtQNGoLctdpe2WPnJ+N/XIVx+o67L/O4wYoztyZe5jFhh4EpiyoZ6kje0SLH+OEmmkWxpN90tkyJ4zpgyWbHhcM19WsZkH6Ras0i8du55AloXNdaztzYgSmjVSMTb53tH+BUg7xhGZYONOBme6EMCujYxrX+rN3BeYD6xunkoQ3XlnTdTqBDlETN0hSK5ABzV3IzOXRyoYOyyjWjlS7C4Gzl2KFuctjgTfkpR62bf3bRrzgai5lv1GzlwbDVWPlKbkk35kykmnDxNfh7Eyk+b73cNsoi+HsbRY71qHcpDnlyBic7MhgeB3Q5TsmbJMsckqeTLbVSk+tI5EHclWjjK84IzRcv3ASRtGEiPyEv+h/61AUTSdPlpplatvIkMKP6LPiW06Ed6OhY1wfKmLYftpG+gY7Fc4RyhcXwxBznF3yQ2LXoERXmbJgl6LsIFIGoOEPugOC7tnWi/CywOxNXSxuzuPakZB7BoTLnqxhxGxNtsOAVRmUdSnF0fvb2MtDBzKimE2/MA2mNB7qTEI8873ZXiid0El/MsdYrniqHt38sni8oclZHCnqsvxCLcqZV5+t+fnro/r7m5ryWStYNhRnMYvM+Tnm60EOFmFThlPqfZeZcvRe6EzZntaWkS0wsOJ8spTa4HjHk+6Ibt48fQlPMCVXtlFkLkvG2iMbZYpnXMBwMWHzFas7yPYRn2FSxmTraXlU05nQ71NwNh5Uc4uTB2MANp7Sh5+EmdN03vFN026Vw7ud/xJ2r5Q8KdgOHyTIb+oN5bt1bHpGwXf/vNj8HUrMgLTPqDioiQ1eBf7KAoiFR2zLDcwecuIa+t7TluwWGYR+m9rzA4ghBJ5iZsdwJqknTOi4mHXJ0HtARirSFPaHPBXL1KyZjxYJaSwJh5izfLind6Vpr9KPN18QcHuVG8GizwuetHvkllLGJuoi6sGeG/eObVOI3NJkAhoY154U58DxDm/F6suBsH7TdDa8wy2tA3fQ6YlC9NOXTGgF0TuGI+bD1SyTEX3M0aAXOM1NHtJU7n0ZywCkYmwWjBz30PNV21NvJzuSeO0EfLBzLSaFI8HQybXkJbo+4tZ/tLMW0krl0QcGMLniY2CkXc+kC1c9lJPUyS1OcetH6+4SiDIMPmf4dGpT+0lgaIX3TQmvUXIL7tS5MjYlzg7gjwTfSQF3xN9z0aDhTy1PUXKarOmnpnCoJzWDUmgLFgLBZGF0hcDmELWGhtiVWVYyHIcbCnNNabPDKOwolTaRtHq1FxLnabcBlpslwVCMGezrNyo69hvxMhe7NKq2yCuzowiK1zpsqmSSnl5yFGAIM7kBRVJ1H68B2DYvgp5cBwwNf58z3A5yua4hje1NQxjHTqlC3Bed2VIAx6JNYZTRNUNy1A2UYw6GIJmxFftcFSGvDF8JELCgYOq0S75NO7UvgzpwS72R8qv8/ZWop8DTbmR5fknemaluT2kvj5fRFJLLje6ss2UCcubWuqSZOMX53Uj4XDH+0nxTziHBunKMpfIOWCGTtjU0KwgfbJPYIawXWuUKzqHiBn+9NQxjAUFssWiW8m2z0WSihRldm5Q/ElaZpXEz/6FMhmihnSOm+CF/mw3DTbBjZdrj6CLXi3E5041VrkdJWbsdN3SXA6E78nQk8jJVwWuBLIXHTLNl9S9Ec04PI8pHWKvfRbYEEcvuS8CixfoyRS1PbcJa+8F+wBL2m181vTnDqPM0v3FlG1+IX+QKnipndmk/ZksMe4W/ANBlflVJJs2W7StlP4oAHehqJJ3NiUn8MSXwN4xO/eAtQGNcsGjSN/bzqTf4DMn7D4rLAvbO91851AIa6CmB9wgvHx0e30ekd9TiPUo9cwMH+3uBFFLT571cSLcAO8roTkUFVIjoWj5N7XieKjDzA4dPtYd3b+jiPZCB+xaTSDirhaBFZnWFuWhNLdP3Sb/diemM6EMb2ms3QNzgeGsc+dOUKGM1ktsSZMgjAqTjuIn5idqksZYIGnp6A8MItr205EY/N+dkKcxzX0bLo3kLK9I8hiEr5BNFrh+KEfgwopR5JhgOTPkq5+gBK/QFjy4GFftODSX9ILqqJg5X/TGjj1R8yV3cYSdoPqRDXLMCAGUNSBtJGzhgsO/Y4jyg+xbxXE4/UhoiespQF77gOa0e7eWi0s/FkrD9WNG0CW882fBvwlNxvvFfyzRgorU/HptUVBG6zdODOGk83i2jQkJ/09x4uccbM/F6NH7EINuHhNEZktuOlMlO0SkxXYfnHZpoRBlaYybU5t2wpfL9lQyThV1L6NUm34kZThkF9C91FPjq0dLTEeyeea4Zle02yhLzFiaaEfORJyjLFIrtJa9XA0Uow6UZAnjseLcPmbjwh94VHlsZGJvFhyLlaFp2fuFnzDo/N8PQNxE4Sv5tiJNcw3WJ05d/Mzi2K0n03poX0KACac1zyGqKn2QyqF6wS7MV+zr3Ffc5W5pn9sNl7vLq9ZZrziinM8xgi12CwVt16W+ucAf8z04VDZ2xY+BrLXtdGBSPi9wrCaqp7RnE87+gFdANgfrM75R4c7dvjxeDKy9T7IFTkqpPoAXYQiJZlrB3kA4/TjEKfHyvEPMjQ8/9oogUz+xaPZ4rkdhWwV3hy27QQUIXFY31wI1PasqxWgZv0xJ31xJ13xv3QajQbpCI/82OJnMLpHwJG11x3p1i4shPunlAdMbY+mDQ74SadcT/xlUw/yfthJ12wCVtxPGJgw35XmVR1CLBmupkxBU53VCE5e4Jdu6a1N/jU1l1rz5B4AuZARroHljjTAMIHFadYVUBjqegcRrgofTqgIKykRANWm7VhSMLHsnbdtYLhX+yd4fYTuTUr3ZK8TFkk6wIn7BA84rk3y4CZBY38HByV/9CefZZqa1Lfl8YJ/XyCfkewgYfsgze+EV67KWnwCyZouIcpJvqubXp6Dx4JM7UHUTRkQsZPvlpZHKKVgpsUaIrDDQU11B6PcKoPHFdt7I03bXa7mAqW41X3yDo3lSmmJL/vwBFhASlaZ0jsXfm6MfThLpmtsXarWZdaWwJP3MEp9za1p9FUGY8NLHuHwdEZkWHpAMndYxfT4lC6Wk739fkD6OMCDguCJSBoA4IClZL1lcDRBKiPmgie8rc3xdFw+kwjeHIM+OwY8Pkx4M9dwLDLEephqUG/cXOaBJxi241gdIG+4kXW43VXMcosk0FYzgZhOR+E5fMgLF8GYfnan+USwwljIWfLACtK/kQvqslwVGfDUZ0PQTVlefBuPZhz8PpuYJkMwnI2CMv5kSxwXGOqMvSUXAmcQrK3XWhuFO41mYyfKrRZTYG1ki5oNfaSB2hC6bslXXbkMUtOTIXkCwSfOD/vaNHt0ykmoqEaniUbpOlZskEanyYLB3zLcLiXhOpJgh1RuSzNZBias2Fozoeh+TwMzZdhaL52pzEGUM0iQB1kRM61k/HD1QkeK5NuTjntucUb3rj/tprpZ8605QWTue7CtACZEpkVMuFND5kWP3MmIwfedJDpkq3XNBgIMnvlDFVLdMVZ0HaSDRPKa4knt0sAoRsm4wvsLhYye9Oj0RIfhHRISpdp4+kRO8y0lcR7L3nwnGCMOLdFAsNyFfA3490RiFWHF8OdweQFbLdrOSJxvmjOlJkv6jLjZBjmZqunZ7Og8kSzaixkPM4YUa53yfEfsR6TCvKKsRd7//4P";
Sidebar.prototype.searchIndexData="7Z1rU+M40Kh/zVbN+wEq98vHkHDbJUxeHGDrfFEpjkh0cKwc2R6G/fVHchKGKMwuRo7Usr21xQyBzUaPW62+qfuP9tkf3bM/Go0ofg2I+POP5kB+t8Rr8kdztPq54Hi9PMWcs5fodCD/QCP2Ev7RPFvGq0D8Sl389QfhMfVxcINnJJiwiMaUiV8ZzVgcs9W7XxgEdCF/ELO1eDWKOXsmj3QeL8VrjbdXhixgXLzyR6NZS/8RP5EfrTEUX182H7Jb23y73Hzb726+pfO3NWw+89t/F9DZBz/qjuRPsxK4IU+xdQK7JS/3gZghcEcXy5IjuF9bX7+lTXBGwjjdAyglYR2DIgZGMaQboeIgdgNMCL2mGQhDHAQsicXhmMwCAoRF245+2LH43wTPgZCwtDV2JMDsjo4iET1DHJbkB2chEAj9zh6EjiGzYUi5nwSYQ6GwvyU6fTMU/kxW6xO6FQVUt49hXxj6VjA0yoohtSJxOIejIVUQHYMgvCXma3Q+X5A5uiJQD09T+vKWxf5SkPDEOnDwtlns49iXkKYhHJU1tfG1dmIBBMW+MJgKQbzXFEBA2FES4JRD14py8AISzgkHHJUxJhBbEtMXhh7xawVDwhAfmqAppgEcdWHHB/NiTtdwINiJX3vil2gkKIA+Sk2JxJRTqIZVx1B4Zk9XoivG6T8sjHFgn4clkdjj8bBdlnUaavDOkGt6j6YJB2pfmQpgbhnI1DdMEJ2GURCA7Mzdyg07o1sQkPJ/dknAieAZ3hk+jXx2OktoMKfhIjo94zj0l+j70xP1yT6NNaNhTPj5DxLG0fa1OY6EDSa+kWt5okHwfo3NTk8s54PVP6X/fEjqi8jx9jufyI8oXmBJHNBQ/E/DkPjx9gOqsNv1fRO2fQA7xfMh6/QnZztuWszPw3lZgLf2gLcPjQAjwC9JSDj10e7dio69v2971Zu2uDOxqnAlSy7Kgr5eU9zkQ5vPCPrx6L7oqDv7/lbv0N8yQtpb4SAQ8h2JDxxFRYe+82F2Gr1lB/qUBMRnq1UiPjq6YklU+KO0Xts/S3uWFMsheTQZVvDNwL8PqViWWOtr4Yk3m/uK5rA08ojEhYCvpYBHabnHWhiP6yXhOIhOr8/GaIxp+MTxqvA6RynJ/CDk/x/PYLjj+EejJkiKr5NfLPN/LjSkaOC1Uke70A+mtb85PogagHowU/aSrq3Yz2Q/oNU9DGiBeSY3eL1ZaaEfiOIFd+pwH8gY+4I+i5aFfyb9/WeS2X0w+Eyoz9l6ycLCH/O9/0zVgXkoxXc1uj1nbK7JEA3m4igRjuAQ83nRn0xH8QFBbxN0x+SP/BI8F5d2DKfblRX6ifT382xNwKe852OxksI/EeWIz575NPhE1gQ/F/+JtPdd+D7kPZKE6JHx5yjGGyLFfjK99r6PAtiR9xLx3e7HhX8uyo45vPUH5rlM8SwgcdEfiHLMtwEbXlPCVzRUy2KL90g6yiMBfKrcF9+XVzYIZI/xgc4JE278Snxb9MfS2S/R+aAsG8xjeSQzdCaLPIt/vCsFwZBDw2UyhuFlGkNBJAh2z2XF5klAotN67fIcXQzZedGfiBqG/IL2eiP49kzGG4o5Po9mvdtC30YkehaL/R80DJIoDRS//XrRn1N3/5RpfmHnGHlOf8vndBEwxqun9FZTCu0pyf+LLKP2XmjsL9Hmf1D0Z9PraFsEJp7NBeXkRdYAe4T/oD7ZPh2xqV688f8U/SEpcczeFyLLJh7S/rMp/EOpO6HVvFdx2qxKdNqo4RmgttsD5XGCg91p8+t/ir49eEN5mbHwaq2ldFbLXH6c75OaizPGjxn/ZQmchwuxCPRtiP0lQaPtzwv/XNSivsw2wY6U3lPYvcvJMMBRhC7ojBM0XMpccvD2MIr+LNRTJnNCJq9nITjQWRKTeWnQK5FlW9vghon1zEvCXKkzameuJ86HuQw+LjhL1qURdjUGmTkhrwN+mcw2xtECx8LNe5WRxtoZjsgUXSWzoqNXjttWZu9OMPpl/1xuEebyGIby9TI8A+Wec3an4XjPYNdYYfumJXsS3cyn7vGeRLUPbNIfD7yy7IG2YgVlNvqP9xQ2nRhKsBMAn8rbG+o4KM1+0G1xdLxn8TC5LctTUPzhlrWzYSW+ntbbjeLfQe/rHsdj8eWrhDvdWk3m2ygpfMcdpd4je6hHh3O3XathHqFv3Xa9WfjgsnqTzKhID3yfRBGaSKqFB71/xSL7BTEt0MPC14hpZ0n0+HpF56vIb/bmRFp8R+PC89UNtWvx9Qao3S6+AddWenFkDqtrQY6ojyacyTOv+BkMJWjywZzXo8rzHarXSmMv9xTWmR1yLdbTQdH51mu61/70AI9Rs1d85azcUcp+YV8L8kPhLTi7FvLfk6LzVV1po3zPzrzCm8iqGt61HzREmBP8LIeFn7GfRSetNNs0q4rPOJ0vCl+v3tVNomghnnrCPi5BxF5t52tUkIcyNzvGIV6Ursy/aTSOPMTF57sfuWgajVwIvsKN5mmDPRou0OYSS9GRW02NDEeja3QhvhSdsl3felj8wHJ/35bLXr2kxVf+NQ3FFR2zcim0ZdSe22AeFj4Qp10Wrw/5PqTxKzr/ueYlGH2ktgqwwDttPFN0ztr9F7U4y1nSfowG/v9LKC++q6IOrTYap9vBHu4+cqFRd3Qv5euilteGpxyH0RPjq7R71a9bxNPzwld3KaPrDIu6dzIe3BU+raIWxpj1X7zxSeEJq+2/zAbxvHs08go/WbRe2+9FmP2ChRbk+7PCFyiqAxXNVtCNSFyKi9OKx5K9G7AWZBafzFnhS5mb+4yNxkVHk2nR8SpGW/aLPVp8vZtB4UOiSqcjs7W2I9lmaszmxc9wt22q4sfRGF3QoAROttKTKPswKB3OMkWF7mi4KDrlerNjUS1fcJY2QJuXp4BcGS5rVkmnXT6Enh6s1wHFoV94Za342Gavtu56qpRGtq1ejrjC4XxJgsIPSVTqyc2WzFxN0tnsRWes1NeZtfGuULPRLDzhusVj8HpYeF9QCWZkn2Gvx7fwwftuzSZf+UlDEiMv5kQOeio67Xptv07U7CWU6+8e8m7Oig5Z7bxjNFVyXfh7VIor0jV6y+d6Mi38jL6DklujZRmC8APa1WaU5HaE1eYO1xOBe7VKQrGaEmQA1UCd4SNwgkbeTdEZd21eJb6eFv4IVPWF0fjQn2ffR0UH3FAawRi1Mf4ihW9O2doX4LrRSyeCb+ErxpXrw9knw+sAvhncopgh8UfRMasFzEYNtxu6WMYvRH5Fg8KfeXa9khsWLjjBcvTXpPCliOpMNqPKYzwofDFtbz913TAqyeNh4fm2bd7gGZ/X68W/zqrdXVwLMZnTMoQqFCOuZ9QLGRMimzmsA1z86paWzXjFmETLyn47OmSxelQvQQ9b7ZlAWphpSNHD4O+iQ27rjpvRgsxmNCAlylkrCT+jBcxjr/DunnKhxGyR1vi+8MpCyYaYjdaP/y68/Kpd240G4W4Hw/JUgfcUx9qoCXdbDSk5Ll9hIuOwDNUWysUzs/qCxBELS9CQUrkOZdRCFpBfGH/elg+tSPHHRylnoFkb7pb8TKJSdPGzrKAl5oacW3KBZ/JC1PnPmITz4mtsu01AN9zbJRBvCJy7JeCsXNrpGE2wfvdjEhSdsJI6MesTfr/16mUYl6Z2wDaan/q+TteBBivhfD/R4h+Cyn1Vs27LjnbaLHHNeOENaqVRlNl7aZPBCNWLTliZSmc2rC8JNwpPeD/QYbZIYyI8b3Tty9UVm7JSy2zWmJucFT59ojTDMJvQngyRx57iF8wLH9xXSrrMTgkVnB/onLCiQ1ZLa43mAiejwk+A2Pkgu4slNaNW8mRc/MvBjX3Chg1jzmLms60fEpShCFQxL8yOqJv8fVF0vmr3cKNBjDsck1VS+HmhVodZ3pE1wSXo86kIstnpt3L0H0HeC439ZXn69Km6w6xcTzzxb9ERW22N4RH+gwpRLjpk5cKU2eqBLeS05wtnZctMmQ3KeSRGU7Yuw4zyet3meeh5hfcElXiR2aF0nneDpoSvaFgGH1Dtvmw0xOxNC9+xT6lrNtsK2Ct+vyI1hG9WfktyT0oZ5Gy2NtF7KH4eymYQY0oC4ssufeIDlyKrumu5ZSVRImnLAc6kBHd66k1FORutw5iKpRdelq1eUJtOUAlavih5P7ORuE1RHJYrLzblTt+iiTHlif9cdMIH2tjsuZdwTgpf2lnv7NfFmb3GOn0oOt9206II35/d9euFr7y3e1HnfnyJPMJp8RMjljlX6b2j8n3ASVD4085qWOihdONIzHoeD5NbmTeVn5hXiZBjw/YKr46tCvPjoGrwclS+117hx/X19gH3jQkwm5NVhHA4R+slC0l0OsSzgKSD3FdFh66UtDSzlyin9P5o1AQ/8XWSEsznKZAgQOn7Ff0hNLUnNB/tIVzg4lcbNTq6lsnR8F8xFq/LsAXUCujsyv9oz+B6Ug4tpBg4X4iXHO0RbNvmDnxZm45K+kB6oB5IGWyj/T4SjeylZUfjn77VyVMJDudaB+zBUAolBPhgvrsoh4+mzBz6QjX80R6BbLBQDvtUewJGTs9gTdg6IKeDcM7ZgoQsidCE8KgEVYX7BSzZL/tOUnJfRz7GPnpkK1x80vt2T72W2fDRRx2WA7Vq3tTbmQNwuqwnQ9lrufig9+2YeitzlEcX9F0ShjRclIF2bz9x3c9cRqTL2qOxnIBWDiWiXAHuZ44TaNOOhVFTEtFu7Bvj2ceL5wa7FLJtDzeXbTF4dCrMn9K1A85e93m3oaXBeTAdo827VLCNwJ7ixa7rSzm4a7eL0ud+xhme+ziKS4JcbTOeObOtj1z2JhGfGe16lZQSvA0dc0kXeEbjnY7ZqZxS8rch+NeDUTlh2xD26wlKbx4vWfhaTurZm2fnQN0bXpeEtnqdJXszUX3c+2UY5eDeV6azWVDkt8PzksAGoMhvSfwUsJeyAFcG02QOHeoD342n2TVsLAt5ZcpV5usE+uRLAtq+Ttm8A7oO0VlCAxm8LTp0pcHgW2sEC9QfabxEHg2oz8KtL1p0+kpHlex9SvXhV9EW08DXuDS468qFmezzx3LgHTMux2SVg7hSfJX9rr8+8Omoyg8Zg/3AKuVtEPcj/kECEi7isqTiAPidj5QL5qWJY6kJicw1nV8nHhE/4TR+PR3KXhcUXQjyLzgo/LiAltK+JXO+2duC02Iuv0Vv71Rw5KqUZ9YreSAvi3w3lJaSmVVKHrAvcUyeCVkXX4MrI4GzX1PPBXeC+bzwpBWLMHNsNg/S19+98pyUSm+dzLer8gB+w4rfo1bp75m9nXUeoG9J/ML4c2mMkpaiuDOHY/OAPrn+uzTqRPUurUj5Nv1QGuZKNZBZZ4f/SEs9U1/nPqRPlMzRZDsFIs0sF988VGacfMUaTynq8JdTTkKxILnOqJzcs98M1+c+EjrGjxl/LQlyJb/5FU9IF/kFDUhUCtg5RLHygF0S0VZof8VW1KV9xaLCd9ZWr4N/xUTU5Xw9mT6URKpzMMh1aY+pz9kLmZVDaUMA/v2qJNIN4ITcvMOm1q0c+Uxl2FL2+tkcoMtGlJz9LIvZrcSxvpJc00bOnuIXzAk6w5Fw8cvBXenHlD11nwN32XQC8zkqg3EIQZ9vqwvLIeBKCKWXuQJLH/h9SOOy6PG2km2zED7Z1BfKeGE57HEAQcLHx8eSyHdnvx+W0Uj4Rm9vMxFp3Oo8XNDi90fVno6zPfF0mAcsKXxpSr2nNIysZVcl2qRHNHomcVx4oW7rTpDUR30xRLs3KThsJWTVym4E6sOmM+FaDpdYfM4ASSlHXjKLXqO4+E3G9Z2eHPCL43KIZ+KzFt7HVFSLDdx3JEgT9ViIOo7xDEeF1zGKZZj9qo8+9an4IRpwjotf9mZfozySGRoGSVSCeLhdwzC9Vk82fSUvZHvDXfO383gpPKlS3Lrv6Hb08LYUdR9AOZoc6IdUcsA9DHAUoRZqlwS6cg88e6vxXKArHT23DSbr9eL3ae5D0DFv/Msh8rpztfNAvu+ZXuAZp35J+B80PrQi85ckJClz9hSXw5xRskTZ+03mgf1afOIgoJvvkRfj4l/RUrMX2bNzeXD3Rrcl0S9t5bKnFd43+JVw1EB3ZMViUhLyqmb/Qnw9N/TNkjAH4aSOL/9GvVqthsZJENNoz4wv+gPQbgyfywOQ3E92ZuSmdrQc+JVZWXasmhR/kOqdUil81ZWyJ/tbg3JEpOYpOnb1nLWj9Cdnf5dEzFWLMnuWKQ/cnInXVys8C8qiXkBEhMt8mloiTle/ztOScFc0jJWD9FcoDE0uH9H4clh47B0A5+gD5XGCA3RTInkHEYPf1KxXCVYL0MsBHEY87JHx5wVnybqifnzqL9smxKcDmVINcdFhK50V39owfB72rm2zDuxLId7hHE0JX9EQF741lzLCrL77sVnod3hOGZqyl+LX4jW7ipRnbr+QB3APp7nT4l/TUMeBtDIHdXPFLS8OFP7UVHRK9qKMPJA/0pMLKocKF5229rC4fGhv36PgsBXtnf36aJ6w0Rmn8xJc/tpvLZK9L3GuzG/YpoUlGqzXAcVh8VNEfd2O57nyn3IcRmvGC38LTG3TZQf7zeAWyZpezoKg+Mb5gb+fOa71Jegc+8+neO2fDiZD5K0wj9H9xEP1Wq120pS1MA8D1Ljfhx8oPDhdLON3Cw/Ik/w2WmOfhoub9LtRva0+IvFR5uzl4+f19lQOMHX2MTUPwyJySR9Skj8Qy8yDT3uLpg0YzQfGrwk03XZKpg6YTP3QE8ufzEadDeVXVO/X2rKgieIAydph8Wvxtk/Yb2dLuwxsuNNUOsgadSdZZdVIubBq1VPxEngqZJ9C1ujX3BQvC1ux0a+7yeqDiNvxWTmqtqywalesPsmq2W+0K1afZdWqWH2SVbdTa4Ln0jFvHwguLfBcPrgmYIBLBzyXj/L3BsD0wYNp1g8j2McHU4evYRofpFOODabXbNU2ofxNWP/ku3DgQnlgbScRilX/LtQPiZ2FU2vgDVC73Wuf/I0Gc7yO6Q/yNrbRBWQWHN6BdyejunXwW9GCg7tl0wDPxp7cNMRWq+j8jg58U9GCCb1lA99c7B32VjDDxgHDqN4/vCZoAk5fHFVwqVjSNAJKBy6UesvOPurX6jW4VBotS7LSl78OlUqnfVjsfWwqAsD8rStfs9aEJDRK2ap5OEPMhffJ0UT8gMS/Sp1QQ+1eCEmMLOjh34JqA+Zkwaf6LacOZIGyYAoOcYyD1yhGLXG8f3yJExIhK1vujVCjJ8zm/S7OIfm45SckaFb23xu0VgXtS9AqQL8H1GnXmifn8BC1lPmrFrWVQNRyAJGFJOJ7RB0HENU/aIdnklEfPKFGw3yY6B2hutBFgOH0zScX3+AoXm+jhp4YR1cTQLjUe+Dmc9S/o9VspLRGJAjg8vpgJJktXq0afF5Wgisf4qrXHMAFSLzqlfLKQqtZSdeHvK7nJIx3Y7XTutCPZuGW3NG7nnio1RYKyiNhJD8wVDYW4lHb8iw08H15LXh7RxUuIgvic0t+JpHMcNfQrjHg225zoD7LGrGG8B2mu0E65z9jEs5BVwdY49RotKYTdHlesfoEq2ZjMhGbsaL1SVrTcUXrs7Ravcn/VrQ+T6vSWp9j1azVO/DCnnDoVPmpf6PTaVV0fkunXcnO7+m0BZ1Jhef3ePqdKVwuVqIBOy738OXGGp+OvHoEnY61XdWRV0ig07FQS7Gh05XNtuq1Ey9gu6olOXM4imgEl5aNq7bvcfUcw9W1iqvlFi0bF9zf0eq7RatRM1++8/3WQ/V2s9beHyY6TKKYrQjf5Q4mAY6fGF/BhWfhTNyyExp/eIO877fn032IFbR/hTYeIG90BR1Zb39olYXC+w2xVru1kbGTQ2ic/aCRQCMbMcAjeCh05svMNgw7H89MhomtoTTabdTNFwRNlq+RbBz8q2lF6x55MeNY7akOScAsOACHoD5Ua4XqNmsQW5E6OxvE1gKMzcImvR96qC2LGcF7AhasDAmn02j17ie7pJ/sTMj9XTN4qKgsaK0NqjSO6hQqC5pKoho2GmjcRJvJznDpWBIkQadW4fkXPC0X6FjbWi0nhMcank6F51/wtNxQPdbwSOlpgMdjwZJ+HJyftOsNuEwsnFaSSadicsik24LLxIJqkUy6zVbVNe4QSreCsg/l4Rw1+oC3jxWVIqC0KyiHUDoVlEMo3XalaT+iUqnaQyq9SlYUKmT2Qbt65NW7NbicbGia33BqQuYESJ46FafT5fr0aoKEA9m+/NX67n2nBECENHtJXE2+iifl4b1GMVkhPx37ex76AYsSDrgcIWsyLyc8XUfw1FtWxCfqtN3gkzW893U81+ETDekZDufoYnQHXe00zMnNhLMbcVQJfXzTadT8bUR4I05g+RhUy+/5dCo+/8qn14bKp9m1zmd0U+/U0GUPDhRd7yIXKM1GjVRUDqh0KiofUllXVA6o9IDLSlYvMy8qsGXFEpV2ReWAShv4wWwBinfTaNYiUFR61nWtgNKGDcWcpOxaCg43lcHoIiA/T+o18e8IDh0bbhGdrU6vz8aoXq/Vag8DdD/xAAHRnF4uFqZBpF2rnTQa8Klk3UV6VLrtFrph/mYvRSwgaIxDvIBclpdV9+oBuhfKBcdogkPyi9FfNK74pHyaDuiZrPPJtYB0HACSNfKtBWT+U3jOcFkYVbdCKuTBDBhH1pyaLo62TKZdPcAFYlR5CCDddiUeWxo/m8LjQeMCFd9p4mg3KxzvcVTS8R5HR0pHEy4OoyftFgdg6TCNA/hmMY2jD/iUNcyiC3lytXEW7UqJ/sLRE1rj7zZcHEY92Z/NfoXj+ZSJrwE5vSUxx9tC2r+bJ40zePd5NQPw39OFagIaTprysvxgOhzsqo6hYVKs1nrG1qK5YepWmP4T07Rfg01J9YGyTk7OD1OtgvMhnG2RpNTZcNFktXPyIbPG3EfT1kkdvOhY5rM77NGYzZMAUK0tiDP/jVPxepzkwufvljzroaOxssX+7vxCU22ufUKbbXUuWwKuOY0IGrdcOOWz5kxyp9R2gVK9ZQNTddb/G5nqlP8PQvDP96zp67zItMCTyVp9qEsmCbcue8eZ+8OGNbJCaHdXfzdt/fznmsuRKRtlhBqtNarX0OXsHBBCy3ppn+C2Spr+Q+aolZL6DcsK4AHAKqL973hSN+Wth2clR4egRjjGQyLN8O39/5m8/78dmdXsAGKlWbaSA6udWqrXpJLaMuo21hWkDyD97+jufUeJSxyTF/wKr6uEfWK7SHfjBHDhi2kLfY8LoMtkAOxzJzIjFveR4HIDF4zpMIkEs5nYhRrycpmwhgac49eK0DtC/+fCe6PUrTcKVGiWN5wmZDiG00QCzgXlBE3roC/LmFfFKZW/G3VYVBogqLSAUYEhKy3Q94ks6ZW/W52SU1nT+Sle0BiL4yc6HWz/Jv5jcSBRztWg15pRGck4/0HCONq+tiPjp0EO8YKwEWM5PfFGQTljccxW735hsP0vY7ZW+aloejUlkHOIZr35+wEZ8fpuXVEObNC3QegvGf+fiswBmSFnUXRyRvCqonNIZ0QjHyqX5uGxZIyLbKxATjYB5QmezwMClVLLovRcpt0nINOxubeuSCA/PVQ0HziVxtBcr9YkCAjYA8smmwlnsOD0FR+q2bAHZ5rwGQ3BqhtjR9Z6jTmOkwiRgKzkqk/HOFwyNc9pDYz0d/fI1LLtqN36/mjUzrcrzAOSx/xnEktXYtueTawU3bJ//gEDrrnPLePpfixsyXrNeIzOpEdHYiCo6qqIQUJ1QxZAMDXaIHfiltMdDaGAUnVWI5syPzIo75lyODvPvnaXC+T0KVmQ6HT49nep2kfEx2ltyzfP5+QlDRyxgM6RtxR2FRTToX6gvjIx/LXkvNAJh4UulshbEzIHA0kVtGxK/hiQJoQ/MSG9BJo8AUSViM8Lxo0BuOHe9BNYoQLIjKSHh3AGIcUuAe4+YTCsVtX2+zdCAK0Ci3LEVmnhPeMROkE0YqdnAXshaeLtAodQAWUUo1+LFMbntfc9B0y/3lOiesB+kqzQJFmtK2T/jQx9e5NZOKFy4MRGVPwexwswGU3gvM7/L/FjONlx4LQmNIpZWMH6FCwZvqpQfQ4Vk0ktcT7CSd+AJxZj/lrB+hSs1JeuWH2KlcyisorVjhVP41QRWnAazoVCPx1uXgEK6IMSzH/js12dgHO5XV9+hIT1zuCqc1CgrjCoaAxkVNerNfbjCtUnUP2JwZ55oDhtjM8K1X+gSt9qiHZvi8bYF69BqY2BiG1MgyDN4CSBWBH9p7IaMsGqzsWvUauOyM9Qq/T+Zzk90BnHcoUVqh2qOafiHU5H8g+gUDJe/kiXkj0x+B6EvBmT0Hnat+sMcJ2QBTDb+KZwiH+QV8YFngCsgjbM51Xakt/FquUxtv12uMSr2Sa7LDPwT/L1aqNJXlcEx+k432QFF0i2IJ0ekE0cXAhIskIbdSyEZpqsZoEUpEpBbzF5a45fKxw7HGmQ+5e8yGqxX9+N2Q8pOzvNU3ZkT4TMJbOL9M9d5glN8QzO1c56raWjgjZL+zoaeS2PcbkOHKDNm4EBo6WbjwAGfRsTsV5AufGmwqhtH9F2jz1g4dVDwWRZlDYnGKj7eCoRQ4JD41jsnuj0TJg48/TsAsKjpXU8XWzXpQGEE/wcLzlLFksgSJo9rT2jjWQY4NVa+OMXAQ4XRHgOyTqAc6uuradR9OkwASeM0hZCMIgoW6hnHEglH+9wiF2zIrI7JongiAgsKOjbiMTCdpELOxG2DHsqir2SO6jzn+tALK3i9B+cZKu7kzsS0SjGIdwwKSxMaRij2om/RSesn/m7xh5AyDS0HIjcuIyS1epV0PkBJm7Ra9sFkwhBCaCwsOxWXbEIjMetsMjWi0sfxXW4uS4EBIdCw7RgXMul+UupQ2QweBNG//YrLAHl/LEdl/iY03fhem7+eh0ioXB8SCUWtpG9wal4bHhw+kR9giay92jFJGVyR+aJD8Zi6do15e6SdZxwAmnP2A5UeCR4OhGKRBavhQt0RwKCI7JJqgBBdJi3bBlmRAMSwtlEdVWnGJcZ8VWc0BvHCAgUu66QF3NMQzASYjlAvqMB63KbZSgPYm1ASNj2lR8oeZGHzWWAowgIE800db5M0LcbOaEEUPmHrejkUpZykp8bv5DL3Fs4J2EERtP2dJSKrFOVHTzflqeNZ8QS6TtP6JqgtAr27b2B8Orr7LL8eZ0HxI859VNYYCBpGnj5Y7qgP2VjRXmsC7WEpsmMRDDlS9VT2Y62/MldYcrXNATHqf+f8xHNYoK0/YDp9P19Jm1qGmy2IFTjAII0vSd2QcNQ6K+K2ReZ/bFpYAkVnfXj8YBdwDbRNPEDsDf8oAlcGrSvYH0OlremvDDdPg3g2rNcoWKzLWTpDkQ4nKMLLquonDDwMw6oy5/aHZkJgwwMH9Wwb9qlk/YGT2VKbj1FpFAdCLTOvkxla5VgGlqjgpYdWrOC9iG0TSZvImPOINV9H9YRubG7YKJST8Z+pulb+bOaLml4ckGDFTr/gdeMA7pApDfkNn9U9ycf6CwgrIBFCu+RJ39r7lIQ2jSzFf0pUV2HJzc0JGh7T3osX4VCqK/lMaZL0ebixVh8blhc9DxpPS5/hQQDasrQtYhC/NcyfjfBMZQ70o2ODRzrZLWOTof4B41fQU3kaTT3NWwmW0cu5MssyNuwnRQIGB9W2S6drjUiYBzUxh6Rrj0iULxPazIi23iA0h9aZQI6JC5xhLZj4WCg6DYsyYQk8W7yGwwaB2WAxg6WS4I5pC3S7u5HE+qmQFwxTv9hYbxVnkBw1NvKFPi6MSBFuk+pw2FCuLzGH4gPDASFGs3tm0KRzmqCtD1Uy6JjngQYu1N1TsztEC+ZrYSbR9MaYDjCUa/tA+lmur+lB0TIBWAS9Z6xjSK7ucKZRNLfb/mWLQ+mgwHedOF+f19bGDtEHrafFRKMutLspd4ytUHQCZrT8L3vDgWJXkx4i6Q2ur7VAvM2M7nC8h7Lue+nEuOjR8YrNvts0ts1bIUXIYFjtAOBI/39ish7Ilevc46ToBKUfSw39P8ldI7+JFCuDwPhckd8uubMT0vtKzR7aDYZ/80g+grNezRpvKBCskMiB1sLzbIJoHzbqBqo9fFfxPOVidbv8WzQvPMLKj4f8HlzDyo6H9CRxl4F5gMwlcb5LZrNmn6k3crWAfbJihSm0XPOpDhbyCyyhLWpVaowfYBpz2DeGocVqA9ApTZiReY0Imuclu1Hp5d8UwPo7V76Q46dJHEcvB9FCYOYXnX/2wqzx5Hf8dqMl36Hq0KzQ7MvQvQJbOMPu3SEy/HqB4D65wGjowSXK0r/RinaXHWYcGkC0Fj+rAKWEZhUV48EjAUOjNuE8BUOxYLRON2RFaYPMckuoAmnSJiYyUyYTBWmDzGJfVYh+ggRC+icPtG0D1jAIgImdAKNjpyNULF5xyadDLvbU6UHI16TjusK+0sakuj0/GfMk3SqMLC4SF2nYYS3WaZw/8fbheZJClaYBByoCQkC4Zn8I18ENHBCjScBACVjt+A2HlRMd0yIFRijCB6m7Xui7Tuib7/uE1XQPg1tVxtcIdsi+yE2Hwmi0zMMpdZImRyUrd3Pw2Y5OhjQt2vvOxT5sAyDcxLI+NCIJ1BqgJXb7xnTRvkiASUqeo00tMEk4fN2Mk569+IsXQkUNprJRl04AorwKWKCpjh8hoJEkZeuUdUylIZLOllKbKWUivhzKCxlwqEWdnZNi8xvAaFvZ4yBiUSrnLLNFTg2p0oLfRLVDVmA7SBdr9lRTuhbGnpNBwVsKvrSv17iCFC3bcVEzDZ6SBfVdjBTdcAdgJHmIeMI2mAvrbaXulAuGPfJ/GTE8VMsyLC0yGoKqGmQcme5n+nOsjadhIfYh3KTXclhWEHRgMnC8LmdttYSnz6AIhrN/ZZBZoMSksYVC+A09OzaDNFc4eBpMxZx29pz84ZA0BzYcd1MYxt04VyHckY86PNmv12IWRfzT+w/C5tt7ojoZGquo8vmr5D5zycsiSGFPtt1i5oGUjtppZlKr2cYhNwtdwQDal6n5gkydZfRJSJrktBZEjwjTxDBCyh2it7sa10qaV474fQfoWFBq9aGWXN2wtkaDRbb4mMYSKwqFFiapGXTnH27eQUpjmQ1vr2pbxxxCubwtcxjc8Igb70kHMpBYzc+sAvlgz5kzLo2gNSHVX0qOcDOFmbrv50Pj7dsxRmOwFxDVDtEWgJTFW/8O5o7xp6ggulb5pJOqYQmO/sxk7pZH3DHSHxyOFeaDo5mC0fSFok0WyCfTj0LaEZUfkDYisYuFik1jhxVDQukLnAQEWBgFCu4Xm9Y4BKwTYsgyFvLvJ+kgAGvks0CApQsrLf2lXCmiVa5gECPNF6iCfafAbWmtUplM3wCWji72dlnYjTrLltBoG9nBFJTPyXfYR5Hau9WPFIe8k9pzz09CRdAwBlRvCJitWBKatVkqlGV8otPau9uzDh5KHsJf8I+QdfhnMpeh3DuFCvGXc8mr/NwU6N9xtPqFjAy1bHpQf2G0aYnVOpGyeHs4kyHQsvqtcff0NoiOtnVkW3Kp8AQa8AjBulKieqANow6oL8BdAdpywEUIO+ZcjgqHKQITZeyQV0grIIoCUBZBTAEiq3AZPj6+2Xz2UYw5wXkIgmCk2kyIwfn2ZBROG0xGjajYjtWEwrmeAchOx5ZUQdkp25adiLx2aJTHFKhiKPTMznwvP7fMJ5oEAxZIING4n/UrKX/iNejmLNnsvtJyNLZpl8EdQD8QK6UeaWHR1q6uA9ppT8ZbFaty6vhCC81n/zBQOijAxsR4o6A9RQr4LCy1gwvVwRsF2z6fezp+LzYAn0PhfcmtKyj1A5rp45PLfE/UXIIgtZbO4XdCXmYHzg6rgvhxqArHPvCf3l1hJsiZR8Uhxwd218kDD9T4wuRV//wBt/ReY0Ziz5RJQ4Dl2KLWRCvW4aE9o/cBGbDtvDIZ+apg6B1UMRlwdb3AhY7Y1Ps9wLpWbApvBA/O6q9rGzGGM8+0ySj4rXhNSXz+Ss6+9TAdhDMOv/ZnudozJ4Ym8vun46Q0pauC7Her2Ia4jB6uwsQEFfMiW7LJjP29EQc1V2dzEejDqkRp6GsP0SPOHYpEGZTuhRmDUeYdTsWmV3gKEbpG7gBS9mUH1RhHROW+IKm3J0YmELrg2thR6T1V0ifnNH1+0GculFdf0eiGCcch7Ezel5tjmdUZ73j5YqOV8pE6rXMUcIvAlsSHMRLH3NyOgjEZwtxOpV+TObUp6Ez21NxiTIHDa/eMGgyDIXsLUlEsSvklPPSHrkoolEqezeyGXco7TTvVfztE33nQJDs6ZppeZE845iGjkADI35DzOdUrHnhTBpOiW1kNnRzJEeQF+OnJzTgxBm91wWyW4c4XiKxOle47YvdR11ITIGTv+BK2qmrWwCUF7URwU+uMOuDYcZXOHbqcFDQZa7Pyw0dFSuLnQl+q/EQa+bI+aujrpdVZOjRoWK9pmYWLy9uF3hFg1c04dgX63BG7HRTe7nhozyK0YA6GiC3B+6ShEQswNGjwd5+3bwPOp8nm/vvjvKzJnfifbg7gfR6TTknMgeG8+XWcISbKm6Zi7tzw8aiNY1x4IzEwdmoO3KuyFxPN+mVF7nr1SoJ6T/p8eDM+QrF278On4iwhFkSoRGNCHa1ct4mwbUQPfExXQEHJXNzLT5gGMkcmAyqu0IPjtil+evAteR1tw4E4F90HhJXQpxgqN0koTt3hRRo1pzYMV6tmPiZK8l9MEou1W1ppxvxQddyfgN3BaFyk8haoHiH8IbOOHbn2i00CbwjPuNzZzQfHHxhvGk1GDhzCVC7aj83eHfXjiADE3+6JQl3KXUNRtZuk5hTlwLsutcC8wL3PfRdEjgwJ8P3JEYTpwIn7Q4QkZssMV9h3xWRazeBiNxk+RqlxpxsoInXrvBTXQlrcndHFlSs3Kk8LJRgpydeQDc4XCSfmpUNAp7a+K5nLRvrMZ+KfesR/oP67tTXQUnyeAlfuNNy66BpjTVu09HIEWZg/Igpc6fbz8EI58z3XPOidh+IYzViSehMXZ2yRa3ZJI9LQgJ/iSlHA18cDRGdBcSZ6pPdhX2gGBuOYrSm/T7G2HQEo9p6w6w0hjhOZGE75s4cINrBlNt0zV+H9Weypu7kxHq6lwB0cY3xWmzHG3cuhfVsC9gYc2e8LeusCPcTZ7ysXdt/e5uRORNF0j4YdVndknWcOFPipW2O6eKaBEnMHIHV0Y2O68Ly5B+u7ER1pKLxneiF7OUpcKdFr/W96CWhM+64dlI5D1iuON0gYLniWls3TiWsVgXrc7CmURLiFXUFl5IfNo7rnuMwccVN7LQsq60H4hAs3Tt+X4a1JmwdkNMzPHt1xnxQ3MR6rZEV1yRdtSYuVwyIrm7yQ5fWcInDRdp5MXaqpkU316vNjYViwYnvEDM1kGpc1i7ICjszp0S7B7surbE7rNSWFW/fm6Tljovd1I1H5AHLlROyqRt31oaVrFauJDTUJuzGYU3InIgVU+zMoagbTNUl5i3Zi0PjXNR6WPPKawvMFf2lBnKM+0OeWG0QOFMgoVa+Zr81rAvsPqQR+ekILjUCbdzwesRiKcJ/vGNs5YwWU9zuL/S0zhWbK7qsp1vMr08tkOO8HMHVtm2NPbKVQ25RS7vRfD68XNmNLWviFeEnEr+enlG2xP9g7krBfr2m+JKZJ2h46cK/TmyIE4cChtrZbW1cS7JKL6s+Erx2FlvmU1IX2wUOgo1t4T+7kmXTbracBzSWxMhbksCdcnLrW/SC4wV1JlDd1a2+18V1hcN5QNAjjZdOdXzU7SKnzY0uluiBBTFeuHOzrWX7INij5oxZqxuRzZWaM8V1ugVQutT+ImSNRs5c/dC+h6XL69aV4nzrJsYtC0+uWUj/SW1aPKdOFaoo4y4zx2f16aHzMHZmXwKQNuStmENRRuvu5q+cLxpyFkUOodMtstZF55o2eyvn/PJsGl1iXkDX6MqlqGNXO6ytzSxmnKA7YdbG6H7tjPvUte0IKNxccaAsajWfktAnp2JFjGNBzxmrQxvZZuUazMZ4ERJX2oB2dS+Q5MCL+sLY8NnalRia9qUbfWa3iR8Q7E6xmX5QIzdkrip/C1L2SMP5SrBwhJg6qN0ksTXjcXQ6WK2XNCbYobSTbumBl65cAxn3l+5081RFLLse08R1hiMyw85syba2EtPlRUPmJ0GJGj9pE2PCI3/BwbMrwHSvd+UALEY3OAl9Rzv9tTNXsusiG+LV2qGrEor12jWuxba8HDVd21Z4PVF3ijJsWxWS14K71LFZ8SezR6+1iYXMnfoVNXeZvVw2F1yu6C/1FnTLvAJLuy7f0CdX4ojaLfu1iQV0NXMoYamdHdflJRO8aCh0fsxfkfdMZU2Go/rsC8nLY9BzRb2psmfe/H/1A4e2qnJ4Ghe2EeUxOqPOdOlU5csCsB8OiZd2NkmXFnsJl4KEc4eAImbGjVoVnKP637xCO/9JuE+jSp99ktcF5eSFMVec84POItnrpLSBRUuXVNnBkLjsxcU5EXNGhym1eHXj2n9HbELdSfbadtIlMzQMCA4dss/2Ja1jfGtessCVCT/q+Afjtqxk5Y5oabcV0ccVzlmAHcGlPTpaF9cVFvr+MqBzd0RMYdbpGGdGn505H7Wn1+QAyyHRUoKwxg/GK8ZlMZT/jKYcU1dKoqxH/q99grbGa4Xs88i8Zxw7hGzftPjKXSVdZsK0YBx5L3S1coibbRvjTxLLeKKjuIybF3/hV+xMpaJtNXZDnwj6UxyYzlxPOgiMGWc2ZjHjM1ni6UowUREz88Urv5A13ETWNK7GJtQPqe9ayzLbVRhbalMs59I7uj07xp3MPWqO7lDzFYx3OFwQvhuu5I602S4tVrg5I2+6s+K0uTH/GTlW1Kg9aSkfaHJIgkvjvOzv0XSsxCzALgW2bZdN3bEXaeO6gks5P+vGcSWhQ0lftWON+S354Agp1Zw1XkzsYRqgM4d2onaXAm1gIY0xf0UjKl6JcODaxFDbroAnPppwoB4oeUkhOcJNe0CaPrdkhpFbxdmKrBnPcXqERPjFTVpt4wEhjwRP6DJJCzSqpHAmck5HHo0nN2UymMxkpwx3dFnHtnfuPVP0Z7JaO8JrV9Bij1dA5g7Jl3pPzngSRfAia6n5HVNmfdvKbIWDjQvlVhsb+7cmvDANAvG5s8Jm3tAQyFZs5s6kIdUFML89BTGh0hhx5yhQu0GYl7KEO3QPQG1hZh7XtkjPnbTmvq2xa8togVjDFWJKVVDmYdw5EHNnQ+p3+tekNSVhSJ3pWWnbqKhCPRlgybi1I6x2sX1rLvijUylx7flB2rTEB4vSZhgVsk8iW+KApKkkh6DZbuos+9JHbln41uWMsTm6xPGScIeoWSuMiom/PB04VPOvuyWnYsEanBz1gvqZvSAdTkO8Ihy7KlPZ20TlwMpRucoej9BiRYIATZabFbpAq6Vr1mvRYqsVdrXRtVnFLlCtE4cSabqjM7RYceZMYtumTJ3/X+K7UjGnRpkzVxpqgZK2ujuDBNX4stHNlzZIdGjeg26bLB1WY2dDpV2j1vqEvbhz8tUtnnxy9DVzBZRSoZq5RkkLlOe5gslmOGFKArKW3owznnJrP071hXRhPrxc8ZabupWo+eBqOoJLmdH81l7ZNK+WK7zqILRX2xFcVnfjvXfmCKaWbjm4DqYHOicMbYKijvBSbIiW0TPxEW+ac4+xL/50xS/s6jad+CoyjsM0T5heAz1tocclEWrMGe9HCdNkPx731q8PcED5DLuSZFWH3fWz+0T541sH2CH7X20flj1OcSyCrngE9dq+C9XOHmo9FkJXvIS+dlLtWARd8Rv0o2jHIuiKK6HdNetoBDuuENzfxV/x9Y+FsOsIQvVaYCt74UreCFezRCD0XfFDtFtU5g4w9JeMu2MP6tYtHomfK9ag9pyqI/FzxhTUrTY+Ej9nDEHtQqKc+Z1R/9V3KCADzQzc8nPnANFtqncsgM6cINp5/iMBdPQIaWfPoR0JoDNniAIQjA50JpawfwhnbyaXO8AkcvUAAXACC3iOHh4N+4eHgOfowdHM3JPpGPBcOTR6+xHorxSS5UxviB0KuyidmqwrPQnPFaWnRk3tb1xJz1WtB0L0XNF62o0jjwHvhvnOzBVU6l+slx/IFt9zMkdXdLF8wa+OYFSb1lnfwxeEc1fgKTLYsR4vkFfCYp64s4mVE8R63veC8eeAPjlz/1A5RKwXEF1id8IFHe3a5iPAc8Vy1q/aPQI8ZwxnaFVrEp4rhjM8yeMsCedIeVs3YKoWjPWc2xXmM7lwF+llb2KfOz0SUJ+t3eleogZgOtYDMG65bx1oRRt/ErJ2xgJUs23WhS+l54oJqN/8JGd6N2LrxkuWRA7VvEDbv+8YuiKHbWgG4ZitydxVEbR/CWmDzxXpA1exMWYx42nVi5sEO9YzIRMs1oGD4BV5yWxF+EKI4yMn7kRVldSIdaCyWRIWUonSXuluUuxb39iez5hD+JRqXvv4CI7RGQlcie33oF3MFADRRF6KcwQguAtd3pK66xtbjwym9JyxCqGVok5x6Ir5osYE29bDqlP8kzoCD5zVMmUvaOBOQFXhZ78iQbyfH7t0DVhpX2vd+dgBdPTosF/YJufMhc7IXxua2bzB54r0dXSnsh4HnzOVHdDusG7weS4XJYCQwZUzClB13CBYMCtn9J96gxXABk78Z3eErw9O+CQ+R6WvBUDzSXzOnL5K9137zm+Kz5XKSnC3WDf4nLm7r9ygtp5I3+BzpQlgF1zINMXnSgNA9eiwfvLeh0RAQncMOzp20H7C6IEsqexe4tSdOAWilfjfDxKcDjinP2Q7/ItA1rRFjvA7mHvyFQ9ErF8LHHtB5zhyJVOu3oL7it2SA7Hbc1d45XDS5sFL7PGlI8h2MmUb2aMjvPKoa86Bl+fMlgTCiyXVlsyIrNqSmXg9EnfsCqW1knG74gwvFnjhTL2dYoYZN1zP3KlxUkXrK16SJis+Ixx5S3cGuO/r+6+1idNjRnASvyIPB+6kUjvWoTH2jAbhXNoWAg91S+aUM9O4SpNNue7Ep8OuTC9XujN8bZSLJrJoSV29JvGlWgc9XAzHaLh053aTWh78pcmHesgSzknov6Lzn/4Sh+4YaIqsGbdnh0kkFuBKJFa10b6STdbCNWIvYRRjyl0lZlzARpyGz2nMnyXi0KSumGk7X8neqTnaJkumLHHm6GxYPjrPA/JDXmt1hFdHNc2M+wLnkfjUDhFTL1J/paIjH2BIngWuUFNOAfP78o3avTOOpmKamd+aCWeOsOopVxSMB7LPf1JnQthKAMO4RXYlzFc/cQVXu2f7iLxiMXEl1qOW+tiBha7DJ8ZXTl1wUZquGz8hr1crKl6ukGVA9kvK3LmNYTvl+x5awxFobdvVUXIIhzPx624Od/U0aUVxml+SIR9HK437X7njrUVtnEQkWblCK4eeFlq0bhmaYC4Di64Qs51V2uJy5qTs5jAGJxdgrpyS1k2LiSSDvj8J8198QmeLyixsTYfOyTzam+vBEpIlPpwjuLq2I2OytMeZZKUiW8ZtMM+p1K7tOzZTKryiGI2xv6TOtKDsWY8nbrFNEu4vceQKN+t7c5qEoTNxWOsJkfu1W2Uqii7Tk6726P8D";
@@ -10067,7 +10061,7 @@ DrawioFile.prototype.installListeners=function(){null==this.changeListener&&(thi
this.changeListener),this.ui.addListener("pageScaleChanged",this.changeListener),this.ui.addListener("backgroundColorChanged",this.changeListener),this.ui.addListener("backgroundImageChanged",this.changeListener),this.ui.addListener("foldingEnabledChanged",this.changeListener),this.ui.addListener("mathEnabledChanged",this.changeListener),this.ui.addListener("gridEnabledChanged",this.changeListener),this.ui.addListener("guidesEnabledChanged",this.changeListener),this.ui.addListener("tooltipsEnabledChanged",
this.changeListener),this.ui.addListener("pageViewChanged",this.changeListener),this.ui.addListener("connectionPointsChanged",this.changeListener),this.ui.addListener("connectionArrowsChanged",this.changeListener))};
DrawioFile.prototype.addAllSavedStatus=function(b){null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this&&(b=null!=b?b:mxUtils.htmlEntities(mxResources.get(this.allChangesSavedKey)),this.ui.editor.setStatus('<div title="'+b+'">'+b+"</div>"),b=this.ui.statusContainer.getElementsByTagName("div"),0<b.length&&this.isRevisionHistorySupported()&&(b[0].style.cursor="pointer",b[0].style.textDecoration="underline",mxEvent.addListener(b[0],"click",mxUtils.bind(this,function(){this.ui.actions.get("revisionHistory").funct()}))))};
-DrawioFile.prototype.saveDraft=function(){try{null==this.draftId&&(this.draftId=Editor.guid());var b={type:"draft",created:this.created,modified:(new Date).getTime(),data:this.ui.getFileData(),title:this.getTitle(),aliveCheck:this.ui.draftAliveCheck};this.ui.setDatabaseItem(".draft_"+this.draftId,JSON.stringify(b));EditorUi.debug("draft saved",this.draftId,b)}catch(e){this.removeDraft()}};
+DrawioFile.prototype.saveDraft=function(){try{null==this.draftId&&(this.draftId=Editor.guid());var b={type:"draft",created:this.created,modified:(new Date).getTime(),data:this.ui.getFileData(),title:this.getTitle(),fileObject:this.fileObject,aliveCheck:this.ui.draftAliveCheck};this.ui.setDatabaseItem(".draft_"+this.draftId,JSON.stringify(b));EditorUi.debug("draft saved",this.draftId,b)}catch(e){this.removeDraft()}};
DrawioFile.prototype.removeDraft=function(){try{null!=this.draftId&&(this.ui.removeDatabaseItem(".draft_"+this.draftId),EditorUi.debug("draft deleted",".draft_"+this.draftId))}catch(b){}};
DrawioFile.prototype.addUnsavedStatus=function(b){if(!this.inConflictState&&null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this)if(b instanceof Error&&null!=b.message&&""!=b.message){var e=mxUtils.htmlEntities(mxResources.get("unsavedChanges"));this.ui.editor.setStatus('<div title="'+e+'" class="geStatusAlert">'+e+" ("+mxUtils.htmlEntities(b.message)+")</div>")}else{e=this.getErrorMessage(b);if(null==e&&null!=this.lastSaved){var d=this.ui.timeSince(new Date(this.lastSaved));null!=d&&(e=
mxResources.get("lastSaved",[d]))}null!=e&&60<e.length&&(e=e.substring(0,60)+"...");e=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+(null!=e&&""!=e?" ("+mxUtils.htmlEntities(e)+")":"");this.ui.editor.setStatus('<div title="'+e+'" class="geStatusAlertOrange">'+e+' <img src="'+Editor.saveImage+'"/></div>');e=this.ui.statusContainer.getElementsByTagName("div");null!=e&&0<e.length?(e[0].style.cursor="pointer",mxEvent.addListener(e[0],"click",mxUtils.bind(this,function(){this.ui.actions.get(null!=
@@ -10202,31 +10196,31 @@ mxUtils.write(l,mxResources.get("diagram"));"plantUml"!=d&&f.appendChild(l);l=do
b.dataTransfer.files[0];var c=new FileReader;c.onload=function(b){n.value=b.target.result};c.readAsText(b)}},!1));e.appendChild(f);mxEvent.addListener(f,"change",function(){var b=g();if(0==n.value.length||n.value==q)q=b,n.value=q});b.isOffline()||"mermaid"!=d&&"plantUml"!=d||(l=mxUtils.button(mxResources.get("help"),function(){b.openLink("mermaid"==d?"https://mermaid-js.github.io/mermaid/#/":"https://plantuml.com/")}),l.className="geBtn",e.appendChild(l));l=mxUtils.button(mxResources.get("close"),
function(){n.value==q?b.hideDialog():b.confirm(mxResources.get("areYouSure"),function(){b.hideDialog()})});l.className="geBtn";b.editor.cancelFirst&&e.appendChild(l);m=mxUtils.button(mxResources.get("insert"),function(d){b.hideDialog();c(n.value,f.value,d)});e.appendChild(m);m.className="geBtn gePrimaryBtn";b.editor.cancelFirst||e.appendChild(l);this.container=e},NewDialog=function(b,e,d,c,g,k,n,f,l,m,p,q,t,u,v,x,A,z){function B(b){null!=b&&(ra=X=b?135:140);b=!0;if(null!=ma)for(;M<ma.length&&(b||
0!=mxUtils.mod(M,30));){var c=ma[M++],c=G(c.url,c.libs,c.title,c.tooltip?c.tooltip:c.title,c.select,c.imgUrl,c.info,c.onClick,c.preview,c.noImg,c.clibs);b&&c.click();b=!1}}function y(){if(pa&&null!=u)d||b.hideDialog(),u(pa,ca,L.value);else if(c)d||b.hideDialog(),c(ba,L.value,fa,ka);else{var f=L.value;null!=f&&0<f.length&&b.pickFolder(b.mode,function(c){b.createFile(f,ba,null!=ka&&0<ka.length?ka:null,null,function(){b.hideDialog()},null,c,null,null!=aa&&0<aa.length?aa:null)},b.mode!=App.MODE_GOOGLE||
-null==b.stateArg||null==b.stateArg.folderId)}}function C(b,c,d,e,m,g,p){null!=na&&(na.style.backgroundColor="transparent",na.style.border="1px solid transparent");O.removeAttribute("disabled");ba=c;ka=d;aa=g;na=b;pa=e;fa=p;ca=m;na.style.backgroundColor=f;na.style.border=l}function G(c,f,d,e,l,m,g,p,k,q,t){function n(c,f){if(null==B){var d=c,d=/^https?:\/\//.test(d)&&!b.editor.isCorsEnabledForUrl(d)?PROXY_URL+"?url="+encodeURIComponent(d):TEMPLATE_PATH+"/"+d;mxUtils.get(d,mxUtils.bind(this,function(b){200<=
-b.getStatus()&&299>=b.getStatus()&&(B=b.getText());f(B)}))}else f(B)}function u(f,e,l){if(null!=f&&mxUtils.isAncestorNode(document.body,v)){f=mxUtils.parseXml(f);f=Editor.parseDiagramNode(f.documentElement);var m=new mxCodec(f.ownerDocument),k=new mxGraphModel;m.decode(f,k);f=k.root.getChildAt(0).children;b.sidebar.createTooltip(v,f,Math.min((window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-80,1E3),Math.min((window.innerHeight||document.documentElement.clientHeight||
-document.body.clientHeight)-80,800),null!=d?mxResources.get(d,null,d):null,!0,new mxPoint(e,l),!0,function(){P=null!=b.sidebar.tooltip&&"none"!=b.sidebar.tooltip.style.display;C(v,null,null,c,g,t)},!0,!1)}}function K(f,d){if(null==c||J||b.sidebar.currentElt==v)b.sidebar.hideTooltip();else if(b.sidebar.hideTooltip(),null!=x){var e='<mxfile><diagram id="d" name="n">'+Graph.compress('<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="2" value="" style="shape=image;image='+x.src+
-';imageAspect=1;" parent="1" vertex="1"><mxGeometry width="'+x.naturalWidth+'" height="'+x.naturalHeight+'" as="geometry" /></mxCell></root></mxGraphModel>')+"</diagram></mxfile>";u(e,mxEvent.getClientX(f),mxEvent.getClientY(f))}else b.sidebar.currentElt=v,J=!0,n(c,function(c){J&&b.sidebar.currentElt==v&&u(c,mxEvent.getClientX(f),mxEvent.getClientY(f));J=!1})}var v=document.createElement("div");v.className="geTemplate";v.style.position="relative";v.style.height=ra+"px";v.style.width=X+"px";var B=
-null;Editor.isDarkMode()&&(v.style.filter="invert(100%)");null!=d?v.setAttribute("title",mxResources.get(d,null,d)):null!=e&&0<e.length&&v.setAttribute("title",e);var J=!1,x=null;if(null!=m){v.style.display="inline-flex";v.style.justifyContent="center";v.style.alignItems="center";l=document.createElement("img");l.setAttribute("src",m);l.setAttribute("alt",e);l.style.maxWidth=ra+"px";l.style.maxHeight=X+"px";var x=l,A=m.replace(".drawio.xml","").replace(".drawio","").replace(".xml","");v.appendChild(l);
-l.onerror=function(){this.src!=A?this.src=A:(this.src=Editor.errorImage,this.onerror=null)};mxEvent.addGestureListeners(v,mxUtils.bind(this,function(b){C(v,null,null,c,g,t)}),null,null);mxEvent.addListener(v,"dblclick",function(b){y();mxEvent.consume(b)})}else if(!q&&null!=c&&0<c.length){var E=function(b){O.setAttribute("disabled","disabled");v.style.backgroundColor="transparent";v.style.border="1px solid transparent";N.spin(Q);n(c,function(c){N.stop();null!=c&&(C(v,c,f,null,null,t,qa),b&&y())})};
+null==b.stateArg||null==b.stateArg.folderId)}}function C(b,c,d,e,m,g,p){null!=na&&(na.style.backgroundColor="transparent",na.style.border="1px solid transparent");O.removeAttribute("disabled");ba=c;ka=d;aa=g;na=b;pa=e;fa=p;ca=m;na.style.backgroundColor=f;na.style.border=l}function G(c,f,d,e,l,m,g,p,k,q,t){function n(c,f){if(null==B){var e=c,e=/^https?:\/\//.test(e)&&!b.editor.isCorsEnabledForUrl(e)?PROXY_URL+"?url="+encodeURIComponent(e):TEMPLATE_PATH+"/"+e;mxUtils.get(e,mxUtils.bind(this,function(b){200<=
+b.getStatus()&&299>=b.getStatus()&&(B=b.getText());f(B)}))}else f(B)}function u(f,e,l){if(null!=f&&mxUtils.isAncestorNode(document.body,v)){f=mxUtils.parseXml(f);f=Editor.parseDiagramNode(f.documentElement);var m=new mxCodec(f.ownerDocument),p=new mxGraphModel;m.decode(f,p);f=p.root.getChildAt(0).children;b.sidebar.createTooltip(v,f,Math.min((window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-80,1E3),Math.min((window.innerHeight||document.documentElement.clientHeight||
+document.body.clientHeight)-80,800),null!=d?mxResources.get(d,null,d):null,!0,new mxPoint(e,l),!0,function(){P=null!=b.sidebar.tooltip&&"none"!=b.sidebar.tooltip.style.display;C(v,null,null,c,g,t)},!0,!1)}}function J(f,e){if(null==c||x||b.sidebar.currentElt==v)b.sidebar.hideTooltip();else if(b.sidebar.hideTooltip(),null!=A){var d='<mxfile><diagram id="d" name="n">'+Graph.compress('<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="2" value="" style="shape=image;image='+A.src+
+';imageAspect=1;" parent="1" vertex="1"><mxGeometry width="'+A.naturalWidth+'" height="'+A.naturalHeight+'" as="geometry" /></mxCell></root></mxGraphModel>')+"</diagram></mxfile>";u(d,mxEvent.getClientX(f),mxEvent.getClientY(f))}else b.sidebar.currentElt=v,x=!0,n(c,function(c){x&&b.sidebar.currentElt==v&&u(c,mxEvent.getClientX(f),mxEvent.getClientY(f));x=!1})}var v=document.createElement("div");v.className="geTemplate";v.style.position="relative";v.style.height=ra+"px";v.style.width=X+"px";var B=
+null;Editor.isDarkMode()&&(v.style.filter="invert(100%)");null!=d?v.setAttribute("title",mxResources.get(d,null,d)):null!=e&&0<e.length&&v.setAttribute("title",e);var x=!1,A=null;if(null!=m){v.style.display="inline-flex";v.style.justifyContent="center";v.style.alignItems="center";l=document.createElement("img");l.setAttribute("src",m);l.setAttribute("alt",e);l.style.maxWidth=ra+"px";l.style.maxHeight=X+"px";var A=l,K=m.replace(".drawio.xml","").replace(".drawio","").replace(".xml","");v.appendChild(l);
+l.onerror=function(){this.src!=K?this.src=K:(this.src=Editor.errorImage,this.onerror=null)};mxEvent.addGestureListeners(v,mxUtils.bind(this,function(b){C(v,null,null,c,g,t)}),null,null);mxEvent.addListener(v,"dblclick",function(b){y();mxEvent.consume(b)})}else if(!q&&null!=c&&0<c.length){var E=function(b){O.setAttribute("disabled","disabled");v.style.backgroundColor="transparent";v.style.border="1px solid transparent";N.spin(Q);n(c,function(c){N.stop();null!=c&&(C(v,c,f,null,null,t,qa),b&&y())})};
l=k||TEMPLATE_PATH+"/"+c.substring(0,c.length-4)+".png";v.style.backgroundImage="url("+l+")";v.style.backgroundPosition="center center";v.style.backgroundRepeat="no-repeat";if(null!=d){e=document.createElement("table");e.setAttribute("width","100%");e.setAttribute("height","100%");e.style.background=Editor.isDarkMode()?"transparent":"rgba(255,255,255,0.85)";e.style.lineHeight="1.3em";e.style.border="inherit";m=document.createElement("tbody");k=document.createElement("tr");q=document.createElement("td");
q.setAttribute("align","center");q.setAttribute("valign","middle");var T=document.createElement("span");T.style.display="inline-block";T.style.padding="4px 8px 4px 8px";T.style.userSelect="none";T.style.borderRadius="3px";T.style.background="rgba(255,255,255,0.85)";T.style.overflow="hidden";T.style.textOverflow="ellipsis";T.style.maxWidth=ra-34+"px";mxUtils.write(T,mxResources.get(d,null,d));q.appendChild(T);k.appendChild(q);m.appendChild(k);e.appendChild(m);v.appendChild(e)}mxEvent.addGestureListeners(v,
mxUtils.bind(this,function(b){E()}),null,null);mxEvent.addListener(v,"dblclick",function(b){E(!0);mxEvent.consume(b)})}else e=document.createElement("table"),e.setAttribute("width","100%"),e.setAttribute("height","100%"),e.style.lineHeight="1.3em",m=document.createElement("tbody"),k=document.createElement("tr"),q=document.createElement("td"),q.setAttribute("align","center"),q.setAttribute("valign","middle"),T=document.createElement("span"),T.style.display="inline-block",T.style.padding="4px 8px 4px 8px",
T.style.userSelect="none",T.style.borderRadius="3px",T.style.background="#ffffff",T.style.overflow="hidden",T.style.textOverflow="ellipsis",T.style.maxWidth=ra-34+"px",mxUtils.write(T,mxResources.get(d,null,d)),q.appendChild(T),k.appendChild(q),m.appendChild(k),e.appendChild(m),v.appendChild(e),l&&C(v),mxEvent.addGestureListeners(v,mxUtils.bind(this,function(b){C(v,null,null,c,g)}),null,null),null!=p?mxEvent.addListener(v,"click",p):(mxEvent.addListener(v,"click",function(b){C(v,null,null,c,g)}),
mxEvent.addListener(v,"dblclick",function(b){y();mxEvent.consume(b)}));if(null!=c){var D=document.createElement("img");D.setAttribute("src",Sidebar.prototype.searchImage);D.setAttribute("title",mxResources.get("preview"));D.className="geActiveButton";D.style.position="absolute";D.style.cursor="default";D.style.padding="8px";D.style.right="0px";D.style.top="0px";v.appendChild(D);var P=!1;mxEvent.addGestureListeners(D,mxUtils.bind(this,function(c){P=b.sidebar.currentElt==v}),null,null);mxEvent.addListener(D,
-"click",mxUtils.bind(this,function(b){P||K(b,D);mxEvent.consume(b)}))}Q.appendChild(v);return v}function F(){function b(b,c){var f=mxResources.get(b);null==f&&(f=b.substring(0,1).toUpperCase()+b.substring(1));18<f.length&&(f=f.substring(0,18)+"&hellip;");return f+" ("+c.length+")"}function c(b,c,f){mxEvent.addListener(c,"click",function(){R!=c&&(R.style.backgroundColor="",R=c,R.style.backgroundColor=n,Q.scrollTop=0,Q.innerHTML="",M=0,ma=f?ga[b][f]:ea[b],T=null,B(!1))})}ua&&(ua=!1,mxEvent.addListener(Q,
-"scroll",function(b){Q.scrollTop+Q.clientHeight>=Q.scrollHeight&&(B(),mxEvent.consume(b))}));if(0<oa){var f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(f,mxResources.get("custom"));ha.appendChild(f);for(var d in ja){var e=document.createElement("div"),l=d,f=ja[d];18<l.length&&(l=l.substring(0,18)+"&hellip;");e.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;user-select:none;";
-e.setAttribute("title",l+" ("+f.length+")");mxUtils.write(e,e.getAttribute("title"));null!=m&&(e.style.padding=m);ha.appendChild(e);(function(b,c){mxEvent.addListener(e,"click",function(){R!=c&&(R.style.backgroundColor="",R=c,R.style.backgroundColor=n,Q.scrollTop=0,Q.innerHTML="",M=0,ma=ja[b],T=null,B(!1))})})(d,e)}f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(f,"draw.io");ha.appendChild(f)}for(d in ea){var l=
-ga[d],g=e=document.createElement(l?"ul":"div"),f=ea[d],k=b(d,f);if(null!=l){var p=document.createElement("li"),q=document.createElement("div");q.className="geTempTreeCaret";q.setAttribute("title",k);mxUtils.write(q,k);g=q;p.appendChild(q);k=document.createElement("ul");k.className="geTempTreeNested";k.style.visibility="hidden";for(var t in l){var y=document.createElement("li"),u=b(t,l[t]);y.setAttribute("title",u);mxUtils.write(y,u);c(d,y,t);k.appendChild(y)}p.appendChild(k);e.className="geTempTree";
-e.appendChild(p);(function(b,c){mxEvent.addListener(c,"click",function(){b.style.visibility="visible";b.classList.toggle("geTempTreeActive");b.classList.toggle("geTempTreeNested")&&setTimeout(function(){b.style.visibility="hidden"},550);c.classList.toggle("geTempTreeCaret-down")})})(k,q)}else e.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;user-select:none;transition: all 0.5s;",e.setAttribute("title",k),mxUtils.write(e,
-k);null!=m&&(e.style.padding=m);ha.appendChild(e);null==R&&0<f.length&&(R=e,R.style.backgroundColor=n,ma=f);c(d,g)}B(!1)}var D=500>(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth);d=null!=d?d:!0;g=null!=g?g:!1;n=null!=n?n:"#ebf2f9";f=null!=f?f:Editor.isDarkMode()?"#a2a2a2":"#e6eff8";l=null!=l?l:Editor.isDarkMode()?"1px dashed #00a8ff":"1px solid #ccd9ea";p=null!=p?p:EditorUi.templateFile;var E=document.createElement("div");E.style.userSelect="none";E.style.height=
+"click",mxUtils.bind(this,function(b){P||J(b,D);mxEvent.consume(b)}))}Q.appendChild(v);return v}function F(){function b(b,c){var f=mxResources.get(b);null==f&&(f=b.substring(0,1).toUpperCase()+b.substring(1));18<f.length&&(f=f.substring(0,18)+"&hellip;");return f+" ("+c.length+")"}function c(b,c,f){mxEvent.addListener(c,"click",function(){R!=c&&(R.style.backgroundColor="",R=c,R.style.backgroundColor=n,Q.scrollTop=0,Q.innerHTML="",M=0,ma=f?ga[b][f]:ea[b],T=null,B(!1))})}ua&&(ua=!1,mxEvent.addListener(Q,
+"scroll",function(b){Q.scrollTop+Q.clientHeight>=Q.scrollHeight&&(B(),mxEvent.consume(b))}));if(0<oa){var f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(f,mxResources.get("custom"));ha.appendChild(f);for(var e in ja){var d=document.createElement("div"),l=e,f=ja[e];18<l.length&&(l=l.substring(0,18)+"&hellip;");d.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;user-select:none;";
+d.setAttribute("title",l+" ("+f.length+")");mxUtils.write(d,d.getAttribute("title"));null!=m&&(d.style.padding=m);ha.appendChild(d);(function(b,c){mxEvent.addListener(d,"click",function(){R!=c&&(R.style.backgroundColor="",R=c,R.style.backgroundColor=n,Q.scrollTop=0,Q.innerHTML="",M=0,ma=ja[b],T=null,B(!1))})})(e,d)}f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(f,"draw.io");ha.appendChild(f)}for(e in ea){var l=
+ga[e],g=d=document.createElement(l?"ul":"div"),f=ea[e],p=b(e,f);if(null!=l){var k=document.createElement("li"),q=document.createElement("div");q.className="geTempTreeCaret";q.setAttribute("title",p);mxUtils.write(q,p);g=q;k.appendChild(q);p=document.createElement("ul");p.className="geTempTreeNested";p.style.visibility="hidden";for(var t in l){var y=document.createElement("li"),u=b(t,l[t]);y.setAttribute("title",u);mxUtils.write(y,u);c(e,y,t);p.appendChild(y)}k.appendChild(p);d.className="geTempTree";
+d.appendChild(k);(function(b,c){mxEvent.addListener(c,"click",function(){b.style.visibility="visible";b.classList.toggle("geTempTreeActive");b.classList.toggle("geTempTreeNested")&&setTimeout(function(){b.style.visibility="hidden"},550);c.classList.toggle("geTempTreeCaret-down")})})(p,q)}else d.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;user-select:none;transition: all 0.5s;",d.setAttribute("title",p),mxUtils.write(d,
+p);null!=m&&(d.style.padding=m);ha.appendChild(d);null==R&&0<f.length&&(R=d,R.style.backgroundColor=n,ma=f);c(e,g)}B(!1)}var D=500>(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth);d=null!=d?d:!0;g=null!=g?g:!1;n=null!=n?n:"#ebf2f9";f=null!=f?f:Editor.isDarkMode()?"#a2a2a2":"#e6eff8";l=null!=l?l:Editor.isDarkMode()?"1px dashed #00a8ff":"1px solid #ccd9ea";p=null!=p?p:EditorUi.templateFile;var E=document.createElement("div");E.style.userSelect="none";E.style.height=
"100%";var H=document.createElement("div");H.style.whiteSpace="nowrap";H.style.height="46px";d&&E.appendChild(H);var I=document.createElement("img");I.setAttribute("border","0");I.setAttribute("align","absmiddle");I.style.width="40px";I.style.height="40px";I.style.marginRight="10px";I.style.paddingBottom="4px";I.src=b.mode==App.MODE_GOOGLE?IMAGE_PATH+"/google-drive-logo.svg":b.mode==App.MODE_DROPBOX?IMAGE_PATH+"/dropbox-logo.svg":b.mode==App.MODE_ONEDRIVE?IMAGE_PATH+"/onedrive-logo.svg":b.mode==App.MODE_GITHUB?
IMAGE_PATH+"/github-logo.svg":b.mode==App.MODE_GITLAB?IMAGE_PATH+"/gitlab-logo.svg":b.mode==App.MODE_NOTION?IMAGE_PATH+"/notion-logo.svg":b.mode==App.MODE_TRELLO?IMAGE_PATH+"/trello-logo.svg":b.mode==App.MODE_BROWSER?IMAGE_PATH+"/osa_database.png":IMAGE_PATH+"/osa_drive-harddisk.png";e||D||!d||H.appendChild(I);d&&mxUtils.write(H,(D?mxResources.get("name"):null==b.mode||b.mode==App.MODE_GOOGLE||b.mode==App.MODE_BROWSER?mxResources.get("diagramName"):mxResources.get("filename"))+":");I=".drawio";b.mode==
App.MODE_GOOGLE&&null!=b.drive?I=b.drive.extension:b.mode==App.MODE_DROPBOX&&null!=b.dropbox?I=b.dropbox.extension:b.mode==App.MODE_ONEDRIVE&&null!=b.oneDrive?I=b.oneDrive.extension:b.mode==App.MODE_GITHUB&&null!=b.gitHub?I=b.gitHub.extension:b.mode==App.MODE_GITLAB&&null!=b.gitLab?I=b.gitLab.extension:b.mode==App.MODE_NOTION&&null!=b.notion?I=b.notion.extension:b.mode==App.MODE_TRELLO&&null!=b.trello&&(I=b.trello.extension);var L=document.createElement("input");L.setAttribute("value",b.defaultFilename+
I);L.style.marginLeft="10px";L.style.width=e||D?"144px":"244px";this.init=function(){d&&(L.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?L.select():document.execCommand("selectAll",!1,null));null!=Q.parentNode&&null!=Q.parentNode.parentNode&&mxEvent.addGestureListeners(Q.parentNode.parentNode,mxUtils.bind(this,function(c){b.sidebar.hideTooltip()}),null,null)};d&&(H.appendChild(L),z?L.style.width=e||D?"350px":"450px":(null!=b.editor.diagramFileTypes&&(z=FilenameDialog.createFileTypes(b,
L,b.editor.diagramFileTypes),z.style.marginLeft="6px",z.style.width=e||D?"80px":"180px",H.appendChild(z)),null!=b.editor.fileExtensions&&(D=FilenameDialog.createTypeHint(b,L,b.editor.fileExtensions),D.style.marginTop="12px",H.appendChild(D))));var H=!1,M=0,N=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9}),O=mxUtils.button(x||mxResources.get("create"),function(){O.setAttribute("disabled","disabled");y();O.removeAttribute("disabled")});
-O.className="geBtn gePrimaryBtn";if(q||t){var K=[],T=null,J=null,U=null,P=function(b){O.setAttribute("disabled","disabled");for(var c=0;c<K.length;c++)K[c].className=c==b?"geBtn gePrimaryBtn":"geBtn"},H=!0;x=document.createElement("div");x.style.whiteSpace="nowrap";x.style.height="30px";E.appendChild(x);D=mxUtils.button(mxResources.get("Templates",null,"Templates"),function(){ha.style.display="";V.style.display="";Q.style.left="160px";P(0);Q.scrollTop=0;Q.innerHTML="";M=0;T!=ma&&(ma=T,ea=J,oa=U,ha.innerHTML=
-"",F(),T=null)});K.push(D);x.appendChild(D);var S=function(b){ha.style.display="none";V.style.display="none";Q.style.left="30px";P(b?-1:1);null==T&&(T=ma);Q.scrollTop=0;Q.innerHTML="";N.spin(Q);var c=function(b,c,f){M=0;N.stop();ma=b;f=f||{};var d=0,e;for(e in f)d+=f[e].length;if(c)Q.innerHTML=c;else if(0==b.length&&0==d)Q.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found"));else if(Q.innerHTML="",0<d){ha.style.display="";Q.style.left="160px";ha.innerHTML="";oa=0;
-ea={"draw.io":b};for(e in f)ea[e]=f[e];F()}else B(!0)};b?t(Y.value,c):q(c)};q&&(D=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){S()}),x.appendChild(D),K.push(D));if(t){D=document.createElement("span");D.style.marginLeft="10px";D.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+":");x.appendChild(D);var Y=document.createElement("input");Y.style.marginRight="10px";Y.style.marginLeft="10px";Y.style.width="220px";mxEvent.addListener(Y,"keypress",function(b){13==b.keyCode&&
+O.className="geBtn gePrimaryBtn";if(q||t){var J=[],T=null,K=null,U=null,P=function(b){O.setAttribute("disabled","disabled");for(var c=0;c<J.length;c++)J[c].className=c==b?"geBtn gePrimaryBtn":"geBtn"},H=!0;x=document.createElement("div");x.style.whiteSpace="nowrap";x.style.height="30px";E.appendChild(x);D=mxUtils.button(mxResources.get("Templates",null,"Templates"),function(){ha.style.display="";V.style.display="";Q.style.left="160px";P(0);Q.scrollTop=0;Q.innerHTML="";M=0;T!=ma&&(ma=T,ea=K,oa=U,ha.innerHTML=
+"",F(),T=null)});J.push(D);x.appendChild(D);var S=function(b){ha.style.display="none";V.style.display="none";Q.style.left="30px";P(b?-1:1);null==T&&(T=ma);Q.scrollTop=0;Q.innerHTML="";N.spin(Q);var c=function(b,c,f){M=0;N.stop();ma=b;f=f||{};var e=0,d;for(d in f)e+=f[d].length;if(c)Q.innerHTML=c;else if(0==b.length&&0==e)Q.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found"));else if(Q.innerHTML="",0<e){ha.style.display="";Q.style.left="160px";ha.innerHTML="";oa=0;
+ea={"draw.io":b};for(d in f)ea[d]=f[d];F()}else B(!0)};b?t(Y.value,c):q(c)};q&&(D=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){S()}),x.appendChild(D),J.push(D));if(t){D=document.createElement("span");D.style.marginLeft="10px";D.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+":");x.appendChild(D);var Y=document.createElement("input");Y.style.marginRight="10px";Y.style.marginLeft="10px";Y.style.width="220px";mxEvent.addListener(Y,"keypress",function(b){13==b.keyCode&&
S(!0)});x.appendChild(Y);D=mxUtils.button(mxResources.get("search"),function(){S(!0)});D.className="geBtn";x.appendChild(D)}P(0)}var ka=null,aa=null,ba=null,na=null,pa=null,fa=null,ca=null,Q=document.createElement("div");Q.style.border="1px solid #d3d3d3";Q.style.position="absolute";Q.style.left="160px";Q.style.right="34px";x=(d?72:40)+(H?30:0);Q.style.top=x+"px";Q.style.bottom="68px";Q.style.margin="6px 0 0 -1px";Q.style.padding="6px";Q.style.overflow="auto";var V=document.createElement("div");V.style.cssText=
"position:absolute;left:30px;width:128px;top:"+x+"px;height:22px;margin-top: 6px;white-space: nowrap";var ia=document.createElement("input");ia.style.cssText="width:105px;height:16px;border:1px solid #d3d3d3;padding: 3px 20px 3px 3px;font-size: 12px";ia.setAttribute("placeholder",mxResources.get("search"));ia.setAttribute("type","text");V.appendChild(ia);var W=document.createElement("img"),Z="undefined"!=typeof Sidebar?Sidebar.prototype.searchImage:IMAGE_PATH+"/search.png";W.setAttribute("src",Z);
W.setAttribute("title",mxResources.get("search"));W.style.position="relative";W.style.left="-18px";W.style.top="1px";W.style.background="url('"+b.editor.transparentImage+"')";V.appendChild(W);mxEvent.addListener(W,"click",function(){W.getAttribute("src")==Dialog.prototype.closeImage&&(W.setAttribute("src",Z),W.setAttribute("title",mxResources.get("search")),ia.value="",null!=da&&(da.click(),da=null));ia.focus()});mxEvent.addListener(ia,"keydown",mxUtils.bind(this,function(b){if(13==b.keyCode){var c=
@@ -10235,15 +10229,15 @@ null==f[t]&&(f[t]=[]);f[t].push(m)}f.__tagsList__=!0}d=[];e={};for(l=g=0;l<q.len
"",da=R,R=f);ma=d;T=null;B(!1)}mxEvent.consume(b)}}));mxEvent.addListener(ia,"keyup",mxUtils.bind(this,function(b){""==ia.value?(W.setAttribute("src",Z),W.setAttribute("title",mxResources.get("search"))):(W.setAttribute("src",Dialog.prototype.closeImage),W.setAttribute("title",mxResources.get("reset")))}));x+=23;var ha=document.createElement("div");ha.style.cssText="position:absolute;left:30px;width:128px;top:"+x+"px;bottom:68px;margin-top:6px;overflow:auto;border:1px solid #d3d3d3;";mxEvent.addListener(Q,
"scroll",function(){b.sidebar.hideTooltip()});var ra=140,X=140,ea={},ga={},ja={},oa=0,ua=!0,R=null,da=null;ea.basic=[{title:"blankDiagram",select:!0}];var ma=ea.basic;if(!e){var sa=function(){mxUtils.get(qa,function(b){if(!la){la=!0;b=b.getXml().documentElement.firstChild;for(var c={};null!=b;){if("undefined"!==typeof b.getAttribute)if("clibs"==b.nodeName){for(var f=b.getAttribute("name"),d=b.getElementsByTagName("add"),e=[],l=0;l<d.length;l++)e.push(encodeURIComponent(mxUtils.getTextContent(d[l])));
null!=f&&0<e.length&&(c[f]=e.join(";"))}else if(e=b.getAttribute("url"),null!=e){d=b.getAttribute("section");f=b.getAttribute("subsection");if(null==d&&(l=e.indexOf("/"),d=e.substring(0,l),null==f)){var m=e.indexOf("/",l+1);-1<m&&(f=e.substring(l+1,m))}l=ea[d];null==l&&(l=[],ea[d]=l);e=b.getAttribute("clibs");null!=c[e]&&(e=c[e]);e={url:b.getAttribute("url"),libs:b.getAttribute("libs"),title:b.getAttribute("title"),tooltip:b.getAttribute("name")||b.getAttribute("url"),preview:b.getAttribute("preview"),
-clibs:e,tags:b.getAttribute("tags")};l.push(e);null!=f&&(l=ga[d],null==l&&(l={},ga[d]=l),d=l[f],null==d&&(d=[],l[f]=d),d.push(e))}b=b.nextSibling}N.stop();F()}})};E.appendChild(V);E.appendChild(ha);E.appendChild(Q);var la=!1,qa=p;/^https?:\/\//.test(qa)&&!b.editor.isCorsEnabledForUrl(qa)&&(qa=PROXY_URL+"?url="+encodeURIComponent(qa));N.spin(Q);null!=A?A(function(b,c){ja=b;U=oa=c;sa()},sa):sa();J=ea}mxEvent.addListener(L,"keypress",function(c){b.dialog.container.firstChild==E&&13==c.keyCode&&y()});
+clibs:e,tags:b.getAttribute("tags")};l.push(e);null!=f&&(l=ga[d],null==l&&(l={},ga[d]=l),d=l[f],null==d&&(d=[],l[f]=d),d.push(e))}b=b.nextSibling}N.stop();F()}})};E.appendChild(V);E.appendChild(ha);E.appendChild(Q);var la=!1,qa=p;/^https?:\/\//.test(qa)&&!b.editor.isCorsEnabledForUrl(qa)&&(qa=PROXY_URL+"?url="+encodeURIComponent(qa));N.spin(Q);null!=A?A(function(b,c){ja=b;U=oa=c;sa()},sa):sa();K=ea}mxEvent.addListener(L,"keypress",function(c){b.dialog.container.firstChild==E&&13==c.keyCode&&y()});
A=document.createElement("div");A.style.marginTop=e?"4px":"16px";A.style.textAlign="right";A.style.position="absolute";A.style.left="40px";A.style.bottom="24px";A.style.right="40px";e||b.isOffline()||!d||null!=c||g||(x=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://support.draw.io/display/DO/Creating+and+Opening+Files")}),x.className="geBtn",A.appendChild(x));x=mxUtils.button(mxResources.get("cancel"),function(){null!=k&&k();b.hideDialog(!0)});x.className="geBtn";!b.editor.cancelFirst||
g&&null==k||A.appendChild(x);e||"1"==urlParams.embed||g||mxClient.IS_ANDROID||mxClient.IS_IOS||"1"==urlParams.noDevice||(e=mxUtils.button(mxResources.get("fromTemplateUrl"),function(){var c=new FilenameDialog(b,"",mxResources.get("create"),function(c){null!=c&&0<c.length&&(c=b.getUrl(window.location.pathname+"?mode="+b.mode+"&title="+encodeURIComponent(L.value)+"&create="+encodeURIComponent(c)),null==b.getCurrentFile()?window.location.href=c:window.openWindow(c))},mxResources.get("url"));b.showDialog(c.container,
300,80,!0,!0);c.init()}),e.className="geBtn",A.appendChild(e));Graph.fileSupport&&v&&(v=mxUtils.button(mxResources.get("import"),function(){if(null==b.newDlgFileInputElt){var c=document.createElement("input");c.setAttribute("multiple","multiple");c.setAttribute("type","file");mxEvent.addListener(c,"change",function(f){b.openFiles(c.files,!0);c.value=""});c.style.display="none";document.body.appendChild(c);b.newDlgFileInputElt=c}b.newDlgFileInputElt.click()}),v.className="geBtn",A.appendChild(v));
A.appendChild(O);b.editor.cancelFirst||null!=c||g&&null==k||A.appendChild(x);E.appendChild(A);this.container=E};NewDialog.tagsList={};
var CreateDialog=function(b,e,d,c,g,k,n,f,l,m,p,q,t,u,v,x,A){function z(c,f,d,l){function m(){mxEvent.addListener(g,"click",function(){var c=d;if(n){var f=C.value,l=f.lastIndexOf(".");if(0>e.lastIndexOf(".")&&0>l){var c=null!=c?c:E.value,m="";c==App.MODE_GOOGLE?m=b.drive.extension:c==App.MODE_GITHUB?m=b.gitHub.extension:c==App.MODE_GITLAB?m=b.gitLab.extension:c==App.MODE_NOTION?m=b.notion.extension:c==App.MODE_TRELLO?m=b.trello.extension:c==App.MODE_DROPBOX?m=b.dropbox.extension:c==App.MODE_ONEDRIVE?
-m=b.oneDrive.extension:c==App.MODE_DEVICE&&(m=".drawio");0<=l&&(f=f.substring(0,l));C.value=f+m}}B(d)})}var g=document.createElement("a");g.style.overflow="hidden";var k=document.createElement("img");k.src=c;k.setAttribute("border","0");k.setAttribute("align","absmiddle");k.style.width="60px";k.style.height="60px";k.style.paddingBottom="6px";g.style.display="inline-block";g.className="geBaseButton";g.style.position="relative";g.style.margin="4px";g.style.padding="8px 8px 10px 8px";g.style.whiteSpace=
-"nowrap";g.appendChild(k);g.style.color="gray";g.style.fontSize="11px";var p=document.createElement("div");g.appendChild(p);mxUtils.write(p,f);if(null!=l&&null==b[l]){k.style.visibility="hidden";mxUtils.setOpacity(p,10);var t=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});t.spin(g);var y=window.setTimeout(function(){null==b[l]&&(t.stop(),g.style.display="none")},3E4);b.addListener("clientLoaded",mxUtils.bind(this,
-function(){null!=b[l]&&(window.clearTimeout(y),mxUtils.setOpacity(p,100),k.style.visibility="",t.stop(),m())}))}else m();F.appendChild(g);++D==q&&(mxUtils.br(F),D=0)}function B(c){var f=C.value;if(null==c||null!=f&&0<f.length)A&&b.hideDialog(),d(f,c,C)}p="1"==urlParams.noDevice?!1:p;n=null!=n?n:!0;f=null!=f?f:!0;q=null!=q?q:4;A=null!=A?A:!0;k=document.createElement("div");k.style.whiteSpace="nowrap";null==c&&b.addLanguageMenu(k);var y=document.createElement("h2");mxUtils.write(y,g||mxResources.get("create"));
+m=b.oneDrive.extension:c==App.MODE_DEVICE&&(m=".drawio");0<=l&&(f=f.substring(0,l));C.value=f+m}}B(d)})}var g=document.createElement("a");g.style.overflow="hidden";var p=document.createElement("img");p.src=c;p.setAttribute("border","0");p.setAttribute("align","absmiddle");p.style.width="60px";p.style.height="60px";p.style.paddingBottom="6px";g.style.display="inline-block";g.className="geBaseButton";g.style.position="relative";g.style.margin="4px";g.style.padding="8px 8px 10px 8px";g.style.whiteSpace=
+"nowrap";g.appendChild(p);g.style.color="gray";g.style.fontSize="11px";var k=document.createElement("div");g.appendChild(k);mxUtils.write(k,f);if(null!=l&&null==b[l]){p.style.visibility="hidden";mxUtils.setOpacity(k,10);var t=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});t.spin(g);var y=window.setTimeout(function(){null==b[l]&&(t.stop(),g.style.display="none")},3E4);b.addListener("clientLoaded",mxUtils.bind(this,
+function(){null!=b[l]&&(window.clearTimeout(y),mxUtils.setOpacity(k,100),p.style.visibility="",t.stop(),m())}))}else m();F.appendChild(g);++D==q&&(mxUtils.br(F),D=0)}function B(c){var f=C.value;if(null==c||null!=f&&0<f.length)A&&b.hideDialog(),d(f,c,C)}p="1"==urlParams.noDevice?!1:p;n=null!=n?n:!0;f=null!=f?f:!0;q=null!=q?q:4;A=null!=A?A:!0;k=document.createElement("div");k.style.whiteSpace="nowrap";null==c&&b.addLanguageMenu(k);var y=document.createElement("h2");mxUtils.write(y,g||mxResources.get("create"));
y.style.marginTop="0px";y.style.marginBottom="24px";k.appendChild(y);mxUtils.write(k,mxResources.get("filename")+":");var C=document.createElement("input");C.setAttribute("value",e);C.style.width="200px";C.style.marginLeft="10px";C.style.marginBottom="20px";C.style.maxWidth="70%";this.init=function(){C.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?C.select():document.execCommand("selectAll",!1,null)};k.appendChild(C);null!=x&&(null!=b.editor.diagramFileTypes&&(g=FilenameDialog.createFileTypes(b,
C,b.editor.diagramFileTypes),g.style.marginLeft="6px",g.style.width="80px",k.appendChild(g)),k.appendChild(FilenameDialog.createTypeHint(b,C,x)));x=null;if("1"!=urlParams.noDevice&&null!=t&&null!=u&&"image/"==u.substring(0,6)&&("image/svg"!=u.substring(0,9)||mxClient.IS_SVG)){C.style.width="160px";g=document.createElement("img");var G=v?t:btoa(unescape(encodeURIComponent(t)));g.setAttribute("src","data:"+u+";base64,"+G);g.style.position="absolute";g.style.top="70px";g.style.right="100px";g.style.maxWidth=
"120px";g.style.maxHeight="80px";mxUtils.setPrefixedStyle(g.style,"transform","translate(50%,-50%)");k.appendChild(g);mxClient.IS_FF||null==navigator.clipboard||"image/png"!=u||(x=mxUtils.button(mxResources.get("copy"),function(c){c=b.base64ToBlob(G,"image/png");c=new ClipboardItem({"image/png":c,"text/html":new Blob(['<img src="data:'+u+";base64,"+G+'">'],{type:"text/html"})});navigator.clipboard.write([c]).then(mxUtils.bind(this,function(){b.alert(mxResources.get("copiedToClipboard"))}))["catch"](mxUtils.bind(this,
@@ -10299,19 +10293,19 @@ mxResources.get("pageNotFound")):(M.style.display="none",k.style.display="none",
"absolute";M.style.textAlign="right";M.style.color="gray";M.style.marginTop="10px";M.style.backgroundColor="transparent";M.style.top="440px";M.style.right="32px";M.style.maxWidth="380px";M.style.cursor="default";var N=mxUtils.button(mxResources.get("download"),function(){if(null!=y){var c=mxUtils.getXml(y.documentElement),f=b.getBaseFilename()+".drawio";b.isLocalFileSave()?b.saveLocalFile(c,f,"text/xml"):(c="undefined"===typeof pako?"&xml="+encodeURIComponent(c):"&data="+encodeURIComponent(Graph.compress(c)),
(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(f)+"&format=xml"+c)).simulate(document,"_blank"))}});N.className="geBtn";N.setAttribute("disabled","disabled");var O=mxUtils.button(mxResources.get("restore"),function(c){null!=y&&null!=C&&(mxEvent.isShiftDown(c)?null!=y&&(c=b.getPagesForNode(y.documentElement),c=b.diffPages(b.pages,c),c=new TextareaDialog(b,mxResources.get("compare"),JSON.stringify(c,null,2),function(c){if(0<c.length)try{b.confirm(mxResources.get("areYouSure"),function(){v.patch([JSON.parse(c)],
null,!0);b.hideDialog();b.hideDialog()})}catch(fa){b.handleError(fa)}},null,null,null,null,null,!0,null,mxResources.get("merge")),c.textarea.style.width="600px",c.textarea.style.height="380px",b.showDialog(c.container,620,460,!0,!0),c.init()):b.confirm(mxResources.get("areYouSure"),function(){null!=d?d(C):b.spinner.spin(document.body,mxResources.get("restoring"))&&v.save(!0,function(c){b.spinner.stop();b.replaceFileData(C);b.hideDialog()},function(c){b.spinner.stop();b.editor.setStatus("");b.handleError(c,
-null!=c?mxResources.get("errorSavingFile"):null)})}))});O.className="geBtn";O.setAttribute("disabled","disabled");O.setAttribute("title","Shift+Click for Diff");var K=document.createElement("select");K.setAttribute("disabled","disabled");K.style.maxWidth="80px";K.style.position="relative";K.style.top="-2px";K.style.verticalAlign="bottom";K.style.marginRight="6px";K.style.display="none";var T=null;mxEvent.addListener(K,"change",function(b){null!=T&&(T(b),mxEvent.consume(b))});var J=mxUtils.button(mxResources.get("edit"),
-function(){null!=y&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(y.documentElement)),b.openLink(b.getUrl(),null,!0))});J.className="geBtn";J.setAttribute("disabled","disabled");null!=d&&(J.style.display="none");var U=mxUtils.button(mxResources.get("show"),function(){null!=B&&b.openLink(B.getUrl(K.selectedIndex))});U.className="geBtn gePrimaryBtn";U.setAttribute("disabled","disabled");null!=d&&(U.style.display="none",O.className="geBtn gePrimaryBtn");
+null!=c?mxResources.get("errorSavingFile"):null)})}))});O.className="geBtn";O.setAttribute("disabled","disabled");O.setAttribute("title","Shift+Click for Diff");var J=document.createElement("select");J.setAttribute("disabled","disabled");J.style.maxWidth="80px";J.style.position="relative";J.style.top="-2px";J.style.verticalAlign="bottom";J.style.marginRight="6px";J.style.display="none";var T=null;mxEvent.addListener(J,"change",function(b){null!=T&&(T(b),mxEvent.consume(b))});var K=mxUtils.button(mxResources.get("edit"),
+function(){null!=y&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(y.documentElement)),b.openLink(b.getUrl(),null,!0))});K.className="geBtn";K.setAttribute("disabled","disabled");null!=d&&(K.style.display="none");var U=mxUtils.button(mxResources.get("show"),function(){null!=B&&b.openLink(B.getUrl(J.selectedIndex))});U.className="geBtn gePrimaryBtn";U.setAttribute("disabled","disabled");null!=d&&(U.style.display="none",O.className="geBtn gePrimaryBtn");
x=document.createElement("div");x.style.position="absolute";x.style.top="482px";x.style.width="640px";x.style.textAlign="right";var P=document.createElement("div");P.className="geToolbarContainer";P.style.backgroundColor="transparent";P.style.padding="2px";P.style.border="none";P.style.left="199px";P.style.top="442px";var S=null;if(null!=e&&0<e.length){k.style.cursor="move";var Y=document.createElement("table");Y.style.border="1px solid lightGray";Y.style.borderCollapse="collapse";Y.style.borderSpacing=
"0px";Y.style.width="100%";var ka=document.createElement("tbody"),aa=(new Date).toDateString();null!=b.currentPage&&null!=b.pages&&(l=mxUtils.indexOf(b.pages,b.currentPage));for(t=e.length-1;0<=t;t--){var ba=function(c){var d=new Date(c.modifiedDate),g=null;if(0<=d.getTime()){var q=function(e){u.stop();n.innerHTML="";var q=mxUtils.parseXml(e),t=b.editor.extractGraphModel(q.documentElement,!0);if(null!=t){var B=function(b){null!=b&&(b=A(Editor.parseDiagramNode(b)));return b},A=function(b){var c=b.getAttribute("background");
-if(null==c||""==c||c==mxConstants.NONE)c=f.defaultPageBackgroundColor;k.style.backgroundColor=c;(new mxCodec(b.ownerDocument)).decode(b,f.getModel());f.maxFitScale=1;f.fit(8);f.center();return b};K.style.display="none";K.innerHTML="";y=q;C=e;m=parseSelectFunction=null;p=0;if("mxfile"==t.nodeName){q=t.getElementsByTagName("diagram");m=[];for(e=0;e<q.length;e++)m.push(q[e]);p=Math.min(l,m.length-1);0<m.length&&B(m[p]);if(1<m.length)for(K.removeAttribute("disabled"),K.style.display="",e=0;e<m.length;e++)q=
-document.createElement("option"),mxUtils.write(q,m[e].getAttribute("name")||mxResources.get("pageWithNumber",[e+1])),q.setAttribute("value",e),e==p&&q.setAttribute("selected","selected"),K.appendChild(q);T=function(){try{var c=parseInt(K.value);p=l=c;B(m[c])}catch(X){K.value=l,b.handleError(X)}}}else A(t);e=c.lastModifyingUserName;null!=e&&20<e.length&&(e=e.substring(0,20)+"...");M.innerHTML="";mxUtils.write(M,(null!=e?e+" ":"")+d.toLocaleDateString()+" "+d.toLocaleTimeString());M.setAttribute("title",
-g.getAttribute("title"));G.removeAttribute("disabled");F.removeAttribute("disabled");D.removeAttribute("disabled");E.removeAttribute("disabled");H.removeAttribute("disabled");null!=v&&v.isRestricted()||(b.editor.graph.isEnabled()&&O.removeAttribute("disabled"),N.removeAttribute("disabled"),U.removeAttribute("disabled"),J.removeAttribute("disabled"));mxUtils.setOpacity(G,60);mxUtils.setOpacity(F,60);mxUtils.setOpacity(D,60);mxUtils.setOpacity(E,60);mxUtils.setOpacity(H,60)}else K.style.display="none",
-K.innerHTML="",M.innerHTML="",mxUtils.write(M,mxResources.get("errorLoadingFile")),mxUtils.write(n,mxResources.get("errorLoadingFile"))},g=document.createElement("tr");g.style.borderBottom="1px solid lightGray";g.style.fontSize="12px";g.style.cursor="pointer";var t=document.createElement("td");t.style.padding="6px";t.style.whiteSpace="nowrap";c==e[e.length-1]?mxUtils.write(t,mxResources.get("current")):d.toDateString()===aa?mxUtils.write(t,d.toLocaleTimeString()):mxUtils.write(t,d.toLocaleDateString()+
+if(null==c||""==c||c==mxConstants.NONE)c=f.defaultPageBackgroundColor;k.style.backgroundColor=c;(new mxCodec(b.ownerDocument)).decode(b,f.getModel());f.maxFitScale=1;f.fit(8);f.center();return b};J.style.display="none";J.innerHTML="";y=q;C=e;m=parseSelectFunction=null;p=0;if("mxfile"==t.nodeName){q=t.getElementsByTagName("diagram");m=[];for(e=0;e<q.length;e++)m.push(q[e]);p=Math.min(l,m.length-1);0<m.length&&B(m[p]);if(1<m.length)for(J.removeAttribute("disabled"),J.style.display="",e=0;e<m.length;e++)q=
+document.createElement("option"),mxUtils.write(q,m[e].getAttribute("name")||mxResources.get("pageWithNumber",[e+1])),q.setAttribute("value",e),e==p&&q.setAttribute("selected","selected"),J.appendChild(q);T=function(){try{var c=parseInt(J.value);p=l=c;B(m[c])}catch(X){J.value=l,b.handleError(X)}}}else A(t);e=c.lastModifyingUserName;null!=e&&20<e.length&&(e=e.substring(0,20)+"...");M.innerHTML="";mxUtils.write(M,(null!=e?e+" ":"")+d.toLocaleDateString()+" "+d.toLocaleTimeString());M.setAttribute("title",
+g.getAttribute("title"));G.removeAttribute("disabled");F.removeAttribute("disabled");D.removeAttribute("disabled");E.removeAttribute("disabled");H.removeAttribute("disabled");null!=v&&v.isRestricted()||(b.editor.graph.isEnabled()&&O.removeAttribute("disabled"),N.removeAttribute("disabled"),U.removeAttribute("disabled"),K.removeAttribute("disabled"));mxUtils.setOpacity(G,60);mxUtils.setOpacity(F,60);mxUtils.setOpacity(D,60);mxUtils.setOpacity(E,60);mxUtils.setOpacity(H,60)}else J.style.display="none",
+J.innerHTML="",M.innerHTML="",mxUtils.write(M,mxResources.get("errorLoadingFile")),mxUtils.write(n,mxResources.get("errorLoadingFile"))},g=document.createElement("tr");g.style.borderBottom="1px solid lightGray";g.style.fontSize="12px";g.style.cursor="pointer";var t=document.createElement("td");t.style.padding="6px";t.style.whiteSpace="nowrap";c==e[e.length-1]?mxUtils.write(t,mxResources.get("current")):d.toDateString()===aa?mxUtils.write(t,d.toLocaleTimeString()):mxUtils.write(t,d.toLocaleDateString()+
" "+d.toLocaleTimeString());g.appendChild(t);g.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString()+(null!=c.fileSize?" "+b.formatFileSize(parseInt(c.fileSize)):"")+(null!=c.lastModifyingUserName?" "+c.lastModifyingUserName:""));mxEvent.addListener(g,"click",function(b){B!=c&&(u.stop(),null!=z&&(z.style.backgroundColor=""),B=c,z=g,z.style.backgroundColor=Editor.isDarkMode()?"#000000":"#ebf2f9",C=y=null,M.removeAttribute("title"),M.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+
-"..."),k.style.backgroundColor=f.defaultPageBackgroundColor,n.innerHTML="",f.getModel().clear(),O.setAttribute("disabled","disabled"),N.setAttribute("disabled","disabled"),G.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"),J.setAttribute("disabled","disabled"),U.setAttribute("disabled","disabled"),K.setAttribute("disabled","disabled"),mxUtils.setOpacity(G,20),
-mxUtils.setOpacity(F,20),mxUtils.setOpacity(D,20),mxUtils.setOpacity(E,20),mxUtils.setOpacity(H,20),u.spin(k),c.getXml(function(b){if(B==c)try{q(b)}catch(W){M.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+W.message)}},function(b){u.stop();K.style.display="none";K.innerHTML="";M.innerHTML="";mxUtils.write(M,mxResources.get("errorLoadingFile"));mxUtils.write(n,mxResources.get("errorLoadingFile"))}),mxEvent.consume(b))});mxEvent.addListener(g,"dblclick",function(b){U.click();window.getSelection?
+"..."),k.style.backgroundColor=f.defaultPageBackgroundColor,n.innerHTML="",f.getModel().clear(),O.setAttribute("disabled","disabled"),N.setAttribute("disabled","disabled"),G.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"),K.setAttribute("disabled","disabled"),U.setAttribute("disabled","disabled"),J.setAttribute("disabled","disabled"),mxUtils.setOpacity(G,20),
+mxUtils.setOpacity(F,20),mxUtils.setOpacity(D,20),mxUtils.setOpacity(E,20),mxUtils.setOpacity(H,20),u.spin(k),c.getXml(function(b){if(B==c)try{q(b)}catch(W){M.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+W.message)}},function(b){u.stop();J.style.display="none";J.innerHTML="";M.innerHTML="";mxUtils.write(M,mxResources.get("errorLoadingFile"));mxUtils.write(n,mxResources.get("errorLoadingFile"))}),mxEvent.consume(b))});mxEvent.addListener(g,"dblclick",function(b){U.click();window.getSelection?
window.getSelection().removeAllRanges():document.selection&&document.selection.empty();mxEvent.consume(b)},!1);ka.appendChild(g)}return g}(e[t]);null!=ba&&t==e.length-1&&(S=ba)}Y.appendChild(ka);g.appendChild(Y)}else null==v||null==b.drive&&v.constructor==window.DriveFile||null==b.dropbox&&v.constructor==window.DropboxFile?(k.style.display="none",P.style.display="none",mxUtils.write(g,mxResources.get("notAvailable"))):(k.style.display="none",P.style.display="none",mxUtils.write(g,mxResources.get("noRevisions")));
-this.init=function(){null!=S&&S.click()};g=mxUtils.button(mxResources.get("close"),function(){b.hideDialog()});g.className="geBtn";P.appendChild(K);P.appendChild(G);P.appendChild(F);P.appendChild(E);P.appendChild(D);P.appendChild(H);b.editor.cancelFirst?(x.appendChild(g),x.appendChild(N),x.appendChild(J),x.appendChild(O),x.appendChild(U)):(x.appendChild(N),x.appendChild(J),x.appendChild(O),x.appendChild(U),x.appendChild(g));c.appendChild(x);c.appendChild(P);c.appendChild(M);this.container=c},DraftDialog=
+this.init=function(){null!=S&&S.click()};g=mxUtils.button(mxResources.get("close"),function(){b.hideDialog()});g.className="geBtn";P.appendChild(J);P.appendChild(G);P.appendChild(F);P.appendChild(E);P.appendChild(D);P.appendChild(H);b.editor.cancelFirst?(x.appendChild(g),x.appendChild(N),x.appendChild(K),x.appendChild(O),x.appendChild(U)):(x.appendChild(N),x.appendChild(K),x.appendChild(O),x.appendChild(U),x.appendChild(g));c.appendChild(x);c.appendChild(P);c.appendChild(M);this.container=c},DraftDialog=
function(b,e,d,c,g,k,n,f,l){var m=document.createElement("div"),p=document.createElement("div");p.style.marginTop="0px";p.style.whiteSpace="nowrap";p.style.overflow="auto";p.style.lineHeight="normal";mxUtils.write(p,e);m.appendChild(p);var q=document.createElement("select"),t=mxUtils.bind(this,function(){B=mxUtils.parseXml(l[q.value].data);y=b.editor.extractGraphModel(B.documentElement,!0);C=0;this.init()});if(null!=l){q.style.marginLeft="4px";for(e=0;e<l.length;e++){var u=document.createElement("option");
u.setAttribute("value",e);var v=new Date(l[e].created),x=new Date(l[e].modified);mxUtils.write(u,v.toLocaleDateString()+" "+v.toLocaleTimeString()+" - "+(v.toDateString(),x.toDateString(),x.toLocaleDateString())+" "+x.toLocaleTimeString());q.appendChild(u)}p.appendChild(q);mxEvent.addListener(q,"change",t)}null==d&&(d=l[0].data);var A=document.createElement("div");A.style.position="absolute";A.style.border="1px solid lightGray";A.style.marginTop="10px";A.style.left="40px";A.style.right="40px";A.style.top=
"46px";A.style.bottom="74px";A.style.overflow="hidden";mxEvent.disableContextMenu(A);m.appendChild(A);var z=new Graph(A);z.setEnabled(!1);z.setPanning(!0);z.panningHandler.ignoreCell=!0;z.panningHandler.useLeftButtonForPanning=!0;z.minFitScale=null;z.maxFitScale=null;z.centerZoom=!0;var B=mxUtils.parseXml(d),y=b.editor.extractGraphModel(B.documentElement,!0),C=0,G=null,F=z.getGlobalVariable;z.getGlobalVariable=function(b){return"page"==b&&null!=G&&null!=G[C]?G[C].getAttribute("name"):"pagenumber"==
@@ -10322,22 +10316,22 @@ D.style.display="none";k=mxUtils.button(k||mxResources.get("edit"),function(){c.
b){var c=b.getAttribute("background");if(null==c||""==c||c==mxConstants.NONE)c=Editor.isDarkMode()?"transparent":"#ffffff";A.style.backgroundColor=c;(new mxCodec(b.ownerDocument)).decode(b,z.getModel());z.maxFitScale=1;z.fit(8);z.center()}return b}function c(c){null!=c&&(c=b(Editor.parseDiagramNode(c)));return c}mxEvent.addListener(D,"change",function(b){C=parseInt(D.value);c(G[C]);mxEvent.consume(b)});if("mxfile"==y.nodeName){var f=y.getElementsByTagName("diagram");G=[];for(var d=0;d<f.length;d++)G.push(f[d]);
0<G.length&&c(G[C]);D.innerHTML="";if(1<G.length)for(D.style.display="",d=0;d<G.length;d++)f=document.createElement("option"),mxUtils.write(f,G[d].getAttribute("name")||mxResources.get("pageWithNumber",[d+1])),f.setAttribute("value",d),d==C&&f.setAttribute("selected","selected"),D.appendChild(f);else D.style.display="none"}else b(y)};x.appendChild(D);x.appendChild(d);x.appendChild(p);x.appendChild(u);x.appendChild(e);d=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog(!0)});d.className=
"geBtn";f=null!=f?mxUtils.button(mxResources.get("ignore"),f):null;null!=f&&(f.className="geBtn");b.editor.cancelFirst?(v.appendChild(d),null!=f&&v.appendChild(f),v.appendChild(n),v.appendChild(k)):(v.appendChild(k),v.appendChild(n),null!=f&&v.appendChild(f),v.appendChild(d));m.appendChild(v);m.appendChild(x);this.container=m},FindWindow=function(b,e,d,c,g,k){function n(b,c,f,d){if("object"===typeof c.value&&null!=c.value.attributes){c=c.value.attributes;for(var e=0;e<c.length;e++)if("label"!=c[e].nodeName){var l=
-mxUtils.trim(c[e].nodeValue.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();if(null==b&&(d&&0<=l.indexOf(f)||!d&&l.substring(0,f.length)===f)||null!=b&&b.test(l))return!0}}return!1}function f(){u&&G.value?(N.removeAttribute("disabled"),O.removeAttribute("disabled")):(N.setAttribute("disabled","disabled"),O.setAttribute("disabled","disabled"));G.value&&C.value?K.removeAttribute("disabled"):K.setAttribute("disabled","disabled")}function l(c,d,e){L.innerHTML="";var m=p.model.getDescendants(p.model.getRoot()),
-g=C.value.toLowerCase(),y=F.checked?new RegExp(g):null,K=null;x=null;q!=g&&(q=g,t=null,v=!1);var B=null==t;if(0<g.length){if(v){v=!1;for(var J,T=0;T<b.pages.length;T++)if(b.currentPage==b.pages[T]){J=T;break}c=(J+1)%b.pages.length;t=null;do v=!1,m=b.pages[c],p=b.createTemporaryGraph(p.getStylesheet()),b.updatePageRoot(m),p.model.setRoot(m.root),c=(c+1)%b.pages.length;while(!l(!0,d,e)&&c!=J);t&&(t=null,e?b.editor.graph.model.execute(new SelectPage(b,m)):b.selectPage(m));v=!1;p=b.editor.graph;return l(!0,
-d,e)}for(T=0;T<m.length;T++){J=p.view.getState(m[T]);d&&null!=y&&(B=B||J==t);if(null!=J&&null!=J.cell.value&&(B||null==K)&&(p.model.isVertex(J.cell)||p.model.isEdge(J.cell))){null!=J.style&&"1"==J.style.html?(E.innerHTML=p.sanitizeHtml(p.getLabel(J.cell)),label=mxUtils.extractTextWithWhitespace([E])):label=p.getLabel(J.cell);label=mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();var P=0;d&&k&&null!=y&&J==t&&(label=label.substr(A),P=A);var z=""==G.value,M=z;if(null==y&&(M&&
-0<=label.indexOf(g)||!M&&label.substring(0,g.length)===g||z&&n(y,J.cell,g,M))||null!=y&&(y.test(label)||z&&n(y,J.cell,g,M)))if(k&&(null!=y?(z=label.match(y),x=z[0].toLowerCase(),A=P+z.index+x.length):(x=g,A=x.length)),B){K=J;break}else null==K&&(K=J)}B=B||J==t}}if(null!=K){if(T==m.length&&D.checked)return t=null,v=!0,l(!0,d,e);t=K;p.scrollCellToVisible(t.cell);p.isEnabled()&&!p.isCellLocked(t.cell)?e||p.getSelectionCell()==t.cell&&1==p.getSelectionCount()||p.setSelectionCell(t.cell):p.highlightCell(t.cell)}else{if(!c&&
-D.checked)return v=!0,l(!0,d,e);p.isEnabled()&&!e&&p.clearSelection()}u=null!=K;k&&!c&&f();return 0==g.length||null!=K}var m=b.actions.get("findReplace"),p=b.editor.graph,q=null,t=null,u=!1,v=!1,x=null,A=0,z=1,B=document.createElement("div");B.style.userSelect="none";B.style.overflow="hidden";B.style.padding="10px";B.style.height="100%";var y=k?"260px":"200px",C=document.createElement("input");C.setAttribute("placeholder",mxResources.get("find"));C.setAttribute("type","text");C.style.marginTop="4px";
+mxUtils.trim(c[e].nodeValue.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();if(null==b&&(d&&0<=l.indexOf(f)||!d&&l.substring(0,f.length)===f)||null!=b&&b.test(l))return!0}}return!1}function f(){u&&G.value?(N.removeAttribute("disabled"),O.removeAttribute("disabled")):(N.setAttribute("disabled","disabled"),O.setAttribute("disabled","disabled"));G.value&&C.value?J.removeAttribute("disabled"):J.setAttribute("disabled","disabled")}function l(c,d,e){L.innerHTML="";var m=p.model.getDescendants(p.model.getRoot()),
+g=C.value.toLowerCase(),y=F.checked?new RegExp(g):null,J=null;x=null;q!=g&&(q=g,t=null,v=!1);var B=null==t;if(0<g.length){if(v){v=!1;for(var K,T=0;T<b.pages.length;T++)if(b.currentPage==b.pages[T]){K=T;break}c=(K+1)%b.pages.length;t=null;do v=!1,m=b.pages[c],p=b.createTemporaryGraph(p.getStylesheet()),b.updatePageRoot(m),p.model.setRoot(m.root),c=(c+1)%b.pages.length;while(!l(!0,d,e)&&c!=K);t&&(t=null,e?b.editor.graph.model.execute(new SelectPage(b,m)):b.selectPage(m));v=!1;p=b.editor.graph;return l(!0,
+d,e)}for(T=0;T<m.length;T++){K=p.view.getState(m[T]);d&&null!=y&&(B=B||K==t);if(null!=K&&null!=K.cell.value&&(B||null==J)&&(p.model.isVertex(K.cell)||p.model.isEdge(K.cell))){null!=K.style&&"1"==K.style.html?(E.innerHTML=p.sanitizeHtml(p.getLabel(K.cell)),label=mxUtils.extractTextWithWhitespace([E])):label=p.getLabel(K.cell);label=mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();var P=0;d&&k&&null!=y&&K==t&&(label=label.substr(A),P=A);var z=""==G.value,M=z;if(null==y&&(M&&
+0<=label.indexOf(g)||!M&&label.substring(0,g.length)===g||z&&n(y,K.cell,g,M))||null!=y&&(y.test(label)||z&&n(y,K.cell,g,M)))if(k&&(null!=y?(z=label.match(y),x=z[0].toLowerCase(),A=P+z.index+x.length):(x=g,A=x.length)),B){J=K;break}else null==J&&(J=K)}B=B||K==t}}if(null!=J){if(T==m.length&&D.checked)return t=null,v=!0,l(!0,d,e);t=J;p.scrollCellToVisible(t.cell);p.isEnabled()&&!p.isCellLocked(t.cell)?e||p.getSelectionCell()==t.cell&&1==p.getSelectionCount()||p.setSelectionCell(t.cell):p.highlightCell(t.cell)}else{if(!c&&
+D.checked)return v=!0,l(!0,d,e);p.isEnabled()&&!e&&p.clearSelection()}u=null!=J;k&&!c&&f();return 0==g.length||null!=J}var m=b.actions.get("findReplace"),p=b.editor.graph,q=null,t=null,u=!1,v=!1,x=null,A=0,z=1,B=document.createElement("div");B.style.userSelect="none";B.style.overflow="hidden";B.style.padding="10px";B.style.height="100%";var y=k?"260px":"200px",C=document.createElement("input");C.setAttribute("placeholder",mxResources.get("find"));C.setAttribute("type","text");C.style.marginTop="4px";
C.style.marginBottom="6px";C.style.width=y;C.style.fontSize="12px";C.style.borderRadius="4px";C.style.padding="6px";B.appendChild(C);mxUtils.br(B);var G;k&&(G=document.createElement("input"),G.setAttribute("placeholder",mxResources.get("replaceWith")),G.setAttribute("type","text"),G.style.marginTop="4px",G.style.marginBottom="6px",G.style.width=y,G.style.fontSize="12px",G.style.borderRadius="4px",G.style.padding="6px",B.appendChild(G),mxUtils.br(B),mxEvent.addListener(G,"input",f));var F=document.createElement("input");
F.setAttribute("id","geFindWinRegExChck");F.setAttribute("type","checkbox");F.style.marginRight="4px";B.appendChild(F);y=document.createElement("label");y.setAttribute("for","geFindWinRegExChck");B.appendChild(y);mxUtils.write(y,mxResources.get("regularExpression"));B.appendChild(y);y=b.menus.createHelpLink("https://www.diagrams.net/doc/faq/find-shapes");y.style.position="relative";y.style.marginLeft="6px";y.style.top="-1px";B.appendChild(y);mxUtils.br(B);var D=document.createElement("input");D.setAttribute("id",
"geFindWinAllPagesChck");D.setAttribute("type","checkbox");D.style.marginRight="4px";B.appendChild(D);y=document.createElement("label");y.setAttribute("for","geFindWinAllPagesChck");B.appendChild(y);mxUtils.write(y,mxResources.get("allPages"));B.appendChild(y);var E=document.createElement("div");mxUtils.br(B);y=document.createElement("div");y.style.left="0px";y.style.right="0px";y.style.marginTop="6px";y.style.padding="0 6px 0 6px";y.style.textAlign="center";B.appendChild(y);var H=mxUtils.button(mxResources.get("reset"),
-function(){L.innerHTML="";C.value="";C.style.backgroundColor="";k&&(G.value="",f());q=t=null;v=!1;C.focus()});H.setAttribute("title",mxResources.get("reset"));H.style["float"]="none";H.style.width="120px";H.style.marginTop="6px";H.style.marginLeft="8px";H.style.overflow="hidden";H.style.textOverflow="ellipsis";H.className="geBtn";k||y.appendChild(H);var I=mxUtils.button(mxResources.get("find"),function(){try{C.style.backgroundColor=l()?"":Editor.isDarkMode()?"#ff0000":"#ffcfcf"}catch(J){b.handleError(J)}});
+function(){L.innerHTML="";C.value="";C.style.backgroundColor="";k&&(G.value="",f());q=t=null;v=!1;C.focus()});H.setAttribute("title",mxResources.get("reset"));H.style["float"]="none";H.style.width="120px";H.style.marginTop="6px";H.style.marginLeft="8px";H.style.overflow="hidden";H.style.textOverflow="ellipsis";H.className="geBtn";k||y.appendChild(H);var I=mxUtils.button(mxResources.get("find"),function(){try{C.style.backgroundColor=l()?"":Editor.isDarkMode()?"#ff0000":"#ffcfcf"}catch(K){b.handleError(K)}});
I.setAttribute("title",mxResources.get("find")+" (Enter)");I.style["float"]="none";I.style.width="120px";I.style.marginTop="6px";I.style.marginLeft="8px";I.style.overflow="hidden";I.style.textOverflow="ellipsis";I.className="geBtn gePrimaryBtn";y.appendChild(I);var L=document.createElement("div");L.style.marginTop="10px";if(k){var M=function(b,c,f,d,e){if(null==e||"1"!=e.html)return d=b.toLowerCase().indexOf(c,d),0>d?b:b.substr(0,d)+f+b.substr(d+c.length);var l=b;c=mxUtils.htmlEntities(c);e=[];var m=
--1;for(b=b.replace(/<br>/ig,"\n");-1<(m=b.indexOf("<",m+1));)e.push(m);m=b.match(/<[^>]*>/g);b=b.replace(/<[^>]*>/g,"");d=b.toLowerCase().indexOf(c,d);if(0>d)return l;l=d+c.length;f=mxUtils.htmlEntities(f);b=b.substr(0,d)+f+b.substr(l);for(var g=0,k=0;k<e.length;k++){if(e[k]-g<d)b=b.substr(0,e[k])+m[k]+b.substr(e[k]);else{var p=e[k]-g<l?d+g:e[k]+(f.length-c.length);b=b.substr(0,p)+m[k]+b.substr(p)}g+=m[k].length}return b.replace(/\n/g,"<br>")},N=mxUtils.button(mxResources.get("replFind"),function(){try{if(null!=
+-1;for(b=b.replace(/<br>/ig,"\n");-1<(m=b.indexOf("<",m+1));)e.push(m);m=b.match(/<[^>]*>/g);b=b.replace(/<[^>]*>/g,"");d=b.toLowerCase().indexOf(c,d);if(0>d)return l;l=d+c.length;f=mxUtils.htmlEntities(f);b=b.substr(0,d)+f+b.substr(l);for(var g=0,p=0;p<e.length;p++){if(e[p]-g<d)b=b.substr(0,e[p])+m[p]+b.substr(e[p]);else{var k=e[p]-g<l?d+g:e[p]+(f.length-c.length);b=b.substr(0,k)+m[p]+b.substr(k)}g+=m[p].length}return b.replace(/\n/g,"<br>")},N=mxUtils.button(mxResources.get("replFind"),function(){try{if(null!=
x&&null!=t&&G.value){var c=t.cell,f=p.getLabel(c);p.isCellEditable(c)&&p.model.setValue(c,M(f,x,G.value,A-x.length,p.getCurrentCellStyle(c)));C.style.backgroundColor=l(!1,!0)?"":Editor.isDarkMode()?"#ff0000":"#ffcfcf"}}catch(P){b.handleError(P)}});N.setAttribute("title",mxResources.get("replFind"));N.style["float"]="none";N.style.width="120px";N.style.marginTop="6px";N.style.marginLeft="8px";N.style.overflow="hidden";N.style.textOverflow="ellipsis";N.className="geBtn gePrimaryBtn";N.setAttribute("disabled",
"disabled");y.appendChild(N);mxUtils.br(y);var O=mxUtils.button(mxResources.get("replace"),function(){try{if(null!=x&&null!=t&&G.value){var c=t.cell,f=p.getLabel(c);p.model.setValue(c,M(f,x,G.value,A-x.length,p.getCurrentCellStyle(c)));N.setAttribute("disabled","disabled");O.setAttribute("disabled","disabled")}}catch(P){b.handleError(P)}});O.setAttribute("title",mxResources.get("replace"));O.style["float"]="none";O.style.width="120px";O.style.marginTop="6px";O.style.marginLeft="8px";O.style.overflow=
-"hidden";O.style.textOverflow="ellipsis";O.className="geBtn gePrimaryBtn";O.setAttribute("disabled","disabled");y.appendChild(O);var K=mxUtils.button(mxResources.get("replaceAll"),function(){L.innerHTML="";if(G.value){var c=b.currentPage,f=b.editor.graph.getSelectionCells();b.editor.graph.rendering=!1;p.getModel().beginUpdate();try{for(var d=0,e={};l(!1,!0,!0)&&100>d;){var m=t.cell,g=p.getLabel(m),k=e[m.id];if(k&&k.replAllMrk==z&&k.replAllPos>=A)break;e[m.id]={replAllMrk:z,replAllPos:A};p.isCellEditable(m)&&
-(p.model.setValue(m,M(g,x,G.value,A-x.length,p.getCurrentCellStyle(m))),d++)}c!=b.currentPage&&b.editor.graph.model.execute(new SelectPage(b,c));mxUtils.write(L,mxResources.get("matchesRepl",[d]))}catch(ba){b.handleError(ba)}finally{p.getModel().endUpdate(),b.editor.graph.setSelectionCells(f),b.editor.graph.rendering=!0}z++}});K.setAttribute("title",mxResources.get("replaceAll"));K.style["float"]="none";K.style.width="120px";K.style.marginTop="6px";K.style.marginLeft="8px";K.style.overflow="hidden";
-K.style.textOverflow="ellipsis";K.className="geBtn gePrimaryBtn";K.setAttribute("disabled","disabled");y.appendChild(K);mxUtils.br(y);y.appendChild(H);H=mxUtils.button(mxResources.get("close"),mxUtils.bind(this,function(){this.window.setVisible(!1)}));H.setAttribute("title",mxResources.get("close"));H.style["float"]="none";H.style.width="120px";H.style.marginTop="6px";H.style.marginLeft="8px";H.style.overflow="hidden";H.style.textOverflow="ellipsis";H.className="geBtn";y.appendChild(H);mxUtils.br(y);
+"hidden";O.style.textOverflow="ellipsis";O.className="geBtn gePrimaryBtn";O.setAttribute("disabled","disabled");y.appendChild(O);var J=mxUtils.button(mxResources.get("replaceAll"),function(){L.innerHTML="";if(G.value){var c=b.currentPage,f=b.editor.graph.getSelectionCells();b.editor.graph.rendering=!1;p.getModel().beginUpdate();try{for(var d=0,e={};l(!1,!0,!0)&&100>d;){var m=t.cell,g=p.getLabel(m),k=e[m.id];if(k&&k.replAllMrk==z&&k.replAllPos>=A)break;e[m.id]={replAllMrk:z,replAllPos:A};p.isCellEditable(m)&&
+(p.model.setValue(m,M(g,x,G.value,A-x.length,p.getCurrentCellStyle(m))),d++)}c!=b.currentPage&&b.editor.graph.model.execute(new SelectPage(b,c));mxUtils.write(L,mxResources.get("matchesRepl",[d]))}catch(ba){b.handleError(ba)}finally{p.getModel().endUpdate(),b.editor.graph.setSelectionCells(f),b.editor.graph.rendering=!0}z++}});J.setAttribute("title",mxResources.get("replaceAll"));J.style["float"]="none";J.style.width="120px";J.style.marginTop="6px";J.style.marginLeft="8px";J.style.overflow="hidden";
+J.style.textOverflow="ellipsis";J.className="geBtn gePrimaryBtn";J.setAttribute("disabled","disabled");y.appendChild(J);mxUtils.br(y);y.appendChild(H);H=mxUtils.button(mxResources.get("close"),mxUtils.bind(this,function(){this.window.setVisible(!1)}));H.setAttribute("title",mxResources.get("close"));H.style["float"]="none";H.style.width="120px";H.style.marginTop="6px";H.style.marginLeft="8px";H.style.overflow="hidden";H.style.textOverflow="ellipsis";H.className="geBtn";y.appendChild(H);mxUtils.br(y);
y.appendChild(L)}else H.style.width="90px",I.style.width="90px";mxEvent.addListener(C,"keyup",function(b){if(91==b.keyCode||93==b.keyCode||17==b.keyCode)mxEvent.consume(b);else if(27==b.keyCode)m.funct();else if(q!=C.value.toLowerCase()||13==b.keyCode)try{C.style.backgroundColor=l()?"":Editor.isDarkMode()?"#ff0000":"#ffcfcf"}catch(U){C.style.backgroundColor=Editor.isDarkMode()?"#ff0000":"#ffcfcf"}});mxEvent.addListener(B,"keydown",function(c){70==c.keyCode&&b.keyHandler.isControlDown(c)&&!mxEvent.isShiftDown(c)&&
(m.funct(),mxEvent.consume(c))});this.window=new mxWindow(mxResources.get("find")+(k?"/"+mxResources.get("replace"):""),B,e,d,c,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);this.window.addListener("show",mxUtils.bind(this,function(){this.window.fit();this.window.isVisible()?(C.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?C.select():document.execCommand("selectAll",!1,null),null!=b.pages&&1<b.pages.length?
D.removeAttribute("disabled"):(D.checked=!1,D.setAttribute("disabled","disabled"))):p.container.focus()}));this.window.setLocation=function(b,c){var f=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;b=Math.max(0,Math.min(b,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));c=Math.max(0,Math.min(c,f-this.table.clientHeight-("1"==urlParams.sketch?3:48)));this.getX()==b&&this.getY()==c||mxWindow.prototype.setLocation.apply(this,
@@ -10382,16 +10376,16 @@ document.createElement("td");mxUtils.write(l,mxResources.get("height")+":");var
1==e.length?mxUtils.getValue(d.getCellStyle(e[0]),mxConstants.STYLE_ROTATION,0):"";m.appendChild(z);f.appendChild(l);f.appendChild(m);n.appendChild(f);k.appendChild(n);g.appendChild(k);c=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});c.className="geBtn";var B=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();d.getModel().beginUpdate();try{for(var c=0;c<e.length;c++){var f=d.getCellGeometry(e[c]);null!=f&&(f=f.clone(),d.isCellMovable(e[c])&&(f.relative=p.checked,
0<mxUtils.trim(q.value).length&&(f.x=Number(q.value)),0<mxUtils.trim(t.value).length&&(f.y=Number(t.value)),0<mxUtils.trim(u.value).length&&(null==f.offset&&(f.offset=new mxPoint),f.offset.x=Number(u.value)),0<mxUtils.trim(v.value).length&&(null==f.offset&&(f.offset=new mxPoint),f.offset.y=Number(v.value))),d.isCellResizable(e[c])&&(0<mxUtils.trim(x.value).length&&(f.width=Number(x.value)),0<mxUtils.trim(A.value).length&&(f.height=Number(A.value))),d.getModel().setGeometry(e[c],f));0<mxUtils.trim(z.value).length&&
d.setCellStyles(mxConstants.STYLE_ROTATION,Number(z.value),[e[c]])}}finally{d.getModel().endUpdate()}});B.className="geBtn gePrimaryBtn";mxEvent.addListener(g,"keypress",function(b){13==b.keyCode&&B.click()});k=document.createElement("div");k.style.marginTop="20px";k.style.textAlign="right";b.editor.cancelFirst?(k.appendChild(c),k.appendChild(B)):(k.appendChild(B),k.appendChild(c));g.appendChild(k);this.container=g},LibraryDialog=function(b,e,d,c,g,k){function n(b){for(b=document.elementFromPoint(b.clientX,
-b.clientY);null!=b&&b.parentNode!=u;)b=b.parentNode;var c=null;if(null!=b)for(var f=u.firstChild,c=0;null!=f&&f!=b;)f=f.nextSibling,c++;return c}function f(c,d,e,l,m,g,k,q,t){try{if(b.spinner.stop(),null==d||"image/"==d.substring(0,6))if(null==c&&null!=k||null==x[c]){var K=function(){F.innerHTML="";F.style.cursor="pointer";F.style.whiteSpace="nowrap";F.style.textOverflow="ellipsis";mxUtils.write(F,null!=H.title&&0<H.title.length?H.title:mxResources.get("untitled"));F.style.color=null==H.title||0==
-H.title.length?"#d0d0d0":""};u.style.backgroundImage="";v.style.display="none";var J=m,E=g;if(m>b.maxImageSize||g>b.maxImageSize){var D=Math.min(1,Math.min(b.maxImageSize/Math.max(1,m)),b.maxImageSize/Math.max(1,g));m*=D;g*=D}J>E?(E=Math.round(100*E/J),J=100):(J=Math.round(100*J/E),E=100);var z=document.createElement("div");z.setAttribute("draggable","true");z.style.display="inline-block";z.style.position="relative";z.style.padding="0 12px";z.style.cursor="move";mxUtils.setPrefixedStyle(z.style,"transition",
-"transform .1s ease-in-out");if(null!=c){var M=document.createElement("img");M.setAttribute("src",y.convert(c));M.style.width=J+"px";M.style.height=E+"px";M.style.margin="10px";M.style.paddingBottom=Math.floor((100-E)/2)+"px";M.style.paddingLeft=Math.floor((100-J)/2)+"px";z.appendChild(M)}else if(null!=k){var G=b.stringToCells(Graph.decompress(k.xml));0<G.length&&(b.sidebar.createThumb(G,100,100,z,null,!0,!1),z.firstChild.style.display="inline-block",z.firstChild.style.cursor="")}var I=document.createElement("img");
+b.clientY);null!=b&&b.parentNode!=u;)b=b.parentNode;var c=null;if(null!=b)for(var f=u.firstChild,c=0;null!=f&&f!=b;)f=f.nextSibling,c++;return c}function f(c,d,e,l,m,g,k,q,t){try{if(b.spinner.stop(),null==d||"image/"==d.substring(0,6))if(null==c&&null!=k||null==x[c]){var J=function(){F.innerHTML="";F.style.cursor="pointer";F.style.whiteSpace="nowrap";F.style.textOverflow="ellipsis";mxUtils.write(F,null!=H.title&&0<H.title.length?H.title:mxResources.get("untitled"));F.style.color=null==H.title||0==
+H.title.length?"#d0d0d0":""};u.style.backgroundImage="";v.style.display="none";var K=m,E=g;if(m>b.maxImageSize||g>b.maxImageSize){var D=Math.min(1,Math.min(b.maxImageSize/Math.max(1,m)),b.maxImageSize/Math.max(1,g));m*=D;g*=D}K>E?(E=Math.round(100*E/K),K=100):(K=Math.round(100*K/E),E=100);var z=document.createElement("div");z.setAttribute("draggable","true");z.style.display="inline-block";z.style.position="relative";z.style.padding="0 12px";z.style.cursor="move";mxUtils.setPrefixedStyle(z.style,"transition",
+"transform .1s ease-in-out");if(null!=c){var M=document.createElement("img");M.setAttribute("src",y.convert(c));M.style.width=K+"px";M.style.height=E+"px";M.style.margin="10px";M.style.paddingBottom=Math.floor((100-E)/2)+"px";M.style.paddingLeft=Math.floor((100-K)/2)+"px";z.appendChild(M)}else if(null!=k){var G=b.stringToCells(Graph.decompress(k.xml));0<G.length&&(b.sidebar.createThumb(G,100,100,z,null,!0,!1),z.firstChild.style.display="inline-block",z.firstChild.style.cursor="")}var I=document.createElement("img");
I.setAttribute("src",Editor.closeBlackImage);I.setAttribute("border","0");I.setAttribute("title",mxResources.get("delete"));I.setAttribute("align","top");I.style.paddingTop="4px";I.style.position="absolute";I.style.marginLeft="-12px";I.style.zIndex="1";I.style.cursor="pointer";mxEvent.addListener(I,"dragstart",function(b){mxEvent.consume(b)});(function(b,c,f){mxEvent.addListener(I,"click",function(d){x[c]=null;for(var e=0;e<p.length;e++)if(null!=p[e].data&&p[e].data==c||null!=p[e].xml&&null!=f&&p[e].xml==
f.xml){p.splice(e,1);break}z.parentNode.removeChild(b);0==p.length&&(u.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",v.style.display="");mxEvent.consume(d)});mxEvent.addListener(I,"dblclick",function(b){mxEvent.consume(b)})})(z,c,k);z.appendChild(I);z.style.marginBottom="30px";var F=document.createElement("div");F.style.position="absolute";F.style.boxSizing="border-box";F.style.bottom="-18px";F.style.left="10px";F.style.right="10px";F.style.backgroundColor=Editor.isDarkMode()?Editor.darkColor:
-"#ffffff";F.style.overflow="hidden";F.style.textAlign="center";var H=null;null!=c?(H={data:c,w:m,h:g,title:t},null!=q&&(H.aspect=q),x[c]=M,p.push(H)):null!=k&&(k.aspect="fixed",p.push(k),H=k);mxEvent.addListener(F,"keydown",function(b){13==b.keyCode&&null!=B&&(B(),B=null,mxEvent.consume(b))});K();z.appendChild(F);mxEvent.addListener(F,"mousedown",function(b){"true"!=F.getAttribute("contentEditable")&&mxEvent.consume(b)});G=function(c){if(mxClient.IS_IOS||mxClient.IS_FF||!(null==document.documentMode||
-9<document.documentMode)){var f=new FilenameDialog(b,H.title||"",mxResources.get("ok"),function(b){null!=b&&(H.title=b,K())},mxResources.get("enterValue"));b.showDialog(f.container,300,80,!0,!0);f.init();mxEvent.consume(c)}else if("true"!=F.getAttribute("contentEditable")){null!=B&&(B(),B=null);if(null==H.title||0==H.title.length)F.innerHTML="";F.style.textOverflow="";F.style.whiteSpace="";F.style.cursor="text";F.style.color="";F.setAttribute("contentEditable","true");mxUtils.setPrefixedStyle(F.style,
-"user-select","text");F.focus();document.execCommand("selectAll",!1,null);B=function(){F.removeAttribute("contentEditable");F.style.cursor="pointer";H.title=F.innerHTML;K()};mxEvent.consume(c)}};mxEvent.addListener(F,"click",G);mxEvent.addListener(z,"dblclick",G);u.appendChild(z);mxEvent.addListener(z,"dragstart",function(b){null==c&&null!=k&&(I.style.visibility="hidden",F.style.visibility="hidden");mxClient.IS_FF&&null!=k.xml&&b.dataTransfer.setData("Text",k.xml);A=n(b);mxClient.IS_GC&&(z.style.opacity=
-"0.9");window.setTimeout(function(){mxUtils.setPrefixedStyle(z.style,"transform","scale(0.5,0.5)");mxUtils.setOpacity(z,30);I.style.visibility="";F.style.visibility=""},0)});mxEvent.addListener(z,"dragend",function(b){"hidden"==I.style.visibility&&(I.style.visibility="",F.style.visibility="");A=null;mxUtils.setOpacity(z,100);mxUtils.setPrefixedStyle(z.style,"transform",null)})}else C||(C=!0,b.handleError({message:mxResources.get("fileExists")}));else{m=!1;try{if(J=mxUtils.parseXml(c),"mxlibrary"==
-J.documentElement.nodeName){E=JSON.parse(mxUtils.getTextContent(J.documentElement));if(null!=E&&0<E.length)for(var N=0;N<E.length;N++)null!=E[N].xml?f(null,null,0,0,0,0,E[N]):f(E[N].data,null,0,0,E[N].w,E[N].h,null,"fixed",E[N].title);m=!0}else if("mxfile"==J.documentElement.nodeName){for(var L=J.documentElement.getElementsByTagName("diagram"),N=0;N<L.length;N++){var E=mxUtils.getTextContent(L[N]),G=b.stringToCells(Graph.decompress(E)),O=b.editor.graph.getBoundingBoxFromGeometry(G);f(null,null,0,
+"#ffffff";F.style.overflow="hidden";F.style.textAlign="center";var H=null;null!=c?(H={data:c,w:m,h:g,title:t},null!=q&&(H.aspect=q),x[c]=M,p.push(H)):null!=k&&(k.aspect="fixed",p.push(k),H=k);mxEvent.addListener(F,"keydown",function(b){13==b.keyCode&&null!=B&&(B(),B=null,mxEvent.consume(b))});J();z.appendChild(F);mxEvent.addListener(F,"mousedown",function(b){"true"!=F.getAttribute("contentEditable")&&mxEvent.consume(b)});G=function(c){if(mxClient.IS_IOS||mxClient.IS_FF||!(null==document.documentMode||
+9<document.documentMode)){var f=new FilenameDialog(b,H.title||"",mxResources.get("ok"),function(b){null!=b&&(H.title=b,J())},mxResources.get("enterValue"));b.showDialog(f.container,300,80,!0,!0);f.init();mxEvent.consume(c)}else if("true"!=F.getAttribute("contentEditable")){null!=B&&(B(),B=null);if(null==H.title||0==H.title.length)F.innerHTML="";F.style.textOverflow="";F.style.whiteSpace="";F.style.cursor="text";F.style.color="";F.setAttribute("contentEditable","true");mxUtils.setPrefixedStyle(F.style,
+"user-select","text");F.focus();document.execCommand("selectAll",!1,null);B=function(){F.removeAttribute("contentEditable");F.style.cursor="pointer";H.title=F.innerHTML;J()};mxEvent.consume(c)}};mxEvent.addListener(F,"click",G);mxEvent.addListener(z,"dblclick",G);u.appendChild(z);mxEvent.addListener(z,"dragstart",function(b){null==c&&null!=k&&(I.style.visibility="hidden",F.style.visibility="hidden");mxClient.IS_FF&&null!=k.xml&&b.dataTransfer.setData("Text",k.xml);A=n(b);mxClient.IS_GC&&(z.style.opacity=
+"0.9");window.setTimeout(function(){mxUtils.setPrefixedStyle(z.style,"transform","scale(0.5,0.5)");mxUtils.setOpacity(z,30);I.style.visibility="";F.style.visibility=""},0)});mxEvent.addListener(z,"dragend",function(b){"hidden"==I.style.visibility&&(I.style.visibility="",F.style.visibility="");A=null;mxUtils.setOpacity(z,100);mxUtils.setPrefixedStyle(z.style,"transform",null)})}else C||(C=!0,b.handleError({message:mxResources.get("fileExists")}));else{m=!1;try{if(K=mxUtils.parseXml(c),"mxlibrary"==
+K.documentElement.nodeName){E=JSON.parse(mxUtils.getTextContent(K.documentElement));if(null!=E&&0<E.length)for(var N=0;N<E.length;N++)null!=E[N].xml?f(null,null,0,0,0,0,E[N]):f(E[N].data,null,0,0,E[N].w,E[N].h,null,"fixed",E[N].title);m=!0}else if("mxfile"==K.documentElement.nodeName){for(var L=K.documentElement.getElementsByTagName("diagram"),N=0;N<L.length;N++){var E=mxUtils.getTextContent(L[N]),G=b.stringToCells(Graph.decompress(E)),O=b.editor.graph.getBoundingBoxFromGeometry(G);f(null,null,0,
0,0,0,{xml:E,w:O.width,h:O.height})}m=!0}}catch(Q){}m||(b.spinner.stop(),b.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(Q){}return null}function l(b){b.dataTransfer.dropEffect=null!=A?"move":"copy";b.stopPropagation();b.preventDefault()}function m(c){c.stopPropagation();c.preventDefault();C=!1;z=n(c);if(null!=A)null!=z&&z<u.children.length?(p.splice(z>A?z-1:z,0,p.splice(A,1)[0]),u.insertBefore(u.children[A],u.children[z])):(p.push(p.splice(A,1)[0]),u.appendChild(u.children[A]));
else if(0<c.dataTransfer.files.length)b.importFiles(c.dataTransfer.files,0,0,b.maxImageSize,G(c));else if(0<=mxUtils.indexOf(c.dataTransfer.types,"text/uri-list")){var d=decodeURIComponent(c.dataTransfer.getData("text/uri-list"));(/(\.jpg)($|\?)/i.test(d)||/(\.png)($|\?)/i.test(d)||/(\.gif)($|\?)/i.test(d)||/(\.svg)($|\?)/i.test(d))&&b.loadImage(d,function(b){f(d,null,0,0,b.width,b.height);u.scrollTop=u.scrollHeight})}c.stopPropagation();c.preventDefault()}var p=[];d=document.createElement("div");
d.style.height="100%";var q=document.createElement("div");q.style.whiteSpace="nowrap";q.style.height="40px";d.appendChild(q);mxUtils.write(q,mxResources.get("filename")+":");null==e&&(e=b.defaultLibraryName+".xml");var t=document.createElement("input");t.setAttribute("value",e);t.style.marginRight="20px";t.style.marginLeft="10px";t.style.width="500px";null==g||g.isRenamable()||t.setAttribute("disabled","true");this.init=function(){if(null==g||g.isRenamable())t.focus(),mxClient.IS_GC||mxClient.IS_FF||
@@ -10413,44 +10407,44 @@ l=l.documentElement.getElementsByTagName("parsererror");if(null!=l&&0<l.length)b
(c.setSelectionCell(f),c.scrollCellToVisible(f))}};d=mxUtils.button(mxResources.get("preview"),function(){u(p,q,!1)});d.className="geBtn";n.appendChild(d);d=mxUtils.button(mxResources.get("apply"),function(){u(b.editor.graph,e,!0)});d.className="geBtn gePrimaryBtn";n.appendChild(d);b.editor.cancelFirst||n.appendChild(g);k.appendChild(n);l.appendChild(k);f.appendChild(l);this.container=f},CustomDialog=function(b,e,d,c,g,k,n,f,l,m,p){var q=document.createElement("div");q.appendChild(e);var t=document.createElement("div");
t.style.marginTop="30px";t.style.textAlign="center";null!=n&&t.appendChild(n);b.isOffline()||null==k||(e=mxUtils.button(mxResources.get("help"),function(){b.openLink(k)}),e.className="geBtn",t.appendChild(e));l=mxUtils.button(l||mxResources.get("cancel"),function(){b.hideDialog();null!=c&&c()});l.className="geBtn";f&&(l.style.display="none");b.editor.cancelFirst&&t.appendChild(l);g=mxUtils.button(g||mxResources.get("ok"),mxUtils.bind(this,function(){m||b.hideDialog(null,null,this.container);if(null!=
d){var c=d();if("string"===typeof c){b.showError(mxResources.get("error"),c);return}}m&&b.hideDialog(null,null,this.container)}));t.appendChild(g);g.className="geBtn gePrimaryBtn";b.editor.cancelFirst||t.appendChild(l);if(null!=p)for(f=0;f<p.length;f++)(function(b,c,f){b=mxUtils.button(b,function(b){c(b)});null!=f&&b.setAttribute("title",f);b.className="geBtn";t.appendChild(b)})(p[f][0],p[f][1],p[f][2]);q.appendChild(t);this.cancelBtn=l;this.okButton=g;this.container=q},TemplatesDialog=function(b,
-e,d,c,g,k,n,f,l,m,p,q,t,u,v){function x(b){ua.innerHTML=mxUtils.htmlEntities(b);ua.style.display="block";setTimeout(function(){ua.style.display="none"},4E3)}function A(){null!=U&&(U.style.fontWeight="normal",U.style.textDecoration="none",P=U,U=null)}function z(b,c,f,d,e,l,m){if(-1<b.className.indexOf("geTempDlgRadioBtnActive"))return!1;b.className+=" geTempDlgRadioBtnActive";K.querySelector(".geTempDlgRadioBtn[data-id="+d+"]").className="geTempDlgRadioBtn "+(m?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");
-K.querySelector("."+c).src="/images/"+f+"-sel.svg";K.querySelector("."+e).src="/images/"+l+".svg";return!0}function B(c,f,d,e){function m(c,f){if(null==k){var d=c,d=/^https?:\/\//.test(d)&&!b.editor.isCorsEnabledForUrl(d)?PROXY_URL+"?url="+encodeURIComponent(d):TEMPLATE_PATH+"/"+d;mxUtils.get(d,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()&&(k=b.getText());f(k)}))}else f(k)}function g(d,e,l){if(null!=d&&mxUtils.isAncestorNode(document.body,f)&&(d=mxUtils.parseXml(d),d=Editor.extractGraphModel(d.documentElement,
+e,d,c,g,k,n,f,l,m,p,q,t,u,v){function x(b){ua.innerHTML=mxUtils.htmlEntities(b);ua.style.display="block";setTimeout(function(){ua.style.display="none"},4E3)}function A(){null!=U&&(U.style.fontWeight="normal",U.style.textDecoration="none",P=U,U=null)}function z(b,c,f,d,e,l,m){if(-1<b.className.indexOf("geTempDlgRadioBtnActive"))return!1;b.className+=" geTempDlgRadioBtnActive";J.querySelector(".geTempDlgRadioBtn[data-id="+d+"]").className="geTempDlgRadioBtn "+(m?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");
+J.querySelector("."+c).src="/images/"+f+"-sel.svg";J.querySelector("."+e).src="/images/"+l+".svg";return!0}function B(c,f,d,e){function m(c,f){if(null==k){var d=c,d=/^https?:\/\//.test(d)&&!b.editor.isCorsEnabledForUrl(d)?PROXY_URL+"?url="+encodeURIComponent(d):TEMPLATE_PATH+"/"+d;mxUtils.get(d,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()&&(k=b.getText());f(k)}))}else f(k)}function g(d,e,l){if(null!=d&&mxUtils.isAncestorNode(document.body,f)&&(d=mxUtils.parseXml(d),d=Editor.extractGraphModel(d.documentElement,
!0),null!=d)){"mxfile"==d.nodeName&&(d=Editor.parseDiagramNode(d.getElementsByTagName("diagram")[0]));var m=new mxCodec(d.ownerDocument),g=new mxGraphModel;m.decode(d,g);d=g.root.getChildAt(0).children||[];b.sidebar.createTooltip(f,d,Math.min((window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-80,1E3),Math.min((window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)-80,800),null!=c.title?mxResources.get(c.title,null,c.title):null,!0,
-new mxPoint(e,l),!0,null,!0);var k=document.createElement("div");k.className="geTempDlgDialogMask";K.appendChild(k);var p=b.sidebar.hideTooltip;b.sidebar.hideTooltip=function(){k&&(K.removeChild(k),k=null,p.apply(this,arguments),b.sidebar.hideTooltip=p)};mxEvent.addListener(k,"click",function(){b.sidebar.hideTooltip()})}}var k=null;if(da||b.sidebar.currentElt==f)b.sidebar.hideTooltip();else{var p=function(c){da&&b.sidebar.currentElt==f&&g(c,mxEvent.getClientX(e),mxEvent.getClientY(e));da=!1;d.src=
+new mxPoint(e,l),!0,null,!0);var k=document.createElement("div");k.className="geTempDlgDialogMask";J.appendChild(k);var p=b.sidebar.hideTooltip;b.sidebar.hideTooltip=function(){k&&(J.removeChild(k),k=null,p.apply(this,arguments),b.sidebar.hideTooltip=p)};mxEvent.addListener(k,"click",function(){b.sidebar.hideTooltip()})}}var k=null;if(da||b.sidebar.currentElt==f)b.sidebar.hideTooltip();else{var p=function(c){da&&b.sidebar.currentElt==f&&g(c,mxEvent.getClientX(e),mxEvent.getClientY(e));da=!1;d.src=
"/images/icon-search.svg"};b.sidebar.hideTooltip();b.sidebar.currentElt=f;da=!0;d.src="/images/aui-wait.gif";c.isExt?l(c,p,function(){x(mxResources.get("cantLoadPrev"));da=!1;d.src="/images/icon-search.svg"}):m(c.url,p)}}function y(b,c,f){if(null!=S){for(var d=S.className.split(" "),e=0;e<d.length;e++)if(-1<d[e].indexOf("Active")){d.splice(e,1);break}S.className=d.join(" ")}null!=b?(S=b,S.className+=" "+c,Y=f,ga.className="geTempDlgCreateBtn"):(Y=S=null,ga.className="geTempDlgCreateBtn geTempDlgBtnDisabled")}
function C(c,f){if(null!=Y){var d=function(c){t.isExternal?l(t,function(b){g(b,c)},k):t.url?mxUtils.get(TEMPLATE_PATH+"/"+t.url,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?g(b.getText(),c):k()})):g(b.emptyDiagramXml,c)},g=function(c,d){v||b.hideDialog(!0);e(c,d,t,f)},k=function(){x(mxResources.get("cannotLoad"));p()},p=function(){Y=t;ga.className="geTempDlgCreateBtn";f&&(ja.className="geTempDlgOpenBtn")},t=Y;Y=null;"boolean"!==typeof f&&(f=t.isExternal&&q);if(1==c)m(t.url,
t);else if(f)ja.className="geTempDlgOpenBtn geTempDlgBtnDisabled geTempDlgBtnBusy",d();else{ga.className="geTempDlgCreateBtn geTempDlgBtnDisabled geTempDlgBtnBusy";var n=null==b.mode||b.mode==App.MODE_GOOGLE||b.mode==App.MODE_BROWSER?mxResources.get("diagramName"):mxResources.get("filename"),n=new FilenameDialog(b,b.defaultFilename+".drawio",mxResources.get("ok"),d,n,function(b){var c=null!=b&&0<b.length;return c&&v?(d(b),!1):c},null,null,null,p,u?null:[]);b.showDialog(n.container,350,80,!0,!0);n.init()}}}
-function G(b){ga.innerHTML=mxUtils.htmlEntities(mxResources.get(Q||b?"create":"copy"));b=b?"none":"";q&&(ja.style.display=b);for(var c=K.querySelectorAll(".geTempDlgLinkToDiagram"),f=0;f<c.length;f++)c[f].style.display=b}function F(c,f,d,e,l){l||(ia.innerHTML="",y(),na=c,pa=e);var m=null;if(d){m=document.createElement("table");m.className="geTempDlgDiagramsListGrid";var g=document.createElement("tr"),k=document.createElement("th");k.style.width="50%";k.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram"));
+function G(b){ga.innerHTML=mxUtils.htmlEntities(mxResources.get(Q||b?"create":"copy"));b=b?"none":"";q&&(ja.style.display=b);for(var c=J.querySelectorAll(".geTempDlgLinkToDiagram"),f=0;f<c.length;f++)c[f].style.display=b}function F(c,f,d,e,l){l||(ia.innerHTML="",y(),na=c,pa=e);var m=null;if(d){m=document.createElement("table");m.className="geTempDlgDiagramsListGrid";var g=document.createElement("tr"),k=document.createElement("th");k.style.width="50%";k.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram"));
g.appendChild(k);k=document.createElement("th");k.style.width="25%";k.innerHTML=mxUtils.htmlEntities(mxResources.get("changedBy"));g.appendChild(k);k=document.createElement("th");k.style.width="25%";k.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn"));g.appendChild(k);m.appendChild(g);ia.appendChild(m)}for(g=0;g<c.length;g++){c[g].isExternal=!f;var p=c[g].url,q=(k=mxUtils.htmlEntities(f?mxResources.get(c[g].title,null,c[g].title):c[g].title))||c[g].url,t=c[g].imgUrl,n=mxUtils.htmlEntities(c[g].changedBy||
-""),K="";c[g].lastModifiedOn&&(K=b.timeSince(new Date(c[g].lastModifiedOn)),null==K&&(K=mxResources.get("lessThanAMinute")),K=mxUtils.htmlEntities(mxResources.get("timeAgo",[K],"{1} ago")));t||(t=TEMPLATE_PATH+"/"+p.substring(0,p.length-4)+".png");p=d?50:15;null!=k&&k.length>p&&(k=k.substring(0,p)+"&hellip;");if(d){var u=document.createElement("tr"),t=document.createElement("td"),v=document.createElement("img");v.src="/images/icon-search.svg";v.className="geTempDlgDiagramListPreviewBtn";v.setAttribute("title",
-mxResources.get("preview"));l||t.appendChild(v);q=document.createElement("span");q.className="geTempDlgDiagramTitle";q.innerHTML=k;t.appendChild(q);u.appendChild(t);t=document.createElement("td");t.innerHTML=n;u.appendChild(t);t=document.createElement("td");t.innerHTML=K;u.appendChild(t);m.appendChild(u);null==S&&(G(f),y(u,"geTempDlgDiagramsListGridActive",c[g]));(function(b,c,d){mxEvent.addListener(u,"click",function(){S!=c&&(G(f),y(c,"geTempDlgDiagramsListGridActive",b))});mxEvent.addListener(u,
+""),J="";c[g].lastModifiedOn&&(J=b.timeSince(new Date(c[g].lastModifiedOn)),null==J&&(J=mxResources.get("lessThanAMinute")),J=mxUtils.htmlEntities(mxResources.get("timeAgo",[J],"{1} ago")));t||(t=TEMPLATE_PATH+"/"+p.substring(0,p.length-4)+".png");p=d?50:15;null!=k&&k.length>p&&(k=k.substring(0,p)+"&hellip;");if(d){var u=document.createElement("tr"),t=document.createElement("td"),v=document.createElement("img");v.src="/images/icon-search.svg";v.className="geTempDlgDiagramListPreviewBtn";v.setAttribute("title",
+mxResources.get("preview"));l||t.appendChild(v);q=document.createElement("span");q.className="geTempDlgDiagramTitle";q.innerHTML=k;t.appendChild(q);u.appendChild(t);t=document.createElement("td");t.innerHTML=n;u.appendChild(t);t=document.createElement("td");t.innerHTML=J;u.appendChild(t);m.appendChild(u);null==S&&(G(f),y(u,"geTempDlgDiagramsListGridActive",c[g]));(function(b,c,d){mxEvent.addListener(u,"click",function(){S!=c&&(G(f),y(c,"geTempDlgDiagramsListGridActive",b))});mxEvent.addListener(u,
"dblclick",C);mxEvent.addListener(v,"click",function(f){B(b,c,d,f)})})(c[g],u,v)}else{var A=document.createElement("div");A.className="geTempDlgDiagramTile";A.setAttribute("title",q);null==S&&(G(f),y(A,"geTempDlgDiagramTileActive",c[g]));n=document.createElement("div");n.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var x=document.createElement("img");x.style.display="none";(function(b,c,f){x.onload=function(){c.className="geTempDlgDiagramTileImg";b.style.display=""};x.onerror=
function(){this.src!=f?this.src=f:c.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(x,n,t?t.replace(".drawio.xml","").replace(".drawio","").replace(".xml",""):"");x.src=t;n.appendChild(x);A.appendChild(n);n=document.createElement("div");n.className="geTempDlgDiagramTileLbl";n.innerHTML=null!=k?k:"";A.appendChild(n);v=document.createElement("img");v.src="/images/icon-search.svg";v.className="geTempDlgDiagramPreviewBtn";v.setAttribute("title",mxResources.get("preview"));l||A.appendChild(v);
-(function(b,c,d){mxEvent.addListener(A,"click",function(){S!=c&&(G(f),y(c,"geTempDlgDiagramTileActive",b))});mxEvent.addListener(A,"dblclick",C);mxEvent.addListener(v,"click",function(f){B(b,c,d,f)})})(c[g],A,v);ia.appendChild(A)}}for(var J in e)c=e[J],0<c.length&&(l=document.createElement("div"),l.className="geTempDlgImportCat",l.innerHTML=mxResources.get(J,null,J),ia.appendChild(l),F(c,f,d,null,!0))}function D(b,c){ea.innerHTML="";y();for(var f=Math.floor(ea.offsetWidth/150)-1,d=!c&&b.length>f?
+(function(b,c,d){mxEvent.addListener(A,"click",function(){S!=c&&(G(f),y(c,"geTempDlgDiagramTileActive",b))});mxEvent.addListener(A,"dblclick",C);mxEvent.addListener(v,"click",function(f){B(b,c,d,f)})})(c[g],A,v);ia.appendChild(A)}}for(var K in e)c=e[K],0<c.length&&(l=document.createElement("div"),l.className="geTempDlgImportCat",l.innerHTML=mxResources.get(K,null,K),ia.appendChild(l),F(c,f,d,null,!0))}function D(b,c){ea.innerHTML="";y();for(var f=Math.floor(ea.offsetWidth/150)-1,d=!c&&b.length>f?
f:b.length,e=0;e<d;e++){var l=b[e];l.isCategory=!0;var m=document.createElement("div"),g=mxResources.get(l.title);null==g&&(g=l.title.substring(0,1).toUpperCase()+l.title.substring(1));m.className="geTempDlgNewDiagramCatItem";m.setAttribute("title",g);g=mxUtils.htmlEntities(g);15<g.length&&(g=g.substring(0,15)+"&hellip;");null==S&&(G(!0),y(m,"geTempDlgNewDiagramCatItemActive",l));var k=document.createElement("div");k.className="geTempDlgNewDiagramCatItemImg";var p=document.createElement("img");p.src=
NEW_DIAGRAM_CATS_PATH+"/"+l.img;k.appendChild(p);m.appendChild(k);k=document.createElement("div");k.className="geTempDlgNewDiagramCatItemLbl";k.innerHTML=g;m.appendChild(k);ea.appendChild(m);(function(b,c){mxEvent.addListener(m,"click",function(){S!=c&&(G(!0),y(c,"geTempDlgNewDiagramCatItemActive",b))});mxEvent.addListener(m,"dblclick",C)})(l,m)}m=document.createElement("div");m.className="geTempDlgNewDiagramCatItem";g=mxResources.get("showAllTemps");m.setAttribute("title",g);k=document.createElement("div");
-k.className="geTempDlgNewDiagramCatItemImg";k.innerHTML="...";k.style.fontSize="32px";m.appendChild(k);k=document.createElement("div");k.className="geTempDlgNewDiagramCatItemLbl";k.innerHTML=g;m.appendChild(k);ea.appendChild(m);mxEvent.addListener(m,"click",function(){function b(){var f=c.querySelector(".geTemplateDrawioCatLink");null!=f?f.click():setTimeout(b,200)}Q=!0;var c=K.querySelector(".geTemplatesList");c.style.display="block";ha.style.width="";oa.style.display="";oa.value="";fa=null;b()});
+k.className="geTempDlgNewDiagramCatItemImg";k.innerHTML="...";k.style.fontSize="32px";m.appendChild(k);k=document.createElement("div");k.className="geTempDlgNewDiagramCatItemLbl";k.innerHTML=g;m.appendChild(k);ea.appendChild(m);mxEvent.addListener(m,"click",function(){function b(){var f=c.querySelector(".geTemplateDrawioCatLink");null!=f?f.click():setTimeout(b,200)}Q=!0;var c=J.querySelector(".geTemplatesList");c.style.display="block";ha.style.width="";oa.style.display="";oa.value="";fa=null;b()});
V.style.display=b.length<=f?"none":""}function E(b,c,f){function d(b,c){var f=mxResources.get(b);null==f&&(f=b.substring(0,1).toUpperCase()+b.substring(1));var d=f+" ("+c.length+")",e=f=mxUtils.htmlEntities(f);15<f.length&&(f=f.substring(0,15)+"&hellip;");return{lbl:f+" ("+c.length+")",fullLbl:d,lblOnly:e}}function e(f,d,e,l,m){mxEvent.addListener(e,"click",function(){U!=e&&(null!=U?(U.style.fontWeight="normal",U.style.textDecoration="none"):(X.style.display="none",ra.style.minHeight="100%"),U=e,
-U.style.fontWeight="bold",U.style.textDecoration="underline",ha.scrollTop=0,T&&(J=!0),W.innerHTML=d,Z.style.display="none",F(m?c[f]:l?qa[f][l]:b[f],m?!1:!0))})}var l=K.querySelector(".geTemplatesList");if(0<f){f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;margin-top: 10px;";mxUtils.write(f,mxResources.get("custom"));l.appendChild(f);for(var m in c){f=document.createElement("div");var g=c[m],g=d(m,g);f.className="geTemplateCatLink";
+U.style.fontWeight="bold",U.style.textDecoration="underline",ha.scrollTop=0,T&&(K=!0),W.innerHTML=d,Z.style.display="none",F(m?c[f]:l?qa[f][l]:b[f],m?!1:!0))})}var l=J.querySelector(".geTemplatesList");if(0<f){f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;margin-top: 10px;";mxUtils.write(f,mxResources.get("custom"));l.appendChild(f);for(var m in c){f=document.createElement("div");var g=c[m],g=d(m,g);f.className="geTemplateCatLink";
f.setAttribute("title",g.fullLbl);f.innerHTML=g.lbl;l.appendChild(f);e(m,g.lblOnly,f,null,!0)}f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;margin-top: 10px;";mxUtils.write(f,"draw.io");l.appendChild(f)}for(m in b){var k=qa[m],p=f=document.createElement(k?"ul":"div"),g=b[m],g=d(m,g);if(null!=k){var q=document.createElement("li"),t=document.createElement("div");t.className="geTempTreeCaret geTemplateCatLink geTemplateDrawioCatLink";
t.style.padding="0";t.setAttribute("title",g.fullLbl);t.innerHTML=g.lbl;p=t;q.appendChild(t);var n=document.createElement("ul");n.className="geTempTreeNested";n.style.visibility="hidden";for(var y in k){var u=document.createElement("li"),v=d(y,k[y]);u.setAttribute("title",v.fullLbl);u.innerHTML=v.lbl;u.className="geTemplateCatLink";u.style.padding="0";u.style.margin="0";e(m,v.lblOnly,u,y);n.appendChild(u)}q.appendChild(n);f.className="geTempTree";f.appendChild(q);(function(b,c){mxEvent.addListener(c,
"click",function(){for(var f=b.querySelectorAll("li"),d=0;d<f.length;d++)f[d].style.margin="";b.style.visibility="visible";b.classList.toggle("geTempTreeActive");b.classList.toggle("geTempTreeNested")&&setTimeout(function(){for(var c=0;c<f.length;c++)f[c].style.margin="0";b.style.visibility="hidden"},250);c.classList.toggle("geTempTreeCaret-down")})})(n,t)}else f.className="geTemplateCatLink geTemplateDrawioCatLink",f.setAttribute("title",g.fullLbl),f.innerHTML=g.lbl;l.appendChild(f);e(m,g.lblOnly,
p)}}function H(){mxUtils.get(c,function(b){if(!ma){ma=!0;b=b.getXml().documentElement.firstChild;for(var c={};null!=b;){if("undefined"!==typeof b.getAttribute)if("clibs"==b.nodeName){for(var f=b.getAttribute("name"),d=b.getElementsByTagName("add"),e=[],l=0;l<d.length;l++)e.push(encodeURIComponent(mxUtils.getTextContent(d[l])));null!=f&&0<e.length&&(c[f]=e.join(";"))}else if(e=b.getAttribute("url"),null!=e){d=b.getAttribute("section");f=b.getAttribute("subsection");if(null==d&&(l=e.indexOf("/"),d=
e.substring(0,l),null==f)){var m=e.indexOf("/",l+1);-1<m&&(f=e.substring(l+1,m))}l=la[d];null==l&&(xa++,l=[],la[d]=l);e=b.getAttribute("clibs");null!=c[e]&&(e=c[e]);e={url:b.getAttribute("url"),libs:b.getAttribute("libs"),title:b.getAttribute("title")||b.getAttribute("name"),preview:b.getAttribute("preview"),clibs:e,tags:b.getAttribute("tags")};l.push(e);null!=f&&(l=qa[d],null==l&&(l={},qa[d]=l),d=l[f],null==d&&(d=[],l[f]=d),d.push(e))}b=b.nextSibling}E(la,ta,Ba)}})}function I(b){n&&(ha.scrollTop=
-0,ia.innerHTML="",R.spin(ia),J=!1,T=!0,W.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag")),fa=null,n(wa,function(){x(mxResources.get("cannotLoad"));wa([])},b?null:k))}function L(b){if(""==b)null!=P&&(P.click(),P=null);else{if(null==TemplatesDialog.tagsList[c]){var f={},d;for(d in la)for(var e=la[d],l=0;l<e.length;l++){var m=e[l];if(null!=m.tags)for(var g=m.tags.toLowerCase().split(";"),k=0;k<g.length;k++)null==f[g[k]]&&(f[g[k]]=[]),f[g[k]].push(m)}TemplatesDialog.tagsList[c]=f}var p=b.toLowerCase().split(" "),
+0,ia.innerHTML="",R.spin(ia),K=!1,T=!0,W.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag")),fa=null,n(wa,function(){x(mxResources.get("cannotLoad"));wa([])},b?null:k))}function L(b){if(""==b)null!=P&&(P.click(),P=null);else{if(null==TemplatesDialog.tagsList[c]){var f={},d;for(d in la)for(var e=la[d],l=0;l<e.length;l++){var m=e[l];if(null!=m.tags)for(var g=m.tags.toLowerCase().split(";"),k=0;k<g.length;k++)null==f[g[k]]&&(f[g[k]]=[]),f[g[k]].push(m)}TemplatesDialog.tagsList[c]=f}var p=b.toLowerCase().split(" "),
f=TemplatesDialog.tagsList[c];if(0<Ba&&null==f.__tagsList__){for(d in ta)for(e=ta[d],l=0;l<e.length;l++)for(m=e[l],g=m.title.split(" "),g.push(d),k=0;k<g.length;k++){var q=g[k].toLowerCase();null==f[q]&&(f[q]=[]);f[q].push(m)}f.__tagsList__=!0}d=[];e={};for(l=g=0;l<p.length;l++)if(0<p[l].length){var q=f[p[l]],t={};d=[];if(null!=q)for(k=0;k<q.length;k++)m=q[k],0==g==(null==e[m.url])&&(t[m.url]=!0,d.push(m));e=t;g++}0==d.length?W.innerHTML=mxResources.get("noResultsFor",[b]):F(d,!0)}}function M(b){if(fa!=
-b||aa!=ca)A(),ha.scrollTop=0,ia.innerHTML="",W.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults"))+' "'+mxUtils.htmlEntities(b)+'"',za=null,Q?L(b):f&&(b?(R.spin(ia),J=!1,T=!0,f(b,wa,function(){x(mxResources.get("searchFailed"));wa([])},aa?null:k)):I(aa)),fa=b,ca=aa}function N(b){null!=za&&clearTimeout(za);13==b.keyCode?M(oa.value):za=setTimeout(function(){M(oa.value)},1E3)}var O='<div class="geTempDlgHeader"><img src="/images/draw.io-logo.svg" class="geTempDlgHeaderLogo"><input type="search" class="geTempDlgSearchBox" '+
+b||aa!=ca)A(),ha.scrollTop=0,ia.innerHTML="",W.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults"))+' "'+mxUtils.htmlEntities(b)+'"',za=null,Q?L(b):f&&(b?(R.spin(ia),K=!1,T=!0,f(b,wa,function(){x(mxResources.get("searchFailed"));wa([])},aa?null:k)):I(aa)),fa=b,ca=aa}function N(b){null!=za&&clearTimeout(za);13==b.keyCode?M(oa.value):za=setTimeout(function(){M(oa.value)},1E3)}var O='<div class="geTempDlgHeader"><img src="/images/draw.io-logo.svg" class="geTempDlgHeaderLogo"><input type="search" class="geTempDlgSearchBox" '+
(f?"":'style="display: none"')+' placeholder="'+mxResources.get("search")+'"></div><div class="geTemplatesList" style="display: none"><div class="geTempDlgBack">&lt; '+mxResources.get("back")+'</div><div class="geTempDlgHLine"></div><div class="geTemplatesLbl">'+mxResources.get("templates")+'</div></div><div class="geTempDlgContent" style="width: 100%"><div class="geTempDlgNewDiagramCat"><div class="geTempDlgNewDiagramCatLbl">'+mxResources.get("newDiagram")+'</div><div class="geTempDlgNewDiagramCatList"></div><div class="geTempDlgNewDiagramCatFooter"><div class="geTempDlgShowAllBtn">'+
mxResources.get("showMore")+'</div></div></div><div class="geTempDlgDiagramsList"><div class="geTempDlgDiagramsListHeader"><div class="geTempDlgDiagramsListTitle"></div><div class="geTempDlgDiagramsListBtns"><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge" data-id="myDiagramsBtn"><img src="/images/my-diagrams.svg" class="geTempDlgMyDiagramsBtnImg"> <span>'+mxResources.get("myDiagrams")+'</span></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge geTempDlgRadioBtnActive" data-id="allDiagramsBtn"><img src="/images/all-diagrams-sel.svg" class="geTempDlgAllDiagramsBtnImg"> <span>'+
mxResources.get("allDiagrams")+'</span></div><div class="geTempDlgSpacer"> </div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall geTempDlgRadioBtnActive" data-id="tilesBtn"><img src="/images/tiles-sel.svg" class="geTempDlgTilesBtnImg"></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall" data-id="listBtn"><img src="/images/list.svg" class="geTempDlgListBtnImg"></div></div></div><div class="geTempDlgDiagramsTiles"></div></div></div><br style="clear:both;"/><div class="geTempDlgFooter"><div class="geTempDlgErrMsg"></div>'+
-(t?'<span class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramHint">'+mxResources.get("linkToDiagramHint")+'</span><button class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramBtn">'+mxResources.get("linkToDiagram")+"</button>":"")+(q?'<div class="geTempDlgOpenBtn">'+mxResources.get("open")+"</div>":"")+'<div class="geTempDlgCreateBtn">'+mxResources.get("create")+'</div><div class="geTempDlgCancelBtn">'+mxResources.get("cancel")+"</div></div>",K=document.createElement("div");K.innerHTML=O;K.className=
-"geTemplateDlg";this.container=K;c=null!=c?c:TEMPLATE_PATH+"/index.xml";g=null!=g?g:NEW_DIAGRAM_CATS_PATH+"/index.xml";var T=!1,J=!1,U=null,P=null,S=null,Y=null,ka=!1,aa=!0,ba=!1,na=[],pa=null,fa,ca,Q=!1,V=K.querySelector(".geTempDlgShowAllBtn"),ia=K.querySelector(".geTempDlgDiagramsTiles"),W=K.querySelector(".geTempDlgDiagramsListTitle"),Z=K.querySelector(".geTempDlgDiagramsListBtns"),ha=K.querySelector(".geTempDlgContent"),ra=K.querySelector(".geTempDlgDiagramsList"),X=K.querySelector(".geTempDlgNewDiagramCat"),
-ea=K.querySelector(".geTempDlgNewDiagramCatList"),ga=K.querySelector(".geTempDlgCreateBtn"),ja=K.querySelector(".geTempDlgOpenBtn"),oa=K.querySelector(".geTempDlgSearchBox"),ua=K.querySelector(".geTempDlgErrMsg"),R=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"50px",zIndex:2E9});mxEvent.addListener(K.querySelector(".geTempDlgBack"),"click",function(){A();Q=!1;K.querySelector(".geTemplatesList").style.display="none";ha.style.width=
-"100%";X.style.display="";ra.style.minHeight="calc(100% - 280px)";oa.style.display=f?"":"none";oa.value="";fa=null;I(aa)});mxEvent.addListener(K.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){z(this,"geTempDlgAllDiagramsBtnImg","all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(aa=!0,null==fa?I(aa):M(fa))});mxEvent.addListener(K.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){z(this,"geTempDlgMyDiagramsBtnImg",
-"my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(aa=!1,null==fa?I(aa):M(fa))});mxEvent.addListener(K.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){z(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg","tiles",!1)&&(ba=!0,F(na,!1,ba,pa))});mxEvent.addListener(K.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){z(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(ba=!1,F(na,
+(t?'<span class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramHint">'+mxResources.get("linkToDiagramHint")+'</span><button class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramBtn">'+mxResources.get("linkToDiagram")+"</button>":"")+(q?'<div class="geTempDlgOpenBtn">'+mxResources.get("open")+"</div>":"")+'<div class="geTempDlgCreateBtn">'+mxResources.get("create")+'</div><div class="geTempDlgCancelBtn">'+mxResources.get("cancel")+"</div></div>",J=document.createElement("div");J.innerHTML=O;J.className=
+"geTemplateDlg";this.container=J;c=null!=c?c:TEMPLATE_PATH+"/index.xml";g=null!=g?g:NEW_DIAGRAM_CATS_PATH+"/index.xml";var T=!1,K=!1,U=null,P=null,S=null,Y=null,ka=!1,aa=!0,ba=!1,na=[],pa=null,fa,ca,Q=!1,V=J.querySelector(".geTempDlgShowAllBtn"),ia=J.querySelector(".geTempDlgDiagramsTiles"),W=J.querySelector(".geTempDlgDiagramsListTitle"),Z=J.querySelector(".geTempDlgDiagramsListBtns"),ha=J.querySelector(".geTempDlgContent"),ra=J.querySelector(".geTempDlgDiagramsList"),X=J.querySelector(".geTempDlgNewDiagramCat"),
+ea=J.querySelector(".geTempDlgNewDiagramCatList"),ga=J.querySelector(".geTempDlgCreateBtn"),ja=J.querySelector(".geTempDlgOpenBtn"),oa=J.querySelector(".geTempDlgSearchBox"),ua=J.querySelector(".geTempDlgErrMsg"),R=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"50px",zIndex:2E9});mxEvent.addListener(J.querySelector(".geTempDlgBack"),"click",function(){A();Q=!1;J.querySelector(".geTemplatesList").style.display="none";ha.style.width=
+"100%";X.style.display="";ra.style.minHeight="calc(100% - 280px)";oa.style.display=f?"":"none";oa.value="";fa=null;I(aa)});mxEvent.addListener(J.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){z(this,"geTempDlgAllDiagramsBtnImg","all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(aa=!0,null==fa?I(aa):M(fa))});mxEvent.addListener(J.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){z(this,"geTempDlgMyDiagramsBtnImg",
+"my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(aa=!1,null==fa?I(aa):M(fa))});mxEvent.addListener(J.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){z(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg","tiles",!1)&&(ba=!0,F(na,!1,ba,pa))});mxEvent.addListener(J.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){z(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(ba=!1,F(na,
!1,ba,pa))});var da=!1;mxEvent.addListener(V,"click",function(){ka?(X.style.height="280px",ea.style.height="190px",V.innerHTML=mxUtils.htmlEntities(mxResources.get("showMore")),D(va)):(X.style.height="440px",ea.style.height="355px",V.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess")),D(va,!0));ka=!ka});var ma=!1,sa=!1,la={},qa={},ta={},va=[],xa=1,Ba=0;null!=p?p(function(b,c){ta=b;Ba=c;H()},H):H();mxUtils.get(g,function(b){if(!sa){sa=!0;for(b=b.getXml().documentElement.firstChild;null!=b;)"undefined"!==
-typeof b.getAttribute&&null!=b.getAttribute("title")&&va.push({img:b.getAttribute("img"),libs:b.getAttribute("libs"),clibs:b.getAttribute("clibs"),title:b.getAttribute("title")}),b=b.nextSibling;D(va)}});var wa=function(b,c,f){Z.style.display="";R.stop();T=!1;if(J)J=!1;else if(c)ia.innerHTML=c;else{f=f||{};c=0;for(var d in f)c+=f[d].length;0==b.length&&0==c?ia.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams")):F(b,!1,ba,0==c?null:f)}};I(aa);var za=null;mxEvent.addListener(oa,"keyup",N);
-mxEvent.addListener(oa,"search",N);mxEvent.addListener(oa,"input",N);mxEvent.addListener(ga,"click",function(b){C(!1,!1)});q&&mxEvent.addListener(ja,"click",function(b){C(!1,!0)});t&&mxEvent.addListener(K.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(b){C(!0)});mxEvent.addListener(K.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=d&&d();v||b.hideDialog(!0)})};TemplatesDialog.tagsList={};
+typeof b.getAttribute&&null!=b.getAttribute("title")&&va.push({img:b.getAttribute("img"),libs:b.getAttribute("libs"),clibs:b.getAttribute("clibs"),title:b.getAttribute("title")}),b=b.nextSibling;D(va)}});var wa=function(b,c,f){Z.style.display="";R.stop();T=!1;if(K)K=!1;else if(c)ia.innerHTML=c;else{f=f||{};c=0;for(var d in f)c+=f[d].length;0==b.length&&0==c?ia.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams")):F(b,!1,ba,0==c?null:f)}};I(aa);var za=null;mxEvent.addListener(oa,"keyup",N);
+mxEvent.addListener(oa,"search",N);mxEvent.addListener(oa,"input",N);mxEvent.addListener(ga,"click",function(b){C(!1,!1)});q&&mxEvent.addListener(ja,"click",function(b){C(!1,!0)});t&&mxEvent.addListener(J.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(b){C(!0)});mxEvent.addListener(J.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=d&&d();v||b.hideDialog(!0)})};TemplatesDialog.tagsList={};
var BtnDialog=function(b,e,d,c){var g=document.createElement("div");g.style.textAlign="center";var k=document.createElement("p");k.style.fontSize="16pt";k.style.padding="0px";k.style.margin="0px";k.style.color="gray";mxUtils.write(k,mxResources.get("done"));var n="Unknown",f=document.createElement("img");f.setAttribute("border","0");f.setAttribute("align","absmiddle");f.style.marginRight="10px";e==b.drive?(n=mxResources.get("googleDrive"),f.src=IMAGE_PATH+"/google-drive-logo-white.svg"):e==b.dropbox?
(n=mxResources.get("dropbox"),f.src=IMAGE_PATH+"/dropbox-logo-white.svg"):e==b.oneDrive?(n=mxResources.get("oneDrive"),f.src=IMAGE_PATH+"/onedrive-logo-white.svg"):e==b.gitHub?(n=mxResources.get("github"),f.src=IMAGE_PATH+"/github-logo-white.svg"):e==b.gitLab?(n=mxResources.get("gitlab"),f.src=IMAGE_PATH+"/gitlab-logo.svg"):e==b.notion?(n=mxResources.get("notion"),f.src=IMAGE_PATH+"/notion-logo.svg"):e==b.trello&&(n=mxResources.get("trello"),f.src=IMAGE_PATH+"/trello-logo-white.svg");b=document.createElement("p");
mxUtils.write(b,mxResources.get("authorizedIn",[n],"You are now authorized in {1}"));d=mxUtils.button(d,c);d.insertBefore(f,d.firstChild);d.style.marginTop="6px";d.className="geBigButton";d.style.fontSize="18px";d.style.padding="14px";g.appendChild(k);g.appendChild(b);g.appendChild(d);this.container=g},FontDialog=function(b,e,d,c,g){function k(b){this.style.border="";13==b.keyCode&&B.click()}var n,f,l,m=document.createElement("table"),p=document.createElement("tbody");m.style.marginTop="8px";n=document.createElement("tr");
@@ -10494,6 +10488,7 @@ Editor.commentImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53M
Editor.shareImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTggMTYuMDhjLS43NiAwLTEuNDQuMy0xLjk2Ljc3TDguOTEgMTIuN2MuMDUtLjIzLjA5LS40Ni4wOS0uN3MtLjA0LS40Ny0uMDktLjdsNy4wNS00LjExYy41NC41IDEuMjUuODEgMi4wNC44MSAxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzYzAgLjI0LjA0LjQ3LjA5LjdMOC4wNCA5LjgxQzcuNSA5LjMxIDYuNzkgOSA2IDljLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDNjLjc5IDAgMS41LS4zMSAyLjA0LS44MWw3LjEyIDQuMTZjLS4wNS4yMS0uMDguNDMtLjA4LjY1IDAgMS42MSAxLjMxIDIuOTIgMi45MiAyLjkyIDEuNjEgMCAyLjkyLTEuMzEgMi45Mi0yLjkycy0xLjMxLTIuOTItMi45Mi0yLjkyeiIvPjwvc3ZnPg==";
Editor.syncImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgNFYxTDggNWw0IDRWNmMzLjMxIDAgNiAyLjY5IDYgNiAwIDEuMDEtLjI1IDEuOTctLjcgMi44bDEuNDYgMS40NkMxOS41NCAxNS4wMyAyMCAxMy41NyAyMCAxMmMwLTQuNDItMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTYgMC0xLjAxLjI1LTEuOTcuNy0yLjhMNS4yNCA3Ljc0QzQuNDYgOC45NyA0IDEwLjQzIDQgMTJjMCA0LjQyIDMuNTggOCA4IDh2M2w0LTQtNC00djN6Ii8+PC9zdmc+";Editor.syncDisabledImage=
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTAgNi4zNVY0LjI2Yy0uOC4yMS0xLjU1LjU0LTIuMjMuOTZsMS40NiAxLjQ2Yy4yNS0uMTIuNS0uMjQuNzctLjMzem0tNy4xNC0uOTRsMi4zNiAyLjM2QzQuNDUgOC45OSA0IDEwLjQ0IDQgMTJjMCAyLjIxLjkxIDQuMiAyLjM2IDUuNjRMNCAyMGg2di02bC0yLjI0IDIuMjRDNi42OCAxNS4xNSA2IDEzLjY2IDYgMTJjMC0xIC4yNS0xLjk0LjY4LTIuNzdsOC4wOCA4LjA4Yy0uMjUuMTMtLjUuMjUtLjc3LjM0djIuMDljLjgtLjIxIDEuNTUtLjU0IDIuMjMtLjk2bDIuMzYgMi4zNiAxLjI3LTEuMjdMNC4xNCA0LjE0IDIuODYgNS40MXpNMjAgNGgtNnY2bDIuMjQtMi4yNEMxNy4zMiA4Ljg1IDE4IDEwLjM0IDE4IDEyYzAgMS0uMjUgMS45NC0uNjggMi43N2wxLjQ2IDEuNDZDMTkuNTUgMTUuMDEgMjAgMTMuNTYgMjAgMTJjMC0yLjIxLS45MS00LjItMi4zNi01LjY0TDIwIDR6Ii8+PC9zdmc+";
+Editor.calendarImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxwYXRoIGQ9Ik0wLDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPjwvZz48Zz48cGF0aCBkPSJNMjAsNEg0QzIuOSw0LDIsNC45LDIsNnYxMmMwLDEuMSwwLjksMiwyLDJoMTZjMS4xLDAsMi0wLjksMi0yVjZDMjIsNC45LDIxLjEsNCwyMCw0eiBNOCwxMUg0VjZoNFYxMXogTTE0LDExaC00VjZoNFYxMXogTTIwLDExaC00VjZoNFYxMXogTTgsMThINHYtNWg0VjE4eiBNMTQsMThoLTR2LTVoNFYxOHogTTIwLDE4aC00di01aDRWMTh6Ii8+PC9nPjwvc3ZnPg==";
Editor.syncProblemImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyAxMmMwIDIuMjEuOTEgNC4yIDIuMzYgNS42NEwzIDIwaDZ2LTZsLTIuMjQgMi4yNEM1LjY4IDE1LjE1IDUgMTMuNjYgNSAxMmMwLTIuNjEgMS42Ny00LjgzIDQtNS42NVY0LjI2QzUuNTUgNS4xNSAzIDguMjcgMyAxMnptOCA1aDJ2LTJoLTJ2MnpNMjEgNGgtNnY2bDIuMjQtMi4yNEMxOC4zMiA4Ljg1IDE5IDEwLjM0IDE5IDEyYzAgMi42MS0xLjY3IDQuODMtNCA1LjY1djIuMDljMy40NS0uODkgNi00LjAxIDYtNy43NCAwLTIuMjEtLjkxLTQuMi0yLjM2LTUuNjRMMjEgNHptLTEwIDloMlY3aC0ydjZ6Ii8+PC9zdmc+";
Editor.drawLogoImage="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJFYmVuZV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjUwIDI1MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjUwIDI1MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MntmaWxsOiMwMDA7fQo8L3N0eWxlPgo8cGF0aCBjbGFzcz0ic3QyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDE1KSIgZD0iTTE5Ny4xLDEzOC4zaC0yMy43bC0yNS00Mi43YzUuNy0xLjIsOS44LTYuMiw5LjctMTJWNTEuNWMwLTYuOC01LjQtMTIuMy0xMi4yLTEyLjNjMCwwLTAuMSwwLTAuMSwwaC00MS43CgljLTYuOCwwLTEyLjMsNS40LTEyLjMsMTIuMmMwLDAsMCwwLjEsMCwwLjF2MzIuMWMwLDUuOCw0LDEwLjgsOS43LDEybC0yNSw0Mi43SDUyLjljLTYuOCwwLTEyLjMsNS40LTEyLjMsMTIuMmMwLDAsMCwwLjEsMCwwLjEKCXYzMi4xYzAsNi44LDUuNCwxMi4zLDEyLjIsMTIuM2MwLDAsMC4xLDAsMC4xLDBoNDEuN2M2LjgsMCwxMi4zLTUuNCwxMi4zLTEyLjJjMCwwLDAtMC4xLDAtMC4xdi0zMi4xYzAtNi44LTUuNC0xMi4zLTEyLjItMTIuMwoJYzAsMC0wLjEsMC0wLjEsMGgtNGwyNC44LTQyLjRoMTkuM2wyNC45LDQyLjRoLTQuMWMtNi44LDAtMTIuMyw1LjQtMTIuMywxMi4yYzAsMCwwLDAuMSwwLDAuMXYzMi4xYzAsNi44LDUuNCwxMi4zLDEyLjIsMTIuMwoJYzAsMCwwLjEsMCwwLjEsMGg0MS43YzYuOCwwLDEyLjMtNS40LDEyLjMtMTIuMmMwLDAsMC0wLjEsMC0wLjF2LTMyLjFjMC02LjgtNS40LTEyLjMtMTIuMi0xMi4zCglDMTk3LjIsMTM4LjMsMTk3LjIsMTM4LjMsMTk3LjEsMTM4LjN6Ii8+Cjwvc3ZnPgo=";
Editor.tailSpin="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9Ii0yIC0yIDQ0IDQ0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSI4LjA0MiUiIHkxPSIwJSIgeDI9IjY1LjY4MiUiIHkyPSIyMy44NjUlIiBpZD0iYSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiM4MDgwODAiIHN0b3Atb3BhY2l0eT0iMCIgb2Zmc2V0PSIwJSIvPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjODA4MDgwIiBzdG9wLW9wYWNpdHk9Ii42MzEiIG9mZnNldD0iNjMuMTQ2JSIvPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjODA4MDgwIiBvZmZzZXQ9IjEwMCUiLz4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEpIj4KICAgICAgICAgICAgPHBhdGggZD0iTTM2IDE4YzAtOS45NC04LjA2LTE4LTE4LTE4IiBzdHJva2U9InVybCgjYSkiIHN0cm9rZS13aWR0aD0iNiI+CiAgICAgICAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybQogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIKICAgICAgICAgICAgICAgICAgICB0eXBlPSJyb3RhdGUiCiAgICAgICAgICAgICAgICAgICAgZnJvbT0iMCAxOCAxOCIKICAgICAgICAgICAgICAgICAgICB0bz0iMzYwIDE4IDE4IgogICAgICAgICAgICAgICAgICAgIGR1cj0iMC45cyIKICAgICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4KICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICA8Y2lyY2xlIGZpbGw9IiM4MDgwODAiIGN4PSIzNiIgY3k9IjE4IiByPSIxIj4KICAgICAgICAgICAgICAgIDxhbmltYXRlVHJhbnNmb3JtCiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIgogICAgICAgICAgICAgICAgICAgIHR5cGU9InJvdGF0ZSIKICAgICAgICAgICAgICAgICAgICBmcm9tPSIwIDE4IDE4IgogICAgICAgICAgICAgICAgICAgIHRvPSIzNjAgMTggMTgiCiAgICAgICAgICAgICAgICAgICAgZHVyPSIwLjlzIgogICAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPgogICAgICAgICAgICA8L2NpcmNsZT4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPgo=";
@@ -10594,8 +10589,8 @@ b+'";src: url("'+c+'")}'})(c[l].name,c[l].url);e()}else b()};Editor.prototype.ad
d.createElementNS(mxConstants.NS_SVG,"defs"):d.createElement("defs"),null!=b.firstChild?b.insertBefore(f,b.firstChild):b.appendChild(f)):f=f[0];d=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"style"):d.createElement("style");d.setAttribute("type","text/css");mxUtils.setTextContent(d,c);f.appendChild(d)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(b,c,f){var d=mxClient.IS_FF?8192:16384;
return Math.min(f,Math.min(d/b,d/c))};Editor.prototype.exportToCanvas=function(b,c,f,d,e,l,m,g,k,p,q,t,n,y,u,v,B,A){try{l=null!=l?l:!0;m=null!=m?m:!0;t=null!=t?t:this.graph;n=null!=n?n:0;var x=k?null:t.background;x==mxConstants.NONE&&(x=null);null==x&&(x=d);null==x&&0==k&&(x=v?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(t.getSvg(null,null,n,y,null,m,null,null,null,p,null,v,B,A),mxUtils.bind(this,function(f){try{var d=new Image;d.onload=mxUtils.bind(this,function(){try{var m=
function(){mxClient.IS_SF?window.setTimeout(function(){y.drawImage(d,0,0);b(k,f)},0):(y.drawImage(d,0,0),b(k,f))},k=document.createElement("canvas"),p=parseInt(f.getAttribute("width")),q=parseInt(f.getAttribute("height"));g=null!=g?g:1;null!=c&&(g=l?Math.min(1,Math.min(3*c/(4*q),c/p)):c/p);g=this.getMaxCanvasScale(p,q,g);p=Math.ceil(g*p);q=Math.ceil(g*q);k.setAttribute("width",p);k.setAttribute("height",q);var y=k.getContext("2d");null!=x&&(y.beginPath(),y.rect(0,0,p,q),y.fillStyle=x,y.fill());1!=
-g&&y.scale(g,g);if(u){var v=t.view,B=v.scale;v.scale=1;var A=btoa(unescape(encodeURIComponent(v.createSvgGrid(v.gridColor))));v.scale=B;var A="data:image/svg+xml;base64,"+A,C=t.gridSize*v.gridSteps*g,E=t.getGraphBounds(),K=v.translate.x*B,z=v.translate.y*B,M=K+(E.x-K)/B-n,D=z+(E.y-z)/B-n,J=new Image;J.onload=function(){try{for(var b=-Math.round(C-mxUtils.mod((K-M)*g,C)),c=-Math.round(C-mxUtils.mod((z-D)*g,C));b<p;b+=C)for(var f=c;f<q;f+=C)y.drawImage(J,b/g,f/g);m()}catch(ya){null!=e&&e(ya)}};J.onerror=
-function(b){null!=e&&e(b)};J.src=A}else m()}catch(wa){null!=e&&e(wa)}});d.onerror=function(b){null!=e&&e(b)};p&&this.graph.addSvgShadow(f);this.graph.mathEnabled&&this.addMathCss(f);var m=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(f,this.resolvedFontCss),d.src=Editor.createSvgDataUri(mxUtils.getXml(f))}catch(ea){null!=e&&e(ea)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(f,b),this.loadFonts(m)}catch(ga){null!=e&&e(ga)}}))}catch(ea){null!=
+g&&y.scale(g,g);if(u){var v=t.view,B=v.scale;v.scale=1;var A=btoa(unescape(encodeURIComponent(v.createSvgGrid(v.gridColor))));v.scale=B;var A="data:image/svg+xml;base64,"+A,C=t.gridSize*v.gridSteps*g,E=t.getGraphBounds(),J=v.translate.x*B,z=v.translate.y*B,M=J+(E.x-J)/B-n,D=z+(E.y-z)/B-n,G=new Image;G.onload=function(){try{for(var b=-Math.round(C-mxUtils.mod((J-M)*g,C)),c=-Math.round(C-mxUtils.mod((z-D)*g,C));b<p;b+=C)for(var f=c;f<q;f+=C)y.drawImage(G,b/g,f/g);m()}catch(ya){null!=e&&e(ya)}};G.onerror=
+function(b){null!=e&&e(b)};G.src=A}else m()}catch(wa){null!=e&&e(wa)}});d.onerror=function(b){null!=e&&e(b)};p&&this.graph.addSvgShadow(f);this.graph.mathEnabled&&this.addMathCss(f);var m=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(f,this.resolvedFontCss),d.src=Editor.createSvgDataUri(mxUtils.getXml(f))}catch(ea){null!=e&&e(ea)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(f,b),this.loadFonts(m)}catch(ga){null!=e&&e(ga)}}))}catch(ea){null!=
e&&e(ea)}}),f,q)}catch(ha){null!=e&&e(ha)}};Editor.crcTable=[];for(var g=0;256>g;g++)for(var k=g,n=0;8>n;n++)k=1==(k&1)?3988292384^k>>>1:k>>>1,Editor.crcTable[g]=k;Editor.updateCRC=function(b,c,f,d){for(var e=0;e<d;e++)b=Editor.crcTable[(b^c.charCodeAt(f+e))&255]^b>>>8;return b};Editor.crc32=function(b){for(var c=-1,f=0;f<b.length;f++)c=c>>>8^Editor.crcTable[(c^b.charCodeAt(f))&255];return(c^-1)>>>0};Editor.writeGraphModelToPng=function(b,c,f,d,e){function l(b,c){var f=k;k+=c;return b.substring(f,
k)}function m(b){b=l(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}function g(b){return String.fromCharCode(b>>24&255,b>>16&255,b>>8&255,b&255)}b=b.substring(b.indexOf(",")+1);b=window.atob?atob(b):Base64.decode(b,!0);var k=0;if(l(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(l(b,4),"IHDR"!=l(b,4))null!=e&&e();else{l(b,17);e=b.substring(0,k);do{var p=m(b);if("IDAT"==l(b,4)){e=b.substring(0,k-8);"pHYs"==c&&
"dpi"==f?(f=Math.round(d/.0254),f=g(f)+g(f)+String.fromCharCode(1)):f=f+String.fromCharCode(0)+("zTXt"==c?String.fromCharCode(0):"")+d;d=4294967295;d=Editor.updateCRC(d,c,0,4);d=Editor.updateCRC(d,f,0,f.length);e+=g(f.length)+c+f+g(d^4294967295);e+=b.substring(k-8,b.length);break}e+=b.substring(k-8,k-4+p);l(b,p);l(b,4)}while(p);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";
@@ -10628,39 +10623,37 @@ stroke:"#6c8ebf"},{fill:"#d5e8d4",stroke:"#82b366"},{fill:"#ffe6cc",stroke:"#d79
stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8088"},{fill:"#b1ddf0",stroke:"#10739e"},{fill:"#d0cee2",stroke:"#56517e"},{fill:"#bac8d3",stroke:"#23445d"}],[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",gradient:"#b3b3b3"},{fill:"#dae8fc",stroke:"#6c8ebf",gradient:"#7ea6e0"},{fill:"#d5e8d4",stroke:"#82b366",gradient:"#97d077"},{fill:"#ffcd28",stroke:"#d79b00",gradient:"#ffa500"},{fill:"#fff2cc",stroke:"#d6b656",gradient:"#ffd966"},{fill:"#f8cecc",stroke:"#b85450",
gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill:"",stroke:""},{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(b,c,f){if(null!=c){var d=function(b){if(null!=b)if(f)for(var d=
0;d<b.length;d++)c[b[d].name]=b[d];else for(var e in c){for(var l=!1,d=0;d<b.length;d++)if(b[d].name==e&&b[d].type==c[e].type){l=!0;break}l||delete c[e]}},e=this.editorUi.editor.graph.view.getState(b);null!=e&&null!=e.shape&&(e.shape.commonCustomPropAdded||(e.shape.commonCustomPropAdded=!0,e.shape.customProperties=e.shape.customProperties||[],e.cell.vertex?Array.prototype.push.apply(e.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(e.shape.customProperties,Editor.commonEdgeProperties)),
-d(e.shape.customProperties));b=b.getAttribute("customProperties");if(null!=b)try{d(JSON.parse(b))}catch(S){}}};var u=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var b=this.format.getSelectionState();"image"!=b.style.shape&&!b.containsLabel&&0<b.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));u.apply(this,arguments);if(Editor.enableCustomProperties){for(var c={},f=b.vertices,d=b.edges,e=0;e<f.length;e++)this.findCommonProperties(f[e],c,0==
-e);for(e=0;e<d.length;e++)this.findCommonProperties(d[e],c,0==f.length&&0==e);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(c).length&&this.container.appendChild(this.addProperties(this.createPanel(),c,b))}};var v=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(b){var c=this.format.getSelectionState(),f=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(b){this.editorUi.actions.get("copyStyle").funct()}));f.setAttribute("title",
-mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");f.style.marginBottom="2px";f.style.width="104px";f.style.marginRight="2px";b.appendChild(f);0<c.cells.length?(f=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(b){this.editorUi.actions.get("pasteStyle").funct()})),f.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")"),f.style.marginBottom="2px",f.style.width="104px",b.appendChild(f)):
-f.style.width="210px";mxUtils.br(b);return v.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(b,c,f){function d(b,c,f,d){t.getModel().beginUpdate();try{var e=[],l=[];if(null!=f.index){for(var m=[],g=f.parentRow.nextSibling;g&&g.getAttribute("data-pName")==b;)m.push(g.getAttribute("data-pValue")),g=g.nextSibling;f.index<m.length?null!=d?m.splice(d,1):m[f.index]=c:m.push(c);null!=f.size&&m.length>f.size&&(m=m.slice(0,f.size));c=m.join(",");
-null!=f.countProperty&&(t.setCellStyles(f.countProperty,m.length,t.getSelectionCells()),e.push(f.countProperty),l.push(m.length))}t.setCellStyles(b,c,t.getSelectionCells());e.push(b);l.push(c);if(null!=f.dependentProps)for(b=0;b<f.dependentProps.length;b++){var k=f.dependentPropsDefVal[b],p=f.dependentPropsVals[b];if(p.length>c)p=p.slice(0,c);else for(var n=p.length;n<c;n++)p.push(k);p=p.join(",");t.setCellStyles(f.dependentProps[b],p,t.getSelectionCells());e.push(f.dependentProps[b]);l.push(p)}if("function"==
-typeof f.onChange)f.onChange(t,c);q.editorUi.fireEvent(new mxEventObject("styleChanged","keys",e,"values",l,"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}function e(c,f,d){var e=mxUtils.getOffset(b,!0),l=mxUtils.getOffset(c,!0);f.style.position="absolute";f.style.left=l.x-e.x+"px";f.style.top=l.y-e.y+"px";f.style.width=c.offsetWidth+"px";f.style.height=c.offsetHeight-(d?4:0)+"px";f.style.zIndex=5}function l(b,c,f){var e=document.createElement("div");e.style.width="32px";e.style.height=
-"4px";e.style.margin="2px";e.style.border="1px solid black";e.style.background=c&&"none"!=c?c:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(q,function(l){this.editorUi.pickColor(c,function(c){e.style.background="none"==c?"url('"+Dialog.prototype.noColorImage+"')":c;d(b,c,f)});mxEvent.consume(l)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(e);return btn}function m(b,c,f,e,l,m,g){null!=c&&(c=c.split(","),n.push({name:b,
-values:c,type:f,defVal:e,countProperty:l,parentRow:m,isDeletable:!0,flipBkg:g}));btn=mxUtils.button("+",mxUtils.bind(q,function(c){for(var k=m,q=0;null!=k.nextSibling;)if(k.nextSibling.getAttribute("data-pName")==b)k=k.nextSibling,q++;else break;var t={type:f,parentRow:m,index:q,isDeletable:!0,defVal:e,countProperty:l},q=p(b,"",t,0==q%2,g);d(b,e,t);k.parentNode.insertBefore(q,k.nextSibling);mxEvent.consume(c)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}
-function g(b,c,f,d,e,l,m){if(0<e){var g=Array(e);c=null!=c?c.split(","):[];for(var k=0;k<e;k++)g[k]=null!=c[k]?c[k]:null!=d?d:"";n.push({name:b,values:g,type:f,defVal:d,parentRow:l,flipBkg:m,size:e})}return document.createElement("div")}function k(b,c,f){var e=document.createElement("input");e.type="checkbox";e.checked="1"==c;mxEvent.addListener(e,"change",function(){d(b,e.checked?"1":"0",f)});return e}function p(c,f,p,t,n){var y=p.dispName,u=p.type,v=document.createElement("tr");v.className="gePropRow"+
-(n?"Dark":"")+(t?"Alt":"")+" gePropNonHeaderRow";v.setAttribute("data-pName",c);v.setAttribute("data-pValue",f);t=!1;null!=p.index&&(v.setAttribute("data-index",p.index),y=(null!=y?y:"")+"["+p.index+"]",t=!0);var B=document.createElement("td");B.className="gePropRowCell";y=mxResources.get(y,null,y);mxUtils.write(B,y);B.setAttribute("title",y);t&&(B.style.textAlign="right");v.appendChild(B);B=document.createElement("td");B.className="gePropRowCell";if("color"==u)B.appendChild(l(c,f,p));else if("bool"==
-u||"boolean"==u)B.appendChild(k(c,f,p));else if("enum"==u){var A=p.enumList;for(n=0;n<A.length;n++)if(y=A[n],y.val==f){mxUtils.write(B,mxResources.get(y.dispName,null,y.dispName));break}mxEvent.addListener(B,"click",mxUtils.bind(q,function(){var l=document.createElement("select");e(B,l);for(var m=0;m<A.length;m++){var g=A[m],k=document.createElement("option");k.value=mxUtils.htmlEntities(g.val);mxUtils.write(k,mxResources.get(g.dispName,null,g.dispName));l.appendChild(k)}l.value=f;b.appendChild(l);
-mxEvent.addListener(l,"change",function(){var b=mxUtils.htmlEntities(l.value);d(c,b,p)});l.focus();mxEvent.addListener(l,"blur",function(){b.removeChild(l)})}))}else"dynamicArr"==u?B.appendChild(m(c,f,p.subType,p.subDefVal,p.countProperty,v,n)):"staticArr"==u?B.appendChild(g(c,f,p.subType,p.subDefVal,p.size,v,n)):"readOnly"==u?(n=document.createElement("input"),n.setAttribute("readonly",""),n.value=f,n.style.width="96px",n.style.borderWidth="0px",B.appendChild(n)):(B.innerHTML=f,mxEvent.addListener(B,
-"click",mxUtils.bind(q,function(){function l(){var b=m.value,b=0==b.length&&"string"!=u?0:b;p.allowAuto&&(null!=b.trim&&"auto"==b.trim().toLowerCase()?(b="auto",u="string"):(b=parseFloat(b),b=isNaN(b)?0:b));null!=p.min&&b<p.min?b=p.min:null!=p.max&&b>p.max&&(b=p.max);b=mxUtils.htmlEntities(("int"==u?parseInt(b):b)+"");d(c,b,p)}var m=document.createElement("input");e(B,m,!0);m.value=f;m.className="gePropEditor";"int"!=u&&"float"!=u||p.allowAuto||(m.type="number",m.step="int"==u?"1":"any",null!=p.min&&
-(m.min=parseFloat(p.min)),null!=p.max&&(m.max=parseFloat(p.max)));b.appendChild(m);mxEvent.addListener(m,"keypress",function(b){13==b.keyCode&&l()});m.focus();mxEvent.addListener(m,"blur",function(){l()})})));p.isDeletable&&(n=mxUtils.button("-",mxUtils.bind(q,function(b){d(c,"",p,p.index);mxEvent.consume(b)})),n.style.height="16px",n.style.width="25px",n.style["float"]="right",n.className="geColorBtn",B.appendChild(n));v.appendChild(B);return v}var q=this,t=this.editorUi.editor.graph,n=[];b.style.position=
-"relative";b.style.padding="0";var y=document.createElement("table");y.className="geProperties";y.style.whiteSpace="nowrap";y.style.width="100%";var u=document.createElement("tr");u.className="gePropHeader";var v=document.createElement("th");v.className="gePropHeaderCell";var B=document.createElement("img");B.src=Sidebar.prototype.expandedImage;B.style.verticalAlign="middle";v.appendChild(B);mxUtils.write(v,mxResources.get("property"));u.style.cursor="pointer";var A=function(){var c=y.querySelectorAll(".gePropNonHeaderRow"),
-f;if(q.editorUi.propertiesCollapsed){B.src=Sidebar.prototype.collapsedImage;f="none";for(var d=b.childNodes.length-1;0<=d;d--)try{var e=b.childNodes[d],l=e.nodeName.toUpperCase();"INPUT"!=l&&"SELECT"!=l||b.removeChild(e)}catch(la){}}else B.src=Sidebar.prototype.expandedImage,f="";for(d=0;d<c.length;d++)c[d].style.display=f};mxEvent.addListener(u,"click",function(){q.editorUi.propertiesCollapsed=!q.editorUi.propertiesCollapsed;A()});u.appendChild(v);v=document.createElement("th");v.className="gePropHeaderCell";
-v.innerHTML=mxResources.get("value");u.appendChild(v);y.appendChild(u);var x=!1,C=!1,u=null;1==f.vertices.length&&0==f.edges.length?u=f.vertices[0].id:0==f.vertices.length&&1==f.edges.length&&(u=f.edges[0].id);null!=u&&y.appendChild(p("id",mxUtils.htmlEntities(u),{dispName:"ID",type:"readOnly"},!0,!1));for(var E in c)if(u=c[E],"function"!=typeof u.isVisible||u.isVisible(f,this)){var z=null!=f.style[E]?mxUtils.htmlEntities(f.style[E]+""):null!=u.getDefaultValue?u.getDefaultValue(f,this):u.defVal;if("separator"==
-u.type)C=!C;else{if("staticArr"==u.type)u.size=parseInt(f.style[u.sizeProperty]||c[u.sizeProperty].defVal)||0;else if(null!=u.dependentProps){for(var K=u.dependentProps,M=[],D=[],v=0;v<K.length;v++){var G=f.style[K[v]];D.push(c[K[v]].subDefVal);M.push(null!=G?G.split(","):[])}u.dependentPropsDefVal=D;u.dependentPropsVals=M}y.appendChild(p(E,z,u,x,C));x=!x}}for(v=0;v<n.length;v++)for(u=n[v],c=u.parentRow,f=0;f<u.values.length;f++)E=p(u.name,u.values[f],{type:u.type,parentRow:u.parentRow,isDeletable:u.isDeletable,
-index:f,defVal:u.defVal,countProperty:u.countProperty,size:u.size},0==f%2,u.flipBkg),c.parentNode.insertBefore(E,c.nextSibling),c=E;b.appendChild(y);A();return b};StyleFormatPanel.prototype.addStyles=function(b){function c(b){mxEvent.addListener(b,"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var f=this.editorUi.editor.graph,d=document.createElement("div");d.style.whiteSpace="nowrap";d.style.paddingLeft="24px";d.style.paddingRight=
-"20px";b.style.paddingLeft="16px";b.style.paddingBottom="6px";b.style.position="relative";b.appendChild(d);var e="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "),l=document.createElement("div");l.style.whiteSpace="nowrap";l.style.position="relative";l.style.textAlign="center";l.style.width="210px";for(var m=[],g=0;g<this.defaultColorSchemes.length;g++){var k=document.createElement("div");
-k.style.display="inline-block";k.style.width="6px";k.style.height="6px";k.style.marginLeft="4px";k.style.marginRight="3px";k.style.borderRadius="3px";k.style.cursor="pointer";k.style.background="transparent";k.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(b){mxEvent.addListener(k,"click",mxUtils.bind(this,function(){p(b)}))})(g);m.push(k);l.appendChild(k)}var p=mxUtils.bind(this,function(b){null!=m[b]&&(null!=this.format.currentScheme&&null!=m[this.format.currentScheme]&&(m[this.format.currentScheme].style.background=
-"transparent"),this.format.currentScheme=b,q(this.defaultColorSchemes[this.format.currentScheme]),m[this.format.currentScheme].style.background="#84d7ff")}),q=mxUtils.bind(this,function(b){var c=mxUtils.bind(this,function(b){var c=mxUtils.button("",mxUtils.bind(this,function(c){f.getModel().beginUpdate();try{for(var d=this.format.getSelectionState().cells,l=0;l<d.length;l++){for(var m=f.getModel().getStyle(d[l]),g=0;g<e.length;g++)m=mxUtils.removeStylename(m,e[g]);var k=f.getModel().isVertex(d[l])?
-f.defaultVertexStyle:f.defaultEdgeStyle;null!=b?(mxEvent.isShiftDown(c)||(m=""==b.fill?mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,b.fill||mxUtils.getValue(k,mxConstants.STYLE_FILLCOLOR,null)),m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,b.gradient||mxUtils.getValue(k,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(c)||mxClient.IS_MAC&&mxEvent.isMetaDown(c)||!f.getModel().isVertex(d[l])||(m=mxUtils.setStyle(m,mxConstants.STYLE_FONTCOLOR,
-b.font||mxUtils.getValue(k,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(c)||(m=""==b.stroke?mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,b.stroke||mxUtils.getValue(k,mxConstants.STYLE_STROKECOLOR,null)))):(m=mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(k,mxConstants.STYLE_FILLCOLOR,"#ffffff")),m=mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(k,mxConstants.STYLE_STROKECOLOR,"#000000")),m=mxUtils.setStyle(m,
-mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(k,mxConstants.STYLE_GRADIENTCOLOR,null)),f.getModel().isVertex(d[l])&&(m=mxUtils.setStyle(m,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(k,mxConstants.STYLE_FONTCOLOR,null))));f.getModel().setStyle(d[l],m)}}finally{f.getModel().endUpdate()}}));c.className="geStyleButton";c.style.width="36px";c.style.height=10>=this.defaultColorSchemes.length?"24px":"30px";c.style.margin="0px 6px 6px 0px";if(null!=b){var l="1"==urlParams.sketch?"2px solid":"1px solid";
-null!=b.gradient?mxClient.IS_IE&&10>document.documentMode?c.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+b.fill+"', EndColorStr='"+b.gradient+"', GradientType=0)":c.style.backgroundImage="linear-gradient("+b.fill+" 0px,"+b.gradient+" 100%)":b.fill==mxConstants.NONE?c.style.background="url('"+Dialog.prototype.noColorImage+"')":c.style.backgroundColor=""==b.fill?mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):
-b.fill||mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");c.style.border=b.stroke==mxConstants.NONE?l+" transparent":""==b.stroke?l+" "+mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor):l+" "+(b.stroke||mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=b.title&&c.setAttribute("title",b.title)}else{var l=
-mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),m=mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");c.style.backgroundColor=l;c.style.border="1px solid "+m}c.style.borderRadius="0";d.appendChild(c)});d.innerHTML="";for(var l=0;l<b.length;l++)0<l&&0==mxUtils.mod(l,4)&&mxUtils.br(d),c(b[l])});null==this.format.currentScheme?p(Editor.isDarkMode()?1:"1"==urlParams.sketch?5:0):p(this.format.currentScheme);var g=10>=this.defaultColorSchemes.length?
-28:8,t=document.createElement("div");t.style.cssText="position:absolute;left:10px;top:8px;bottom:"+g+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";mxEvent.addListener(t,
-"click",mxUtils.bind(this,function(){p(mxUtils.mod(this.format.currentScheme-1,this.defaultColorSchemes.length))}));var n=document.createElement("div");n.style.cssText="position:absolute;left:202px;top:8px;bottom:"+g+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";
-1<this.defaultColorSchemes.length&&(b.appendChild(t),b.appendChild(n));mxEvent.addListener(n,"click",mxUtils.bind(this,function(){p(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));c(t);c(n);q(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&b.appendChild(l);return b};StyleFormatPanel.prototype.addEditOps=function(b){var c=this.format.getSelectionState(),f=null;1==c.cells.length&&(f=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,
-function(b){this.editorUi.actions.get("editStyle").funct()})),f.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),f.style.width="210px",f.style.marginBottom="2px",b.appendChild(f));var d=this.editorUi.editor.graph,d=1==c.cells.length?d.view.getState(c.cells[0]):null;null!=d&&null!=d.shape&&null!=d.shape.stencil?(c=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(b){this.editorUi.actions.get("editShape").funct()})),c.setAttribute("title",
-mxResources.get("editShape")),c.style.marginBottom="2px",null==f?c.style.width="210px":(f.style.width="104px",c.style.width="104px",c.style.marginLeft="2px"),b.appendChild(c)):c.image&&0<c.cells.length&&(c=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(b){this.editorUi.actions.get("image").funct()})),c.setAttribute("title",mxResources.get("editImage")),c.style.marginBottom="2px",null==f?c.style.width="210px":(f.style.width="104px",c.style.width="104px",c.style.marginLeft="2px"),
+d(e.shape.customProperties));b=b.getAttribute("customProperties");if(null!=b)try{d(JSON.parse(b))}catch(S){}}};var u=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var b=this.editorUi.getSelectionState();"image"!=b.style.shape&&!b.containsLabel&&0<b.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));u.apply(this,arguments);if(Editor.enableCustomProperties){for(var c={},f=b.vertices,d=b.edges,e=0;e<f.length;e++)this.findCommonProperties(f[e],c,
+0==e);for(e=0;e<d.length;e++)this.findCommonProperties(d[e],c,0==f.length&&0==e);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(c).length&&this.container.appendChild(this.addProperties(this.createPanel(),c,b))}};var v=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(b){this.addActions(b,["copyStyle","pasteStyle"]);return v.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(b,c,f){function d(b,
+c,f,d){t.getModel().beginUpdate();try{var e=[],l=[];if(null!=f.index){for(var m=[],g=f.parentRow.nextSibling;g&&g.getAttribute("data-pName")==b;)m.push(g.getAttribute("data-pValue")),g=g.nextSibling;f.index<m.length?null!=d?m.splice(d,1):m[f.index]=c:m.push(c);null!=f.size&&m.length>f.size&&(m=m.slice(0,f.size));c=m.join(",");null!=f.countProperty&&(t.setCellStyles(f.countProperty,m.length,t.getSelectionCells()),e.push(f.countProperty),l.push(m.length))}t.setCellStyles(b,c,t.getSelectionCells());
+e.push(b);l.push(c);if(null!=f.dependentProps)for(b=0;b<f.dependentProps.length;b++){var k=f.dependentPropsDefVal[b],p=f.dependentPropsVals[b];if(p.length>c)p=p.slice(0,c);else for(var n=p.length;n<c;n++)p.push(k);p=p.join(",");t.setCellStyles(f.dependentProps[b],p,t.getSelectionCells());e.push(f.dependentProps[b]);l.push(p)}if("function"==typeof f.onChange)f.onChange(t,c);q.editorUi.fireEvent(new mxEventObject("styleChanged","keys",e,"values",l,"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}
+function e(c,f,d){var e=mxUtils.getOffset(b,!0),l=mxUtils.getOffset(c,!0);f.style.position="absolute";f.style.left=l.x-e.x+"px";f.style.top=l.y-e.y+"px";f.style.width=c.offsetWidth+"px";f.style.height=c.offsetHeight-(d?4:0)+"px";f.style.zIndex=5}function l(b,c,f){var e=document.createElement("div");e.style.width="32px";e.style.height="4px";e.style.margin="2px";e.style.border="1px solid black";e.style.background=c&&"none"!=c?c:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(q,
+function(l){this.editorUi.pickColor(c,function(c){e.style.background="none"==c?"url('"+Dialog.prototype.noColorImage+"')":c;d(b,c,f)});mxEvent.consume(l)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(e);return btn}function m(b,c,f,e,l,m,g){null!=c&&(c=c.split(","),n.push({name:b,values:c,type:f,defVal:e,countProperty:l,parentRow:m,isDeletable:!0,flipBkg:g}));btn=mxUtils.button("+",mxUtils.bind(q,function(c){for(var k=m,q=0;null!=k.nextSibling;)if(k.nextSibling.getAttribute("data-pName")==
+b)k=k.nextSibling,q++;else break;var t={type:f,parentRow:m,index:q,isDeletable:!0,defVal:e,countProperty:l},q=p(b,"",t,0==q%2,g);d(b,e,t);k.parentNode.insertBefore(q,k.nextSibling);mxEvent.consume(c)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function g(b,c,f,d,e,l,m){if(0<e){var g=Array(e);c=null!=c?c.split(","):[];for(var k=0;k<e;k++)g[k]=null!=c[k]?c[k]:null!=d?d:"";n.push({name:b,values:g,type:f,defVal:d,parentRow:l,flipBkg:m,size:e})}return document.createElement("div")}
+function k(b,c,f){var e=document.createElement("input");e.type="checkbox";e.checked="1"==c;mxEvent.addListener(e,"change",function(){d(b,e.checked?"1":"0",f)});return e}function p(c,f,p,t,n){var y=p.dispName,u=p.type,v=document.createElement("tr");v.className="gePropRow"+(n?"Dark":"")+(t?"Alt":"")+" gePropNonHeaderRow";v.setAttribute("data-pName",c);v.setAttribute("data-pValue",f);t=!1;null!=p.index&&(v.setAttribute("data-index",p.index),y=(null!=y?y:"")+"["+p.index+"]",t=!0);var B=document.createElement("td");
+B.className="gePropRowCell";y=mxResources.get(y,null,y);mxUtils.write(B,y);B.setAttribute("title",y);t&&(B.style.textAlign="right");v.appendChild(B);B=document.createElement("td");B.className="gePropRowCell";if("color"==u)B.appendChild(l(c,f,p));else if("bool"==u||"boolean"==u)B.appendChild(k(c,f,p));else if("enum"==u){var A=p.enumList;for(n=0;n<A.length;n++)if(y=A[n],y.val==f){mxUtils.write(B,mxResources.get(y.dispName,null,y.dispName));break}mxEvent.addListener(B,"click",mxUtils.bind(q,function(){var l=
+document.createElement("select");e(B,l);for(var m=0;m<A.length;m++){var g=A[m],k=document.createElement("option");k.value=mxUtils.htmlEntities(g.val);mxUtils.write(k,mxResources.get(g.dispName,null,g.dispName));l.appendChild(k)}l.value=f;b.appendChild(l);mxEvent.addListener(l,"change",function(){var b=mxUtils.htmlEntities(l.value);d(c,b,p)});l.focus();mxEvent.addListener(l,"blur",function(){b.removeChild(l)})}))}else"dynamicArr"==u?B.appendChild(m(c,f,p.subType,p.subDefVal,p.countProperty,v,n)):"staticArr"==
+u?B.appendChild(g(c,f,p.subType,p.subDefVal,p.size,v,n)):"readOnly"==u?(n=document.createElement("input"),n.setAttribute("readonly",""),n.value=f,n.style.width="96px",n.style.borderWidth="0px",B.appendChild(n)):(B.innerHTML=f,mxEvent.addListener(B,"click",mxUtils.bind(q,function(){function l(){var b=m.value,b=0==b.length&&"string"!=u?0:b;p.allowAuto&&(null!=b.trim&&"auto"==b.trim().toLowerCase()?(b="auto",u="string"):(b=parseFloat(b),b=isNaN(b)?0:b));null!=p.min&&b<p.min?b=p.min:null!=p.max&&b>p.max&&
+(b=p.max);b=mxUtils.htmlEntities(("int"==u?parseInt(b):b)+"");d(c,b,p)}var m=document.createElement("input");e(B,m,!0);m.value=f;m.className="gePropEditor";"int"!=u&&"float"!=u||p.allowAuto||(m.type="number",m.step="int"==u?"1":"any",null!=p.min&&(m.min=parseFloat(p.min)),null!=p.max&&(m.max=parseFloat(p.max)));b.appendChild(m);mxEvent.addListener(m,"keypress",function(b){13==b.keyCode&&l()});m.focus();mxEvent.addListener(m,"blur",function(){l()})})));p.isDeletable&&(n=mxUtils.button("-",mxUtils.bind(q,
+function(b){d(c,"",p,p.index);mxEvent.consume(b)})),n.style.height="16px",n.style.width="25px",n.style["float"]="right",n.className="geColorBtn",B.appendChild(n));v.appendChild(B);return v}var q=this,t=this.editorUi.editor.graph,n=[];b.style.position="relative";b.style.padding="0";var y=document.createElement("table");y.className="geProperties";y.style.whiteSpace="nowrap";y.style.width="100%";var u=document.createElement("tr");u.className="gePropHeader";var v=document.createElement("th");v.className=
+"gePropHeaderCell";var B=document.createElement("img");B.src=Sidebar.prototype.expandedImage;B.style.verticalAlign="middle";v.appendChild(B);mxUtils.write(v,mxResources.get("property"));u.style.cursor="pointer";var A=function(){var c=y.querySelectorAll(".gePropNonHeaderRow"),f;if(q.editorUi.propertiesCollapsed){B.src=Sidebar.prototype.collapsedImage;f="none";for(var d=b.childNodes.length-1;0<=d;d--)try{var e=b.childNodes[d],l=e.nodeName.toUpperCase();"INPUT"!=l&&"SELECT"!=l||b.removeChild(e)}catch(la){}}else B.src=
+Sidebar.prototype.expandedImage,f="";for(d=0;d<c.length;d++)c[d].style.display=f};mxEvent.addListener(u,"click",function(){q.editorUi.propertiesCollapsed=!q.editorUi.propertiesCollapsed;A()});u.appendChild(v);v=document.createElement("th");v.className="gePropHeaderCell";v.innerHTML=mxResources.get("value");u.appendChild(v);y.appendChild(u);var x=!1,C=!1,u=null;1==f.vertices.length&&0==f.edges.length?u=f.vertices[0].id:0==f.vertices.length&&1==f.edges.length&&(u=f.edges[0].id);null!=u&&y.appendChild(p("id",
+mxUtils.htmlEntities(u),{dispName:"ID",type:"readOnly"},!0,!1));for(var E in c)if(u=c[E],"function"!=typeof u.isVisible||u.isVisible(f,this)){var z=null!=f.style[E]?mxUtils.htmlEntities(f.style[E]+""):null!=u.getDefaultValue?u.getDefaultValue(f,this):u.defVal;if("separator"==u.type)C=!C;else{if("staticArr"==u.type)u.size=parseInt(f.style[u.sizeProperty]||c[u.sizeProperty].defVal)||0;else if(null!=u.dependentProps){for(var J=u.dependentProps,M=[],D=[],v=0;v<J.length;v++){var G=f.style[J[v]];D.push(c[J[v]].subDefVal);
+M.push(null!=G?G.split(","):[])}u.dependentPropsDefVal=D;u.dependentPropsVals=M}y.appendChild(p(E,z,u,x,C));x=!x}}for(v=0;v<n.length;v++)for(u=n[v],c=u.parentRow,f=0;f<u.values.length;f++)E=p(u.name,u.values[f],{type:u.type,parentRow:u.parentRow,isDeletable:u.isDeletable,index:f,defVal:u.defVal,countProperty:u.countProperty,size:u.size},0==f%2,u.flipBkg),c.parentNode.insertBefore(E,c.nextSibling),c=E;b.appendChild(y);A();return b};StyleFormatPanel.prototype.addStyles=function(b){function c(b){mxEvent.addListener(b,
+"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var f=this.editorUi,d=f.editor.graph,e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.paddingLeft="24px";e.style.paddingRight="20px";b.style.paddingLeft="16px";b.style.paddingBottom="6px";b.style.position="relative";b.appendChild(e);var l="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "),
+m=document.createElement("div");m.style.whiteSpace="nowrap";m.style.position="relative";m.style.textAlign="center";m.style.width="210px";for(var g=[],k=0;k<this.defaultColorSchemes.length;k++){var p=document.createElement("div");p.style.display="inline-block";p.style.width="6px";p.style.height="6px";p.style.marginLeft="4px";p.style.marginRight="3px";p.style.borderRadius="3px";p.style.cursor="pointer";p.style.background="transparent";p.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(b){mxEvent.addListener(p,
+"click",mxUtils.bind(this,function(){q(b)}))})(k);g.push(p);m.appendChild(p)}var q=mxUtils.bind(this,function(b){null!=g[b]&&(null!=this.format.currentScheme&&null!=g[this.format.currentScheme]&&(g[this.format.currentScheme].style.background="transparent"),this.format.currentScheme=b,t(this.defaultColorSchemes[this.format.currentScheme]),g[this.format.currentScheme].style.background="#84d7ff")}),t=mxUtils.bind(this,function(b){var c=mxUtils.bind(this,function(b){var c=mxUtils.button("",mxUtils.bind(this,
+function(c){d.getModel().beginUpdate();try{for(var e=f.getSelectionState().cells,m=0;m<e.length;m++){for(var g=d.getModel().getStyle(e[m]),k=0;k<l.length;k++)g=mxUtils.removeStylename(g,l[k]);var p=d.getModel().isVertex(e[m])?d.defaultVertexStyle:d.defaultEdgeStyle;null!=b?(mxEvent.isShiftDown(c)||(g=""==b.fill?mxUtils.setStyle(g,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(g,mxConstants.STYLE_FILLCOLOR,b.fill||mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,null)),g=mxUtils.setStyle(g,mxConstants.STYLE_GRADIENTCOLOR,
+b.gradient||mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(c)||mxClient.IS_MAC&&mxEvent.isMetaDown(c)||!d.getModel().isVertex(e[m])||(g=mxUtils.setStyle(g,mxConstants.STYLE_FONTCOLOR,b.font||mxUtils.getValue(p,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(c)||(g=""==b.stroke?mxUtils.setStyle(g,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(g,mxConstants.STYLE_STROKECOLOR,b.stroke||mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,null)))):(g=mxUtils.setStyle(g,
+mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,"#ffffff")),g=mxUtils.setStyle(g,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,"#000000")),g=mxUtils.setStyle(g,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,null)),d.getModel().isVertex(e[m])&&(g=mxUtils.setStyle(g,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(p,mxConstants.STYLE_FONTCOLOR,null))));d.getModel().setStyle(e[m],g)}}finally{d.getModel().endUpdate()}}));
+c.className="geStyleButton";c.style.width="36px";c.style.height=10>=this.defaultColorSchemes.length?"24px":"30px";c.style.margin="0px 6px 6px 0px";if(null!=b){var m="1"==urlParams.sketch?"2px solid":"1px solid";null!=b.gradient?mxClient.IS_IE&&10>document.documentMode?c.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+b.fill+"', EndColorStr='"+b.gradient+"', GradientType=0)":c.style.backgroundImage="linear-gradient("+b.fill+" 0px,"+b.gradient+" 100%)":b.fill==mxConstants.NONE?
+c.style.background="url('"+Dialog.prototype.noColorImage+"')":c.style.backgroundColor=""==b.fill?mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):b.fill||mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");c.style.border=b.stroke==mxConstants.NONE?m+" transparent":""==b.stroke?m+" "+mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":
+Editor.darkColor):m+" "+(b.stroke||mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=b.title&&c.setAttribute("title",b.title)}else{var m=mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),g=mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");c.style.backgroundColor=m;c.style.border="1px solid "+g}c.style.borderRadius="0";e.appendChild(c)});e.innerHTML="";for(var m=0;m<b.length;m++)0<
+m&&0==mxUtils.mod(m,4)&&mxUtils.br(e),c(b[m])});null==this.format.currentScheme?q(Editor.isDarkMode()?1:"1"==urlParams.sketch?5:0):q(this.format.currentScheme);var k=10>=this.defaultColorSchemes.length?28:8,n=document.createElement("div");n.style.cssText="position:absolute;left:10px;top:8px;bottom:"+k+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";
+mxEvent.addListener(n,"click",mxUtils.bind(this,function(){q(mxUtils.mod(this.format.currentScheme-1,this.defaultColorSchemes.length))}));var y=document.createElement("div");y.style.cssText="position:absolute;left:202px;top:8px;bottom:"+k+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";
+1<this.defaultColorSchemes.length&&(b.appendChild(n),b.appendChild(y));mxEvent.addListener(y,"click",mxUtils.bind(this,function(){q(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));c(n);c(y);t(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&b.appendChild(m);return b};StyleFormatPanel.prototype.addEditOps=function(b){var c=this.editorUi.getSelectionState(),f=this.editorUi.editor.graph,d=null;1==c.cells.length&&(d=mxUtils.button(mxResources.get("editStyle"),
+mxUtils.bind(this,function(b){this.editorUi.actions.get("editStyle").funct()})),d.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),d.style.width="210px",d.style.marginBottom="2px",b.appendChild(d));f=1==c.cells.length?f.view.getState(c.cells[0]):null;null!=f&&null!=f.shape&&null!=f.shape.stencil?(c=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(b){this.editorUi.actions.get("editShape").funct()})),c.setAttribute("title",
+mxResources.get("editShape")),c.style.marginBottom="2px",null==d?c.style.width="210px":(d.style.width="104px",c.style.width="104px",c.style.marginLeft="2px"),b.appendChild(c)):c.image&&0<c.cells.length&&(c=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(b){this.editorUi.actions.get("image").funct()})),c.setAttribute("title",mxResources.get("editImage")),c.style.marginBottom="2px",null==d?c.style.width="210px":(d.style.width="104px",c.style.width="104px",c.style.marginLeft="2px"),
b.appendChild(c));return b}}Graph.customFontElements={};Graph.recentCustomFonts={};Graph.isGoogleFontUrl=function(b){return b.substring(0,Editor.GOOGLE_FONTS.length)==Editor.GOOGLE_FONTS};Graph.isCssFontUrl=function(b){return Graph.isGoogleFontUrl(b)};Graph.createFontElement=function(b,c){var f;Graph.isCssFontUrl(c)?(f=document.createElement("link"),f.setAttribute("rel","stylesheet"),f.setAttribute("type","text/css"),f.setAttribute("charset","UTF-8"),f.setAttribute("href",c)):(f=document.createElement("style"),
mxUtils.write(f,'@font-face {\nfont-family: "'+b+'";\nsrc: url("'+c+'");\n}'));return f};Graph.addFont=function(b,c,f){if(null!=b&&0<b.length&&null!=c&&0<c.length){var d=b.toLowerCase();if("helvetica"!=d&&"arial"!=b&&"sans-serif"!=d){var e=Graph.customFontElements[d];null!=e&&e.url!=c&&(e.elt.parentNode.removeChild(e.elt),e=null);null==e?(e=c,"http:"==c.substring(0,5)&&(e=PROXY_URL+"?url="+encodeURIComponent(c)),e={name:b,url:c,elt:Graph.createFontElement(b,e)},Graph.customFontElements[d]=e,Graph.recentCustomFonts[d]=
e,c=document.getElementsByTagName("head")[0],null!=f&&("link"==e.elt.nodeName.toLowerCase()?(e.elt.onload=f,e.elt.onerror=f):f()),null!=c&&c.appendChild(e.elt)):null!=f&&f()}else null!=f&&f()}else null!=f&&f();return b};Graph.getFontUrl=function(b,c){var f=Graph.customFontElements[b.toLowerCase()];null!=f&&(c=f.url);return c};Graph.processFontAttributes=function(b){b=b.getElementsByTagName("*");for(var c=0;c<b.length;c++){var f=b[c].getAttribute("data-font-src");if(null!=f){var d="FONT"==b[c].nodeName?
@@ -10680,10 +10673,10 @@ m.isEnabled()?"48px":"10px";k.appendChild(p);var q=mxUtils.button(mxResources.ge
var n=mxUtils.bind(this,function(c,f){if(b()){for(var d=m.getAllTags(),e=0;e<d.length;e++)0>mxUtils.indexOf(g,d[e])&&g.push(d[e]);g.sort();m.isSelectionEmpty()?l(g):l(g,m.getCommonTagsForCells(m.getSelectionCells()))}});m.selectionModel.addListener(mxEvent.CHANGE,n);m.model.addListener(mxEvent.CHANGE,n);m.addListener(mxEvent.REFRESH,n);var y=document.createElement("div");y.style.boxSizing="border-box";y.style.whiteSpace="nowrap";y.style.position="absolute";y.style.overflow="hidden";y.style.bottom=
"0px";y.style.height="42px";y.style.right="10px";y.style.left="10px";m.isEnabled()&&(y.appendChild(q),y.appendChild(t),k.appendChild(y));return{div:k,refresh:n}};Graph.prototype.getCustomFonts=function(){var b=this.extFonts,b=null!=b?b.slice():[],c;for(c in Graph.customFontElements){var f=Graph.customFontElements[c];b.push({name:f.name,url:f.url})}return b};Graph.prototype.setFont=function(b,c){Graph.addFont(b,c);document.execCommand("fontname",!1,b);if(null!=c){var f=this.cellEditor.textarea.getElementsByTagName("font");
c=Graph.getFontUrl(b,c);for(var d=0;d<f.length;d++)f[d].getAttribute("face")==b&&f[d].getAttribute("data-font-src")!=c&&f[d].setAttribute("data-font-src",c)}};var y=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return y.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};
-var b=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var c in b)this.globalVars[c]=b[c]}catch(J){null!=window.console&&console.log("Error in vars URL parameter: "+J)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var C=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(b){var c=C.apply(this,arguments);null==c&&null!=this.globalVars&&(c=this.globalVars[b]);return c};Graph.prototype.getDefaultStylesheet=
+var b=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var c in b)this.globalVars[c]=b[c]}catch(K){null!=window.console&&console.log("Error in vars URL parameter: "+K)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var C=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(b){var c=C.apply(this,arguments);null==c&&null!=this.globalVars&&(c=this.globalVars[b]);return c};Graph.prototype.getDefaultStylesheet=
function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var G=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,c,f,d,e,l,m,g,k,p,q,t,n,y){var u=null,v=null,B=null;t||null==this.themes||"darkTheme"!=this.defaultThemeName||(u=this.stylesheet,v=this.shapeForegroundColor,B=this.shapeBackgroundColor,this.shapeForegroundColor=
"darkTheme"==this.defaultThemeName?"#000000":Editor.lightColor,this.shapeBackgroundColor="darkTheme"==this.defaultThemeName?"#ffffff":Editor.darkColor,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var A=G.apply(this,arguments),x=this.getCustomFonts();if(q&&0<x.length){var C=A.ownerDocument,E=null!=C.createElementNS?C.createElementNS(mxConstants.NS_SVG,"style"):C.createElement("style");null!=C.setAttributeNS?E.setAttributeNS("type","text/css"):E.setAttribute("type","text/css");for(var z=
-"",M="",D=0;D<x.length;D++){var I=x[D].name,K=x[D].url;Graph.isCssFontUrl(K)?z+="@import url("+K+");\n":M+='@font-face {\nfont-family: "'+I+'";\nsrc: url("'+K+'");\n}\n'}E.appendChild(C.createTextNode(z+M));A.getElementsByTagName("defs")[0].appendChild(E)}null!=u&&(this.shapeBackgroundColor=B,this.shapeForegroundColor=v,this.stylesheet=u,this.refresh());return A};var F=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var b=F.apply(this,arguments);if(this.mathEnabled){var c=
+"",M="",D=0;D<x.length;D++){var I=x[D].name,J=x[D].url;Graph.isCssFontUrl(J)?z+="@import url("+J+");\n":M+='@font-face {\nfont-family: "'+I+'";\nsrc: url("'+J+'");\n}\n'}E.appendChild(C.createTextNode(z+M));A.getElementsByTagName("defs")[0].appendChild(E)}null!=u&&(this.shapeBackgroundColor=B,this.shapeForegroundColor=v,this.stylesheet=u,this.refresh());return A};var F=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var b=F.apply(this,arguments);if(this.mathEnabled){var c=
b.drawText;b.drawText=function(b,f){if(null!=b.text&&null!=b.text.value&&b.text.checkBounds()&&(mxUtils.isNode(b.text.value)||b.text.dialect==mxConstants.DIALECT_STRICTHTML)){var d=b.text.getContentNode();if(null!=d){d=d.cloneNode(!0);if(d.getElementsByTagNameNS)for(var e=d.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<e.length;)e[0].parentNode.removeChild(e[0]);null!=d.innerHTML&&(e=b.text.value,b.text.value=d.innerHTML,c.apply(this,arguments),b.text.value=e)}}else c.apply(this,
arguments)}}return b};var D=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){D.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var b=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||
this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",b.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,b.ownerSVGElement))}};var E=Graph.prototype.refresh;Graph.prototype.refresh=function(){E.apply(this,
@@ -10698,8 +10691,8 @@ this.executingCustomActions=!1,m(),null!=c&&c()});k()}};Graph.prototype.doUpdate
this.updateCustomLink(b,f)),l=!0);l&&this.labelChanged(c,d.innerHTML)}};Graph.prototype.updateCustomLink=function(b,c){if("data:action/json,"==c.substring(0,17))try{var f=JSON.parse(c.substring(17));null!=f.actions&&(this.updateCustomLinkActions(b,f.actions),c="data:action/json,"+JSON.stringify(f))}catch(U){}return c};Graph.prototype.updateCustomLinkActions=function(b,c){for(var f=0;f<c.length;f++){var d=c[f],e;for(e in d)this.updateCustomLinkAction(b,d[e],"cells"),this.updateCustomLinkAction(b,d[e],
"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(b,c,f){if(null!=c&&null!=c[f]){for(var d=[],e=0;e<c[f].length;e++)if("*"==c[f][e])d.push(c[f][e]);else{var l=b[c[f][e]];null!=l?""!=l&&d.push(l):d.push(c[f][e])}c[f]=d}};Graph.prototype.getCellsForAction=function(b,c){var f=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,c));if(null!=b.excludeCells){for(var d=[],e=0;e<f.length;e++)0>b.excludeCells.indexOf(f[e].id)&&d.push(f[e]);f=d}return f};Graph.prototype.getCellsById=
function(b){var c=[];if(null!=b)for(var f=0;f<b.length;f++)if("*"==b[f])var d=this.model.getRoot(),c=c.concat(this.model.filterDescendants(function(b){return b!=d},d));else{var e=this.model.getCell(b[f]);null!=e&&c.push(e)}return c};var I=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(b){return I.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");
-if(b.length>this.hiddenTags.length)return!1;for(var c=0;c<b.length;c++)if(0>mxUtils.indexOf(this.hiddenTags,b[c]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,c,f,d){var e=[];if(null!=b){c=null!=c?c:this.model.getDescendants(this.model.getRoot());for(var l=0,m={},g=0;g<b.length;g++)0<b[g].length&&(m[b[g]]=!0,l++);for(g=0;g<c.length;g++)if(f&&this.model.getParent(c[g])==this.model.root||this.model.isVertex(c[g])||this.model.isEdge(c[g])){var k=this.getTagsForCell(c[g]),p=!1;if(0<k.length&&
-(k=k.split(" "),k.length>=b.length)){for(var q=p=0;q<k.length&&p<l;q++)null!=m[k[q]]&&p++;p=p==l}p&&(1!=d||this.isCellVisible(c[g]))&&e.push(c[g])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(b){for(var c=null,f=[],d=0;d<b.length;d++){var e=this.getTagsForCell(b[d]),f=[];if(0<e.length){for(var e=e.split(" "),l={},m=0;m<e.length;m++)if(null==c||null!=c[e[m]])l[e[m]]=!0,f.push(e[m]);
+if(b.length>this.hiddenTags.length)return!1;for(var c=0;c<b.length;c++)if(0>mxUtils.indexOf(this.hiddenTags,b[c]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,c,f,d){var e=[];if(null!=b){c=null!=c?c:this.model.getDescendants(this.model.getRoot());for(var l=0,m={},g=0;g<b.length;g++)0<b[g].length&&(m[b[g]]=!0,l++);for(g=0;g<c.length;g++)if(f&&this.model.getParent(c[g])==this.model.root||this.model.isVertex(c[g])||this.model.isEdge(c[g])){var p=this.getTagsForCell(c[g]),k=!1;if(0<p.length&&
+(p=p.split(" "),p.length>=b.length)){for(var q=k=0;q<p.length&&k<l;q++)null!=m[p[q]]&&k++;k=k==l}k&&(1!=d||this.isCellVisible(c[g]))&&e.push(c[g])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(b){for(var c=null,f=[],d=0;d<b.length;d++){var e=this.getTagsForCell(b[d]),f=[];if(0<e.length){for(var e=e.split(" "),l={},m=0;m<e.length;m++)if(null==c||null!=c[e[m]])l[e[m]]=!0,f.push(e[m]);
c=l}else return[]}return f};Graph.prototype.getTagsForCells=function(b){for(var c=[],f={},d=0;d<b.length;d++){var e=this.getTagsForCell(b[d]);if(0<e.length)for(var e=e.split(" "),l=0;l<e.length;l++)null==f[e[l]]&&(f[e[l]]=!0,c.push(e[l]))}return c};Graph.prototype.getTagsForCell=function(b){return this.getAttributeForCell(b,"tags","")};Graph.prototype.addTagsForCells=function(b,c){if(0<b.length&&0<c.length){this.model.beginUpdate();try{for(var f=0;f<b.length;f++){for(var d=this.getTagsForCell(b[f]),
e=d.split(" "),l=!1,m=0;m<c.length;m++){var g=mxUtils.trim(c[m]);""!=g&&0>mxUtils.indexOf(e,g)&&(d=0<d.length?d+" "+g:g,l=!0)}l&&this.setAttributeForCell(b[f],"tags",d)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(b,c){if(0<b.length&&0<c.length){this.model.beginUpdate();try{for(var f=0;f<b.length;f++){var d=this.getTagsForCell(b[f]);if(0<d.length){for(var e=d.split(" "),l=!1,m=0;m<c.length;m++){var g=mxUtils.indexOf(e,c[m]);0<=g&&(e.splice(g,1),l=!0)}l&&this.setAttributeForCell(b[f],
"tags",e.join(" "))}}}finally{this.model.endUpdate()}}};Graph.prototype.toggleCells=function(b){this.model.beginUpdate();try{for(var c=0;c<b.length;c++)this.model.setVisible(b[c],!this.model.isVisible(b[c]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(b,c){this.model.beginUpdate();try{for(var f=0;f<b.length;f++)this.model.setVisible(b[f],c)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(b,c,f,d){for(var e=0;e<b.length;e++)this.highlightCell(b[e],
@@ -10720,133 +10713,133 @@ mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js
"/mxBasic.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"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",
STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.uml25=[SHAPES_PATH+"/mxUML25.js"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+
-"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var c=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?c="mxgraph.er":"sysML"==b.substring(0,5)&&(c="mxgraph.sysml"));return c};var L=mxMarker.createMarker;mxMarker.createMarker=function(b,c,f,d,e,l,m,g,k,p){if(null!=f&&null==mxMarker.markers[f]){var q=this.getPackageForType(f);null!=q&&
+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var c=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?c="mxgraph.er":"sysML"==b.substring(0,5)&&(c="mxgraph.sysml"));return c};var L=mxMarker.createMarker;mxMarker.createMarker=function(b,c,f,d,e,l,m,g,p,k){if(null!=f&&null==mxMarker.markers[f]){var q=this.getPackageForType(f);null!=q&&
mxStencilRegistry.getStencil(q)}return L.apply(this,arguments)};PrintDialog.prototype.create=function(b,c){function f(){y.value=Math.max(1,Math.min(g,Math.max(parseInt(y.value),parseInt(n.value))));n.value=Math.max(1,Math.min(g,Math.min(parseInt(y.value),parseInt(n.value))))}function d(c){function f(c,f,l){var m=c.useCssTransforms,g=c.currentTranslate,k=c.currentScale,p=c.view.translate,q=c.view.scale;c.useCssTransforms&&(c.useCssTransforms=!1,c.currentTranslate=new mxPoint(0,0),c.currentScale=1,
c.view.translate=new mxPoint(0,0),c.view.scale=1);var t=c.getGraphBounds(),n=0,y=0,u=L.get(),v=1/c.pageScale,x=A.checked;if(x)var v=parseInt(H.value),C=parseInt(N.value),v=Math.min(u.height*C/(t.height/c.view.scale),u.width*v/(t.width/c.view.scale));else v=parseInt(B.value)/(100*c.pageScale),isNaN(v)&&(d=1/c.pageScale,B.value="100 %");u=mxRectangle.fromRectangle(u);u.width=Math.ceil(u.width*d);u.height=Math.ceil(u.height*d);v*=d;!x&&c.pageVisible?(t=c.getPageLayout(),n-=t.x*u.width,y-=t.y*u.height):
x=!0;if(null==f){f=PrintDialog.createPrintPreview(c,v,u,0,n,y,x);f.pageSelector=!1;f.mathEnabled=!1;n=b.getCurrentFile();null!=n&&(f.title=n.getTitle());var E=f.writeHead;f.writeHead=function(f){E.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)f.writeln('<style type="text/css">'),f.writeln(Editor.mathJaxWebkitCss),f.writeln("</style>");mxClient.IS_GC&&(f.writeln('<style type="text/css">'),f.writeln("@media print {"),f.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),f.writeln("}"),
f.writeln("</style>"));null!=b.editor.fontCss&&(f.writeln('<style type="text/css">'),f.writeln(b.editor.fontCss),f.writeln("</style>"));for(var d=c.getCustomFonts(),e=0;e<d.length;e++){var l=d[e].name,m=d[e].url;Graph.isCssFontUrl(m)?f.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(m)+'" charset="UTF-8" type="text/css">'):(f.writeln('<style type="text/css">'),f.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(l)+'";\nsrc: url("'+mxUtils.htmlEntities(m)+'");\n}'),f.writeln("</style>"))}};
if("undefined"!==typeof MathJax){var z=f.renderPage;f.renderPage=function(c,f,d,e,l,m){var g=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var k=z.apply(this,arguments);mxClient.NO_FO=g;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:k.className="geDisableMathJax";return k}}n=null;y=e.enableFlowAnimation;e.enableFlowAnimation=!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(n=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),
e.refresh());f.open(null,null,l,!0);e.enableFlowAnimation=y;null!=n&&(e.stylesheet=n,e.refresh())}else{u=c.background;if(null==u||""==u||u==mxConstants.NONE)u="#ffffff";f.backgroundColor=u;f.autoOrigin=x;f.appendGraph(c,v,n,y,l,!0);l=c.getCustomFonts();if(null!=f.wnd)for(n=0;n<l.length;n++)y=l[n].name,x=l[n].url,Graph.isCssFontUrl(x)?f.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(x)+'" charset="UTF-8" type="text/css">'):(f.wnd.document.writeln('<style type="text/css">'),
-f.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(y)+'";\nsrc: url("'+mxUtils.htmlEntities(x)+'");\n}'),f.wnd.document.writeln("</style>"))}m&&(c.useCssTransforms=m,c.currentTranslate=g,c.currentScale=k,c.view.translate=p,c.view.scale=q);return f}var d=parseInt(K.value)/100;isNaN(d)&&(d=1,K.value="100 %");var d=.75*d,l=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(l=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());var m=n.value,g=y.value,p=!q.checked,
-t=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,q.checked,m,g,A.checked,H.value,N.value,parseInt(B.value)/100,parseInt(K.value)/100,L.get());else{p&&(p=m==k&&g==k);if(!p&&null!=b.pages&&b.pages.length){var u=0,p=b.pages.length-1;q.checked||(u=parseInt(m)-1,p=parseInt(g)-1);for(var v=u;v<=p;v++){var x=b.pages[v],m=x==b.currentPage?e:null;if(null==m){var m=b.createTemporaryGraph(e.stylesheet),g=!0,u=!1,C=null,E=null;null==x.viewState&&null==x.root&&b.updatePageRoot(x);null!=x.viewState&&
+f.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(y)+'";\nsrc: url("'+mxUtils.htmlEntities(x)+'");\n}'),f.wnd.document.writeln("</style>"))}m&&(c.useCssTransforms=m,c.currentTranslate=g,c.currentScale=k,c.view.translate=p,c.view.scale=q);return f}var d=parseInt(J.value)/100;isNaN(d)&&(d=1,J.value="100 %");var d=.75*d,l=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(l=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());var m=n.value,g=y.value,k=!q.checked,
+t=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,q.checked,m,g,A.checked,H.value,N.value,parseInt(B.value)/100,parseInt(J.value)/100,L.get());else{k&&(k=m==p&&g==p);if(!k&&null!=b.pages&&b.pages.length){var u=0,k=b.pages.length-1;q.checked||(u=parseInt(m)-1,k=parseInt(g)-1);for(var v=u;v<=k;v++){var x=b.pages[v],m=x==b.currentPage?e:null;if(null==m){var m=b.createTemporaryGraph(e.stylesheet),g=!0,u=!1,C=null,E=null;null==x.viewState&&null==x.root&&b.updatePageRoot(x);null!=x.viewState&&
(g=x.viewState.pageVisible,u=x.viewState.mathEnabled,C=x.viewState.background,E=x.viewState.backgroundImage,m.extFonts=x.viewState.extFonts);m.background=C;m.backgroundImage=null!=E?new mxImage(E.src,E.width,E.height):null;m.pageVisible=g;m.mathEnabled=u;var z=m.getGlobalVariable;m.getGlobalVariable=function(c){return"page"==c?x.getName():"pagenumber"==c?v+1:"pagecount"==c?null!=b.pages?b.pages.length:1:z.apply(this,arguments)};document.body.appendChild(m.container);b.updatePageRoot(x);m.model.setRoot(x.root)}t=
-f(m,t,v!=p);m!=e&&m.container.parentNode.removeChild(m.container)}}else t=f(e);null==t?b.handleError({message:mxResources.get("errorUpdatingPreview")}):(t.mathEnabled&&(p=t.wnd.document,c&&(t.wnd.IMMEDIATE_PRINT=!0),p.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),t.closeDocument(),!t.mathEnabled&&c&&PrintDialog.printPreview(t));null!=l&&(e.stylesheet=l,e.refresh())}}var e=b.editor.graph,l=document.createElement("div"),m=document.createElement("h3");
-m.style.width="100%";m.style.textAlign="center";m.style.marginTop="0px";mxUtils.write(m,c||mxResources.get("print"));l.appendChild(m);var g=1,k=1,p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var q=document.createElement("input");q.style.cssText="margin-right:8px;margin-bottom:8px;";q.setAttribute("value","all");q.setAttribute("type","radio");q.setAttribute("name","pages-printdialog");p.appendChild(q);m=document.createElement("span");
-mxUtils.write(m,mxResources.get("printAllPages"));p.appendChild(m);mxUtils.br(p);var t=q.cloneNode(!0);q.setAttribute("checked","checked");t.setAttribute("value","range");p.appendChild(t);m=document.createElement("span");mxUtils.write(m,mxResources.get("pages")+":");p.appendChild(m);var n=document.createElement("input");n.style.cssText="margin:0 8px 0 8px;";n.setAttribute("value","1");n.setAttribute("type","number");n.setAttribute("min","1");n.style.width="50px";p.appendChild(n);m=document.createElement("span");
-mxUtils.write(m,mxResources.get("to"));p.appendChild(m);var y=n.cloneNode(!0);p.appendChild(y);mxEvent.addListener(n,"focus",function(){t.checked=!0});mxEvent.addListener(y,"focus",function(){t.checked=!0});mxEvent.addListener(n,"change",f);mxEvent.addListener(y,"change",f);if(null!=b.pages&&(g=b.pages.length,null!=b.currentPage))for(m=0;m<b.pages.length;m++)if(b.currentPage==b.pages[m]){k=m+1;n.value=k;y.value=k;break}n.setAttribute("max",g);y.setAttribute("max",g);b.isPagesEnabled()?1<g&&(l.appendChild(p),
+f(m,t,v!=k);m!=e&&m.container.parentNode.removeChild(m.container)}}else t=f(e);null==t?b.handleError({message:mxResources.get("errorUpdatingPreview")}):(t.mathEnabled&&(k=t.wnd.document,c&&(t.wnd.IMMEDIATE_PRINT=!0),k.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),t.closeDocument(),!t.mathEnabled&&c&&PrintDialog.printPreview(t));null!=l&&(e.stylesheet=l,e.refresh())}}var e=b.editor.graph,l=document.createElement("div"),m=document.createElement("h3");
+m.style.width="100%";m.style.textAlign="center";m.style.marginTop="0px";mxUtils.write(m,c||mxResources.get("print"));l.appendChild(m);var g=1,p=1,k=document.createElement("div");k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var q=document.createElement("input");q.style.cssText="margin-right:8px;margin-bottom:8px;";q.setAttribute("value","all");q.setAttribute("type","radio");q.setAttribute("name","pages-printdialog");k.appendChild(q);m=document.createElement("span");
+mxUtils.write(m,mxResources.get("printAllPages"));k.appendChild(m);mxUtils.br(k);var t=q.cloneNode(!0);q.setAttribute("checked","checked");t.setAttribute("value","range");k.appendChild(t);m=document.createElement("span");mxUtils.write(m,mxResources.get("pages")+":");k.appendChild(m);var n=document.createElement("input");n.style.cssText="margin:0 8px 0 8px;";n.setAttribute("value","1");n.setAttribute("type","number");n.setAttribute("min","1");n.style.width="50px";k.appendChild(n);m=document.createElement("span");
+mxUtils.write(m,mxResources.get("to"));k.appendChild(m);var y=n.cloneNode(!0);k.appendChild(y);mxEvent.addListener(n,"focus",function(){t.checked=!0});mxEvent.addListener(y,"focus",function(){t.checked=!0});mxEvent.addListener(n,"change",f);mxEvent.addListener(y,"change",f);if(null!=b.pages&&(g=b.pages.length,null!=b.currentPage))for(m=0;m<b.pages.length;m++)if(b.currentPage==b.pages[m]){p=m+1;n.value=p;y.value=p;break}n.setAttribute("max",g);y.setAttribute("max",g);b.isPagesEnabled()?1<g&&(l.appendChild(k),
t.checked=!0):t.checked=!0;var u=document.createElement("div");u.style.marginBottom="10px";var v=document.createElement("input");v.style.marginRight="8px";v.setAttribute("value","adjust");v.setAttribute("type","radio");v.setAttribute("name","printZoom");u.appendChild(v);m=document.createElement("span");mxUtils.write(m,mxResources.get("adjustTo"));u.appendChild(m);var B=document.createElement("input");B.style.cssText="margin:0 8px 0 8px;";B.setAttribute("value","100 %");B.style.width="50px";u.appendChild(B);
-mxEvent.addListener(B,"focus",function(){v.checked=!0});l.appendChild(u);var p=p.cloneNode(!1),A=v.cloneNode(!0);A.setAttribute("value","fit");v.setAttribute("checked","checked");m=document.createElement("div");m.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";m.appendChild(A);p.appendChild(m);u=document.createElement("table");u.style.display="inline-block";var x=document.createElement("tbody"),C=document.createElement("tr"),E=C.cloneNode(!0),z=document.createElement("td"),
+mxEvent.addListener(B,"focus",function(){v.checked=!0});l.appendChild(u);var k=k.cloneNode(!1),A=v.cloneNode(!0);A.setAttribute("value","fit");v.setAttribute("checked","checked");m=document.createElement("div");m.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";m.appendChild(A);k.appendChild(m);u=document.createElement("table");u.style.display="inline-block";var x=document.createElement("tbody"),C=document.createElement("tr"),E=C.cloneNode(!0),z=document.createElement("td"),
M=z.cloneNode(!0),D=z.cloneNode(!0),G=z.cloneNode(!0),I=z.cloneNode(!0),F=z.cloneNode(!0);z.style.textAlign="right";G.style.textAlign="right";mxUtils.write(z,mxResources.get("fitTo"));var H=document.createElement("input");H.style.cssText="margin:0 8px 0 8px;";H.setAttribute("value","1");H.setAttribute("min","1");H.setAttribute("type","number");H.style.width="40px";M.appendChild(H);m=document.createElement("span");mxUtils.write(m,mxResources.get("fitToSheetsAcross"));D.appendChild(m);mxUtils.write(G,
-mxResources.get("fitToBy"));var N=H.cloneNode(!0);I.appendChild(N);mxEvent.addListener(H,"focus",function(){A.checked=!0});mxEvent.addListener(N,"focus",function(){A.checked=!0});m=document.createElement("span");mxUtils.write(m,mxResources.get("fitToSheetsDown"));F.appendChild(m);C.appendChild(z);C.appendChild(M);C.appendChild(D);E.appendChild(G);E.appendChild(I);E.appendChild(F);x.appendChild(C);x.appendChild(E);u.appendChild(x);p.appendChild(u);l.appendChild(p);p=document.createElement("div");m=
-document.createElement("div");m.style.fontWeight="bold";m.style.marginBottom="12px";mxUtils.write(m,mxResources.get("paperSize"));p.appendChild(m);m=document.createElement("div");m.style.marginBottom="12px";var L=PageSetupDialog.addPageFormatPanel(m,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(m);m=document.createElement("span");mxUtils.write(m,mxResources.get("pageScale"));p.appendChild(m);var K=document.createElement("input");K.style.cssText="margin:0 8px 0 8px;";
-K.setAttribute("value","100 %");K.style.width="60px";p.appendChild(K);l.appendChild(p);m=document.createElement("div");m.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});p.className="geBtn";b.editor.cancelFirst&&m.appendChild(p);b.isOffline()||(u=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),u.className="geBtn",m.appendChild(u));PrintDialog.previewEnabled&&(u=
-mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();d(!1)}),u.className="geBtn",m.appendChild(u));u=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();d(!0)});u.className="geBtn gePrimaryBtn";m.appendChild(u);b.editor.cancelFirst||m.appendChild(p);l.appendChild(m);this.container=l};var M=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=
+mxResources.get("fitToBy"));var N=H.cloneNode(!0);I.appendChild(N);mxEvent.addListener(H,"focus",function(){A.checked=!0});mxEvent.addListener(N,"focus",function(){A.checked=!0});m=document.createElement("span");mxUtils.write(m,mxResources.get("fitToSheetsDown"));F.appendChild(m);C.appendChild(z);C.appendChild(M);C.appendChild(D);E.appendChild(G);E.appendChild(I);E.appendChild(F);x.appendChild(C);x.appendChild(E);u.appendChild(x);k.appendChild(u);l.appendChild(k);k=document.createElement("div");m=
+document.createElement("div");m.style.fontWeight="bold";m.style.marginBottom="12px";mxUtils.write(m,mxResources.get("paperSize"));k.appendChild(m);m=document.createElement("div");m.style.marginBottom="12px";var L=PageSetupDialog.addPageFormatPanel(m,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);k.appendChild(m);m=document.createElement("span");mxUtils.write(m,mxResources.get("pageScale"));k.appendChild(m);var J=document.createElement("input");J.style.cssText="margin:0 8px 0 8px;";
+J.setAttribute("value","100 %");J.style.width="60px";k.appendChild(J);l.appendChild(k);m=document.createElement("div");m.style.cssText="text-align:right;margin:48px 0 0 0;";k=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});k.className="geBtn";b.editor.cancelFirst&&m.appendChild(k);b.isOffline()||(u=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),u.className="geBtn",m.appendChild(u));PrintDialog.previewEnabled&&(u=
+mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();d(!1)}),u.className="geBtn",m.appendChild(u));u=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();d(!0)});u.className="geBtn gePrimaryBtn";m.appendChild(u);b.editor.cancelFirst||m.appendChild(k);l.appendChild(m);this.container=l};var M=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=
this.page.viewState){this.ignoreColor||(this.page.viewState.background=this.color);if(!this.ignoreImage){var b=this.image;null!=b&&null!=b.src&&Graph.isPageLink(b.src)&&(b={originalSrc:b.src});this.page.viewState.backgroundImage=b}null!=this.format&&(this.page.viewState.pageFormat=this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)}}else M.apply(this,arguments),null!=this.mathEnabled&&
this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible)};Editor.prototype.useCanvasForExport=!1;try{var N=document.createElement("canvas"),O=new Image;O.onload=function(){try{N.getContext("2d").drawImage(O,0,0);var b=N.toDataURL("image/png");Editor.prototype.useCanvasForExport=
-null!=b&&6<b.length}catch(T){}};O.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(K){}})();
+null!=b&&6<b.length}catch(T){}};O.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(J){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(b,d,c){c.ui=b.ui;return d};b.afterDecode=function(b,d,c){c.previousColor=c.color;c.previousImage=c.image;c.previousFormat=c.format;null!=c.foldingEnabled&&(c.foldingEnabled=!c.foldingEnabled);null!=c.mathEnabled&&(c.mathEnabled=!c.mathEnabled);null!=c.shadowVisible&&(c.shadowVisible=!c.shadowVisible);return c};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(b,d,c){c.ui=b.ui;return d};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="15.9.6";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
+(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(b,d,c){c.ui=b.ui;return d};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.0.0";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.nativeFileSupport=
-!mxClient.IS_OP&&!EditorUi.isElectronApp&&"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,
-noteMargin:10,messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(b,c,d,e,g,k,n){k=null!=k?k:0<=b.indexOf("NetworkError")||0<=b.indexOf("SecurityError")||0<=b.indexOf("NS_ERROR_FAILURE")||0<=b.indexOf("out of memory")?"CONFIG":
-"SEVERE";if(EditorUi.enableLogging&&"1"!=urlParams.dev)try{if(b!=EditorUi.lastErrorMessage&&(null==b||null==c||-1==b.indexOf("Script error")&&-1==b.indexOf("extension"))&&null!=b&&0>b.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=b;var f=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";g=null!=g?g:Error(b);(new Image).src=f+"/log?severity="+k+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(b)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+
-encodeURIComponent(d)+(null!=e?":colno:"+encodeURIComponent(e):"")+(null!=g&&null!=g.stack?"&stack="+encodeURIComponent(g.stack):"")}}catch(x){}try{n||null==window.console||console.error(k,b,c,d,e,g)}catch(x){}};EditorUi.logEvent=function(b){if("1"==urlParams.dev)EditorUi.debug("logEvent",b);else if(EditorUi.enableLogging)try{var c=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=c+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=b?"&data="+encodeURIComponent(JSON.stringify(b)):
-"")}catch(m){}};EditorUi.sendReport=function(b,c){if("1"==urlParams.dev)EditorUi.debug("sendReport",b);else if(EditorUi.enableLogging)try{c=null!=c?c:5E4,b.length>c&&(b=b.substring(0,c)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(b))}catch(m){}};EditorUi.debug=function(){try{if(null!=window.console&&"1"==urlParams.test){for(var b=[(new Date).toISOString()],c=0;c<arguments.length;c++)null!=
-arguments[c]&&b.push(arguments[c]);console.log.apply(console,b)}}catch(m){}};EditorUi.removeChildNodes=function(b){for(;null!=b.firstChild;)b.removeChild(b.firstChild)};EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>";EditorUi.prototype.mode=null;EditorUi.prototype.timeout=Editor.prototype.timeout;EditorUi.prototype.sidebarFooterHeight=38;EditorUi.prototype.defaultCustomShapeStyle=
-"shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;";EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.maxTextWidth=520;EditorUi.prototype.resampleThreshold=1E5;
-EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.maxTextBytes=5E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport=!1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=!0;EditorUi.prototype.embedExportBorder=8;EditorUi.prototype.embedExportBackground=null;(function(){EditorUi.prototype.useCanvasForExport=!1;
-EditorUi.prototype.jpgSupported=!1;try{var b=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!b.getContext||!b.getContext("2d"))}catch(q){}try{var c=document.createElement("canvas"),d=new Image;d.onload=function(){try{c.getContext("2d").drawImage(d,0,0);var b=c.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=b&&6<b.length}catch(t){}};d.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(q){}try{c=
-document.createElement("canvas");c.width=c.height=1;var e=c.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==e.match("image/jpeg")}catch(q){}})();EditorUi.prototype.openLink=function(b,c,d){return this.editor.graph.openLink(b,c,d)};EditorUi.prototype.showSplash=function(b){};EditorUi.prototype.getLocalData=function(b,c){c(localStorage.getItem(b))};EditorUi.prototype.setLocalData=function(b,c,d){localStorage.setItem(b,c);null!=d&&d()};EditorUi.prototype.removeLocalData=function(b,c){localStorage.removeItem(b);
-c()};EditorUi.prototype.setMathEnabled=function(b){this.editor.graph.mathEnabled=b;this.editor.updateGraphComponents();this.editor.graph.refresh();this.editor.graph.defaultMathEnabled=b;this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(b){return this.editor.graph.mathEnabled};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(b){return this.isOfflineApp()||!navigator.onLine||!b&&("1"==urlParams.stealth||
-"1"==urlParams.lockdown)};EditorUi.prototype.createSpinner=function(b,c,d){var f=null==b||null==c;d=null!=d?d:24;var e=new Spinner({lines:12,length:d,width:Math.round(d/3),radius:Math.round(d/2),rotate:0,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),l=e.spin;e.spin=function(d,m){var g=!1;this.active||(l.call(this,d),this.active=!0,null!=m&&(f&&(c=Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,b=document.body.clientWidth/
-2-2),g=document.createElement("div"),g.style.position="absolute",g.style.whiteSpace="nowrap",g.style.background="#4B4243",g.style.color="white",g.style.fontFamily=Editor.defaultHtmlFont,g.style.fontSize="9pt",g.style.padding="6px",g.style.paddingLeft="10px",g.style.paddingRight="10px",g.style.zIndex=2E9,g.style.left=Math.max(0,b)+"px",g.style.top=Math.max(0,c+70)+"px",mxUtils.setPrefixedStyle(g.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,-50%)"),Editor.isDarkMode()||
-mxUtils.setPrefixedStyle(g.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=m.substring(m.length-3,m.length)&&"!"!=m.charAt(m.length-1)&&(m+="..."),g.innerHTML=m,d.appendChild(g),e.status=g),this.pause=mxUtils.bind(this,function(){var b=function(){};this.active&&(b=mxUtils.bind(this,function(){this.spin(d,m)}));this.stop();return b}),g=!0);return g};var m=e.stop;e.stop=function(){m.call(this);this.active=!1;null!=e.status&&null!=e.status.parentNode&&e.status.parentNode.removeChild(e.status);e.status=
-null};e.pause=function(){return function(){}};return e};EditorUi.prototype.isCompatibleString=function(b){try{var c=mxUtils.parseXml(b),f=this.editor.extractGraphModel(c.documentElement,!0);return null!=f&&0==f.getElementsByTagName("parsererror").length}catch(p){}return!1};EditorUi.prototype.isVisioData=function(b){return 8<b.length&&(208==b.charCodeAt(0)&&207==b.charCodeAt(1)&&17==b.charCodeAt(2)&&224==b.charCodeAt(3)&&161==b.charCodeAt(4)&&177==b.charCodeAt(5)&&26==b.charCodeAt(6)&&225==b.charCodeAt(7)||
-80==b.charCodeAt(0)&&75==b.charCodeAt(1)&&3==b.charCodeAt(2)&&4==b.charCodeAt(3)||80==b.charCodeAt(0)&&75==b.charCodeAt(1)&&3==b.charCodeAt(2)&&6==b.charCodeAt(3))};EditorUi.prototype.isRemoteVisioData=function(b){return 8<b.length&&(208==b.charCodeAt(0)&&207==b.charCodeAt(1)&&17==b.charCodeAt(2)&&224==b.charCodeAt(3)&&161==b.charCodeAt(4)&&177==b.charCodeAt(5)&&26==b.charCodeAt(6)&&225==b.charCodeAt(7)||60==b.charCodeAt(0)&&63==b.charCodeAt(1)&&120==b.charCodeAt(2)&&109==b.charCodeAt(3)&&108==b.charCodeAt(3))};
-var b=EditorUi.prototype.createKeyHandler;EditorUi.prototype.createKeyHandler=function(c){var f=b.apply(this,arguments);if(!this.editor.chromeless||this.editor.editable){var d=f.getFunction,e=this.editor.graph,g=this;f.getFunction=function(b){if(e.isSelectionEmpty()&&null!=g.pages&&0<g.pages.length){var c=g.getSelectedPageIndex();if(mxEvent.isShiftDown(b)){if(37==b.keyCode)return function(){0<c&&g.movePage(c,c-1)};if(38==b.keyCode)return function(){0<c&&g.movePage(c,0)};if(39==b.keyCode)return function(){c<
-g.pages.length-1&&g.movePage(c,c+1)};if(40==b.keyCode)return function(){c<g.pages.length-1&&g.movePage(c,g.pages.length-1)}}else if(mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b)){if(37==b.keyCode)return function(){0<c&&g.selectNextPage(!1)};if(38==b.keyCode)return function(){0<c&&g.selectPage(g.pages[0])};if(39==b.keyCode)return function(){c<g.pages.length-1&&g.selectNextPage(!0)};if(40==b.keyCode)return function(){c<g.pages.length-1&&g.selectPage(g.pages[g.pages.length-1])}}}return d.apply(this,
-arguments)}}return f};var e=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(b){var c=e.apply(this,arguments);if(null==c)try{var f=b.indexOf("&lt;mxfile ");if(0<=f){var d=b.lastIndexOf("&lt;/mxfile&gt;");d>f&&(c=b.substring(f,d+15).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var g=mxUtils.parseXml(b),k=this.editor.extractGraphModel(g.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),
-c=null!=k?mxUtils.getXml(k):""}catch(u){}return c};EditorUi.prototype.validateFileData=function(b){if(null!=b&&0<b.length){var c=b.indexOf('<meta charset="utf-8">');0<=c&&(b=b.slice(0,c)+'<meta charset="utf-8"/>'+b.slice(c+23-1,b.length));b=Graph.zapGremlins(b)}return b};EditorUi.prototype.replaceFileData=function(b){b=this.validateFileData(b);b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:null;var c=null!=b?this.editor.extractGraphModel(b,!0):null;null!=c&&(b=c);if(null!=b){c=this.editor.graph;
-c.model.beginUpdate();try{var f=null!=this.pages?this.pages.slice():null,d=b.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name")){this.fileNode=b;this.pages=null!=this.pages?this.pages:[];for(var e=d.length-1;0<=e;e--){var g=this.updatePageRoot(new DiagramPage(d[e]));null==g.getName()&&g.setName(mxResources.get("pageWithNumber",[e+1]));c.model.execute(new ChangePage(this,g,0==e?g:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=
-b.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),c.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(b),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=f)for(e=0;e<f.length;e++)c.model.execute(new ChangePage(this,f[e],null))}finally{c.model.endUpdate()}}};EditorUi.prototype.createFileData=
-function(b,c,d,e,g,k,n,v,x,A,z){c=null!=c?c:this.editor.graph;g=null!=g?g:!1;x=null!=x?x:!0;var f,l=null;null==d||d.getMode()==App.MODE_DEVICE||d.getMode()==App.MODE_BROWSER?f="_blank":l=f=e;if(null==b)return"";var m=b;if("mxfile"!=m.nodeName.toLowerCase()){if(z){var p=b.ownerDocument.createElement("diagram");p.setAttribute("id",Editor.guid());p.appendChild(b)}else{p=Graph.zapGremlins(mxUtils.getXml(b));m=Graph.compress(p);if(Graph.decompress(m)!=p)return p;p=b.ownerDocument.createElement("diagram");
-p.setAttribute("id",Editor.guid());mxUtils.setTextContent(p,m)}m=b.ownerDocument.createElement("mxfile");m.appendChild(p)}A?(m=m.cloneNode(!0),m.removeAttribute("modified"),m.removeAttribute("host"),m.removeAttribute("agent"),m.removeAttribute("etag"),m.removeAttribute("userAgent"),m.removeAttribute("version"),m.removeAttribute("editor"),m.removeAttribute("type")):(m.removeAttribute("userAgent"),m.removeAttribute("version"),m.removeAttribute("editor"),m.removeAttribute("pages"),m.removeAttribute("type"),
-mxClient.IS_CHROMEAPP?m.setAttribute("host","Chrome"):EditorUi.isElectronApp?m.setAttribute("host","Electron"):m.setAttribute("host",window.location.hostname),m.setAttribute("modified",(new Date).toISOString()),m.setAttribute("agent",navigator.appVersion),m.setAttribute("version",EditorUi.VERSION),m.setAttribute("etag",Editor.guid()),b=null!=d?d.getMode():this.mode,null!=b&&m.setAttribute("type",b),1<m.getElementsByTagName("diagram").length&&null!=this.pages&&m.setAttribute("pages",this.pages.length));
-z=z?mxUtils.getPrettyXml(m):mxUtils.getXml(m);if(!k&&!g&&(n||null!=d&&/(\.html)$/i.test(d.getTitle())))z=this.getHtml2(mxUtils.getXml(m),c,null!=d?d.getTitle():null,f,l);else if(k||!g&&null!=d&&/(\.svg)$/i.test(d.getTitle()))null==d||d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER||(e=null),z=this.getEmbeddedSvg(z,c,e,null,v,x,l);return z};EditorUi.prototype.getXmlFileData=function(b,c,d,e){b=null!=b?b:!0;c=null!=c?c:!1;d=null!=d?d:!Editor.compressXml;var f=this.editor.getGraphXml(b,e);
-if(b&&null!=this.fileNode&&null!=this.currentPage)if(b=function(b){var c=b.getElementsByTagName("mxGraphModel"),c=0<c.length?c[0]:null;null==c&&d?(c=mxUtils.trim(mxUtils.getTextContent(b)),b=b.cloneNode(!1),0<c.length&&(c=Graph.decompress(c),null!=c&&0<c.length&&b.appendChild(mxUtils.parseXml(c).documentElement))):null==c||d?b=b.cloneNode(!0):(b=b.cloneNode(!1),mxUtils.setTextContent(b,Graph.compressNode(c)));f.appendChild(b)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,
-Graph.compressNode(f)),f=this.fileNode.cloneNode(!1),c)b(this.currentPage.node);else for(c=0;c<this.pages.length;c++){var l=this.pages[c],m=l.node;if(l!=this.currentPage)if(l.needsUpdate){var g=new mxCodec(mxUtils.createXmlDocument()),g=g.encode(new mxGraphModel(l.root));this.editor.graph.saveViewState(l.viewState,g,null,e);EditorUi.removeChildNodes(m);mxUtils.setTextContent(m,Graph.compressNode(g));delete l.needsUpdate}else e&&(this.updatePageRoot(l),null!=l.viewState.backgroundImage&&(null!=l.viewState.backgroundImage.originalSrc?
-l.viewState.backgroundImage=this.createImageForPageLink(l.viewState.backgroundImage.originalSrc,l):Graph.isPageLink(l.viewState.backgroundImage.src)&&(l.viewState.backgroundImage=this.createImageForPageLink(l.viewState.backgroundImage.src,l))),null!=l.viewState.backgroundImage&&null!=l.viewState.backgroundImage.originalSrc&&(g=new mxCodec(mxUtils.createXmlDocument()),g=g.encode(new mxGraphModel(l.root)),this.editor.graph.saveViewState(l.viewState,g,null,e),m=m.cloneNode(!1),mxUtils.setTextContent(m,
-Graph.compressNode(g))));b(m)}return f};EditorUi.prototype.anonymizeString=function(b,c){for(var f=[],d=0;d<b.length;d++){var e=b.charAt(d);0<=EditorUi.ignoredAnonymizedChars.indexOf(e)?f.push(e):isNaN(parseInt(e))?e.toLowerCase()!=e?f.push(String.fromCharCode(65+Math.round(25*Math.random()))):e.toUpperCase()!=e?f.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(e)?f.push(" "):f.push("?"):f.push(c?"0":Math.round(9*Math.random()))}return f.join("")};EditorUi.prototype.anonymizePatch=
-function(b){if(null!=b[EditorUi.DIFF_INSERT])for(var c=0;c<b[EditorUi.DIFF_INSERT].length;c++)try{var f=mxUtils.parseXml(b[EditorUi.DIFF_INSERT][c].data).documentElement.cloneNode(!1);null!=f.getAttribute("name")&&f.setAttribute("name",this.anonymizeString(f.getAttribute("name")));b[EditorUi.DIFF_INSERT][c].data=mxUtils.getXml(f)}catch(t){b[EditorUi.DIFF_INSERT][c].data=t.message}if(null!=b[EditorUi.DIFF_UPDATE]){for(var d in b[EditorUi.DIFF_UPDATE]){var e=b[EditorUi.DIFF_UPDATE][d];null!=e.name&&
-(e.name=this.anonymizeString(e.name));null!=e.cells&&(c=mxUtils.bind(this,function(b){var c=e.cells[b];if(null!=c){for(var f in c)null!=c[f].value&&(c[f].value="["+c[f].value.length+"]"),null!=c[f].xmlValue&&(c[f].xmlValue="["+c[f].xmlValue.length+"]"),null!=c[f].style&&(c[f].style="["+c[f].style.length+"]"),0==Object.keys(c[f]).length&&delete c[f];0==Object.keys(c).length&&delete e.cells[b]}}),c(EditorUi.DIFF_INSERT),c(EditorUi.DIFF_UPDATE),0==Object.keys(e.cells).length&&delete e.cells);0==Object.keys(e).length&&
-delete b[EditorUi.DIFF_UPDATE][d]}0==Object.keys(b[EditorUi.DIFF_UPDATE]).length&&delete b[EditorUi.DIFF_UPDATE]}return b};EditorUi.prototype.anonymizeAttributes=function(b,c){if(null!=b.attributes)for(var f=0;f<b.attributes.length;f++)"as"!=b.attributes[f].name&&b.setAttribute(b.attributes[f].name,this.anonymizeString(b.attributes[f].value,c));if(null!=b.childNodes)for(f=0;f<b.childNodes.length;f++)this.anonymizeAttributes(b.childNodes[f],c)};EditorUi.prototype.anonymizeNode=function(b,c){for(var f=
-b.getElementsByTagName("mxCell"),d=0;d<f.length;d++)null!=f[d].getAttribute("value")&&f[d].setAttribute("value","["+f[d].getAttribute("value").length+"]"),null!=f[d].getAttribute("xmlValue")&&f[d].setAttribute("xmlValue","["+f[d].getAttribute("xmlValue").length+"]"),null!=f[d].getAttribute("style")&&f[d].setAttribute("style","["+f[d].getAttribute("style").length+"]"),null!=f[d].parentNode&&"root"!=f[d].parentNode.nodeName&&null!=f[d].parentNode.parentNode&&(f[d].setAttribute("id",f[d].parentNode.getAttribute("id")),
-f[d].parentNode.parentNode.replaceChild(f[d],f[d].parentNode));return b};EditorUi.prototype.synchronizeCurrentFile=function(b){var c=this.getCurrentFile();null!=c&&(c.savingFile?this.handleError({message:mxResources.get("busy")}):!b&&c.invalidChecksum?c.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(c.clearAutosave(),this.editor.setStatus(""),b?c.reloadFile(mxUtils.bind(this,function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,
-function(b){c.handleFileError(b,!0)})):c.synchronizeFile(mxUtils.bind(this,function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(b){c.handleFileError(b,!0)}))))};EditorUi.prototype.getFileData=function(b,c,d,e,g,k,n,v,x,A,z){g=null!=g?g:!0;k=null!=k?k:!1;var f=this.editor.graph;if(c||!b&&null!=x&&/(\.svg)$/i.test(x.getTitle())){var l=null!=f.themes&&"darkTheme"==f.defaultThemeName;A=!1;if(l||null!=this.pages&&this.currentPage!=this.pages[0]){var m=f.getGlobalVariable,
-f=this.createTemporaryGraph(l?f.getDefaultStylesheet():f.getStylesheet());f.setBackgroundImage=this.editor.graph.setBackgroundImage;var p=this.pages[0];this.currentPage==p?f.setBackgroundImage(this.editor.graph.backgroundImage):null!=p.viewState&&null!=p.viewState&&f.setBackgroundImage(p.viewState.backgroundImage);f.getGlobalVariable=function(b){return"page"==b?p.getName():"pagenumber"==b?1:m.apply(this,arguments)};document.body.appendChild(f.container);f.model.setRoot(p.root)}}n=null!=n?n:this.getXmlFileData(g,
-k,A,z);x=null!=x?x:this.getCurrentFile();b=this.createFileData(n,f,x,window.location.href,b,c,d,e,g,v,A);f!=this.editor.graph&&f.container.parentNode.removeChild(f.container);return b};EditorUi.prototype.getHtml=function(b,c,d,e,g,k){k=null!=k?k:!0;var f=null,l=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=c){var f=k?c.getGraphBounds():c.getBoundingBox(c.getSelectionCells()),m=c.view.scale;k=Math.floor(f.x/m-c.view.translate.x);m=Math.floor(f.y/m-c.view.translate.y);f=c.background;null==g&&
-(c=this.getBasenames().join(";"),0<c.length&&(l=EditorUi.drawHost+"/embed.js?s="+c));b.setAttribute("x0",k);b.setAttribute("y0",m)}null!=b&&(b.setAttribute("pan","1"),b.setAttribute("zoom","1"),b.setAttribute("resize","0"),b.setAttribute("fit","0"),b.setAttribute("border","20"),b.setAttribute("links","1"),null!=e&&b.setAttribute("edit",e));null!=g&&(g=g.replace(/&/g,"&amp;"));b=null!=b?Graph.zapGremlins(mxUtils.getXml(b)):"";e=Graph.compress(b);Graph.decompress(e)!=b&&(e=encodeURIComponent(b));return(null==
-g?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=g?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==g?null!=d?"<title>"+mxUtils.htmlEntities(d)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=g?'<meta http-equiv="refresh" content="0;URL=\''+g+"'\"/>\n":"")+"</head>\n<body"+(null==g&&null!=f&&f!=mxConstants.NONE?' style="background-color:'+f+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+
-e+"</div>\n</div>\n"+(null==g?'<script type="text/javascript" src="'+l+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+g+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(b,c,d,e,g){c=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=g&&(g=g.replace(/&/g,"&amp;"));b={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,
-resize:!0,xml:Graph.zapGremlins(b),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(b.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==g?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=g?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==g?null!=d?"<title>"+mxUtils.htmlEntities(d)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=g?'<meta http-equiv="refresh" content="0;URL=\''+
-g+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(b))+'"></div>\n'+(null==g?'<script type="text/javascript" src="'+c+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+g+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=
-function(b){b=this.validateFileData(b);this.pages=this.fileNode=this.currentPage=null;b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:null;var c=Editor.extractParserError(b,mxResources.get("invalidOrMissingFile"));if(c)throw Error(mxResources.get("notADiagramFile")+" ("+c+")");c=null!=b?this.editor.extractGraphModel(b,!0):null;null!=c&&(b=c);if(null!=b&&"mxfile"==b.nodeName&&(c=b.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name"))){var f=
-null;this.fileNode=b;this.pages=[];for(var d=0;d<c.length;d++)null==c[d].getAttribute("id")&&c[d].setAttribute("id",d),b=new DiagramPage(c[d]),null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[d+1])),this.pages.push(b),null!=urlParams["page-id"]&&b.getId()==urlParams["page-id"]&&(f=b);this.currentPage=null!=f?f:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];b=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=b&&(this.fileNode=b.ownerDocument.createElement("mxfile"),
-this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(b);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var e=urlParams["layer-ids"].split(" ");b={};for(d=0;d<e.length;d++)b[e[d]]=!0;for(var g=this.editor.graph.getModel(),k=g.getChildren(g.root),d=0;d<k.length;d++){var n=k[d];g.setVisible(n,b[n.id]||
-!1)}}catch(x){}};EditorUi.prototype.getBaseFilename=function(b){var c=this.getCurrentFile(),c=null!=c&&null!=c.getTitle()?c.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(c)||/(\.html)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.png)$/i.test(c))c=c.substring(0,c.lastIndexOf("."));/(\.drawio)$/i.test(c)&&(c=c.substring(0,c.lastIndexOf(".")));!b&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(c=c+"-"+
-this.currentPage.getName());return c};EditorUi.prototype.downloadFile=function(b,c,d,e,g,k,n,v,x,A,z,B){try{e=null!=e?e:this.editor.graph.isSelectionEmpty();var f=this.getBaseFilename(!g),l=f+("xml"==b||"pdf"==b&&z?".drawio":"")+"."+b;if("xml"==b){var m=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,e,g,null,null,null,c);this.saveData(l,b,m,"text/xml")}else if("html"==b)m=this.getHtml2(this.getFileData(!0),this.editor.graph,f),this.saveData(l,b,m,"text/html");else if("svg"!=b&&"xmlsvg"!=
-b||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==b?l=f+".png":"jpeg"==b&&(l=f+".jpg"),this.saveRequest(l,b,mxUtils.bind(this,function(c,f){try{var d=this.editor.graph.pageVisible;null!=k&&(this.editor.graph.pageVisible=k);var l=this.createDownloadRequest(c,b,e,f,n,g,v,x,A,z,B);this.editor.graph.pageVisible=d;return l}catch(O){this.handleError(O)}}));else{var p=null,t=mxUtils.bind(this,function(b){b.length<=MAX_REQUEST_SIZE?this.saveData(l,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},
-mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(p)}))});if("svg"==b){var q=this.editor.graph.background;if(n||q==mxConstants.NONE)q=null;var u=this.editor.graph.getSvg(q,null,null,null,null,e);d&&this.editor.graph.addSvgShadow(u);this.editor.convertImages(u,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();t(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(b))})))}else l=f+".svg",p=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();
-t(b)}),e)}}catch(I){this.handleError(I)}};EditorUi.prototype.createDownloadRequest=function(b,c,d,e,g,k,n,v,x,A,z){var f=this.editor.graph,l=f.getGraphBounds();d=this.getFileData(!0,null,null,null,d,0==k?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var m="",p="";if(l.width*l.height>MAX_AREA||d.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};A=A?"1":"0";"pdf"==c&&(null!=z?p="&from="+z.from+"&to="+z.to:0==k&&(p="&allPages=1"));if("xmlpng"==c&&(A="1",c="png",null!=this.pages&&
-null!=this.currentPage))for(k=0;k<this.pages.length;k++)if(this.pages[k]==this.currentPage){m="&from="+k;break}k=f.background;"png"!=c&&"pdf"!=c||!g?g||null!=k&&k!=mxConstants.NONE||(k="#ffffff"):k=mxConstants.NONE;g={globalVars:f.getExportVariables()};x&&(g.grid={size:f.gridSize,steps:f.view.gridSteps,color:f.view.gridColor});Graph.translateDiagram&&(g.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+m+p+"&bg="+(null!=k?k:mxConstants.NONE)+"&base64="+e+"&embedXml="+
-A+"&xml="+encodeURIComponent(d)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(g))+(null!=n?"&scale="+n:"")+(null!=v?"&border="+v:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,d){var f=window.location.hash,e=mxUtils.bind(this,function(d){var e=null!=b.data?b.data:"";null!=d&&0<d.length&&(0<e.length&&(e+="\n"),e+=d);d=new LocalFile(this,"csv"!=b.format&&0<e.length?e:this.emptyDiagramXml,null!=
-urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);d.getHash=function(){return f};this.fileLoaded(d);"csv"==b.format&&this.importCsv(e,mxUtils.bind(this,function(b){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=b.update){var l=null!=b.interval?parseInt(b.interval):6E4,m=null,g=mxUtils.bind(this,function(){var c=this.currentPage;mxUtils.post(b.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,
-function(b){c===this.currentPage&&(200<=b.getStatus()&&300>=b.getStatus()?(this.updateDiagram(b.getText()),k()):this.handleError({message:mxResources.get("error")+" "+b.getStatus()}))}),mxUtils.bind(this,function(b){this.handleError(b)}))}),k=mxUtils.bind(this,function(){window.clearTimeout(m);m=window.setTimeout(g,l)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){k();g()}));k();g()}null!=c&&c()});null!=b.url&&0<b.url.length?this.editor.loadUrl(b.url,mxUtils.bind(this,function(b){e(b)}),
-mxUtils.bind(this,function(b){null!=d&&d(b)})):e("")};EditorUi.prototype.updateDiagram=function(b){function c(b){var c=new mxCellOverlay(b.image||e.warningImage,b.tooltip,b.align,b.valign,b.offset);c.addListener(mxEvent.CLICK,function(c,f){d.alert(b.tooltip)});return c}var f=null,d=this;if(null!=b&&0<b.length&&(f=mxUtils.parseXml(b),b=null!=f?f.documentElement:null,null!=b&&"updates"==b.nodeName)){var e=this.editor.graph,g=e.getModel();g.beginUpdate();var k=null;try{for(b=b.firstChild;null!=b;){if("update"==
-b.nodeName){var n=g.getCell(b.getAttribute("id"));if(null!=n){try{var x=b.getAttribute("value");if(null!=x){var A=mxUtils.parseXml(x).documentElement;if(null!=A)if("1"==A.getAttribute("replace-value"))g.setValue(n,A);else for(var z=A.attributes,B=0;B<z.length;B++)e.setAttributeForCell(n,z[B].nodeName,0<z[B].nodeValue.length?z[B].nodeValue:null)}}catch(I){null!=window.console&&console.log("Error in value for "+n.id+": "+I)}try{var y=b.getAttribute("style");null!=y&&e.model.setStyle(n,y)}catch(I){null!=
-window.console&&console.log("Error in style for "+n.id+": "+I)}try{var C=b.getAttribute("icon");if(null!=C){var G=0<C.length?JSON.parse(C):null;null!=G&&G.append||e.removeCellOverlays(n);null!=G&&e.addCellOverlay(n,c(G))}}catch(I){null!=window.console&&console.log("Error in icon for "+n.id+": "+I)}try{var F=b.getAttribute("geometry");if(null!=F){var F=JSON.parse(F),D=e.getCellGeometry(n);if(null!=D){D=D.clone();for(key in F){var E=parseFloat(F[key]);"dx"==key?D.x+=E:"dy"==key?D.y+=E:"dw"==key?D.width+=
-E:"dh"==key?D.height+=E:D[key]=parseFloat(F[key])}e.model.setGeometry(n,D)}}}catch(I){null!=window.console&&console.log("Error in icon for "+n.id+": "+I)}}}else if("model"==b.nodeName){for(var H=b.firstChild;null!=H&&H.nodeType!=mxConstants.NODETYPE_ELEMENT;)H=H.nextSibling;null!=H&&(new mxCodec(b.firstChild)).decode(H,g)}else if("view"==b.nodeName){if(b.hasAttribute("scale")&&(e.view.scale=parseFloat(b.getAttribute("scale"))),b.hasAttribute("dx")||b.hasAttribute("dy"))e.view.translate=new mxPoint(parseFloat(b.getAttribute("dx")||
-0),parseFloat(b.getAttribute("dy")||0))}else"fit"==b.nodeName&&(k=b.hasAttribute("max-scale")?parseFloat(b.getAttribute("max-scale")):1);b=b.nextSibling}}finally{g.endUpdate()}null!=k&&this.chromelessResize&&this.chromelessResize(!0,k)}return f};EditorUi.prototype.getCopyFilename=function(b,c){var f=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename,d="",e=f.lastIndexOf(".");0<=e&&(d=f.substring(e),f=f.substring(0,e));if(c)var l=new Date,e=l.getFullYear(),g=l.getMonth()+1,k=l.getDate(),
-n=l.getHours(),A=l.getMinutes(),l=l.getSeconds(),f=f+(" "+(e+"-"+g+"-"+k+"-"+n+"-"+A+"-"+l));return f=mxResources.get("copyOf",[f])+d};EditorUi.prototype.fileLoaded=function(b,c){var f=this.getCurrentFile();this.fileEditable=this.fileLoadedError=null;this.setCurrentFile(null);var d=!1;this.hideDialog();null!=f&&(EditorUi.debug("File.closed",[f]),f.removeListener(this.descriptorChangedListener),f.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var e=mxUtils.bind(this,function(){this.setGraphEnabled(!1);
-this.setCurrentFile(null);null!=f&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!c&&null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();c||this.showSplash()});if(null!=b)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility=
-"");this.openingFile=!0;this.setCurrentFile(b);b.addListener("descriptorChanged",this.descriptorChangedListener);b.addListener("contentChanged",this.descriptorChangedListener);b.open();delete this.openingFile;this.setGraphEnabled(!0);this.setMode(b.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();b.isEditable()?b.isModified()?(b.addUnsavedStatus(),null!=b.backupPatch&&b.patch([b.backupPatch])):this.editor.setStatus(""):
-this.editor.setStatus('<span class="geStatusAlert">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));d=!0;if(!this.isOffline()&&null!=b.getMode()){var l=
-"1"==urlParams.sketch?"sketch":uiTheme;if(null==l)l="default";else if("sketch"==l||"min"==l)l+=Editor.isDarkMode()?"-dark":"-light";EditorUi.logEvent({category:b.getMode().toUpperCase()+"-OPEN-FILE-"+b.getHash(),action:"size_"+b.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+l})}EditorUi.debug("File.opened",[b]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));if(this.editor.editable&&this.mode==b.getMode()&&b.getMode()!=App.MODE_DEVICE&&null!=
-b.getMode())try{this.addRecent({id:b.getHash(),title:b.getTitle(),mode:b.getMode()})}catch(u){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(u){}}catch(u){this.fileLoadedError=u;if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+(null!=b?b.getHash():"none"),action:"message_"+u.message,label:"stack_"+u.stack})}catch(v){}l=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?
-window.location.search=this.getSearch(["url"]):null!=f?this.fileLoaded(f):e()});c?l():this.handleError(u,mxResources.get("errorLoadingFile"),l,!0,null,null,!0)}else e();return d};EditorUi.prototype.getHashValueForPages=function(b,c){var f=0,d=new mxGraphModel,e=new mxCodec;null!=c&&(c.byteCount=0,c.attrCount=0,c.eltCount=0,c.nodeCount=0);for(var l=0;l<b.length;l++){this.updatePageRoot(b[l]);var g=b[l].node.cloneNode(!1);g.removeAttribute("name");d.root=b[l].root;var k=e.encode(d);this.editor.graph.saveViewState(b[l].viewState,
-k,!0);k.removeAttribute("pageWidth");k.removeAttribute("pageHeight");g.appendChild(k);null!=c&&(c.eltCount+=g.getElementsByTagName("*").length,c.nodeCount+=g.getElementsByTagName("mxCell").length);f=(f<<5)-f+this.hashValue(g,function(b,c,f,d){return!d||"mxGeometry"!=b.nodeName&&"mxPoint"!=b.nodeName||"x"!=c&&"y"!=c&&"width"!=c&&"height"!=c?d&&"mxCell"==b.nodeName&&"previous"==c?null:f:Math.round(f)},c)<<0}return f};EditorUi.prototype.hashValue=function(b,c,d){var f=0;if(null!=b&&"object"===typeof b&&
-"number"===typeof b.nodeType&&"string"===typeof b.nodeName&&"function"===typeof b.getAttribute){null!=b.nodeName&&(f^=this.hashValue(b.nodeName,c,d));if(null!=b.attributes){null!=d&&(d.attrCount+=b.attributes.length);for(var e=0;e<b.attributes.length;e++){var l=b.attributes[e].name,m=null!=c?c(b,l,b.attributes[e].value,!0):b.attributes[e].value;null!=m&&(f^=this.hashValue(l,c,d)+this.hashValue(m,c,d))}}if(null!=b.childNodes)for(e=0;e<b.childNodes.length;e++)f=(f<<5)-f+this.hashValue(b.childNodes[e],
-c,d)<<0}else if(null!=b&&"function"!==typeof b){b=String(b);c=0;null!=d&&(d.byteCount+=b.length);for(e=0;e<b.length;e++)c=(c<<5)-c+b.charCodeAt(e)<<0;f^=c}return f};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(b,c,d,e,g,k,n){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?
-StorageFile.getFileContent(this,".scratchpad",mxUtils.bind(this,function(b){null==b&&(b=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,b,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(b){var c=mxUtils.createXmlDocument(),f=c.createElement("mxlibrary");mxUtils.setTextContent(f,JSON.stringify(b));c.appendChild(f);return mxUtils.getXml(c)};EditorUi.prototype.closeLibrary=function(b){null!=b&&(this.removeLibrarySidebar(b.getHash()),
-b.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(b.getHash()),".scratchpad"==b.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(b){var c=this.sidebar.palettes[b];if(null!=c){for(var f=0;f<c.length;f++)c[f].parentNode.removeChild(c[f]);delete this.sidebar.palettes[b]}};EditorUi.prototype.repositionLibrary=function(b){var c=this.sidebar.container;if(null==b){var f=this.sidebar.palettes["L.scratchpad"];null==f&&(f=this.sidebar.palettes.search);null!=f&&(b=f[f.length-
-1].nextSibling)}b=null!=b?b:c.firstChild.nextSibling.nextSibling;var f=c.lastChild,d=f.previousSibling;c.insertBefore(f,b);c.insertBefore(d,f)};EditorUi.prototype.loadLibrary=function(b,c){var f=mxUtils.parseXml(b.getData());if("mxlibrary"==f.documentElement.nodeName){var d=JSON.parse(mxUtils.getTextContent(f.documentElement));this.libraryLoaded(b,d,f.documentElement.getAttribute("title"),c)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(b){return""};
-EditorUi.prototype.libraryLoaded=function(b,c,d,e){if(null!=this.sidebar){b.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(b.getHash());".scratchpad"==b.title&&(this.scratchpad=b);var f=this.sidebar.palettes[b.getHash()],f=null!=f?f[f.length-1].nextSibling:null;this.removeLibrarySidebar(b.getHash());var l=null,m=mxUtils.bind(this,function(c,f){0==c.length&&b.isEditable()?(null==l&&(l=document.createElement("div"),l.className="geDropTarget",mxUtils.write(l,mxResources.get("dragElementsHere"))),
-f.appendChild(l)):this.addLibraryEntries(c,f)});null!=this.sidebar&&null!=c&&this.sidebar.addEntries(c);null==d&&(d=b.getTitle(),null!=d&&/(\.xml)$/i.test(d)&&(d=d.substring(0,d.lastIndexOf("."))));var g=this.sidebar.addPalette(b.getHash(),d,null!=e?e:!0,mxUtils.bind(this,function(b){m(c,b)}));this.repositionLibrary(f);var k=g.parentNode.previousSibling;e=k.getAttribute("title");null!=e&&0<e.length&&".scratchpad"!=b.title&&k.setAttribute("title",this.getLibraryStorageHint(b)+"\n"+e);var p=document.createElement("div");
-p.style.position="absolute";p.style.right="0px";p.style.top="0px";p.style.padding="8px";p.style.backgroundColor="inherit";k.style.position="relative";var n=document.createElement("img");n.setAttribute("src",Editor.crossImage);n.setAttribute("title",mxResources.get("close"));n.setAttribute("valign","absmiddle");n.setAttribute("border","0");n.style.position="relative";n.style.top="2px";n.style.width="14px";n.style.cursor="pointer";n.style.margin="0 3px";Editor.isDarkMode()&&(n.style.filter="invert(100%)");
-var B=null;if(".scratchpad"!=b.title||this.closableScratchpad)p.appendChild(n),mxEvent.addListener(n,"click",mxUtils.bind(this,function(c){if(!mxEvent.isConsumed(c)){var f=mxUtils.bind(this,function(){this.closeLibrary(b)});null!=B?this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):f();mxEvent.consume(c)}}));if(b.isEditable()){var y=this.editor.graph,C=null,G=mxUtils.bind(this,function(f){this.showLibraryDialog(b.getTitle(),g,c,b,b.getMode());
-mxEvent.consume(f)}),F=mxUtils.bind(this,function(f){b.setModified(!0);b.isAutosave()?(null!=C&&null!=C.parentNode&&C.parentNode.removeChild(C),C=n.cloneNode(!1),C.setAttribute("src",Editor.spinImage),C.setAttribute("title",mxResources.get("saving")),C.style.cursor="default",C.style.marginRight="2px",C.style.marginTop="-2px",p.insertBefore(C,p.firstChild),k.style.paddingRight=18*p.childNodes.length+"px",this.saveLibrary(b.getTitle(),c,b,b.getMode(),!0,!0,function(){null!=C&&null!=C.parentNode&&(C.parentNode.removeChild(C),
-k.style.paddingRight=18*p.childNodes.length+"px")})):null==B&&(B=n.cloneNode(!1),B.setAttribute("src",Editor.saveImage),B.setAttribute("title",mxResources.get("save")),p.insertBefore(B,p.firstChild),mxEvent.addListener(B,"click",mxUtils.bind(this,function(f){this.saveLibrary(b.getTitle(),c,b,b.getMode(),b.constructor==LocalLibrary,!0,function(){null==B||b.isModified()||(k.style.paddingRight=18*p.childNodes.length+"px",B.parentNode.removeChild(B),B=null)});mxEvent.consume(f)})),k.style.paddingRight=
-18*p.childNodes.length+"px")}),D=mxUtils.bind(this,function(b,f,d,e){b=y.cloneCells(mxUtils.sortCells(y.model.getTopmostCells(b)));for(var m=0;m<b.length;m++){var k=y.getCellGeometry(b[m]);null!=k&&k.translate(-f.x,-f.y)}g.appendChild(this.sidebar.createVertexTemplateFromCells(b,f.width,f.height,e||"",!0,!1,!1));b={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(b))),w:f.width,h:f.height};null!=e&&(b.title=e);c.push(b);F(d);null!=l&&null!=l.parentNode&&0<c.length&&(l.parentNode.removeChild(l),
-l=null)}),E=mxUtils.bind(this,function(b){if(y.isSelectionEmpty())y.getRubberband().isActive()?(y.getRubberband().execute(b),y.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var c=y.getSelectionCells(),f=y.view.getBounds(c),d=y.view.scale;f.x/=d;f.y/=d;f.width/=d;f.height/=d;f.x-=y.view.translate.x;f.y-=y.view.translate.y;D(c,f)}mxEvent.consume(b)});mxEvent.addGestureListeners(g,function(){},mxUtils.bind(this,function(b){y.isMouseDown&&
-null!=y.panningManager&&null!=y.graphHandler.first&&(y.graphHandler.suspend(),null!=y.graphHandler.hint&&(y.graphHandler.hint.style.visibility="hidden"),g.style.backgroundColor="#f1f3f4",g.style.cursor="copy",y.panningManager.stop(),y.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){y.isMouseDown&&null!=y.panningManager&&null!=y.graphHandler&&(g.style.backgroundColor="",g.style.cursor="default",this.sidebar.showTooltips=!0,y.panningManager.stop(),y.graphHandler.reset(),y.isMouseDown=
-!1,y.autoScroll=!0,E(b),mxEvent.consume(b))}));mxEvent.addListener(g,"mouseleave",mxUtils.bind(this,function(b){y.isMouseDown&&null!=y.graphHandler.first&&(y.graphHandler.resume(),null!=y.graphHandler.hint&&(y.graphHandler.hint.style.visibility="visible"),g.style.backgroundColor="",g.style.cursor="",y.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(g,"dragover",mxUtils.bind(this,function(b){g.style.backgroundColor="#f1f3f4";b.dataTransfer.dropEffect="copy";g.style.cursor="copy";this.sidebar.hideTooltip();
-b.stopPropagation();b.preventDefault()})),mxEvent.addListener(g,"drop",mxUtils.bind(this,function(b){g.style.cursor="";g.style.backgroundColor="";0<b.dataTransfer.files.length&&this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(f,d,e,k,p,n,q,t,y){if(null!=f&&"image/"==d.substring(0,6))f="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(f),f=[new mxCell("",new mxGeometry(0,0,p,n),f)],f[0].vertex=!0,
-D(f,new mxRectangle(0,0,p,n),b,mxEvent.isAltDown(b)?null:q.substring(0,q.lastIndexOf(".")).replace(/_/g," ")),null!=l&&null!=l.parentNode&&0<c.length&&(l.parentNode.removeChild(l),l=null);else{var u=!1,v=mxUtils.bind(this,function(f,d){if(null!=f&&"application/pdf"==d){var e=Editor.extractGraphModelFromPdf(f);null!=e&&0<e.length&&(f=e)}if(null!=f)if(e=mxUtils.parseXml(f),"mxlibrary"==e.documentElement.nodeName)try{var k=JSON.parse(mxUtils.getTextContent(e.documentElement));m(k,g);c=c.concat(k);F(b);
-this.spinner.stop();u=!0}catch(ca){}else if("mxfile"==e.documentElement.nodeName)try{for(var p=e.documentElement.getElementsByTagName("diagram"),k=0;k<p.length;k++){var n=this.stringToCells(Editor.getDiagramNodeXml(p[k])),q=this.editor.graph.getBoundingBoxFromGeometry(n);D(n,new mxRectangle(0,0,q.width,q.height),b)}u=!0}catch(ca){null!=window.console&&console.log("error in drop handler:",ca)}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=l&&null!=l.parentNode&&
-0<c.length&&(l.parentNode.removeChild(l),l=null)});null!=y&&null!=q&&(/(\.v(dx|sdx?))($|\?)/i.test(q)||/(\.vs(x|sx?))($|\?)/i.test(q))?this.importVisio(y,function(b){v(b,"text/xml")},null,q):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(f,q)&&null!=y?this.parseFile(y,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?v(b.responseText,"text/xml"):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},
-mxResources.get("errorLoadingFile")))})):v(f,d)}}));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(g,"dragleave",function(b){g.style.cursor="";g.style.backgroundColor="";b.stopPropagation();b.preventDefault()}));n=n.cloneNode(!1);n.setAttribute("src",Editor.editImage);n.setAttribute("title",mxResources.get("edit"));p.insertBefore(n,p.firstChild);mxEvent.addListener(n,"click",G);mxEvent.addListener(g,"dblclick",function(b){mxEvent.getSource(b)==g&&G(b)});e=n.cloneNode(!1);e.setAttribute("src",
-Editor.plusImage);e.setAttribute("title",mxResources.get("add"));p.insertBefore(e,p.firstChild);mxEvent.addListener(e,"click",E);this.isOffline()||".scratchpad"!=b.title||null==EditorUi.scratchpadHelpLink||(e=document.createElement("span"),e.setAttribute("title",mxResources.get("help")),e.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(e,"?"),mxEvent.addGestureListeners(e,mxUtils.bind(this,function(b){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(b)})),
-p.insertBefore(e,p.firstChild))}k.appendChild(p);k.style.paddingRight=18*p.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(b,c){for(var f=0;f<b.length;f++){var d=b[f],e=d.data;if(null!=e){var e=this.convertDataUri(e),l="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==d.aspect&&(l+="aspect=fixed;");c.appendChild(this.sidebar.createVertexTemplate(l+"image="+e,d.w,d.h,"",d.title||"",!1,!1,!0))}else null!=d.xml&&(e=this.stringToCells(Graph.decompress(d.xml)),
-0<e.length&&c.appendChild(this.sidebar.createVertexTemplateFromCells(e,d.w,d.h,d.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=function(b){return null!=b?b[mxLanguage]||b.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground="linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",
-Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38):Editor.isDarkMode()&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor=Editor.darkColor,Format.inactiveTabBackgroundColor="black",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.shapeBackgroundColor=Editor.darkColor,Graph.prototype.shapeForegroundColor=Editor.lightColor,Graph.prototype.defaultPageBackgroundColor=
-Editor.darkColor,Graph.prototype.defaultPageBorderColor="#505759",BaseFormatPanel.prototype.buttonBackgroundColor=Editor.darkColor,mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxConstants.DROP_TARGET_COLOR="#00ff00");Editor.sketchFontFamily="Architects Daughter";Editor.sketchFontSource="https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter";"1"==urlParams.sketch&&(Graph.prototype.defaultVertexStyle={hachureGap:"4"},Graph.prototype.defaultEdgeStyle=
-{edgeStyle:"none",rounded:"0",curved:"1",jettySize:"auto",orthogonalLoop:"1",endArrow:"open",startSize:"14",endSize:"14",sourcePerimeterSpacing:"8",targetPerimeterSpacing:"8"},Editor.configurationKey=".sketch-configuration",Editor.settingsKey=".sketch-config",Graph.prototype.defaultGridEnabled="1"==urlParams.grid,Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=
-function(b,c,d,e,g){b=new ImageDialog(this,b,c,d,e,g);this.showDialog(b.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);b.init()};EditorUi.prototype.showBackgroundImageDialog=function(b,c){b=null!=b?b:mxUtils.bind(this,function(b,c){if(!c){var f=new ChangePageSetup(this,null,b);f.ignoreColor=!0;this.editor.graph.model.execute(f)}});var f=new BackgroundImageDialog(this,b,c);this.showDialog(f.container,360,200,!0,!0);f.init()};EditorUi.prototype.showLibraryDialog=function(b,c,d,
-e,g){b=new LibraryDialog(this,b,c,d,e,g);this.showDialog(b.container,640,440,!0,!1,mxUtils.bind(this,function(b){b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));b.init()};var d=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(b){var c=d.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(b){this.editor.graph.isSelectionEmpty()&&c.refresh()}));return c};EditorUi.prototype.createSidebarFooterContainer=function(){var b=
-this.createDiv("geSidebarContainer geSidebarFooter");b.style.position="absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var d=c.getElementsByTagName("span")[0];d.style.fontSize="18px";d.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,
-function(b){b.preventDefault()}));mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};EditorUi.prototype.handleError=function(b,c,d,e,g,k,n){var f=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},l=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{n?null!=window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&
-null!=b.name)?b.name:b.message,b.filename,b.lineNumber,b.columnNumber,b,"INFO")}catch(C){}if(null!=l||null!=c){n=mxUtils.htmlEntities(mxResources.get("unknownError"));var m=mxResources.get("ok"),p=null;c=null!=c?c:mxResources.get("error");if(null!=l){null!=l.retry&&(m=mxResources.get("cancel"),p=function(){f();l.retry()});if(404==l.code||404==l.status||403==l.code){n=403==l.code?null!=l.message?mxUtils.htmlEntities(l.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=g?g:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+
-(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var q=null!=g?null:null!=k?k:window.location.hash;if(null!=q&&("#G"==q.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==q.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==l.code||404==l.status)){q="#U"==q.substring(0,
+!mxClient.IS_OP&&!EditorUi.isElectronApp&&"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,
+messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(b,c,d,e,g,k,n){k=null!=k?k:0<=b.indexOf("NetworkError")||0<=b.indexOf("SecurityError")||0<=b.indexOf("NS_ERROR_FAILURE")||0<=b.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
+"1"!=urlParams.dev)try{if(b!=EditorUi.lastErrorMessage&&(null==b||null==c||-1==b.indexOf("Script error")&&-1==b.indexOf("extension"))&&null!=b&&0>b.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=b;var f=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";g=null!=g?g:Error(b);(new Image).src=f+"/log?severity="+k+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(b)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(d)+(null!=e?":colno:"+
+encodeURIComponent(e):"")+(null!=g&&null!=g.stack?"&stack="+encodeURIComponent(g.stack):"")}}catch(x){}try{n||null==window.console||console.error(k,b,c,d,e,g)}catch(x){}};EditorUi.logEvent=function(b){if("1"==urlParams.dev)EditorUi.debug("logEvent",b);else if(EditorUi.enableLogging)try{var c=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=c+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=b?"&data="+encodeURIComponent(JSON.stringify(b)):"")}catch(m){}};EditorUi.sendReport=
+function(b,c){if("1"==urlParams.dev)EditorUi.debug("sendReport",b);else if(EditorUi.enableLogging)try{c=null!=c?c:5E4,b.length>c&&(b=b.substring(0,c)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(b))}catch(m){}};EditorUi.debug=function(){try{if(null!=window.console&&"1"==urlParams.test){for(var b=[(new Date).toISOString()],c=0;c<arguments.length;c++)null!=arguments[c]&&b.push(arguments[c]);
+console.log.apply(console,b)}}catch(m){}};EditorUi.removeChildNodes=function(b){for(;null!=b.firstChild;)b.removeChild(b.firstChild)};EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>";EditorUi.prototype.mode=null;EditorUi.prototype.timeout=Editor.prototype.timeout;EditorUi.prototype.sidebarFooterHeight=38;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;";
+EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.maxTextWidth=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.maxTextBytes=5E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport=!1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=
+!0;EditorUi.prototype.embedExportBorder=8;EditorUi.prototype.embedExportBackground=null;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var b=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!b.getContext||!b.getContext("2d"))}catch(q){}try{var c=document.createElement("canvas"),d=new Image;d.onload=function(){try{c.getContext("2d").drawImage(d,0,0);var b=c.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=b&&6<b.length}catch(t){}};
+d.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(q){}try{c=document.createElement("canvas");c.width=c.height=1;var e=c.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==e.match("image/jpeg")}catch(q){}})();EditorUi.prototype.openLink=
+function(b,c,d){return this.editor.graph.openLink(b,c,d)};EditorUi.prototype.showSplash=function(b){};EditorUi.prototype.getLocalData=function(b,c){c(localStorage.getItem(b))};EditorUi.prototype.setLocalData=function(b,c,d){localStorage.setItem(b,c);null!=d&&d()};EditorUi.prototype.removeLocalData=function(b,c){localStorage.removeItem(b);c()};EditorUi.prototype.setMathEnabled=function(b){this.editor.graph.mathEnabled=b;this.editor.updateGraphComponents();this.editor.graph.refresh();this.editor.graph.defaultMathEnabled=
+b;this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(b){return this.editor.graph.mathEnabled};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(b){return this.isOfflineApp()||!navigator.onLine||!b&&("1"==urlParams.stealth||"1"==urlParams.lockdown)};EditorUi.prototype.createSpinner=function(b,c,d){var f=null==b||null==c;d=null!=d?d:24;var e=new Spinner({lines:12,length:d,width:Math.round(d/
+3),radius:Math.round(d/2),rotate:0,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),l=e.spin;e.spin=function(d,m){var g=!1;this.active||(l.call(this,d),this.active=!0,null!=m&&(f&&(c=Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,b=document.body.clientWidth/2-2),g=document.createElement("div"),g.style.position="absolute",g.style.whiteSpace="nowrap",g.style.background="#4B4243",g.style.color="white",g.style.fontFamily=
+Editor.defaultHtmlFont,g.style.fontSize="9pt",g.style.padding="6px",g.style.paddingLeft="10px",g.style.paddingRight="10px",g.style.zIndex=2E9,g.style.left=Math.max(0,b)+"px",g.style.top=Math.max(0,c+70)+"px",mxUtils.setPrefixedStyle(g.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,-50%)"),Editor.isDarkMode()||mxUtils.setPrefixedStyle(g.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=m.substring(m.length-3,m.length)&&"!"!=m.charAt(m.length-1)&&(m+="..."),
+g.innerHTML=m,d.appendChild(g),e.status=g),this.pause=mxUtils.bind(this,function(){var b=function(){};this.active&&(b=mxUtils.bind(this,function(){this.spin(d,m)}));this.stop();return b}),g=!0);return g};var m=e.stop;e.stop=function(){m.call(this);this.active=!1;null!=e.status&&null!=e.status.parentNode&&e.status.parentNode.removeChild(e.status);e.status=null};e.pause=function(){return function(){}};return e};EditorUi.prototype.isCompatibleString=function(b){try{var c=mxUtils.parseXml(b),f=this.editor.extractGraphModel(c.documentElement,
+!0);return null!=f&&0==f.getElementsByTagName("parsererror").length}catch(p){}return!1};EditorUi.prototype.isVisioData=function(b){return 8<b.length&&(208==b.charCodeAt(0)&&207==b.charCodeAt(1)&&17==b.charCodeAt(2)&&224==b.charCodeAt(3)&&161==b.charCodeAt(4)&&177==b.charCodeAt(5)&&26==b.charCodeAt(6)&&225==b.charCodeAt(7)||80==b.charCodeAt(0)&&75==b.charCodeAt(1)&&3==b.charCodeAt(2)&&4==b.charCodeAt(3)||80==b.charCodeAt(0)&&75==b.charCodeAt(1)&&3==b.charCodeAt(2)&&6==b.charCodeAt(3))};EditorUi.prototype.isRemoteVisioData=
+function(b){return 8<b.length&&(208==b.charCodeAt(0)&&207==b.charCodeAt(1)&&17==b.charCodeAt(2)&&224==b.charCodeAt(3)&&161==b.charCodeAt(4)&&177==b.charCodeAt(5)&&26==b.charCodeAt(6)&&225==b.charCodeAt(7)||60==b.charCodeAt(0)&&63==b.charCodeAt(1)&&120==b.charCodeAt(2)&&109==b.charCodeAt(3)&&108==b.charCodeAt(3))};var b=EditorUi.prototype.createKeyHandler;EditorUi.prototype.createKeyHandler=function(c){var f=b.apply(this,arguments);if(!this.editor.chromeless||this.editor.editable){var d=f.getFunction,
+e=this.editor.graph,g=this;f.getFunction=function(b){if(e.isSelectionEmpty()&&null!=g.pages&&0<g.pages.length){var c=g.getSelectedPageIndex();if(mxEvent.isShiftDown(b)){if(37==b.keyCode)return function(){0<c&&g.movePage(c,c-1)};if(38==b.keyCode)return function(){0<c&&g.movePage(c,0)};if(39==b.keyCode)return function(){c<g.pages.length-1&&g.movePage(c,c+1)};if(40==b.keyCode)return function(){c<g.pages.length-1&&g.movePage(c,g.pages.length-1)}}else if(mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b)){if(37==
+b.keyCode)return function(){0<c&&g.selectNextPage(!1)};if(38==b.keyCode)return function(){0<c&&g.selectPage(g.pages[0])};if(39==b.keyCode)return function(){c<g.pages.length-1&&g.selectNextPage(!0)};if(40==b.keyCode)return function(){c<g.pages.length-1&&g.selectPage(g.pages[g.pages.length-1])}}}return d.apply(this,arguments)}}return f};var e=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(b){var c=e.apply(this,arguments);if(null==c)try{var f=b.indexOf("&lt;mxfile ");
+if(0<=f){var d=b.lastIndexOf("&lt;/mxfile&gt;");d>f&&(c=b.substring(f,d+15).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var g=mxUtils.parseXml(b),k=this.editor.extractGraphModel(g.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),c=null!=k?mxUtils.getXml(k):""}catch(u){}return c};EditorUi.prototype.validateFileData=function(b){if(null!=b&&0<b.length){var c=b.indexOf('<meta charset="utf-8">');0<=c&&(b=b.slice(0,c)+'<meta charset="utf-8"/>'+
+b.slice(c+23-1,b.length));b=Graph.zapGremlins(b)}return b};EditorUi.prototype.replaceFileData=function(b){b=this.validateFileData(b);b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:null;var c=null!=b?this.editor.extractGraphModel(b,!0):null;null!=c&&(b=c);if(null!=b){c=this.editor.graph;c.model.beginUpdate();try{var f=null!=this.pages?this.pages.slice():null,d=b.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name")){this.fileNode=b;this.pages=
+null!=this.pages?this.pages:[];for(var e=d.length-1;0<=e;e--){var g=this.updatePageRoot(new DiagramPage(d[e]));null==g.getName()&&g.setName(mxResources.get("pageWithNumber",[e+1]));c.model.execute(new ChangePage(this,g,0==e?g:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=b.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),c.model.execute(new ChangePage(this,
+this.currentPage,this.currentPage,0))),this.editor.setGraphXml(b),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=f)for(e=0;e<f.length;e++)c.model.execute(new ChangePage(this,f[e],null))}finally{c.model.endUpdate()}}};EditorUi.prototype.createFileData=function(b,c,d,e,g,k,n,v,x,A,z){c=null!=c?c:this.editor.graph;g=null!=g?g:!1;x=null!=x?x:!0;var f,l=null;null==d||d.getMode()==App.MODE_DEVICE||d.getMode()==App.MODE_BROWSER?f="_blank":l=f=e;if(null==b)return"";
+var m=b;if("mxfile"!=m.nodeName.toLowerCase()){if(z){var p=b.ownerDocument.createElement("diagram");p.setAttribute("id",Editor.guid());p.appendChild(b)}else{p=Graph.zapGremlins(mxUtils.getXml(b));m=Graph.compress(p);if(Graph.decompress(m)!=p)return p;p=b.ownerDocument.createElement("diagram");p.setAttribute("id",Editor.guid());mxUtils.setTextContent(p,m)}m=b.ownerDocument.createElement("mxfile");m.appendChild(p)}A?(m=m.cloneNode(!0),m.removeAttribute("modified"),m.removeAttribute("host"),m.removeAttribute("agent"),
+m.removeAttribute("etag"),m.removeAttribute("userAgent"),m.removeAttribute("version"),m.removeAttribute("editor"),m.removeAttribute("type")):(m.removeAttribute("userAgent"),m.removeAttribute("version"),m.removeAttribute("editor"),m.removeAttribute("pages"),m.removeAttribute("type"),mxClient.IS_CHROMEAPP?m.setAttribute("host","Chrome"):EditorUi.isElectronApp?m.setAttribute("host","Electron"):m.setAttribute("host",window.location.hostname),m.setAttribute("modified",(new Date).toISOString()),m.setAttribute("agent",
+navigator.appVersion),m.setAttribute("version",EditorUi.VERSION),m.setAttribute("etag",Editor.guid()),b=null!=d?d.getMode():this.mode,null!=b&&m.setAttribute("type",b),1<m.getElementsByTagName("diagram").length&&null!=this.pages&&m.setAttribute("pages",this.pages.length));z=z?mxUtils.getPrettyXml(m):mxUtils.getXml(m);if(!k&&!g&&(n||null!=d&&/(\.html)$/i.test(d.getTitle())))z=this.getHtml2(mxUtils.getXml(m),c,null!=d?d.getTitle():null,f,l);else if(k||!g&&null!=d&&/(\.svg)$/i.test(d.getTitle()))null==
+d||d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER||(e=null),z=this.getEmbeddedSvg(z,c,e,null,v,x,l);return z};EditorUi.prototype.getXmlFileData=function(b,c,d,e){b=null!=b?b:!0;c=null!=c?c:!1;d=null!=d?d:!Editor.compressXml;var f=this.editor.getGraphXml(b,e);if(b&&null!=this.fileNode&&null!=this.currentPage)if(b=function(b){var c=b.getElementsByTagName("mxGraphModel"),c=0<c.length?c[0]:null;null==c&&d?(c=mxUtils.trim(mxUtils.getTextContent(b)),b=b.cloneNode(!1),0<c.length&&(c=Graph.decompress(c),
+null!=c&&0<c.length&&b.appendChild(mxUtils.parseXml(c).documentElement))):null==c||d?b=b.cloneNode(!0):(b=b.cloneNode(!1),mxUtils.setTextContent(b,Graph.compressNode(c)));f.appendChild(b)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,Graph.compressNode(f)),f=this.fileNode.cloneNode(!1),c)b(this.currentPage.node);else for(c=0;c<this.pages.length;c++){var l=this.pages[c],m=l.node;if(l!=this.currentPage)if(l.needsUpdate){var g=new mxCodec(mxUtils.createXmlDocument()),
+g=g.encode(new mxGraphModel(l.root));this.editor.graph.saveViewState(l.viewState,g,null,e);EditorUi.removeChildNodes(m);mxUtils.setTextContent(m,Graph.compressNode(g));delete l.needsUpdate}else e&&(this.updatePageRoot(l),null!=l.viewState.backgroundImage&&(null!=l.viewState.backgroundImage.originalSrc?l.viewState.backgroundImage=this.createImageForPageLink(l.viewState.backgroundImage.originalSrc,l):Graph.isPageLink(l.viewState.backgroundImage.src)&&(l.viewState.backgroundImage=this.createImageForPageLink(l.viewState.backgroundImage.src,
+l))),null!=l.viewState.backgroundImage&&null!=l.viewState.backgroundImage.originalSrc&&(g=new mxCodec(mxUtils.createXmlDocument()),g=g.encode(new mxGraphModel(l.root)),this.editor.graph.saveViewState(l.viewState,g,null,e),m=m.cloneNode(!1),mxUtils.setTextContent(m,Graph.compressNode(g))));b(m)}return f};EditorUi.prototype.anonymizeString=function(b,c){for(var f=[],d=0;d<b.length;d++){var e=b.charAt(d);0<=EditorUi.ignoredAnonymizedChars.indexOf(e)?f.push(e):isNaN(parseInt(e))?e.toLowerCase()!=e?f.push(String.fromCharCode(65+
+Math.round(25*Math.random()))):e.toUpperCase()!=e?f.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(e)?f.push(" "):f.push("?"):f.push(c?"0":Math.round(9*Math.random()))}return f.join("")};EditorUi.prototype.anonymizePatch=function(b){if(null!=b[EditorUi.DIFF_INSERT])for(var c=0;c<b[EditorUi.DIFF_INSERT].length;c++)try{var f=mxUtils.parseXml(b[EditorUi.DIFF_INSERT][c].data).documentElement.cloneNode(!1);null!=f.getAttribute("name")&&f.setAttribute("name",this.anonymizeString(f.getAttribute("name")));
+b[EditorUi.DIFF_INSERT][c].data=mxUtils.getXml(f)}catch(t){b[EditorUi.DIFF_INSERT][c].data=t.message}if(null!=b[EditorUi.DIFF_UPDATE]){for(var d in b[EditorUi.DIFF_UPDATE]){var e=b[EditorUi.DIFF_UPDATE][d];null!=e.name&&(e.name=this.anonymizeString(e.name));null!=e.cells&&(c=mxUtils.bind(this,function(b){var c=e.cells[b];if(null!=c){for(var f in c)null!=c[f].value&&(c[f].value="["+c[f].value.length+"]"),null!=c[f].xmlValue&&(c[f].xmlValue="["+c[f].xmlValue.length+"]"),null!=c[f].style&&(c[f].style=
+"["+c[f].style.length+"]"),0==Object.keys(c[f]).length&&delete c[f];0==Object.keys(c).length&&delete e.cells[b]}}),c(EditorUi.DIFF_INSERT),c(EditorUi.DIFF_UPDATE),0==Object.keys(e.cells).length&&delete e.cells);0==Object.keys(e).length&&delete b[EditorUi.DIFF_UPDATE][d]}0==Object.keys(b[EditorUi.DIFF_UPDATE]).length&&delete b[EditorUi.DIFF_UPDATE]}return b};EditorUi.prototype.anonymizeAttributes=function(b,c){if(null!=b.attributes)for(var f=0;f<b.attributes.length;f++)"as"!=b.attributes[f].name&&
+b.setAttribute(b.attributes[f].name,this.anonymizeString(b.attributes[f].value,c));if(null!=b.childNodes)for(f=0;f<b.childNodes.length;f++)this.anonymizeAttributes(b.childNodes[f],c)};EditorUi.prototype.anonymizeNode=function(b,c){for(var f=b.getElementsByTagName("mxCell"),d=0;d<f.length;d++)null!=f[d].getAttribute("value")&&f[d].setAttribute("value","["+f[d].getAttribute("value").length+"]"),null!=f[d].getAttribute("xmlValue")&&f[d].setAttribute("xmlValue","["+f[d].getAttribute("xmlValue").length+
+"]"),null!=f[d].getAttribute("style")&&f[d].setAttribute("style","["+f[d].getAttribute("style").length+"]"),null!=f[d].parentNode&&"root"!=f[d].parentNode.nodeName&&null!=f[d].parentNode.parentNode&&(f[d].setAttribute("id",f[d].parentNode.getAttribute("id")),f[d].parentNode.parentNode.replaceChild(f[d],f[d].parentNode));return b};EditorUi.prototype.synchronizeCurrentFile=function(b){var c=this.getCurrentFile();null!=c&&(c.savingFile?this.handleError({message:mxResources.get("busy")}):!b&&c.invalidChecksum?
+c.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(c.clearAutosave(),this.editor.setStatus(""),b?c.reloadFile(mxUtils.bind(this,function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(b){c.handleFileError(b,!0)})):c.synchronizeFile(mxUtils.bind(this,function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(b){c.handleFileError(b,!0)}))))};EditorUi.prototype.getFileData=function(b,c,d,e,g,k,n,
+v,x,A,z){g=null!=g?g:!0;k=null!=k?k:!1;var f=this.editor.graph;if(c||!b&&null!=x&&/(\.svg)$/i.test(x.getTitle())){var l=null!=f.themes&&"darkTheme"==f.defaultThemeName;A=!1;if(l||null!=this.pages&&this.currentPage!=this.pages[0]){var m=f.getGlobalVariable,f=this.createTemporaryGraph(l?f.getDefaultStylesheet():f.getStylesheet());f.setBackgroundImage=this.editor.graph.setBackgroundImage;var p=this.pages[0];this.currentPage==p?f.setBackgroundImage(this.editor.graph.backgroundImage):null!=p.viewState&&
+null!=p.viewState&&f.setBackgroundImage(p.viewState.backgroundImage);f.getGlobalVariable=function(b){return"page"==b?p.getName():"pagenumber"==b?1:m.apply(this,arguments)};document.body.appendChild(f.container);f.model.setRoot(p.root)}}n=null!=n?n:this.getXmlFileData(g,k,A,z);x=null!=x?x:this.getCurrentFile();b=this.createFileData(n,f,x,window.location.href,b,c,d,e,g,v,A);f!=this.editor.graph&&f.container.parentNode.removeChild(f.container);return b};EditorUi.prototype.getHtml=function(b,c,d,e,g,
+k){k=null!=k?k:!0;var f=null,l=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=c){var f=k?c.getGraphBounds():c.getBoundingBox(c.getSelectionCells()),m=c.view.scale;k=Math.floor(f.x/m-c.view.translate.x);m=Math.floor(f.y/m-c.view.translate.y);f=c.background;null==g&&(c=this.getBasenames().join(";"),0<c.length&&(l=EditorUi.drawHost+"/embed.js?s="+c));b.setAttribute("x0",k);b.setAttribute("y0",m)}null!=b&&(b.setAttribute("pan","1"),b.setAttribute("zoom","1"),b.setAttribute("resize","0"),b.setAttribute("fit",
+"0"),b.setAttribute("border","20"),b.setAttribute("links","1"),null!=e&&b.setAttribute("edit",e));null!=g&&(g=g.replace(/&/g,"&amp;"));b=null!=b?Graph.zapGremlins(mxUtils.getXml(b)):"";e=Graph.compress(b);Graph.decompress(e)!=b&&(e=encodeURIComponent(b));return(null==g?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=g?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==g?null!=d?"<title>"+mxUtils.htmlEntities(d)+
+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=g?'<meta http-equiv="refresh" content="0;URL=\''+g+"'\"/>\n":"")+"</head>\n<body"+(null==g&&null!=f&&f!=mxConstants.NONE?' style="background-color:'+f+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+e+"</div>\n</div>\n"+(null==g?'<script type="text/javascript" src="'+l+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+
+g+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(b,c,d,e,g){c=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=g&&(g=g.replace(/&/g,"&amp;"));b={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:Graph.zapGremlins(b),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(b.page=mxUtils.indexOf(this.pages,this.currentPage));
+return(null==g?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=g?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==g?null!=d?"<title>"+mxUtils.htmlEntities(d)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=g?'<meta http-equiv="refresh" content="0;URL=\''+g+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+
+mxUtils.htmlEntities(JSON.stringify(b))+'"></div>\n'+(null==g?'<script type="text/javascript" src="'+c+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+g+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(b){b=this.validateFileData(b);this.pages=this.fileNode=this.currentPage=null;b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:
+null;var c=Editor.extractParserError(b,mxResources.get("invalidOrMissingFile"));if(c)throw Error(mxResources.get("notADiagramFile")+" ("+c+")");c=null!=b?this.editor.extractGraphModel(b,!0):null;null!=c&&(b=c);if(null!=b&&"mxfile"==b.nodeName&&(c=b.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name"))){var f=null;this.fileNode=b;this.pages=[];for(var d=0;d<c.length;d++)null==c[d].getAttribute("id")&&c[d].setAttribute("id",d),b=new DiagramPage(c[d]),
+null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[d+1])),this.pages.push(b),null!=urlParams["page-id"]&&b.getId()==urlParams["page-id"]&&(f=b);this.currentPage=null!=f?f:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];b=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=b&&(this.fileNode=b.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",
+[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(b);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var e=urlParams["layer-ids"].split(" ");b={};for(d=0;d<e.length;d++)b[e[d]]=!0;for(var g=this.editor.graph.getModel(),k=g.getChildren(g.root),d=0;d<k.length;d++){var n=k[d];g.setVisible(n,b[n.id]||!1)}}catch(x){}};EditorUi.prototype.getBaseFilename=function(b){var c=this.getCurrentFile(),c=null!=c&&null!=c.getTitle()?c.getTitle():
+this.defaultFilename;if(/(\.xml)$/i.test(c)||/(\.html)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.png)$/i.test(c))c=c.substring(0,c.lastIndexOf("."));/(\.drawio)$/i.test(c)&&(c=c.substring(0,c.lastIndexOf(".")));!b&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(c=c+"-"+this.currentPage.getName());return c};EditorUi.prototype.downloadFile=function(b,c,d,e,g,k,n,v,x,A,z,B){try{e=null!=e?e:this.editor.graph.isSelectionEmpty();
+var f=this.getBaseFilename(!g),l=f+("xml"==b||"pdf"==b&&z?".drawio":"")+"."+b;if("xml"==b){var m=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,e,g,null,null,null,c);this.saveData(l,b,m,"text/xml")}else if("html"==b)m=this.getHtml2(this.getFileData(!0),this.editor.graph,f),this.saveData(l,b,m,"text/html");else if("svg"!=b&&"xmlsvg"!=b||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==b?l=f+".png":"jpeg"==b&&(l=f+".jpg"),this.saveRequest(l,b,mxUtils.bind(this,function(c,
+f){try{var d=this.editor.graph.pageVisible;null!=k&&(this.editor.graph.pageVisible=k);var l=this.createDownloadRequest(c,b,e,f,n,g,v,x,A,z,B);this.editor.graph.pageVisible=d;return l}catch(O){this.handleError(O)}}));else{var p=null,t=mxUtils.bind(this,function(b){b.length<=MAX_REQUEST_SIZE?this.saveData(l,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(p)}))});if("svg"==b){var q=this.editor.graph.background;
+if(n||q==mxConstants.NONE)q=null;var u=this.editor.graph.getSvg(q,null,null,null,null,e);d&&this.editor.graph.addSvgShadow(u);this.editor.convertImages(u,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();t(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(b))})))}else l=f+".svg",p=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();t(b)}),e)}}catch(I){this.handleError(I)}};EditorUi.prototype.createDownloadRequest=function(b,c,d,e,g,k,n,v,x,
+A,z){var f=this.editor.graph,l=f.getGraphBounds();d=this.getFileData(!0,null,null,null,d,0==k?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var m="",p="";if(l.width*l.height>MAX_AREA||d.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};A=A?"1":"0";"pdf"==c&&(null!=z?p="&from="+z.from+"&to="+z.to:0==k&&(p="&allPages=1"));if("xmlpng"==c&&(A="1",c="png",null!=this.pages&&null!=this.currentPage))for(k=0;k<this.pages.length;k++)if(this.pages[k]==this.currentPage){m="&from="+k;break}k=
+f.background;"png"!=c&&"pdf"!=c||!g?g||null!=k&&k!=mxConstants.NONE||(k="#ffffff"):k=mxConstants.NONE;g={globalVars:f.getExportVariables()};x&&(g.grid={size:f.gridSize,steps:f.view.gridSteps,color:f.view.gridColor});Graph.translateDiagram&&(g.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+m+p+"&bg="+(null!=k?k:mxConstants.NONE)+"&base64="+e+"&embedXml="+A+"&xml="+encodeURIComponent(d)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(g))+
+(null!=n?"&scale="+n:"")+(null!=v?"&border="+v:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,d){var f=window.location.hash,e=mxUtils.bind(this,function(d){var e=null!=b.data?b.data:"";null!=d&&0<d.length&&(0<e.length&&(e+="\n"),e+=d);d=new LocalFile(this,"csv"!=b.format&&0<e.length?e:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);d.getHash=function(){return f};this.fileLoaded(d);"csv"==
+b.format&&this.importCsv(e,mxUtils.bind(this,function(b){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=b.update){var l=null!=b.interval?parseInt(b.interval):6E4,m=null,g=mxUtils.bind(this,function(){var c=this.currentPage;mxUtils.post(b.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(b){c===this.currentPage&&(200<=b.getStatus()&&300>=b.getStatus()?(this.updateDiagram(b.getText()),k()):this.handleError({message:mxResources.get("error")+
+" "+b.getStatus()}))}),mxUtils.bind(this,function(b){this.handleError(b)}))}),k=mxUtils.bind(this,function(){window.clearTimeout(m);m=window.setTimeout(g,l)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){k();g()}));k();g()}null!=c&&c()});null!=b.url&&0<b.url.length?this.editor.loadUrl(b.url,mxUtils.bind(this,function(b){e(b)}),mxUtils.bind(this,function(b){null!=d&&d(b)})):e("")};EditorUi.prototype.updateDiagram=function(b){function c(b){var c=new mxCellOverlay(b.image||e.warningImage,
+b.tooltip,b.align,b.valign,b.offset);c.addListener(mxEvent.CLICK,function(c,f){d.alert(b.tooltip)});return c}var f=null,d=this;if(null!=b&&0<b.length&&(f=mxUtils.parseXml(b),b=null!=f?f.documentElement:null,null!=b&&"updates"==b.nodeName)){var e=this.editor.graph,g=e.getModel();g.beginUpdate();var k=null;try{for(b=b.firstChild;null!=b;){if("update"==b.nodeName){var n=g.getCell(b.getAttribute("id"));if(null!=n){try{var x=b.getAttribute("value");if(null!=x){var A=mxUtils.parseXml(x).documentElement;
+if(null!=A)if("1"==A.getAttribute("replace-value"))g.setValue(n,A);else for(var z=A.attributes,B=0;B<z.length;B++)e.setAttributeForCell(n,z[B].nodeName,0<z[B].nodeValue.length?z[B].nodeValue:null)}}catch(I){null!=window.console&&console.log("Error in value for "+n.id+": "+I)}try{var y=b.getAttribute("style");null!=y&&e.model.setStyle(n,y)}catch(I){null!=window.console&&console.log("Error in style for "+n.id+": "+I)}try{var C=b.getAttribute("icon");if(null!=C){var G=0<C.length?JSON.parse(C):null;null!=
+G&&G.append||e.removeCellOverlays(n);null!=G&&e.addCellOverlay(n,c(G))}}catch(I){null!=window.console&&console.log("Error in icon for "+n.id+": "+I)}try{var F=b.getAttribute("geometry");if(null!=F){var F=JSON.parse(F),D=e.getCellGeometry(n);if(null!=D){D=D.clone();for(key in F){var E=parseFloat(F[key]);"dx"==key?D.x+=E:"dy"==key?D.y+=E:"dw"==key?D.width+=E:"dh"==key?D.height+=E:D[key]=parseFloat(F[key])}e.model.setGeometry(n,D)}}}catch(I){null!=window.console&&console.log("Error in icon for "+n.id+
+": "+I)}}}else if("model"==b.nodeName){for(var H=b.firstChild;null!=H&&H.nodeType!=mxConstants.NODETYPE_ELEMENT;)H=H.nextSibling;null!=H&&(new mxCodec(b.firstChild)).decode(H,g)}else if("view"==b.nodeName){if(b.hasAttribute("scale")&&(e.view.scale=parseFloat(b.getAttribute("scale"))),b.hasAttribute("dx")||b.hasAttribute("dy"))e.view.translate=new mxPoint(parseFloat(b.getAttribute("dx")||0),parseFloat(b.getAttribute("dy")||0))}else"fit"==b.nodeName&&(k=b.hasAttribute("max-scale")?parseFloat(b.getAttribute("max-scale")):
+1);b=b.nextSibling}}finally{g.endUpdate()}null!=k&&this.chromelessResize&&this.chromelessResize(!0,k)}return f};EditorUi.prototype.getCopyFilename=function(b,c){var f=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename,d="",e=f.lastIndexOf(".");0<=e&&(d=f.substring(e),f=f.substring(0,e));if(c)var l=new Date,e=l.getFullYear(),g=l.getMonth()+1,k=l.getDate(),n=l.getHours(),A=l.getMinutes(),l=l.getSeconds(),f=f+(" "+(e+"-"+g+"-"+k+"-"+n+"-"+A+"-"+l));return f=mxResources.get("copyOf",[f])+d};
+EditorUi.prototype.fileLoaded=function(b,c){var f=this.getCurrentFile();this.fileEditable=this.fileLoadedError=null;this.setCurrentFile(null);var d=!1;this.hideDialog();null!=f&&(EditorUi.debug("File.closed",[f]),f.removeListener(this.descriptorChangedListener),f.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var e=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=f&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();
+this.setBackgroundImage(null);!c&&null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();c||this.showSplash()});if(null!=b)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(b);b.addListener("descriptorChanged",this.descriptorChangedListener);
+b.addListener("contentChanged",this.descriptorChangedListener);b.open();delete this.openingFile;this.setGraphEnabled(!0);this.setMode(b.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();b.isEditable()?b.isModified()?(b.addUnsavedStatus(),null!=b.backupPatch&&b.patch([b.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");
+!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));d=!0;if(!this.isOffline()&&null!=b.getMode()){var l="1"==urlParams.sketch?"sketch":uiTheme;if(null==l)l="default";else if("sketch"==l||"min"==l)l+=Editor.isDarkMode()?
+"-dark":"-light";EditorUi.logEvent({category:b.getMode().toUpperCase()+"-OPEN-FILE-"+b.getHash(),action:"size_"+b.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+l})}EditorUi.debug("File.opened",[b]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));if(this.editor.editable&&this.mode==b.getMode()&&b.getMode()!=App.MODE_DEVICE&&null!=b.getMode())try{this.addRecent({id:b.getHash(),title:b.getTitle(),mode:b.getMode()})}catch(u){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+
+1),mxSettings.save()}catch(u){}}catch(u){this.fileLoadedError=u;if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+(null!=b?b.getHash():"none"),action:"message_"+u.message,label:"stack_"+u.stack})}catch(v){}l=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=f?this.fileLoaded(f):e()});c?l():this.handleError(u,mxResources.get("errorLoadingFile"),
+l,!0,null,null,!0)}else e();return d};EditorUi.prototype.getHashValueForPages=function(b,c){var f=0,d=new mxGraphModel,e=new mxCodec;null!=c&&(c.byteCount=0,c.attrCount=0,c.eltCount=0,c.nodeCount=0);for(var l=0;l<b.length;l++){this.updatePageRoot(b[l]);var g=b[l].node.cloneNode(!1);g.removeAttribute("name");d.root=b[l].root;var k=e.encode(d);this.editor.graph.saveViewState(b[l].viewState,k,!0);k.removeAttribute("pageWidth");k.removeAttribute("pageHeight");g.appendChild(k);null!=c&&(c.eltCount+=g.getElementsByTagName("*").length,
+c.nodeCount+=g.getElementsByTagName("mxCell").length);f=(f<<5)-f+this.hashValue(g,function(b,c,f,d){return!d||"mxGeometry"!=b.nodeName&&"mxPoint"!=b.nodeName||"x"!=c&&"y"!=c&&"width"!=c&&"height"!=c?d&&"mxCell"==b.nodeName&&"previous"==c?null:f:Math.round(f)},c)<<0}return f};EditorUi.prototype.hashValue=function(b,c,d){var f=0;if(null!=b&&"object"===typeof b&&"number"===typeof b.nodeType&&"string"===typeof b.nodeName&&"function"===typeof b.getAttribute){null!=b.nodeName&&(f^=this.hashValue(b.nodeName,
+c,d));if(null!=b.attributes){null!=d&&(d.attrCount+=b.attributes.length);for(var e=0;e<b.attributes.length;e++){var l=b.attributes[e].name,m=null!=c?c(b,l,b.attributes[e].value,!0):b.attributes[e].value;null!=m&&(f^=this.hashValue(l,c,d)+this.hashValue(m,c,d))}}if(null!=b.childNodes)for(e=0;e<b.childNodes.length;e++)f=(f<<5)-f+this.hashValue(b.childNodes[e],c,d)<<0}else if(null!=b&&"function"!==typeof b){b=String(b);c=0;null!=d&&(d.byteCount+=b.length);for(e=0;e<b.length;e++)c=(c<<5)-c+b.charCodeAt(e)<<
+0;f^=c}return f};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(b,c,d,e,g,k,n){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?StorageFile.getFileContent(this,".scratchpad",mxUtils.bind(this,function(b){null==b&&(b=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,
+b,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(b){var c=mxUtils.createXmlDocument(),f=c.createElement("mxlibrary");mxUtils.setTextContent(f,JSON.stringify(b));c.appendChild(f);return mxUtils.getXml(c)};EditorUi.prototype.closeLibrary=function(b){null!=b&&(this.removeLibrarySidebar(b.getHash()),b.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(b.getHash()),".scratchpad"==b.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=
+function(b){var c=this.sidebar.palettes[b];if(null!=c){for(var f=0;f<c.length;f++)c[f].parentNode.removeChild(c[f]);delete this.sidebar.palettes[b]}};EditorUi.prototype.repositionLibrary=function(b){var c=this.sidebar.container;if(null==b){var f=this.sidebar.palettes["L.scratchpad"];null==f&&(f=this.sidebar.palettes.search);null!=f&&(b=f[f.length-1].nextSibling)}b=null!=b?b:c.firstChild.nextSibling.nextSibling;var f=c.lastChild,d=f.previousSibling;c.insertBefore(f,b);c.insertBefore(d,f)};EditorUi.prototype.loadLibrary=
+function(b,c){var f=mxUtils.parseXml(b.getData());if("mxlibrary"==f.documentElement.nodeName){var d=JSON.parse(mxUtils.getTextContent(f.documentElement));this.libraryLoaded(b,d,f.documentElement.getAttribute("title"),c)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(b){return""};EditorUi.prototype.libraryLoaded=function(b,c,d,e){if(null!=this.sidebar){b.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(b.getHash());".scratchpad"==b.title&&
+(this.scratchpad=b);var f=this.sidebar.palettes[b.getHash()],f=null!=f?f[f.length-1].nextSibling:null;this.removeLibrarySidebar(b.getHash());var l=null,m=mxUtils.bind(this,function(c,f){0==c.length&&b.isEditable()?(null==l&&(l=document.createElement("div"),l.className="geDropTarget",mxUtils.write(l,mxResources.get("dragElementsHere"))),f.appendChild(l)):this.addLibraryEntries(c,f)});null!=this.sidebar&&null!=c&&this.sidebar.addEntries(c);null==d&&(d=b.getTitle(),null!=d&&/(\.xml)$/i.test(d)&&(d=d.substring(0,
+d.lastIndexOf("."))));var g=this.sidebar.addPalette(b.getHash(),d,null!=e?e:!0,mxUtils.bind(this,function(b){m(c,b)}));this.repositionLibrary(f);var k=g.parentNode.previousSibling;e=k.getAttribute("title");null!=e&&0<e.length&&".scratchpad"!=b.title&&k.setAttribute("title",this.getLibraryStorageHint(b)+"\n"+e);var p=document.createElement("div");p.style.position="absolute";p.style.right="0px";p.style.top="0px";p.style.padding="8px";p.style.backgroundColor="inherit";k.style.position="relative";var n=
+document.createElement("img");n.setAttribute("src",Editor.crossImage);n.setAttribute("title",mxResources.get("close"));n.setAttribute("valign","absmiddle");n.setAttribute("border","0");n.style.position="relative";n.style.top="2px";n.style.width="14px";n.style.cursor="pointer";n.style.margin="0 3px";Editor.isDarkMode()&&(n.style.filter="invert(100%)");var B=null;if(".scratchpad"!=b.title||this.closableScratchpad)p.appendChild(n),mxEvent.addListener(n,"click",mxUtils.bind(this,function(c){if(!mxEvent.isConsumed(c)){var f=
+mxUtils.bind(this,function(){this.closeLibrary(b)});null!=B?this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):f();mxEvent.consume(c)}}));if(b.isEditable()){var y=this.editor.graph,C=null,G=mxUtils.bind(this,function(f){this.showLibraryDialog(b.getTitle(),g,c,b,b.getMode());mxEvent.consume(f)}),F=mxUtils.bind(this,function(f){b.setModified(!0);b.isAutosave()?(null!=C&&null!=C.parentNode&&C.parentNode.removeChild(C),C=n.cloneNode(!1),
+C.setAttribute("src",Editor.spinImage),C.setAttribute("title",mxResources.get("saving")),C.style.cursor="default",C.style.marginRight="2px",C.style.marginTop="-2px",p.insertBefore(C,p.firstChild),k.style.paddingRight=18*p.childNodes.length+"px",this.saveLibrary(b.getTitle(),c,b,b.getMode(),!0,!0,function(){null!=C&&null!=C.parentNode&&(C.parentNode.removeChild(C),k.style.paddingRight=18*p.childNodes.length+"px")})):null==B&&(B=n.cloneNode(!1),B.setAttribute("src",Editor.saveImage),B.setAttribute("title",
+mxResources.get("save")),p.insertBefore(B,p.firstChild),mxEvent.addListener(B,"click",mxUtils.bind(this,function(f){this.saveLibrary(b.getTitle(),c,b,b.getMode(),b.constructor==LocalLibrary,!0,function(){null==B||b.isModified()||(k.style.paddingRight=18*p.childNodes.length+"px",B.parentNode.removeChild(B),B=null)});mxEvent.consume(f)})),k.style.paddingRight=18*p.childNodes.length+"px")}),D=mxUtils.bind(this,function(b,f,d,e){b=y.cloneCells(mxUtils.sortCells(y.model.getTopmostCells(b)));for(var m=
+0;m<b.length;m++){var k=y.getCellGeometry(b[m]);null!=k&&k.translate(-f.x,-f.y)}g.appendChild(this.sidebar.createVertexTemplateFromCells(b,f.width,f.height,e||"",!0,!1,!1));b={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(b))),w:f.width,h:f.height};null!=e&&(b.title=e);c.push(b);F(d);null!=l&&null!=l.parentNode&&0<c.length&&(l.parentNode.removeChild(l),l=null)}),E=mxUtils.bind(this,function(b){if(y.isSelectionEmpty())y.getRubberband().isActive()?(y.getRubberband().execute(b),y.getRubberband().reset()):
+this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var c=y.getSelectionCells(),f=y.view.getBounds(c),d=y.view.scale;f.x/=d;f.y/=d;f.width/=d;f.height/=d;f.x-=y.view.translate.x;f.y-=y.view.translate.y;D(c,f)}mxEvent.consume(b)});mxEvent.addGestureListeners(g,function(){},mxUtils.bind(this,function(b){y.isMouseDown&&null!=y.panningManager&&null!=y.graphHandler.first&&(y.graphHandler.suspend(),null!=y.graphHandler.hint&&(y.graphHandler.hint.style.visibility=
+"hidden"),g.style.backgroundColor="#f1f3f4",g.style.cursor="copy",y.panningManager.stop(),y.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){y.isMouseDown&&null!=y.panningManager&&null!=y.graphHandler&&(g.style.backgroundColor="",g.style.cursor="default",this.sidebar.showTooltips=!0,y.panningManager.stop(),y.graphHandler.reset(),y.isMouseDown=!1,y.autoScroll=!0,E(b),mxEvent.consume(b))}));mxEvent.addListener(g,"mouseleave",mxUtils.bind(this,function(b){y.isMouseDown&&null!=y.graphHandler.first&&
+(y.graphHandler.resume(),null!=y.graphHandler.hint&&(y.graphHandler.hint.style.visibility="visible"),g.style.backgroundColor="",g.style.cursor="",y.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(g,"dragover",mxUtils.bind(this,function(b){g.style.backgroundColor="#f1f3f4";b.dataTransfer.dropEffect="copy";g.style.cursor="copy";this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()})),mxEvent.addListener(g,"drop",mxUtils.bind(this,function(b){g.style.cursor="";g.style.backgroundColor=
+"";0<b.dataTransfer.files.length&&this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(f,d,e,k,p,n,q,t,y){if(null!=f&&"image/"==d.substring(0,6))f="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(f),f=[new mxCell("",new mxGeometry(0,0,p,n),f)],f[0].vertex=!0,D(f,new mxRectangle(0,0,p,n),b,mxEvent.isAltDown(b)?null:q.substring(0,q.lastIndexOf(".")).replace(/_/g," ")),null!=l&&null!=l.parentNode&&0<c.length&&
+(l.parentNode.removeChild(l),l=null);else{var u=!1,v=mxUtils.bind(this,function(f,d){if(null!=f&&"application/pdf"==d){var e=Editor.extractGraphModelFromPdf(f);null!=e&&0<e.length&&(f=e)}if(null!=f)if(e=mxUtils.parseXml(f),"mxlibrary"==e.documentElement.nodeName)try{var k=JSON.parse(mxUtils.getTextContent(e.documentElement));m(k,g);c=c.concat(k);F(b);this.spinner.stop();u=!0}catch(ca){}else if("mxfile"==e.documentElement.nodeName)try{for(var p=e.documentElement.getElementsByTagName("diagram"),k=0;k<
+p.length;k++){var n=this.stringToCells(Editor.getDiagramNodeXml(p[k])),q=this.editor.graph.getBoundingBoxFromGeometry(n);D(n,new mxRectangle(0,0,q.width,q.height),b)}u=!0}catch(ca){null!=window.console&&console.log("error in drop handler:",ca)}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=l&&null!=l.parentNode&&0<c.length&&(l.parentNode.removeChild(l),l=null)});null!=y&&null!=q&&(/(\.v(dx|sdx?))($|\?)/i.test(q)||/(\.vs(x|sx?))($|\?)/i.test(q))?this.importVisio(y,
+function(b){v(b,"text/xml")},null,q):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(f,q)&&null!=y?this.parseFile(y,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?v(b.responseText,"text/xml"):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):v(f,d)}}));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(g,"dragleave",function(b){g.style.cursor=
+"";g.style.backgroundColor="";b.stopPropagation();b.preventDefault()}));n=n.cloneNode(!1);n.setAttribute("src",Editor.editImage);n.setAttribute("title",mxResources.get("edit"));p.insertBefore(n,p.firstChild);mxEvent.addListener(n,"click",G);mxEvent.addListener(g,"dblclick",function(b){mxEvent.getSource(b)==g&&G(b)});e=n.cloneNode(!1);e.setAttribute("src",Editor.plusImage);e.setAttribute("title",mxResources.get("add"));p.insertBefore(e,p.firstChild);mxEvent.addListener(e,"click",E);this.isOffline()||
+".scratchpad"!=b.title||null==EditorUi.scratchpadHelpLink||(e=document.createElement("span"),e.setAttribute("title",mxResources.get("help")),e.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(e,"?"),mxEvent.addGestureListeners(e,mxUtils.bind(this,function(b){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(b)})),p.insertBefore(e,p.firstChild))}k.appendChild(p);k.style.paddingRight=18*p.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=
+function(b,c){for(var f=0;f<b.length;f++){var d=b[f],e=d.data;if(null!=e){var e=this.convertDataUri(e),l="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==d.aspect&&(l+="aspect=fixed;");c.appendChild(this.sidebar.createVertexTemplate(l+"image="+e,d.w,d.h,"",d.title||"",!1,!1,!0))}else null!=d.xml&&(e=this.stringToCells(Graph.decompress(d.xml)),0<e.length&&c.appendChild(this.sidebar.createVertexTemplateFromCells(e,d.w,d.h,d.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=
+function(b){return null!=b?b[mxLanguage]||b.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground="linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=
+3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38):Editor.isDarkMode()&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor=Editor.darkColor,Format.inactiveTabBackgroundColor="black",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.shapeBackgroundColor=Editor.darkColor,Graph.prototype.shapeForegroundColor=Editor.lightColor,Graph.prototype.defaultPageBackgroundColor=Editor.darkColor,Graph.prototype.defaultPageBorderColor="#505759",BaseFormatPanel.prototype.buttonBackgroundColor=
+Editor.darkColor,mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxConstants.DROP_TARGET_COLOR="#00ff00");Editor.sketchFontFamily="Architects Daughter";Editor.sketchFontSource="https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter";"1"==urlParams.sketch&&(Graph.prototype.defaultVertexStyle={hachureGap:"4"},Graph.prototype.defaultEdgeStyle={edgeStyle:"none",rounded:"0",curved:"1",jettySize:"auto",orthogonalLoop:"1",endArrow:"open",
+startSize:"14",endSize:"14",sourcePerimeterSpacing:"8",targetPerimeterSpacing:"8"},Editor.configurationKey=".sketch-configuration",Editor.settingsKey=".sketch-config",Graph.prototype.defaultGridEnabled="1"==urlParams.grid,Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=function(b,c,d,e,g){b=new ImageDialog(this,b,c,d,e,g);this.showDialog(b.container,
+Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);b.init()};EditorUi.prototype.showBackgroundImageDialog=function(b,c){b=null!=b?b:mxUtils.bind(this,function(b,c){if(!c){var f=new ChangePageSetup(this,null,b);f.ignoreColor=!0;this.editor.graph.model.execute(f)}});var f=new BackgroundImageDialog(this,b,c);this.showDialog(f.container,360,200,!0,!0);f.init()};EditorUi.prototype.showLibraryDialog=function(b,c,d,e,g){b=new LibraryDialog(this,b,c,d,e,g);this.showDialog(b.container,640,440,!0,!1,
+mxUtils.bind(this,function(b){b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));b.init()};var d=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(b){var c=d.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(b){this.editor.graph.isSelectionEmpty()&&c.refresh()}));return c};EditorUi.prototype.createSidebarFooterContainer=function(){var b=this.createDiv("geSidebarContainer geSidebarFooter");b.style.position=
+"absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var d=c.getElementsByTagName("span")[0];d.style.fontSize="18px";d.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(c,
+"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};EditorUi.prototype.handleError=function(b,c,d,e,g,k,n){var f=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},l=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{n?null!=window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&null!=b.name)?b.name:b.message,b.filename,b.lineNumber,
+b.columnNumber,b,"INFO")}catch(C){}if(null!=l||null!=c){n=mxUtils.htmlEntities(mxResources.get("unknownError"));var m=mxResources.get("ok"),p=null;c=null!=c?c:mxResources.get("error");if(null!=l){null!=l.retry&&(m=mxResources.get("cancel"),p=function(){f();l.retry()});if(404==l.code||404==l.status||403==l.code){n=403==l.code?null!=l.message?mxUtils.htmlEntities(l.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=g?g:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=
+this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var q=null!=g?null:null!=k?k:window.location.hash;if(null!=q&&("#G"==q.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==q.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==l.code||404==l.status)){q="#U"==q.substring(0,
2)?q.substring(45,q.lastIndexOf("%26ex")):q.substring(2);this.showError(c,n,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+q);this.handleError(b,c,d,e,g)}),p,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){e.innerHTML="";for(var b=0;b<c.length;b++){var f=document.createElement("option");mxUtils.write(f,c[b].displayName);f.value=b;e.appendChild(f);f=document.createElement("option");f.innerHTML="&nbsp;&nbsp;&nbsp;";
mxUtils.write(f,"<"+c[b].email+">");f.setAttribute("disabled","disabled");e.appendChild(f)}f=document.createElement("option");mxUtils.write(f,mxResources.get("addAccount"));f.value=c.length;e.appendChild(f)}var c=this.drive.getUsersList(),f=document.createElement("div"),d=document.createElement("span");d.style.marginTop="6px";mxUtils.write(d,mxResources.get("changeUser")+": ");f.appendChild(d);var e=document.createElement("select");e.style.width="200px";b();mxEvent.addListener(e,"change",mxUtils.bind(this,
function(){var f=e.value,d=c.length!=f;d&&this.drive.setUser(c[f]);this.drive.authorize(d,mxUtils.bind(this,function(){d||(c=this.drive.getUsersList(),b())}),mxUtils.bind(this,function(b){this.handleError(b)}),!0)}));f.appendChild(e);f=new CustomDialog(this,f,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(f.container,300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=d&&d()}),480,150);return}}null!=l.message?
@@ -10864,8 +10857,8 @@ f.textarea.style.height="380px";this.showDialog(f.container,620,460,!0,!0,null,n
"_blank"),null==d?mxUtils.popup(b,!0):(d.document.write(b),d.document.close(),d.document.execCommand("SaveAs",!0,c),d.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==d||"image/"!=d.substring(0,6)?this.showTextDialog(c+":",b):this.openInNewWindow(b,d,e);else{var f=document.createElement("a");k=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof f.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
k=65==(l?parseInt(l[2],10):!1)?!1:k}if(k||this.isOffline()){f.href=URL.createObjectURL(e?this.base64ToBlob(b,d):new Blob([b],{type:d}));k?f.download=c:f.setAttribute("target","_blank");document.body.appendChild(f);try{window.setTimeout(function(){URL.revokeObjectURL(f.href)},2E4),f.click(),f.parentNode.removeChild(f)}catch(x){}}else this.createEchoRequest(b,c,d,e,g).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,d,e,g,k){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,
b+(null!=d?"&mime="+d:"")+(null!=g?"&format="+g:"")+(null!=k?"&base64="+k:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(b,c){c=c||"";for(var f=atob(b),d=f.length,e=Math.ceil(d/1024),l=Array(e),g=0;g<e;++g){for(var k=1024*g,n=Math.min(k+1024,d),A=Array(n-k),z=0;k<n;++z,++k)A[z]=f[k].charCodeAt(0);l[g]=new Uint8Array(A)}return new Blob(l,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,d,e,g,k,n,v){k=null!=k?k:!1;n=null!=n?
-n:"vsdx"!=g&&(!mxClient.IS_IOS||!navigator.standalone);g=this.getServiceCount(k);isLocalStorage&&g++;var f=4>=g?2:6<g?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(c,f){try{if("_blank"==f)if(null!=d&&"image/"==d.substring(0,6))this.openInNewWindow(b,d,e);else if(null!=d&&"text/html"==d.substring(0,9)){var l=new EmbedDialog(this,b);this.showDialog(l.container,450,240,!0,!0);l.init()}else{var m=window.open("about:blank");null==m?mxUtils.popup(b,!0):(m.document.write("<pre>"+mxUtils.htmlEntities(b,
-!1)+"</pre>"),m.document.close())}else f==App.MODE_DEVICE||"download"==f?this.doSaveLocalFile(b,c,d,e,null,v):null!=c&&0<c.length&&this.pickFolder(f,mxUtils.bind(this,function(l){try{this.exportFile(b,c,d,e,f,l)}catch(G){this.handleError(G)}}))}catch(C){this.handleError(C)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,k,n,null,1<g,f,b,d,e);k=this.isServices(g)?g>f?390:270:160;this.showDialog(c.container,420,k,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=
+n:"vsdx"!=g&&(!mxClient.IS_IOS||!navigator.standalone);g=this.getServiceCount(k);isLocalStorage&&g++;var f=4>=g?2:6<g?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(c,f){try{if("_blank"==f)if(null!=d&&"image/"==d.substring(0,6))this.openInNewWindow(b,d,e);else if(null!=d&&"text/html"==d.substring(0,9)){var l=new EmbedDialog(this,b);this.showDialog(l.container,450,240,!0,!0);l.init()}else{var g=window.open("about:blank");null==g?mxUtils.popup(b,!0):(g.document.write("<pre>"+mxUtils.htmlEntities(b,
+!1)+"</pre>"),g.document.close())}else f==App.MODE_DEVICE||"download"==f?this.doSaveLocalFile(b,c,d,e,null,v):null!=c&&0<c.length&&this.pickFolder(f,mxUtils.bind(this,function(l){try{this.exportFile(b,c,d,e,f,l)}catch(G){this.handleError(G)}}))}catch(C){this.handleError(C)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,k,n,null,1<g,f,b,d,e);k=this.isServices(g)?g>f?390:270:160;this.showDialog(c.container,420,k,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=
function(b,c,d){var f=window.open("about:blank");null==f||null==f.document?mxUtils.popup(b,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?f.document.write("<html>"+b+"</html>"):(b=d?b:btoa(unescape(encodeURIComponent(b))),f.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+b+'"/></html>')):f.document.write("<html><pre>"+mxUtils.htmlEntities(b,!1)+"</pre></html>"),f.document.close())};var c=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=
function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};EditorUi.prototype.addChromelessToolbarItems=function(b){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var f=b(mxUtils.bind(this,function(b){null==this.tagsComponent&&(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position=
"",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding="4px",this.tagsComponent.div.style.overflow="auto",this.tagsComponent.div.style.height="auto",this.tagsComponent.div.style.position="fixed",this.tagsComponent.div.style.fontFamily=Editor.defaultHtmlFont,mxClient.IS_IE||mxClient.IS_IE11?(this.tagsComponent.div.style.backgroundColor=
@@ -10916,9 +10909,9 @@ t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.
"8px";b=["selectionOnly","diagram","page"];for(p=0;p<b.length;p++)if(!l.isSelectionEmpty()||"selectionOnly"!=b[p]){var H=document.createElement("option");mxUtils.write(H,mxResources.get(b[p]));H.setAttribute("value",b[p]);E.appendChild(H)}x?(mxUtils.write(f,mxResources.get("size")+":"),f.appendChild(E),mxUtils.br(f),m+=26,mxEvent.addListener(E,"change",function(){"selectionOnly"==E.value&&(u.checked=!0)})):k&&(f.appendChild(D),mxUtils.write(f,mxResources.get("crop")),mxUtils.br(f),m+=30,mxEvent.addListener(u,
"change",function(){u.checked?D.removeAttribute("disabled"):D.setAttribute("disabled","disabled")}));l.isSelectionEmpty()?x&&(u.style.display="none",u.nextSibling.style.display="none",u.nextSibling.nextSibling.style.display="none",m-=30):(E.value="diagram",D.setAttribute("checked","checked"),D.defaultChecked=!0,mxEvent.addListener(u,"change",function(){E.value=u.checked?"selectionOnly":"diagram"}));var I=this.addCheckbox(f,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=v),L=null;Editor.isDarkMode()&&
(L=this.addCheckbox(f,mxResources.get("dark"),!0),m+=26);var M=this.addCheckbox(f,mxResources.get("shadow"),l.shadowVisible),N=document.createElement("input");N.style.marginTop="16px";N.style.marginRight="8px";N.setAttribute("type","checkbox");var O=document.createElement("input");O.style.marginTop="16px";O.style.marginRight="8px";O.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||N.setAttribute("disabled","disabled");c&&(f.appendChild(N),mxUtils.write(f,mxResources.get("embedImages")),
-mxUtils.br(f),f.appendChild(O),mxUtils.write(f,mxResources.get("embedFonts")),mxUtils.br(f),m+=60);var K=null;if("png"==v||"jpeg"==v)K=this.addCheckbox(f,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),m+=30;var T=this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"),n,null,null,"jpeg"!=v);T.style.marginBottom="16px";var J=document.createElement("select");J.style.maxWidth="260px";J.style.marginLeft="8px";J.style.marginRight="10px";J.className="geBtn";c=document.createElement("option");
-c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));J.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));J.appendChild(c);c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));J.appendChild(c);"svg"==v&&(mxUtils.write(f,mxResources.get("links")+":"),f.appendChild(J),mxUtils.br(f),mxUtils.br(f),m+=50);d=new CustomDialog(this,f,
-mxUtils.bind(this,function(){this.lastExportBorder=t.value;this.lastExportZoom=q.value;g(q.value,I.checked,!u.checked,M.checked,T.checked,N.checked,t.value,D.checked,!1,J.value,null!=K?K.checked:null,null!=L?L.checked:null,E.value,O.checked)}),null,d,e);this.showDialog(d.container,340,m,!0,!0,null,null,null,null,!0);q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?q.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,d,e,g){var f=
+mxUtils.br(f),f.appendChild(O),mxUtils.write(f,mxResources.get("embedFonts")),mxUtils.br(f),m+=60);var J=null;if("png"==v||"jpeg"==v)J=this.addCheckbox(f,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),m+=30;var T=this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"),n,null,null,"jpeg"!=v);T.style.marginBottom="16px";var K=document.createElement("select");K.style.maxWidth="260px";K.style.marginLeft="8px";K.style.marginRight="10px";K.className="geBtn";c=document.createElement("option");
+c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));K.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));K.appendChild(c);c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));K.appendChild(c);"svg"==v&&(mxUtils.write(f,mxResources.get("links")+":"),f.appendChild(K),mxUtils.br(f),mxUtils.br(f),m+=50);d=new CustomDialog(this,f,
+mxUtils.bind(this,function(){this.lastExportBorder=t.value;this.lastExportZoom=q.value;g(q.value,I.checked,!u.checked,M.checked,T.checked,N.checked,t.value,D.checked,!1,K.value,null!=J?J.checked:null,null!=L?L.checked:null,E.value,O.checked)}),null,d,e);this.showDialog(d.container,340,m,!0,!0,null,null,null,null,!0);q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?q.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,d,e,g){var f=
document.createElement("div");f.style.whiteSpace="nowrap";var l=this.editor.graph;if(null!=c){var m=document.createElement("h3");mxUtils.write(m,c);m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";f.appendChild(m)}var k=this.addCheckbox(f,mxResources.get("fit"),!0),p=this.addCheckbox(f,mxResources.get("shadow"),l.shadowVisible&&e,!e),n=this.addCheckbox(f,d),q=this.addCheckbox(f,mxResources.get("lightbox"),!0),y=this.addEditButton(f,q),C=y.getEditInput(),G=1<l.model.getChildCount(l.model.getRoot()),
F=this.addCheckbox(f,mxResources.get("layers"),G,!G);F.style.marginLeft=C.style.marginLeft;F.style.marginBottom="12px";F.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(G&&F.removeAttribute("disabled"),C.removeAttribute("disabled")):(F.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"));C.checked&&q.checked?y.getEditSelect().removeAttribute("disabled"):y.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,f,mxUtils.bind(this,
function(){b(k.checked,p.checked,n.checked,q.checked,y.getLink(),F.checked)}),null,mxResources.get("embed"),g);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,d,e,g,k,n,v){function f(c){var f=" ",p="";e&&(f=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
@@ -10939,10 +10932,10 @@ this.editor.embedExtFonts(mxUtils.bind(this,function(f){try{null!=f&&this.editor
g?this.getFileData(!0,null,null,null,d,v):null,x,null==this.pages||0==this.pages.length,z)}catch(F){this.handleError(F)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,d,b||1,c,e,null,null,k,n,A,B,y)}catch(G){this.spinner.stop(),this.handleError(G)}}};EditorUi.prototype.isCorsEnabledForUrl=function(b){return this.editor.isCorsEnabledForUrl(b)};EditorUi.prototype.importXml=function(b,c,d,e,g,k,n){c=null!=c?c:0;d=null!=d?d:0;var f=[];try{var l=
this.editor.graph;if(null!=b&&0<b.length){l.model.beginUpdate();try{var m=mxUtils.parseXml(b);b={};var p=this.editor.extractGraphModel(m.documentElement,null!=this.pages);if(null!=p&&"mxfile"==p.nodeName&&null!=this.pages){var q=p.getElementsByTagName("diagram");if(1==q.length&&!k){if(p=Editor.parseDiagramNode(q[0]),null!=this.currentPage&&(b[q[0].getAttribute("id")]=this.currentPage.getId(),null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",
[1]))){var t=q[0].getAttribute("name");null!=t&&""!=t&&this.editor.graph.model.execute(new RenamePage(this,this.currentPage,t))}}else if(0<q.length){k=[];var u=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(b[q[0].getAttribute("id")]=this.pages[0].getId(),p=Editor.parseDiagramNode(q[0]),e=!1,u=1);for(;u<q.length;u++){var G=q[u].getAttribute("id");q[u].removeAttribute("id");var F=this.updatePageRoot(new DiagramPage(q[u]));b[G]=q[u].getAttribute("id");var D=this.pages.length;null==
-F.getName()&&F.setName(mxResources.get("pageWithNumber",[D+1]));l.model.execute(new ChangePage(this,F,F,D,!0));k.push(F)}this.updatePageLinks(b,k)}}if(null!=p&&"mxGraphModel"===p.nodeName&&(f=l.importGraphModel(p,c,d,e),null!=f))for(u=0;u<f.length;u++)this.updatePageLinksForCell(b,f[u]);n&&this.insertHandler(f,null,null,l.defaultVertexStyle,l.defaultEdgeStyle,!1,!0)}finally{l.model.endUpdate()}}}catch(E){if(g)throw E;this.handleError(E)}return f};EditorUi.prototype.updatePageLinks=function(b,c){for(var f=
-0;f<c.length;f++)this.updatePageLinksForCell(b,c[f].root)};EditorUi.prototype.updatePageLinksForCell=function(b,c){var f=document.createElement("div"),d=this.editor.graph,e=d.getLinkForCell(c);null!=e&&d.setLinkForCell(c,this.updatePageLink(b,e));if(d.isHtmlLabel(c)){f.innerHTML=d.sanitizeHtml(d.getLabel(c));for(var l=f.getElementsByTagName("a"),g=!1,k=0;k<l.length;k++)e=l[k].getAttribute("href"),null!=e&&(l[k].setAttribute("href",this.updatePageLink(b,e)),g=!0);g&&d.labelChanged(c,f.innerHTML)}for(k=
-0;k<d.model.getChildCount(c);k++)this.updatePageLinksForCell(b,d.model.getChildAt(c,k))};EditorUi.prototype.updatePageLink=function(b,c){if(Graph.isPageLink(c)){var f=b[c.substring(c.indexOf(",")+1)];c=null!=f?"data:page/id,"+f:null}else if("data:action/json,"==c.substring(0,17))try{var d=JSON.parse(c.substring(17));if(null!=d.actions){for(var e=0;e<d.actions.length;e++){var l=d.actions[e];if(null!=l.open&&Graph.isPageLink(l.open)){var g=l.open.substring(l.open.indexOf(",")+1),f=b[g];null!=f?l.open=
-"data:page/id,"+f:null==this.getPageById(g)&&delete l.open}}c="data:action/json,"+JSON.stringify(d)}}catch(v){}return c};EditorUi.prototype.isRemoteVisioFormat=function(b){return/(\.v(sd|dx))($|\?)/i.test(b)||/(\.vs(s|x))($|\?)/i.test(b)};EditorUi.prototype.importVisio=function(b,c,d,e,g){e=null!=e?e:b.name;d=null!=d?d:mxUtils.bind(this,function(b){this.handleError(b)});var f=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var f=this.isRemoteVisioFormat(e);try{var l=
+F.getName()&&F.setName(mxResources.get("pageWithNumber",[D+1]));l.model.execute(new ChangePage(this,F,F,D,!0));k.push(F)}this.updatePageLinks(b,k)}}if(null!=p&&"mxGraphModel"===p.nodeName&&(f=l.importGraphModel(p,c,d,e),null!=f))for(u=0;u<f.length;u++)this.updatePageLinksForCell(b,f[u]);n&&this.insertHandler(f,null,null,l.defaultVertexStyle,l.defaultEdgeStyle,!1,!0)}finally{l.model.endUpdate()}}}catch(E){if(g)throw E;this.handleError(E)}return f};EditorUi.prototype.updatePageLinks=function(b,c){for(var d=
+0;d<c.length;d++)this.updatePageLinksForCell(b,c[d].root)};EditorUi.prototype.updatePageLinksForCell=function(b,c){var d=document.createElement("div"),f=this.editor.graph,e=f.getLinkForCell(c);null!=e&&f.setLinkForCell(c,this.updatePageLink(b,e));if(f.isHtmlLabel(c)){d.innerHTML=f.sanitizeHtml(f.getLabel(c));for(var l=d.getElementsByTagName("a"),g=!1,k=0;k<l.length;k++)e=l[k].getAttribute("href"),null!=e&&(l[k].setAttribute("href",this.updatePageLink(b,e)),g=!0);g&&f.labelChanged(c,d.innerHTML)}for(k=
+0;k<f.model.getChildCount(c);k++)this.updatePageLinksForCell(b,f.model.getChildAt(c,k))};EditorUi.prototype.updatePageLink=function(b,c){if(Graph.isPageLink(c)){var d=b[c.substring(c.indexOf(",")+1)];c=null!=d?"data:page/id,"+d:null}else if("data:action/json,"==c.substring(0,17))try{var f=JSON.parse(c.substring(17));if(null!=f.actions){for(var e=0;e<f.actions.length;e++){var l=f.actions[e];if(null!=l.open&&Graph.isPageLink(l.open)){var g=l.open.substring(l.open.indexOf(",")+1),d=b[g];null!=d?l.open=
+"data:page/id,"+d:null==this.getPageById(g)&&delete l.open}}c="data:action/json,"+JSON.stringify(f)}}catch(v){}return c};EditorUi.prototype.isRemoteVisioFormat=function(b){return/(\.v(sd|dx))($|\?)/i.test(b)||/(\.vs(s|x))($|\?)/i.test(b)};EditorUi.prototype.importVisio=function(b,c,d,e,g){e=null!=e?e:b.name;d=null!=d?d:mxUtils.bind(this,function(b){this.handleError(b)});var f=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var f=this.isRemoteVisioFormat(e);try{var l=
"UNKNOWN-VISIO",k=e.lastIndexOf(".");if(0<=k&&k<e.length)l=e.substring(k+1).toUpperCase();else{var m=e.lastIndexOf("/");0<=m&&m<e.length&&(e=e.substring(m+1))}EditorUi.logEvent({category:l+"-MS-IMPORT-FILE",action:"filename_"+e,label:f?"remote":"local"})}catch(B){}if(f)if(null==VSD_CONVERT_URL||this.isOffline())d({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{f=new FormData;f.append("file1",b,e);var p=new XMLHttpRequest;
p.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(e)?"?stencil=1":""));p.responseType="blob";this.addRemoteServiceSecurityCheck(p);null!=g&&p.setRequestHeader("x-convert-custom",g);p.onreadystatechange=mxUtils.bind(this,function(){if(4==p.readyState)if(200<=p.status&&299>=p.status)try{var b=p.response;if("text/xml"==b.type){var f=new FileReader;f.onload=mxUtils.bind(this,function(b){try{c(b.target.result)}catch(G){d({message:mxResources.get("errorLoadingFile")})}});f.readAsText(b)}else this.doImportVisio(b,
c,d,e)}catch(C){d(C)}else try{""==p.responseType||"text"==p.responseType?d({message:p.responseText}):(f=new FileReader,f.onload=function(){d({message:JSON.parse(f.result).Message})},f.readAsText(p.response))}catch(C){d({})}});p.send(f)}else try{this.doImportVisio(b,c,d,e)}catch(B){d(B)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",
@@ -10950,9 +10943,9 @@ f))};EditorUi.prototype.importGraphML=function(b,c,d){d=null!=d?d:mxUtils.bind(t
function(b){var c=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams(b)||this.handleError({message:mxResources.get("unknownError")})}catch(m){this.handleError(m)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?c():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",c))};EditorUi.prototype.convertLucidChart=
function(b,c,d){var f=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{var f=JSON.parse(b);c(LucidImporter.importState(f));try{if(EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+b.length}),null!=window.console&&"1"==urlParams.test){var e=[(new Date).toISOString(),"convertLucidChart",f];null!=f.state&&e.push(JSON.parse(f.state));if(null!=f.svgThumbs)for(var l=0;l<f.svgThumbs.length;l++)e.push(Editor.createSvgDataUri(f.svgThumbs[l]));
null!=f.thumb&&e.push(f.thumb);console.log.apply(console,e)}}catch(v){}}catch(v){null!=window.console&&console.error(v),d(v)}else d({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(f,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",function(){mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",
-function(){mxscript("js/orgchart/mxOrgChartLayout.js",f)})})})}):mxscript("js/extensions.min.js",f))};EditorUi.prototype.generateMermaidImage=function(b,c,d,e){var f=this,l=function(){try{this.loadingMermaid=!1,c=null!=c?c:EditorUi.defaultMermaidConfig,c.securityLevel="strict",c.startOnLoad=!1,mermaid.mermaidAPI.initialize(c),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),b,function(b){try{if(mxClient.IS_IE||mxClient.IS_IE11)b=b.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,
-"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var c=mxUtils.parseXml(b).getElementsByTagName("svg");if(0<c.length){var l=parseFloat(c[0].getAttribute("width")),g=parseFloat(c[0].getAttribute("height"));if(isNaN(l)||isNaN(g))try{var k=c[0].getAttribute("viewBox").split(/\s+/),l=parseFloat(k[2]),g=parseFloat(k[3])}catch(B){l=l||100,g=g||100}d(f.convertDataUri(Editor.createSvgDataUri(b)),l,g)}else e({message:mxResources.get("invalidInput")})}catch(B){e(B)}})}catch(u){e(u)}};
-"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?l():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",l):mxscript("js/extensions.min.js",l))};EditorUi.prototype.generatePlantUmlImage=function(b,c,d,e){function f(b,c,f){c1=b>>2;c2=(b&3)<<4|c>>4;c3=(c&15)<<2|f>>6;c4=f&63;r="";r+=l(c1&63);r+=l(c2&63);r+=l(c3&63);return r+=l(c4&63)}function l(b){if(10>b)return String.fromCharCode(48+b);b-=10;if(26>b)return String.fromCharCode(65+b);b-=26;if(26>b)return String.fromCharCode(97+
+function(){mxscript("js/orgchart/mxOrgChartLayout.js",f)})})})}):mxscript("js/extensions.min.js",f))};EditorUi.prototype.generateMermaidImage=function(b,c,d,e){var f=this,l=function(){try{this.loadingMermaid=!1,c=null!=c?c:mxUtils.clone(EditorUi.defaultMermaidConfig),c.securityLevel="strict",c.startOnLoad=!1,Editor.isDarkMode()&&(c.theme="dark"),mermaid.mermaidAPI.initialize(c),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),b,function(b){try{if(mxClient.IS_IE||mxClient.IS_IE11)b=
+b.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var c=mxUtils.parseXml(b).getElementsByTagName("svg");if(0<c.length){var l=parseFloat(c[0].getAttribute("width")),g=parseFloat(c[0].getAttribute("height"));if(isNaN(l)||isNaN(g))try{var k=c[0].getAttribute("viewBox").split(/\s+/),l=parseFloat(k[2]),g=parseFloat(k[3])}catch(B){l=l||100,g=g||100}d(f.convertDataUri(Editor.createSvgDataUri(b)),l,g)}else e({message:mxResources.get("invalidInput")})}catch(B){e(B)}})}catch(u){e(u)}};
+"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?l():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",l):mxscript("js/extensions.min.js",l))};EditorUi.prototype.generatePlantUmlImage=function(b,c,d,e){function f(b,c,d){c1=b>>2;c2=(b&3)<<4|c>>4;c3=(c&15)<<2|d>>6;c4=d&63;r="";r+=l(c1&63);r+=l(c2&63);r+=l(c3&63);return r+=l(c4&63)}function l(b){if(10>b)return String.fromCharCode(48+b);b-=10;if(26>b)return String.fromCharCode(65+b);b-=26;if(26>b)return String.fromCharCode(97+
b);b-=26;return 0==b?"-":1==b?"_":"?"}var g=new XMLHttpRequest;g.open("GET",("txt"==c?PLANT_URL+"/txt/":"png"==c?PLANT_URL+"/png/":PLANT_URL+"/svg/")+function(b){r="";for(i=0;i<b.length;i+=3)r=i+2==b.length?r+f(b.charCodeAt(i),b.charCodeAt(i+1),0):i+1==b.length?r+f(b.charCodeAt(i),0,0):r+f(b.charCodeAt(i),b.charCodeAt(i+1),b.charCodeAt(i+2));return r}(Graph.arrayBufferToString(pako.deflateRaw(b))),!0);"txt"!=c&&(g.responseType="blob");g.onload=function(b){if(200<=this.status&&300>this.status)if("txt"==
c)d(this.response);else{var f=new FileReader;f.readAsDataURL(this.response);f.onloadend=function(b){var c=new Image;c.onload=function(){try{var b=c.width,l=c.height;if(0==b&&0==l){var g=f.result,k=g.indexOf(","),m=decodeURIComponent(escape(atob(g.substring(k+1)))),p=mxUtils.parseXml(m).getElementsByTagName("svg");0<p.length&&(b=parseFloat(p[0].getAttribute("width")),l=parseFloat(p[0].getAttribute("height")))}d(f.result,b,l)}catch(E){e(E)}};c.src=f.result};f.onerror=function(b){e(b)}}else e(b)};g.onerror=
function(b){e(b)};g.send()};EditorUi.prototype.insertAsPreText=function(b,c,d){var f=this.editor.graph,e=null;f.getModel().beginUpdate();try{e=f.insertVertex(null,null,"<pre>"+b+"</pre>",c,d,1,1,"text;html=1;align=left;verticalAlign=top;"),f.updateCellSize(e,!0)}finally{f.getModel().endUpdate()}return e};EditorUi.prototype.insertTextAt=function(b,c,d,e,g,k,n,v){k=null!=k?k:!0;n=null!=n?n:!0;if(null!=b)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b))this.parseFile(new Blob([b.replace(/\s+/g,
@@ -10971,8 +10964,8 @@ EditorUi.prototype.importZipFile=function(b,c,d){var f=this,e=mxUtils.bind(this,
m=mxUtils.bind(this,function(b){var c=null;null!=b&&"<mxlibrary"==b.substring(0,10)?this.loadLibrary(new LocalLibrary(this,b,n)):c=this.importXml(b,d,e,A,null,null!=B?mxEvent.isControlDown(B):null);null!=v&&v(c)});"image"==c.substring(0,5)?(x=!1,"image/png"==c.substring(0,9)&&(c=z?null:this.extractGraphModelFromPng(b),null!=c&&0<c.length&&(l=this.importXml(c,d,e,A,null,null!=B?mxEvent.isControlDown(B):null),x=!0)),x||(c=this.editor.graph,z=b.indexOf(";"),0<z&&(b=b.substring(0,z)+b.substring(b.indexOf(",",
z+1))),A&&c.isGridEnabled()&&(d=c.snap(d),e=c.snap(e)),l=[c.insertVertex(null,null,"",d,e,g,k,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+b+";")])):/(\.*<graphml )/.test(b)?(f=!0,this.importGraphML(b,m)):null!=x&&null!=n&&(/(\.v(dx|sdx?))($|\?)/i.test(n)||/(\.vs(x|sx?))($|\?)/i.test(n))?(f=!0,this.importVisio(x,m)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,n)?(f=!0,this.parseFile(null!=
x?x:new Blob([b],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&299>=b.status?m(b.responseText):null!=v&&v(null))}),n)):0==b.indexOf("PK")&&null!=x?(f=!0,this.importZipFile(x,m,mxUtils.bind(this,function(){l=this.insertTextAt(this.validateFileData(b),d,e,!0,null,A);v(l)}))):/(\.v(sd|dx))($|\?)/i.test(n)||/(\.vs(s|x))($|\?)/i.test(n)||(l=this.insertTextAt(this.validateFileData(b),d,e,!0,null,A,null,null!=B?mxEvent.isControlDown(B):null));f||null==
-v||v(l);return l};EditorUi.prototype.importFiles=function(b,c,d,e,g,k,n,v,x,A,z,B,y){e=null!=e?e:this.maxImageSize;A=null!=A?A:this.maxImageBytes;var f=null!=c&&null!=d,l=!0;c=null!=c?c:0;d=null!=d?d:0;var m=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var p=z||this.resampleThreshold,q=0;q<b.length;q++)if("image/"==b[q].type.substring(0,6)&&b[q].size>p){m=!0;break}var t=mxUtils.bind(this,function(){var m=this.editor.graph,p=m.gridSize;g=null!=g?g:mxUtils.bind(this,function(b,c,d,e,l,g,k,m,p){try{return null!=
-b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,b,k)),null):this.importFile(b,c,d,e,l,g,k,m,p,f,B,y)}catch(pa){return this.handleError(pa),null}});k=null!=k?k:mxUtils.bind(this,function(b){m.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q=b.length,t=q,u=[],E=mxUtils.bind(this,function(b,c){u[b]=c;if(0==--t){this.spinner.stop();if(null!=v)v(u);else{var d=[];m.getModel().beginUpdate();try{for(var f=0;f<u.length;f++){var e=
+v||v(l);return l};EditorUi.prototype.importFiles=function(b,c,d,e,g,k,n,v,x,A,z,B,y){e=null!=e?e:this.maxImageSize;A=null!=A?A:this.maxImageBytes;var f=null!=c&&null!=d,l=!0;c=null!=c?c:0;d=null!=d?d:0;var m=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var p=z||this.resampleThreshold,q=0;q<b.length;q++)if("image/"==b[q].type.substring(0,6)&&b[q].size>p){m=!0;break}var t=mxUtils.bind(this,function(){var m=this.editor.graph,p=m.gridSize;g=null!=g?g:mxUtils.bind(this,function(b,c,d,e,g,l,k,m,p){try{return null!=
+b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,b,k)),null):this.importFile(b,c,d,e,g,l,k,m,p,f,B,y)}catch(pa){return this.handleError(pa),null}});k=null!=k?k:mxUtils.bind(this,function(b){m.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q=b.length,t=q,u=[],E=mxUtils.bind(this,function(b,c){u[b]=c;if(0==--t){this.spinner.stop();if(null!=v)v(u);else{var d=[];m.getModel().beginUpdate();try{for(var f=0;f<u.length;f++){var e=
u[f]();null!=e&&(d=d.concat(e))}}finally{m.getModel().endUpdate()}}k(d)}}),C=0;C<q;C++)mxUtils.bind(this,function(f){var k=b[f];if(null!=k){var q=new FileReader;q.onload=mxUtils.bind(this,function(b){if(null==n||n(k))if("image/"==k.type.substring(0,6))if("image/svg"==k.type.substring(0,9)){var q=Graph.clipSvgDataUri(b.target.result),t=q.indexOf(","),y=decodeURIComponent(escape(atob(q.substring(t+1)))),u=mxUtils.parseXml(y),y=u.getElementsByTagName("svg");if(0<y.length){var y=y[0],v=B?null:y.getAttribute("content");
null!=v&&"<"!=v.charAt(0)&&"%"!=v.charAt(0)&&(v=unescape(window.atob?atob(v):Base64.decode(v,!0)));null!=v&&"%"==v.charAt(0)&&(v=decodeURIComponent(v));null==v||"<mxfile "!==v.substring(0,8)&&"<mxGraphModel "!==v.substring(0,14)?E(f,mxUtils.bind(this,function(){try{if(q.substring(0,t+1),null!=u){var b=u.getElementsByTagName("svg");if(0<b.length){var l=b[0],n=l.getAttribute("width"),y=l.getAttribute("height"),n=null!=n&&"%"!=n.charAt(n.length-1)?parseFloat(n):NaN,y=null!=y&&"%"!=y.charAt(y.length-
1)?parseFloat(y):NaN,B=l.getAttribute("viewBox");if(null==B||0==B.length)l.setAttribute("viewBox","0 0 "+n+" "+y);else if(isNaN(n)||isNaN(y)){var v=B.split(" ");3<v.length&&(n=parseFloat(v[2]),y=parseFloat(v[3]))}q=Editor.createSvgDataUri(mxUtils.getXml(l));var E=Math.min(1,Math.min(e/Math.max(1,n)),e/Math.max(1,y)),A=g(q,k.type,c+f*p,d+f*p,Math.max(1,Math.round(n*E)),Math.max(1,Math.round(y*E)),k.name);if(isNaN(n)||isNaN(y)){var C=new Image;C.onload=mxUtils.bind(this,function(){n=Math.max(1,C.width);
@@ -10982,8 +10975,8 @@ this.loadImage(b.target.result,mxUtils.bind(this,function(m){this.resizeImage(m,
b.target.result,g(q,k.type,c+f*p,d+f*p,240,160,k.name,function(b){E(f,function(){return b})},k)});/(\.v(dx|sdx?))($|\?)/i.test(k.name)||/(\.vs(x|sx?))($|\?)/i.test(k.name)?g(null,k.type,c+f*p,d+f*p,240,160,k.name,function(b){E(f,function(){return b})},k):"image"==k.type.substring(0,5)||"application/pdf"==k.type?q.readAsDataURL(k):q.readAsText(k)}})(C)});if(m){m=[];for(q=0;q<b.length;q++)m.push(b[q]);b=m;this.confirmImageResize(function(b){l=b;t()},x)}else t()};EditorUi.prototype.confirmImageResize=
function(b,c){c=null!=c?c:!1;var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},f=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,e=function(f,e){if(f||c)mxSettings.setResizeImages(f?e:null),mxSettings.save();d();b(e)};null==f||c?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(b){e(b,!0)},function(b){e(b,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+
'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):e(!1,f)};EditorUi.prototype.parseFile=function(b,c,d){d=null!=d?d:b.name;var f=new FormData;f.append("format","xml");f.append("upfile",b,d);var e=new XMLHttpRequest;e.open("POST",OPEN_URL);e.onreadystatechange=function(){c(e)};e.send(f);try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+b.size})}catch(t){}};EditorUi.prototype.isResampleImageSize=
-function(b,c){c=null!=c?c:this.resampleThreshold;return b>c};EditorUi.prototype.resizeImage=function(b,c,d,e,g,k,n){g=null!=g?g:this.maxImageSize;var f=Math.max(1,b.width),l=Math.max(1,b.height);if(e&&this.isResampleImageSize(null!=n?n:c.length,k))try{var m=Math.max(f/g,l/g);if(1<m){var p=Math.round(f/m),q=Math.round(l/m),t=document.createElement("canvas");t.width=p;t.height=q;t.getContext("2d").drawImage(b,0,0,p,q);var u=t.toDataURL();if(u.length<c.length){var G=document.createElement("canvas");
-G.width=p;G.height=q;var F=G.toDataURL();u!==F&&(c=u,f=p,l=q)}}}catch(D){}d(c,f,l)};EditorUi.prototype.extractGraphModelFromPng=function(b){return Editor.extractGraphModelFromPng(b)};EditorUi.prototype.loadImage=function(b,c,d){try{var f=new Image;f.onload=function(){f.width=0<f.width?f.width:120;f.height=0<f.height?f.height:120;c(f)};null!=d&&(f.onerror=d);f.src=b}catch(q){if(null!=d)d(q);else throw q;}};var g=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=
+function(b,c){c=null!=c?c:this.resampleThreshold;return b>c};EditorUi.prototype.resizeImage=function(b,c,d,e,g,k,n){g=null!=g?g:this.maxImageSize;var f=Math.max(1,b.width),l=Math.max(1,b.height);if(e&&this.isResampleImageSize(null!=n?n:c.length,k))try{var m=Math.max(f/g,l/g);if(1<m){var p=Math.round(f/m),q=Math.round(l/m),y=document.createElement("canvas");y.width=p;y.height=q;y.getContext("2d").drawImage(b,0,0,p,q);var t=y.toDataURL();if(t.length<c.length){var u=document.createElement("canvas");
+u.width=p;u.height=q;var F=u.toDataURL();t!==F&&(c=t,f=p,l=q)}}}catch(D){}d(c,f,l)};EditorUi.prototype.extractGraphModelFromPng=function(b){return Editor.extractGraphModelFromPng(b)};EditorUi.prototype.loadImage=function(b,c,d){try{var f=new Image;f.onload=function(){f.width=0<f.width?f.width:120;f.height=0<f.height?f.height:120;c(f)};null!=d&&(f.onerror=d);f.src=b}catch(q){if(null!=d)d(q);else throw q;}};var g=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=
mxStencilRegistry.allowEval&&!this.isOfflineApp();this.isSettingsEnabled()&&("1"==urlParams.sketch&&this.doSetSketchMode(null!=mxSettings.settings.sketchMode&&null==urlParams.rough?mxSettings.settings.sketchMode:"0"!=urlParams.rough),this.formatWidth=mxSettings.getFormatWidth());var b=this,c=this.editor.graph;Editor.isDarkMode()&&(c.view.defaultGridColor=mxGraphView.prototype.defaultDarkGridColor);c.cellEditor.editPlantUmlData=function(d,f,e){var g=JSON.parse(e);f=new TextareaDialog(b,mxResources.get("plantUml")+
":",g.data,function(f){null!=f&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generatePlantUmlImage(f,g.format,function(e,l,k){b.spinner.stop();c.getModel().beginUpdate();try{if("txt"==g.format)c.labelChanged(d,"<pre>"+e+"</pre>"),c.updateCellSize(d,!0);else{c.setCellStyles("image",b.convertDataUri(e),[d]);var m=c.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=l,m.height=k,c.cellsResized([d],[m],!1))}c.setAttributeForCell(d,"plantUmlData",JSON.stringify({data:f,format:g.format}))}finally{c.getModel().endUpdate()}},
function(c){b.handleError(c)})},null,null,400,220);b.showDialog(f.container,420,300,!0,!0);f.init()};c.cellEditor.editMermaidData=function(d,f,e){var g=JSON.parse(e);f=new TextareaDialog(b,mxResources.get("mermaid")+":",g.data,function(f){null!=f&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generateMermaidImage(f,g.config,function(e,l,k){b.spinner.stop();c.getModel().beginUpdate();try{c.setCellStyles("image",e,[d]);var m=c.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=Math.max(m.width,
@@ -11069,11 +11062,11 @@ c,d,f){this.remoteInvoke("searchDiagrams",[b,f],null,c,d)}):null,mxUtils.bind(th
l.callback?k.postMessage(JSON.stringify({event:"template",xml:c,blank:c==this.emptyDiagramXml,name:d,tempUrl:f,libs:e,builtIn:!0,message:l}),"*"):(b(c,g,c!=this.emptyDiagramXml,l.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,u?mxUtils.bind(this,function(b){this.remoteInvoke("getRecentDiagrams",[null],null,b,function(){b(null,"Network Error!")})}):null,v?mxUtils.bind(this,function(b,c){this.remoteInvoke("searchDiagrams",[b,null],null,c,function(){c(null,
"Network Error!")})}):null,mxUtils.bind(this,function(b,c,d){k.postMessage(JSON.stringify({event:"template",docUrl:b,info:c,name:d}),"*")}),null,null,E?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},0)})}):null,1==l.withoutType);this.showDialog(q.container,620,460,!0,!1,mxUtils.bind(this,function(b){this.sidebar.hideTooltip();b&&this.actions.get("exit").funct()}));q.init();return}if("textContent"==l.action){var L=this.getDiagramTextContent();k.postMessage(JSON.stringify({event:"textContent",
data:L,message:l}),"*");return}if("status"==l.action){null!=l.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(l.messageKey))):null!=l.message&&this.editor.setStatus(mxUtils.htmlEntities(l.message));null!=l.modified&&(this.editor.modified=l.modified);return}if("spinner"==l.action){var M=null!=l.messageKey?mxResources.get(l.messageKey):l.message;null==l.show||l.show?this.spinner.spin(document.body,M):this.spinner.stop();return}if("exit"==l.action){this.actions.get("exit").funct();
-return}if("viewport"==l.action){null!=l.viewport&&(this.embedViewport=l.viewport);return}if("snapshot"==l.action){this.sendEmbeddedSvgExport(!0);return}if("export"==l.action){if("png"==l.format||"xmlpng"==l.format){if(null==l.spin&&null==l.spinKey||this.spinner.spin(document.body,null!=l.spinKey?mxResources.get(l.spinKey):l.spin)){var N=null!=l.xml?l.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var O=this.editor.graph,K=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();
-var c=this.createLoadMessage("export");c.format=l.format;c.message=l;c.data=b;c.xml=N;k.postMessage(JSON.stringify(c),"*")}),T=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==l.format&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(N)));O!=this.editor.graph&&O.container.parentNode.removeChild(O.container);K(b)}),J=l.pageId||(null!=this.pages?l.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var U=mxUtils.bind(this,
-function(){if(null!=this.pages&&this.currentPage.getId()!=J){var b=O.getGlobalVariable;O=this.createTemporaryGraph(O.getStylesheet());for(var c,d=0;d<this.pages.length;d++)if(this.pages[d].getId()==J){c=this.updatePageRoot(this.pages[d]);break}null==c&&(c=this.currentPage);O.getGlobalVariable=function(d){return"page"==d?c.getName():"pagenumber"==d?1:b.apply(this,arguments)};document.body.appendChild(O.container);O.model.setRoot(c.root)}if(null!=l.layerIds){for(var f=O.model,e=f.getChildCells(f.getRoot()),
+return}if("viewport"==l.action){null!=l.viewport&&(this.embedViewport=l.viewport);return}if("snapshot"==l.action){this.sendEmbeddedSvgExport(!0);return}if("export"==l.action){if("png"==l.format||"xmlpng"==l.format){if(null==l.spin&&null==l.spinKey||this.spinner.spin(document.body,null!=l.spinKey?mxResources.get(l.spinKey):l.spin)){var N=null!=l.xml?l.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var O=this.editor.graph,J=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();
+var c=this.createLoadMessage("export");c.format=l.format;c.message=l;c.data=b;c.xml=N;k.postMessage(JSON.stringify(c),"*")}),T=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==l.format&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(N)));O!=this.editor.graph&&O.container.parentNode.removeChild(O.container);J(b)}),K=l.pageId||(null!=this.pages?l.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var U=mxUtils.bind(this,
+function(){if(null!=this.pages&&this.currentPage.getId()!=K){var b=O.getGlobalVariable;O=this.createTemporaryGraph(O.getStylesheet());for(var c,d=0;d<this.pages.length;d++)if(this.pages[d].getId()==K){c=this.updatePageRoot(this.pages[d]);break}null==c&&(c=this.currentPage);O.getGlobalVariable=function(d){return"page"==d?c.getName():"pagenumber"==d?1:b.apply(this,arguments)};document.body.appendChild(O.container);O.model.setRoot(c.root)}if(null!=l.layerIds){for(var f=O.model,e=f.getChildCells(f.getRoot()),
g={},d=0;d<l.layerIds.length;d++)g[l.layerIds[d]]=!0;for(d=0;d<e.length;d++)f.setVisible(e[d],g[e[d].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){T(b.toDataURL("image/png"))}),l.width,null,l.background,mxUtils.bind(this,function(){T(null)}),null,null,l.scale,l.transparent,l.shadow,null,O,l.border,null,l.grid,l.keepTheme)});null!=l.xml&&0<l.xml.length?(d=!0,this.setFileData(N),d=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(U)},0):U()):
-U()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==l.format?"1":"0")+(null!=J?"&pageId="+J:"")+(null!=l.layerIds&&0<l.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:l.layerIds})):"")+(null!=l.scale?"&scale="+l.scale:"")+"&base64=1&xml="+encodeURIComponent(N))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?K("data:image/png;base64,"+b.getText()):T(null)}),mxUtils.bind(this,function(){T(null)}))}}else U=mxUtils.bind(this,function(){var b=
+U()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==l.format?"1":"0")+(null!=K?"&pageId="+K:"")+(null!=l.layerIds&&0<l.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:l.layerIds})):"")+(null!=l.scale?"&scale="+l.scale:"")+"&base64=1&xml="+encodeURIComponent(N))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?J("data:image/png;base64,"+b.getText()):T(null)}),mxUtils.bind(this,function(){T(null)}))}}else U=mxUtils.bind(this,function(){var b=
this.createLoadMessage("export");b.message=l;if("html2"==l.format||"html"==l.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var c=this.getXmlFileData();b.xml=mxUtils.getXml(c);b.data=this.getFileData(null,null,!0,null,null,null,c);b.format=l.format}else if("html"==l.format)c=this.editor.getGraphXml(),b.data=this.getHtml(c,this.editor.graph),b.xml=mxUtils.getXml(c),b.format=l.format;else{mxSvgCanvas2D.prototype.foAltText=null;c=null!=l.background?l.background:this.editor.graph.background;
c==mxConstants.NONE&&(c=null);b.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);b.format="svg";var d=mxUtils.bind(this,function(c){this.editor.graph.setEnabled(!0);this.spinner.stop();b.data=Editor.createSvgDataUri(c);k.postMessage(JSON.stringify(b),"*")});if("xmlsvg"==l.format)(null==l.spin&&null==l.spinKey||this.spinner.spin(document.body,null!=l.spinKey?mxResources.get(l.spinKey):l.spin))&&this.getEmbeddedSvg(b.xml,this.editor.graph,null,!0,d,null,null,l.embedImages,c,l.scale,
l.border,l.shadow,l.keepTheme);else if(null==l.spin&&null==l.spinKey||this.spinner.spin(document.body,null!=l.spinKey?mxResources.get(l.spinKey):l.spin))this.editor.graph.setEnabled(!1),c=this.editor.graph.getSvg(c,l.scale,l.border,null,null,null,null,null,null,this.editor.graph.shadowVisible||l.shadow,null,l.keepTheme),(this.editor.graph.shadowVisible||l.shadow)&&this.editor.graph.addSvgShadow(c),this.embedFonts(c,mxUtils.bind(this,function(b){l.embedImages||null==l.embedImages?this.editor.convertImages(b,
@@ -11092,60 +11085,60 @@ urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";k.postMe
mxResources.get("save")),c.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),b.appendChild(c),"1"==urlParams.saveAndExit&&(c=document.createElement("a"),mxUtils.write(c,mxResources.get("saveAndExit")),c.setAttribute("title",mxResources.get("saveAndExit")),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),
b.appendChild(c),d=c);"1"!=urlParams.noExitBtn&&(c=document.createElement("a"),d="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(c,d),c.setAttribute("title",d),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),b.appendChild(c),d=c);d.style.marginRight="20px";this.toolbar.container.appendChild(b);this.toolbar.staticElements.push(b);b.style.right=
"atlas"==uiTheme||"1"==urlParams.atlas?"42px":"52px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(b){this.importCsv(b)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};
-EditorUi.prototype.executeLayoutList=function(b,c){for(var d=this.editor.graph,f=d.getSelectionCells(),e=0;e<b.length;e++){var g=new window[b[e].layout](d);if(null!=b[e].config)for(var l in b[e].config)g[l]=b[e].config[l];this.executeLayout(function(){g.execute(d.getDefaultParent(),0==f.length?null:f)},e==b.length-1,c)}};EditorUi.prototype.importCsv=function(b,c){try{var d=b.split("\n"),f=[],e=[],g=[],l={};if(0<d.length){var k={},n=null,A=null,z=null,B=null,y=null,C=null,G="whiteSpace=wrap;html=1;",
-F=null,D=null,E="",H="auto",I="auto",L=null,M=null,N=40,O=40,K=100,T=0,J=this.editor.graph;J.getGraphBounds();for(var U=function(){null!=c?c(la):(J.setSelectionCells(la),J.scrollCellToVisible(J.getSelectionCell()))},P=J.getFreeInsertPoint(),S=P.x,Y=P.y,P=Y,ka=null,aa="auto",D=null,ba=[],na=null,pa=null,fa=0;fa<d.length&&"#"==d[fa].charAt(0);){b=d[fa];for(fa++;fa<d.length&&"\\"==b.charAt(b.length-1)&&"#"==d[fa].charAt(0);)b=b.substring(0,b.length-1)+mxUtils.trim(d[fa].substring(1)),fa++;if("#"!=b.charAt(1)){var ca=
-b.indexOf(":");if(0<ca){var Q=mxUtils.trim(b.substring(1,ca)),V=mxUtils.trim(b.substring(ca+1));"label"==Q?ka=J.sanitizeHtml(V):"labelname"==Q&&0<V.length&&"-"!=V?y=V:"labels"==Q&&0<V.length&&"-"!=V?C=JSON.parse(V):"style"==Q?A=V:"parentstyle"==Q?G=V:"stylename"==Q&&0<V.length&&"-"!=V?B=V:"styles"==Q&&0<V.length&&"-"!=V?z=JSON.parse(V):"vars"==Q&&0<V.length&&"-"!=V?n=JSON.parse(V):"identity"==Q&&0<V.length&&"-"!=V?F=V:"parent"==Q&&0<V.length&&"-"!=V?D=V:"namespace"==Q&&0<V.length&&"-"!=V?E=V:"width"==
-Q?H=V:"height"==Q?I=V:"left"==Q&&0<V.length?L=V:"top"==Q&&0<V.length?M=V:"ignore"==Q?pa=V.split(","):"connect"==Q?ba.push(JSON.parse(V)):"link"==Q?na=V:"padding"==Q?T=parseFloat(V):"edgespacing"==Q?N=parseFloat(V):"nodespacing"==Q?O=parseFloat(V):"levelspacing"==Q?K=parseFloat(V):"layout"==Q&&(aa=V)}}}if(null==d[fa])throw Error(mxResources.get("invalidOrMissingFile"));for(var ia=this.editor.csvToArray(d[fa]),Q=ca=null,V=[],W=0;W<ia.length;W++)F==ia[W]&&(ca=W),D==ia[W]&&(Q=W),V.push(mxUtils.trim(ia[W]).replace(/[^a-z0-9]+/ig,
-"_").replace(/^\d+/,"").replace(/_+$/,""));null==ka&&(ka="%"+V[0]+"%");if(null!=ba)for(var Z=0;Z<ba.length;Z++)null==k[ba[Z].to]&&(k[ba[Z].to]={});F=[];for(W=fa+1;W<d.length;W++){var ha=this.editor.csvToArray(d[W]);if(null==ha){var ra=40<d[W].length?d[W].substring(0,40)+"...":d[W];throw Error(ra+" ("+W+"):\n"+mxResources.get("containsValidationErrors"));}0<ha.length&&F.push(ha)}J.model.beginUpdate();try{for(W=0;W<F.length;W++){var ha=F[W],X=null,ea=null!=ca?E+ha[ca]:null;null!=ea&&(X=J.model.getCell(ea));
-var d=null!=X,ga=new mxCell(ka,new mxGeometry(S,P,0,0),A||"whiteSpace=wrap;html=1;");ga.vertex=!0;ga.id=ea;for(var ja=0;ja<ha.length;ja++)J.setAttributeForCell(ga,V[ja],ha[ja]);if(null!=y&&null!=C){var oa=C[ga.getAttribute(y)];null!=oa&&J.labelChanged(ga,oa)}if(null!=B&&null!=z){var ua=z[ga.getAttribute(B)];null!=ua&&(ga.style=ua)}J.setAttributeForCell(ga,"placeholders","1");ga.style=J.replacePlaceholders(ga,ga.style,n);d?(J.model.setValue(X,ga.value),J.model.setStyle(X,ga.style),0>mxUtils.indexOf(g,
-X)&&g.push(X),J.fireEvent(new mxEventObject("cellsInserted","cells",[X]))):J.fireEvent(new mxEventObject("cellsInserted","cells",[ga]));X=ga;if(!d)for(Z=0;Z<ba.length;Z++)k[ba[Z].to][X.getAttribute(ba[Z].to)]=X;null!=na&&"link"!=na&&(J.setLinkForCell(X,X.getAttribute(na)),J.setAttributeForCell(X,na,null));var R=this.editor.graph.getPreferredSizeForCell(X),D=null!=Q?J.model.getCell(E+ha[Q]):null;if(X.vertex){ra=null!=D?0:S;fa=null!=D?0:Y;null!=L&&null!=X.getAttribute(L)&&(X.geometry.x=ra+parseFloat(X.getAttribute(L)));
-null!=M&&null!=X.getAttribute(M)&&(X.geometry.y=fa+parseFloat(X.getAttribute(M)));var da="@"==H.charAt(0)?X.getAttribute(H.substring(1)):null;X.geometry.width=null!=da&&"auto"!=da?parseFloat(X.getAttribute(H.substring(1))):"auto"==H||"auto"==da?R.width+T:parseFloat(H);var ma="@"==I.charAt(0)?X.getAttribute(I.substring(1)):null;X.geometry.height=null!=ma&&"auto"!=ma?parseFloat(ma):"auto"==I||"auto"==ma?R.height+T:parseFloat(I);P+=X.geometry.height+O}d?(null==l[ea]&&(l[ea]=[]),l[ea].push(X)):(f.push(X),
-null!=D?(D.style=J.replacePlaceholders(D,G,n),J.addCell(X,D),e.push(D)):g.push(J.addCell(X)))}for(W=0;W<e.length;W++)da="@"==H.charAt(0)?e[W].getAttribute(H.substring(1)):null,ma="@"==I.charAt(0)?e[W].getAttribute(I.substring(1)):null,"auto"!=H&&"auto"!=da||"auto"!=I&&"auto"!=ma||J.updateGroupBounds([e[W]],T,!0);for(var sa=g.slice(),la=g.slice(),Z=0;Z<ba.length;Z++)for(var qa=ba[Z],W=0;W<f.length;W++){var X=f[W],ta=mxUtils.bind(this,function(b,c,d){var f=c.getAttribute(d.from);if(null!=f&&""!=f)for(var f=
-f.split(","),e=0;e<f.length;e++){var g=k[d.to][f[e]];if(null!=g){var l=d.label;null!=d.fromlabel&&(l=(c.getAttribute(d.fromlabel)||"")+(l||""));null!=d.sourcelabel&&(l=J.replacePlaceholders(c,d.sourcelabel,n)+(l||""));null!=d.tolabel&&(l=(l||"")+(g.getAttribute(d.tolabel)||""));null!=d.targetlabel&&(l=(l||"")+J.replacePlaceholders(g,d.targetlabel,n));var m="target"==d.placeholders==!d.invert?g:b,m=null!=d.style?J.replacePlaceholders(m,d.style,n):J.createCurrentEdgeStyle(),l=J.insertEdge(null,null,
-l||"",d.invert?g:b,d.invert?b:g,m);if(null!=d.labels)for(m=0;m<d.labels.length;m++){var p=d.labels[m],q=new mxCell(p.label||m,new mxGeometry(null!=p.x?p.x:0,null!=p.y?p.y:0,0,0),"resizable=0;html=1;");q.vertex=!0;q.connectable=!1;q.geometry.relative=!0;null!=p.placeholders&&(q.value=J.replacePlaceholders("target"==p.placeholders==!d.invert?g:b,q.value,n));if(null!=p.dx||null!=p.dy)q.geometry.offset=new mxPoint(null!=p.dx?p.dx:0,null!=p.dy?p.dy:0);l.insert(q)}la.push(l);mxUtils.remove(d.invert?b:g,
-sa)}}});ta(X,X,qa);if(null!=l[X.id])for(ja=0;ja<l[X.id].length;ja++)ta(X,l[X.id][ja],qa)}if(null!=pa)for(W=0;W<f.length;W++)for(X=f[W],ja=0;ja<pa.length;ja++)J.setAttributeForCell(X,mxUtils.trim(pa[ja]),null);if(0<g.length){var va=new mxParallelEdgeLayout(J);va.spacing=N;va.checkOverlap=!0;var xa=function(){0<va.spacing&&va.execute(J.getDefaultParent());for(var b=0;b<g.length;b++){var c=J.getCellGeometry(g[b]);c.x=Math.round(J.snap(c.x));c.y=Math.round(J.snap(c.y));"auto"==H&&(c.width=Math.round(J.snap(c.width)));
-"auto"==I&&(c.height=Math.round(J.snap(c.height)))}};if("["==aa.charAt(0)){var Ba=U;J.view.validate();this.executeLayoutList(JSON.parse(aa),function(){xa();Ba()});U=null}else if("circle"==aa){var wa=new mxCircleLayout(J);wa.disableEdgeStyle=!1;wa.resetEdges=!1;var za=wa.isVertexIgnored;wa.isVertexIgnored=function(b){return za.apply(this,arguments)||0>mxUtils.indexOf(g,b)};this.executeLayout(function(){wa.execute(J.getDefaultParent());xa()},!0,U);U=null}else if("horizontaltree"==aa||"verticaltree"==
-aa||"auto"==aa&&la.length==2*g.length-1&&1==sa.length){J.view.validate();var Ca=new mxCompactTreeLayout(J,"horizontaltree"==aa);Ca.levelDistance=O;Ca.edgeRouting=!1;Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(J.getDefaultParent(),0<sa.length?sa[0]:null)},!0,U);U=null}else if("horizontalflow"==aa||"verticalflow"==aa||"auto"==aa&&1==sa.length){J.view.validate();var ya=new mxHierarchicalLayout(J,"horizontalflow"==aa?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ya.intraCellSpacing=
-O;ya.parallelEdgeSpacing=N;ya.interRankCellSpacing=K;ya.disableEdgeStyle=!1;this.executeLayout(function(){ya.execute(J.getDefaultParent(),la);J.moveCells(la,S,Y)},!0,U);U=null}else if("organic"==aa||"auto"==aa&&la.length>g.length){J.view.validate();var Aa=new mxFastOrganicLayout(J);Aa.forceConstant=3*O;Aa.disableEdgeStyle=!1;Aa.resetEdges=!1;var Da=Aa.isVertexIgnored;Aa.isVertexIgnored=function(b){return Da.apply(this,arguments)||0>mxUtils.indexOf(g,b)};this.executeLayout(function(){Aa.execute(J.getDefaultParent());
-xa()},!0,U);U=null}}this.hideDialog()}finally{J.model.endUpdate()}null!=U&&U()}}catch(Ea){this.handleError(Ea)}};EditorUi.prototype.getSearch=function(b){var c="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=b&&0<window.location.search.length){var d="?",f;for(f in urlParams)0>mxUtils.indexOf(b,f)&&null!=urlParams[f]&&(c+=d+f+"="+urlParams[f],d="&")}else c=window.location.search;return c};EditorUi.prototype.getUrl=function(b){b=null!=b?b:window.location.pathname;var c=0<b.indexOf("?")?1:0;
-if("1"==urlParams.offline)b+=window.location.search;else{var d="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),f;for(f in urlParams)0>mxUtils.indexOf(d,f)&&(b=0==c?b+"?":b+"&",null!=urlParams[f]&&(b+=f+"="+urlParams[f],c++))}return b};EditorUi.prototype.showLinkDialog=function(b,c,d,e,g){b=new LinkDialog(this,b,c,d,!0,e,g);this.showDialog(b.container,560,130,!0,!0);b.init()};EditorUi.prototype.getServiceCount=function(b){var c=1;null==this.drive&&
+EditorUi.prototype.executeLayoutList=function(b,c){for(var d=this.editor.graph,e=d.getSelectionCells(),f=0;f<b.length;f++){var g=new window[b[f].layout](d);if(null!=b[f].config)for(var l in b[f].config)g[l]=b[f].config[l];this.executeLayout(function(){g.execute(d.getDefaultParent(),0==e.length?null:e)},f==b.length-1,c)}};EditorUi.prototype.importCsv=function(b,c){try{var d=b.split("\n"),e=[],f=[],g=[],l={};if(0<d.length){var k={},n=null,A=null,z=null,B=null,y=null,C=null,G="whiteSpace=wrap;html=1;",
+F=null,D=null,E="",H="auto",I="auto",L=null,M=null,N=40,O=40,J=100,T=0,K=this.editor.graph;K.getGraphBounds();for(var U=function(){null!=c?c(la):(K.setSelectionCells(la),K.scrollCellToVisible(K.getSelectionCell()))},P=K.getFreeInsertPoint(),S=P.x,Y=P.y,P=Y,ka=null,aa="auto",D=null,ba=[],na=null,pa=null,fa=0;fa<d.length&&"#"==d[fa].charAt(0);){b=d[fa];for(fa++;fa<d.length&&"\\"==b.charAt(b.length-1)&&"#"==d[fa].charAt(0);)b=b.substring(0,b.length-1)+mxUtils.trim(d[fa].substring(1)),fa++;if("#"!=b.charAt(1)){var ca=
+b.indexOf(":");if(0<ca){var Q=mxUtils.trim(b.substring(1,ca)),V=mxUtils.trim(b.substring(ca+1));"label"==Q?ka=K.sanitizeHtml(V):"labelname"==Q&&0<V.length&&"-"!=V?y=V:"labels"==Q&&0<V.length&&"-"!=V?C=JSON.parse(V):"style"==Q?A=V:"parentstyle"==Q?G=V:"stylename"==Q&&0<V.length&&"-"!=V?B=V:"styles"==Q&&0<V.length&&"-"!=V?z=JSON.parse(V):"vars"==Q&&0<V.length&&"-"!=V?n=JSON.parse(V):"identity"==Q&&0<V.length&&"-"!=V?F=V:"parent"==Q&&0<V.length&&"-"!=V?D=V:"namespace"==Q&&0<V.length&&"-"!=V?E=V:"width"==
+Q?H=V:"height"==Q?I=V:"left"==Q&&0<V.length?L=V:"top"==Q&&0<V.length?M=V:"ignore"==Q?pa=V.split(","):"connect"==Q?ba.push(JSON.parse(V)):"link"==Q?na=V:"padding"==Q?T=parseFloat(V):"edgespacing"==Q?N=parseFloat(V):"nodespacing"==Q?O=parseFloat(V):"levelspacing"==Q?J=parseFloat(V):"layout"==Q&&(aa=V)}}}if(null==d[fa])throw Error(mxResources.get("invalidOrMissingFile"));for(var ia=this.editor.csvToArray(d[fa]),Q=ca=null,V=[],W=0;W<ia.length;W++)F==ia[W]&&(ca=W),D==ia[W]&&(Q=W),V.push(mxUtils.trim(ia[W]).replace(/[^a-z0-9]+/ig,
+"_").replace(/^\d+/,"").replace(/_+$/,""));null==ka&&(ka="%"+V[0]+"%");if(null!=ba)for(var Z=0;Z<ba.length;Z++)null==k[ba[Z].to]&&(k[ba[Z].to]={});F=[];for(W=fa+1;W<d.length;W++){var ha=this.editor.csvToArray(d[W]);if(null==ha){var ra=40<d[W].length?d[W].substring(0,40)+"...":d[W];throw Error(ra+" ("+W+"):\n"+mxResources.get("containsValidationErrors"));}0<ha.length&&F.push(ha)}K.model.beginUpdate();try{for(W=0;W<F.length;W++){var ha=F[W],X=null,ea=null!=ca?E+ha[ca]:null;null!=ea&&(X=K.model.getCell(ea));
+var d=null!=X,ga=new mxCell(ka,new mxGeometry(S,P,0,0),A||"whiteSpace=wrap;html=1;");ga.vertex=!0;ga.id=ea;for(var ja=0;ja<ha.length;ja++)K.setAttributeForCell(ga,V[ja],ha[ja]);if(null!=y&&null!=C){var oa=C[ga.getAttribute(y)];null!=oa&&K.labelChanged(ga,oa)}if(null!=B&&null!=z){var ua=z[ga.getAttribute(B)];null!=ua&&(ga.style=ua)}K.setAttributeForCell(ga,"placeholders","1");ga.style=K.replacePlaceholders(ga,ga.style,n);d?(K.model.setValue(X,ga.value),K.model.setStyle(X,ga.style),0>mxUtils.indexOf(g,
+X)&&g.push(X),K.fireEvent(new mxEventObject("cellsInserted","cells",[X]))):K.fireEvent(new mxEventObject("cellsInserted","cells",[ga]));X=ga;if(!d)for(Z=0;Z<ba.length;Z++)k[ba[Z].to][X.getAttribute(ba[Z].to)]=X;null!=na&&"link"!=na&&(K.setLinkForCell(X,X.getAttribute(na)),K.setAttributeForCell(X,na,null));var R=this.editor.graph.getPreferredSizeForCell(X),D=null!=Q?K.model.getCell(E+ha[Q]):null;if(X.vertex){ra=null!=D?0:S;fa=null!=D?0:Y;null!=L&&null!=X.getAttribute(L)&&(X.geometry.x=ra+parseFloat(X.getAttribute(L)));
+null!=M&&null!=X.getAttribute(M)&&(X.geometry.y=fa+parseFloat(X.getAttribute(M)));var da="@"==H.charAt(0)?X.getAttribute(H.substring(1)):null;X.geometry.width=null!=da&&"auto"!=da?parseFloat(X.getAttribute(H.substring(1))):"auto"==H||"auto"==da?R.width+T:parseFloat(H);var ma="@"==I.charAt(0)?X.getAttribute(I.substring(1)):null;X.geometry.height=null!=ma&&"auto"!=ma?parseFloat(ma):"auto"==I||"auto"==ma?R.height+T:parseFloat(I);P+=X.geometry.height+O}d?(null==l[ea]&&(l[ea]=[]),l[ea].push(X)):(e.push(X),
+null!=D?(D.style=K.replacePlaceholders(D,G,n),K.addCell(X,D),f.push(D)):g.push(K.addCell(X)))}for(W=0;W<f.length;W++)da="@"==H.charAt(0)?f[W].getAttribute(H.substring(1)):null,ma="@"==I.charAt(0)?f[W].getAttribute(I.substring(1)):null,"auto"!=H&&"auto"!=da||"auto"!=I&&"auto"!=ma||K.updateGroupBounds([f[W]],T,!0);for(var sa=g.slice(),la=g.slice(),Z=0;Z<ba.length;Z++)for(var qa=ba[Z],W=0;W<e.length;W++){var X=e[W],ta=mxUtils.bind(this,function(b,c,d){var e=c.getAttribute(d.from);if(null!=e&&""!=e)for(var e=
+e.split(","),f=0;f<e.length;f++){var g=k[d.to][e[f]];if(null!=g){var l=d.label;null!=d.fromlabel&&(l=(c.getAttribute(d.fromlabel)||"")+(l||""));null!=d.sourcelabel&&(l=K.replacePlaceholders(c,d.sourcelabel,n)+(l||""));null!=d.tolabel&&(l=(l||"")+(g.getAttribute(d.tolabel)||""));null!=d.targetlabel&&(l=(l||"")+K.replacePlaceholders(g,d.targetlabel,n));var m="target"==d.placeholders==!d.invert?g:b,m=null!=d.style?K.replacePlaceholders(m,d.style,n):K.createCurrentEdgeStyle(),l=K.insertEdge(null,null,
+l||"",d.invert?g:b,d.invert?b:g,m);if(null!=d.labels)for(m=0;m<d.labels.length;m++){var p=d.labels[m],q=new mxCell(p.label||m,new mxGeometry(null!=p.x?p.x:0,null!=p.y?p.y:0,0,0),"resizable=0;html=1;");q.vertex=!0;q.connectable=!1;q.geometry.relative=!0;null!=p.placeholders&&(q.value=K.replacePlaceholders("target"==p.placeholders==!d.invert?g:b,q.value,n));if(null!=p.dx||null!=p.dy)q.geometry.offset=new mxPoint(null!=p.dx?p.dx:0,null!=p.dy?p.dy:0);l.insert(q)}la.push(l);mxUtils.remove(d.invert?b:g,
+sa)}}});ta(X,X,qa);if(null!=l[X.id])for(ja=0;ja<l[X.id].length;ja++)ta(X,l[X.id][ja],qa)}if(null!=pa)for(W=0;W<e.length;W++)for(X=e[W],ja=0;ja<pa.length;ja++)K.setAttributeForCell(X,mxUtils.trim(pa[ja]),null);if(0<g.length){var va=new mxParallelEdgeLayout(K);va.spacing=N;va.checkOverlap=!0;var xa=function(){0<va.spacing&&va.execute(K.getDefaultParent());for(var b=0;b<g.length;b++){var c=K.getCellGeometry(g[b]);c.x=Math.round(K.snap(c.x));c.y=Math.round(K.snap(c.y));"auto"==H&&(c.width=Math.round(K.snap(c.width)));
+"auto"==I&&(c.height=Math.round(K.snap(c.height)))}};if("["==aa.charAt(0)){var Ba=U;K.view.validate();this.executeLayoutList(JSON.parse(aa),function(){xa();Ba()});U=null}else if("circle"==aa){var wa=new mxCircleLayout(K);wa.disableEdgeStyle=!1;wa.resetEdges=!1;var za=wa.isVertexIgnored;wa.isVertexIgnored=function(b){return za.apply(this,arguments)||0>mxUtils.indexOf(g,b)};this.executeLayout(function(){wa.execute(K.getDefaultParent());xa()},!0,U);U=null}else if("horizontaltree"==aa||"verticaltree"==
+aa||"auto"==aa&&la.length==2*g.length-1&&1==sa.length){K.view.validate();var Ca=new mxCompactTreeLayout(K,"horizontaltree"==aa);Ca.levelDistance=O;Ca.edgeRouting=!1;Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(K.getDefaultParent(),0<sa.length?sa[0]:null)},!0,U);U=null}else if("horizontalflow"==aa||"verticalflow"==aa||"auto"==aa&&1==sa.length){K.view.validate();var ya=new mxHierarchicalLayout(K,"horizontalflow"==aa?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ya.intraCellSpacing=
+O;ya.parallelEdgeSpacing=N;ya.interRankCellSpacing=J;ya.disableEdgeStyle=!1;this.executeLayout(function(){ya.execute(K.getDefaultParent(),la);K.moveCells(la,S,Y)},!0,U);U=null}else if("organic"==aa||"auto"==aa&&la.length>g.length){K.view.validate();var Aa=new mxFastOrganicLayout(K);Aa.forceConstant=3*O;Aa.disableEdgeStyle=!1;Aa.resetEdges=!1;var Da=Aa.isVertexIgnored;Aa.isVertexIgnored=function(b){return Da.apply(this,arguments)||0>mxUtils.indexOf(g,b)};this.executeLayout(function(){Aa.execute(K.getDefaultParent());
+xa()},!0,U);U=null}}this.hideDialog()}finally{K.model.endUpdate()}null!=U&&U()}}catch(Ea){this.handleError(Ea)}};EditorUi.prototype.getSearch=function(b){var c="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=b&&0<window.location.search.length){var d="?",e;for(e in urlParams)0>mxUtils.indexOf(b,e)&&null!=urlParams[e]&&(c+=d+e+"="+urlParams[e],d="&")}else c=window.location.search;return c};EditorUi.prototype.getUrl=function(b){b=null!=b?b:window.location.pathname;var c=0<b.indexOf("?")?1:0;
+if("1"==urlParams.offline)b+=window.location.search;else{var d="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),e;for(e in urlParams)0>mxUtils.indexOf(d,e)&&(b=0==c?b+"?":b+"&",null!=urlParams[e]&&(b+=e+"="+urlParams[e],c++))}return b};EditorUi.prototype.showLinkDialog=function(b,c,d,e,g){b=new LinkDialog(this,b,c,d,!0,e,g);this.showDialog(b.container,560,130,!0,!0);b.init()};EditorUi.prototype.getServiceCount=function(b){var c=1;null==this.drive&&
"function"!==typeof window.DriveClient||c++;null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||c++;null!=this.gitHub&&c++;null!=this.gitLab&&c++;null!=this.notion&&c++;b&&isLocalStorage&&"1"==urlParams.browser&&c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var b=this.getCurrentFile(),c=null!=b||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(c);
this.menus.get("viewZoom").setEnabled(c);var d=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==b||b.isRestricted());this.actions.get("makeCopy").setEnabled(!d);this.actions.get("print").setEnabled(!d);this.menus.get("exportAs").setEnabled(!d);this.menus.get("embed").setEnabled(!d);d="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(d);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(d),this.menus.get("newLibrary").setEnabled(d));
b="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=b&&b.isEditable();this.actions.get("image").setEnabled(c);this.actions.get("zoomIn").setEnabled(c);this.actions.get("zoomOut").setEnabled(c);this.actions.get("resetView").setEnabled(c);this.actions.get("undo").setEnabled(this.canUndo()&&b);this.actions.get("redo").setEnabled(this.canRedo()&&b);this.menus.get("edit").setEnabled(c);this.menus.get("view").setEnabled(c);this.menus.get("importFrom").setEnabled(b);this.menus.get("arrange").setEnabled(b);
null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(b),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(b));this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var b=this.getCurrentFile();return null!=b&&b.isEditable()||
-"1"==urlParams.embed&&this.editor.graph.isEnabled()};var k=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){k.apply(this,arguments);var b=this.editor.graph,c=this.getCurrentFile(),d=this.isDiagramActive(),e=b.getEditableCells(b.getSelectionCells());this.actions.get("pageSetup").setEnabled(d);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(d);this.actions.get("editData").setEnabled(0<
-e.length||b.isSelectionEmpty());this.actions.get("shadowVisible").setEnabled(d);this.actions.get("connectionArrows").setEnabled(d);this.actions.get("connectionPoints").setEnabled(d);this.actions.get("copyStyle").setEnabled(d&&!b.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(d&&0<e.length);this.actions.get("editGeometry").setEnabled(0<e.length&&b.getModel().isVertex(e[0]));this.actions.get("createShape").setEnabled(d);this.actions.get("createRevision").setEnabled(d);this.actions.get("moveToFolder").setEnabled(null!=
-c);this.actions.get("makeCopy").setEnabled(null!=c&&!c.isRestricted());this.actions.get("editDiagram").setEnabled(d&&(null==c||!c.isRestricted()));this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=
-c&&c.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());c=this.actions.get("findReplace");c.setEnabled("hidden"!=this.diagramContainer.style.visibility);c.label=mxResources.get("find")+(b.isEnabled()?"/"+mxResources.get("replace"):"")+"...";b=b.view.getState(b.getSelectionCell());this.actions.get("editShape").setEnabled(d&&null!=b&&null!=b.shape&&null!=b.shape.stencil)};var n=EditorUi.prototype.destroy;
-EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);n.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(b,c,d,e,g,k,n,v){var f=b.editor.graph;if("xml"==d)b.hideDialog(),b.saveData(c,"xml",mxUtils.getXml(b.editor.getGraphXml()),"text/xml");else if("svg"==d)b.hideDialog(),b.saveData(c,"svg",mxUtils.getXml(f.getSvg(e,
-g,k)),"image/svg+xml");else{var l=b.getFileData(!0,null,null,null,null,!0),m=f.getGraphBounds(),p=Math.floor(m.width*g/f.view.scale),q=Math.floor(m.height*g/f.view.scale);if(l.length<=MAX_REQUEST_SIZE&&p*q<MAX_AREA)if(b.hideDialog(),"png"!=d&&"jpg"!=d&&"jpeg"!=d||!b.isExportToCanvas()){var t={globalVars:f.getExportVariables()};v&&(t.grid={size:f.gridSize,steps:f.view.gridSteps,color:f.view.gridColor});b.saveRequest(c,d,function(b,c){return new mxXmlRequest(EXPORT_URL,"format="+d+"&base64="+(c||"0")+
-(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(t))+(0<n?"&dpi="+n:"")+"&bg="+(null!=e?e:"none")+"&w="+p+"&h="+q+"&border="+k+"&xml="+encodeURIComponent(l))})}else"png"==d?b.exportImage(g,null==e||"none"==e,!0,!1,!1,k,!0,!1,null,v,n):b.exportImage(g,!1,!0,!1,!1,k,!0,!1,"jpeg",v);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var b=this.editor.graph,c="";if(null!=
-this.pages)for(var d=0;d<this.pages.length;d++){var e=b;this.currentPage!=this.pages[d]&&(e=this.createTemporaryGraph(b.getStylesheet()),this.updatePageRoot(this.pages[d]),e.model.setRoot(this.pages[d].root));c+=this.pages[d].getName()+" "+e.getIndexableText()+" "}else c=b.getIndexableText();this.editor.graph.setEnabled(!0);return c};EditorUi.prototype.showRemotelyStoredLibrary=function(b){var c={},d=document.createElement("div");d.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,
-mxUtils.htmlEntities(b));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(e);var f=document.createElement("div");f.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";f.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var g={};try{var k=mxSettings.getCustomLibraries();for(b=0;b<k.length;b++){var n=k[b];if("R"==n.substring(0,1)){var x=JSON.parse(decodeURIComponent(n.substring(1)));g[x[0]]=
-{id:x[0],title:x[1],downloadUrl:x[2]}}}}catch(A){}this.remoteInvoke("getCustomLibraries",null,null,function(b){f.innerHTML="";if(0==b.length)f.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var d=0;d<b.length;d++){var e=b[d];g[e.id]&&(c[e.id]=e);var l=this.addCheckbox(f,e.title,g[e.id]);(function(b,d){mxEvent.addListener(d,"change",function(){this.checked?c[b.id]=b:delete c[b.id]})})(e,l)}},mxUtils.bind(this,
-function(b){f.innerHTML="";var c=document.createElement("div");c.style.padding="8px";c.style.textAlign="center";mxUtils.write(c,mxResources.get("error")+": ");mxUtils.write(c,null!=b&&null!=b.message?b.message:mxResources.get("unknownError"));f.appendChild(c)}));d.appendChild(f);d=new CustomDialog(this,d,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var b=0,d;for(d in c)null==g[d]&&(b++,mxUtils.bind(this,function(c){this.remoteInvoke("getFileContent",[c.downloadUrl],
-null,mxUtils.bind(this,function(d){b--;0==b&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,d,c))}catch(C){this.handleError(C,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){b--;0==b&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(c[d]));for(d in g)c[d]||this.closeLibrary(new RemoteLibrary(this,null,g[d]));0==b&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(d.container,
-340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(b){this.remoteWin=b;for(var c=0;c<this.remoteInvokeQueue.length;c++)b.postMessage(this.remoteInvokeQueue[c],
-"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(b){var c=b.msgMarkers,d=this.remoteInvokeCallbacks[c.callbackId];if(null==d)throw Error("No callback for "+(null!=c?c.callbackId:"null"));b.error?d.error&&d.error(b.error.errResp):d.callback&&d.callback.apply(this,b.resp);this.remoteInvokeCallbacks[c.callbackId]=null};EditorUi.prototype.remoteInvoke=function(b,c,d,e,g){var f=!0,l=window.setTimeout(mxUtils.bind(this,function(){f=!1;g({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),
-this.timeout),k=mxUtils.bind(this,function(){window.clearTimeout(l);f&&e.apply(this,arguments)}),m=mxUtils.bind(this,function(){window.clearTimeout(l);f&&g.apply(this,arguments)});d=d||{};d.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:k,error:m});b=JSON.stringify({event:"remoteInvoke",funtionName:b,functionArgs:c,msgMarkers:d});null!=this.remoteWin?this.remoteWin.postMessage(b,"*"):this.remoteInvokeQueue.push(b)};EditorUi.prototype.handleRemoteInvoke=function(b,
-c){var d=mxUtils.bind(this,function(c,d){var e={event:"remoteInvokeResponse",msgMarkers:b.msgMarkers};null!=d?e.error={errResp:d}:null!=c&&(e.resp=c);this.remoteWin.postMessage(JSON.stringify(e),"*")});try{var e=b.funtionName,f=this.remoteInvokableFns[e];if(null!=f&&"function"===typeof this[e]){if(f.allowedDomains){for(var g=!1,l=0;l<f.allowedDomains.length;l++)if(c=="https://"+f.allowedDomains[l]){g=!0;break}if(!g){d(null,"Invalid Call: "+e+" is not allowed.");return}}var k=b.functionArgs;Array.isArray(k)||
-(k=[]);if(f.isAsync)k.push(function(){d(Array.prototype.slice.apply(arguments))}),k.push(function(b){d(null,b||"Unkown Error")}),this[e].apply(this,k);else{var n=this[e].apply(this,k);d([n])}}else d(null,"Invalid Call: "+e+" is not found.")}catch(A){d(null,"Invalid Call: An error occurred, "+A.message)}};EditorUi.prototype.openDatabase=function(b,c){if(null==this.database){var d=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=d)try{var e=d.open("database",2);e.onupgradeneeded=
-function(b){try{var d=e.result;1>b.oldVersion&&d.createObjectStore("objects",{keyPath:"key"});2>b.oldVersion&&(d.createObjectStore("files",{keyPath:"title"}),d.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(u){null!=c&&c(u)}};e.onsuccess=mxUtils.bind(this,function(c){var d=e.result;this.database=d;EditorUi.migrateStorageFiles&&(StorageFile.migrate(d),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||
-(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(b){if(!b||"1"==urlParams.forceMigration){var c=document.createElement("iframe");c.style.display="none";c.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(c);var d=!0,e=!1,f,g=0,l=mxUtils.bind(this,function(){e=!0;this.setDatabaseItem(".drawioMigrated3",!0);c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",
-funtionName:"setMigratedFlag"}),"*")}),k=mxUtils.bind(this,function(){g++;m()}),m=mxUtils.bind(this,function(){try{if(g>=f.length)l();else{var b=f[g];StorageFile.getFileContent(this,b,mxUtils.bind(this,function(d){null==d||".scratchpad"==b&&d==this.emptyLibraryXml?c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[b]}),"*"):k()}),k)}}catch(E){console.log(E)}}),n=mxUtils.bind(this,function(b){try{this.setDatabaseItem(null,[{title:b.title,
-size:b.data.length,lastModified:Date.now(),type:b.isLib?"L":"F"},{title:b.title,data:b.data}],k,k,["filesInfo","files"])}catch(E){console.log(E)}});b=mxUtils.bind(this,function(b){try{if(b.source==c.contentWindow){var g={};try{g=JSON.parse(b.data)}catch(H){}"init"==g.event?(c.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=g.event||e||
-(d?null!=g.resp&&0<g.resp.length&&null!=g.resp[0]?(f=g.resp[0],d=!1,m()):l():null!=g.resp&&0<g.resp.length&&null!=g.resp[0]?n(g.resp[0]):k())}}catch(H){console.log(H)}});window.addEventListener("message",b)}})));b(d);d.onversionchange=function(){d.close()}});e.onerror=c;e.onblocked=function(){}}catch(q){null!=c&&c(q)}else null!=c&&c()}else b(this.database)};EditorUi.prototype.setDatabaseItem=function(b,c,d,e,g){this.openDatabase(mxUtils.bind(this,function(f){try{g=g||"objects";Array.isArray(g)||(g=
-[g],b=[b],c=[c]);var l=f.transaction(g,"readwrite");l.oncomplete=d;l.onerror=e;for(f=0;f<g.length;f++)l.objectStore(g[f]).put(null!=b&&null!=b[f]?{key:b[f],data:c[f]}:c[f])}catch(v){null!=e&&e(v)}}),e)};EditorUi.prototype.removeDatabaseItem=function(b,c,d,e){this.openDatabase(mxUtils.bind(this,function(f){e=e||"objects";Array.isArray(e)||(e=[e],b=[b]);f=f.transaction(e,"readwrite");f.oncomplete=c;f.onerror=d;for(var g=0;g<e.length;g++)f.objectStore(e[g])["delete"](b[g])}),d)};EditorUi.prototype.getDatabaseItem=
-function(b,c,d,e){this.openDatabase(mxUtils.bind(this,function(f){try{e=e||"objects";var g=f.transaction([e],"readonly").objectStore(e).get(b);g.onsuccess=function(){c(g.result)};g.onerror=d}catch(u){null!=d&&d(u)}}),d)};EditorUi.prototype.getDatabaseItems=function(b,c,d){this.openDatabase(mxUtils.bind(this,function(e){try{d=d||"objects";var f=e.transaction([d],"readonly").objectStore(d).openCursor(IDBKeyRange.lowerBound(0)),g=[];f.onsuccess=function(c){null==c.target.result?b(g):(g.push(c.target.result.value),
-c.target.result["continue"]())};f.onerror=c}catch(u){null!=c&&c(u)}}),c)};EditorUi.prototype.getDatabaseItemKeys=function(b,c,d){this.openDatabase(mxUtils.bind(this,function(e){try{d=d||"objects";var f=e.transaction([d],"readonly").objectStore(d).getAllKeys();f.onsuccess=function(){b(f.result)};f.onerror=c}catch(t){null!=c&&c(t)}}),c)};EditorUi.prototype.commentsSupported=function(){var b=this.getCurrentFile();return null!=b?b.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var b=
-this.getCurrentFile();return null!=b?b.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var b=this.getCurrentFile();return null!=b?b.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(b,c){var d=this.getCurrentFile();null!=d?d.getComments(b,c):b([])};EditorUi.prototype.addComment=function(b,c,d){var e=this.getCurrentFile();null!=e?e.addComment(b,c,d):c(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var b=this.getCurrentFile();return null!=b?
-b.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var b=this.getCurrentFile();return null!=b?b.canComment():!0};EditorUi.prototype.newComment=function(b,c){var d=this.getCurrentFile();return null!=d?d.newComment(b,c):new DrawioComment(this,null,b,Date.now(),Date.now(),!1,c)};EditorUi.prototype.isRevisionHistorySupported=function(){var b=this.getCurrentFile();return null!=b&&b.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(b,c){var d=this.getCurrentFile();null!=
-d&&d.getRevisions?d.getRevisions(b,c):c({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var b=this.getCurrentFile();return null!=b&&(b.constructor==DriveFile&&b.isEditable()||b.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(b){b.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(b,c,d,e,g,k,n,v){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");
-return this.editor.loadUrl(b,c,d,e,g,k,n,v)};EditorUi.prototype.loadFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(b)};EditorUi.prototype.createSvgDataUri=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(b)};EditorUi.prototype.embedCssFonts=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(b,c)};EditorUi.prototype.embedExtFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");
-return this.editor.embedExtFonts(b)};EditorUi.prototype.exportToCanvas=function(b,c,d,e,g,k,n,v,x,A,z,B,y,C,G,F){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(b,c,d,e,g,k,n,v,x,A,z,B,y,C,G,F)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(b,c,d,e){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");
-return this.editor.convertImages(b,c,d,e)};EditorUi.prototype.convertImageToDataUri=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(b,c)};EditorUi.prototype.base64Encode=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(b)};EditorUi.prototype.updateCRC=function(b,c,d,e){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(b,c,d,e)};EditorUi.prototype.crc32=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");
-return Editor.crc32(b)};EditorUi.prototype.writeGraphModelToPng=function(b,c,d,e,g){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(b,c,d,e,g)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var b=[],c=0;c<localStorage.length;c++){var d=localStorage.key(c),e=localStorage.getItem(d);if(0<d.length&&(".scratchpad"==d||"."!=d.charAt(0))&&0<e.length){var g=
-"<mxfile "===e.substring(0,8)||"<?xml"===e.substring(0,5)||"\x3c!--[if IE]>"===e.substring(0,12),e="<mxlibrary>"===e.substring(0,11);(g||e)&&b.push(d)}}return b};EditorUi.prototype.getLocalStorageFile=function(b){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var c=localStorage.getItem(b);return{title:b,data:c,isLib:"<mxlibrary>"===c.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
+"1"==urlParams.embed&&this.editor.graph.isEnabled()};var k=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){k.apply(this,arguments);var b=this.editor.graph,c=this.getCurrentFile(),d=this.getSelectionState(),e=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(e);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(e);this.actions.get("editData").setEnabled(b.isEnabled());this.actions.get("shadowVisible").setEnabled(e);
+this.actions.get("connectionArrows").setEnabled(e);this.actions.get("connectionPoints").setEnabled(e);this.actions.get("copyStyle").setEnabled(e&&!b.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(e&&0<d.cells.length);this.actions.get("editGeometry").setEnabled(0<d.vertices.length);this.actions.get("createShape").setEnabled(e);this.actions.get("createRevision").setEnabled(e);this.actions.get("moveToFolder").setEnabled(null!=c);this.actions.get("makeCopy").setEnabled(null!=c&&!c.isRestricted());
+this.actions.get("editDiagram").setEnabled(e&&(null==c||!c.isRestricted()));this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=c&&c.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=
+c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());c=this.actions.get("findReplace");c.setEnabled("hidden"!=this.diagramContainer.style.visibility);c.label=mxResources.get("find")+(b.isEnabled()?"/"+mxResources.get("replace"):"")+"...";b=b.view.getState(b.getSelectionCell());this.actions.get("editShape").setEnabled(e&&null!=b&&null!=b.shape&&null!=b.shape.stencil)};var n=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),
+this.exportDialog=null);n.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(b,c,d,e,g,k,n,v){var f=b.editor.graph;if("xml"==d)b.hideDialog(),b.saveData(c,"xml",mxUtils.getXml(b.editor.getGraphXml()),"text/xml");else if("svg"==d)b.hideDialog(),b.saveData(c,"svg",mxUtils.getXml(f.getSvg(e,g,k)),"image/svg+xml");else{var l=b.getFileData(!0,null,null,null,null,!0),m=f.getGraphBounds(),p=Math.floor(m.width*g/
+f.view.scale),q=Math.floor(m.height*g/f.view.scale);if(l.length<=MAX_REQUEST_SIZE&&p*q<MAX_AREA)if(b.hideDialog(),"png"!=d&&"jpg"!=d&&"jpeg"!=d||!b.isExportToCanvas()){var t={globalVars:f.getExportVariables()};v&&(t.grid={size:f.gridSize,steps:f.view.gridSteps,color:f.view.gridColor});b.saveRequest(c,d,function(b,c){return new mxXmlRequest(EXPORT_URL,"format="+d+"&base64="+(c||"0")+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(t))+(0<n?"&dpi="+n:"")+
+"&bg="+(null!=e?e:"none")+"&w="+p+"&h="+q+"&border="+k+"&xml="+encodeURIComponent(l))})}else"png"==d?b.exportImage(g,null==e||"none"==e,!0,!1,!1,k,!0,!1,null,v,n):b.exportImage(g,!1,!0,!1,!1,k,!0,!1,"jpeg",v);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var b=this.editor.graph,c="";if(null!=this.pages)for(var d=0;d<this.pages.length;d++){var e=b;this.currentPage!=this.pages[d]&&(e=this.createTemporaryGraph(b.getStylesheet()),
+this.updatePageRoot(this.pages[d]),e.model.setRoot(this.pages[d].root));c+=this.pages[d].getName()+" "+e.getIndexableText()+" "}else c=b.getIndexableText();this.editor.graph.setEnabled(!0);return c};EditorUi.prototype.showRemotelyStoredLibrary=function(b){var c={},d=document.createElement("div");d.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxUtils.htmlEntities(b));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(e);var f=
+document.createElement("div");f.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";f.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var g={};try{var k=mxSettings.getCustomLibraries();for(b=0;b<k.length;b++){var n=k[b];if("R"==n.substring(0,1)){var x=JSON.parse(decodeURIComponent(n.substring(1)));g[x[0]]={id:x[0],title:x[1],downloadUrl:x[2]}}}}catch(A){}this.remoteInvoke("getCustomLibraries",null,null,function(b){f.innerHTML="";
+if(0==b.length)f.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var d=0;d<b.length;d++){var e=b[d];g[e.id]&&(c[e.id]=e);var l=this.addCheckbox(f,e.title,g[e.id]);(function(b,d){mxEvent.addListener(d,"change",function(){this.checked?c[b.id]=b:delete c[b.id]})})(e,l)}},mxUtils.bind(this,function(b){f.innerHTML="";var c=document.createElement("div");c.style.padding="8px";c.style.textAlign="center";mxUtils.write(c,
+mxResources.get("error")+": ");mxUtils.write(c,null!=b&&null!=b.message?b.message:mxResources.get("unknownError"));f.appendChild(c)}));d.appendChild(f);d=new CustomDialog(this,d,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var b=0,d;for(d in c)null==g[d]&&(b++,mxUtils.bind(this,function(c){this.remoteInvoke("getFileContent",[c.downloadUrl],null,mxUtils.bind(this,function(d){b--;0==b&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,d,c))}catch(C){this.handleError(C,
+mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){b--;0==b&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(c[d]));for(d in g)c[d]||this.closeLibrary(new RemoteLibrary(this,null,g[d]));0==b&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(d.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,
+allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(b){this.remoteWin=b;for(var c=0;c<this.remoteInvokeQueue.length;c++)b.postMessage(this.remoteInvokeQueue[c],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(b){var c=
+b.msgMarkers,d=this.remoteInvokeCallbacks[c.callbackId];if(null==d)throw Error("No callback for "+(null!=c?c.callbackId:"null"));b.error?d.error&&d.error(b.error.errResp):d.callback&&d.callback.apply(this,b.resp);this.remoteInvokeCallbacks[c.callbackId]=null};EditorUi.prototype.remoteInvoke=function(b,c,d,e,g){var f=!0,l=window.setTimeout(mxUtils.bind(this,function(){f=!1;g({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),k=mxUtils.bind(this,function(){window.clearTimeout(l);
+f&&e.apply(this,arguments)}),m=mxUtils.bind(this,function(){window.clearTimeout(l);f&&g.apply(this,arguments)});d=d||{};d.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:k,error:m});b=JSON.stringify({event:"remoteInvoke",funtionName:b,functionArgs:c,msgMarkers:d});null!=this.remoteWin?this.remoteWin.postMessage(b,"*"):this.remoteInvokeQueue.push(b)};EditorUi.prototype.handleRemoteInvoke=function(b,c){var d=mxUtils.bind(this,function(c,d){var e={event:"remoteInvokeResponse",
+msgMarkers:b.msgMarkers};null!=d?e.error={errResp:d}:null!=c&&(e.resp=c);this.remoteWin.postMessage(JSON.stringify(e),"*")});try{var e=b.funtionName,f=this.remoteInvokableFns[e];if(null!=f&&"function"===typeof this[e]){if(f.allowedDomains){for(var g=!1,l=0;l<f.allowedDomains.length;l++)if(c=="https://"+f.allowedDomains[l]){g=!0;break}if(!g){d(null,"Invalid Call: "+e+" is not allowed.");return}}var k=b.functionArgs;Array.isArray(k)||(k=[]);if(f.isAsync)k.push(function(){d(Array.prototype.slice.apply(arguments))}),
+k.push(function(b){d(null,b||"Unkown Error")}),this[e].apply(this,k);else{var n=this[e].apply(this,k);d([n])}}else d(null,"Invalid Call: "+e+" is not found.")}catch(A){d(null,"Invalid Call: An error occurred, "+A.message)}};EditorUi.prototype.openDatabase=function(b,c){if(null==this.database){var d=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=d)try{var e=d.open("database",2);e.onupgradeneeded=function(b){try{var d=e.result;1>b.oldVersion&&d.createObjectStore("objects",{keyPath:"key"});
+2>b.oldVersion&&(d.createObjectStore("files",{keyPath:"title"}),d.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(u){null!=c&&c(u)}};e.onsuccess=mxUtils.bind(this,function(c){var d=e.result;this.database=d;EditorUi.migrateStorageFiles&&(StorageFile.migrate(d),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(b){if(!b||
+"1"==urlParams.forceMigration){var c=document.createElement("iframe");c.style.display="none";c.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(c);var d=!0,e=!1,f,g=0,l=mxUtils.bind(this,function(){e=!0;this.setDatabaseItem(".drawioMigrated3",!0);c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),k=mxUtils.bind(this,function(){g++;m()}),m=mxUtils.bind(this,function(){try{if(g>=
+f.length)l();else{var b=f[g];StorageFile.getFileContent(this,b,mxUtils.bind(this,function(d){null==d||".scratchpad"==b&&d==this.emptyLibraryXml?c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[b]}),"*"):k()}),k)}}catch(E){console.log(E)}}),n=mxUtils.bind(this,function(b){try{this.setDatabaseItem(null,[{title:b.title,size:b.data.length,lastModified:Date.now(),type:b.isLib?"L":"F"},{title:b.title,data:b.data}],k,k,["filesInfo","files"])}catch(E){console.log(E)}});
+b=mxUtils.bind(this,function(b){try{if(b.source==c.contentWindow){var g={};try{g=JSON.parse(b.data)}catch(H){}"init"==g.event?(c.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=g.event||e||(d?null!=g.resp&&0<g.resp.length&&null!=g.resp[0]?(f=g.resp[0],d=!1,m()):l():null!=g.resp&&0<g.resp.length&&null!=g.resp[0]?n(g.resp[0]):k())}}catch(H){console.log(H)}});
+window.addEventListener("message",b)}})));b(d);d.onversionchange=function(){d.close()}});e.onerror=c;e.onblocked=function(){}}catch(q){null!=c&&c(q)}else null!=c&&c()}else b(this.database)};EditorUi.prototype.setDatabaseItem=function(b,c,d,e,g){this.openDatabase(mxUtils.bind(this,function(f){try{g=g||"objects";Array.isArray(g)||(g=[g],b=[b],c=[c]);var k=f.transaction(g,"readwrite");k.oncomplete=d;k.onerror=e;for(f=0;f<g.length;f++)k.objectStore(g[f]).put(null!=b&&null!=b[f]?{key:b[f],data:c[f]}:c[f])}catch(v){null!=
+e&&e(v)}}),e)};EditorUi.prototype.removeDatabaseItem=function(b,c,d,e){this.openDatabase(mxUtils.bind(this,function(f){e=e||"objects";Array.isArray(e)||(e=[e],b=[b]);f=f.transaction(e,"readwrite");f.oncomplete=c;f.onerror=d;for(var g=0;g<e.length;g++)f.objectStore(e[g])["delete"](b[g])}),d)};EditorUi.prototype.getDatabaseItem=function(b,c,d,e){this.openDatabase(mxUtils.bind(this,function(f){try{e=e||"objects";var g=f.transaction([e],"readonly").objectStore(e).get(b);g.onsuccess=function(){c(g.result)};
+g.onerror=d}catch(u){null!=d&&d(u)}}),d)};EditorUi.prototype.getDatabaseItems=function(b,c,d){this.openDatabase(mxUtils.bind(this,function(e){try{d=d||"objects";var f=e.transaction([d],"readonly").objectStore(d).openCursor(IDBKeyRange.lowerBound(0)),g=[];f.onsuccess=function(c){null==c.target.result?b(g):(g.push(c.target.result.value),c.target.result["continue"]())};f.onerror=c}catch(u){null!=c&&c(u)}}),c)};EditorUi.prototype.getDatabaseItemKeys=function(b,c,d){this.openDatabase(mxUtils.bind(this,
+function(e){try{d=d||"objects";var f=e.transaction([d],"readonly").objectStore(d).getAllKeys();f.onsuccess=function(){b(f.result)};f.onerror=c}catch(t){null!=c&&c(t)}}),c)};EditorUi.prototype.commentsSupported=function(){var b=this.getCurrentFile();return null!=b?b.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var b=this.getCurrentFile();return null!=b?b.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var b=this.getCurrentFile();return null!=
+b?b.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(b,c){var d=this.getCurrentFile();null!=d?d.getComments(b,c):b([])};EditorUi.prototype.addComment=function(b,c,d){var e=this.getCurrentFile();null!=e?e.addComment(b,c,d):c(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var b=this.getCurrentFile();return null!=b?b.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var b=this.getCurrentFile();return null!=b?b.canComment():!0};EditorUi.prototype.newComment=
+function(b,c){var d=this.getCurrentFile();return null!=d?d.newComment(b,c):new DrawioComment(this,null,b,Date.now(),Date.now(),!1,c)};EditorUi.prototype.isRevisionHistorySupported=function(){var b=this.getCurrentFile();return null!=b&&b.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(b,c){var d=this.getCurrentFile();null!=d&&d.getRevisions?d.getRevisions(b,c):c({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var b=this.getCurrentFile();
+return null!=b&&(b.constructor==DriveFile&&b.isEditable()||b.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(b){b.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(b,c,d,e,g,k,n,v){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(b,c,d,e,g,k,n,v)};EditorUi.prototype.loadFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");
+return this.editor.loadFonts(b)};EditorUi.prototype.createSvgDataUri=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(b)};EditorUi.prototype.embedCssFonts=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(b,c)};EditorUi.prototype.embedExtFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(b)};EditorUi.prototype.exportToCanvas=function(b,
+c,d,e,g,k,n,v,x,A,z,B,y,C,G,F){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(b,c,d,e,g,k,n,v,x,A,z,B,y,C,G,F)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(b,c,d,e){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(b,c,d,e)};EditorUi.prototype.convertImageToDataUri=
+function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(b,c)};EditorUi.prototype.base64Encode=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(b)};EditorUi.prototype.updateCRC=function(b,c,d,e){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(b,c,d,e)};EditorUi.prototype.crc32=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(b)};
+EditorUi.prototype.writeGraphModelToPng=function(b,c,d,e,g){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(b,c,d,e,g)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var b=[],c=0;c<localStorage.length;c++){var d=localStorage.key(c),e=localStorage.getItem(d);if(0<d.length&&(".scratchpad"==d||"."!=d.charAt(0))&&0<e.length){var g="<mxfile "===
+e.substring(0,8)||"<?xml"===e.substring(0,5)||"\x3c!--[if IE]>"===e.substring(0,12),e="<mxlibrary>"===e.substring(0,11);(g||e)&&b.push(d)}}return b};EditorUi.prototype.getLocalStorageFile=function(b){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var c=localStorage.getItem(b);return{title:b,data:c,isLib:"<mxlibrary>"===c.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
var CommentsWindow=function(b,e,d,c,g,k){function n(){for(var b=B.getElementsByTagName("div"),c=0,d=0;d<b.length;d++)"none"!=b[d].style.display&&b[d].parentNode==B&&c++;y.style.display=0==c?"block":"none"}function f(b,c,d,e){function f(){c.removeChild(l);c.removeChild(m);k.style.display="block";g.style.display="block"}x={div:c,comment:b,saveCallback:d,deleteOnCancel:e};var g=c.querySelector(".geCommentTxt"),k=c.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className=
"geCommentEditTxtArea";l.style.minHeight=g.offsetHeight+"px";l.value=b.content;c.insertBefore(l,g);var m=document.createElement("div");m.className="geCommentEditBtns";var p=mxUtils.button(mxResources.get("cancel"),function(){e?(c.parentNode.removeChild(c),n()):f();x=null});p.className="geCommentEditBtn";m.appendChild(p);var y=mxUtils.button(mxResources.get("save"),function(){g.innerHTML="";b.content=l.value;mxUtils.write(g,b.content);f();d(b);x=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this,
function(b){mxEvent.isConsumed(b)||((mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b))&&13==b.keyCode?(y.click(),mxEvent.consume(b)):27==b.keyCode&&(p.click(),mxEvent.consume(b)))}));y.focus();y.className="geCommentEditBtn gePrimaryBtn";m.appendChild(y);c.insertBefore(m,g);k.style.display="none";g.style.display="none";l.focus()}function l(c,d){d.innerHTML="";var e=new Date(c.modifiedDate),f=b.timeSince(e);null==f&&(f=mxResources.get("lessThanAMinute"));mxUtils.write(d,mxResources.get("timeAgo",
@@ -11204,12 +11197,12 @@ b},getOpenCounter:function(){return mxSettings.settings.openCounter},setOpenCoun
Array.isArray(mxSettings.settings.customLibraries)||(mxSettings.settings.customLibraries=[]);0>mxUtils.indexOf(mxSettings.settings.customLibraries,b)&&("L.scratchpad"===b?mxSettings.settings.customLibraries.splice(0,0,b):mxSettings.settings.customLibraries.push(b));mxSettings.save()},removeCustomLibrary:function(b){mxSettings.load();mxUtils.remove(b,mxSettings.settings.customLibraries);mxSettings.save()},getCustomLibraries:function(){return mxSettings.settings.customLibraries},getPlugins:function(){return mxSettings.settings.plugins},
setPlugins:function(b){mxSettings.settings.plugins=b},getRecentColors:function(){return mxSettings.settings.recentColors},setRecentColors:function(b){mxSettings.settings.recentColors=b},getFormatWidth:function(){return parseInt(mxSettings.settings.formatWidth)},setFormatWidth:function(b){mxSettings.settings.formatWidth=b},isCreateTarget:function(){return mxSettings.settings.createTarget},setCreateTarget:function(b){mxSettings.settings.createTarget=b},getPageFormat:function(){return mxSettings.settings.pageFormat},
setPageFormat:function(b){mxSettings.settings.pageFormat=b},getUnit:function(){return mxSettings.settings.unit||mxConstants.POINTS},setUnit:function(b){mxSettings.settings.unit=b},isRulerOn:function(){return mxSettings.settings.isRulerOn},setRulerOn:function(b){mxSettings.settings.isRulerOn=b},getDefaults:function(){return{language:"",configVersion:Editor.configVersion,customFonts:[],libraries:Sidebar.prototype.defaultEntries,customLibraries:Editor.defaultCustomLibraries,plugins:[],recentColors:[],
-formatWidth:mxSettings.defaultFormatWidth,createTarget:"1"==urlParams.sketch,pageFormat:mxGraph.prototype.pageFormat,search:!0,showStartScreen:!0,gridColor:mxGraphView.prototype.defaultGridColor,darkGridColor:mxGraphView.prototype.defaultDarkGridColor,autosave:!0,resizeImages:null,openCounter:0,version:mxSettings.currentVersion,isNew:!0,unit:mxConstants.POINTS,isRulerOn:!1}},init:function(){mxSettings.settings=mxSettings.getDefaults()},save:function(){if(isLocalStorage&&"undefined"!==typeof JSON)try{delete mxSettings.settings.isNew,
-mxSettings.settings.version=mxSettings.currentVersion,localStorage.setItem(mxSettings.key,JSON.stringify(mxSettings.settings))}catch(b){}},load:function(){isLocalStorage&&"undefined"!==typeof JSON&&mxSettings.parse(localStorage.getItem(mxSettings.key));null==mxSettings.settings&&mxSettings.init()},parse:function(b){b=null!=b?JSON.parse(b):null;null==b||b.configVersion!=Editor.configVersion||null!=Editor.config&&Editor.config.override?(mxSettings.settings=null,mxSettings.init()):(mxSettings.settings=
-b,null==mxSettings.settings.plugins&&(mxSettings.settings.plugins=[]),null==mxSettings.settings.recentColors&&(mxSettings.settings.recentColors=[]),null==mxSettings.settings.customFonts&&(mxSettings.settings.customFonts=[]),null==mxSettings.settings.libraries&&(mxSettings.settings.libraries=Sidebar.prototype.defaultEntries),null==mxSettings.settings.customLibraries&&(mxSettings.settings.customLibraries=Editor.defaultCustomLibraries),null==mxSettings.settings.ui&&(mxSettings.settings.ui=""),null==
-mxSettings.settings.formatWidth&&(mxSettings.settings.formatWidth=mxSettings.defaultFormatWidth),null!=mxSettings.settings.lastAlert&&delete mxSettings.settings.lastAlert,null==mxSettings.settings.createTarget&&(mxSettings.settings.createTarget=!1),null==mxSettings.settings.pageFormat&&(mxSettings.settings.pageFormat=mxGraph.prototype.pageFormat),null==mxSettings.settings.search&&(mxSettings.settings.search=!0),null==mxSettings.settings.showStartScreen&&(mxSettings.settings.showStartScreen=!0),null==
-mxSettings.settings.gridColor&&(mxSettings.settings.gridColor=mxGraphView.prototype.defaultGridColor),null==mxSettings.settings.darkGridColor&&(mxSettings.settings.darkGridColor=mxGraphView.prototype.defaultDarkGridColor),null==mxSettings.settings.autosave&&(mxSettings.settings.autosave=!0),null!=mxSettings.settings.scratchpadSeen&&delete mxSettings.settings.scratchpadSeen)},clear:function(){isLocalStorage&&localStorage.removeItem(mxSettings.key)}};
-("undefined"==typeof mxLoadSettings||mxLoadSettings)&&mxSettings.load();DrawioFileSync=function(b){mxEventSource.call(this);this.lastActivity=new Date;this.clientId=Editor.guid();this.ui=b.ui;this.file=b;this.onlineListener=mxUtils.bind(this,function(){this.updateOnlineState();this.isConnected()&&this.fileChangedNotify()});mxEvent.addListener(window,"online",this.onlineListener);this.visibleListener=mxUtils.bind(this,function(){"hidden"==document.visibilityState?this.isConnected()&&this.stop():this.start()});mxEvent.addListener(document,"visibilitychange",this.visibleListener);
+formatWidth:mxSettings.defaultFormatWidth,createTarget:"1"==urlParams.sketch,pageFormat:mxGraph.prototype.pageFormat,search:!0,showStartScreen:!0,gridColor:mxGraphView.prototype.defaultGridColor,darkGridColor:mxGraphView.prototype.defaultDarkGridColor,autosave:!EditorUi.isElectronApp,resizeImages:null,openCounter:0,version:mxSettings.currentVersion,isNew:!0,unit:mxConstants.POINTS,isRulerOn:!1}},init:function(){mxSettings.settings=mxSettings.getDefaults()},save:function(){if(isLocalStorage&&"undefined"!==
+typeof JSON)try{delete mxSettings.settings.isNew,mxSettings.settings.version=mxSettings.currentVersion,localStorage.setItem(mxSettings.key,JSON.stringify(mxSettings.settings))}catch(b){}},load:function(){isLocalStorage&&"undefined"!==typeof JSON&&mxSettings.parse(localStorage.getItem(mxSettings.key));null==mxSettings.settings&&mxSettings.init()},parse:function(b){b=null!=b?JSON.parse(b):null;null==b||b.configVersion!=Editor.configVersion||null!=Editor.config&&Editor.config.override?(mxSettings.settings=
+null,mxSettings.init()):(mxSettings.settings=b,null==mxSettings.settings.plugins&&(mxSettings.settings.plugins=[]),null==mxSettings.settings.recentColors&&(mxSettings.settings.recentColors=[]),null==mxSettings.settings.customFonts&&(mxSettings.settings.customFonts=[]),null==mxSettings.settings.libraries&&(mxSettings.settings.libraries=Sidebar.prototype.defaultEntries),null==mxSettings.settings.customLibraries&&(mxSettings.settings.customLibraries=Editor.defaultCustomLibraries),null==mxSettings.settings.ui&&
+(mxSettings.settings.ui=""),null==mxSettings.settings.formatWidth&&(mxSettings.settings.formatWidth=mxSettings.defaultFormatWidth),null!=mxSettings.settings.lastAlert&&delete mxSettings.settings.lastAlert,null==mxSettings.settings.createTarget&&(mxSettings.settings.createTarget=!1),null==mxSettings.settings.pageFormat&&(mxSettings.settings.pageFormat=mxGraph.prototype.pageFormat),null==mxSettings.settings.search&&(mxSettings.settings.search=!0),null==mxSettings.settings.showStartScreen&&(mxSettings.settings.showStartScreen=
+!0),null==mxSettings.settings.gridColor&&(mxSettings.settings.gridColor=mxGraphView.prototype.defaultGridColor),null==mxSettings.settings.darkGridColor&&(mxSettings.settings.darkGridColor=mxGraphView.prototype.defaultDarkGridColor),null==mxSettings.settings.autosave?mxSettings.settings.autosave=!EditorUi.isElectronApp:EditorUi.isElectronApp&&null==localStorage.getItem("._autoSaveTrans_")&&(localStorage.setItem("._autoSaveTrans_","1"),mxSettings.settings.autosave=!1,mxSettings.save()),null!=mxSettings.settings.scratchpadSeen&&
+delete mxSettings.settings.scratchpadSeen)},clear:function(){isLocalStorage&&localStorage.removeItem(mxSettings.key)}};("undefined"==typeof mxLoadSettings||mxLoadSettings)&&mxSettings.load();DrawioFileSync=function(b){mxEventSource.call(this);this.lastActivity=new Date;this.clientId=Editor.guid();this.ui=b.ui;this.file=b;this.onlineListener=mxUtils.bind(this,function(){this.updateOnlineState();this.isConnected()&&this.fileChangedNotify()});mxEvent.addListener(window,"online",this.onlineListener);this.visibleListener=mxUtils.bind(this,function(){"hidden"==document.visibilityState?this.isConnected()&&this.stop():this.start()});mxEvent.addListener(document,"visibilitychange",this.visibleListener);
this.activityListener=mxUtils.bind(this,function(b){this.lastActivity=new Date;this.start()});mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.activityListener);mxEvent.addListener(document,"keypress",this.activityListener);mxEvent.addListener(window,"focus",this.activityListener);!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&(mxEvent.addListener(document,"touchstart",this.activityListener),mxEvent.addListener(document,"touchmove",this.activityListener));this.pusherErrorListener=
mxUtils.bind(this,function(b){null!=b.error&&null!=b.error.data&&4004===b.error.data.code&&EditorUi.logError("Error: Pusher Limit",null,this.file.getId())});this.connectionListener=mxUtils.bind(this,function(){this.updateOnlineState();this.updateStatus();if(this.isConnected())if(this.announced)this.fileChangedNotify();else{var b=this.file.getCurrentUser(),d={a:"join"};null!=b&&(d.name=encodeURIComponent(b.displayName),d.uid=b.id);mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&msg="+encodeURIComponent(this.objectToString(this.createMessage(d))));
this.file.stats.msgSent++;this.announced=!0}});this.changeListener=mxUtils.bind(this,function(b){this.file.stats.msgReceived++;this.lastActivity=new Date;if(this.enabled&&!this.file.inConflictState&&!this.file.redirectDialogShowing)try{var d=this.stringToObject(b);null!=d&&(EditorUi.debug("Sync.message",[this],d,b.length,"bytes"),d.v>DrawioFileSync.PROTOCOL?this.file.redirectToNewApp(mxUtils.bind(this,function(){})):d.v===DrawioFileSync.PROTOCOL&&null!=d.d&&this.handleMessageData(d.d))}catch(c){this.isConnected()&&
@@ -11582,7 +11575,7 @@ else{var e=d.getElementsByTagName("diagram");I=AspectDialog.prototype.createView
null,L.id,L.name);else{var b=L.folder;L=L.remoteItem?L.remoteItem:L;var c=(L.parentReference?L.parentReference.driveId:null)||M,d=L.id;b?y(c,d,null,L.name):x()}}function y(b,c,k,m,n){function p(c){E.stop();var d=document.createElement("table");d.className="odFileListGrid";for(var f=null,g=0,k=0;null!=c&&k<c.length;k++){var m=c[k];if(1!=q||!m.webUrl||0<m.webUrl.indexOf("sharepoint.com/sites/")||0>m.webUrl.indexOf("sharepoint.com/")){var n=m.displayName||m.name,p=mxUtils.htmlEntities(m.description||
n);q&&(m.folder=!0);var y=null!=m.folder;if(!l||y){var t=document.createElement("tr");t.className=g++%2?"odOddRow":"odEvenRow";var u=document.createElement("td");u.style.width="36px";var C=document.createElement("img");C.src="/images/"+(y?"folder.png":"file.png");C.className="odFileImg";u.appendChild(C);t.appendChild(u);u=document.createElement("td");y=document.createElement("div");y.className="odFileTitle";y.innerHTML=mxUtils.htmlEntities(n);y.setAttribute("title",p);u.appendChild(y);t.appendChild(u);
d.appendChild(t);null==f&&(f=t,f.className+=" odRowSelected",L=m,M=b,e(L));(function(c,d){t.addEventListener("dblclick",B);t.addEventListener("click",function(){f!=d&&(f.className=f.className.replace("odRowSelected",""),f=d,f.className+=" odRowSelected",L=c,M=b,e(L))})})(m,t)}}}0==g?(c=document.createElement("div"),c.className="odEmptyFolder",c.innerHTML=mxUtils.htmlEntities(mxResources.get("folderEmpty",null,"Folder is empty!")),v.appendChild(c)):v.appendChild(d);z();N=!1}if(!N){u(".odCatsList").style.display=
-"block";u(".odFilesSec").style.display="block";null!=P&&(P.innerHTML="",P.style.top="50%");var y=N=!0,q=0;K=arguments;var t=setTimeout(function(){N=y=!1;E.stop();f(mxResources.get("timeout"))},2E4),v=u(".odFilesList");v.innerHTML="";E.spin(v);var C;switch(b){case "recent":O=[{name:mxResources.get("recent",null,"Recent"),driveId:b}];C=g()||{};var x=[],G;for(G in C)x.push(C[G]);clearTimeout(t);p(x);return;case "shared":C="/me/drive/sharedWithMe";O=[{name:mxResources.get("sharedWithMe",null,"Shared With Me"),
+"block";u(".odFilesSec").style.display="block";null!=P&&(P.innerHTML="",P.style.top="50%");var y=N=!0,q=0;J=arguments;var t=setTimeout(function(){N=y=!1;E.stop();f(mxResources.get("timeout"))},2E4),v=u(".odFilesList");v.innerHTML="";E.spin(v);var C;switch(b){case "recent":O=[{name:mxResources.get("recent",null,"Recent"),driveId:b}];C=g()||{};var x=[],G;for(G in C)x.push(C[G]);clearTimeout(t);p(x);return;case "shared":C="/me/drive/sharedWithMe";O=[{name:mxResources.get("sharedWithMe",null,"Shared With Me"),
driveId:b}];break;case "sharepoint":C="/sites?search=";O=[{name:mxResources.get("sharepointSites",null,"Sharepoint Sites"),driveId:b}];q=1;break;case "site":O.push({name:m,driveId:b,folderId:c,siteId:k});C="/sites/"+k+"/drives";q=2;break;case "subsite":O.push({name:m,driveId:b,folderId:c,siteId:k});C="/drives/"+k+(c?"/items/"+c:"/root")+"/children";break;case "search":b=M;O=[{driveId:b,name:mxResources.get("back",null,"Back")}];n=encodeURIComponent(n.replace(/\'/g,"\\'"));C=b?"/drives/"+b+"/root/search(q='"+
n+"')":"/me/drive/root/search(q='"+n+"')";break;default:null==c?O=[{driveId:b}]:O.push({name:m,driveId:b,folderId:c}),C=(b?"/drives/"+b:"/me/drive")+(c?"/items/"+c:"/root")+"/children"}q||(C+=(0<C.indexOf("?")?"&":"?")+"select=id,name,description,parentReference,file,createdBy,lastModifiedBy,lastModifiedDateTime,size,folder,remoteItem,@microsoft.graph.downloadUrl");d(C,function(b){if(y){clearTimeout(t);b=b.value||[];for(var c=q?b:[],d=0;!q&&d<b.length;d++){var e=b[d],f=e.file?e.file.mimeType:null;
(e.folder||"text/html"==f||"text/xml"==f||"application/xml"==f||"image/png"==f||/\.svg$/.test(e.name)||/\.html$/.test(e.name)||/\.xml$/.test(e.name)||/\.png$/.test(e.name)||/\.drawio$/.test(e.name)||/\.drawiolib$/.test(e.name))&&c.push(e)}p(c)}},function(b){if(y){clearTimeout(t);var c=null;try{c=JSON.parse(b.responseText).error.message}catch(ea){}f(mxResources.get("errorFetchingFolder",null,"Error fetching folder items")+(null!=c?" ("+c+")":""));N=!1;E.stop()}})}}function C(b){S.className=S.className.replace("odCatSelected",
@@ -11591,9 +11584,9 @@ mxUtils.htmlEntities(mxResources.get("files"))+'</div><div id="odRecent" class="
'"></div><div class="odFilesBreadcrumb"></div><div id="refreshOD" class="odRefreshButton"><img src="/images/update32.png" width="16" height="16" title="'+mxUtils.htmlEntities(mxResources.get("refresh"))+'Refresh" border="0"/></div><div class="odFilesList"></div></div>'+F+(m?'<div id="odBackBtn" class="odLinkBtn">&lt; '+mxUtils.htmlEntities(mxResources.get("back"))+"</div>":"")+(p?'<button id="odSubmitBtn" class="odSubmitBtn">'+mxUtils.htmlEntities(mxResources.get(l?"save":"open"))+"</button>":""),
D=null!=window.Editor&&null!=Editor.isDarkMode&&Editor.isDarkMode(),D=".odCatsList {\tbox-sizing: border-box;\tposition:absolute;\ttop:0px;\tbottom:50%;\twidth:30%;\tborder: 1px solid #CCCCCC;\tborder-bottom:none;\tdisplay: inline-block;\toverflow-x: hidden;\toverflow-y: auto;}.odCatsListLbl {\theight: 17px;\tcolor: #6D6D6D;\tfont-size: 14px;\tfont-weight: bold;\tline-height: 17px;\tmargin: 10px 0 3px 5px;}.odFilesSec {\tbox-sizing: border-box;\tposition:absolute;\tleft:30%;\ttop:0px;\tbottom:50%;\twidth: 70%;\tborder: 1px solid #CCCCCC;\tborder-left:none;\tborder-bottom:none;\tdisplay: inline-block;\toverflow: hidden;}.odFilesBreadcrumb {\tbox-sizing: border-box;\tposition:absolute;\tmin-height: 32px;\tleft:0px;\tright:20px;\ttext-overflow:ellipsis;\toverflow:hidden;\tfont-size: 13px;\tcolor: #6D6D6D;\tpadding: 5px;}.odRefreshButton {\tbox-sizing: border-box;\tposition:absolute;\tright:0px;\ttop:0px;\tpadding: 4px;\tmargin: 1px;\theight:24px;\tcursor:default;}.odRefreshButton>img {\topacity:0.5;}.odRefreshButton:hover {\tbackground-color:#ddd;\tborder-radius:50%;}.odRefreshButton:active {\topacity:0.7;}.odFilesList {\tbox-sizing: border-box;\tposition:absolute;\ttop:32px;\tbottom:0px;\twidth: 100%;\toverflow-x: hidden;\toverflow-y: auto;}.odFileImg {\twidth: 24px;\tpadding-left: 5px;\tpadding-right: 5px;}.odFileTitle {\tcursor: default;\tfont-weight: normal;\tcolor: #666666 !important;\twidth: calc(100% - 20px);\twhite-space: nowrap;\toverflow: hidden;\ttext-overflow: ellipsis;}.odFileListGrid {\twidth: 100%;\twhite-space: nowrap;\tfont-size: 13px; box-sizing: border-box; border-spacing: 0;}.odOddRow {"+
(D?"":"\tbackground-color: #eeeeee;")+"}.odEvenRow {"+(D?"":"\tbackground-color: #FFFFFF;")+"}.odRowSelected {\tbackground-color: #cadfff;}.odCatListTitle {\tbox-sizing: border-box;\theight: 17px;\tcursor: default;\tcolor: #666666;\tfont-size: 14px;\tline-height: 17px;\tmargin: 5px 0 5px 0px; padding-left: 10px;}.odCatSelected {\tfont-weight: bold;\tbackground-color: #cadfff;}.odEmptyFolder {\theight: 17px;\tcolor: #6D6D6D;\tfont-size: 14px;\tfont-weight: bold;\tline-height: 17px;\tmargin: 10px 0 3px 5px;\twidth: 100%; text-align: center;}.odBCFolder {\tcursor: pointer;\tcolor: #0432ff;}.odPreviewStatus {\tposition:absolute;\ttext-align:center;\twidth:100%;\ttop:50%;\ttransform: translateY(-50%);\tfont-size:13px;\topacity:0.5;}.odPreview { position:absolute;\t overflow:hidden;\t border: 1px solid #CCCCCC; bottom:0px; top: 50%; left:0px; right:0px;}.odLinkBtn { position: absolute;\tfont-size: 12px;\tcursor: pointer;\tcolor: #6D6D6D;\tleft: 5px;\tbottom: 3px;}.odSubmitBtn { position: absolute;\tcolor: #333;\tright: 5px;\tbottom: 5px;}",
-E=new Spinner({left:"50%",lines:12,length:8,width:3,radius:5,rotate:0,color:"#000",speed:1,trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9}),H=new Editor,I=null,L=null,M=null,N=!1,O=[],K=null,T=null;this.getSelectedItem=function(){null!=L&&k(L);return L};if(null==u("#mxODPickerCss")){var J=document.head||document.getElementsByTagName("head")[0],U=document.createElement("style");J.appendChild(U);U.type="text/css";U.id="mxODPickerCss";U.appendChild(document.createTextNode(D))}b.innerHTML=
+E=new Spinner({left:"50%",lines:12,length:8,width:3,radius:5,rotate:0,color:"#000",speed:1,trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9}),H=new Editor,I=null,L=null,M=null,N=!1,O=[],J=null,T=null;this.getSelectedItem=function(){null!=L&&k(L);return L};if(null==u("#mxODPickerCss")){var K=document.head||document.getElementsByTagName("head")[0],U=document.createElement("style");K.appendChild(U);U.type="text/css";U.id="mxODPickerCss";U.appendChild(document.createTextNode(D))}b.innerHTML=
F;var P=u(".odPreview"),S=u("#odFiles");b=function(b,c){c=c||document;return c.querySelectorAll(b)}(".odCatListTitle");for(F=0;F<b.length;F++)b[F].addEventListener("click",function(){L=T=null;if(!N)switch(C(this),this.id){case "odFiles":y();break;case "odRecent":y("recent");break;case "odShared":y("shared");break;case "odSharepoint":y("sharepoint")}});var Y=null;u("#odSearchBox").addEventListener("keyup",function(b){var c=this;null!=Y&&clearTimeout(Y);13==b.keyCode?G(c.value):Y=setTimeout(function(){G(c.value)},
-500)});u("#refreshOD").addEventListener("click",function(){null!=K&&(e(null),y.apply(this,K))});m&&u("#odBackBtn").addEventListener("click",m);p&&u("#odSubmitBtn").addEventListener("click",x);null!=t?(m=t.pop(),"sharepoint"==t[0].driveId&&C(u("#odSharepoint")),O=t,y(m.driveId,m.folderId,m.siteId,m.name)):y()};App=function(b,e,d){EditorUi.call(this,b,e,null!=d?d:"1"==urlParams.lightbox||"min"==uiTheme&&"0"!=urlParams.chrome);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(window.onunload=mxUtils.bind(this,function(){var b=this.getCurrentFile();if(null!=b&&b.isModified()){var d={category:"DISCARD-FILE-"+b.getHash(),action:(b.savingFile?"saving":"")+(b.savingFile&&null!=b.savingFileTime?"_"+Math.round((Date.now()-b.savingFileTime.getTime())/1E3):"")+(null!=b.saveLevel?"-sl_"+b.saveLevel:"")+"-age_"+(null!=
+500)});u("#refreshOD").addEventListener("click",function(){null!=J&&(e(null),y.apply(this,J))});m&&u("#odBackBtn").addEventListener("click",m);p&&u("#odSubmitBtn").addEventListener("click",x);null!=t?(m=t.pop(),"sharepoint"==t[0].driveId&&C(u("#odSharepoint")),O=t,y(m.driveId,m.folderId,m.siteId,m.name)):y()};App=function(b,e,d){EditorUi.call(this,b,e,null!=d?d:"1"==urlParams.lightbox||"min"==uiTheme&&"0"!=urlParams.chrome);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(window.onunload=mxUtils.bind(this,function(){var b=this.getCurrentFile();if(null!=b&&b.isModified()){var d={category:"DISCARD-FILE-"+b.getHash(),action:(b.savingFile?"saving":"")+(b.savingFile&&null!=b.savingFileTime?"_"+Math.round((Date.now()-b.savingFileTime.getTime())/1E3):"")+(null!=b.saveLevel?"-sl_"+b.saveLevel:"")+"-age_"+(null!=
b.ageStart?Math.round((Date.now()-b.ageStart.getTime())/1E3):"x")+(this.editor.autosave?"":"-nosave")+(b.isAutosave()?"":"-noauto")+"-open_"+(null!=b.opened?Math.round((Date.now()-b.opened.getTime())/1E3):"x")+"-save_"+(null!=b.lastSaved?Math.round((Date.now()-b.lastSaved.getTime())/1E3):"x")+"-change_"+(null!=b.lastChanged?Math.round((Date.now()-b.lastChanged.getTime())/1E3):"x")+"-alive_"+Math.round((Date.now()-App.startTime.getTime())/1E3),label:null!=b.sync?"client_"+b.sync.clientId:"nosync"};
b.constructor==DriveFile&&null!=b.desc&&null!=this.drive&&(d.label+=(null!=this.drive.user?"-user_"+this.drive.user.id:"-nouser")+"-rev_"+b.desc.headRevisionId+"-mod_"+b.desc.modifiedDate+"-size_"+b.getSize()+"-mime_"+b.desc.mimeType);EditorUi.logEvent(d)}}));this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(){var b=this.getCurrentFile();null!=b&&EditorUi.logEvent({category:(this.editor.autosave?"ON":"OFF")+"-AUTOSAVE-FILE-"+b.getHash(),action:"changed",label:"autosave_"+(this.editor.autosave?
"on":"off")})}));mxClient.IS_SVG?mxGraph.prototype.warningImage.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAE7SURBVHjaYvz//z8DJQAggBjwGXDuHMP/tWuD/uPTCxBAOA0AaQRK/f/+XeJ/cbHlf1wGAAQQTgPu3QNLgfHSpZo4DQAIIKwGwGyH4e/fFbG6AiQJEEAs2Ew2NFzH8OOHBMO6dT/A/KCg7wxGRh+wuhQggDBcALMdFIAcHBxgDGJjcwVIIUAAYbhAUXEdVos4OO4DXcGBIQ4QQCguQPY7sgtgAYruCpAgQACx4LJdU1OCwctLEcyWlLwPJF+AXQE0EMUBAAEEdwF6yMOiD4RRY0QT7gqQAEAAseDzu6XldYYPH9DD4joQa8L5AAEENgWb7SBcXa0JDQMBrK4AcQACiAlfyOMCEFdAnAYQQEz4FLa0XGf4/v0H0IIPONUABBAjyBmMjIwMS5cK/L927QORbtBkaG29DtYLEGAAH6f7oq3Zc+kAAAAASUVORK5CYII=":
@@ -11709,10 +11702,10 @@ null==this.getCurrentFile()&&this.showSplash()}));c.init()}}),d=decodeURICompone
1>=window.location.hash.length)&&null!=urlParams.state&&null!=this.stateArg&&"open"==this.stateArg.action?null!=this.stateArg.ids&&(window.history&&window.history.replaceState&&window.history.replaceState(null,null,window.location.pathname+this.getSearch(["state"])),window.location.hash="G"+this.stateArg.ids[0]):(null==window.location.hash||1>=window.location.hash.length)&&null!=this.drive&&null!=this.stateArg&&"create"==this.stateArg.action?(window.history&&window.history.replaceState&&window.history.replaceState(null,
null,window.location.pathname+this.getSearch(["state"])),this.setMode(App.MODE_GOOGLE),"0"==urlParams.splash?this.createFile(null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename):this.actions.get("new").funct()):(null!=urlParams.open&&window.history&&window.history.replaceState&&(window.history.replaceState(null,null,window.location.pathname+this.getSearch(["open"])),window.location.hash=urlParams.open),e())}}catch(k){this.handleError(k)}};
App.prototype.loadDraft=function(b,e){this.createFile(this.defaultFilename,b,null,null,mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){var b=this.getCurrentFile();null!=b&&(b.fileChanged(),null!=e&&e())}),0)}),null,null,!0)};
-App.prototype.checkDrafts=function(){try{var b=Editor.guid();localStorage.setItem(".draft-alive-check",b);window.setTimeout(mxUtils.bind(this,function(){localStorage.removeItem(".draft-alive-check");this.getDatabaseItems(mxUtils.bind(this,function(e){for(var d=[],c=0;c<e.length;c++)try{var g=e[c].key;if(null!=g&&".draft_"==g.substring(0,7)){var k=JSON.parse(e[c].data);null!=k&&"draft"==k.type&&k.aliveCheck!=b&&(k.key=g,d.push(k))}}catch(n){}1==d.length?this.loadDraft(d[0].data,mxUtils.bind(this,function(){this.removeDatabaseItem(d[0].key)})):
-1<d.length?(e=new Date(d[0].modified),e=new DraftDialog(this,1<d.length?mxResources.get("selectDraft"):mxResources.get("draftFound",[e.toLocaleDateString()+" "+e.toLocaleTimeString()]),1<d.length?null:d[0].data,mxUtils.bind(this,function(b){this.hideDialog();b=""!=b?b:0;this.loadDraft(d[b].data,mxUtils.bind(this,function(){this.removeDatabaseItem(d[b].key)}))}),mxUtils.bind(this,function(b,c){b=""!=b?b:0;this.confirm(mxResources.get("areYouSure"),null,mxUtils.bind(this,function(){this.removeDatabaseItem(d[b].key);
-null!=c&&c()}),mxResources.get("no"),mxResources.get("yes"))}),null,null,null,1<d.length?d:null),this.showDialog(e.container,640,480,!0,!1,mxUtils.bind(this,function(b){"0"!=urlParams.splash?this.loadFile():this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0)})),e.init()):"0"!=urlParams.splash?this.loadFile():this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0)}),mxUtils.bind(this,function(){"0"!=urlParams.splash?this.loadFile():this.createFile(this.defaultFilename,
-this.getFileData(),null,null,null,null,null,!0)}))}),0)}catch(e){}};
+App.prototype.filterDrafts=function(b,e,d){function c(){d(g)}var g=[];try{this.getDatabaseItems(mxUtils.bind(this,function(d){for(var k=0;k<d.length;k++)try{var f=d[k].key;if(null!=f&&".draft_"==f.substring(0,7)){var l=JSON.parse(d[k].data);null!=l&&"draft"==l.type&&l.aliveCheck!=e&&(null==b&&null==l.fileObject||null!=l.fileObject&&l.fileObject.path==b)&&(l.key=f,g.push(l))}}catch(m){}c()},c))}catch(k){c()}};
+App.prototype.checkDrafts=function(){try{var b=Editor.guid();localStorage.setItem(".draft-alive-check",b);window.setTimeout(mxUtils.bind(this,function(){localStorage.removeItem(".draft-alive-check");this.filterDrafts(null,b,mxUtils.bind(this,function(b){if(1==b.length)this.loadDraft(b[0].data,mxUtils.bind(this,function(){this.removeDatabaseItem(b[0].key)}));else if(1<b.length){var d=new Date(b[0].modified),d=new DraftDialog(this,1<b.length?mxResources.get("selectDraft"):mxResources.get("draftFound",
+[d.toLocaleDateString()+" "+d.toLocaleTimeString()]),1<b.length?null:b[0].data,mxUtils.bind(this,function(c){this.hideDialog();c=""!=c?c:0;this.loadDraft(b[c].data,mxUtils.bind(this,function(){this.removeDatabaseItem(b[c].key)}))}),mxUtils.bind(this,function(c,d){c=""!=c?c:0;this.confirm(mxResources.get("areYouSure"),null,mxUtils.bind(this,function(){this.removeDatabaseItem(b[c].key);null!=d&&d()}),mxResources.get("no"),mxResources.get("yes"))}),null,null,null,1<b.length?b:null);this.showDialog(d.container,
+640,480,!0,!1,mxUtils.bind(this,function(b){"0"!=urlParams.splash?this.loadFile():this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0)}));d.init()}else"0"!=urlParams.splash?this.loadFile():this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0)}))}),0)}catch(e){}};
App.prototype.showSplash=function(b){if("1"!=urlParams.noFileMenu){var e=this.getServiceCount(!0),d=mxUtils.bind(this,function(){var b=new SplashDialog(this);this.showDialog(b.container,340,mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?200:230,!0,!0,mxUtils.bind(this,function(b){b&&!mxClient.IS_CHROMEAPP&&(b=Editor.useLocalStorage,this.createFile(this.defaultFilename+(EditorUi.isElectronApp?".drawio":""),null,null,null,null,null,null,"1"!=urlParams.local),Editor.useLocalStorage=b)}),!0)});if(this.editor.isChromelessView())this.handleError({message:mxResources.get("noFileSelected")},
mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){this.showSplash()}));else if(mxClient.IS_CHROMEAPP||null!=this.mode&&!b)null==urlParams.create&&d();else{b=4==e?2:3;var c=new StorageDialog(this,mxUtils.bind(this,function(){this.hideDialog();d()}),b);this.showDialog(c.container,3>b?200:300,3<e?320:210,!0,!1)}}};
App.prototype.addLanguageMenu=function(b,e){var d=null;if(null!=this.menus.get("language")){d=document.createElement("div");d.setAttribute("title",mxResources.get("language"));d.className="geIcon geSprite geSprite-globe";d.style.position="absolute";d.style.cursor="pointer";d.style.bottom="20px";d.style.right="20px";if(e){d.style.direction="rtl";d.style.textAlign="right";d.style.right="24px";var c=document.createElement("span");c.style.display="inline-block";c.style.fontSize="12px";c.style.margin=
@@ -12091,7 +12084,7 @@ v.getIncomingTreeEdges(l[f]),k=v.getIncomingTreeEdges(c[f]);if(0==m.length&&0<k.
function(c,d,e,f){var g=v.model,k=null;g.beginUpdate();try{if(k=C.apply(this,arguments),b(c))for(var l=0;l<k.length;l++)if(g.isEdge(k[l])&&null==g.getTerminal(k[l],!0)){g.setTerminal(k[l],c,!0);var m=v.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return k}}var G={88:u.actions.get("selectChildren"),84:u.actions.get("selectSubtree"),80:u.actions.get("selectParent"),83:u.actions.get("selectSiblings")},F=u.onKeyDown;u.onKeyDown=function(c){try{if(v.isEnabled()&&
!v.isEditing()&&b(v.getSelectionCell())&&1==v.getSelectionCount()){var d=null;0<v.getIncomingTreeEdges(v.getSelectionCell()).length&&(9==c.which?d=mxEvent.isShiftDown(c)?m(v.getSelectionCell()):p(v.getSelectionCell()):13==c.which&&(d=l(v.getSelectionCell(),!mxEvent.isShiftDown(c))));if(null!=d&&0<d.length)1==d.length&&v.model.isEdge(d[0])?v.setSelectionCell(v.model.getTerminal(d[0],!1)):v.setSelectionCell(d[d.length-1]),null!=u.hoverIcons&&u.hoverIcons.update(v.view.getState(v.getSelectionCell())),
v.startEditingAtCell(v.getSelectionCell()),mxEvent.consume(c);else if(mxEvent.isAltDown(c)&&mxEvent.isShiftDown(c)){var e=G[c.keyCode];null!=e&&(e.funct(c),mxEvent.consume(c))}else 37==c.keyCode?(t(v.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(c)):38==c.keyCode?(t(v.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(c)):39==c.keyCode?(t(v.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(c)):40==c.keyCode&&(t(v.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
-mxEvent.consume(c))}}catch(K){u.handleError(K)}mxEvent.isConsumed(c)||F.apply(this,arguments)};var D=v.connectVertex;v.connectVertex=function(c,d,e,g,k,n,q){var t=v.getIncomingTreeEdges(c);if(b(c)){var y=f(c),u=y==mxConstants.DIRECTION_EAST||y==mxConstants.DIRECTION_WEST,x=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST;return y==d||0==t.length?p(c,d):u==x?m(c):l(c,d!=mxConstants.DIRECTION_NORTH&&d!=mxConstants.DIRECTION_WEST)}return D.apply(this,arguments)};v.getSubtree=function(c){var e=
+mxEvent.consume(c))}}catch(J){u.handleError(J)}mxEvent.isConsumed(c)||F.apply(this,arguments)};var D=v.connectVertex;v.connectVertex=function(c,d,e,g,k,n,q){var t=v.getIncomingTreeEdges(c);if(b(c)){var y=f(c),u=y==mxConstants.DIRECTION_EAST||y==mxConstants.DIRECTION_WEST,x=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST;return y==d||0==t.length?p(c,d):u==x?m(c):l(c,d!=mxConstants.DIRECTION_NORTH&&d!=mxConstants.DIRECTION_WEST)}return D.apply(this,arguments)};v.getSubtree=function(c){var e=
[c];!d(c)&&!b(c)||n(c)||v.traverse(c,!0,function(b,c){var d=null!=c&&v.isTreeEdge(c);d&&0>mxUtils.indexOf(e,c)&&e.push(c);(null==c||d)&&0>mxUtils.indexOf(e,b)&&e.push(b);return null==c||d});return e};var E=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){E.apply(this,arguments);(d(this.state.cell)||b(this.state.cell))&&!n(this.state.cell)&&0<this.graph.getOutgoingTreeEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title",
"Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height="24px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(b){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(b);
this.graph.isMouseDown=!0;u.hoverIcons.reset();mxEvent.consume(b)})))};var H=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){H.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var I=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){I.apply(this,
@@ -12208,8 +12201,8 @@ if(null!=m.hoverIcons){var ba=m.hoverIcons.update;m.hoverIcons.update=function()
60,30,"Text",mxResources.get("text"),!0,!1,null,!0,!0),mxResources.get("text")+" ("+Editor.ctrlKey+"+Shift+X)");d(m.sidebar.createVertexTemplate("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;fontColor=#000000;darkOpacity=0.05;fillColor=#FFF9B2;strokeColor=none;fillStyle=solid;direction=west;gradientDirection=north;gradientColor=#FFF2A1;shadow=1;size=20;pointerEvents=1;",140,160,"",mxResources.get("note"),!0,!1,null,!0),mxResources.get("note"));d(m.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",
160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");d(m.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var b=new mxCell("",new mxGeometry(0,0,n.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,0),!1);
b.geometry.points=[];b.geometry.relative=!0;b.edge=!0;d(m.sidebar.createEdgeTemplateFromCells([b],b.geometry.width,b.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));b=b.clone();b.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";b.geometry.width=n.defaultEdgeLength+20;b.geometry.setTerminalPoint(new mxPoint(0,20),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,20),!1);b=d(m.sidebar.createEdgeTemplateFromCells([b],
-b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var e=m.actions.get("toggleShapes");b(e,mxResources.get("shapes")+" ("+e.shortcut+")",U);R=c("table",null,Editor.tableImage);R.style.boxShadow="none";R.style.opacity="0.7";R.style.padding="6px";
-R.style.margin="0px";R.style.width="37px";d(R,null,"pointer");b(m.actions.get("insertTemplate"),mxResources.get("template"),Editor.templateImage)}"1"!=urlParams.embedInline&&S.appendChild(ca)});mxEvent.addListener(ca,"click",mxUtils.bind(this,function(){Q?(mxUtils.setPrefixedStyle(S.style,"transform","translate(0, -50%)"),S.style.padding="8px 6px 4px",S.style.top="50%",S.style.bottom="",S.style.height="",ca.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",ca.style.width="40px",ca.style.height=
+b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var e=m.actions.get("toggleShapes");b(e,mxResources.get("shapes")+" ("+e.shortcut+")",U);R=c("table",null,Editor.calendarImage);R.style.boxShadow="none";R.style.opacity="0.7";R.style.padding="6px";
+R.style.margin="0px";R.style.width="37px";d(R,null,"pointer");b(m.actions.get("insertTemplate"),mxResources.get("template"),Editor.addImage)}"1"!=urlParams.embedInline&&S.appendChild(ca)});mxEvent.addListener(ca,"click",mxUtils.bind(this,function(){Q?(mxUtils.setPrefixedStyle(S.style,"transform","translate(0, -50%)"),S.style.padding="8px 6px 4px",S.style.top="50%",S.style.bottom="",S.style.height="",ca.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",ca.style.width="40px",ca.style.height=
"12px",ca.setAttribute("title","Minimize"),Q=!1,V()):(S.innerHTML="",S.appendChild(ca),mxUtils.setPrefixedStyle(S.style,"transform","translate(0, 0)"),S.style.top="",S.style.bottom="12px",S.style.padding="0px",S.style.height="24px",ca.style.height="24px",ca.style.backgroundImage="url("+Editor.plusImage+")",ca.setAttribute("title",mxResources.get("insert")),ca.style.width="24px",Q=!0)}));V();m.addListener("darkModeChanged",V);m.addListener("sketchModeChanged",V)}else m.editor.addListener("statusChanged",
mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=A){var z=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},ia=m.actions.get("zoomIn"),W=m.actions.get("zoomOut"),Z=m.actions.get("resetView"),ha=m.actions.get("fullscreen");m.actions.get("toggleDarkMode");var ra=m.actions.get("undo"),X=m.actions.get("redo"),ea=f("",ra.funct,null,mxResources.get("undo")+" ("+ra.shortcut+
")",ra,Editor.undoImage),ga=f("",X.funct,null,mxResources.get("redo")+" ("+X.shortcut+")",X,Editor.redoImage),ja=f("",ha.funct,null,mxResources.get("fullscreen"),ha,Editor.fullscreenImage);if(null!=P){A=function(){da.style.display=null!=m.pages&&("1"==urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};ja.parentNode.removeChild(ja);var oa=m.actions.get("delete"),ua=f("",oa.funct,null,mxResources.get("delete"),oa,Editor.trashImage);ua.style.opacity="0.1";Y.appendChild(ua);
@@ -12245,8 +12238,8 @@ g.x*v.pageFormat.width);var k,n,q;switch(m.unit){case mxConstants.POINTS:k=q=10;
2:1));k=null;c=f?Math.min(e+(d?c.height:c.width),d?t.height:t.width):d?t.height:t.width;if(f)if(u.fillStyle=p.outBkgClr,d){var A=e-l;0<A&&u.fillRect(0,l,l,A);c<t.height&&u.fillRect(0,c,l,t.height)}else A=e-l,0<A&&u.fillRect(l,0,A,l),c<t.width&&u.fillRect(c,0,t.width,l);u.fillStyle=p.fontClr;for(f=f?e:e%(z*b);f<=c;f+=z*b)if(A=Math.round((f-e)/b/z),!(f<l||A==k)){k=A;var B=null;0==A%q&&(B=m.formatText(g+A*z)+"");d?x(l-n[Math.abs(A)%q],f,l,f,B):x(f,l-n[Math.abs(A)%q],f,l,B)}u.lineWidth=1;x(d?0:l,d?l:
0,l,l);u.fillStyle=p.cornerClr;u.fillRect(0,0,l,l)},z=-1,B=function(){null!=n?(null!=f&&f(z),z=n(A)):A()};this.drawRuler=B;this.sizeListener=e=k(function(){var b=v.container;d?(b=b.offsetHeight+l,t.height!=b&&(t.height=b,q.style.height=b+"px",B())):(b=b.offsetWidth+l,t.width!=b&&(t.width=b,q.style.width=b+"px",B()))},10);this.pageListener=function(){B()};this.scrollListener=c=k(function(){var b=d?v.container.scrollTop:v.container.scrollLeft;m.lastScroll!=b&&(m.lastScroll=b,B())},10);this.unitListener=
function(b,c){m.setUnit(c.getProperty("unit"))};v.addListener(mxEvent.SIZE,e);v.container.addEventListener("scroll",c);v.view.addListener("unitChanged",this.unitListener);b.addListener("pageViewChanged",this.pageListener);b.addListener("pageScaleChanged",this.pageListener);b.addListener("pageFormatChanged",this.pageListener);this.setStyle=function(b){p=b;q.style.background=p.bkgClr;A()};this.origGuideMove=mxGuide.prototype.move;mxGuide.prototype.move=function(b,c,e,f){var g;if(d&&4<b.height||!d&&
-4<b.width){if(null!=m.guidePart)try{u.putImageData(m.guidePart.imgData1,m.guidePart.x1,m.guidePart.y1),u.putImageData(m.guidePart.imgData2,m.guidePart.x2,m.guidePart.y2),u.putImageData(m.guidePart.imgData3,m.guidePart.x3,m.guidePart.y3)}catch(J){}g=m.origGuideMove.apply(this,arguments);try{var k,n,q,t,v,y,z,A,B;u.lineWidth=.5;u.strokeStyle=p.guideClr;u.setLineDash([2]);d?(n=b.y+g.y+l-this.graph.container.scrollTop,k=0,v=n+b.height/2,t=l/2,A=n+b.height,z=0,q=u.getImageData(k,n-1,l,3),x(k,n,l,n),n--,
-y=u.getImageData(t,v-1,l,3),x(t,v,l,v),v--,B=u.getImageData(z,A-1,l,3),x(z,A,l,A),A--):(n=0,k=b.x+g.x+l-this.graph.container.scrollLeft,v=l/2,t=k+b.width/2,A=0,z=k+b.width,q=u.getImageData(k-1,n,3,l),x(k,n,k,l),k--,y=u.getImageData(t-1,v,3,l),x(t,v,t,l),t--,B=u.getImageData(z-1,A,3,l),x(z,A,z,l),z--);if(null==m.guidePart||m.guidePart.x1!=k||m.guidePart.y1!=n)m.guidePart={imgData1:q,x1:k,y1:n,imgData2:y,x2:t,y2:v,imgData3:B,x3:z,y3:A}}catch(J){}}else g=m.origGuideMove.apply(this,arguments);return g};
+4<b.width){if(null!=m.guidePart)try{u.putImageData(m.guidePart.imgData1,m.guidePart.x1,m.guidePart.y1),u.putImageData(m.guidePart.imgData2,m.guidePart.x2,m.guidePart.y2),u.putImageData(m.guidePart.imgData3,m.guidePart.x3,m.guidePart.y3)}catch(K){}g=m.origGuideMove.apply(this,arguments);try{var k,n,q,t,v,y,z,A,B;u.lineWidth=.5;u.strokeStyle=p.guideClr;u.setLineDash([2]);d?(n=b.y+g.y+l-this.graph.container.scrollTop,k=0,v=n+b.height/2,t=l/2,A=n+b.height,z=0,q=u.getImageData(k,n-1,l,3),x(k,n,l,n),n--,
+y=u.getImageData(t,v-1,l,3),x(t,v,l,v),v--,B=u.getImageData(z,A-1,l,3),x(z,A,l,A),A--):(n=0,k=b.x+g.x+l-this.graph.container.scrollLeft,v=l/2,t=k+b.width/2,A=0,z=k+b.width,q=u.getImageData(k-1,n,3,l),x(k,n,k,l),k--,y=u.getImageData(t-1,v,3,l),x(t,v,t,l),t--,B=u.getImageData(z-1,A,3,l),x(z,A,z,l),z--);if(null==m.guidePart||m.guidePart.x1!=k||m.guidePart.y1!=n)m.guidePart={imgData1:q,x1:k,y1:n,imgData2:y,x2:t,y2:v,imgData3:B,x3:z,y3:A}}catch(K){}}else g=m.origGuideMove.apply(this,arguments);return g};
this.origGuideDestroy=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){var b=m.origGuideDestroy.apply(this,arguments);if(null!=m.guidePart)try{u.putImageData(m.guidePart.imgData1,m.guidePart.x1,m.guidePart.y1),u.putImageData(m.guidePart.imgData2,m.guidePart.x2,m.guidePart.y2),u.putImageData(m.guidePart.imgData3,m.guidePart.x3,m.guidePart.y3),m.guidePart=null}catch(C){}return b}}mxRuler.prototype.RULER_THICKNESS=14;mxRuler.prototype.unit=mxConstants.POINTS;
mxRuler.prototype.setUnit=function(b){this.unit=b;this.drawRuler()};mxRuler.prototype.formatText=function(b){switch(this.unit){case mxConstants.POINTS:return Math.round(b);case mxConstants.MILLIMETERS:return(b/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(b/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(b/mxConstants.PIXELS_PER_INCH).toFixed(2)}};
mxRuler.prototype.destroy=function(){this.ui.refresh=this.editorUiRefresh;mxGuide.prototype.move=this.origGuideMove;mxGuide.prototype.destroy=this.origGuideDestroy;this.graph.removeListener(this.sizeListener);this.graph.container.removeEventListener("scroll",this.scrollListener);this.graph.view.removeListener("unitChanged",this.unitListener);this.ui.removeListener("pageViewChanged",this.pageListener);this.ui.removeListener("pageScaleChanged",this.pageListener);this.ui.removeListener("pageFormatChanged",
diff --git a/src/main/webapp/js/diagramly/App.js b/src/main/webapp/js/diagramly/App.js
index f289cf82..f1d5f900 100644
--- a/src/main/webapp/js/diagramly/App.js
+++ b/src/main/webapp/js/diagramly/App.js
@@ -3266,7 +3266,6 @@ App.prototype.start = function()
{
var id = this.getDiagramId();
-
if (EditorUi.enableDrafts && (urlParams['mode'] == null || EditorUi.isElectronApp) &&
this.getServiceName() == 'draw.io' && (id == null || id.length == 0) &&
!this.editor.isChromelessView())
@@ -3505,6 +3504,54 @@ App.prototype.loadDraft = function(xml, success)
}), null, null, true);
};
+App.prototype.filterDrafts = function(filePath, guid, callback)
+{
+ var drafts = [];
+
+ function result()
+ {
+ callback(drafts);
+ };
+
+ try
+ {
+ this.getDatabaseItems(mxUtils.bind(this, function(items)
+ {
+ // Collects orphaned drafts
+ for (var i = 0; i < items.length; i++)
+ {
+ try
+ {
+ var key = items[i].key;
+
+ if (key != null && key.substring(0, 7) == '.draft_')
+ {
+ var obj = JSON.parse(items[i].data);
+
+ if (obj != null && obj.type == 'draft' && obj.aliveCheck != guid &&
+ ((filePath == null && obj.fileObject == null) ||
+ (obj.fileObject != null && obj.fileObject.path == filePath)))
+ {
+ obj.key = key;
+ drafts.push(obj);
+ }
+ }
+ }
+ catch (e)
+ {
+ // ignore
+ }
+ }
+
+ result();
+ }, result));
+ }
+ catch (e)
+ {
+ result();
+ }
+};
+
/**
* Checks for orphaned drafts.
*/
@@ -3520,34 +3567,8 @@ App.prototype.checkDrafts = function()
{
localStorage.removeItem('.draft-alive-check');
- this.getDatabaseItems(mxUtils.bind(this, function(items)
+ this.filterDrafts(null, guid, mxUtils.bind(this, function(drafts)
{
- // Collects orphaned drafts
- var drafts = [];
-
- for (var i = 0; i < items.length; i++)
- {
- try
- {
- var key = items[i].key;
-
- if (key != null && key.substring(0, 7) == '.draft_')
- {
- var obj = JSON.parse(items[i].data);
-
- if (obj != null && obj.type == 'draft' && obj.aliveCheck != guid)
- {
- obj.key = key;
- drafts.push(obj);
- }
- }
- }
- catch (e)
- {
- // ignore
- }
- }
-
if (drafts.length == 1)
{
this.loadDraft(drafts[0].data, mxUtils.bind(this, function()
@@ -3606,16 +3627,6 @@ App.prototype.checkDrafts = function()
{
this.createFile(this.defaultFilename, this.getFileData(), null, null, null, null, null, true);
}
- }), mxUtils.bind(this, function()
- {
- if (urlParams['splash'] != '0')
- {
- this.loadFile();
- }
- else
- {
- this.createFile(this.defaultFilename, this.getFileData(), null, null, null, null, null, true);
- }
}));
}), 0);
}
diff --git a/src/main/webapp/js/diagramly/Devel.js b/src/main/webapp/js/diagramly/Devel.js
index 373290c3..9b5c3c5f 100644
--- a/src/main/webapp/js/diagramly/Devel.js
+++ b/src/main/webapp/js/diagramly/Devel.js
@@ -66,6 +66,9 @@ if (!mxIsElectron && location.protocol !== 'http:')
'style-src %style-src% \'self\' https://fonts.googleapis.com ' +
// Replaces unsafe-inline style-src with hashes with safe-style-src URL parameter
((urlParams['safe-style-src'] == '1') ? styleHashes : '\'unsafe-inline\'; ') +
+ 'form-action \'none\';' +
+ 'base-uri \'none\';' +
+ 'child-src \'none\';' +
'object-src \'none\';';
var csp = hashes + directives;
@@ -99,9 +102,6 @@ if (!mxIsElectron && location.protocol !== 'http:')
'frame-src \'self\' https://viewer.diagrams.net https://*.google.com; ' +
'style-src \'self\' https://fonts.googleapis.com ' + styleHashes + ' ' +
'object-src \'none\';' +
- 'form-action \'none\';' +
- 'base-uri \'none\';' +
- 'child-src \'none\';' +
'frame-src \'none\';' +
'worker-src https://se.diagrams.net/service-worker.js;'
console.log('se.diagrams.net:', se_diagrams_net);
diff --git a/src/main/webapp/js/diagramly/DrawioFile.js b/src/main/webapp/js/diagramly/DrawioFile.js
index 5cc44f17..43c71fd7 100644
--- a/src/main/webapp/js/diagramly/DrawioFile.js
+++ b/src/main/webapp/js/diagramly/DrawioFile.js
@@ -1444,6 +1444,7 @@ DrawioFile.prototype.saveDraft = function()
modified: new Date().getTime(),
data: this.ui.getFileData(),
title: this.getTitle(),
+ fileObject: this.fileObject,
aliveCheck: this.ui.draftAliveCheck};
this.ui.setDatabaseItem('.draft_' + this.draftId,
JSON.stringify(draft));
diff --git a/src/main/webapp/js/diagramly/Editor.js b/src/main/webapp/js/diagramly/Editor.js
index 5ddc41d5..5a4e4f7a 100644
--- a/src/main/webapp/js/diagramly/Editor.js
+++ b/src/main/webapp/js/diagramly/Editor.js
@@ -144,13 +144,18 @@
Editor.syncDisabledImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTAgNi4zNVY0LjI2Yy0uOC4yMS0xLjU1LjU0LTIuMjMuOTZsMS40NiAxLjQ2Yy4yNS0uMTIuNS0uMjQuNzctLjMzem0tNy4xNC0uOTRsMi4zNiAyLjM2QzQuNDUgOC45OSA0IDEwLjQ0IDQgMTJjMCAyLjIxLjkxIDQuMiAyLjM2IDUuNjRMNCAyMGg2di02bC0yLjI0IDIuMjRDNi42OCAxNS4xNSA2IDEzLjY2IDYgMTJjMC0xIC4yNS0xLjk0LjY4LTIuNzdsOC4wOCA4LjA4Yy0uMjUuMTMtLjUuMjUtLjc3LjM0djIuMDljLjgtLjIxIDEuNTUtLjU0IDIuMjMtLjk2bDIuMzYgMi4zNiAxLjI3LTEuMjdMNC4xNCA0LjE0IDIuODYgNS40MXpNMjAgNGgtNnY2bDIuMjQtMi4yNEMxNy4zMiA4Ljg1IDE4IDEwLjM0IDE4IDEyYzAgMS0uMjUgMS45NC0uNjggMi43N2wxLjQ2IDEuNDZDMTkuNTUgMTUuMDEgMjAgMTMuNTYgMjAgMTJjMC0yLjIxLS45MS00LjItMi4zNi01LjY0TDIwIDR6Ii8+PC9zdmc+';
/**
- *
+ *
*/
- Editor.syncProblemImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyAxMmMwIDIuMjEuOTEgNC4yIDIuMzYgNS42NEwzIDIwaDZ2LTZsLTIuMjQgMi4yNEM1LjY4IDE1LjE1IDUgMTMuNjYgNSAxMmMwLTIuNjEgMS42Ny00LjgzIDQtNS42NVY0LjI2QzUuNTUgNS4xNSAzIDguMjcgMyAxMnptOCA1aDJ2LTJoLTJ2MnpNMjEgNGgtNnY2bDIuMjQtMi4yNEMxOC4zMiA4Ljg1IDE5IDEwLjM0IDE5IDEyYzAgMi42MS0xLjY3IDQuODMtNCA1LjY1djIuMDljMy40NS0uODkgNi00LjAxIDYtNy43NCAwLTIuMjEtLjkxLTQuMi0yLjM2LTUuNjRMMjEgNHptLTEwIDloMlY3aC0ydjZ6Ii8+PC9zdmc+';
+ Editor.calendarImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxwYXRoIGQ9Ik0wLDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPjwvZz48Zz48cGF0aCBkPSJNMjAsNEg0QzIuOSw0LDIsNC45LDIsNnYxMmMwLDEuMSwwLjksMiwyLDJoMTZjMS4xLDAsMi0wLjksMi0yVjZDMjIsNC45LDIxLjEsNCwyMCw0eiBNOCwxMUg0VjZoNFYxMXogTTE0LDExaC00VjZoNFYxMXogTTIwLDExaC00VjZoNFYxMXogTTgsMThINHYtNWg0VjE4eiBNMTQsMThoLTR2LTVoNFYxOHogTTIwLDE4aC00di01aDRWMTh6Ii8+PC9nPjwvc3ZnPg==';
/**
*
*/
+ Editor.syncProblemImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyAxMmMwIDIuMjEuOTEgNC4yIDIuMzYgNS42NEwzIDIwaDZ2LTZsLTIuMjQgMi4yNEM1LjY4IDE1LjE1IDUgMTMuNjYgNSAxMmMwLTIuNjEgMS42Ny00LjgzIDQtNS42NVY0LjI2QzUuNTUgNS4xNSAzIDguMjcgMyAxMnptOCA1aDJ2LTJoLTJ2MnpNMjEgNGgtNnY2bDIuMjQtMi4yNEMxOC4zMiA4Ljg1IDE5IDEwLjM0IDE5IDEyYzAgMi42MS0xLjY3IDQuODMtNCA1LjY1djIuMDljMy40NS0uODkgNi00LjAxIDYtNy43NCAwLTIuMjEtLjkxLTQuMi0yLjM2LTUuNjRMMjEgNHptLTEwIDloMlY3aC0ydjZ6Ii8+PC9zdmc+';
+
+ /**
+ *
+ */
Editor.drawLogoImage = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJFYmVuZV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjUwIDI1MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjUwIDI1MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MntmaWxsOiMwMDA7fQo8L3N0eWxlPgo8cGF0aCBjbGFzcz0ic3QyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDE1KSIgZD0iTTE5Ny4xLDEzOC4zaC0yMy43bC0yNS00Mi43YzUuNy0xLjIsOS44LTYuMiw5LjctMTJWNTEuNWMwLTYuOC01LjQtMTIuMy0xMi4yLTEyLjNjMCwwLTAuMSwwLTAuMSwwaC00MS43CgljLTYuOCwwLTEyLjMsNS40LTEyLjMsMTIuMmMwLDAsMCwwLjEsMCwwLjF2MzIuMWMwLDUuOCw0LDEwLjgsOS43LDEybC0yNSw0Mi43SDUyLjljLTYuOCwwLTEyLjMsNS40LTEyLjMsMTIuMmMwLDAsMCwwLjEsMCwwLjEKCXYzMi4xYzAsNi44LDUuNCwxMi4zLDEyLjIsMTIuM2MwLDAsMC4xLDAsMC4xLDBoNDEuN2M2LjgsMCwxMi4zLTUuNCwxMi4zLTEyLjJjMCwwLDAtMC4xLDAtMC4xdi0zMi4xYzAtNi44LTUuNC0xMi4zLTEyLjItMTIuMwoJYzAsMC0wLjEsMC0wLjEsMGgtNGwyNC44LTQyLjRoMTkuM2wyNC45LDQyLjRoLTQuMWMtNi44LDAtMTIuMyw1LjQtMTIuMywxMi4yYzAsMCwwLDAuMSwwLDAuMXYzMi4xYzAsNi44LDUuNCwxMi4zLDEyLjIsMTIuMwoJYzAsMCwwLjEsMCwwLjEsMGg0MS43YzYuOCwwLDEyLjMtNS40LDEyLjMtMTIuMmMwLDAsMC0wLjEsMC0wLjF2LTMyLjFjMC02LjgtNS40LTEyLjMtMTIuMi0xMi4zCglDMTk3LjIsMTM4LjMsMTk3LjIsMTM4LjMsMTk3LjEsMTM4LjN6Ii8+Cjwvc3ZnPgo=';
/**
@@ -4457,8 +4462,7 @@
StyleFormatPanel.prototype.init = function()
{
- // TODO: Update sstate in Format
- var sstate = this.format.getSelectionState();
+ var sstate = this.editorUi.getSelectionState();
if (sstate.style.shape != 'image' && !sstate.containsLabel && sstate.cells.length > 0)
{
@@ -4497,40 +4501,7 @@
StyleFormatPanel.prototype.addStyleOps = function(div)
{
- var ss = this.format.getSelectionState();
- var graph = this.editorUi.editor.graph;
-
- var btn = mxUtils.button(mxResources.get('copyStyle'), mxUtils.bind(this, function(evt)
- {
- this.editorUi.actions.get('copyStyle').funct();
- }));
-
- btn.setAttribute('title', mxResources.get('copyStyle') + ' (' + this.editorUi.actions.get('copyStyle').shortcut + ')');
- btn.style.marginBottom = '2px';
- btn.style.width = '104px';
- btn.style.marginRight = '2px';
-
- div.appendChild(btn);
-
- if (ss.cells.length > 0)
- {
- var btn = mxUtils.button(mxResources.get('pasteStyle'), mxUtils.bind(this, function(evt)
- {
- this.editorUi.actions.get('pasteStyle').funct();
- }));
-
- btn.setAttribute('title', mxResources.get('pasteStyle') + ' (' + this.editorUi.actions.get('pasteStyle').shortcut + ')');
- btn.style.marginBottom = '2px';
- btn.style.width = '104px';
-
- div.appendChild(btn);
- }
- else
- {
- btn.style.width = '210px';
- }
-
- mxUtils.br(div);
+ this.addActions(div, ['copyStyle', 'pasteStyle']);
return styleFormatPanelAddStyleOps.apply(this, arguments);
};
@@ -5205,7 +5176,7 @@
graph.getModel().beginUpdate();
try
{
- var cells = this.format.getSelectionState().cells;
+ var cells = ui.getSelectionState().cells;
for (var i = 0; i < cells.length; i++)
{
@@ -5429,7 +5400,8 @@
StyleFormatPanel.prototype.addEditOps = function(div)
{
- var ss = this.format.getSelectionState();
+ var ss = this.editorUi.getSelectionState();
+ var graph = this.editorUi.editor.graph;
var btn = null;
if (ss.cells.length == 1)
@@ -5446,7 +5418,6 @@
div.appendChild(btn);
}
- var graph = this.editorUi.editor.graph;
var state = (ss.cells.length == 1) ? graph.view.getState(ss.cells[0]) : null;
if (state != null && state.shape != null && state.shape.stencil != null)
diff --git a/src/main/webapp/js/diagramly/EditorUi.js b/src/main/webapp/js/diagramly/EditorUi.js
index 69cf31c9..bd3a8cae 100644
--- a/src/main/webapp/js/diagramly/EditorUi.js
+++ b/src/main/webapp/js/diagramly/EditorUi.js
@@ -92,7 +92,7 @@
/**
* Specifies if drafts should be saved in IndexedDB.
*/
- EditorUi.enableDrafts = !mxClient.IS_CHROMEAPP && !EditorUi.isElectronApp &&
+ EditorUi.enableDrafts = !mxClient.IS_CHROMEAPP &&
isLocalStorage && urlParams['drafts'] != '0';
/**
@@ -7514,9 +7514,14 @@
{
this.loadingMermaid = false;
- config = (config != null) ? config : EditorUi.defaultMermaidConfig;
+ config = (config != null) ? config : mxUtils.clone(EditorUi.defaultMermaidConfig);
config.securityLevel = 'strict';
config.startOnLoad = false;
+
+ if (Editor.isDarkMode())
+ {
+ config.theme = 'dark';
+ }
mermaid.mermaidAPI.initialize(config);
@@ -13811,21 +13816,19 @@
var graph = this.editor.graph;
var file = this.getCurrentFile();
+ var ss = this.getSelectionState();
var active = this.isDiagramActive();
- var editable = graph.getEditableCells(graph.getSelectionCells());
- var enabled = file != null || urlParams['embed'] == '1';
this.actions.get('pageSetup').setEnabled(active);
this.actions.get('autosave').setEnabled(file != null && file.isEditable() && file.isAutosaveOptional());
this.actions.get('guides').setEnabled(active);
- this.actions.get('editData').setEnabled(editable.length > 0 || graph.isSelectionEmpty());
+ this.actions.get('editData').setEnabled(graph.isEnabled());
this.actions.get('shadowVisible').setEnabled(active);
this.actions.get('connectionArrows').setEnabled(active);
this.actions.get('connectionPoints').setEnabled(active);
this.actions.get('copyStyle').setEnabled(active && !graph.isSelectionEmpty());
- this.actions.get('pasteStyle').setEnabled(active && editable.length > 0);
- this.actions.get('editGeometry').setEnabled(editable.length > 0 &&
- graph.getModel().isVertex(editable[0]));
+ this.actions.get('pasteStyle').setEnabled(active && ss.cells.length > 0);
+ this.actions.get('editGeometry').setEnabled(ss.vertices.length > 0);
this.actions.get('createShape').setEnabled(active);
this.actions.get('createRevision').setEnabled(active);
this.actions.get('moveToFolder').setEnabled(file != null);
@@ -13845,7 +13848,8 @@
'/' + mxResources.get('replace') : '') + '...';
var state = graph.view.getState(graph.getSelectionCell());
- this.actions.get('editShape').setEnabled(active && state != null && state.shape != null && state.shape.stencil != null);
+ this.actions.get('editShape').setEnabled(active && state != null &&
+ state.shape != null && state.shape.stencil != null);
};
/**
diff --git a/src/main/webapp/js/diagramly/ElectronApp.js b/src/main/webapp/js/diagramly/ElectronApp.js
index 053f71ba..a103a8e4 100644
--- a/src/main/webapp/js/diagramly/ElectronApp.js
+++ b/src/main/webapp/js/diagramly/ElectronApp.js
@@ -309,6 +309,15 @@ mxStencilRegistry.allowEval = false;
return false
}
+ global.__emt_removeDraft = function()
+ {
+ var currentFile = editorUi.getCurrentFile();
+
+ if (currentFile != null)
+ {
+ currentFile.removeDraft();
+ }
+ };
// global.__emt_getCurrentFile = e => {
// return this.getCurrentFile()
// }
@@ -1029,22 +1038,52 @@ mxStencilRegistry.allowEval = false;
var isPng = index > -1 && index == path.length - 4;
var isVsdx = /\.vsdx$/i.test(path) || /\.vssx$/i.test(path);
var encoding = isVsdx? null : ((isPng || /\.pdf$/i.test(path)) ? 'base64' : 'utf-8');
- var isModified = false, fileLoaded = false;
+ var fileEntry = new Object(), stat = null;
+ fileEntry.path = path;
+ fileEntry.name = path.replace(/^.*[\\\/]/, '');
+ fileEntry.type = encoding;
+
+ var checkDrafts = mxUtils.bind(this, function()
+ {
+ this.filterDrafts(fileEntry.path, 'dummy', mxUtils.bind(this, function(drafts)
+ {
+ if (drafts.length > 0)
+ {
+ var dlg = new DraftDialog(this, mxResources.get('unsavedChanges'),
+ (drafts.length > 1) ? null : drafts[0].data, mxUtils.bind(this, function(index)
+ {
+ index = index || 0;
+ this.hideDialog();
+ fn(fileEntry, drafts[index].data, stat, null, true);
+ this.removeDatabaseItem(drafts[index].key);
+ }), mxUtils.bind(this, function(index)
+ {
+ index = index || 0;
+
+ // Discard draft
+ this.confirm(mxResources.get('areYouSure'), null, mxUtils.bind(this, function()
+ {
+ this.removeDatabaseItem(drafts[index].key);
+ this.hideDialog();
+ }), mxResources.get('no'), mxResources.get('yes'));
+ }), null, null, null, (drafts.length > 1) ? drafts : null);
+
+ this.showDialog(dlg.container, 640, 480, true, false);
+
+ dlg.init();
+ }
+ }));
+ });
var readData = mxUtils.bind(this, function (e, data)
{
if (e)
{
fnErr(e);
- fileLoaded = true;
+ checkDrafts();
}
else
{
- var fileEntry = new Object();
- fileEntry.path = path;
- fileEntry.name = path.replace(/^.*[\\\/]/, '');
- fileEntry.type = encoding;
-
// VSDX and PDF files are imported instead of being opened
if (isVsdx)
{
@@ -1084,10 +1123,10 @@ mxStencilRegistry.allowEval = false;
}
else
{
- fn(null, xml, null, name, isModified);
+ fn(null, xml, null, name, false);
}
-
- fileLoaded = true;
+
+ checkDrafts();
}), null, name);
return;
@@ -1099,9 +1138,8 @@ mxStencilRegistry.allowEval = false;
if (tmp != null)
{
var name = fileEntry.name;
- fn(null, tmp, null, name.substring(0, name.lastIndexOf('.')) + '.drawio', isModified);
- fileLoaded = true;
-
+ fn(null, tmp, null, name.substring(0, name.lastIndexOf('.')) + '.drawio', false);
+ checkDrafts();
return;
}
}
@@ -1112,7 +1150,7 @@ mxStencilRegistry.allowEval = false;
data = this.extractGraphModelFromPng('data:image/png;base64,' + data);
}
- fs.stat(path, function(err, stat)
+ fs.stat(path, function(err, stat_p)
{
if (err)
{
@@ -1120,58 +1158,16 @@ mxStencilRegistry.allowEval = false;
}
else
{
- fn(fileEntry, data, stat, null, isModified);
+ stat = stat_p;
+ fn(fileEntry, data, stat, null, false);
}
-
- fileLoaded = true;
+
+ checkDrafts();
});
}
});
fs.readFile(path, encoding, readData);
-
- //Check if a bkp file exists, if one exists, ask user to restore/ignore
- var checkBkpFile = mxUtils.bind(this, function (e, data)
- {
- //Backup file must be loaded after actual file
- if (!fileLoaded)
- {
- setTimeout(function()
- {
- checkBkpFile(e, data);
- }, 10);
- return;
- }
-
- if (!e)
- {
- var dlg = new DraftDialog(this, mxResources.get('backupFound'),
- data, mxUtils.bind(this, function()
- {
- this.hideDialog();
- isModified = true;
- readData(null, data);
- fs.unlink(bkpFile, (err) => {}); //Ignore errors!
- }), mxUtils.bind(this, function()
- {
- this.hideDialog();
- fs.unlink(bkpFile, (err) => {}); //Ignore errors!
- }));
-
- this.showDialog(dlg.container, 640, 480, true, false, mxUtils.bind(this, function(cancel)
- {
- if (cancel)
- {
- //TODO Rename backup file?
- }
- }));
-
- dlg.init();
- }
- });
-
- var bkpFile = getBkpFilePath(path);
- fs.readFile(bkpFile, encoding, checkBkpFile);
};
// Disables temp files in Electron
diff --git a/src/main/webapp/js/diagramly/GraphViewer.js b/src/main/webapp/js/diagramly/GraphViewer.js
index fa814dc5..5e4d6624 100644
--- a/src/main/webapp/js/diagramly/GraphViewer.js
+++ b/src/main/webapp/js/diagramly/GraphViewer.js
@@ -1460,6 +1460,8 @@ GraphViewer.prototype.addToolbar = function()
layersDialog.style.backgroundColor = '#eee';
layersDialog.style.fontFamily = Editor.defaultHtmlFont;
layersDialog.style.fontSize = '11px';
+ layersDialog.style.overflowY = 'auto';
+ layersDialog.style.maxHeight = (this.graph.container.clientHeight - this.toolbarHeight - 10) + 'px'
layersDialog.style.zIndex = this.toolbarZIndex + 1;
mxUtils.setOpacity(layersDialog, 80);
var origin = mxUtils.getDocumentScrollOrigin(document);
diff --git a/src/main/webapp/js/diagramly/Minimal.js b/src/main/webapp/js/diagramly/Minimal.js
index 41d6b099..af931f0c 100644
--- a/src/main/webapp/js/diagramly/Minimal.js
+++ b/src/main/webapp/js/diagramly/Minimal.js
@@ -2233,7 +2233,7 @@ EditorUi.initMinimalTheme = function()
var toggleShapesAction = ui.actions.get('toggleShapes');
addAction(toggleShapesAction, mxResources.get('shapes') + ' (' + toggleShapesAction.shortcut + ')', insertImage);
- elt = addMenu('table', null, Editor.tableImage);
+ elt = addMenu('table', null, Editor.calendarImage);
elt.style.boxShadow = 'none';
elt.style.opacity = '0.7';
elt.style.padding = '6px';
@@ -2241,7 +2241,7 @@ EditorUi.initMinimalTheme = function()
elt.style.width = '37px';
addElt(elt, null, 'pointer');
- addAction(ui.actions.get('insertTemplate'), mxResources.get('template'), Editor.templateImage);
+ addAction(ui.actions.get('insertTemplate'), mxResources.get('template'), Editor.addImage);
}
if (urlParams['embedInline'] != '1')
diff --git a/src/main/webapp/js/diagramly/Settings.js b/src/main/webapp/js/diagramly/Settings.js
index 9650c16b..afe49636 100644
--- a/src/main/webapp/js/diagramly/Settings.js
+++ b/src/main/webapp/js/diagramly/Settings.js
@@ -233,7 +233,7 @@ var mxSettings =
showStartScreen: true,
gridColor: mxGraphView.prototype.defaultGridColor,
darkGridColor: mxGraphView.prototype.defaultDarkGridColor,
- autosave: true,
+ autosave: !EditorUi.isElectronApp,
resizeImages: null,
openCounter: 0,
version: mxSettings.currentVersion,
@@ -361,7 +361,13 @@ var mxSettings =
if (mxSettings.settings.autosave == null)
{
- mxSettings.settings.autosave = true;
+ mxSettings.settings.autosave = !EditorUi.isElectronApp;
+ }
+ else if (EditorUi.isElectronApp && localStorage.getItem('._autoSaveTrans_') == null) //Transition to no autosave
+ {
+ localStorage.setItem('._autoSaveTrans_', '1');
+ mxSettings.settings.autosave = false;
+ mxSettings.save();
}
if (mxSettings.settings.scratchpadSeen != null)
diff --git a/src/main/webapp/js/grapheditor/Actions.js b/src/main/webapp/js/grapheditor/Actions.js
index 30d25296..3338e65c 100644
--- a/src/main/webapp/js/grapheditor/Actions.js
+++ b/src/main/webapp/js/grapheditor/Actions.js
@@ -485,7 +485,7 @@ Actions.prototype.init = function()
graph.turnShapes(graph.getResizableCells(graph.getSelectionCells()),
(evt != null) ? mxEvent.isShiftDown(evt) : false);
- }, null, null, Editor.ctrlKey + '+R'));
+ }, null, null, (mxClient.IS_SF) ? null : Editor.ctrlKey + '+R'));
this.put('selectConnections', new Action(mxResources.get('selectEdges'), function(evt)
{
var cell = graph.getSelectionCell();
diff --git a/src/main/webapp/js/grapheditor/Editor.js b/src/main/webapp/js/grapheditor/Editor.js
index fb00b414..c7b191a0 100644
--- a/src/main/webapp/js/grapheditor/Editor.js
+++ b/src/main/webapp/js/grapheditor/Editor.js
@@ -157,14 +157,12 @@ Editor.plusImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My
Editor.shapesImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxwYXRoIGQ9Ik0wLDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPjwvZz48Zz48Zz48cGF0aCBkPSJNMywxMWg4VjNIM1YxMXogTTUsNWg0djRINVY1eiIvPjxwYXRoIGQ9Ik0xMywzdjhoOFYzSDEzeiBNMTksOWgtNFY1aDRWOXoiLz48cGF0aCBkPSJNMywyMWg4di04SDNWMjF6IE01LDE1aDR2NEg1VjE1eiIvPjxwb2x5Z29uIHBvaW50cz0iMTgsMTMgMTYsMTMgMTYsMTYgMTMsMTYgMTMsMTggMTYsMTggMTYsMjEgMTgsMjEgMTgsMTggMjEsMTggMjEsMTYgMTgsMTYiLz48L2c+PC9nPjwvc3ZnPg==';
Editor.formatImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==';
Editor.freehandImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0Ii8+PHBhdGggZD0iTTQuNSw4YzEuMDQsMCwyLjM0LTEuNSw0LjI1LTEuNWMxLjUyLDAsMi43NSwxLjIzLDIuNzUsMi43NWMwLDIuMDQtMS45OSwzLjE1LTMuOTEsNC4yMkM1LjQyLDE0LjY3LDQsMTUuNTcsNCwxNyBjMCwxLjEsMC45LDIsMiwydjJjLTIuMjEsMC00LTEuNzktNC00YzAtMi43MSwyLjU2LTQuMTQsNC42Mi01LjI4YzEuNDItMC43OSwyLjg4LTEuNiwyLjg4LTIuNDdjMC0wLjQxLTAuMzQtMC43NS0wLjc1LTAuNzUgQzcuNSw4LjUsNi4yNSwxMCw0LjUsMTBDMy4xMiwxMCwyLDguODgsMiw3LjVDMiw1LjQ1LDQuMTcsMi44Myw1LDJsMS40MSwxLjQxQzUuNDEsNC40Miw0LDYuNDMsNCw3LjVDNCw3Ljc4LDQuMjIsOCw0LjUsOHogTTgsMjEgbDMuNzUsMGw4LjA2LTguMDZsLTMuNzUtMy43NUw4LDE3LjI1TDgsMjF6IE0xMCwxOC4wOGw2LjA2LTYuMDZsMC45MiwwLjkyTDEwLjkyLDE5TDEwLDE5TDEwLDE4LjA4eiBNMjAuMzcsNi4yOSBjLTAuMzktMC4zOS0xLjAyLTAuMzktMS40MSwwbC0xLjgzLDEuODNsMy43NSwzLjc1bDEuODMtMS44M2MwLjM5LTAuMzksMC4zOS0xLjAyLDAtMS40MUwyMC4zNyw2LjI5eiIvPjwvc3ZnPg==';
-Editor.templateImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTEzIDExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6bTEtOUg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTQgMThINlY0aDd2NWg1djExeiIvPjwvc3ZnPg==';
Editor.darkImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxwYXRoIGQ9Ik05LjM3LDUuNTFDOS4xOSw2LjE1LDkuMSw2LjgyLDkuMSw3LjVjMCw0LjA4LDMuMzIsNy40LDcuNCw3LjRjMC42OCwwLDEuMzUtMC4wOSwxLjk5LTAuMjdDMTcuNDUsMTcuMTksMTQuOTMsMTksMTIsMTkgYy0zLjg2LDAtNy0zLjE0LTctN0M1LDkuMDcsNi44MSw2LjU1LDkuMzcsNS41MXogTTEyLDNjLTQuOTcsMC05LDQuMDMtOSw5czQuMDMsOSw5LDlzOS00LjAzLDktOWMwLTAuNDYtMC4wNC0wLjkyLTAuMS0xLjM2IGMtMC45OCwxLjM3LTIuNTgsMi4yNi00LjQsMi4yNmMtMi45OCwwLTUuNC0yLjQyLTUuNC01LjRjMC0xLjgxLDAuODktMy40MiwyLjI2LTQuNEMxMi45MiwzLjA0LDEyLjQ2LDMsMTIsM0wxMiwzeiIvPjwvc3ZnPg==';
Editor.lightImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxwYXRoIGQ9Ik0xMiw5YzEuNjUsMCwzLDEuMzUsMywzcy0xLjM1LDMtMywzcy0zLTEuMzUtMy0zUzEwLjM1LDksMTIsOSBNMTIsN2MtMi43NiwwLTUsMi4yNC01LDVzMi4yNCw1LDUsNXM1LTIuMjQsNS01IFMxNC43Niw3LDEyLDdMMTIsN3ogTTIsMTNsMiwwYzAuNTUsMCwxLTAuNDUsMS0xcy0wLjQ1LTEtMS0xbC0yLDBjLTAuNTUsMC0xLDAuNDUtMSwxUzEuNDUsMTMsMiwxM3ogTTIwLDEzbDIsMGMwLjU1LDAsMS0wLjQ1LDEtMSBzLTAuNDUtMS0xLTFsLTIsMGMtMC41NSwwLTEsMC40NS0xLDFTMTkuNDUsMTMsMjAsMTN6IE0xMSwydjJjMCwwLjU1LDAuNDUsMSwxLDFzMS0wLjQ1LDEtMVYyYzAtMC41NS0wLjQ1LTEtMS0xUzExLDEuNDUsMTEsMnogTTExLDIwdjJjMCwwLjU1LDAuNDUsMSwxLDFzMS0wLjQ1LDEtMXYtMmMwLTAuNTUtMC40NS0xLTEtMUMxMS40NSwxOSwxMSwxOS40NSwxMSwyMHogTTUuOTksNC41OGMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDAgYy0wLjM5LDAuMzktMC4zOSwxLjAzLDAsMS40MWwxLjA2LDEuMDZjMC4zOSwwLjM5LDEuMDMsMC4zOSwxLjQxLDBzMC4zOS0xLjAzLDAtMS40MUw1Ljk5LDQuNTh6IE0xOC4zNiwxNi45NSBjLTAuMzktMC4zOS0xLjAzLTAuMzktMS40MSwwYy0wLjM5LDAuMzktMC4zOSwxLjAzLDAsMS40MWwxLjA2LDEuMDZjMC4zOSwwLjM5LDEuMDMsMC4zOSwxLjQxLDBjMC4zOS0wLjM5LDAuMzktMS4wMywwLTEuNDEgTDE4LjM2LDE2Ljk1eiBNMTkuNDIsNS45OWMwLjM5LTAuMzksMC4zOS0xLjAzLDAtMS40MWMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDBsLTEuMDYsMS4wNmMtMC4zOSwwLjM5LTAuMzksMS4wMywwLDEuNDEgczEuMDMsMC4zOSwxLjQxLDBMMTkuNDIsNS45OXogTTcuMDUsMTguMzZjMC4zOS0wLjM5LDAuMzktMS4wMywwLTEuNDFjLTAuMzktMC4zOS0xLjAzLTAuMzktMS40MSwwbC0xLjA2LDEuMDYgYy0wLjM5LDAuMzktMC4zOSwxLjAzLDAsMS40MXMxLjAzLDAuMzksMS40MSwwTDcuMDUsMTguMzZ6Ii8+PC9zdmc+';
Editor.undoImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ii8+PC9zdmc+';
Editor.redoImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiIvPjwvc3ZnPg==';
Editor.outlineImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMC41IDNsLS4xNi4wM0wxNSA1LjEgOSAzIDMuMzYgNC45Yy0uMjEuMDctLjM2LjI1LS4zNi40OFYyMC41YzAgLjI4LjIyLjUuNS41bC4xNi0uMDNMOSAxOC45bDYgMi4xIDUuNjQtMS45Yy4yMS0uMDcuMzYtLjI1LjM2LS40OFYzLjVjMC0uMjgtLjIyLS41LS41LS41ek0xNSAxOWwtNi0yLjExVjVsNiAyLjExVjE5eiIvPjwvc3ZnPg==';
Editor.saveImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMThweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMThweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE5IDEydjdINXYtN0gzdjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnptLTYgLjY3bDIuNTktMi41OEwxNyAxMS41bC01IDUtNS01IDEuNDEtMS40MUwxMSAxMi42N1YzaDJ2OS42N3oiLz48L3N2Zz4=';
-Editor.tableImage = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTIwIDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDJ2M0g1VjVoMTV6bS01IDE0aC01di05aDV2OXpNNSAxMGgzdjlINXYtOXptMTIgOXYtOWgzdjloLTN6Ii8+PC9zdmc+';
/**
* All fill styles supported by rough.js.
diff --git a/src/main/webapp/js/grapheditor/EditorUi.js b/src/main/webapp/js/grapheditor/EditorUi.js
index 21f7b2e5..bac0f217 100644
--- a/src/main/webapp/js/grapheditor/EditorUi.js
+++ b/src/main/webapp/js/grapheditor/EditorUi.js
@@ -58,7 +58,19 @@ EditorUi = function(editor, container, lightbox)
{
new Image().src = mxConnectionHandler.prototype.connectImage.src;
}
+
+ // Installs selection state listener
+ this.selectionStateListener = mxUtils.bind(this, function(sender, evt)
+ {
+ this.clearSelectionState();
+ });
+ graph.getSelectionModel().addListener(mxEvent.CHANGE, this.selectionStateListener);
+ graph.getModel().addListener(mxEvent.CHANGE, this.selectionStateListener);
+ graph.addListener(mxEvent.EDITING_STARTED, this.selectionStateListener);
+ graph.addListener(mxEvent.EDITING_STOPPED, this.selectionStateListener);
+ graph.getView().addListener('unitChanged', this.selectionStateListener);
+
// Disables graph and forced panning in chromeless mode
if (this.editor.chromeless && !this.editor.editable)
{
@@ -1232,6 +1244,220 @@ EditorUi.prototype.init = function()
};
/**
+ * Returns information about the current selection.
+ */
+EditorUi.prototype.clearSelectionState = function()
+{
+ this.selectionState = null;
+};
+
+/**
+ * Returns information about the current selection.
+ */
+EditorUi.prototype.getSelectionState = function()
+{
+ if (this.selectionState == null)
+ {
+ this.selectionState = this.createSelectionState();
+ }
+
+ return this.selectionState;
+};
+
+/**
+ * Returns information about the current selection.
+ */
+EditorUi.prototype.createSelectionState = function()
+{
+ var graph = this.editor.graph;
+ var cells = graph.getSelectionCells();
+ var result = this.initSelectionState();
+ var initial = true;
+
+ for (var i = 0; i < cells.length; i++)
+ {
+ var style = graph.getCurrentCellStyle(cells[i]);
+
+ if (mxUtils.getValue(style, mxConstants.STYLE_EDITABLE, '1') != '0')
+ {
+ this.updateSelectionStateForCell(result, cells[i], cells, initial);
+ initial = false;
+ }
+ }
+
+ this.updateSelectionStateForTableCells(result);
+
+ return result;
+};
+
+/**
+ * Returns information about the current selection.
+ */
+EditorUi.prototype.initSelectionState = function()
+{
+ return {vertices: [], edges: [], cells: [], x: null, y: null, width: null, height: null,
+ style: {}, containsImage: false, containsLabel: false, fill: true, glass: true,
+ rounded: true, autoSize: false, image: true, shadow: true, lineJumps: true, resizable: true,
+ table: false, cell: false, row: false, movable: true, rotatable: true, stroke: true,
+ unlocked: this.editor.graph.isEnabled(), connections: false};
+};
+
+/**
+ * Adds information about current selected table cells range.
+ */
+EditorUi.prototype.updateSelectionStateForTableCells = function(result)
+{
+ // Updates rowspan/colspan for table cell merging
+ // if (result.cells.length > 1 && result.cell)
+ // {
+ //var cells = mxUtils.sortCells(result.cells);
+ // var row = graph.model.getParent(cells[0]);
+ // var table = graph.model.getParent(row);
+ // var colIndex = row.getIndex(cells[0]);
+ // var rowIndex = table.getIndex(row);
+ // var colCount = 1;
+
+ // while (colCount < cells.length && graph.model.getParent(cells[colCount]) == row)
+ // {
+ // colCount++;
+ // }
+
+ // var index = 1;
+ // var rowCount = 1;
+ // row = table.getChildAt(rowIndex + rowCount);
+
+ // while (cells[rowCount * colCount + index] == row.getChildAt(index))
+ // {
+ // index++;
+ // }
+
+ // row = graph.model.getParent(cells[rowCount * colCount + index]);
+
+ // var rowCount = 1;
+
+
+
+ // for (var i = 1; i < cells.length; i++)
+ // {
+
+ // }
+
+ // var colIndex = graph.getColumnIndex(cells[0]);
+ // var rowIndex = graph.getRowIndex(cells[0]);
+
+ // }
+};
+
+/**
+ * Returns information about the current selection.
+ */
+EditorUi.prototype.updateSelectionStateForCell = function(result, cell, cells, initial)
+{
+ var graph = this.editor.graph;
+ result.cells.push(cell);
+
+ if (graph.getModel().isVertex(cell))
+ {
+ result.connections = graph.model.getEdgeCount(cell) > 0;
+ result.unlocked = result.unlocked && !graph.isCellLocked(cell);
+ result.resizable = result.resizable && graph.isCellResizable(cell);
+ result.rotatable = result.rotatable && graph.isCellRotatable(cell);
+ result.movable = result.movable && graph.isCellMovable(cell) &&
+ !graph.isTableRow(cell) && !graph.isTableCell(cell);
+ result.table = result.table || graph.isTable(cell);
+ result.cell = result.cell || graph.isTableCell(cell);
+ result.row = result.row || graph.isTableRow(cell);
+ result.vertices.push(cell);
+ var geo = graph.getCellGeometry(cell);
+
+ if (geo != null)
+ {
+ if (geo.width > 0)
+ {
+ if (result.width == null)
+ {
+ result.width = geo.width;
+ }
+ else if (result.width != geo.width)
+ {
+ result.width = '';
+ }
+ }
+ else
+ {
+ result.containsLabel = true;
+ }
+
+ if (geo.height > 0)
+ {
+ if (result.height == null)
+ {
+ result.height = geo.height;
+ }
+ else if (result.height != geo.height)
+ {
+ result.height = '';
+ }
+ }
+ else
+ {
+ result.containsLabel = true;
+ }
+
+ if (!geo.relative || geo.offset != null)
+ {
+ var x = (geo.relative) ? geo.offset.x : geo.x;
+ var y = (geo.relative) ? geo.offset.y : geo.y;
+
+ if (result.x == null)
+ {
+ result.x = x;
+ }
+ else if (result.x != x)
+ {
+ result.x = '';
+ }
+
+ if (result.y == null)
+ {
+ result.y = y;
+ }
+ else if (result.y != y)
+ {
+ result.y = '';
+ }
+ }
+ }
+ }
+ else if (graph.getModel().isEdge(cell))
+ {
+ result.edges.push(cell);
+ result.connections = true;
+ result.resizable = false;
+ result.rotatable = false;
+ result.movable = false;
+ }
+
+ var state = graph.view.getState(cell);
+
+ if (state != null)
+ {
+ result.autoSize = result.autoSize || graph.isAutoSizeState(state);
+ result.glass = result.glass && graph.isGlassState(state);
+ result.rounded = result.rounded && graph.isRoundedState(state);
+ result.lineJumps = result.lineJumps && graph.isLineJumpState(state);
+ result.image = result.image && graph.isImageState(state);
+ result.shadow = result.shadow && graph.isShadowState(state);
+ result.fill = result.fill && graph.isFillState(state);
+ result.stroke = result.stroke && graph.isStrokeState(state);
+
+ var shape = mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null);
+ result.containsImage = result.containsImage || shape == 'image';
+ graph.mergeStyle(state.style, result.style, initial);
+ }
+};
+
+/**
* Returns true if the given event should start editing. This implementation returns true.
*/
EditorUi.prototype.installShapePicker = function()
@@ -3803,51 +4029,9 @@ EditorUi.prototype.addUndoListener = function()
EditorUi.prototype.updateActionStates = function()
{
var graph = this.editor.graph;
- var vertexSelected = false;
- var groupSelected = false;
- var edgeSelected = false;
- var tableSelected = false;
- var rowSelected = false;
- var cellSelected = false;
- var selected = false;
- var editable = [];
-
- var cells = graph.getSelectionCells();
-
- if (cells != null)
- {
- for (var i = 0; i < cells.length; i++)
- {
- var cell = cells[i];
+ var ss = this.getSelectionState();
+ var unlocked = graph.isEnabled() && !graph.isCellLocked(graph.getDefaultParent());
- tableSelected = tableSelected || graph.isTable(cell);
- cellSelected = cellSelected || graph.isTableCell(cell);
- rowSelected = rowSelected || graph.isTableRow(cell);
-
- if (graph.isCellEditable(cell))
- {
- editable.push(cell);
- selected = true;
-
- if (graph.getModel().isEdge(cell))
- {
- edgeSelected = true;
- }
-
- if (graph.getModel().isVertex(cell))
- {
- vertexSelected = true;
-
- if (graph.getModel().getChildCount(cell) > 0 ||
- graph.isContainer(cell))
- {
- groupSelected = true;
- }
- }
- }
- }
- }
-
// Updates action states
var actions = ['cut', 'copy', 'bold', 'italic', 'underline', 'delete', 'duplicate',
'editStyle', 'editTooltip', 'editLink', 'backgroundColor', 'borderColor',
@@ -3857,57 +4041,65 @@ EditorUi.prototype.updateActionStates = function()
for (var i = 0; i < actions.length; i++)
{
- this.actions.get(actions[i]).setEnabled(selected);
+ this.actions.get(actions[i]).setEnabled(ss.cells.length > 0);
}
- this.actions.get('lockUnlock').setEnabled(!graph.isSelectionEmpty());
+ this.actions.get('grid').setEnabled(!this.editor.chromeless || this.editor.editable);
+ this.actions.get('pasteSize').setEnabled(this.copiedSize != null && ss.vertices.length > 0);
+ this.actions.get('pasteData').setEnabled(this.copiedValue != null && ss.cells.length > 0);
this.actions.get('setAsDefaultStyle').setEnabled(graph.getSelectionCount() == 1);
- this.actions.get('clearWaypoints').setEnabled(selected);
this.actions.get('copySize').setEnabled(graph.getSelectionCount() == 1);
- this.actions.get('bringForward').setEnabled(editable.length == 1);
- this.actions.get('sendBackward').setEnabled(editable.length == 1);
- this.actions.get('turn').setEnabled(graph.getResizableCells(graph.getSelectionCells()).length > 0);
- this.actions.get('curved').setEnabled(edgeSelected);
- this.actions.get('rotation').setEnabled(vertexSelected);
- this.actions.get('wordWrap').setEnabled(vertexSelected);
- this.actions.get('autosize').setEnabled(vertexSelected);
- var oneVertexSelected = vertexSelected && graph.getSelectionCount() == 1;
- this.actions.get('group').setEnabled((graph.getSelectionCount() > 1 ||
- (oneVertexSelected && !graph.isContainer(graph.getSelectionCell()) &&
- graph.model.getChildCount(graph.getSelectionCell()) == 0)) &&
- !rowSelected && !cellSelected);
- this.actions.get('ungroup').setEnabled(groupSelected && !rowSelected && !cellSelected);
- this.actions.get('removeFromGroup').setEnabled(oneVertexSelected &&
- graph.getModel().isVertex(graph.getModel().getParent(editable[0])));
-
- // Updates menu states
- var state = graph.view.getState(graph.getSelectionCell());
- this.menus.get('navigation').setEnabled(selected || graph.view.currentRoot != null);
- this.actions.get('collapsible').setEnabled(vertexSelected &&
- (graph.isContainer(graph.getSelectionCell()) || graph.model.getChildCount(graph.getSelectionCell()) > 0));
- this.actions.get('home').setEnabled(graph.view.currentRoot != null);
- this.actions.get('exitGroup').setEnabled(graph.view.currentRoot != null);
- this.actions.get('enterGroup').setEnabled(graph.getSelectionCount() == 1 && graph.isValidRoot(graph.getSelectionCell()));
- var foldable = graph.getSelectionCount() == 1 && graph.isCellFoldable(graph.getSelectionCell()); // TODO
- this.actions.get('expand').setEnabled(foldable);
- this.actions.get('collapse').setEnabled(foldable);
- this.actions.get('editLink').setEnabled(editable.length == 1);
- this.actions.get('openLink').setEnabled(graph.getSelectionCount() == 1 &&
- graph.getLinkForCell(graph.getSelectionCell()) != null);
- this.actions.get('guides').setEnabled(graph.isEnabled());
- this.actions.get('grid').setEnabled(!this.editor.chromeless || this.editor.editable);
-
- var unlocked = graph.isEnabled() && !graph.isCellLocked(graph.getDefaultParent());
- this.menus.get('layout').setEnabled(unlocked);
- this.menus.get('insert').setEnabled(unlocked);
- this.menus.get('direction').setEnabled(unlocked && vertexSelected);
- this.menus.get('align').setEnabled(unlocked && vertexSelected && graph.getSelectionCount() > 1);
- this.menus.get('distribute').setEnabled(unlocked && vertexSelected && graph.getSelectionCount() > 1);
+ this.actions.get('lockUnlock').setEnabled(!graph.isSelectionEmpty());
+ this.actions.get('bringForward').setEnabled(ss.cells.length == 1);
+ this.actions.get('sendBackward').setEnabled(ss.cells.length == 1);
+ this.actions.get('rotation').setEnabled(ss.vertices.length == 1);
+ this.actions.get('wordWrap').setEnabled(ss.vertices.length == 1);
+ this.actions.get('autosize').setEnabled(ss.vertices.length == 1);
+ this.actions.get('clearWaypoints').setEnabled(ss.connections);
+ this.actions.get('curved').setEnabled(ss.edges.length > 0);
+ this.actions.get('turn').setEnabled(ss.resizable);
+ this.actions.get('group').setEnabled(!ss.row && !ss.cell &&
+ (ss.cells.length > 1 || (ss.vertices.length == 1 &&
+ graph.model.getChildCount(ss.cells[0]) == 0 &&
+ !graph.isContainer(ss.vertices[0]))));
+ this.actions.get('ungroup').setEnabled(!ss.row && !ss.cell && !ss.table &&
+ ss.vertices.length > 0 && (graph.isContainer(ss.vertices[0]) ||
+ graph.getModel().getChildCount(ss.vertices[0]) > 0));
+ this.actions.get('removeFromGroup').setEnabled(ss.cells.length == 1 &&
+ graph.getModel().isVertex(graph.getModel().getParent(ss.cells[0])));
+ this.actions.get('collapsible').setEnabled(ss.vertices.length == 1 &&
+ (graph.model.getChildCount(ss.vertices[0]) > 0 ||
+ graph.isContainer(ss.vertices[0])));
+ this.actions.get('exitGroup').setEnabled(graph.view.currentRoot != null);
+ this.actions.get('home').setEnabled(graph.view.currentRoot != null);
+ this.actions.get('enterGroup').setEnabled(ss.cells.length == 1 &&
+ graph.isValidRoot(ss.cells[0]));
+ this.actions.get('editLink').setEnabled(ss.cells.length == 1);
+ this.actions.get('openLink').setEnabled(ss.cells.length == 1 &&
+ graph.getLinkForCell(ss.cells[0]) != null);
+ this.actions.get('guides').setEnabled(graph.isEnabled());
this.actions.get('selectVertices').setEnabled(unlocked);
this.actions.get('selectEdges').setEnabled(unlocked);
this.actions.get('selectAll').setEnabled(unlocked);
this.actions.get('selectNone').setEnabled(unlocked);
-
+
+ var foldable = ss.vertices.length == 1 &&
+ graph.isCellFoldable(ss.vertices[0]);
+ this.actions.get('expand').setEnabled(foldable);
+ this.actions.get('collapse').setEnabled(foldable);
+
+ // Updates menu states
+ this.menus.get('navigation').setEnabled(ss.cells.length > 0 ||
+ graph.view.currentRoot != null);
+ this.menus.get('layout').setEnabled(unlocked);
+ this.menus.get('insert').setEnabled(unlocked);
+ this.menus.get('direction').setEnabled(ss.unlocked &&
+ ss.vertices.length == 1);
+ this.menus.get('distribute').setEnabled(ss.unlocked &&
+ ss.vertices.length > 1);
+ this.menus.get('align').setEnabled(ss.unlocked &&
+ ss.vertices.length > 1);
+
this.updatePasteActionStates();
};
@@ -5505,6 +5697,18 @@ EditorUi.prototype.createKeyHandler = function(editor)
*/
EditorUi.prototype.destroy = function()
{
+ var graph = this.editor.graph;
+
+ if (graph != null && this.selectionStateListener != null)
+ {
+ graph.getSelectionModel().removeListener(mxEvent.CHANGE, this.selectionStateListener);
+ graph.getModel().removeListener(mxEvent.CHANGE, this.selectionStateListener);
+ graph.removeListener(mxEvent.EDITING_STARTED, this.selectionStateListener);
+ graph.removeListener(mxEvent.EDITING_STOPPED, this.selectionStateListener);
+ graph.getView().removeListener('unitChanged', this.selectionStateListener);
+ this.selectionStateListener = null;
+ }
+
if (this.editor != null)
{
this.editor.destroy();
diff --git a/src/main/webapp/js/grapheditor/Format.js b/src/main/webapp/js/grapheditor/Format.js
index 7e6f2f44..ec41d280 100644
--- a/src/main/webapp/js/grapheditor/Format.js
+++ b/src/main/webapp/js/grapheditor/Format.js
@@ -98,14 +98,6 @@ Format.prototype.currentIndex = 0;
Format.prototype.showCloseButton = true;
/**
- * Background color for inactive tabs.
- */
-Format.prototype.roundableShapes = ['label', 'rectangle', 'internalStorage', 'corner',
- 'parallelogram', 'swimlane', 'triangle', 'trapezoid', 'ext', 'step', 'tee', 'process',
- 'link', 'rhombus', 'offPageConnector', 'loopLimit', 'hexagon', 'manualInput', 'card',
- 'curlyBracket', 'singleArrow', 'callout', 'doubleArrow', 'flexArrow', 'umlLifeline'];
-
-/**
* Adds the label menu items to the given menu and parent.
*/
Format.prototype.init = function()
@@ -116,287 +108,22 @@ Format.prototype.init = function()
this.update = mxUtils.bind(this, function(sender, evt)
{
- this.clearSelectionState();
this.refresh();
});
graph.getSelectionModel().addListener(mxEvent.CHANGE, this.update);
+ graph.getModel().addListener(mxEvent.CHANGE, this.update);
graph.addListener(mxEvent.EDITING_STARTED, this.update);
graph.addListener(mxEvent.EDITING_STOPPED, this.update);
- graph.getModel().addListener(mxEvent.CHANGE, this.update);
graph.getView().addListener('unitChanged', this.update);
-
- graph.addListener(mxEvent.ROOT, mxUtils.bind(this, function()
- {
- this.refresh();
- }));
-
- ui.addListener('styleChanged', mxUtils.bind(this, function(sender, evt)
- {
- this.refresh();
- }));
-
- editor.addListener('autosaveChanged', mxUtils.bind(this, function()
- {
- this.refresh();
- }));
+ editor.addListener('autosaveChanged', this.update);
+ graph.addListener(mxEvent.ROOT, this.update);
+ ui.addListener('styleChanged', this.update);
this.refresh();
};
/**
- * Returns information about the current selection.
- */
-Format.prototype.clearSelectionState = function()
-{
- this.selectionState = null;
-};
-
-/**
- * Returns information about the current selection.
- */
-Format.prototype.getSelectionState = function()
-{
- if (this.selectionState == null)
- {
- this.selectionState = this.createSelectionState();
- }
-
- return this.selectionState;
-};
-
-/**
- * Returns information about the current selection.
- */
-Format.prototype.createSelectionState = function()
-{
- var cells = this.editorUi.editor.graph.getSelectionCells();
- var result = this.initSelectionState();
- var initial = true;
-
- for (var i = 0; i < cells.length; i++)
- {
- var style = this.editorUi.editor.graph.getCurrentCellStyle(cells[i]);
-
- if (mxUtils.getValue(style, mxConstants.STYLE_EDITABLE, '1') != '0')
- {
- this.updateSelectionStateForCell(result, cells[i], cells, initial);
- initial = false;
- }
- }
-
- return result;
-};
-
-/**
- * Returns information about the current selection.
- */
-Format.prototype.initSelectionState = function()
-{
- return {vertices: [], edges: [], cells: [], x: null, y: null, width: null, height: null,
- style: {}, containsImage: false, containsLabel: false, fill: true, glass: true,
- rounded: true, autoSize: false, image: true, shadow: true, lineJumps: true, resizable: true,
- table: false, cell: false, row: false, movable: true, rotatable: true, stroke: true};
-};
-
-/**
- * Returns information about the current selection.
- */
-Format.prototype.updateSelectionStateForCell = function(result, cell, cells, initial)
-{
- var graph = this.editorUi.editor.graph;
- result.cells.push(cell);
-
- if (graph.getModel().isVertex(cell))
- {
- result.resizable = result.resizable && graph.isCellResizable(cell);
- result.rotatable = result.rotatable && graph.isCellRotatable(cell);
- result.movable = result.movable && graph.isCellMovable(cell) &&
- !graph.isTableRow(cell) && !graph.isTableCell(cell);
- result.table = result.table || graph.isTable(cell);
- result.cell = result.cell || graph.isTableCell(cell);
- result.row = result.row || graph.isTableRow(cell);
- result.vertices.push(cell);
- var geo = graph.getCellGeometry(cell);
-
- if (geo != null)
- {
- if (geo.width > 0)
- {
- if (result.width == null)
- {
- result.width = geo.width;
- }
- else if (result.width != geo.width)
- {
- result.width = '';
- }
- }
- else
- {
- result.containsLabel = true;
- }
-
- if (geo.height > 0)
- {
- if (result.height == null)
- {
- result.height = geo.height;
- }
- else if (result.height != geo.height)
- {
- result.height = '';
- }
- }
- else
- {
- result.containsLabel = true;
- }
-
- if (!geo.relative || geo.offset != null)
- {
- var x = (geo.relative) ? geo.offset.x : geo.x;
- var y = (geo.relative) ? geo.offset.y : geo.y;
-
- if (result.x == null)
- {
- result.x = x;
- }
- else if (result.x != x)
- {
- result.x = '';
- }
-
- if (result.y == null)
- {
- result.y = y;
- }
- else if (result.y != y)
- {
- result.y = '';
- }
- }
- }
- }
- else if (graph.getModel().isEdge(cell))
- {
- result.edges.push(cell);
- result.resizable = false;
- result.rotatable = false;
- result.movable = false;
- }
-
- var state = graph.view.getState(cell);
-
- if (state != null)
- {
- result.autoSize = result.autoSize || this.isAutoSizeState(state);
- result.glass = result.glass && this.isGlassState(state);
- result.rounded = result.rounded && this.isRoundedState(state);
- result.lineJumps = result.lineJumps && this.isLineJumpState(state);
- result.image = result.image && this.isImageState(state);
- result.shadow = result.shadow && this.isShadowState(state);
- result.fill = result.fill && this.isFillState(state);
- result.stroke = result.stroke && this.isStrokeState(state);
-
- var shape = mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null);
- result.containsImage = result.containsImage || shape == 'image';
- graph.mergeStyle(state.style, result.style, initial);
- }
-};
-
-/**
- * Returns information about the current selection.
- */
-Format.prototype.isFillState = function(state)
-{
- return !this.isSpecialColor(state.style[mxConstants.STYLE_FILLCOLOR]) &&
- (state.view.graph.model.isVertex(state.cell) ||
- mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null) == 'arrow' ||
- mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null) == 'filledEdge' ||
- mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null) == 'flexArrow');
-};
-
-/**
- * Returns information about the current selection.
- */
-Format.prototype.isStrokeState = function(state)
-{
- return !this.isSpecialColor(state.style[mxConstants.STYLE_STROKECOLOR]);
-};
-
-/**
- * Returns information about the current selection.
- */
-Format.prototype.isSpecialColor = function(color)
-{
- return mxUtils.indexOf([mxConstants.STYLE_STROKECOLOR,
- mxConstants.STYLE_FILLCOLOR, 'inherit', 'swimlane',
- 'indicated'], color) >= 0;
-};
-
-/**
- * Returns information about the current selection.
- */
-Format.prototype.isGlassState = function(state)
-{
- var shape = mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null);
-
- return (shape == 'label' || shape == 'rectangle' || shape == 'internalStorage' ||
- shape == 'ext' || shape == 'umlLifeline' || shape == 'swimlane' ||
- shape == 'process');
-};
-
-/**
- * Returns information about the current selection.
- */
-Format.prototype.isRoundedState = function(state)
-{
- return (state.shape != null) ? state.shape.isRoundable() :
- mxUtils.indexOf(this.roundableShapes, mxUtils.getValue(state.style,
- mxConstants.STYLE_SHAPE, null)) >= 0;
-};
-
-/**
- * Returns information about the current selection.
- */
-Format.prototype.isLineJumpState = function(state)
-{
- var shape = mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null);
- var curved = mxUtils.getValue(state.style, mxConstants.STYLE_CURVED, false);
-
- return !curved && (shape == 'connector' || shape == 'filledEdge');
-};
-
-/**
- * Returns information about the current selection.
- */
-Format.prototype.isAutoSizeState = function(state)
-{
- return mxUtils.getValue(state.style, mxConstants.STYLE_AUTOSIZE, null) == '1';
-};
-
-/**
- * Returns information about the current selection.
- */
-Format.prototype.isImageState = function(state)
-{
- var shape = mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null);
-
- return (shape == 'label' || shape == 'image');
-};
-
-/**
- * Returns information about the current selection.
- */
-Format.prototype.isShadowState = function(state)
-{
- var shape = mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null);
-
- return (shape != 'image');
-};
-
-/**
* Adds the label menu items to the given menu and parent.
*/
Format.prototype.clear = function()
@@ -474,7 +201,7 @@ Format.prototype.immediateRefresh = function()
evt.preventDefault();
}));
- var ss = this.getSelectionState();
+ var ss = ui.getSelectionState();
var containsLabel = ss.containsLabel;
var currentLabel = null;
var currentPanel = null;
@@ -749,7 +476,7 @@ BaseFormatPanel.prototype.installInputHandler = function(input, key, defaultValu
updating = false;
}
}
- else if (value != mxUtils.getValue(this.format.getSelectionState().style, key, defaultValue))
+ else if (value != mxUtils.getValue(ui.getSelectionState().style, key, defaultValue))
{
if (graph.isEditing())
{
@@ -759,7 +486,7 @@ BaseFormatPanel.prototype.installInputHandler = function(input, key, defaultValu
graph.getModel().beginUpdate();
try
{
- var cells = this.format.getSelectionState().cells;
+ var cells = ui.getSelectionState().cells;
graph.setCellStyles(key, value, cells);
// Handles special case for fontSize where HTML labels are parsed and updated
@@ -851,27 +578,62 @@ BaseFormatPanel.prototype.createTitle = function(title)
/**
*
*/
-BaseFormatPanel.prototype.addAction = function(div, action, width)
+BaseFormatPanel.prototype.addAction = function(div, name)
{
- var result = false;
+ var action = this.editorUi.actions.get(name);
+ var btn = null;
if (action != null && action.isEnabled())
{
- var btn = mxUtils.button(action.label, function(evt)
+ btn = mxUtils.button(action.label, function(evt)
{
- action.funct();
+ action.funct(evt, evt);
});
var short = (action.shortcut != null) ? ' (' + action.shortcut + ')' : '';
btn.setAttribute('title', action.label + short);
- width = (width != null) ? width : 210;
- btn.style.width = width + 'px';
btn.style.marginBottom = '2px';
+ btn.style.width = '210px';
div.appendChild(btn);
result = true;
}
- return result;
+ return btn;
+};
+
+/**
+ *
+ */
+BaseFormatPanel.prototype.addActions = function(div, names)
+{
+ var last = null;
+ var count = 0;
+
+ for (var i = 0; i < names.length; i++)
+ {
+ var btn = this.addAction(div, names[i]);
+
+ if (btn != null)
+ {
+ count++;
+
+ if (mxUtils.mod(count, 2) == 0)
+ {
+ last.style.marginRight = '2px';
+ last.style.width = '104px';
+ btn.style.width = '104px';
+ }
+
+ last = btn;
+ }
+ }
+
+ if (count > 0)
+ {
+ mxUtils.br(div);
+ }
+
+ return count;
};
/**
@@ -1100,12 +862,11 @@ BaseFormatPanel.prototype.createCellOption = function(label, key, defaultValue,
var ui = this.editorUi;
var editor = ui.editor;
var graph = editor.graph;
- var self = this;
enabledValue = (enabledValue != null) ? ((enabledValue == 'null') ? null : enabledValue) : 1;
disabledValue = (disabledValue != null) ? ((disabledValue == 'null') ? null : disabledValue) : 0;
- var style = (cells != null) ? graph.getCommonStyle(cells) : this.format.getSelectionState().style;
+ var style = (cells != null) ? graph.getCommonStyle(cells) : ui.getSelectionState().style;
return this.createOption(label, function()
{
@@ -1126,7 +887,7 @@ BaseFormatPanel.prototype.createCellOption = function(label, key, defaultValue,
graph.getModel().beginUpdate();
try
{
- var temp = (cells != null) ? cells : self.format.getSelectionState().cells;
+ var temp = (cells != null) ? cells : ui.getSelectionState().cells;
var value = (checked) ? enabledValue : disabledValue;
graph.setCellStyles(key, value, temp);
@@ -1348,12 +1109,11 @@ BaseFormatPanel.prototype.createCellColorOption = function(label, colorKey, defa
var ui = this.editorUi;
var editor = ui.editor;
var graph = editor.graph;
- var self = this;
return this.createColorOption(label, function()
{
// Seems to be null sometimes, not sure why...
- var state = graph.view.getState(self.format.getSelectionState().cells[0]);
+ var state = graph.view.getState(ui.getSelectionState().cells[0]);
if (state != null)
{
@@ -1366,7 +1126,7 @@ BaseFormatPanel.prototype.createCellColorOption = function(label, colorKey, defa
graph.getModel().beginUpdate();
try
{
- var cells = self.format.getSelectionState().cells;
+ var cells = ui.getSelectionState().cells;
graph.setCellStyles(colorKey, color, cells);
if (setStyleFn != null)
@@ -1388,7 +1148,7 @@ BaseFormatPanel.prototype.createCellColorOption = function(label, colorKey, defa
this.listener = function()
{
// Seems to be null sometimes, not sure why...
- var state = graph.view.getState(self.format.getSelectionState().cells[0]);
+ var state = graph.view.getState(ui.getSelectionState().cells[0]);
if (state != null)
{
@@ -1506,7 +1266,8 @@ BaseFormatPanel.prototype.createRelativeOption = function(label, key, width, han
{
width = (width != null) ? width : 52;
- var graph = this.editorUi.editor.graph;
+ var ui = this.editorUi;
+ var graph = ui.editor.graph;
var div = this.createPanel();
div.style.paddingTop = '10px';
div.style.paddingBottom = '10px';
@@ -1523,7 +1284,7 @@ BaseFormatPanel.prototype.createRelativeOption = function(label, key, width, han
{
var value = parseInt(input.value);
value = Math.min(100, Math.max(0, (isNaN(value)) ? 100 : value));
- var state = graph.view.getState(this.format.getSelectionState().cells[0]);
+ var state = graph.view.getState(ui.getSelectionState().cells[0]);
if (state != null && value != mxUtils.getValue(state.style, key, 100))
{
@@ -1533,7 +1294,7 @@ BaseFormatPanel.prototype.createRelativeOption = function(label, key, width, han
value = null;
}
- var cells = this.format.getSelectionState().cells;
+ var cells = ui.getSelectionState().cells;
graph.setCellStyles(key, value, cells);
this.editorUi.fireEvent(new mxEventObject('styleChanged', 'keys', [key],
'values', [value], 'cells', cells));
@@ -1553,7 +1314,7 @@ BaseFormatPanel.prototype.createRelativeOption = function(label, key, width, han
{
if (force || input != document.activeElement)
{
- var ss = this.format.getSelectionState();
+ var ss = ui.getSelectionState();
var tmp = parseInt(mxUtils.getValue(ss.style, key, 100));
input.value = (isNaN(tmp)) ? '' : tmp + ' %';
}
@@ -1685,8 +1446,7 @@ mxUtils.extend(ArrangePanel, BaseFormatPanel);
*/
ArrangePanel.prototype.init = function()
{
- var graph = this.editorUi.editor.graph;
- var ss = this.format.getSelectionState();
+ var ss = this.editorUi.getSelectionState();
if (ss.cells.length > 0)
{
@@ -1741,7 +1501,7 @@ ArrangePanel.prototype.addTable = function(div)
var ui = this.editorUi;
var editor = ui.editor;
var graph = editor.graph;
- var ss = this.format.getSelectionState();
+ var ss = ui.getSelectionState();
div.style.paddingTop = '6px';
div.style.paddingBottom = '10px';
@@ -1925,53 +1685,8 @@ ArrangePanel.prototype.addTable = function(div)
*/
ArrangePanel.prototype.addLayerOps = function(div)
{
- var ui = this.editorUi;
- var graph = ui.editor.graph;
-
- var btn = mxUtils.button(mxResources.get('toFront'), function(evt)
- {
- ui.actions.get('toFront').funct();
- })
-
- btn.setAttribute('title', mxResources.get('toFront') + ' (' + this.editorUi.actions.get('toFront').shortcut + ')');
- btn.style.width = '104px';
- btn.style.marginRight = '2px';
- div.appendChild(btn);
-
- var btn = mxUtils.button(mxResources.get('toBack'), function(evt)
- {
- ui.actions.get('toBack').funct();
- })
-
- btn.setAttribute('title', mxResources.get('toBack') + ' (' + this.editorUi.actions.get('toBack').shortcut + ')');
- btn.style.width = '104px';
- div.appendChild(btn);
-
- if (graph.getSelectionCount() == 1)
- {
- mxUtils.br(div);
-
- var btn = mxUtils.button(mxResources.get('bringForward'), function(evt)
- {
- ui.actions.get('bringForward').funct();
- })
-
- btn.setAttribute('title', mxResources.get('bringForward'));
- btn.style.width = '104px';
- btn.style.marginRight = '2px';
- btn.style.marginTop = '2px';
- div.appendChild(btn);
-
- var btn = mxUtils.button(mxResources.get('sendBackward'), function(evt)
- {
- ui.actions.get('sendBackward').funct();
- })
-
- btn.setAttribute('title', mxResources.get('sendBackward'));
- btn.style.width = '104px';
- btn.style.marginTop = '2px';
- div.appendChild(btn);
- }
+ this.addActions(div, ['toFront', 'toBack']);
+ this.addActions(div, ['bringForward', 'sendBackward']);
return div;
};
@@ -1983,71 +1698,19 @@ ArrangePanel.prototype.addGroupOps = function(div)
{
var ui = this.editorUi;
var graph = ui.editor.graph;
- var ss = this.format.getSelectionState();
+ var ss = ui.getSelectionState();
var cell = ss.cells[0];
- var count = 0;
var btn = null;
div.style.paddingTop = '8px';
div.style.paddingBottom = '6px';
- if (this.addAction(div, ui.actions.get('group')))
- {
- mxUtils.br(div);
- count++;
- }
+ var count = this.addActions(div, ['group', 'ungroup']);
+ count += this.addActions(div, ['removeFromGroup']);
+ count += this.addActions(div, ['copySize', 'pasteSize']);
- if (this.addAction(div, ui.actions.get('ungroup')))
- {
- mxUtils.br(div);
- count++;
- }
-
- if (graph.getModel().isVertex(graph.getSelectionCell()))
- {
- count = 0;
-
- var btn = mxUtils.button(mxResources.get('copySize'), function(evt)
- {
- ui.actions.get('copySize').funct(evt);
- });
-
- btn.setAttribute('title', mxResources.get('copySize') + ' (' +
- this.editorUi.actions.get('copySize').shortcut + ')');
- btn.style.width = '210px';
- btn.style.marginBottom = '2px';
-
- div.appendChild(btn);
- count++;
-
- if (ui.copiedSize != null && ss.vertices.length > 0)
- {
- var btn2 = mxUtils.button(mxResources.get('pasteSize'), function(evt)
- {
- ui.actions.get('pasteSize').funct(evt);
- });
-
- btn2.setAttribute('title', mxResources.get('pasteSize') + ' (' +
- this.editorUi.actions.get('pasteSize').shortcut + ')');
-
- div.appendChild(btn2);
- count++;
-
- btn.style.width = '104px';
- btn.style.marginBottom = '2px';
- btn2.style.width = '104px';
- btn2.style.marginBottom = '2px';
- }
- }
-
if (graph.getSelectionCount() > 0)
{
- if (count > 0)
- {
- mxUtils.br(div);
- count = 0;
- }
-
var btn = mxUtils.button(mxResources.get('copyData'), function(evt)
{
if (mxEvent.isShiftDown(evt))
@@ -2092,82 +1755,26 @@ ArrangePanel.prototype.addGroupOps = function(div)
btn.style.width = '104px';
btn.style.marginBottom = '2px';
+ btn.style.marginRight = '2px';
btn2.style.width = '104px';
btn2.style.marginBottom = '2px';
}
+
+ mxUtils.br(div);
}
- if (ss.cells.length == 1 && graph.getModel().isVertex(cell) && !ss.row &&
- !ss.cell && graph.getModel().isVertex(graph.getModel().getParent(cell)))
- {
- if (count > 0)
- {
- mxUtils.br(div);
- }
-
- btn = mxUtils.button(mxResources.get('removeFromGroup'), function(evt)
- {
- ui.actions.get('removeFromGroup').funct();
- })
-
- btn.setAttribute('title', mxResources.get('removeFromGroup'));
- btn.style.width = '210px';
- btn.style.marginBottom = '2px';
- div.appendChild(btn);
- count++;
- }
- else if (ss.cells.length > 0)
+ var clearWaypoints = this.addAction(div, 'clearWaypoints');
+
+ if (clearWaypoints != null)
{
- if (count > 0)
- {
- mxUtils.br(div);
- }
-
- btn = mxUtils.button(mxResources.get('clearWaypoints'), mxUtils.bind(this, function(evt)
- {
- this.editorUi.actions.get('clearWaypoints').funct(evt, evt);
- }));
-
- btn.setAttribute('title', mxResources.get('clearWaypoints') +
+ mxUtils.br(div);
+ clearWaypoints.setAttribute('title', mxResources.get('clearWaypoints') +
' (' + this.editorUi.actions.get('clearWaypoints').shortcut + ')' +
' Shift+Click to Clear Anchor Points');
- btn.style.width = '210px';
- btn.style.marginBottom = '2px';
- div.appendChild(btn);
-
count++;
}
-
- if (ss.cells.length == 1)
- {
- if (count > 0)
- {
- mxUtils.br(div);
- }
-
- btn = mxUtils.button(mxResources.get('editData'), mxUtils.bind(this, function(evt)
- {
- this.editorUi.actions.get('editData').funct();
- }));
-
- btn.setAttribute('title', mxResources.get('editData') + ' (' + this.editorUi.actions.get('editData').shortcut + ')');
- btn.style.width = '104px';
- btn.style.marginBottom = '2px';
- div.appendChild(btn);
- count++;
- btn = mxUtils.button(mxResources.get('editLink'), mxUtils.bind(this, function(evt)
- {
- this.editorUi.actions.get('editLink').funct();
- }));
-
- btn.setAttribute('title', mxResources.get('editLink') + ' (' + this.editorUi.actions.get('editLink').shortcut + ')');
- btn.style.width = '104px';
- btn.style.marginLeft = '2px';
- btn.style.marginBottom = '2px';
- div.appendChild(btn);
- count++;
- }
+ count += this.addActions(div, ['editData', 'editLink']);
if (count == 0)
{
@@ -2299,7 +1906,7 @@ ArrangePanel.prototype.addAngle = function(div)
var ui = this.editorUi;
var editor = ui.editor;
var graph = editor.graph;
- var ss = this.format.getSelectionState();
+ var ss = ui.getSelectionState();
div.style.paddingBottom = '8px';
@@ -2365,7 +1972,7 @@ ArrangePanel.prototype.addAngle = function(div)
{
if (force || document.activeElement != input)
{
- ss = this.format.getSelectionState();
+ ss = ui.getSelectionState();
var tmp = parseFloat(mxUtils.getValue(ss.style, mxConstants.STYLE_ROTATION, 0));
input.value = (isNaN(tmp)) ? '' : tmp + '°';
}
@@ -2452,7 +2059,7 @@ ArrangePanel.prototype.addGeometry = function(container)
var ui = this.editorUi;
var graph = ui.editor.graph;
var model = graph.getModel();
- var rect = this.format.getSelectionState();
+ var rect = ui.getSelectionState();
var div = this.createPanel();
div.style.paddingBottom = '8px';
@@ -2618,7 +2225,7 @@ ArrangePanel.prototype.addGeometry = function(container)
var listener = mxUtils.bind(this, function(sender, evt, force)
{
- rect = this.format.getSelectionState();
+ rect = ui.getSelectionState();
if (!rect.containsLabel && rect.vertices.length == graph.getSelectionCount() &&
rect.width != null && rect.height != null)
@@ -2758,7 +2365,7 @@ ArrangePanel.prototype.addGeometryHandler = function(input, fn)
graph.getModel().beginUpdate();
try
{
- var cells = panel.format.getSelectionState().cells;
+ var cells = ui.getSelectionState().cells;
for (var i = 0; i < cells.length; i++)
{
@@ -2814,7 +2421,6 @@ ArrangePanel.prototype.addEdgeGeometryHandler = function(input, fn)
var ui = this.editorUi;
var graph = ui.editor.graph;
var initialValue = null;
- var panel = this;
function update(evt)
{
@@ -2831,7 +2437,7 @@ ArrangePanel.prototype.addEdgeGeometryHandler = function(input, fn)
graph.getModel().beginUpdate();
try
{
- var cells = panel.format.getSelectionState().cells;
+ var cells = ui.getSelectionState().cells;
for (var i = 0; i < cells.length; i++)
{
@@ -2879,7 +2485,7 @@ ArrangePanel.prototype.addEdgeGeometry = function(container)
{
var ui = this.editorUi;
var graph = ui.editor.graph;
- var rect = this.format.getSelectionState();
+ var rect = ui.getSelectionState();
var div = this.createPanel();
var span = document.createElement('div');
@@ -2907,7 +2513,7 @@ ArrangePanel.prototype.addEdgeGeometry = function(container)
if (value != mxUtils.getValue(rect.style, 'width', mxCellRenderer.defaultShapes['flexArrow'].prototype.defaultWidth))
{
- var cells = this.format.getSelectionState().cells;
+ var cells = ui.getSelectionState().cells;
graph.setCellStyles('width', value, cells);
ui.fireEvent(new mxEventObject('styleChanged', 'keys', ['width'],
'values', [value], 'cells', cells));
@@ -2976,7 +2582,7 @@ ArrangePanel.prototype.addEdgeGeometry = function(container)
var listener = mxUtils.bind(this, function(sender, evt, force)
{
- rect = this.format.getSelectionState();
+ rect = ui.getSelectionState();
var cell = rect.cells[0];
if (rect.style.shape == 'link' || rect.style.shape == 'flexArrow')
@@ -3079,7 +2685,7 @@ TextFormatPanel.prototype.addFont = function(container)
var ui = this.editorUi;
var editor = ui.editor;
var graph = editor.graph;
- var ss = this.format.getSelectionState();
+ var ss = ui.getSelectionState();
var title = this.createTitle(mxResources.get('font'));
title.style.paddingLeft = '14px';
@@ -3745,12 +3351,9 @@ TextFormatPanel.prototype.addFont = function(container)
{
var state = graph.view.getState(cell);
- return state == null ||
- this.format.isAutoSizeState(state) ||
- graph.getModel().isEdge(cell) ||
- (!graph.isTableRow(cell) &&
- !graph.isTableCell(cell) &&
- !graph.isCellResizable(cell));
+ return state == null || graph.isAutoSizeState(state) ||
+ graph.getModel().isEdge(cell) || (!graph.isTableRow(cell) &&
+ !graph.isTableCell(cell) && !graph.isCellResizable(cell));
}));
var wwOpt = this.createCellOption(mxResources.get('wordWrap'), mxConstants.STYLE_WHITE_SPACE,
@@ -4150,7 +3753,7 @@ TextFormatPanel.prototype.addFont = function(container)
var listener = mxUtils.bind(this, function(sender, evt, force)
{
- ss = this.format.getSelectionState();
+ ss = ui.getSelectionState();
var fontStyle = mxUtils.getValue(ss.style, mxConstants.STYLE_FONTSTYLE, 0);
setSelected(fontStyleItems[0], (fontStyle & mxConstants.FONT_BOLD) == mxConstants.FONT_BOLD);
setSelected(fontStyleItems[1], (fontStyle & mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC);
@@ -4556,7 +4159,7 @@ StyleFormatPanel.prototype.init = function()
var ui = this.editorUi;
var editor = ui.editor;
var graph = editor.graph;
- var ss = this.format.getSelectionState();
+ var ss = ui.getSelectionState();
if (!ss.containsLabel && ss.cells.length > 0)
{
@@ -4611,7 +4214,7 @@ StyleFormatPanel.prototype.addSvgStyles = function(container)
{
var ui = this.editorUi;
var graph = ui.editor.graph;
- var ss = this.format.getSelectionState();
+ var ss = ui.getSelectionState();
container.style.paddingTop = '6px';
container.style.paddingBottom = '6px';
container.style.fontWeight = 'bold';
@@ -4697,7 +4300,7 @@ StyleFormatPanel.prototype.addSvgRule = function(container, rule, svg, styleElem
graph.setCellStyles(mxConstants.STYLE_IMAGE, 'data:image/svg+xml,' +
((window.btoa) ? btoa(xml) : Base64.encode(xml, true)),
- this.format.getSelectionState().cells);
+ ui.getSelectionState().cells);
}), '#ffffff',
{
install: function(apply)
@@ -4728,7 +4331,7 @@ StyleFormatPanel.prototype.addSvgRule = function(container, rule, svg, styleElem
*/
StyleFormatPanel.prototype.addEditOps = function(div)
{
- var ss = this.format.getSelectionState();
+ var ss = this.editorUi.getSelectionState();
var btn = null;
if (ss.cells.length == 1)
@@ -4779,7 +4382,7 @@ StyleFormatPanel.prototype.addFill = function(container)
{
var ui = this.editorUi;
var graph = ui.editor.graph;
- var ss = this.format.getSelectionState();
+ var ss = ui.getSelectionState();
container.style.paddingTop = '6px';
container.style.paddingBottom = '6px';
@@ -4866,7 +4469,7 @@ StyleFormatPanel.prototype.addFill = function(container)
var listener = mxUtils.bind(this, function()
{
- ss = this.format.getSelectionState();
+ ss = ui.getSelectionState();
var value = mxUtils.getValue(ss.style, mxConstants.STYLE_GRADIENT_DIRECTION, mxConstants.DIRECTION_SOUTH);
var fillStyle = mxUtils.getValue(ss.style, 'fillStyle', 'auto');
@@ -4933,7 +4536,7 @@ StyleFormatPanel.prototype.addFill = function(container)
*/
StyleFormatPanel.prototype.getCustomColors = function()
{
- var ss = this.format.getSelectionState();
+ var ss = this.editorUi.getSelectionState();
var result = [];
if (ss.style.shape == 'swimlane' || ss.style.shape == 'table')
@@ -4951,7 +4554,7 @@ StyleFormatPanel.prototype.addStroke = function(container)
{
var ui = this.editorUi;
var graph = ui.editor.graph;
- var ss = this.format.getSelectionState();
+ var ss = ui.getSelectionState();
container.style.paddingTop = '6px';
container.style.paddingBottom = '4px';
@@ -5244,6 +4847,11 @@ StyleFormatPanel.prototype.addStroke = function(container)
}
menu.div.style.width = '40px';
+
+ window.setTimeout(mxUtils.bind(this, function()
+ {
+ mxUtils.fit(menu.div);
+ }), 0);
}
}));
@@ -5302,6 +4910,11 @@ StyleFormatPanel.prototype.addStroke = function(container)
}
menu.div.style.width = '40px';
+
+ window.setTimeout(mxUtils.bind(this, function()
+ {
+ mxUtils.fit(menu.div);
+ }), 0);
}
}));
@@ -5441,8 +5054,7 @@ StyleFormatPanel.prototype.addStroke = function(container)
var listener = mxUtils.bind(this, function(sender, evt, force)
{
- ss = this.format.getSelectionState();
- var color = mxUtils.getValue(ss.style, strokeKey, null);
+ ss = ui.getSelectionState();
if (force || document.activeElement != input)
{
@@ -5687,17 +5299,16 @@ StyleFormatPanel.prototype.addStroke = function(container)
*/
StyleFormatPanel.prototype.addLineJumps = function(container)
{
- var ss = this.format.getSelectionState();
+ var ui = this.editorUi;
+ var editor = ui.editor;
+ var graph = editor.graph;
+ var ss = ui.getSelectionState();
if (Graph.lineJumpsEnabled && ss.edges.length > 0 &&
ss.vertices.length == 0 && ss.lineJumps)
{
container.style.padding = '2px 0px 24px 14px';
- var ui = this.editorUi;
- var editor = ui.editor;
- var graph = editor.graph;
-
var span = document.createElement('div');
span.style.position = 'absolute';
span.style.maxWidth = '82px';
@@ -5765,7 +5376,7 @@ StyleFormatPanel.prototype.addLineJumps = function(container)
var listener = mxUtils.bind(this, function(sender, evt, force)
{
- ss = this.format.getSelectionState();
+ ss = ui.getSelectionState();
styleSelect.value = mxUtils.getValue(ss.style, 'jumpStyle', 'none');
if (force || document.activeElement != jumpSize)
@@ -5797,7 +5408,7 @@ StyleFormatPanel.prototype.addEffects = function(div)
var ui = this.editorUi;
var editor = ui.editor;
var graph = editor.graph;
- var ss = this.format.getSelectionState();
+ var ss = ui.getSelectionState();
div.style.paddingTop = '4px';
div.style.paddingBottom = '0px';
@@ -5837,7 +5448,7 @@ StyleFormatPanel.prototype.addEffects = function(div)
var listener = mxUtils.bind(this, function(sender, evt, force)
{
- ss = this.format.getSelectionState();
+ ss = ui.getSelectionState();
left.innerHTML = '';
right.innerHTML = '';
@@ -5880,15 +5491,8 @@ StyleFormatPanel.prototype.addStyleOps = function(div)
{
div.style.paddingTop = '10px';
div.style.paddingBottom = '10px';
-
- var btn = mxUtils.button(mxResources.get('setAsDefaultStyle'), mxUtils.bind(this, function(evt)
- {
- this.editorUi.actions.get('setAsDefaultStyle').funct();
- }));
-
- btn.setAttribute('title', mxResources.get('setAsDefaultStyle') + ' (' + this.editorUi.actions.get('setAsDefaultStyle').shortcut + ')');
- btn.style.width = '210px';
- div.appendChild(btn);
+
+ this.addActions(div, ['setAsDefaultStyle']);
return div;
};
@@ -6965,26 +6569,8 @@ DiagramFormatPanel.prototype.addPaperSize = function(div)
*/
DiagramFormatPanel.prototype.addStyleOps = function(div)
{
- var btn = mxUtils.button(mxResources.get('editData'), mxUtils.bind(this, function(evt)
- {
- this.editorUi.actions.get('editData').funct();
- }));
-
- btn.setAttribute('title', mxResources.get('editData') + ' (' + this.editorUi.actions.get('editData').shortcut + ')');
- btn.style.width = '210px';
- btn.style.marginBottom = '2px';
- div.appendChild(btn);
-
- mxUtils.br(div);
-
- btn = mxUtils.button(mxResources.get('clearDefaultStyle'), mxUtils.bind(this, function(evt)
- {
- this.editorUi.actions.get('clearDefaultStyle').funct();
- }));
-
- btn.setAttribute('title', mxResources.get('clearDefaultStyle') + ' (' + this.editorUi.actions.get('clearDefaultStyle').shortcut + ')');
- btn.style.width = '210px';
- div.appendChild(btn);
+ this.addActions(div, ['editData']);
+ this.addActions(div, ['clearDefaultStyle']);
return div;
};
diff --git a/src/main/webapp/js/grapheditor/Graph.js b/src/main/webapp/js/grapheditor/Graph.js
index 8d3d50e0..6c9e2f37 100644
--- a/src/main/webapp/js/grapheditor/Graph.js
+++ b/src/main/webapp/js/grapheditor/Graph.js
@@ -2059,6 +2059,14 @@ Graph.prototype.standalone = false;
Graph.prototype.enableFlowAnimation = false;
/**
+ * Background color for inactive tabs.
+ */
+Graph.prototype.roundableShapes = ['label', 'rectangle', 'internalStorage', 'corner',
+ 'parallelogram', 'swimlane', 'triangle', 'trapezoid', 'ext', 'step', 'tee', 'process',
+ 'link', 'rhombus', 'offPageConnector', 'loopLimit', 'hexagon', 'manualInput', 'card',
+ 'curlyBracket', 'singleArrow', 'callout', 'doubleArrow', 'flexArrow', 'umlLifeline'];
+
+/**
* Installs child layout styles.
*/
Graph.prototype.init = function(container)
@@ -2183,6 +2191,96 @@ Graph.prototype.init = function(container)
* Contains the offset.
*/
Graph.prototype.currentTranslate = new mxPoint(0, 0);
+
+ /**
+ * Returns information about the current selection.
+ */
+ Graph.prototype.isFillState = function(state)
+ {
+ return !this.isSpecialColor(state.style[mxConstants.STYLE_FILLCOLOR]) && (this.model.isVertex(state.cell) ||
+ mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null) == 'arrow' ||
+ mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null) == 'filledEdge' ||
+ mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null) == 'flexArrow');
+ };
+
+ /**
+ * Returns information about the current selection.
+ */
+ Graph.prototype.isStrokeState = function(state)
+ {
+ return !this.isSpecialColor(state.style[mxConstants.STYLE_STROKECOLOR]);
+ };
+
+ /**
+ * Returns information about the current selection.
+ */
+ Graph.prototype.isSpecialColor = function(color)
+ {
+ return mxUtils.indexOf([mxConstants.STYLE_STROKECOLOR,
+ mxConstants.STYLE_FILLCOLOR, 'inherit', 'swimlane',
+ 'indicated'], color) >= 0;
+ };
+
+ /**
+ * Returns information about the current selection.
+ */
+ Graph.prototype.isGlassState = function(state)
+ {
+ var shape = mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null);
+
+ return (shape == 'label' || shape == 'rectangle' || shape == 'internalStorage' ||
+ shape == 'ext' || shape == 'umlLifeline' || shape == 'swimlane' ||
+ shape == 'process');
+ };
+
+ /**
+ * Returns information about the current selection.
+ */
+ Graph.prototype.isRoundedState = function(state)
+ {
+ return (state.shape != null) ? state.shape.isRoundable() :
+ mxUtils.indexOf(this.roundableShapes, mxUtils.getValue(state.style,
+ mxConstants.STYLE_SHAPE, null)) >= 0;
+ };
+
+ /**
+ * Returns information about the current selection.
+ */
+ Graph.prototype.isLineJumpState = function(state)
+ {
+ var shape = mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null);
+ var curved = mxUtils.getValue(state.style, mxConstants.STYLE_CURVED, false);
+
+ return !curved && (shape == 'connector' || shape == 'filledEdge');
+ };
+
+ /**
+ * Returns information about the current selection.
+ */
+ Graph.prototype.isAutoSizeState = function(state)
+ {
+ return mxUtils.getValue(state.style, mxConstants.STYLE_AUTOSIZE, null) == '1';
+ };
+
+ /**
+ * Returns information about the current selection.
+ */
+ Graph.prototype.isImageState = function(state)
+ {
+ var shape = mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null);
+
+ return (shape == 'label' || shape == 'image');
+ };
+
+ /**
+ * Returns information about the current selection.
+ */
+ Graph.prototype.isShadowState = function(state)
+ {
+ var shape = mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null);
+
+ return (shape != 'image');
+ };
/**
*
diff --git a/src/main/webapp/js/grapheditor/Shapes.js b/src/main/webapp/js/grapheditor/Shapes.js
index a969512a..43fa08b7 100644
--- a/src/main/webapp/js/grapheditor/Shapes.js
+++ b/src/main/webapp/js/grapheditor/Shapes.js
@@ -5125,7 +5125,7 @@
StyleFormatPanel.prototype.getCustomColors = function()
{
- var ss = this.format.getSelectionState();
+ var ss = this.editorUi.getSelectionState();
var result = styleFormatPanelGetCustomColors.apply(this, arguments);
if (ss.style.shape == 'umlFrame')
diff --git a/src/main/webapp/js/viewer-static.min.js b/src/main/webapp/js/viewer-static.min.js
index 223d6b83..1319af74 100644
--- a/src/main/webapp/js/viewer-static.min.js
+++ b/src/main/webapp/js/viewer-static.min.js
@@ -202,7 +202,7 @@ null!=a&&(DRAWIO_GITLAB_ID=a);window.DRAWIO_LOG_URL=window.DRAWIO_LOG_URL||"";a=
if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==urlParams.local||"1"==urlParams.lockdown)urlParams.picker="0",urlParams.gapi="0",urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0";
"se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1");
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";
-window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"15.9.6",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
+window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"16.0.0",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform),IS_WEBVIEW:/((iPhone|iPod|iPad).*AppleWebKit(?!.*Version)|; wv)/i.test(navigator.userAgent),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&
0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!==document.createElementNS("http://www.w3.org/2000/svg","foreignObject").toString()||0<=navigator.userAgent.indexOf("Opera/"),
@@ -242,79 +242,79 @@ return a},remove:function(a,b){var c=null;if("object"==typeof b)for(var d=mxUtil
if(c&&b.childNodes&&0<b.childNodes.length)for(e=0;e<b.childNodes.length;e++)d.appendChild(mxUtils.importNodeImplementation(a,b.childNodes[e],c));return d;case 3:case 4:case 8:return a.createTextNode(null!=b.nodeValue?b.nodeValue:b.value)}},createXmlDocument:function(){var a=null;document.implementation&&document.implementation.createDocument?a=document.implementation.createDocument("","",null):"ActiveXObject"in window&&(a=mxUtils.createMsXmlDocument());return a},createMsXmlDocument:function(){var a=
new ActiveXObject("Microsoft.XMLDOM");a.async=!1;a.validateOnParse=!1;a.resolveExternals=!1;return a},parseXml:function(){return window.DOMParser?function(a){return(new DOMParser).parseFromString(a,"text/xml")}:function(a){var b=mxUtils.createMsXmlDocument();b.loadXML(a);return b}}(),clearSelection:function(){return document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&
window.getSelection().removeAllRanges()}:function(){}}(),removeWhitespace:function(a,b){for(var c=b?a.previousSibling:a.nextSibling;null!=c&&c.nodeType==mxConstants.NODETYPE_TEXT;){var d=b?c.previousSibling:c.nextSibling,e=mxUtils.getTextContent(c);0==mxUtils.trim(e).length&&c.parentNode.removeChild(c);c=d}},htmlEntities:function(a,b){a=String(a||"");a=a.replace(/&/g,"&amp;");a=a.replace(/"/g,"&quot;");a=a.replace(/\'/g,"&#39;");a=a.replace(/</g,"&lt;");a=a.replace(/>/g,"&gt;");if(null==b||b)a=a.replace(/\n/g,
-"&#xa;");return a},getXml:function(a,b){var c="";mxClient.IS_IE||mxClient.IS_IE11?c=mxUtils.getPrettyXml(a,"","",""):null!=window.XMLSerializer?c=(new XMLSerializer).serializeToString(a):null!=a.xml&&(c=a.xml.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n"));return c.replace(/\n/g,b||"&#xa;")},getPrettyXml:function(a,b,c,d,e){var f=[];if(null!=a)if(b=null!=b?b:" ",c=null!=c?c:"",d=null!=d?d:"\n",null!=a.namespaceURI&&a.namespaceURI!=e&&(e=a.namespaceURI,null==a.getAttribute("xmlns")&&
-a.setAttribute("xmlns",a.namespaceURI)),a.nodeType==mxConstants.NODETYPE_DOCUMENT)f.push(mxUtils.getPrettyXml(a.documentElement,b,c,d,e));else if(a.nodeType==mxConstants.NODETYPE_DOCUMENT_FRAGMENT){var g=a.firstChild;if(null!=g)for(;null!=g;)f.push(mxUtils.getPrettyXml(g,b,c,d,e)),g=g.nextSibling}else if(a.nodeType==mxConstants.NODETYPE_COMMENT)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+"\x3c!--"+a+"--\x3e"+d);else if(a.nodeType==mxConstants.NODETYPE_TEXT)a=mxUtils.trim(mxUtils.getTextContent(a)),
-0<a.length&&f.push(c+mxUtils.htmlEntities(a,!1)+d);else if(a.nodeType==mxConstants.NODETYPE_CDATA)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+"<![CDATA["+a+"]]"+d);else{f.push(c+"<"+a.nodeName);g=a.attributes;if(null!=g)for(var k=0;k<g.length;k++){var l=mxUtils.htmlEntities(g[k].value);f.push(" "+g[k].nodeName+'="'+l+'"')}g=a.firstChild;if(null!=g){for(f.push(">"+d);null!=g;)f.push(mxUtils.getPrettyXml(g,b,c+b,d,e)),g=g.nextSibling;f.push(c+"</"+a.nodeName+">"+d)}else f.push(" />"+d)}return f.join("")},
-extractTextWithWhitespace:function(a){function b(a){if(1!=a.length||"BR"!=a[0].nodeName&&"\n"!=a[0].innerHTML)for(var e=0;e<a.length;e++){var g=a[e];"BR"==g.nodeName||"\n"==g.innerHTML||(1==a.length||0==e)&&"DIV"==g.nodeName&&"<br>"==g.innerHTML.toLowerCase()?d.push("\n"):(3===g.nodeType||4===g.nodeType?0<g.nodeValue.length&&d.push(g.nodeValue):8!==g.nodeType&&0<g.childNodes.length&&b(g.childNodes),e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n"))}}var c="BLOCKQUOTE DIV H1 H2 H3 H4 H5 H6 OL P PRE TABLE UL".split(" "),
-d=[];b(a);return d.join("")},replaceTrailingNewlines:function(a,b){for(var c="";0<a.length&&"\n"==a.charAt(a.length-1);)a=a.substring(0,a.length-1),c+=b;return a+c},getTextContent:function(a){return mxClient.IS_IE&&void 0!==a.innerText?a.innerText:null!=a?a[void 0===a.textContent?"text":"textContent"]:""},setTextContent:function(a,b){void 0!==a.innerText?a.innerText=b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:
-""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName),b.push('="'),b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:
-function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c=null,d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");
-mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,
-b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement;try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},
-fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null,"GET",!1);a.send();return a},get:function(a,b,c,d,e,f,g){a=new mxXmlRequest(a,null,"GET");var k=a.setRequestHeaders;g&&(a.setRequestHeaders=
-function(a,b){k.apply(this,arguments);for(var c in g)a.setRequestHeader(c,g[c])});null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},
-loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,
-e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(null!=a[c]&&null==b[c]||null==a[c]&&null!=b[c]||null!=a[c]&&null!=b[c]&&(a[c].x!=b[c].x||a[c].y!=b[c].y))return!1;return!0},equalEntries:function(a,b){var c=0;if(null==a&&null!=b||null!=a&&null==
-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),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<=
-d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;
-b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,
-mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=
-b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+
-d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},intersectsPoints:function(a,b){for(var c=0;c<b.length-1;c++)if(mxUtils.rectangleIntersectsSegment(a,b[c],b[c+1]))return!0;return!1},rectangleIntersectsSegment:function(a,
-b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+
-g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,
-mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();
-null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:
-document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a);null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+
-(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;
-e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,
-b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;b=document.createElement("img");b.setAttribute("src",a);b.setAttribute("border","0");return b},
-sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>
-a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=
-a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},hex2rgb:function(a){if(null!=a&&7==a.length&&"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16);a=parseInt(a.substring(5,7),16);a="rgb("+b+", "+c+", "+a+")"}return a},
-hex2rgba:function(a){if(null!=a&&7<=a.length&&"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16),d=parseInt(a.substring(5,7),16),e=1;7<a.length&&(e=parseInt(a.substring(7,9),16)/255);a="rgba("+b+", "+c+", "+d+", "+e+")"}return a},rgba2hex:function(a){return(rgb=a&&a.match?a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i):a)&&4===rgb.length?"#"+("0"+parseInt(rgb[1],10).toString(16)).slice(-2)+("0"+parseInt(rgb[2],10).toString(16)).slice(-2)+
-("0"+parseInt(rgb[3],10).toString(16)).slice(-2):a},setCssText:function(a,b){if(null!=a&&null!=b)for(var c=b.split(";"),d=0;d<c.length;d++){var e=c[d].split(":");1<e.length&&(e[0]=mxUtils.trim(e[0].replace(/-([a-z])/gi,function(a,b){return b.toUpperCase()})),a[e[0]]=mxUtils.trim(e[1]))}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):
-0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,
-b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,b){var c=-.5,d=-.5;a==mxConstants.ALIGN_LEFT?c=0:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_TOP?
-d=0:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d,e){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var f=document.createElement("div");f.style.fontFamily=c;f.style.fontSize=Math.round(b)+"px";f.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";null!=e&&((e&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(f.style.fontWeight="bold"),(e&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(f.style.fontStyle=
-"italic"),b=[],(e&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&b.push("underline"),(e&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&b.push("line-through"),0<b.length&&(f.style.textDecoration=b.join(" ")));f.style.position="absolute";f.style.visibility="hidden";f.style.display="inline-block";f.style.zoom="1";null!=d?(f.style.width=d+"px",f.style.whiteSpace="normal"):f.style.whiteSpace="nowrap";f.innerHTML=a;document.body.appendChild(f);a=new mxRectangle(0,0,f.offsetWidth,
-f.offsetHeight);document.body.removeChild(f);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),
-f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=n,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=
-c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=
-null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;
-d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+k+"px;top:"+l+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");
-for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==
-a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+k+","+l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=
-document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;");c.appendChild(d);c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+
-"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign",
-"bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?
-c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=
-l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",
-RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,
-NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00",OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",
-CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,
-HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,DEFAULT_TEXT_DIRECTION:"",LINE_HEIGHT:1.2,WORD_WRAP:"normal",ABSOLUTE_LINE_HEIGHT:!1,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,
-ARROW_SPACING:0,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,827,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,827),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_PORT_CONSTRAINT_ROTATION:"portConstraintRotation",STYLE_SOURCE_PORT_CONSTRAINT:"sourcePortConstraint",
-STYLE_TARGET_PORT_CONSTRAINT:"targetPortConstraint",STYLE_OPACITY:"opacity",STYLE_FILL_OPACITY:"fillOpacity",STYLE_STROKE_OPACITY:"strokeOpacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_TEXT_DIRECTION:"textDirection",STYLE_OVERFLOW:"overflow",STYLE_BLOCK_SPACING:"blockSpacing",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_DX:"exitDx",STYLE_EXIT_DY:"exitDy",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_DX:"entryDx",
-STYLE_ENTRY_DY:"entryDy",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_POINTER_EVENTS:"pointerEvents",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_MARGIN:"margin",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_WIDTH:"labelWidth",
-STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",
-STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",
-STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_FIX_DASH:"fixDash",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_ABSOLUTE_ARCSIZE:"absoluteArcSize",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",
-STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ANCHOR_POINT_DIRECTION:"anchorPointDirection",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",
-STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",
-STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",
-ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",
-TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",
-PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_HEXAGON:"hexagonPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments.length;b+=2)null!=arguments[b+1]&&(this.properties[arguments[b]]=arguments[b+1])}mxEventObject.prototype.name=null;mxEventObject.prototype.properties=null;mxEventObject.prototype.consumed=!1;mxEventObject.prototype.getName=function(){return this.name};
-mxEventObject.prototype.getProperties=function(){return this.properties};mxEventObject.prototype.getProperty=function(a){return this.properties[a]};mxEventObject.prototype.isConsumed=function(){return this.consumed};mxEventObject.prototype.consume=function(){this.consumed=!0};function mxMouseEvent(a,b){this.evt=a;this.sourceState=this.state=b}mxMouseEvent.prototype.consumed=!1;mxMouseEvent.prototype.evt=null;mxMouseEvent.prototype.graphX=null;mxMouseEvent.prototype.graphY=null;
-mxMouseEvent.prototype.state=null;mxMouseEvent.prototype.sourceState=null;mxMouseEvent.prototype.getEvent=function(){return this.evt};mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)};mxMouseEvent.prototype.isSource=function(a){return null!=a?mxUtils.isAncestorNode(a.node,this.getSource()):!1};mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())};mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())};
-mxMouseEvent.prototype.getGraphX=function(){return this.graphX};mxMouseEvent.prototype.getGraphY=function(){return this.graphY};mxMouseEvent.prototype.getState=function(){return this.state};mxMouseEvent.prototype.getCell=function(){var a=this.getState();return null!=a?a.cell:null};mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())};mxMouseEvent.prototype.isConsumed=function(){return this.consumed};
+"&#xa;");return a},decodeHtml:function(a){var b=document.createElement("textarea");b.innerHTML=a;return b.value},getXml:function(a,b){var c="";mxClient.IS_IE||mxClient.IS_IE11?c=mxUtils.getPrettyXml(a,"","",""):null!=window.XMLSerializer?c=(new XMLSerializer).serializeToString(a):null!=a.xml&&(c=a.xml.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n"));return c.replace(/\n/g,b||"&#xa;")},getPrettyXml:function(a,b,c,d,e){var f=[];if(null!=a)if(b=null!=b?b:" ",c=null!=c?c:"",d=
+null!=d?d:"\n",null!=a.namespaceURI&&a.namespaceURI!=e&&(e=a.namespaceURI,null==a.getAttribute("xmlns")&&a.setAttribute("xmlns",a.namespaceURI)),a.nodeType==mxConstants.NODETYPE_DOCUMENT)f.push(mxUtils.getPrettyXml(a.documentElement,b,c,d,e));else if(a.nodeType==mxConstants.NODETYPE_DOCUMENT_FRAGMENT){var g=a.firstChild;if(null!=g)for(;null!=g;)f.push(mxUtils.getPrettyXml(g,b,c,d,e)),g=g.nextSibling}else if(a.nodeType==mxConstants.NODETYPE_COMMENT)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+
+"\x3c!--"+a+"--\x3e"+d);else if(a.nodeType==mxConstants.NODETYPE_TEXT)a=mxUtils.trim(mxUtils.getTextContent(a)),0<a.length&&f.push(c+mxUtils.htmlEntities(a,!1)+d);else if(a.nodeType==mxConstants.NODETYPE_CDATA)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+"<![CDATA["+a+"]]"+d);else{f.push(c+"<"+a.nodeName);g=a.attributes;if(null!=g)for(var k=0;k<g.length;k++){var l=mxUtils.htmlEntities(g[k].value);f.push(" "+g[k].nodeName+'="'+l+'"')}g=a.firstChild;if(null!=g){for(f.push(">"+d);null!=g;)f.push(mxUtils.getPrettyXml(g,
+b,c+b,d,e)),g=g.nextSibling;f.push(c+"</"+a.nodeName+">"+d)}else f.push(" />"+d)}return f.join("")},extractTextWithWhitespace:function(a){function b(a){if(1!=a.length||"BR"!=a[0].nodeName&&"\n"!=a[0].innerHTML)for(var e=0;e<a.length;e++){var g=a[e];"BR"==g.nodeName||"\n"==g.innerHTML||(1==a.length||0==e)&&"DIV"==g.nodeName&&"<br>"==g.innerHTML.toLowerCase()?d.push("\n"):(3===g.nodeType||4===g.nodeType?0<g.nodeValue.length&&d.push(g.nodeValue):8!==g.nodeType&&0<g.childNodes.length&&b(g.childNodes),
+e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n"))}}var c="BLOCKQUOTE DIV H1 H2 H3 H4 H5 H6 OL P PRE TABLE UL".split(" "),d=[];b(a);return d.join("")},replaceTrailingNewlines:function(a,b){for(var c="";0<a.length&&"\n"==a.charAt(a.length-1);)a=a.substring(0,a.length-1),c+=b;return a+c},getTextContent:function(a){return mxClient.IS_IE&&void 0!==a.innerText?a.innerText:null!=a?a[void 0===a.textContent?"text":"textContent"]:""},setTextContent:function(a,b){void 0!==a.innerText?a.innerText=
+b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName),b.push('="'),
+b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c=null,
+d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},
+linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement;
+try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null,
+"GET",!1);a.send();return a},get:function(a,b,c,d,e,f,g){a=new mxXmlRequest(a,null,"GET");var k=a.setRequestHeaders;g&&(a.setRequestHeaders=function(a,b){k.apply(this,arguments);for(var c in g)a.setRequestHeader(c,g[c])});null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&
+b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&
+(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(null!=a[c]&&null==b[c]||null==a[c]&&null!=b[c]||null!=a[c]&&
+null!=b[c]&&(a[c].x!=b[c].x||a[c].y!=b[c].y))return!1;return!0},equalEntries:function(a,b){var c=0;if(null==a&&null!=b||null!=a&&null==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),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<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=
+mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,
+e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,
+b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,
+d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},intersectsPoints:function(a,
+b){for(var c=0;c<b.length-1;c++)if(mxUtils.rectangleIntersectsSegment(a,b[c],b[c+1]))return!0;return!1},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,
+b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=
+n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=
+mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:
+(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a);null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,
+b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===
+String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},
+relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?
+"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;b=document.createElement("img");b.setAttribute("src",a);b.setAttribute("border","0");return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},
+getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,
+b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},hex2rgb:function(a){if(null!=a&&7==a.length&&
+"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16);a=parseInt(a.substring(5,7),16);a="rgb("+b+", "+c+", "+a+")"}return a},hex2rgba:function(a){if(null!=a&&7<=a.length&&"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16),d=parseInt(a.substring(5,7),16),e=1;7<a.length&&(e=parseInt(a.substring(7,9),16)/255);a="rgba("+b+", "+c+", "+d+", "+e+")"}return a},rgba2hex:function(a){return(rgb=a&&a.match?a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i):
+a)&&4===rgb.length?"#"+("0"+parseInt(rgb[1],10).toString(16)).slice(-2)+("0"+parseInt(rgb[2],10).toString(16)).slice(-2)+("0"+parseInt(rgb[3],10).toString(16)).slice(-2):a},setCssText:function(a,b){if(null!=a&&null!=b)for(var c=b.split(";"),d=0;d<c.length;d++){var e=c[d].split(":");1<e.length&&(e[0]=mxUtils.trim(e[0].replace(/-([a-z])/gi,function(a,b){return b.toUpperCase()})),a[e[0]]=mxUtils.trim(e[1]))}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==
+a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=
+b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,
+b){var c=-.5,d=-.5;a==mxConstants.ALIGN_LEFT?c=0:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_TOP?d=0:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d,e){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var f=document.createElement("div");f.style.fontFamily=c;f.style.fontSize=Math.round(b)+"px";f.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";null!=e&&((e&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&
+(f.style.fontWeight="bold"),(e&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(f.style.fontStyle="italic"),b=[],(e&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&b.push("underline"),(e&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&b.push("line-through"),0<b.length&&(f.style.textDecoration=b.join(" ")));f.style.position="absolute";f.style.visibility="hidden";f.style.display="inline-block";f.style.zoom="1";null!=d?(f.style.width=d+"px",f.style.whiteSpace="normal"):f.style.whiteSpace=
+"nowrap";f.innerHTML=a;document.body.appendChild(f);a=new mxRectangle(0,0,f.offsetWidth,f.offsetHeight);document.body.removeChild(f);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,
+"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=n,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;
+c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*
+c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");
+for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+k+"px;top:"+l+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));
+d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;
+for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+k+","+l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,
+500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;");c.appendChild(d);c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=
+window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",
+d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),
+c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=
+g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,
+MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,
+NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00",OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",
+CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",
+OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,DEFAULT_TEXT_DIRECTION:"",LINE_HEIGHT:1.2,WORD_WRAP:"normal",ABSOLUTE_LINE_HEIGHT:!1,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,
+DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:0,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,827,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,827),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_PORT_CONSTRAINT_ROTATION:"portConstraintRotation",
+STYLE_SOURCE_PORT_CONSTRAINT:"sourcePortConstraint",STYLE_TARGET_PORT_CONSTRAINT:"targetPortConstraint",STYLE_OPACITY:"opacity",STYLE_FILL_OPACITY:"fillOpacity",STYLE_STROKE_OPACITY:"strokeOpacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_TEXT_DIRECTION:"textDirection",STYLE_OVERFLOW:"overflow",STYLE_BLOCK_SPACING:"blockSpacing",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_DX:"exitDx",STYLE_EXIT_DY:"exitDy",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",
+STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_DX:"entryDx",STYLE_ENTRY_DY:"entryDy",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_POINTER_EVENTS:"pointerEvents",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_MARGIN:"margin",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",
+STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_WIDTH:"labelWidth",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",
+STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",
+STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_FIX_DASH:"fixDash",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_ABSOLUTE_ARCSIZE:"absoluteArcSize",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",
+STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ANCHOR_POINT_DIRECTION:"anchorPointDirection",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",
+STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",
+STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",
+SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",
+DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",
+EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_HEXAGON:"hexagonPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments.length;b+=2)null!=arguments[b+1]&&(this.properties[arguments[b]]=arguments[b+1])}mxEventObject.prototype.name=null;
+mxEventObject.prototype.properties=null;mxEventObject.prototype.consumed=!1;mxEventObject.prototype.getName=function(){return this.name};mxEventObject.prototype.getProperties=function(){return this.properties};mxEventObject.prototype.getProperty=function(a){return this.properties[a]};mxEventObject.prototype.isConsumed=function(){return this.consumed};mxEventObject.prototype.consume=function(){this.consumed=!0};function mxMouseEvent(a,b){this.evt=a;this.sourceState=this.state=b}
+mxMouseEvent.prototype.consumed=!1;mxMouseEvent.prototype.evt=null;mxMouseEvent.prototype.graphX=null;mxMouseEvent.prototype.graphY=null;mxMouseEvent.prototype.state=null;mxMouseEvent.prototype.sourceState=null;mxMouseEvent.prototype.getEvent=function(){return this.evt};mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)};mxMouseEvent.prototype.isSource=function(a){return null!=a?mxUtils.isAncestorNode(a.node,this.getSource()):!1};mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())};
+mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())};mxMouseEvent.prototype.getGraphX=function(){return this.graphX};mxMouseEvent.prototype.getGraphY=function(){return this.graphY};mxMouseEvent.prototype.getState=function(){return this.state};mxMouseEvent.prototype.getCell=function(){var a=this.getState();return null!=a?a.cell:null};mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())};mxMouseEvent.prototype.isConsumed=function(){return this.consumed};
mxMouseEvent.prototype.consume=function(a){(null!=a?a:null!=this.evt.touches||mxEvent.isMouseEvent(this.evt))&&this.evt.preventDefault&&this.evt.preventDefault();mxClient.IS_IE&&(this.evt.returnValue=!0);this.consumed=!0};function mxEventSource(a){this.setEventSource(a)}mxEventSource.prototype.eventListeners=null;mxEventSource.prototype.eventsEnabled=!0;mxEventSource.prototype.eventSource=null;mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled};
mxEventSource.prototype.setEventsEnabled=function(a){this.eventsEnabled=a};mxEventSource.prototype.getEventSource=function(){return this.eventSource};mxEventSource.prototype.setEventSource=function(a){this.eventSource=a};mxEventSource.prototype.addListener=function(a,b){null==this.eventListeners&&(this.eventListeners=[]);this.eventListeners.push(a);this.eventListeners.push(b)};
mxEventSource.prototype.removeListener=function(a){if(null!=this.eventListeners)for(var b=0;b<this.eventListeners.length;)this.eventListeners[b+1]==a?this.eventListeners.splice(b,2):b+=2};
@@ -2012,7 +2012,7 @@ d);this.exportColor(e)};this.fromRGB=function(a,b,c,d){0>a&&(a=0);1<a&&(a=1);0>b
function(a,b){var c=a.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);return c?(6===c[1].length?this.fromRGB(parseInt(c[1].substr(0,2),16)/255,parseInt(c[1].substr(2,2),16)/255,parseInt(c[1].substr(4,2),16)/255,b):this.fromRGB(parseInt(c[1].charAt(0)+c[1].charAt(0),16)/255,parseInt(c[1].charAt(1)+c[1].charAt(1),16)/255,parseInt(c[1].charAt(2)+c[1].charAt(2),16)/255,b),!0):!1};this.toString=function(){return(256|Math.round(255*this.rgb[0])).toString(16).substr(1)+(256|Math.round(255*this.rgb[1])).toString(16).substr(1)+
(256|Math.round(255*this.rgb[2])).toString(16).substr(1)};var r=this,t="hvs"===this.pickerMode.toLowerCase()?1:0,u=mxJSColor.fetchElement(this.valueElement),x=mxJSColor.fetchElement(this.styleElement),y=!1,B=!1,A=1,z=2,C=4,v=8;u&&(q=function(){r.fromString(u.value,A);p()},mxJSColor.addEvent(u,"keyup",q),mxJSColor.addEvent(u,"input",q),mxJSColor.addEvent(u,"blur",l),u.setAttribute("autocomplete","off"));x&&(x.jscStyle={backgroundImage:x.style.backgroundImage,backgroundColor:x.style.backgroundColor,
color:x.style.color});switch(t){case 0:mxJSColor.requireImage("hs.png");break;case 1:mxJSColor.requireImage("hv.png")}this.importColor()}};mxJSColor.install();
-Editor=function(b,c,e,k,g){mxEventSource.call(this);this.chromeless=null!=b?b:this.chromeless;this.initStencilRegistry();this.graph=k||this.createGraph(c,e);this.editable=null!=g?g:!b;this.undoManager=this.createUndoManager();this.status="";this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[Editor.pageCounter])+".xml"};this.getFilename=function(){return this.filename};this.setStatus=function(b){this.status=b;this.fireEvent(new mxEventObject("statusChanged"))};this.getStatus=
+Editor=function(b,c,e,k,f){mxEventSource.call(this);this.chromeless=null!=b?b:this.chromeless;this.initStencilRegistry();this.graph=k||this.createGraph(c,e);this.editable=null!=f?f:!b;this.undoManager=this.createUndoManager();this.status="";this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[Editor.pageCounter])+".xml"};this.getFilename=function(){return this.filename};this.setStatus=function(b){this.status=b;this.fireEvent(new mxEventObject("statusChanged"))};this.getStatus=
function(){return this.status};this.graphChangeListener=function(b,c){var d=null!=c?c.getProperty("edit"):null;null!=d&&d.ignoreEdit||this.setModified(!0)};this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)}));this.graph.resetViewOnRootChange=!1;this.init()};Editor.pageCounter=0;
(function(){try{for(var b=window;null!=b.opener&&"undefined"!==typeof b.opener.Editor&&!isNaN(b.opener.Editor.pageCounter)&&b.opener!=b;)b=b.opener;null!=b&&(b.Editor.pageCounter++,Editor.pageCounter=b.Editor.pageCounter)}catch(c){}})();Editor.defaultHtmlFont='-apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", system-ui, ui-sans-serif, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"';Editor.useLocalStorage="undefined"!=typeof Storage&&mxClient.IS_IOS;
Editor.rowMoveImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=":IMAGE_PATH+"/thumb_horz.png";
@@ -2039,19 +2039,19 @@ Editor.closeBlackImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy
Editor.plusImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==";Editor.shapesImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxwYXRoIGQ9Ik0wLDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPjwvZz48Zz48Zz48cGF0aCBkPSJNMywxMWg4VjNIM1YxMXogTTUsNWg0djRINVY1eiIvPjxwYXRoIGQ9Ik0xMywzdjhoOFYzSDEzeiBNMTksOWgtNFY1aDRWOXoiLz48cGF0aCBkPSJNMywyMWg4di04SDNWMjF6IE01LDE1aDR2NEg1VjE1eiIvPjxwb2x5Z29uIHBvaW50cz0iMTgsMTMgMTYsMTMgMTYsMTYgMTMsMTYgMTMsMTggMTYsMTggMTYsMjEgMTgsMjEgMTgsMTggMjEsMTggMjEsMTYgMTgsMTYiLz48L2c+PC9nPjwvc3ZnPg==";
Editor.formatImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==";
Editor.freehandImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0Ii8+PHBhdGggZD0iTTQuNSw4YzEuMDQsMCwyLjM0LTEuNSw0LjI1LTEuNWMxLjUyLDAsMi43NSwxLjIzLDIuNzUsMi43NWMwLDIuMDQtMS45OSwzLjE1LTMuOTEsNC4yMkM1LjQyLDE0LjY3LDQsMTUuNTcsNCwxNyBjMCwxLjEsMC45LDIsMiwydjJjLTIuMjEsMC00LTEuNzktNC00YzAtMi43MSwyLjU2LTQuMTQsNC42Mi01LjI4YzEuNDItMC43OSwyLjg4LTEuNiwyLjg4LTIuNDdjMC0wLjQxLTAuMzQtMC43NS0wLjc1LTAuNzUgQzcuNSw4LjUsNi4yNSwxMCw0LjUsMTBDMy4xMiwxMCwyLDguODgsMiw3LjVDMiw1LjQ1LDQuMTcsMi44Myw1LDJsMS40MSwxLjQxQzUuNDEsNC40Miw0LDYuNDMsNCw3LjVDNCw3Ljc4LDQuMjIsOCw0LjUsOHogTTgsMjEgbDMuNzUsMGw4LjA2LTguMDZsLTMuNzUtMy43NUw4LDE3LjI1TDgsMjF6IE0xMCwxOC4wOGw2LjA2LTYuMDZsMC45MiwwLjkyTDEwLjkyLDE5TDEwLDE5TDEwLDE4LjA4eiBNMjAuMzcsNi4yOSBjLTAuMzktMC4zOS0xLjAyLTAuMzktMS40MSwwbC0xLjgzLDEuODNsMy43NSwzLjc1bDEuODMtMS44M2MwLjM5LTAuMzksMC4zOS0xLjAyLDAtMS40MUwyMC4zNyw2LjI5eiIvPjwvc3ZnPg==";
-Editor.templateImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTEzIDExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6bTEtOUg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTQgMThINlY0aDd2NWg1djExeiIvPjwvc3ZnPg==";Editor.darkImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxwYXRoIGQ9Ik05LjM3LDUuNTFDOS4xOSw2LjE1LDkuMSw2LjgyLDkuMSw3LjVjMCw0LjA4LDMuMzIsNy40LDcuNCw3LjRjMC42OCwwLDEuMzUtMC4wOSwxLjk5LTAuMjdDMTcuNDUsMTcuMTksMTQuOTMsMTksMTIsMTkgYy0zLjg2LDAtNy0zLjE0LTctN0M1LDkuMDcsNi44MSw2LjU1LDkuMzcsNS41MXogTTEyLDNjLTQuOTcsMC05LDQuMDMtOSw5czQuMDMsOSw5LDlzOS00LjAzLDktOWMwLTAuNDYtMC4wNC0wLjkyLTAuMS0xLjM2IGMtMC45OCwxLjM3LTIuNTgsMi4yNi00LjQsMi4yNmMtMi45OCwwLTUuNC0yLjQyLTUuNC01LjRjMC0xLjgxLDAuODktMy40MiwyLjI2LTQuNEMxMi45MiwzLjA0LDEyLjQ2LDMsMTIsM0wxMiwzeiIvPjwvc3ZnPg==";
+Editor.darkImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxwYXRoIGQ9Ik05LjM3LDUuNTFDOS4xOSw2LjE1LDkuMSw2LjgyLDkuMSw3LjVjMCw0LjA4LDMuMzIsNy40LDcuNCw3LjRjMC42OCwwLDEuMzUtMC4wOSwxLjk5LTAuMjdDMTcuNDUsMTcuMTksMTQuOTMsMTksMTIsMTkgYy0zLjg2LDAtNy0zLjE0LTctN0M1LDkuMDcsNi44MSw2LjU1LDkuMzcsNS41MXogTTEyLDNjLTQuOTcsMC05LDQuMDMtOSw5czQuMDMsOSw5LDlzOS00LjAzLDktOWMwLTAuNDYtMC4wNC0wLjkyLTAuMS0xLjM2IGMtMC45OCwxLjM3LTIuNTgsMi4yNi00LjQsMi4yNmMtMi45OCwwLTUuNC0yLjQyLTUuNC01LjRjMC0xLjgxLDAuODktMy40MiwyLjI2LTQuNEMxMi45MiwzLjA0LDEyLjQ2LDMsMTIsM0wxMiwzeiIvPjwvc3ZnPg==";
Editor.lightImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxwYXRoIGQ9Ik0xMiw5YzEuNjUsMCwzLDEuMzUsMywzcy0xLjM1LDMtMywzcy0zLTEuMzUtMy0zUzEwLjM1LDksMTIsOSBNMTIsN2MtMi43NiwwLTUsMi4yNC01LDVzMi4yNCw1LDUsNXM1LTIuMjQsNS01IFMxNC43Niw3LDEyLDdMMTIsN3ogTTIsMTNsMiwwYzAuNTUsMCwxLTAuNDUsMS0xcy0wLjQ1LTEtMS0xbC0yLDBjLTAuNTUsMC0xLDAuNDUtMSwxUzEuNDUsMTMsMiwxM3ogTTIwLDEzbDIsMGMwLjU1LDAsMS0wLjQ1LDEtMSBzLTAuNDUtMS0xLTFsLTIsMGMtMC41NSwwLTEsMC40NS0xLDFTMTkuNDUsMTMsMjAsMTN6IE0xMSwydjJjMCwwLjU1LDAuNDUsMSwxLDFzMS0wLjQ1LDEtMVYyYzAtMC41NS0wLjQ1LTEtMS0xUzExLDEuNDUsMTEsMnogTTExLDIwdjJjMCwwLjU1LDAuNDUsMSwxLDFzMS0wLjQ1LDEtMXYtMmMwLTAuNTUtMC40NS0xLTEtMUMxMS40NSwxOSwxMSwxOS40NSwxMSwyMHogTTUuOTksNC41OGMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDAgYy0wLjM5LDAuMzktMC4zOSwxLjAzLDAsMS40MWwxLjA2LDEuMDZjMC4zOSwwLjM5LDEuMDMsMC4zOSwxLjQxLDBzMC4zOS0xLjAzLDAtMS40MUw1Ljk5LDQuNTh6IE0xOC4zNiwxNi45NSBjLTAuMzktMC4zOS0xLjAzLTAuMzktMS40MSwwYy0wLjM5LDAuMzktMC4zOSwxLjAzLDAsMS40MWwxLjA2LDEuMDZjMC4zOSwwLjM5LDEuMDMsMC4zOSwxLjQxLDBjMC4zOS0wLjM5LDAuMzktMS4wMywwLTEuNDEgTDE4LjM2LDE2Ljk1eiBNMTkuNDIsNS45OWMwLjM5LTAuMzksMC4zOS0xLjAzLDAtMS40MWMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDBsLTEuMDYsMS4wNmMtMC4zOSwwLjM5LTAuMzksMS4wMywwLDEuNDEgczEuMDMsMC4zOSwxLjQxLDBMMTkuNDIsNS45OXogTTcuMDUsMTguMzZjMC4zOS0wLjM5LDAuMzktMS4wMywwLTEuNDFjLTAuMzktMC4zOS0xLjAzLTAuMzktMS40MSwwbC0xLjA2LDEuMDYgYy0wLjM5LDAuMzktMC4zOSwxLjAzLDAsMS40MXMxLjAzLDAuMzksMS40MSwwTDcuMDUsMTguMzZ6Ii8+PC9zdmc+";
Editor.undoImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ii8+PC9zdmc+";Editor.redoImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiIvPjwvc3ZnPg==";
Editor.outlineImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMC41IDNsLS4xNi4wM0wxNSA1LjEgOSAzIDMuMzYgNC45Yy0uMjEuMDctLjM2LjI1LS4zNi40OFYyMC41YzAgLjI4LjIyLjUuNS41bC4xNi0uMDNMOSAxOC45bDYgMi4xIDUuNjQtMS45Yy4yMS0uMDcuMzYtLjI1LjM2LS40OFYzLjVjMC0uMjgtLjIyLS41LS41LS41ek0xNSAxOWwtNi0yLjExVjVsNiAyLjExVjE5eiIvPjwvc3ZnPg==";
-Editor.saveImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMThweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMThweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE5IDEydjdINXYtN0gzdjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnptLTYgLjY3bDIuNTktMi41OEwxNyAxMS41bC01IDUtNS01IDEuNDEtMS40MUwxMSAxMi42N1YzaDJ2OS42N3oiLz48L3N2Zz4=";Editor.tableImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTIwIDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDJ2M0g1VjVoMTV6bS01IDE0aC01di05aDV2OXpNNSAxMGgzdjlINXYtOXptMTIgOXYtOWgzdjloLTN6Ii8+PC9zdmc+";
+Editor.saveImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMThweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMThweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE5IDEydjdINXYtN0gzdjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnptLTYgLjY3bDIuNTktMi41OEwxNyAxMS41bC01IDUtNS01IDEuNDEtMS40MUwxMSAxMi42N1YzaDJ2OS42N3oiLz48L3N2Zz4=";
Editor.roughFillStyles=[{val:"auto",dispName:"Auto"},{val:"hachure",dispName:"Hachure"},{val:"solid",dispName:"Solid"},{val:"zigzag",dispName:"ZigZag"},{val:"cross-hatch",dispName:"Cross Hatch"},{val:"dashed",dispName:"Dashed"},{val:"zigzag-line",dispName:"ZigZag Line"}];Editor.themes=null;Editor.ctrlKey=mxClient.IS_MAC?"Cmd":"Ctrl";Editor.hintOffset=20;Editor.shapePickerHoverDelay=300;Editor.fitWindowBorders=null;Editor.popupsAllowed=null!=window.urlParams?"1"!=urlParams.noDevice:!0;
Editor.simpleLabels=!1;Editor.enableNativeCipboard=window==window.top&&!mxClient.IS_FF&&null!=navigator.clipboard;Editor.sketchMode=!1;Editor.darkMode=!1;Editor.darkColor="#2a2a2a";Editor.lightColor="#f0f0f0";Editor.isPngDataUrl=function(b){return null!=b&&"data:image/png;"==b.substring(0,15)};Editor.isPngData=function(b){return 8<b.length&&137==b.charCodeAt(0)&&80==b.charCodeAt(1)&&78==b.charCodeAt(2)&&71==b.charCodeAt(3)&&13==b.charCodeAt(4)&&10==b.charCodeAt(5)&&26==b.charCodeAt(6)&&10==b.charCodeAt(7)};
Editor.extractGraphModelFromPng=function(b){var c=null;try{var e=b.substring(b.indexOf(",")+1),k=window.atob&&!mxClient.IS_SF?atob(e):Base64.decode(e,!0);EditorUi.parsePng(k,mxUtils.bind(this,function(b,e,t){b=k.substring(b+8,b+8+t);"zTXt"==e?(t=b.indexOf(String.fromCharCode(0)),"mxGraphModel"==b.substring(0,t)&&(b=pako.inflateRaw(Graph.stringToArrayBuffer(b.substring(t+2)),{to:"string"}).replace(/\+/g," "),null!=b&&0<b.length&&(c=b))):"tEXt"==e&&(b=b.split(String.fromCharCode(0)),1<b.length&&("mxGraphModel"==
-b[0]||"mxfile"==b[0])&&(c=b[1]));if(null!=c||"IDAT"==e)return!0}))}catch(g){}null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c));null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c));return c};Editor.isDarkMode=function(b){return Editor.darkMode||"dark"==uiTheme};Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;mxUtils.extend(Editor,mxEventSource);
+b[0]||"mxfile"==b[0])&&(c=b[1]));if(null!=c||"IDAT"==e)return!0}))}catch(f){}null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c));null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c));return c};Editor.isDarkMode=function(b){return Editor.darkMode||"dark"==uiTheme};Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;mxUtils.extend(Editor,mxEventSource);
Editor.prototype.originalNoForeignObject=mxClient.NO_FO;Editor.prototype.transparentImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhMAAwAIAAAP///wAAACH5BAEAAAAALAAAAAAwADAAAAIxhI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8egpAAA7":IMAGE_PATH+"/transparent.gif";Editor.prototype.extendCanvas=!0;Editor.prototype.chromeless=!1;Editor.prototype.cancelFirst=!0;Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;
Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.defaultGraphOverflow="hidden";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(b){this.autosave=b;this.fireEvent(new mxEventObject("autosaveChanged"))};Editor.prototype.getEditBlankUrl=function(b){return this.editBlankUrl+b};
-Editor.prototype.editAsNew=function(b,c){var e=null!=c?"?title="+encodeURIComponent(c):"";null!=urlParams.ui&&(e+=(0<e.length?"&":"?")+"ui="+urlParams.ui);if("undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)){var k=null,g=mxUtils.bind(this,function(c){"ready"==c.data&&c.source==k&&(mxEvent.removeListener(window,"message",g),k.postMessage(b,"*"))});mxEvent.addListener(window,"message",g);k=this.graph.openLink(this.getEditBlankUrl(e+(0<e.length?"&":"?")+
-"client=1"),null,!0)}else this.graph.openLink(this.getEditBlankUrl(e)+"#R"+encodeURIComponent(b))};Editor.prototype.createGraph=function(b,c){var e=new Graph(null,c,null,null,b);e.transparentBackground=!1;var k=e.isCssTransformsSupported,g=this;e.isCssTransformsSupported=function(){return k.apply(this,arguments)&&(!g.chromeless||!mxClient.IS_SF)};this.chromeless||(e.isBlankLink=function(b){return!this.isExternalProtocol(b)});return e};
+Editor.prototype.editAsNew=function(b,c){var e=null!=c?"?title="+encodeURIComponent(c):"";null!=urlParams.ui&&(e+=(0<e.length?"&":"?")+"ui="+urlParams.ui);if("undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)){var k=null,f=mxUtils.bind(this,function(c){"ready"==c.data&&c.source==k&&(mxEvent.removeListener(window,"message",f),k.postMessage(b,"*"))});mxEvent.addListener(window,"message",f);k=this.graph.openLink(this.getEditBlankUrl(e+(0<e.length?"&":"?")+
+"client=1"),null,!0)}else this.graph.openLink(this.getEditBlankUrl(e)+"#R"+encodeURIComponent(b))};Editor.prototype.createGraph=function(b,c){var e=new Graph(null,c,null,null,b);e.transparentBackground=!1;var k=e.isCssTransformsSupported,f=this;e.isCssTransformsSupported=function(){return k.apply(this,arguments)&&(!f.chromeless||!mxClient.IS_SF)};this.chromeless||(e.isBlankLink=function(b){return!this.isExternalProtocol(b)});return e};
Editor.prototype.resetGraph=function(){this.graph.gridEnabled=this.graph.defaultGridEnabled&&(!this.isChromelessView()||"1"==urlParams.grid);this.graph.graphHandler.guidesEnabled=!0;this.graph.setTooltips(!0);this.graph.setConnectable(!0);this.graph.foldingEnabled=!0;this.graph.scrollbars=this.graph.defaultScrollbars;this.graph.pageVisible=this.graph.defaultPageVisible;this.graph.pageBreaksVisible=this.graph.pageVisible;this.graph.preferPageSize=this.graph.pageBreaksVisible;this.graph.background=
null;this.graph.pageScale=mxGraph.prototype.pageScale;this.graph.pageFormat=mxGraph.prototype.pageFormat;this.graph.currentScale=1;this.graph.currentTranslate.x=0;this.graph.currentTranslate.y=0;this.updateGraphComponents();this.graph.view.setScale(1)};
Editor.prototype.readGraphState=function(b){var c=b.getAttribute("grid");if(null==c||""==c)c=this.graph.defaultGridEnabled?"1":"0";this.graph.gridEnabled="0"!=c&&(!this.isChromelessView()||"1"==urlParams.grid);this.graph.gridSize=parseFloat(b.getAttribute("gridSize"))||mxGraph.prototype.gridSize;this.graph.graphHandler.guidesEnabled="0"!=b.getAttribute("guides");this.graph.setTooltips("0"!=b.getAttribute("tooltips"));this.graph.setConnectable("0"!=b.getAttribute("connect"));this.graph.connectionArrowsEnabled=
@@ -2063,122 +2063,128 @@ Editor.prototype.getGraphXml=function(b){b=(null!=b?b:1)?(new mxCodec(mxUtils.cr
this.graph.gridSize);b.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0");b.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0");b.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0");b.setAttribute("arrows",this.graph.connectionArrowsEnabled?"1":"0");b.setAttribute("fold",this.graph.foldingEnabled?"1":"0");b.setAttribute("page",this.graph.pageVisible?"1":"0");b.setAttribute("pageScale",this.graph.pageScale);b.setAttribute("pageWidth",this.graph.pageFormat.width);
b.setAttribute("pageHeight",this.graph.pageFormat.height);null!=this.graph.background&&b.setAttribute("background",this.graph.background);return b};Editor.prototype.updateGraphComponents=function(){var b=this.graph;null!=b.container&&(b.view.validateBackground(),b.container.style.overflow=b.scrollbars?"auto":this.defaultGraphOverflow,this.fireEvent(new mxEventObject("updateGraphComponents")))};Editor.prototype.setModified=function(b){this.modified=b};
Editor.prototype.setFilename=function(b){this.filename=b};
-Editor.prototype.createUndoManager=function(){var b=this.graph,c=new mxUndoManager;this.undoListener=function(b,e){c.undoableEditHappened(e.getProperty("edit"))};var e=mxUtils.bind(this,function(b,c){this.undoListener.apply(this,arguments)});b.getModel().addListener(mxEvent.UNDO,e);b.getView().addListener(mxEvent.UNDO,e);e=function(c,e){var g=b.getSelectionCellsForChanges(e.getProperty("edit").changes,function(b){return!(b instanceof mxChildChange)});if(0<g.length){b.getModel();for(var k=[],d=0;d<
-g.length;d++)null!=b.view.getState(g[d])&&k.push(g[d]);b.setSelectionCells(k)}};c.addListener(mxEvent.UNDO,e);c.addListener(mxEvent.REDO,e);return c};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(b){this.consumer=this.producer=null;this.done=b;this.args=null};OpenFile.prototype.setConsumer=function(b){this.consumer=b;this.execute()};
+Editor.prototype.createUndoManager=function(){var b=this.graph,c=new mxUndoManager;this.undoListener=function(b,e){c.undoableEditHappened(e.getProperty("edit"))};var e=mxUtils.bind(this,function(b,c){this.undoListener.apply(this,arguments)});b.getModel().addListener(mxEvent.UNDO,e);b.getView().addListener(mxEvent.UNDO,e);e=function(c,e){var f=b.getSelectionCellsForChanges(e.getProperty("edit").changes,function(b){return!(b instanceof mxChildChange)});if(0<f.length){b.getModel();for(var k=[],d=0;d<
+f.length;d++)null!=b.view.getState(f[d])&&k.push(f[d]);b.setSelectionCells(k)}};c.addListener(mxEvent.UNDO,e);c.addListener(mxEvent.REDO,e);return c};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(b){this.consumer=this.producer=null;this.done=b;this.args=null};OpenFile.prototype.setConsumer=function(b){this.consumer=b;this.execute()};
OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(b){this.cancel(!0);mxUtils.alert(b)};OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(b){null!=this.done&&this.done(null!=b?b:!0)};
-function Dialog(b,c,e,k,g,p,t,d,f,l,q){var m=f?57:0,n=e,u=k,v=f?0:64,y=Editor.inlineFullscreen||null==b.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(b.embedViewport);null==b.embedViewport&&null!=window.innerHeight&&(y.height=window.innerHeight);var x=y.height,F=Math.max(1,Math.round((y.width-e-v)/2)),H=Math.max(1,Math.round((x-k-b.footerHeight)/3));c.style.maxHeight="100%";e=null!=document.body?Math.min(e,document.body.scrollWidth-v):e;k=Math.min(k,x-v);0<b.dialogs.length&&(this.zIndex+=
+function Dialog(b,c,e,k,f,p,t,d,g,l,q){var m=g?57:0,n=e,u=k,v=g?0:64,y=Editor.inlineFullscreen||null==b.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(b.embedViewport);null==b.embedViewport&&null!=window.innerHeight&&(y.height=window.innerHeight);var x=y.height,F=Math.max(1,Math.round((y.width-e-v)/2)),H=Math.max(1,Math.round((x-k-b.footerHeight)/3));c.style.maxHeight="100%";e=null!=document.body?Math.min(e,document.body.scrollWidth-v):e;k=Math.min(k,x-v);0<b.dialogs.length&&(this.zIndex+=
2*b.dialogs.length);null==this.bg&&(this.bg=b.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=x+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));y=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=y.x+"px";this.bg.style.top=y.y+"px";F+=y.x;H+=y.y;Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px",
-H+=b.embedViewport.y,F+=b.embedViewport.x);g&&document.body.appendChild(this.bg);var z=b.createDiv(f?"geTransDialog":"geDialog");g=this.getPosition(F,H,e,k);F=g.x;H=g.y;z.style.width=e+"px";z.style.height=k+"px";z.style.left=F+"px";z.style.top=H+"px";z.style.zIndex=this.zIndex;z.appendChild(c);document.body.appendChild(z);!d&&c.clientHeight>z.clientHeight-v&&(c.style.overflowY="auto");c.style.overflowX="hidden";if(p&&(p=document.createElement("img"),p.setAttribute("src",Dialog.prototype.closeImage),
-p.setAttribute("title",mxResources.get("close")),p.className="geDialogClose",p.style.top=H+14+"px",p.style.left=F+e+38-m+"px",p.style.zIndex=this.zIndex,mxEvent.addListener(p,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(p),this.dialogImg=p,!q)){var D=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(b){D=!0}),null,mxUtils.bind(this,function(d){D&&(b.hideDialog(!0),D=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=l){var f=l();
-null!=f&&(n=e=f.w,u=k=f.h)}f=mxUtils.getDocumentSize();x=f.height;this.bg.style.height=x+"px";Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");F=Math.max(1,Math.round((f.width-e-v)/2));H=Math.max(1,Math.round((x-k-b.footerHeight)/3));e=null!=document.body?Math.min(n,document.body.scrollWidth-v):n;k=Math.min(u,x-v);f=this.getPosition(F,H,e,k);F=f.x;H=f.y;z.style.left=F+"px";z.style.top=H+"px";z.style.width=e+"px";z.style.height=k+"px";!d&&
+H+=b.embedViewport.y,F+=b.embedViewport.x);f&&document.body.appendChild(this.bg);var z=b.createDiv(g?"geTransDialog":"geDialog");f=this.getPosition(F,H,e,k);F=f.x;H=f.y;z.style.width=e+"px";z.style.height=k+"px";z.style.left=F+"px";z.style.top=H+"px";z.style.zIndex=this.zIndex;z.appendChild(c);document.body.appendChild(z);!d&&c.clientHeight>z.clientHeight-v&&(c.style.overflowY="auto");c.style.overflowX="hidden";if(p&&(p=document.createElement("img"),p.setAttribute("src",Dialog.prototype.closeImage),
+p.setAttribute("title",mxResources.get("close")),p.className="geDialogClose",p.style.top=H+14+"px",p.style.left=F+e+38-m+"px",p.style.zIndex=this.zIndex,mxEvent.addListener(p,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(p),this.dialogImg=p,!q)){var D=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(b){D=!0}),null,mxUtils.bind(this,function(d){D&&(b.hideDialog(!0),D=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=l){var g=l();
+null!=g&&(n=e=g.w,u=k=g.h)}g=mxUtils.getDocumentSize();x=g.height;this.bg.style.height=x+"px";Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");F=Math.max(1,Math.round((g.width-e-v)/2));H=Math.max(1,Math.round((x-k-b.footerHeight)/3));e=null!=document.body?Math.min(n,document.body.scrollWidth-v):n;k=Math.min(u,x-v);g=this.getPosition(F,H,e,k);F=g.x;H=g.y;z.style.left=F+"px";z.style.top=H+"px";z.style.width=e+"px";z.style.height=k+"px";!d&&
c.clientHeight>z.clientHeight-v&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=H+14+"px",this.dialogImg.style.left=F+e+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=t;this.container=z;b.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC":IMAGE_PATH+
"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png";
Dialog.prototype.clearImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQAKAIABAMDAwP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUIzOEM1NzI4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUIzOEM1NzM4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QjM4QzU3MDg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QjM4QzU3MTg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAEALAAAAAANAAoAAAIXTGCJebD9jEOTqRlttXdrB32PJ2ncyRQAOw==":IMAGE_PATH+
"/clear.gif";Dialog.prototype.bgOpacity=80;Dialog.prototype.getPosition=function(b,c){return new mxPoint(b,c)};Dialog.prototype.close=function(b,c){if(null!=this.onDialogClose){if(0==this.onDialogClose(b,c))return!1;this.onDialogClose=null}null!=this.dialogImg&&(this.dialogImg.parentNode.removeChild(this.dialogImg),this.dialogImg=null);null!=this.bg&&null!=this.bg.parentNode&&this.bg.parentNode.removeChild(this.bg);mxEvent.removeListener(window,"resize",this.resizeListener);this.container.parentNode.removeChild(this.container)};
-var ErrorDialog=function(b,c,e,k,g,p,t,d,f,l,q){f=null!=f?f:!0;var m=document.createElement("div");m.style.textAlign="center";if(null!=c){var n=document.createElement("div");n.style.padding="0px";n.style.margin="0px";n.style.fontSize="18px";n.style.paddingBottom="16px";n.style.marginBottom="10px";n.style.borderBottom="1px solid #c0c0c0";n.style.color="gray";n.style.whiteSpace="nowrap";n.style.textOverflow="ellipsis";n.style.overflow="hidden";mxUtils.write(n,c);n.setAttribute("title",c);m.appendChild(n)}c=
-document.createElement("div");c.style.lineHeight="1.2em";c.style.padding="6px";c.innerHTML=e;m.appendChild(c);e=document.createElement("div");e.style.marginTop="12px";e.style.textAlign="center";null!=p&&(c=mxUtils.button(mxResources.get("tryAgain"),function(){b.hideDialog();p()}),c.className="geBtn",e.appendChild(c),e.style.textAlign="center");null!=l&&(l=mxUtils.button(l,function(){null!=q&&q()}),l.className="geBtn",e.appendChild(l));var u=mxUtils.button(k,function(){f&&b.hideDialog();null!=g&&g()});
-u.className="geBtn";e.appendChild(u);null!=t&&(k=mxUtils.button(t,function(){f&&b.hideDialog();null!=d&&d()}),k.className="geBtn gePrimaryBtn",e.appendChild(k));this.init=function(){u.focus()};m.appendChild(e);this.container=m},PrintDialog=function(b,c){this.create(b,c)};
-PrintDialog.prototype.create=function(b){function c(b){var f=d.checked||l.checked,c=parseInt(m.value)/100;isNaN(c)&&(c=1,m.value="100%");var c=.75*c,g=e.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,k=1/e.pageScale;if(f){var n=d.checked?1:parseInt(q.value);isNaN(n)||(k=mxUtils.getScaleForPageCount(n,e,g))}e.getGraphBounds();var u=n=0,g=mxRectangle.fromRectangle(g);g.width=Math.ceil(g.width*c);g.height=Math.ceil(g.height*c);k*=c;!f&&e.pageVisible?(c=e.getPageLayout(),n-=c.x*g.width,u-=c.y*g.height):
-f=!0;f=PrintDialog.createPrintPreview(e,k,g,0,n,u,f);f.open();b&&PrintDialog.printPreview(f)}var e=b.editor.graph,k,g,p=document.createElement("table");p.style.width="100%";p.style.height="100%";var t=document.createElement("tbody");k=document.createElement("tr");var d=document.createElement("input");d.setAttribute("type","checkbox");g=document.createElement("td");g.setAttribute("colspan","2");g.style.fontSize="10pt";g.appendChild(d);var f=document.createElement("span");mxUtils.write(f," "+mxResources.get("fitPage"));
-g.appendChild(f);mxEvent.addListener(f,"click",function(b){d.checked=!d.checked;l.checked=!d.checked;mxEvent.consume(b)});mxEvent.addListener(d,"change",function(){l.checked=!d.checked});k.appendChild(g);t.appendChild(k);k=k.cloneNode(!1);var l=document.createElement("input");l.setAttribute("type","checkbox");g=document.createElement("td");g.style.fontSize="10pt";g.appendChild(l);f=document.createElement("span");mxUtils.write(f," "+mxResources.get("posterPrint")+":");g.appendChild(f);mxEvent.addListener(f,
-"click",function(b){l.checked=!l.checked;d.checked=!l.checked;mxEvent.consume(b)});k.appendChild(g);var q=document.createElement("input");q.setAttribute("value","1");q.setAttribute("type","number");q.setAttribute("min","1");q.setAttribute("size","4");q.setAttribute("disabled","disabled");q.style.width="50px";g=document.createElement("td");g.style.fontSize="10pt";g.appendChild(q);mxUtils.write(g," "+mxResources.get("pages")+" (max)");k.appendChild(g);t.appendChild(k);mxEvent.addListener(l,"change",
-function(){l.checked?q.removeAttribute("disabled"):q.setAttribute("disabled","disabled");d.checked=!l.checked});k=k.cloneNode(!1);g=document.createElement("td");mxUtils.write(g,mxResources.get("pageScale")+":");k.appendChild(g);g=document.createElement("td");var m=document.createElement("input");m.setAttribute("value","100 %");m.setAttribute("size","5");m.style.width="50px";g.appendChild(m);k.appendChild(g);t.appendChild(k);k=document.createElement("tr");g=document.createElement("td");g.colSpan=2;
-g.style.paddingTop="20px";g.setAttribute("align","right");f=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});f.className="geBtn";b.editor.cancelFirst&&g.appendChild(f);if(PrintDialog.previewEnabled){var n=mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();c(!1)});n.className="geBtn";g.appendChild(n)}n=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();c(!0)});n.className="geBtn gePrimaryBtn";g.appendChild(n);b.editor.cancelFirst||
-g.appendChild(f);k.appendChild(g);t.appendChild(k);p.appendChild(t);this.container=p};PrintDialog.printPreview=function(b){try{if(null!=b.wnd){var c=function(){b.wnd.focus();b.wnd.print();b.wnd.close()};mxClient.IS_GC?window.setTimeout(c,500):c()}}catch(e){}};
-PrintDialog.createPrintPreview=function(b,c,e,k,g,p,t){c=new mxPrintPreview(b,c,e,k,g,p);c.title=mxResources.get("preview");c.printBackgroundImage=!0;c.autoOrigin=t;b=b.background;if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";c.backgroundColor=b;var d=c.writeHead;c.writeHead=function(b){d.apply(this,arguments);b.writeln('<style type="text/css">');b.writeln("@media screen {");b.writeln(" body > div { padding:30px;box-sizing:content-box; }");b.writeln("}");b.writeln("</style>")};return c};
+var ErrorDialog=function(b,c,e,k,f,p,t,d,g,l,q){g=null!=g?g:!0;var m=document.createElement("div");m.style.textAlign="center";if(null!=c){var n=document.createElement("div");n.style.padding="0px";n.style.margin="0px";n.style.fontSize="18px";n.style.paddingBottom="16px";n.style.marginBottom="10px";n.style.borderBottom="1px solid #c0c0c0";n.style.color="gray";n.style.whiteSpace="nowrap";n.style.textOverflow="ellipsis";n.style.overflow="hidden";mxUtils.write(n,c);n.setAttribute("title",c);m.appendChild(n)}c=
+document.createElement("div");c.style.lineHeight="1.2em";c.style.padding="6px";c.innerHTML=e;m.appendChild(c);e=document.createElement("div");e.style.marginTop="12px";e.style.textAlign="center";null!=p&&(c=mxUtils.button(mxResources.get("tryAgain"),function(){b.hideDialog();p()}),c.className="geBtn",e.appendChild(c),e.style.textAlign="center");null!=l&&(l=mxUtils.button(l,function(){null!=q&&q()}),l.className="geBtn",e.appendChild(l));var u=mxUtils.button(k,function(){g&&b.hideDialog();null!=f&&f()});
+u.className="geBtn";e.appendChild(u);null!=t&&(k=mxUtils.button(t,function(){g&&b.hideDialog();null!=d&&d()}),k.className="geBtn gePrimaryBtn",e.appendChild(k));this.init=function(){u.focus()};m.appendChild(e);this.container=m},PrintDialog=function(b,c){this.create(b,c)};
+PrintDialog.prototype.create=function(b){function c(b){var g=d.checked||l.checked,c=parseInt(m.value)/100;isNaN(c)&&(c=1,m.value="100%");var c=.75*c,f=e.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,k=1/e.pageScale;if(g){var n=d.checked?1:parseInt(q.value);isNaN(n)||(k=mxUtils.getScaleForPageCount(n,e,f))}e.getGraphBounds();var t=n=0,f=mxRectangle.fromRectangle(f);f.width=Math.ceil(f.width*c);f.height=Math.ceil(f.height*c);k*=c;!g&&e.pageVisible?(c=e.getPageLayout(),n-=c.x*f.width,t-=c.y*f.height):
+g=!0;g=PrintDialog.createPrintPreview(e,k,f,0,n,t,g);g.open();b&&PrintDialog.printPreview(g)}var e=b.editor.graph,k,f,p=document.createElement("table");p.style.width="100%";p.style.height="100%";var t=document.createElement("tbody");k=document.createElement("tr");var d=document.createElement("input");d.setAttribute("type","checkbox");f=document.createElement("td");f.setAttribute("colspan","2");f.style.fontSize="10pt";f.appendChild(d);var g=document.createElement("span");mxUtils.write(g," "+mxResources.get("fitPage"));
+f.appendChild(g);mxEvent.addListener(g,"click",function(b){d.checked=!d.checked;l.checked=!d.checked;mxEvent.consume(b)});mxEvent.addListener(d,"change",function(){l.checked=!d.checked});k.appendChild(f);t.appendChild(k);k=k.cloneNode(!1);var l=document.createElement("input");l.setAttribute("type","checkbox");f=document.createElement("td");f.style.fontSize="10pt";f.appendChild(l);g=document.createElement("span");mxUtils.write(g," "+mxResources.get("posterPrint")+":");f.appendChild(g);mxEvent.addListener(g,
+"click",function(b){l.checked=!l.checked;d.checked=!l.checked;mxEvent.consume(b)});k.appendChild(f);var q=document.createElement("input");q.setAttribute("value","1");q.setAttribute("type","number");q.setAttribute("min","1");q.setAttribute("size","4");q.setAttribute("disabled","disabled");q.style.width="50px";f=document.createElement("td");f.style.fontSize="10pt";f.appendChild(q);mxUtils.write(f," "+mxResources.get("pages")+" (max)");k.appendChild(f);t.appendChild(k);mxEvent.addListener(l,"change",
+function(){l.checked?q.removeAttribute("disabled"):q.setAttribute("disabled","disabled");d.checked=!l.checked});k=k.cloneNode(!1);f=document.createElement("td");mxUtils.write(f,mxResources.get("pageScale")+":");k.appendChild(f);f=document.createElement("td");var m=document.createElement("input");m.setAttribute("value","100 %");m.setAttribute("size","5");m.style.width="50px";f.appendChild(m);k.appendChild(f);t.appendChild(k);k=document.createElement("tr");f=document.createElement("td");f.colSpan=2;
+f.style.paddingTop="20px";f.setAttribute("align","right");g=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});g.className="geBtn";b.editor.cancelFirst&&f.appendChild(g);if(PrintDialog.previewEnabled){var n=mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();c(!1)});n.className="geBtn";f.appendChild(n)}n=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();c(!0)});n.className="geBtn gePrimaryBtn";f.appendChild(n);b.editor.cancelFirst||
+f.appendChild(g);k.appendChild(f);t.appendChild(k);p.appendChild(t);this.container=p};PrintDialog.printPreview=function(b){try{if(null!=b.wnd){var c=function(){b.wnd.focus();b.wnd.print();b.wnd.close()};mxClient.IS_GC?window.setTimeout(c,500):c()}}catch(e){}};
+PrintDialog.createPrintPreview=function(b,c,e,k,f,p,t){c=new mxPrintPreview(b,c,e,k,f,p);c.title=mxResources.get("preview");c.printBackgroundImage=!0;c.autoOrigin=t;b=b.background;if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";c.backgroundColor=b;var d=c.writeHead;c.writeHead=function(b){d.apply(this,arguments);b.writeln('<style type="text/css">');b.writeln("@media screen {");b.writeln(" body > div { padding:30px;box-sizing:content-box; }");b.writeln("}");b.writeln("</style>")};return c};
PrintDialog.previewEnabled=!0;
-var PageSetupDialog=function(b){function c(){null==q||q==mxConstants.NONE?(l.style.backgroundColor="",l.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(l.style.backgroundColor=q,l.style.backgroundImage="")}function e(){var d=v;null!=d&&Graph.isPageLink(d.src)&&(d=b.createImageForPageLink(d.src,null));null!=d&&null!=d.src?(u.setAttribute("src",d.src),u.style.display=""):(u.removeAttribute("src"),u.style.display="none")}var k=b.editor.graph,g,p,t=document.createElement("table");t.style.width=
-"100%";t.style.height="100%";var d=document.createElement("tbody");g=document.createElement("tr");p=document.createElement("td");p.style.verticalAlign="top";p.style.fontSize="10pt";mxUtils.write(p,mxResources.get("paperSize")+":");g.appendChild(p);p=document.createElement("td");p.style.verticalAlign="top";p.style.fontSize="10pt";var f=PageSetupDialog.addPageFormatPanel(p,"pagesetupdialog",k.pageFormat);g.appendChild(p);d.appendChild(g);g=document.createElement("tr");p=document.createElement("td");
-mxUtils.write(p,mxResources.get("background")+":");g.appendChild(p);p=document.createElement("td");p.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var l=document.createElement("button");l.style.width="22px";l.style.height="22px";l.style.cursor="pointer";l.style.marginRight="20px";l.style.backgroundPosition="center center";l.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(l.style.position="relative",l.style.top="-6px");var q=k.background;c();mxEvent.addListener(l,
-"click",function(d){b.pickColor(q||"none",function(b){q=b;c()});mxEvent.consume(d)});p.appendChild(l);mxUtils.write(p,mxResources.get("gridSize")+":");var m=document.createElement("input");m.setAttribute("type","number");m.setAttribute("min","0");m.style.width="40px";m.style.marginLeft="6px";m.value=k.getGridSize();p.appendChild(m);mxEvent.addListener(m,"change",function(){var b=parseInt(m.value);m.value=Math.max(1,isNaN(b)?k.getGridSize():b)});g.appendChild(p);d.appendChild(g);g=document.createElement("tr");
-p=document.createElement("td");mxUtils.write(p,mxResources.get("image")+":");g.appendChild(p);p=document.createElement("td");var n=document.createElement("button");n.className="geBtn";n.style.margin="0px";mxUtils.write(n,mxResources.get("change")+"...");var u=document.createElement("img");u.setAttribute("valign","middle");u.style.verticalAlign="middle";u.style.border="1px solid lightGray";u.style.borderRadius="4px";u.style.marginRight="14px";u.style.maxWidth="100px";u.style.cursor="pointer";u.style.height=
-"60px";u.style.padding="4px";var v=k.backgroundImage,y=function(d){b.showBackgroundImageDialog(function(b,d){d||(v=b,e())},v);mxEvent.consume(d)};mxEvent.addListener(n,"click",y);mxEvent.addListener(u,"click",y);e();p.appendChild(u);p.appendChild(n);g.appendChild(p);d.appendChild(g);g=document.createElement("tr");p=document.createElement("td");p.colSpan=2;p.style.paddingTop="16px";p.setAttribute("align","right");n=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});n.className="geBtn";
-b.editor.cancelFirst&&p.appendChild(n);y=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();var d=parseInt(m.value);isNaN(d)||k.gridSize===d||k.setGridSize(d);d=new ChangePageSetup(b,q,v,f.get());d.ignoreColor=k.background==q;d.ignoreImage=(null!=k.backgroundImage?k.backgroundImage.src:null)===(null!=v?v.src:null);k.pageFormat.width==d.previousFormat.width&&k.pageFormat.height==d.previousFormat.height&&d.ignoreColor&&d.ignoreImage||k.model.execute(d)});y.className="geBtn gePrimaryBtn";
-p.appendChild(y);b.editor.cancelFirst||p.appendChild(n);g.appendChild(p);d.appendChild(g);t.appendChild(d);this.container=t};
-PageSetupDialog.addPageFormatPanel=function(b,c,e,k){function g(b,c,l){if(l||m!=document.activeElement&&n!=document.activeElement){b=!1;for(c=0;c<v.length;c++)l=v[c],H?"custom"==l.key&&(d.value=l.key,H=!1):null!=l.format&&("a4"==l.key?826==e.width?(e=mxRectangle.fromRectangle(e),e.width=827):826==e.height&&(e=mxRectangle.fromRectangle(e),e.height=827):"a5"==l.key&&(584==e.width?(e=mxRectangle.fromRectangle(e),e.width=583):584==e.height&&(e=mxRectangle.fromRectangle(e),e.height=583)),e.width==l.format.width&&
-e.height==l.format.height?(d.value=l.key,p.setAttribute("checked","checked"),p.defaultChecked=!0,p.checked=!0,t.removeAttribute("checked"),t.defaultChecked=!1,t.checked=!1,b=!0):e.width==l.format.height&&e.height==l.format.width&&(d.value=l.key,p.removeAttribute("checked"),p.defaultChecked=!1,p.checked=!1,t.setAttribute("checked","checked"),t.defaultChecked=!0,b=t.checked=!0));b?(f.style.display="",q.style.display="none"):(m.value=e.width/100,n.value=e.height/100,p.setAttribute("checked","checked"),
-d.value="custom",f.style.display="none",q.style.display="")}}c="format-"+c;var p=document.createElement("input");p.setAttribute("name",c);p.setAttribute("type","radio");p.setAttribute("value","portrait");var t=document.createElement("input");t.setAttribute("name",c);t.setAttribute("type","radio");t.setAttribute("value","landscape");var d=document.createElement("select");d.style.marginBottom="8px";d.style.borderRadius="4px";d.style.border="1px solid rgb(160, 160, 160)";d.style.width="206px";var f=
-document.createElement("div");f.style.marginLeft="4px";f.style.width="210px";f.style.height="24px";p.style.marginRight="6px";f.appendChild(p);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));f.appendChild(c);t.style.marginLeft="10px";t.style.marginRight="6px";f.appendChild(t);var l=document.createElement("span");l.style.width="100px";mxUtils.write(l,mxResources.get("landscape"));f.appendChild(l);var q=document.createElement("div");q.style.marginLeft=
-"4px";q.style.width="210px";q.style.height="24px";var m=document.createElement("input");m.setAttribute("size","7");m.style.textAlign="right";q.appendChild(m);mxUtils.write(q," in x ");var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";q.appendChild(n);mxUtils.write(q," in");f.style.display="none";q.style.display="none";for(var u={},v=PageSetupDialog.getFormats(),y=0;y<v.length;y++){var x=v[y];u[x.key]=x;var F=document.createElement("option");F.setAttribute("value",
-x.key);mxUtils.write(F,x.title);d.appendChild(F)}var H=!1;g();b.appendChild(d);mxUtils.br(b);b.appendChild(f);b.appendChild(q);var z=e,D=function(b,c){var l=u[d.value];null!=l.format?(m.value=l.format.width/100,n.value=l.format.height/100,q.style.display="none",f.style.display=""):(f.style.display="none",q.style.display="");l=parseFloat(m.value);if(isNaN(l)||0>=l)m.value=e.width/100;l=parseFloat(n.value);if(isNaN(l)||0>=l)n.value=e.height/100;l=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),
+var PageSetupDialog=function(b){function c(){null==q||q==mxConstants.NONE?(l.style.backgroundColor="",l.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(l.style.backgroundColor=q,l.style.backgroundImage="")}function e(){var d=v;null!=d&&Graph.isPageLink(d.src)&&(d=b.createImageForPageLink(d.src,null));null!=d&&null!=d.src?(u.setAttribute("src",d.src),u.style.display=""):(u.removeAttribute("src"),u.style.display="none")}var k=b.editor.graph,f,p,t=document.createElement("table");t.style.width=
+"100%";t.style.height="100%";var d=document.createElement("tbody");f=document.createElement("tr");p=document.createElement("td");p.style.verticalAlign="top";p.style.fontSize="10pt";mxUtils.write(p,mxResources.get("paperSize")+":");f.appendChild(p);p=document.createElement("td");p.style.verticalAlign="top";p.style.fontSize="10pt";var g=PageSetupDialog.addPageFormatPanel(p,"pagesetupdialog",k.pageFormat);f.appendChild(p);d.appendChild(f);f=document.createElement("tr");p=document.createElement("td");
+mxUtils.write(p,mxResources.get("background")+":");f.appendChild(p);p=document.createElement("td");p.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var l=document.createElement("button");l.style.width="22px";l.style.height="22px";l.style.cursor="pointer";l.style.marginRight="20px";l.style.backgroundPosition="center center";l.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(l.style.position="relative",l.style.top="-6px");var q=k.background;c();mxEvent.addListener(l,
+"click",function(d){b.pickColor(q||"none",function(b){q=b;c()});mxEvent.consume(d)});p.appendChild(l);mxUtils.write(p,mxResources.get("gridSize")+":");var m=document.createElement("input");m.setAttribute("type","number");m.setAttribute("min","0");m.style.width="40px";m.style.marginLeft="6px";m.value=k.getGridSize();p.appendChild(m);mxEvent.addListener(m,"change",function(){var b=parseInt(m.value);m.value=Math.max(1,isNaN(b)?k.getGridSize():b)});f.appendChild(p);d.appendChild(f);f=document.createElement("tr");
+p=document.createElement("td");mxUtils.write(p,mxResources.get("image")+":");f.appendChild(p);p=document.createElement("td");var n=document.createElement("button");n.className="geBtn";n.style.margin="0px";mxUtils.write(n,mxResources.get("change")+"...");var u=document.createElement("img");u.setAttribute("valign","middle");u.style.verticalAlign="middle";u.style.border="1px solid lightGray";u.style.borderRadius="4px";u.style.marginRight="14px";u.style.maxWidth="100px";u.style.cursor="pointer";u.style.height=
+"60px";u.style.padding="4px";var v=k.backgroundImage,y=function(d){b.showBackgroundImageDialog(function(b,d){d||(v=b,e())},v);mxEvent.consume(d)};mxEvent.addListener(n,"click",y);mxEvent.addListener(u,"click",y);e();p.appendChild(u);p.appendChild(n);f.appendChild(p);d.appendChild(f);f=document.createElement("tr");p=document.createElement("td");p.colSpan=2;p.style.paddingTop="16px";p.setAttribute("align","right");n=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});n.className="geBtn";
+b.editor.cancelFirst&&p.appendChild(n);y=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();var d=parseInt(m.value);isNaN(d)||k.gridSize===d||k.setGridSize(d);d=new ChangePageSetup(b,q,v,g.get());d.ignoreColor=k.background==q;d.ignoreImage=(null!=k.backgroundImage?k.backgroundImage.src:null)===(null!=v?v.src:null);k.pageFormat.width==d.previousFormat.width&&k.pageFormat.height==d.previousFormat.height&&d.ignoreColor&&d.ignoreImage||k.model.execute(d)});y.className="geBtn gePrimaryBtn";
+p.appendChild(y);b.editor.cancelFirst||p.appendChild(n);f.appendChild(p);d.appendChild(f);t.appendChild(d);this.container=t};
+PageSetupDialog.addPageFormatPanel=function(b,c,e,k){function f(b,c,l){if(l||m!=document.activeElement&&n!=document.activeElement){b=!1;for(c=0;c<v.length;c++)l=v[c],H?"custom"==l.key&&(d.value=l.key,H=!1):null!=l.format&&("a4"==l.key?826==e.width?(e=mxRectangle.fromRectangle(e),e.width=827):826==e.height&&(e=mxRectangle.fromRectangle(e),e.height=827):"a5"==l.key&&(584==e.width?(e=mxRectangle.fromRectangle(e),e.width=583):584==e.height&&(e=mxRectangle.fromRectangle(e),e.height=583)),e.width==l.format.width&&
+e.height==l.format.height?(d.value=l.key,p.setAttribute("checked","checked"),p.defaultChecked=!0,p.checked=!0,t.removeAttribute("checked"),t.defaultChecked=!1,t.checked=!1,b=!0):e.width==l.format.height&&e.height==l.format.width&&(d.value=l.key,p.removeAttribute("checked"),p.defaultChecked=!1,p.checked=!1,t.setAttribute("checked","checked"),t.defaultChecked=!0,b=t.checked=!0));b?(g.style.display="",q.style.display="none"):(m.value=e.width/100,n.value=e.height/100,p.setAttribute("checked","checked"),
+d.value="custom",g.style.display="none",q.style.display="")}}c="format-"+c;var p=document.createElement("input");p.setAttribute("name",c);p.setAttribute("type","radio");p.setAttribute("value","portrait");var t=document.createElement("input");t.setAttribute("name",c);t.setAttribute("type","radio");t.setAttribute("value","landscape");var d=document.createElement("select");d.style.marginBottom="8px";d.style.borderRadius="4px";d.style.border="1px solid rgb(160, 160, 160)";d.style.width="206px";var g=
+document.createElement("div");g.style.marginLeft="4px";g.style.width="210px";g.style.height="24px";p.style.marginRight="6px";g.appendChild(p);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));g.appendChild(c);t.style.marginLeft="10px";t.style.marginRight="6px";g.appendChild(t);var l=document.createElement("span");l.style.width="100px";mxUtils.write(l,mxResources.get("landscape"));g.appendChild(l);var q=document.createElement("div");q.style.marginLeft=
+"4px";q.style.width="210px";q.style.height="24px";var m=document.createElement("input");m.setAttribute("size","7");m.style.textAlign="right";q.appendChild(m);mxUtils.write(q," in x ");var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";q.appendChild(n);mxUtils.write(q," in");g.style.display="none";q.style.display="none";for(var u={},v=PageSetupDialog.getFormats(),y=0;y<v.length;y++){var x=v[y];u[x.key]=x;var F=document.createElement("option");F.setAttribute("value",
+x.key);mxUtils.write(F,x.title);d.appendChild(F)}var H=!1;f();b.appendChild(d);mxUtils.br(b);b.appendChild(g);b.appendChild(q);var z=e,D=function(b,c){var l=u[d.value];null!=l.format?(m.value=l.format.width/100,n.value=l.format.height/100,q.style.display="none",g.style.display=""):(g.style.display="none",q.style.display="");l=parseFloat(m.value);if(isNaN(l)||0>=l)m.value=e.width/100;l=parseFloat(n.value);if(isNaN(l)||0>=l)n.value=e.height/100;l=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),
Math.floor(100*parseFloat(n.value)));"custom"!=d.value&&t.checked&&(l=new mxRectangle(0,0,l.height,l.width));c&&H||l.width==z.width&&l.height==z.height||(z=l,null!=k&&k(z))};mxEvent.addListener(c,"click",function(b){p.checked=!0;D(b);mxEvent.consume(b)});mxEvent.addListener(l,"click",function(b){t.checked=!0;D(b);mxEvent.consume(b)});mxEvent.addListener(m,"blur",D);mxEvent.addListener(m,"click",D);mxEvent.addListener(n,"blur",D);mxEvent.addListener(n,"click",D);mxEvent.addListener(t,"change",D);mxEvent.addListener(p,
-"change",D);mxEvent.addListener(d,"change",function(b){H="custom"==d.value;D(b,!0)});D();return{set:function(b){e=b;g(null,null,!0)},get:function(){return z},widthInput:m,heightInput:n}};
+"change",D);mxEvent.addListener(d,"change",function(b){H="custom"==d.value;D(b,!0)});D();return{set:function(b){e=b;f(null,null,!0)},get:function(){return z},widthInput:m,heightInput:n}};
PageSetupDialog.getFormats=function(){return[{key:"letter",title:'US-Letter (8,5" x 11")',format:mxConstants.PAGE_FORMAT_LETTER_PORTRAIT},{key:"legal",title:'US-Legal (8,5" x 14")',format:new mxRectangle(0,0,850,1400)},{key:"tabloid",title:'US-Tabloid (11" x 17")',format:new mxRectangle(0,0,1100,1700)},{key:"executive",title:'US-Executive (7" x 10")',format:new mxRectangle(0,0,700,1E3)},{key:"a0",title:"A0 (841 mm x 1189 mm)",format:new mxRectangle(0,0,3300,4681)},{key:"a1",title:"A1 (594 mm x 841 mm)",
format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)",format:new mxRectangle(0,0,1654,2336)},{key:"a3",title:"A3 (297 mm x 420 mm)",format:new mxRectangle(0,0,1169,1654)},{key:"a4",title:"A4 (210 mm x 297 mm)",format:mxConstants.PAGE_FORMAT_A4_PORTRAIT},{key:"a5",title:"A5 (148 mm x 210 mm)",format:new mxRectangle(0,0,583,827)},{key:"a6",title:"A6 (105 mm x 148 mm)",format:new mxRectangle(0,0,413,583)},{key:"a7",title:"A7 (74 mm x 105 mm)",format:new mxRectangle(0,0,291,413)},
{key:"b4",title:"B4 (250 mm x 353 mm)",format:new mxRectangle(0,0,980,1390)},{key:"b5",title:"B5 (176 mm x 250 mm)",format:new mxRectangle(0,0,690,980)},{key:"16-9",title:"16:9 (1600 x 900)",format:new mxRectangle(0,0,900,1600)},{key:"16-10",title:"16:10 (1920 x 1200)",format:new mxRectangle(0,0,1200,1920)},{key:"4-3",title:"4:3 (1600 x 1200)",format:new mxRectangle(0,0,1200,1600)},{key:"custom",title:mxResources.get("custom"),format:null}]};
-var FilenameDialog=function(b,c,e,k,g,p,t,d,f,l,q,m){f=null!=f?f:!0;var n,u,v=document.createElement("table"),y=document.createElement("tbody");v.style.position="absolute";v.style.top="30px";v.style.left="20px";n=document.createElement("tr");u=document.createElement("td");u.style.textOverflow="ellipsis";u.style.textAlign="right";u.style.maxWidth="100px";u.style.fontSize="10pt";u.style.width="84px";mxUtils.write(u,(g||mxResources.get("filename"))+":");n.appendChild(u);var x=document.createElement("input");
-x.setAttribute("value",c||"");x.style.marginLeft="4px";x.style.width=null!=m?m+"px":"180px";var F=mxUtils.button(e,function(){if(null==p||p(x.value))f&&b.hideDialog(),k(x.value)});F.className="geBtn gePrimaryBtn";this.init=function(){if(null!=g||null==t)if(x.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?x.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var b=v.parentNode;if(null!=b){var d=null;mxEvent.addListener(b,"dragleave",function(b){null!=d&&(d.style.backgroundColor=
+var FilenameDialog=function(b,c,e,k,f,p,t,d,g,l,q,m){g=null!=g?g:!0;var n,u,v=document.createElement("table"),y=document.createElement("tbody");v.style.position="absolute";v.style.top="30px";v.style.left="20px";n=document.createElement("tr");u=document.createElement("td");u.style.textOverflow="ellipsis";u.style.textAlign="right";u.style.maxWidth="100px";u.style.fontSize="10pt";u.style.width="84px";mxUtils.write(u,(f||mxResources.get("filename"))+":");n.appendChild(u);var x=document.createElement("input");
+x.setAttribute("value",c||"");x.style.marginLeft="4px";x.style.width=null!=m?m+"px":"180px";var F=mxUtils.button(e,function(){if(null==p||p(x.value))g&&b.hideDialog(),k(x.value)});F.className="geBtn gePrimaryBtn";this.init=function(){if(null!=f||null==t)if(x.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?x.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var b=v.parentNode;if(null!=b){var d=null;mxEvent.addListener(b,"dragleave",function(b){null!=d&&(d.style.backgroundColor=
"",d=null);b.stopPropagation();b.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(b){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=x,d.style.backgroundColor="#ebf2f9");b.stopPropagation();b.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(b){null!=d&&(d.style.backgroundColor="",d=null);0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")&&(x.value=decodeURIComponent(b.dataTransfer.getData("text/uri-list")),F.click());b.stopPropagation();
-b.preventDefault()}))}}};u=document.createElement("td");u.style.whiteSpace="nowrap";u.appendChild(x);n.appendChild(u);if(null!=g||null==t)y.appendChild(n),null!=q&&(u.appendChild(FilenameDialog.createTypeHint(b,x,q)),null!=b.editor.diagramFileTypes&&(n=document.createElement("tr"),u=document.createElement("td"),u.style.textOverflow="ellipsis",u.style.textAlign="right",u.style.maxWidth="100px",u.style.fontSize="10pt",u.style.width="84px",mxUtils.write(u,mxResources.get("type")+":"),n.appendChild(u),
+b.preventDefault()}))}}};u=document.createElement("td");u.style.whiteSpace="nowrap";u.appendChild(x);n.appendChild(u);if(null!=f||null==t)y.appendChild(n),null!=q&&(u.appendChild(FilenameDialog.createTypeHint(b,x,q)),null!=b.editor.diagramFileTypes&&(n=document.createElement("tr"),u=document.createElement("td"),u.style.textOverflow="ellipsis",u.style.textAlign="right",u.style.maxWidth="100px",u.style.fontSize="10pt",u.style.width="84px",mxUtils.write(u,mxResources.get("type")+":"),n.appendChild(u),
u=document.createElement("td"),u.style.whiteSpace="nowrap",n.appendChild(u),c=FilenameDialog.createFileTypes(b,x,b.editor.diagramFileTypes),c.style.marginLeft="4px",c.style.width="198px",u.appendChild(c),x.style.width=null!=m?m-40+"px":"190px",n.appendChild(u),y.appendChild(n)));null!=t&&(n=document.createElement("tr"),u=document.createElement("td"),u.colSpan=2,u.appendChild(t),n.appendChild(u),y.appendChild(n));n=document.createElement("tr");u=document.createElement("td");u.colSpan=2;u.style.paddingTop=
null!=q?"12px":"20px";u.style.whiteSpace="nowrap";u.setAttribute("align","right");q=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog();null!=l&&l()});q.className="geBtn";b.editor.cancelFirst&&u.appendChild(q);null!=d&&(m=mxUtils.button(mxResources.get("help"),function(){b.editor.graph.openLink(d)}),m.className="geBtn",u.appendChild(m));mxEvent.addListener(x,"keypress",function(b){13==b.keyCode&&F.click()});u.appendChild(F);b.editor.cancelFirst||u.appendChild(q);n.appendChild(u);y.appendChild(n);
v.appendChild(y);this.container=v};FilenameDialog.filenameHelpLink=null;
-FilenameDialog.createTypeHint=function(b,c,e){var k=document.createElement("img");k.style.backgroundPosition="center bottom";k.style.backgroundRepeat="no-repeat";k.style.margin="2px 0 0 4px";k.style.verticalAlign="top";k.style.cursor="pointer";k.style.height="16px";k.style.width="16px";mxUtils.setOpacity(k,70);var g=function(){k.setAttribute("src",Editor.helpImage);k.setAttribute("title",mxResources.get("help"));for(var b=0;b<e.length;b++)if(0<e[b].ext.length&&c.value.toLowerCase().substring(c.value.length-
-e[b].ext.length-1)=="."+e[b].ext){k.setAttribute("title",mxResources.get(e[b].title));break}};mxEvent.addListener(c,"keyup",g);mxEvent.addListener(c,"change",g);mxEvent.addListener(k,"click",function(c){var e=k.getAttribute("title");k.getAttribute("src")==Editor.helpImage?b.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=e&&b.showError(null,e,mxResources.get("help"),function(){b.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);mxEvent.consume(c)});
-g();return k};
-FilenameDialog.createFileTypes=function(b,c,e){var k=document.createElement("select");for(b=0;b<e.length;b++){var g=document.createElement("option");g.setAttribute("value",b);mxUtils.write(g,mxResources.get(e[b].description)+" (."+e[b].extension+")");k.appendChild(g)}mxEvent.addListener(k,"change",function(b){b=e[k.value].extension;var g=c.value.lastIndexOf(".drawio."),g=0<g?g:c.value.lastIndexOf(".");"drawio"!=b&&(b="drawio."+b);c.value=0<g?c.value.substring(0,g+1)+b:c.value+"."+b;"createEvent"in
-document?(b=document.createEvent("HTMLEvents"),b.initEvent("change",!1,!0),c.dispatchEvent(b)):c.fireEvent("onchange")});b=function(b){b=c.value.toLowerCase();for(var g=0,d=0;d<e.length;d++){var f=e[d].extension,l=null;"drawio"!=f&&(l=f,f=".drawio."+f);if(b.substring(b.length-f.length-1)=="."+f||null!=l&&b.substring(b.length-l.length-1)=="."+l){g=d;break}}k.value=g};mxEvent.addListener(c,"change",b);mxEvent.addListener(c,"keyup",b);b();return k};
-(function(){mxGraphView.prototype.validateBackgroundPage=function(){var b=this.graph;if(null!=b.container&&!b.transparentBackground){if(b.pageVisible){var d=this.getBackgroundPageBounds();if(null==this.backgroundPageShape){for(var f=b.container.firstChild;null!=f&&f.nodeType!=mxConstants.NODETYPE_ELEMENT;)f=f.nextSibling;null!=f&&(this.backgroundPageShape=this.createBackgroundPageShape(d),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,
-this.backgroundPageShape.init(b.container),f.style.position="absolute",b.container.insertBefore(this.backgroundPageShape.node,f),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(d){b.dblClick(d)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(d){b.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(d))}),mxUtils.bind(this,function(d){null!=
+FilenameDialog.createTypeHint=function(b,c,e){var k=document.createElement("img");k.style.backgroundPosition="center bottom";k.style.backgroundRepeat="no-repeat";k.style.margin="2px 0 0 4px";k.style.verticalAlign="top";k.style.cursor="pointer";k.style.height="16px";k.style.width="16px";mxUtils.setOpacity(k,70);var f=function(){k.setAttribute("src",Editor.helpImage);k.setAttribute("title",mxResources.get("help"));for(var b=0;b<e.length;b++)if(0<e[b].ext.length&&c.value.toLowerCase().substring(c.value.length-
+e[b].ext.length-1)=="."+e[b].ext){k.setAttribute("title",mxResources.get(e[b].title));break}};mxEvent.addListener(c,"keyup",f);mxEvent.addListener(c,"change",f);mxEvent.addListener(k,"click",function(c){var e=k.getAttribute("title");k.getAttribute("src")==Editor.helpImage?b.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=e&&b.showError(null,e,mxResources.get("help"),function(){b.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);mxEvent.consume(c)});
+f();return k};
+FilenameDialog.createFileTypes=function(b,c,e){var k=document.createElement("select");for(b=0;b<e.length;b++){var f=document.createElement("option");f.setAttribute("value",b);mxUtils.write(f,mxResources.get(e[b].description)+" (."+e[b].extension+")");k.appendChild(f)}mxEvent.addListener(k,"change",function(b){b=e[k.value].extension;var f=c.value.lastIndexOf(".drawio."),f=0<f?f:c.value.lastIndexOf(".");"drawio"!=b&&(b="drawio."+b);c.value=0<f?c.value.substring(0,f+1)+b:c.value+"."+b;"createEvent"in
+document?(b=document.createEvent("HTMLEvents"),b.initEvent("change",!1,!0),c.dispatchEvent(b)):c.fireEvent("onchange")});b=function(b){b=c.value.toLowerCase();for(var f=0,d=0;d<e.length;d++){var g=e[d].extension,l=null;"drawio"!=g&&(l=g,g=".drawio."+g);if(b.substring(b.length-g.length-1)=="."+g||null!=l&&b.substring(b.length-l.length-1)=="."+l){f=d;break}}k.value=f};mxEvent.addListener(c,"change",b);mxEvent.addListener(c,"keyup",b);b();return k};
+(function(){mxGraphView.prototype.validateBackgroundPage=function(){var b=this.graph;if(null!=b.container&&!b.transparentBackground){if(b.pageVisible){var d=this.getBackgroundPageBounds();if(null==this.backgroundPageShape){for(var g=b.container.firstChild;null!=g&&g.nodeType!=mxConstants.NODETYPE_ELEMENT;)g=g.nextSibling;null!=g&&(this.backgroundPageShape=this.createBackgroundPageShape(d),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,
+this.backgroundPageShape.init(b.container),g.style.position="absolute",b.container.insertBefore(this.backgroundPageShape.node,g),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(d){b.dblClick(d)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(d){b.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(d))}),mxUtils.bind(this,function(d){null!=
b.tooltipHandler&&b.tooltipHandler.isHideOnHover()&&b.tooltipHandler.hide();b.isMouseDown&&!mxEvent.isConsumed(d)&&b.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(d))}),mxUtils.bind(this,function(d){b.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(d))})))}else this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=d,this.backgroundPageShape.redraw()}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null);this.validateBackgroundStyles()}};
-mxGraphView.prototype.validateBackgroundStyles=function(){var b=this.graph,d=null==b.background||b.background==mxConstants.NONE?b.defaultPageBackgroundColor:b.background,f=null!=d&&this.gridColor!=d.toLowerCase()?this.gridColor:"#ffffff",c="none",e="";if(b.isGridEnabled()||b.gridVisible){e=10;mxClient.IS_SVG?(c=unescape(encodeURIComponent(this.createSvgGrid(f))),c=window.btoa?btoa(c):Base64.encode(c,!0),c="url(data:image/svg+xml;base64,"+c+")",e=b.gridSize*this.scale*this.gridSteps):c="url("+this.gridImage+
-")";var g=f=0;null!=b.view.backgroundPageShape&&(g=this.getBackgroundPageBounds(),f=1+g.x,g=1+g.y);e=-Math.round(e-mxUtils.mod(this.translate.x*this.scale-f,e))+"px "+-Math.round(e-mxUtils.mod(this.translate.y*this.scale-g,e))+"px"}f=b.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);null!=b.view.backgroundPageShape?(b.view.backgroundPageShape.node.style.backgroundPosition=e,b.view.backgroundPageShape.node.style.backgroundImage=c,b.view.backgroundPageShape.node.style.backgroundColor=d,b.view.backgroundPageShape.node.style.borderColor=
-b.defaultPageBorderColor,b.container.className="geDiagramContainer geDiagramBackdrop",f.style.backgroundImage="none",f.style.backgroundColor=""):(b.container.className="geDiagramContainer",f.style.backgroundPosition=e,f.style.backgroundColor=d,f.style.backgroundImage=c)};mxGraphView.prototype.createSvgGrid=function(b){for(var d=this.graph.gridSize*this.scale;d<this.minGridSize;)d*=2;for(var f=this.gridSteps*d,c=[],e=1;e<this.gridSteps;e++){var g=e*d;c.push("M 0 "+g+" L "+f+" "+g+" M "+g+" 0 L "+g+
-" "+f)}return'<svg width="'+f+'" height="'+f+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+f+'" height="'+f+'" patternUnits="userSpaceOnUse"><path d="'+c.join(" ")+'" fill="none" stroke="'+b+'" opacity="0.2" stroke-width="1"/><path d="M '+f+" 0 L 0 0 0 "+f+'" fill="none" stroke="'+b+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var b=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(c,d){b.apply(this,arguments);
-if(null!=this.shiftPreview1){var f=this.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);var e=this.gridSize*this.view.scale*this.view.gridSteps,e=-Math.round(e-mxUtils.mod(this.view.translate.x*this.view.scale+c,e))+"px "+-Math.round(e-mxUtils.mod(this.view.translate.y*this.view.scale+d,e))+"px";f.style.backgroundPosition=e}};mxGraph.prototype.updatePageBreaks=function(b,d,f){var c=this.view.scale,e=this.view.translate,g=this.pageFormat,k=c*this.pageScale,u=this.view.getBackgroundPageBounds();
-d=u.width;f=u.height;var v=new mxRectangle(c*e.x,c*e.y,g.width*k,g.height*k),t=(b=b&&Math.min(v.width,v.height)>this.minPageBreakDist)?Math.ceil(f/v.height)-1:0,p=b?Math.ceil(d/v.width)-1:0,F=u.x+d,H=u.y+f;null==this.horizontalPageBreaks&&0<t&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<p&&(this.verticalPageBreaks=[]);b=mxUtils.bind(this,function(b){if(null!=b){for(var d=b==this.horizontalPageBreaks?t:p,f=0;f<=d;f++){var c=b==this.horizontalPageBreaks?[new mxPoint(Math.round(u.x),
-Math.round(u.y+(f+1)*v.height)),new mxPoint(Math.round(F),Math.round(u.y+(f+1)*v.height))]:[new mxPoint(Math.round(u.x+(f+1)*v.width),Math.round(u.y)),new mxPoint(Math.round(u.x+(f+1)*v.width),Math.round(H))];null!=b[f]?(b[f].points=c,b[f].redraw()):(c=new mxPolyline(c,this.pageBreakColor),c.dialect=this.dialect,c.isDashed=this.pageBreakDashed,c.pointerEvents=!1,c.init(this.view.backgroundPane),c.redraw(),b[f]=c)}for(f=d;f<b.length;f++)b[f].destroy();b.splice(d,b.length-d)}});b(this.horizontalPageBreaks);
-b(this.verticalPageBreaks)};var c=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(b,d,f){for(var e=0;e<d.length;e++){if(this.graph.isTableCell(d[e])||this.graph.isTableRow(d[e]))return!1;if(this.graph.getModel().isVertex(d[e])){var g=this.graph.getCellGeometry(d[e]);if(null!=g&&g.relative)return!1}}return c.apply(this,arguments)};var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var b=
-e.apply(this,arguments);b.intersects=mxUtils.bind(this,function(d,f){return this.isConnecting()?!0:mxCellMarker.prototype.intersects.apply(b,arguments)});return b};mxGraphView.prototype.createBackgroundPageShape=function(b){return new mxRectangleShape(b,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var b=this.getGraphBounds(),d=0<b.width?b.x/this.scale-this.translate.x:0,f=0<b.height?b.y/this.scale-this.translate.y:0,c=this.graph.pageFormat,
-e=this.graph.pageScale,g=c.width*e,c=c.height*e,e=Math.floor(Math.min(0,d)/g),k=Math.floor(Math.min(0,f)/c);return new mxRectangle(this.scale*(this.translate.x+e*g),this.scale*(this.translate.y+k*c),this.scale*(Math.ceil(Math.max(1,d+b.width/this.scale)/g)-e)*g,this.scale*(Math.ceil(Math.max(1,f+b.height/this.scale)/c)-k)*c)};var k=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(b,d){k.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
-this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=b+"px",this.view.backgroundPageShape.node.style.marginTop=d+"px")};var g=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(b,d,f,c,e,k){var l=g.apply(this,arguments);null==k||k||mxEvent.addListener(l,"mousedown",function(b){mxEvent.consume(b)});return l};var p=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
-function(b,d,f){var c,e=this.graph.model.getParent(b);if(d)c=this.graph.model.isEdge(b)?null:this.graph.getCellGeometry(b),c=!this.graph.model.isEdge(e)&&!this.graph.isSiblingSelected(b)&&(null!=c&&c.relative||!this.graph.isContainer(e)||this.graph.isPart(b));else if(c=p.apply(this,arguments),this.graph.isTableCell(b)||this.graph.isTableRow(b))c=e,this.graph.isTable(c)||(c=this.graph.model.getParent(c)),c=!this.graph.selectionCellsHandler.isHandled(c)||this.graph.isCellSelected(c)&&this.graph.isToggleEvent(f.getEvent())||
-this.graph.isCellSelected(b)&&!this.graph.isToggleEvent(f.getEvent())||this.graph.isTableCell(b)&&this.graph.isCellSelected(e);return c};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(b){b=b.getCell();for(var d=this.graph.getModel(),f=d.getParent(b),c=this.graph.view.getState(f),e=this.graph.isCellSelected(b);null!=c&&(d.isVertex(f)||d.isEdge(f));){var g=this.graph.isCellSelected(f),e=e||g;if(g||!e&&(this.graph.isTableCell(b)||this.graph.isTableRow(b)))b=f;f=d.getParent(f)}return b}})();EditorUi=function(b,c,e){mxEventSource.call(this);this.destroyFunctions=[];this.editor=b||new Editor;this.container=c||document.body;var k=this.editor.graph;k.lightbox=e;var g=k.getGraphBounds;k.getGraphBounds=function(b){var d=g.apply(this,arguments);b=this.backgroundImage;if(null!=b){var f=this.view.translate,c=this.view.scale,d=mxRectangle.fromRectangle(d);d.add(new mxRectangle((f.x+b.x)*c,(f.y+b.y)*c,b.width*c,b.height*c))}return d};k.useCssTransforms&&(this.lazyZoomDelay=0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage=
-"data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,k.isEnabled=function(){return!1},k.panningHandler.isForcePanningEvent=function(b){return!mxEvent.isPopupTrigger(b.getEvent())});this.actions=new Actions(this);
-this.menus=this.createMenus();if(!k.standalone){var p="rounded shadow glass dashed dashPattern labelBackgroundColor labelBorderColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle pointerEvents".split(" "),t="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),
-d="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(b){try{var d=k.getCellStyle(b,!1),f=[],c=[],e;for(e in d)f.push(d[e]),c.push(e);k.getModel().isEdge(b)?k.currentEdgeStyle={}:k.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",c,"values",f,"cells",[b]))}catch(A){this.handleError(A)}};this.clearDefaultStyle=function(){k.currentEdgeStyle=mxUtils.clone(k.defaultEdgeStyle);
-k.currentVertexStyle=mxUtils.clone(k.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var f=["fontFamily","fontSource","fontSize","fontColor"];for(c=0;c<f.length;c++)0>mxUtils.indexOf(p,f[c])&&p.push(f[c]);var l="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),q=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
-["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(c=0;c<q.length;c++)for(e=0;e<q[c].length;e++)p.push(q[c][e]);for(c=0;c<t.length;c++)0>mxUtils.indexOf(p,t[c])&&p.push(t[c]);var m=function(b,f,c,e,l,g,m){e=null!=e?e:k.currentVertexStyle;l=null!=l?l:k.currentEdgeStyle;g=null!=g?g:!0;c=null!=c?c:k.getModel();if(m){m=[];for(var G=0;G<b.length;G++)m=m.concat(c.getDescendants(b[G]));b=m}c.beginUpdate();try{for(G=0;G<b.length;G++){var n=b[G],A;if(f)A=["fontSize","fontFamily","fontColor"];
-else{var v=c.getStyle(n),u=null!=v?v.split(";"):[];A=p.slice();for(var I=0;I<u.length;I++){var x=u[I],t=x.indexOf("=");if(0<=t){var N=x.substring(0,t),y=mxUtils.indexOf(A,N);0<=y&&A.splice(y,1);for(m=0;m<q.length;m++){var z=q[m];if(0<=mxUtils.indexOf(z,N))for(var Y=0;Y<z.length;Y++){var C=mxUtils.indexOf(A,z[Y]);0<=C&&A.splice(C,1)}}}}}var U=c.isEdge(n);m=U?l:e;for(var D=c.getStyle(n),I=0;I<A.length;I++){var N=A[I],O=m[N];null!=O&&"edgeStyle"!=N&&("shape"!=N||U)&&(!U||g||0>mxUtils.indexOf(d,N))&&
-(D=mxUtils.setStyle(D,N,O))}Editor.simpleLabels&&(D=mxUtils.setStyle(mxUtils.setStyle(D,"html",null),"whiteSpace",null));c.setStyle(n,D)}}finally{c.endUpdate()}return b};k.addListener("cellsInserted",function(b,d){m(d.getProperty("cells"),null,null,null,null,!0,!0)});k.addListener("textInserted",function(b,d){m(d.getProperty("cells"),!0)});this.insertHandler=m;this.createDivs();this.createUi();this.refresh();var n=mxUtils.bind(this,function(b){null==b&&(b=window.event);return k.isEditing()||null!=
-b&&this.isSelectionAllowed(b)});this.container==document.body&&(this.menubarContainer.onselectstart=n,this.menubarContainer.onmousedown=n,this.toolbarContainer.onselectstart=n,this.toolbarContainer.onmousedown=n,this.diagramContainer.onselectstart=n,this.diagramContainer.onmousedown=n,this.sidebarContainer.onselectstart=n,this.sidebarContainer.onmousedown=n,this.formatContainer.onselectstart=n,this.formatContainer.onmousedown=n,this.footerContainer.onselectstart=n,this.footerContainer.onmousedown=
-n,null!=this.tabContainer&&(this.tabContainer.onselectstart=n));!this.editor.chromeless||this.editor.editable?(c=function(b){if(null!=b){var d=mxEvent.getSource(b);if("A"==d.nodeName)for(;null!=d;){if("geHint"==d.className)return!0;d=d.parentNode}}return n(b)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",c):this.diagramContainer.oncontextmenu=c):k.panningHandler.usePopupTrigger=!1;k.init(this.diagramContainer);
-mxClient.IS_SVG&&null!=k.view.getDrawPane()&&(c=k.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=k.graphHandler){var u=k.graphHandler.start;k.graphHandler.start=function(){null!=C.hoverIcons&&C.hoverIcons.reset();u.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(b){var d=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(b)-d.x-this.diagramContainer.clientWidth||
-0<mxEvent.getClientY(b)-d.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var v=!1,y=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(b,d){return v||y.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(b){32!=b.which||k.isEditing()?mxEvent.isConsumed(b)||27!=b.keyCode||this.hideDialog(null,!0):(v=!0,this.hoverIcons.reset(),k.container.style.cursor="move",
-k.isEditing()||mxEvent.getSource(b)!=k.container||mxEvent.consume(b))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(b){k.container.style.cursor="";v=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var x=k.panningHandler.isForcePanningEvent;k.panningHandler.isForcePanningEvent=function(b){return x.apply(this,arguments)||v||mxEvent.isMouseEvent(b.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(b.getEvent()))&&(!mxEvent.isControlDown(b.getEvent())&&
-mxEvent.isRightMouseButton(b.getEvent())||mxEvent.isMiddleMouseButton(b.getEvent()))};var F=k.cellEditor.isStopEditingEvent;k.cellEditor.isStopEditingEvent=function(b){return F.apply(this,arguments)||13==b.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b)||mxClient.IS_SF&&mxEvent.isShiftDown(b))};var H=k.isZoomWheelEvent;k.isZoomWheelEvent=function(){return v||H.apply(this,arguments)};var z=!1,D=null,L=null,E=null,J=mxUtils.bind(this,function(){if(null!=this.toolbar&&
-z!=k.cellEditor.isContentEditing()){for(var b=this.toolbar.container.firstChild,d=[];null!=b;){var f=b.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,b)&&(b.parentNode.removeChild(b),d.push(b));b=f}b=this.toolbar.fontMenu;f=this.toolbar.sizeMenu;if(null==E)this.toolbar.createTextToolbar();else{for(var c=0;c<E.length;c++)this.toolbar.container.appendChild(E[c]);this.toolbar.fontMenu=D;this.toolbar.sizeMenu=L}z=k.cellEditor.isContentEditing();D=b;L=f;E=d}}),C=this,K=k.cellEditor.startEditing;
-k.cellEditor.startEditing=function(){K.apply(this,arguments);J();if(k.cellEditor.isContentEditing()){var b=!1,d=function(){b||(b=!0,window.setTimeout(function(){var d=k.getSelectedEditingElement();null!=d&&(d=mxUtils.getCurrentStyle(d),null!=d&&null!=C.toolbar&&(C.toolbar.setFontName(Graph.stripQuotes(d.fontFamily)),C.toolbar.setFontSize(parseInt(d.fontSize))));b=!1},0))};mxEvent.addListener(k.cellEditor.textarea,"input",d);mxEvent.addListener(k.cellEditor.textarea,"touchend",d);mxEvent.addListener(k.cellEditor.textarea,
-"mouseup",d);mxEvent.addListener(k.cellEditor.textarea,"keyup",d);d()}};var M=k.cellEditor.stopEditing;k.cellEditor.stopEditing=function(b,d){try{M.apply(this,arguments),J()}catch(U){C.handleError(U)}};k.container.setAttribute("tabindex","0");k.container.style.cursor="default";if(window.self===window.top&&null!=k.container.parentNode)try{k.container.focus()}catch(N){}var aa=k.fireMouseEvent;k.fireMouseEvent=function(b,d,f){b==mxEvent.MOUSE_DOWN&&this.container.focus();aa.apply(this,arguments)};k.popupMenuHandler.autoExpand=
-!0;null!=this.menus&&(k.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(b,d,f){this.menus.createPopupMenu(b,d,f)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(b){k.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(b);this.getKeyHandler=function(){return keyHandler};k.connectionHandler.addListener(mxEvent.CONNECT,function(b,d){var f=[d.getProperty("cell")];d.getProperty("terminalInserted")&&(f.push(d.getProperty("terminal")),window.setTimeout(function(){null!=
-C.hoverIcons&&C.hoverIcons.update(k.view.getState(f[f.length-1]))},0));m(f)});this.addListener("styleChanged",mxUtils.bind(this,function(b,d){var c=d.getProperty("cells"),e=!1,g=!1;if(0<c.length)for(var q=0;q<c.length&&(e=k.getModel().isVertex(c[q])||e,!(g=k.getModel().isEdge(c[q])||g)||!e);q++);else g=e=!0;for(var c=d.getProperty("keys"),m=d.getProperty("values"),q=0;q<c.length;q++){var n=0<=mxUtils.indexOf(f,c[q]);if("strokeColor"!=c[q]||null!=m[q]&&"none"!=m[q])if(0<=mxUtils.indexOf(t,c[q]))g||
-0<=mxUtils.indexOf(l,c[q])?null==m[q]?delete k.currentEdgeStyle[c[q]]:k.currentEdgeStyle[c[q]]=m[q]:e&&0<=mxUtils.indexOf(p,c[q])&&(null==m[q]?delete k.currentVertexStyle[c[q]]:k.currentVertexStyle[c[q]]=m[q]);else if(0<=mxUtils.indexOf(p,c[q])){if(e||n)null==m[q]?delete k.currentVertexStyle[c[q]]:k.currentVertexStyle[c[q]]=m[q];if(g||n||0<=mxUtils.indexOf(l,c[q]))null==m[q]?delete k.currentEdgeStyle[c[q]]:k.currentEdgeStyle[c[q]]=m[q]}}null!=this.toolbar&&(this.toolbar.setFontName(k.currentVertexStyle.fontFamily||
-Menus.prototype.defaultFont),this.toolbar.setFontSize(k.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==k.currentEdgeStyle.edgeStyle&&"1"==k.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==k.currentEdgeStyle.edgeStyle||"none"==k.currentEdgeStyle.edgeStyle||null==k.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==
-k.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==k.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==k.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==k.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==k.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==k.currentEdgeStyle.shape?
-"geSprite geSprite-linkedge":"flexArrow"==k.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==k.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",k.currentEdgeStyle.shape,k.currentEdgeStyle[mxConstants.STYLE_STARTARROW],mxUtils.getValue(k.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className=
-this.getCssClassForMarker("end",k.currentEdgeStyle.shape,k.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(k.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(b=mxUtils.bind(this,function(){var b=k.currentVertexStyle.fontFamily||"Helvetica",d=String(k.currentVertexStyle.fontSize||"12"),f=k.getView().getState(k.getSelectionCell());null!=f&&(b=f.style[mxConstants.STYLE_FONTFAMILY]||b,d=f.style[mxConstants.STYLE_FONTSIZE]||d,10<b.length&&(b=b.substring(0,8)+"..."));this.toolbar.setFontName(b);
-this.toolbar.setFontSize(d)}),k.getSelectionModel().addListener(mxEvent.CHANGE,b),k.getModel().addListener(mxEvent.CHANGE,b));k.addListener(mxEvent.CELLS_ADDED,function(b,d){var f=d.getProperty("cells"),c=d.getProperty("parent");null!=c&&k.getModel().isLayer(c)&&!k.isCellVisible(c)&&null!=f&&0<f.length&&k.getModel().setVisible(c,!0)});this.gestureHandler=mxUtils.bind(this,function(b){null!=this.currentMenu&&mxEvent.getSource(b)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,
-this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,
-"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){k.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){k.view.validateBackground()}));k.addListener("gridSizeChanged",mxUtils.bind(this,function(){k.isGridEnabled()&&k.view.validateBackground()}));this.editor.resetGraph()}this.init();k.standalone||this.open()};
-EditorUi.compactUi=!0;EditorUi.parsePng=function(b,c,e){function k(b,f){var d=p;p+=f;return b.substring(d,p)}function g(b){b=k(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}var p=0;if(k(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(k(b,4),"IHDR"!=k(b,4))null!=e&&e();else{k(b,17);do{e=g(b);var t=k(b,4);if(null!=c&&c(p-8,t,e))break;value=k(b,e);k(b,4);if("IEND"==t)break}while(e)}};mxUtils.extend(EditorUi,mxEventSource);
+mxGraphView.prototype.validateBackgroundStyles=function(){var b=this.graph,d=null==b.background||b.background==mxConstants.NONE?b.defaultPageBackgroundColor:b.background,g=null!=d&&this.gridColor!=d.toLowerCase()?this.gridColor:"#ffffff",c="none",e="";if(b.isGridEnabled()||b.gridVisible){e=10;mxClient.IS_SVG?(c=unescape(encodeURIComponent(this.createSvgGrid(g))),c=window.btoa?btoa(c):Base64.encode(c,!0),c="url(data:image/svg+xml;base64,"+c+")",e=b.gridSize*this.scale*this.gridSteps):c="url("+this.gridImage+
+")";var f=g=0;null!=b.view.backgroundPageShape&&(f=this.getBackgroundPageBounds(),g=1+f.x,f=1+f.y);e=-Math.round(e-mxUtils.mod(this.translate.x*this.scale-g,e))+"px "+-Math.round(e-mxUtils.mod(this.translate.y*this.scale-f,e))+"px"}g=b.view.canvas;null!=g.ownerSVGElement&&(g=g.ownerSVGElement);null!=b.view.backgroundPageShape?(b.view.backgroundPageShape.node.style.backgroundPosition=e,b.view.backgroundPageShape.node.style.backgroundImage=c,b.view.backgroundPageShape.node.style.backgroundColor=d,b.view.backgroundPageShape.node.style.borderColor=
+b.defaultPageBorderColor,b.container.className="geDiagramContainer geDiagramBackdrop",g.style.backgroundImage="none",g.style.backgroundColor=""):(b.container.className="geDiagramContainer",g.style.backgroundPosition=e,g.style.backgroundColor=d,g.style.backgroundImage=c)};mxGraphView.prototype.createSvgGrid=function(b){for(var d=this.graph.gridSize*this.scale;d<this.minGridSize;)d*=2;for(var g=this.gridSteps*d,c=[],e=1;e<this.gridSteps;e++){var f=e*d;c.push("M 0 "+f+" L "+g+" "+f+" M "+f+" 0 L "+f+
+" "+g)}return'<svg width="'+g+'" height="'+g+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+g+'" height="'+g+'" patternUnits="userSpaceOnUse"><path d="'+c.join(" ")+'" fill="none" stroke="'+b+'" opacity="0.2" stroke-width="1"/><path d="M '+g+" 0 L 0 0 0 "+g+'" fill="none" stroke="'+b+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var b=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(c,d){b.apply(this,arguments);
+if(null!=this.shiftPreview1){var g=this.view.canvas;null!=g.ownerSVGElement&&(g=g.ownerSVGElement);var e=this.gridSize*this.view.scale*this.view.gridSteps,e=-Math.round(e-mxUtils.mod(this.view.translate.x*this.view.scale+c,e))+"px "+-Math.round(e-mxUtils.mod(this.view.translate.y*this.view.scale+d,e))+"px";g.style.backgroundPosition=e}};mxGraph.prototype.updatePageBreaks=function(b,d,g){var c=this.view.scale,e=this.view.translate,f=this.pageFormat,k=c*this.pageScale,u=this.view.getBackgroundPageBounds();
+d=u.width;g=u.height;var v=new mxRectangle(c*e.x,c*e.y,f.width*k,f.height*k),t=(b=b&&Math.min(v.width,v.height)>this.minPageBreakDist)?Math.ceil(g/v.height)-1:0,p=b?Math.ceil(d/v.width)-1:0,F=u.x+d,H=u.y+g;null==this.horizontalPageBreaks&&0<t&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<p&&(this.verticalPageBreaks=[]);b=mxUtils.bind(this,function(b){if(null!=b){for(var d=b==this.horizontalPageBreaks?t:p,g=0;g<=d;g++){var c=b==this.horizontalPageBreaks?[new mxPoint(Math.round(u.x),
+Math.round(u.y+(g+1)*v.height)),new mxPoint(Math.round(F),Math.round(u.y+(g+1)*v.height))]:[new mxPoint(Math.round(u.x+(g+1)*v.width),Math.round(u.y)),new mxPoint(Math.round(u.x+(g+1)*v.width),Math.round(H))];null!=b[g]?(b[g].points=c,b[g].redraw()):(c=new mxPolyline(c,this.pageBreakColor),c.dialect=this.dialect,c.isDashed=this.pageBreakDashed,c.pointerEvents=!1,c.init(this.view.backgroundPane),c.redraw(),b[g]=c)}for(g=d;g<b.length;g++)b[g].destroy();b.splice(d,b.length-d)}});b(this.horizontalPageBreaks);
+b(this.verticalPageBreaks)};var c=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(b,d,g){for(var e=0;e<d.length;e++){if(this.graph.isTableCell(d[e])||this.graph.isTableRow(d[e]))return!1;if(this.graph.getModel().isVertex(d[e])){var f=this.graph.getCellGeometry(d[e]);if(null!=f&&f.relative)return!1}}return c.apply(this,arguments)};var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var b=
+e.apply(this,arguments);b.intersects=mxUtils.bind(this,function(d,g){return this.isConnecting()?!0:mxCellMarker.prototype.intersects.apply(b,arguments)});return b};mxGraphView.prototype.createBackgroundPageShape=function(b){return new mxRectangleShape(b,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var b=this.getGraphBounds(),d=0<b.width?b.x/this.scale-this.translate.x:0,g=0<b.height?b.y/this.scale-this.translate.y:0,c=this.graph.pageFormat,
+e=this.graph.pageScale,f=c.width*e,c=c.height*e,e=Math.floor(Math.min(0,d)/f),k=Math.floor(Math.min(0,g)/c);return new mxRectangle(this.scale*(this.translate.x+e*f),this.scale*(this.translate.y+k*c),this.scale*(Math.ceil(Math.max(1,d+b.width/this.scale)/f)-e)*f,this.scale*(Math.ceil(Math.max(1,g+b.height/this.scale)/c)-k)*c)};var k=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(b,d){k.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
+this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=b+"px",this.view.backgroundPageShape.node.style.marginTop=d+"px")};var f=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(b,d,g,c,e,k){var l=f.apply(this,arguments);null==k||k||mxEvent.addListener(l,"mousedown",function(b){mxEvent.consume(b)});return l};var p=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
+function(b,d,g){var c,e=this.graph.model.getParent(b);if(d)c=this.graph.model.isEdge(b)?null:this.graph.getCellGeometry(b),c=!this.graph.model.isEdge(e)&&!this.graph.isSiblingSelected(b)&&(null!=c&&c.relative||!this.graph.isContainer(e)||this.graph.isPart(b));else if(c=p.apply(this,arguments),this.graph.isTableCell(b)||this.graph.isTableRow(b))c=e,this.graph.isTable(c)||(c=this.graph.model.getParent(c)),c=!this.graph.selectionCellsHandler.isHandled(c)||this.graph.isCellSelected(c)&&this.graph.isToggleEvent(g.getEvent())||
+this.graph.isCellSelected(b)&&!this.graph.isToggleEvent(g.getEvent())||this.graph.isTableCell(b)&&this.graph.isCellSelected(e);return c};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(b){b=b.getCell();for(var d=this.graph.getModel(),g=d.getParent(b),c=this.graph.view.getState(g),e=this.graph.isCellSelected(b);null!=c&&(d.isVertex(g)||d.isEdge(g));){var f=this.graph.isCellSelected(g),e=e||f;if(f||!e&&(this.graph.isTableCell(b)||this.graph.isTableRow(b)))b=g;g=d.getParent(g)}return b}})();EditorUi=function(b,c,e){mxEventSource.call(this);this.destroyFunctions=[];this.editor=b||new Editor;this.container=c||document.body;var k=this.editor.graph;k.lightbox=e;var f=k.getGraphBounds;k.getGraphBounds=function(b){var d=f.apply(this,arguments);b=this.backgroundImage;if(null!=b){var g=this.view.translate,c=this.view.scale,d=mxRectangle.fromRectangle(d);d.add(new mxRectangle((g.x+b.x)*c,(g.y+b.y)*c,b.width*c,b.height*c))}return d};k.useCssTransforms&&(this.lazyZoomDelay=0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage=
+"data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.selectionStateListener=mxUtils.bind(this,function(b,d){this.clearSelectionState()});k.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionStateListener);k.getModel().addListener(mxEvent.CHANGE,this.selectionStateListener);
+k.addListener(mxEvent.EDITING_STARTED,this.selectionStateListener);k.addListener(mxEvent.EDITING_STOPPED,this.selectionStateListener);k.getView().addListener("unitChanged",this.selectionStateListener);this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,k.isEnabled=function(){return!1},k.panningHandler.isForcePanningEvent=function(b){return!mxEvent.isPopupTrigger(b.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();if(!k.standalone){var p="rounded shadow glass dashed dashPattern labelBackgroundColor labelBorderColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle pointerEvents".split(" "),
+t="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),d="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(b){try{var d=k.getCellStyle(b,!1),g=[],c=[],e;for(e in d)g.push(d[e]),c.push(e);k.getModel().isEdge(b)?k.currentEdgeStyle={}:k.currentVertexStyle=
+{};this.fireEvent(new mxEventObject("styleChanged","keys",c,"values",g,"cells",[b]))}catch(B){this.handleError(B)}};this.clearDefaultStyle=function(){k.currentEdgeStyle=mxUtils.clone(k.defaultEdgeStyle);k.currentVertexStyle=mxUtils.clone(k.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var g=["fontFamily","fontSource","fontSize","fontColor"];for(c=0;c<g.length;c++)0>mxUtils.indexOf(p,g[c])&&p.push(g[c]);var l="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),
+q=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(c=0;c<q.length;c++)for(e=0;e<q[c].length;e++)p.push(q[c][e]);for(c=0;c<t.length;c++)0>mxUtils.indexOf(p,t[c])&&p.push(t[c]);var m=function(b,g,c,e,l,f,m){e=null!=e?e:k.currentVertexStyle;l=null!=l?l:k.currentEdgeStyle;f=null!=f?f:!0;c=null!=c?c:k.getModel();if(m){m=[];
+for(var G=0;G<b.length;G++)m=m.concat(c.getDescendants(b[G]));b=m}c.beginUpdate();try{for(G=0;G<b.length;G++){var n=b[G],v;if(g)v=["fontSize","fontFamily","fontColor"];else{var B=c.getStyle(n),u=null!=B?B.split(";"):[];v=p.slice();for(var t=0;t<u.length;t++){var I=u[t],x=I.indexOf("=");if(0<=x){var L=I.substring(0,x),y=mxUtils.indexOf(v,L);0<=y&&v.splice(y,1);for(m=0;m<q.length;m++){var z=q[m];if(0<=mxUtils.indexOf(z,L))for(var ca=0;ca<z.length;ca++){var C=mxUtils.indexOf(v,z[ca]);0<=C&&v.splice(C,
+1)}}}}}var U=c.isEdge(n);m=U?l:e;for(var D=c.getStyle(n),t=0;t<v.length;t++){var L=v[t],O=m[L];null!=O&&"edgeStyle"!=L&&("shape"!=L||U)&&(!U||f||0>mxUtils.indexOf(d,L))&&(D=mxUtils.setStyle(D,L,O))}Editor.simpleLabels&&(D=mxUtils.setStyle(mxUtils.setStyle(D,"html",null),"whiteSpace",null));c.setStyle(n,D)}}finally{c.endUpdate()}return b};k.addListener("cellsInserted",function(b,d){m(d.getProperty("cells"),null,null,null,null,!0,!0)});k.addListener("textInserted",function(b,d){m(d.getProperty("cells"),
+!0)});this.insertHandler=m;this.createDivs();this.createUi();this.refresh();var n=mxUtils.bind(this,function(b){null==b&&(b=window.event);return k.isEditing()||null!=b&&this.isSelectionAllowed(b)});this.container==document.body&&(this.menubarContainer.onselectstart=n,this.menubarContainer.onmousedown=n,this.toolbarContainer.onselectstart=n,this.toolbarContainer.onmousedown=n,this.diagramContainer.onselectstart=n,this.diagramContainer.onmousedown=n,this.sidebarContainer.onselectstart=n,this.sidebarContainer.onmousedown=
+n,this.formatContainer.onselectstart=n,this.formatContainer.onmousedown=n,this.footerContainer.onselectstart=n,this.footerContainer.onmousedown=n,null!=this.tabContainer&&(this.tabContainer.onselectstart=n));!this.editor.chromeless||this.editor.editable?(c=function(b){if(null!=b){var d=mxEvent.getSource(b);if("A"==d.nodeName)for(;null!=d;){if("geHint"==d.className)return!0;d=d.parentNode}}return n(b)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,
+"contextmenu",c):this.diagramContainer.oncontextmenu=c):k.panningHandler.usePopupTrigger=!1;k.init(this.diagramContainer);mxClient.IS_SVG&&null!=k.view.getDrawPane()&&(c=k.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=k.graphHandler){var u=k.graphHandler.start;k.graphHandler.start=function(){null!=C.hoverIcons&&C.hoverIcons.reset();u.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,
+function(b){var d=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(b)-d.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(b)-d.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var v=!1,y=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(b,d){return v||y.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(b){32!=b.which||k.isEditing()?
+mxEvent.isConsumed(b)||27!=b.keyCode||this.hideDialog(null,!0):(v=!0,this.hoverIcons.reset(),k.container.style.cursor="move",k.isEditing()||mxEvent.getSource(b)!=k.container||mxEvent.consume(b))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(b){k.container.style.cursor="";v=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var x=k.panningHandler.isForcePanningEvent;k.panningHandler.isForcePanningEvent=function(b){return x.apply(this,
+arguments)||v||mxEvent.isMouseEvent(b.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(b.getEvent()))&&(!mxEvent.isControlDown(b.getEvent())&&mxEvent.isRightMouseButton(b.getEvent())||mxEvent.isMiddleMouseButton(b.getEvent()))};var F=k.cellEditor.isStopEditingEvent;k.cellEditor.isStopEditingEvent=function(b){return F.apply(this,arguments)||13==b.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b)||mxClient.IS_SF&&mxEvent.isShiftDown(b))};var H=k.isZoomWheelEvent;
+k.isZoomWheelEvent=function(){return v||H.apply(this,arguments)};var z=!1,D=null,N=null,E=null,J=mxUtils.bind(this,function(){if(null!=this.toolbar&&z!=k.cellEditor.isContentEditing()){for(var b=this.toolbar.container.firstChild,d=[];null!=b;){var g=b.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,b)&&(b.parentNode.removeChild(b),d.push(b));b=g}b=this.toolbar.fontMenu;g=this.toolbar.sizeMenu;if(null==E)this.toolbar.createTextToolbar();else{for(var c=0;c<E.length;c++)this.toolbar.container.appendChild(E[c]);
+this.toolbar.fontMenu=D;this.toolbar.sizeMenu=N}z=k.cellEditor.isContentEditing();D=b;N=g;E=d}}),C=this,K=k.cellEditor.startEditing;k.cellEditor.startEditing=function(){K.apply(this,arguments);J();if(k.cellEditor.isContentEditing()){var b=!1,d=function(){b||(b=!0,window.setTimeout(function(){var d=k.getSelectedEditingElement();null!=d&&(d=mxUtils.getCurrentStyle(d),null!=d&&null!=C.toolbar&&(C.toolbar.setFontName(Graph.stripQuotes(d.fontFamily)),C.toolbar.setFontSize(parseInt(d.fontSize))));b=!1},
+0))};mxEvent.addListener(k.cellEditor.textarea,"input",d);mxEvent.addListener(k.cellEditor.textarea,"touchend",d);mxEvent.addListener(k.cellEditor.textarea,"mouseup",d);mxEvent.addListener(k.cellEditor.textarea,"keyup",d);d()}};var M=k.cellEditor.stopEditing;k.cellEditor.stopEditing=function(b,d){try{M.apply(this,arguments),J()}catch(U){C.handleError(U)}};k.container.setAttribute("tabindex","0");k.container.style.cursor="default";if(window.self===window.top&&null!=k.container.parentNode)try{k.container.focus()}catch(L){}var Z=
+k.fireMouseEvent;k.fireMouseEvent=function(b,d,g){b==mxEvent.MOUSE_DOWN&&this.container.focus();Z.apply(this,arguments)};k.popupMenuHandler.autoExpand=!0;null!=this.menus&&(k.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(b,d,g){this.menus.createPopupMenu(b,d,g)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(b){k.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(b);this.getKeyHandler=function(){return keyHandler};k.connectionHandler.addListener(mxEvent.CONNECT,
+function(b,d){var g=[d.getProperty("cell")];d.getProperty("terminalInserted")&&(g.push(d.getProperty("terminal")),window.setTimeout(function(){null!=C.hoverIcons&&C.hoverIcons.update(k.view.getState(g[g.length-1]))},0));m(g)});this.addListener("styleChanged",mxUtils.bind(this,function(b,d){var c=d.getProperty("cells"),e=!1,f=!1;if(0<c.length)for(var q=0;q<c.length&&(e=k.getModel().isVertex(c[q])||e,!(f=k.getModel().isEdge(c[q])||f)||!e);q++);else f=e=!0;for(var c=d.getProperty("keys"),m=d.getProperty("values"),
+q=0;q<c.length;q++){var n=0<=mxUtils.indexOf(g,c[q]);if("strokeColor"!=c[q]||null!=m[q]&&"none"!=m[q])if(0<=mxUtils.indexOf(t,c[q]))f||0<=mxUtils.indexOf(l,c[q])?null==m[q]?delete k.currentEdgeStyle[c[q]]:k.currentEdgeStyle[c[q]]=m[q]:e&&0<=mxUtils.indexOf(p,c[q])&&(null==m[q]?delete k.currentVertexStyle[c[q]]:k.currentVertexStyle[c[q]]=m[q]);else if(0<=mxUtils.indexOf(p,c[q])){if(e||n)null==m[q]?delete k.currentVertexStyle[c[q]]:k.currentVertexStyle[c[q]]=m[q];if(f||n||0<=mxUtils.indexOf(l,c[q]))null==
+m[q]?delete k.currentEdgeStyle[c[q]]:k.currentEdgeStyle[c[q]]=m[q]}}null!=this.toolbar&&(this.toolbar.setFontName(k.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(k.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==k.currentEdgeStyle.edgeStyle&&"1"==k.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==k.currentEdgeStyle.edgeStyle||
+"none"==k.currentEdgeStyle.edgeStyle||null==k.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==k.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==k.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==k.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==k.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==k.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),
+null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==k.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==k.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==k.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",k.currentEdgeStyle.shape,k.currentEdgeStyle[mxConstants.STYLE_STARTARROW],
+mxUtils.getValue(k.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("end",k.currentEdgeStyle.shape,k.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(k.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(b=mxUtils.bind(this,function(){var b=k.currentVertexStyle.fontFamily||"Helvetica",d=String(k.currentVertexStyle.fontSize||"12"),g=k.getView().getState(k.getSelectionCell());
+null!=g&&(b=g.style[mxConstants.STYLE_FONTFAMILY]||b,d=g.style[mxConstants.STYLE_FONTSIZE]||d,10<b.length&&(b=b.substring(0,8)+"..."));this.toolbar.setFontName(b);this.toolbar.setFontSize(d)}),k.getSelectionModel().addListener(mxEvent.CHANGE,b),k.getModel().addListener(mxEvent.CHANGE,b));k.addListener(mxEvent.CELLS_ADDED,function(b,d){var g=d.getProperty("cells"),c=d.getProperty("parent");null!=c&&k.getModel().isLayer(c)&&!k.isCellVisible(c)&&null!=g&&0<g.length&&k.getModel().setVisible(c,!0)});this.gestureHandler=
+mxUtils.bind(this,function(b){null!=this.currentMenu&&mxEvent.getSource(b)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",
+this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){k.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){k.view.validateBackground()}));
+k.addListener("gridSizeChanged",mxUtils.bind(this,function(){k.isGridEnabled()&&k.view.validateBackground()}));this.editor.resetGraph()}this.init();k.standalone||this.open()};EditorUi.compactUi=!0;
+EditorUi.parsePng=function(b,c,e){function k(b,g){var d=p;p+=g;return b.substring(d,p)}function f(b){b=k(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}var p=0;if(k(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(k(b,4),"IHDR"!=k(b,4))null!=e&&e();else{k(b,17);do{e=f(b);var t=k(b,4);if(null!=c&&c(p-8,t,e))break;value=k(b,e);k(b,4);if("IEND"==t)break}while(e)}};mxUtils.extend(EditorUi,mxEventSource);
EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=38;EditorUi.prototype.footerHeight=28;EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:"large"!=urlParams["sidebar-entries"]?212:240;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2;
EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1;
EditorUi.prototype.init=function(){var b=this.editor.graph;if(!b.standalone){"0"!=urlParams["shape-picker"]&&this.installShapePicker();mxEvent.addListener(b.container,"scroll",mxUtils.bind(this,function(){b.tooltipHandler.hide();null!=b.connectionHandler&&null!=b.connectionHandler.constraintHandler&&b.connectionHandler.constraintHandler.reset()}));b.addListener(mxEvent.ESCAPE,mxUtils.bind(this,function(){b.tooltipHandler.hide();var c=b.getRubberband();null!=c&&c.cancel()}));mxEvent.addListener(b.container,
"keydown",mxUtils.bind(this,function(b){this.onKeyDown(b)}));mxEvent.addListener(b.container,"keypress",mxUtils.bind(this,function(b){this.onKeyPress(b)}));this.addUndoListener();this.addBeforeUnloadListener();b.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));b.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));var c=b.setDefaultParent,e=this;this.editor.graph.setDefaultParent=function(){c.apply(this,
-arguments);e.updateActionStates()};b.editLink=e.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()}};
+arguments);e.updateActionStates()};b.editLink=e.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()}};EditorUi.prototype.clearSelectionState=function(){this.selectionState=null};EditorUi.prototype.getSelectionState=function(){null==this.selectionState&&(this.selectionState=this.createSelectionState());return this.selectionState};
+EditorUi.prototype.createSelectionState=function(){for(var b=this.editor.graph,c=b.getSelectionCells(),e=this.initSelectionState(),k=!0,f=0;f<c.length;f++){var p=b.getCurrentCellStyle(c[f]);"0"!=mxUtils.getValue(p,mxConstants.STYLE_EDITABLE,"1")&&(this.updateSelectionStateForCell(e,c[f],c,k),k=!1)}this.updateSelectionStateForTableCells(e);return e};
+EditorUi.prototype.initSelectionState=function(){return{vertices:[],edges:[],cells:[],x:null,y:null,width:null,height:null,style:{},containsImage:!1,containsLabel:!1,fill:!0,glass:!0,rounded:!0,autoSize:!1,image:!0,shadow:!0,lineJumps:!0,resizable:!0,table:!1,cell:!1,row:!1,movable:!0,rotatable:!0,stroke:!0,unlocked:this.editor.graph.isEnabled(),connections:!1}};EditorUi.prototype.updateSelectionStateForTableCells=function(b){};
+EditorUi.prototype.updateSelectionStateForCell=function(b,c,e,k){e=this.editor.graph;b.cells.push(c);if(e.getModel().isVertex(c)){b.connections=0<e.model.getEdgeCount(c);b.unlocked=b.unlocked&&!e.isCellLocked(c);b.resizable=b.resizable&&e.isCellResizable(c);b.rotatable=b.rotatable&&e.isCellRotatable(c);b.movable=b.movable&&e.isCellMovable(c)&&!e.isTableRow(c)&&!e.isTableCell(c);b.table=b.table||e.isTable(c);b.cell=b.cell||e.isTableCell(c);b.row=b.row||e.isTableRow(c);b.vertices.push(c);var f=e.getCellGeometry(c);
+if(null!=f&&(0<f.width?null==b.width?b.width=f.width:b.width!=f.width&&(b.width=""):b.containsLabel=!0,0<f.height?null==b.height?b.height=f.height:b.height!=f.height&&(b.height=""):b.containsLabel=!0,!f.relative||null!=f.offset)){var p=f.relative?f.offset.x:f.x,f=f.relative?f.offset.y:f.y;null==b.x?b.x=p:b.x!=p&&(b.x="");null==b.y?b.y=f:b.y!=f&&(b.y="")}}else e.getModel().isEdge(c)&&(b.edges.push(c),b.connections=!0,b.resizable=!1,b.rotatable=!1,b.movable=!1);c=e.view.getState(c);null!=c&&(b.autoSize=
+b.autoSize||e.isAutoSizeState(c),b.glass=b.glass&&e.isGlassState(c),b.rounded=b.rounded&&e.isRoundedState(c),b.lineJumps=b.lineJumps&&e.isLineJumpState(c),b.image=b.image&&e.isImageState(c),b.shadow=b.shadow&&e.isShadowState(c),b.fill=b.fill&&e.isFillState(c),b.stroke=b.stroke&&e.isStrokeState(c),p=mxUtils.getValue(c.style,mxConstants.STYLE_SHAPE,null),b.containsImage=b.containsImage||"image"==p,e.mergeStyle(c.style,b.style,k))};
EditorUi.prototype.installShapePicker=function(){var b=this.editor.graph,c=this;b.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,d){"mouseDown"==d.getProperty("eventName")&&c.hideShapePicker()}));var e=mxUtils.bind(this,function(){c.hideShapePicker(!0)});b.addListener("wheel",e);b.addListener(mxEvent.ESCAPE,e);b.view.addListener(mxEvent.SCALE,e);b.view.addListener(mxEvent.SCALE_AND_TRANSLATE,e);b.getSelectionModel().addListener(mxEvent.CHANGE,e);b.getModel().addListener(mxEvent.CHANGE,
-e);var k=b.popupMenuHandler.isMenuShowing;b.popupMenuHandler.isMenuShowing=function(){return k.apply(this,arguments)||null!=c.shapePicker};var g=b.dblClick;b.dblClick=function(d,e){if(this.isEnabled())if(null!=e||null==c.sidebar||mxEvent.isShiftDown(d)||b.isCellLocked(b.getDefaultParent()))g.apply(this,arguments);else{var f=mxUtils.convertPoint(this.container,mxEvent.getClientX(d),mxEvent.getClientY(d));mxEvent.consume(d);window.setTimeout(mxUtils.bind(this,function(){c.showShapePicker(f.x,f.y)}),
-30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",e);var p=this.hoverIcons.drag;this.hoverIcons.drag=function(){c.hideShapePicker();p.apply(this,arguments)};var t=this.hoverIcons.execute;this.hoverIcons.execute=function(d,e,g){var f=g.getEvent();this.graph.isCloneEvent(f)||mxEvent.isShiftDown(f)?t.apply(this,arguments):this.graph.connectVertex(d.cell,e,this.graph.defaultEdgeLength,f,null,null,mxUtils.bind(this,function(f,l,q){var k=b.getCompositeParent(d.cell);f=b.getCellGeometry(k);
-for(g.consume();null!=k&&b.model.isVertex(k)&&null!=f&&f.relative;)cell=k,k=b.model.getParent(cell),f=b.getCellGeometry(k);window.setTimeout(mxUtils.bind(this,function(){c.showShapePicker(g.getGraphX(),g.getGraphY(),k,mxUtils.bind(this,function(d){q(d);null!=c.hoverIcons&&c.hoverIcons.update(b.view.getState(d))}),e)}),30)}),mxUtils.bind(this,function(b){this.graph.selectCellsForConnectVertex(b,f,this)}))};var d=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(f,e){null!=d&&window.clearTimeout(d);
-d=window.setTimeout(mxUtils.bind(this,function(){var d=e.getProperty("arrow"),f=e.getProperty("direction"),l=e.getProperty("event"),d=d.getBoundingClientRect(),g=mxUtils.getOffset(b.container),k=b.container.scrollLeft+d.x-g.x,g=b.container.scrollTop+d.y-g.y,p=b.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),t=c.showShapePicker(k,g,p,mxUtils.bind(this,function(d){null!=d&&b.connectVertex(p,f,b.defaultEdgeLength,l,!0,!0,function(f,e,l){l(d);null!=c.hoverIcons&&
-c.hoverIcons.update(b.view.getState(d))},function(d){b.selectCellsForConnectVertex(d)},l,this.hoverIcons)}),f,!0);this.centerShapePicker(t,d,k,g,f);mxUtils.setOpacity(t,30);mxEvent.addListener(t,"mouseenter",function(){mxUtils.setOpacity(t,100)});mxEvent.addListener(t,"mouseleave",function(){c.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(b,c){null!=d&&window.clearTimeout(d)}))}};
-EditorUi.prototype.centerShapePicker=function(b,c,e,k,g){if(g==mxConstants.DIRECTION_EAST||g==mxConstants.DIRECTION_WEST)b.style.width="40px";var p=b.getBoundingClientRect();g==mxConstants.DIRECTION_NORTH?(e-=p.width/2-10,k-=p.height+6):g==mxConstants.DIRECTION_SOUTH?(e-=p.width/2-10,k+=c.height+6):g==mxConstants.DIRECTION_WEST?(e-=p.width+6,k-=p.height/2-10):g==mxConstants.DIRECTION_EAST&&(e+=c.width+6,k-=p.height/2-10);b.style.left=e+"px";b.style.top=k+"px"};
-EditorUi.prototype.showShapePicker=function(b,c,e,k,g,p){b=this.createShapePicker(b,c,e,k,g,mxUtils.bind(this,function(){this.hideShapePicker()}),this.getCellsForShapePicker(e,p),p);null!=b&&(null==this.hoverIcons||p||this.hoverIcons.reset(),p=this.editor.graph,p.popupMenuHandler.hideMenu(),p.tooltipHandler.hideTooltip(),this.hideCurrentMenu(),this.hideShapePicker(),this.shapePickerCallback=k,this.shapePicker=b);return b};
-EditorUi.prototype.createShapePicker=function(b,c,e,k,g,p,t,d){var f=null;if(null!=t&&0<t.length){var l=this,q=this.editor.graph,f=document.createElement("div");g=q.view.getState(e);var m=null==e||null!=g&&q.isTransparentState(g)?null:q.copyStyle(e);e=6>t.length?35*t.length:140;f.className="geToolbarContainer geSidebarContainer";f.style.cssText="position:absolute;left:"+b+"px;top:"+c+"px;width:"+e+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
-mxPopupMenu.prototype.zIndex+1+";";d||mxUtils.setPrefixedStyle(f.style,"transform","translate(-22px,-22px)");null!=q.background&&q.background!=mxConstants.NONE&&(f.style.backgroundColor=q.background);q.container.appendChild(f);e=mxUtils.bind(this,function(d){var e=document.createElement("a");e.className="geItem";e.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";f.appendChild(e);null!=m&&"1"!=urlParams.sketch?
-this.sidebar.graph.pasteStyle(m,[d]):l.insertHandler([d],""!=d.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([d],25,25,e,null,!0,!1,d.geometry.width,d.geometry.height);mxEvent.addListener(e,"click",function(){var f=q.cloneCell(d);if(null!=k)k(f);else{f.geometry.x=q.snap(Math.round(b/q.view.scale)-q.view.translate.x-d.geometry.width/2);f.geometry.y=q.snap(Math.round(c/q.view.scale)-q.view.translate.y-d.geometry.height/2);q.model.beginUpdate();try{q.addCell(f)}finally{q.model.endUpdate()}q.setSelectionCell(f);
-q.scrollCellToVisible(f);q.startEditingAtCell(f);null!=l.hoverIcons&&l.hoverIcons.update(q.view.getState(f))}null!=p&&p()})});for(g=0;g<(d?Math.min(t.length,4):t.length);g++)e(t[g]);t=f.offsetTop+f.clientHeight-(q.container.scrollTop+q.container.offsetHeight);0<t&&(f.style.top=Math.max(q.container.scrollTop+22,c-t)+"px");t=f.offsetLeft+f.clientWidth-(q.container.scrollLeft+q.container.offsetWidth);0<t&&(f.style.left=Math.max(q.container.scrollLeft+22,b-t)+"px")}return f};
+e);var k=b.popupMenuHandler.isMenuShowing;b.popupMenuHandler.isMenuShowing=function(){return k.apply(this,arguments)||null!=c.shapePicker};var f=b.dblClick;b.dblClick=function(d,e){if(this.isEnabled())if(null!=e||null==c.sidebar||mxEvent.isShiftDown(d)||b.isCellLocked(b.getDefaultParent()))f.apply(this,arguments);else{var g=mxUtils.convertPoint(this.container,mxEvent.getClientX(d),mxEvent.getClientY(d));mxEvent.consume(d);window.setTimeout(mxUtils.bind(this,function(){c.showShapePicker(g.x,g.y)}),
+30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",e);var p=this.hoverIcons.drag;this.hoverIcons.drag=function(){c.hideShapePicker();p.apply(this,arguments)};var t=this.hoverIcons.execute;this.hoverIcons.execute=function(d,e,f){var g=f.getEvent();this.graph.isCloneEvent(g)||mxEvent.isShiftDown(g)?t.apply(this,arguments):this.graph.connectVertex(d.cell,e,this.graph.defaultEdgeLength,g,null,null,mxUtils.bind(this,function(g,l,q){var k=b.getCompositeParent(d.cell);g=b.getCellGeometry(k);
+for(f.consume();null!=k&&b.model.isVertex(k)&&null!=g&&g.relative;)cell=k,k=b.model.getParent(cell),g=b.getCellGeometry(k);window.setTimeout(mxUtils.bind(this,function(){c.showShapePicker(f.getGraphX(),f.getGraphY(),k,mxUtils.bind(this,function(d){q(d);null!=c.hoverIcons&&c.hoverIcons.update(b.view.getState(d))}),e)}),30)}),mxUtils.bind(this,function(b){this.graph.selectCellsForConnectVertex(b,g,this)}))};var d=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(g,e){null!=d&&window.clearTimeout(d);
+d=window.setTimeout(mxUtils.bind(this,function(){var d=e.getProperty("arrow"),g=e.getProperty("direction"),l=e.getProperty("event"),d=d.getBoundingClientRect(),f=mxUtils.getOffset(b.container),k=b.container.scrollLeft+d.x-f.x,f=b.container.scrollTop+d.y-f.y,t=b.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),p=c.showShapePicker(k,f,t,mxUtils.bind(this,function(d){null!=d&&b.connectVertex(t,g,b.defaultEdgeLength,l,!0,!0,function(g,e,l){l(d);null!=c.hoverIcons&&
+c.hoverIcons.update(b.view.getState(d))},function(d){b.selectCellsForConnectVertex(d)},l,this.hoverIcons)}),g,!0);this.centerShapePicker(p,d,k,f,g);mxUtils.setOpacity(p,30);mxEvent.addListener(p,"mouseenter",function(){mxUtils.setOpacity(p,100)});mxEvent.addListener(p,"mouseleave",function(){c.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(b,c){null!=d&&window.clearTimeout(d)}))}};
+EditorUi.prototype.centerShapePicker=function(b,c,e,k,f){if(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST)b.style.width="40px";var p=b.getBoundingClientRect();f==mxConstants.DIRECTION_NORTH?(e-=p.width/2-10,k-=p.height+6):f==mxConstants.DIRECTION_SOUTH?(e-=p.width/2-10,k+=c.height+6):f==mxConstants.DIRECTION_WEST?(e-=p.width+6,k-=p.height/2-10):f==mxConstants.DIRECTION_EAST&&(e+=c.width+6,k-=p.height/2-10);b.style.left=e+"px";b.style.top=k+"px"};
+EditorUi.prototype.showShapePicker=function(b,c,e,k,f,p){b=this.createShapePicker(b,c,e,k,f,mxUtils.bind(this,function(){this.hideShapePicker()}),this.getCellsForShapePicker(e,p),p);null!=b&&(null==this.hoverIcons||p||this.hoverIcons.reset(),p=this.editor.graph,p.popupMenuHandler.hideMenu(),p.tooltipHandler.hideTooltip(),this.hideCurrentMenu(),this.hideShapePicker(),this.shapePickerCallback=k,this.shapePicker=b);return b};
+EditorUi.prototype.createShapePicker=function(b,c,e,k,f,p,t,d){var g=null;if(null!=t&&0<t.length){var l=this,q=this.editor.graph,g=document.createElement("div");f=q.view.getState(e);var m=null==e||null!=f&&q.isTransparentState(f)?null:q.copyStyle(e);e=6>t.length?35*t.length:140;g.className="geToolbarContainer geSidebarContainer";g.style.cssText="position:absolute;left:"+b+"px;top:"+c+"px;width:"+e+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
+mxPopupMenu.prototype.zIndex+1+";";d||mxUtils.setPrefixedStyle(g.style,"transform","translate(-22px,-22px)");null!=q.background&&q.background!=mxConstants.NONE&&(g.style.backgroundColor=q.background);q.container.appendChild(g);e=mxUtils.bind(this,function(d){var e=document.createElement("a");e.className="geItem";e.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";g.appendChild(e);null!=m&&"1"!=urlParams.sketch?
+this.sidebar.graph.pasteStyle(m,[d]):l.insertHandler([d],""!=d.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([d],25,25,e,null,!0,!1,d.geometry.width,d.geometry.height);mxEvent.addListener(e,"click",function(){var g=q.cloneCell(d);if(null!=k)k(g);else{g.geometry.x=q.snap(Math.round(b/q.view.scale)-q.view.translate.x-d.geometry.width/2);g.geometry.y=q.snap(Math.round(c/q.view.scale)-q.view.translate.y-d.geometry.height/2);q.model.beginUpdate();try{q.addCell(g)}finally{q.model.endUpdate()}q.setSelectionCell(g);
+q.scrollCellToVisible(g);q.startEditingAtCell(g);null!=l.hoverIcons&&l.hoverIcons.update(q.view.getState(g))}null!=p&&p()})});for(f=0;f<(d?Math.min(t.length,4):t.length);f++)e(t[f]);t=g.offsetTop+g.clientHeight-(q.container.scrollTop+q.container.offsetHeight);0<t&&(g.style.top=Math.max(q.container.scrollTop+22,c-t)+"px");t=g.offsetLeft+g.clientWidth-(q.container.scrollLeft+q.container.offsetWidth);0<t&&(g.style.left=Math.max(q.container.scrollLeft+22,b-t)+"px")}return g};
EditorUi.prototype.getCellsForShapePicker=function(b,c){var e=mxUtils.bind(this,function(b,c,e,t){return this.editor.graph.createVertex(null,null,t||"",0,0,c||120,e||60,b,!1)});return[null!=b?this.editor.graph.cloneCell(b):e("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;",40,20,"Text"),e("whiteSpace=wrap;html=1;"),e("ellipse;whiteSpace=wrap;html=1;"),e("rhombus;whiteSpace=wrap;html=1;",80,80),e("rounded=1;whiteSpace=wrap;html=1;"),
e("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;"),e("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,60),e("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;",120,80),e("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),e("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),e("triangle;whiteSpace=wrap;html=1;",60,80),e("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",
120,80),e("shape=tape;whiteSpace=wrap;html=1;",120,100),e("ellipse;shape=cloud;whiteSpace=wrap;html=1;",120,80),e("shape=singleArrow;whiteSpace=wrap;html=1;arrowWidth=0.4;arrowSize=0.4;",80,60),e("shape=waypoint;sketch=0;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;",40,40)]};
@@ -2192,49 +2198,49 @@ EditorUi.prototype.getCssClassForMarker=function(b,c,e,k){return"flexArrow"==c?n
e==mxConstants.ARROW_DIAMOND_THIN?"1"==k?"geSprite geSprite-"+b+"thindiamond":"geSprite geSprite-"+b+"thindiamondtrans":"openAsync"==e?"geSprite geSprite-"+b+"openasync":"dash"==e?"geSprite geSprite-"+b+"dash":"cross"==e?"geSprite geSprite-"+b+"cross":"async"==e?"1"==k?"geSprite geSprite-"+b+"async":"geSprite geSprite-"+b+"asynctrans":"circle"==e||"circlePlus"==e?"1"==k||"circle"==e?"geSprite geSprite-"+b+"circle":"geSprite geSprite-"+b+"circleplus":"ERone"==e?"geSprite geSprite-"+b+"erone":"ERmandOne"==
e?"geSprite geSprite-"+b+"eronetoone":"ERmany"==e?"geSprite geSprite-"+b+"ermany":"ERoneToMany"==e?"geSprite geSprite-"+b+"eronetomany":"ERzeroToOne"==e?"geSprite geSprite-"+b+"eroneopt":"ERzeroToMany"==e?"geSprite geSprite-"+b+"ermanyopt":"geSprite geSprite-noarrow"};EditorUi.prototype.createMenus=function(){return null};
EditorUi.prototype.updatePasteActionStates=function(){var b=this.editor.graph,c=this.actions.get("paste"),e=this.actions.get("pasteHere");c.setEnabled(this.editor.graph.cellEditor.isContentEditing()||(!mxClient.IS_FF&&null!=navigator.clipboard||!mxClipboard.isEmpty())&&b.isEnabled()&&!b.isCellLocked(b.getDefaultParent()));e.setEnabled(c.isEnabled())};
-EditorUi.prototype.initClipboard=function(){var b=this,c=mxClipboard.cut;mxClipboard.cut=function(e){e.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):c.apply(this,arguments);b.updatePasteActionStates()};mxClipboard.copy=function(c){var e=null;if(c.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{for(var e=e||c.getSelectionCells(),e=c.getExportableCells(c.model.getTopmostCells(e)),d={},f=c.createCellLookup(e),l=c.cloneCells(e,null,d),g=new mxGraphModel,k=g.getChildAt(g.getRoot(),
-0),n=0;n<l.length;n++){g.add(k,l[n]);var u=c.view.getState(e[n]);if(null!=u){var v=c.getCellGeometry(l[n]);null!=v&&v.relative&&!g.isEdge(e[n])&&null==f[mxObjectIdentity.get(g.getParent(e[n]))]&&(v.offset=null,v.relative=!1,v.x=u.x/u.view.scale-u.view.translate.x,v.y=u.y/u.view.scale-u.view.translate.y)}}c.updateCustomLinks(c.createCellMapping(d,f),l);mxClipboard.insertCount=1;mxClipboard.setCells(l)}b.updatePasteActionStates();return e};var e=mxClipboard.paste;mxClipboard.paste=function(c){var g=
-null;c.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):g=e.apply(this,arguments);b.updatePasteActionStates();return g};var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);b.updatePasteActionStates()};var g=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(c,e){g.apply(this,arguments);b.updatePasteActionStates()};this.updatePasteActionStates()};
+EditorUi.prototype.initClipboard=function(){var b=this,c=mxClipboard.cut;mxClipboard.cut=function(e){e.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):c.apply(this,arguments);b.updatePasteActionStates()};mxClipboard.copy=function(c){var e=null;if(c.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{for(var e=e||c.getSelectionCells(),e=c.getExportableCells(c.model.getTopmostCells(e)),d={},g=c.createCellLookup(e),l=c.cloneCells(e,null,d),f=new mxGraphModel,k=f.getChildAt(f.getRoot(),
+0),n=0;n<l.length;n++){f.add(k,l[n]);var u=c.view.getState(e[n]);if(null!=u){var v=c.getCellGeometry(l[n]);null!=v&&v.relative&&!f.isEdge(e[n])&&null==g[mxObjectIdentity.get(f.getParent(e[n]))]&&(v.offset=null,v.relative=!1,v.x=u.x/u.view.scale-u.view.translate.x,v.y=u.y/u.view.scale-u.view.translate.y)}}c.updateCustomLinks(c.createCellMapping(d,g),l);mxClipboard.insertCount=1;mxClipboard.setCells(l)}b.updatePasteActionStates();return e};var e=mxClipboard.paste;mxClipboard.paste=function(c){var f=
+null;c.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):f=e.apply(this,arguments);b.updatePasteActionStates();return f};var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);b.updatePasteActionStates()};var f=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(c,e){f.apply(this,arguments);b.updatePasteActionStates()};this.updatePasteActionStates()};
EditorUi.prototype.lazyZoomDelay=20;EditorUi.prototype.wheelZoomDelay=400;EditorUi.prototype.buttonZoomDelay=600;
EditorUi.prototype.initCanvas=function(){var b=this.editor.graph;b.timerAutoScroll=!0;b.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((b.container.offsetWidth-34)/b.view.scale)),Math.max(0,Math.round((b.container.offsetHeight-34)/b.view.scale)))};b.view.getBackgroundPageBounds=function(){var b=this.graph.getPageLayout(),d=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+b.x*d.width),this.scale*(this.translate.y+b.y*d.height),this.scale*b.width*d.width,
-this.scale*b.height*d.height)};b.getPreferredPageSize=function(b,d,f){b=this.getPageLayout();d=this.getPageSize();return new mxRectangle(0,0,b.width*d.width,b.height*d.height)};var c=null,e=this;if(this.editor.isChromelessView()){this.chromelessResize=c=mxUtils.bind(this,function(d,f,c,e){if(null!=b.container&&!b.isViewer()){c=null!=c?c:0;e=null!=e?e:0;var l=b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds(),g=mxUtils.hasScrollbars(b.container),k=b.view.translate,q=b.view.scale,m=mxRectangle.fromRectangle(l);
-m.x=m.x/q-k.x;m.y=m.y/q-k.y;m.width/=q;m.height/=q;var k=b.container.scrollTop,G=b.container.scrollLeft,n=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)n+=3;var A=b.container.offsetWidth-n,n=b.container.offsetHeight-n;d=d?Math.max(.3,Math.min(f||1,A/m.width)):q;f=(A-d*m.width)/2/d;var v=0==this.lightboxVerticalDivider?0:(n-d*m.height)/this.lightboxVerticalDivider/d;g&&(f=Math.max(f,0),v=Math.max(v,0));if(g||l.width<A||l.height<n)b.view.scaleAndTranslate(d,Math.floor(f-
-m.x),Math.floor(v-m.y)),b.container.scrollTop=k*d/q,b.container.scrollLeft=G*d/q;else if(0!=c||0!=e)l=b.view.translate,b.view.setTranslate(Math.floor(l.x+c/q),Math.floor(l.y+e/q))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var k=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",k);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",k)});this.editor.addListener("resetGraphView",mxUtils.bind(this,
-function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(d){b.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(d){b.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var g=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";this.chromelessToolbar.style.boxSizing=
+this.scale*b.height*d.height)};b.getPreferredPageSize=function(b,d,g){b=this.getPageLayout();d=this.getPageSize();return new mxRectangle(0,0,b.width*d.width,b.height*d.height)};var c=null,e=this;if(this.editor.isChromelessView()){this.chromelessResize=c=mxUtils.bind(this,function(d,g,c,e){if(null!=b.container&&!b.isViewer()){c=null!=c?c:0;e=null!=e?e:0;var l=b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds(),f=mxUtils.hasScrollbars(b.container),k=b.view.translate,q=b.view.scale,m=mxRectangle.fromRectangle(l);
+m.x=m.x/q-k.x;m.y=m.y/q-k.y;m.width/=q;m.height/=q;var k=b.container.scrollTop,G=b.container.scrollLeft,n=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)n+=3;var v=b.container.offsetWidth-n,n=b.container.offsetHeight-n;d=d?Math.max(.3,Math.min(g||1,v/m.width)):q;g=(v-d*m.width)/2/d;var u=0==this.lightboxVerticalDivider?0:(n-d*m.height)/this.lightboxVerticalDivider/d;f&&(g=Math.max(g,0),u=Math.max(u,0));if(f||l.width<v||l.height<n)b.view.scaleAndTranslate(d,Math.floor(g-
+m.x),Math.floor(u-m.y)),b.container.scrollTop=k*d/q,b.container.scrollLeft=G*d/q;else if(0!=c||0!=e)l=b.view.translate,b.view.setTranslate(Math.floor(l.x+c/q),Math.floor(l.y+e/q))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var k=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",k);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",k)});this.editor.addListener("resetGraphView",mxUtils.bind(this,
+function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(d){b.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(d){b.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var f=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";this.chromelessToolbar.style.boxSizing=
"border-box";this.chromelessToolbar.style.whiteSpace="nowrap";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left=b.isViewer()?"0":"50%";mxClient.IS_IE||mxClient.IS_IE11?(this.chromelessToolbar.style.backgroundColor="#ffffff",this.chromelessToolbar.style.border="3px solid black"):this.chromelessToolbar.style.backgroundColor="#000000";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","16px");mxUtils.setPrefixedStyle(this.chromelessToolbar.style,
-"transition","opacity 600ms ease-in-out");var p=mxUtils.bind(this,function(){var d=mxUtils.getCurrentStyle(b.container);b.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=d?parseInt(d["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",p);p();var t=0,p=mxUtils.bind(this,function(b,d,f){t++;var c=document.createElement("span");c.style.paddingLeft="8px";c.style.paddingRight=
-"8px";c.style.cursor="pointer";mxEvent.addListener(c,"click",b);null!=f&&c.setAttribute("title",f);b=document.createElement("img");b.setAttribute("border","0");b.setAttribute("src",d);b.style.width="36px";b.style.filter="invert(100%)";c.appendChild(b);this.chromelessToolbar.appendChild(c);return c});null!=g.backBtn&&p(mxUtils.bind(this,function(b){window.location.href=g.backBtn.url;mxEvent.consume(b)}),Editor.backImage,mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var d=p(mxUtils.bind(this,
-function(b){this.actions.get("previousPage").funct();mxEvent.consume(b)}),Editor.previousImage,mxResources.get("previousPage")),f=document.createElement("div");f.style.fontFamily=Editor.defaultHtmlFont;f.style.display="inline-block";f.style.verticalAlign="top";f.style.fontWeight="bold";f.style.marginTop="8px";f.style.fontSize="14px";f.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";this.chromelessToolbar.appendChild(f);var l=p(mxUtils.bind(this,function(b){this.actions.get("nextPage").funct();
-mxEvent.consume(b)}),Editor.nextImage,mxResources.get("nextPage")),q=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(f.innerHTML="",mxUtils.write(f,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});d.style.paddingLeft="0px";d.style.paddingRight="4px";l.style.paddingLeft="4px";l.style.paddingRight="0px";var m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(l.style.display="",d.style.display=
-"",f.style.display="inline-block"):(l.style.display="none",d.style.display="none",f.style.display="none");q()});this.editor.addListener("resetGraphView",m);this.editor.addListener("pageSelected",q)}p(mxUtils.bind(this,function(b){this.actions.get("zoomOut").funct();mxEvent.consume(b)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");p(mxUtils.bind(this,function(b){this.actions.get("zoomIn").funct();mxEvent.consume(b)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");
+"transition","opacity 600ms ease-in-out");var p=mxUtils.bind(this,function(){var d=mxUtils.getCurrentStyle(b.container);b.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=d?parseInt(d["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",p);p();var t=0,p=mxUtils.bind(this,function(b,d,g){t++;var c=document.createElement("span");c.style.paddingLeft="8px";c.style.paddingRight=
+"8px";c.style.cursor="pointer";mxEvent.addListener(c,"click",b);null!=g&&c.setAttribute("title",g);b=document.createElement("img");b.setAttribute("border","0");b.setAttribute("src",d);b.style.width="36px";b.style.filter="invert(100%)";c.appendChild(b);this.chromelessToolbar.appendChild(c);return c});null!=f.backBtn&&p(mxUtils.bind(this,function(b){window.location.href=f.backBtn.url;mxEvent.consume(b)}),Editor.backImage,mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var d=p(mxUtils.bind(this,
+function(b){this.actions.get("previousPage").funct();mxEvent.consume(b)}),Editor.previousImage,mxResources.get("previousPage")),g=document.createElement("div");g.style.fontFamily=Editor.defaultHtmlFont;g.style.display="inline-block";g.style.verticalAlign="top";g.style.fontWeight="bold";g.style.marginTop="8px";g.style.fontSize="14px";g.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";this.chromelessToolbar.appendChild(g);var l=p(mxUtils.bind(this,function(b){this.actions.get("nextPage").funct();
+mxEvent.consume(b)}),Editor.nextImage,mxResources.get("nextPage")),q=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(g.innerHTML="",mxUtils.write(g,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});d.style.paddingLeft="0px";d.style.paddingRight="4px";l.style.paddingLeft="4px";l.style.paddingRight="0px";var m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(l.style.display="",d.style.display=
+"",g.style.display="inline-block"):(l.style.display="none",d.style.display="none",g.style.display="none");q()});this.editor.addListener("resetGraphView",m);this.editor.addListener("pageSelected",q)}p(mxUtils.bind(this,function(b){this.actions.get("zoomOut").funct();mxEvent.consume(b)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");p(mxUtils.bind(this,function(b){this.actions.get("zoomIn").funct();mxEvent.consume(b)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");
p(mxUtils.bind(this,function(d){b.isLightboxView()?(1==b.view.scale?this.lightboxFit():b.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(d)}),Editor.zoomFitImage,mxResources.get("fit"));var n=null,u=null,v=mxUtils.bind(this,function(b){null!=n&&(window.clearTimeout(n),n=null);null!=u&&(window.clearTimeout(u),u=null);n=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);n=null;u=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display=
"none";u=null}),600)}),b||200)}),y=mxUtils.bind(this,function(b){null!=n&&(window.clearTimeout(n),n=null);null!=u&&(window.clearTimeout(u),u=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,b||30)});if("1"==urlParams.layers){this.layersDialog=null;var x=p(mxUtils.bind(this,function(d){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=b.createLayersDialog(null,!0);mxEvent.addListener(this.layersDialog,
-"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var f=x.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily=Editor.defaultHtmlFont;this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.left=f.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
-this.chromelessToolbar.offsetHeight+4+"px";mxClient.IS_IE||mxClient.IS_IE11?(this.layersDialog.style.backgroundColor="#ffffff",this.layersDialog.style.border="2px solid black",this.layersDialog.style.color="#000000"):(this.layersDialog.style.backgroundColor="#000000",this.layersDialog.style.color="#ffffff",mxUtils.setOpacity(this.layersDialog,80));f=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=f.zIndex;document.body.appendChild(this.layersDialog);this.editor.fireEvent(new mxEventObject("layersDialogShown"))}mxEvent.consume(d)}),
+"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var g=x.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily=Editor.defaultHtmlFont;this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.left=g.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
+this.chromelessToolbar.offsetHeight+4+"px";mxClient.IS_IE||mxClient.IS_IE11?(this.layersDialog.style.backgroundColor="#ffffff",this.layersDialog.style.border="2px solid black",this.layersDialog.style.color="#000000"):(this.layersDialog.style.backgroundColor="#000000",this.layersDialog.style.color="#ffffff",mxUtils.setOpacity(this.layersDialog,80));g=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=g.zIndex;document.body.appendChild(this.layersDialog);this.editor.fireEvent(new mxEventObject("layersDialogShown"))}mxEvent.consume(d)}),
Editor.layersImage,mxResources.get("layers")),F=b.getModel();F.addListener(mxEvent.CHANGE,function(){x.style.display=1<F.getChildCount(F.root)?"":"none"})}("1"!=urlParams.openInSameWin||navigator.standalone)&&this.addChromelessToolbarItems(p);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||p(mxUtils.bind(this,function(d){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):b.openLink(this.editor.editButtonLink,
-"editWindow");mxEvent.consume(d)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(m=0;m<this.lightboxToolbarActions.length;m++){var H=this.lightboxToolbarActions[m];H.elem=p(H.fn,H.icon,H.tooltip)}null!=g.refreshBtn&&p(mxUtils.bind(this,function(b){g.refreshBtn.url?window.location.href=g.refreshBtn.url:window.location.reload();mxEvent.consume(b)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=g.fullscreenBtn&&window.self!==window.top&&p(mxUtils.bind(this,
-function(d){g.fullscreenBtn.url?b.openLink(g.fullscreenBtn.url):b.openLink(window.location.href);mxEvent.consume(d)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(g.closeBtn&&window.self===window.top||b.lightbox&&("1"==urlParams.close||this.container!=document.body))&&p(mxUtils.bind(this,function(b){"1"==urlParams.close||g.closeBtn?window.close():(this.destroy(),mxEvent.consume(b))}),Editor.closeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display=
+"editWindow");mxEvent.consume(d)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(m=0;m<this.lightboxToolbarActions.length;m++){var H=this.lightboxToolbarActions[m];H.elem=p(H.fn,H.icon,H.tooltip)}null!=f.refreshBtn&&p(mxUtils.bind(this,function(b){f.refreshBtn.url?window.location.href=f.refreshBtn.url:window.location.reload();mxEvent.consume(b)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=f.fullscreenBtn&&window.self!==window.top&&p(mxUtils.bind(this,
+function(d){f.fullscreenBtn.url?b.openLink(f.fullscreenBtn.url):b.openLink(window.location.href);mxEvent.consume(d)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(f.closeBtn&&window.self===window.top||b.lightbox&&("1"==urlParams.close||this.container!=document.body))&&p(mxUtils.bind(this,function(b){"1"==urlParams.close||f.closeBtn?window.close():(this.destroy(),mxEvent.consume(b))}),Editor.closeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display=
"none";b.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");b.container.appendChild(this.chromelessToolbar);mxEvent.addListener(b.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||(mxEvent.isShiftDown(b)||y(30),v())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(b){mxEvent.consume(b)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",
-mxUtils.bind(this,function(d){b.tooltipHandler.resetTimer();b.tooltipHandler.hideTooltip();mxEvent.isShiftDown(d)?v():y(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(b){mxEvent.isShiftDown(b)?v():y(100);mxEvent.consume(b)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||y(30)}));var z=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(d,f){this.startX=
-f.getGraphX();this.startY=f.getGraphY();this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(b,d){},mouseUp:function(d,f){mxEvent.isTouchEvent(f.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<z&&Math.abs(this.scrollTop-b.container.scrollTop)<z&&Math.abs(this.startX-f.getGraphX())<z&&Math.abs(this.startY-f.getGraphY())<z&&(0<parseFloat(e.chromelessToolbar.style.opacity||0)?v():y(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var D=
-b.view.validate;b.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var b=this.graph.getPagePadding(),d=this.graph.getPageSize();this.translate.x=b.x-(this.x0||0)*d.width;this.translate.y=b.y-(this.y0||0)*d.height}D.apply(this,arguments)};if(!b.isViewer()){var L=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var d=this.getPageLayout(),f=this.getPagePadding(),c=this.getPageSize(),e=Math.ceil(2*
-f.x+d.width*c.width),l=Math.ceil(2*f.y+d.height*c.height),g=b.minimumGraphSize;if(null==g||g.width!=e||g.height!=l)b.minimumGraphSize=new mxRectangle(0,0,e,l);e=f.x-d.x*c.width;f=f.y-d.y*c.height;this.autoTranslate||this.view.translate.x==e&&this.view.translate.y==f?L.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=d.x,this.view.y0=d.y,d=b.view.translate.x,c=b.view.translate.y,b.view.setTranslate(e,f),b.container.scrollLeft+=Math.round((e-d)*b.view.scale),b.container.scrollTop+=Math.round((f-
-c)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var E=b.view.getBackgroundPane(),J=b.view.getDrawPane();b.cumulativeZoomFactor=1;var C=null,K=null,M=null,aa=null,N=null,O=function(d){null!=C&&window.clearTimeout(C);window.setTimeout(function(){if(!b.isMouseDown||aa)C=window.setTimeout(mxUtils.bind(this,function(){b.isFastZoomEnabled()&&(null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,
+mxUtils.bind(this,function(d){b.tooltipHandler.resetTimer();b.tooltipHandler.hideTooltip();mxEvent.isShiftDown(d)?v():y(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(b){mxEvent.isShiftDown(b)?v():y(100);mxEvent.consume(b)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||y(30)}));var z=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(d,g){this.startX=
+g.getGraphX();this.startY=g.getGraphY();this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(b,d){},mouseUp:function(d,g){mxEvent.isTouchEvent(g.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<z&&Math.abs(this.scrollTop-b.container.scrollTop)<z&&Math.abs(this.startX-g.getGraphX())<z&&Math.abs(this.startY-g.getGraphY())<z&&(0<parseFloat(e.chromelessToolbar.style.opacity||0)?v():y(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var D=
+b.view.validate;b.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var b=this.graph.getPagePadding(),d=this.graph.getPageSize();this.translate.x=b.x-(this.x0||0)*d.width;this.translate.y=b.y-(this.y0||0)*d.height}D.apply(this,arguments)};if(!b.isViewer()){var N=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var d=this.getPageLayout(),g=this.getPagePadding(),c=this.getPageSize(),e=Math.ceil(2*
+g.x+d.width*c.width),l=Math.ceil(2*g.y+d.height*c.height),f=b.minimumGraphSize;if(null==f||f.width!=e||f.height!=l)b.minimumGraphSize=new mxRectangle(0,0,e,l);e=g.x-d.x*c.width;g=g.y-d.y*c.height;this.autoTranslate||this.view.translate.x==e&&this.view.translate.y==g?N.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=d.x,this.view.y0=d.y,d=b.view.translate.x,c=b.view.translate.y,b.view.setTranslate(e,g),b.container.scrollLeft+=Math.round((e-d)*b.view.scale),b.container.scrollTop+=Math.round((g-
+c)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var E=b.view.getBackgroundPane(),J=b.view.getDrawPane();b.cumulativeZoomFactor=1;var C=null,K=null,M=null,Z=null,L=null,O=function(d){null!=C&&window.clearTimeout(C);window.setTimeout(function(){if(!b.isMouseDown||Z)C=window.setTimeout(mxUtils.bind(this,function(){b.isFastZoomEnabled()&&(null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,
"transform-origin",null),mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform",null)),J.style.transformOrigin="",E.style.transformOrigin="",mxClient.IS_SF?(J.style.transform="scale(1)",E.style.transform="scale(1)",window.setTimeout(function(){J.style.transform="";E.style.transform=""},0)):(J.style.transform="",E.style.transform=""),b.view.getDecoratorPane().style.opacity="",b.view.getOverlayPane().style.opacity="");var d=new mxPoint(b.container.scrollLeft,b.container.scrollTop),
-f=mxUtils.getOffset(b.container),l=b.view.scale,g=0,k=0;null!=K&&(g=b.container.offsetWidth/2-K.x+f.x,k=b.container.offsetHeight/2-K.y+f.y);b.zoom(b.cumulativeZoomFactor,null,20);b.view.scale!=l&&(null!=M&&(g+=d.x-M.x,k+=d.y-M.y),null!=c&&e.chromelessResize(!1,null,g*(b.cumulativeZoomFactor-1),k*(b.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(b.container)||0==g&&0==k||(b.container.scrollLeft-=g*(b.cumulativeZoomFactor-1),b.container.scrollTop-=k*(b.cumulativeZoomFactor-1)));null!=N&&J.setAttribute("filter",
-N);b.cumulativeZoomFactor=1;N=aa=K=M=C=null}),null!=d?d:b.isFastZoomEnabled()?e.wheelZoomDelay:e.lazyZoomDelay)},0)};b.lazyZoom=function(d,f,c,l){l=null!=l?l:this.zoomFactor;(f=f||!b.scrollbars)&&(K=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));d?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=l,this.cumulativeZoomFactor=Math.round(this.view.scale*
-this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=l,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;b.isFastZoomEnabled()&&(null==N&&""!=J.getAttribute("filter")&&(N=J.getAttribute("filter"),
-J.removeAttribute("filter")),M=new mxPoint(b.container.scrollLeft,b.container.scrollTop),d=f||null==K?b.container.scrollLeft+b.container.clientWidth/2:K.x+b.container.scrollLeft-b.container.offsetLeft,l=f||null==K?b.container.scrollTop+b.container.clientHeight/2:K.y+b.container.scrollTop-b.container.offsetTop,J.style.transformOrigin=d+"px "+l+"px",J.style.transform="scale("+this.cumulativeZoomFactor+")",E.style.transformOrigin=d+"px "+l+"px",E.style.transform="scale("+this.cumulativeZoomFactor+")",
-null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(d=b.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(d.style,"transform-origin",(f||null==K?b.container.clientWidth/2+b.container.scrollLeft-d.offsetLeft+"px":K.x+b.container.scrollLeft-d.offsetLeft-b.container.offsetLeft+"px")+" "+(f||null==K?b.container.clientHeight/2+b.container.scrollTop-d.offsetTop+"px":K.y+b.container.scrollTop-d.offsetTop-b.container.offsetTop+"px")),mxUtils.setPrefixedStyle(d.style,"transform",
-"scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=e.hoverIcons&&e.hoverIcons.reset());O(c)};mxEvent.addGestureListeners(b.container,function(b){null!=C&&window.clearTimeout(C)},null,function(d){1!=b.cumulativeZoomFactor&&O(0)});mxEvent.addListener(b.container,"scroll",function(d){null==C||b.isMouseDown||1==b.cumulativeZoomFactor||O(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,f,c,e,l){b.fireEvent(new mxEventObject("wheel"));
-if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!c&&b.isScrollWheelEvent(d))c=b.view.getTranslate(),e=40/b.view.scale,mxEvent.isShiftDown(d)?b.view.setTranslate(c.x+(f?-e:e),c.y):b.view.setTranslate(c.x,c.y+(f?e:-e));else if(c||b.isZoomWheelEvent(d))for(var g=mxEvent.getSource(d);null!=g;){if(g==b.container)return b.tooltipHandler.hideTooltip(),K=null!=e&&null!=l?new mxPoint(e,l):new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d)),aa=c,c=b.zoomFactor,null!=d.deltaY&&Math.round(d.deltaY)!=
-d.deltaY&&(c=1+Math.abs(d.deltaY)/20*(c-1)),b.lazyZoom(f,null,null,c),mxEvent.consume(d),!1;g=g.parentNode}}),b.container);b.panningHandler.zoomGraph=function(d){b.cumulativeZoomFactor=d.scale;b.lazyZoom(0<d.scale,!0);mxEvent.consume(d)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(b){this.actions.get("print").funct();mxEvent.consume(b)}),Editor.printImage,mxResources.get("print"))};
+g=mxUtils.getOffset(b.container),l=b.view.scale,f=0,k=0;null!=K&&(f=b.container.offsetWidth/2-K.x+g.x,k=b.container.offsetHeight/2-K.y+g.y);b.zoom(b.cumulativeZoomFactor,null,20);b.view.scale!=l&&(null!=M&&(f+=d.x-M.x,k+=d.y-M.y),null!=c&&e.chromelessResize(!1,null,f*(b.cumulativeZoomFactor-1),k*(b.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(b.container)||0==f&&0==k||(b.container.scrollLeft-=f*(b.cumulativeZoomFactor-1),b.container.scrollTop-=k*(b.cumulativeZoomFactor-1)));null!=L&&J.setAttribute("filter",
+L);b.cumulativeZoomFactor=1;L=Z=K=M=C=null}),null!=d?d:b.isFastZoomEnabled()?e.wheelZoomDelay:e.lazyZoomDelay)},0)};b.lazyZoom=function(d,g,c,l){l=null!=l?l:this.zoomFactor;(g=g||!b.scrollbars)&&(K=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));d?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=l,this.cumulativeZoomFactor=Math.round(this.view.scale*
+this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=l,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;b.isFastZoomEnabled()&&(null==L&&""!=J.getAttribute("filter")&&(L=J.getAttribute("filter"),
+J.removeAttribute("filter")),M=new mxPoint(b.container.scrollLeft,b.container.scrollTop),d=g||null==K?b.container.scrollLeft+b.container.clientWidth/2:K.x+b.container.scrollLeft-b.container.offsetLeft,l=g||null==K?b.container.scrollTop+b.container.clientHeight/2:K.y+b.container.scrollTop-b.container.offsetTop,J.style.transformOrigin=d+"px "+l+"px",J.style.transform="scale("+this.cumulativeZoomFactor+")",E.style.transformOrigin=d+"px "+l+"px",E.style.transform="scale("+this.cumulativeZoomFactor+")",
+null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(d=b.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(d.style,"transform-origin",(g||null==K?b.container.clientWidth/2+b.container.scrollLeft-d.offsetLeft+"px":K.x+b.container.scrollLeft-d.offsetLeft-b.container.offsetLeft+"px")+" "+(g||null==K?b.container.clientHeight/2+b.container.scrollTop-d.offsetTop+"px":K.y+b.container.scrollTop-d.offsetTop-b.container.offsetTop+"px")),mxUtils.setPrefixedStyle(d.style,"transform",
+"scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=e.hoverIcons&&e.hoverIcons.reset());O(c)};mxEvent.addGestureListeners(b.container,function(b){null!=C&&window.clearTimeout(C)},null,function(d){1!=b.cumulativeZoomFactor&&O(0)});mxEvent.addListener(b.container,"scroll",function(d){null==C||b.isMouseDown||1==b.cumulativeZoomFactor||O(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,g,c,e,l){b.fireEvent(new mxEventObject("wheel"));
+if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!c&&b.isScrollWheelEvent(d))c=b.view.getTranslate(),e=40/b.view.scale,mxEvent.isShiftDown(d)?b.view.setTranslate(c.x+(g?-e:e),c.y):b.view.setTranslate(c.x,c.y+(g?e:-e));else if(c||b.isZoomWheelEvent(d))for(var f=mxEvent.getSource(d);null!=f;){if(f==b.container)return b.tooltipHandler.hideTooltip(),K=null!=e&&null!=l?new mxPoint(e,l):new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d)),Z=c,c=b.zoomFactor,null!=d.deltaY&&Math.round(d.deltaY)!=
+d.deltaY&&(c=1+Math.abs(d.deltaY)/20*(c-1)),b.lazyZoom(g,null,null,c),mxEvent.consume(d),!1;f=f.parentNode}}),b.container);b.panningHandler.zoomGraph=function(d){b.cumulativeZoomFactor=d.scale;b.lazyZoom(0<d.scale,!0);mxEvent.consume(d)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(b){this.actions.get("print").funct();mxEvent.consume(b)}),Editor.printImage,mxResources.get("print"))};
EditorUi.prototype.isPagesEnabled=function(){return this.editor.editable||"1"!=urlParams["hide-pages"]};EditorUi.prototype.createTemporaryGraph=function(b){return Graph.createOffscreenGraph(b)};EditorUi.prototype.addChromelessClickHandler=function(){var b=urlParams.highlight;null!=b&&0<b.length&&(b="#"+b);this.editor.graph.addClickHandler(b)};
EditorUi.prototype.toggleFormatPanel=function(b){b=null!=b?b:0==this.formatWidth;null!=this.format&&(this.formatWidth=b?240:0,this.formatContainer.style.display=b?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))};
EditorUi.prototype.lightboxFit=function(b){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var c=urlParams.border,e=60;null!=c&&(e=parseInt(c));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(e,null,null,null,null,null,b);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var b=this.editor.graph.getModel();return 1==b.getChildCount(b.root)&&0==b.getChildCount(b.getChildAt(b.root,0))};
EditorUi.prototype.isSelectionAllowed=function(b){return"SELECT"==mxEvent.getSource(b).nodeName||"INPUT"==mxEvent.getSource(b).nodeName&&mxUtils.isAncestorNode(this.formatContainer,mxEvent.getSource(b))};EditorUi.prototype.addBeforeUnloadListener=function(){window.onbeforeunload=mxUtils.bind(this,function(){if(!this.editor.isChromelessView())return this.onBeforeUnload()})};EditorUi.prototype.onBeforeUnload=function(){if(this.editor.modified)return mxResources.get("allChangesLost")};
EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(b,c){try{var e=mxUtils.parseXml(b);this.editor.setGraphXml(e.documentElement);this.editor.setModified(!1);this.editor.undoManager.clear();null!=c&&(this.editor.setFilename(c),this.updateDocumentTitle())}catch(k){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+k.message)}}))}catch(b){}this.editor.graph.view.validate();this.editor.graph.sizeDidChange();
-this.editor.fireEvent(new mxEventObject("resetGraphView"))};EditorUi.prototype.showPopupMenu=function(b,c,e,k){this.editor.graph.popupMenuHandler.hideMenu();var g=new mxPopupMenu(b);g.div.className+=" geMenubarMenu";g.smartSeparators=!0;g.showDisabled=!0;g.autoExpand=!0;g.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(g,arguments);g.destroy()});g.popup(c,e,null,k);this.setCurrentMenu(g)};
+this.editor.fireEvent(new mxEventObject("resetGraphView"))};EditorUi.prototype.showPopupMenu=function(b,c,e,k){this.editor.graph.popupMenuHandler.hideMenu();var f=new mxPopupMenu(b);f.div.className+=" geMenubarMenu";f.smartSeparators=!0;f.showDisabled=!0;f.autoExpand=!0;f.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(f,arguments);f.destroy()});f.popup(c,e,null,k);this.setCurrentMenu(f)};
EditorUi.prototype.setCurrentMenu=function(b,c){this.currentMenuElt=c;this.currentMenu=b};EditorUi.prototype.resetCurrentMenu=function(){this.currentMenu=this.currentMenuElt=null};EditorUi.prototype.hideCurrentMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.resetCurrentMenu())};EditorUi.prototype.updateDocumentTitle=function(){var b=this.editor.getOrCreateFilename();null!=this.editor.appName&&(b+=" - "+this.editor.appName);document.title=b};
EditorUi.prototype.createHoverIcons=function(){return new HoverIcons(this.editor.graph)};EditorUi.prototype.redo=function(){try{this.editor.graph.isEditing()?document.execCommand("redo",!1,null):this.editor.undoManager.redo()}catch(b){}};EditorUi.prototype.undo=function(){try{var b=this.editor.graph;if(b.isEditing()){var c=b.cellEditor.textarea.innerHTML;document.execCommand("undo",!1,null);c==b.cellEditor.textarea.innerHTML&&(b.stopEditing(!0),this.editor.undoManager.undo())}else this.editor.undoManager.undo()}catch(e){}};
EditorUi.prototype.canRedo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canRedo()};EditorUi.prototype.canUndo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canUndo()};EditorUi.prototype.getEditBlankXml=function(){return mxUtils.getXml(this.editor.getGraphXml())};EditorUi.prototype.getUrl=function(b){b=null!=b?b:window.location.pathname;var c=0<b.indexOf("?")?1:0,e;for(e in urlParams)b=0==c?b+"?":b+"&",b+=e+"="+urlParams[e],c++;return b};
@@ -2242,29 +2248,29 @@ EditorUi.prototype.setScrollbars=function(b){var c=this.editor.graph,e=c.contain
EditorUi.prototype.resetScrollbars=function(){var b=this.editor.graph;if(!this.editor.extendCanvas)b.container.scrollTop=0,b.container.scrollLeft=0,mxUtils.hasScrollbars(b.container)||b.view.setTranslate(0,0);else if(!this.editor.isChromelessView())if(mxUtils.hasScrollbars(b.container))if(b.pageVisible){var c=b.getPagePadding();b.container.scrollTop=Math.floor(c.y-this.editor.initialTopSpacing)-1;b.container.scrollLeft=Math.floor(Math.min(c.x,(b.container.scrollWidth-b.container.clientWidth)/2))-
1;c=b.getGraphBounds();0<c.width&&0<c.height&&(c.x>b.container.scrollLeft+.9*b.container.clientWidth&&(b.container.scrollLeft=Math.min(c.x+c.width-b.container.clientWidth,c.x-10)),c.y>b.container.scrollTop+.9*b.container.clientHeight&&(b.container.scrollTop=Math.min(c.y+c.height-b.container.clientHeight,c.y-10)))}else{var c=b.getGraphBounds(),e=Math.max(c.width,b.scrollTileSize.width*b.view.scale);b.container.scrollTop=Math.floor(Math.max(0,c.y-Math.max(20,(b.container.clientHeight-Math.max(c.height,
b.scrollTileSize.height*b.view.scale))/4)));b.container.scrollLeft=Math.floor(Math.max(0,c.x-Math.max(0,(b.container.clientWidth-e)/2)))}else{var c=mxRectangle.fromRectangle(b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds()),e=b.view.translate,k=b.view.scale;c.x=c.x/k-e.x;c.y=c.y/k-e.y;c.width/=k;c.height/=k;b.view.setTranslate(Math.floor(Math.max(0,(b.container.clientWidth-c.width)/2)-c.x+2),Math.floor((b.pageVisible?0:Math.max(0,(b.container.clientHeight-c.height)/4))-c.y+1))}};
-EditorUi.prototype.setPageVisible=function(b){var c=this.editor.graph,e=mxUtils.hasScrollbars(c.container),k=0,g=0;e&&(k=c.view.translate.x*c.view.scale-c.container.scrollLeft,g=c.view.translate.y*c.view.scale-c.container.scrollTop);c.pageVisible=b;c.pageBreaksVisible=b;c.preferPageSize=b;c.view.validateBackground();if(e){var p=c.getSelectionCells();c.clearSelection();c.setSelectionCells(p)}c.sizeDidChange();e&&(c.container.scrollLeft=c.view.translate.x*c.view.scale-k,c.container.scrollTop=c.view.translate.y*
-c.view.scale-g);c.defaultPageVisible=b;this.fireEvent(new mxEventObject("pageViewChanged"))};function ChangeGridColor(b,c){this.ui=b;this.color=c}ChangeGridColor.prototype.execute=function(){var b=this.ui.editor.graph.view.gridColor;this.ui.setGridColor(this.color);this.color=b};(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);mxCodecRegistry.register(b)})();
-function ChangePageSetup(b,c,e,k,g){this.ui=b;this.previousColor=this.color=c;this.previousImage=this.image=e;this.previousFormat=this.format=k;this.previousPageScale=this.pageScale=g;this.ignoreImage=this.ignoreColor=!1}
+EditorUi.prototype.setPageVisible=function(b){var c=this.editor.graph,e=mxUtils.hasScrollbars(c.container),k=0,f=0;e&&(k=c.view.translate.x*c.view.scale-c.container.scrollLeft,f=c.view.translate.y*c.view.scale-c.container.scrollTop);c.pageVisible=b;c.pageBreaksVisible=b;c.preferPageSize=b;c.view.validateBackground();if(e){var p=c.getSelectionCells();c.clearSelection();c.setSelectionCells(p)}c.sizeDidChange();e&&(c.container.scrollLeft=c.view.translate.x*c.view.scale-k,c.container.scrollTop=c.view.translate.y*
+c.view.scale-f);c.defaultPageVisible=b;this.fireEvent(new mxEventObject("pageViewChanged"))};function ChangeGridColor(b,c){this.ui=b;this.color=c}ChangeGridColor.prototype.execute=function(){var b=this.ui.editor.graph.view.gridColor;this.ui.setGridColor(this.color);this.color=b};(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);mxCodecRegistry.register(b)})();
+function ChangePageSetup(b,c,e,k,f){this.ui=b;this.previousColor=this.color=c;this.previousImage=this.image=e;this.previousFormat=this.format=k;this.previousPageScale=this.pageScale=f;this.ignoreImage=this.ignoreColor=!1}
ChangePageSetup.prototype.execute=function(){var b=this.ui.editor.graph;if(!this.ignoreColor){this.color=this.previousColor;var c=b.background;this.ui.setBackgroundColor(this.previousColor);this.previousColor=c}if(!this.ignoreImage){this.image=this.previousImage;var c=b.backgroundImage,e=this.previousImage;null!=e&&null!=e.src&&"data:page/id,"==e.src.substring(0,13)&&(e=this.ui.createImageForPageLink(e.src,this.ui.currentPage));this.ui.setBackgroundImage(e);this.previousImage=c}null!=this.previousFormat&&
(this.format=this.previousFormat,c=b.pageFormat,this.previousFormat.width!=c.width||this.previousFormat.height!=c.height)&&(this.ui.setPageFormat(this.previousFormat),this.previousFormat=c);null!=this.foldingEnabled&&this.foldingEnabled!=this.ui.editor.graph.foldingEnabled&&(this.ui.setFoldingEnabled(this.foldingEnabled),this.foldingEnabled=!this.foldingEnabled);null!=this.previousPageScale&&(b=this.ui.editor.graph.pageScale,this.previousPageScale!=b&&(this.ui.setPageScale(this.previousPageScale),
this.previousPageScale=b))};(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat","previousPageScale"]);b.afterDecode=function(b,e,k){k.previousColor=k.color;k.previousImage=k.image;k.previousFormat=k.format;k.previousPageScale=k.pageScale;null!=k.foldingEnabled&&(k.foldingEnabled=!k.foldingEnabled);return k};mxCodecRegistry.register(b)})();
EditorUi.prototype.setBackgroundColor=function(b){this.editor.graph.background=b;this.editor.graph.view.validateBackground();this.fireEvent(new mxEventObject("backgroundColorChanged"))};EditorUi.prototype.setFoldingEnabled=function(b){this.editor.graph.foldingEnabled=b;this.editor.graph.view.revalidate();this.fireEvent(new mxEventObject("foldingEnabledChanged"))};
EditorUi.prototype.setPageFormat=function(b,c){c=null!=c?c:"1"==urlParams.sketch;this.editor.graph.pageFormat=b;c||(this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct());this.fireEvent(new mxEventObject("pageFormatChanged"))};
EditorUi.prototype.setPageScale=function(b){this.editor.graph.pageScale=b;this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct();this.fireEvent(new mxEventObject("pageScaleChanged"))};EditorUi.prototype.setGridColor=function(b){this.editor.graph.view.gridColor=b;this.editor.graph.view.validateBackground();this.fireEvent(new mxEventObject("gridColorChanged"))};
-EditorUi.prototype.addUndoListener=function(){var b=this.actions.get("undo"),c=this.actions.get("redo"),e=this.editor.undoManager,k=mxUtils.bind(this,function(){b.setEnabled(this.canUndo());c.setEnabled(this.canRedo())});e.addListener(mxEvent.ADD,k);e.addListener(mxEvent.UNDO,k);e.addListener(mxEvent.REDO,k);e.addListener(mxEvent.CLEAR,k);var g=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){g.apply(this,arguments);k()};var p=this.editor.graph.cellEditor.stopEditing;
+EditorUi.prototype.addUndoListener=function(){var b=this.actions.get("undo"),c=this.actions.get("redo"),e=this.editor.undoManager,k=mxUtils.bind(this,function(){b.setEnabled(this.canUndo());c.setEnabled(this.canRedo())});e.addListener(mxEvent.ADD,k);e.addListener(mxEvent.UNDO,k);e.addListener(mxEvent.REDO,k);e.addListener(mxEvent.CLEAR,k);var f=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){f.apply(this,arguments);k()};var p=this.editor.graph.cellEditor.stopEditing;
this.editor.graph.cellEditor.stopEditing=function(b,d){p.apply(this,arguments);k()};k()};
-EditorUi.prototype.updateActionStates=function(){var b=this.editor.graph,c=!1,e=!1,k=!1,g=!1,p=!1,t=!1,d=!1,f=[],l=b.getSelectionCells();if(null!=l)for(var q=0;q<l.length;q++){var m=l[q],g=g||b.isTable(m),t=t||b.isTableCell(m),p=p||b.isTableRow(m);b.isCellEditable(m)&&(f.push(m),d=!0,b.getModel().isEdge(m)&&(k=!0),b.getModel().isVertex(m)&&(c=!0,0<b.getModel().getChildCount(m)||b.isContainer(m)))&&(e=!0)}g="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" ");for(q=
-0;q<g.length;q++)this.actions.get(g[q]).setEnabled(d);this.actions.get("lockUnlock").setEnabled(!b.isSelectionEmpty());this.actions.get("setAsDefaultStyle").setEnabled(1==b.getSelectionCount());this.actions.get("clearWaypoints").setEnabled(d);this.actions.get("copySize").setEnabled(1==b.getSelectionCount());this.actions.get("bringForward").setEnabled(1==f.length);this.actions.get("sendBackward").setEnabled(1==f.length);this.actions.get("turn").setEnabled(0<b.getResizableCells(b.getSelectionCells()).length);
-this.actions.get("curved").setEnabled(k);this.actions.get("rotation").setEnabled(c);this.actions.get("wordWrap").setEnabled(c);this.actions.get("autosize").setEnabled(c);k=c&&1==b.getSelectionCount();this.actions.get("group").setEnabled((1<b.getSelectionCount()||k&&!b.isContainer(b.getSelectionCell())&&0==b.model.getChildCount(b.getSelectionCell()))&&!p&&!t);this.actions.get("ungroup").setEnabled(e&&!p&&!t);this.actions.get("removeFromGroup").setEnabled(k&&b.getModel().isVertex(b.getModel().getParent(f[0])));
-b.view.getState(b.getSelectionCell());this.menus.get("navigation").setEnabled(d||null!=b.view.currentRoot);this.actions.get("collapsible").setEnabled(c&&(b.isContainer(b.getSelectionCell())||0<b.model.getChildCount(b.getSelectionCell())));this.actions.get("home").setEnabled(null!=b.view.currentRoot);this.actions.get("exitGroup").setEnabled(null!=b.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==b.getSelectionCount()&&b.isValidRoot(b.getSelectionCell()));e=1==b.getSelectionCount()&&
-b.isCellFoldable(b.getSelectionCell());this.actions.get("expand").setEnabled(e);this.actions.get("collapse").setEnabled(e);this.actions.get("editLink").setEnabled(1==f.length);this.actions.get("openLink").setEnabled(1==b.getSelectionCount()&&null!=b.getLinkForCell(b.getSelectionCell()));this.actions.get("guides").setEnabled(b.isEnabled());this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);f=b.isEnabled()&&!b.isCellLocked(b.getDefaultParent());this.menus.get("layout").setEnabled(f);
-this.menus.get("insert").setEnabled(f);this.menus.get("direction").setEnabled(f&&c);this.menus.get("align").setEnabled(f&&c&&1<b.getSelectionCount());this.menus.get("distribute").setEnabled(f&&c&&1<b.getSelectionCount());this.actions.get("selectVertices").setEnabled(f);this.actions.get("selectEdges").setEnabled(f);this.actions.get("selectAll").setEnabled(f);this.actions.get("selectNone").setEnabled(f);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);
-EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
-EditorUi.prototype.refresh=function(b){b=null!=b?b:!0;var c=this.container.clientWidth,e=this.container.clientHeight;this.container==document.body&&(c=document.body.clientWidth||document.documentElement.clientWidth,e=document.documentElement.clientHeight);var k=0;mxClient.IS_IOS&&!window.navigator.standalone&&window.innerHeight!=document.documentElement.clientHeight&&(k=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var g=Math.max(0,Math.min(this.hsplitPosition,c-this.splitSize-
-20)),c=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",c+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",c+=this.toolbarHeight);0<c&&(c+=1);var p=0;if(null!=this.sidebarFooterContainer){var t=this.footerHeight+k,p=Math.max(0,Math.min(e-c-t,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=g+"px";this.sidebarFooterContainer.style.height=p+"px";
-this.sidebarFooterContainer.style.bottom=t+"px"}e=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=c+"px";this.sidebarContainer.style.width=g+"px";this.formatContainer.style.top=c+"px";this.formatContainer.style.width=e+"px";this.formatContainer.style.display=null!=this.format?"":"none";var t=this.getDiagramContainerOffset(),d=null!=this.hsplit.parentNode?g+this.splitSize:0;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;
-this.hsplit.style.bottom=this.footerHeight+k+"px";this.hsplit.style.left=g+"px";this.footerContainer.style.display=0==this.footerHeight?"none":"";null!=this.tabContainer&&(this.tabContainer.style.left=d+"px");0<this.footerHeight&&(this.footerContainer.style.bottom=k+"px");g=0;null!=this.tabContainer&&(this.tabContainer.style.bottom=this.footerHeight+k+"px",this.tabContainer.style.right=this.diagramContainer.style.right,g=this.tabContainer.clientHeight);this.sidebarContainer.style.bottom=this.footerHeight+
-p+k+"px";this.formatContainer.style.bottom=this.footerHeight+k+"px";"1"!=urlParams.embedInline&&(this.diagramContainer.style.left=d+t.x+"px",this.diagramContainer.style.top=c+t.y+"px",this.diagramContainer.style.right=e+"px",this.diagramContainer.style.bottom=this.footerHeight+k+g+"px");b&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null};
+EditorUi.prototype.updateActionStates=function(){for(var b=this.editor.graph,c=this.getSelectionState(),e=b.isEnabled()&&!b.isCellLocked(b.getDefaultParent()),k="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" "),f=0;f<k.length;f++)this.actions.get(k[f]).setEnabled(0<c.cells.length);this.actions.get("grid").setEnabled(!this.editor.chromeless||
+this.editor.editable);this.actions.get("pasteSize").setEnabled(null!=this.copiedSize&&0<c.vertices.length);this.actions.get("pasteData").setEnabled(null!=this.copiedValue&&0<c.cells.length);this.actions.get("setAsDefaultStyle").setEnabled(1==b.getSelectionCount());this.actions.get("copySize").setEnabled(1==b.getSelectionCount());this.actions.get("lockUnlock").setEnabled(!b.isSelectionEmpty());this.actions.get("bringForward").setEnabled(1==c.cells.length);this.actions.get("sendBackward").setEnabled(1==
+c.cells.length);this.actions.get("rotation").setEnabled(1==c.vertices.length);this.actions.get("wordWrap").setEnabled(1==c.vertices.length);this.actions.get("autosize").setEnabled(1==c.vertices.length);this.actions.get("clearWaypoints").setEnabled(c.connections);this.actions.get("curved").setEnabled(0<c.edges.length);this.actions.get("turn").setEnabled(c.resizable);this.actions.get("group").setEnabled(!c.row&&!c.cell&&(1<c.cells.length||1==c.vertices.length&&0==b.model.getChildCount(c.cells[0])&&
+!b.isContainer(c.vertices[0])));this.actions.get("ungroup").setEnabled(!c.row&&!c.cell&&!c.table&&0<c.vertices.length&&(b.isContainer(c.vertices[0])||0<b.getModel().getChildCount(c.vertices[0])));this.actions.get("removeFromGroup").setEnabled(1==c.cells.length&&b.getModel().isVertex(b.getModel().getParent(c.cells[0])));this.actions.get("collapsible").setEnabled(1==c.vertices.length&&(0<b.model.getChildCount(c.vertices[0])||b.isContainer(c.vertices[0])));this.actions.get("exitGroup").setEnabled(null!=
+b.view.currentRoot);this.actions.get("home").setEnabled(null!=b.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==c.cells.length&&b.isValidRoot(c.cells[0]));this.actions.get("editLink").setEnabled(1==c.cells.length);this.actions.get("openLink").setEnabled(1==c.cells.length&&null!=b.getLinkForCell(c.cells[0]));this.actions.get("guides").setEnabled(b.isEnabled());this.actions.get("selectVertices").setEnabled(e);this.actions.get("selectEdges").setEnabled(e);this.actions.get("selectAll").setEnabled(e);
+this.actions.get("selectNone").setEnabled(e);k=1==c.vertices.length&&b.isCellFoldable(c.vertices[0]);this.actions.get("expand").setEnabled(k);this.actions.get("collapse").setEnabled(k);this.menus.get("navigation").setEnabled(0<c.cells.length||null!=b.view.currentRoot);this.menus.get("layout").setEnabled(e);this.menus.get("insert").setEnabled(e);this.menus.get("direction").setEnabled(c.unlocked&&1==c.vertices.length);this.menus.get("distribute").setEnabled(c.unlocked&&1<c.vertices.length);this.menus.get("align").setEnabled(c.unlocked&&
+1<c.vertices.length);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
+EditorUi.prototype.refresh=function(b){b=null!=b?b:!0;var c=this.container.clientWidth,e=this.container.clientHeight;this.container==document.body&&(c=document.body.clientWidth||document.documentElement.clientWidth,e=document.documentElement.clientHeight);var k=0;mxClient.IS_IOS&&!window.navigator.standalone&&window.innerHeight!=document.documentElement.clientHeight&&(k=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var f=Math.max(0,Math.min(this.hsplitPosition,c-this.splitSize-
+20)),c=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",c+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",c+=this.toolbarHeight);0<c&&(c+=1);var p=0;if(null!=this.sidebarFooterContainer){var t=this.footerHeight+k,p=Math.max(0,Math.min(e-c-t,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=f+"px";this.sidebarFooterContainer.style.height=p+"px";
+this.sidebarFooterContainer.style.bottom=t+"px"}e=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=c+"px";this.sidebarContainer.style.width=f+"px";this.formatContainer.style.top=c+"px";this.formatContainer.style.width=e+"px";this.formatContainer.style.display=null!=this.format?"":"none";var t=this.getDiagramContainerOffset(),d=null!=this.hsplit.parentNode?f+this.splitSize:0;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;
+this.hsplit.style.bottom=this.footerHeight+k+"px";this.hsplit.style.left=f+"px";this.footerContainer.style.display=0==this.footerHeight?"none":"";null!=this.tabContainer&&(this.tabContainer.style.left=d+"px");0<this.footerHeight&&(this.footerContainer.style.bottom=k+"px");f=0;null!=this.tabContainer&&(this.tabContainer.style.bottom=this.footerHeight+k+"px",this.tabContainer.style.right=this.diagramContainer.style.right,f=this.tabContainer.clientHeight);this.sidebarContainer.style.bottom=this.footerHeight+
+p+k+"px";this.formatContainer.style.bottom=this.footerHeight+k+"px";"1"!=urlParams.embedInline&&(this.diagramContainer.style.left=d+t.x+"px",this.diagramContainer.style.top=c+t.y+"px",this.diagramContainer.style.right=e+"px",this.diagramContainer.style.bottom=this.footerHeight+k+f+"px");b&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null};
EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer");this.toolbarContainer=this.createDiv("geToolbarContainer");this.sidebarContainer=this.createDiv("geSidebarContainer");this.formatContainer=this.createDiv("geSidebarContainer geFormatContainer");this.diagramContainer=this.createDiv("geDiagramContainer");this.footerContainer=this.createDiv("geFooterContainer");this.hsplit=this.createDiv("geHsplit");this.hsplit.setAttribute("title",mxResources.get("collapseExpand"));
this.menubarContainer.style.top="0px";this.menubarContainer.style.left="0px";this.menubarContainer.style.right="0px";this.toolbarContainer.style.left="0px";this.toolbarContainer.style.right="0px";this.sidebarContainer.style.left="0px";this.formatContainer.style.right="0px";this.formatContainer.style.zIndex="1";this.diagramContainer.style.right=(null!=this.format?this.formatWidth:0)+"px";this.footerContainer.style.left="0px";this.footerContainer.style.right="0px";this.footerContainer.style.bottom=
"0px";this.footerContainer.style.zIndex=mxPopupMenu.prototype.zIndex-3;this.hsplit.style.width=this.splitSize+"px";if(this.sidebarFooterContainer=this.createSidebarFooterContainer())this.sidebarFooterContainer.style.left="0px";this.editor.chromeless?this.diagramContainer.style.border="none":this.tabContainer=this.createTabContainer()};EditorUi.prototype.createSidebarFooterContainer=function(){return null};
@@ -2273,18 +2279,18 @@ this.sidebar=this.editor.chromeless?null:this.createSidebar(this.sidebarContaine
this.container.appendChild(this.sidebarFooterContainer);this.container.appendChild(this.diagramContainer);null!=this.container&&null!=this.tabContainer&&this.container.appendChild(this.tabContainer);this.toolbar=this.editor.chromeless?null:this.createToolbar(this.createDiv("geToolbar"));null!=this.toolbar&&(this.toolbarContainer.appendChild(this.toolbar.container),this.container.appendChild(this.toolbarContainer));null!=this.sidebar&&(this.container.appendChild(this.hsplit),this.addSplitHandler(this.hsplit,
!0,0,mxUtils.bind(this,function(b){this.hsplitPosition=b;this.refresh()})))};EditorUi.prototype.createStatusContainer=function(){var b=document.createElement("a");b.className="geItem geStatus";return b};EditorUi.prototype.setStatusText=function(b){this.statusContainer.innerHTML=b};EditorUi.prototype.createToolbar=function(b){return new Toolbar(this,b)};EditorUi.prototype.createSidebar=function(b){return new Sidebar(this,b)};EditorUi.prototype.createFormat=function(b){return new Format(this,b)};
EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")};EditorUi.prototype.createDiv=function(b){var c=document.createElement("div");c.className=b;return c};
-EditorUi.prototype.addSplitHandler=function(b,c,e,k){function g(b){if(null!=t){var g=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));k(Math.max(0,d+(c?g.x-t.x:t.y-g.y)-e));mxEvent.consume(b);d!=q()&&(f=!0,l=null)}}function p(b){g(b);t=d=null}var t=null,d=null,f=!0,l=null;mxClient.IS_POINTER&&(b.style.touchAction="none");var q=mxUtils.bind(this,function(){var d=parseInt(c?b.style.left:b.style.bottom);c||(d=d+e-this.footerHeight);return d});mxEvent.addGestureListeners(b,function(b){t=new mxPoint(mxEvent.getClientX(b),
-mxEvent.getClientY(b));d=q();f=!1;mxEvent.consume(b)});mxEvent.addListener(b,"click",mxUtils.bind(this,function(b){if(!f&&this.hsplitClickEnabled){var d=null!=l?l-e:0;l=q();k(d);mxEvent.consume(b)}}));mxEvent.addGestureListeners(document,null,g,p);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,g,p)})};
-EditorUi.prototype.handleError=function(b,c,e,k,g){b=null!=b&&null!=b.error?b.error:b;if(null!=b||null!=c){g=mxUtils.htmlEntities(mxResources.get("unknownError"));var p=mxResources.get("ok");c=null!=c?c:mxResources.get("error");null!=b&&null!=b.message&&(g=mxUtils.htmlEntities(b.message));this.showError(c,g,p,e,null,null,null,null,null,null,null,null,k?e:null)}else null!=e&&e()};
-EditorUi.prototype.showError=function(b,c,e,k,g,p,t,d,f,l,q,m,n){b=new ErrorDialog(this,b,c,e||mxResources.get("ok"),k,g,p,t,m,d,f);c=Math.ceil(null!=c?c.length/50:1);this.showDialog(b.container,l||340,q||100+20*c,!0,!1,n);b.init()};EditorUi.prototype.showDialog=function(b,c,e,k,g,p,t,d,f,l){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,b,c,e,k,g,p,t,d,f,l);this.dialogs.push(this.dialog)};
+EditorUi.prototype.addSplitHandler=function(b,c,e,k){function f(b){if(null!=t){var f=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));k(Math.max(0,d+(c?f.x-t.x:t.y-f.y)-e));mxEvent.consume(b);d!=q()&&(g=!0,l=null)}}function p(b){f(b);t=d=null}var t=null,d=null,g=!0,l=null;mxClient.IS_POINTER&&(b.style.touchAction="none");var q=mxUtils.bind(this,function(){var d=parseInt(c?b.style.left:b.style.bottom);c||(d=d+e-this.footerHeight);return d});mxEvent.addGestureListeners(b,function(b){t=new mxPoint(mxEvent.getClientX(b),
+mxEvent.getClientY(b));d=q();g=!1;mxEvent.consume(b)});mxEvent.addListener(b,"click",mxUtils.bind(this,function(b){if(!g&&this.hsplitClickEnabled){var d=null!=l?l-e:0;l=q();k(d);mxEvent.consume(b)}}));mxEvent.addGestureListeners(document,null,f,p);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,f,p)})};
+EditorUi.prototype.handleError=function(b,c,e,k,f){b=null!=b&&null!=b.error?b.error:b;if(null!=b||null!=c){f=mxUtils.htmlEntities(mxResources.get("unknownError"));var p=mxResources.get("ok");c=null!=c?c:mxResources.get("error");null!=b&&null!=b.message&&(f=mxUtils.htmlEntities(b.message));this.showError(c,f,p,e,null,null,null,null,null,null,null,null,k?e:null)}else null!=e&&e()};
+EditorUi.prototype.showError=function(b,c,e,k,f,p,t,d,g,l,q,m,n){b=new ErrorDialog(this,b,c,e||mxResources.get("ok"),k,f,p,t,m,d,g);c=Math.ceil(null!=c?c.length/50:1);this.showDialog(b.container,l||340,q||100+20*c,!0,!1,n);b.init()};EditorUi.prototype.showDialog=function(b,c,e,k,f,p,t,d,g,l){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,b,c,e,k,f,p,t,d,g,l);this.dialogs.push(this.dialog)};
EditorUi.prototype.hideDialog=function(b,c,e){null!=this.dialogs&&0<this.dialogs.length&&(null==e||e==this.dialog.container.firstChild)&&(e=this.dialogs.pop(),0==e.close(b,c)?this.dialogs.push(e):(this.dialog=0<this.dialogs.length?this.dialogs[this.dialogs.length-1]:null,this.editor.fireEvent(new mxEventObject("hideDialog")),null==this.dialog&&"hidden"!=this.editor.graph.container.style.visibility&&window.setTimeout(mxUtils.bind(this,function(){this.editor.graph.isEditing()&&null!=this.editor.graph.cellEditor.textarea?
-this.editor.graph.cellEditor.textarea.focus():(mxUtils.clearSelection(),this.editor.graph.container.focus())}),0)))};EditorUi.prototype.ctrlEnter=function(){var b=this.editor.graph;if(b.isEnabled())try{for(var c=b.getSelectionCells(),e=new mxDictionary,k=[],g=0;g<c.length;g++){var p=b.isTableCell(c[g])?b.model.getParent(c[g]):c[g];null==p||e.get(p)||(e.put(p,!0),k.push(p))}b.setSelectionCells(b.duplicateCells(k,!1))}catch(t){this.handleError(t)}};
-EditorUi.prototype.pickColor=function(b,c){var e=this.editor.graph,k=e.cellEditor.saveSelection(),g=230+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12)),p=new ColorDialog(this,mxUtils.rgba2hex(b)||"none",function(b){e.cellEditor.restoreSelection(k);c(b)},function(){e.cellEditor.restoreSelection(k)});this.showDialog(p.container,230,g,!0,!1);p.init()};
+this.editor.graph.cellEditor.textarea.focus():(mxUtils.clearSelection(),this.editor.graph.container.focus())}),0)))};EditorUi.prototype.ctrlEnter=function(){var b=this.editor.graph;if(b.isEnabled())try{for(var c=b.getSelectionCells(),e=new mxDictionary,k=[],f=0;f<c.length;f++){var p=b.isTableCell(c[f])?b.model.getParent(c[f]):c[f];null==p||e.get(p)||(e.put(p,!0),k.push(p))}b.setSelectionCells(b.duplicateCells(k,!1))}catch(t){this.handleError(t)}};
+EditorUi.prototype.pickColor=function(b,c){var e=this.editor.graph,k=e.cellEditor.saveSelection(),f=230+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12)),p=new ColorDialog(this,mxUtils.rgba2hex(b)||"none",function(b){e.cellEditor.restoreSelection(k);c(b)},function(){e.cellEditor.restoreSelection(k)});this.showDialog(p.container,230,f,!0,!1);p.init()};
EditorUi.prototype.openFile=function(){window.openFile=new OpenFile(mxUtils.bind(this,function(b){this.hideDialog(b)}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:320,Editor.useLocalStorage?480:220,!0,!0,function(){window.openFile=null})};
-EditorUi.prototype.extractGraphModelFromHtml=function(b){var c=null;try{var e=b.indexOf("&lt;mxGraphModel ");if(0<=e){var k=b.lastIndexOf("&lt;/mxGraphModel&gt;");k>e&&(c=b.substring(e,k+21).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}}catch(g){}return c};
+EditorUi.prototype.extractGraphModelFromHtml=function(b){var c=null;try{var e=b.indexOf("&lt;mxGraphModel ");if(0<=e){var k=b.lastIndexOf("&lt;/mxGraphModel&gt;");k>e&&(c=b.substring(e,k+21).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}}catch(f){}return c};
EditorUi.prototype.readGraphModelFromClipboard=function(b){this.readGraphModelFromClipboardWithType(mxUtils.bind(this,function(c){null!=c?b(c):this.readGraphModelFromClipboardWithType(mxUtils.bind(this,function(c){if(null!=c){var e=decodeURIComponent(c);this.isCompatibleString(e)&&(c=e)}b(c)}),"text")}),"html")};
-EditorUi.prototype.readGraphModelFromClipboardWithType=function(b,c){navigator.clipboard.read().then(mxUtils.bind(this,function(e){if(null!=e&&0<e.length&&"html"==c&&0<=mxUtils.indexOf(e[0].types,"text/html"))e[0].getType("text/html").then(mxUtils.bind(this,function(c){c.text().then(mxUtils.bind(this,function(c){try{var e=this.parseHtmlData(c),g="text/plain"!=e.getAttribute("data-type")?e.innerHTML:mxUtils.trim(null==e.innerText?mxUtils.getTextContent(e):e.innerText);try{var d=g.lastIndexOf("%3E");
-0<=d&&d<g.length-3&&(g=g.substring(0,d+3))}catch(q){}try{var f=e.getElementsByTagName("span"),l=null!=f&&0<f.length?mxUtils.trim(decodeURIComponent(f[0].textContent)):decodeURIComponent(g);this.isCompatibleString(l)&&(g=l)}catch(q){}}catch(q){}b(this.isCompatibleString(g)?g:null)}))["catch"](function(c){b(null)})}))["catch"](function(c){b(null)});else if(null!=e&&0<e.length&&"text"==c&&0<=mxUtils.indexOf(e[0].types,"text/plain"))e[0].getType("text/plain").then(function(c){c.text().then(function(c){b(c)})["catch"](function(){b(null)})})["catch"](function(){b(null)});
+EditorUi.prototype.readGraphModelFromClipboardWithType=function(b,c){navigator.clipboard.read().then(mxUtils.bind(this,function(e){if(null!=e&&0<e.length&&"html"==c&&0<=mxUtils.indexOf(e[0].types,"text/html"))e[0].getType("text/html").then(mxUtils.bind(this,function(c){c.text().then(mxUtils.bind(this,function(c){try{var e=this.parseHtmlData(c),f="text/plain"!=e.getAttribute("data-type")?e.innerHTML:mxUtils.trim(null==e.innerText?mxUtils.getTextContent(e):e.innerText);try{var d=f.lastIndexOf("%3E");
+0<=d&&d<f.length-3&&(f=f.substring(0,d+3))}catch(q){}try{var g=e.getElementsByTagName("span"),l=null!=g&&0<g.length?mxUtils.trim(decodeURIComponent(g[0].textContent)):decodeURIComponent(f);this.isCompatibleString(l)&&(f=l)}catch(q){}}catch(q){}b(this.isCompatibleString(f)?f:null)}))["catch"](function(c){b(null)})}))["catch"](function(c){b(null)});else if(null!=e&&0<e.length&&"text"==c&&0<=mxUtils.indexOf(e[0].types,"text/plain"))e[0].getType("text/plain").then(function(c){c.text().then(function(c){b(c)})["catch"](function(){b(null)})})["catch"](function(){b(null)});
else b(null)}))["catch"](function(c){b(null)})};
EditorUi.prototype.parseHtmlData=function(b){var c=null;if(null!=b&&0<b.length){var e="<meta "==b.substring(0,6),c=document.createElement("div");c.innerHTML=(e?'<meta charset="utf-8">':"")+this.editor.graph.sanitizeHtml(b);asHtml=!0;b=c.getElementsByTagName("style");if(null!=b)for(;0<b.length;)b[0].parentNode.removeChild(b[0]);null!=c.firstChild&&c.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=c.firstChild.nextSibling&&c.firstChild.nextSibling.nodeType==mxConstants.NODETYPE_ELEMENT&&"META"==
c.firstChild.nodeName&&"A"==c.firstChild.nextSibling.nodeName&&null==c.firstChild.nextSibling.nextSibling&&(b=null==c.firstChild.nextSibling.innerText?mxUtils.getTextContent(c.firstChild.nextSibling):c.firstChild.nextSibling.innerText,b==c.firstChild.nextSibling.getAttribute("href")&&(mxUtils.setTextContent(c,b),asHtml=!1));e=e&&null!=c.firstChild?c.firstChild.nextSibling:c.firstChild;null!=e&&null==e.nextSibling&&e.nodeType==mxConstants.NODETYPE_ELEMENT&&"IMG"==e.nodeName?(b=e.getAttribute("src"),
@@ -2293,114 +2299,118 @@ EditorUi.prototype.extractGraphModelFromEvent=function(b){var c=null,e=null;null
(c=e);return c};EditorUi.prototype.isCompatibleString=function(b){return!1};EditorUi.prototype.saveFile=function(b){b||null==this.editor.filename?(b=new FilenameDialog(this,this.editor.getOrCreateFilename(),mxResources.get("save"),mxUtils.bind(this,function(b){this.save(b)}),null,mxUtils.bind(this,function(b){if(null!=b&&0<b.length)return!0;mxUtils.confirm(mxResources.get("invalidName"));return!1})),this.showDialog(b.container,300,100,!0,!0),b.init()):this.save(this.editor.getOrCreateFilename())};
EditorUi.prototype.save=function(b){if(null!=b){this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var c=mxUtils.getXml(this.editor.getGraphXml());try{if(Editor.useLocalStorage){if(null!=localStorage.getItem(b)&&!mxUtils.confirm(mxResources.get("replaceIt",[b])))return;localStorage.setItem(b,c);this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("saved"))+" "+new Date)}else if(c.length<MAX_REQUEST_SIZE)(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(b)+"&xml="+encodeURIComponent(c))).simulate(document,
"_blank");else{mxUtils.alert(mxResources.get("drawingTooLarge"));mxUtils.popup(c);return}this.editor.setModified(!1);this.editor.setFilename(b);this.updateDocumentTitle()}catch(e){this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("errorSavingFile")))}}};
-EditorUi.prototype.executeLayout=function(b,c,e){var k=this.editor.graph;if(k.isEnabled()){k.getModel().beginUpdate();try{b()}catch(g){throw g;}finally{this.allowAnimation&&c&&(null==navigator.userAgent||0>navigator.userAgent.indexOf("Camino"))?(b=new mxMorphing(k),b.addListener(mxEvent.DONE,mxUtils.bind(this,function(){k.getModel().endUpdate();null!=e&&e()})),b.startAnimation()):(k.getModel().endUpdate(),null!=e&&e())}}};
-EditorUi.prototype.showImageDialog=function(b,c,e,k){k=this.editor.graph.cellEditor;var g=k.saveSelection(),p=mxUtils.prompt(b,c);k.restoreSelection(g);if(null!=p&&0<p.length){var t=new Image;t.onload=function(){e(p,t.width,t.height)};t.onerror=function(){e(null);mxUtils.alert(mxResources.get("fileNotFound"))};t.src=p}else e(null)};EditorUi.prototype.showLinkDialog=function(b,c,e){b=new LinkDialog(this,b,c,e);this.showDialog(b.container,420,90,!0,!0);b.init()};
+EditorUi.prototype.executeLayout=function(b,c,e){var k=this.editor.graph;if(k.isEnabled()){k.getModel().beginUpdate();try{b()}catch(f){throw f;}finally{this.allowAnimation&&c&&(null==navigator.userAgent||0>navigator.userAgent.indexOf("Camino"))?(b=new mxMorphing(k),b.addListener(mxEvent.DONE,mxUtils.bind(this,function(){k.getModel().endUpdate();null!=e&&e()})),b.startAnimation()):(k.getModel().endUpdate(),null!=e&&e())}}};
+EditorUi.prototype.showImageDialog=function(b,c,e,k){k=this.editor.graph.cellEditor;var f=k.saveSelection(),p=mxUtils.prompt(b,c);k.restoreSelection(f);if(null!=p&&0<p.length){var t=new Image;t.onload=function(){e(p,t.width,t.height)};t.onerror=function(){e(null);mxUtils.alert(mxResources.get("fileNotFound"))};t.src=p}else e(null)};EditorUi.prototype.showLinkDialog=function(b,c,e){b=new LinkDialog(this,b,c,e);this.showDialog(b.container,420,90,!0,!0);b.init()};
EditorUi.prototype.showDataDialog=function(b){null!=b&&(b=new EditDataDialog(this,b),this.showDialog(b.container,480,420,!0,!1,null,!1),b.init())};
EditorUi.prototype.showBackgroundImageDialog=function(b,c){b=null!=b?b:mxUtils.bind(this,function(b){b=new ChangePageSetup(this,null,b);b.ignoreColor=!0;this.editor.graph.model.execute(b)});var e=mxUtils.prompt(mxResources.get("backgroundImage"),null!=c?c.src:"");null!=e&&0<e.length?(c=new Image,c.onload=function(){b(new mxImage(e,c.width,c.height),!1)},c.onerror=function(){b(null,!0);mxUtils.alert(mxResources.get("fileNotFound"))},c.src=e):b(null)};
EditorUi.prototype.setBackgroundImage=function(b){this.editor.graph.setBackgroundImage(b);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(b,c,e){mxUtils.confirm(b)?null!=c&&c():null!=e&&e()};EditorUi.prototype.createOutline=function(b){var c=new mxOutline(this.editor.graph);mxEvent.addListener(window,"resize",function(){c.update(!1)});return c};
EditorUi.prototype.altShiftActions={67:"clearWaypoints",65:"connectionArrows",76:"editLink",80:"connectionPoints",84:"editTooltip",86:"pasteSize",88:"copySize",66:"copyData",69:"pasteData"};
-EditorUi.prototype.createKeyHandler=function(b){function c(b,d,f){if(!k.isSelectionEmpty()&&k.isEnabled())if(d=null!=d?d:1,f){k.getModel().beginUpdate();try{var c=k.getSelectionCells();for(f=0;f<c.length;f++)if(k.getModel().isVertex(c[f])&&k.isCellResizable(c[f])){var e=k.getCellGeometry(c[f]);null!=e&&(e=e.clone(),37==b?e.width=Math.max(0,e.width-d):38==b?e.height=Math.max(0,e.height-d):39==b?e.width+=d:40==b&&(e.height+=d),k.getModel().setGeometry(c[f],e))}}finally{k.getModel().endUpdate()}}else{var c=
-k.getSelectionCell(),e=k.model.getParent(c),l=k.getView().scale;f=null;1==k.getSelectionCount()&&k.model.isVertex(c)&&null!=k.layoutManager&&!k.isCellLocked(c)&&(f=k.layoutManager.getLayout(e));if(null!=f&&f.constructor==mxStackLayout)d=e.getIndex(c),37==b||38==b?k.model.add(e,c,Math.max(0,d-1)):39!=b&&40!=b||k.model.add(e,c,Math.min(k.model.getChildCount(e),d+1));else{var g=k.graphHandler;null!=g&&(null==g.first&&g.start(k.getSelectionCell(),0,0,k.getSelectionCells()),null!=g.first&&(e=c=0,37==b?
-c=-d:38==b?e=-d:39==b?c=d:40==b&&(e=d),g.currentDx+=c*l,g.currentDy+=e*l,g.checkPreview(),g.updatePreview()),null!=t&&window.clearTimeout(t),t=window.setTimeout(function(){if(null!=g.first){var b=g.roundLength(g.currentDx/l),d=g.roundLength(g.currentDy/l);g.moveCells(g.cells,b,d);g.reset()}},400))}}}var e=this,k=this.editor.graph,g=new mxKeyHandler(k),p=g.isEventIgnored;g.isEventIgnored=function(b){return!(mxEvent.isShiftDown(b)&&9==b.keyCode)&&(!this.isControlDown(b)||mxEvent.isShiftDown(b)||90!=
-b.keyCode&&89!=b.keyCode&&188!=b.keyCode&&190!=b.keyCode&&85!=b.keyCode)&&(66!=b.keyCode&&73!=b.keyCode||!this.isControlDown(b)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&&!mxClient.IS_SF)&&p.apply(this,arguments)};g.isEnabledForEvent=function(b){return!mxEvent.isConsumed(b)&&this.isGraphEvent(b)&&this.isEnabled()&&(null==e.dialogs||0==e.dialogs.length)};g.isControlDown=function(b){return mxEvent.isControlDown(b)||mxClient.IS_MAC&&b.metaKey};var t=null,d={37:mxConstants.DIRECTION_WEST,
-38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},f=g.getFunction;mxKeyHandler.prototype.getFunction=function(b){if(k.isEnabled()){if(mxEvent.isShiftDown(b)&&mxEvent.isAltDown(b)){var l=e.actions.get(e.altShiftActions[b.keyCode]);if(null!=l)return l.funct}if(null!=d[b.keyCode]&&!k.isSelectionEmpty())if(!this.isControlDown(b)&&mxEvent.isShiftDown(b)&&mxEvent.isAltDown(b)){if(k.model.isVertex(k.getSelectionCell()))return function(){var f=k.connectVertex(k.getSelectionCell(),
-d[b.keyCode],k.defaultEdgeLength,b,!0);null!=f&&0<f.length&&(1==f.length&&k.model.isEdge(f[0])?k.setSelectionCell(k.model.getTerminal(f[0],!1)):k.setSelectionCell(f[f.length-1]),k.scrollCellToVisible(k.getSelectionCell()),null!=e.hoverIcons&&e.hoverIcons.update(k.view.getState(k.getSelectionCell())))}}else return this.isControlDown(b)?function(){c(b.keyCode,mxEvent.isShiftDown(b)?k.gridSize:null,!0)}:function(){c(b.keyCode,mxEvent.isShiftDown(b)?k.gridSize:null)}}return f.apply(this,arguments)};g.bindAction=
-mxUtils.bind(this,function(b,d,f,c){var e=this.actions.get(f);null!=e&&(f=function(){e.isEnabled()&&e.funct()},d?c?g.bindControlShiftKey(b,f):g.bindControlKey(b,f):c?g.bindShiftKey(b,f):g.bindKey(b,f))});var l=this,q=g.escape;g.escape=function(b){q.apply(this,arguments)};g.enter=function(){};g.bindControlShiftKey(36,function(){k.exitGroup()});g.bindControlShiftKey(35,function(){k.enterGroup()});g.bindShiftKey(36,function(){k.home()});g.bindKey(35,function(){k.refresh()});g.bindAction(107,!0,"zoomIn");
-g.bindAction(109,!0,"zoomOut");g.bindAction(80,!0,"print");g.bindAction(79,!0,"outline",!0);if(!this.editor.chromeless||this.editor.editable)g.bindControlKey(36,function(){k.isEnabled()&&k.foldCells(!0)}),g.bindControlKey(35,function(){k.isEnabled()&&k.foldCells(!1)}),g.bindControlKey(13,function(){l.ctrlEnter()}),g.bindAction(8,!1,"delete"),g.bindAction(8,!0,"deleteAll"),g.bindAction(8,!1,"deleteLabels",!0),g.bindAction(46,!1,"delete"),g.bindAction(46,!0,"deleteAll"),g.bindAction(46,!1,"deleteLabels",
-!0),g.bindAction(36,!1,"resetView"),g.bindAction(72,!0,"fitWindow",!0),g.bindAction(74,!0,"fitPage"),g.bindAction(74,!0,"fitTwoPages",!0),g.bindAction(48,!0,"customZoom"),g.bindAction(82,!0,"turn"),g.bindAction(82,!0,"clearDefaultStyle",!0),g.bindAction(83,!0,"save"),g.bindAction(83,!0,"saveAs",!0),g.bindAction(65,!0,"selectAll"),g.bindAction(65,!0,"selectNone",!0),g.bindAction(73,!0,"selectVertices",!0),g.bindAction(69,!0,"selectEdges",!0),g.bindAction(69,!0,"editStyle"),g.bindAction(66,!0,"bold"),
-g.bindAction(66,!0,"toBack",!0),g.bindAction(70,!0,"toFront",!0),g.bindAction(68,!0,"duplicate"),g.bindAction(68,!0,"setAsDefaultStyle",!0),g.bindAction(90,!0,"undo"),g.bindAction(89,!0,"autosize",!0),g.bindAction(88,!0,"cut"),g.bindAction(67,!0,"copy"),g.bindAction(86,!0,"paste"),g.bindAction(71,!0,"group"),g.bindAction(77,!0,"editData"),g.bindAction(71,!0,"grid",!0),g.bindAction(73,!0,"italic"),g.bindAction(76,!0,"lockUnlock"),g.bindAction(76,!0,"layers",!0),g.bindAction(80,!0,"formatPanel",!0),
-g.bindAction(85,!0,"underline"),g.bindAction(85,!0,"ungroup",!0),g.bindAction(190,!0,"superscript"),g.bindAction(188,!0,"subscript"),g.bindAction(13,!1,"keyPressEnter"),g.bindKey(113,function(){k.isEnabled()&&k.startEditingAtCell()});mxClient.IS_WIN?g.bindAction(89,!0,"redo"):g.bindAction(90,!0,"redo",!0);return g};
-EditorUi.prototype.destroy=function(){null!=this.editor&&(this.editor.destroy(),this.editor=null);null!=this.menubar&&(this.menubar.destroy(),this.menubar=null);null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null);null!=this.sidebar&&(this.sidebar.destroy(),this.sidebar=null);null!=this.keyHandler&&(this.keyHandler.destroy(),this.keyHandler=null);null!=this.keydownHandler&&(mxEvent.removeListener(document,"keydown",this.keydownHandler),this.keydownHandler=null);null!=this.keyupHandler&&
-(mxEvent.removeListener(document,"keyup",this.keyupHandler),this.keyupHandler=null);null!=this.resizeHandler&&(mxEvent.removeListener(window,"resize",this.resizeHandler),this.resizeHandler=null);null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null);null!=this.orientationChangeHandler&&(mxEvent.removeListener(window,"orientationchange",this.orientationChangeHandler),this.orientationChangeHandler=null);null!=this.scrollHandler&&(mxEvent.removeListener(window,
-"scroll",this.scrollHandler),this.scrollHandler=null);if(null!=this.destroyFunctions){for(var b=0;b<this.destroyFunctions.length;b++)this.destroyFunctions[b]();this.destroyFunctions=null}for(var c=[this.menubarContainer,this.toolbarContainer,this.sidebarContainer,this.formatContainer,this.diagramContainer,this.footerContainer,this.chromelessToolbar,this.hsplit,this.sidebarFooterContainer,this.layersDialog],b=0;b<c.length;b++)null!=c[b]&&null!=c[b].parentNode&&c[b].parentNode.removeChild(c[b])};"undefined"!==typeof html4&&(html4.ATTRIBS["a::target"]=0,html4.ATTRIBS["source::src"]=0,html4.ATTRIBS["video::src"]=0);(function(){var b=[["nbsp","160"],["shy","173"]],c=mxUtils.parseXml;mxUtils.parseXml=function(e){for(var k=0;k<b.length;k++)e=e.replace(new RegExp("&"+b[k][0]+";","g"),"&#"+b[k][1]+";");return c(e)}})();
+EditorUi.prototype.createKeyHandler=function(b){function c(b,d,g){if(!k.isSelectionEmpty()&&k.isEnabled())if(d=null!=d?d:1,g){k.getModel().beginUpdate();try{var c=k.getSelectionCells();for(g=0;g<c.length;g++)if(k.getModel().isVertex(c[g])&&k.isCellResizable(c[g])){var e=k.getCellGeometry(c[g]);null!=e&&(e=e.clone(),37==b?e.width=Math.max(0,e.width-d):38==b?e.height=Math.max(0,e.height-d):39==b?e.width+=d:40==b&&(e.height+=d),k.getModel().setGeometry(c[g],e))}}finally{k.getModel().endUpdate()}}else{var c=
+k.getSelectionCell(),e=k.model.getParent(c),l=k.getView().scale;g=null;1==k.getSelectionCount()&&k.model.isVertex(c)&&null!=k.layoutManager&&!k.isCellLocked(c)&&(g=k.layoutManager.getLayout(e));if(null!=g&&g.constructor==mxStackLayout)d=e.getIndex(c),37==b||38==b?k.model.add(e,c,Math.max(0,d-1)):39!=b&&40!=b||k.model.add(e,c,Math.min(k.model.getChildCount(e),d+1));else{var f=k.graphHandler;null!=f&&(null==f.first&&f.start(k.getSelectionCell(),0,0,k.getSelectionCells()),null!=f.first&&(e=c=0,37==b?
+c=-d:38==b?e=-d:39==b?c=d:40==b&&(e=d),f.currentDx+=c*l,f.currentDy+=e*l,f.checkPreview(),f.updatePreview()),null!=t&&window.clearTimeout(t),t=window.setTimeout(function(){if(null!=f.first){var b=f.roundLength(f.currentDx/l),d=f.roundLength(f.currentDy/l);f.moveCells(f.cells,b,d);f.reset()}},400))}}}var e=this,k=this.editor.graph,f=new mxKeyHandler(k),p=f.isEventIgnored;f.isEventIgnored=function(b){return!(mxEvent.isShiftDown(b)&&9==b.keyCode)&&(!this.isControlDown(b)||mxEvent.isShiftDown(b)||90!=
+b.keyCode&&89!=b.keyCode&&188!=b.keyCode&&190!=b.keyCode&&85!=b.keyCode)&&(66!=b.keyCode&&73!=b.keyCode||!this.isControlDown(b)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&&!mxClient.IS_SF)&&p.apply(this,arguments)};f.isEnabledForEvent=function(b){return!mxEvent.isConsumed(b)&&this.isGraphEvent(b)&&this.isEnabled()&&(null==e.dialogs||0==e.dialogs.length)};f.isControlDown=function(b){return mxEvent.isControlDown(b)||mxClient.IS_MAC&&b.metaKey};var t=null,d={37:mxConstants.DIRECTION_WEST,
+38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},g=f.getFunction;mxKeyHandler.prototype.getFunction=function(b){if(k.isEnabled()){if(mxEvent.isShiftDown(b)&&mxEvent.isAltDown(b)){var l=e.actions.get(e.altShiftActions[b.keyCode]);if(null!=l)return l.funct}if(null!=d[b.keyCode]&&!k.isSelectionEmpty())if(!this.isControlDown(b)&&mxEvent.isShiftDown(b)&&mxEvent.isAltDown(b)){if(k.model.isVertex(k.getSelectionCell()))return function(){var g=k.connectVertex(k.getSelectionCell(),
+d[b.keyCode],k.defaultEdgeLength,b,!0);null!=g&&0<g.length&&(1==g.length&&k.model.isEdge(g[0])?k.setSelectionCell(k.model.getTerminal(g[0],!1)):k.setSelectionCell(g[g.length-1]),k.scrollCellToVisible(k.getSelectionCell()),null!=e.hoverIcons&&e.hoverIcons.update(k.view.getState(k.getSelectionCell())))}}else return this.isControlDown(b)?function(){c(b.keyCode,mxEvent.isShiftDown(b)?k.gridSize:null,!0)}:function(){c(b.keyCode,mxEvent.isShiftDown(b)?k.gridSize:null)}}return g.apply(this,arguments)};f.bindAction=
+mxUtils.bind(this,function(b,d,g,c){var e=this.actions.get(g);null!=e&&(g=function(){e.isEnabled()&&e.funct()},d?c?f.bindControlShiftKey(b,g):f.bindControlKey(b,g):c?f.bindShiftKey(b,g):f.bindKey(b,g))});var l=this,q=f.escape;f.escape=function(b){q.apply(this,arguments)};f.enter=function(){};f.bindControlShiftKey(36,function(){k.exitGroup()});f.bindControlShiftKey(35,function(){k.enterGroup()});f.bindShiftKey(36,function(){k.home()});f.bindKey(35,function(){k.refresh()});f.bindAction(107,!0,"zoomIn");
+f.bindAction(109,!0,"zoomOut");f.bindAction(80,!0,"print");f.bindAction(79,!0,"outline",!0);if(!this.editor.chromeless||this.editor.editable)f.bindControlKey(36,function(){k.isEnabled()&&k.foldCells(!0)}),f.bindControlKey(35,function(){k.isEnabled()&&k.foldCells(!1)}),f.bindControlKey(13,function(){l.ctrlEnter()}),f.bindAction(8,!1,"delete"),f.bindAction(8,!0,"deleteAll"),f.bindAction(8,!1,"deleteLabels",!0),f.bindAction(46,!1,"delete"),f.bindAction(46,!0,"deleteAll"),f.bindAction(46,!1,"deleteLabels",
+!0),f.bindAction(36,!1,"resetView"),f.bindAction(72,!0,"fitWindow",!0),f.bindAction(74,!0,"fitPage"),f.bindAction(74,!0,"fitTwoPages",!0),f.bindAction(48,!0,"customZoom"),f.bindAction(82,!0,"turn"),f.bindAction(82,!0,"clearDefaultStyle",!0),f.bindAction(83,!0,"save"),f.bindAction(83,!0,"saveAs",!0),f.bindAction(65,!0,"selectAll"),f.bindAction(65,!0,"selectNone",!0),f.bindAction(73,!0,"selectVertices",!0),f.bindAction(69,!0,"selectEdges",!0),f.bindAction(69,!0,"editStyle"),f.bindAction(66,!0,"bold"),
+f.bindAction(66,!0,"toBack",!0),f.bindAction(70,!0,"toFront",!0),f.bindAction(68,!0,"duplicate"),f.bindAction(68,!0,"setAsDefaultStyle",!0),f.bindAction(90,!0,"undo"),f.bindAction(89,!0,"autosize",!0),f.bindAction(88,!0,"cut"),f.bindAction(67,!0,"copy"),f.bindAction(86,!0,"paste"),f.bindAction(71,!0,"group"),f.bindAction(77,!0,"editData"),f.bindAction(71,!0,"grid",!0),f.bindAction(73,!0,"italic"),f.bindAction(76,!0,"lockUnlock"),f.bindAction(76,!0,"layers",!0),f.bindAction(80,!0,"formatPanel",!0),
+f.bindAction(85,!0,"underline"),f.bindAction(85,!0,"ungroup",!0),f.bindAction(190,!0,"superscript"),f.bindAction(188,!0,"subscript"),f.bindAction(13,!1,"keyPressEnter"),f.bindKey(113,function(){k.isEnabled()&&k.startEditingAtCell()});mxClient.IS_WIN?f.bindAction(89,!0,"redo"):f.bindAction(90,!0,"redo",!0);return f};
+EditorUi.prototype.destroy=function(){var b=this.editor.graph;null!=b&&null!=this.selectionStateListener&&(b.getSelectionModel().removeListener(mxEvent.CHANGE,this.selectionStateListener),b.getModel().removeListener(mxEvent.CHANGE,this.selectionStateListener),b.removeListener(mxEvent.EDITING_STARTED,this.selectionStateListener),b.removeListener(mxEvent.EDITING_STOPPED,this.selectionStateListener),b.getView().removeListener("unitChanged",this.selectionStateListener),this.selectionStateListener=null);
+null!=this.editor&&(this.editor.destroy(),this.editor=null);null!=this.menubar&&(this.menubar.destroy(),this.menubar=null);null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null);null!=this.sidebar&&(this.sidebar.destroy(),this.sidebar=null);null!=this.keyHandler&&(this.keyHandler.destroy(),this.keyHandler=null);null!=this.keydownHandler&&(mxEvent.removeListener(document,"keydown",this.keydownHandler),this.keydownHandler=null);null!=this.keyupHandler&&(mxEvent.removeListener(document,"keyup",
+this.keyupHandler),this.keyupHandler=null);null!=this.resizeHandler&&(mxEvent.removeListener(window,"resize",this.resizeHandler),this.resizeHandler=null);null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null);null!=this.orientationChangeHandler&&(mxEvent.removeListener(window,"orientationchange",this.orientationChangeHandler),this.orientationChangeHandler=null);null!=this.scrollHandler&&(mxEvent.removeListener(window,"scroll",this.scrollHandler),
+this.scrollHandler=null);if(null!=this.destroyFunctions){for(b=0;b<this.destroyFunctions.length;b++)this.destroyFunctions[b]();this.destroyFunctions=null}for(var c=[this.menubarContainer,this.toolbarContainer,this.sidebarContainer,this.formatContainer,this.diagramContainer,this.footerContainer,this.chromelessToolbar,this.hsplit,this.sidebarFooterContainer,this.layersDialog],b=0;b<c.length;b++)null!=c[b]&&null!=c[b].parentNode&&c[b].parentNode.removeChild(c[b])};"undefined"!==typeof html4&&(html4.ATTRIBS["a::target"]=0,html4.ATTRIBS["source::src"]=0,html4.ATTRIBS["video::src"]=0);(function(){var b=[["nbsp","160"],["shy","173"]],c=mxUtils.parseXml;mxUtils.parseXml=function(e){for(var k=0;k<b.length;k++)e=e.replace(new RegExp("&"+b[k][0]+";","g"),"&#"+b[k][1]+";");return c(e)}})();
Date.prototype.toISOString||function(){function b(b){b=String(b);1===b.length&&(b="0"+b);return b}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+b(this.getUTCMonth()+1)+"-"+b(this.getUTCDate())+"T"+b(this.getUTCHours())+":"+b(this.getUTCMinutes())+":"+b(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}}();Date.now||(Date.now=function(){return(new Date).getTime()});
-Uint8Array.from||(Uint8Array.from=function(){var b=Object.prototype.toString,c=function(c){return"function"===typeof c||"[object Function]"===b.call(c)},e=Math.pow(2,53)-1;return function(b){var g=Object(b);if(null==b)throw new TypeError("Array.from requires an array-like object - not null or undefined");var k=1<arguments.length?arguments[1]:void 0,t;if("undefined"!==typeof k){if(!c(k))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(t=
-arguments[2])}var d;d=Number(g.length);d=isNaN(d)?0:0!==d&&isFinite(d)?(0<d?1:-1)*Math.floor(Math.abs(d)):d;d=Math.min(Math.max(d,0),e);for(var f=c(this)?Object(new this(d)):Array(d),l=0,q;l<d;)q=g[l],f[l]=k?"undefined"===typeof t?k(q,l):k.call(t,q,l):q,l+=1;f.length=d;return f}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
+Uint8Array.from||(Uint8Array.from=function(){var b=Object.prototype.toString,c=function(c){return"function"===typeof c||"[object Function]"===b.call(c)},e=Math.pow(2,53)-1;return function(b){var f=Object(b);if(null==b)throw new TypeError("Array.from requires an array-like object - not null or undefined");var k=1<arguments.length?arguments[1]:void 0,t;if("undefined"!==typeof k){if(!c(k))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(t=
+arguments[2])}var d;d=Number(f.length);d=isNaN(d)?0:0!==d&&isFinite(d)?(0<d?1:-1)*Math.floor(Math.abs(d)):d;d=Math.min(Math.max(d,0),e);for(var g=c(this)?Object(new this(d)):Array(d),l=0,q;l<d;)q=f[l],g[l]=k?"undefined"===typeof t?k(q,l):k.call(t,q,l):q,l+=1;g.length=d;return g}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var b=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===b||"en-ca"===b||"es-mx"===b?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(c){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;
mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;mxGraphView.prototype.unit=mxConstants.POINTS;
mxGraphView.prototype.setUnit=function(b){this.unit!=b&&(this.unit=b,this.fireEvent(new mxEventObject("unitChanged","unit",b)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(b,c,e){return null};
mxImageShape.prototype.getImageDataUri=function(){var b=this.image;if("data:image/svg+xml;base64,"==b.substring(0,26)&&null!=this.style&&"1"==mxUtils.getValue(this.style,"clipSvg","0")){if(null==this.clippedSvg||this.clippedImage!=b)this.clippedSvg=Graph.clipSvgDataUri(b,!0),this.clippedImage=b;b=this.clippedSvg}return b};
-Graph=function(b,c,e,k,g,p){mxGraph.call(this,b,c,e,k);this.themes=g||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=p?p:!1;b=this.baseUrl;c=b.indexOf("//");this.domainPathUrl=this.domainUrl="";0<c&&(c=b.indexOf("/",c+2),0<c&&(this.domainUrl=b.substring(0,c)),c=b.lastIndexOf("/"),0<c&&(this.domainPathUrl=b.substring(0,c+1)));this.isHtmlLabel=function(b){b=this.getCurrentCellStyle(b);
-return null!=b?"1"==b.html||"wrap"==b[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var t=null,d=null,f=null,l=null,q=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,c){if("mouseDown"==c.getProperty("eventName")&&this.isEnabled()){var e=c.getProperty("event"),g=e.getState(),k=this.view.scale;if(!mxEvent.isAltDown(e.getEvent())&&null!=g)if(this.model.isEdge(g.cell))if(t=new mxPoint(e.getGraphX(),e.getGraphY()),q=this.isCellSelected(g.cell),f=g,d=e,null!=g.text&&null!=
-g.text.boundingBox&&mxUtils.contains(g.text.boundingBox,e.getGraphX(),e.getGraphY()))l=mxEvent.LABEL_HANDLE;else{var m=this.selectionCellsHandler.getHandler(g.cell);null!=m&&null!=m.bends&&0<m.bends.length&&(l=m.getHandleForEvent(e))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(e.getEvent())&&(m=this.selectionCellsHandler.getHandler(g.cell),null==m||null==m.getHandleForEvent(e))){var n=new mxRectangle(e.getGraphX()-1,e.getGraphY()-1);n.grow(mxEvent.isTouchEvent(e.getEvent())?mxShape.prototype.svgStrokeTolerance-
-1:(mxShape.prototype.svgStrokeTolerance+1)/2);if(this.isTableCell(g.cell)&&!this.isCellSelected(g.cell)){var v=this.model.getParent(g.cell),m=this.model.getParent(v);if(!this.isCellSelected(m)){var u=this.getCellGeometry(g.cell),u=null!=u.alternateBounds?u.alternateBounds:u;if(mxUtils.intersects(n,new mxRectangle(g.x,g.y-2,u.width*k,3))&&this.model.getChildAt(m,0)!=v||mxUtils.intersects(n,new mxRectangle(g.x,g.y+u.height-2,u.width,3))||mxUtils.intersects(n,new mxRectangle(g.x-2,g.y,2,u.height*k))&&
-this.model.getChildAt(v,0)!=g.cell||mxUtils.intersects(n,new mxRectangle(g.x+u.width*k-2,g.y,2,u.height*k)))v=this.selectionCellsHandler.isHandled(m),this.selectCellForEvent(m,e.getEvent()),m=this.selectionCellsHandler.getHandler(m),null!=m&&(u=m.getHandleForEvent(e),null!=u&&(m.start(e.getGraphX(),e.getGraphY(),u),m.blockDelayedSelection=!v,e.consume()))}}for(;!e.isConsumed()&&null!=g&&(this.isTableCell(g.cell)||this.isTableRow(g.cell)||this.isTable(g.cell));)this.isSwimlane(g.cell)&&(m=this.getActualStartSize(g.cell),
-(0<m.x||0<m.width)&&mxUtils.intersects(n,new mxRectangle(g.x+(m.x-m.width-1)*k+(0==m.x?g.width:0),g.y,1,g.height))||(0<m.y||0<m.height)&&mxUtils.intersects(n,new mxRectangle(g.x,g.y+(m.y-m.height-1)*k+(0==m.y?g.height:0),g.width,1)))&&(this.selectCellForEvent(g.cell,e.getEvent()),m=this.selectionCellsHandler.getHandler(g.cell),null!=m&&(u=mxEvent.CUSTOM_HANDLE-m.customHandles.length+1,m.start(e.getGraphX(),e.getGraphY(),u),e.consume())),g=this.view.getState(this.model.getParent(g.cell))}}}));this.addMouseListener({mouseDown:function(b,
-d){},mouseMove:mxUtils.bind(this,function(b,c){var e=this.selectionCellsHandler.handlers.map,g;for(g in e)if(null!=e[g].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(c.getEvent()))if(g=this.tolerance,null!=t&&null!=f&&null!=d){if(e=f,Math.abs(t.x-c.getGraphX())>g||Math.abs(t.y-c.getGraphY())>g){var k=this.selectionCellsHandler.getHandler(e.cell);null==k&&this.model.isEdge(e.cell)&&(k=this.createHandler(e));if(null!=k&&null!=k.bends&&0<k.bends.length){g=k.getHandleForEvent(d);
-var m=this.view.getEdgeStyle(e),n=m==mxEdgeStyle.EntityRelation;q||l!=mxEvent.LABEL_HANDLE||(g=l);if(n&&0!=g&&g!=k.bends.length-1&&g!=mxEvent.LABEL_HANDLE)!n||null==e.visibleSourceState&&null==e.visibleTargetState||(this.graphHandler.reset(),c.consume());else if(g==mxEvent.LABEL_HANDLE||0==g||null!=e.visibleSourceState||g==k.bends.length-1||null!=e.visibleTargetState)n||g==mxEvent.LABEL_HANDLE||(n=e.absolutePoints,null!=n&&(null==m&&null==g||m==mxEdgeStyle.OrthConnector)&&(g=l,null==g&&(g=new mxRectangle(t.x,
-t.y),g.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(g,n[0].x,n[0].y)?g=0:mxUtils.contains(g,n[n.length-1].x,n[n.length-1].y)?g=k.bends.length-1:null!=m&&(2==n.length||3==n.length&&(0==Math.round(n[0].x-n[1].x)&&0==Math.round(n[1].x-n[2].x)||0==Math.round(n[0].y-n[1].y)&&0==Math.round(n[1].y-n[2].y)))?g=2:(g=mxUtils.findNearestSegment(e,t.x,t.y),g=null==m?mxEvent.VIRTUAL_HANDLE-g:g+1))),null==g&&(g=mxEvent.VIRTUAL_HANDLE)),k.start(c.getGraphX(),c.getGraphX(),g),c.consume(),this.graphHandler.reset()}null!=
-k&&(this.selectionCellsHandler.isHandlerActive(k)?this.isCellSelected(e.cell)||(this.selectionCellsHandler.handlers.put(e.cell,k),this.selectCellForEvent(e.cell,c.getEvent())):this.isCellSelected(e.cell)||k.destroy());q=!1;t=d=f=l=null}}else if(e=c.getState(),null!=e&&this.isCellEditable(e.cell)){k=null;if(this.model.isEdge(e.cell)){if(g=new mxRectangle(c.getGraphX(),c.getGraphY()),g.grow(mxEdgeHandler.prototype.handleImage.width/2),n=e.absolutePoints,null!=n)if(null!=e.text&&null!=e.text.boundingBox&&
-mxUtils.contains(e.text.boundingBox,c.getGraphX(),c.getGraphY()))k="move";else if(mxUtils.contains(g,n[0].x,n[0].y)||mxUtils.contains(g,n[n.length-1].x,n[n.length-1].y))k="pointer";else if(null!=e.visibleSourceState||null!=e.visibleTargetState)g=this.view.getEdgeStyle(e),k="crosshair",g!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(e)&&(g=mxUtils.findNearestSegment(e,c.getGraphX(),c.getGraphY()),g<n.length-1&&0<=g&&(k=0==Math.round(n[g].x-n[g+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(c.getEvent())){g=
-new mxRectangle(c.getGraphX()-1,c.getGraphY()-1);g.grow(mxShape.prototype.svgStrokeTolerance/2);if(this.isTableCell(e.cell)&&(n=this.model.getParent(e.cell),m=this.model.getParent(n),!this.isCellSelected(m)))if(mxUtils.intersects(g,new mxRectangle(e.x-2,e.y,2,e.height))&&this.model.getChildAt(n,0)!=e.cell||mxUtils.intersects(g,new mxRectangle(e.x+e.width-2,e.y,2,e.height)))k="col-resize";else if(mxUtils.intersects(g,new mxRectangle(e.x,e.y-2,e.width,3))&&this.model.getChildAt(m,0)!=n||mxUtils.intersects(g,
-new mxRectangle(e.x,e.y+e.height-2,e.width,3)))k="row-resize";for(n=e;null==k&&null!=n&&(this.isTableCell(n.cell)||this.isTableRow(n.cell)||this.isTable(n.cell));){if(this.isSwimlane(n.cell)){var m=this.getActualStartSize(n.cell),v=this.view.scale;(0<m.x||0<m.width)&&mxUtils.intersects(g,new mxRectangle(n.x+(m.x-m.width-1)*v+(0==m.x?n.width*v:0),n.y,1,n.height))?k="col-resize":(0<m.y||0<m.height)&&mxUtils.intersects(g,new mxRectangle(n.x,n.y+(m.y-m.height-1)*v+(0==m.y?n.height:0),n.width,1))&&(k=
-"row-resize")}n=this.view.getState(this.model.getParent(n.cell))}}null!=k&&e.setCursor(k)}}),mouseUp:mxUtils.bind(this,function(b,c){l=t=d=f=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(b){var d=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);b.view.graph.isHtmlLabel(b.cell)&&(d=1!=b.style.html?mxUtils.htmlEntities(d,!1):b.view.graph.sanitizeHtml(d));return d};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);
+Graph=function(b,c,e,k,f,p){mxGraph.call(this,b,c,e,k);this.themes=f||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=p?p:!1;b=this.baseUrl;c=b.indexOf("//");this.domainPathUrl=this.domainUrl="";0<c&&(c=b.indexOf("/",c+2),0<c&&(this.domainUrl=b.substring(0,c)),c=b.lastIndexOf("/"),0<c&&(this.domainPathUrl=b.substring(0,c+1)));this.isHtmlLabel=function(b){b=this.getCurrentCellStyle(b);
+return null!=b?"1"==b.html||"wrap"==b[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var t=null,d=null,g=null,l=null,q=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,c){if("mouseDown"==c.getProperty("eventName")&&this.isEnabled()){var e=c.getProperty("event"),f=e.getState(),k=this.view.scale;if(!mxEvent.isAltDown(e.getEvent())&&null!=f)if(this.model.isEdge(f.cell))if(t=new mxPoint(e.getGraphX(),e.getGraphY()),q=this.isCellSelected(f.cell),g=f,d=e,null!=f.text&&null!=
+f.text.boundingBox&&mxUtils.contains(f.text.boundingBox,e.getGraphX(),e.getGraphY()))l=mxEvent.LABEL_HANDLE;else{var m=this.selectionCellsHandler.getHandler(f.cell);null!=m&&null!=m.bends&&0<m.bends.length&&(l=m.getHandleForEvent(e))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(e.getEvent())&&(m=this.selectionCellsHandler.getHandler(f.cell),null==m||null==m.getHandleForEvent(e))){var n=new mxRectangle(e.getGraphX()-1,e.getGraphY()-1);n.grow(mxEvent.isTouchEvent(e.getEvent())?mxShape.prototype.svgStrokeTolerance-
+1:(mxShape.prototype.svgStrokeTolerance+1)/2);if(this.isTableCell(f.cell)&&!this.isCellSelected(f.cell)){var v=this.model.getParent(f.cell),m=this.model.getParent(v);if(!this.isCellSelected(m)){var u=this.getCellGeometry(f.cell),u=null!=u.alternateBounds?u.alternateBounds:u;if(mxUtils.intersects(n,new mxRectangle(f.x,f.y-2,u.width*k,3))&&this.model.getChildAt(m,0)!=v||mxUtils.intersects(n,new mxRectangle(f.x,f.y+u.height-2,u.width,3))||mxUtils.intersects(n,new mxRectangle(f.x-2,f.y,2,u.height*k))&&
+this.model.getChildAt(v,0)!=f.cell||mxUtils.intersects(n,new mxRectangle(f.x+u.width*k-2,f.y,2,u.height*k)))v=this.selectionCellsHandler.isHandled(m),this.selectCellForEvent(m,e.getEvent()),m=this.selectionCellsHandler.getHandler(m),null!=m&&(u=m.getHandleForEvent(e),null!=u&&(m.start(e.getGraphX(),e.getGraphY(),u),m.blockDelayedSelection=!v,e.consume()))}}for(;!e.isConsumed()&&null!=f&&(this.isTableCell(f.cell)||this.isTableRow(f.cell)||this.isTable(f.cell));)this.isSwimlane(f.cell)&&(m=this.getActualStartSize(f.cell),
+(0<m.x||0<m.width)&&mxUtils.intersects(n,new mxRectangle(f.x+(m.x-m.width-1)*k+(0==m.x?f.width:0),f.y,1,f.height))||(0<m.y||0<m.height)&&mxUtils.intersects(n,new mxRectangle(f.x,f.y+(m.y-m.height-1)*k+(0==m.y?f.height:0),f.width,1)))&&(this.selectCellForEvent(f.cell,e.getEvent()),m=this.selectionCellsHandler.getHandler(f.cell),null!=m&&(u=mxEvent.CUSTOM_HANDLE-m.customHandles.length+1,m.start(e.getGraphX(),e.getGraphY(),u),e.consume())),f=this.view.getState(this.model.getParent(f.cell))}}}));this.addMouseListener({mouseDown:function(b,
+d){},mouseMove:mxUtils.bind(this,function(b,c){var e=this.selectionCellsHandler.handlers.map,f;for(f in e)if(null!=e[f].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(c.getEvent()))if(f=this.tolerance,null!=t&&null!=g&&null!=d){if(e=g,Math.abs(t.x-c.getGraphX())>f||Math.abs(t.y-c.getGraphY())>f){var k=this.selectionCellsHandler.getHandler(e.cell);null==k&&this.model.isEdge(e.cell)&&(k=this.createHandler(e));if(null!=k&&null!=k.bends&&0<k.bends.length){f=k.getHandleForEvent(d);
+var m=this.view.getEdgeStyle(e),n=m==mxEdgeStyle.EntityRelation;q||l!=mxEvent.LABEL_HANDLE||(f=l);if(n&&0!=f&&f!=k.bends.length-1&&f!=mxEvent.LABEL_HANDLE)!n||null==e.visibleSourceState&&null==e.visibleTargetState||(this.graphHandler.reset(),c.consume());else if(f==mxEvent.LABEL_HANDLE||0==f||null!=e.visibleSourceState||f==k.bends.length-1||null!=e.visibleTargetState)n||f==mxEvent.LABEL_HANDLE||(n=e.absolutePoints,null!=n&&(null==m&&null==f||m==mxEdgeStyle.OrthConnector)&&(f=l,null==f&&(f=new mxRectangle(t.x,
+t.y),f.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(f,n[0].x,n[0].y)?f=0:mxUtils.contains(f,n[n.length-1].x,n[n.length-1].y)?f=k.bends.length-1:null!=m&&(2==n.length||3==n.length&&(0==Math.round(n[0].x-n[1].x)&&0==Math.round(n[1].x-n[2].x)||0==Math.round(n[0].y-n[1].y)&&0==Math.round(n[1].y-n[2].y)))?f=2:(f=mxUtils.findNearestSegment(e,t.x,t.y),f=null==m?mxEvent.VIRTUAL_HANDLE-f:f+1))),null==f&&(f=mxEvent.VIRTUAL_HANDLE)),k.start(c.getGraphX(),c.getGraphX(),f),c.consume(),this.graphHandler.reset()}null!=
+k&&(this.selectionCellsHandler.isHandlerActive(k)?this.isCellSelected(e.cell)||(this.selectionCellsHandler.handlers.put(e.cell,k),this.selectCellForEvent(e.cell,c.getEvent())):this.isCellSelected(e.cell)||k.destroy());q=!1;t=d=g=l=null}}else if(e=c.getState(),null!=e&&this.isCellEditable(e.cell)){k=null;if(this.model.isEdge(e.cell)){if(f=new mxRectangle(c.getGraphX(),c.getGraphY()),f.grow(mxEdgeHandler.prototype.handleImage.width/2),n=e.absolutePoints,null!=n)if(null!=e.text&&null!=e.text.boundingBox&&
+mxUtils.contains(e.text.boundingBox,c.getGraphX(),c.getGraphY()))k="move";else if(mxUtils.contains(f,n[0].x,n[0].y)||mxUtils.contains(f,n[n.length-1].x,n[n.length-1].y))k="pointer";else if(null!=e.visibleSourceState||null!=e.visibleTargetState)f=this.view.getEdgeStyle(e),k="crosshair",f!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(e)&&(f=mxUtils.findNearestSegment(e,c.getGraphX(),c.getGraphY()),f<n.length-1&&0<=f&&(k=0==Math.round(n[f].x-n[f+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(c.getEvent())){f=
+new mxRectangle(c.getGraphX()-1,c.getGraphY()-1);f.grow(mxShape.prototype.svgStrokeTolerance/2);if(this.isTableCell(e.cell)&&(n=this.model.getParent(e.cell),m=this.model.getParent(n),!this.isCellSelected(m)))if(mxUtils.intersects(f,new mxRectangle(e.x-2,e.y,2,e.height))&&this.model.getChildAt(n,0)!=e.cell||mxUtils.intersects(f,new mxRectangle(e.x+e.width-2,e.y,2,e.height)))k="col-resize";else if(mxUtils.intersects(f,new mxRectangle(e.x,e.y-2,e.width,3))&&this.model.getChildAt(m,0)!=n||mxUtils.intersects(f,
+new mxRectangle(e.x,e.y+e.height-2,e.width,3)))k="row-resize";for(n=e;null==k&&null!=n&&(this.isTableCell(n.cell)||this.isTableRow(n.cell)||this.isTable(n.cell));){if(this.isSwimlane(n.cell)){var m=this.getActualStartSize(n.cell),v=this.view.scale;(0<m.x||0<m.width)&&mxUtils.intersects(f,new mxRectangle(n.x+(m.x-m.width-1)*v+(0==m.x?n.width*v:0),n.y,1,n.height))?k="col-resize":(0<m.y||0<m.height)&&mxUtils.intersects(f,new mxRectangle(n.x,n.y+(m.y-m.height-1)*v+(0==m.y?n.height:0),n.width,1))&&(k=
+"row-resize")}n=this.view.getState(this.model.getParent(n.cell))}}null!=k&&e.setCursor(k)}}),mouseUp:mxUtils.bind(this,function(b,c){l=t=d=g=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(b){var d=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);b.view.graph.isHtmlLabel(b.cell)&&(d=1!=b.style.html?mxUtils.htmlEntities(d,!1):b.view.graph.sanitizeHtml(d));return d};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);
this.setPanning(!0);this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(b,d){return!1};this.alternateEdgeStyle="vertical";null==k&&this.loadStylesheet();var m=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=
-function(){var b=m.apply(this,arguments);if(this.graph.pageVisible){for(var d=[],f=this.graph.pageFormat,c=this.graph.pageScale,e=f.width*c,f=f.height*c,c=this.graph.view.translate,g=this.graph.view.scale,l=this.graph.getPageLayout(),k=0;k<l.width;k++)d.push(new mxRectangle(((l.x+k)*e+c.x)*g,(l.y*f+c.y)*g,e*g,f*g));for(k=1;k<l.height;k++)d.push(new mxRectangle((l.x*e+c.x)*g,((l.y+k)*f+c.y)*g,e*g,f*g));b=d.concat(b)}return b};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=
-function(b,d){return null==b.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(b){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var n=this.graphHandler.getCells;this.graphHandler.getCells=function(b){for(var d=n.apply(this,arguments),f=new mxDictionary,c=[],e=0;e<d.length;e++){var g=this.graph.isTableCell(b)&&this.graph.isTableCell(d[e])&&
-this.graph.isCellSelected(d[e])?this.graph.model.getParent(d[e]):this.graph.isTableRow(b)&&this.graph.isTableRow(d[e])&&this.graph.isCellSelected(d[e])?d[e]:this.graph.getCompositeParent(d[e]);null==g||f.get(g)||(f.put(g,!0),c.push(g))}return c};var u=this.graphHandler.start;this.graphHandler.start=function(b,d,f,c){var e=!1;this.graph.isTableCell(b)&&(this.graph.isCellSelected(b)?e=!0:b=this.graph.model.getParent(b));e||this.graph.isTableRow(b)&&this.graph.isCellSelected(b)||(b=this.graph.getCompositeParent(b));
+function(){var b=m.apply(this,arguments);if(this.graph.pageVisible){for(var d=[],g=this.graph.pageFormat,c=this.graph.pageScale,e=g.width*c,g=g.height*c,c=this.graph.view.translate,f=this.graph.view.scale,l=this.graph.getPageLayout(),k=0;k<l.width;k++)d.push(new mxRectangle(((l.x+k)*e+c.x)*f,(l.y*g+c.y)*f,e*f,g*f));for(k=1;k<l.height;k++)d.push(new mxRectangle((l.x*e+c.x)*f,((l.y+k)*g+c.y)*f,e*f,g*f));b=d.concat(b)}return b};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=
+function(b,d){return null==b.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(b){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var n=this.graphHandler.getCells;this.graphHandler.getCells=function(b){for(var d=n.apply(this,arguments),g=new mxDictionary,c=[],e=0;e<d.length;e++){var f=this.graph.isTableCell(b)&&this.graph.isTableCell(d[e])&&
+this.graph.isCellSelected(d[e])?this.graph.model.getParent(d[e]):this.graph.isTableRow(b)&&this.graph.isTableRow(d[e])&&this.graph.isCellSelected(d[e])?d[e]:this.graph.getCompositeParent(d[e]);null==f||g.get(f)||(g.put(f,!0),c.push(f))}return c};var u=this.graphHandler.start;this.graphHandler.start=function(b,d,g,c){var e=!1;this.graph.isTableCell(b)&&(this.graph.isCellSelected(b)?e=!0:b=this.graph.model.getParent(b));e||this.graph.isTableRow(b)&&this.graph.isCellSelected(b)||(b=this.graph.getCompositeParent(b));
u.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(b,d){d=this.graph.getCompositeParent(d);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var v=new mxRubberband(this);this.getRubberband=function(){return v};var y=(new Date).getTime(),x=0,F=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var b=this.currentState;F.apply(this,arguments);b!=this.currentState?(y=(new Date).getTime(),x=0):x=(new Date).getTime()-y};var H=
this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(b){return null!=this.currentState&&b.getState()==this.currentState&&2E3<x||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&H.apply(this,arguments)};var z=this.isToggleEvent;this.isToggleEvent=function(b){return z.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(b)};var D=v.isForceRubberbandEvent;v.isForceRubberbandEvent=function(b){return D.apply(this,
-arguments)&&!mxEvent.isShiftDown(b.getEvent())&&!mxEvent.isControlDown(b.getEvent())||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(b.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==b.getState()&&mxEvent.isTouchEvent(b.getEvent())};var L=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(L=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,
-mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=L)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(b){return mxEvent.isMouseEvent(b.getEvent())};var E=this.click;this.click=function(b){var d=null==b.state&&null!=b.sourceState&&this.isCellLocked(b.sourceState.cell);if(this.isEnabled()&&!d||b.isConsumed())return E.apply(this,arguments);var f=d?b.sourceState.cell:b.getCell();null!=f&&(f=this.getClickableLinkForCell(f),null!=f&&(this.isCustomLink(f)?
-this.customLinkClicked(f):this.openLink(f)));this.isEnabled()&&d&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(b){return b.sourceState};var J=this.tooltipHandler.show;this.tooltipHandler.show=function(){J.apply(this,arguments);if(null!=this.div)for(var b=this.div.getElementsByTagName("a"),d=0;d<b.length;d++)null!=b[d].getAttribute("href")&&null==b[d].getAttribute("target")&&b[d].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(b){return b.sourceState};
-this.getCursorForMouseEvent=function(b){var d=null==b.state&&null!=b.sourceState&&this.isCellLocked(b.sourceState.cell);return this.getCursorForCell(d?b.sourceState.cell:b.getCell())};var C=this.getCursorForCell;this.getCursorForCell=function(b){if(!this.isEnabled()||this.isCellLocked(b)){if(null!=this.getClickableLinkForCell(b))return"pointer";if(this.isCellLocked(b))return"default"}return C.apply(this,arguments)};this.selectRegion=function(b,d){var f=mxEvent.isAltDown(d)?b:null,f=this.getCells(b.x,
-b.y,b.width,b.height,null,null,f,function(b){return"1"==mxUtils.getValue(b.style,"locked","0")},!0);if(this.isToggleEvent(d))for(var c=0;c<f.length;c++)this.selectCellForEvent(f[c],d);else this.selectCellsForEvent(f,d);return f};var K=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(b,d,f){return this.graph.isCellSelected(b)?!1:K.apply(this,arguments)};this.isCellLocked=function(b){for(;null!=b;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(b),
-"locked","0"))return!0;b=this.model.getParent(b)}return!1};var M=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,d){if("mouseDown"==d.getProperty("eventName")){var f=d.getProperty("event").getState();M=null==f||this.isSelectionEmpty()||this.isCellSelected(f.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(b,d){if(!mxEvent.isMultiTouchEvent(d)){var f=d.getProperty("event"),c=d.getProperty("cell");null==c?(f=mxUtils.convertPoint(this.container,
-mxEvent.getClientX(f),mxEvent.getClientY(f)),v.start(f.x,f.y)):null!=M?this.addSelectionCells(M):1<this.getSelectionCount()&&this.isCellSelected(c)&&this.removeSelectionCell(c);M=null;d.consume()}}));this.connectionHandler.selectCells=function(b,d){this.graph.setSelectionCell(d||b)};this.connectionHandler.constraintHandler.isStateIgnored=function(b,d){var f=b.view.graph;return d&&(f.isCellSelected(b.cell)||f.isTableRow(b.cell)&&f.selectionCellsHandler.isHandled(f.model.getParent(b.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,
-mxUtils.bind(this,function(){var b=this.connectionHandler.constraintHandler;null!=b.currentFocus&&b.isStateIgnored(b.currentFocus,!0)&&(b.currentFocus=null,b.constraints=null,b.destroyIcons());b.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var aa=this.updateMouseEvent;this.updateMouseEvent=function(b){b=aa.apply(this,arguments);null!=b.state&&this.isCellLocked(b.getCell())&&(b.state=null);return b}}this.currentTranslate=new mxPoint(0,0)};
+arguments)&&!mxEvent.isShiftDown(b.getEvent())&&!mxEvent.isControlDown(b.getEvent())||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(b.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==b.getState()&&mxEvent.isTouchEvent(b.getEvent())};var N=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(N=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,
+mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=N)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(b){return mxEvent.isMouseEvent(b.getEvent())};var E=this.click;this.click=function(b){var d=null==b.state&&null!=b.sourceState&&this.isCellLocked(b.sourceState.cell);if(this.isEnabled()&&!d||b.isConsumed())return E.apply(this,arguments);var g=d?b.sourceState.cell:b.getCell();null!=g&&(g=this.getClickableLinkForCell(g),null!=g&&(this.isCustomLink(g)?
+this.customLinkClicked(g):this.openLink(g)));this.isEnabled()&&d&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(b){return b.sourceState};var J=this.tooltipHandler.show;this.tooltipHandler.show=function(){J.apply(this,arguments);if(null!=this.div)for(var b=this.div.getElementsByTagName("a"),d=0;d<b.length;d++)null!=b[d].getAttribute("href")&&null==b[d].getAttribute("target")&&b[d].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(b){return b.sourceState};
+this.getCursorForMouseEvent=function(b){var d=null==b.state&&null!=b.sourceState&&this.isCellLocked(b.sourceState.cell);return this.getCursorForCell(d?b.sourceState.cell:b.getCell())};var C=this.getCursorForCell;this.getCursorForCell=function(b){if(!this.isEnabled()||this.isCellLocked(b)){if(null!=this.getClickableLinkForCell(b))return"pointer";if(this.isCellLocked(b))return"default"}return C.apply(this,arguments)};this.selectRegion=function(b,d){var g=mxEvent.isAltDown(d)?b:null,g=this.getCells(b.x,
+b.y,b.width,b.height,null,null,g,function(b){return"1"==mxUtils.getValue(b.style,"locked","0")},!0);if(this.isToggleEvent(d))for(var c=0;c<g.length;c++)this.selectCellForEvent(g[c],d);else this.selectCellsForEvent(g,d);return g};var K=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(b,d,g){return this.graph.isCellSelected(b)?!1:K.apply(this,arguments)};this.isCellLocked=function(b){for(;null!=b;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(b),
+"locked","0"))return!0;b=this.model.getParent(b)}return!1};var M=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,d){if("mouseDown"==d.getProperty("eventName")){var g=d.getProperty("event").getState();M=null==g||this.isSelectionEmpty()||this.isCellSelected(g.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(b,d){if(!mxEvent.isMultiTouchEvent(d)){var g=d.getProperty("event"),c=d.getProperty("cell");null==c?(g=mxUtils.convertPoint(this.container,
+mxEvent.getClientX(g),mxEvent.getClientY(g)),v.start(g.x,g.y)):null!=M?this.addSelectionCells(M):1<this.getSelectionCount()&&this.isCellSelected(c)&&this.removeSelectionCell(c);M=null;d.consume()}}));this.connectionHandler.selectCells=function(b,d){this.graph.setSelectionCell(d||b)};this.connectionHandler.constraintHandler.isStateIgnored=function(b,d){var g=b.view.graph;return d&&(g.isCellSelected(b.cell)||g.isTableRow(b.cell)&&g.selectionCellsHandler.isHandled(g.model.getParent(b.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,
+mxUtils.bind(this,function(){var b=this.connectionHandler.constraintHandler;null!=b.currentFocus&&b.isStateIgnored(b.currentFocus,!0)&&(b.currentFocus=null,b.constraints=null,b.destroyIcons());b.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var Z=this.updateMouseEvent;this.updateMouseEvent=function(b){b=Z.apply(this,arguments);null!=b.state&&this.isCellLocked(b.getCell())&&(b.state=null);return b}}this.currentTranslate=new mxPoint(0,0)};
Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.translateDiagram="1"==urlParams["translate-diagram"];Graph.diagramLanguage=null!=urlParams["diagram-language"]?urlParams["diagram-language"]:mxClient.language;Graph.lineJumpsEnabled=!0;
Graph.defaultJumpSize=6;Graph.zoomWheel=!1;Graph.minTableColumnWidth=20;Graph.minTableRowHeight=20;Graph.foreignObjectWarningText="Viewer does not support full SVG 1.1";Graph.foreignObjectWarningLink="https://www.diagrams.net/doc/faq/svg-export-text-problems";Graph.xmlDeclaration='<?xml version="1.0" encoding="UTF-8"?>';Graph.svgDoctype='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">';Graph.svgFileComment="\x3c!-- Do not edit this file with editors other than diagrams.net --\x3e";
Graph.pasteStyles="rounded shadow dashed dashPattern fontFamily fontSource fontSize fontColor fontStyle align verticalAlign strokeColor strokeWidth fillColor gradientColor swimlaneFillColor textOpacity gradientDirection glass labelBackgroundColor labelBorderColor opacity spacing spacingTop spacingLeft spacingBottom spacingRight endFill endArrow endSize targetPerimeterSpacing startFill startArrow startSize sourcePerimeterSpacing arcSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle".split(" ");
Graph.createOffscreenGraph=function(b){var c=new Graph(document.createElement("div"));c.stylesheet.styles=mxUtils.clone(b.styles);c.resetViewOnRootChange=!1;c.setConnectable(!1);c.gridEnabled=!1;c.autoScroll=!1;c.setTooltips(!1);c.setEnabled(!1);c.container.style.visibility="hidden";c.container.style.position="absolute";c.container.style.overflow="hidden";c.container.style.height="1px";c.container.style.width="1px";return c};
-Graph.createSvgImage=function(b,c,e,k,g){e=unescape(encodeURIComponent(Graph.svgDoctype+'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+b+'px" height="'+c+'px" '+(null!=k&&null!=g?'viewBox="0 0 '+k+" "+g+'" ':"")+'version="1.1">'+e+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0)),b,c)};
-Graph.zapGremlins=function(b){for(var c=0,e=[],k=0;k<b.length;k++){var g=b.charCodeAt(k);(32<=g||9==g||10==g||13==g)&&65535!=g&&65534!=g||(e.push(b.substring(c,k)),c=k+1)}0<c&&c<b.length&&e.push(b.substring(c));return 0==e.length?b:e.join("")};Graph.stringToBytes=function(b){for(var c=Array(b.length),e=0;e<b.length;e++)c[e]=b.charCodeAt(e);return c};Graph.bytesToString=function(b){for(var c=Array(b.length),e=0;e<b.length;e++)c[e]=String.fromCharCode(b[e]);return c.join("")};
+Graph.createSvgImage=function(b,c,e,k,f){e=unescape(encodeURIComponent(Graph.svgDoctype+'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+b+'px" height="'+c+'px" '+(null!=k&&null!=f?'viewBox="0 0 '+k+" "+f+'" ':"")+'version="1.1">'+e+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0)),b,c)};
+Graph.zapGremlins=function(b){for(var c=0,e=[],k=0;k<b.length;k++){var f=b.charCodeAt(k);(32<=f||9==f||10==f||13==f)&&65535!=f&&65534!=f||(e.push(b.substring(c,k)),c=k+1)}0<c&&c<b.length&&e.push(b.substring(c));return 0==e.length?b:e.join("")};Graph.stringToBytes=function(b){for(var c=Array(b.length),e=0;e<b.length;e++)c[e]=b.charCodeAt(e);return c};Graph.bytesToString=function(b){for(var c=Array(b.length),e=0;e<b.length;e++)c[e]=String.fromCharCode(b[e]);return c.join("")};
Graph.base64EncodeUnicode=function(b){return btoa(encodeURIComponent(b).replace(/%([0-9A-F]{2})/g,function(b,e){return String.fromCharCode(parseInt(e,16))}))};Graph.base64DecodeUnicode=function(b){return decodeURIComponent(Array.prototype.map.call(atob(b),function(b){return"%"+("00"+b.charCodeAt(0).toString(16)).slice(-2)}).join(""))};Graph.compressNode=function(b,c){var e=mxUtils.getXml(b);return Graph.compress(c?e:Graph.zapGremlins(e))};
Graph.arrayBufferToString=function(b){var c="";b=new Uint8Array(b);for(var e=b.byteLength,k=0;k<e;k++)c+=String.fromCharCode(b[k]);return c};Graph.stringToArrayBuffer=function(b){return Uint8Array.from(b,function(b){return b.charCodeAt(0)})};
-Graph.arrayBufferIndexOfString=function(b,c,e){var k=c.charCodeAt(0),g=1,p=-1;for(e=e||0;e<b.byteLength;e++)if(b[e]==k){p=e;break}for(e=p+1;-1<p&&e<b.byteLength&&e<p+c.length-1;e++){if(b[e]!=c.charCodeAt(g))return Graph.arrayBufferIndexOfString(b,c,p+1);g++}return g==c.length-1?p:-1};Graph.compress=function(b,c){if(null==b||0==b.length||"undefined"===typeof pako)return b;var e=c?pako.deflate(encodeURIComponent(b)):pako.deflateRaw(encodeURIComponent(b));return btoa(Graph.arrayBufferToString(new Uint8Array(e)))};
+Graph.arrayBufferIndexOfString=function(b,c,e){var k=c.charCodeAt(0),f=1,p=-1;for(e=e||0;e<b.byteLength;e++)if(b[e]==k){p=e;break}for(e=p+1;-1<p&&e<b.byteLength&&e<p+c.length-1;e++){if(b[e]!=c.charCodeAt(f))return Graph.arrayBufferIndexOfString(b,c,p+1);f++}return f==c.length-1?p:-1};Graph.compress=function(b,c){if(null==b||0==b.length||"undefined"===typeof pako)return b;var e=c?pako.deflate(encodeURIComponent(b)):pako.deflateRaw(encodeURIComponent(b));return btoa(Graph.arrayBufferToString(new Uint8Array(e)))};
Graph.decompress=function(b,c,e){if(null==b||0==b.length||"undefined"===typeof pako)return b;b=Graph.stringToArrayBuffer(atob(b));c=decodeURIComponent(c?pako.inflate(b,{to:"string"}):pako.inflateRaw(b,{to:"string"}));return e?c:Graph.zapGremlins(c)};
-Graph.fadeNodes=function(b,c,e,k,g){g=null!=g?g:1E3;Graph.setTransitionForNodes(b,null);Graph.setOpacityForNodes(b,c);window.setTimeout(function(){Graph.setTransitionForNodes(b,"all "+g+"ms ease-in-out");Graph.setOpacityForNodes(b,e);window.setTimeout(function(){Graph.setTransitionForNodes(b,null);null!=k&&k()},g)},0)};Graph.removeKeys=function(b,c){for(var e in b)c(e)&&delete b[e]};
+Graph.fadeNodes=function(b,c,e,k,f){f=null!=f?f:1E3;Graph.setTransitionForNodes(b,null);Graph.setOpacityForNodes(b,c);window.setTimeout(function(){Graph.setTransitionForNodes(b,"all "+f+"ms ease-in-out");Graph.setOpacityForNodes(b,e);window.setTimeout(function(){Graph.setTransitionForNodes(b,null);null!=k&&k()},f)},0)};Graph.removeKeys=function(b,c){for(var e in b)c(e)&&delete b[e]};
Graph.setTransitionForNodes=function(b,c){for(var e=0;e<b.length;e++)mxUtils.setPrefixedStyle(b[e].style,"transition",c)};Graph.setOpacityForNodes=function(b,c){for(var e=0;e<b.length;e++)b[e].style.opacity=c};Graph.removePasteFormatting=function(b){for(;null!=b;)null!=b.firstChild&&Graph.removePasteFormatting(b.firstChild),b.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=b.style&&(b.style.whiteSpace="","#000000"==b.style.color&&(b.style.color="")),b=b.nextSibling};
Graph.sanitizeHtml=function(b,c){return html_sanitize(b,function(b){return null!=b&&"javascript:"!==b.toString().toLowerCase().substring(0,11)?b:null},function(b){return b})};
-Graph.sanitizeSvg=function(b){function c(c){for(c=b.getElementsByTagName(c);0<c.length;)c[0].parentNode.removeChild(c[0])}for(var e=b.getElementsByTagName("*"),k=0;k<e.length;k++)for(var g=0;g<e[k].attributes.length;g++){var p=e[k].attributes[g];2<p.name.length&&"on"==p.name.toLowerCase().substring(0,2)&&e[k].removeAttribute(p.name)}c("meta");c("script");c("metadata")};
-Graph.clipSvgDataUri=function(b,c){if(!mxClient.IS_IE&&!mxClient.IS_IE11&&null!=b&&"data:image/svg+xml;base64,"==b.substring(0,26))try{var e=document.createElement("div");e.style.position="absolute";e.style.visibility="hidden";var k=decodeURIComponent(escape(atob(b.substring(26)))),g=k.indexOf("<svg");if(0<=g){e.innerHTML=k.substring(g);Graph.sanitizeSvg(e);var p=e.getElementsByTagName("svg");if(0<p.length){if(c||null!=p[0].getAttribute("preserveAspectRatio")){document.body.appendChild(e);try{var g=
-k=1,t=p[0].getAttribute("width"),d=p[0].getAttribute("height"),t=null!=t&&"%"!=t.charAt(t.length-1)?parseFloat(t):NaN,d=null!=d&&"%"!=d.charAt(d.length-1)?parseFloat(d):NaN,f=p[0].getAttribute("viewBox");if(null!=f&&!isNaN(t)&&!isNaN(d)){var l=f.split(" ");4<=f.length&&(k=parseFloat(l[2])/t,g=parseFloat(l[3])/d)}var q=p[0].getBBox();0<q.width&&0<q.height&&(e.getElementsByTagName("svg")[0].setAttribute("viewBox",q.x+" "+q.y+" "+q.width+" "+q.height),e.getElementsByTagName("svg")[0].setAttribute("width",
-q.width/k),e.getElementsByTagName("svg")[0].setAttribute("height",q.height/g))}catch(m){}finally{document.body.removeChild(e)}}b=Editor.createSvgDataUri(mxUtils.getXml(p[0]))}}}catch(m){}return b};Graph.stripQuotes=function(b){null!=b&&("'"==b.charAt(0)&&(b=b.substring(1)),"'"==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)),'"'==b.charAt(0)&&(b=b.substring(1)),'"'==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)));return b};
+Graph.sanitizeSvg=function(b){function c(c){for(c=b.getElementsByTagName(c);0<c.length;)c[0].parentNode.removeChild(c[0])}for(var e=b.getElementsByTagName("*"),k=0;k<e.length;k++)for(var f=0;f<e[k].attributes.length;f++){var p=e[k].attributes[f];2<p.name.length&&"on"==p.name.toLowerCase().substring(0,2)&&e[k].removeAttribute(p.name)}c("meta");c("script");c("metadata")};
+Graph.clipSvgDataUri=function(b,c){if(!mxClient.IS_IE&&!mxClient.IS_IE11&&null!=b&&"data:image/svg+xml;base64,"==b.substring(0,26))try{var e=document.createElement("div");e.style.position="absolute";e.style.visibility="hidden";var k=decodeURIComponent(escape(atob(b.substring(26)))),f=k.indexOf("<svg");if(0<=f){e.innerHTML=k.substring(f);Graph.sanitizeSvg(e);var p=e.getElementsByTagName("svg");if(0<p.length){if(c||null!=p[0].getAttribute("preserveAspectRatio")){document.body.appendChild(e);try{var f=
+k=1,t=p[0].getAttribute("width"),d=p[0].getAttribute("height"),t=null!=t&&"%"!=t.charAt(t.length-1)?parseFloat(t):NaN,d=null!=d&&"%"!=d.charAt(d.length-1)?parseFloat(d):NaN,g=p[0].getAttribute("viewBox");if(null!=g&&!isNaN(t)&&!isNaN(d)){var l=g.split(" ");4<=g.length&&(k=parseFloat(l[2])/t,f=parseFloat(l[3])/d)}var q=p[0].getBBox();0<q.width&&0<q.height&&(e.getElementsByTagName("svg")[0].setAttribute("viewBox",q.x+" "+q.y+" "+q.width+" "+q.height),e.getElementsByTagName("svg")[0].setAttribute("width",
+q.width/k),e.getElementsByTagName("svg")[0].setAttribute("height",q.height/f))}catch(m){}finally{document.body.removeChild(e)}}b=Editor.createSvgDataUri(mxUtils.getXml(p[0]))}}}catch(m){}return b};Graph.stripQuotes=function(b){null!=b&&("'"==b.charAt(0)&&(b=b.substring(1)),"'"==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)),'"'==b.charAt(0)&&(b=b.substring(1)),'"'==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)));return b};
Graph.createRemoveIcon=function(b,c){var e=document.createElement("img");e.setAttribute("src",Dialog.prototype.clearImage);e.setAttribute("title",b);e.setAttribute("width","13");e.setAttribute("height","10");e.style.marginLeft="4px";e.style.marginBottom="-1px";e.style.cursor="pointer";mxEvent.addListener(e,"click",c);return e};Graph.isPageLink=function(b){return null!=b&&"data:page/id,"==b.substring(0,13)};Graph.isLink=function(b){return null!=b&&Graph.linkPattern.test(b)};Graph.linkPattern=/^(https?:\/\/)?((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*(\?[;&a-z\d%_.~+=-]*)?(\#[-a-z\d_]*)?$/i;
mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null;Graph.prototype.linkPolicy="frame"==urlParams.target?"blank":urlParams.target||"auto";Graph.prototype.linkTarget="frame"==urlParams.target?"_self":"_blank";Graph.prototype.linkRelation="nofollow noopener noreferrer";Graph.prototype.defaultScrollbars=!mxClient.IS_IOS;Graph.prototype.defaultPageVisible=!0;Graph.prototype.defaultGridEnabled="0"!=urlParams.grid;Graph.prototype.lightbox=!1;
Graph.prototype.defaultPageBackgroundColor="#ffffff";Graph.prototype.defaultPageBorderColor="#ffffff";Graph.prototype.shapeForegroundColor="#000000";Graph.prototype.shapeBackgroundColor="#ffffff";Graph.prototype.scrollTileSize=new mxRectangle(0,0,400,400);Graph.prototype.transparentBackground=!0;Graph.prototype.selectParentAfterDelete=!1;Graph.prototype.defaultEdgeLength=80;Graph.prototype.edgeMode=!1;Graph.prototype.connectionArrowsEnabled=!0;
Graph.prototype.placeholderPattern=RegExp("%(date{.*}|[^%^{^}^ ^\"^ '^=^;]+)%","g");Graph.prototype.absoluteUrlPattern=/^(?:[a-z]+:)?\/\//i;Graph.prototype.defaultThemeName="default";Graph.prototype.defaultThemes={};Graph.prototype.baseUrl=null!=urlParams.base?decodeURIComponent(urlParams.base):(window!=window.top?document.referrer:document.location.toString()).split("#")[0];Graph.prototype.editAfterInsert=!1;Graph.prototype.builtInProperties=["label","tooltip","placeholders","placeholder"];
-Graph.prototype.standalone=!1;Graph.prototype.enableFlowAnimation=!1;
-Graph.prototype.init=function(b){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(b,c){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var e=b.view.graph.tolerance,k=!0,t=null,d=mxUtils.bind(this,function(b){k=!0;t=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b))}),f=mxUtils.bind(this,function(b){k=k&&null!=t&&Math.abs(t.x-mxEvent.getClientX(b))<e&&Math.abs(t.y-mxEvent.getClientY(b))<e}),l=mxUtils.bind(this,function(d){if(k)for(var f=mxEvent.getSource(d);null!=
-f&&f!=c.node;){if("a"==f.nodeName.toLowerCase()){b.view.graph.labelLinkClicked(b,f,d);break}f=f.parentNode}});mxEvent.addGestureListeners(c.node,d,f,l);mxEvent.addListener(c.node,"click",function(b){mxEvent.consume(b)})};if(null!=this.tooltipHandler){var c=this.tooltipHandler.init;this.tooltipHandler.init=function(){c.apply(this,arguments);null!=this.div&&mxEvent.addListener(this.div,"click",mxUtils.bind(this,function(b){var c=mxEvent.getSource(b);"A"==c.nodeName&&(c=c.getAttribute("href"),null!=
+Graph.prototype.standalone=!1;Graph.prototype.enableFlowAnimation=!1;Graph.prototype.roundableShapes="label rectangle internalStorage corner parallelogram swimlane triangle trapezoid ext step tee process link rhombus offPageConnector loopLimit hexagon manualInput card curlyBracket singleArrow callout doubleArrow flexArrow umlLifeline".split(" ");
+Graph.prototype.init=function(b){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(b,c){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var e=b.view.graph.tolerance,k=!0,t=null,d=mxUtils.bind(this,function(b){k=!0;t=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b))}),g=mxUtils.bind(this,function(b){k=k&&null!=t&&Math.abs(t.x-mxEvent.getClientX(b))<e&&Math.abs(t.y-mxEvent.getClientY(b))<e}),l=mxUtils.bind(this,function(d){if(k)for(var g=mxEvent.getSource(d);null!=
+g&&g!=c.node;){if("a"==g.nodeName.toLowerCase()){b.view.graph.labelLinkClicked(b,g,d);break}g=g.parentNode}});mxEvent.addGestureListeners(c.node,d,g,l);mxEvent.addListener(c.node,"click",function(b){mxEvent.consume(b)})};if(null!=this.tooltipHandler){var c=this.tooltipHandler.init;this.tooltipHandler.init=function(){c.apply(this,arguments);null!=this.div&&mxEvent.addListener(this.div,"click",mxUtils.bind(this,function(b){var c=mxEvent.getSource(b);"A"==c.nodeName&&(c=c.getAttribute("href"),null!=
c&&this.graph.isCustomLink(c)&&(mxEvent.isTouchEvent(b)||!mxEvent.isPopupTrigger(b))&&this.graph.customLinkClicked(c)&&mxEvent.consume(b))}))}}this.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,c){if(null!=this.container&&this.flowAnimationStyle){var e=this.flowAnimationStyle.getAttribute("id");this.flowAnimationStyle.innerHTML=this.getFlowAnimationStyleCss(e)}}));this.initLayoutManager()};
-(function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.getVerticesAndEdges=function(b,d){b=null!=b?b:!0;d=null!=d?d:!0;var f=this.model;return f.filterDescendants(function(c){return b&&f.isVertex(c)||d&&f.isEdge(c)},f.getRoot())};Graph.prototype.getCommonStyle=function(b){for(var d={},f=0;f<b.length;f++){var c=this.view.getState(b[f]);this.mergeStyle(c.style,d,0==f)}return d};Graph.prototype.mergeStyle=function(b,
-d,f){if(null!=b){var c={},e;for(e in b){var g=b[e];null!=g&&(c[e]=!0,null==d[e]&&f?d[e]=g:d[e]!=g&&delete d[e])}for(e in d)c[e]||delete d[e]}};Graph.prototype.getStartEditingCell=function(b,d){var f=this.getCellStyle(b),f=parseInt(mxUtils.getValue(f,mxConstants.STYLE_STARTSIZE,0));this.isTable(b)&&(!this.isSwimlane(b)||0==f)&&""==this.getLabel(b)&&0<this.model.getChildCount(b)&&(b=this.model.getChildAt(b,0),f=this.getCellStyle(b),f=parseInt(mxUtils.getValue(f,mxConstants.STYLE_STARTSIZE,0)));if(this.isTableRow(b)&&
-(!this.isSwimlane(b)||0==f)&&""==this.getLabel(b)&&0<this.model.getChildCount(b))for(f=0;f<this.model.getChildCount(b);f++){var c=this.model.getChildAt(b,f);if(this.isCellEditable(c)){b=c;break}}return b};Graph.prototype.copyStyle=function(b){return this.getCellStyle(b,!1)};Graph.prototype.pasteStyle=function(b,d,f){f=null!=f?f:Graph.pasteStyles;Graph.removeKeys(b,function(b){return 0>mxUtils.indexOf(f,b)});this.updateCellStyles(b,d)};Graph.prototype.updateCellStyles=function(b,d){this.model.beginUpdate();
-try{for(var f=0;f<d.length;f++)if(this.model.isVertex(d[f])||this.model.isEdge(d[f])){var c=this.getCellStyle(d[f],!1),e;for(e in b){var g=b[e];c[e]!=g&&this.setCellStyles(e,g,[d[f]])}}}finally{this.model.endUpdate()}};Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&(this.isCssTransformsSupported()||mxClient.IS_IOS)};Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&
-!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(b,d,f,c,e,g){this.useCssTransforms&&(b=b/this.currentScale-this.currentTranslate.x,d=d/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(b,d,f,c,e,g){c=null!=c?c:!0;e=null!=e?e:!0;null==f&&(f=this.getCurrentRoot(),null==f&&(f=this.getModel().getRoot()));if(null!=f)for(var l=this.model.getChildCount(f)-1;0<=l;l--){var k=this.model.getChildAt(f,
-l),q=this.getScaledCellAt(b,d,k,c,e,g);if(null!=q)return q;if(this.isCellVisible(k)&&(e&&this.model.isEdge(k)||c&&this.model.isVertex(k))&&(q=this.view.getState(k),null!=q&&(null==g||!g(q,b,d))&&this.intersects(q,b,d)))return k}return null};Graph.prototype.isRecursiveVertexResize=function(b){return!this.isSwimlane(b.cell)&&0<this.model.getChildCount(b.cell)&&!this.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,"childLayout",null)};Graph.prototype.getAbsoluteParent=
+(function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.isFillState=function(b){return!this.isSpecialColor(b.style[mxConstants.STYLE_FILLCOLOR])&&(this.model.isVertex(b.cell)||"arrow"==mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null)||"filledEdge"==mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null)||"flexArrow"==mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null))};Graph.prototype.isStrokeState=function(b){return!this.isSpecialColor(b.style[mxConstants.STYLE_STROKECOLOR])};
+Graph.prototype.isSpecialColor=function(b){return 0<=mxUtils.indexOf([mxConstants.STYLE_STROKECOLOR,mxConstants.STYLE_FILLCOLOR,"inherit","swimlane","indicated"],b)};Graph.prototype.isGlassState=function(b){b=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null);return"label"==b||"rectangle"==b||"internalStorage"==b||"ext"==b||"umlLifeline"==b||"swimlane"==b||"process"==b};Graph.prototype.isRoundedState=function(b){return null!=b.shape?b.shape.isRoundable():0<=mxUtils.indexOf(this.roundableShapes,
+mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null))};Graph.prototype.isLineJumpState=function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null);return!mxUtils.getValue(b.style,mxConstants.STYLE_CURVED,!1)&&("connector"==d||"filledEdge"==d)};Graph.prototype.isAutoSizeState=function(b){return"1"==mxUtils.getValue(b.style,mxConstants.STYLE_AUTOSIZE,null)};Graph.prototype.isImageState=function(b){b=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null);return"label"==b||"image"==b};
+Graph.prototype.isShadowState=function(b){return"image"!=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null)};Graph.prototype.getVerticesAndEdges=function(b,d){b=null!=b?b:!0;d=null!=d?d:!0;var g=this.model;return g.filterDescendants(function(c){return b&&g.isVertex(c)||d&&g.isEdge(c)},g.getRoot())};Graph.prototype.getCommonStyle=function(b){for(var d={},g=0;g<b.length;g++){var c=this.view.getState(b[g]);this.mergeStyle(c.style,d,0==g)}return d};Graph.prototype.mergeStyle=function(b,d,g){if(null!=
+b){var c={},e;for(e in b){var f=b[e];null!=f&&(c[e]=!0,null==d[e]&&g?d[e]=f:d[e]!=f&&delete d[e])}for(e in d)c[e]||delete d[e]}};Graph.prototype.getStartEditingCell=function(b,d){var g=this.getCellStyle(b),g=parseInt(mxUtils.getValue(g,mxConstants.STYLE_STARTSIZE,0));this.isTable(b)&&(!this.isSwimlane(b)||0==g)&&""==this.getLabel(b)&&0<this.model.getChildCount(b)&&(b=this.model.getChildAt(b,0),g=this.getCellStyle(b),g=parseInt(mxUtils.getValue(g,mxConstants.STYLE_STARTSIZE,0)));if(this.isTableRow(b)&&
+(!this.isSwimlane(b)||0==g)&&""==this.getLabel(b)&&0<this.model.getChildCount(b))for(g=0;g<this.model.getChildCount(b);g++){var c=this.model.getChildAt(b,g);if(this.isCellEditable(c)){b=c;break}}return b};Graph.prototype.copyStyle=function(b){return this.getCellStyle(b,!1)};Graph.prototype.pasteStyle=function(b,d,g){g=null!=g?g:Graph.pasteStyles;Graph.removeKeys(b,function(b){return 0>mxUtils.indexOf(g,b)});this.updateCellStyles(b,d)};Graph.prototype.updateCellStyles=function(b,d){this.model.beginUpdate();
+try{for(var g=0;g<d.length;g++)if(this.model.isVertex(d[g])||this.model.isEdge(d[g])){var c=this.getCellStyle(d[g],!1),e;for(e in b){var f=b[e];c[e]!=f&&this.setCellStyles(e,f,[d[g]])}}}finally{this.model.endUpdate()}};Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&(this.isCssTransformsSupported()||mxClient.IS_IOS)};Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&
+!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(b,d,g,c,e,f){this.useCssTransforms&&(b=b/this.currentScale-this.currentTranslate.x,d=d/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(b,d,g,c,e,f){c=null!=c?c:!0;e=null!=e?e:!0;null==g&&(g=this.getCurrentRoot(),null==g&&(g=this.getModel().getRoot()));if(null!=g)for(var l=this.model.getChildCount(g)-1;0<=l;l--){var k=this.model.getChildAt(g,
+l),q=this.getScaledCellAt(b,d,k,c,e,f);if(null!=q)return q;if(this.isCellVisible(k)&&(e&&this.model.isEdge(k)||c&&this.model.isVertex(k))&&(q=this.view.getState(k),null!=q&&(null==f||!f(q,b,d))&&this.intersects(q,b,d)))return k}return null};Graph.prototype.isRecursiveVertexResize=function(b){return!this.isSwimlane(b.cell)&&0<this.model.getChildCount(b.cell)&&!this.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,"childLayout",null)};Graph.prototype.getAbsoluteParent=
function(b){for(var d=this.getCellGeometry(b);null!=d&&d.relative;)b=this.getModel().getParent(b),d=this.getCellGeometry(b);return b};Graph.prototype.isPart=function(b){return"1"==mxUtils.getValue(this.getCurrentCellStyle(b),"part","0")||this.isTableCell(b)||this.isTableRow(b)};Graph.prototype.getCompositeParent=function(b){for(;this.isPart(b);){var d=this.model.getParent(b);if(!this.model.isVertex(d))break;b=d}return b};Graph.prototype.filterSelectionCells=function(b){var d=this.getSelectionCells();
-if(null!=b){for(var f=[],c=0;c<d.length;c++)b(d[c])||f.push(d[c]);d=f}return d};var b=mxGraph.prototype.scrollRectToVisible;Graph.prototype.scrollRectToVisible=function(c){if(this.useCssTransforms){var d=this.currentScale,f=this.currentTranslate;c=new mxRectangle((c.x+2*f.x)*d-f.x,(c.y+2*f.y)*d-f.y,c.width*d,c.height*d)}b.apply(this,arguments)};mxCellHighlight.prototype.getStrokeWidth=function(b){b=this.strokeWidth;this.graph.useCssTransforms&&(b/=this.graph.currentScale);return b};mxGraphView.prototype.getGraphBounds=
-function(){var b=this.graphBounds;if(this.graph.useCssTransforms)var d=this.graph.currentTranslate,f=this.graph.currentScale,b=new mxRectangle((b.x+d.x)*f,(b.y+d.y)*f,b.width*f,b.height*f);return b};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var c=mxGraphView.prototype.validate;mxGraphView.prototype.validate=function(b){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=
-this.translate.x,this.graph.currentTranslate.y=this.translate.y,this.scale=1,this.translate.x=0,this.translate.y=0);c.apply(this,arguments);this.graph.useCssTransforms&&(this.graph.updateCssTransform(),this.scale=this.graph.currentScale,this.translate.x=this.graph.currentTranslate.x,this.translate.y=this.graph.currentTranslate.y)};var e=mxGraph.prototype.getCellsForGroup;Graph.prototype.getCellsForGroup=function(b){b=e.apply(this,arguments);for(var d=[],f=0;f<b.length;f++)this.isTableRow(b[f])||this.isTableCell(b[f])||
-d.push(b[f]);return d};var k=mxGraph.prototype.getCellsForUngroup;Graph.prototype.getCellsForUngroup=function(b){b=k.apply(this,arguments);for(var d=[],f=0;f<b.length;f++)this.isTable(b[f])||this.isTableRow(b[f])||this.isTableCell(b[f])||d.push(b[f]);return d};Graph.prototype.updateCssTransform=function(){var b=this.view.getDrawPane();if(null!=b)if(b=b.parentNode,this.useCssTransforms){var d=b.getAttribute("transform");b.setAttribute("transformOrigin","0 0");var f=Math.round(100*this.currentScale)/
-100;b.setAttribute("transform","scale("+f+","+f+")translate("+Math.round(100*this.currentTranslate.x)/100+","+Math.round(100*this.currentTranslate.y)/100+")");d!=b.getAttribute("transform")&&this.fireEvent(new mxEventObject("cssTransformChanged"),"transform",b.getAttribute("transform"))}else b.removeAttribute("transformOrigin"),b.removeAttribute("transform")};var g=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){var b=this.graph.useCssTransforms,
-d=this.scale,f=this.translate;b&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);g.apply(this,arguments);b&&(this.scale=d,this.translate=f)};var p=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(b,d,f){var c=this.useCssTransforms,e=this.view.scale,g=this.view.translate;c&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms=!1);p.apply(this,arguments);c&&(this.view.scale=e,this.view.translate=g,this.useCssTransforms=
+if(null!=b){for(var g=[],c=0;c<d.length;c++)b(d[c])||g.push(d[c]);d=g}return d};var b=mxGraph.prototype.scrollRectToVisible;Graph.prototype.scrollRectToVisible=function(c){if(this.useCssTransforms){var d=this.currentScale,g=this.currentTranslate;c=new mxRectangle((c.x+2*g.x)*d-g.x,(c.y+2*g.y)*d-g.y,c.width*d,c.height*d)}b.apply(this,arguments)};mxCellHighlight.prototype.getStrokeWidth=function(b){b=this.strokeWidth;this.graph.useCssTransforms&&(b/=this.graph.currentScale);return b};mxGraphView.prototype.getGraphBounds=
+function(){var b=this.graphBounds;if(this.graph.useCssTransforms)var d=this.graph.currentTranslate,g=this.graph.currentScale,b=new mxRectangle((b.x+d.x)*g,(b.y+d.y)*g,b.width*g,b.height*g);return b};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var c=mxGraphView.prototype.validate;mxGraphView.prototype.validate=function(b){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=
+this.translate.x,this.graph.currentTranslate.y=this.translate.y,this.scale=1,this.translate.x=0,this.translate.y=0);c.apply(this,arguments);this.graph.useCssTransforms&&(this.graph.updateCssTransform(),this.scale=this.graph.currentScale,this.translate.x=this.graph.currentTranslate.x,this.translate.y=this.graph.currentTranslate.y)};var e=mxGraph.prototype.getCellsForGroup;Graph.prototype.getCellsForGroup=function(b){b=e.apply(this,arguments);for(var d=[],g=0;g<b.length;g++)this.isTableRow(b[g])||this.isTableCell(b[g])||
+d.push(b[g]);return d};var k=mxGraph.prototype.getCellsForUngroup;Graph.prototype.getCellsForUngroup=function(b){b=k.apply(this,arguments);for(var d=[],g=0;g<b.length;g++)this.isTable(b[g])||this.isTableRow(b[g])||this.isTableCell(b[g])||d.push(b[g]);return d};Graph.prototype.updateCssTransform=function(){var b=this.view.getDrawPane();if(null!=b)if(b=b.parentNode,this.useCssTransforms){var d=b.getAttribute("transform");b.setAttribute("transformOrigin","0 0");var g=Math.round(100*this.currentScale)/
+100;b.setAttribute("transform","scale("+g+","+g+")translate("+Math.round(100*this.currentTranslate.x)/100+","+Math.round(100*this.currentTranslate.y)/100+")");d!=b.getAttribute("transform")&&this.fireEvent(new mxEventObject("cssTransformChanged"),"transform",b.getAttribute("transform"))}else b.removeAttribute("transformOrigin"),b.removeAttribute("transform")};var f=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){var b=this.graph.useCssTransforms,
+d=this.scale,g=this.translate;b&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);f.apply(this,arguments);b&&(this.scale=d,this.translate=g)};var p=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(b,d,g){var c=this.useCssTransforms,e=this.view.scale,f=this.view.translate;c&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms=!1);p.apply(this,arguments);c&&(this.view.scale=e,this.view.translate=f,this.useCssTransforms=
!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.isViewer=function(){return!1};Graph.prototype.labelLinkClicked=function(b,c,e){c=c.getAttribute("href");if(null!=c&&!this.isCustomLink(c)&&(mxEvent.isLeftMouseButton(e)&&!mxEvent.isPopupTrigger(e)||mxEvent.isTouchEvent(e))){if(!this.isEnabled()||this.isCellLocked(b.cell))b=this.isBlankLink(c)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(c),b);mxEvent.consume(e)}};
-Graph.prototype.openLink=function(b,c,e){var k=window;try{if("_self"==c&&window!=window.top)window.location.href=b;else if(b.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==b.charAt(this.baseUrl.length)&&"_top"==c&&window==window.top){var g=b.split("#")[1];window.location.hash=="#"+g&&(window.location.hash="");window.location.hash=g}else k=window.open(b,null!=c?c:"_blank"),null==k||e||(k.opener=null)}catch(p){}return k};
+Graph.prototype.openLink=function(b,c,e){var k=window;try{if("_self"==c&&window!=window.top)window.location.href=b;else if(b.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==b.charAt(this.baseUrl.length)&&"_top"==c&&window==window.top){var f=b.split("#")[1];window.location.hash=="#"+f&&(window.location.hash="");window.location.hash=f}else k=window.open(b,null!=c?c:"_blank"),null==k||e||(k.opener=null)}catch(p){}return k};
Graph.prototype.getLinkTitle=function(b){return b.substring(b.lastIndexOf("/")+1)};Graph.prototype.isCustomLink=function(b){return"data:"==b.substring(0,5)};Graph.prototype.customLinkClicked=function(b){return!1};Graph.prototype.isExternalProtocol=function(b){return"mailto:"===b.substring(0,7)};Graph.prototype.isBlankLink=function(b){return!this.isExternalProtocol(b)&&("blank"===this.linkPolicy||"self"!==this.linkPolicy&&!this.isRelativeUrl(b)&&b.substring(0,this.domainUrl.length)!==this.domainUrl)};
Graph.prototype.isRelativeUrl=function(b){return null!=b&&!this.absoluteUrlPattern.test(b)&&"data:"!==b.substring(0,5)&&!this.isExternalProtocol(b)};Graph.prototype.getAbsoluteUrl=function(b){null!=b&&this.isRelativeUrl(b)&&(b="#"==b.charAt(0)?this.baseUrl+b:"/"==b.charAt(0)?this.domainUrl+b:this.domainPathUrl+b);return b};
Graph.prototype.initLayoutManager=function(){this.layoutManager=new mxLayoutManager(this);this.layoutManager.hasLayout=function(b){return null!=this.graph.getCellStyle(b).childLayout};this.layoutManager.getLayout=function(b,c){var e=this.graph.model.getParent(b);if(c!=mxEvent.BEGIN_UPDATE||this.hasLayout(e,c)){e=this.graph.getCellStyle(b);if("stackLayout"==e.childLayout){var k=new mxStackLayout(this.graph,!0);k.resizeParentMax="1"==mxUtils.getValue(e,"resizeParentMax","1");k.horizontal="1"==mxUtils.getValue(e,
"horizontalStack","1");k.resizeParent="1"==mxUtils.getValue(e,"resizeParent","1");k.resizeLast="1"==mxUtils.getValue(e,"resizeLast","0");k.spacing=e.stackSpacing||k.spacing;k.border=e.stackBorder||k.border;k.marginLeft=e.marginLeft||0;k.marginRight=e.marginRight||0;k.marginTop=e.marginTop||0;k.marginBottom=e.marginBottom||0;k.allowGaps=e.allowGaps||0;k.fill=!0;k.allowGaps&&(k.gridSize=parseFloat(mxUtils.getValue(e,"stackUnitSize",20)));return k}if("treeLayout"==e.childLayout)return k=new mxCompactTreeLayout(this.graph),
k.horizontal="1"==mxUtils.getValue(e,"horizontalTree","1"),k.resizeParent="1"==mxUtils.getValue(e,"resizeParent","1"),k.groupPadding=mxUtils.getValue(e,"parentPadding",20),k.levelDistance=mxUtils.getValue(e,"treeLevelDistance",30),k.maintainParentLocation=!0,k.edgeRouting=!1,k.resetEdges=!1,k;if("flowLayout"==e.childLayout)return k=new mxHierarchicalLayout(this.graph,mxUtils.getValue(e,"flowOrientation",mxConstants.DIRECTION_EAST)),k.resizeParent="1"==mxUtils.getValue(e,"resizeParent","1"),k.parentBorder=
mxUtils.getValue(e,"parentPadding",20),k.maintainParentLocation=!0,k.intraCellSpacing=mxUtils.getValue(e,"intraCellSpacing",mxHierarchicalLayout.prototype.intraCellSpacing),k.interRankCellSpacing=mxUtils.getValue(e,"interRankCellSpacing",mxHierarchicalLayout.prototype.interRankCellSpacing),k.interHierarchySpacing=mxUtils.getValue(e,"interHierarchySpacing",mxHierarchicalLayout.prototype.interHierarchySpacing),k.parallelEdgeSpacing=mxUtils.getValue(e,"parallelEdgeSpacing",mxHierarchicalLayout.prototype.parallelEdgeSpacing),
-k;if("circleLayout"==e.childLayout)return new mxCircleLayout(this.graph);if("organicLayout"==e.childLayout)return new mxFastOrganicLayout(this.graph);if("tableLayout"==e.childLayout)return new TableLayout(this.graph)}return null}};Graph.prototype.getDataForCells=function(b){for(var c=[],e=0;e<b.length;e++){var k=null!=b[e].value?b[e].value.attributes:null,g={};g.id=b[e].id;if(null!=k)for(var p=0;p<k.length;p++)g[k[p].nodeName]=k[p].nodeValue;else g.label=this.convertValueToString(b[e]);c.push(g)}return c};
-Graph.prototype.getNodesForCells=function(b){for(var c=[],e=0;e<b.length;e++){var k=this.view.getState(b[e]);if(null!=k){for(var g=this.cellRenderer.getShapesForState(k),p=0;p<g.length;p++)null!=g[p]&&null!=g[p].node&&c.push(g[p].node);null!=k.control&&null!=k.control.node&&c.push(k.control.node)}}return c};
-Graph.prototype.createWipeAnimations=function(b,c){for(var e=[],k=0;k<b.length;k++){var g=this.view.getState(b[k]);null!=g&&null!=g.shape&&(this.model.isEdge(g.cell)&&null!=g.absolutePoints&&1<g.absolutePoints.length?e.push(this.createEdgeWipeAnimation(g,c)):this.model.isVertex(g.cell)&&null!=g.shape.bounds&&e.push(this.createVertexWipeAnimation(g,c)))}return e};
-Graph.prototype.createEdgeWipeAnimation=function(b,c){var e=b.absolutePoints.slice(),k=b.segments,g=b.length,p=e.length;return{execute:mxUtils.bind(this,function(t,d){if(null!=b.shape){var f=[e[0]],l=t/d;c||(l=1-l);for(var q=g*l,m=1;m<p;m++)if(q<=k[m-1]){f.push(new mxPoint(e[m-1].x+(e[m].x-e[m-1].x)*q/k[m-1],e[m-1].y+(e[m].y-e[m-1].y)*q/k[m-1]));break}else q-=k[m-1],f.push(e[m]);b.shape.points=f;b.shape.redraw();0==t&&Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),1);null!=b.text&&null!=
+k;if("circleLayout"==e.childLayout)return new mxCircleLayout(this.graph);if("organicLayout"==e.childLayout)return new mxFastOrganicLayout(this.graph);if("tableLayout"==e.childLayout)return new TableLayout(this.graph)}return null}};Graph.prototype.getDataForCells=function(b){for(var c=[],e=0;e<b.length;e++){var k=null!=b[e].value?b[e].value.attributes:null,f={};f.id=b[e].id;if(null!=k)for(var p=0;p<k.length;p++)f[k[p].nodeName]=k[p].nodeValue;else f.label=this.convertValueToString(b[e]);c.push(f)}return c};
+Graph.prototype.getNodesForCells=function(b){for(var c=[],e=0;e<b.length;e++){var k=this.view.getState(b[e]);if(null!=k){for(var f=this.cellRenderer.getShapesForState(k),p=0;p<f.length;p++)null!=f[p]&&null!=f[p].node&&c.push(f[p].node);null!=k.control&&null!=k.control.node&&c.push(k.control.node)}}return c};
+Graph.prototype.createWipeAnimations=function(b,c){for(var e=[],k=0;k<b.length;k++){var f=this.view.getState(b[k]);null!=f&&null!=f.shape&&(this.model.isEdge(f.cell)&&null!=f.absolutePoints&&1<f.absolutePoints.length?e.push(this.createEdgeWipeAnimation(f,c)):this.model.isVertex(f.cell)&&null!=f.shape.bounds&&e.push(this.createVertexWipeAnimation(f,c)))}return e};
+Graph.prototype.createEdgeWipeAnimation=function(b,c){var e=b.absolutePoints.slice(),k=b.segments,f=b.length,p=e.length;return{execute:mxUtils.bind(this,function(t,d){if(null!=b.shape){var g=[e[0]],l=t/d;c||(l=1-l);for(var q=f*l,m=1;m<p;m++)if(q<=k[m-1]){g.push(new mxPoint(e[m-1].x+(e[m].x-e[m-1].x)*q/k[m-1],e[m-1].y+(e[m].y-e[m-1].y)*q/k[m-1]));break}else q-=k[m-1],g.push(e[m]);b.shape.points=g;b.shape.redraw();0==t&&Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),1);null!=b.text&&null!=
b.text.node&&(b.text.node.style.opacity=l)}}),stop:mxUtils.bind(this,function(){null!=b.shape&&(b.shape.points=e,b.shape.redraw(),null!=b.text&&null!=b.text.node&&(b.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),c?1:0))})}};
-Graph.prototype.createVertexWipeAnimation=function(b,c){var e=new mxRectangle.fromRectangle(b.shape.bounds);return{execute:mxUtils.bind(this,function(k,g){if(null!=b.shape){var p=k/g;c||(p=1-p);b.shape.bounds=new mxRectangle(e.x,e.y,e.width*p,e.height);b.shape.redraw();0==k&&Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),1);null!=b.text&&null!=b.text.node&&(b.text.node.style.opacity=p)}}),stop:mxUtils.bind(this,function(){null!=b.shape&&(b.shape.bounds=e,b.shape.redraw(),null!=b.text&&null!=
-b.text.node&&(b.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),c?1:0))})}};Graph.prototype.executeAnimations=function(b,c,e,k){e=null!=e?e:30;k=null!=k?k:30;var g=null,p=0,t=mxUtils.bind(this,function(){if(p==e||this.stoppingCustomActions){window.clearInterval(g);for(var d=0;d<b.length;d++)b[d].stop();null!=c&&c()}else for(d=0;d<b.length;d++)b[d].execute(p,e);p++}),g=window.setInterval(t,k);t()};
+Graph.prototype.createVertexWipeAnimation=function(b,c){var e=new mxRectangle.fromRectangle(b.shape.bounds);return{execute:mxUtils.bind(this,function(k,f){if(null!=b.shape){var p=k/f;c||(p=1-p);b.shape.bounds=new mxRectangle(e.x,e.y,e.width*p,e.height);b.shape.redraw();0==k&&Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),1);null!=b.text&&null!=b.text.node&&(b.text.node.style.opacity=p)}}),stop:mxUtils.bind(this,function(){null!=b.shape&&(b.shape.bounds=e,b.shape.redraw(),null!=b.text&&null!=
+b.text.node&&(b.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),c?1:0))})}};Graph.prototype.executeAnimations=function(b,c,e,k){e=null!=e?e:30;k=null!=k?k:30;var f=null,p=0,t=mxUtils.bind(this,function(){if(p==e||this.stoppingCustomActions){window.clearInterval(f);for(var d=0;d<b.length;d++)b[d].stop();null!=c&&c()}else for(d=0;d<b.length;d++)b[d].execute(p,e);p++}),f=window.setInterval(t,k);t()};
Graph.prototype.getPageSize=function(){return this.pageVisible?new mxRectangle(0,0,this.pageFormat.width*this.pageScale,this.pageFormat.height*this.pageScale):this.scrollTileSize};
Graph.prototype.getPageLayout=function(){var b=this.getPageSize(),c=this.getGraphBounds();if(0==c.width||0==c.height)return new mxRectangle(0,0,1,1);var e=Math.floor(Math.ceil(c.x/this.view.scale-this.view.translate.x)/b.width),k=Math.floor(Math.ceil(c.y/this.view.scale-this.view.translate.y)/b.height);return new mxRectangle(e,k,Math.ceil((Math.floor((c.x+c.width)/this.view.scale)-this.view.translate.x)/b.width)-e,Math.ceil((Math.floor((c.y+c.height)/this.view.scale)-this.view.translate.y)/b.height)-
k)};Graph.prototype.sanitizeHtml=function(b,c){return Graph.sanitizeHtml(b,c)};Graph.prototype.updatePlaceholders=function(){var b=!1,c;for(c in this.model.cells){var e=this.model.cells[c];this.isReplacePlaceholders(e)&&(this.view.invalidate(e,!1,!1),b=!0)}b&&this.view.validate()};Graph.prototype.isReplacePlaceholders=function(b){return null!=b.value&&"object"==typeof b.value&&"1"==b.value.getAttribute("placeholders")};
@@ -2410,23 +2420,23 @@ Graph.prototype.getLabel=function(b){var c=mxGraph.prototype.getLabel.apply(this
Graph.prototype.setGridSize=function(b){this.gridSize=b;this.fireEvent(new mxEventObject("gridSizeChanged"))};Graph.prototype.setDefaultParent=function(b){this.defaultParent=b;this.fireEvent(new mxEventObject("defaultParentChanged"))};Graph.prototype.getClickableLinkForCell=function(b){do{var c=this.getLinkForCell(b);if(null!=c)return c;b=this.model.getParent(b)}while(null!=b);return null};
Graph.prototype.getGlobalVariable=function(b){var c=null;"date"==b?c=(new Date).toLocaleDateString():"time"==b?c=(new Date).toLocaleTimeString():"timestamp"==b?c=(new Date).toLocaleString():"date{"==b.substring(0,5)&&(b=b.substring(5,b.length-1),c=this.formatDate(new Date,b));return c};
Graph.prototype.formatDate=function(b,c,e){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",
-shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var k=this.dateFormatCache,g=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,p=/[^-+\dA-Z]/g,t=function(b,d){b=String(b);for(d=d||2;b.length<d;)b="0"+b;return b};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(b)||
-/\d/.test(b)||(c=b,b=void 0);b=b?new Date(b):new Date;if(isNaN(b))throw SyntaxError("invalid date");c=String(k.masks[c]||c||k.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),e=!0);var d=e?"getUTC":"get",f=b[d+"Date"](),l=b[d+"Day"](),q=b[d+"Month"](),m=b[d+"FullYear"](),n=b[d+"Hours"](),u=b[d+"Minutes"](),v=b[d+"Seconds"](),d=b[d+"Milliseconds"](),y=e?0:b.getTimezoneOffset(),x={d:f,dd:t(f),ddd:k.i18n.dayNames[l],dddd:k.i18n.dayNames[l+7],m:q+1,mm:t(q+1),mmm:k.i18n.monthNames[q],mmmm:k.i18n.monthNames[q+
-12],yy:String(m).slice(2),yyyy:m,h:n%12||12,hh:t(n%12||12),H:n,HH:t(n),M:u,MM:t(u),s:v,ss:t(v),l:t(d,3),L:t(99<d?Math.round(d/10):d),t:12>n?"a":"p",tt:12>n?"am":"pm",T:12>n?"A":"P",TT:12>n?"AM":"PM",Z:e?"UTC":(String(b).match(g)||[""]).pop().replace(p,""),o:(0<y?"-":"+")+t(100*Math.floor(Math.abs(y)/60)+Math.abs(y)%60,4),S:["th","st","nd","rd"][3<f%10?0:(10!=f%100-f%10)*f%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(b){return b in x?x[b]:b.slice(1,
+shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var k=this.dateFormatCache,f=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,p=/[^-+\dA-Z]/g,t=function(b,d){b=String(b);for(d=d||2;b.length<d;)b="0"+b;return b};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(b)||
+/\d/.test(b)||(c=b,b=void 0);b=b?new Date(b):new Date;if(isNaN(b))throw SyntaxError("invalid date");c=String(k.masks[c]||c||k.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),e=!0);var d=e?"getUTC":"get",g=b[d+"Date"](),l=b[d+"Day"](),q=b[d+"Month"](),m=b[d+"FullYear"](),n=b[d+"Hours"](),u=b[d+"Minutes"](),v=b[d+"Seconds"](),d=b[d+"Milliseconds"](),y=e?0:b.getTimezoneOffset(),x={d:g,dd:t(g),ddd:k.i18n.dayNames[l],dddd:k.i18n.dayNames[l+7],m:q+1,mm:t(q+1),mmm:k.i18n.monthNames[q],mmmm:k.i18n.monthNames[q+
+12],yy:String(m).slice(2),yyyy:m,h:n%12||12,hh:t(n%12||12),H:n,HH:t(n),M:u,MM:t(u),s:v,ss:t(v),l:t(d,3),L:t(99<d?Math.round(d/10):d),t:12>n?"a":"p",tt:12>n?"am":"pm",T:12>n?"A":"P",TT:12>n?"AM":"PM",Z:e?"UTC":(String(b).match(f)||[""]).pop().replace(p,""),o:(0<y?"-":"+")+t(100*Math.floor(Math.abs(y)/60)+Math.abs(y)%60,4),S:["th","st","nd","rd"][3<g%10?0:(10!=g%100-g%10)*g%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(b){return b in x?x[b]:b.slice(1,
b.length-1)})};Graph.prototype.getLayerForCells=function(b){var c=null;if(0<b.length){for(c=b[0];!this.model.isLayer(c);)c=this.model.getParent(c);for(var e=1;e<b.length;e++)if(!this.model.isAncestor(c,b[e])){c=null;break}}return c};
-Graph.prototype.createLayersDialog=function(b,c){var e=document.createElement("div");e.style.position="absolute";for(var k=this.getModel(),g=k.getChildCount(k.root),p=0;p<g;p++)mxUtils.bind(this,function(g){function d(){k.isVisible(g)?(q.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(l,75)):(q.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(l,25))}var f=this.convertValueToString(g)||mxResources.get("background")||"Background",l=document.createElement("div");l.style.overflow=
-"hidden";l.style.textOverflow="ellipsis";l.style.padding="2px";l.style.whiteSpace="nowrap";l.style.cursor="pointer";l.setAttribute("title",mxResources.get(k.isVisible(g)?"hideIt":"show",[f]));var q=document.createElement("img");q.setAttribute("draggable","false");q.setAttribute("align","absmiddle");q.setAttribute("border","0");q.style.position="relative";q.style.width="16px";q.style.padding="0px 6px 0 4px";c&&(q.style.filter="invert(100%)",q.style.top="-2px");l.appendChild(q);mxUtils.write(l,f);e.appendChild(l);
-mxEvent.addListener(l,"click",function(){k.setVisible(g,!k.isVisible(g));d();null!=b&&b(g)});d()})(k.getChildAt(k.root,p));return e};
-Graph.prototype.replacePlaceholders=function(b,c,e,k){k=[];if(null!=c){for(var g=0;match=this.placeholderPattern.exec(c);){var p=match[0];if(2<p.length&&"%label%"!=p&&"%tooltip%"!=p){var t=null;if(match.index>g&&"%"==c.charAt(match.index-1))t=p.substring(1);else{var d=p.substring(1,p.length-1);if("id"==d)t=b.id;else if(0>d.indexOf("{"))for(var f=b;null==t&&null!=f;)null!=f.value&&"object"==typeof f.value&&(Graph.translateDiagram&&null!=Graph.diagramLanguage&&(t=f.getAttribute(d+"_"+Graph.diagramLanguage)),
-null==t&&(t=f.hasAttribute(d)?null!=f.getAttribute(d)?f.getAttribute(d):"":null)),f=this.model.getParent(f);null==t&&(t=this.getGlobalVariable(d));null==t&&null!=e&&(t=e[d])}k.push(c.substring(g,match.index)+(null!=t?t:p));g=match.index+p.length}}k.push(c.substring(g))}return k.join("")};Graph.prototype.restoreSelection=function(b){if(null!=b&&0<b.length){for(var c=[],e=0;e<b.length;e++){var k=this.model.getCell(b[e].id);null!=k&&c.push(k)}this.setSelectionCells(c)}else this.clearSelection()};
+Graph.prototype.createLayersDialog=function(b,c){var e=document.createElement("div");e.style.position="absolute";for(var k=this.getModel(),f=k.getChildCount(k.root),p=0;p<f;p++)mxUtils.bind(this,function(f){function d(){k.isVisible(f)?(q.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(l,75)):(q.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(l,25))}var g=this.convertValueToString(f)||mxResources.get("background")||"Background",l=document.createElement("div");l.style.overflow=
+"hidden";l.style.textOverflow="ellipsis";l.style.padding="2px";l.style.whiteSpace="nowrap";l.style.cursor="pointer";l.setAttribute("title",mxResources.get(k.isVisible(f)?"hideIt":"show",[g]));var q=document.createElement("img");q.setAttribute("draggable","false");q.setAttribute("align","absmiddle");q.setAttribute("border","0");q.style.position="relative";q.style.width="16px";q.style.padding="0px 6px 0 4px";c&&(q.style.filter="invert(100%)",q.style.top="-2px");l.appendChild(q);mxUtils.write(l,g);e.appendChild(l);
+mxEvent.addListener(l,"click",function(){k.setVisible(f,!k.isVisible(f));d();null!=b&&b(f)});d()})(k.getChildAt(k.root,p));return e};
+Graph.prototype.replacePlaceholders=function(b,c,e,k){k=[];if(null!=c){for(var f=0;match=this.placeholderPattern.exec(c);){var p=match[0];if(2<p.length&&"%label%"!=p&&"%tooltip%"!=p){var t=null;if(match.index>f&&"%"==c.charAt(match.index-1))t=p.substring(1);else{var d=p.substring(1,p.length-1);if("id"==d)t=b.id;else if(0>d.indexOf("{"))for(var g=b;null==t&&null!=g;)null!=g.value&&"object"==typeof g.value&&(Graph.translateDiagram&&null!=Graph.diagramLanguage&&(t=g.getAttribute(d+"_"+Graph.diagramLanguage)),
+null==t&&(t=g.hasAttribute(d)?null!=g.getAttribute(d)?g.getAttribute(d):"":null)),g=this.model.getParent(g);null==t&&(t=this.getGlobalVariable(d));null==t&&null!=e&&(t=e[d])}k.push(c.substring(f,match.index)+(null!=t?t:p));f=match.index+p.length}}k.push(c.substring(f))}return k.join("")};Graph.prototype.restoreSelection=function(b){if(null!=b&&0<b.length){for(var c=[],e=0;e<b.length;e++){var k=this.model.getCell(b[e].id);null!=k&&c.push(k)}this.setSelectionCells(c)}else this.clearSelection()};
Graph.prototype.selectCellsForConnectVertex=function(b,c,e){2==b.length&&this.model.isVertex(b[1])?(this.setSelectionCell(b[1]),this.scrollCellToVisible(b[1]),null!=e&&(mxEvent.isTouchEvent(c)?e.update(e.getState(this.view.getState(b[1]))):e.reset())):this.setSelectionCells(b)};Graph.prototype.isCloneConnectSource=function(b){var c=null;null!=this.layoutManager&&(c=this.layoutManager.getLayout(this.model.getParent(b)));return this.isTableRow(b)||this.isTableCell(b)||null!=c&&c.constructor==mxStackLayout};
-Graph.prototype.connectVertex=function(b,c,e,k,g,p,t,d){p=p?p:!1;if(b.geometry.relative&&this.model.isEdge(b.parent))return[];for(;b.geometry.relative&&this.model.isVertex(b.parent);)b=b.parent;var f=this.isCloneConnectSource(b),l=f?b:this.getCompositeParent(b),q=b.geometry.relative&&null!=b.parent.geometry?new mxPoint(b.parent.geometry.width*b.geometry.x,b.parent.geometry.height*b.geometry.y):new mxPoint(l.geometry.x,l.geometry.y);c==mxConstants.DIRECTION_NORTH?(q.x+=l.geometry.width/2,q.y-=e):c==
+Graph.prototype.connectVertex=function(b,c,e,k,f,p,t,d){p=p?p:!1;if(b.geometry.relative&&this.model.isEdge(b.parent))return[];for(;b.geometry.relative&&this.model.isVertex(b.parent);)b=b.parent;var g=this.isCloneConnectSource(b),l=g?b:this.getCompositeParent(b),q=b.geometry.relative&&null!=b.parent.geometry?new mxPoint(b.parent.geometry.width*b.geometry.x,b.parent.geometry.height*b.geometry.y):new mxPoint(l.geometry.x,l.geometry.y);c==mxConstants.DIRECTION_NORTH?(q.x+=l.geometry.width/2,q.y-=e):c==
mxConstants.DIRECTION_SOUTH?(q.x+=l.geometry.width/2,q.y+=l.geometry.height+e):(q.x=c==mxConstants.DIRECTION_WEST?q.x-e:q.x+(l.geometry.width+e),q.y+=l.geometry.height/2);var m=this.view.getState(this.model.getParent(b));e=this.view.scale;var n=this.view.translate,l=n.x*e,n=n.y*e;null!=m&&this.model.isVertex(m.cell)&&(l=m.x,n=m.y);this.model.isVertex(b.parent)&&b.geometry.relative&&(q.x+=b.parent.geometry.x,q.y+=b.parent.geometry.y);p=p?null:(new mxRectangle(l+q.x*e,n+q.y*e)).grow(40*e);p=null!=p?
this.getCells(0,0,0,0,null,null,p,null,!0):null;var m=this.view.getState(b),u=null,v=null;if(null!=p){p=p.reverse();for(var y=0;y<p.length;y++)if(!this.isCellLocked(p[y])&&!this.model.isEdge(p[y])&&p[y]!=b)if(!this.model.isAncestor(b,p[y])&&this.isContainer(p[y])&&(null==u||p[y]==this.model.getParent(b)))u=p[y];else if(null==v&&this.isCellConnectable(p[y])&&!this.model.isAncestor(p[y],b)&&!this.isSwimlane(p[y])){var x=this.view.getState(p[y]);null==m||null==x||mxUtils.intersects(m,x)||(v=p[y])}}var F=
-!mxEvent.isShiftDown(k)||mxEvent.isControlDown(k)||g;F&&("1"!=urlParams.sketch||g)&&(c==mxConstants.DIRECTION_NORTH?q.y-=b.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?q.y+=b.geometry.height/2:q.x=c==mxConstants.DIRECTION_WEST?q.x-b.geometry.width/2:q.x+b.geometry.width/2);var H=[],z=v,v=u;g=mxUtils.bind(this,function(e){if(null==t||null!=e||null==v&&f){this.model.beginUpdate();try{if(null==z&&F){var g=this.getAbsoluteParent(null!=e?e:b),g=f?b:this.getCompositeParent(g);z=null!=e?e:this.duplicateCells([g],
-!1)[0];null!=e&&this.addCells([z],this.model.getParent(b),null,null,null,!0);var l=this.getCellGeometry(z);null!=l&&(null!=e&&"1"==urlParams.sketch&&(c==mxConstants.DIRECTION_NORTH?q.y-=l.height/2:c==mxConstants.DIRECTION_SOUTH?q.y+=l.height/2:q.x=c==mxConstants.DIRECTION_WEST?q.x-l.width/2:q.x+l.width/2),l.x=q.x-l.width/2,l.y=q.y-l.height/2);null!=u?(this.addCells([z],u,null,null,null,!0),v=null):F&&!f&&this.addCells([z],this.getDefaultParent(),null,null,null,!0)}var m=mxEvent.isControlDown(k)&&
-mxEvent.isShiftDown(k)&&F||null==v&&f?null:this.insertEdge(this.model.getParent(b),null,"",b,z,this.createCurrentEdgeStyle());if(null!=m&&this.connectionHandler.insertBeforeSource){var n=null;for(e=b;null!=e.parent&&null!=e.geometry&&e.geometry.relative&&e.parent!=m.parent;)e=this.model.getParent(e);null!=e&&null!=e.parent&&e.parent==m.parent&&(n=e.parent.getIndex(e),this.model.add(e.parent,m,n))}null==v&&null!=z&&null!=b.parent&&f&&c==mxConstants.DIRECTION_WEST&&(n=b.parent.getIndex(b),this.model.add(b.parent,
-z,n));null!=m&&H.push(m);null==v&&null!=z&&H.push(z);null==z&&null!=m&&m.geometry.setTerminalPoint(q,!1);null!=m&&this.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{this.model.endUpdate()}}if(null!=d)d(H);else return H});if(null==t||null!=z||!F||null==v&&f)return g(z);t(l+q.x*e,n+q.y*e,g)};
+!mxEvent.isShiftDown(k)||mxEvent.isControlDown(k)||f;F&&("1"!=urlParams.sketch||f)&&(c==mxConstants.DIRECTION_NORTH?q.y-=b.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?q.y+=b.geometry.height/2:q.x=c==mxConstants.DIRECTION_WEST?q.x-b.geometry.width/2:q.x+b.geometry.width/2);var H=[],z=v,v=u;f=mxUtils.bind(this,function(e){if(null==t||null!=e||null==v&&g){this.model.beginUpdate();try{if(null==z&&F){var f=this.getAbsoluteParent(null!=e?e:b),f=g?b:this.getCompositeParent(f);z=null!=e?e:this.duplicateCells([f],
+!1)[0];null!=e&&this.addCells([z],this.model.getParent(b),null,null,null,!0);var l=this.getCellGeometry(z);null!=l&&(null!=e&&"1"==urlParams.sketch&&(c==mxConstants.DIRECTION_NORTH?q.y-=l.height/2:c==mxConstants.DIRECTION_SOUTH?q.y+=l.height/2:q.x=c==mxConstants.DIRECTION_WEST?q.x-l.width/2:q.x+l.width/2),l.x=q.x-l.width/2,l.y=q.y-l.height/2);null!=u?(this.addCells([z],u,null,null,null,!0),v=null):F&&!g&&this.addCells([z],this.getDefaultParent(),null,null,null,!0)}var m=mxEvent.isControlDown(k)&&
+mxEvent.isShiftDown(k)&&F||null==v&&g?null:this.insertEdge(this.model.getParent(b),null,"",b,z,this.createCurrentEdgeStyle());if(null!=m&&this.connectionHandler.insertBeforeSource){var n=null;for(e=b;null!=e.parent&&null!=e.geometry&&e.geometry.relative&&e.parent!=m.parent;)e=this.model.getParent(e);null!=e&&null!=e.parent&&e.parent==m.parent&&(n=e.parent.getIndex(e),this.model.add(e.parent,m,n))}null==v&&null!=z&&null!=b.parent&&g&&c==mxConstants.DIRECTION_WEST&&(n=b.parent.getIndex(b),this.model.add(b.parent,
+z,n));null!=m&&H.push(m);null==v&&null!=z&&H.push(z);null==z&&null!=m&&m.geometry.setTerminalPoint(q,!1);null!=m&&this.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{this.model.endUpdate()}}if(null!=d)d(H);else return H});if(null==t||null!=z||!F||null==v&&g)return f(z);t(l+q.x*e,n+q.y*e,f)};
Graph.prototype.getIndexableText=function(){var b=document.createElement("div"),c=[],e,k;for(k in this.model.cells)if(e=this.model.cells[k],this.model.isVertex(e)||this.model.isEdge(e))this.isHtmlLabel(e)?(b.innerHTML=this.sanitizeHtml(this.getLabel(e)),e=mxUtils.extractTextWithWhitespace([b])):e=this.getLabel(e),e=mxUtils.trim(e.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<e.length&&c.push(e);return c.join(" ")};
Graph.prototype.convertValueToString=function(b){var c=this.model.getValue(b);if(null!=c&&"object"==typeof c){var e=null;if(this.isReplacePlaceholders(b)&&null!=b.getAttribute("placeholder"))for(var c=b.getAttribute("placeholder"),k=b;null==e&&null!=k;)null!=k.value&&"object"==typeof k.value&&(e=k.hasAttribute(c)?null!=k.getAttribute(c)?k.getAttribute(c):"":null),k=this.model.getParent(k);else e=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(e=c.getAttribute("label_"+Graph.diagramLanguage)),
null==e&&(e=c.getAttribute("label")||"");return e||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};Graph.prototype.getLinksForState=function(b){return null!=b&&null!=b.text&&null!=b.text.node?b.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(b){return null!=b.value&&"object"==typeof b.value?(b=b.value.getAttribute("link"),null!=b&&"javascript:"===b.toLowerCase().substring(0,11)&&(b=b.substring(11)),b):null};
@@ -2435,18 +2445,18 @@ Graph.prototype.updateHorizontalStyle=function(b,c){if(null!=b&&null!=c&&null!=t
Graph.prototype.replaceDefaultColors=function(b,c){if(null!=c){var e=mxUtils.hex2rgb(this.shapeBackgroundColor),k=mxUtils.hex2rgb(this.shapeForegroundColor);this.replaceDefaultColor(c,mxConstants.STYLE_FONTCOLOR,k);this.replaceDefaultColor(c,mxConstants.STYLE_FILLCOLOR,e);this.replaceDefaultColor(c,mxConstants.STYLE_STROKECOLOR,k);this.replaceDefaultColor(c,mxConstants.STYLE_IMAGE_BORDER,k);this.replaceDefaultColor(c,mxConstants.STYLE_IMAGE_BACKGROUND,e);this.replaceDefaultColor(c,mxConstants.STYLE_LABEL_BORDERCOLOR,
k);this.replaceDefaultColor(c,mxConstants.STYLE_SWIMLANE_FILLCOLOR,e);this.replaceDefaultColor(c,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,e)}return c};Graph.prototype.replaceDefaultColor=function(b,c,e){null!=b&&"default"==b[c]&&null!=e&&(b[c]=e)};
Graph.prototype.updateAlternateBounds=function(b,c,e){if(null!=b&&null!=c&&null!=this.layoutManager&&null!=c.alternateBounds){var k=this.layoutManager.getLayout(this.model.getParent(b));null!=k&&k.constructor==mxStackLayout&&(k.horizontal?c.alternateBounds.height=0:c.alternateBounds.width=0)}mxGraph.prototype.updateAlternateBounds.apply(this,arguments)};Graph.prototype.isMoveCellsEvent=function(b,c){return mxEvent.isShiftDown(b)||"1"==mxUtils.getValue(c.style,"moveCells","0")};
-Graph.prototype.foldCells=function(b,c,e,k,g){c=null!=c?c:!1;null==e&&(e=this.getFoldableCells(this.getSelectionCells(),b));if(null!=e){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var p=0;p<e.length;p++){var t=this.view.getState(e[p]),d=this.getCellGeometry(e[p]);if(null!=t&&null!=d){var f=Math.round(d.width-t.width/this.view.scale),l=Math.round(d.height-t.height/this.view.scale);if(0!=l||0!=f){var q=this.model.getParent(e[p]),m=this.layoutManager.getLayout(q);
-null==m?null!=g&&this.isMoveCellsEvent(g,t)&&this.moveSiblings(t,q,f,l):null!=g&&mxEvent.isAltDown(g)||m.constructor!=mxStackLayout||m.resizeLast||this.resizeParentStacks(q,m,f,l)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(e)}};
-Graph.prototype.moveSiblings=function(b,c,e,k){this.model.beginUpdate();try{var g=this.getCellsBeyond(b.x,b.y,c,!0,!0);for(c=0;c<g.length;c++)if(g[c]!=b.cell){var p=this.view.getState(g[c]),t=this.getCellGeometry(g[c]);null!=p&&null!=t&&(t=t.clone(),t.translate(Math.round(e*Math.max(0,Math.min(1,(p.x-b.x)/b.width))),Math.round(k*Math.max(0,Math.min(1,(p.y-b.y)/b.height)))),this.model.setGeometry(g[c],t))}}finally{this.model.endUpdate()}};
-Graph.prototype.resizeParentStacks=function(b,c,e,k){if(null!=this.layoutManager&&null!=c&&c.constructor==mxStackLayout&&!c.resizeLast){this.model.beginUpdate();try{for(var g=c.horizontal;null!=b&&null!=c&&c.constructor==mxStackLayout&&c.horizontal==g&&!c.resizeLast;){var p=this.getCellGeometry(b),t=this.view.getState(b);null!=t&&null!=p&&(p=p.clone(),c.horizontal?p.width+=e+Math.min(0,t.width/this.view.scale-p.width):p.height+=k+Math.min(0,t.height/this.view.scale-p.height),this.model.setGeometry(b,
+Graph.prototype.foldCells=function(b,c,e,k,f){c=null!=c?c:!1;null==e&&(e=this.getFoldableCells(this.getSelectionCells(),b));if(null!=e){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var p=0;p<e.length;p++){var t=this.view.getState(e[p]),d=this.getCellGeometry(e[p]);if(null!=t&&null!=d){var g=Math.round(d.width-t.width/this.view.scale),l=Math.round(d.height-t.height/this.view.scale);if(0!=l||0!=g){var q=this.model.getParent(e[p]),m=this.layoutManager.getLayout(q);
+null==m?null!=f&&this.isMoveCellsEvent(f,t)&&this.moveSiblings(t,q,g,l):null!=f&&mxEvent.isAltDown(f)||m.constructor!=mxStackLayout||m.resizeLast||this.resizeParentStacks(q,m,g,l)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(e)}};
+Graph.prototype.moveSiblings=function(b,c,e,k){this.model.beginUpdate();try{var f=this.getCellsBeyond(b.x,b.y,c,!0,!0);for(c=0;c<f.length;c++)if(f[c]!=b.cell){var p=this.view.getState(f[c]),t=this.getCellGeometry(f[c]);null!=p&&null!=t&&(t=t.clone(),t.translate(Math.round(e*Math.max(0,Math.min(1,(p.x-b.x)/b.width))),Math.round(k*Math.max(0,Math.min(1,(p.y-b.y)/b.height)))),this.model.setGeometry(f[c],t))}}finally{this.model.endUpdate()}};
+Graph.prototype.resizeParentStacks=function(b,c,e,k){if(null!=this.layoutManager&&null!=c&&c.constructor==mxStackLayout&&!c.resizeLast){this.model.beginUpdate();try{for(var f=c.horizontal;null!=b&&null!=c&&c.constructor==mxStackLayout&&c.horizontal==f&&!c.resizeLast;){var p=this.getCellGeometry(b),t=this.view.getState(b);null!=t&&null!=p&&(p=p.clone(),c.horizontal?p.width+=e+Math.min(0,t.width/this.view.scale-p.width):p.height+=k+Math.min(0,t.height/this.view.scale-p.height),this.model.setGeometry(b,
p));b=this.model.getParent(b);c=this.layoutManager.getLayout(b)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(b){var c=this.getCurrentCellStyle(b);return this.isSwimlane(b)?"0"!=c.container:"1"==c.container};Graph.prototype.isCellConnectable=function(b){var c=this.getCurrentCellStyle(b);return null!=c.connectable?"0"!=c.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)};
Graph.prototype.isLabelMovable=function(b){var c=this.getCurrentCellStyle(b);return null!=c.movableLabel?"0"!=c.movableLabel:mxGraph.prototype.isLabelMovable.apply(this,arguments)};Graph.prototype.selectAll=function(b){b=b||this.getDefaultParent();this.isCellLocked(b)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(b,c,e){e=e||this.getDefaultParent();this.isCellLocked(e)||mxGraph.prototype.selectCells.apply(this,arguments)};
Graph.prototype.getSwimlaneAt=function(b,c,e){var k=mxGraph.prototype.getSwimlaneAt.apply(this,arguments);this.isCellLocked(k)&&(k=null);return k};Graph.prototype.isCellFoldable=function(b){var c=this.getCurrentCellStyle(b);return this.foldingEnabled&&"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&("1"==c.treeFolding||!this.isCellLocked(b)&&(this.isContainer(b)&&"0"!=c.collapsible||!this.isContainer(b)&&"1"==c.collapsible))};
Graph.prototype.reset=function(){this.isEditing()&&this.stopEditing(!0);this.escape();this.isSelectionEmpty()||this.clearSelection()};Graph.prototype.zoom=function(b,c){b=Math.max(.01,Math.min(this.view.scale*b,160))/this.view.scale;mxGraph.prototype.zoom.apply(this,arguments)};Graph.prototype.zoomIn=function(){.15>this.view.scale?this.zoom((this.view.scale+.01)/this.view.scale):this.zoom(Math.round(this.view.scale*this.zoomFactor*20)/20/this.view.scale)};
Graph.prototype.zoomOut=function(){.15>=this.view.scale?this.zoom((this.view.scale-.01)/this.view.scale):this.zoom(Math.round(1/this.zoomFactor*this.view.scale*20)/20/this.view.scale)};
-Graph.prototype.fitWindow=function(b,c){c=null!=c?c:10;var e=this.container.clientWidth-c,k=this.container.clientHeight-c,g=Math.floor(20*Math.min(e/b.width,k/b.height))/20;this.zoomTo(g);if(mxUtils.hasScrollbars(this.container)){var p=this.view.translate;this.container.scrollTop=(b.y+p.y)*g-Math.max((k-b.height*g)/2+c/2,0);this.container.scrollLeft=(b.x+p.x)*g-Math.max((e-b.width*g)/2+c/2,0)}};
-Graph.prototype.getTooltipForCell=function(b){var c="";if(mxUtils.isNode(b.value)){var e=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&(e=b.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==e&&(e=b.value.getAttribute("tooltip"));if(null!=e)null!=e&&this.isReplacePlaceholders(b)&&(e=this.replacePlaceholders(b,e)),c=this.sanitizeHtml(e);else{e=this.builtInProperties;b=b.value.attributes;var k=[];this.isEnabled()&&(e.push("linkTarget"),e.push("link"));for(var g=0;g<b.length;g++)0>
-mxUtils.indexOf(e,b[g].nodeName)&&0<b[g].nodeValue.length&&k.push({name:b[g].nodeName,value:b[g].nodeValue});k.sort(function(b,c){return b.name<c.name?-1:b.name>c.name?1:0});for(g=0;g<k.length;g++)"link"==k[g].name&&this.isCustomLink(k[g].value)||(c+=("link"!=k[g].name?"<b>"+k[g].name+":</b> ":"")+mxUtils.htmlEntities(k[g].value)+"\n");0<c.length&&(c=c.substring(0,c.length-1),mxClient.IS_SVG&&(c='<div style="max-width:360px;text-overflow:ellipsis;overflow:hidden;">'+c+"</div>"))}}return c};
+Graph.prototype.fitWindow=function(b,c){c=null!=c?c:10;var e=this.container.clientWidth-c,k=this.container.clientHeight-c,f=Math.floor(20*Math.min(e/b.width,k/b.height))/20;this.zoomTo(f);if(mxUtils.hasScrollbars(this.container)){var p=this.view.translate;this.container.scrollTop=(b.y+p.y)*f-Math.max((k-b.height*f)/2+c/2,0);this.container.scrollLeft=(b.x+p.x)*f-Math.max((e-b.width*f)/2+c/2,0)}};
+Graph.prototype.getTooltipForCell=function(b){var c="";if(mxUtils.isNode(b.value)){var e=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&(e=b.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==e&&(e=b.value.getAttribute("tooltip"));if(null!=e)null!=e&&this.isReplacePlaceholders(b)&&(e=this.replacePlaceholders(b,e)),c=this.sanitizeHtml(e);else{e=this.builtInProperties;b=b.value.attributes;var k=[];this.isEnabled()&&(e.push("linkTarget"),e.push("link"));for(var f=0;f<b.length;f++)0>
+mxUtils.indexOf(e,b[f].nodeName)&&0<b[f].nodeValue.length&&k.push({name:b[f].nodeName,value:b[f].nodeValue});k.sort(function(b,c){return b.name<c.name?-1:b.name>c.name?1:0});for(f=0;f<k.length;f++)"link"==k[f].name&&this.isCustomLink(k[f].value)||(c+=("link"!=k[f].name?"<b>"+k[f].name+":</b> ":"")+mxUtils.htmlEntities(k[f].value)+"\n");0<c.length&&(c=c.substring(0,c.length-1),mxClient.IS_SVG&&(c='<div style="max-width:360px;text-overflow:ellipsis;overflow:hidden;">'+c+"</div>"))}}return c};
Graph.prototype.getFlowAnimationStyle=function(){var b=document.getElementsByTagName("head")[0];if(null!=b&&null==this.flowAnimationStyle){this.flowAnimationStyle=document.createElement("style");this.flowAnimationStyle.setAttribute("id","geEditorFlowAnimation-"+Editor.guid());this.flowAnimationStyle.type="text/css";var c=this.flowAnimationStyle.getAttribute("id");this.flowAnimationStyle.innerHTML=this.getFlowAnimationStyleCss(c);b.appendChild(this.flowAnimationStyle)}return this.flowAnimationStyle};
Graph.prototype.getFlowAnimationStyleCss=function(b){return"."+b+" {\nanimation: "+b+" 0.5s linear;\nanimation-iteration-count: infinite;\n}\n@keyframes "+b+" {\nto {\nstroke-dashoffset: "+-16*this.view.scale+";\n}\n}"};Graph.prototype.stringToBytes=function(b){return Graph.stringToBytes(b)};Graph.prototype.bytesToString=function(b){return Graph.bytesToString(b)};Graph.prototype.compressNode=function(b){return Graph.compressNode(b)};Graph.prototype.compress=function(b,c){return Graph.compress(b,c)};
Graph.prototype.decompress=function(b,c){return Graph.decompress(b,c)};Graph.prototype.zapGremlins=function(b){return Graph.zapGremlins(b)};HoverIcons=function(b){mxEventSource.call(this);this.graph=b;this.init()};mxUtils.extend(HoverIcons,mxEventSource);HoverIcons.prototype.arrowSpacing=2;HoverIcons.prototype.updateDelay=500;HoverIcons.prototype.activationDelay=140;HoverIcons.prototype.currentState=null;HoverIcons.prototype.activeArrow=null;HoverIcons.prototype.inactiveOpacity=15;
@@ -2469,199 +2479,199 @@ HoverIcons.prototype.getDirection=function(){var b=mxConstants.DIRECTION_EAST;th
HoverIcons.prototype.setDisplay=function(b){this.visitNodes(function(c){c.style.display=b})};HoverIcons.prototype.isActive=function(){return null!=this.activeArrow&&null!=this.currentState};
HoverIcons.prototype.drag=function(b,c,e){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);null!=this.currentState&&(this.graph.connectionHandler.start(this.currentState,c,e),this.graph.isMouseTrigger=mxEvent.isMouseEvent(b),this.graph.isMouseDown=!0,c=this.graph.selectionCellsHandler.getHandler(this.currentState.cell),null!=c&&c.setHandlesVisible(!1),c=this.graph.connectionHandler.edgeState,null!=b&&mxEvent.isShiftDown(b)&&mxEvent.isControlDown(b)&&null!=c&&"orthogonalEdgeStyle"===
mxUtils.getValue(c.style,mxConstants.STYLE_EDGE,null)&&(b=this.getDirection(),c.cell.style=mxUtils.setStyle(c.cell.style,"sourcePortConstraint",b),c.style.sourcePortConstraint=b))};HoverIcons.prototype.getStateAt=function(b,c,e){return this.graph.view.getState(this.graph.getCellAt(c,e))};
-HoverIcons.prototype.click=function(b,c,e){var k=e.getEvent(),g=e.getGraphX(),p=e.getGraphY(),g=this.getStateAt(b,g,p);null==g||!this.graph.model.isEdge(g.cell)||this.graph.isCloneEvent(k)||g.getVisibleTerminalState(!0)!=b&&g.getVisibleTerminalState(!1)!=b?null!=b&&this.execute(b,c,e):(this.graph.setSelectionCell(g.cell),this.reset());e.consume()};
+HoverIcons.prototype.click=function(b,c,e){var k=e.getEvent(),f=e.getGraphX(),p=e.getGraphY(),f=this.getStateAt(b,f,p);null==f||!this.graph.model.isEdge(f.cell)||this.graph.isCloneEvent(k)||f.getVisibleTerminalState(!0)!=b&&f.getVisibleTerminalState(!1)!=b?null!=b&&this.execute(b,c,e):(this.graph.setSelectionCell(f.cell),this.reset());e.consume()};
HoverIcons.prototype.execute=function(b,c,e){e=e.getEvent();this.graph.selectCellsForConnectVertex(this.graph.connectVertex(b.cell,c,this.graph.defaultEdgeLength,e,this.graph.isCloneEvent(e),this.graph.isCloneEvent(e)),e,this)};HoverIcons.prototype.reset=function(b){null!=b&&!b||null==this.updateThread||window.clearTimeout(this.updateThread);this.activeArrow=this.currentState=this.mouseDownPoint=null;this.removeNodes();this.bbox=null;this.fireEvent(new mxEventObject("reset"))};
HoverIcons.prototype.repaint=function(){this.bbox=null;if(null!=this.currentState){this.currentState=this.getState(this.currentState);if(null!=this.currentState&&this.graph.model.isVertex(this.currentState.cell)&&this.graph.isCellConnectable(this.currentState.cell)){var b=mxRectangle.fromRectangle(this.currentState);null!=this.currentState.shape&&null!=this.currentState.shape.boundingBox&&(b=mxRectangle.fromRectangle(this.currentState.shape.boundingBox));b.grow(this.graph.tolerance);b.grow(this.arrowSpacing);
var c=this.graph.selectionCellsHandler.getHandler(this.currentState.cell);this.graph.isTableRow(this.currentState.cell)&&(c=this.graph.selectionCellsHandler.getHandler(this.graph.model.getParent(this.currentState.cell)));var e=null;null!=c&&(b.x-=c.horizontalOffset/2,b.y-=c.verticalOffset/2,b.width+=c.horizontalOffset,b.height+=c.verticalOffset,null!=c.rotationShape&&null!=c.rotationShape.node&&"hidden"!=c.rotationShape.node.style.visibility&&"none"!=c.rotationShape.node.style.display&&null!=c.rotationShape.boundingBox&&
-(e=c.rotationShape.boundingBox));c=mxUtils.bind(this,function(b,f,c){if(null!=e){var d=new mxRectangle(f,c,b.clientWidth,b.clientHeight);mxUtils.intersects(d,e)&&(b==this.arrowUp?c-=d.y+d.height-e.y:b==this.arrowRight?f+=e.x+e.width-d.x:b==this.arrowDown?c+=e.y+e.height-d.y:b==this.arrowLeft&&(f-=d.x+d.width-e.x))}b.style.left=f+"px";b.style.top=c+"px";mxUtils.setOpacity(b,this.inactiveOpacity)});c(this.arrowUp,Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance),Math.round(b.y-
+(e=c.rotationShape.boundingBox));c=mxUtils.bind(this,function(b,g,c){if(null!=e){var d=new mxRectangle(g,c,b.clientWidth,b.clientHeight);mxUtils.intersects(d,e)&&(b==this.arrowUp?c-=d.y+d.height-e.y:b==this.arrowRight?g+=e.x+e.width-d.x:b==this.arrowDown?c+=e.y+e.height-d.y:b==this.arrowLeft&&(g-=d.x+d.width-e.x))}b.style.left=g+"px";b.style.top=c+"px";mxUtils.setOpacity(b,this.inactiveOpacity)});c(this.arrowUp,Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance),Math.round(b.y-
this.triangleUp.height-this.tolerance));c(this.arrowRight,Math.round(b.x+b.width-this.tolerance),Math.round(this.currentState.getCenterY()-this.triangleRight.height/2-this.tolerance));c(this.arrowDown,parseInt(this.arrowUp.style.left),Math.round(b.y+b.height-this.tolerance));c(this.arrowLeft,Math.round(b.x-this.triangleLeft.width-this.tolerance),parseInt(this.arrowRight.style.top));if(this.checkCollisions){var c=this.graph.getCellAt(b.x+b.width+this.triangleRight.width/2,this.currentState.getCenterY()),
-k=this.graph.getCellAt(b.x-this.triangleLeft.width/2,this.currentState.getCenterY()),g=this.graph.getCellAt(this.currentState.getCenterX(),b.y-this.triangleUp.height/2),b=this.graph.getCellAt(this.currentState.getCenterX(),b.y+b.height+this.triangleDown.height/2);null!=c&&c==k&&k==g&&g==b&&(b=g=k=c=null);var p=this.graph.getCellGeometry(this.currentState.cell),t=mxUtils.bind(this,function(b,f){var d=this.graph.model.isVertex(b)&&this.graph.getCellGeometry(b);null==b||this.graph.model.isAncestor(b,
-this.currentState.cell)||this.graph.isSwimlane(b)||!(null==d||null==p||d.height<3*p.height&&d.width<3*p.width)?f.style.visibility="visible":f.style.visibility="hidden"});t(c,this.arrowRight);t(k,this.arrowLeft);t(g,this.arrowUp);t(b,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),
+k=this.graph.getCellAt(b.x-this.triangleLeft.width/2,this.currentState.getCenterY()),f=this.graph.getCellAt(this.currentState.getCenterX(),b.y-this.triangleUp.height/2),b=this.graph.getCellAt(this.currentState.getCenterX(),b.y+b.height+this.triangleDown.height/2);null!=c&&c==k&&k==f&&f==b&&(b=f=k=c=null);var p=this.graph.getCellGeometry(this.currentState.cell),t=mxUtils.bind(this,function(b,g){var d=this.graph.model.isVertex(b)&&this.graph.getCellGeometry(b);null==b||this.graph.model.isAncestor(b,
+this.currentState.cell)||this.graph.isSwimlane(b)||!(null==d||null==p||d.height<3*p.height&&d.width<3*p.width)?g.style.visibility="visible":g.style.visibility="hidden"});t(c,this.arrowRight);t(k,this.arrowLeft);t(f,this.arrowUp);t(b,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),
this.arrowRight.setAttribute("title",mxResources.get("plusTooltip")),this.arrowUp.setAttribute("title",mxResources.get("plusTooltip")),this.arrowDown.setAttribute("title",mxResources.get("plusTooltip"))):(this.arrowLeft.removeAttribute("title"),this.arrowRight.removeAttribute("title"),this.arrowUp.removeAttribute("title"),this.arrowDown.removeAttribute("title"))}else this.reset();null!=this.currentState&&(this.bbox=this.computeBoundingBox(),null!=this.bbox&&this.bbox.grow(10))}};
HoverIcons.prototype.computeBoundingBox=function(){var b=this.graph.model.isEdge(this.currentState.cell)?null:mxRectangle.fromRectangle(this.currentState);this.visitNodes(function(c){null!=c.parentNode&&(c=new mxRectangle(c.offsetLeft,c.offsetTop,c.offsetWidth,c.offsetHeight),null==b?b=c:b.add(c))});return b};
HoverIcons.prototype.getState=function(b){if(null!=b)if(b=b.cell,this.graph.getModel().contains(b)){if(this.graph.getModel().isVertex(b)&&!this.graph.isCellConnectable(b)){var c=this.graph.getModel().getParent(b);this.graph.getModel().isVertex(c)&&this.graph.isCellConnectable(c)&&(b=c)}if(this.graph.isCellLocked(b)||this.graph.model.isEdge(b))b=null;b=this.graph.view.getState(b);null!=b&&null==b.style&&(b=null)}else b=null;return b};
HoverIcons.prototype.update=function(b,c,e){if(!this.graph.connectionArrowsEnabled||null!=b&&"0"==mxUtils.getValue(b.style,"allowArrows","1"))this.reset();else{null!=b&&null!=b.cell.geometry&&b.cell.geometry.relative&&this.graph.model.isEdge(b.cell.parent)&&(b=null);var k=null;this.prev!=b||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=b,k=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=b&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||
this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=b,this.update(b,c,e))}),this.updateDelay+10))):null!=this.startTime&&(k=(new Date).getTime()-this.startTime);this.setDisplay("");null!=this.currentState&&this.currentState!=b&&k<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,c,e)?this.reset(!1):(null!=this.currentState||k>this.activationDelay)&&this.currentState!=b&&(k>this.updateDelay&&null!=b||null==this.bbox||null==c||null==e||!mxUtils.contains(this.bbox,
c,e))&&(null!=b&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(b),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=b&&this.graph.connectionHandler.constraintHandler.reset()):this.reset())}};
-HoverIcons.prototype.setCurrentState=function(b){"eastwest"!=b.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=b};Graph.prototype.createParent=function(b,c,e,k,g){b=this.cloneCell(b);for(var p=0;p<e;p++){var t=this.cloneCell(c),d=this.getCellGeometry(t);null!=d&&(d.x+=p*k,d.y+=p*g);b.insert(t)}return b};
-Graph.prototype.createTable=function(b,c,e,k,g,p,t,d,f){e=null!=e?e:60;k=null!=k?k:40;p=null!=p?p:30;d=null!=d?d:"shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;top=0;left=0;bottom=0;right=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;";f=null!=f?f:"shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;";return this.createParent(this.createVertex(null,null,null!=g?g:"",0,0,c*e,
-b*k+(null!=g?p:0),null!=t?t:"shape=table;startSize="+(null!=g?p:"0")+";container=1;collapsible=0;childLayout=tableLayout;"),this.createParent(this.createVertex(null,null,"",0,0,c*e,k,d),this.createVertex(null,null,"",0,0,e,k,f),c,e,0),b,0,k)};Graph.prototype.setTableValues=function(b,c,e){for(var k=this.model.getChildCells(b,!0),g=0;g<k.length;g++)if(null!=e&&(k[g].value=e[g]),null!=c)for(var p=this.model.getChildCells(k[g],!0),t=0;t<p.length;t++)null!=c[g][t]&&(p[t].value=c[g][t]);return b};
-Graph.prototype.createCrossFunctionalSwimlane=function(b,c,e,k,g,p,t,d,f){e=null!=e?e:120;k=null!=k?k:120;var l=null==g?0:40;t=null!=t?t:"swimlane;horizontal=0;fontStyle=0;points=[[0,0.5],[1,0.5]];fillColor=none;strokeColor=none;portConstraint=eastwest;startSize="+l+";collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";d=null!=d?d:"swimlane;fontStyle=0;connectable=0;fillColor=none;startSize=40;collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";f=null!=f?f:"swimlane;fontStyle=0;connectable=0;fillColor=none;startSize="+
-(null==g?"40":"0")+";collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";g=this.createVertex(null,null,null!=g?g:"",0,0,c*e,b*k,null!=p?p:"shape=table;childLayout=tableLayout;startSize="+l+";"+(null==g?"fillColor=none;":"")+"collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;");p=mxUtils.getValue(this.getCellStyle(g),mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);g.geometry.width+=p;g.geometry.height+=p;t=this.createVertex(null,null,"",0,p,c*e+p,k,t);g.insert(this.createParent(t,
-this.createVertex(null,null,"",p,0,e,k,d),c,e,0));return 1<b?(t.geometry.y=k+p,this.createParent(g,this.createParent(t,this.createVertex(null,null,"",p,0,e,k,f),c,e,0),b-1,0,k)):g};
-Graph.prototype.visitTableCells=function(b,c){for(var e=null,k=this.model.getChildCells(b,!0),g=this.getActualStartSize(b,!0),p=0;p<k.length;p++){for(var t=this.getActualStartSize(k[p],!0),d=this.model.getChildCells(k[p],!0),f=null,l=[],q=0;q<d.length;q++){var m=this.getCellGeometry(d[q]),n={cell:d[q],rospan:1,colspan:1,row:p,col:q,geo:m},m=null!=m.alternateBounds?m.alternateBounds:m;n.point=new mxPoint(m.width+(null!=f?f.point.x:g.x+t.x),m.height+(null!=e&&null!=e[0]?e[0].point.y:g.y+t.y));n.actual=
-n;null!=e&&null!=e[q]&&1<e[q].rowspan?(n.rowspan=e[q].rowspan-1,n.colspan=e[q].colspan,n.actual=e[q].actual):null!=f&&1<f.colspan?(n.rowspan=f.rowspan,n.colspan=f.colspan-1,n.actual=f.actual):(f=this.getCurrentCellStyle(d[q],!0),null!=f&&(n.rowspan=parseInt(f.rowspan||1),n.colspan=parseInt(f.colspan||1)));c(n,d.length,k.length,g.x+t.x,g.y+t.y);l.push(n);f=n}e=l}};
-Graph.prototype.getTableLines=function(b,c,e){var k=[],g=[];(c||e)&&this.visitTableCells(b,mxUtils.bind(this,function(b,t,d,f,l){c&&b.row<d-1&&(null==k[b.row]&&(k[b.row]=[new mxPoint(f,b.point.y)]),1<b.rowspan&&k[b.row].push(null),k[b.row].push(b.point));e&&b.col<t-1&&(null==g[b.col]&&(g[b.col]=[new mxPoint(b.point.x,l)]),1<b.colspan&&g[b.col].push(null),g[b.col].push(b.point))}));return k.concat(g)};Graph.prototype.isTableCell=function(b){return this.model.isVertex(b)&&this.isTableRow(this.model.getParent(b))};
+HoverIcons.prototype.setCurrentState=function(b){"eastwest"!=b.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=b};Graph.prototype.createParent=function(b,c,e,k,f){b=this.cloneCell(b);for(var p=0;p<e;p++){var t=this.cloneCell(c),d=this.getCellGeometry(t);null!=d&&(d.x+=p*k,d.y+=p*f);b.insert(t)}return b};
+Graph.prototype.createTable=function(b,c,e,k,f,p,t,d,g){e=null!=e?e:60;k=null!=k?k:40;p=null!=p?p:30;d=null!=d?d:"shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;top=0;left=0;bottom=0;right=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;";g=null!=g?g:"shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;";return this.createParent(this.createVertex(null,null,null!=f?f:"",0,0,c*e,
+b*k+(null!=f?p:0),null!=t?t:"shape=table;startSize="+(null!=f?p:"0")+";container=1;collapsible=0;childLayout=tableLayout;"),this.createParent(this.createVertex(null,null,"",0,0,c*e,k,d),this.createVertex(null,null,"",0,0,e,k,g),c,e,0),b,0,k)};Graph.prototype.setTableValues=function(b,c,e){for(var k=this.model.getChildCells(b,!0),f=0;f<k.length;f++)if(null!=e&&(k[f].value=e[f]),null!=c)for(var p=this.model.getChildCells(k[f],!0),t=0;t<p.length;t++)null!=c[f][t]&&(p[t].value=c[f][t]);return b};
+Graph.prototype.createCrossFunctionalSwimlane=function(b,c,e,k,f,p,t,d,g){e=null!=e?e:120;k=null!=k?k:120;var l=null==f?0:40;t=null!=t?t:"swimlane;horizontal=0;fontStyle=0;points=[[0,0.5],[1,0.5]];fillColor=none;strokeColor=none;portConstraint=eastwest;startSize="+l+";collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";d=null!=d?d:"swimlane;fontStyle=0;connectable=0;fillColor=none;startSize=40;collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";g=null!=g?g:"swimlane;fontStyle=0;connectable=0;fillColor=none;startSize="+
+(null==f?"40":"0")+";collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";f=this.createVertex(null,null,null!=f?f:"",0,0,c*e,b*k,null!=p?p:"shape=table;childLayout=tableLayout;startSize="+l+";"+(null==f?"fillColor=none;":"")+"collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;");p=mxUtils.getValue(this.getCellStyle(f),mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);f.geometry.width+=p;f.geometry.height+=p;t=this.createVertex(null,null,"",0,p,c*e+p,k,t);f.insert(this.createParent(t,
+this.createVertex(null,null,"",p,0,e,k,d),c,e,0));return 1<b?(t.geometry.y=k+p,this.createParent(f,this.createParent(t,this.createVertex(null,null,"",p,0,e,k,g),c,e,0),b-1,0,k)):f};
+Graph.prototype.visitTableCells=function(b,c){for(var e=null,k=this.model.getChildCells(b,!0),f=this.getActualStartSize(b,!0),p=0;p<k.length;p++){for(var t=this.getActualStartSize(k[p],!0),d=this.model.getChildCells(k[p],!0),g=null,l=[],q=0;q<d.length;q++){var m=this.getCellGeometry(d[q]),n={cell:d[q],rospan:1,colspan:1,row:p,col:q,geo:m},m=null!=m.alternateBounds?m.alternateBounds:m;n.point=new mxPoint(m.width+(null!=g?g.point.x:f.x+t.x),m.height+(null!=e&&null!=e[0]?e[0].point.y:f.y+t.y));n.actual=
+n;null!=e&&null!=e[q]&&1<e[q].rowspan?(n.rowspan=e[q].rowspan-1,n.colspan=e[q].colspan,n.actual=e[q].actual):null!=g&&1<g.colspan?(n.rowspan=g.rowspan,n.colspan=g.colspan-1,n.actual=g.actual):(g=this.getCurrentCellStyle(d[q],!0),null!=g&&(n.rowspan=parseInt(g.rowspan||1),n.colspan=parseInt(g.colspan||1)));c(n,d.length,k.length,f.x+t.x,f.y+t.y);l.push(n);g=n}e=l}};
+Graph.prototype.getTableLines=function(b,c,e){var k=[],f=[];(c||e)&&this.visitTableCells(b,mxUtils.bind(this,function(b,t,d,g,l){c&&b.row<d-1&&(null==k[b.row]&&(k[b.row]=[new mxPoint(g,b.point.y)]),1<b.rowspan&&k[b.row].push(null),k[b.row].push(b.point));e&&b.col<t-1&&(null==f[b.col]&&(f[b.col]=[new mxPoint(b.point.x,l)]),1<b.colspan&&f[b.col].push(null),f[b.col].push(b.point))}));return k.concat(f)};Graph.prototype.isTableCell=function(b){return this.model.isVertex(b)&&this.isTableRow(this.model.getParent(b))};
Graph.prototype.isTableRow=function(b){return this.model.isVertex(b)&&this.isTable(this.model.getParent(b))};Graph.prototype.isTable=function(b){b=this.getCellStyle(b);return null!=b&&"tableLayout"==b.childLayout};Graph.prototype.isStack=function(b){b=this.getCellStyle(b);return null!=b&&"stackLayout"==b.childLayout};Graph.prototype.isStackChild=function(b){return this.model.isVertex(b)&&this.isStack(this.model.getParent(b))};
-Graph.prototype.setTableRowHeight=function(b,c,e){e=null!=e?e:!0;var k=this.getModel();k.beginUpdate();try{var g=this.getCellGeometry(b);if(null!=g){g=g.clone();g.height+=c;k.setGeometry(b,g);var p=k.getParent(b),t=k.getChildCells(p,!0);if(!e){var d=mxUtils.indexOf(t,b);if(d<t.length-1){var f=t[d+1],l=this.getCellGeometry(f);null!=l&&(l=l.clone(),l.y+=c,l.height-=c,k.setGeometry(f,l))}}var q=this.getCellGeometry(p);null!=q&&(e||(e=b==t[t.length-1]),e&&(q=q.clone(),q.height+=c,k.setGeometry(p,q)))}}finally{k.endUpdate()}};
-Graph.prototype.setTableColumnWidth=function(b,c,e){e=null!=e?e:!1;var k=this.getModel(),g=k.getParent(b),p=k.getParent(g),t=k.getChildCells(g,!0);b=mxUtils.indexOf(t,b);var d=b==t.length-1;k.beginUpdate();try{for(var f=k.getChildCells(p,!0),l=0;l<f.length;l++){var g=f[l],t=k.getChildCells(g,!0),q=t[b],m=this.getCellGeometry(q);null!=m&&(m=m.clone(),m.width+=c,null!=m.alternateBounds&&(m.alternateBounds.width+=c),k.setGeometry(q,m));b<t.length-1&&(q=t[b+1],m=this.getCellGeometry(q),null!=m&&(m=m.clone(),
+Graph.prototype.setTableRowHeight=function(b,c,e){e=null!=e?e:!0;var k=this.getModel();k.beginUpdate();try{var f=this.getCellGeometry(b);if(null!=f){f=f.clone();f.height+=c;k.setGeometry(b,f);var p=k.getParent(b),t=k.getChildCells(p,!0);if(!e){var d=mxUtils.indexOf(t,b);if(d<t.length-1){var g=t[d+1],l=this.getCellGeometry(g);null!=l&&(l=l.clone(),l.y+=c,l.height-=c,k.setGeometry(g,l))}}var q=this.getCellGeometry(p);null!=q&&(e||(e=b==t[t.length-1]),e&&(q=q.clone(),q.height+=c,k.setGeometry(p,q)))}}finally{k.endUpdate()}};
+Graph.prototype.setTableColumnWidth=function(b,c,e){e=null!=e?e:!1;var k=this.getModel(),f=k.getParent(b),p=k.getParent(f),t=k.getChildCells(f,!0);b=mxUtils.indexOf(t,b);var d=b==t.length-1;k.beginUpdate();try{for(var g=k.getChildCells(p,!0),l=0;l<g.length;l++){var f=g[l],t=k.getChildCells(f,!0),q=t[b],m=this.getCellGeometry(q);null!=m&&(m=m.clone(),m.width+=c,null!=m.alternateBounds&&(m.alternateBounds.width+=c),k.setGeometry(q,m));b<t.length-1&&(q=t[b+1],m=this.getCellGeometry(q),null!=m&&(m=m.clone(),
m.x+=c,e||(m.width-=c,null!=m.alternateBounds&&(m.alternateBounds.width-=c)),k.setGeometry(q,m)))}if(d||e){var n=this.getCellGeometry(p);null!=n&&(n=n.clone(),n.width+=c,k.setGeometry(p,n))}}finally{k.endUpdate()}};function TableLayout(b){mxGraphLayout.call(this,b)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};TableLayout.prototype.isVertexIgnored=function(b){return!this.graph.getModel().isVertex(b)||!this.graph.isCellVisible(b)};
-TableLayout.prototype.getSize=function(b,c){for(var e=0,k=0;k<b.length;k++)if(!this.isVertexIgnored(b[k])){var g=this.graph.getCellGeometry(b[k]);null!=g&&(e+=c?g.width:g.height)}return e};
-TableLayout.prototype.getRowLayout=function(b,c){for(var e=this.graph.model.getChildCells(b,!0),k=this.graph.getActualStartSize(b,!0),g=this.getSize(e,!0),p=c-k.x-k.width,t=[],k=k.x,d=0;d<e.length;d++){var f=this.graph.getCellGeometry(e[d]);null!=f&&(k+=(null!=f.alternateBounds?f.alternateBounds.width:f.width)*p/g,t.push(Math.round(k)))}return t};
-TableLayout.prototype.layoutRow=function(b,c,e,k,g){g=this.graph.getModel();var p=g.getChildCells(b,!0);b=this.graph.getActualStartSize(b,!0);var t=b.x,d=0;null!=c&&(c=c.slice(),c.splice(0,0,b.x));for(var f=0;f<p.length;f++){var l=this.graph.getCellGeometry(p[f]);null!=l&&(l=l.clone(),l.y=b.y,l.height=e-b.y-b.height,null!=c?(l.x=c[f],l.width=c[f+1]-l.x,f==p.length-1&&f<c.length-2&&(l.width=k-l.x-b.x-b.width)):(l.x=t,t+=l.width,f==p.length-1?l.width=k-b.x-b.width-d:d+=l.width),l.alternateBounds=new mxRectangle(0,
-0,l.width,l.height),g.setGeometry(p[f],l))}return d};
-TableLayout.prototype.execute=function(b){if(null!=b){var c=this.graph.getActualStartSize(b,!0),e=this.graph.getCellGeometry(b),k=this.graph.getCellStyle(b),g="1"==mxUtils.getValue(k,"resizeLastRow","0"),p="1"==mxUtils.getValue(k,"resizeLast","0"),k="1"==mxUtils.getValue(k,"fixedRows","0"),t=this.graph.getModel(),d=0;t.beginUpdate();try{var f=e.height-c.y-c.height,l=e.width-c.x-c.width,q=t.getChildCells(b,!0),m=this.getSize(q,!1);if(0<f&&0<l&&0<q.length&&0<m){if(g){var n=this.graph.getCellGeometry(q[q.length-
-1]);null!=n&&(n=n.clone(),n.height=f-m+n.height,t.setGeometry(q[q.length-1],n))}for(var u=p?null:this.getRowLayout(q[0],l),v=[],y=c.y,x=0;x<q.length;x++)n=this.graph.getCellGeometry(q[x]),null!=n&&(n=n.clone(),n.x=c.x,n.width=l,n.y=Math.round(y),y=g||k?y+n.height:y+n.height/m*f,n.height=Math.round(y)-n.y,t.setGeometry(q[x],n)),d=Math.max(d,this.layoutRow(q[x],u,n.height,l,v));k&&f<m&&(e=e.clone(),e.height=y+c.height,t.setGeometry(b,e));p&&l<d+Graph.minTableColumnWidth&&(e=e.clone(),e.width=d+c.width+
+TableLayout.prototype.getSize=function(b,c){for(var e=0,k=0;k<b.length;k++)if(!this.isVertexIgnored(b[k])){var f=this.graph.getCellGeometry(b[k]);null!=f&&(e+=c?f.width:f.height)}return e};
+TableLayout.prototype.getRowLayout=function(b,c){for(var e=this.graph.model.getChildCells(b,!0),k=this.graph.getActualStartSize(b,!0),f=this.getSize(e,!0),p=c-k.x-k.width,t=[],k=k.x,d=0;d<e.length;d++){var g=this.graph.getCellGeometry(e[d]);null!=g&&(k+=(null!=g.alternateBounds?g.alternateBounds.width:g.width)*p/f,t.push(Math.round(k)))}return t};
+TableLayout.prototype.layoutRow=function(b,c,e,k,f){f=this.graph.getModel();var p=f.getChildCells(b,!0);b=this.graph.getActualStartSize(b,!0);var t=b.x,d=0;null!=c&&(c=c.slice(),c.splice(0,0,b.x));for(var g=0;g<p.length;g++){var l=this.graph.getCellGeometry(p[g]);null!=l&&(l=l.clone(),l.y=b.y,l.height=e-b.y-b.height,null!=c?(l.x=c[g],l.width=c[g+1]-l.x,g==p.length-1&&g<c.length-2&&(l.width=k-l.x-b.x-b.width)):(l.x=t,t+=l.width,g==p.length-1?l.width=k-b.x-b.width-d:d+=l.width),l.alternateBounds=new mxRectangle(0,
+0,l.width,l.height),f.setGeometry(p[g],l))}return d};
+TableLayout.prototype.execute=function(b){if(null!=b){var c=this.graph.getActualStartSize(b,!0),e=this.graph.getCellGeometry(b),k=this.graph.getCellStyle(b),f="1"==mxUtils.getValue(k,"resizeLastRow","0"),p="1"==mxUtils.getValue(k,"resizeLast","0"),k="1"==mxUtils.getValue(k,"fixedRows","0"),t=this.graph.getModel(),d=0;t.beginUpdate();try{var g=e.height-c.y-c.height,l=e.width-c.x-c.width,q=t.getChildCells(b,!0),m=this.getSize(q,!1);if(0<g&&0<l&&0<q.length&&0<m){if(f){var n=this.graph.getCellGeometry(q[q.length-
+1]);null!=n&&(n=n.clone(),n.height=g-m+n.height,t.setGeometry(q[q.length-1],n))}for(var u=p?null:this.getRowLayout(q[0],l),v=[],y=c.y,x=0;x<q.length;x++)n=this.graph.getCellGeometry(q[x]),null!=n&&(n=n.clone(),n.x=c.x,n.width=l,n.y=Math.round(y),y=f||k?y+n.height:y+n.height/m*g,n.height=Math.round(y)-n.y,t.setGeometry(q[x],n)),d=Math.max(d,this.layoutRow(q[x],u,n.height,l,v));k&&g<m&&(e=e.clone(),e.height=y+c.height,t.setGeometry(b,e));p&&l<d+Graph.minTableColumnWidth&&(e=e.clone(),e.width=d+c.width+
c.x+Graph.minTableColumnWidth,t.setGeometry(b,e));this.graph.visitTableCells(b,mxUtils.bind(this,function(b){t.setVisible(b.cell,b.actual.cell==b.cell);if(b.actual.cell!=b.cell){if(b.actual.row==b.row){var d=null!=b.geo.alternateBounds?b.geo.alternateBounds:b.geo;b.actual.geo.width+=d.width}b.actual.col==b.col&&(d=null!=b.geo.alternateBounds?b.geo.alternateBounds:b.geo,b.actual.geo.height+=d.height)}}))}}finally{t.endUpdate()}}};
-(function(){var b=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){b.apply(this,arguments);this.validEdges=[]};var c=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(b,d){d=null!=d?d:!0;var f=this.getState(b);null!=f&&d&&this.graph.model.isEdge(f.cell)&&null!=f.style&&1!=f.style[mxConstants.STYLE_CURVED]&&!f.invalid&&this.updateLineJumps(f)&&this.graph.cellRenderer.redraw(f,!1,this.isRendering());f=c.apply(this,
-arguments);null!=f&&d&&this.graph.model.isEdge(f.cell)&&null!=f.style&&1!=f.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(f);return f};var e=mxShape.prototype.paint;mxShape.prototype.paint=function(){e.apply(this,arguments);if(null!=this.state&&null!=this.node&&this.state.view.graph.enableFlowAnimation&&this.state.view.graph.model.isEdge(this.state.cell)&&"1"==mxUtils.getValue(this.state.style,"flowAnimation","0")){var b=this.node.getElementsByTagName("path");if(1<b.length){"1"!=mxUtils.getValue(this.state.style,
-mxConstants.STYLE_DASHED,"0")&&b[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var d=this.state.view.graph.getFlowAnimationStyle();null!=d&&b[1].setAttribute("class",d.getAttribute("id"))}}};var k=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(b,d){return k.apply(this,arguments)||null!=b.routedPoints&&null!=d.routedPoints&&!mxUtils.equalPoints(d.routedPoints,b.routedPoints)};var g=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
-function(b){g.apply(this,arguments);this.graph.model.isEdge(b.cell)&&1!=b.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(b)};mxGraphView.prototype.updateLineJumps=function(b){var d=b.absolutePoints;if(Graph.lineJumpsEnabled){var f=null!=b.routedPoints,c=null;if(null!=d&&null!=this.validEdges&&"none"!==mxUtils.getValue(b.style,"jumpStyle","none")){for(var e=function(d,f,e){var g=new mxPoint(f,e);g.type=d;c.push(g);g=null!=b.routedPoints?b.routedPoints[c.length-1]:null;return null==g||g.type!=
-d||g.x!=f||g.y!=e},g=.5*this.scale,f=!1,c=[],l=0;l<d.length-1;l++){for(var k=d[l+1],q=d[l],p=[],t=d[l+2];l<d.length-2&&mxUtils.ptSegDistSq(q.x,q.y,t.x,t.y,k.x,k.y)<1*this.scale*this.scale;)k=t,l++,t=d[l+2];for(var f=e(0,q.x,q.y)||f,L=0;L<this.validEdges.length;L++){var E=this.validEdges[L],J=E.absolutePoints;if(null!=J&&mxUtils.intersects(b,E)&&"1"!=E.style.noJump)for(E=0;E<J.length-1;E++){for(var C=J[E+1],K=J[E],t=J[E+2];E<J.length-2&&mxUtils.ptSegDistSq(K.x,K.y,t.x,t.y,C.x,C.y)<1*this.scale*this.scale;)C=
-t,E++,t=J[E+2];t=mxUtils.intersection(q.x,q.y,k.x,k.y,K.x,K.y,C.x,C.y);if(null!=t&&(Math.abs(t.x-q.x)>g||Math.abs(t.y-q.y)>g)&&(Math.abs(t.x-k.x)>g||Math.abs(t.y-k.y)>g)&&(Math.abs(t.x-K.x)>g||Math.abs(t.y-K.y)>g)&&(Math.abs(t.x-C.x)>g||Math.abs(t.y-C.y)>g)){C=t.x-q.x;K=t.y-q.y;t={distSq:C*C+K*K,x:t.x,y:t.y};for(C=0;C<p.length;C++)if(p[C].distSq>t.distSq){p.splice(C,0,t);t=null;break}null==t||0!=p.length&&p[p.length-1].x===t.x&&p[p.length-1].y===t.y||p.push(t)}}}for(E=0;E<p.length;E++)f=e(1,p[E].x,
-p[E].y)||f}t=d[d.length-1];f=e(0,t.x,t.y)||f}b.routedPoints=c;return f}return!1};var p=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(b,d,f){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)p.apply(this,arguments);else{var c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,
-"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),l=!0,k=null,q=null,m=[],n=null;b.begin();for(var t=0;t<this.state.routedPoints.length;t++){var E=this.state.routedPoints[t],J=new mxPoint(E.x/this.scale,E.y/this.scale);0==t?J=d[0]:t==this.state.routedPoints.length-1&&(J=d[d.length-1]);var C=!1;if(null!=k&&1==E.type){var K=this.state.routedPoints[t+1],E=K.x/this.scale-J.x,K=K.y/this.scale-J.y,E=E*E+K*K;null==n&&(n=new mxPoint(J.x-k.x,J.y-k.y),
-q=Math.sqrt(n.x*n.x+n.y*n.y),0<q?(n.x=n.x*e/q,n.y=n.y*e/q):n=null);E>e*e&&0<q&&(E=k.x-J.x,K=k.y-J.y,E=E*E+K*K,E>e*e&&(C=new mxPoint(J.x-n.x,J.y-n.y),E=new mxPoint(J.x+n.x,J.y+n.y),m.push(C),this.addPoints(b,m,f,c,!1,null,l),m=0>Math.round(n.x)||0==Math.round(n.x)&&0>=Math.round(n.y)?1:-1,l=!1,"sharp"==g?(b.lineTo(C.x-n.y*m,C.y+n.x*m),b.lineTo(E.x-n.y*m,E.y+n.x*m),b.lineTo(E.x,E.y)):"line"==g?(b.moveTo(C.x+n.y*m,C.y-n.x*m),b.lineTo(C.x-n.y*m,C.y+n.x*m),b.moveTo(E.x-n.y*m,E.y+n.x*m),b.lineTo(E.x+n.y*
-m,E.y-n.x*m),b.moveTo(E.x,E.y)):"arc"==g?(m*=1.3,b.curveTo(C.x-n.y*m,C.y+n.x*m,E.x-n.y*m,E.y+n.x*m,E.x,E.y)):(b.moveTo(E.x,E.y),l=!0),m=[E],C=!0))}else n=null;C||(m.push(J),k=J)}this.addPoints(b,m,f,c,!1,null,l);b.stroke()}};var t=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(b,d,f,c){return null!=d&&"centerPerimeter"==d.style[mxConstants.STYLE_PERIMETER]?new mxPoint(d.getCenterX(),d.getCenterY()):t.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;
-mxGraphView.prototype.updateFloatingTerminalPoint=function(b,f,c,e){if(null==f||null==b||"1"!=f.style.snapToPoint&&"1"!=b.style.snapToPoint)d.apply(this,arguments);else{f=this.getTerminalPort(b,f,e);var g=this.getNextPoint(b,c,e),l=this.graph.isOrthogonal(b),k=mxUtils.toRadians(Number(f.style[mxConstants.STYLE_ROTATION]||"0")),q=new mxPoint(f.getCenterX(),f.getCenterY());if(0!=k)var m=Math.cos(-k),n=Math.sin(-k),g=mxUtils.getRotatedPoint(g,m,n,q);m=parseFloat(b.style[mxConstants.STYLE_PERIMETER_SPACING]||
-0);m+=parseFloat(b.style[e?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);g=this.getPerimeterPoint(f,g,0==k&&l,m);0!=k&&(m=Math.cos(k),n=Math.sin(k),g=mxUtils.getRotatedPoint(g,m,n,q));b.setAbsoluteTerminalPoint(this.snapToAnchorPoint(b,f,c,e,g),e)}};mxGraphView.prototype.snapToAnchorPoint=function(b,d,f,c,e){if(null!=d&&null!=b){b=this.graph.getAllConnectionConstraints(d);c=f=null;if(null!=b)for(var g=0;g<b.length;g++){var l=this.graph.getConnectionPoint(d,
-b[g]);if(null!=l){var k=(l.x-e.x)*(l.x-e.x)+(l.y-e.y)*(l.y-e.y);if(null==c||k<c)f=l,c=k}}null!=f&&(e=f)}return e};var f=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(b,d,c){var e=f.apply(this,arguments);"1"==b.getAttribute("placeholders")&&null!=c.state&&(e=c.state.view.graph.replacePlaceholders(c.state.cell,e));return e};var l=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(b){if(null!=b.style&&"undefined"!==typeof pako){var d=
-mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null);if(null!=d&&"string"===typeof d&&"stencil("==d.substring(0,8))try{var f=d.substring(8,d.length-1),c=mxUtils.parseXml(Graph.decompress(f));return new mxShape(new mxStencil(c.documentElement))}catch(v){null!=window.console&&console.log("Error in shape: "+v)}}return l.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[];
+(function(){var b=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){b.apply(this,arguments);this.validEdges=[]};var c=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(b,d){d=null!=d?d:!0;var g=this.getState(b);null!=g&&d&&this.graph.model.isEdge(g.cell)&&null!=g.style&&1!=g.style[mxConstants.STYLE_CURVED]&&!g.invalid&&this.updateLineJumps(g)&&this.graph.cellRenderer.redraw(g,!1,this.isRendering());g=c.apply(this,
+arguments);null!=g&&d&&this.graph.model.isEdge(g.cell)&&null!=g.style&&1!=g.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(g);return g};var e=mxShape.prototype.paint;mxShape.prototype.paint=function(){e.apply(this,arguments);if(null!=this.state&&null!=this.node&&this.state.view.graph.enableFlowAnimation&&this.state.view.graph.model.isEdge(this.state.cell)&&"1"==mxUtils.getValue(this.state.style,"flowAnimation","0")){var b=this.node.getElementsByTagName("path");if(1<b.length){"1"!=mxUtils.getValue(this.state.style,
+mxConstants.STYLE_DASHED,"0")&&b[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var d=this.state.view.graph.getFlowAnimationStyle();null!=d&&b[1].setAttribute("class",d.getAttribute("id"))}}};var k=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(b,d){return k.apply(this,arguments)||null!=b.routedPoints&&null!=d.routedPoints&&!mxUtils.equalPoints(d.routedPoints,b.routedPoints)};var f=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
+function(b){f.apply(this,arguments);this.graph.model.isEdge(b.cell)&&1!=b.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(b)};mxGraphView.prototype.updateLineJumps=function(b){var d=b.absolutePoints;if(Graph.lineJumpsEnabled){var g=null!=b.routedPoints,c=null;if(null!=d&&null!=this.validEdges&&"none"!==mxUtils.getValue(b.style,"jumpStyle","none")){for(var e=function(d,g,e){var f=new mxPoint(g,e);f.type=d;c.push(f);f=null!=b.routedPoints?b.routedPoints[c.length-1]:null;return null==f||f.type!=
+d||f.x!=g||f.y!=e},f=.5*this.scale,g=!1,c=[],l=0;l<d.length-1;l++){for(var k=d[l+1],q=d[l],p=[],t=d[l+2];l<d.length-2&&mxUtils.ptSegDistSq(q.x,q.y,t.x,t.y,k.x,k.y)<1*this.scale*this.scale;)k=t,l++,t=d[l+2];for(var g=e(0,q.x,q.y)||g,N=0;N<this.validEdges.length;N++){var E=this.validEdges[N],J=E.absolutePoints;if(null!=J&&mxUtils.intersects(b,E)&&"1"!=E.style.noJump)for(E=0;E<J.length-1;E++){for(var C=J[E+1],K=J[E],t=J[E+2];E<J.length-2&&mxUtils.ptSegDistSq(K.x,K.y,t.x,t.y,C.x,C.y)<1*this.scale*this.scale;)C=
+t,E++,t=J[E+2];t=mxUtils.intersection(q.x,q.y,k.x,k.y,K.x,K.y,C.x,C.y);if(null!=t&&(Math.abs(t.x-q.x)>f||Math.abs(t.y-q.y)>f)&&(Math.abs(t.x-k.x)>f||Math.abs(t.y-k.y)>f)&&(Math.abs(t.x-K.x)>f||Math.abs(t.y-K.y)>f)&&(Math.abs(t.x-C.x)>f||Math.abs(t.y-C.y)>f)){C=t.x-q.x;K=t.y-q.y;t={distSq:C*C+K*K,x:t.x,y:t.y};for(C=0;C<p.length;C++)if(p[C].distSq>t.distSq){p.splice(C,0,t);t=null;break}null==t||0!=p.length&&p[p.length-1].x===t.x&&p[p.length-1].y===t.y||p.push(t)}}}for(E=0;E<p.length;E++)g=e(1,p[E].x,
+p[E].y)||g}t=d[d.length-1];g=e(0,t.x,t.y)||g}b.routedPoints=c;return g}return!1};var p=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(b,d,g){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)p.apply(this,arguments);else{var c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,
+"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,f=mxUtils.getValue(this.style,"jumpStyle","none"),l=!0,k=null,q=null,m=[],n=null;b.begin();for(var t=0;t<this.state.routedPoints.length;t++){var E=this.state.routedPoints[t],J=new mxPoint(E.x/this.scale,E.y/this.scale);0==t?J=d[0]:t==this.state.routedPoints.length-1&&(J=d[d.length-1]);var C=!1;if(null!=k&&1==E.type){var K=this.state.routedPoints[t+1],E=K.x/this.scale-J.x,K=K.y/this.scale-J.y,E=E*E+K*K;null==n&&(n=new mxPoint(J.x-k.x,J.y-k.y),
+q=Math.sqrt(n.x*n.x+n.y*n.y),0<q?(n.x=n.x*e/q,n.y=n.y*e/q):n=null);E>e*e&&0<q&&(E=k.x-J.x,K=k.y-J.y,E=E*E+K*K,E>e*e&&(C=new mxPoint(J.x-n.x,J.y-n.y),E=new mxPoint(J.x+n.x,J.y+n.y),m.push(C),this.addPoints(b,m,g,c,!1,null,l),m=0>Math.round(n.x)||0==Math.round(n.x)&&0>=Math.round(n.y)?1:-1,l=!1,"sharp"==f?(b.lineTo(C.x-n.y*m,C.y+n.x*m),b.lineTo(E.x-n.y*m,E.y+n.x*m),b.lineTo(E.x,E.y)):"line"==f?(b.moveTo(C.x+n.y*m,C.y-n.x*m),b.lineTo(C.x-n.y*m,C.y+n.x*m),b.moveTo(E.x-n.y*m,E.y+n.x*m),b.lineTo(E.x+n.y*
+m,E.y-n.x*m),b.moveTo(E.x,E.y)):"arc"==f?(m*=1.3,b.curveTo(C.x-n.y*m,C.y+n.x*m,E.x-n.y*m,E.y+n.x*m,E.x,E.y)):(b.moveTo(E.x,E.y),l=!0),m=[E],C=!0))}else n=null;C||(m.push(J),k=J)}this.addPoints(b,m,g,c,!1,null,l);b.stroke()}};var t=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(b,d,g,c){return null!=d&&"centerPerimeter"==d.style[mxConstants.STYLE_PERIMETER]?new mxPoint(d.getCenterX(),d.getCenterY()):t.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;
+mxGraphView.prototype.updateFloatingTerminalPoint=function(b,g,c,e){if(null==g||null==b||"1"!=g.style.snapToPoint&&"1"!=b.style.snapToPoint)d.apply(this,arguments);else{g=this.getTerminalPort(b,g,e);var f=this.getNextPoint(b,c,e),l=this.graph.isOrthogonal(b),k=mxUtils.toRadians(Number(g.style[mxConstants.STYLE_ROTATION]||"0")),q=new mxPoint(g.getCenterX(),g.getCenterY());if(0!=k)var m=Math.cos(-k),n=Math.sin(-k),f=mxUtils.getRotatedPoint(f,m,n,q);m=parseFloat(b.style[mxConstants.STYLE_PERIMETER_SPACING]||
+0);m+=parseFloat(b.style[e?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);f=this.getPerimeterPoint(g,f,0==k&&l,m);0!=k&&(m=Math.cos(k),n=Math.sin(k),f=mxUtils.getRotatedPoint(f,m,n,q));b.setAbsoluteTerminalPoint(this.snapToAnchorPoint(b,g,c,e,f),e)}};mxGraphView.prototype.snapToAnchorPoint=function(b,d,g,c,e){if(null!=d&&null!=b){b=this.graph.getAllConnectionConstraints(d);c=g=null;if(null!=b)for(var f=0;f<b.length;f++){var l=this.graph.getConnectionPoint(d,
+b[f]);if(null!=l){var k=(l.x-e.x)*(l.x-e.x)+(l.y-e.y)*(l.y-e.y);if(null==c||k<c)g=l,c=k}}null!=g&&(e=g)}return e};var g=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(b,d,c){var e=g.apply(this,arguments);"1"==b.getAttribute("placeholders")&&null!=c.state&&(e=c.state.view.graph.replacePlaceholders(c.state.cell,e));return e};var l=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(b){if(null!=b.style&&"undefined"!==typeof pako){var d=
+mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null);if(null!=d&&"string"===typeof d&&"stencil("==d.substring(0,8))try{var g=d.substring(8,d.length-1),c=mxUtils.parseXml(Graph.decompress(g));return new mxShape(new mxStencil(c.documentElement))}catch(v){null!=window.console&&console.log("Error in shape: "+v)}}return l.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[];
mxStencilRegistry.filesLoaded={};
-mxStencilRegistry.getStencil=function(b){var c=mxStencilRegistry.stencils[b];if(null==c&&null==mxCellRenderer.defaultShapes[b]&&mxStencilRegistry.dynamicLoading){var e=mxStencilRegistry.getBasenameForStencil(b);if(null!=e){c=mxStencilRegistry.libraries[e];if(null!=c){if(null==mxStencilRegistry.packages[e]){for(var k=0;k<c.length;k++){var g=c[k];if(!mxStencilRegistry.filesLoaded[g])if(mxStencilRegistry.filesLoaded[g]=!0,".xml"==g.toLowerCase().substring(g.length-4,g.length))mxStencilRegistry.loadStencilSet(g,
-null);else if(".js"==g.toLowerCase().substring(g.length-3,g.length))try{if(mxStencilRegistry.allowEval){var p=mxUtils.load(g);null!=p&&200<=p.getStatus()&&299>=p.getStatus()&&eval.call(window,p.getText())}}catch(t){null!=window.console&&console.log("error in getStencil:",b,e,c,g,t)}}mxStencilRegistry.packages[e]=1}}else e=e.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+e+".xml",null);c=mxStencilRegistry.stencils[b]}}return c};
+mxStencilRegistry.getStencil=function(b){var c=mxStencilRegistry.stencils[b];if(null==c&&null==mxCellRenderer.defaultShapes[b]&&mxStencilRegistry.dynamicLoading){var e=mxStencilRegistry.getBasenameForStencil(b);if(null!=e){c=mxStencilRegistry.libraries[e];if(null!=c){if(null==mxStencilRegistry.packages[e]){for(var k=0;k<c.length;k++){var f=c[k];if(!mxStencilRegistry.filesLoaded[f])if(mxStencilRegistry.filesLoaded[f]=!0,".xml"==f.toLowerCase().substring(f.length-4,f.length))mxStencilRegistry.loadStencilSet(f,
+null);else if(".js"==f.toLowerCase().substring(f.length-3,f.length))try{if(mxStencilRegistry.allowEval){var p=mxUtils.load(f);null!=p&&200<=p.getStatus()&&299>=p.getStatus()&&eval.call(window,p.getText())}}catch(t){null!=window.console&&console.log("error in getStencil:",b,e,c,f,t)}}mxStencilRegistry.packages[e]=1}}else e=e.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+e+".xml",null);c=mxStencilRegistry.stencils[b]}}return c};
mxStencilRegistry.getBasenameForStencil=function(b){var c=null;if(null!=b&&"string"===typeof b&&(b=b.split("."),0<b.length&&"mxgraph"==b[0]))for(var c=b[1],e=2;e<b.length-1;e++)c+="/"+b[e];return c};
-mxStencilRegistry.loadStencilSet=function(b,c,e,k){var g=mxStencilRegistry.packages[b];if(null!=e&&e||null==g){var p=!1;if(null==g)try{if(k){mxStencilRegistry.loadStencil(b,mxUtils.bind(this,function(e){null!=e&&null!=e.documentElement&&(mxStencilRegistry.packages[b]=e,p=!0,mxStencilRegistry.parseStencilSet(e.documentElement,c,p))}));return}g=mxStencilRegistry.loadStencil(b);mxStencilRegistry.packages[b]=g;p=!0}catch(t){null!=window.console&&console.log("error in loadStencilSet:",b,t)}null!=g&&null!=
-g.documentElement&&mxStencilRegistry.parseStencilSet(g.documentElement,c,p)}};mxStencilRegistry.loadStencil=function(b,c){if(null!=c)mxUtils.get(b,mxUtils.bind(this,function(b){c(200<=b.getStatus()&&299>=b.getStatus()?b.getXml():null)}));else return mxUtils.load(b).getXml()};mxStencilRegistry.parseStencilSets=function(b){for(var c=0;c<b.length;c++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(b[c]).documentElement)};
-mxStencilRegistry.parseStencilSet=function(b,c,e){if("stencils"==b.nodeName)for(var k=b.firstChild;null!=k;)"shapes"==k.nodeName&&mxStencilRegistry.parseStencilSet(k,c,e),k=k.nextSibling;else{e=null!=e?e:!0;var k=b.firstChild,g="";b=b.getAttribute("name");for(null!=b&&(g=b+".");null!=k;){if(k.nodeType==mxConstants.NODETYPE_ELEMENT&&(b=k.getAttribute("name"),null!=b)){var g=g.toLowerCase(),p=b.replace(/ /g,"_");e&&mxStencilRegistry.addStencil(g+p.toLowerCase(),new mxStencil(k));if(null!=c){var t=k.getAttribute("w"),
-d=k.getAttribute("h"),t=null==t?80:parseInt(t,10),d=null==d?80:parseInt(d,10);c(g,p,b,t,d)}}k=k.nextSibling}}};
+mxStencilRegistry.loadStencilSet=function(b,c,e,k){var f=mxStencilRegistry.packages[b];if(null!=e&&e||null==f){var p=!1;if(null==f)try{if(k){mxStencilRegistry.loadStencil(b,mxUtils.bind(this,function(e){null!=e&&null!=e.documentElement&&(mxStencilRegistry.packages[b]=e,p=!0,mxStencilRegistry.parseStencilSet(e.documentElement,c,p))}));return}f=mxStencilRegistry.loadStencil(b);mxStencilRegistry.packages[b]=f;p=!0}catch(t){null!=window.console&&console.log("error in loadStencilSet:",b,t)}null!=f&&null!=
+f.documentElement&&mxStencilRegistry.parseStencilSet(f.documentElement,c,p)}};mxStencilRegistry.loadStencil=function(b,c){if(null!=c)mxUtils.get(b,mxUtils.bind(this,function(b){c(200<=b.getStatus()&&299>=b.getStatus()?b.getXml():null)}));else return mxUtils.load(b).getXml()};mxStencilRegistry.parseStencilSets=function(b){for(var c=0;c<b.length;c++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(b[c]).documentElement)};
+mxStencilRegistry.parseStencilSet=function(b,c,e){if("stencils"==b.nodeName)for(var k=b.firstChild;null!=k;)"shapes"==k.nodeName&&mxStencilRegistry.parseStencilSet(k,c,e),k=k.nextSibling;else{e=null!=e?e:!0;var k=b.firstChild,f="";b=b.getAttribute("name");for(null!=b&&(f=b+".");null!=k;){if(k.nodeType==mxConstants.NODETYPE_ELEMENT&&(b=k.getAttribute("name"),null!=b)){var f=f.toLowerCase(),p=b.replace(/ /g,"_");e&&mxStencilRegistry.addStencil(f+p.toLowerCase(),new mxStencil(k));if(null!=c){var t=k.getAttribute("w"),
+d=k.getAttribute("h"),t=null==t?80:parseInt(t,10),d=null==d?80:parseInt(d,10);c(f,p,b,t,d)}}k=k.nextSibling}}};
"undefined"!=typeof mxVertexHandler&&function(){function b(){var b=document.createElement("div");b.className="geHint";b.style.whiteSpace="nowrap";b.style.position="absolute";return b}function c(b,d){switch(d){case mxConstants.POINTS:return b;case mxConstants.MILLIMETERS:return(b/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(b/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(b/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
mxConstants.HANDLE_STROKECOLOR="#0088cf";mxConstants.VERTEX_SELECTION_COLOR="#00a8ff";mxConstants.OUTLINE_COLOR="#00a8ff";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.EDGE_SELECTION_COLOR="#00a8ff";mxConstants.DEFAULT_VALID_COLOR="#00a8ff";mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff";mxConstants.GUIDE_COLOR="#0088cf";mxConstants.HIGHLIGHT_OPACITY=30;mxConstants.HIGHLIGHT_SIZE=5;mxEdgeHandler.prototype.snapToTerminals=
!0;mxGraphHandler.prototype.guidesEnabled=!0;mxGraphHandler.prototype.removeEmptyParents=!0;mxRubberband.prototype.fadeOut=!0;mxGuide.prototype.isEnabledForEvent=function(b){return!mxEvent.isAltDown(b)};var e=mxGraphLayout.prototype.isVertexIgnored;mxGraphLayout.prototype.isVertexIgnored=function(b){return e.apply(this,arguments)||this.graph.isTableRow(b)||this.graph.isTableCell(b)};var k=mxGraphLayout.prototype.isEdgeIgnored;mxGraphLayout.prototype.isEdgeIgnored=function(b){return k.apply(this,arguments)||
-this.graph.isEdgeIgnored(b)};var g=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(b){return this.graph.isCloneEvent(b)!=g.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var b=new mxEllipse(null,this.highlightColor,this.highlightColor,0);b.opacity=mxConstants.HIGHLIGHT_OPACITY;return b};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=
+this.graph.isEdgeIgnored(b)};var f=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(b){return this.graph.isCloneEvent(b)!=f.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var b=new mxEllipse(null,this.highlightColor,this.highlightColor,0);b.opacity=mxConstants.HIGHLIGHT_OPACITY;return b};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=
function(b){b=this.graph.createCurrentEdgeStyle();b=this.graph.createEdge(null,null,null,null,null,b);b=new mxCellState(this.graph.view,b,this.graph.getCellStyle(b));for(var d in this.graph.currentEdgeStyle)b.style[d]=this.graph.currentEdgeStyle[d];b.style=this.graph.postProcessCellStyle(b.cell,b.style);return b};var p=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var b=p.apply(this,arguments);b.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];
-return b};mxConnectionHandler.prototype.updatePreview=function(b){};var t=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var b=t.apply(this,arguments),d=b.getCell;b.getCell=mxUtils.bind(this,function(b){var f=d.apply(this,arguments);this.error=null;return f});return b};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=
-function(){for(var b="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",d="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),f=0;f<d.length;f++)null!=this.currentEdgeStyle[d[f]]&&(b+=d[f]+"="+this.currentEdgeStyle[d[f]]+";");null!=this.currentEdgeStyle.orthogonalLoop?b+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
+return b};mxConnectionHandler.prototype.updatePreview=function(b){};var t=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var b=t.apply(this,arguments),d=b.getCell;b.getCell=mxUtils.bind(this,function(b){var g=d.apply(this,arguments);this.error=null;return g});return b};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=
+function(){for(var b="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",d="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),g=0;g<d.length;g++)null!=this.currentEdgeStyle[d[g]]&&(b+=d[g]+"="+this.currentEdgeStyle[d[g]]+";");null!=this.currentEdgeStyle.orthogonalLoop?b+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
(b+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?b+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(b+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(b+="elbow="+this.currentEdgeStyle.elbow+";");return b=null!=this.currentEdgeStyle.html?b+("html="+this.currentEdgeStyle.html+";"):b+"html=1;"};
-Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var b=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=b&&(new mxCodec(b.ownerDocument)).decode(b,this.getStylesheet())};Graph.prototype.createCellLookup=function(b,d){d=null!=d?d:{};for(var f=0;f<b.length;f++){var c=b[f];d[mxObjectIdentity.get(c)]=c.getId();for(var e=this.model.getChildCount(c),
-g=0;g<e;g++)this.createCellLookup([this.model.getChildAt(c,g)],d)}return d};Graph.prototype.createCellMapping=function(b,d,f){f=null!=f?f:{};for(var c in b){var e=d[c];null==f[e]&&(f[e]=b[c].getId()||"")}return f};Graph.prototype.importGraphModel=function(b,d,f,c){d=null!=d?d:0;f=null!=f?f:0;var e=new mxCodec(b.ownerDocument),g=new mxGraphModel;e.decode(b,g);b=[];var e={},l={},k=g.getChildren(this.cloneCell(g.root,this.isCloneInvalidEdges(),e));if(null!=k){var q=this.createCellLookup([g.root]),k=
-k.slice();this.model.beginUpdate();try{if(1!=k.length||this.isCellLocked(this.getDefaultParent()))for(g=0;g<k.length;g++)m=this.model.getChildren(this.moveCells([k[g]],d,f,!1,this.model.getRoot())[0]),null!=m&&(b=b.concat(m));else{var m=g.getChildren(k[0]);null!=m&&(b=this.moveCells(m,d,f,!1,this.getDefaultParent()),l[g.getChildAt(g.root,0).getId()]=this.getDefaultParent().getId())}if(null!=b&&(this.createCellMapping(e,q,l),this.updateCustomLinks(l,b),c)){this.isGridEnabled()&&(d=this.snap(d),f=this.snap(f));
-var n=this.getBoundingBoxFromGeometry(b,!0);null!=n&&this.moveCells(b,d-n.x,f-n.y)}}finally{this.model.endUpdate()}}return b};Graph.prototype.encodeCells=function(b){for(var d={},f=this.cloneCells(b,null,d),c=new mxDictionary,e=0;e<b.length;e++)c.put(b[e],!0);for(var g=new mxCodec,l=new mxGraphModel,k=l.getChildAt(l.getRoot(),0),e=0;e<f.length;e++){l.add(k,f[e]);var q=this.view.getState(b[e]);if(null!=q){var m=this.getCellGeometry(f[e]);null!=m&&m.relative&&!this.model.isEdge(b[e])&&null==c.get(this.model.getParent(b[e]))&&
-(m.offset=null,m.relative=!1,m.x=q.x/q.view.scale-q.view.translate.x,m.y=q.y/q.view.scale-q.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(d,this.createCellLookup(b)),f);return g.encode(l)};Graph.prototype.isSwimlane=function(b,d){if(null!=b&&this.model.getParent(b)!=this.model.getRoot()&&!this.model.isEdge(b)){var f=this.getCurrentCellStyle(b,d)[mxConstants.STYLE_SHAPE];return f==mxConstants.SHAPE_SWIMLANE||"table"==f}return!1};var d=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=
-function(b){var f=this.model.getParent(b);if(null!=f){var c=this.getCurrentCellStyle(f);if(null!=c.expand)return"0"!=c.expand}return d.apply(this,arguments)&&(null==f||!this.isTable(f))};var f=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(b,d,c,e,g,l,k,q){null==q&&(q=this.model.getParent(b),this.isTable(q)||this.isTableRow(q))&&(q=this.getCellAt(l,k,null,!0,!1));c=null;this.model.beginUpdate();try{c=f.apply(this,[b,d,c,e,g,l,k,q]);this.model.setValue(c,"");var m=this.getChildCells(c,
+Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var b=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=b&&(new mxCodec(b.ownerDocument)).decode(b,this.getStylesheet())};Graph.prototype.createCellLookup=function(b,d){d=null!=d?d:{};for(var g=0;g<b.length;g++){var c=b[g];d[mxObjectIdentity.get(c)]=c.getId();for(var e=this.model.getChildCount(c),
+f=0;f<e;f++)this.createCellLookup([this.model.getChildAt(c,f)],d)}return d};Graph.prototype.createCellMapping=function(b,d,g){g=null!=g?g:{};for(var c in b){var e=d[c];null==g[e]&&(g[e]=b[c].getId()||"")}return g};Graph.prototype.importGraphModel=function(b,d,g,c){d=null!=d?d:0;g=null!=g?g:0;var e=new mxCodec(b.ownerDocument),f=new mxGraphModel;e.decode(b,f);b=[];var e={},l={},k=f.getChildren(this.cloneCell(f.root,this.isCloneInvalidEdges(),e));if(null!=k){var q=this.createCellLookup([f.root]),k=
+k.slice();this.model.beginUpdate();try{if(1!=k.length||this.isCellLocked(this.getDefaultParent()))for(f=0;f<k.length;f++)m=this.model.getChildren(this.moveCells([k[f]],d,g,!1,this.model.getRoot())[0]),null!=m&&(b=b.concat(m));else{var m=f.getChildren(k[0]);null!=m&&(b=this.moveCells(m,d,g,!1,this.getDefaultParent()),l[f.getChildAt(f.root,0).getId()]=this.getDefaultParent().getId())}if(null!=b&&(this.createCellMapping(e,q,l),this.updateCustomLinks(l,b),c)){this.isGridEnabled()&&(d=this.snap(d),g=this.snap(g));
+var n=this.getBoundingBoxFromGeometry(b,!0);null!=n&&this.moveCells(b,d-n.x,g-n.y)}}finally{this.model.endUpdate()}}return b};Graph.prototype.encodeCells=function(b){for(var d={},g=this.cloneCells(b,null,d),c=new mxDictionary,e=0;e<b.length;e++)c.put(b[e],!0);for(var f=new mxCodec,l=new mxGraphModel,k=l.getChildAt(l.getRoot(),0),e=0;e<g.length;e++){l.add(k,g[e]);var q=this.view.getState(b[e]);if(null!=q){var m=this.getCellGeometry(g[e]);null!=m&&m.relative&&!this.model.isEdge(b[e])&&null==c.get(this.model.getParent(b[e]))&&
+(m.offset=null,m.relative=!1,m.x=q.x/q.view.scale-q.view.translate.x,m.y=q.y/q.view.scale-q.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(d,this.createCellLookup(b)),g);return f.encode(l)};Graph.prototype.isSwimlane=function(b,d){if(null!=b&&this.model.getParent(b)!=this.model.getRoot()&&!this.model.isEdge(b)){var g=this.getCurrentCellStyle(b,d)[mxConstants.STYLE_SHAPE];return g==mxConstants.SHAPE_SWIMLANE||"table"==g}return!1};var d=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=
+function(b){var g=this.model.getParent(b);if(null!=g){var c=this.getCurrentCellStyle(g);if(null!=c.expand)return"0"!=c.expand}return d.apply(this,arguments)&&(null==g||!this.isTable(g))};var g=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(b,d,c,e,f,l,k,q){null==q&&(q=this.model.getParent(b),this.isTable(q)||this.isTableRow(q))&&(q=this.getCellAt(l,k,null,!0,!1));c=null;this.model.beginUpdate();try{c=g.apply(this,[b,d,c,e,f,l,k,q]);this.model.setValue(c,"");var m=this.getChildCells(c,
!0);for(d=0;d<m.length;d++){var n=this.getCellGeometry(m[d]);null!=n&&n.relative&&0<n.x&&this.model.remove(m[d])}var G=this.getChildCells(b,!0);for(d=0;d<G.length;d++)n=this.getCellGeometry(G[d]),null!=n&&n.relative&&0>=n.x&&this.model.remove(G[d]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[c]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[c]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,null,[b]);this.setCellStyles(mxConstants.STYLE_STARTARROW,
-mxConstants.NONE,[b]);var ha=this.model.getTerminal(c,!1);if(null!=ha){var v=this.getCurrentCellStyle(ha);null!=v&&"1"==v.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[b]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[b]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[c]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[c]))}}finally{this.model.endUpdate()}return c};var l=Graph.prototype.selectCell;Graph.prototype.selectCell=function(b,d,f){if(d||f)l.apply(this,arguments);
-else{var c=this.getSelectionCell(),e=null,g=[],k=mxUtils.bind(this,function(d){if(null!=this.view.getState(d)&&(this.model.isVertex(d)||this.model.isEdge(d)))if(g.push(d),d==c)e=g.length-1;else if(b&&null==c&&0<g.length||null!=e&&b&&g.length>e||!b&&0<e)return;for(var f=0;f<this.model.getChildCount(d);f++)k(this.model.getChildAt(d,f))});k(this.model.root);0<g.length&&(e=null!=e?mxUtils.mod(e+(b?1:-1),g.length):0,this.setSelectionCell(g[e]))}};Graph.prototype.swapUmlLifelines=function(b,d){var f=!1;
-if(null!=d&&1==b.length){var c=this.view.getState(d),e=this.view.getState(b[0]);if(null!=c&&null!=e&&"umlLifeline"==c.style.shape&&"umlLifeline"==e.style.shape&&(e=this.getCellGeometry(d),c=this.getCellGeometry(b[0]),null!=e&&null!=c)){f=e.clone();e=c.clone();e.x=f.x;e.y=f.y;f.x=c.x;f.y=c.y;this.model.beginUpdate();try{this.model.setGeometry(d,f),this.model.setGeometry(b[0],e)}finally{this.model.endUpdate()}f=!0}}return f};var q=Graph.prototype.moveCells;Graph.prototype.moveCells=function(b,d,f,c,
-e,g,l){if(!c&&this.swapUmlLifelines(b,e))return b;l=null!=l?l:{};if(this.isTable(e)){for(var k=[],m=0;m<b.length;m++)this.isTable(b[m])?k=k.concat(this.model.getChildCells(b[m],!0).reverse()):k.push(b[m]);b=k}this.model.beginUpdate();try{k=[];for(m=0;m<b.length;m++)if(null!=e&&this.isTableRow(b[m])){var n=this.model.getParent(b[m]),G=this.getCellGeometry(b[m]);this.isTable(n)&&k.push(n);if(null!=n&&null!=G&&this.isTable(n)&&this.isTable(e)&&(c||n!=e)){if(!c){var v=this.getCellGeometry(n);null!=v&&
-(v=v.clone(),v.height-=G.height,this.model.setGeometry(n,v))}v=this.getCellGeometry(e);null!=v&&(v=v.clone(),v.height+=G.height,this.model.setGeometry(e,v));var ha=this.model.getChildCells(e,!0);if(0<ha.length){b[m]=c?this.cloneCell(b[m]):b[m];var u=this.model.getChildCells(b[m],!0),A=this.model.getChildCells(ha[0],!0),p=A.length-u.length;if(0<p)for(var x=0;x<p;x++){var I=this.cloneCell(u[u.length-1]);null!=I&&(I.value="",this.model.add(b[m],I))}else if(0>p)for(x=0;x>p;x--)this.model.remove(u[u.length+
-x-1]);u=this.model.getChildCells(b[m],!0);for(x=0;x<A.length;x++){var P=this.getCellGeometry(A[x]),t=this.getCellGeometry(u[x]);null!=P&&null!=t&&(t=t.clone(),t.width=P.width,this.model.setGeometry(u[x],t))}}}}for(var ua=q.apply(this,arguments),m=0;m<k.length;m++)!c&&this.model.contains(k[m])&&0==this.model.getChildCount(k[m])&&this.model.remove(k[m]);c&&this.updateCustomLinks(this.createCellMapping(l,this.createCellLookup(b)),ua)}finally{this.model.endUpdate()}return ua};var m=Graph.prototype.removeCells;
-Graph.prototype.removeCells=function(b,d){var f=[];this.model.beginUpdate();try{for(var c=0;c<b.length;c++)if(this.isTableCell(b[c])){var e=this.model.getParent(b[c]),g=this.model.getParent(e);1==this.model.getChildCount(e)&&1==this.model.getChildCount(g)?0>mxUtils.indexOf(b,g)&&0>mxUtils.indexOf(f,g)&&f.push(g):this.labelChanged(b[c],"")}else{if(this.isTableRow(b[c])&&(g=this.model.getParent(b[c]),0>mxUtils.indexOf(b,g)&&0>mxUtils.indexOf(f,g))){for(var l=this.model.getChildCells(g,!0),k=0,q=0;q<
-l.length;q++)0<=mxUtils.indexOf(b,l[q])&&k++;k==l.length&&f.push(g)}f.push(b[c])}f=m.apply(this,[f,d])}finally{this.model.endUpdate()}return f};Graph.prototype.updateCustomLinks=function(b,d,f){f=null!=f?f:new Graph;for(var c=0;c<d.length;c++)null!=d[c]&&f.updateCustomLinksForCell(b,d[c],f)};Graph.prototype.updateCustomLinksForCell=function(b,d){this.doUpdateCustomLinksForCell(b,d);for(var f=this.model.getChildCount(d),c=0;c<f;c++)this.updateCustomLinksForCell(b,this.model.getChildAt(d,c))};Graph.prototype.doUpdateCustomLinksForCell=
-function(b,d){};Graph.prototype.getAllConnectionConstraints=function(b,d){if(null!=b){var f=mxUtils.getValue(b.style,"points",null);if(null!=f){var c=[];try{for(var e=JSON.parse(f),f=0;f<e.length;f++){var g=e[f];c.push(new mxConnectionConstraint(new mxPoint(g[0],g[1]),2<g.length?"0"!=g[2]:!0,null,3<g.length?g[3]:0,4<g.length?g[4]:0))}}catch(pa){}return c}if(null!=b.shape&&null!=b.shape.bounds){g=b.shape.direction;e=b.shape.bounds;f=b.shape.scale;c=e.width/f;e=e.height/f;if(g==mxConstants.DIRECTION_NORTH||
-g==mxConstants.DIRECTION_SOUTH)g=c,c=e,e=g;f=b.shape.getConstraints(b.style,c,e);if(null!=f)return f;if(null!=b.shape.stencil&&null!=b.shape.stencil.constraints)return b.shape.stencil.constraints;if(null!=b.shape.constraints)return b.shape.constraints}}return null};Graph.prototype.flipEdge=function(b){if(null!=b){var d=this.getCurrentCellStyle(b),d=mxUtils.getValue(d,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;
-this.setCellStyles(mxConstants.STYLE_ELBOW,d,[b])}};Graph.prototype.isValidRoot=function(b){for(var d=this.model.getChildCount(b),f=0,c=0;c<d;c++){var e=this.model.getChildAt(b,c);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||f++)}return 0<f||this.isContainer(b)};Graph.prototype.isValidDropTarget=function(b,d,f){for(var c=this.getCurrentCellStyle(b),e=!0,g=!0,l=0;l<d.length&&g;l++)e=e&&this.isTable(d[l]),g=g&&this.isTableRow(d[l]);return("1"!=mxUtils.getValue(c,"part","0")||
-this.isContainer(b))&&"0"!=mxUtils.getValue(c,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(b))&&!this.isTableRow(b)&&(!this.isTable(b)||g||e)&&!this.isCellLocked(b)};Graph.prototype.createGroupCell=function(){var b=mxGraph.prototype.createGroupCell.apply(this,arguments);b.setStyle("group");return b};Graph.prototype.isExtendParentsOnAdd=function(b){var d=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(d&&null!=b&&null!=this.layoutManager){var f=
-this.model.getParent(b);null!=f&&(f=this.layoutManager.getLayout(f),null!=f&&f.constructor==mxStackLayout&&(d=!1))}return d};Graph.prototype.getPreferredSizeForCell=function(b){var d=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=d&&(d.width+=10,d.height+=4,this.gridEnabled&&(d.width=this.snap(d.width),d.height=this.snap(d.height)));return d};Graph.prototype.turnShapes=function(b,d){var f=this.getModel(),c=[];f.beginUpdate();try{for(var e=0;e<b.length;e++){var g=b[e];if(f.isEdge(g)){var l=
-f.getTerminal(g,!0),k=f.getTerminal(g,!1);f.setTerminal(g,k,!0);f.setTerminal(g,l,!1);var m=f.getGeometry(g);if(null!=m){m=m.clone();null!=m.points&&m.points.reverse();var q=m.getTerminalPoint(!0),n=m.getTerminalPoint(!1);m.setTerminalPoint(q,!1);m.setTerminalPoint(n,!0);f.setGeometry(g,m);var G=this.view.getState(g),v=this.view.getState(l),u=this.view.getState(k);if(null!=G){var A=null!=v?this.getConnectionConstraint(G,v,!0):null,ha=null!=u?this.getConnectionConstraint(G,u,!1):null;this.setConnectionConstraint(g,
-l,!0,ha);this.setConnectionConstraint(g,k,!1,A);var p=mxUtils.getValue(G.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(G.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[g]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,p,[g])}c.push(g)}}else if(f.isVertex(g)&&(m=this.getCellGeometry(g),null!=m)){if(!(this.isTable(g)||this.isTableRow(g)||this.isTableCell(g)||this.isSwimlane(g))){m=m.clone();m.x+=m.width/
-2-m.height/2;m.y+=m.height/2-m.width/2;var x=m.width;m.width=m.height;m.height=x;f.setGeometry(g,m)}var I=this.view.getState(g);if(null!=I){var t=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],y=mxUtils.getValue(I.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,t[mxUtils.mod(mxUtils.indexOf(t,y)+(d?-1:1),t.length)],[g])}c.push(g)}}}finally{f.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=
+mxConstants.NONE,[b]);var ha=this.model.getTerminal(c,!1);if(null!=ha){var v=this.getCurrentCellStyle(ha);null!=v&&"1"==v.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[b]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[b]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[c]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[c]))}}finally{this.model.endUpdate()}return c};var l=Graph.prototype.selectCell;Graph.prototype.selectCell=function(b,d,g){if(d||g)l.apply(this,arguments);
+else{var c=this.getSelectionCell(),e=null,f=[],k=mxUtils.bind(this,function(d){if(null!=this.view.getState(d)&&(this.model.isVertex(d)||this.model.isEdge(d)))if(f.push(d),d==c)e=f.length-1;else if(b&&null==c&&0<f.length||null!=e&&b&&f.length>e||!b&&0<e)return;for(var g=0;g<this.model.getChildCount(d);g++)k(this.model.getChildAt(d,g))});k(this.model.root);0<f.length&&(e=null!=e?mxUtils.mod(e+(b?1:-1),f.length):0,this.setSelectionCell(f[e]))}};Graph.prototype.swapUmlLifelines=function(b,d){var g=!1;
+if(null!=d&&1==b.length){var c=this.view.getState(d),e=this.view.getState(b[0]);if(null!=c&&null!=e&&"umlLifeline"==c.style.shape&&"umlLifeline"==e.style.shape&&(e=this.getCellGeometry(d),c=this.getCellGeometry(b[0]),null!=e&&null!=c)){g=e.clone();e=c.clone();e.x=g.x;e.y=g.y;g.x=c.x;g.y=c.y;this.model.beginUpdate();try{this.model.setGeometry(d,g),this.model.setGeometry(b[0],e)}finally{this.model.endUpdate()}g=!0}}return g};var q=Graph.prototype.moveCells;Graph.prototype.moveCells=function(b,d,g,c,
+e,f,l){if(!c&&this.swapUmlLifelines(b,e))return b;l=null!=l?l:{};if(this.isTable(e)){for(var k=[],m=0;m<b.length;m++)this.isTable(b[m])?k=k.concat(this.model.getChildCells(b[m],!0).reverse()):k.push(b[m]);b=k}this.model.beginUpdate();try{k=[];for(m=0;m<b.length;m++)if(null!=e&&this.isTableRow(b[m])){var n=this.model.getParent(b[m]),G=this.getCellGeometry(b[m]);this.isTable(n)&&k.push(n);if(null!=n&&null!=G&&this.isTable(n)&&this.isTable(e)&&(c||n!=e)){if(!c){var v=this.getCellGeometry(n);null!=v&&
+(v=v.clone(),v.height-=G.height,this.model.setGeometry(n,v))}v=this.getCellGeometry(e);null!=v&&(v=v.clone(),v.height+=G.height,this.model.setGeometry(e,v));var ha=this.model.getChildCells(e,!0);if(0<ha.length){b[m]=c?this.cloneCell(b[m]):b[m];var u=this.model.getChildCells(b[m],!0),p=this.model.getChildCells(ha[0],!0),B=p.length-u.length;if(0<B)for(var x=0;x<B;x++){var I=this.cloneCell(u[u.length-1]);null!=I&&(I.value="",this.model.add(b[m],I))}else if(0>B)for(x=0;x>B;x--)this.model.remove(u[u.length+
+x-1]);u=this.model.getChildCells(b[m],!0);for(x=0;x<p.length;x++){var P=this.getCellGeometry(p[x]),t=this.getCellGeometry(u[x]);null!=P&&null!=t&&(t=t.clone(),t.width=P.width,this.model.setGeometry(u[x],t))}}}}for(var ua=q.apply(this,arguments),m=0;m<k.length;m++)!c&&this.model.contains(k[m])&&0==this.model.getChildCount(k[m])&&this.model.remove(k[m]);c&&this.updateCustomLinks(this.createCellMapping(l,this.createCellLookup(b)),ua)}finally{this.model.endUpdate()}return ua};var m=Graph.prototype.removeCells;
+Graph.prototype.removeCells=function(b,d){var g=[];this.model.beginUpdate();try{for(var c=0;c<b.length;c++)if(this.isTableCell(b[c])){var e=this.model.getParent(b[c]),f=this.model.getParent(e);1==this.model.getChildCount(e)&&1==this.model.getChildCount(f)?0>mxUtils.indexOf(b,f)&&0>mxUtils.indexOf(g,f)&&g.push(f):this.labelChanged(b[c],"")}else{if(this.isTableRow(b[c])&&(f=this.model.getParent(b[c]),0>mxUtils.indexOf(b,f)&&0>mxUtils.indexOf(g,f))){for(var l=this.model.getChildCells(f,!0),k=0,q=0;q<
+l.length;q++)0<=mxUtils.indexOf(b,l[q])&&k++;k==l.length&&g.push(f)}g.push(b[c])}g=m.apply(this,[g,d])}finally{this.model.endUpdate()}return g};Graph.prototype.updateCustomLinks=function(b,d,g){g=null!=g?g:new Graph;for(var c=0;c<d.length;c++)null!=d[c]&&g.updateCustomLinksForCell(b,d[c],g)};Graph.prototype.updateCustomLinksForCell=function(b,d){this.doUpdateCustomLinksForCell(b,d);for(var g=this.model.getChildCount(d),c=0;c<g;c++)this.updateCustomLinksForCell(b,this.model.getChildAt(d,c))};Graph.prototype.doUpdateCustomLinksForCell=
+function(b,d){};Graph.prototype.getAllConnectionConstraints=function(b,d){if(null!=b){var g=mxUtils.getValue(b.style,"points",null);if(null!=g){var c=[];try{for(var e=JSON.parse(g),g=0;g<e.length;g++){var f=e[g];c.push(new mxConnectionConstraint(new mxPoint(f[0],f[1]),2<f.length?"0"!=f[2]:!0,null,3<f.length?f[3]:0,4<f.length?f[4]:0))}}catch(pa){}return c}if(null!=b.shape&&null!=b.shape.bounds){f=b.shape.direction;e=b.shape.bounds;g=b.shape.scale;c=e.width/g;e=e.height/g;if(f==mxConstants.DIRECTION_NORTH||
+f==mxConstants.DIRECTION_SOUTH)f=c,c=e,e=f;g=b.shape.getConstraints(b.style,c,e);if(null!=g)return g;if(null!=b.shape.stencil&&null!=b.shape.stencil.constraints)return b.shape.stencil.constraints;if(null!=b.shape.constraints)return b.shape.constraints}}return null};Graph.prototype.flipEdge=function(b){if(null!=b){var d=this.getCurrentCellStyle(b),d=mxUtils.getValue(d,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;
+this.setCellStyles(mxConstants.STYLE_ELBOW,d,[b])}};Graph.prototype.isValidRoot=function(b){for(var d=this.model.getChildCount(b),g=0,c=0;c<d;c++){var e=this.model.getChildAt(b,c);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||g++)}return 0<g||this.isContainer(b)};Graph.prototype.isValidDropTarget=function(b,d,g){for(var c=this.getCurrentCellStyle(b),e=!0,f=!0,l=0;l<d.length&&f;l++)e=e&&this.isTable(d[l]),f=f&&this.isTableRow(d[l]);return("1"!=mxUtils.getValue(c,"part","0")||
+this.isContainer(b))&&"0"!=mxUtils.getValue(c,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(b))&&!this.isTableRow(b)&&(!this.isTable(b)||f||e)&&!this.isCellLocked(b)};Graph.prototype.createGroupCell=function(){var b=mxGraph.prototype.createGroupCell.apply(this,arguments);b.setStyle("group");return b};Graph.prototype.isExtendParentsOnAdd=function(b){var d=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(d&&null!=b&&null!=this.layoutManager){var g=
+this.model.getParent(b);null!=g&&(g=this.layoutManager.getLayout(g),null!=g&&g.constructor==mxStackLayout&&(d=!1))}return d};Graph.prototype.getPreferredSizeForCell=function(b){var d=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=d&&(d.width+=10,d.height+=4,this.gridEnabled&&(d.width=this.snap(d.width),d.height=this.snap(d.height)));return d};Graph.prototype.turnShapes=function(b,d){var g=this.getModel(),c=[];g.beginUpdate();try{for(var e=0;e<b.length;e++){var f=b[e];if(g.isEdge(f)){var l=
+g.getTerminal(f,!0),k=g.getTerminal(f,!1);g.setTerminal(f,k,!0);g.setTerminal(f,l,!1);var m=g.getGeometry(f);if(null!=m){m=m.clone();null!=m.points&&m.points.reverse();var q=m.getTerminalPoint(!0),n=m.getTerminalPoint(!1);m.setTerminalPoint(q,!1);m.setTerminalPoint(n,!0);g.setGeometry(f,m);var G=this.view.getState(f),v=this.view.getState(l),u=this.view.getState(k);if(null!=G){var ha=null!=v?this.getConnectionConstraint(G,v,!0):null,p=null!=u?this.getConnectionConstraint(G,u,!1):null;this.setConnectionConstraint(f,
+l,!0,p);this.setConnectionConstraint(f,k,!1,ha);var B=mxUtils.getValue(G.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(G.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[f]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,B,[f])}c.push(f)}}else if(g.isVertex(f)&&(m=this.getCellGeometry(f),null!=m)){if(!(this.isTable(f)||this.isTableRow(f)||this.isTableCell(f)||this.isSwimlane(f))){m=m.clone();m.x+=m.width/
+2-m.height/2;m.y+=m.height/2-m.width/2;var x=m.width;m.width=m.height;m.height=x;g.setGeometry(f,m)}var I=this.view.getState(f);if(null!=I){var t=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],y=mxUtils.getValue(I.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,t[mxUtils.mod(mxUtils.indexOf(t,y)+(d?-1:1),t.length)],[f])}c.push(f)}}}finally{g.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=
function(b){if(null!=b&&null!=b.fgNode)for(b=b.fgNode.firstChild;null!=b;){if("text"==b.nodeName&&"1"==b.getAttribute("placeholders"))return!0;b=b.nextSibling}return!1};var n=Graph.prototype.processChange;Graph.prototype.processChange=function(b){if(b instanceof mxGeometryChange&&(this.isTableCell(b.cell)||this.isTableRow(b.cell))&&(null==b.previous&&null!=b.geometry||null!=b.previous&&!b.previous.equals(b.geometry))){var d=b.cell;this.isTableCell(d)&&(d=this.model.getParent(d));this.isTableRow(d)&&
-(d=this.model.getParent(d));var f=this.view.getState(d);null!=f&&null!=f.shape&&(this.view.invalidate(d),f.shape.bounds=null)}n.apply(this,arguments);b instanceof mxValueChange&&null!=b.cell&&null!=b.cell.value&&"object"==typeof b.cell.value&&this.invalidateDescendantsWithPlaceholders(b.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(b){b=this.model.getDescendants(b);if(0<b.length)for(var d=0;d<b.length;d++){var f=this.view.getState(b[d]);null!=f&&null!=f.shape&&null!=f.shape.stencil&&
-this.stencilHasPlaceholders(f.shape.stencil)?this.removeStateForCell(b[d]):this.isReplacePlaceholders(b[d])&&this.view.invalidate(b[d],!1,!1)}};Graph.prototype.replaceElement=function(b,d){for(var f=b.ownerDocument.createElement(null!=d?d:"span"),c=Array.prototype.slice.call(b.attributes);attr=c.pop();)f.setAttribute(attr.nodeName,attr.nodeValue);f.innerHTML=b.innerHTML;b.parentNode.replaceChild(f,b)};Graph.prototype.processElements=function(b,d){if(null!=b)for(var f=b.getElementsByTagName("*"),c=
-0;c<f.length;c++)d(f[c])};Graph.prototype.updateLabelElements=function(b,d,f){b=null!=b?b:this.getSelectionCells();for(var c=document.createElement("div"),e=0;e<b.length;e++)if(this.isHtmlLabel(b[e])){var g=this.convertValueToString(b[e]);if(null!=g&&0<g.length){c.innerHTML=g;for(var l=c.getElementsByTagName(null!=f?f:"*"),k=0;k<l.length;k++)d(l[k]);c.innerHTML!=g&&this.cellLabelChanged(b[e],c.innerHTML)}}};Graph.prototype.cellLabelChanged=function(b,d,f){d=Graph.zapGremlins(d);this.model.beginUpdate();
-try{if(null!=b.value&&"object"==typeof b.value){if(this.isReplacePlaceholders(b)&&null!=b.getAttribute("placeholder"))for(var c=b.getAttribute("placeholder"),e=b;null!=e;){if(e==this.model.getRoot()||null!=e.value&&"object"==typeof e.value&&e.hasAttribute(c)){this.setAttributeForCell(e,c,d);break}e=this.model.getParent(e)}var g=b.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&g.hasAttribute("label_"+Graph.diagramLanguage)?g.setAttribute("label_"+Graph.diagramLanguage,d):
-g.setAttribute("label",d);d=g}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(b){if(null!=b){for(var d=new mxDictionary,f=0;f<b.length;f++)d.put(b[f],!0);for(var c=[],f=0;f<b.length;f++){var e=this.model.getParent(b[f]);null==e||d.get(e)||(d.put(e,!0),c.push(e))}for(f=0;f<c.length;f++)if(e=this.view.getState(c[f]),null!=e&&(this.model.isEdge(e.cell)||this.model.isVertex(e.cell))&&this.isCellDeletable(e.cell)&&this.isTransparentState(e)){for(var g=
-!0,l=0;l<this.model.getChildCount(e.cell)&&g;l++)d.get(this.model.getChildAt(e.cell,l))||(g=!1);g&&b.push(e.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(b){for(var d=[],f=0;f<b.length;f++)this.isCellDeletable(b[f])&&this.isTransparentState(this.view.getState(b[f]))&&d.push(b[f]);b=d;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(b,d){this.setAttributeForCell(b,"link",d)};Graph.prototype.setTooltipForCell=
-function(b,d){var f="tooltip";Graph.translateDiagram&&null!=Graph.diagramLanguage&&mxUtils.isNode(b.value)&&b.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(f="tooltip_"+Graph.diagramLanguage);this.setAttributeForCell(b,f,d)};Graph.prototype.getAttributeForCell=function(b,d,f){b=null!=b.value&&"object"===typeof b.value?b.value.getAttribute(d):null;return null!=b?b:f};Graph.prototype.setAttributeForCell=function(b,d,f){var c;null!=b.value&&"object"==typeof b.value?c=b.value.cloneNode(!0):(c=
-mxUtils.createXmlDocument().createElement("UserObject"),c.setAttribute("label",b.value||""));null!=f?c.setAttribute(d,f):c.removeAttribute(d);this.model.setValue(b,c)};var u=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(b,d,f,c){this.getModel();if(mxEvent.isAltDown(d))return null;for(var e=0;e<b.length;e++){var g=this.model.getParent(b[e]);if(this.model.isEdge(g)&&0>mxUtils.indexOf(b,g))return null}for(var g=u.apply(this,arguments),l=!0,e=0;e<b.length&&l;e++)l=l&&this.isTableRow(b[e]);
-l&&(this.isTableCell(g)&&(g=this.model.getParent(g)),this.isTableRow(g)&&(g=this.model.getParent(g)),this.isTable(g)||(g=null));return g};Graph.prototype.click=function(b){mxGraph.prototype.click.call(this,b);this.firstClickState=b.getState();this.firstClickSource=b.getSource()};Graph.prototype.dblClick=function(b,d){this.isEnabled()&&(d=this.insertTextForEvent(b,d),mxGraph.prototype.dblClick.call(this,b,d))};Graph.prototype.insertTextForEvent=function(b,d){var f=mxUtils.convertPoint(this.container,
-mxEvent.getClientX(b),mxEvent.getClientY(b));if(null!=b&&!this.model.isVertex(d)){var c=this.model.isEdge(d)?this.view.getState(d):null,e=mxEvent.getSource(b);this.firstClickState!=c||this.firstClickSource!=e||null!=c&&null!=c.text&&null!=c.text.node&&null!=c.text.boundingBox&&(mxUtils.contains(c.text.boundingBox,f.x,f.y)||mxUtils.isAncestorNode(c.text.node,mxEvent.getSource(b)))||(null!=c||this.isCellLocked(this.getDefaultParent()))&&(null==c||this.isCellLocked(c.cell))||!(null!=c||mxClient.IS_SVG&&
-e==this.view.getCanvas().ownerSVGElement)||(null==c&&(c=this.view.getState(this.getCellAt(f.x,f.y))),d=this.addText(f.x,f.y,c))}return d};Graph.prototype.getInsertPoint=function(){var b=this.getGridSize(),d=this.container.scrollLeft/this.view.scale-this.view.translate.x,f=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible)var c=this.getPageLayout(),e=this.getPageSize(),d=Math.max(d,c.x*e.width),f=Math.max(f,c.y*e.height);return new mxPoint(this.snap(d+b),this.snap(f+
-b))};Graph.prototype.getFreeInsertPoint=function(){var b=this.view,d=this.getGraphBounds(),f=this.getInsertPoint(),c=this.snap(Math.round(Math.max(f.x,d.x/b.scale-b.translate.x+(0==d.width?2*this.gridSize:0)))),b=this.snap(Math.round(Math.max(f.y,(d.y+d.height)/b.scale-b.translate.y+2*this.gridSize)));return new mxPoint(c,b)};Graph.prototype.getCenterInsertPoint=function(b){b=null!=b?b:new mxRectangle;return mxUtils.hasScrollbars(this.container)?new mxPoint(this.snap(Math.round((this.container.scrollLeft+
+(d=this.model.getParent(d));var g=this.view.getState(d);null!=g&&null!=g.shape&&(this.view.invalidate(d),g.shape.bounds=null)}n.apply(this,arguments);b instanceof mxValueChange&&null!=b.cell&&null!=b.cell.value&&"object"==typeof b.cell.value&&this.invalidateDescendantsWithPlaceholders(b.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(b){b=this.model.getDescendants(b);if(0<b.length)for(var d=0;d<b.length;d++){var g=this.view.getState(b[d]);null!=g&&null!=g.shape&&null!=g.shape.stencil&&
+this.stencilHasPlaceholders(g.shape.stencil)?this.removeStateForCell(b[d]):this.isReplacePlaceholders(b[d])&&this.view.invalidate(b[d],!1,!1)}};Graph.prototype.replaceElement=function(b,d){for(var g=b.ownerDocument.createElement(null!=d?d:"span"),c=Array.prototype.slice.call(b.attributes);attr=c.pop();)g.setAttribute(attr.nodeName,attr.nodeValue);g.innerHTML=b.innerHTML;b.parentNode.replaceChild(g,b)};Graph.prototype.processElements=function(b,d){if(null!=b)for(var g=b.getElementsByTagName("*"),c=
+0;c<g.length;c++)d(g[c])};Graph.prototype.updateLabelElements=function(b,d,g){b=null!=b?b:this.getSelectionCells();for(var c=document.createElement("div"),e=0;e<b.length;e++)if(this.isHtmlLabel(b[e])){var f=this.convertValueToString(b[e]);if(null!=f&&0<f.length){c.innerHTML=f;for(var l=c.getElementsByTagName(null!=g?g:"*"),k=0;k<l.length;k++)d(l[k]);c.innerHTML!=f&&this.cellLabelChanged(b[e],c.innerHTML)}}};Graph.prototype.cellLabelChanged=function(b,d,g){d=Graph.zapGremlins(d);this.model.beginUpdate();
+try{if(null!=b.value&&"object"==typeof b.value){if(this.isReplacePlaceholders(b)&&null!=b.getAttribute("placeholder"))for(var c=b.getAttribute("placeholder"),e=b;null!=e;){if(e==this.model.getRoot()||null!=e.value&&"object"==typeof e.value&&e.hasAttribute(c)){this.setAttributeForCell(e,c,d);break}e=this.model.getParent(e)}var f=b.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&f.hasAttribute("label_"+Graph.diagramLanguage)?f.setAttribute("label_"+Graph.diagramLanguage,d):
+f.setAttribute("label",d);d=f}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(b){if(null!=b){for(var d=new mxDictionary,g=0;g<b.length;g++)d.put(b[g],!0);for(var c=[],g=0;g<b.length;g++){var e=this.model.getParent(b[g]);null==e||d.get(e)||(d.put(e,!0),c.push(e))}for(g=0;g<c.length;g++)if(e=this.view.getState(c[g]),null!=e&&(this.model.isEdge(e.cell)||this.model.isVertex(e.cell))&&this.isCellDeletable(e.cell)&&this.isTransparentState(e)){for(var f=
+!0,l=0;l<this.model.getChildCount(e.cell)&&f;l++)d.get(this.model.getChildAt(e.cell,l))||(f=!1);f&&b.push(e.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(b){for(var d=[],g=0;g<b.length;g++)this.isCellDeletable(b[g])&&this.isTransparentState(this.view.getState(b[g]))&&d.push(b[g]);b=d;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(b,d){this.setAttributeForCell(b,"link",d)};Graph.prototype.setTooltipForCell=
+function(b,d){var g="tooltip";Graph.translateDiagram&&null!=Graph.diagramLanguage&&mxUtils.isNode(b.value)&&b.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(g="tooltip_"+Graph.diagramLanguage);this.setAttributeForCell(b,g,d)};Graph.prototype.getAttributeForCell=function(b,d,g){b=null!=b.value&&"object"===typeof b.value?b.value.getAttribute(d):null;return null!=b?b:g};Graph.prototype.setAttributeForCell=function(b,d,g){var c;null!=b.value&&"object"==typeof b.value?c=b.value.cloneNode(!0):(c=
+mxUtils.createXmlDocument().createElement("UserObject"),c.setAttribute("label",b.value||""));null!=g?c.setAttribute(d,g):c.removeAttribute(d);this.model.setValue(b,c)};var u=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(b,d,g,c){this.getModel();if(mxEvent.isAltDown(d))return null;for(var e=0;e<b.length;e++){var f=this.model.getParent(b[e]);if(this.model.isEdge(f)&&0>mxUtils.indexOf(b,f))return null}for(var f=u.apply(this,arguments),l=!0,e=0;e<b.length&&l;e++)l=l&&this.isTableRow(b[e]);
+l&&(this.isTableCell(f)&&(f=this.model.getParent(f)),this.isTableRow(f)&&(f=this.model.getParent(f)),this.isTable(f)||(f=null));return f};Graph.prototype.click=function(b){mxGraph.prototype.click.call(this,b);this.firstClickState=b.getState();this.firstClickSource=b.getSource()};Graph.prototype.dblClick=function(b,d){this.isEnabled()&&(d=this.insertTextForEvent(b,d),mxGraph.prototype.dblClick.call(this,b,d))};Graph.prototype.insertTextForEvent=function(b,d){var g=mxUtils.convertPoint(this.container,
+mxEvent.getClientX(b),mxEvent.getClientY(b));if(null!=b&&!this.model.isVertex(d)){var c=this.model.isEdge(d)?this.view.getState(d):null,e=mxEvent.getSource(b);this.firstClickState!=c||this.firstClickSource!=e||null!=c&&null!=c.text&&null!=c.text.node&&null!=c.text.boundingBox&&(mxUtils.contains(c.text.boundingBox,g.x,g.y)||mxUtils.isAncestorNode(c.text.node,mxEvent.getSource(b)))||(null!=c||this.isCellLocked(this.getDefaultParent()))&&(null==c||this.isCellLocked(c.cell))||!(null!=c||mxClient.IS_SVG&&
+e==this.view.getCanvas().ownerSVGElement)||(null==c&&(c=this.view.getState(this.getCellAt(g.x,g.y))),d=this.addText(g.x,g.y,c))}return d};Graph.prototype.getInsertPoint=function(){var b=this.getGridSize(),d=this.container.scrollLeft/this.view.scale-this.view.translate.x,g=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible)var c=this.getPageLayout(),e=this.getPageSize(),d=Math.max(d,c.x*e.width),g=Math.max(g,c.y*e.height);return new mxPoint(this.snap(d+b),this.snap(g+
+b))};Graph.prototype.getFreeInsertPoint=function(){var b=this.view,d=this.getGraphBounds(),g=this.getInsertPoint(),c=this.snap(Math.round(Math.max(g.x,d.x/b.scale-b.translate.x+(0==d.width?2*this.gridSize:0)))),b=this.snap(Math.round(Math.max(g.y,(d.y+d.height)/b.scale-b.translate.y+2*this.gridSize)));return new mxPoint(c,b)};Graph.prototype.getCenterInsertPoint=function(b){b=null!=b?b:new mxRectangle;return mxUtils.hasScrollbars(this.container)?new mxPoint(this.snap(Math.round((this.container.scrollLeft+
this.container.clientWidth/2)/this.view.scale-this.view.translate.x-b.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/2)/this.view.scale-this.view.translate.y-b.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-b.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-b.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=
-function(b,d,f){var c=new mxCell;c.value="Text";c.geometry=new mxGeometry(0,0,0,0);c.vertex=!0;if(null!=f&&this.model.isEdge(f.cell)){c.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";c.geometry.relative=!0;c.connectable=!1;var e=this.view.getRelativePoint(f,b,d);c.geometry.x=Math.round(1E4*e.x)/1E4;c.geometry.y=Math.round(e.y);c.geometry.offset=new mxPoint(0,0);var e=this.view.getPoint(f,c.geometry),g=this.view.scale;c.geometry.offset=new mxPoint(Math.round((b-e.x)/
-g),Math.round((d-e.y)/g))}else e=this.view.translate,c.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",c.geometry.width=40,c.geometry.height=20,c.geometry.x=Math.round(b/this.view.scale)-e.x-(null!=f?f.origin.x:0),c.geometry.y=Math.round(d/this.view.scale)-e.y-(null!=f?f.origin.y:0),c.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([c],null!=f?f.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[c])),this.autoSizeCell(c)}finally{this.getModel().endUpdate()}return c};
-Graph.prototype.addClickHandler=function(b,d,f){var c=mxUtils.bind(this,function(){var b=this.container.getElementsByTagName("a");if(null!=b)for(var f=0;f<b.length;f++){var c=this.getAbsoluteUrl(b[f].getAttribute("href"));null!=c&&(b[f].setAttribute("rel",this.linkRelation),b[f].setAttribute("href",c),null!=d&&mxEvent.addGestureListeners(b[f],null,null,d))}});this.model.addListener(mxEvent.CHANGE,c);c();var e=this.container.style.cursor,g=this.getTolerance(),l=this,k={currentState:null,currentLink:null,
-currentTarget:null,highlight:null!=b&&""!=b&&b!=mxConstants.NONE?new mxCellHighlight(l,b,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(b){var d=b.sourceState;if(null==d||null==l.getLinkForCell(d.cell))b=l.getCellAt(b.getGraphX(),b.getGraphY(),null,null,null,function(b,d,f){return null==l.getLinkForCell(b.cell)}),d=null==d||l.model.isAncestor(b,d.cell)?l.view.getState(b):null;d!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=d,null!=this.currentState&&
-this.activate(this.currentState))},mouseDown:function(b,d){this.startX=d.getGraphX();this.startY=d.getGraphY();this.scrollLeft=l.container.scrollLeft;this.scrollTop=l.container.scrollTop;null==this.currentLink&&"auto"==l.container.style.overflow&&(l.container.style.cursor="move");this.updateCurrentState(d)},mouseMove:function(b,d){if(l.isMouseDown){if(null!=this.currentLink){var f=Math.abs(this.startX-d.getGraphX()),c=Math.abs(this.startY-d.getGraphY());(f>g||c>g)&&this.clear()}}else{for(f=d.getSource();null!=
-f&&"a"!=f.nodeName.toLowerCase();)f=f.parentNode;null!=f?this.clear():(null!=l.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&l.tooltipHandler.reset(d,!0,this.currentState),(null==this.currentState||d.getState()!=this.currentState&&null!=d.sourceState||!l.intersects(this.currentState,d.getGraphX(),d.getGraphY()))&&this.updateCurrentState(d))}},mouseUp:function(b,c){for(var e=c.getSource(),k=c.getEvent();null!=e&&"a"!=e.nodeName.toLowerCase();)e=e.parentNode;null==e&&Math.abs(this.scrollLeft-
-l.container.scrollLeft)<g&&Math.abs(this.scrollTop-l.container.scrollTop)<g&&(null==c.sourceState||!c.isSource(c.sourceState.control))&&((mxEvent.isLeftMouseButton(k)||mxEvent.isMiddleMouseButton(k))&&!mxEvent.isPopupTrigger(k)||mxEvent.isTouchEvent(k))&&(null!=this.currentLink?(e=l.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==d||d(k,this.currentLink),mxEvent.isConsumed(k)||(k=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(k)?"_blank":
-e?l.linkTarget:"_top",l.openLink(this.currentLink,k),c.consume())):null!=f&&!c.isConsumed()&&Math.abs(this.scrollLeft-l.container.scrollLeft)<g&&Math.abs(this.scrollTop-l.container.scrollTop)<g&&Math.abs(this.startX-c.getGraphX())<g&&Math.abs(this.startY-c.getGraphY())<g&&f(c.getEvent()));this.clear()},activate:function(b){this.currentLink=l.getAbsoluteUrl(l.getLinkForCell(b.cell));null!=this.currentLink&&(this.currentTarget=l.getLinkTargetForCell(b.cell),l.container.style.cursor="pointer",null!=
-this.highlight&&this.highlight.highlight(b))},clear:function(){null!=l.container&&(l.container.style.cursor=e);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=l.tooltipHandler&&l.tooltipHandler.hide()}};l.click=function(b){};l.addMouseListener(k);mxEvent.addListener(document,"mouseleave",function(b){k.clear()})};Graph.prototype.duplicateCells=function(b,d){b=null!=b?b:this.getSelectionCells();d=null!=d?d:!0;for(var f=0;f<b.length;f++)this.isTableCell(b[f])&&
-(b[f]=this.model.getParent(b[f]));b=this.model.getTopmostCells(b);var c=this.getModel(),e=this.gridSize,g=[];c.beginUpdate();try{for(var l={},k=this.createCellLookup(b),m=this.cloneCells(b,!1,l,!0),f=0;f<b.length;f++){var q=c.getParent(b[f]);if(null!=q){var n=this.moveCells([m[f]],e,e,!1)[0];g.push(n);if(d)c.add(q,m[f]);else{var G=q.getIndex(b[f]);c.add(q,m[f],G+1)}if(this.isTable(q)){var v=this.getCellGeometry(m[f]),u=this.getCellGeometry(q);null!=v&&null!=u&&(u=u.clone(),u.height+=v.height,c.setGeometry(q,
-u))}}else g.push(m[f])}this.updateCustomLinks(this.createCellMapping(l,k),m,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",m))}finally{c.endUpdate()}return g};Graph.prototype.insertImage=function(b,d,f){if(null!=b&&null!=this.cellEditor.textarea){for(var c=this.cellEditor.textarea.getElementsByTagName("img"),e=[],g=0;g<c.length;g++)e.push(c[g]);document.execCommand("insertimage",!1,b);b=this.cellEditor.textarea.getElementsByTagName("img");if(b.length==e.length+1)for(g=b.length-
-1;0<=g;g--)if(0==g||b[g]!=e[g-1]){b[g].setAttribute("width",d);b[g].setAttribute("height",f);break}}};Graph.prototype.insertLink=function(b){if(null!=this.cellEditor.textarea)if(0==b.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var d=this.cellEditor.textarea.getElementsByTagName("a"),f=[],c=0;c<d.length;c++)f.push(d[c]);document.execCommand("createlink",!1,mxUtils.trim(b));d=this.cellEditor.textarea.getElementsByTagName("a");if(d.length==f.length+1)for(c=d.length-1;0<=c;c--)if(d[c]!=
-f[c-1]){for(d=d[c].getElementsByTagName("a");0<d.length;){for(f=d[0].parentNode;null!=d[0].firstChild;)f.insertBefore(d[0].firstChild,d[0]);f.removeChild(d[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(b))};Graph.prototype.isCellResizable=function(b){var d=mxGraph.prototype.isCellResizable.apply(this,arguments),f=this.getCurrentCellStyle(b);return!this.isTableCell(b)&&!this.isTableRow(b)&&(d||"0"!=mxUtils.getValue(f,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==f[mxConstants.STYLE_WHITE_SPACE])};
-Graph.prototype.distributeCells=function(b,d){null==d&&(d=this.getSelectionCells());if(null!=d&&1<d.length){for(var f=[],c=null,e=null,g=0;g<d.length;g++)if(this.getModel().isVertex(d[g])){var l=this.view.getState(d[g]);if(null!=l){var k=b?l.getCenterX():l.getCenterY(),c=null!=c?Math.max(c,k):k,e=null!=e?Math.min(e,k):k;f.push(l)}}if(2<f.length){f.sort(function(d,f){return b?d.x-f.x:d.y-f.y});l=this.view.translate;k=this.view.scale;e=e/k-(b?l.x:l.y);c=c/k-(b?l.x:l.y);this.getModel().beginUpdate();
-try{for(var m=(c-e)/(f.length-1),c=e,g=1;g<f.length-1;g++){var q=this.view.getState(this.model.getParent(f[g].cell)),n=this.getCellGeometry(f[g].cell),c=c+m;null!=n&&null!=q&&(n=n.clone(),b?n.x=Math.round(c-n.width/2)-q.origin.x:n.y=Math.round(c-n.height/2)-q.origin.y,this.getModel().setGeometry(f[g].cell,n))}}finally{this.getModel().endUpdate()}}}return d};Graph.prototype.isCloneEvent=function(b){return mxClient.IS_MAC&&mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)};Graph.prototype.createSvgImageExport=
-function(){var b=new mxImageExport;b.getLinkForCellState=mxUtils.bind(this,function(b,d){return this.getLinkForCell(b.cell)});return b};Graph.prototype.parseBackgroundImage=function(b){var d=null;null!=b&&0<b.length&&(b=JSON.parse(b),d=new mxImage(b.src,b.width,b.height));return d};Graph.prototype.getBackgroundImageObject=function(b){return b};Graph.prototype.getSvg=function(b,d,f,c,e,g,l,k,m,q,n,G,v,u){var A=null;if(null!=u)for(A=new mxDictionary,n=0;n<u.length;n++)A.put(u[n],!0);if(u=this.useCssTransforms)this.useCssTransforms=
-!1,this.view.revalidate(),this.sizeDidChange();try{d=null!=d?d:1;f=null!=f?f:0;e=null!=e?e:!0;g=null!=g?g:!0;l=null!=l?l:!0;q=null!=q?q:!1;var p="page"==v?this.view.getBackgroundPageBounds():g&&null==A||c||"diagram"==v?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),x=this.view.scale;"diagram"==v&&null!=this.backgroundImage&&(p=mxRectangle.fromRectangle(p),p.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*x,(this.view.translate.y+this.backgroundImage.y)*x,this.backgroundImage.width*
-x,this.backgroundImage.height*x)));if(null==p)throw Error(mxResources.get("drawingEmpty"));var I=mxUtils.createXmlDocument(),t=null!=I.createElementNS?I.createElementNS(mxConstants.NS_SVG,"svg"):I.createElement("svg");null!=b&&(null!=t.style?t.style.backgroundColor=b:t.setAttribute("style","background-color:"+b));null==I.createElementNS?(t.setAttribute("xmlns",mxConstants.NS_SVG),t.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):t.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);
-b=d/x;var y=Math.max(1,Math.ceil(p.width*b)+2*f)+(q&&0==f?5:0),z=Math.max(1,Math.ceil(p.height*b)+2*f)+(q&&0==f?5:0);t.setAttribute("version","1.1");t.setAttribute("width",y+"px");t.setAttribute("height",z+"px");t.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+y+" "+z);I.appendChild(t);var S=null!=I.createElementNS?I.createElementNS(mxConstants.NS_SVG,"g"):I.createElement("g");t.appendChild(S);var C=this.createSvgCanvas(S);C.foOffset=e?-.5:0;C.textOffset=e?-.5:0;C.imageOffset=e?-.5:0;C.translate(Math.floor(f/
-d-p.x/x),Math.floor(f/d-p.y/x));var ha=document.createElement("div"),N=C.getAlternateText;C.getAlternateText=function(b,d,f,c,e,g,l,k,m,q,n,G,B){if(null!=g&&0<this.state.fontSize)try{mxUtils.isNode(g)?g=g.innerText:(ha.innerHTML=g,g=mxUtils.extractTextWithWhitespace(ha.childNodes));for(var va=Math.ceil(2*c/this.state.fontSize),Sa=[],Da=0,Ta=0;(0==va||Da<va)&&Ta<g.length;){var Wa=g.charCodeAt(Ta);if(10==Wa||13==Wa){if(0<Da)break}else Sa.push(g.charAt(Ta)),255>Wa&&Da++;Ta++}Sa.length<g.length&&1<g.length-
-Sa.length&&(g=mxUtils.trim(Sa.join(""))+"...");return g}catch(hb){return N.apply(this,arguments)}else return N.apply(this,arguments)};var Y=this.backgroundImage;if(null!=Y){d=x/d;var V=this.view.translate,P=new mxRectangle((Y.x+V.x)*d,(Y.y+V.y)*d,Y.width*d,Y.height*d);mxUtils.intersects(p,P)&&C.image(Y.x+V.x,Y.y+V.y,Y.width,Y.height,Y.src,!0)}C.scale(b);C.textEnabled=l;k=null!=k?k:this.createSvgImageExport();var ua=k.drawCellState,D=k.getLinkForCellState;k.getLinkForCellState=function(b,d){var f=
-D.apply(this,arguments);return null==f||b.view.graph.isCustomLink(f)?null:f};k.getLinkTargetForCellState=function(b,d){return b.view.graph.getLinkTargetForCell(b.cell)};k.drawCellState=function(b,d){for(var f=b.view.graph,c=null!=A?A.get(b.cell):f.isCellSelected(b.cell),e=f.model.getParent(b.cell);!(g&&null==A||c)&&null!=e;)c=null!=A?A.get(e):f.isCellSelected(e),e=f.model.getParent(e);(g&&null==A||c)&&ua.apply(this,arguments)};k.drawState(this.getView().getState(this.model.root),C);this.updateSvgLinks(t,
-m,!0);this.addForeignObjectWarning(C,t);return t}finally{u&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(b,d){if("0"!=urlParams["svg-warning"]&&0<d.getElementsByTagName("foreignObject").length){var f=b.createElement("switch"),c=b.createElement("g");c.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=b.createElement("a");e.setAttribute("transform","translate(0,-5)");null==e.setAttributeNS||
-d.ownerDocument!=document&&null==document.documentMode?(e.setAttribute("xlink:href",Graph.foreignObjectWarningLink),e.setAttribute("target","_blank")):(e.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),e.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var g=b.createElement("text");g.setAttribute("text-anchor","middle");g.setAttribute("font-size","10px");g.setAttribute("x","50%");g.setAttribute("y","100%");mxUtils.write(g,Graph.foreignObjectWarningText);f.appendChild(c);
-e.appendChild(g);f.appendChild(e);d.appendChild(f)}};Graph.prototype.updateSvgLinks=function(b,d,f){b=b.getElementsByTagName("a");for(var c=0;c<b.length;c++)if(null==b[c].getAttribute("target")){var e=b[c].getAttribute("href");null==e&&(e=b[c].getAttribute("xlink:href"));null!=e&&(null!=d&&/^https?:\/\//.test(e)?b[c].setAttribute("target",d):f&&this.isCustomLink(e)&&b[c].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(b){b=new mxSvgCanvas2D(b);b.pointerEvents=
+function(b,d,g){var c=new mxCell;c.value="Text";c.geometry=new mxGeometry(0,0,0,0);c.vertex=!0;if(null!=g&&this.model.isEdge(g.cell)){c.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";c.geometry.relative=!0;c.connectable=!1;var e=this.view.getRelativePoint(g,b,d);c.geometry.x=Math.round(1E4*e.x)/1E4;c.geometry.y=Math.round(e.y);c.geometry.offset=new mxPoint(0,0);var e=this.view.getPoint(g,c.geometry),f=this.view.scale;c.geometry.offset=new mxPoint(Math.round((b-e.x)/
+f),Math.round((d-e.y)/f))}else e=this.view.translate,c.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",c.geometry.width=40,c.geometry.height=20,c.geometry.x=Math.round(b/this.view.scale)-e.x-(null!=g?g.origin.x:0),c.geometry.y=Math.round(d/this.view.scale)-e.y-(null!=g?g.origin.y:0),c.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([c],null!=g?g.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[c])),this.autoSizeCell(c)}finally{this.getModel().endUpdate()}return c};
+Graph.prototype.addClickHandler=function(b,d,g){var c=mxUtils.bind(this,function(){var b=this.container.getElementsByTagName("a");if(null!=b)for(var g=0;g<b.length;g++){var c=this.getAbsoluteUrl(b[g].getAttribute("href"));null!=c&&(b[g].setAttribute("rel",this.linkRelation),b[g].setAttribute("href",c),null!=d&&mxEvent.addGestureListeners(b[g],null,null,d))}});this.model.addListener(mxEvent.CHANGE,c);c();var e=this.container.style.cursor,f=this.getTolerance(),l=this,k={currentState:null,currentLink:null,
+currentTarget:null,highlight:null!=b&&""!=b&&b!=mxConstants.NONE?new mxCellHighlight(l,b,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(b){var d=b.sourceState;if(null==d||null==l.getLinkForCell(d.cell))b=l.getCellAt(b.getGraphX(),b.getGraphY(),null,null,null,function(b,d,g){return null==l.getLinkForCell(b.cell)}),d=null==d||l.model.isAncestor(b,d.cell)?l.view.getState(b):null;d!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=d,null!=this.currentState&&
+this.activate(this.currentState))},mouseDown:function(b,d){this.startX=d.getGraphX();this.startY=d.getGraphY();this.scrollLeft=l.container.scrollLeft;this.scrollTop=l.container.scrollTop;null==this.currentLink&&"auto"==l.container.style.overflow&&(l.container.style.cursor="move");this.updateCurrentState(d)},mouseMove:function(b,d){if(l.isMouseDown){if(null!=this.currentLink){var g=Math.abs(this.startX-d.getGraphX()),c=Math.abs(this.startY-d.getGraphY());(g>f||c>f)&&this.clear()}}else{for(g=d.getSource();null!=
+g&&"a"!=g.nodeName.toLowerCase();)g=g.parentNode;null!=g?this.clear():(null!=l.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&l.tooltipHandler.reset(d,!0,this.currentState),(null==this.currentState||d.getState()!=this.currentState&&null!=d.sourceState||!l.intersects(this.currentState,d.getGraphX(),d.getGraphY()))&&this.updateCurrentState(d))}},mouseUp:function(b,c){for(var e=c.getSource(),k=c.getEvent();null!=e&&"a"!=e.nodeName.toLowerCase();)e=e.parentNode;null==e&&Math.abs(this.scrollLeft-
+l.container.scrollLeft)<f&&Math.abs(this.scrollTop-l.container.scrollTop)<f&&(null==c.sourceState||!c.isSource(c.sourceState.control))&&((mxEvent.isLeftMouseButton(k)||mxEvent.isMiddleMouseButton(k))&&!mxEvent.isPopupTrigger(k)||mxEvent.isTouchEvent(k))&&(null!=this.currentLink?(e=l.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==d||d(k,this.currentLink),mxEvent.isConsumed(k)||(k=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(k)?"_blank":
+e?l.linkTarget:"_top",l.openLink(this.currentLink,k),c.consume())):null!=g&&!c.isConsumed()&&Math.abs(this.scrollLeft-l.container.scrollLeft)<f&&Math.abs(this.scrollTop-l.container.scrollTop)<f&&Math.abs(this.startX-c.getGraphX())<f&&Math.abs(this.startY-c.getGraphY())<f&&g(c.getEvent()));this.clear()},activate:function(b){this.currentLink=l.getAbsoluteUrl(l.getLinkForCell(b.cell));null!=this.currentLink&&(this.currentTarget=l.getLinkTargetForCell(b.cell),l.container.style.cursor="pointer",null!=
+this.highlight&&this.highlight.highlight(b))},clear:function(){null!=l.container&&(l.container.style.cursor=e);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=l.tooltipHandler&&l.tooltipHandler.hide()}};l.click=function(b){};l.addMouseListener(k);mxEvent.addListener(document,"mouseleave",function(b){k.clear()})};Graph.prototype.duplicateCells=function(b,d){b=null!=b?b:this.getSelectionCells();d=null!=d?d:!0;for(var g=0;g<b.length;g++)this.isTableCell(b[g])&&
+(b[g]=this.model.getParent(b[g]));b=this.model.getTopmostCells(b);var c=this.getModel(),e=this.gridSize,f=[];c.beginUpdate();try{for(var l={},k=this.createCellLookup(b),m=this.cloneCells(b,!1,l,!0),g=0;g<b.length;g++){var q=c.getParent(b[g]);if(null!=q){var n=this.moveCells([m[g]],e,e,!1)[0];f.push(n);if(d)c.add(q,m[g]);else{var G=q.getIndex(b[g]);c.add(q,m[g],G+1)}if(this.isTable(q)){var v=this.getCellGeometry(m[g]),u=this.getCellGeometry(q);null!=v&&null!=u&&(u=u.clone(),u.height+=v.height,c.setGeometry(q,
+u))}}else f.push(m[g])}this.updateCustomLinks(this.createCellMapping(l,k),m,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",m))}finally{c.endUpdate()}return f};Graph.prototype.insertImage=function(b,d,g){if(null!=b&&null!=this.cellEditor.textarea){for(var c=this.cellEditor.textarea.getElementsByTagName("img"),e=[],f=0;f<c.length;f++)e.push(c[f]);document.execCommand("insertimage",!1,b);b=this.cellEditor.textarea.getElementsByTagName("img");if(b.length==e.length+1)for(f=b.length-
+1;0<=f;f--)if(0==f||b[f]!=e[f-1]){b[f].setAttribute("width",d);b[f].setAttribute("height",g);break}}};Graph.prototype.insertLink=function(b){if(null!=this.cellEditor.textarea)if(0==b.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var d=this.cellEditor.textarea.getElementsByTagName("a"),g=[],c=0;c<d.length;c++)g.push(d[c]);document.execCommand("createlink",!1,mxUtils.trim(b));d=this.cellEditor.textarea.getElementsByTagName("a");if(d.length==g.length+1)for(c=d.length-1;0<=c;c--)if(d[c]!=
+g[c-1]){for(d=d[c].getElementsByTagName("a");0<d.length;){for(g=d[0].parentNode;null!=d[0].firstChild;)g.insertBefore(d[0].firstChild,d[0]);g.removeChild(d[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(b))};Graph.prototype.isCellResizable=function(b){var d=mxGraph.prototype.isCellResizable.apply(this,arguments),g=this.getCurrentCellStyle(b);return!this.isTableCell(b)&&!this.isTableRow(b)&&(d||"0"!=mxUtils.getValue(g,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==g[mxConstants.STYLE_WHITE_SPACE])};
+Graph.prototype.distributeCells=function(b,d){null==d&&(d=this.getSelectionCells());if(null!=d&&1<d.length){for(var g=[],c=null,e=null,f=0;f<d.length;f++)if(this.getModel().isVertex(d[f])){var l=this.view.getState(d[f]);if(null!=l){var k=b?l.getCenterX():l.getCenterY(),c=null!=c?Math.max(c,k):k,e=null!=e?Math.min(e,k):k;g.push(l)}}if(2<g.length){g.sort(function(d,g){return b?d.x-g.x:d.y-g.y});l=this.view.translate;k=this.view.scale;e=e/k-(b?l.x:l.y);c=c/k-(b?l.x:l.y);this.getModel().beginUpdate();
+try{for(var m=(c-e)/(g.length-1),c=e,f=1;f<g.length-1;f++){var q=this.view.getState(this.model.getParent(g[f].cell)),n=this.getCellGeometry(g[f].cell),c=c+m;null!=n&&null!=q&&(n=n.clone(),b?n.x=Math.round(c-n.width/2)-q.origin.x:n.y=Math.round(c-n.height/2)-q.origin.y,this.getModel().setGeometry(g[f].cell,n))}}finally{this.getModel().endUpdate()}}}return d};Graph.prototype.isCloneEvent=function(b){return mxClient.IS_MAC&&mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)};Graph.prototype.createSvgImageExport=
+function(){var b=new mxImageExport;b.getLinkForCellState=mxUtils.bind(this,function(b,d){return this.getLinkForCell(b.cell)});return b};Graph.prototype.parseBackgroundImage=function(b){var d=null;null!=b&&0<b.length&&(b=JSON.parse(b),d=new mxImage(b.src,b.width,b.height));return d};Graph.prototype.getBackgroundImageObject=function(b){return b};Graph.prototype.getSvg=function(b,d,g,c,e,f,l,k,m,q,n,G,v,u){var p=null;if(null!=u)for(p=new mxDictionary,n=0;n<u.length;n++)p.put(u[n],!0);if(u=this.useCssTransforms)this.useCssTransforms=
+!1,this.view.revalidate(),this.sizeDidChange();try{d=null!=d?d:1;g=null!=g?g:0;e=null!=e?e:!0;f=null!=f?f:!0;l=null!=l?l:!0;q=null!=q?q:!1;var B="page"==v?this.view.getBackgroundPageBounds():f&&null==p||c||"diagram"==v?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),x=this.view.scale;"diagram"==v&&null!=this.backgroundImage&&(B=mxRectangle.fromRectangle(B),B.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*x,(this.view.translate.y+this.backgroundImage.y)*x,this.backgroundImage.width*
+x,this.backgroundImage.height*x)));if(null==B)throw Error(mxResources.get("drawingEmpty"));var I=mxUtils.createXmlDocument(),t=null!=I.createElementNS?I.createElementNS(mxConstants.NS_SVG,"svg"):I.createElement("svg");null!=b&&(null!=t.style?t.style.backgroundColor=b:t.setAttribute("style","background-color:"+b));null==I.createElementNS?(t.setAttribute("xmlns",mxConstants.NS_SVG),t.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):t.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);
+b=d/x;var y=Math.max(1,Math.ceil(B.width*b)+2*g)+(q&&0==g?5:0),z=Math.max(1,Math.ceil(B.height*b)+2*g)+(q&&0==g?5:0);t.setAttribute("version","1.1");t.setAttribute("width",y+"px");t.setAttribute("height",z+"px");t.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+y+" "+z);I.appendChild(t);var S=null!=I.createElementNS?I.createElementNS(mxConstants.NS_SVG,"g"):I.createElement("g");t.appendChild(S);var C=this.createSvgCanvas(S);C.foOffset=e?-.5:0;C.textOffset=e?-.5:0;C.imageOffset=e?-.5:0;C.translate(Math.floor(g/
+d-B.x/x),Math.floor(g/d-B.y/x));var ha=document.createElement("div"),ca=C.getAlternateText;C.getAlternateText=function(b,d,g,c,e,f,l,k,m,q,n,G,A){if(null!=f&&0<this.state.fontSize)try{mxUtils.isNode(f)?f=f.innerText:(ha.innerHTML=f,f=mxUtils.extractTextWithWhitespace(ha.childNodes));for(var va=Math.ceil(2*c/this.state.fontSize),Sa=[],Da=0,Ta=0;(0==va||Da<va)&&Ta<f.length;){var Wa=f.charCodeAt(Ta);if(10==Wa||13==Wa){if(0<Da)break}else Sa.push(f.charAt(Ta)),255>Wa&&Da++;Ta++}Sa.length<f.length&&1<f.length-
+Sa.length&&(f=mxUtils.trim(Sa.join(""))+"...");return f}catch(hb){return ca.apply(this,arguments)}else return ca.apply(this,arguments)};var L=this.backgroundImage;if(null!=L){d=x/d;var V=this.view.translate,P=new mxRectangle((L.x+V.x)*d,(L.y+V.y)*d,L.width*d,L.height*d);mxUtils.intersects(B,P)&&C.image(L.x+V.x,L.y+V.y,L.width,L.height,L.src,!0)}C.scale(b);C.textEnabled=l;k=null!=k?k:this.createSvgImageExport();var ua=k.drawCellState,D=k.getLinkForCellState;k.getLinkForCellState=function(b,d){var g=
+D.apply(this,arguments);return null==g||b.view.graph.isCustomLink(g)?null:g};k.getLinkTargetForCellState=function(b,d){return b.view.graph.getLinkTargetForCell(b.cell)};k.drawCellState=function(b,d){for(var g=b.view.graph,c=null!=p?p.get(b.cell):g.isCellSelected(b.cell),e=g.model.getParent(b.cell);!(f&&null==p||c)&&null!=e;)c=null!=p?p.get(e):g.isCellSelected(e),e=g.model.getParent(e);(f&&null==p||c)&&ua.apply(this,arguments)};k.drawState(this.getView().getState(this.model.root),C);this.updateSvgLinks(t,
+m,!0);this.addForeignObjectWarning(C,t);return t}finally{u&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(b,d){if("0"!=urlParams["svg-warning"]&&0<d.getElementsByTagName("foreignObject").length){var g=b.createElement("switch"),c=b.createElement("g");c.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=b.createElement("a");e.setAttribute("transform","translate(0,-5)");null==e.setAttributeNS||
+d.ownerDocument!=document&&null==document.documentMode?(e.setAttribute("xlink:href",Graph.foreignObjectWarningLink),e.setAttribute("target","_blank")):(e.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),e.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var f=b.createElement("text");f.setAttribute("text-anchor","middle");f.setAttribute("font-size","10px");f.setAttribute("x","50%");f.setAttribute("y","100%");mxUtils.write(f,Graph.foreignObjectWarningText);g.appendChild(c);
+e.appendChild(f);g.appendChild(e);d.appendChild(g)}};Graph.prototype.updateSvgLinks=function(b,d,g){b=b.getElementsByTagName("a");for(var c=0;c<b.length;c++)if(null==b[c].getAttribute("target")){var e=b[c].getAttribute("href");null==e&&(e=b[c].getAttribute("xlink:href"));null!=e&&(null!=d&&/^https?:\/\//.test(e)?b[c].setAttribute("target",d):g&&this.isCustomLink(e)&&b[c].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(b){b=new mxSvgCanvas2D(b);b.pointerEvents=
!0;return b};Graph.prototype.getSelectedElement=function(){var b=null;if(window.getSelection){var d=window.getSelection();d.getRangeAt&&d.rangeCount&&(b=d.getRangeAt(0).commonAncestorContainer)}else document.selection&&(b=document.selection.createRange().parentElement());return b};Graph.prototype.getSelectedEditingElement=function(){for(var b=this.getSelectedElement();null!=b&&b.nodeType!=mxConstants.NODETYPE_ELEMENT;)b=b.parentNode;null!=b&&b==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&
-this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(b=this.cellEditor.textarea.firstChild);return b};Graph.prototype.getParentByName=function(b,d,f){for(;null!=b&&b.nodeName!=d;){if(b==f)return null;b=b.parentNode}return b};Graph.prototype.getParentByNames=function(b,d,f){for(;null!=b&&!(0<=mxUtils.indexOf(d,b.nodeName));){if(b==f)return null;b=b.parentNode}return b};Graph.prototype.selectNode=function(b){var d=null;if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&
-d.rangeCount){var f=document.createRange();f.selectNode(b);d.removeAllRanges();d.addRange(f)}}else(d=document.selection)&&"Control"!=d.type&&(b=d.createRange(),b.collapse(!0),f=d.createRange(),f.setEndPoint("StartToStart",b),f.select())};Graph.prototype.deleteCells=function(b,d){var f=null;if(null!=b&&0<b.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){var e=this.model.getParent(b[c]);if(this.isTable(e)){var g=this.getCellGeometry(b[c]),l=this.getCellGeometry(e);null!=g&&null!=l&&
-(l=l.clone(),l.height-=g.height,this.model.setGeometry(e,l))}}var k=this.selectParentAfterDelete?this.model.getParents(b):null;this.removeCells(b,d)}finally{this.model.endUpdate()}if(null!=k)for(f=[],c=0;c<k.length;c++)this.model.contains(k[c])&&(this.model.isVertex(k[c])||this.model.isEdge(k[c]))&&f.push(k[c])}return f};Graph.prototype.insertTableColumn=function(b,d){var f=this.getModel();f.beginUpdate();try{var c=b,e=0;if(this.isTableCell(b))var g=f.getParent(b),c=f.getParent(g),e=mxUtils.indexOf(f.getChildCells(g,
-!0),b);else this.isTableRow(b)?c=f.getParent(b):b=f.getChildCells(c,!0)[0],d||(e=f.getChildCells(b,!0).length-1);for(var l=f.getChildCells(c,!0),k=Graph.minTableColumnWidth,g=0;g<l.length;g++){var m=f.getChildCells(l[g],!0)[e],q=f.cloneCell(m,!1),n=this.getCellGeometry(q);q.value=null;q.style=mxUtils.setStyle(mxUtils.setStyle(q.style,"rowspan",null),"colspan",null);if(null!=n){null!=n.alternateBounds&&(n.width=n.alternateBounds.width,n.height=n.alternateBounds.height,n.alternateBounds=null);var k=
-n.width,G=this.getCellGeometry(l[g]);null!=G&&(n.height=G.height)}f.add(l[g],q,e+(d?0:1))}var v=this.getCellGeometry(c);null!=v&&(v=v.clone(),v.width+=k,f.setGeometry(c,v))}finally{f.endUpdate()}};Graph.prototype.deleteLane=function(b){var d=this.getModel();d.beginUpdate();try{var f=null,f="stackLayout"==this.getCurrentCellStyle(b).childLayout?b:d.getParent(b),c=d.getChildCells(f,!0);0==c.length?d.remove(f):(f==b&&(b=c[c.length-1]),d.remove(b))}finally{d.endUpdate()}};Graph.prototype.insertLane=function(b,
-d){var f=this.getModel();f.beginUpdate();try{var c=null,e=b;if("stackLayout"==this.getCurrentCellStyle(e).childLayout)var c=e,g=f.getChildCells(c,!0),e=g[d?0:g.length-1];else c=f.getParent(e);var l=c.getIndex(e),e=f.cloneCell(e,!1);e.value=null;f.add(c,e,l+(d?0:1))}finally{f.endUpdate()}};Graph.prototype.insertTableRow=function(b,d){var f=this.getModel();f.beginUpdate();try{var c=b,e=b;if(this.isTableCell(b))e=f.getParent(b),c=f.getParent(e);else if(this.isTableRow(b))c=f.getParent(b);else var g=
-f.getChildCells(c,!0),e=g[d?0:g.length-1];var l=f.getChildCells(e,!0),k=c.getIndex(e),e=f.cloneCell(e,!1);e.value=null;var m=this.getCellGeometry(e);if(null!=m){for(g=0;g<l.length;g++){b=f.cloneCell(l[g],!1);b.value=null;b.style=mxUtils.setStyle(mxUtils.setStyle(b.style,"rowspan",null),"colspan",null);var q=this.getCellGeometry(b);null!=q&&(null!=q.alternateBounds&&(q.width=q.alternateBounds.width,q.height=q.alternateBounds.height,q.alternateBounds=null),q.height=m.height);e.insert(b)}f.add(c,e,k+
-(d?0:1));var n=this.getCellGeometry(c);null!=n&&(n=n.clone(),n.height+=m.height,f.setGeometry(c,n))}}finally{f.endUpdate()}};Graph.prototype.deleteTableColumn=function(b){var d=this.getModel();d.beginUpdate();try{var f=b,c=b;this.isTableCell(b)&&(c=d.getParent(b));this.isTableRow(c)&&(f=d.getParent(c));var e=d.getChildCells(f,!0);if(0==e.length)d.remove(f);else{this.isTableRow(c)||(c=e[0]);var g=d.getChildCells(c,!0);if(1>=g.length)d.remove(f);else{var l=g.length-1;this.isTableCell(b)&&(l=mxUtils.indexOf(g,
-b));for(c=b=0;c<e.length;c++){var k=d.getChildCells(e[c],!0)[l];d.remove(k);var m=this.getCellGeometry(k);null!=m&&(b=Math.max(b,m.width))}var q=this.getCellGeometry(f);null!=q&&(q=q.clone(),q.width-=b,d.setGeometry(f,q))}}}finally{d.endUpdate()}};Graph.prototype.deleteTableRow=function(b){var d=this.getModel();d.beginUpdate();try{var f=b,c=b;this.isTableCell(b)&&(b=c=d.getParent(b));this.isTableRow(b)&&(f=d.getParent(c));var e=d.getChildCells(f,!0);if(1>=e.length)d.remove(f);else{this.isTableRow(c)||
-(c=e[e.length-1]);d.remove(c);b=0;var g=this.getCellGeometry(c);null!=g&&(b=g.height);var l=this.getCellGeometry(f);null!=l&&(l=l.clone(),l.height-=b,d.setGeometry(f,l))}}finally{d.endUpdate()}};Graph.prototype.insertRow=function(b,d){for(var f=b.tBodies[0],c=f.rows[0].cells,e=0,g=0;g<c.length;g++)var l=c[g].getAttribute("colspan"),e=e+(null!=l?parseInt(l):1);f=f.insertRow(d);for(g=0;g<e;g++)mxUtils.br(f.insertCell(-1));return f.cells[0]};Graph.prototype.deleteRow=function(b,d){b.tBodies[0].deleteRow(d)};
-Graph.prototype.insertColumn=function(b,d){var f=b.tHead;if(null!=f)for(var c=0;c<f.rows.length;c++){var e=document.createElement("th");f.rows[c].appendChild(e);mxUtils.br(e)}f=b.tBodies[0];for(c=0;c<f.rows.length;c++)e=f.rows[c].insertCell(d),mxUtils.br(e);return f.rows[0].cells[0<=d?d:f.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(b,d){if(0<=d)for(var f=b.tBodies[0].rows,c=0;c<f.length;c++)f[c].cells.length>d&&f[c].deleteCell(d)};Graph.prototype.pasteHtmlAtCaret=function(b){var d;
-if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&d.rangeCount){d=d.getRangeAt(0);d.deleteContents();var f=document.createElement("div");f.innerHTML=b;b=document.createDocumentFragment();for(var c;c=f.firstChild;)lastNode=b.appendChild(c);d.insertNode(b)}}else(d=document.selection)&&"Control"!=d.type&&d.createRange().pasteHTML(b)};Graph.prototype.createLinkForHint=function(b,d){function f(b,d){b.length>d&&(b=b.substring(0,Math.round(d/2))+"..."+b.substring(b.length-Math.round(d/4)));
-return b}b=null!=b?b:"javascript:void(0);";if(null==d||0==d.length)d=this.isCustomLink(b)?this.getLinkTitle(b):b;var c=document.createElement("a");c.setAttribute("rel",this.linkRelation);c.setAttribute("href",this.getAbsoluteUrl(b));c.setAttribute("title",f(this.isCustomLink(b)?this.getLinkTitle(b):b,80));null!=this.linkTarget&&c.setAttribute("target",this.linkTarget);mxUtils.write(c,f(d,40));this.isCustomLink(b)&&mxEvent.addListener(c,"click",mxUtils.bind(this,function(d){this.customLinkClicked(b);
-mxEvent.consume(d)}));return c};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(b,d){this.popupMenuHandler.hideMenu()});var b=this.updateMouseEvent;this.updateMouseEvent=function(d){d=b.apply(this,arguments);if(mxEvent.isTouchEvent(d.getEvent())&&null==d.getState()){var f=this.getCellAt(d.graphX,d.graphY);null!=f&&this.isSwimlane(f)&&this.hitsSwimlaneContent(f,d.graphX,
-d.graphY)||(d.state=this.view.getState(f),null!=d.state&&null!=d.state.shape&&(this.container.style.cursor=d.state.shape.node.style.cursor))}null==d.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return d};var d=!1,f=!1,c=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(b,g,l){b==mxEvent.MOUSE_DOWN&&(g=this.updateMouseEvent(g),d=this.isCellSelected(g.getCell()),f=this.isSelectionEmpty(),c=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=
-mxUtils.bind(this,function(b,e){var g=mxEvent.isMouseEvent(e.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger||!c&&!g&&(f&&null==e.getCell()&&this.isSelectionEmpty()||d&&this.isCellSelected(e.getCell())));g=!d||g?null:mxUtils.bind(this,function(b){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var d=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(e.getX()+
-d.x+1,e.getY()+d.y+1,b,e.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[b,e,g])})};mxCellEditor.prototype.isContentEditing=function(){var b=this.graph.view.getState(this.editingCell);return null!=b&&1==b.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var b="";window.getSelection?b=window.getSelection():
-document.getSelection?b=document.getSelection():document.selection&&(b=document.selection.createRange().text);return""!=b};mxCellEditor.prototype.insertTab=function(b){var d=this.textarea.ownerDocument.defaultView.getSelection(),f=d.getRangeAt(0),c="\t";if(null!=b)for(c="";0<b;)c+=" ",b--;b=document.createElement("span");b.style.whiteSpace="pre";b.appendChild(document.createTextNode(c));f.insertNode(b);f.setStartAfter(b);f.setEndAfter(b);d.removeAllRanges();d.addRange(f)};mxCellEditor.prototype.alignText=
-function(b,d){var f=null!=d&&mxEvent.isShiftDown(d);if(f||null!=window.getSelection&&null!=window.getSelection().containsNode){var c=!0;this.graph.processElements(this.textarea,function(b){f||window.getSelection().containsNode(b,!0)?(b.removeAttribute("align"),b.style.textAlign=null):c=!1});c&&this.graph.cellEditor.setAlign(b)}document.execCommand("justify"+b.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var b=window.getSelection();if(b.getRangeAt&&
-b.rangeCount){for(var d=[],f=0,c=b.rangeCount;f<c;++f)d.push(b.getRangeAt(f));return d}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(b){try{if(b)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var d=0,f=b.length;d<f;++d)sel.addRange(b[d])}else document.selection&&b.select&&b.select()}catch(ea){}};var v=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=
+this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(b=this.cellEditor.textarea.firstChild);return b};Graph.prototype.getParentByName=function(b,d,g){for(;null!=b&&b.nodeName!=d;){if(b==g)return null;b=b.parentNode}return b};Graph.prototype.getParentByNames=function(b,d,g){for(;null!=b&&!(0<=mxUtils.indexOf(d,b.nodeName));){if(b==g)return null;b=b.parentNode}return b};Graph.prototype.selectNode=function(b){var d=null;if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&
+d.rangeCount){var g=document.createRange();g.selectNode(b);d.removeAllRanges();d.addRange(g)}}else(d=document.selection)&&"Control"!=d.type&&(b=d.createRange(),b.collapse(!0),g=d.createRange(),g.setEndPoint("StartToStart",b),g.select())};Graph.prototype.deleteCells=function(b,d){var g=null;if(null!=b&&0<b.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){var e=this.model.getParent(b[c]);if(this.isTable(e)){var f=this.getCellGeometry(b[c]),l=this.getCellGeometry(e);null!=f&&null!=l&&
+(l=l.clone(),l.height-=f.height,this.model.setGeometry(e,l))}}var k=this.selectParentAfterDelete?this.model.getParents(b):null;this.removeCells(b,d)}finally{this.model.endUpdate()}if(null!=k)for(g=[],c=0;c<k.length;c++)this.model.contains(k[c])&&(this.model.isVertex(k[c])||this.model.isEdge(k[c]))&&g.push(k[c])}return g};Graph.prototype.insertTableColumn=function(b,d){var g=this.getModel();g.beginUpdate();try{var c=b,e=0;if(this.isTableCell(b))var f=g.getParent(b),c=g.getParent(f),e=mxUtils.indexOf(g.getChildCells(f,
+!0),b);else this.isTableRow(b)?c=g.getParent(b):b=g.getChildCells(c,!0)[0],d||(e=g.getChildCells(b,!0).length-1);for(var l=g.getChildCells(c,!0),k=Graph.minTableColumnWidth,f=0;f<l.length;f++){var m=g.getChildCells(l[f],!0)[e],q=g.cloneCell(m,!1),n=this.getCellGeometry(q);q.value=null;q.style=mxUtils.setStyle(mxUtils.setStyle(q.style,"rowspan",null),"colspan",null);if(null!=n){null!=n.alternateBounds&&(n.width=n.alternateBounds.width,n.height=n.alternateBounds.height,n.alternateBounds=null);var k=
+n.width,G=this.getCellGeometry(l[f]);null!=G&&(n.height=G.height)}g.add(l[f],q,e+(d?0:1))}var v=this.getCellGeometry(c);null!=v&&(v=v.clone(),v.width+=k,g.setGeometry(c,v))}finally{g.endUpdate()}};Graph.prototype.deleteLane=function(b){var d=this.getModel();d.beginUpdate();try{var g=null,g="stackLayout"==this.getCurrentCellStyle(b).childLayout?b:d.getParent(b),c=d.getChildCells(g,!0);0==c.length?d.remove(g):(g==b&&(b=c[c.length-1]),d.remove(b))}finally{d.endUpdate()}};Graph.prototype.insertLane=function(b,
+d){var g=this.getModel();g.beginUpdate();try{var c=null,e=b;if("stackLayout"==this.getCurrentCellStyle(e).childLayout)var c=e,f=g.getChildCells(c,!0),e=f[d?0:f.length-1];else c=g.getParent(e);var l=c.getIndex(e),e=g.cloneCell(e,!1);e.value=null;g.add(c,e,l+(d?0:1))}finally{g.endUpdate()}};Graph.prototype.insertTableRow=function(b,d){var g=this.getModel();g.beginUpdate();try{var c=b,e=b;if(this.isTableCell(b))e=g.getParent(b),c=g.getParent(e);else if(this.isTableRow(b))c=g.getParent(b);else var f=
+g.getChildCells(c,!0),e=f[d?0:f.length-1];var l=g.getChildCells(e,!0),k=c.getIndex(e),e=g.cloneCell(e,!1);e.value=null;var m=this.getCellGeometry(e);if(null!=m){for(f=0;f<l.length;f++){b=g.cloneCell(l[f],!1);b.value=null;b.style=mxUtils.setStyle(mxUtils.setStyle(b.style,"rowspan",null),"colspan",null);var q=this.getCellGeometry(b);null!=q&&(null!=q.alternateBounds&&(q.width=q.alternateBounds.width,q.height=q.alternateBounds.height,q.alternateBounds=null),q.height=m.height);e.insert(b)}g.add(c,e,k+
+(d?0:1));var n=this.getCellGeometry(c);null!=n&&(n=n.clone(),n.height+=m.height,g.setGeometry(c,n))}}finally{g.endUpdate()}};Graph.prototype.deleteTableColumn=function(b){var d=this.getModel();d.beginUpdate();try{var g=b,c=b;this.isTableCell(b)&&(c=d.getParent(b));this.isTableRow(c)&&(g=d.getParent(c));var e=d.getChildCells(g,!0);if(0==e.length)d.remove(g);else{this.isTableRow(c)||(c=e[0]);var f=d.getChildCells(c,!0);if(1>=f.length)d.remove(g);else{var l=f.length-1;this.isTableCell(b)&&(l=mxUtils.indexOf(f,
+b));for(c=b=0;c<e.length;c++){var k=d.getChildCells(e[c],!0)[l];d.remove(k);var m=this.getCellGeometry(k);null!=m&&(b=Math.max(b,m.width))}var q=this.getCellGeometry(g);null!=q&&(q=q.clone(),q.width-=b,d.setGeometry(g,q))}}}finally{d.endUpdate()}};Graph.prototype.deleteTableRow=function(b){var d=this.getModel();d.beginUpdate();try{var g=b,c=b;this.isTableCell(b)&&(b=c=d.getParent(b));this.isTableRow(b)&&(g=d.getParent(c));var e=d.getChildCells(g,!0);if(1>=e.length)d.remove(g);else{this.isTableRow(c)||
+(c=e[e.length-1]);d.remove(c);b=0;var f=this.getCellGeometry(c);null!=f&&(b=f.height);var l=this.getCellGeometry(g);null!=l&&(l=l.clone(),l.height-=b,d.setGeometry(g,l))}}finally{d.endUpdate()}};Graph.prototype.insertRow=function(b,d){for(var g=b.tBodies[0],c=g.rows[0].cells,e=0,f=0;f<c.length;f++)var l=c[f].getAttribute("colspan"),e=e+(null!=l?parseInt(l):1);g=g.insertRow(d);for(f=0;f<e;f++)mxUtils.br(g.insertCell(-1));return g.cells[0]};Graph.prototype.deleteRow=function(b,d){b.tBodies[0].deleteRow(d)};
+Graph.prototype.insertColumn=function(b,d){var g=b.tHead;if(null!=g)for(var c=0;c<g.rows.length;c++){var e=document.createElement("th");g.rows[c].appendChild(e);mxUtils.br(e)}g=b.tBodies[0];for(c=0;c<g.rows.length;c++)e=g.rows[c].insertCell(d),mxUtils.br(e);return g.rows[0].cells[0<=d?d:g.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(b,d){if(0<=d)for(var g=b.tBodies[0].rows,c=0;c<g.length;c++)g[c].cells.length>d&&g[c].deleteCell(d)};Graph.prototype.pasteHtmlAtCaret=function(b){var d;
+if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&d.rangeCount){d=d.getRangeAt(0);d.deleteContents();var g=document.createElement("div");g.innerHTML=b;b=document.createDocumentFragment();for(var c;c=g.firstChild;)lastNode=b.appendChild(c);d.insertNode(b)}}else(d=document.selection)&&"Control"!=d.type&&d.createRange().pasteHTML(b)};Graph.prototype.createLinkForHint=function(b,d){function g(b,d){b.length>d&&(b=b.substring(0,Math.round(d/2))+"..."+b.substring(b.length-Math.round(d/4)));
+return b}b=null!=b?b:"javascript:void(0);";if(null==d||0==d.length)d=this.isCustomLink(b)?this.getLinkTitle(b):b;var c=document.createElement("a");c.setAttribute("rel",this.linkRelation);c.setAttribute("href",this.getAbsoluteUrl(b));c.setAttribute("title",g(this.isCustomLink(b)?this.getLinkTitle(b):b,80));null!=this.linkTarget&&c.setAttribute("target",this.linkTarget);mxUtils.write(c,g(d,40));this.isCustomLink(b)&&mxEvent.addListener(c,"click",mxUtils.bind(this,function(d){this.customLinkClicked(b);
+mxEvent.consume(d)}));return c};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(b,d){this.popupMenuHandler.hideMenu()});var b=this.updateMouseEvent;this.updateMouseEvent=function(d){d=b.apply(this,arguments);if(mxEvent.isTouchEvent(d.getEvent())&&null==d.getState()){var g=this.getCellAt(d.graphX,d.graphY);null!=g&&this.isSwimlane(g)&&this.hitsSwimlaneContent(g,d.graphX,
+d.graphY)||(d.state=this.view.getState(g),null!=d.state&&null!=d.state.shape&&(this.container.style.cursor=d.state.shape.node.style.cursor))}null==d.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return d};var d=!1,g=!1,c=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(b,f,l){b==mxEvent.MOUSE_DOWN&&(f=this.updateMouseEvent(f),d=this.isCellSelected(f.getCell()),g=this.isSelectionEmpty(),c=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=
+mxUtils.bind(this,function(b,e){var f=mxEvent.isMouseEvent(e.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger||!c&&!f&&(g&&null==e.getCell()&&this.isSelectionEmpty()||d&&this.isCellSelected(e.getCell())));f=!d||f?null:mxUtils.bind(this,function(b){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var d=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(e.getX()+
+d.x+1,e.getY()+d.y+1,b,e.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[b,e,f])})};mxCellEditor.prototype.isContentEditing=function(){var b=this.graph.view.getState(this.editingCell);return null!=b&&1==b.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var b="";window.getSelection?b=window.getSelection():
+document.getSelection?b=document.getSelection():document.selection&&(b=document.selection.createRange().text);return""!=b};mxCellEditor.prototype.insertTab=function(b){var d=this.textarea.ownerDocument.defaultView.getSelection(),g=d.getRangeAt(0),c="\t";if(null!=b)for(c="";0<b;)c+=" ",b--;b=document.createElement("span");b.style.whiteSpace="pre";b.appendChild(document.createTextNode(c));g.insertNode(b);g.setStartAfter(b);g.setEndAfter(b);d.removeAllRanges();d.addRange(g)};mxCellEditor.prototype.alignText=
+function(b,d){var g=null!=d&&mxEvent.isShiftDown(d);if(g||null!=window.getSelection&&null!=window.getSelection().containsNode){var c=!0;this.graph.processElements(this.textarea,function(b){g||window.getSelection().containsNode(b,!0)?(b.removeAttribute("align"),b.style.textAlign=null):c=!1});c&&this.graph.cellEditor.setAlign(b)}document.execCommand("justify"+b.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var b=window.getSelection();if(b.getRangeAt&&
+b.rangeCount){for(var d=[],g=0,c=b.rangeCount;g<c;++g)d.push(b.getRangeAt(g));return d}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(b){try{if(b)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var d=0,g=b.length;d<g;++d)sel.addRange(b[d])}else document.selection&&b.select&&b.select()}catch(ea){}};var v=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=
function(b){null!=b.text&&(b.text.replaceLinefeeds="0"!=mxUtils.getValue(b.style,"nl2Br","1"));v.apply(this,arguments)};var y=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(b,d){this.isKeepFocusEvent(b)||!mxEvent.isAltDown(b.getEvent())?y.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(b){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var x=mxCellEditor.prototype.startEditing;
-mxCellEditor.prototype.startEditing=function(b,d){b=this.graph.getStartEditingCell(b,d);x.apply(this,arguments);var f=this.graph.view.getState(b);this.textarea.className=null!=f&&1==f.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(b);var f=this.graph.getModel().getParent(b),c=this.graph.getCellGeometry(b);if(this.graph.getModel().isEdge(f)&&null!=c&&c.relative||this.graph.getModel().isEdge(b))this.textarea.style.outline=
-mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var F=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(b){function d(b,f){f.originalNode=b;b=b.firstChild;for(var c=f.firstChild;null!=b&&null!=c;)d(b,c),b=b.nextSibling,c=c.nextSibling;return f}function f(b,d){if(null!=b)if(d.originalNode!=b)c(b);else for(b=b.firstChild,d=d.firstChild;null!=b;){var e=b.nextSibling;null==d?c(b):(f(b,d),d=d.nextSibling);b=e}}function c(b){for(var d=
-b.firstChild;null!=d;){var f=d.nextSibling;c(d);d=f}1==b.nodeType&&("BR"===b.nodeName||null!=b.firstChild)||3==b.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(b)).length?(3==b.nodeType&&mxUtils.setTextContent(b,mxUtils.getTextContent(b).replace(/\n|\r/g,"")),1==b.nodeType&&(b.removeAttribute("style"),b.removeAttribute("class"),b.removeAttribute("width"),b.removeAttribute("cellpadding"),b.removeAttribute("cellspacing"),b.removeAttribute("border"))):b.parentNode.removeChild(b)}F.apply(this,arguments);
-7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(b){var c=d(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?f(this.textarea,c):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var b=this.graph.view.getState(this.editingCell);
-if(null!=b){var d=null!=b&&"0"!=mxUtils.getValue(b.style,"nl2Br","1"),f=this.saveSelection();if(this.codeViewMode){m=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<m.length&&"\n"==m.charAt(m.length-1)&&(m=m.substring(0,m.length-1));m=this.graph.sanitizeHtml(d?m.replace(/\n/g,"<br/>"):m,!0);this.textarea.className="mxCellEditor geContentEditable";var c=mxUtils.getValue(b.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),d=mxUtils.getValue(b.style,mxConstants.STYLE_FONTFAMILY,
-mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),g=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,k=[];(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&k.push("underline");(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,
-0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&k.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration=k.join(" ");this.textarea.style.fontWeight=g?"bold":"normal";this.textarea.style.fontStyle=l?"italic":"";this.textarea.style.fontFamily=d;this.textarea.style.textAlign=e;this.textarea.style.padding=
+mxCellEditor.prototype.startEditing=function(b,d){b=this.graph.getStartEditingCell(b,d);x.apply(this,arguments);var g=this.graph.view.getState(b);this.textarea.className=null!=g&&1==g.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(b);var g=this.graph.getModel().getParent(b),c=this.graph.getCellGeometry(b);if(this.graph.getModel().isEdge(g)&&null!=c&&c.relative||this.graph.getModel().isEdge(b))this.textarea.style.outline=
+mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var F=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(b){function d(b,g){g.originalNode=b;b=b.firstChild;for(var c=g.firstChild;null!=b&&null!=c;)d(b,c),b=b.nextSibling,c=c.nextSibling;return g}function g(b,d){if(null!=b)if(d.originalNode!=b)c(b);else for(b=b.firstChild,d=d.firstChild;null!=b;){var e=b.nextSibling;null==d?c(b):(g(b,d),d=d.nextSibling);b=e}}function c(b){for(var d=
+b.firstChild;null!=d;){var g=d.nextSibling;c(d);d=g}1==b.nodeType&&("BR"===b.nodeName||null!=b.firstChild)||3==b.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(b)).length?(3==b.nodeType&&mxUtils.setTextContent(b,mxUtils.getTextContent(b).replace(/\n|\r/g,"")),1==b.nodeType&&(b.removeAttribute("style"),b.removeAttribute("class"),b.removeAttribute("width"),b.removeAttribute("cellpadding"),b.removeAttribute("cellspacing"),b.removeAttribute("border"))):b.parentNode.removeChild(b)}F.apply(this,arguments);
+7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(b){var c=d(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?g(this.textarea,c):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var b=this.graph.view.getState(this.editingCell);
+if(null!=b){var d=null!=b&&"0"!=mxUtils.getValue(b.style,"nl2Br","1"),g=this.saveSelection();if(this.codeViewMode){m=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<m.length&&"\n"==m.charAt(m.length-1)&&(m=m.substring(0,m.length-1));m=this.graph.sanitizeHtml(d?m.replace(/\n/g,"<br/>"):m,!0);this.textarea.className="mxCellEditor geContentEditable";var c=mxUtils.getValue(b.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),d=mxUtils.getValue(b.style,mxConstants.STYLE_FONTFAMILY,
+mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,k=[];(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&k.push("underline");(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,
+0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&k.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration=k.join(" ");this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=l?"italic":"";this.textarea.style.fontFamily=d;this.textarea.style.textAlign=e;this.textarea.style.padding=
"0px";this.textarea.innerHTML!=m&&(this.textarea.innerHTML=m,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var m=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(m=mxUtils.replaceTrailingNewlines(m,"<div><br></div>"));m=this.graph.sanitizeHtml(d?
m.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):m,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var c=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;
-this.textarea.style.textAlign="left";this.textarea.style.width="";this.textarea.style.padding="2px";this.textarea.innerHTML!=m&&(this.textarea.innerHTML=m);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=f;this.resize()}};var H=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(b,d){if(null!=this.textarea)if(b=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=
-b){var f=b.view.scale;this.bounds=mxRectangle.fromRectangle(b);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*f;this.bounds.height=60*f;var c=null!=b.text?b.text.margin:null;null==c&&(c=mxUtils.getAlignmentAsPoint(mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(b.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=c.x*this.bounds.width;this.bounds.y+=c.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-
-4)/f)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/f)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/f)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*f);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/f)+(this.textarea.offsetWidth-this.textarea.clientWidth)+
-"px",this.bounds.width=parseInt(this.textarea.style.width)*f);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+f+","+f+")")}else this.textarea.style.height="",this.textarea.style.overflow="",H.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(b,d){if("0"==mxUtils.getValue(b.style,"html",
-"0"))return mxCellEditorGetInitialValue.apply(this,arguments);var f=this.graph.getEditingValue(b.cell,d);"1"==mxUtils.getValue(b.style,"nl2Br","1")&&(f=f.replace(/\n/g,"<br/>"));return f=this.graph.sanitizeHtml(f,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(b){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var d=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return d=
+this.textarea.style.textAlign="left";this.textarea.style.width="";this.textarea.style.padding="2px";this.textarea.innerHTML!=m&&(this.textarea.innerHTML=m);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=g;this.resize()}};var H=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(b,d){if(null!=this.textarea)if(b=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=
+b){var g=b.view.scale;this.bounds=mxRectangle.fromRectangle(b);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*g;this.bounds.height=60*g;var c=null!=b.text?b.text.margin:null;null==c&&(c=mxUtils.getAlignmentAsPoint(mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(b.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=c.x*this.bounds.width;this.bounds.y+=c.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-
+4)/g)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/g)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/g)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*g);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/g)+(this.textarea.offsetWidth-this.textarea.clientWidth)+
+"px",this.bounds.width=parseInt(this.textarea.style.width)*g);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+g+","+g+")")}else this.textarea.style.height="",this.textarea.style.overflow="",H.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(b,d){if("0"==mxUtils.getValue(b.style,"html",
+"0"))return mxCellEditorGetInitialValue.apply(this,arguments);var g=this.graph.getEditingValue(b.cell,d);"1"==mxUtils.getValue(b.style,"nl2Br","1")&&(g=g.replace(/\n/g,"<br/>"));return g=this.graph.sanitizeHtml(g,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(b){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var d=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return d=
"1"==mxUtils.getValue(b.style,"nl2Br","1")?d.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):d.replace(/\r\n/g,"").replace(/\n/g,"")};var z=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(b){this.codeViewMode&&this.toggleViewMode();z.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(ha){}};var D=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(b,d){this.graph.getModel().beginUpdate();
try{D.apply(this,arguments),""==d&&this.graph.isCellDeletable(b.cell)&&0==this.graph.model.getChildCount(b.cell)&&this.graph.isTransparentState(b)&&this.graph.removeCells([b.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=
mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getBorderColor=function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BORDERCOLOR,null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,
mxConstants.STYLE_STROKECOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getMinimumSize=function(b){var d=this.graph.getView().scale;return new mxRectangle(0,0,null==b.text?30:b.text.size*d+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(b,d){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(d.getEvent)};mxGraphView.prototype.formatUnitText=function(b){return b?
-c(b,this.unit):b};mxGraphHandler.prototype.updateHint=function(d){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var f=this.graph.view.translate,e=this.graph.view.scale;d=this.roundLength((this.bounds.x+this.currentDx)/e-f.x);f=this.roundLength((this.bounds.y+this.currentDy)/e-f.y);e=this.graph.view.unit;this.hint.innerHTML=c(d,e)+", "+c(f,e);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-
-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};var L=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(b,d){L.apply(this,arguments);var f=this.graph.getCellStyle(b);if(null==f.childLayout){var c=this.graph.model.getParent(b),e=null!=c?this.graph.getCellGeometry(c):null;
-if(null!=e&&(f=this.graph.getCellStyle(c),"stackLayout"==f.childLayout)){var g=parseFloat(mxUtils.getValue(f,"stackBorder",mxStackLayout.prototype.border)),f="1"==mxUtils.getValue(f,"horizontalStack","1"),l=this.graph.getActualStartSize(c),e=e.clone();f?e.height=d.height+l.y+l.height+2*g:e.width=d.width+l.x+l.width+2*g;this.graph.model.setGeometry(c,e)}}};var E=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function b(b){f.get(b)||
-(f.put(b,!0),e.push(b))}for(var d=E.apply(this,arguments),f=new mxDictionary,c=this.graph.model,e=[],g=0;g<d.length;g++){var l=d[g];this.graph.isTableCell(l)?b(c.getParent(c.getParent(l))):this.graph.isTableRow(l)&&b(c.getParent(l));b(l)}return e};var J=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(b){var d=J.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};var C=mxEdgeHandler.prototype.createParentHighlightShape;
+c(b,this.unit):b};mxGraphHandler.prototype.updateHint=function(d){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var g=this.graph.view.translate,e=this.graph.view.scale;d=this.roundLength((this.bounds.x+this.currentDx)/e-g.x);g=this.roundLength((this.bounds.y+this.currentDy)/e-g.y);e=this.graph.view.unit;this.hint.innerHTML=c(d,e)+", "+c(g,e);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-
+this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};var N=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(b,d){N.apply(this,arguments);var g=this.graph.getCellStyle(b);if(null==g.childLayout){var c=this.graph.model.getParent(b),e=null!=c?this.graph.getCellGeometry(c):null;
+if(null!=e&&(g=this.graph.getCellStyle(c),"stackLayout"==g.childLayout)){var f=parseFloat(mxUtils.getValue(g,"stackBorder",mxStackLayout.prototype.border)),g="1"==mxUtils.getValue(g,"horizontalStack","1"),l=this.graph.getActualStartSize(c),e=e.clone();g?e.height=d.height+l.y+l.height+2*f:e.width=d.width+l.x+l.width+2*f;this.graph.model.setGeometry(c,e)}}};var E=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function b(b){g.get(b)||
+(g.put(b,!0),e.push(b))}for(var d=E.apply(this,arguments),g=new mxDictionary,c=this.graph.model,e=[],f=0;f<d.length;f++){var l=d[f];this.graph.isTableCell(l)?b(c.getParent(c.getParent(l))):this.graph.isTableRow(l)&&b(c.getParent(l));b(l)}return e};var J=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(b){var d=J.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};var C=mxEdgeHandler.prototype.createParentHighlightShape;
mxEdgeHandler.prototype.createParentHighlightShape=function(b){var d=C.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var b=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+b.x/2,this.bounds.y+this.rotationHandleVSpacing-b.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(b,d){return this.graph.isRecursiveVertexResize(b)&&
!mxEvent.isControlDown(d.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(b,d){return!(!this.graph.isSwimlane(b.cell)&&0<this.graph.model.getChildCount(b.cell)&&!this.graph.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,"childLayout",null))&&mxEvent.isControlDown(d.getEvent())||mxEvent.isMetaDown(d.getEvent())};var K=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return K.apply(this,
arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)&&!this.graph.isTable(this.state.cell)};mxVertexHandler.prototype.getSizerBounds=function(){return this.graph.isTableCell(this.state.cell)?this.graph.view.getState(this.graph.model.getParent(this.graph.model.getParent(this.state.cell))):this.bounds};var M=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return M.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&
-!this.graph.isTableRow(this.state.cell)};var aa=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(b){return b.tableHandle||aa.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=function(){var b=0;this.graph.isTableRow(this.state.cell)?b=1:this.graph.isTableCell(this.state.cell)&&(b=2);return b};var N=mxVertexHandler.prototype.getSelectionBorderBounds;
-mxVertexHandler.prototype.getSelectionBorderBounds=function(){return N.apply(this,arguments).grow(-this.getSelectionBorderInset())};var O=null,U=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==O&&(O=mxCellRenderer.defaultShapes.tableLine);var b=U.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var d=function(b,d,f){for(var c=[],e=0;e<b.length;e++){var l=b[e];c.push(null==l?null:new mxPoint((m+l.x+d)*g,(q+l.y+f)*g))}return c},
-f=this,c=this.graph,e=c.model,g=c.view.scale,l=this.state,k=this.selectionBorder,m=this.state.origin.x+c.view.translate.x,q=this.state.origin.y+c.view.translate.y;null==b&&(b=[]);var n=c.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<n.length){for(var G=e.getChildCells(n[0].cell,!0),v=c.getTableLines(this.state.cell,!1,!0),u=c.getTableLines(this.state.cell,!0,!1),e=0;e<G.length;e++)mxUtils.bind(this,function(e){var m=c.view.getState(G[e]),q=c.getCellGeometry(G[e]),n=null!=q.alternateBounds?
-q.alternateBounds:q;null==m&&(m=new mxCellState(c.view,G[e],c.getCellStyle(G[e])),m.x=l.x+q.x*g,m.y=l.y+q.y*g,m.width=n.width*g,m.height=n.height*g,m.updateCachedBounds());var q=e<G.length-1?G[e+1]:null,q=null!=q?c.getCellGeometry(q):null,u=null!=q&&null!=q.alternateBounds?q.alternateBounds:q,q=null!=v[e]?new O(v[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);q.isDashed=k.isDashed;q.svgStrokeTolerance++;m=new mxHandle(m,"col-resize",null,q);m.tableHandle=!0;var A=0;m.shape.node.parentNode.insertBefore(m.shape.node,
-m.shape.node.parentNode.firstChild);m.redraw=function(){if(null!=this.shape&&null!=this.state.shape){this.shape.stroke=0==A?mxConstants.NONE:k.stroke;if(this.shape.constructor==O)this.shape.line=d(v[e],A,0),this.shape.updateBoundsFromLine();else{var b=c.getActualStartSize(l.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(n.width+A)*g;this.shape.bounds.y=l.y+(e==G.length-1?0:b.y*g);this.shape.bounds.height=l.height-(e==G.length-1?0:(b.height+b.y)*g)}this.shape.redraw()}};var p=
-!1;m.setPosition=function(b,d,f){A=Math.max(Graph.minTableColumnWidth-n.width,d.x-b.x-n.width);p=mxEvent.isShiftDown(f.getEvent());null==u||p||(A=Math.min(A,u.width-Graph.minTableColumnWidth))};m.execute=function(b){if(0!=A)c.setTableColumnWidth(this.state.cell,A,p);else if(!f.blockDelayedSelection){var d=c.getCellAt(b.getGraphX(),b.getGraphY())||l.cell;c.graphHandler.selectCellForEvent(d,b)}A=0};m.positionChanged=function(){};m.reset=function(){A=0};b.push(m)})(e);for(e=0;e<n.length;e++)mxUtils.bind(this,
+!this.graph.isTableRow(this.state.cell)};var Z=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(b){return b.tableHandle||Z.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=function(){var b=0;this.graph.isTableRow(this.state.cell)?b=1:this.graph.isTableCell(this.state.cell)&&(b=2);return b};var L=mxVertexHandler.prototype.getSelectionBorderBounds;
+mxVertexHandler.prototype.getSelectionBorderBounds=function(){return L.apply(this,arguments).grow(-this.getSelectionBorderInset())};var O=null,U=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==O&&(O=mxCellRenderer.defaultShapes.tableLine);var b=U.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var d=function(b,d,g){for(var c=[],e=0;e<b.length;e++){var l=b[e];c.push(null==l?null:new mxPoint((m+l.x+d)*f,(q+l.y+g)*f))}return c},
+g=this,c=this.graph,e=c.model,f=c.view.scale,l=this.state,k=this.selectionBorder,m=this.state.origin.x+c.view.translate.x,q=this.state.origin.y+c.view.translate.y;null==b&&(b=[]);var n=c.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<n.length){for(var G=e.getChildCells(n[0].cell,!0),v=c.getTableLines(this.state.cell,!1,!0),u=c.getTableLines(this.state.cell,!0,!1),e=0;e<G.length;e++)mxUtils.bind(this,function(e){var m=c.view.getState(G[e]),q=c.getCellGeometry(G[e]),n=null!=q.alternateBounds?
+q.alternateBounds:q;null==m&&(m=new mxCellState(c.view,G[e],c.getCellStyle(G[e])),m.x=l.x+q.x*f,m.y=l.y+q.y*f,m.width=n.width*f,m.height=n.height*f,m.updateCachedBounds());var q=e<G.length-1?G[e+1]:null,q=null!=q?c.getCellGeometry(q):null,u=null!=q&&null!=q.alternateBounds?q.alternateBounds:q,q=null!=v[e]?new O(v[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);q.isDashed=k.isDashed;q.svgStrokeTolerance++;m=new mxHandle(m,"col-resize",null,q);m.tableHandle=!0;var p=0;m.shape.node.parentNode.insertBefore(m.shape.node,
+m.shape.node.parentNode.firstChild);m.redraw=function(){if(null!=this.shape&&null!=this.state.shape){this.shape.stroke=0==p?mxConstants.NONE:k.stroke;if(this.shape.constructor==O)this.shape.line=d(v[e],p,0),this.shape.updateBoundsFromLine();else{var b=c.getActualStartSize(l.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(n.width+p)*f;this.shape.bounds.y=l.y+(e==G.length-1?0:b.y*f);this.shape.bounds.height=l.height-(e==G.length-1?0:(b.height+b.y)*f)}this.shape.redraw()}};var B=
+!1;m.setPosition=function(b,d,g){p=Math.max(Graph.minTableColumnWidth-n.width,d.x-b.x-n.width);B=mxEvent.isShiftDown(g.getEvent());null==u||B||(p=Math.min(p,u.width-Graph.minTableColumnWidth))};m.execute=function(b){if(0!=p)c.setTableColumnWidth(this.state.cell,p,B);else if(!g.blockDelayedSelection){var d=c.getCellAt(b.getGraphX(),b.getGraphY())||l.cell;c.graphHandler.selectCellForEvent(d,b)}p=0};m.positionChanged=function(){};m.reset=function(){p=0};b.push(m)})(e);for(e=0;e<n.length;e++)mxUtils.bind(this,
function(e){var m=n[e],q=e<n.length-1?n[e+1]:null,q=null!=q?c.getCellGeometry(q.cell):null,G=null!=q&&null!=q.alternateBounds?q.alternateBounds:q,q=null!=u[e]?new O(u[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);q.isDashed=k.isDashed;q.svgStrokeTolerance++;m=new mxHandle(m,"row-resize",null,q);m.tableHandle=!0;var v=0;m.shape.node.parentNode.insertBefore(m.shape.node,m.shape.node.parentNode.firstChild);m.redraw=function(){if(null!=this.shape&&null!=this.state.shape){this.shape.stroke=
-0==v?mxConstants.NONE:k.stroke;if(this.shape.constructor==O)this.shape.line=d(u[e],0,v),this.shape.updateBoundsFromLine();else{var b=c.getActualStartSize(l.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+v*g;this.shape.bounds.x=l.x+(e==n.length-1?0:b.x*g);this.shape.bounds.width=l.width-(e==n.length-1?0:b.width+b.x+g)}this.shape.redraw()}};var A=!1;m.setPosition=function(b,d,f){v=Math.max(Graph.minTableRowHeight-b.height,d.y-b.y-b.height);A=mxEvent.isShiftDown(f.getEvent());
-null!=G&&A&&(v=Math.min(v,G.height-Graph.minTableRowHeight))};m.execute=function(b){if(0!=v)c.setTableRowHeight(this.state.cell,v,!A);else if(!f.blockDelayedSelection){var d=c.getCellAt(b.getGraphX(),b.getGraphY())||l.cell;c.graphHandler.selectCellForEvent(d,b)}v=0};m.reset=function(){v=0};b.push(m)})(e)}}return null!=b?b.reverse():null};var G=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){G.apply(this,arguments);if(null!=this.moveHandles)for(var d=
+0==v?mxConstants.NONE:k.stroke;if(this.shape.constructor==O)this.shape.line=d(u[e],0,v),this.shape.updateBoundsFromLine();else{var b=c.getActualStartSize(l.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+v*f;this.shape.bounds.x=l.x+(e==n.length-1?0:b.x*f);this.shape.bounds.width=l.width-(e==n.length-1?0:b.width+b.x+f)}this.shape.redraw()}};var p=!1;m.setPosition=function(b,d,g){v=Math.max(Graph.minTableRowHeight-b.height,d.y-b.y-b.height);p=mxEvent.isShiftDown(g.getEvent());
+null!=G&&p&&(v=Math.min(v,G.height-Graph.minTableRowHeight))};m.execute=function(b){if(0!=v)c.setTableRowHeight(this.state.cell,v,!p);else if(!g.blockDelayedSelection){var d=c.getCellAt(b.getGraphX(),b.getGraphY())||l.cell;c.graphHandler.selectCellForEvent(d,b)}v=0};m.reset=function(){v=0};b.push(m)})(e)}}return null!=b?b.reverse():null};var G=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){G.apply(this,arguments);if(null!=this.moveHandles)for(var d=
0;d<this.moveHandles.length;d++)this.moveHandles[d].style.visibility=b?"":"hidden";if(null!=this.cornerHandles)for(d=0;d<this.cornerHandles.length;d++)this.cornerHandles[d].node.style.visibility=b?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var b=this.graph.model;if(null!=this.moveHandles){for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].parentNode.removeChild(this.moveHandles[d]);this.moveHandles=null}this.moveHandles=[];for(d=0;d<b.getChildCount(this.state.cell);d++)mxUtils.bind(this,
-function(d){if(null!=d&&b.isVertex(d.cell)){var f=mxUtils.createImage(Editor.rowMoveImage);f.style.position="absolute";f.style.cursor="pointer";f.style.width="7px";f.style.height="4px";f.style.padding="4px 2px 4px 2px";f.rowState=d;mxEvent.addGestureListeners(f,mxUtils.bind(this,function(b){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(b)&&this.graph.isCellSelected(d.cell)||this.graph.selectCellForEvent(d.cell,b);mxEvent.isPopupTrigger(b)||(this.graph.graphHandler.start(this.state.cell,
-mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(b),this.graph.isMouseDown=!0);mxEvent.consume(b)}),null,mxUtils.bind(this,function(b){mxEvent.isPopupTrigger(b)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(b),mxEvent.getClientY(b),d.cell,b),mxEvent.consume(b))}));this.moveHandles.push(f);this.graph.container.appendChild(f)}})(this.graph.view.getState(b.getChildAt(this.state.cell,
-d)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var b=0;b<this.customHandles.length;b++)this.customHandles[b].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var I=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var b=new mxPoint(0,0),d=this.tolerance,f=this.state.style.shape;null==mxCellRenderer.defaultShapes[f]&&mxStencilRegistry.getStencil(f);
-f=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!f&&null!=this.customHandles)for(var c=0;c<this.customHandles.length;c++)if(null!=this.customHandles[c].shape&&null!=this.customHandles[c].shape.bounds){var e=this.customHandles[c].shape.bounds,g=e.getCenterX(),l=e.getCenterY();if(Math.abs(this.state.x-g)<e.width/2||Math.abs(this.state.y-l)<e.height/2||Math.abs(this.state.x+this.state.width-g)<e.width/2||Math.abs(this.state.y+this.state.height-l)<e.height/
-2){f=!0;break}}f&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(d/=2,this.graph.isTable(this.state.cell)&&(d+=7),b.x=this.sizers[0].bounds.width+d,b.y=this.sizers[0].bounds.height+d):b=I.apply(this,arguments);return b};mxVertexHandler.prototype.updateHint=function(d){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{d=
-this.state.view.scale;var f=this.state.view.unit;this.hint.innerHTML=c(this.roundLength(this.bounds.width/d),f)+" x "+c(this.roundLength(this.bounds.height/d),f)}d=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==d&&(d=this.bounds);this.hint.style.left=d.x+Math.round((d.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=d.y+d.height+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")}};
-mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};var A=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(b,d){A.apply(this,arguments);null!=this.linkHint&&"none"!=this.linkHint.style.display&&null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&(this.linkHint.style.display="none")};var Y=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=
-function(b,d){Y.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(d,f){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var e=this.graph.view.translate,g=this.graph.view.scale,l=this.roundLength(f.x/g-e.x),e=this.roundLength(f.y/g-e.y),g=this.graph.view.unit;this.hint.innerHTML=c(l,g)+", "+c(e,g);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=
-this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(l=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*l.x)+"%, "+Math.round(100*l.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(d.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(d.getGraphY(),f.y)+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};Graph.prototype.expandedImage=
-Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="50%" y1="0%" x2="50%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 2 4.5 L 7 4.5 z" stroke="#000"/>');Graph.prototype.collapsedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 4.5 2 L 4.5 7 M 2 4.5 L 7 4.5 z" stroke="#000"/>');
+function(d){if(null!=d&&b.isVertex(d.cell)){var g=mxUtils.createImage(Editor.rowMoveImage);g.style.position="absolute";g.style.cursor="pointer";g.style.width="7px";g.style.height="4px";g.style.padding="4px 2px 4px 2px";g.rowState=d;mxEvent.addGestureListeners(g,mxUtils.bind(this,function(b){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(b)&&this.graph.isCellSelected(d.cell)||this.graph.selectCellForEvent(d.cell,b);mxEvent.isPopupTrigger(b)||(this.graph.graphHandler.start(this.state.cell,
+mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(b),this.graph.isMouseDown=!0);mxEvent.consume(b)}),null,mxUtils.bind(this,function(b){mxEvent.isPopupTrigger(b)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(b),mxEvent.getClientY(b),d.cell,b),mxEvent.consume(b))}));this.moveHandles.push(g);this.graph.container.appendChild(g)}})(this.graph.view.getState(b.getChildAt(this.state.cell,
+d)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var b=0;b<this.customHandles.length;b++)this.customHandles[b].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var I=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var b=new mxPoint(0,0),d=this.tolerance,g=this.state.style.shape;null==mxCellRenderer.defaultShapes[g]&&mxStencilRegistry.getStencil(g);
+g=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!g&&null!=this.customHandles)for(var c=0;c<this.customHandles.length;c++)if(null!=this.customHandles[c].shape&&null!=this.customHandles[c].shape.bounds){var e=this.customHandles[c].shape.bounds,f=e.getCenterX(),l=e.getCenterY();if(Math.abs(this.state.x-f)<e.width/2||Math.abs(this.state.y-l)<e.height/2||Math.abs(this.state.x+this.state.width-f)<e.width/2||Math.abs(this.state.y+this.state.height-l)<e.height/
+2){g=!0;break}}g&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(d/=2,this.graph.isTable(this.state.cell)&&(d+=7),b.x=this.sizers[0].bounds.width+d,b.y=this.sizers[0].bounds.height+d):b=I.apply(this,arguments);return b};mxVertexHandler.prototype.updateHint=function(d){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{d=
+this.state.view.scale;var g=this.state.view.unit;this.hint.innerHTML=c(this.roundLength(this.bounds.width/d),g)+" x "+c(this.roundLength(this.bounds.height/d),g)}d=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==d&&(d=this.bounds);this.hint.style.left=d.x+Math.round((d.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=d.y+d.height+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")}};
+mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};var B=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(b,d){B.apply(this,arguments);null!=this.linkHint&&"none"!=this.linkHint.style.display&&null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&(this.linkHint.style.display="none")};var ca=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=
+function(b,d){ca.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(d,g){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var e=this.graph.view.translate,f=this.graph.view.scale,l=this.roundLength(g.x/f-e.x),e=this.roundLength(g.y/f-e.y),f=this.graph.view.unit;this.hint.innerHTML=c(l,f)+", "+c(e,f);this.hint.style.visibility="visible";if(this.isSource||
+this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(l=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*l.x)+"%, "+Math.round(100*l.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(d.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(d.getGraphY(),g.y)+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};
+Graph.prototype.expandedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="50%" y1="0%" x2="50%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 2 4.5 L 7 4.5 z" stroke="#000"/>');Graph.prototype.collapsedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 4.5 2 L 4.5 7 M 2 4.5 L 7 4.5 z" stroke="#000"/>');
mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.endMainHandle=Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="6" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.secondaryHandle=Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>');
HoverIcons.prototype.fixedHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="6" stroke="#fff" fill="#01bd22"/><path d="m 8 8 L 14 14M 8 14 L 14 8" stroke="#fff"/>');HoverIcons.prototype.endFixedHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="7" stroke="#fff" fill="#01bd22"/><path d="m 8 8 L 14 14M 8 14 L 14 8" stroke="#fff"/>');HoverIcons.prototype.terminalHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="6" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+
'"/><circle cx="11" cy="11" r="3" stroke="#fff" fill="transparent"/>');HoverIcons.prototype.endTerminalHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="7" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/><circle cx="11" cy="11" r="3" stroke="#fff" fill="transparent"/>');HoverIcons.prototype.rotationHandle=Graph.createSvgImage(16,16,'<path stroke="'+HoverIcons.prototype.arrowFill+'" fill="'+HoverIcons.prototype.arrowFill+'" d="M15.55 5.55L11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10l4.55-4.45zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47h2.02zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03zm3.89-2.42l1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48z"/>',
@@ -2672,272 +2682,272 @@ HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangl
!0;mxEdgeHandler.prototype.manageLabelHandle=!0;mxEdgeHandler.prototype.outlineConnect=!0;mxEdgeHandler.prototype.isAddVirtualBendEvent=function(b){return!mxEvent.isShiftDown(b.getEvent())};mxEdgeHandler.prototype.isCustomHandleEvent=function(b){return!mxEvent.isShiftDown(b.getEvent())};if(Graph.touchStyle){if(mxClient.IS_TOUCH||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints)mxShape.prototype.svgStrokeTolerance=18,mxVertexHandler.prototype.tolerance=12,mxEdgeHandler.prototype.tolerance=
12,Graph.prototype.tolerance=12,mxVertexHandler.prototype.rotationHandleVSpacing=-16,mxConstraintHandler.prototype.getTolerance=function(b){return mxEvent.isMouseEvent(b.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=function(b){var d=b.getEvent();return null==b.getState()&&!mxEvent.isMouseEvent(d)||mxEvent.isPopupTrigger(d)&&(null==b.getState()||mxEvent.isControlDown(d)||mxEvent.isShiftDown(d))};var S=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=
function(b,d){S.apply(this,arguments);mxEvent.isTouchEvent(d.getEvent())&&this.graph.isCellSelected(d.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(b){var d=b.getEvent();return mxEvent.isLeftMouseButton(d)&&(this.useLeftButtonForPanning&&null==b.getState()||mxEvent.isControlDown(d)&&!mxEvent.isShiftDown(d))||this.usePopupTrigger&&mxEvent.isPopupTrigger(d)};mxRubberband.prototype.isSpaceEvent=function(b){return this.graph.isEnabled()&&
-!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(b.getEvent())&&mxEvent.isShiftDown(b.getEvent())&&mxEvent.isAltDown(b.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(b,d){if(this.cancelled)this.cancelled=!1,d.consume();else{var f=null!=this.div&&"none"!=this.div.style.display,c=null,e=null,g=null,l=null;null!=this.first&&null!=this.currentX&&
-null!=this.currentY&&(c=this.first.x,e=this.first.y,g=(this.currentX-c)/this.graph.view.scale,l=(this.currentY-e)/this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(g=this.graph.snap(g),l=this.graph.snap(l),this.graph.isGridEnabled()||(Math.abs(g)<this.graph.tolerance&&(g=0),Math.abs(l)<this.graph.tolerance&&(l=0))));this.reset();if(f){if(this.isSpaceEvent(d)){this.graph.model.beginUpdate();try{for(var k=this.graph.getCellsBeyond(c,e,this.graph.getDefaultParent(),!0,!0),f=0;f<k.length;f++)if(this.graph.isCellMovable(k[f])){var m=
-this.graph.view.getState(k[f]),q=this.graph.getCellGeometry(k[f]);null!=m&&null!=q&&(q=q.clone(),q.translate(g,l),this.graph.model.setGeometry(k[f],q))}}finally{this.graph.model.endUpdate()}}else g=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(g,d.getEvent());d.consume()}}};mxRubberband.prototype.mouseMove=function(b,d){if(!d.isConsumed()&&null!=this.first){var f=mxUtils.getScrollOrigin(this.graph.container),c=mxUtils.getOffset(this.graph.container);f.x-=c.x;f.y-=c.y;
-var c=d.getX()+f.x,f=d.getY()+f.y,e=this.first.x-c,g=this.first.y-f,l=this.graph.tolerance;if(null!=this.div||Math.abs(e)>l||Math.abs(g)>l)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(c,f),this.isSpaceEvent(d)?(c=this.x+this.width,f=this.y+this.height,e=this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(this.width=this.graph.snap(this.width/e)*e,this.height=this.graph.snap(this.height/e)*e,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=
-0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=c-this.width),this.y<this.first.y&&(this.y=f-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor="white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=
+!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(b.getEvent())&&mxEvent.isShiftDown(b.getEvent())&&mxEvent.isAltDown(b.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(b,d){if(this.cancelled)this.cancelled=!1,d.consume();else{var g=null!=this.div&&"none"!=this.div.style.display,c=null,e=null,f=null,l=null;null!=this.first&&null!=this.currentX&&
+null!=this.currentY&&(c=this.first.x,e=this.first.y,f=(this.currentX-c)/this.graph.view.scale,l=(this.currentY-e)/this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(f=this.graph.snap(f),l=this.graph.snap(l),this.graph.isGridEnabled()||(Math.abs(f)<this.graph.tolerance&&(f=0),Math.abs(l)<this.graph.tolerance&&(l=0))));this.reset();if(g){if(this.isSpaceEvent(d)){this.graph.model.beginUpdate();try{for(var k=this.graph.getCellsBeyond(c,e,this.graph.getDefaultParent(),!0,!0),g=0;g<k.length;g++)if(this.graph.isCellMovable(k[g])){var m=
+this.graph.view.getState(k[g]),q=this.graph.getCellGeometry(k[g]);null!=m&&null!=q&&(q=q.clone(),q.translate(f,l),this.graph.model.setGeometry(k[g],q))}}finally{this.graph.model.endUpdate()}}else f=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(f,d.getEvent());d.consume()}}};mxRubberband.prototype.mouseMove=function(b,d){if(!d.isConsumed()&&null!=this.first){var g=mxUtils.getScrollOrigin(this.graph.container),c=mxUtils.getOffset(this.graph.container);g.x-=c.x;g.y-=c.y;
+var c=d.getX()+g.x,g=d.getY()+g.y,e=this.first.x-c,f=this.first.y-g,l=this.graph.tolerance;if(null!=this.div||Math.abs(e)>l||Math.abs(f)>l)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(c,g),this.isSpaceEvent(d)?(c=this.x+this.width,g=this.y+this.height,e=this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(this.width=this.graph.snap(this.width/e)*e,this.height=this.graph.snap(this.height/e)*e,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=
+0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=c-this.width),this.y<this.first.y&&(this.y=g-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor="white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=
this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),
-this.secondDiv=null)),d.consume()}};var Q=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);Q.apply(this,arguments)};var V=(new Date).getTime(),oa=0,fa=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(b,d,f,c){fa.apply(this,arguments);f!=this.currentTerminalState?(V=(new Date).getTime(),oa=0):oa=(new Date).getTime()-V;this.currentTerminalState=
-f};var ka=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(b){return null!=this.currentTerminalState&&b.getState()==this.currentTerminalState&&2E3<oa||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&ka.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=function(b,d,f){d=null!=b&&0==b;var c=this.state.getVisibleTerminalState(d);b=null!=b&&(0==b||b>=this.state.absolutePoints.length-
-1||this.constructor==mxElbowEdgeHandler&&2==b)?this.graph.getConnectionConstraint(this.state,c,d):null;f=null!=(null!=b?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(d),b):null)?f?this.endFixedHandleImage:this.fixedHandleImage:null!=b&&null!=c?f?this.endTerminalHandleImage:this.terminalHandleImage:f?this.endHandleImage:this.handleImage;if(null!=f)return f=new mxImageShape(new mxRectangle(0,0,f.width,f.height),f.src),f.preserveImageAspect=!1,f;f=mxConstants.HANDLE_SIZE;this.preferHtml&&
---f;return new mxRectangleShape(new mxRectangle(0,0,f,f),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var ra=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(b,d,f){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return ra.apply(this,arguments)};var la=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(b){if(null!=
-b&&1==b.length){var d=this.graph.getModel(),f=d.getParent(b[0]),c=this.graph.getCellGeometry(b[0]);if(d.isEdge(f)&&null!=c&&c.relative&&(d=this.graph.view.getState(b[0]),null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return la.apply(this,arguments)};var ja=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var b=ja.apply(this,arguments),d=[],f=0;f<b.length;f++)"1"!=mxUtils.getValue(b[f].style,
-"part","0")&&d.push(b[f]);return d};var ba=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(b){var d=this.graph.getModel(),f=d.getParent(b.cell),c=this.graph.getCellGeometry(b.cell);return d.isEdge(f)&&null!=c&&c.relative&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox?(d=b.text.unrotatedBoundingBox||b.text.boundingBox,new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):ba.apply(this,arguments)};
-var ca=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(b,d){var f=this.graph.getModel(),c=f.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!f.isEdge(c)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&ca.apply(this,arguments)};mxVertexHandler.prototype.rotateClick=function(){var b=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),
+this.secondDiv=null)),d.consume()}};var Q=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);Q.apply(this,arguments)};var V=(new Date).getTime(),oa=0,fa=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(b,d,g,c){fa.apply(this,arguments);g!=this.currentTerminalState?(V=(new Date).getTime(),oa=0):oa=(new Date).getTime()-V;this.currentTerminalState=
+g};var ka=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(b){return null!=this.currentTerminalState&&b.getState()==this.currentTerminalState&&2E3<oa||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&ka.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=function(b,d,g){d=null!=b&&0==b;var c=this.state.getVisibleTerminalState(d);b=null!=b&&(0==b||b>=this.state.absolutePoints.length-
+1||this.constructor==mxElbowEdgeHandler&&2==b)?this.graph.getConnectionConstraint(this.state,c,d):null;g=null!=(null!=b?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(d),b):null)?g?this.endFixedHandleImage:this.fixedHandleImage:null!=b&&null!=c?g?this.endTerminalHandleImage:this.terminalHandleImage:g?this.endHandleImage:this.handleImage;if(null!=g)return g=new mxImageShape(new mxRectangle(0,0,g.width,g.height),g.src),g.preserveImageAspect=!1,g;g=mxConstants.HANDLE_SIZE;this.preferHtml&&
+--g;return new mxRectangleShape(new mxRectangle(0,0,g,g),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var ra=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(b,d,g){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return ra.apply(this,arguments)};var la=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(b){if(null!=
+b&&1==b.length){var d=this.graph.getModel(),g=d.getParent(b[0]),c=this.graph.getCellGeometry(b[0]);if(d.isEdge(g)&&null!=c&&c.relative&&(d=this.graph.view.getState(b[0]),null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return la.apply(this,arguments)};var ja=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var b=ja.apply(this,arguments),d=[],g=0;g<b.length;g++)"1"!=mxUtils.getValue(b[g].style,
+"part","0")&&d.push(b[g]);return d};var aa=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(b){var d=this.graph.getModel(),g=d.getParent(b.cell),c=this.graph.getCellGeometry(b.cell);return d.isEdge(g)&&null!=c&&c.relative&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox?(d=b.text.unrotatedBoundingBox||b.text.boundingBox,new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):aa.apply(this,arguments)};
+var ba=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(b,d){var g=this.graph.getModel(),c=g.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!g.isEdge(c)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&ba.apply(this,arguments)};mxVertexHandler.prototype.rotateClick=function(){var b=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),
d=mxUtils.getValue(this.state.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);this.state.view.graph.model.isVertex(this.state.cell)&&b==mxConstants.NONE&&d==mxConstants.NONE?(b=mxUtils.mod(mxUtils.getValue(this.state.style,mxConstants.STYLE_ROTATION,0)+90,360),this.state.view.graph.setCellStyles(mxConstants.STYLE_ROTATION,b,[this.state.cell])):this.state.view.graph.turnShapes([this.state.cell])};var R=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(b,d){R.apply(this,
arguments);null!=this.graph.graphHandler.first&&(null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display="none"),null!=this.linkHint&&"none"!=this.linkHint.style.display&&(this.linkHint.style.display="none"))};var sa=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(b,d){sa.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");
null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="");this.blockDelayedSelection=null};var W=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){W.apply(this,arguments);var b=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",mxResources.get("rotateTooltip"));if(this.graph.isTable(this.state.cell))this.refreshMoveHandles();else if(1==this.graph.getSelectionCount()&&(this.graph.isTableCell(this.state.cell)||this.graph.isTableRow(this.state.cell))){this.cornerHandles=
-[];for(var d=0;4>d;d++){var f=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);f.dialect=mxConstants.DIALECT_SVG;f.init(this.graph.view.getOverlayPane());this.cornerHandles.push(f)}}var c=mxUtils.bind(this,function(){null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.changeHandler=mxUtils.bind(this,function(b,d){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),
-this.graph.getLinksForState(this.state));c()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(b,d){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);d=this.graph.getLinkForCell(this.state.cell);f=this.graph.getLinksForState(this.state);this.updateLinkHint(d,f);if(null!=d||null!=f&&0<f.length)b=!0;b&&this.redrawHandles()};
-mxVertexHandler.prototype.updateLinkHint=function(d,f){try{if(null==d&&(null==f||0==f.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=d||null!=f&&0<f.length){null==this.linkHint&&(this.linkHint=b(),this.linkHint.style.padding="6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint),mxEvent.addListener(this.linkHint,"mouseenter",
+[];for(var d=0;4>d;d++){var g=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);g.dialect=mxConstants.DIALECT_SVG;g.init(this.graph.view.getOverlayPane());this.cornerHandles.push(g)}}var c=mxUtils.bind(this,function(){null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.changeHandler=mxUtils.bind(this,function(b,d){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),
+this.graph.getLinksForState(this.state));c()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(b,d){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);d=this.graph.getLinkForCell(this.state.cell);g=this.graph.getLinksForState(this.state);this.updateLinkHint(d,g);if(null!=d||null!=g&&0<g.length)b=!0;b&&this.redrawHandles()};
+mxVertexHandler.prototype.updateLinkHint=function(d,g){try{if(null==d&&(null==g||0==g.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=d||null!=g&&0<g.length){null==this.linkHint&&(this.linkHint=b(),this.linkHint.style.padding="6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint),mxEvent.addListener(this.linkHint,"mouseenter",
mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.innerHTML="";if(null!=d&&(this.linkHint.appendChild(this.graph.createLinkForHint(d)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var c=document.createElement("img");c.setAttribute("src",Editor.editImage);c.setAttribute("title",mxResources.get("editLink"));c.setAttribute("width","11");c.setAttribute("height","11");c.style.marginLeft="10px";c.style.marginBottom="-1px";c.style.cursor="pointer";this.linkHint.appendChild(c);
-mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(b)}));this.linkHint.appendChildGraph.createRemoveIcon(mxResources.get("removeIt",[mxResources.get("link")]),mxUtils.bind(this,function(b){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(b)}))}if(null!=f)for(c=0;c<f.length;c++){var e=document.createElement("div");e.style.marginTop=null!=d||0<c?"6px":"0px";e.appendChild(this.graph.createLinkForHint(f[c].getAttribute("href"),
-mxUtils.getTextContent(f[c])));this.linkHint.appendChild(e)}}}catch(ta){}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var X=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){X.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var b=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");
-null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.changeHandler=mxUtils.bind(this,function(d,f){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));b();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var d=this.graph.getLinkForCell(this.state.cell),
-f=this.graph.getLinksForState(this.state);if(null!=d||null!=f&&0<f.length)this.updateLinkHint(d,f),this.redrawHandles()};var ma=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){ma.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var qa=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].style.left=
-this.moveHandles[b].rowState.x+this.moveHandles[b].rowState.width-5+"px",this.moveHandles[b].style.top=this.moveHandles[b].rowState.y+this.moveHandles[b].rowState.height/2-6+"px";if(null!=this.cornerHandles){var b=this.getSelectionBorderInset(),d=this.cornerHandles,f=d[0].bounds.height/2;d[0].bounds.x=this.state.x-d[0].bounds.width/2+b;d[0].bounds.y=this.state.y-f+b;d[0].redraw();d[1].bounds.x=d[0].bounds.x+this.state.width-2*b;d[1].bounds.y=d[0].bounds.y;d[1].redraw();d[2].bounds.x=d[0].bounds.x;
+mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(b)}));this.linkHint.appendChildGraph.createRemoveIcon(mxResources.get("removeIt",[mxResources.get("link")]),mxUtils.bind(this,function(b){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(b)}))}if(null!=g)for(c=0;c<g.length;c++){var e=document.createElement("div");e.style.marginTop=null!=d||0<c?"6px":"0px";e.appendChild(this.graph.createLinkForHint(g[c].getAttribute("href"),
+mxUtils.getTextContent(g[c])));this.linkHint.appendChild(e)}}}catch(ta){}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var X=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){X.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var b=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");
+null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.changeHandler=mxUtils.bind(this,function(d,g){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));b();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var d=this.graph.getLinkForCell(this.state.cell),
+g=this.graph.getLinksForState(this.state);if(null!=d||null!=g&&0<g.length)this.updateLinkHint(d,g),this.redrawHandles()};var ma=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){ma.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var qa=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].style.left=
+this.moveHandles[b].rowState.x+this.moveHandles[b].rowState.width-5+"px",this.moveHandles[b].style.top=this.moveHandles[b].rowState.y+this.moveHandles[b].rowState.height/2-6+"px";if(null!=this.cornerHandles){var b=this.getSelectionBorderInset(),d=this.cornerHandles,g=d[0].bounds.height/2;d[0].bounds.x=this.state.x-d[0].bounds.width/2+b;d[0].bounds.y=this.state.y-g+b;d[0].redraw();d[1].bounds.x=d[0].bounds.x+this.state.width-2*b;d[1].bounds.y=d[0].bounds.y;d[1].redraw();d[2].bounds.x=d[0].bounds.x;
d[2].bounds.y=this.state.y+this.state.height-2*b;d[2].redraw();d[3].bounds.x=d[1].bounds.x;d[3].bounds.y=d[2].bounds.y;d[3].redraw();for(b=0;b<this.cornerHandles.length;b++)this.cornerHandles[b].node.style.display=1==this.graph.getSelectionCount()?"":"none"}null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=null!=this.moveHandles||1!=this.graph.getSelectionCount()||null!=this.index&&this.index!=mxEvent.ROTATION_HANDLE?"none":"");qa.apply(this);null!=this.state&&
-null!=this.linkHint&&(b=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),d=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),f=mxUtils.getBoundingBox(d,this.state.style[mxConstants.STYLE_ROTATION]||"0",b),b=null!=f?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,d=null!=this.state.text?this.state.text.boundingBox:null,null==f&&(f=this.state),f=f.y+f.height,null!=d&&(f=Math.max(f,d.y+d.height)),this.linkHint.style.left=
-Math.max(0,Math.round(b.x+(b.width-this.linkHint.clientWidth)/2))+"px",this.linkHint.style.top=Math.round(f+this.verticalOffset/2+Editor.hintOffset)+"px")};var T=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){T.apply(this,arguments);if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)null!=this.moveHandles[b]&&null!=this.moveHandles[b].parentNode&&this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);this.moveHandles=null}if(null!=this.cornerHandles){for(b=
+null!=this.linkHint&&(b=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),d=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),g=mxUtils.getBoundingBox(d,this.state.style[mxConstants.STYLE_ROTATION]||"0",b),b=null!=g?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,d=null!=this.state.text?this.state.text.boundingBox:null,null==g&&(g=this.state),g=g.y+g.height,null!=d&&(g=Math.max(g,d.y+d.height)),this.linkHint.style.left=
+Math.max(0,Math.round(b.x+(b.width-this.linkHint.clientWidth)/2))+"px",this.linkHint.style.top=Math.round(g+this.verticalOffset/2+Editor.hintOffset)+"px")};var T=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){T.apply(this,arguments);if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)null!=this.moveHandles[b]&&null!=this.moveHandles[b].parentNode&&this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);this.moveHandles=null}if(null!=this.cornerHandles){for(b=
0;b<this.cornerHandles.length;b++)null!=this.cornerHandles[b]&&null!=this.cornerHandles[b].node&&null!=this.cornerHandles[b].node.parentNode&&this.cornerHandles[b].node.parentNode.removeChild(this.cornerHandles[b].node);this.cornerHandles=null}null!=this.linkHint&&(null!=this.linkHint.parentNode&&this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getSelectionModel().removeListener(this.changeHandler),this.graph.getModel().removeListener(this.changeHandler),
this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var ia=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(ia.apply(this),null!=this.state&&null!=this.linkHint)){var b=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(b=new mxRectangle(b.x,b.y,b.width,b.height),b.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(b.x+(b.width-
this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b.y+b.height+Editor.hintOffset)+"px"}};var da=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){da.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var na=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){na.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),
-this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function b(b,d,f){mxShape.call(this);this.line=b;this.stroke=d;this.strokewidth=null!=f?f:1;this.updateBoundsFromLine()}function c(){mxSwimlane.call(this)}function e(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function g(){mxActor.call(this)}function p(){mxCylinder.call(this)}function t(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function l(){mxShape.call(this)}function q(){mxShape.call(this)}function m(b,d,f,c){mxShape.call(this);
-this.bounds=b;this.fill=d;this.stroke=f;this.strokewidth=null!=c?c:1}function n(){mxActor.call(this)}function u(){mxCylinder.call(this)}function v(){mxCylinder.call(this)}function y(){mxActor.call(this)}function x(){mxActor.call(this)}function F(){mxActor.call(this)}function H(){mxActor.call(this)}function z(){mxActor.call(this)}function D(){mxActor.call(this)}function L(){mxActor.call(this)}function E(b,d){this.canvas=b;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=
+this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function b(b,d,g){mxShape.call(this);this.line=b;this.stroke=d;this.strokewidth=null!=g?g:1;this.updateBoundsFromLine()}function c(){mxSwimlane.call(this)}function e(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function f(){mxActor.call(this)}function p(){mxCylinder.call(this)}function t(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function l(){mxShape.call(this)}function q(){mxShape.call(this)}function m(b,d,g,c){mxShape.call(this);
+this.bounds=b;this.fill=d;this.stroke=g;this.strokewidth=null!=c?c:1}function n(){mxActor.call(this)}function u(){mxCylinder.call(this)}function v(){mxCylinder.call(this)}function y(){mxActor.call(this)}function x(){mxActor.call(this)}function F(){mxActor.call(this)}function H(){mxActor.call(this)}function z(){mxActor.call(this)}function D(){mxActor.call(this)}function N(){mxActor.call(this)}function E(b,d){this.canvas=b;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=
d;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,E.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,E.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,E.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,E.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,E.prototype.curveTo);this.originalArcTo=
-this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,E.prototype.arcTo)}function J(){mxRectangleShape.call(this)}function C(){mxRectangleShape.call(this)}function K(){mxActor.call(this)}function M(){mxActor.call(this)}function aa(){mxActor.call(this)}function N(){mxRectangleShape.call(this)}function O(){mxRectangleShape.call(this)}function U(){mxCylinder.call(this)}function G(){mxShape.call(this)}function I(){mxShape.call(this)}function A(){mxEllipse.call(this)}function Y(){mxShape.call(this)}function S(){mxShape.call(this)}
-function Q(){mxRectangleShape.call(this)}function V(){mxShape.call(this)}function oa(){mxShape.call(this)}function fa(){mxShape.call(this)}function ka(){mxShape.call(this)}function ra(){mxShape.call(this)}function la(){mxCylinder.call(this)}function ja(){mxCylinder.call(this)}function ba(){mxRectangleShape.call(this)}function ca(){mxDoubleEllipse.call(this)}function R(){mxDoubleEllipse.call(this)}function sa(){mxArrowConnector.call(this);this.spacing=0}function W(){mxArrowConnector.call(this);this.spacing=
+this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,E.prototype.arcTo)}function J(){mxRectangleShape.call(this)}function C(){mxRectangleShape.call(this)}function K(){mxActor.call(this)}function M(){mxActor.call(this)}function Z(){mxActor.call(this)}function L(){mxRectangleShape.call(this)}function O(){mxRectangleShape.call(this)}function U(){mxCylinder.call(this)}function G(){mxShape.call(this)}function I(){mxShape.call(this)}function B(){mxEllipse.call(this)}function ca(){mxShape.call(this)}function S(){mxShape.call(this)}
+function Q(){mxRectangleShape.call(this)}function V(){mxShape.call(this)}function oa(){mxShape.call(this)}function fa(){mxShape.call(this)}function ka(){mxShape.call(this)}function ra(){mxShape.call(this)}function la(){mxCylinder.call(this)}function ja(){mxCylinder.call(this)}function aa(){mxRectangleShape.call(this)}function ba(){mxDoubleEllipse.call(this)}function R(){mxDoubleEllipse.call(this)}function sa(){mxArrowConnector.call(this);this.spacing=0}function W(){mxArrowConnector.call(this);this.spacing=
0}function X(){mxActor.call(this)}function ma(){mxRectangleShape.call(this)}function qa(){mxActor.call(this)}function T(){mxActor.call(this)}function ia(){mxActor.call(this)}function da(){mxActor.call(this)}function na(){mxActor.call(this)}function ha(){mxActor.call(this)}function ua(){mxActor.call(this)}function P(){mxActor.call(this)}function ea(){mxActor.call(this)}function ta(){mxActor.call(this)}function ya(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}function xa(){mxEllipse.call(this)}
-function za(){mxRhombus.call(this)}function Ba(){mxEllipse.call(this)}function Ea(){mxEllipse.call(this)}function Ja(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function Ka(){mxActor.call(this)}function Ca(){mxActor.call(this)}function wa(){mxActor.call(this)}function Z(b,d,f,c){mxShape.call(this);this.bounds=b;this.fill=d;this.stroke=f;this.strokewidth=null!=c?c:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Fa(){mxConnector.call(this)}
-function Na(b,d,f,c,e,g,l,k,m,q){l+=m;var B=c.clone();c.x-=e*(2*l+m);c.y-=g*(2*l+m);e*=l+m;g*=l+m;return function(){b.ellipse(B.x-e-l,B.y-g-l,2*l,2*l);q?b.fillAndStroke():b.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var b=null;if(null!=this.line)for(var d=0;d<this.line.length;d++){var f=this.line[d];null!=f&&(f=new mxRectangle(f.x,f.y,this.strokewidth,this.strokewidth),null==b?b=f:b.add(f))}this.bounds=null!=b?b:new mxRectangle};b.prototype.paintVertexShape=function(b,
-d,f,c,e){this.paintTableLine(b,this.line,0,0)};b.prototype.paintTableLine=function(b,d,f,c){if(null!=d){var e=null;b.begin();for(var B=0;B<d.length;B++){var g=d[B];null!=g&&(null==e?b.moveTo(g.x+f,g.y+c):null!=e&&b.lineTo(g.x+f,g.y+c));e=g}b.end();b.stroke()}};b.prototype.intersectsRectangle=function(b){var d=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var f=null,c=0;c<this.line.length&&!d;c++){var e=this.line[c];null!=e&&null!=f&&(d=mxUtils.rectangleIntersectsSegment(b,
-f,e));f=e}return d};mxCellRenderer.registerShape("tableLine",b);mxUtils.extend(c,mxSwimlane);c.prototype.getLabelBounds=function(b){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};c.prototype.paintVertexShape=function(b,d,f,c,e){0==this.getTitleSize()?mxRectangleShape.prototype.paintBackground.apply(this,arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),b.translate(-d,-f));this.paintForeground(b,
-d,f,c,e)};c.prototype.paintForeground=function(b,d,f,c,e){if(null!=this.state){var B=this.flipH,g=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH)var l=B,B=g,g=l;b.rotate(-this.getShapeRotation(),B,g,d+c/2,f+e/2);s=this.scale;d=this.bounds.x/s;f=this.bounds.y/s;c=this.bounds.width/s;e=this.bounds.height/s;this.paintTableForeground(b,d,f,c,e)}};c.prototype.paintTableForeground=function(d,f,c,e,g){e=this.state.view.graph.getTableLines(this.state.cell,
-"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(g=0;g<e.length;g++)b.prototype.paintTableLine(d,e[g],f,c)};mxCellRenderer.registerShape("table",c);mxUtils.extend(e,mxCylinder);e.prototype.size=20;e.prototype.darkOpacity=0;e.prototype.darkOpacity2=0;e.prototype.paintVertexShape=function(b,d,f,c,e){var B=Math.max(0,Math.min(c,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"darkOpacity",this.darkOpacity)))),l=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));b.translate(d,f);b.begin();b.moveTo(0,0);b.lineTo(c-B,0);b.lineTo(c,B);b.lineTo(c,e);b.lineTo(B,e);b.lineTo(0,e-B);b.lineTo(0,0);b.close();b.end();b.fillAndStroke();this.outline||(b.setShadow(!1),0!=g&&(b.setFillAlpha(Math.abs(g)),b.setFillColor(0>g?"#FFFFFF":"#000000"),b.begin(),b.moveTo(0,0),b.lineTo(c-B,0),b.lineTo(c,B),b.lineTo(B,B),b.close(),b.fill()),0!=l&&
-(b.setFillAlpha(Math.abs(l)),b.setFillColor(0>l?"#FFFFFF":"#000000"),b.begin(),b.moveTo(0,0),b.lineTo(B,B),b.lineTo(B,e),b.lineTo(0,e-B),b.close(),b.fill()),b.begin(),b.moveTo(B,e),b.lineTo(B,B),b.lineTo(0,0),b.moveTo(B,B),b.lineTo(c,B),b.end(),b.stroke())};e.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)?(b=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(b,b,0,0)):null};mxCellRenderer.registerShape("cube",e);var Ua=Math.tan(mxUtils.toRadians(30)),
-Ia=(.5-Ua)/2;mxCellRenderer.registerShape("isoRectangle",g);mxUtils.extend(k,mxCylinder);k.prototype.size=6;k.prototype.paintVertexShape=function(b,d,f,c,e){b.setFillColor(this.stroke);var B=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;b.ellipse(d+.5*(c-B),f+.5*(e-B),B,B);b.fill();b.setFillColor(mxConstants.NONE);b.rect(d,f,c,e);b.fill()};mxCellRenderer.registerShape("waypoint",k);mxUtils.extend(g,mxActor);g.prototype.size=20;g.prototype.redrawPath=function(b,
-d,f,c,e){d=Math.min(c,e/Ua);b.translate((c-d)/2,(e-d)/2+d/4);b.moveTo(0,.25*d);b.lineTo(.5*d,d*Ia);b.lineTo(d,.25*d);b.lineTo(.5*d,(.5-Ia)*d);b.lineTo(0,.25*d);b.close();b.end()};mxCellRenderer.registerShape("isoRectangle",g);mxUtils.extend(p,mxCylinder);p.prototype.size=20;p.prototype.redrawPath=function(b,d,f,c,e,g){d=Math.min(c,e/(.5+Ua));g?(b.moveTo(0,.25*d),b.lineTo(.5*d,(.5-Ia)*d),b.lineTo(d,.25*d),b.moveTo(.5*d,(.5-Ia)*d),b.lineTo(.5*d,(1-Ia)*d)):(b.translate((c-d)/2,(e-d)/2),b.moveTo(0,.25*
-d),b.lineTo(.5*d,d*Ia),b.lineTo(d,.25*d),b.lineTo(d,.75*d),b.lineTo(.5*d,(1-Ia)*d),b.lineTo(0,.75*d),b.close());b.end()};mxCellRenderer.registerShape("isoCube",p);mxUtils.extend(t,mxCylinder);t.prototype.redrawPath=function(b,d,f,c,e,g){d=Math.min(e/2,Math.round(e/8)+this.strokewidth-1);if(g&&null!=this.fill||!g&&null==this.fill)b.moveTo(0,d),b.curveTo(0,2*d,c,2*d,c,d),g||(b.stroke(),b.begin()),b.translate(0,d/2),b.moveTo(0,d),b.curveTo(0,2*d,c,2*d,c,d),g||(b.stroke(),b.begin()),b.translate(0,d/2),
-b.moveTo(0,d),b.curveTo(0,2*d,c,2*d,c,d),g||(b.stroke(),b.begin()),b.translate(0,-d);g||(b.moveTo(0,d),b.curveTo(0,-d/3,c,-d/3,c,d),b.lineTo(c,e-d),b.curveTo(c,e+d/3,0,e+d/3,0,e-d),b.close())};t.prototype.getLabelMargins=function(b){return new mxRectangle(0,2.5*Math.min(b.height/2,Math.round(b.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",t);mxUtils.extend(d,mxCylinder);d.prototype.size=30;d.prototype.darkOpacity=0;d.prototype.paintVertexShape=function(b,d,f,c,e){var B=
-Math.max(0,Math.min(c,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));b.translate(d,f);b.begin();b.moveTo(0,0);b.lineTo(c-B,0);b.lineTo(c,B);b.lineTo(c,e);b.lineTo(0,e);b.lineTo(0,0);b.close();b.end();b.fillAndStroke();this.outline||(b.setShadow(!1),0!=g&&(b.setFillAlpha(Math.abs(g)),b.setFillColor(0>g?"#FFFFFF":"#000000"),b.begin(),b.moveTo(c-B,0),b.lineTo(c-B,B),b.lineTo(c,
-B),b.close(),b.fill()),b.begin(),b.moveTo(c-B,0),b.lineTo(c-B,B),b.lineTo(c,B),b.end(),b.stroke())};mxCellRenderer.registerShape("note",d);mxUtils.extend(f,d);mxCellRenderer.registerShape("note2",f);f.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,d*this.scale),0,0)}return null};mxUtils.extend(l,mxShape);l.prototype.isoAngle=15;l.prototype.paintVertexShape=function(b,
-d,f,c,e){var B=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,B=Math.min(c*Math.tan(B),.5*e);b.translate(d,f);b.begin();b.moveTo(.5*c,0);b.lineTo(c,B);b.lineTo(c,e-B);b.lineTo(.5*c,e);b.lineTo(0,e-B);b.lineTo(0,B);b.close();b.fillAndStroke();b.setShadow(!1);b.begin();b.moveTo(0,B);b.lineTo(.5*c,2*B);b.lineTo(c,B);b.moveTo(.5*c,2*B);b.lineTo(.5*c,e);b.stroke()};mxCellRenderer.registerShape("isoCube2",l);mxUtils.extend(q,mxShape);q.prototype.size=
-15;q.prototype.paintVertexShape=function(b,d,f,c,e){var B=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.translate(d,f);0==B?(b.rect(0,0,c,e),b.fillAndStroke()):(b.begin(),b.moveTo(0,B),b.arcTo(.5*c,B,0,0,1,.5*c,0),b.arcTo(.5*c,B,0,0,1,c,B),b.lineTo(c,e-B),b.arcTo(.5*c,B,0,0,1,.5*c,e),b.arcTo(.5*c,B,0,0,1,0,e-B),b.close(),b.fillAndStroke(),b.setShadow(!1),b.begin(),b.moveTo(c,B),b.arcTo(.5*c,B,0,0,1,.5*c,2*B),b.arcTo(.5*c,B,0,0,1,0,B),b.stroke())};mxCellRenderer.registerShape("cylinder2",
-q);mxUtils.extend(m,mxCylinder);m.prototype.size=15;m.prototype.paintVertexShape=function(b,d,f,c,e){var B=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"lid",!0);b.translate(d,f);0==B?(b.rect(0,0,c,e),b.fillAndStroke()):(b.begin(),g?(b.moveTo(0,B),b.arcTo(.5*c,B,0,0,1,.5*c,0),b.arcTo(.5*c,B,0,0,1,c,B)):(b.moveTo(0,0),b.arcTo(.5*c,B,0,0,0,.5*c,B),b.arcTo(.5*c,B,0,0,0,c,0)),b.lineTo(c,e-B),b.arcTo(.5*c,B,0,0,1,.5*c,e),b.arcTo(.5*
-c,B,0,0,1,0,e-B),b.close(),b.fillAndStroke(),b.setShadow(!1),g&&(b.begin(),b.moveTo(c,B),b.arcTo(.5*c,B,0,0,1,.5*c,2*B),b.arcTo(.5*c,B,0,0,1,0,B),b.stroke()))};mxCellRenderer.registerShape("cylinder3",m);mxUtils.extend(n,mxActor);n.prototype.redrawPath=function(b,d,f,c,e){b.moveTo(0,0);b.quadTo(c/2,.5*e,c,0);b.quadTo(.5*c,e/2,c,e);b.quadTo(c/2,.5*e,0,e);b.quadTo(.5*c,e/2,0,0);b.end()};mxCellRenderer.registerShape("switch",n);mxUtils.extend(u,mxCylinder);u.prototype.tabWidth=60;u.prototype.tabHeight=
-20;u.prototype.tabPosition="right";u.prototype.arcSize=.1;u.prototype.paintVertexShape=function(b,d,f,c,e){b.translate(d,f);d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var B=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),g=mxUtils.getValue(this.style,"rounded",!1),l=mxUtils.getValue(this.style,"absoluteArcSize",!1),k=parseFloat(mxUtils.getValue(this.style,
-"arcSize",this.arcSize));l||(k*=Math.min(c,e));k=Math.min(k,.5*c,.5*(e-f));d=Math.max(d,k);d=Math.min(c-k,d);g||(k=0);b.begin();"left"==B?(b.moveTo(Math.max(k,0),f),b.lineTo(Math.max(k,0),0),b.lineTo(d,0),b.lineTo(d,f)):(b.moveTo(c-d,f),b.lineTo(c-d,0),b.lineTo(c-Math.max(k,0),0),b.lineTo(c-Math.max(k,0),f));g?(b.moveTo(0,k+f),b.arcTo(k,k,0,0,1,k,f),b.lineTo(c-k,f),b.arcTo(k,k,0,0,1,c,k+f),b.lineTo(c,e-k),b.arcTo(k,k,0,0,1,c-k,e),b.lineTo(k,e),b.arcTo(k,k,0,0,1,0,e-k)):(b.moveTo(0,f),b.lineTo(c,f),
-b.lineTo(c,e),b.lineTo(0,e));b.close();b.fillAndStroke();b.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(b.begin(),b.moveTo(c-30,f+20),b.lineTo(c-20,f+10),b.lineTo(c-10,f+20),b.close(),b.stroke())};mxCellRenderer.registerShape("folder",u);u.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var f=mxUtils.getValue(this.style,
-"tabWidth",15)*this.scale,d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale,c=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),B=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(B*=Math.min(b.width,b.height));B=Math.min(B,.5*b.width,.5*(b.height-d));c||(B=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(B,0,Math.min(b.width,b.width-f),Math.min(b.height,b.height-d)):new mxRectangle(Math.min(b.width,
-b.width-f),0,B,Math.min(b.height,b.height-d))}return new mxRectangle(0,Math.min(b.height,d),0,0)}return null};mxUtils.extend(v,mxCylinder);v.prototype.arcSize=.1;v.prototype.paintVertexShape=function(b,d,f,c,e){b.translate(d,f);var B=mxUtils.getValue(this.style,"rounded",!1),g=mxUtils.getValue(this.style,"absoluteArcSize",!1);d=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));f=mxUtils.getValue(this.style,"umlStateConnection",null);g||(d*=Math.min(c,e));d=Math.min(d,.5*c,.5*e);B||(d=
-0);B=0;null!=f&&(B=10);b.begin();b.moveTo(B,d);b.arcTo(d,d,0,0,1,B+d,0);b.lineTo(c-d,0);b.arcTo(d,d,0,0,1,c,d);b.lineTo(c,e-d);b.arcTo(d,d,0,0,1,c-d,e);b.lineTo(B+d,e);b.arcTo(d,d,0,0,1,B,e-d);b.close();b.fillAndStroke();b.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(b.roundrect(c-40,e-20,10,10,3,3),b.stroke(),b.roundrect(c-20,e-20,10,10,3,3),b.stroke(),b.begin(),b.moveTo(c-30,e-15),b.lineTo(c-20,e-15),b.stroke());"connPointRefEntry"==f?(b.ellipse(0,.5*e-10,
-20,20),b.fillAndStroke()):"connPointRefExit"==f&&(b.ellipse(0,.5*e-10,20,20),b.fillAndStroke(),b.begin(),b.moveTo(5,.5*e-5),b.lineTo(15,.5*e+5),b.moveTo(15,.5*e-5),b.lineTo(5,.5*e+5),b.stroke())};v.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};mxCellRenderer.registerShape("umlState",v);mxUtils.extend(y,mxActor);y.prototype.size=30;y.prototype.isRoundable=
-function(){return!0};y.prototype.redrawPath=function(b,d,f,c,e){d=Math.max(0,Math.min(c,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c,e),new mxPoint(0,e),new mxPoint(0,d)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("card",y);mxUtils.extend(x,mxActor);x.prototype.size=.4;x.prototype.redrawPath=function(b,d,f,
-c,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(0,d/2);b.quadTo(c/4,1.4*d,c/2,d/2);b.quadTo(3*c/4,d*(1-1.4),c,d/2);b.lineTo(c,e-d/2);b.quadTo(3*c/4,e-1.4*d,c/2,e-d/2);b.quadTo(c/4,e-d*(1-1.4),0,e-d/2);b.lineTo(0,d/2);b.close();b.end()};x.prototype.getLabelBounds=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",this.size),f=b.width,c=b.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||
-this.direction==mxConstants.DIRECTION_WEST)return d*=c,new mxRectangle(b.x,b.y+d,f,c-2*d);d*=f;return new mxRectangle(b.x+d,b.y,f-2*d,c)}return b};mxCellRenderer.registerShape("tape",x);mxUtils.extend(F,mxActor);F.prototype.size=.3;F.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*b.height):null};F.prototype.redrawPath=function(b,d,f,c,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"size",this.size))));b.moveTo(0,0);b.lineTo(c,0);b.lineTo(c,e-d/2);b.quadTo(3*c/4,e-1.4*d,c/2,e-d/2);b.quadTo(c/4,e-d*(1-1.4),0,e-d/2);b.lineTo(0,d/2);b.close();b.end()};mxCellRenderer.registerShape("document",F);var ab=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(b,d,f,c){var e=mxUtils.getValue(this.style,"size");return null!=e?c*Math.max(0,Math.min(1,e)):ab.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,
+function za(){mxRhombus.call(this)}function Ba(){mxEllipse.call(this)}function Ea(){mxEllipse.call(this)}function Ja(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function Ka(){mxActor.call(this)}function Ca(){mxActor.call(this)}function wa(){mxActor.call(this)}function Y(b,d,g,c){mxShape.call(this);this.bounds=b;this.fill=d;this.stroke=g;this.strokewidth=null!=c?c:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Fa(){mxConnector.call(this)}
+function Na(b,d,g,c,e,f,l,k,m,q){l+=m;var A=c.clone();c.x-=e*(2*l+m);c.y-=f*(2*l+m);e*=l+m;f*=l+m;return function(){b.ellipse(A.x-e-l,A.y-f-l,2*l,2*l);q?b.fillAndStroke():b.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var b=null;if(null!=this.line)for(var d=0;d<this.line.length;d++){var g=this.line[d];null!=g&&(g=new mxRectangle(g.x,g.y,this.strokewidth,this.strokewidth),null==b?b=g:b.add(g))}this.bounds=null!=b?b:new mxRectangle};b.prototype.paintVertexShape=function(b,
+d,g,c,e){this.paintTableLine(b,this.line,0,0)};b.prototype.paintTableLine=function(b,d,g,c){if(null!=d){var e=null;b.begin();for(var A=0;A<d.length;A++){var f=d[A];null!=f&&(null==e?b.moveTo(f.x+g,f.y+c):null!=e&&b.lineTo(f.x+g,f.y+c));e=f}b.end();b.stroke()}};b.prototype.intersectsRectangle=function(b){var d=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var g=null,c=0;c<this.line.length&&!d;c++){var e=this.line[c];null!=e&&null!=g&&(d=mxUtils.rectangleIntersectsSegment(b,
+g,e));g=e}return d};mxCellRenderer.registerShape("tableLine",b);mxUtils.extend(c,mxSwimlane);c.prototype.getLabelBounds=function(b){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};c.prototype.paintVertexShape=function(b,d,g,c,e){0==this.getTitleSize()?mxRectangleShape.prototype.paintBackground.apply(this,arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),b.translate(-d,-g));this.paintForeground(b,
+d,g,c,e)};c.prototype.paintForeground=function(b,d,g,c,e){if(null!=this.state){var A=this.flipH,f=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH)var l=A,A=f,f=l;b.rotate(-this.getShapeRotation(),A,f,d+c/2,g+e/2);s=this.scale;d=this.bounds.x/s;g=this.bounds.y/s;c=this.bounds.width/s;e=this.bounds.height/s;this.paintTableForeground(b,d,g,c,e)}};c.prototype.paintTableForeground=function(d,g,c,e,f){e=this.state.view.graph.getTableLines(this.state.cell,
+"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(f=0;f<e.length;f++)b.prototype.paintTableLine(d,e[f],g,c)};mxCellRenderer.registerShape("table",c);mxUtils.extend(e,mxCylinder);e.prototype.size=20;e.prototype.darkOpacity=0;e.prototype.darkOpacity2=0;e.prototype.paintVertexShape=function(b,d,g,c,e){var A=Math.max(0,Math.min(c,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),f=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"darkOpacity",this.darkOpacity)))),l=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));b.translate(d,g);b.begin();b.moveTo(0,0);b.lineTo(c-A,0);b.lineTo(c,A);b.lineTo(c,e);b.lineTo(A,e);b.lineTo(0,e-A);b.lineTo(0,0);b.close();b.end();b.fillAndStroke();this.outline||(b.setShadow(!1),0!=f&&(b.setFillAlpha(Math.abs(f)),b.setFillColor(0>f?"#FFFFFF":"#000000"),b.begin(),b.moveTo(0,0),b.lineTo(c-A,0),b.lineTo(c,A),b.lineTo(A,A),b.close(),b.fill()),0!=l&&
+(b.setFillAlpha(Math.abs(l)),b.setFillColor(0>l?"#FFFFFF":"#000000"),b.begin(),b.moveTo(0,0),b.lineTo(A,A),b.lineTo(A,e),b.lineTo(0,e-A),b.close(),b.fill()),b.begin(),b.moveTo(A,e),b.lineTo(A,A),b.lineTo(0,0),b.moveTo(A,A),b.lineTo(c,A),b.end(),b.stroke())};e.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)?(b=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(b,b,0,0)):null};mxCellRenderer.registerShape("cube",e);var Ua=Math.tan(mxUtils.toRadians(30)),
+Ia=(.5-Ua)/2;mxCellRenderer.registerShape("isoRectangle",f);mxUtils.extend(k,mxCylinder);k.prototype.size=6;k.prototype.paintVertexShape=function(b,d,g,c,e){b.setFillColor(this.stroke);var A=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;b.ellipse(d+.5*(c-A),g+.5*(e-A),A,A);b.fill();b.setFillColor(mxConstants.NONE);b.rect(d,g,c,e);b.fill()};mxCellRenderer.registerShape("waypoint",k);mxUtils.extend(f,mxActor);f.prototype.size=20;f.prototype.redrawPath=function(b,
+d,g,c,e){d=Math.min(c,e/Ua);b.translate((c-d)/2,(e-d)/2+d/4);b.moveTo(0,.25*d);b.lineTo(.5*d,d*Ia);b.lineTo(d,.25*d);b.lineTo(.5*d,(.5-Ia)*d);b.lineTo(0,.25*d);b.close();b.end()};mxCellRenderer.registerShape("isoRectangle",f);mxUtils.extend(p,mxCylinder);p.prototype.size=20;p.prototype.redrawPath=function(b,d,g,c,e,f){d=Math.min(c,e/(.5+Ua));f?(b.moveTo(0,.25*d),b.lineTo(.5*d,(.5-Ia)*d),b.lineTo(d,.25*d),b.moveTo(.5*d,(.5-Ia)*d),b.lineTo(.5*d,(1-Ia)*d)):(b.translate((c-d)/2,(e-d)/2),b.moveTo(0,.25*
+d),b.lineTo(.5*d,d*Ia),b.lineTo(d,.25*d),b.lineTo(d,.75*d),b.lineTo(.5*d,(1-Ia)*d),b.lineTo(0,.75*d),b.close());b.end()};mxCellRenderer.registerShape("isoCube",p);mxUtils.extend(t,mxCylinder);t.prototype.redrawPath=function(b,d,g,c,e,f){d=Math.min(e/2,Math.round(e/8)+this.strokewidth-1);if(f&&null!=this.fill||!f&&null==this.fill)b.moveTo(0,d),b.curveTo(0,2*d,c,2*d,c,d),f||(b.stroke(),b.begin()),b.translate(0,d/2),b.moveTo(0,d),b.curveTo(0,2*d,c,2*d,c,d),f||(b.stroke(),b.begin()),b.translate(0,d/2),
+b.moveTo(0,d),b.curveTo(0,2*d,c,2*d,c,d),f||(b.stroke(),b.begin()),b.translate(0,-d);f||(b.moveTo(0,d),b.curveTo(0,-d/3,c,-d/3,c,d),b.lineTo(c,e-d),b.curveTo(c,e+d/3,0,e+d/3,0,e-d),b.close())};t.prototype.getLabelMargins=function(b){return new mxRectangle(0,2.5*Math.min(b.height/2,Math.round(b.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",t);mxUtils.extend(d,mxCylinder);d.prototype.size=30;d.prototype.darkOpacity=0;d.prototype.paintVertexShape=function(b,d,g,c,e){var A=
+Math.max(0,Math.min(c,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),f=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));b.translate(d,g);b.begin();b.moveTo(0,0);b.lineTo(c-A,0);b.lineTo(c,A);b.lineTo(c,e);b.lineTo(0,e);b.lineTo(0,0);b.close();b.end();b.fillAndStroke();this.outline||(b.setShadow(!1),0!=f&&(b.setFillAlpha(Math.abs(f)),b.setFillColor(0>f?"#FFFFFF":"#000000"),b.begin(),b.moveTo(c-A,0),b.lineTo(c-A,A),b.lineTo(c,
+A),b.close(),b.fill()),b.begin(),b.moveTo(c-A,0),b.lineTo(c-A,A),b.lineTo(c,A),b.end(),b.stroke())};mxCellRenderer.registerShape("note",d);mxUtils.extend(g,d);mxCellRenderer.registerShape("note2",g);g.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,d*this.scale),0,0)}return null};mxUtils.extend(l,mxShape);l.prototype.isoAngle=15;l.prototype.paintVertexShape=function(b,
+d,g,c,e){var A=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,A=Math.min(c*Math.tan(A),.5*e);b.translate(d,g);b.begin();b.moveTo(.5*c,0);b.lineTo(c,A);b.lineTo(c,e-A);b.lineTo(.5*c,e);b.lineTo(0,e-A);b.lineTo(0,A);b.close();b.fillAndStroke();b.setShadow(!1);b.begin();b.moveTo(0,A);b.lineTo(.5*c,2*A);b.lineTo(c,A);b.moveTo(.5*c,2*A);b.lineTo(.5*c,e);b.stroke()};mxCellRenderer.registerShape("isoCube2",l);mxUtils.extend(q,mxShape);q.prototype.size=
+15;q.prototype.paintVertexShape=function(b,d,g,c,e){var A=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.translate(d,g);0==A?(b.rect(0,0,c,e),b.fillAndStroke()):(b.begin(),b.moveTo(0,A),b.arcTo(.5*c,A,0,0,1,.5*c,0),b.arcTo(.5*c,A,0,0,1,c,A),b.lineTo(c,e-A),b.arcTo(.5*c,A,0,0,1,.5*c,e),b.arcTo(.5*c,A,0,0,1,0,e-A),b.close(),b.fillAndStroke(),b.setShadow(!1),b.begin(),b.moveTo(c,A),b.arcTo(.5*c,A,0,0,1,.5*c,2*A),b.arcTo(.5*c,A,0,0,1,0,A),b.stroke())};mxCellRenderer.registerShape("cylinder2",
+q);mxUtils.extend(m,mxCylinder);m.prototype.size=15;m.prototype.paintVertexShape=function(b,d,g,c,e){var A=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=mxUtils.getValue(this.style,"lid",!0);b.translate(d,g);0==A?(b.rect(0,0,c,e),b.fillAndStroke()):(b.begin(),f?(b.moveTo(0,A),b.arcTo(.5*c,A,0,0,1,.5*c,0),b.arcTo(.5*c,A,0,0,1,c,A)):(b.moveTo(0,0),b.arcTo(.5*c,A,0,0,0,.5*c,A),b.arcTo(.5*c,A,0,0,0,c,0)),b.lineTo(c,e-A),b.arcTo(.5*c,A,0,0,1,.5*c,e),b.arcTo(.5*
+c,A,0,0,1,0,e-A),b.close(),b.fillAndStroke(),b.setShadow(!1),f&&(b.begin(),b.moveTo(c,A),b.arcTo(.5*c,A,0,0,1,.5*c,2*A),b.arcTo(.5*c,A,0,0,1,0,A),b.stroke()))};mxCellRenderer.registerShape("cylinder3",m);mxUtils.extend(n,mxActor);n.prototype.redrawPath=function(b,d,g,c,e){b.moveTo(0,0);b.quadTo(c/2,.5*e,c,0);b.quadTo(.5*c,e/2,c,e);b.quadTo(c/2,.5*e,0,e);b.quadTo(.5*c,e/2,0,0);b.end()};mxCellRenderer.registerShape("switch",n);mxUtils.extend(u,mxCylinder);u.prototype.tabWidth=60;u.prototype.tabHeight=
+20;u.prototype.tabPosition="right";u.prototype.arcSize=.1;u.prototype.paintVertexShape=function(b,d,g,c,e){b.translate(d,g);d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var A=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),f=mxUtils.getValue(this.style,"rounded",!1),l=mxUtils.getValue(this.style,"absoluteArcSize",!1),k=parseFloat(mxUtils.getValue(this.style,
+"arcSize",this.arcSize));l||(k*=Math.min(c,e));k=Math.min(k,.5*c,.5*(e-g));d=Math.max(d,k);d=Math.min(c-k,d);f||(k=0);b.begin();"left"==A?(b.moveTo(Math.max(k,0),g),b.lineTo(Math.max(k,0),0),b.lineTo(d,0),b.lineTo(d,g)):(b.moveTo(c-d,g),b.lineTo(c-d,0),b.lineTo(c-Math.max(k,0),0),b.lineTo(c-Math.max(k,0),g));f?(b.moveTo(0,k+g),b.arcTo(k,k,0,0,1,k,g),b.lineTo(c-k,g),b.arcTo(k,k,0,0,1,c,k+g),b.lineTo(c,e-k),b.arcTo(k,k,0,0,1,c-k,e),b.lineTo(k,e),b.arcTo(k,k,0,0,1,0,e-k)):(b.moveTo(0,g),b.lineTo(c,g),
+b.lineTo(c,e),b.lineTo(0,e));b.close();b.fillAndStroke();b.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(b.begin(),b.moveTo(c-30,g+20),b.lineTo(c-20,g+10),b.lineTo(c-10,g+20),b.close(),b.stroke())};mxCellRenderer.registerShape("folder",u);u.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var g=mxUtils.getValue(this.style,
+"tabWidth",15)*this.scale,d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale,c=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(A*=Math.min(b.width,b.height));A=Math.min(A,.5*b.width,.5*(b.height-d));c||(A=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(b.width,b.width-g),Math.min(b.height,b.height-d)):new mxRectangle(Math.min(b.width,
+b.width-g),0,A,Math.min(b.height,b.height-d))}return new mxRectangle(0,Math.min(b.height,d),0,0)}return null};mxUtils.extend(v,mxCylinder);v.prototype.arcSize=.1;v.prototype.paintVertexShape=function(b,d,g,c,e){b.translate(d,g);var A=mxUtils.getValue(this.style,"rounded",!1),f=mxUtils.getValue(this.style,"absoluteArcSize",!1);d=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));g=mxUtils.getValue(this.style,"umlStateConnection",null);f||(d*=Math.min(c,e));d=Math.min(d,.5*c,.5*e);A||(d=
+0);A=0;null!=g&&(A=10);b.begin();b.moveTo(A,d);b.arcTo(d,d,0,0,1,A+d,0);b.lineTo(c-d,0);b.arcTo(d,d,0,0,1,c,d);b.lineTo(c,e-d);b.arcTo(d,d,0,0,1,c-d,e);b.lineTo(A+d,e);b.arcTo(d,d,0,0,1,A,e-d);b.close();b.fillAndStroke();b.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(b.roundrect(c-40,e-20,10,10,3,3),b.stroke(),b.roundrect(c-20,e-20,10,10,3,3),b.stroke(),b.begin(),b.moveTo(c-30,e-15),b.lineTo(c-20,e-15),b.stroke());"connPointRefEntry"==g?(b.ellipse(0,.5*e-10,
+20,20),b.fillAndStroke()):"connPointRefExit"==g&&(b.ellipse(0,.5*e-10,20,20),b.fillAndStroke(),b.begin(),b.moveTo(5,.5*e-5),b.lineTo(15,.5*e+5),b.moveTo(15,.5*e-5),b.lineTo(5,.5*e+5),b.stroke())};v.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};mxCellRenderer.registerShape("umlState",v);mxUtils.extend(y,mxActor);y.prototype.size=30;y.prototype.isRoundable=
+function(){return!0};y.prototype.redrawPath=function(b,d,g,c,e){d=Math.max(0,Math.min(c,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c,e),new mxPoint(0,e),new mxPoint(0,d)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("card",y);mxUtils.extend(x,mxActor);x.prototype.size=.4;x.prototype.redrawPath=function(b,d,g,
+c,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(0,d/2);b.quadTo(c/4,1.4*d,c/2,d/2);b.quadTo(3*c/4,d*(1-1.4),c,d/2);b.lineTo(c,e-d/2);b.quadTo(3*c/4,e-1.4*d,c/2,e-d/2);b.quadTo(c/4,e-d*(1-1.4),0,e-d/2);b.lineTo(0,d/2);b.close();b.end()};x.prototype.getLabelBounds=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",this.size),g=b.width,c=b.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||
+this.direction==mxConstants.DIRECTION_WEST)return d*=c,new mxRectangle(b.x,b.y+d,g,c-2*d);d*=g;return new mxRectangle(b.x+d,b.y,g-2*d,c)}return b};mxCellRenderer.registerShape("tape",x);mxUtils.extend(F,mxActor);F.prototype.size=.3;F.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*b.height):null};F.prototype.redrawPath=function(b,d,g,c,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"size",this.size))));b.moveTo(0,0);b.lineTo(c,0);b.lineTo(c,e-d/2);b.quadTo(3*c/4,e-1.4*d,c/2,e-d/2);b.quadTo(c/4,e-d*(1-1.4),0,e-d/2);b.lineTo(0,d/2);b.close();b.end()};mxCellRenderer.registerShape("document",F);var ab=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(b,d,g,c){var e=mxUtils.getValue(this.style,"size");return null!=e?c*Math.max(0,Math.min(1,e)):ab.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var d=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,b.height*d),0,0)}return null};m.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(d/=2);return new mxRectangle(0,Math.min(b.height*this.scale,2*d*this.scale),0,Math.max(0,.3*d*this.scale))}return null};u.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,
-"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var f=mxUtils.getValue(this.style,"tabWidth",15)*this.scale,d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale,c=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),B=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(B*=Math.min(b.width,b.height));B=Math.min(B,.5*b.width,.5*(b.height-d));c||(B=0);return"left"==
-mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(B,0,Math.min(b.width,b.width-f),Math.min(b.height,b.height-d)):new mxRectangle(Math.min(b.width,b.width-f),0,B,Math.min(b.height,b.height-d))}return new mxRectangle(0,Math.min(b.height,d),0,0)}return null};v.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};f.prototype.getLabelMargins=
-function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,d*this.scale),0,Math.max(0,d*this.scale))}return null};mxUtils.extend(H,mxActor);H.prototype.size=.2;H.prototype.fixedSize=20;H.prototype.isRoundable=function(){return!0};H.prototype.redrawPath=function(b,d,f,c,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):
-c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c-d,e)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("parallelogram",H);mxUtils.extend(z,mxActor);z.prototype.size=.2;z.prototype.fixedSize=20;z.prototype.isRoundable=function(){return!0};z.prototype.redrawPath=function(b,d,f,c,e){d="0"!=
-mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,e)],this.isRounded,f,!0)};mxCellRenderer.registerShape("trapezoid",z);mxUtils.extend(D,mxActor);D.prototype.size=
-.5;D.prototype.redrawPath=function(b,d,f,c,e){b.setFillColor(null);d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(c,0),new mxPoint(d,0),new mxPoint(d,e/2),new mxPoint(0,e/2),new mxPoint(d,e/2),new mxPoint(d,e),new mxPoint(c,e)],this.isRounded,f,!1);b.end()};mxCellRenderer.registerShape("curlyBracket",D);mxUtils.extend(L,mxActor);L.prototype.redrawPath=
-function(b,d,f,c,e){b.setStrokeWidth(1);b.setFillColor(this.stroke);d=c/5;b.rect(0,0,d,e);b.fillAndStroke();b.rect(2*d,0,d,e);b.fillAndStroke();b.rect(4*d,0,d,e);b.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",L);E.prototype.moveTo=function(b,d){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d;this.firstX=b;this.firstY=d};E.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,
-arguments));this.originalClose.apply(this.canvas,arguments)};E.prototype.quadTo=function(b,d,f,c){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=c};E.prototype.curveTo=function(b,d,f,c,e,g){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=g};E.prototype.arcTo=function(b,d,f,c,e,g,l){this.originalArcTo.apply(this.canvas,arguments);this.lastX=g;this.lastY=l};E.prototype.lineTo=function(b,d){if(null!=this.lastX&&null!=this.lastY){var f=function(b){return"number"===
-typeof b?b?0>b?-1:1:b===b?0:NaN:NaN},c=Math.abs(b-this.lastX),e=Math.abs(d-this.lastY),B=Math.sqrt(c*c+e*e);if(2>B){this.originalLineTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d;return}var g=Math.round(B/10),l=this.defaultVariation;5>g&&(g=5,l/=3);for(var k=f(b-this.lastX)*c/g,f=f(d-this.lastY)*e/g,c=c/B,e=e/B,B=0;B<g;B++){var m=(Math.random()-.5)*l;this.originalLineTo.call(this.canvas,k*B+this.lastX-m*e,f*B+this.lastY-m*c)}this.originalLineTo.call(this.canvas,b,d)}else this.originalLineTo.apply(this.canvas,
+"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var g=mxUtils.getValue(this.style,"tabWidth",15)*this.scale,d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale,c=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(A*=Math.min(b.width,b.height));A=Math.min(A,.5*b.width,.5*(b.height-d));c||(A=0);return"left"==
+mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(b.width,b.width-g),Math.min(b.height,b.height-d)):new mxRectangle(Math.min(b.width,b.width-g),0,A,Math.min(b.height,b.height-d))}return new mxRectangle(0,Math.min(b.height,d),0,0)}return null};v.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};g.prototype.getLabelMargins=
+function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,d*this.scale),0,Math.max(0,d*this.scale))}return null};mxUtils.extend(H,mxActor);H.prototype.size=.2;H.prototype.fixedSize=20;H.prototype.isRoundable=function(){return!0};H.prototype.redrawPath=function(b,d,g,c,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):
+c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c-d,e)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("parallelogram",H);mxUtils.extend(z,mxActor);z.prototype.size=.2;z.prototype.fixedSize=20;z.prototype.isRoundable=function(){return!0};z.prototype.redrawPath=function(b,d,g,c,e){d="0"!=
+mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,e)],this.isRounded,g,!0)};mxCellRenderer.registerShape("trapezoid",z);mxUtils.extend(D,mxActor);D.prototype.size=
+.5;D.prototype.redrawPath=function(b,d,g,c,e){b.setFillColor(null);d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(c,0),new mxPoint(d,0),new mxPoint(d,e/2),new mxPoint(0,e/2),new mxPoint(d,e/2),new mxPoint(d,e),new mxPoint(c,e)],this.isRounded,g,!1);b.end()};mxCellRenderer.registerShape("curlyBracket",D);mxUtils.extend(N,mxActor);N.prototype.redrawPath=
+function(b,d,g,c,e){b.setStrokeWidth(1);b.setFillColor(this.stroke);d=c/5;b.rect(0,0,d,e);b.fillAndStroke();b.rect(2*d,0,d,e);b.fillAndStroke();b.rect(4*d,0,d,e);b.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",N);E.prototype.moveTo=function(b,d){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d;this.firstX=b;this.firstY=d};E.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,
+arguments));this.originalClose.apply(this.canvas,arguments)};E.prototype.quadTo=function(b,d,g,c){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=g;this.lastY=c};E.prototype.curveTo=function(b,d,g,c,e,f){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=f};E.prototype.arcTo=function(b,d,g,c,e,f,l){this.originalArcTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=l};E.prototype.lineTo=function(b,d){if(null!=this.lastX&&null!=this.lastY){var g=function(b){return"number"===
+typeof b?b?0>b?-1:1:b===b?0:NaN:NaN},c=Math.abs(b-this.lastX),e=Math.abs(d-this.lastY),f=Math.sqrt(c*c+e*e);if(2>f){this.originalLineTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d;return}var A=Math.round(f/10),l=this.defaultVariation;5>A&&(A=5,l/=3);for(var k=g(b-this.lastX)*c/A,g=g(d-this.lastY)*e/A,c=c/f,e=e/f,f=0;f<A;f++){var m=(Math.random()-.5)*l;this.originalLineTo.call(this.canvas,k*f+this.lastX-m*e,g*f+this.lastY-m*c)}this.originalLineTo.call(this.canvas,b,d)}else this.originalLineTo.apply(this.canvas,
arguments);this.lastX=b;this.lastY=d};E.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var bb=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(b){bb.apply(this,arguments);null==b.handJiggle&&(b.handJiggle=this.createHandJiggle(b))};
var cb=mxShape.prototype.afterPaint;mxShape.prototype.afterPaint=function(b){cb.apply(this,arguments);null!=b.handJiggle&&(b.handJiggle.destroy(),delete b.handJiggle)};mxShape.prototype.createComicCanvas=function(b){return new E(b,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(b)};mxRhombus.prototype.defaultJiggle=2;var db=mxRectangleShape.prototype.isHtmlAllowed;
-mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&db.apply(this,arguments)};var gb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(b,d,f,c,e){if(null==b.handJiggle||b.handJiggle.constructor!=E)gb.apply(this,arguments);else{var g=!0;null!=this.style&&(g="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
-"1"));if(g||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)g||null!=this.fill&&this.fill!=mxConstants.NONE||(b.pointerEvents=!1),b.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?g=Math.min(c/2,Math.min(e/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.min(c*
-g,e*g)),b.moveTo(d+g,f),b.lineTo(d+c-g,f),b.quadTo(d+c,f,d+c,f+g),b.lineTo(d+c,f+e-g),b.quadTo(d+c,f+e,d+c-g,f+e),b.lineTo(d+g,f+e),b.quadTo(d,f+e,d,f+e-g),b.lineTo(d,f+g),b.quadTo(d,f,d+g,f)):(b.moveTo(d,f),b.lineTo(d+c,f),b.lineTo(d+c,f+e),b.lineTo(d,f+e),b.lineTo(d,f)),b.close(),b.end(),b.fillAndStroke()}};mxUtils.extend(J,mxRectangleShape);J.prototype.size=.1;J.prototype.fixedSize=!1;J.prototype.isHtmlAllowed=function(){return!1};J.prototype.getLabelBounds=function(b){if(mxUtils.getValue(this.state.style,
-mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var d=b.width,f=b.height;b=new mxRectangle(b.x,b.y,d,f);var c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,c=Math.max(c,Math.min(d*e,f*e));b.x+=Math.round(c);b.width-=Math.round(2*c)}return b};
-J.prototype.paintForeground=function(b,d,f,c,e){var g=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),B=parseFloat(mxUtils.getValue(this.style,"size",this.size)),B=g?Math.max(0,Math.min(c,B)):c*Math.max(0,Math.min(1,B));this.isRounded&&(g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,B=Math.max(B,Math.min(c*g,e*g)));B=Math.round(B);b.begin();b.moveTo(d+B,f);b.lineTo(d+B,f+e);b.moveTo(d+c-B,f);b.lineTo(d+c-B,f+e);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
-arguments)};mxCellRenderer.registerShape("process",J);mxCellRenderer.registerShape("process2",J);mxUtils.extend(C,mxRectangleShape);C.prototype.paintBackground=function(b,d,f,c,e){b.setFillColor(mxConstants.NONE);b.rect(d,f,c,e);b.fill()};C.prototype.paintForeground=function(b,d,f,c,e){};mxCellRenderer.registerShape("transparent",C);mxUtils.extend(K,mxHexagon);K.prototype.size=30;K.prototype.position=.5;K.prototype.position2=.5;K.prototype.base=20;K.prototype.getLabelMargins=function(){return new mxRectangle(0,
-0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};K.prototype.isRoundable=function(){return!0};K.prototype.redrawPath=function(b,d,f,c,e){d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),B=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
-this.position2)))),l=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e-f),new mxPoint(Math.min(c,g+l),e-f),new mxPoint(B,e),new mxPoint(Math.max(0,g),e-f),new mxPoint(0,e-f)],this.isRounded,d,!0,[4])};mxCellRenderer.registerShape("callout",K);mxUtils.extend(M,mxActor);M.prototype.size=.2;M.prototype.fixedSize=20;M.prototype.isRoundable=function(){return!0};M.prototype.redrawPath=function(b,d,f,c,e){d=
-"0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c-d,0),new mxPoint(c,e/2),new mxPoint(c-d,e),new mxPoint(0,e),new mxPoint(d,e/2)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("step",M);
-mxUtils.extend(aa,mxHexagon);aa.prototype.size=.25;aa.prototype.fixedSize=20;aa.prototype.isRoundable=function(){return!0};aa.prototype.redrawPath=function(b,d,f,c,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,
-0),new mxPoint(c-d,0),new mxPoint(c,.5*e),new mxPoint(c-d,e),new mxPoint(d,e),new mxPoint(0,.5*e)],this.isRounded,f,!0)};mxCellRenderer.registerShape("hexagon",aa);mxUtils.extend(N,mxRectangleShape);N.prototype.isHtmlAllowed=function(){return!1};N.prototype.paintForeground=function(b,d,f,c,e){var g=Math.min(c/5,e/5)+1;b.begin();b.moveTo(d+c/2,f+g);b.lineTo(d+c/2,f+e-g);b.moveTo(d+g,f+e/2);b.lineTo(d+c-g,f+e/2);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
-N);var Za=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};mxRhombus.prototype.paintVertexShape=function(b,d,f,c,e){Za.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var g=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
-0);d+=g;f+=g;c-=2*g;e-=2*g;0<c&&0<e&&(b.setShadow(!1),Za.apply(this,[b,d,f,c,e]))}};mxUtils.extend(O,mxRectangleShape);O.prototype.isHtmlAllowed=function(){return!1};O.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};O.prototype.paintForeground=function(b,d,f,c,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var g=
-Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=g;f+=g;c-=2*g;e-=2*g;0<c&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}b.setDashed(!1);var g=0,B;do{B=mxCellRenderer.defaultShapes[this.style["symbol"+g]];if(null!=B){var l=this.style["symbol"+g+"Align"],k=this.style["symbol"+g+"VerticalAlign"],m=this.style["symbol"+g+"Width"],q=this.style["symbol"+g+"Height"],n=this.style["symbol"+g+"Spacing"]||0,G=this.style["symbol"+g+"VSpacing"]||n,va=
-this.style["symbol"+g+"ArcSpacing"];null!=va&&(va*=this.getArcSize(c+this.strokewidth,e+this.strokewidth),n+=va,G+=va);var va=d,Da=f,va=l==mxConstants.ALIGN_CENTER?va+(c-m)/2:l==mxConstants.ALIGN_RIGHT?va+(c-m-n):va+n,Da=k==mxConstants.ALIGN_MIDDLE?Da+(e-q)/2:k==mxConstants.ALIGN_BOTTOM?Da+(e-q-G):Da+G;b.save();l=new B;l.style=this.style;B.prototype.paintVertexShape.call(l,b,va,Da,m,q);b.restore()}g++}while(null!=B)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
-O);mxUtils.extend(U,mxCylinder);U.prototype.redrawPath=function(b,d,f,c,e,g){g?(b.moveTo(0,0),b.lineTo(c/2,e/2),b.lineTo(c,0),b.end()):(b.moveTo(0,0),b.lineTo(c,0),b.lineTo(c,e),b.lineTo(0,e),b.close())};mxCellRenderer.registerShape("message",U);mxUtils.extend(G,mxShape);G.prototype.paintBackground=function(b,d,f,c,e){b.translate(d,f);b.ellipse(c/4,0,c/2,e/4);b.fillAndStroke();b.begin();b.moveTo(c/2,e/4);b.lineTo(c/2,2*e/3);b.moveTo(c/2,e/3);b.lineTo(0,e/3);b.moveTo(c/2,e/3);b.lineTo(c,e/3);b.moveTo(c/
-2,2*e/3);b.lineTo(0,e);b.moveTo(c/2,2*e/3);b.lineTo(c,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlActor",G);mxUtils.extend(I,mxShape);I.prototype.getLabelMargins=function(b){return new mxRectangle(b.width/6,0,0,0)};I.prototype.paintBackground=function(b,d,f,c,e){b.translate(d,f);b.begin();b.moveTo(0,e/4);b.lineTo(0,3*e/4);b.end();b.stroke();b.begin();b.moveTo(0,e/2);b.lineTo(c/6,e/2);b.end();b.stroke();b.ellipse(c/6,0,5*c/6,e);b.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
-I);mxUtils.extend(A,mxEllipse);A.prototype.paintVertexShape=function(b,d,f,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+c/8,f+e);b.lineTo(d+7*c/8,f+e);b.end();b.stroke()};mxCellRenderer.registerShape("umlEntity",A);mxUtils.extend(Y,mxShape);Y.prototype.paintVertexShape=function(b,d,f,c,e){b.translate(d,f);b.begin();b.moveTo(c,0);b.lineTo(0,e);b.moveTo(0,0);b.lineTo(c,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlDestroy",Y);mxUtils.extend(S,mxShape);
-S.prototype.getLabelBounds=function(b){return new mxRectangle(b.x,b.y+b.height/8,b.width,7*b.height/8)};S.prototype.paintBackground=function(b,d,f,c,e){b.translate(d,f);b.begin();b.moveTo(3*c/8,e/8*1.1);b.lineTo(5*c/8,0);b.end();b.stroke();b.ellipse(0,e/8,c,7*e/8);b.fillAndStroke()};S.prototype.paintForeground=function(b,d,f,c,e){b.begin();b.moveTo(3*c/8,e/8*1.1);b.lineTo(5*c/8,e/4);b.end();b.stroke()};mxCellRenderer.registerShape("umlControl",S);mxUtils.extend(Q,mxRectangleShape);Q.prototype.size=
-40;Q.prototype.isHtmlAllowed=function(){return!1};Q.prototype.getLabelBounds=function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(b.x,b.y,b.width,d)};Q.prototype.paintBackground=function(b,d,f,c,e){var g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"participant");null==B||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,b,d,
-f,c,g):(B=this.state.view.graph.cellRenderer.getShape(B),null!=B&&B!=Q&&(B=new B,B.apply(this.state),b.save(),B.paintVertexShape(b,d,f,c,g),b.restore()));g<e&&(b.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),b.begin(),b.moveTo(d+c/2,f+g),b.lineTo(d+c/2,f+e),b.end(),b.stroke())};Q.prototype.paintForeground=function(b,d,f,c,e){var g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,b,d,f,c,Math.min(e,
-g))};mxCellRenderer.registerShape("umlLifeline",Q);mxUtils.extend(V,mxShape);V.prototype.width=60;V.prototype.height=30;V.prototype.corner=10;V.prototype.getLabelMargins=function(b){return new mxRectangle(0,0,b.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),b.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};V.prototype.paintBackground=function(b,d,f,c,e){var g=this.corner,l=Math.min(c,Math.max(g,parseFloat(mxUtils.getValue(this.style,
-"width",this.width)))),B=Math.min(e,Math.max(1.5*g,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(b.setFillColor(k),b.rect(d,f,c,e),b.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(b,d,f,c,e),b.setGradient(this.fill,this.gradient,d,f,c,e,this.gradientDirection)):b.setFillColor(this.fill);b.begin();
-b.moveTo(d,f);b.lineTo(d+l,f);b.lineTo(d+l,f+Math.max(0,B-1.5*g));b.lineTo(d+Math.max(0,l-g),f+B);b.lineTo(d,f+B);b.close();b.fillAndStroke();b.begin();b.moveTo(d+l,f);b.lineTo(d+c,f);b.lineTo(d+c,f+e);b.lineTo(d,f+e);b.lineTo(d,f+B);b.stroke()};mxCellRenderer.registerShape("umlFrame",V);mxPerimeter.CenterPerimeter=function(b,d,f,c){return new mxPoint(b.getCenterX(),b.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(b,d,
-f,c){c=Q.prototype.size;null!=d&&(c=mxUtils.getValue(d.style,"size",c)*d.view.scale);d=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;f.x<b.getCenterX()&&(d=-1*(d+1));return new mxPoint(b.getCenterX()+d,Math.min(b.y+b.height,Math.max(b.y+c,f.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(b,d,f,c){c=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
-mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(b,d,f,c){c=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;null!=d.style.backboneSize&&(c+=parseFloat(d.style.backboneSize)*d.view.scale/2-1);if("south"==d.style[mxConstants.STYLE_DIRECTION]||"north"==d.style[mxConstants.STYLE_DIRECTION])return f.x<b.getCenterX()&&(c=-1*(c+1)),new mxPoint(b.getCenterX()+c,Math.min(b.y+b.height,Math.max(b.y,f.y)));f.y<b.getCenterY()&&(c=-1*(c+1));return new mxPoint(Math.min(b.x+
-b.width,Math.max(b.x,f.x)),b.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(b,d,f,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(b,new mxRectangle(0,0,0,Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(d.style,"size",K.prototype.size))*d.view.scale))),d.style),d,f,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(b,
-d,f,c){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),g=e?H.prototype.fixedSize:H.prototype.size;null!=d&&(g=mxUtils.getValue(d.style,"size",g));e&&(g*=d.view.scale);var l=b.x,B=b.y,k=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,g)):m*Math.max(0,Math.min(1,g)),B=[new mxPoint(l,B),new mxPoint(l+k,B+e),new mxPoint(l+
-k,B+m),new mxPoint(l,B+m-e),new mxPoint(l,B)]):(e=e?Math.max(0,Math.min(.5*k,g)):k*Math.max(0,Math.min(1,g)),B=[new mxPoint(l+e,B),new mxPoint(l+k,B),new mxPoint(l+k-e,B+m),new mxPoint(l,B+m),new mxPoint(l+e,B)]);m=b.getCenterX();b=b.getCenterY();b=new mxPoint(m,b);c&&(f.x<l||f.x>l+k?b.y=f.y:b.x=f.x);return mxUtils.getPerimeterPoint(B,b,f)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(b,d,f,c){var e="0"!=mxUtils.getValue(d.style,
-"fixedSize","0"),g=e?z.prototype.fixedSize:z.prototype.size;null!=d&&(g=mxUtils.getValue(d.style,"size",g));e&&(g*=d.view.scale);var l=b.x,B=b.y,k=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(.5*k,g)):k*Math.max(0,Math.min(1,g)),B=[new mxPoint(l+e,B),new mxPoint(l+k-e,B),new mxPoint(l+k,B+m),new mxPoint(l,B+m),new mxPoint(l+e,B)]):d==mxConstants.DIRECTION_WEST?
-(e=e?Math.max(0,Math.min(k,g)):k*Math.max(0,Math.min(1,g)),B=[new mxPoint(l,B),new mxPoint(l+k,B),new mxPoint(l+k-e,B+m),new mxPoint(l+e,B+m),new mxPoint(l,B)]):d==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(m,g)):m*Math.max(0,Math.min(1,g)),B=[new mxPoint(l,B+e),new mxPoint(l+k,B),new mxPoint(l+k,B+m),new mxPoint(l,B+m-e),new mxPoint(l,B+e)]):(e=e?Math.max(0,Math.min(m,g)):m*Math.max(0,Math.min(1,g)),B=[new mxPoint(l,B),new mxPoint(l+k,B+e),new mxPoint(l+k,B+m-e),new mxPoint(l,B+m),new mxPoint(l,
-B)]);m=b.getCenterX();b=b.getCenterY();b=new mxPoint(m,b);c&&(f.x<l||f.x>l+k?b.y=f.y:b.x=f.x);return mxUtils.getPerimeterPoint(B,b,f)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(b,d,f,c){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),g=e?M.prototype.fixedSize:M.prototype.size;null!=d&&(g=mxUtils.getValue(d.style,"size",g));e&&(g*=d.view.scale);var l=b.x,B=b.y,k=b.width,m=b.height,q=b.getCenterX();b=b.getCenterY();d=null!=
-d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(k,g)):k*Math.max(0,Math.min(1,g)),B=[new mxPoint(l,B),new mxPoint(l+k-e,B),new mxPoint(l+k,b),new mxPoint(l+k-e,B+m),new mxPoint(l,B+m),new mxPoint(l+e,b),new mxPoint(l,B)]):d==mxConstants.DIRECTION_WEST?(e=e?Math.max(0,Math.min(k,g)):k*Math.max(0,Math.min(1,g)),B=[new mxPoint(l+e,B),new mxPoint(l+k,B),new mxPoint(l+k-e,b),new mxPoint(l+
-k,B+m),new mxPoint(l+e,B+m),new mxPoint(l,b),new mxPoint(l+e,B)]):d==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(m,g)):m*Math.max(0,Math.min(1,g)),B=[new mxPoint(l,B+e),new mxPoint(q,B),new mxPoint(l+k,B+e),new mxPoint(l+k,B+m),new mxPoint(q,B+m-e),new mxPoint(l,B+m),new mxPoint(l,B+e)]):(e=e?Math.max(0,Math.min(m,g)):m*Math.max(0,Math.min(1,g)),B=[new mxPoint(l,B),new mxPoint(q,B+e),new mxPoint(l+k,B),new mxPoint(l+k,B+m-e),new mxPoint(q,B+m),new mxPoint(l,B+m-e),new mxPoint(l,B)]);q=new mxPoint(q,
-b);c&&(f.x<l||f.x>l+k?q.y=f.y:q.x=f.x);return mxUtils.getPerimeterPoint(B,q,f)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(b,d,f,c){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),g=e?aa.prototype.fixedSize:aa.prototype.size;null!=d&&(g=mxUtils.getValue(d.style,"size",g));e&&(g*=d.view.scale);var l=b.x,B=b.y,k=b.width,m=b.height,q=b.getCenterX();b=b.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
-mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,g)):m*Math.max(0,Math.min(1,g)),B=[new mxPoint(q,B),new mxPoint(l+k,B+e),new mxPoint(l+k,B+m-e),new mxPoint(q,B+m),new mxPoint(l,B+m-e),new mxPoint(l,B+e),new mxPoint(q,B)]):(e=e?Math.max(0,Math.min(k,g)):k*Math.max(0,Math.min(1,g)),B=[new mxPoint(l+e,B),new mxPoint(l+k-e,B),new mxPoint(l+k,b),new mxPoint(l+k-e,B+m),new mxPoint(l+e,B+m),new mxPoint(l,b),new mxPoint(l+e,B)]);q=new mxPoint(q,
-b);c&&(f.x<l||f.x>l+k?q.y=f.y:q.x=f.x);return mxUtils.getPerimeterPoint(B,q,f)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(oa,mxShape);oa.prototype.size=10;oa.prototype.paintBackground=function(b,d,f,c,e){var g=parseFloat(mxUtils.getValue(this.style,"size",this.size));b.translate(d,f);b.ellipse((c-g)/2,0,g,g);b.fillAndStroke();b.begin();b.moveTo(c/2,g);b.lineTo(c/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("lollipop",oa);mxUtils.extend(fa,
-mxShape);fa.prototype.size=10;fa.prototype.inset=2;fa.prototype.paintBackground=function(b,d,f,c,e){var g=parseFloat(mxUtils.getValue(this.style,"size",this.size)),l=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,f);b.begin();b.moveTo(c/2,g+l);b.lineTo(c/2,e);b.end();b.stroke();b.begin();b.moveTo((c-g)/2-l,g/2);b.quadTo((c-g)/2-l,g+l,c/2,g+l);b.quadTo((c+g)/2+l,g+l,(c+g)/2+l,g/2);b.end();b.stroke()};mxCellRenderer.registerShape("requires",fa);mxUtils.extend(ka,
-mxShape);ka.prototype.paintBackground=function(b,d,f,c,e){b.translate(d,f);b.begin();b.moveTo(0,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,0,e);b.end();b.stroke()};mxCellRenderer.registerShape("requiredInterface",ka);mxUtils.extend(ra,mxShape);ra.prototype.inset=2;ra.prototype.paintBackground=function(b,d,f,c,e){var g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,f);b.ellipse(0,g,c-2*g,e-2*g);b.fillAndStroke();b.begin();b.moveTo(c/2,0);b.quadTo(c,0,c,e/2);b.quadTo(c,
-e,c/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ra);mxUtils.extend(la,mxCylinder);la.prototype.jettyWidth=20;la.prototype.jettyHeight=10;la.prototype.redrawPath=function(b,d,f,c,e,g){var l=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));f=l/2;var l=f+l/2,B=Math.min(d,e-d),k=Math.min(B+2*d,e-d);g?(b.moveTo(f,B),b.lineTo(l,B),b.lineTo(l,B+d),b.lineTo(f,B+d),b.moveTo(f,
-k),b.lineTo(l,k),b.lineTo(l,k+d),b.lineTo(f,k+d)):(b.moveTo(f,0),b.lineTo(c,0),b.lineTo(c,e),b.lineTo(f,e),b.lineTo(f,k+d),b.lineTo(0,k+d),b.lineTo(0,k),b.lineTo(f,k),b.lineTo(f,B+d),b.lineTo(0,B+d),b.lineTo(0,B),b.lineTo(f,B),b.close());b.end()};mxCellRenderer.registerShape("module",la);mxUtils.extend(ja,mxCylinder);ja.prototype.jettyWidth=32;ja.prototype.jettyHeight=12;ja.prototype.redrawPath=function(b,d,f,c,e,g){var l=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,
-"jettyHeight",this.jettyHeight));f=l/2;var l=f+l/2,B=.3*e-d/2,k=.7*e-d/2;g?(b.moveTo(f,B),b.lineTo(l,B),b.lineTo(l,B+d),b.lineTo(f,B+d),b.moveTo(f,k),b.lineTo(l,k),b.lineTo(l,k+d),b.lineTo(f,k+d)):(b.moveTo(f,0),b.lineTo(c,0),b.lineTo(c,e),b.lineTo(f,e),b.lineTo(f,k+d),b.lineTo(0,k+d),b.lineTo(0,k),b.lineTo(f,k),b.lineTo(f,B+d),b.lineTo(0,B+d),b.lineTo(0,B),b.lineTo(f,B),b.close());b.end()};mxCellRenderer.registerShape("component",ja);mxUtils.extend(ba,mxRectangleShape);ba.prototype.paintForeground=
-function(b,d,f,c,e){var g=c/2,l=e/2,B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b.begin();this.addPoints(b,[new mxPoint(d+g,f),new mxPoint(d+c,f+l),new mxPoint(d+g,f+e),new mxPoint(d,f+l)],this.isRounded,B,!0);b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",ba);mxUtils.extend(ca,mxDoubleEllipse);ca.prototype.outerStroke=!0;ca.prototype.paintVertexShape=function(b,d,f,c,e){var g=Math.min(4,
-Math.min(c/5,e/5));0<c&&0<e&&(b.ellipse(d+g,f+g,c-2*g,e-2*g),b.fillAndStroke());b.setShadow(!1);this.outerStroke&&(b.ellipse(d,f,c,e),b.stroke())};mxCellRenderer.registerShape("endState",ca);mxUtils.extend(R,ca);R.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",R);mxUtils.extend(sa,mxArrowConnector);sa.prototype.defaultWidth=4;sa.prototype.isOpenEnded=function(){return!0};sa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
+mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&db.apply(this,arguments)};var gb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(b,d,g,c,e){if(null==b.handJiggle||b.handJiggle.constructor!=E)gb.apply(this,arguments);else{var f=!0;null!=this.style&&(f="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
+"1"));if(f||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)f||null!=this.fill&&this.fill!=mxConstants.NONE||(b.pointerEvents=!1),b.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?f=Math.min(c/2,Math.min(e/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.min(c*
+f,e*f)),b.moveTo(d+f,g),b.lineTo(d+c-f,g),b.quadTo(d+c,g,d+c,g+f),b.lineTo(d+c,g+e-f),b.quadTo(d+c,g+e,d+c-f,g+e),b.lineTo(d+f,g+e),b.quadTo(d,g+e,d,g+e-f),b.lineTo(d,g+f),b.quadTo(d,g,d+f,g)):(b.moveTo(d,g),b.lineTo(d+c,g),b.lineTo(d+c,g+e),b.lineTo(d,g+e),b.lineTo(d,g)),b.close(),b.end(),b.fillAndStroke()}};mxUtils.extend(J,mxRectangleShape);J.prototype.size=.1;J.prototype.fixedSize=!1;J.prototype.isHtmlAllowed=function(){return!1};J.prototype.getLabelBounds=function(b){if(mxUtils.getValue(this.state.style,
+mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var d=b.width,g=b.height;b=new mxRectangle(b.x,b.y,d,g);var c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,c=Math.max(c,Math.min(d*e,g*e));b.x+=Math.round(c);b.width-=Math.round(2*c)}return b};
+J.prototype.paintForeground=function(b,d,g,c,e){var f=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),A=parseFloat(mxUtils.getValue(this.style,"size",this.size)),A=f?Math.max(0,Math.min(c,A)):c*Math.max(0,Math.min(1,A));this.isRounded&&(f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,A=Math.max(A,Math.min(c*f,e*f)));A=Math.round(A);b.begin();b.moveTo(d+A,g);b.lineTo(d+A,g+e);b.moveTo(d+c-A,g);b.lineTo(d+c-A,g+e);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
+arguments)};mxCellRenderer.registerShape("process",J);mxCellRenderer.registerShape("process2",J);mxUtils.extend(C,mxRectangleShape);C.prototype.paintBackground=function(b,d,g,c,e){b.setFillColor(mxConstants.NONE);b.rect(d,g,c,e);b.fill()};C.prototype.paintForeground=function(b,d,g,c,e){};mxCellRenderer.registerShape("transparent",C);mxUtils.extend(K,mxHexagon);K.prototype.size=30;K.prototype.position=.5;K.prototype.position2=.5;K.prototype.base=20;K.prototype.getLabelMargins=function(){return new mxRectangle(0,
+0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};K.prototype.isRoundable=function(){return!0};K.prototype.redrawPath=function(b,d,g,c,e){d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),A=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
+this.position2)))),l=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e-g),new mxPoint(Math.min(c,f+l),e-g),new mxPoint(A,e),new mxPoint(Math.max(0,f),e-g),new mxPoint(0,e-g)],this.isRounded,d,!0,[4])};mxCellRenderer.registerShape("callout",K);mxUtils.extend(M,mxActor);M.prototype.size=.2;M.prototype.fixedSize=20;M.prototype.isRoundable=function(){return!0};M.prototype.redrawPath=function(b,d,g,c,e){d=
+"0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c-d,0),new mxPoint(c,e/2),new mxPoint(c-d,e),new mxPoint(0,e),new mxPoint(d,e/2)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("step",M);
+mxUtils.extend(Z,mxHexagon);Z.prototype.size=.25;Z.prototype.fixedSize=20;Z.prototype.isRoundable=function(){return!0};Z.prototype.redrawPath=function(b,d,g,c,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,
+0),new mxPoint(c-d,0),new mxPoint(c,.5*e),new mxPoint(c-d,e),new mxPoint(d,e),new mxPoint(0,.5*e)],this.isRounded,g,!0)};mxCellRenderer.registerShape("hexagon",Z);mxUtils.extend(L,mxRectangleShape);L.prototype.isHtmlAllowed=function(){return!1};L.prototype.paintForeground=function(b,d,g,c,e){var f=Math.min(c/5,e/5)+1;b.begin();b.moveTo(d+c/2,g+f);b.lineTo(d+c/2,g+e-f);b.moveTo(d+f,g+e/2);b.lineTo(d+c-f,g+e/2);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
+L);var Za=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};mxRhombus.prototype.paintVertexShape=function(b,d,g,c,e){Za.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
+0);d+=f;g+=f;c-=2*f;e-=2*f;0<c&&0<e&&(b.setShadow(!1),Za.apply(this,[b,d,g,c,e]))}};mxUtils.extend(O,mxRectangleShape);O.prototype.isHtmlAllowed=function(){return!1};O.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};O.prototype.paintForeground=function(b,d,g,c,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=
+Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=f;g+=f;c-=2*f;e-=2*f;0<c&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}b.setDashed(!1);var f=0,A;do{A=mxCellRenderer.defaultShapes[this.style["symbol"+f]];if(null!=A){var l=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],m=this.style["symbol"+f+"Width"],q=this.style["symbol"+f+"Height"],n=this.style["symbol"+f+"Spacing"]||0,G=this.style["symbol"+f+"VSpacing"]||n,va=
+this.style["symbol"+f+"ArcSpacing"];null!=va&&(va*=this.getArcSize(c+this.strokewidth,e+this.strokewidth),n+=va,G+=va);var va=d,Da=g,va=l==mxConstants.ALIGN_CENTER?va+(c-m)/2:l==mxConstants.ALIGN_RIGHT?va+(c-m-n):va+n,Da=k==mxConstants.ALIGN_MIDDLE?Da+(e-q)/2:k==mxConstants.ALIGN_BOTTOM?Da+(e-q-G):Da+G;b.save();l=new A;l.style=this.style;A.prototype.paintVertexShape.call(l,b,va,Da,m,q);b.restore()}f++}while(null!=A)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
+O);mxUtils.extend(U,mxCylinder);U.prototype.redrawPath=function(b,d,g,c,e,f){f?(b.moveTo(0,0),b.lineTo(c/2,e/2),b.lineTo(c,0),b.end()):(b.moveTo(0,0),b.lineTo(c,0),b.lineTo(c,e),b.lineTo(0,e),b.close())};mxCellRenderer.registerShape("message",U);mxUtils.extend(G,mxShape);G.prototype.paintBackground=function(b,d,g,c,e){b.translate(d,g);b.ellipse(c/4,0,c/2,e/4);b.fillAndStroke();b.begin();b.moveTo(c/2,e/4);b.lineTo(c/2,2*e/3);b.moveTo(c/2,e/3);b.lineTo(0,e/3);b.moveTo(c/2,e/3);b.lineTo(c,e/3);b.moveTo(c/
+2,2*e/3);b.lineTo(0,e);b.moveTo(c/2,2*e/3);b.lineTo(c,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlActor",G);mxUtils.extend(I,mxShape);I.prototype.getLabelMargins=function(b){return new mxRectangle(b.width/6,0,0,0)};I.prototype.paintBackground=function(b,d,g,c,e){b.translate(d,g);b.begin();b.moveTo(0,e/4);b.lineTo(0,3*e/4);b.end();b.stroke();b.begin();b.moveTo(0,e/2);b.lineTo(c/6,e/2);b.end();b.stroke();b.ellipse(c/6,0,5*c/6,e);b.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
+I);mxUtils.extend(B,mxEllipse);B.prototype.paintVertexShape=function(b,d,g,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+c/8,g+e);b.lineTo(d+7*c/8,g+e);b.end();b.stroke()};mxCellRenderer.registerShape("umlEntity",B);mxUtils.extend(ca,mxShape);ca.prototype.paintVertexShape=function(b,d,g,c,e){b.translate(d,g);b.begin();b.moveTo(c,0);b.lineTo(0,e);b.moveTo(0,0);b.lineTo(c,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlDestroy",ca);mxUtils.extend(S,mxShape);
+S.prototype.getLabelBounds=function(b){return new mxRectangle(b.x,b.y+b.height/8,b.width,7*b.height/8)};S.prototype.paintBackground=function(b,d,g,c,e){b.translate(d,g);b.begin();b.moveTo(3*c/8,e/8*1.1);b.lineTo(5*c/8,0);b.end();b.stroke();b.ellipse(0,e/8,c,7*e/8);b.fillAndStroke()};S.prototype.paintForeground=function(b,d,g,c,e){b.begin();b.moveTo(3*c/8,e/8*1.1);b.lineTo(5*c/8,e/4);b.end();b.stroke()};mxCellRenderer.registerShape("umlControl",S);mxUtils.extend(Q,mxRectangleShape);Q.prototype.size=
+40;Q.prototype.isHtmlAllowed=function(){return!1};Q.prototype.getLabelBounds=function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(b.x,b.y,b.width,d)};Q.prototype.paintBackground=function(b,d,g,c,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),A=mxUtils.getValue(this.style,"participant");null==A||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,b,d,
+g,c,f):(A=this.state.view.graph.cellRenderer.getShape(A),null!=A&&A!=Q&&(A=new A,A.apply(this.state),b.save(),A.paintVertexShape(b,d,g,c,f),b.restore()));f<e&&(b.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),b.begin(),b.moveTo(d+c/2,g+f),b.lineTo(d+c/2,g+e),b.end(),b.stroke())};Q.prototype.paintForeground=function(b,d,g,c,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,b,d,g,c,Math.min(e,
+f))};mxCellRenderer.registerShape("umlLifeline",Q);mxUtils.extend(V,mxShape);V.prototype.width=60;V.prototype.height=30;V.prototype.corner=10;V.prototype.getLabelMargins=function(b){return new mxRectangle(0,0,b.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),b.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};V.prototype.paintBackground=function(b,d,g,c,e){var f=this.corner,l=Math.min(c,Math.max(f,parseFloat(mxUtils.getValue(this.style,
+"width",this.width)))),A=Math.min(e,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(b.setFillColor(k),b.rect(d,g,c,e),b.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(b,d,g,c,e),b.setGradient(this.fill,this.gradient,d,g,c,e,this.gradientDirection)):b.setFillColor(this.fill);b.begin();
+b.moveTo(d,g);b.lineTo(d+l,g);b.lineTo(d+l,g+Math.max(0,A-1.5*f));b.lineTo(d+Math.max(0,l-f),g+A);b.lineTo(d,g+A);b.close();b.fillAndStroke();b.begin();b.moveTo(d+l,g);b.lineTo(d+c,g);b.lineTo(d+c,g+e);b.lineTo(d,g+e);b.lineTo(d,g+A);b.stroke()};mxCellRenderer.registerShape("umlFrame",V);mxPerimeter.CenterPerimeter=function(b,d,g,c){return new mxPoint(b.getCenterX(),b.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(b,d,
+g,c){c=Q.prototype.size;null!=d&&(c=mxUtils.getValue(d.style,"size",c)*d.view.scale);d=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;g.x<b.getCenterX()&&(d=-1*(d+1));return new mxPoint(b.getCenterX()+d,Math.min(b.y+b.height,Math.max(b.y+c,g.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(b,d,g,c){c=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
+mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(b,d,g,c){c=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;null!=d.style.backboneSize&&(c+=parseFloat(d.style.backboneSize)*d.view.scale/2-1);if("south"==d.style[mxConstants.STYLE_DIRECTION]||"north"==d.style[mxConstants.STYLE_DIRECTION])return g.x<b.getCenterX()&&(c=-1*(c+1)),new mxPoint(b.getCenterX()+c,Math.min(b.y+b.height,Math.max(b.y,g.y)));g.y<b.getCenterY()&&(c=-1*(c+1));return new mxPoint(Math.min(b.x+
+b.width,Math.max(b.x,g.x)),b.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(b,d,g,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(b,new mxRectangle(0,0,0,Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(d.style,"size",K.prototype.size))*d.view.scale))),d.style),d,g,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(b,
+d,g,c){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),f=e?H.prototype.fixedSize:H.prototype.size;null!=d&&(f=mxUtils.getValue(d.style,"size",f));e&&(f*=d.view.scale);var l=b.x,A=b.y,k=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),A=[new mxPoint(l,A),new mxPoint(l+k,A+e),new mxPoint(l+
+k,A+m),new mxPoint(l,A+m-e),new mxPoint(l,A)]):(e=e?Math.max(0,Math.min(.5*k,f)):k*Math.max(0,Math.min(1,f)),A=[new mxPoint(l+e,A),new mxPoint(l+k,A),new mxPoint(l+k-e,A+m),new mxPoint(l,A+m),new mxPoint(l+e,A)]);m=b.getCenterX();b=b.getCenterY();b=new mxPoint(m,b);c&&(g.x<l||g.x>l+k?b.y=g.y:b.x=g.x);return mxUtils.getPerimeterPoint(A,b,g)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(b,d,g,c){var e="0"!=mxUtils.getValue(d.style,
+"fixedSize","0"),f=e?z.prototype.fixedSize:z.prototype.size;null!=d&&(f=mxUtils.getValue(d.style,"size",f));e&&(f*=d.view.scale);var l=b.x,A=b.y,k=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(.5*k,f)):k*Math.max(0,Math.min(1,f)),A=[new mxPoint(l+e,A),new mxPoint(l+k-e,A),new mxPoint(l+k,A+m),new mxPoint(l,A+m),new mxPoint(l+e,A)]):d==mxConstants.DIRECTION_WEST?
+(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),A=[new mxPoint(l,A),new mxPoint(l+k,A),new mxPoint(l+k-e,A+m),new mxPoint(l+e,A+m),new mxPoint(l,A)]):d==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),A=[new mxPoint(l,A+e),new mxPoint(l+k,A),new mxPoint(l+k,A+m),new mxPoint(l,A+m-e),new mxPoint(l,A+e)]):(e=e?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),A=[new mxPoint(l,A),new mxPoint(l+k,A+e),new mxPoint(l+k,A+m-e),new mxPoint(l,A+m),new mxPoint(l,
+A)]);m=b.getCenterX();b=b.getCenterY();b=new mxPoint(m,b);c&&(g.x<l||g.x>l+k?b.y=g.y:b.x=g.x);return mxUtils.getPerimeterPoint(A,b,g)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(b,d,g,c){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),f=e?M.prototype.fixedSize:M.prototype.size;null!=d&&(f=mxUtils.getValue(d.style,"size",f));e&&(f*=d.view.scale);var l=b.x,A=b.y,k=b.width,m=b.height,q=b.getCenterX();b=b.getCenterY();d=null!=
+d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),A=[new mxPoint(l,A),new mxPoint(l+k-e,A),new mxPoint(l+k,b),new mxPoint(l+k-e,A+m),new mxPoint(l,A+m),new mxPoint(l+e,b),new mxPoint(l,A)]):d==mxConstants.DIRECTION_WEST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),A=[new mxPoint(l+e,A),new mxPoint(l+k,A),new mxPoint(l+k-e,b),new mxPoint(l+
+k,A+m),new mxPoint(l+e,A+m),new mxPoint(l,b),new mxPoint(l+e,A)]):d==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),A=[new mxPoint(l,A+e),new mxPoint(q,A),new mxPoint(l+k,A+e),new mxPoint(l+k,A+m),new mxPoint(q,A+m-e),new mxPoint(l,A+m),new mxPoint(l,A+e)]):(e=e?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),A=[new mxPoint(l,A),new mxPoint(q,A+e),new mxPoint(l+k,A),new mxPoint(l+k,A+m-e),new mxPoint(q,A+m),new mxPoint(l,A+m-e),new mxPoint(l,A)]);q=new mxPoint(q,
+b);c&&(g.x<l||g.x>l+k?q.y=g.y:q.x=g.x);return mxUtils.getPerimeterPoint(A,q,g)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(b,d,g,c){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),f=e?Z.prototype.fixedSize:Z.prototype.size;null!=d&&(f=mxUtils.getValue(d.style,"size",f));e&&(f*=d.view.scale);var l=b.x,A=b.y,k=b.width,m=b.height,q=b.getCenterX();b=b.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
+mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),A=[new mxPoint(q,A),new mxPoint(l+k,A+e),new mxPoint(l+k,A+m-e),new mxPoint(q,A+m),new mxPoint(l,A+m-e),new mxPoint(l,A+e),new mxPoint(q,A)]):(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),A=[new mxPoint(l+e,A),new mxPoint(l+k-e,A),new mxPoint(l+k,b),new mxPoint(l+k-e,A+m),new mxPoint(l+e,A+m),new mxPoint(l,b),new mxPoint(l+e,A)]);q=new mxPoint(q,
+b);c&&(g.x<l||g.x>l+k?q.y=g.y:q.x=g.x);return mxUtils.getPerimeterPoint(A,q,g)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(oa,mxShape);oa.prototype.size=10;oa.prototype.paintBackground=function(b,d,g,c,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));b.translate(d,g);b.ellipse((c-f)/2,0,f,f);b.fillAndStroke();b.begin();b.moveTo(c/2,f);b.lineTo(c/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("lollipop",oa);mxUtils.extend(fa,
+mxShape);fa.prototype.size=10;fa.prototype.inset=2;fa.prototype.paintBackground=function(b,d,g,c,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),l=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,g);b.begin();b.moveTo(c/2,f+l);b.lineTo(c/2,e);b.end();b.stroke();b.begin();b.moveTo((c-f)/2-l,f/2);b.quadTo((c-f)/2-l,f+l,c/2,f+l);b.quadTo((c+f)/2+l,f+l,(c+f)/2+l,f/2);b.end();b.stroke()};mxCellRenderer.registerShape("requires",fa);mxUtils.extend(ka,
+mxShape);ka.prototype.paintBackground=function(b,d,g,c,e){b.translate(d,g);b.begin();b.moveTo(0,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,0,e);b.end();b.stroke()};mxCellRenderer.registerShape("requiredInterface",ka);mxUtils.extend(ra,mxShape);ra.prototype.inset=2;ra.prototype.paintBackground=function(b,d,g,c,e){var f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,g);b.ellipse(0,f,c-2*f,e-2*f);b.fillAndStroke();b.begin();b.moveTo(c/2,0);b.quadTo(c,0,c,e/2);b.quadTo(c,
+e,c/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ra);mxUtils.extend(la,mxCylinder);la.prototype.jettyWidth=20;la.prototype.jettyHeight=10;la.prototype.redrawPath=function(b,d,g,c,e,f){var l=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));g=l/2;var l=g+l/2,A=Math.min(d,e-d),k=Math.min(A+2*d,e-d);f?(b.moveTo(g,A),b.lineTo(l,A),b.lineTo(l,A+d),b.lineTo(g,A+d),b.moveTo(g,
+k),b.lineTo(l,k),b.lineTo(l,k+d),b.lineTo(g,k+d)):(b.moveTo(g,0),b.lineTo(c,0),b.lineTo(c,e),b.lineTo(g,e),b.lineTo(g,k+d),b.lineTo(0,k+d),b.lineTo(0,k),b.lineTo(g,k),b.lineTo(g,A+d),b.lineTo(0,A+d),b.lineTo(0,A),b.lineTo(g,A),b.close());b.end()};mxCellRenderer.registerShape("module",la);mxUtils.extend(ja,mxCylinder);ja.prototype.jettyWidth=32;ja.prototype.jettyHeight=12;ja.prototype.redrawPath=function(b,d,g,c,e,f){var l=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,
+"jettyHeight",this.jettyHeight));g=l/2;var l=g+l/2,A=.3*e-d/2,k=.7*e-d/2;f?(b.moveTo(g,A),b.lineTo(l,A),b.lineTo(l,A+d),b.lineTo(g,A+d),b.moveTo(g,k),b.lineTo(l,k),b.lineTo(l,k+d),b.lineTo(g,k+d)):(b.moveTo(g,0),b.lineTo(c,0),b.lineTo(c,e),b.lineTo(g,e),b.lineTo(g,k+d),b.lineTo(0,k+d),b.lineTo(0,k),b.lineTo(g,k),b.lineTo(g,A+d),b.lineTo(0,A+d),b.lineTo(0,A),b.lineTo(g,A),b.close());b.end()};mxCellRenderer.registerShape("component",ja);mxUtils.extend(aa,mxRectangleShape);aa.prototype.paintForeground=
+function(b,d,g,c,e){var f=c/2,l=e/2,A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b.begin();this.addPoints(b,[new mxPoint(d+f,g),new mxPoint(d+c,g+l),new mxPoint(d+f,g+e),new mxPoint(d,g+l)],this.isRounded,A,!0);b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",aa);mxUtils.extend(ba,mxDoubleEllipse);ba.prototype.outerStroke=!0;ba.prototype.paintVertexShape=function(b,d,g,c,e){var f=Math.min(4,
+Math.min(c/5,e/5));0<c&&0<e&&(b.ellipse(d+f,g+f,c-2*f,e-2*f),b.fillAndStroke());b.setShadow(!1);this.outerStroke&&(b.ellipse(d,g,c,e),b.stroke())};mxCellRenderer.registerShape("endState",ba);mxUtils.extend(R,ba);R.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",R);mxUtils.extend(sa,mxArrowConnector);sa.prototype.defaultWidth=4;sa.prototype.isOpenEnded=function(){return!0};sa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
this.strokewidth-1)};sa.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",sa);mxUtils.extend(W,mxArrowConnector);W.prototype.defaultWidth=10;W.prototype.defaultArrowWidth=20;W.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};W.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};W.prototype.getEdgeWidth=
-function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",W);mxUtils.extend(X,mxActor);X.prototype.size=30;X.prototype.isRoundable=function(){return!0};X.prototype.redrawPath=function(b,d,f,c,e){d=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(0,d),new mxPoint(c,
-0),new mxPoint(c,e)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("manualInput",X);mxUtils.extend(ma,mxRectangleShape);ma.prototype.dx=20;ma.prototype.dy=20;ma.prototype.isHtmlAllowed=function(){return!1};ma.prototype.paintForeground=function(b,d,f,c,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var g=0;if(this.isRounded)var l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(c*l,e*l));l=Math.max(g,
-Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));g=Math.max(g,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.begin();b.moveTo(d,f+g);b.lineTo(d+c,f+g);b.end();b.stroke();b.begin();b.moveTo(d+l,f);b.lineTo(d+l,f+e);b.end();b.stroke()};mxCellRenderer.registerShape("internalStorage",ma);mxUtils.extend(qa,mxActor);qa.prototype.dx=20;qa.prototype.dy=20;qa.prototype.redrawPath=function(b,d,f,c,e){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",
-this.dx))));f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,f),new mxPoint(d,f),new mxPoint(d,e),new mxPoint(0,e)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("corner",qa);mxUtils.extend(T,mxActor);T.prototype.redrawPath=function(b,d,f,c,e){b.moveTo(0,
-0);b.lineTo(0,e);b.end();b.moveTo(c,0);b.lineTo(c,e);b.end();b.moveTo(0,e/2);b.lineTo(c,e/2);b.end()};mxCellRenderer.registerShape("crossbar",T);mxUtils.extend(ia,mxActor);ia.prototype.dx=20;ia.prototype.dy=20;ia.prototype.redrawPath=function(b,d,f,c,e){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var g=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,f),new mxPoint((c+d)/2,f),new mxPoint((c+d)/2,e),new mxPoint((c-d)/2,e),new mxPoint((c-d)/2,f),new mxPoint(0,f)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("tee",ia);mxUtils.extend(da,mxActor);da.prototype.arrowWidth=.3;da.prototype.arrowSize=.2;da.prototype.redrawPath=function(b,d,f,c,e){var g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
-this.arrowWidth))));d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));f=(e-g)/2;var g=f+g,l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,f),new mxPoint(c-d,f),new mxPoint(c-d,0),new mxPoint(c,e/2),new mxPoint(c-d,e),new mxPoint(c-d,g),new mxPoint(0,g)],this.isRounded,l,!0);b.end()};mxCellRenderer.registerShape("singleArrow",da);mxUtils.extend(na,mxActor);na.prototype.redrawPath=function(b,
-d,f,c,e){var g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth))));d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize))));f=(e-g)/2;var g=f+g,l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e/2),new mxPoint(d,0),new mxPoint(d,f),new mxPoint(c-d,f),new mxPoint(c-d,0),new mxPoint(c,e/2),new mxPoint(c-d,e),new mxPoint(c-d,g),new mxPoint(d,
-g),new mxPoint(d,e)],this.isRounded,l,!0);b.end()};mxCellRenderer.registerShape("doubleArrow",na);mxUtils.extend(ha,mxActor);ha.prototype.size=.1;ha.prototype.fixedSize=20;ha.prototype.redrawPath=function(b,d,f,c,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(d,0);b.lineTo(c,0);b.quadTo(c-2*d,e/2,c,e);b.lineTo(d,
-e);b.quadTo(d-2*d,e/2,d,0);b.close();b.end()};mxCellRenderer.registerShape("dataStorage",ha);mxUtils.extend(ua,mxActor);ua.prototype.redrawPath=function(b,d,f,c,e){b.moveTo(0,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,0,e);b.close();b.end()};mxCellRenderer.registerShape("or",ua);mxUtils.extend(P,mxActor);P.prototype.redrawPath=function(b,d,f,c,e){b.moveTo(0,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,0,e);b.quadTo(c/2,e/2,0,0);b.close();b.end()};mxCellRenderer.registerShape("xor",P);mxUtils.extend(ea,mxActor);ea.prototype.size=
-20;ea.prototype.isRoundable=function(){return!0};ea.prototype.redrawPath=function(b,d,f,c,e){d=Math.min(c/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,.8*d),new mxPoint(c,e),new mxPoint(0,e),new mxPoint(0,.8*d)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("loopLimit",ea);mxUtils.extend(ta,mxActor);ta.prototype.size=
-.375;ta.prototype.isRoundable=function(){return!0};ta.prototype.redrawPath=function(b,d,f,c,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e-d),new mxPoint(c/2,e),new mxPoint(0,e-d)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("offPageConnector",ta);mxUtils.extend(ya,mxEllipse);ya.prototype.paintVertexShape=
-function(b,d,f,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+c/2,f+e);b.lineTo(d+c,f+e);b.end();b.stroke()};mxCellRenderer.registerShape("tapeData",ya);mxUtils.extend(pa,mxEllipse);pa.prototype.paintVertexShape=function(b,d,f,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d,f+e/2);b.lineTo(d+c,f+e/2);b.end();b.stroke();b.begin();b.moveTo(d+c/2,f);b.lineTo(d+c/2,f+e);b.end();b.stroke()};mxCellRenderer.registerShape("orEllipse",
-pa);mxUtils.extend(xa,mxEllipse);xa.prototype.paintVertexShape=function(b,d,f,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d+.145*c,f+.145*e);b.lineTo(d+.855*c,f+.855*e);b.end();b.stroke();b.begin();b.moveTo(d+.855*c,f+.145*e);b.lineTo(d+.145*c,f+.855*e);b.end();b.stroke()};mxCellRenderer.registerShape("sumEllipse",xa);mxUtils.extend(za,mxRhombus);za.prototype.paintVertexShape=function(b,d,f,c,e){mxRhombus.prototype.paintVertexShape.apply(this,
-arguments);b.setShadow(!1);b.begin();b.moveTo(d,f+e/2);b.lineTo(d+c,f+e/2);b.end();b.stroke()};mxCellRenderer.registerShape("sortShape",za);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=function(b,d,f,c,e){b.begin();b.moveTo(d,f);b.lineTo(d+c,f);b.lineTo(d+c/2,f+e/2);b.close();b.fillAndStroke();b.begin();b.moveTo(d,f+e);b.lineTo(d+c,f+e);b.lineTo(d+c/2,f+e/2);b.close();b.fillAndStroke()};mxCellRenderer.registerShape("collate",Ba);mxUtils.extend(Ea,mxEllipse);Ea.prototype.paintVertexShape=
-function(b,d,f,c,e){var g=f+e-5;b.begin();b.moveTo(d,f);b.lineTo(d,f+e);b.moveTo(d,g);b.lineTo(d+10,g-5);b.moveTo(d,g);b.lineTo(d+10,g+5);b.moveTo(d,g);b.lineTo(d+c,g);b.moveTo(d+c,f);b.lineTo(d+c,f+e);b.moveTo(d+c,g);b.lineTo(d+c-10,g-5);b.moveTo(d+c,g);b.lineTo(d+c-10,g+5);b.end();b.stroke()};mxCellRenderer.registerShape("dimension",Ea);mxUtils.extend(Ja,mxEllipse);Ja.prototype.paintVertexShape=function(b,d,f,c,e){this.outline||b.setStrokeColor(null);if(null!=this.style){var g=b.pointerEvents;"1"==
-mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||null!=this.fill&&this.fill!=mxConstants.NONE||(b.pointerEvents=!1);b.rect(d,f,c,e);b.fill();b.pointerEvents=g;b.setStrokeColor(this.stroke);b.setLineCap("square");b.begin();b.moveTo(d,f);this.outline||"1"==mxUtils.getValue(this.style,"top","1")?b.lineTo(d+c,f):b.moveTo(d+c,f);this.outline||"1"==mxUtils.getValue(this.style,"right","1")?b.lineTo(d+c,f+e):b.moveTo(d+c,f+e);this.outline||"1"==mxUtils.getValue(this.style,"bottom","1")?
-b.lineTo(d,f+e):b.moveTo(d,f+e);(this.outline||"1"==mxUtils.getValue(this.style,"left","1"))&&b.lineTo(d,f);b.end();b.stroke();b.setLineCap("flat")}};mxCellRenderer.registerShape("partialRectangle",Ja);mxUtils.extend(Aa,mxEllipse);Aa.prototype.paintVertexShape=function(b,d,f,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();"vertical"==mxUtils.getValue(this.style,"line")?(b.moveTo(d+c/2,f),b.lineTo(d+c/2,f+e)):(b.moveTo(d,f+e/2),b.lineTo(d+c,f+e/2));b.end();
-b.stroke()};mxCellRenderer.registerShape("lineEllipse",Aa);mxUtils.extend(Ka,mxActor);Ka.prototype.redrawPath=function(b,d,f,c,e){d=Math.min(c,e/2);b.moveTo(0,0);b.lineTo(c-d,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,c-d,e);b.lineTo(0,e);b.close();b.end()};mxCellRenderer.registerShape("delay",Ka);mxUtils.extend(Ca,mxActor);Ca.prototype.size=.2;Ca.prototype.redrawPath=function(b,d,f,c,e){d=Math.min(e,c);var g=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=(e-g)/2;f=
-d+g;var l=(c-g)/2,g=l+g;b.moveTo(0,d);b.lineTo(l,d);b.lineTo(l,0);b.lineTo(g,0);b.lineTo(g,d);b.lineTo(c,d);b.lineTo(c,f);b.lineTo(g,f);b.lineTo(g,e);b.lineTo(l,e);b.lineTo(l,f);b.lineTo(0,f);b.close();b.end()};mxCellRenderer.registerShape("cross",Ca);mxUtils.extend(wa,mxActor);wa.prototype.size=.25;wa.prototype.redrawPath=function(b,d,f,c,e){d=Math.min(c,e/2);f=Math.min(c-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);b.moveTo(0,e/2);b.lineTo(f,0);b.lineTo(c-d,0);b.quadTo(c,
-0,c,e/2);b.quadTo(c,e,c-d,e);b.lineTo(f,e);b.close();b.end()};mxCellRenderer.registerShape("display",wa);mxUtils.extend(Z,mxActor);Z.prototype.cst={RECT2:"mxgraph.basic.rect"};Z.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"size",dispName:"Corner Size",type:"float",defVal:10},
+function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",W);mxUtils.extend(X,mxActor);X.prototype.size=30;X.prototype.isRoundable=function(){return!0};X.prototype.redrawPath=function(b,d,g,c,e){d=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(0,d),new mxPoint(c,
+0),new mxPoint(c,e)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("manualInput",X);mxUtils.extend(ma,mxRectangleShape);ma.prototype.dx=20;ma.prototype.dy=20;ma.prototype.isHtmlAllowed=function(){return!1};ma.prototype.paintForeground=function(b,d,g,c,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(c*l,e*l));l=Math.max(f,
+Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.begin();b.moveTo(d,g+f);b.lineTo(d+c,g+f);b.end();b.stroke();b.begin();b.moveTo(d+l,g);b.lineTo(d+l,g+e);b.end();b.stroke()};mxCellRenderer.registerShape("internalStorage",ma);mxUtils.extend(qa,mxActor);qa.prototype.dx=20;qa.prototype.dy=20;qa.prototype.redrawPath=function(b,d,g,c,e){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",
+this.dx))));g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,g),new mxPoint(d,g),new mxPoint(d,e),new mxPoint(0,e)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("corner",qa);mxUtils.extend(T,mxActor);T.prototype.redrawPath=function(b,d,g,c,e){b.moveTo(0,
+0);b.lineTo(0,e);b.end();b.moveTo(c,0);b.lineTo(c,e);b.end();b.moveTo(0,e/2);b.lineTo(c,e/2);b.end()};mxCellRenderer.registerShape("crossbar",T);mxUtils.extend(ia,mxActor);ia.prototype.dx=20;ia.prototype.dy=20;ia.prototype.redrawPath=function(b,d,g,c,e){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,
+mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,g),new mxPoint((c+d)/2,g),new mxPoint((c+d)/2,e),new mxPoint((c-d)/2,e),new mxPoint((c-d)/2,g),new mxPoint(0,g)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("tee",ia);mxUtils.extend(da,mxActor);da.prototype.arrowWidth=.3;da.prototype.arrowSize=.2;da.prototype.redrawPath=function(b,d,g,c,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
+this.arrowWidth))));d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));g=(e-f)/2;var f=g+f,l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,g),new mxPoint(c-d,g),new mxPoint(c-d,0),new mxPoint(c,e/2),new mxPoint(c-d,e),new mxPoint(c-d,f),new mxPoint(0,f)],this.isRounded,l,!0);b.end()};mxCellRenderer.registerShape("singleArrow",da);mxUtils.extend(na,mxActor);na.prototype.redrawPath=function(b,
+d,g,c,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth))));d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize))));g=(e-f)/2;var f=g+f,l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e/2),new mxPoint(d,0),new mxPoint(d,g),new mxPoint(c-d,g),new mxPoint(c-d,0),new mxPoint(c,e/2),new mxPoint(c-d,e),new mxPoint(c-d,f),new mxPoint(d,
+f),new mxPoint(d,e)],this.isRounded,l,!0);b.end()};mxCellRenderer.registerShape("doubleArrow",na);mxUtils.extend(ha,mxActor);ha.prototype.size=.1;ha.prototype.fixedSize=20;ha.prototype.redrawPath=function(b,d,g,c,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(d,0);b.lineTo(c,0);b.quadTo(c-2*d,e/2,c,e);b.lineTo(d,
+e);b.quadTo(d-2*d,e/2,d,0);b.close();b.end()};mxCellRenderer.registerShape("dataStorage",ha);mxUtils.extend(ua,mxActor);ua.prototype.redrawPath=function(b,d,g,c,e){b.moveTo(0,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,0,e);b.close();b.end()};mxCellRenderer.registerShape("or",ua);mxUtils.extend(P,mxActor);P.prototype.redrawPath=function(b,d,g,c,e){b.moveTo(0,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,0,e);b.quadTo(c/2,e/2,0,0);b.close();b.end()};mxCellRenderer.registerShape("xor",P);mxUtils.extend(ea,mxActor);ea.prototype.size=
+20;ea.prototype.isRoundable=function(){return!0};ea.prototype.redrawPath=function(b,d,g,c,e){d=Math.min(c/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,.8*d),new mxPoint(c,e),new mxPoint(0,e),new mxPoint(0,.8*d)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("loopLimit",ea);mxUtils.extend(ta,mxActor);ta.prototype.size=
+.375;ta.prototype.isRoundable=function(){return!0};ta.prototype.redrawPath=function(b,d,g,c,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e-d),new mxPoint(c/2,e),new mxPoint(0,e-d)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("offPageConnector",ta);mxUtils.extend(ya,mxEllipse);ya.prototype.paintVertexShape=
+function(b,d,g,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+c/2,g+e);b.lineTo(d+c,g+e);b.end();b.stroke()};mxCellRenderer.registerShape("tapeData",ya);mxUtils.extend(pa,mxEllipse);pa.prototype.paintVertexShape=function(b,d,g,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d,g+e/2);b.lineTo(d+c,g+e/2);b.end();b.stroke();b.begin();b.moveTo(d+c/2,g);b.lineTo(d+c/2,g+e);b.end();b.stroke()};mxCellRenderer.registerShape("orEllipse",
+pa);mxUtils.extend(xa,mxEllipse);xa.prototype.paintVertexShape=function(b,d,g,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d+.145*c,g+.145*e);b.lineTo(d+.855*c,g+.855*e);b.end();b.stroke();b.begin();b.moveTo(d+.855*c,g+.145*e);b.lineTo(d+.145*c,g+.855*e);b.end();b.stroke()};mxCellRenderer.registerShape("sumEllipse",xa);mxUtils.extend(za,mxRhombus);za.prototype.paintVertexShape=function(b,d,g,c,e){mxRhombus.prototype.paintVertexShape.apply(this,
+arguments);b.setShadow(!1);b.begin();b.moveTo(d,g+e/2);b.lineTo(d+c,g+e/2);b.end();b.stroke()};mxCellRenderer.registerShape("sortShape",za);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=function(b,d,g,c,e){b.begin();b.moveTo(d,g);b.lineTo(d+c,g);b.lineTo(d+c/2,g+e/2);b.close();b.fillAndStroke();b.begin();b.moveTo(d,g+e);b.lineTo(d+c,g+e);b.lineTo(d+c/2,g+e/2);b.close();b.fillAndStroke()};mxCellRenderer.registerShape("collate",Ba);mxUtils.extend(Ea,mxEllipse);Ea.prototype.paintVertexShape=
+function(b,d,g,c,e){var f=g+e-5;b.begin();b.moveTo(d,g);b.lineTo(d,g+e);b.moveTo(d,f);b.lineTo(d+10,f-5);b.moveTo(d,f);b.lineTo(d+10,f+5);b.moveTo(d,f);b.lineTo(d+c,f);b.moveTo(d+c,g);b.lineTo(d+c,g+e);b.moveTo(d+c,f);b.lineTo(d+c-10,f-5);b.moveTo(d+c,f);b.lineTo(d+c-10,f+5);b.end();b.stroke()};mxCellRenderer.registerShape("dimension",Ea);mxUtils.extend(Ja,mxEllipse);Ja.prototype.paintVertexShape=function(b,d,g,c,e){this.outline||b.setStrokeColor(null);if(null!=this.style){var f=b.pointerEvents;"1"==
+mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||null!=this.fill&&this.fill!=mxConstants.NONE||(b.pointerEvents=!1);b.rect(d,g,c,e);b.fill();b.pointerEvents=f;b.setStrokeColor(this.stroke);b.setLineCap("square");b.begin();b.moveTo(d,g);this.outline||"1"==mxUtils.getValue(this.style,"top","1")?b.lineTo(d+c,g):b.moveTo(d+c,g);this.outline||"1"==mxUtils.getValue(this.style,"right","1")?b.lineTo(d+c,g+e):b.moveTo(d+c,g+e);this.outline||"1"==mxUtils.getValue(this.style,"bottom","1")?
+b.lineTo(d,g+e):b.moveTo(d,g+e);(this.outline||"1"==mxUtils.getValue(this.style,"left","1"))&&b.lineTo(d,g);b.end();b.stroke();b.setLineCap("flat")}};mxCellRenderer.registerShape("partialRectangle",Ja);mxUtils.extend(Aa,mxEllipse);Aa.prototype.paintVertexShape=function(b,d,g,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();"vertical"==mxUtils.getValue(this.style,"line")?(b.moveTo(d+c/2,g),b.lineTo(d+c/2,g+e)):(b.moveTo(d,g+e/2),b.lineTo(d+c,g+e/2));b.end();
+b.stroke()};mxCellRenderer.registerShape("lineEllipse",Aa);mxUtils.extend(Ka,mxActor);Ka.prototype.redrawPath=function(b,d,g,c,e){d=Math.min(c,e/2);b.moveTo(0,0);b.lineTo(c-d,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,c-d,e);b.lineTo(0,e);b.close();b.end()};mxCellRenderer.registerShape("delay",Ka);mxUtils.extend(Ca,mxActor);Ca.prototype.size=.2;Ca.prototype.redrawPath=function(b,d,g,c,e){d=Math.min(e,c);var f=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=(e-f)/2;g=
+d+f;var l=(c-f)/2,f=l+f;b.moveTo(0,d);b.lineTo(l,d);b.lineTo(l,0);b.lineTo(f,0);b.lineTo(f,d);b.lineTo(c,d);b.lineTo(c,g);b.lineTo(f,g);b.lineTo(f,e);b.lineTo(l,e);b.lineTo(l,g);b.lineTo(0,g);b.close();b.end()};mxCellRenderer.registerShape("cross",Ca);mxUtils.extend(wa,mxActor);wa.prototype.size=.25;wa.prototype.redrawPath=function(b,d,g,c,e){d=Math.min(c,e/2);g=Math.min(c-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);b.moveTo(0,e/2);b.lineTo(g,0);b.lineTo(c-d,0);b.quadTo(c,
+0,c,e/2);b.quadTo(c,e,c-d,e);b.lineTo(g,e);b.close();b.end()};mxCellRenderer.registerShape("display",wa);mxUtils.extend(Y,mxActor);Y.prototype.cst={RECT2:"mxgraph.basic.rect"};Y.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"size",dispName:"Corner Size",type:"float",defVal:10},
{name:"absoluteCornerSize",dispName:"Abs. Corner Size",type:"bool",defVal:!0},{name:"indent",dispName:"Indent",type:"float",defVal:2},{name:"rectOutline",dispName:"Outline",type:"enum",defVal:"single",enumList:[{val:"single",dispName:"Single"},{val:"double",dispName:"Double"},{val:"frame",dispName:"Frame"}]},{name:"fillColor2",dispName:"Inside Fill Color",type:"color",defVal:"none"},{name:"gradientColor2",dispName:"Inside Gradient Color",type:"color",defVal:"none"},{name:"gradientDirection2",dispName:"Inside Gradient Direction",
type:"enum",defVal:"south",enumList:[{val:"south",dispName:"South"},{val:"west",dispName:"West"},{val:"north",dispName:"North"},{val:"east",dispName:"East"}]},{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"right",dispName:"Right",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left ",type:"bool",defVal:!0},{name:"topLeftStyle",dispName:"Top Left Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},
{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"topRightStyle",dispName:"Top Right Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"bottomRightStyle",dispName:"Bottom Right Style",
type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"bottomLeftStyle",dispName:"Bottom Left Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",
-dispName:"Fold"}]}];Z.prototype.paintVertexShape=function(b,d,f,c,e){b.translate(d,f);this.strictDrawShape(b,0,0,c,e)};Z.prototype.strictDrawShape=function(b,d,f,c,e,g){var l=g&&g.rectStyle?g.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),k=g&&g.absoluteCornerSize?g.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",this.absoluteCornerSize),m=g&&g.size?g.size:Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),q=g&&g.rectOutline?g.rectOutline:
-mxUtils.getValue(this.style,"rectOutline",this.rectOutline),n=g&&g.indent?g.indent:Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),G=g&&g.dashed?g.dashed:mxUtils.getValue(this.style,"dashed",!1),B=g&&g.dashPattern?g.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),v=g&&g.relIndent?g.relIndent:Math.max(0,Math.min(50,n)),u=g&&g.top?g.top:mxUtils.getValue(this.style,"top",!0),A=g&&g.right?g.right:mxUtils.getValue(this.style,"right",!0),p=g&&g.bottom?g.bottom:
-mxUtils.getValue(this.style,"bottom",!0),x=g&&g.left?g.left:mxUtils.getValue(this.style,"left",!0),I=g&&g.topLeftStyle?g.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),t=g&&g.topRightStyle?g.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),y=g&&g.bottomRightStyle?g.bottomRightStyle:mxUtils.getValue(this.style,"bottomRightStyle","default"),z=g&&g.bottomLeftStyle?g.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),S=g&&g.fillColor?g.fillColor:
-mxUtils.getValue(this.style,"fillColor","#ffffff");g&&g.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var C=g&&g.strokeWidth?g.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),Y=g&&g.fillColor2?g.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),N=g&&g.gradientColor2?g.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),V=g&&g.gradientDirection2?g.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Da=g&&g.opacity?g.opacity:
-mxUtils.getValue(this.style,"opacity","100"),va=Math.max(0,Math.min(50,m));g=Z.prototype;b.setDashed(G);B&&""!=B&&b.setDashPattern(B);b.setStrokeWidth(C);m=Math.min(.5*e,.5*c,m);k||(m=va*Math.min(c,e)/100);m=Math.min(m,.5*Math.min(c,e));k||(n=Math.min(v*Math.min(c,e)/100));n=Math.min(n,.5*Math.min(c,e)-m);(u||A||p||x)&&"frame"!=q&&(b.begin(),u?g.moveNW(b,d,f,c,e,l,I,m,x):b.moveTo(0,0),u&&g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),A&&g.paintNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,
-c,e,l,y,m,p),p&&g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),x&&g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),b.close(),b.fill(),b.setShadow(!1),b.setFillColor(Y),G=k=Da,"none"==Y&&(k=0),"none"==N&&(G=0),b.setGradient(Y,N,0,0,c,e,V,k,G),b.begin(),u?g.moveNWInner(b,d,f,c,e,l,I,m,n,u,x):b.moveTo(n,0),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),x&&p&&g.paintSWInner(b,d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),p&&A&&g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,
-d,f,c,e,l,t,m,n,u,A),A&&u&&g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),u&&x&&g.paintNWInner(b,d,f,c,e,l,I,m,n),b.fill(),"none"==S&&(b.begin(),g.paintFolds(b,d,f,c,e,l,I,t,y,z,m,u,A,p,x),b.stroke()));u||A||p||!x?u||A||!p||x?!u&&!A&&p&&x?"frame"!=q?(b.begin(),g.moveSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),"double"==q&&(g.moveNWInner(b,d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),g.paintSWInner(b,
-d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p)),b.stroke()):(b.begin(),g.moveSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.lineNWInner(b,d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),g.paintSWInner(b,d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),b.close(),b.fillAndStroke()):u||!A||p||x?!u&&A&&!p&&x?"frame"!=q?(b.begin(),g.moveSW(b,d,f,c,e,l,I,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),"double"==
-q&&(g.moveNWInner(b,d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x)),b.stroke(),b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),"double"==q&&(g.moveSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A)),b.stroke()):(b.begin(),g.moveSW(b,d,f,c,e,l,I,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.lineNWInner(b,d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),b.close(),b.fillAndStroke(),b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,
-l,y,m,p),g.lineSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),b.close(),b.fillAndStroke()):!u&&A&&p&&!x?"frame"!=q?(b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),"double"==q&&(g.moveSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A)),b.stroke()):(b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,
-d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.lineSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),b.close(),b.fillAndStroke()):!u&&A&&p&&x?"frame"!=q?(b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),"double"==q&&(g.moveNWInner(b,
-d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),g.paintSWInner(b,d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A)),b.stroke()):(b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.lineNWInner(b,d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),g.paintSWInner(b,
-d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),b.close(),b.fillAndStroke()):!u||A||p||x?u&&!A&&!p&&x?"frame"!=q?(b.begin(),g.moveSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),"double"==q&&(g.moveNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x)),b.stroke()):
-(b.begin(),g.moveSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.lineNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),b.close(),b.fillAndStroke()):u&&!A&&p&&!x?"frame"!=q?(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),"double"==q&&(g.moveNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u)),b.stroke(),b.begin(),
-g.moveSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),"double"==q&&(g.moveSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p)),b.stroke()):(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.lineNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),b.close(),b.fillAndStroke(),b.begin(),g.moveSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.lineSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),b.close(),b.fillAndStroke()):
-u&&!A&&p&&x?"frame"!=q?(b.begin(),g.moveSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),"double"==q&&(g.moveNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),g.paintSWInner(b,d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p)),b.stroke()):(b.begin(),g.moveSE(b,d,f,c,e,l,y,
-m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.lineNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),g.paintSWInner(b,d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),b.close(),b.fillAndStroke()):u&&A&&!p&&!x?"frame"!=q?(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,
-A),g.paintNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),"double"==q&&(g.moveSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u)),b.stroke()):(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.paintNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.lineSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,
-c,e,l,I,m,n,x,u),b.close(),b.fillAndStroke()):u&&A&&!p&&x?"frame"!=q?(b.begin(),g.moveSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.paintNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),"double"==q&&(g.moveSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x)),b.stroke()):
-(b.begin(),g.moveSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.paintNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.lineSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),b.close(),b.fillAndStroke()):u&&A&&p&&!x?"frame"!=q?(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,
-x),g.paintTop(b,d,f,c,e,l,t,m,A),g.paintNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),"double"==q&&(g.moveSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u)),b.stroke()):(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.paintNE(b,d,f,c,e,l,t,
-m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.lineSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),b.close(),b.fillAndStroke()):u&&A&&p&&x&&("frame"!=q?(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.paintNE(b,d,f,c,e,l,t,m,
-u),g.paintRight(b,d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),b.close(),"double"==q&&(g.moveSWInner(b,d,f,c,e,l,z,m,n,x),g.paintSWInner(b,d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,
-e,l,z,m,n,p,x),b.close()),b.stroke()):(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.paintNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),b.close(),g.moveSWInner(b,d,f,c,e,l,z,m,n,x),g.paintSWInner(b,d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,
-e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),b.close(),b.fillAndStroke())):"frame"!=q?(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),"double"==q&&(g.moveNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u)),b.stroke()):(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.lineNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,
-e,l,I,m,n,x,u),b.close(),b.fillAndStroke()):"frame"!=q?(b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),"double"==q&&(g.moveSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A)),b.stroke()):(b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.lineSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),b.close(),b.fillAndStroke()):"frame"!=q?(b.begin(),g.moveSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),"double"==q&&
-(g.moveSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p)),b.stroke()):(b.begin(),g.moveSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.lineSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),b.close(),b.fillAndStroke()):"frame"!=q?(b.begin(),g.moveSW(b,d,f,c,e,l,I,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),"double"==q&&(g.moveNWInner(b,d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x)),b.stroke()):(b.begin(),g.moveSW(b,d,f,c,e,l,I,m,p),g.paintLeft(b,
-d,f,c,e,l,I,m,u),g.lineNWInner(b,d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),b.close(),b.fillAndStroke());b.begin();g.paintFolds(b,d,f,c,e,l,I,t,y,z,m,u,A,p,x);b.stroke()};Z.prototype.moveNW=function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==l&&"square"==g||!k?b.moveTo(0,0):b.moveTo(0,m)};Z.prototype.moveNE=function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==l&&"square"==g||!k?b.moveTo(c,0):b.moveTo(c-m,0)};Z.prototype.moveSE=function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==l&&
-"square"==g||!k?b.moveTo(c,e):b.moveTo(c,e-m)};Z.prototype.moveSW=function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==l&&"square"==g||!k?b.moveTo(0,e):b.moveTo(m,e)};Z.prototype.paintNW=function(b,d,f,c,e,g,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==g||"invRound"==l||"default"==l&&"invRound"==g){d=0;if("rounded"==l||"default"==l&&"rounded"==g)d=1;b.arcTo(m,m,0,0,d,m,0)}else("snip"==l||"default"==l&&"snip"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(m,0);else b.lineTo(0,0)};Z.prototype.paintTop=
-function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==l&&"square"==g||!k?b.lineTo(c,0):b.lineTo(c-m,0)};Z.prototype.paintNE=function(b,d,f,c,e,g,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==g||"invRound"==l||"default"==l&&"invRound"==g){d=0;if("rounded"==l||"default"==l&&"rounded"==g)d=1;b.arcTo(m,m,0,0,d,c,m)}else("snip"==l||"default"==l&&"snip"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(c,m);else b.lineTo(c,0)};Z.prototype.paintRight=function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==
-l&&"square"==g||!k?b.lineTo(c,e):b.lineTo(c,e-m)};Z.prototype.paintLeft=function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==l&&"square"==g||!k?b.lineTo(0,0):b.lineTo(0,m)};Z.prototype.paintSE=function(b,d,f,c,e,g,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==g||"invRound"==l||"default"==l&&"invRound"==g){d=0;if("rounded"==l||"default"==l&&"rounded"==g)d=1;b.arcTo(m,m,0,0,d,c-m,e)}else("snip"==l||"default"==l&&"snip"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(c-m,e);else b.lineTo(c,
-e)};Z.prototype.paintBottom=function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==l&&"square"==g||!k?b.lineTo(0,e):b.lineTo(m,e)};Z.prototype.paintSW=function(b,d,f,c,e,g,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==g||"invRound"==l||"default"==l&&"invRound"==g){d=0;if("rounded"==l||"default"==l&&"rounded"==g)d=1;b.arcTo(m,m,0,0,d,0,e-m)}else("snip"==l||"default"==l&&"snip"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(0,e-m);else b.lineTo(0,e)};Z.prototype.paintNWInner=function(b,d,f,
-c,e,g,l,m,k){if("rounded"==l||"default"==l&&"rounded"==g)b.arcTo(m-.5*k,m-.5*k,0,0,0,k,.5*k+m);else if("invRound"==l||"default"==l&&"invRound"==g)b.arcTo(m+k,m+k,0,0,1,k,k+m);else if("snip"==l||"default"==l&&"snip"==g)b.lineTo(k,.5*k+m);else if("fold"==l||"default"==l&&"fold"==g)b.lineTo(k+m,k+m),b.lineTo(k,k+m)};Z.prototype.paintTopInner=function(b,d,f,c,e,g,l,m,k,n,q){n||q?!n&&q?b.lineTo(0,k):n&&!q?b.lineTo(k,0):n?"square"==l||"default"==l&&"square"==g?b.lineTo(k,k):"rounded"==l||"default"==l&&
-"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.lineTo(m+.5*k,k):b.lineTo(m+k,k):b.lineTo(0,k):b.lineTo(0,0)};Z.prototype.paintNEInner=function(b,d,f,c,e,g,l,m,k){if("rounded"==l||"default"==l&&"rounded"==g)b.arcTo(m-.5*k,m-.5*k,0,0,0,c-m-.5*k,k);else if("invRound"==l||"default"==l&&"invRound"==g)b.arcTo(m+k,m+k,0,0,1,c-m-k,k);else if("snip"==l||"default"==l&&"snip"==g)b.lineTo(c-m-.5*k,k);else if("fold"==l||"default"==l&&"fold"==g)b.lineTo(c-m-k,m+k),b.lineTo(c-m-k,k)};Z.prototype.paintRightInner=
-function(b,d,f,c,e,g,l,m,k,n,q){n||q?!n&&q?b.lineTo(c-k,0):n&&!q?b.lineTo(c,k):n?"square"==l||"default"==l&&"square"==g?b.lineTo(c-k,k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.lineTo(c-k,m+.5*k):b.lineTo(c-k,m+k):b.lineTo(c-k,0):b.lineTo(c,0)};Z.prototype.paintLeftInner=function(b,d,f,c,e,g,l,m,k,n,q){n||q?!n&&q?b.lineTo(k,e):n&&!q?b.lineTo(0,e-k):n?"square"==l||"default"==l&&"square"==g?b.lineTo(k,e-k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==
-l&&"snip"==g?b.lineTo(k,e-m-.5*k):b.lineTo(k,e-m-k):b.lineTo(k,e):b.lineTo(0,e)};Z.prototype.paintSEInner=function(b,d,f,c,e,g,l,m,k){if("rounded"==l||"default"==l&&"rounded"==g)b.arcTo(m-.5*k,m-.5*k,0,0,0,c-k,e-m-.5*k);else if("invRound"==l||"default"==l&&"invRound"==g)b.arcTo(m+k,m+k,0,0,1,c-k,e-m-k);else if("snip"==l||"default"==l&&"snip"==g)b.lineTo(c-k,e-m-.5*k);else if("fold"==l||"default"==l&&"fold"==g)b.lineTo(c-m-k,e-m-k),b.lineTo(c-k,e-m-k)};Z.prototype.paintBottomInner=function(b,d,f,c,
-e,g,l,m,k,n,q){n||q?!n&&q?b.lineTo(c,e-k):n&&!q?b.lineTo(c-k,e):"square"==l||"default"==l&&"square"==g||!n?b.lineTo(c-k,e-k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.lineTo(c-m-.5*k,e-k):b.lineTo(c-m-k,e-k):b.lineTo(c,e)};Z.prototype.paintSWInner=function(b,d,f,c,e,g,l,m,k,n){if(!n)b.lineTo(k,e);else if("square"==l||"default"==l&&"square"==g)b.lineTo(k,e-k);else if("rounded"==l||"default"==l&&"rounded"==g)b.arcTo(m-.5*k,m-.5*k,0,0,0,m+.5*k,e-k);else if("invRound"==
-l||"default"==l&&"invRound"==g)b.arcTo(m+k,m+k,0,0,1,m+k,e-k);else if("snip"==l||"default"==l&&"snip"==g)b.lineTo(m+.5*k,e-k);else if("fold"==l||"default"==l&&"fold"==g)b.lineTo(k+m,e-m-k),b.lineTo(k+m,e-k)};Z.prototype.moveSWInner=function(b,d,f,c,e,g,l,m,k,n){n?"square"==l||"default"==l&&"square"==g?b.moveTo(k,e-k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.moveTo(k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.moveTo(k,
-e-m-k):b.moveTo(0,e-k)};Z.prototype.lineSWInner=function(b,d,f,c,e,g,l,m,k,n){n?"square"==l||"default"==l&&"square"==g?b.lineTo(k,e-k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.lineTo(k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(k,e-m-k):b.lineTo(0,e-k)};Z.prototype.moveSEInner=function(b,d,f,c,e,g,l,m,k,n){n?"square"==l||"default"==l&&"square"==g?b.moveTo(c-k,e-k):"rounded"==l||"default"==l&&"rounded"==
-g||"snip"==l||"default"==l&&"snip"==g?b.moveTo(c-k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.moveTo(c-k,e-m-k):b.moveTo(c-k,e)};Z.prototype.lineSEInner=function(b,d,f,c,e,g,l,m,k,n){n?"square"==l||"default"==l&&"square"==g?b.lineTo(c-k,e-k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.lineTo(c-k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(c-k,e-m-k):b.lineTo(c-
-k,e)};Z.prototype.moveNEInner=function(b,d,f,c,e,g,l,m,k,n){n?"square"==l||"default"==l&&"square"==g||n?b.moveTo(c-k,k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.moveTo(c-k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.moveTo(c-k,m+k):b.moveTo(c,k)};Z.prototype.lineNEInner=function(b,d,f,c,e,g,l,m,k,n){n?"square"==l||"default"==l&&"square"==g||n?b.lineTo(c-k,k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==
-l&&"snip"==g?b.lineTo(c-k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(c-k,m+k):b.lineTo(c,k)};Z.prototype.moveNWInner=function(b,d,f,c,e,g,l,m,k,n,q){n||q?!n&&q?b.moveTo(k,0):n&&!q?b.moveTo(0,k):"square"==l||"default"==l&&"square"==g?b.moveTo(k,k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.moveTo(k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.moveTo(k,m+k):b.moveTo(0,
-0)};Z.prototype.lineNWInner=function(b,d,f,c,e,g,l,m,k,n,q){n||q?!n&&q?b.lineTo(k,0):n&&!q?b.lineTo(0,k):"square"==l||"default"==l&&"square"==g?b.lineTo(k,k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.lineTo(k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(k,m+k):b.lineTo(0,0)};Z.prototype.paintFolds=function(b,d,f,c,e,g,l,m,k,n,q,G,u,A,v){if("fold"==g||"fold"==l||"fold"==m||"fold"==k||"fold"==n)("fold"==l||"default"==
-l&&"fold"==g)&&G&&v&&(b.moveTo(0,q),b.lineTo(q,q),b.lineTo(q,0)),("fold"==m||"default"==m&&"fold"==g)&&G&&u&&(b.moveTo(c-q,0),b.lineTo(c-q,q),b.lineTo(c,q)),("fold"==k||"default"==k&&"fold"==g)&&A&&u&&(b.moveTo(c-q,e),b.lineTo(c-q,e-q),b.lineTo(c,e-q)),("fold"==n||"default"==n&&"fold"==g)&&A&&v&&(b.moveTo(0,e-q),b.lineTo(q,e-q),b.lineTo(q,e))};mxCellRenderer.registerShape(Z.prototype.cst.RECT2,Z);Z.prototype.constraints=null;mxUtils.extend(Fa,mxConnector);Fa.prototype.origPaintEdgeShape=Fa.prototype.paintEdgeShape;
-Fa.prototype.paintEdgeShape=function(b,d,f){for(var c=[],e=0;e<d.length;e++)c.push(mxUtils.clone(d[e]));var e=b.state.dashed,g=b.state.fixDash;Fa.prototype.origPaintEdgeShape.apply(this,[b,c,f]);3<=b.state.strokeWidth&&(c=mxUtils.getValue(this.style,"fillColor",null),null!=c&&(b.setStrokeColor(c),b.setStrokeWidth(b.state.strokeWidth-2),b.setDashed(e,g),Fa.prototype.origPaintEdgeShape.apply(this,[b,d,f])))};mxCellRenderer.registerShape("filledEdge",Fa);"undefined"!==typeof StyleFormatPanel&&function(){var b=
-StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var d=this.format.getSelectionState(),f=b.apply(this,arguments);"umlFrame"==d.style.shape&&f.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return f}}();mxMarker.addMarker("dash",function(b,d,f,c,e,g,l,m,k,n){var q=e*(l+k+1),G=g*(l+k+1);return function(){b.begin();b.moveTo(c.x-q/2-G/2,c.y-G/2+q/2);b.lineTo(c.x+G/2-3*q/2,c.y-3*G/2-q/2);b.stroke()}});mxMarker.addMarker("box",
-function(b,d,f,c,e,g,l,m,k,n){var q=e*(l+k+1),G=g*(l+k+1),u=c.x+q/2,A=c.y+G/2;c.x-=q;c.y-=G;return function(){b.begin();b.moveTo(u-q/2-G/2,A-G/2+q/2);b.lineTo(u-q/2+G/2,A-G/2-q/2);b.lineTo(u+G/2-3*q/2,A-3*G/2-q/2);b.lineTo(u-G/2-3*q/2,A-3*G/2+q/2);b.close();n?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("cross",function(b,d,f,c,e,g,l,m,k,n){var q=e*(l+k+1),G=g*(l+k+1);return function(){b.begin();b.moveTo(c.x-q/2-G/2,c.y-G/2+q/2);b.lineTo(c.x+G/2-3*q/2,c.y-3*G/2-q/2);b.moveTo(c.x-q/2+G/2,c.y-
-G/2-q/2);b.lineTo(c.x-G/2-3*q/2,c.y-3*G/2+q/2);b.stroke()}});mxMarker.addMarker("circle",Na);mxMarker.addMarker("circlePlus",function(b,d,f,c,e,g,l,m,k,n){var q=c.clone(),G=Na.apply(this,arguments),u=e*(l+2*k),A=g*(l+2*k);return function(){G.apply(this,arguments);b.begin();b.moveTo(q.x-e*k,q.y-g*k);b.lineTo(q.x-2*u+e*k,q.y-2*A+g*k);b.moveTo(q.x-u-A+g*k,q.y-A+u-e*k);b.lineTo(q.x+A-u-g*k,q.y-A-u+e*k);b.stroke()}});mxMarker.addMarker("halfCircle",function(b,d,f,c,e,g,l,m,k,q){var n=e*(l+k+1),G=g*(l+
-k+1),u=c.clone();c.x-=n;c.y-=G;return function(){b.begin();b.moveTo(u.x-G,u.y+n);b.quadTo(c.x-G,c.y+n,c.x,c.y);b.quadTo(c.x+G,c.y-n,u.x+G,u.y-n);b.stroke()}});mxMarker.addMarker("async",function(b,d,f,c,e,g,l,m,k,n){d=e*k*1.118;f=g*k*1.118;e*=l+k;g*=l+k;var q=c.clone();q.x-=d;q.y-=f;c.x+=1*-e-d;c.y+=1*-g-f;return function(){b.begin();b.moveTo(q.x,q.y);m?b.lineTo(q.x-e-g/2,q.y-g+e/2):b.lineTo(q.x+g/2-e,q.y-g-e/2);b.lineTo(q.x-e,q.y-g);b.close();n?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("openAsync",
-function(b){b=null!=b?b:2;return function(d,f,c,e,g,l,m,k,q,n){g*=m+q;l*=m+q;var G=e.clone();return function(){d.begin();d.moveTo(G.x,G.y);k?d.lineTo(G.x-g-l/b,G.y-l+g/b):d.lineTo(G.x+l/b-g,G.y-l-g/b);d.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var $a=function(b,d,f){return Ma(b,["width"],d,function(d,c,e,g,l){l=b.shape.getEdgeWidth()*b.view.scale+f;return new mxPoint(g.x+c*d/4+e*l/2,g.y+e*d/4-c*l/2)},function(d,c,e,g,l,m){d=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,l.x,l.y,m.x,m.y));b.style.width=
-Math.round(2*d)/b.view.scale-f})},Ma=function(b,d,f,c,e){return ga(b,d,function(d){var e=b.absolutePoints,g=e.length-1;d=b.view.translate;var l=b.view.scale,m=f?e[0]:e[g],e=f?e[1]:e[g-1],g=e.x-m.x,k=e.y-m.y,q=Math.sqrt(g*g+k*k),m=c.call(this,q,g/q,k/q,m,e);return new mxPoint(m.x/l-d.x,m.y/l-d.y)},function(d,c,g){var l=b.absolutePoints,m=l.length-1;d=b.view.translate;var k=b.view.scale,q=f?l[0]:l[m],l=f?l[1]:l[m-1],m=l.x-q.x,n=l.y-q.y,G=Math.sqrt(m*m+n*n);c.x=(c.x+d.x)*k;c.y=(c.y+d.y)*k;e.call(this,
-G,m/G,n/G,q,l,c,g)})},Ha=function(b){return function(d){return[ga(d,["arrowWidth","arrowSize"],function(d){var f=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",da.prototype.arrowWidth))),c=Math.max(0,Math.min(b,mxUtils.getValue(this.state.style,"arrowSize",da.prototype.arrowSize)));return new mxPoint(d.x+(1-c)*d.width,d.y+(1-f)*d.height/2)},function(d,f){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(d.y+d.height/2-f.y)/d.height*2));this.state.style.arrowSize=Math.max(0,
-Math.min(b,(d.x+d.width-f.x)/d.width))})]}},Xa=function(b){return function(d){return[ga(d,["size"],function(d){var f=Math.max(0,Math.min(.5*d.height,parseFloat(mxUtils.getValue(this.state.style,"size",b))));return new mxPoint(d.x,d.y+f)},function(b,d){this.state.style.size=Math.max(0,d.y-b.y)},!0)]}},Va=function(b,d,f){return function(c){var e=[ga(c,["size"],function(f){var c=Math.max(0,Math.min(f.width,Math.min(f.height,parseFloat(mxUtils.getValue(this.state.style,"size",d)))))*b;return new mxPoint(f.x+
-c,f.y+c)},function(d,f){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(d.width,f.x-d.x),Math.min(d.height,f.y-d.y)))/b)},!1)];f&&mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ga(c));return e}},Oa=function(b,d,f,c,e){f=null!=f?f:.5;return function(g){var l=[ga(g,["size"],function(d){var f=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,c=parseFloat(mxUtils.getValue(this.state.style,"size",f?e:b));return new mxPoint(d.x+Math.max(0,Math.min(.5*d.width,
-c*(f?1:d.width))),d.getCenterY())},function(b,d,c){b=null!=e&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?d.x-b.x:Math.max(0,Math.min(f,(d.x-b.x)/b.width));this.state.style.size=b},!1,c)];d&&mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(Ga(g));return l}},Ya=function(b,d,f){b=null!=b?b:.5;return function(c){var e=[ga(c,["size"],function(c){var e=null!=f?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,g=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,
-"size",e?f:d)));return new mxPoint(c.x+Math.min(.75*c.width*b,g*(e?.75:.75*c.width)),c.y+c.height/4)},function(d,c){var e=null!=f&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?c.x-d.x:Math.max(0,Math.min(b,(c.x-d.x)/d.width*.75));this.state.style.size=e},!1,!0)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ga(c));return e}},La=function(){return function(b){var d=[];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d}},Ga=function(b,d){return ga(b,
-[mxConstants.STYLE_ARCSIZE],function(f){var c=null!=d?d:f.height/8;if("1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(f.x+f.width-Math.min(f.width/2,e),f.y+c)}e=Math.max(0,parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(f.x+f.width-Math.min(Math.max(f.width/2,f.height/2),Math.min(f.width,f.height)*
-e),f.y+c)},function(d,f,c){"1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(d.width,2*(d.x+d.width-f.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(d.width-f.x+d.x)/Math.min(d.width,d.height))))})},ga=function(b,d,f,c,e,g,l){var m=new mxHandle(b,null,mxVertexHandler.prototype.secondaryHandleImage);m.execute=function(b){for(var f=0;f<d.length;f++)this.copyStyle(d[f]);
-l&&l(b)};m.getPosition=f;m.setPosition=c;m.ignoreGrid=null!=e?e:!0;if(g){var k=m.positionChanged;m.positionChanged=function(){k.apply(this,arguments);b.view.invalidate(this.state.cell);b.view.validate()}}return m},Pa={link:function(b){return[$a(b,!0,10),$a(b,!1,10)]},flexArrow:function(b){var d=b.view.graph.gridSize/b.view.scale,f=[];mxUtils.getValue(b.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(f.push(Ma(b,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
-!0,function(d,f,c,e,g){d=(b.shape.getEdgeWidth()-b.shape.strokewidth)*b.view.scale;g=3*mxUtils.getNumber(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+f*(g+b.shape.strokewidth*b.view.scale)+c*d/2,e.y+c*(g+b.shape.strokewidth*b.view.scale)-f*d/2)},function(f,c,e,g,l,m,k){f=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-c,m.x,m.y);b.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-b.shape.strokewidth)/
-3)/100/b.view.scale;b.style.width=Math.round(2*f)/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(b.style[mxConstants.STYLE_STARTSIZE])-parseFloat(b.style[mxConstants.STYLE_ENDSIZE]))<d/6&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE])})),f.push(Ma(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(d,
-f,c,e,g){d=(b.shape.getStartArrowWidth()-b.shape.strokewidth)*b.view.scale;g=3*mxUtils.getNumber(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+f*(g+b.shape.strokewidth*b.view.scale)+c*d/2,e.y+c*(g+b.shape.strokewidth*b.view.scale)-f*d/2)},function(f,c,e,g,l,m,k){f=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-c,m.x,m.y);b.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-b.shape.strokewidth)/3)/
-100/b.view.scale;b.style.startWidth=Math.max(0,Math.round(2*f)-b.shape.getEdgeWidth())/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE],b.style.endWidth=b.style.startWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(b.style[mxConstants.STYLE_STARTSIZE])-parseFloat(b.style[mxConstants.STYLE_ENDSIZE]))<d/6&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(b.style.startWidth)-
-parseFloat(b.style.endWidth))<d&&(b.style.startWidth=b.style.endWidth))})));mxUtils.getValue(b.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(f.push(Ma(b,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(d,f,c,e,g){d=(b.shape.getEdgeWidth()-b.shape.strokewidth)*b.view.scale;g=3*mxUtils.getNumber(b.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+f*(g+b.shape.strokewidth*b.view.scale)-c*d/2,e.y+c*(g+b.shape.strokewidth*
-b.view.scale)+f*d/2)},function(f,c,e,g,l,m,k){f=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-c,m.x,m.y);b.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-b.shape.strokewidth)/3)/100/b.view.scale;b.style.width=Math.round(2*f)/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<
-d/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE])})),f.push(Ma(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(d,f,c,e,g){d=(b.shape.getEndArrowWidth()-b.shape.strokewidth)*b.view.scale;g=3*mxUtils.getNumber(b.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+f*(g+b.shape.strokewidth*b.view.scale)-c*d/2,e.y+c*(g+b.shape.strokewidth*b.view.scale)+f*d/2)},function(f,c,e,g,l,m,k){f=
-Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-c,m.x,m.y);b.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-b.shape.strokewidth)/3)/100/b.view.scale;b.style.endWidth=Math.max(0,Math.round(2*f)-b.shape.getEdgeWidth())/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE],b.style.startWidth=b.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-
-parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<d/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(b.style.endWidth)-parseFloat(b.style.startWidth))<d&&(b.style.endWidth=b.style.startWidth))})));return f},swimlane:function(b){var d=[];if(mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED)){var f=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));d.push(Ga(b,f/2))}d.push(ga(b,[mxConstants.STYLE_STARTSIZE],
-function(d){var f=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(d.getCenterX(),d.y+Math.max(0,Math.min(d.height,f))):new mxPoint(d.x+Math.max(0,Math.min(d.width,f)),d.getCenterY())},function(d,f){b.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(d.height,f.y-d.y))):Math.round(Math.max(0,
-Math.min(d.width,f.x-d.x)))},!1,null,function(d){if(mxEvent.isControlDown(d.getEvent())&&(d=b.view.graph,d.isTableRow(b.cell)||d.isTableCell(b.cell))){for(var f=d.getSwimlaneDirection(b.style),c=d.model.getParent(b.cell),c=d.model.getChildCells(c,!0),e=[],g=0;g<c.length;g++)c[g]!=b.cell&&d.isSwimlane(c[g])&&d.getSwimlaneDirection(d.getCurrentCellStyle(c[g]))==f&&e.push(c[g]);d.setCellStyles(mxConstants.STYLE_STARTSIZE,b.style[mxConstants.STYLE_STARTSIZE],e)}}));return d},label:La(),ext:La(),rectangle:La(),
+dispName:"Fold"}]}];Y.prototype.paintVertexShape=function(b,d,g,c,e){b.translate(d,g);this.strictDrawShape(b,0,0,c,e)};Y.prototype.strictDrawShape=function(b,d,g,c,e,f){var l=f&&f.rectStyle?f.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),k=f&&f.absoluteCornerSize?f.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",this.absoluteCornerSize),m=f&&f.size?f.size:Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),q=f&&f.rectOutline?f.rectOutline:
+mxUtils.getValue(this.style,"rectOutline",this.rectOutline),n=f&&f.indent?f.indent:Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),G=f&&f.dashed?f.dashed:mxUtils.getValue(this.style,"dashed",!1),A=f&&f.dashPattern?f.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),v=f&&f.relIndent?f.relIndent:Math.max(0,Math.min(50,n)),u=f&&f.top?f.top:mxUtils.getValue(this.style,"top",!0),p=f&&f.right?f.right:mxUtils.getValue(this.style,"right",!0),B=f&&f.bottom?f.bottom:
+mxUtils.getValue(this.style,"bottom",!0),x=f&&f.left?f.left:mxUtils.getValue(this.style,"left",!0),I=f&&f.topLeftStyle?f.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),t=f&&f.topRightStyle?f.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),y=f&&f.bottomRightStyle?f.bottomRightStyle:mxUtils.getValue(this.style,"bottomRightStyle","default"),z=f&&f.bottomLeftStyle?f.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),S=f&&f.fillColor?f.fillColor:
+mxUtils.getValue(this.style,"fillColor","#ffffff");f&&f.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var C=f&&f.strokeWidth?f.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),L=f&&f.fillColor2?f.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),ca=f&&f.gradientColor2?f.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),V=f&&f.gradientDirection2?f.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Da=f&&f.opacity?f.opacity:
+mxUtils.getValue(this.style,"opacity","100"),va=Math.max(0,Math.min(50,m));f=Y.prototype;b.setDashed(G);A&&""!=A&&b.setDashPattern(A);b.setStrokeWidth(C);m=Math.min(.5*e,.5*c,m);k||(m=va*Math.min(c,e)/100);m=Math.min(m,.5*Math.min(c,e));k||(n=Math.min(v*Math.min(c,e)/100));n=Math.min(n,.5*Math.min(c,e)-m);(u||p||B||x)&&"frame"!=q&&(b.begin(),u?f.moveNW(b,d,g,c,e,l,I,m,x):b.moveTo(0,0),u&&f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),p&&f.paintNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,
+c,e,l,y,m,B),B&&f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),x&&f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),b.close(),b.fill(),b.setShadow(!1),b.setFillColor(L),G=k=Da,"none"==L&&(k=0),"none"==ca&&(G=0),b.setGradient(L,ca,0,0,c,e,V,k,G),b.begin(),u?f.moveNWInner(b,d,g,c,e,l,I,m,n,u,x):b.moveTo(n,0),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),x&&B&&f.paintSWInner(b,d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),B&&p&&f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,
+d,g,c,e,l,t,m,n,u,p),p&&u&&f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),u&&x&&f.paintNWInner(b,d,g,c,e,l,I,m,n),b.fill(),"none"==S&&(b.begin(),f.paintFolds(b,d,g,c,e,l,I,t,y,z,m,u,p,B,x),b.stroke()));u||p||B||!x?u||p||!B||x?!u&&!p&&B&&x?"frame"!=q?(b.begin(),f.moveSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),"double"==q&&(f.moveNWInner(b,d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),f.paintSWInner(b,
+d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B)),b.stroke()):(b.begin(),f.moveSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.lineNWInner(b,d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),f.paintSWInner(b,d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),b.close(),b.fillAndStroke()):u||!p||B||x?!u&&p&&!B&&x?"frame"!=q?(b.begin(),f.moveSW(b,d,g,c,e,l,I,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),"double"==
+q&&(f.moveNWInner(b,d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x)),b.stroke(),b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),"double"==q&&(f.moveSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p)),b.stroke()):(b.begin(),f.moveSW(b,d,g,c,e,l,I,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.lineNWInner(b,d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),b.close(),b.fillAndStroke(),b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,
+l,y,m,B),f.lineSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),b.close(),b.fillAndStroke()):!u&&p&&B&&!x?"frame"!=q?(b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),"double"==q&&(f.moveSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p)),b.stroke()):(b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,
+d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.lineSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),b.close(),b.fillAndStroke()):!u&&p&&B&&x?"frame"!=q?(b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),"double"==q&&(f.moveNWInner(b,
+d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),f.paintSWInner(b,d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p)),b.stroke()):(b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.lineNWInner(b,d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),f.paintSWInner(b,
+d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),b.close(),b.fillAndStroke()):!u||p||B||x?u&&!p&&!B&&x?"frame"!=q?(b.begin(),f.moveSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),"double"==q&&(f.moveNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x)),b.stroke()):
+(b.begin(),f.moveSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.lineNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),b.close(),b.fillAndStroke()):u&&!p&&B&&!x?"frame"!=q?(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),"double"==q&&(f.moveNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u)),b.stroke(),b.begin(),
+f.moveSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),"double"==q&&(f.moveSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B)),b.stroke()):(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.lineNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),b.close(),b.fillAndStroke(),b.begin(),f.moveSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.lineSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),b.close(),b.fillAndStroke()):
+u&&!p&&B&&x?"frame"!=q?(b.begin(),f.moveSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),"double"==q&&(f.moveNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),f.paintSWInner(b,d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B)),b.stroke()):(b.begin(),f.moveSE(b,d,g,c,e,l,y,
+m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.lineNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),f.paintSWInner(b,d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),b.close(),b.fillAndStroke()):u&&p&&!B&&!x?"frame"!=q?(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,
+p),f.paintNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),"double"==q&&(f.moveSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u)),b.stroke()):(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.paintNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.lineSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,
+c,e,l,I,m,n,x,u),b.close(),b.fillAndStroke()):u&&p&&!B&&x?"frame"!=q?(b.begin(),f.moveSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.paintNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),"double"==q&&(f.moveSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x)),b.stroke()):
+(b.begin(),f.moveSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.paintNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.lineSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),b.close(),b.fillAndStroke()):u&&p&&B&&!x?"frame"!=q?(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,
+x),f.paintTop(b,d,g,c,e,l,t,m,p),f.paintNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),"double"==q&&(f.moveSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u)),b.stroke()):(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.paintNE(b,d,g,c,e,l,t,
+m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.lineSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),b.close(),b.fillAndStroke()):u&&p&&B&&x&&("frame"!=q?(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.paintNE(b,d,g,c,e,l,t,m,
+u),f.paintRight(b,d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),b.close(),"double"==q&&(f.moveSWInner(b,d,g,c,e,l,z,m,n,x),f.paintSWInner(b,d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,
+e,l,z,m,n,B,x),b.close()),b.stroke()):(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.paintNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),b.close(),f.moveSWInner(b,d,g,c,e,l,z,m,n,x),f.paintSWInner(b,d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,
+e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),b.close(),b.fillAndStroke())):"frame"!=q?(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),"double"==q&&(f.moveNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u)),b.stroke()):(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.lineNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,
+e,l,I,m,n,x,u),b.close(),b.fillAndStroke()):"frame"!=q?(b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),"double"==q&&(f.moveSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p)),b.stroke()):(b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.lineSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),b.close(),b.fillAndStroke()):"frame"!=q?(b.begin(),f.moveSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),"double"==q&&
+(f.moveSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B)),b.stroke()):(b.begin(),f.moveSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.lineSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),b.close(),b.fillAndStroke()):"frame"!=q?(b.begin(),f.moveSW(b,d,g,c,e,l,I,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),"double"==q&&(f.moveNWInner(b,d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x)),b.stroke()):(b.begin(),f.moveSW(b,d,g,c,e,l,I,m,B),f.paintLeft(b,
+d,g,c,e,l,I,m,u),f.lineNWInner(b,d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),b.close(),b.fillAndStroke());b.begin();f.paintFolds(b,d,g,c,e,l,I,t,y,z,m,u,p,B,x);b.stroke()};Y.prototype.moveNW=function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==l&&"square"==f||!k?b.moveTo(0,0):b.moveTo(0,m)};Y.prototype.moveNE=function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==l&&"square"==f||!k?b.moveTo(c,0):b.moveTo(c-m,0)};Y.prototype.moveSE=function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==l&&
+"square"==f||!k?b.moveTo(c,e):b.moveTo(c,e-m)};Y.prototype.moveSW=function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==l&&"square"==f||!k?b.moveTo(0,e):b.moveTo(m,e)};Y.prototype.paintNW=function(b,d,g,c,e,f,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==f||"invRound"==l||"default"==l&&"invRound"==f){d=0;if("rounded"==l||"default"==l&&"rounded"==f)d=1;b.arcTo(m,m,0,0,d,m,0)}else("snip"==l||"default"==l&&"snip"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(m,0);else b.lineTo(0,0)};Y.prototype.paintTop=
+function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==l&&"square"==f||!k?b.lineTo(c,0):b.lineTo(c-m,0)};Y.prototype.paintNE=function(b,d,g,c,e,f,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==f||"invRound"==l||"default"==l&&"invRound"==f){d=0;if("rounded"==l||"default"==l&&"rounded"==f)d=1;b.arcTo(m,m,0,0,d,c,m)}else("snip"==l||"default"==l&&"snip"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(c,m);else b.lineTo(c,0)};Y.prototype.paintRight=function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==
+l&&"square"==f||!k?b.lineTo(c,e):b.lineTo(c,e-m)};Y.prototype.paintLeft=function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==l&&"square"==f||!k?b.lineTo(0,0):b.lineTo(0,m)};Y.prototype.paintSE=function(b,d,g,c,e,f,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==f||"invRound"==l||"default"==l&&"invRound"==f){d=0;if("rounded"==l||"default"==l&&"rounded"==f)d=1;b.arcTo(m,m,0,0,d,c-m,e)}else("snip"==l||"default"==l&&"snip"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(c-m,e);else b.lineTo(c,
+e)};Y.prototype.paintBottom=function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==l&&"square"==f||!k?b.lineTo(0,e):b.lineTo(m,e)};Y.prototype.paintSW=function(b,d,g,c,e,f,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==f||"invRound"==l||"default"==l&&"invRound"==f){d=0;if("rounded"==l||"default"==l&&"rounded"==f)d=1;b.arcTo(m,m,0,0,d,0,e-m)}else("snip"==l||"default"==l&&"snip"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(0,e-m);else b.lineTo(0,e)};Y.prototype.paintNWInner=function(b,d,g,
+c,e,f,l,m,k){if("rounded"==l||"default"==l&&"rounded"==f)b.arcTo(m-.5*k,m-.5*k,0,0,0,k,.5*k+m);else if("invRound"==l||"default"==l&&"invRound"==f)b.arcTo(m+k,m+k,0,0,1,k,k+m);else if("snip"==l||"default"==l&&"snip"==f)b.lineTo(k,.5*k+m);else if("fold"==l||"default"==l&&"fold"==f)b.lineTo(k+m,k+m),b.lineTo(k,k+m)};Y.prototype.paintTopInner=function(b,d,g,c,e,f,l,m,k,n,q){n||q?!n&&q?b.lineTo(0,k):n&&!q?b.lineTo(k,0):n?"square"==l||"default"==l&&"square"==f?b.lineTo(k,k):"rounded"==l||"default"==l&&
+"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.lineTo(m+.5*k,k):b.lineTo(m+k,k):b.lineTo(0,k):b.lineTo(0,0)};Y.prototype.paintNEInner=function(b,d,g,c,e,f,l,m,k){if("rounded"==l||"default"==l&&"rounded"==f)b.arcTo(m-.5*k,m-.5*k,0,0,0,c-m-.5*k,k);else if("invRound"==l||"default"==l&&"invRound"==f)b.arcTo(m+k,m+k,0,0,1,c-m-k,k);else if("snip"==l||"default"==l&&"snip"==f)b.lineTo(c-m-.5*k,k);else if("fold"==l||"default"==l&&"fold"==f)b.lineTo(c-m-k,m+k),b.lineTo(c-m-k,k)};Y.prototype.paintRightInner=
+function(b,d,g,c,e,f,l,m,k,n,q){n||q?!n&&q?b.lineTo(c-k,0):n&&!q?b.lineTo(c,k):n?"square"==l||"default"==l&&"square"==f?b.lineTo(c-k,k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.lineTo(c-k,m+.5*k):b.lineTo(c-k,m+k):b.lineTo(c-k,0):b.lineTo(c,0)};Y.prototype.paintLeftInner=function(b,d,g,c,e,f,l,m,k,n,q){n||q?!n&&q?b.lineTo(k,e):n&&!q?b.lineTo(0,e-k):n?"square"==l||"default"==l&&"square"==f?b.lineTo(k,e-k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==
+l&&"snip"==f?b.lineTo(k,e-m-.5*k):b.lineTo(k,e-m-k):b.lineTo(k,e):b.lineTo(0,e)};Y.prototype.paintSEInner=function(b,d,g,c,e,f,l,m,k){if("rounded"==l||"default"==l&&"rounded"==f)b.arcTo(m-.5*k,m-.5*k,0,0,0,c-k,e-m-.5*k);else if("invRound"==l||"default"==l&&"invRound"==f)b.arcTo(m+k,m+k,0,0,1,c-k,e-m-k);else if("snip"==l||"default"==l&&"snip"==f)b.lineTo(c-k,e-m-.5*k);else if("fold"==l||"default"==l&&"fold"==f)b.lineTo(c-m-k,e-m-k),b.lineTo(c-k,e-m-k)};Y.prototype.paintBottomInner=function(b,d,g,c,
+e,f,l,m,k,n,q){n||q?!n&&q?b.lineTo(c,e-k):n&&!q?b.lineTo(c-k,e):"square"==l||"default"==l&&"square"==f||!n?b.lineTo(c-k,e-k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.lineTo(c-m-.5*k,e-k):b.lineTo(c-m-k,e-k):b.lineTo(c,e)};Y.prototype.paintSWInner=function(b,d,g,c,e,f,l,m,k,n){if(!n)b.lineTo(k,e);else if("square"==l||"default"==l&&"square"==f)b.lineTo(k,e-k);else if("rounded"==l||"default"==l&&"rounded"==f)b.arcTo(m-.5*k,m-.5*k,0,0,0,m+.5*k,e-k);else if("invRound"==
+l||"default"==l&&"invRound"==f)b.arcTo(m+k,m+k,0,0,1,m+k,e-k);else if("snip"==l||"default"==l&&"snip"==f)b.lineTo(m+.5*k,e-k);else if("fold"==l||"default"==l&&"fold"==f)b.lineTo(k+m,e-m-k),b.lineTo(k+m,e-k)};Y.prototype.moveSWInner=function(b,d,g,c,e,f,l,m,k,n){n?"square"==l||"default"==l&&"square"==f?b.moveTo(k,e-k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.moveTo(k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.moveTo(k,
+e-m-k):b.moveTo(0,e-k)};Y.prototype.lineSWInner=function(b,d,g,c,e,f,l,m,k,n){n?"square"==l||"default"==l&&"square"==f?b.lineTo(k,e-k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.lineTo(k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(k,e-m-k):b.lineTo(0,e-k)};Y.prototype.moveSEInner=function(b,d,g,c,e,f,l,m,k,n){n?"square"==l||"default"==l&&"square"==f?b.moveTo(c-k,e-k):"rounded"==l||"default"==l&&"rounded"==
+f||"snip"==l||"default"==l&&"snip"==f?b.moveTo(c-k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.moveTo(c-k,e-m-k):b.moveTo(c-k,e)};Y.prototype.lineSEInner=function(b,d,g,c,e,f,l,m,k,n){n?"square"==l||"default"==l&&"square"==f?b.lineTo(c-k,e-k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.lineTo(c-k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(c-k,e-m-k):b.lineTo(c-
+k,e)};Y.prototype.moveNEInner=function(b,d,g,c,e,f,l,m,k,n){n?"square"==l||"default"==l&&"square"==f||n?b.moveTo(c-k,k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.moveTo(c-k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.moveTo(c-k,m+k):b.moveTo(c,k)};Y.prototype.lineNEInner=function(b,d,g,c,e,f,l,m,k,n){n?"square"==l||"default"==l&&"square"==f||n?b.lineTo(c-k,k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==
+l&&"snip"==f?b.lineTo(c-k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(c-k,m+k):b.lineTo(c,k)};Y.prototype.moveNWInner=function(b,d,g,c,e,f,l,m,k,n,q){n||q?!n&&q?b.moveTo(k,0):n&&!q?b.moveTo(0,k):"square"==l||"default"==l&&"square"==f?b.moveTo(k,k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.moveTo(k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.moveTo(k,m+k):b.moveTo(0,
+0)};Y.prototype.lineNWInner=function(b,d,g,c,e,f,l,m,k,n,q){n||q?!n&&q?b.lineTo(k,0):n&&!q?b.lineTo(0,k):"square"==l||"default"==l&&"square"==f?b.lineTo(k,k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.lineTo(k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(k,m+k):b.lineTo(0,0)};Y.prototype.paintFolds=function(b,d,g,c,e,f,l,m,k,n,q,G,u,v,p){if("fold"==f||"fold"==l||"fold"==m||"fold"==k||"fold"==n)("fold"==l||"default"==
+l&&"fold"==f)&&G&&p&&(b.moveTo(0,q),b.lineTo(q,q),b.lineTo(q,0)),("fold"==m||"default"==m&&"fold"==f)&&G&&u&&(b.moveTo(c-q,0),b.lineTo(c-q,q),b.lineTo(c,q)),("fold"==k||"default"==k&&"fold"==f)&&v&&u&&(b.moveTo(c-q,e),b.lineTo(c-q,e-q),b.lineTo(c,e-q)),("fold"==n||"default"==n&&"fold"==f)&&v&&p&&(b.moveTo(0,e-q),b.lineTo(q,e-q),b.lineTo(q,e))};mxCellRenderer.registerShape(Y.prototype.cst.RECT2,Y);Y.prototype.constraints=null;mxUtils.extend(Fa,mxConnector);Fa.prototype.origPaintEdgeShape=Fa.prototype.paintEdgeShape;
+Fa.prototype.paintEdgeShape=function(b,d,g){for(var c=[],e=0;e<d.length;e++)c.push(mxUtils.clone(d[e]));var e=b.state.dashed,f=b.state.fixDash;Fa.prototype.origPaintEdgeShape.apply(this,[b,c,g]);3<=b.state.strokeWidth&&(c=mxUtils.getValue(this.style,"fillColor",null),null!=c&&(b.setStrokeColor(c),b.setStrokeWidth(b.state.strokeWidth-2),b.setDashed(e,f),Fa.prototype.origPaintEdgeShape.apply(this,[b,d,g])))};mxCellRenderer.registerShape("filledEdge",Fa);"undefined"!==typeof StyleFormatPanel&&function(){var b=
+StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var d=this.editorUi.getSelectionState(),g=b.apply(this,arguments);"umlFrame"==d.style.shape&&g.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return g}}();mxMarker.addMarker("dash",function(b,d,g,c,e,f,l,m,k,n){var q=e*(l+k+1),G=f*(l+k+1);return function(){b.begin();b.moveTo(c.x-q/2-G/2,c.y-G/2+q/2);b.lineTo(c.x+G/2-3*q/2,c.y-3*G/2-q/2);b.stroke()}});mxMarker.addMarker("box",
+function(b,d,g,c,e,f,l,m,k,n){var q=e*(l+k+1),G=f*(l+k+1),u=c.x+q/2,v=c.y+G/2;c.x-=q;c.y-=G;return function(){b.begin();b.moveTo(u-q/2-G/2,v-G/2+q/2);b.lineTo(u-q/2+G/2,v-G/2-q/2);b.lineTo(u+G/2-3*q/2,v-3*G/2-q/2);b.lineTo(u-G/2-3*q/2,v-3*G/2+q/2);b.close();n?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("cross",function(b,d,g,c,e,f,l,m,k,n){var q=e*(l+k+1),G=f*(l+k+1);return function(){b.begin();b.moveTo(c.x-q/2-G/2,c.y-G/2+q/2);b.lineTo(c.x+G/2-3*q/2,c.y-3*G/2-q/2);b.moveTo(c.x-q/2+G/2,c.y-
+G/2-q/2);b.lineTo(c.x-G/2-3*q/2,c.y-3*G/2+q/2);b.stroke()}});mxMarker.addMarker("circle",Na);mxMarker.addMarker("circlePlus",function(b,d,g,c,e,f,l,m,k,n){var q=c.clone(),G=Na.apply(this,arguments),u=e*(l+2*k),v=f*(l+2*k);return function(){G.apply(this,arguments);b.begin();b.moveTo(q.x-e*k,q.y-f*k);b.lineTo(q.x-2*u+e*k,q.y-2*v+f*k);b.moveTo(q.x-u-v+f*k,q.y-v+u-e*k);b.lineTo(q.x+v-u-f*k,q.y-v-u+e*k);b.stroke()}});mxMarker.addMarker("halfCircle",function(b,d,g,c,e,f,l,m,k,q){var n=e*(l+k+1),G=f*(l+
+k+1),u=c.clone();c.x-=n;c.y-=G;return function(){b.begin();b.moveTo(u.x-G,u.y+n);b.quadTo(c.x-G,c.y+n,c.x,c.y);b.quadTo(c.x+G,c.y-n,u.x+G,u.y-n);b.stroke()}});mxMarker.addMarker("async",function(b,d,g,c,e,f,l,m,k,n){d=e*k*1.118;g=f*k*1.118;e*=l+k;f*=l+k;var q=c.clone();q.x-=d;q.y-=g;c.x+=1*-e-d;c.y+=1*-f-g;return function(){b.begin();b.moveTo(q.x,q.y);m?b.lineTo(q.x-e-f/2,q.y-f+e/2):b.lineTo(q.x+f/2-e,q.y-f-e/2);b.lineTo(q.x-e,q.y-f);b.close();n?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("openAsync",
+function(b){b=null!=b?b:2;return function(d,g,c,e,f,l,m,k,q,n){f*=m+q;l*=m+q;var G=e.clone();return function(){d.begin();d.moveTo(G.x,G.y);k?d.lineTo(G.x-f-l/b,G.y-l+f/b):d.lineTo(G.x+l/b-f,G.y-l-f/b);d.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var $a=function(b,d,g){return Ma(b,["width"],d,function(d,c,e,f,l){l=b.shape.getEdgeWidth()*b.view.scale+g;return new mxPoint(f.x+c*d/4+e*l/2,f.y+e*d/4-c*l/2)},function(d,c,e,f,l,m){d=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,l.x,l.y,m.x,m.y));b.style.width=
+Math.round(2*d)/b.view.scale-g})},Ma=function(b,d,g,c,e){return ga(b,d,function(d){var e=b.absolutePoints,f=e.length-1;d=b.view.translate;var l=b.view.scale,m=g?e[0]:e[f],e=g?e[1]:e[f-1],f=e.x-m.x,k=e.y-m.y,q=Math.sqrt(f*f+k*k),m=c.call(this,q,f/q,k/q,m,e);return new mxPoint(m.x/l-d.x,m.y/l-d.y)},function(d,c,f){var l=b.absolutePoints,m=l.length-1;d=b.view.translate;var k=b.view.scale,q=g?l[0]:l[m],l=g?l[1]:l[m-1],m=l.x-q.x,n=l.y-q.y,G=Math.sqrt(m*m+n*n);c.x=(c.x+d.x)*k;c.y=(c.y+d.y)*k;e.call(this,
+G,m/G,n/G,q,l,c,f)})},Ha=function(b){return function(d){return[ga(d,["arrowWidth","arrowSize"],function(d){var g=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",da.prototype.arrowWidth))),c=Math.max(0,Math.min(b,mxUtils.getValue(this.state.style,"arrowSize",da.prototype.arrowSize)));return new mxPoint(d.x+(1-c)*d.width,d.y+(1-g)*d.height/2)},function(d,g){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(d.y+d.height/2-g.y)/d.height*2));this.state.style.arrowSize=Math.max(0,
+Math.min(b,(d.x+d.width-g.x)/d.width))})]}},Xa=function(b){return function(d){return[ga(d,["size"],function(d){var g=Math.max(0,Math.min(.5*d.height,parseFloat(mxUtils.getValue(this.state.style,"size",b))));return new mxPoint(d.x,d.y+g)},function(b,d){this.state.style.size=Math.max(0,d.y-b.y)},!0)]}},Va=function(b,d,g){return function(c){var e=[ga(c,["size"],function(g){var c=Math.max(0,Math.min(g.width,Math.min(g.height,parseFloat(mxUtils.getValue(this.state.style,"size",d)))))*b;return new mxPoint(g.x+
+c,g.y+c)},function(d,g){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(d.width,g.x-d.x),Math.min(d.height,g.y-d.y)))/b)},!1)];g&&mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ga(c));return e}},Oa=function(b,d,g,c,e){g=null!=g?g:.5;return function(f){var l=[ga(f,["size"],function(d){var g=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,c=parseFloat(mxUtils.getValue(this.state.style,"size",g?e:b));return new mxPoint(d.x+Math.max(0,Math.min(.5*d.width,
+c*(g?1:d.width))),d.getCenterY())},function(b,d,c){b=null!=e&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?d.x-b.x:Math.max(0,Math.min(g,(d.x-b.x)/b.width));this.state.style.size=b},!1,c)];d&&mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(Ga(f));return l}},Ya=function(b,d,g){b=null!=b?b:.5;return function(c){var e=[ga(c,["size"],function(c){var e=null!=g?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,f=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,
+"size",e?g:d)));return new mxPoint(c.x+Math.min(.75*c.width*b,f*(e?.75:.75*c.width)),c.y+c.height/4)},function(d,c){var e=null!=g&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?c.x-d.x:Math.max(0,Math.min(b,(c.x-d.x)/d.width*.75));this.state.style.size=e},!1,!0)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ga(c));return e}},La=function(){return function(b){var d=[];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d}},Ga=function(b,d){return ga(b,
+[mxConstants.STYLE_ARCSIZE],function(g){var c=null!=d?d:g.height/8;if("1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(g.x+g.width-Math.min(g.width/2,e),g.y+c)}e=Math.max(0,parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(g.x+g.width-Math.min(Math.max(g.width/2,g.height/2),Math.min(g.width,g.height)*
+e),g.y+c)},function(d,g,c){"1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(d.width,2*(d.x+d.width-g.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(d.width-g.x+d.x)/Math.min(d.width,d.height))))})},ga=function(b,d,g,c,e,f,l){var m=new mxHandle(b,null,mxVertexHandler.prototype.secondaryHandleImage);m.execute=function(b){for(var g=0;g<d.length;g++)this.copyStyle(d[g]);
+l&&l(b)};m.getPosition=g;m.setPosition=c;m.ignoreGrid=null!=e?e:!0;if(f){var k=m.positionChanged;m.positionChanged=function(){k.apply(this,arguments);b.view.invalidate(this.state.cell);b.view.validate()}}return m},Pa={link:function(b){return[$a(b,!0,10),$a(b,!1,10)]},flexArrow:function(b){var d=b.view.graph.gridSize/b.view.scale,g=[];mxUtils.getValue(b.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(g.push(Ma(b,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
+!0,function(d,g,c,e,f){d=(b.shape.getEdgeWidth()-b.shape.strokewidth)*b.view.scale;f=3*mxUtils.getNumber(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+g*(f+b.shape.strokewidth*b.view.scale)+c*d/2,e.y+c*(f+b.shape.strokewidth*b.view.scale)-g*d/2)},function(g,c,e,f,l,m,k){g=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-c,m.x,m.y);b.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-b.shape.strokewidth)/
+3)/100/b.view.scale;b.style.width=Math.round(2*g)/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(b.style[mxConstants.STYLE_STARTSIZE])-parseFloat(b.style[mxConstants.STYLE_ENDSIZE]))<d/6&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE])})),g.push(Ma(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(d,
+g,c,e,f){d=(b.shape.getStartArrowWidth()-b.shape.strokewidth)*b.view.scale;f=3*mxUtils.getNumber(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+g*(f+b.shape.strokewidth*b.view.scale)+c*d/2,e.y+c*(f+b.shape.strokewidth*b.view.scale)-g*d/2)},function(g,c,e,f,l,m,k){g=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-c,m.x,m.y);b.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-b.shape.strokewidth)/3)/
+100/b.view.scale;b.style.startWidth=Math.max(0,Math.round(2*g)-b.shape.getEdgeWidth())/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE],b.style.endWidth=b.style.startWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(b.style[mxConstants.STYLE_STARTSIZE])-parseFloat(b.style[mxConstants.STYLE_ENDSIZE]))<d/6&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(b.style.startWidth)-
+parseFloat(b.style.endWidth))<d&&(b.style.startWidth=b.style.endWidth))})));mxUtils.getValue(b.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(g.push(Ma(b,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(d,g,c,e,f){d=(b.shape.getEdgeWidth()-b.shape.strokewidth)*b.view.scale;f=3*mxUtils.getNumber(b.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+g*(f+b.shape.strokewidth*b.view.scale)-c*d/2,e.y+c*(f+b.shape.strokewidth*
+b.view.scale)+g*d/2)},function(g,c,e,f,l,m,k){g=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-c,m.x,m.y);b.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-b.shape.strokewidth)/3)/100/b.view.scale;b.style.width=Math.round(2*g)/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<
+d/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE])})),g.push(Ma(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(d,g,c,e,f){d=(b.shape.getEndArrowWidth()-b.shape.strokewidth)*b.view.scale;f=3*mxUtils.getNumber(b.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+g*(f+b.shape.strokewidth*b.view.scale)-c*d/2,e.y+c*(f+b.shape.strokewidth*b.view.scale)+g*d/2)},function(g,c,e,f,l,m,k){g=
+Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-c,m.x,m.y);b.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-b.shape.strokewidth)/3)/100/b.view.scale;b.style.endWidth=Math.max(0,Math.round(2*g)-b.shape.getEdgeWidth())/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE],b.style.startWidth=b.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-
+parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<d/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(b.style.endWidth)-parseFloat(b.style.startWidth))<d&&(b.style.endWidth=b.style.startWidth))})));return g},swimlane:function(b){var d=[];if(mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED)){var g=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));d.push(Ga(b,g/2))}d.push(ga(b,[mxConstants.STYLE_STARTSIZE],
+function(d){var g=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(d.getCenterX(),d.y+Math.max(0,Math.min(d.height,g))):new mxPoint(d.x+Math.max(0,Math.min(d.width,g)),d.getCenterY())},function(d,g){b.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(d.height,g.y-d.y))):Math.round(Math.max(0,
+Math.min(d.width,g.x-d.x)))},!1,null,function(d){if(mxEvent.isControlDown(d.getEvent())&&(d=b.view.graph,d.isTableRow(b.cell)||d.isTableCell(b.cell))){for(var g=d.getSwimlaneDirection(b.style),c=d.model.getParent(b.cell),c=d.model.getChildCells(c,!0),e=[],f=0;f<c.length;f++)c[f]!=b.cell&&d.isSwimlane(c[f])&&d.getSwimlaneDirection(d.getCurrentCellStyle(c[f]))==g&&e.push(c[f]);d.setCellStyles(mxConstants.STYLE_STARTSIZE,b.style[mxConstants.STYLE_STARTSIZE],e)}}));return d},label:La(),ext:La(),rectangle:La(),
triangle:La(),rhombus:La(),umlLifeline:function(b){return[ga(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",Q.prototype.size))));return new mxPoint(b.getCenterX(),b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},umlFrame:function(b){return[ga(b,["width","height"],function(b){var d=Math.max(V.prototype.corner,Math.min(b.width,mxUtils.getValue(this.state.style,"width",V.prototype.width))),
-f=Math.max(1.5*V.prototype.corner,Math.min(b.height,mxUtils.getValue(this.state.style,"height",V.prototype.height)));return new mxPoint(b.x+d,b.y+f)},function(b,d){this.state.style.width=Math.round(Math.max(V.prototype.corner,Math.min(b.width,d.x-b.x)));this.state.style.height=Math.round(Math.max(1.5*V.prototype.corner,Math.min(b.height,d.y-b.y)))},!1)]},process:function(b){var d=[ga(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),f=parseFloat(mxUtils.getValue(this.state.style,
-"size",J.prototype.size));return d?new mxPoint(b.x+f,b.y+b.height/4):new mxPoint(b.x+b.width*f,b.y+b.height/4)},function(b,d){var f="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*b.width,d.x-b.x)):Math.max(0,Math.min(.5,(d.x-b.x)/b.width));this.state.style.size=f},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},cross:function(b){return[ga(b,["size"],function(b){var d=Math.min(b.width,b.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
-"size",Ca.prototype.size)))*d/2;return new mxPoint(b.getCenterX()-d,b.getCenterY()-d)},function(b,d){var f=Math.min(b.width,b.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,b.getCenterY()-d.y)/f*2,Math.max(0,b.getCenterX()-d.x)/f*2)))})]},note:function(b){return[ga(b,["size"],function(b){var f=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",d.prototype.size)))));return new mxPoint(b.x+b.width-f,b.y+f)},function(b,d){this.state.style.size=
-Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},note2:function(b){return[ga(b,["size"],function(b){var d=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},manualInput:function(b){var d=[ga(b,["size"],function(b){var d=
-Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",X.prototype.size)));return new mxPoint(b.x+b.width/4,b.y+3*d/4)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,4*(d.y-b.y)/3)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},dataStorage:function(b){return[ga(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),f=parseFloat(mxUtils.getValue(this.state.style,"size",d?ha.prototype.fixedSize:
-ha.prototype.size));return new mxPoint(b.x+b.width-f*(d?1:b.width),b.getCenterY())},function(b,d){var f="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(b.width,b.x+b.width-d.x)):Math.max(0,Math.min(1,(b.x+b.width-d.x)/b.width));this.state.style.size=f},!1)]},callout:function(b){var d=[ga(b,["size","position"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",K.prototype.size))),f=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
-"position",K.prototype.position)));mxUtils.getValue(this.state.style,"base",K.prototype.base);return new mxPoint(b.x+f*b.width,b.y+b.height-d)},function(b,d){mxUtils.getValue(this.state.style,"base",K.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(b.height,b.y+b.height-d.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ga(b,["position2"],function(b){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",K.prototype.position2)));
-return new mxPoint(b.x+d*b.width,b.y+b.height)},function(b,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ga(b,["base"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",K.prototype.size))),f=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",K.prototype.position))),c=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"base",K.prototype.base)));return new mxPoint(b.x+Math.min(b.width,
-f*b.width+c),b.y+b.height-d)},function(b,d){var f=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",K.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(b.width,d.x-b.x-f*b.width)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},internalStorage:function(b){var d=[ga(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",ma.prototype.dx))),f=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,
-"dy",ma.prototype.dy)));return new mxPoint(b.x+d,b.y+f)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},module:function(b){return[ga(b,["jettyWidth","jettyHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"jettyWidth",la.prototype.jettyWidth))),f=Math.max(0,Math.min(b.height,
-mxUtils.getValue(this.state.style,"jettyHeight",la.prototype.jettyHeight)));return new mxPoint(b.x+d/2,b.y+2*f)},function(b,d){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y))/2)})]},corner:function(b){return[ga(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",qa.prototype.dx))),f=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,
-"dy",qa.prototype.dy)));return new mxPoint(b.x+d,b.y+f)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},tee:function(b){return[ga(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",ia.prototype.dx))),f=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",ia.prototype.dy)));return new mxPoint(b.x+(b.width+d)/2,b.y+f)},function(b,
-d){this.state.style.dx=Math.round(Math.max(0,2*Math.min(b.width/2,d.x-b.x-b.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},singleArrow:Ha(1),doubleArrow:Ha(.5),folder:function(b){return[ga(b,["tabWidth","tabHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"tabWidth",u.prototype.tabWidth))),f=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"tabHeight",u.prototype.tabHeight)));mxUtils.getValue(this.state.style,
-"tabPosition",u.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(d=b.width-d);return new mxPoint(b.x+d,b.y+f)},function(b,d){var f=Math.max(0,Math.min(b.width,d.x-b.x));mxUtils.getValue(this.state.style,"tabPosition",u.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(f=b.width-f);this.state.style.tabWidth=Math.round(f);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},document:function(b){return[ga(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
+g=Math.max(1.5*V.prototype.corner,Math.min(b.height,mxUtils.getValue(this.state.style,"height",V.prototype.height)));return new mxPoint(b.x+d,b.y+g)},function(b,d){this.state.style.width=Math.round(Math.max(V.prototype.corner,Math.min(b.width,d.x-b.x)));this.state.style.height=Math.round(Math.max(1.5*V.prototype.corner,Math.min(b.height,d.y-b.y)))},!1)]},process:function(b){var d=[ga(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),g=parseFloat(mxUtils.getValue(this.state.style,
+"size",J.prototype.size));return d?new mxPoint(b.x+g,b.y+b.height/4):new mxPoint(b.x+b.width*g,b.y+b.height/4)},function(b,d){var g="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*b.width,d.x-b.x)):Math.max(0,Math.min(.5,(d.x-b.x)/b.width));this.state.style.size=g},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},cross:function(b){return[ga(b,["size"],function(b){var d=Math.min(b.width,b.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
+"size",Ca.prototype.size)))*d/2;return new mxPoint(b.getCenterX()-d,b.getCenterY()-d)},function(b,d){var g=Math.min(b.width,b.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,b.getCenterY()-d.y)/g*2,Math.max(0,b.getCenterX()-d.x)/g*2)))})]},note:function(b){return[ga(b,["size"],function(b){var g=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",d.prototype.size)))));return new mxPoint(b.x+b.width-g,b.y+g)},function(b,d){this.state.style.size=
+Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},note2:function(b){return[ga(b,["size"],function(b){var d=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},manualInput:function(b){var d=[ga(b,["size"],function(b){var d=
+Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",X.prototype.size)));return new mxPoint(b.x+b.width/4,b.y+3*d/4)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,4*(d.y-b.y)/3)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},dataStorage:function(b){return[ga(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),g=parseFloat(mxUtils.getValue(this.state.style,"size",d?ha.prototype.fixedSize:
+ha.prototype.size));return new mxPoint(b.x+b.width-g*(d?1:b.width),b.getCenterY())},function(b,d){var g="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(b.width,b.x+b.width-d.x)):Math.max(0,Math.min(1,(b.x+b.width-d.x)/b.width));this.state.style.size=g},!1)]},callout:function(b){var d=[ga(b,["size","position"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",K.prototype.size))),g=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
+"position",K.prototype.position)));mxUtils.getValue(this.state.style,"base",K.prototype.base);return new mxPoint(b.x+g*b.width,b.y+b.height-d)},function(b,d){mxUtils.getValue(this.state.style,"base",K.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(b.height,b.y+b.height-d.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ga(b,["position2"],function(b){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",K.prototype.position2)));
+return new mxPoint(b.x+d*b.width,b.y+b.height)},function(b,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ga(b,["base"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",K.prototype.size))),g=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",K.prototype.position))),c=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"base",K.prototype.base)));return new mxPoint(b.x+Math.min(b.width,
+g*b.width+c),b.y+b.height-d)},function(b,d){var g=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",K.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(b.width,d.x-b.x-g*b.width)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},internalStorage:function(b){var d=[ga(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",ma.prototype.dx))),g=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,
+"dy",ma.prototype.dy)));return new mxPoint(b.x+d,b.y+g)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},module:function(b){return[ga(b,["jettyWidth","jettyHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"jettyWidth",la.prototype.jettyWidth))),g=Math.max(0,Math.min(b.height,
+mxUtils.getValue(this.state.style,"jettyHeight",la.prototype.jettyHeight)));return new mxPoint(b.x+d/2,b.y+2*g)},function(b,d){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y))/2)})]},corner:function(b){return[ga(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",qa.prototype.dx))),g=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,
+"dy",qa.prototype.dy)));return new mxPoint(b.x+d,b.y+g)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},tee:function(b){return[ga(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",ia.prototype.dx))),g=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",ia.prototype.dy)));return new mxPoint(b.x+(b.width+d)/2,b.y+g)},function(b,
+d){this.state.style.dx=Math.round(Math.max(0,2*Math.min(b.width/2,d.x-b.x-b.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},singleArrow:Ha(1),doubleArrow:Ha(.5),folder:function(b){return[ga(b,["tabWidth","tabHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"tabWidth",u.prototype.tabWidth))),g=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"tabHeight",u.prototype.tabHeight)));mxUtils.getValue(this.state.style,
+"tabPosition",u.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(d=b.width-d);return new mxPoint(b.x+d,b.y+g)},function(b,d){var g=Math.max(0,Math.min(b.width,d.x-b.x));mxUtils.getValue(this.state.style,"tabPosition",u.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(g=b.width-g);this.state.style.tabWidth=Math.round(g);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},document:function(b){return[ga(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
"size",F.prototype.size))));return new mxPoint(b.x+3*b.width/4,b.y+(1-d)*b.height)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(b.y+b.height-d.y)/b.height))},!1)]},tape:function(b){return[ga(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",x.prototype.size))));return new mxPoint(b.getCenterX(),b.y+d*b.height/2)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(d.y-b.y)/b.height*2))},!1)]},isoCube2:function(b){return[ga(b,
["isoAngle"],function(b){var d=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",l.isoAngle))))*Math.PI/200;return new mxPoint(b.x,b.y+Math.min(b.width*Math.tan(d),.5*b.height))},function(b,d){this.state.style.isoAngle=Math.max(0,50*(d.y-b.y)/b.height)},!0)]},cylinder2:Xa(q.prototype.size),cylinder3:Xa(m.prototype.size),offPageConnector:function(b){return[ga(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ta.prototype.size))));
return new mxPoint(b.getCenterX(),b.y+(1-d)*b.height)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(b.y+b.height-d.y)/b.height))},!1)]},"mxgraph.basic.rect":function(b){var d=[Graph.createHandle(b,["size"],function(b){var d=Math.max(0,Math.min(b.width/2,b.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(b.x+d,b.y+d)},function(b,d){this.state.style.size=Math.round(100*Math.max(0,Math.min(b.height/2,b.width/2,d.x-b.x)))/100})];b=Graph.createHandle(b,
-["indent"],function(b){var d=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(b.x+.75*b.width,b.y+d*b.height/200)},function(b,d){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(d.y-b.y)/b.height)))/100});d.push(b);return d},step:Oa(M.prototype.size,!0,null,!0,M.prototype.fixedSize),hexagon:Oa(aa.prototype.size,!0,.5,!0,aa.prototype.fixedSize),curlyBracket:Oa(D.prototype.size,!1),display:Oa(wa.prototype.size,!1),cube:Va(1,
+["indent"],function(b){var d=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(b.x+.75*b.width,b.y+d*b.height/200)},function(b,d){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(d.y-b.y)/b.height)))/100});d.push(b);return d},step:Oa(M.prototype.size,!0,null,!0,M.prototype.fixedSize),hexagon:Oa(Z.prototype.size,!0,.5,!0,Z.prototype.fixedSize),curlyBracket:Oa(D.prototype.size,!1),display:Oa(wa.prototype.size,!1),cube:Va(1,
e.prototype.size,!1),card:Va(.5,y.prototype.size,!0),loopLimit:Va(.5,ea.prototype.size,!0),trapezoid:Ya(.5,z.prototype.size,z.prototype.fixedSize),parallelogram:Ya(1,H.prototype.size,H.prototype.fixedSize)};Graph.createHandle=ga;Graph.handleFactory=Pa;var eb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var b=eb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var d=this.state.style.shape;null==mxCellRenderer.defaultShapes[d]&&
null==mxStencilRegistry.getStencil(d)?d=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(d=mxConstants.SHAPE_SWIMLANE);d=Pa[d];null==d&&null!=this.state.shape&&this.state.shape.isRoundable()&&(d=Pa[mxConstants.SHAPE_RECTANGLE]);null!=d&&(d=d(this.state),null!=d&&(b=null==b?d:b.concat(d)))}return b};mxEdgeHandler.prototype.createCustomHandles=function(){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)&&(b=mxConstants.SHAPE_CONNECTOR);
-b=Pa[b];return null!=b?b(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Qa=new mxPoint(1,0),Ra=new mxPoint(1,0),Ha=mxUtils.toRadians(-30),Qa=mxUtils.getRotatedPoint(Qa,Math.cos(Ha),Math.sin(Ha)),Ha=mxUtils.toRadians(-150),Ra=mxUtils.getRotatedPoint(Ra,Math.cos(Ha),Math.sin(Ha));mxEdgeStyle.IsometricConnector=function(b,d,f,c,e){var g=b.view;c=null!=c&&0<c.length?c[0]:null;var l=b.absolutePoints,m=l[0],l=l[l.length-1];null!=c&&(c=g.transformControlPoint(b,c));null==
-m&&null!=d&&(m=new mxPoint(d.getCenterX(),d.getCenterY()));null==l&&null!=f&&(l=new mxPoint(f.getCenterX(),f.getCenterY()));var k=Qa.x,q=Qa.y,n=Ra.x,G=Ra.y,u="horizontal"==mxUtils.getValue(b.style,"elbow","horizontal");if(null!=l&&null!=m){b=function(b,d,f){b-=A.x;var c=d-A.y;d=(G*b-n*c)/(k*G-q*n);b=(q*b-k*c)/(q*n-k*G);u?(f&&(A=new mxPoint(A.x+k*d,A.y+q*d),e.push(A)),A=new mxPoint(A.x+n*b,A.y+G*b)):(f&&(A=new mxPoint(A.x+n*b,A.y+G*b),e.push(A)),A=new mxPoint(A.x+k*d,A.y+q*d));e.push(A)};var A=m;null==
-c&&(c=new mxPoint(m.x+(l.x-m.x)/2,m.y+(l.y-m.y)/2));b(c.x,c.y,!0);b(l.x,l.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var fb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(b,d){if(d==mxEdgeStyle.IsometricConnector){var f=new mxElbowEdgeHandler(b);f.snapToTerminals=!1;return f}return fb.apply(this,arguments)};g.prototype.constraints=[];p.prototype.getConstraints=function(b,d,f){b=[];var c=Math.tan(mxUtils.toRadians(30)),e=(.5-
-c)/2,c=Math.min(d,f/(.5+c));d=(d-c)/2;f=(f-c)/2;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f+.25*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,f+c*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,f+.25*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,f+.75*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,f+(1-e)*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f+.75*c));return b};l.prototype.getConstraints=
-function(b,d,f){b=[];var c=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,c=Math.min(d*Math.tan(c),.5*f);b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f-c));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,f-c));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));return b};K.prototype.getConstraints=function(b,d,f){b=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var c=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(f-c)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
-d,f-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(f-c)));d>=2*c&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
+b=Pa[b];return null!=b?b(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Qa=new mxPoint(1,0),Ra=new mxPoint(1,0),Ha=mxUtils.toRadians(-30),Qa=mxUtils.getRotatedPoint(Qa,Math.cos(Ha),Math.sin(Ha)),Ha=mxUtils.toRadians(-150),Ra=mxUtils.getRotatedPoint(Ra,Math.cos(Ha),Math.sin(Ha));mxEdgeStyle.IsometricConnector=function(b,d,g,c,e){var f=b.view;c=null!=c&&0<c.length?c[0]:null;var l=b.absolutePoints,m=l[0],l=l[l.length-1];null!=c&&(c=f.transformControlPoint(b,c));null==
+m&&null!=d&&(m=new mxPoint(d.getCenterX(),d.getCenterY()));null==l&&null!=g&&(l=new mxPoint(g.getCenterX(),g.getCenterY()));var k=Qa.x,q=Qa.y,n=Ra.x,G=Ra.y,u="horizontal"==mxUtils.getValue(b.style,"elbow","horizontal");if(null!=l&&null!=m){b=function(b,d,g){b-=v.x;var c=d-v.y;d=(G*b-n*c)/(k*G-q*n);b=(q*b-k*c)/(q*n-k*G);u?(g&&(v=new mxPoint(v.x+k*d,v.y+q*d),e.push(v)),v=new mxPoint(v.x+n*b,v.y+G*b)):(g&&(v=new mxPoint(v.x+n*b,v.y+G*b),e.push(v)),v=new mxPoint(v.x+k*d,v.y+q*d));e.push(v)};var v=m;null==
+c&&(c=new mxPoint(m.x+(l.x-m.x)/2,m.y+(l.y-m.y)/2));b(c.x,c.y,!0);b(l.x,l.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var fb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(b,d){if(d==mxEdgeStyle.IsometricConnector){var g=new mxElbowEdgeHandler(b);g.snapToTerminals=!1;return g}return fb.apply(this,arguments)};f.prototype.constraints=[];p.prototype.getConstraints=function(b,d,g){b=[];var c=Math.tan(mxUtils.toRadians(30)),e=(.5-
+c)/2,c=Math.min(d,g/(.5+c));d=(d-c)/2;g=(g-c)/2;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g+.25*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,g+c*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,g+.25*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,g+.75*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,g+(1-e)*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g+.75*c));return b};l.prototype.getConstraints=
+function(b,d,g){b=[];var c=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,c=Math.min(d*Math.tan(c),.5*g);b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g-c));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,g-c));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));return b};K.prototype.getConstraints=function(b,d,g){b=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var c=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(g-c)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
+d,g-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(g-c)));d>=2*c&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,
1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0)];mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];Ja.prototype.constraints=mxRectangleShape.prototype.constraints;
-mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;N.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;d.prototype.getConstraints=function(b,d,f){b=[];var c=Math.max(0,Math.min(d,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,.5*(d-c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(f+c)));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1));d>=2*c&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};y.prototype.getConstraints=function(b,d,f){b=[];var c=Math.max(0,Math.min(d,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(f+c)));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));d>=2*c&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};e.prototype.getConstraints=function(b,d,f){b=[];var c=Math.max(0,Math.min(d,Math.min(f,parseFloat(mxUtils.getValue(this.style,
-"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(f+c)));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,.5*(d+c),f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,f-.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(f-c)));return b};m.prototype.getConstraints=function(b,d,f){b=[];d=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,d));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-d));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-d));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d+.5*(.5*f-d)));b.push(new mxConnectionConstraint(new mxPoint(1,
-0),!1,null,0,d+.5*(.5*f-d)));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,f-d-.5*(.5*f-d)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f-d-.5*(.5*f-d)));b.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*d));b.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*d));b.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-d));b.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-d));return b};u.prototype.getConstraints=
-function(b,d,f){b=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(b.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,0)),b.push(new mxConnectionConstraint(new mxPoint(0,
+mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;L.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;d.prototype.getConstraints=function(b,d,g){b=[];var c=Math.max(0,Math.min(d,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,.5*(d-c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(g+c)));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+.5),!1));d>=2*c&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};y.prototype.getConstraints=function(b,d,g){b=[];var c=Math.max(0,Math.min(d,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(g+c)));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));d>=2*c&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};e.prototype.getConstraints=function(b,d,g){b=[];var c=Math.max(0,Math.min(d,Math.min(g,parseFloat(mxUtils.getValue(this.style,
+"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(g+c)));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,.5*(d+c),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,g-.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(g-c)));return b};m.prototype.getConstraints=function(b,d,g){b=[];d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+.5),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,d));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-d));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-d));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d+.5*(.5*g-d)));b.push(new mxConnectionConstraint(new mxPoint(1,
+0),!1,null,0,d+.5*(.5*g-d)));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,g-d-.5*(.5*g-d)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g-d-.5*(.5*g-d)));b.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*d));b.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*d));b.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-d));b.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-d));return b};u.prototype.getConstraints=
+function(b,d,g){b=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(b.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,0)),b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,c,e)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),e))):(b.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,e)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,d,.25*(f-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(f-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.75*(f-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(f-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(f-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,.75*(f-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));b.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return b};ma.prototype.constraints=mxRectangleShape.prototype.constraints;ha.prototype.constraints=mxRectangleShape.prototype.constraints;ya.prototype.constraints=mxEllipse.prototype.constraints;pa.prototype.constraints=mxEllipse.prototype.constraints;
-xa.prototype.constraints=mxEllipse.prototype.constraints;Aa.prototype.constraints=mxEllipse.prototype.constraints;X.prototype.constraints=mxRectangleShape.prototype.constraints;Ka.prototype.constraints=mxRectangleShape.prototype.constraints;wa.prototype.getConstraints=function(b,d,f){b=[];var c=Math.min(d,f/2),e=Math.min(d-c,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-c),f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));return b};la.prototype.getConstraints=function(b,d,f){d=parseFloat(mxUtils.getValue(b,
+0),!1,null,d,.25*(g-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(g-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.75*(g-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(g-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(g-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,.75*(g-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return b};ma.prototype.constraints=mxRectangleShape.prototype.constraints;ha.prototype.constraints=mxRectangleShape.prototype.constraints;ya.prototype.constraints=mxEllipse.prototype.constraints;pa.prototype.constraints=mxEllipse.prototype.constraints;
+xa.prototype.constraints=mxEllipse.prototype.constraints;Aa.prototype.constraints=mxEllipse.prototype.constraints;X.prototype.constraints=mxRectangleShape.prototype.constraints;Ka.prototype.constraints=mxRectangleShape.prototype.constraints;wa.prototype.getConstraints=function(b,d,g){b=[];var c=Math.min(d,g/2),e=Math.min(d-c,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-c),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));return b};la.prototype.getConstraints=function(b,d,g){d=parseFloat(mxUtils.getValue(b,
"jettyWidth",la.prototype.jettyWidth))/2;b=parseFloat(mxUtils.getValue(b,"jettyHeight",la.prototype.jettyHeight));var c=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,d),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,
-.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,d),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(f-.5*b,1.5*b)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(f-.5*b,3.5*b))];f>5*b&&c.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,d));f>8*b&&c.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1,null,d));f>15*b&&c.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,d));return c};ea.prototype.constraints=mxRectangleShape.prototype.constraints;ta.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
+.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,d),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(g-.5*b,1.5*b)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(g-.5*b,3.5*b))];g>5*b&&c.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,d));g>8*b&&c.push(new mxConnectionConstraint(new mxPoint(0,
+.5),!1,null,d));g>15*b&&c.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,d));return c};ea.prototype.constraints=mxRectangleShape.prototype.constraints;ta.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];G.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,
.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];ja.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,
@@ -2949,106 +2959,106 @@ xa.prototype.constraints=mxEllipse.prototype.constraints;Aa.prototype.constraint
.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.375,
1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,
.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];H.prototype.constraints=mxRectangleShape.prototype.constraints;z.prototype.constraints=mxRectangleShape.prototype.constraints;F.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
-0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;ia.prototype.getConstraints=function(b,d,f){b=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,
+0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;ia.prototype.getConstraints=function(b,d,g){b=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*d+.25*c,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),e));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,.5*(d+c),.5*(f+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),f));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),.5*(f+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d-.25*c,e));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return b};qa.prototype.getConstraints=function(b,d,f){b=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,d,.5*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*(f+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,f));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,.5*(d+c),.5*(g+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),g));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),.5*(g+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d-.25*c,e));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return b};qa.prototype.getConstraints=function(b,d,g){b=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,d,.5*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*(g+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,g));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
1),!1));return b};T.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];da.prototype.getConstraints=
-function(b,d,f){b=[];var c=f*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),c=(f-c)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,
-.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),f-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f-c));return b};na.prototype.getConstraints=function(b,d,f){b=[];var c=f*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize)))),c=(f-c)/2;b.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,f-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));return b};Ca.prototype.getConstraints=
-function(b,d,f){b=[];var c=Math.min(f,d),e=Math.max(0,Math.min(c,c*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),c=(f-e)/2,g=c+e,l=(d-e)/2,e=l+e;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,f-.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,f));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f-.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),c));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,c));return b};Q.prototype.constraints=null;ua.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,
+function(b,d,g){b=[];var c=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),c=(g-c)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,
+.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),g-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g-c));return b};na.prototype.getConstraints=function(b,d,g){b=[];var c=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize)))),c=(g-c)/2;b.push(new mxConnectionConstraint(new mxPoint(0,
+.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,g-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));return b};Ca.prototype.getConstraints=
+function(b,d,g){b=[];var c=Math.min(g,d),e=Math.max(0,Math.min(c,c*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),c=(g-e)/2,f=c+e,l=(d-e)/2,e=l+e;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,g-.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,g));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g-.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),c));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,c));return b};Q.prototype.constraints=null;ua.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,
.9),!1)];P.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ka.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];ra.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(b){this.editorUi=b;this.actions={};this.init()}
-Actions.prototype.init=function(){function b(b){g.escape();b=g.deleteCells(g.getDeletableCells(g.getSelectionCells()),b);null!=b&&g.setSelectionCells(b)}function c(){if(!g.isSelectionEmpty()){g.getModel().beginUpdate();try{for(var b=g.getSelectionCells(),d=0;d<b.length;d++)g.cellLabelChanged(b[d],"")}finally{g.getModel().endUpdate()}}}var e=this.editorUi,k=e.editor,g=k.graph,p=function(){return Action.prototype.isEnabled.apply(this,arguments)&&g.isEnabled()};this.addAction("new...",function(){g.openLink(e.getUrl())});
-this.addAction("open...",function(){window.openNew=!0;window.openKey="open";e.openFile()});this.addAction("smartFit",function(){g.popupMenuHandler.hideMenu();var b=g.view.scale,d=g.view.translate.x,c=g.view.translate.y;e.actions.get("resetView").funct();1E-5>Math.abs(b-g.view.scale)&&d==g.view.translate.x&&c==g.view.translate.y&&e.actions.get(g.pageVisible?"fitPage":"fitWindow").funct()});this.addAction("keyPressEnter",function(){g.isEnabled()&&(g.isSelectionEmpty()?e.actions.get("smartFit").funct():
-g.startEditingAtCell())});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){e.hideDialog()}));window.openFile.setConsumer(mxUtils.bind(this,function(b,d){try{var f=mxUtils.parseXml(b);k.graph.setSelectionCells(k.graph.importGraphModel(f.documentElement))}catch(m){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+m.message)}}));e.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=
+Actions.prototype.init=function(){function b(b){f.escape();b=f.deleteCells(f.getDeletableCells(f.getSelectionCells()),b);null!=b&&f.setSelectionCells(b)}function c(){if(!f.isSelectionEmpty()){f.getModel().beginUpdate();try{for(var b=f.getSelectionCells(),d=0;d<b.length;d++)f.cellLabelChanged(b[d],"")}finally{f.getModel().endUpdate()}}}var e=this.editorUi,k=e.editor,f=k.graph,p=function(){return Action.prototype.isEnabled.apply(this,arguments)&&f.isEnabled()};this.addAction("new...",function(){f.openLink(e.getUrl())});
+this.addAction("open...",function(){window.openNew=!0;window.openKey="open";e.openFile()});this.addAction("smartFit",function(){f.popupMenuHandler.hideMenu();var b=f.view.scale,d=f.view.translate.x,c=f.view.translate.y;e.actions.get("resetView").funct();1E-5>Math.abs(b-f.view.scale)&&d==f.view.translate.x&&c==f.view.translate.y&&e.actions.get(f.pageVisible?"fitPage":"fitWindow").funct()});this.addAction("keyPressEnter",function(){f.isEnabled()&&(f.isSelectionEmpty()?e.actions.get("smartFit").funct():
+f.startEditingAtCell())});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){e.hideDialog()}));window.openFile.setConsumer(mxUtils.bind(this,function(b,d){try{var g=mxUtils.parseXml(b);k.graph.setSelectionCells(k.graph.importGraphModel(g.documentElement))}catch(m){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+m.message)}}));e.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=
null})}).isEnabled=p;this.addAction("save",function(){e.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=p;this.addAction("saveAs...",function(){e.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=p;this.addAction("export...",function(){e.showDialog((new ExportDialog(e)).container,300,340,!0,!0)});this.addAction("editDiagram...",function(){var b=new EditDiagramDialog(e);e.showDialog(b.container,620,420,!0,!1);b.init()});this.addAction("pageSetup...",function(){e.showDialog((new PageSetupDialog(e)).container,
-320,240,!0,!0)}).isEnabled=p;this.addAction("print...",function(){e.showDialog((new PrintDialog(e)).container,300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(g,null,10,10)});this.addAction("undo",function(){e.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){e.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){var b=null;try{b=e.copyXml(),
-null!=b&&g.removeCells(b,!1)}catch(l){}null==b&&mxClipboard.cut(g)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{e.copyXml()}catch(f){}try{mxClipboard.copy(g)}catch(f){e.handleError(f)}},null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){if(g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())){var b=!1;try{Editor.enableNativeCipboard&&(e.readGraphModelFromClipboard(function(b){if(null!=b){g.getModel().beginUpdate();try{e.pasteXml(b,!0)}finally{g.getModel().endUpdate()}}else mxClipboard.paste(g)}),
-b=!0)}catch(l){}b||mxClipboard.paste(g)}},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(b){function d(b){if(null!=b){for(var d=!0,f=0;f<b.length&&d;f++)d=d&&g.model.isEdge(b[f]);var c=g.view.translate,f=g.view.scale,e=c.x,l=c.y,c=null;if(1==b.length&&d){var m=g.getCellGeometry(b[0]);null!=m&&(c=m.getTerminalPoint(!0))}c=null!=c?c:g.getBoundingBoxFromGeometry(b,d);null!=c&&(d=Math.round(g.snap(g.popupMenuHandler.triggerX/f-e)),f=Math.round(g.snap(g.popupMenuHandler.triggerY/
-f-l)),g.cellsMoved(b,d-c.x,f-c.y))}}function f(){g.getModel().beginUpdate();try{d(mxClipboard.paste(g))}finally{g.getModel().endUpdate()}}if(g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())){b=!1;try{Editor.enableNativeCipboard&&(e.readGraphModelFromClipboard(function(b){if(null!=b){g.getModel().beginUpdate();try{d(e.pasteXml(b,!0))}finally{g.getModel().endUpdate()}}else f()}),b=!0)}catch(m){}b||f()}});this.addAction("copySize",function(){var b=g.getSelectionCell();g.isEnabled()&&null!=b&&g.getModel().isVertex(b)&&
-(b=g.getCellGeometry(b),null!=b&&(e.copiedSize=new mxRectangle(b.x,b.y,b.width,b.height)))},null,null,"Alt+Shift+X");this.addAction("pasteSize",function(){if(g.isEnabled()&&!g.isSelectionEmpty()&&null!=e.copiedSize){g.getModel().beginUpdate();try{for(var b=g.getResizableCells(g.getSelectionCells()),d=0;d<b.length;d++)if(g.getModel().isVertex(b[d])){var c=g.getCellGeometry(b[d]);null!=c&&(c=c.clone(),c.width=e.copiedSize.width,c.height=e.copiedSize.height,g.getModel().setGeometry(b[d],c))}}finally{g.getModel().endUpdate()}}},
-null,null,"Alt+Shift+V");this.addAction("copyData",function(){var b=g.getSelectionCell()||g.getModel().getRoot();g.isEnabled()&&null!=b&&(b=b.cloneValue(),null==b||isNaN(b.nodeType)||(e.copiedValue=b))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(b,d){function f(d,f){var e=c.getValue(d);f=d.cloneValue(f);f.removeAttribute("placeholders");null==e||isNaN(e.nodeType)||f.setAttribute("placeholders",e.getAttribute("placeholders"));null!=b&&mxEvent.isShiftDown(b)||f.setAttribute("label",
-g.convertValueToString(d));c.setValue(d,f)}b=null!=d?d:b;var c=g.getModel();if(g.isEnabled()&&!g.isSelectionEmpty()&&null!=e.copiedValue){c.beginUpdate();try{var l=g.getEditableCells(g.getSelectionCells());if(0==l.length)f(c.getRoot(),e.copiedValue);else for(var k=0;k<l.length;k++)f(l[k],e.copiedValue)}finally{c.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(d,e){d=null!=e?e:d;null!=d&&mxEvent.isShiftDown(d)?c():b(null!=d&&(mxEvent.isControlDown(d)||mxEvent.isMetaDown(d)||
-mxEvent.isAltDown(d)))},null,null,"Delete");this.addAction("deleteAll",function(){b(!0)});this.addAction("deleteLabels",function(){c()},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){try{g.setSelectionCells(g.duplicateCells()),g.scrollCellToVisible(g.getSelectionCell())}catch(f){e.handleError(f)}},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(b,d){b=null!=d?d:b;g.turnShapes(g.getResizableCells(g.getSelectionCells()),
-null!=b?mxEvent.isShiftDown(b):!1)},null,null,Editor.ctrlKey+"+R"));this.put("selectConnections",new Action(mxResources.get("selectEdges"),function(b){b=g.getSelectionCell();g.isEnabled()&&null!=b&&g.addSelectionCells(g.getEdges(b))}));this.addAction("selectVertices",function(){g.selectVertices(null,!0)},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){g.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){g.selectAll(null,!0)},null,
-null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){g.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!g.isSelectionEmpty()){g.getModel().beginUpdate();try{var b=g.getSelectionCells(),d=g.getCurrentCellStyle(g.getSelectionCell()),c=1==mxUtils.getValue(d,mxConstants.STYLE_EDITABLE,1)?0:1;g.setCellStyles(mxConstants.STYLE_MOVABLE,c,b);g.setCellStyles(mxConstants.STYLE_RESIZABLE,c,b);g.setCellStyles(mxConstants.STYLE_ROTATABLE,c,b);g.setCellStyles(mxConstants.STYLE_DELETABLE,
-c,b);g.setCellStyles(mxConstants.STYLE_EDITABLE,c,b);g.setCellStyles("connectable",c,b)}finally{g.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+L");this.addAction("home",function(){g.home()},null,null,"Shift+Home");this.addAction("exitGroup",function(){g.exitGroup()},null,null,Editor.ctrlKey+"+Shift+Home");this.addAction("enterGroup",function(){g.enterGroup()},null,null,Editor.ctrlKey+"+Shift+End");this.addAction("collapse",function(){g.foldCells(!0)},null,null,Editor.ctrlKey+"+Home");this.addAction("expand",
-function(){g.foldCells(!1)},null,null,Editor.ctrlKey+"+End");this.addAction("toFront",function(){g.orderCells(!1)},null,null,Editor.ctrlKey+"+Shift+F");this.addAction("toBack",function(){g.orderCells(!0)},null,null,Editor.ctrlKey+"+Shift+B");this.addAction("bringForward",function(b){g.orderCells(!1,null,!0)});this.addAction("sendBackward",function(b){g.orderCells(!0,null,!0)});this.addAction("group",function(){if(g.isEnabled()){var b=mxUtils.sortCells(g.getSelectionCells(),!0);1!=b.length||g.isTable(b[0])||
-g.isTableRow(b[0])?(b=g.getCellsForGroup(b),1<b.length&&g.setSelectionCell(g.groupCells(null,0,b))):g.setCellStyles("container","1")}},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){if(g.isEnabled()){var b=g.getEditableCells(g.getSelectionCells());g.model.beginUpdate();try{var d=g.ungroupCells();if(null!=b)for(var c=0;c<b.length;c++)g.model.contains(b[c])&&(0==g.model.getChildCount(b[c])&&g.model.isVertex(b[c])&&g.setCellStyles("container","0",[b[c]]),d.push(b[c]))}finally{g.model.endUpdate()}0<
-d.length&&g.setSelectionCells(d)}},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){if(g.isEnabled()){var b=g.getSelectionCells();if(null!=b){for(var d=[],c=0;c<b.length;c++)g.isTableRow(b[c])||g.isTableCell(b[c])||d.push(b[c]);g.removeCellsFromParent(d)}}});this.addAction("edit",function(){g.isEnabled()&&g.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var b=g.getSelectionCell()||g.getModel().getRoot();e.showDataDialog(b)},null,
-null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var b=g.getSelectionCell();if(g.isEnabled()&&null!=b&&g.isCellEditable(b)){var d="";if(mxUtils.isNode(b.value)){var c=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&b.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(c=b.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==c&&(c=b.value.getAttribute("tooltip"));null!=c&&(d=c)}d=new TextareaDialog(e,mxResources.get("editTooltip")+":",d,function(d){g.setTooltipForCell(b,
-d)});e.showDialog(d.container,320,200,!0,!0);d.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var b=g.getLinkForCell(g.getSelectionCell());null!=b&&g.openLink(b)});this.addAction("editLink...",function(){var b=g.getSelectionCell();if(g.isEnabled()&&null!=b&&g.isCellEditable(b)){var d=g.getLinkForCell(b)||"";e.showLinkDialog(d,mxResources.get("apply"),function(d,c,f){d=mxUtils.trim(d);g.setLinkForCell(b,0<d.length?d:null);g.setAttributeForCell(b,"linkTarget",f)},!0,g.getLinkTargetForCell(b))}},
-null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&(g.clearSelection(),e.actions.get("image").funct())})).isEnabled=p;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&e.showLinkDialog("",mxResources.get("insert"),function(b,d,c){b=mxUtils.trim(b);if(0<b.length){var f=null,e=g.getLinkTitle(b);null!=d&&0<d.length&&(f=d[0].iconUrl,
-e=d[0].name||d[0].type,e=e.charAt(0).toUpperCase()+e.substring(1),30<e.length&&(e=e.substring(0,30)+"..."));d=new mxCell(e,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+(null!=f?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+f:"spacing=10;"));d.vertex=!0;f=g.getCenterInsertPoint(g.getBoundingBoxFromGeometry([d],!0));d.geometry.x=f.x;d.geometry.y=f.y;g.setAttributeForCell(d,"linkTarget",c);g.setLinkForCell(d,b);g.cellSizeUpdated(d,
-!0);g.getModel().beginUpdate();try{d=g.addCell(d),g.fireEvent(new mxEventObject("cellsInserted","cells",[d]))}finally{g.getModel().endUpdate()}g.setSelectionCell(d);g.scrollCellToVisible(g.getSelectionCell())}},!0)})).isEnabled=p;this.addAction("link...",mxUtils.bind(this,function(){if(g.isEnabled())if(g.cellEditor.isContentEditing()){var b=g.getSelectedElement(),d=g.getParentByName(b,"A",g.cellEditor.textarea),c="";if(null==d&&null!=b&&null!=b.getElementsByTagName)for(var m=b.getElementsByTagName("a"),
-k=0;k<m.length&&null==d;k++)m[k].textContent==b.textContent&&(d=m[k]);null!=d&&"A"==d.nodeName&&(c=d.getAttribute("href")||"",g.selectNode(d));var u=g.cellEditor.saveSelection();e.showLinkDialog(c,mxResources.get("apply"),mxUtils.bind(this,function(b){g.cellEditor.restoreSelection(u);null!=b&&g.insertLink(b)}))}else g.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=p;this.addAction("autosize",function(){var b=g.getSelectionCells();if(null!=b){g.getModel().beginUpdate();
-try{for(var d=0;d<b.length;d++){var c=b[d];0<g.getModel().getChildCount(c)?g.updateGroupBounds([c],0,!0):g.updateCellSize(c)}}finally{g.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){g.stopEditing();var b=g.getCommonStyle(g.getSelectionCells()),b="1"==mxUtils.getValue(b,"html","0")?null:"1";g.getModel().beginUpdate();try{for(var d=g.getEditableCells(g.getSelectionCells()),c=0;c<d.length;c++)if(state=g.getView().getState(d[c]),null!=state){var m=
-mxUtils.getValue(state.style,"html","0");if("1"==m&&null==b){var k=g.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(k=k.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var u=document.createElement("div");u.innerHTML=g.sanitizeHtml(k);k=mxUtils.extractTextWithWhitespace(u.childNodes);g.cellLabelChanged(state.cell,k);g.setCellStyles("html",b,[d[c]])}else"0"==m&&"1"==b&&(k=mxUtils.htmlEntities(g.convertValueToString(state.cell),!1),"0"!=mxUtils.getValue(state.style,"nl2Br",
-"1")&&(k=k.replace(/\n/g,"<br/>")),g.cellLabelChanged(state.cell,g.sanitizeHtml(k)),g.setCellStyles("html",b,[d[c]]))}e.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=b?b:"0"],"cells",d))}finally{g.getModel().endUpdate()}});this.addAction("wordWrap",function(){var b=g.getView().getState(g.getSelectionCell()),d="wrap";g.stopEditing();null!=b&&"wrap"==b.style[mxConstants.STYLE_WHITE_SPACE]&&(d=null);g.setCellStyles(mxConstants.STYLE_WHITE_SPACE,d)});this.addAction("rotation",
-function(){var b="0",d=g.getView().getState(g.getSelectionCell());null!=d&&(b=d.style[mxConstants.STYLE_ROTATION]||b);b=new FilenameDialog(e,b,mxResources.get("apply"),function(b){null!=b&&0<b.length&&g.setCellStyles(mxConstants.STYLE_ROTATION,b)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");e.showDialog(b.container,375,80,!0,!0);b.init()});this.addAction("resetView",function(){g.zoomTo(1);e.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",function(b){g.isFastZoomEnabled()?
-g.lazyZoom(!0,!0,e.buttonZoomDelay):g.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(b){g.isFastZoomEnabled()?g.lazyZoom(!1,!0,e.buttonZoomDelay):g.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var b=g.isSelectionEmpty()?g.getGraphBounds():g.getBoundingBox(g.getSelectionCells()),d=g.view.translate,c=g.view.scale;b.x=b.x/c-d.x;b.y=b.y/c-d.y;b.width/=c;b.height/=c;null!=g.backgroundImage&&
-(b=mxRectangle.fromRectangle(b),b.add(new mxRectangle(0,0,g.backgroundImage.width,g.backgroundImage.height)));0==b.width||0==b.height?(g.zoomTo(1),e.resetScrollbars()):(d=Editor.fitWindowBorders,null!=d&&(b.x-=d.x,b.y-=d.y,b.width+=d.width+d.x,b.height+=d.height+d.y),g.fitWindow(b))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){g.pageVisible||this.get("pageView").funct();var b=g.pageFormat,d=g.pageScale;g.zoomTo(Math.floor(20*Math.min((g.container.clientWidth-
-10)/b.width/d,(g.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(g.container)&&(b=g.getPagePadding(),g.container.scrollTop=b.y*g.view.scale-1,g.container.scrollLeft=Math.min(b.x*g.view.scale,(g.container.scrollWidth-g.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){g.pageVisible||this.get("pageView").funct();var b=g.pageFormat,d=g.pageScale;g.zoomTo(Math.floor(20*Math.min((g.container.clientWidth-10)/(2*b.width)/
-d,(g.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(g.container)&&(b=g.getPagePadding(),g.container.scrollTop=Math.min(b.y,(g.container.scrollHeight-g.container.clientHeight)/2),g.container.scrollLeft=Math.min(b.x,(g.container.scrollWidth-g.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){g.pageVisible||this.get("pageView").funct();g.zoomTo(Math.floor(20*(g.container.clientWidth-10)/g.pageFormat.width/g.pageScale)/
-20);if(mxUtils.hasScrollbars(g.container)){var b=g.getPagePadding();g.container.scrollLeft=Math.min(b.x*g.view.scale,(g.container.scrollWidth-g.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,parseInt(100*g.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(b){b=parseInt(b);!isNaN(b)&&0<b&&g.zoomTo(b/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(b.container,
-300,80,!0,!0);b.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,parseInt(100*g.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(b){b=parseInt(b);!isNaN(b)&&0<b&&(b=new ChangePageSetup(e,null,null,null,b/100),b.ignoreColor=!0,b.ignoreImage=!0,g.model.execute(b))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(b.container,300,80,!0,!0);b.init()}));var t=null,t=this.addAction("grid",
-function(){g.setGridEnabled(!g.isGridEnabled());g.defaultGridEnabled=g.isGridEnabled();e.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+"+Shift+G");t.setToggleAction(!0);t.setSelectedCallback(function(){return g.isGridEnabled()});t.setEnabled(!1);t=this.addAction("guides",function(){g.graphHandler.guidesEnabled=!g.graphHandler.guidesEnabled;e.fireEvent(new mxEventObject("guidesEnabledChanged"))});t.setToggleAction(!0);t.setSelectedCallback(function(){return g.graphHandler.guidesEnabled});
-t.setEnabled(!1);t=this.addAction("tooltips",function(){g.tooltipHandler.setEnabled(!g.tooltipHandler.isEnabled());e.fireEvent(new mxEventObject("tooltipsEnabledChanged"))});t.setToggleAction(!0);t.setSelectedCallback(function(){return g.tooltipHandler.isEnabled()});t=this.addAction("collapseExpand",function(){var b=new ChangePageSetup(e);b.ignoreColor=!0;b.ignoreImage=!0;b.foldingEnabled=!g.foldingEnabled;g.model.execute(b)});t.setToggleAction(!0);t.setSelectedCallback(function(){return g.foldingEnabled});
-t.isEnabled=p;t=this.addAction("scrollbars",function(){e.setScrollbars(!e.hasScrollbars())});t.setToggleAction(!0);t.setSelectedCallback(function(){return g.scrollbars});t=this.addAction("pageView",mxUtils.bind(this,function(){e.setPageVisible(!g.pageVisible)}));t.setToggleAction(!0);t.setSelectedCallback(function(){return g.pageVisible});t=this.addAction("connectionArrows",function(){g.connectionArrowsEnabled=!g.connectionArrowsEnabled;e.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,
-null,"Alt+Shift+A");t.setToggleAction(!0);t.setSelectedCallback(function(){return g.connectionArrowsEnabled});t=this.addAction("connectionPoints",function(){g.setConnectable(!g.connectionHandler.isEnabled());e.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");t.setToggleAction(!0);t.setSelectedCallback(function(){return g.connectionHandler.isEnabled()});t=this.addAction("copyConnect",function(){g.connectionHandler.setCreateTarget(!g.connectionHandler.isCreateTarget());
-e.fireEvent(new mxEventObject("copyConnectChanged"))});t.setToggleAction(!0);t.setSelectedCallback(function(){return g.connectionHandler.isCreateTarget()});t.isEnabled=p;t=this.addAction("autosave",function(){e.editor.setAutosave(!e.editor.autosave)});t.setToggleAction(!0);t.setSelectedCallback(function(){return e.editor.autosave});t.isEnabled=p;t.visible=!1;this.addAction("help",function(){var b="";mxResources.isLanguageSupported(mxClient.language)&&(b="_"+mxClient.language);g.openLink(RESOURCES_PATH+
-"/help"+b+".html")});var d=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){d||(e.showDialog((new AboutDialog(e)).container,320,280,!0,!0,function(){d=!1}),d=!0)}));t=mxUtils.bind(this,function(b,d,c,e){return this.addAction(b,function(){if(null!=c&&g.cellEditor.isContentEditing())c();else{g.stopEditing(!1);g.getModel().beginUpdate();try{var b=g.getEditableCells(g.getSelectionCells());g.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,d,b);(d&mxConstants.FONT_BOLD)==
-mxConstants.FONT_BOLD?g.updateLabelElements(b,function(b){b.style.fontWeight=null;"B"==b.nodeName&&g.replaceElement(b)}):(d&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?g.updateLabelElements(b,function(b){b.style.fontStyle=null;"I"==b.nodeName&&g.replaceElement(b)}):(d&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&g.updateLabelElements(b,function(b){b.style.textDecoration=null;"U"==b.nodeName&&g.replaceElement(b)});for(var f=0;f<b.length;f++)0==g.model.getChildCount(b[f])&&g.autoSizeCell(b[f],
-!1)}finally{g.getModel().endUpdate()}}},null,null,e)});t("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");t("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");t("underline",mxConstants.FONT_UNDERLINE,function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){e.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",
+320,240,!0,!0)}).isEnabled=p;this.addAction("print...",function(){e.showDialog((new PrintDialog(e)).container,300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(f,null,10,10)});this.addAction("undo",function(){e.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){e.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){var b=null;try{b=e.copyXml(),
+null!=b&&f.removeCells(b,!1)}catch(l){}null==b&&mxClipboard.cut(f)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{e.copyXml()}catch(g){}try{mxClipboard.copy(f)}catch(g){e.handleError(g)}},null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){if(f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())){var b=!1;try{Editor.enableNativeCipboard&&(e.readGraphModelFromClipboard(function(b){if(null!=b){f.getModel().beginUpdate();try{e.pasteXml(b,!0)}finally{f.getModel().endUpdate()}}else mxClipboard.paste(f)}),
+b=!0)}catch(l){}b||mxClipboard.paste(f)}},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(b){function d(b){if(null!=b){for(var d=!0,g=0;g<b.length&&d;g++)d=d&&f.model.isEdge(b[g]);var c=f.view.translate,g=f.view.scale,e=c.x,l=c.y,c=null;if(1==b.length&&d){var m=f.getCellGeometry(b[0]);null!=m&&(c=m.getTerminalPoint(!0))}c=null!=c?c:f.getBoundingBoxFromGeometry(b,d);null!=c&&(d=Math.round(f.snap(f.popupMenuHandler.triggerX/g-e)),g=Math.round(f.snap(f.popupMenuHandler.triggerY/
+g-l)),f.cellsMoved(b,d-c.x,g-c.y))}}function g(){f.getModel().beginUpdate();try{d(mxClipboard.paste(f))}finally{f.getModel().endUpdate()}}if(f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())){b=!1;try{Editor.enableNativeCipboard&&(e.readGraphModelFromClipboard(function(b){if(null!=b){f.getModel().beginUpdate();try{d(e.pasteXml(b,!0))}finally{f.getModel().endUpdate()}}else g()}),b=!0)}catch(m){}b||g()}});this.addAction("copySize",function(){var b=f.getSelectionCell();f.isEnabled()&&null!=b&&f.getModel().isVertex(b)&&
+(b=f.getCellGeometry(b),null!=b&&(e.copiedSize=new mxRectangle(b.x,b.y,b.width,b.height)))},null,null,"Alt+Shift+X");this.addAction("pasteSize",function(){if(f.isEnabled()&&!f.isSelectionEmpty()&&null!=e.copiedSize){f.getModel().beginUpdate();try{for(var b=f.getResizableCells(f.getSelectionCells()),d=0;d<b.length;d++)if(f.getModel().isVertex(b[d])){var c=f.getCellGeometry(b[d]);null!=c&&(c=c.clone(),c.width=e.copiedSize.width,c.height=e.copiedSize.height,f.getModel().setGeometry(b[d],c))}}finally{f.getModel().endUpdate()}}},
+null,null,"Alt+Shift+V");this.addAction("copyData",function(){var b=f.getSelectionCell()||f.getModel().getRoot();f.isEnabled()&&null!=b&&(b=b.cloneValue(),null==b||isNaN(b.nodeType)||(e.copiedValue=b))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(b,d){function c(d,c){var e=g.getValue(d);c=d.cloneValue(c);c.removeAttribute("placeholders");null==e||isNaN(e.nodeType)||c.setAttribute("placeholders",e.getAttribute("placeholders"));null!=b&&mxEvent.isShiftDown(b)||c.setAttribute("label",
+f.convertValueToString(d));g.setValue(d,c)}b=null!=d?d:b;var g=f.getModel();if(f.isEnabled()&&!f.isSelectionEmpty()&&null!=e.copiedValue){g.beginUpdate();try{var l=f.getEditableCells(f.getSelectionCells());if(0==l.length)c(g.getRoot(),e.copiedValue);else for(var k=0;k<l.length;k++)c(l[k],e.copiedValue)}finally{g.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(d,e){d=null!=e?e:d;null!=d&&mxEvent.isShiftDown(d)?c():b(null!=d&&(mxEvent.isControlDown(d)||mxEvent.isMetaDown(d)||
+mxEvent.isAltDown(d)))},null,null,"Delete");this.addAction("deleteAll",function(){b(!0)});this.addAction("deleteLabels",function(){c()},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){try{f.setSelectionCells(f.duplicateCells()),f.scrollCellToVisible(f.getSelectionCell())}catch(g){e.handleError(g)}},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(b,d){b=null!=d?d:b;f.turnShapes(f.getResizableCells(f.getSelectionCells()),
+null!=b?mxEvent.isShiftDown(b):!1)},null,null,mxClient.IS_SF?null:Editor.ctrlKey+"+R"));this.put("selectConnections",new Action(mxResources.get("selectEdges"),function(b){b=f.getSelectionCell();f.isEnabled()&&null!=b&&f.addSelectionCells(f.getEdges(b))}));this.addAction("selectVertices",function(){f.selectVertices(null,!0)},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){f.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){f.selectAll(null,
+!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){f.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!f.isSelectionEmpty()){f.getModel().beginUpdate();try{var b=f.getSelectionCells(),d=f.getCurrentCellStyle(f.getSelectionCell()),c=1==mxUtils.getValue(d,mxConstants.STYLE_EDITABLE,1)?0:1;f.setCellStyles(mxConstants.STYLE_MOVABLE,c,b);f.setCellStyles(mxConstants.STYLE_RESIZABLE,c,b);f.setCellStyles(mxConstants.STYLE_ROTATABLE,c,
+b);f.setCellStyles(mxConstants.STYLE_DELETABLE,c,b);f.setCellStyles(mxConstants.STYLE_EDITABLE,c,b);f.setCellStyles("connectable",c,b)}finally{f.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+L");this.addAction("home",function(){f.home()},null,null,"Shift+Home");this.addAction("exitGroup",function(){f.exitGroup()},null,null,Editor.ctrlKey+"+Shift+Home");this.addAction("enterGroup",function(){f.enterGroup()},null,null,Editor.ctrlKey+"+Shift+End");this.addAction("collapse",function(){f.foldCells(!0)},
+null,null,Editor.ctrlKey+"+Home");this.addAction("expand",function(){f.foldCells(!1)},null,null,Editor.ctrlKey+"+End");this.addAction("toFront",function(){f.orderCells(!1)},null,null,Editor.ctrlKey+"+Shift+F");this.addAction("toBack",function(){f.orderCells(!0)},null,null,Editor.ctrlKey+"+Shift+B");this.addAction("bringForward",function(b){f.orderCells(!1,null,!0)});this.addAction("sendBackward",function(b){f.orderCells(!0,null,!0)});this.addAction("group",function(){if(f.isEnabled()){var b=mxUtils.sortCells(f.getSelectionCells(),
+!0);1!=b.length||f.isTable(b[0])||f.isTableRow(b[0])?(b=f.getCellsForGroup(b),1<b.length&&f.setSelectionCell(f.groupCells(null,0,b))):f.setCellStyles("container","1")}},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){if(f.isEnabled()){var b=f.getEditableCells(f.getSelectionCells());f.model.beginUpdate();try{var d=f.ungroupCells();if(null!=b)for(var c=0;c<b.length;c++)f.model.contains(b[c])&&(0==f.model.getChildCount(b[c])&&f.model.isVertex(b[c])&&f.setCellStyles("container","0",
+[b[c]]),d.push(b[c]))}finally{f.model.endUpdate()}0<d.length&&f.setSelectionCells(d)}},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){if(f.isEnabled()){var b=f.getSelectionCells();if(null!=b){for(var d=[],c=0;c<b.length;c++)f.isTableRow(b[c])||f.isTableCell(b[c])||d.push(b[c]);f.removeCellsFromParent(d)}}});this.addAction("edit",function(){f.isEnabled()&&f.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var b=f.getSelectionCell()||
+f.getModel().getRoot();e.showDataDialog(b)},null,null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var b=f.getSelectionCell();if(f.isEnabled()&&null!=b&&f.isCellEditable(b)){var d="";if(mxUtils.isNode(b.value)){var c=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&b.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(c=b.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==c&&(c=b.value.getAttribute("tooltip"));null!=c&&(d=c)}d=new TextareaDialog(e,mxResources.get("editTooltip")+
+":",d,function(d){f.setTooltipForCell(b,d)});e.showDialog(d.container,320,200,!0,!0);d.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var b=f.getLinkForCell(f.getSelectionCell());null!=b&&f.openLink(b)});this.addAction("editLink...",function(){var b=f.getSelectionCell();if(f.isEnabled()&&null!=b&&f.isCellEditable(b)){var d=f.getLinkForCell(b)||"";e.showLinkDialog(d,mxResources.get("apply"),function(d,c,g){d=mxUtils.trim(d);f.setLinkForCell(b,0<d.length?d:null);f.setAttributeForCell(b,
+"linkTarget",g)},!0,f.getLinkTargetForCell(b))}},null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())&&(f.clearSelection(),e.actions.get("image").funct())})).isEnabled=p;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())&&e.showLinkDialog("",mxResources.get("insert"),function(b,d,c){b=mxUtils.trim(b);if(0<b.length){var g=null,
+e=f.getLinkTitle(b);null!=d&&0<d.length&&(g=d[0].iconUrl,e=d[0].name||d[0].type,e=e.charAt(0).toUpperCase()+e.substring(1),30<e.length&&(e=e.substring(0,30)+"..."));d=new mxCell(e,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+(null!=g?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+g:"spacing=10;"));d.vertex=!0;g=f.getCenterInsertPoint(f.getBoundingBoxFromGeometry([d],!0));d.geometry.x=g.x;d.geometry.y=g.y;f.setAttributeForCell(d,
+"linkTarget",c);f.setLinkForCell(d,b);f.cellSizeUpdated(d,!0);f.getModel().beginUpdate();try{d=f.addCell(d),f.fireEvent(new mxEventObject("cellsInserted","cells",[d]))}finally{f.getModel().endUpdate()}f.setSelectionCell(d);f.scrollCellToVisible(f.getSelectionCell())}},!0)})).isEnabled=p;this.addAction("link...",mxUtils.bind(this,function(){if(f.isEnabled())if(f.cellEditor.isContentEditing()){var b=f.getSelectedElement(),d=f.getParentByName(b,"A",f.cellEditor.textarea),c="";if(null==d&&null!=b&&null!=
+b.getElementsByTagName)for(var m=b.getElementsByTagName("a"),k=0;k<m.length&&null==d;k++)m[k].textContent==b.textContent&&(d=m[k]);null!=d&&"A"==d.nodeName&&(c=d.getAttribute("href")||"",f.selectNode(d));var u=f.cellEditor.saveSelection();e.showLinkDialog(c,mxResources.get("apply"),mxUtils.bind(this,function(b){f.cellEditor.restoreSelection(u);null!=b&&f.insertLink(b)}))}else f.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=p;this.addAction("autosize",
+function(){var b=f.getSelectionCells();if(null!=b){f.getModel().beginUpdate();try{for(var d=0;d<b.length;d++){var c=b[d];0<f.getModel().getChildCount(c)?f.updateGroupBounds([c],0,!0):f.updateCellSize(c)}}finally{f.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){f.stopEditing();var b=f.getCommonStyle(f.getSelectionCells()),b="1"==mxUtils.getValue(b,"html","0")?null:"1";f.getModel().beginUpdate();try{for(var d=f.getEditableCells(f.getSelectionCells()),
+c=0;c<d.length;c++)if(state=f.getView().getState(d[c]),null!=state){var m=mxUtils.getValue(state.style,"html","0");if("1"==m&&null==b){var k=f.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(k=k.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var u=document.createElement("div");u.innerHTML=f.sanitizeHtml(k);k=mxUtils.extractTextWithWhitespace(u.childNodes);f.cellLabelChanged(state.cell,k);f.setCellStyles("html",b,[d[c]])}else"0"==m&&"1"==b&&(k=mxUtils.htmlEntities(f.convertValueToString(state.cell),
+!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(k=k.replace(/\n/g,"<br/>")),f.cellLabelChanged(state.cell,f.sanitizeHtml(k)),f.setCellStyles("html",b,[d[c]]))}e.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=b?b:"0"],"cells",d))}finally{f.getModel().endUpdate()}});this.addAction("wordWrap",function(){var b=f.getView().getState(f.getSelectionCell()),d="wrap";f.stopEditing();null!=b&&"wrap"==b.style[mxConstants.STYLE_WHITE_SPACE]&&(d=null);f.setCellStyles(mxConstants.STYLE_WHITE_SPACE,
+d)});this.addAction("rotation",function(){var b="0",d=f.getView().getState(f.getSelectionCell());null!=d&&(b=d.style[mxConstants.STYLE_ROTATION]||b);b=new FilenameDialog(e,b,mxResources.get("apply"),function(b){null!=b&&0<b.length&&f.setCellStyles(mxConstants.STYLE_ROTATION,b)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");e.showDialog(b.container,375,80,!0,!0);b.init()});this.addAction("resetView",function(){f.zoomTo(1);e.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",
+function(b){f.isFastZoomEnabled()?f.lazyZoom(!0,!0,e.buttonZoomDelay):f.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(b){f.isFastZoomEnabled()?f.lazyZoom(!1,!0,e.buttonZoomDelay):f.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var b=f.isSelectionEmpty()?f.getGraphBounds():f.getBoundingBox(f.getSelectionCells()),d=f.view.translate,c=f.view.scale;b.x=b.x/c-d.x;b.y=b.y/c-d.y;b.width/=c;
+b.height/=c;null!=f.backgroundImage&&(b=mxRectangle.fromRectangle(b),b.add(new mxRectangle(0,0,f.backgroundImage.width,f.backgroundImage.height)));0==b.width||0==b.height?(f.zoomTo(1),e.resetScrollbars()):(d=Editor.fitWindowBorders,null!=d&&(b.x-=d.x,b.y-=d.y,b.width+=d.width+d.x,b.height+=d.height+d.y),f.fitWindow(b))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){f.pageVisible||this.get("pageView").funct();var b=f.pageFormat,d=f.pageScale;f.zoomTo(Math.floor(20*
+Math.min((f.container.clientWidth-10)/b.width/d,(f.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(f.container)&&(b=f.getPagePadding(),f.container.scrollTop=b.y*f.view.scale-1,f.container.scrollLeft=Math.min(b.x*f.view.scale,(f.container.scrollWidth-f.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){f.pageVisible||this.get("pageView").funct();var b=f.pageFormat,d=f.pageScale;f.zoomTo(Math.floor(20*Math.min((f.container.clientWidth-
+10)/(2*b.width)/d,(f.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(f.container)&&(b=f.getPagePadding(),f.container.scrollTop=Math.min(b.y,(f.container.scrollHeight-f.container.clientHeight)/2),f.container.scrollLeft=Math.min(b.x,(f.container.scrollWidth-f.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){f.pageVisible||this.get("pageView").funct();f.zoomTo(Math.floor(20*(f.container.clientWidth-10)/f.pageFormat.width/
+f.pageScale)/20);if(mxUtils.hasScrollbars(f.container)){var b=f.getPagePadding();f.container.scrollLeft=Math.min(b.x*f.view.scale,(f.container.scrollWidth-f.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,parseInt(100*f.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(b){b=parseInt(b);!isNaN(b)&&0<b&&f.zoomTo(b/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(b.container,
+300,80,!0,!0);b.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,parseInt(100*f.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(b){b=parseInt(b);!isNaN(b)&&0<b&&(b=new ChangePageSetup(e,null,null,null,b/100),b.ignoreColor=!0,b.ignoreImage=!0,f.model.execute(b))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(b.container,300,80,!0,!0);b.init()}));var t=null,t=this.addAction("grid",
+function(){f.setGridEnabled(!f.isGridEnabled());f.defaultGridEnabled=f.isGridEnabled();e.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+"+Shift+G");t.setToggleAction(!0);t.setSelectedCallback(function(){return f.isGridEnabled()});t.setEnabled(!1);t=this.addAction("guides",function(){f.graphHandler.guidesEnabled=!f.graphHandler.guidesEnabled;e.fireEvent(new mxEventObject("guidesEnabledChanged"))});t.setToggleAction(!0);t.setSelectedCallback(function(){return f.graphHandler.guidesEnabled});
+t.setEnabled(!1);t=this.addAction("tooltips",function(){f.tooltipHandler.setEnabled(!f.tooltipHandler.isEnabled());e.fireEvent(new mxEventObject("tooltipsEnabledChanged"))});t.setToggleAction(!0);t.setSelectedCallback(function(){return f.tooltipHandler.isEnabled()});t=this.addAction("collapseExpand",function(){var b=new ChangePageSetup(e);b.ignoreColor=!0;b.ignoreImage=!0;b.foldingEnabled=!f.foldingEnabled;f.model.execute(b)});t.setToggleAction(!0);t.setSelectedCallback(function(){return f.foldingEnabled});
+t.isEnabled=p;t=this.addAction("scrollbars",function(){e.setScrollbars(!e.hasScrollbars())});t.setToggleAction(!0);t.setSelectedCallback(function(){return f.scrollbars});t=this.addAction("pageView",mxUtils.bind(this,function(){e.setPageVisible(!f.pageVisible)}));t.setToggleAction(!0);t.setSelectedCallback(function(){return f.pageVisible});t=this.addAction("connectionArrows",function(){f.connectionArrowsEnabled=!f.connectionArrowsEnabled;e.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,
+null,"Alt+Shift+A");t.setToggleAction(!0);t.setSelectedCallback(function(){return f.connectionArrowsEnabled});t=this.addAction("connectionPoints",function(){f.setConnectable(!f.connectionHandler.isEnabled());e.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");t.setToggleAction(!0);t.setSelectedCallback(function(){return f.connectionHandler.isEnabled()});t=this.addAction("copyConnect",function(){f.connectionHandler.setCreateTarget(!f.connectionHandler.isCreateTarget());
+e.fireEvent(new mxEventObject("copyConnectChanged"))});t.setToggleAction(!0);t.setSelectedCallback(function(){return f.connectionHandler.isCreateTarget()});t.isEnabled=p;t=this.addAction("autosave",function(){e.editor.setAutosave(!e.editor.autosave)});t.setToggleAction(!0);t.setSelectedCallback(function(){return e.editor.autosave});t.isEnabled=p;t.visible=!1;this.addAction("help",function(){var b="";mxResources.isLanguageSupported(mxClient.language)&&(b="_"+mxClient.language);f.openLink(RESOURCES_PATH+
+"/help"+b+".html")});var d=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){d||(e.showDialog((new AboutDialog(e)).container,320,280,!0,!0,function(){d=!1}),d=!0)}));t=mxUtils.bind(this,function(b,d,c,e){return this.addAction(b,function(){if(null!=c&&f.cellEditor.isContentEditing())c();else{f.stopEditing(!1);f.getModel().beginUpdate();try{var b=f.getEditableCells(f.getSelectionCells());f.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,d,b);(d&mxConstants.FONT_BOLD)==
+mxConstants.FONT_BOLD?f.updateLabelElements(b,function(b){b.style.fontWeight=null;"B"==b.nodeName&&f.replaceElement(b)}):(d&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?f.updateLabelElements(b,function(b){b.style.fontStyle=null;"I"==b.nodeName&&f.replaceElement(b)}):(d&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&f.updateLabelElements(b,function(b){b.style.textDecoration=null;"U"==b.nodeName&&f.replaceElement(b)});for(var g=0;g<b.length;g++)0==f.model.getChildCount(b[g])&&f.autoSizeCell(b[g],
+!1)}finally{f.getModel().endUpdate()}}},null,null,e)});t("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");t("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");t("underline",mxConstants.FONT_UNDERLINE,function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){e.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",
function(){e.menus.pickColor(mxConstants.STYLE_STROKECOLOR)});this.addAction("fillColor...",function(){e.menus.pickColor(mxConstants.STYLE_FILLCOLOR)});this.addAction("gradientColor...",function(){e.menus.pickColor(mxConstants.STYLE_GRADIENTCOLOR)});this.addAction("backgroundColor...",function(){e.menus.pickColor(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"backcolor")});this.addAction("borderColor...",function(){e.menus.pickColor(mxConstants.STYLE_LABEL_BORDERCOLOR)});this.addAction("vertical",function(){e.menus.toggleStyle(mxConstants.STYLE_HORIZONTAL,
-!0)});this.addAction("shadow",function(){e.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){g.getModel().beginUpdate();try{g.setCellStyles(mxConstants.STYLE_DASHED,null),g.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",g.getSelectionCells()))}finally{g.getModel().endUpdate()}});this.addAction("dashed",function(){g.getModel().beginUpdate();
-try{g.setCellStyles(mxConstants.STYLE_DASHED,"1"),g.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",g.getSelectionCells()))}finally{g.getModel().endUpdate()}});this.addAction("dotted",function(){g.getModel().beginUpdate();try{g.setCellStyles(mxConstants.STYLE_DASHED,"1"),g.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),e.fireEvent(new mxEventObject("styleChanged",
-"keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",g.getSelectionCells()))}finally{g.getModel().endUpdate()}});this.addAction("sharp",function(){g.getModel().beginUpdate();try{g.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),g.setCellStyles(mxConstants.STYLE_CURVED,"0"),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",g.getSelectionCells()))}finally{g.getModel().endUpdate()}});
-this.addAction("rounded",function(){g.getModel().beginUpdate();try{g.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),g.setCellStyles(mxConstants.STYLE_CURVED,"0"),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",g.getSelectionCells()))}finally{g.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!g.isSelectionEmpty()&&g.isEnabled()){g.getModel().beginUpdate();try{var b=g.getSelectionCells(),d=g.getCurrentCellStyle(b[0]),
-c="1"==mxUtils.getValue(d,mxConstants.STYLE_ROUNDED,"0")?"0":"1";g.setCellStyles(mxConstants.STYLE_ROUNDED,c);g.setCellStyles(mxConstants.STYLE_CURVED,null);e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[c,"0"],"cells",g.getSelectionCells()))}finally{g.getModel().endUpdate()}}});this.addAction("curved",function(){g.getModel().beginUpdate();try{g.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),g.setCellStyles(mxConstants.STYLE_CURVED,
-"1"),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",g.getSelectionCells()))}finally{g.getModel().endUpdate()}});this.addAction("collapsible",function(){var b=g.view.getState(g.getSelectionCell()),d="1";null!=b&&null!=g.getFoldingImage(b)&&(d="0");g.setCellStyles("collapsible",d);e.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[d],"cells",g.getSelectionCells()))});this.addAction("editStyle...",
-mxUtils.bind(this,function(){var b=g.getEditableCells(g.getSelectionCells());if(null!=b&&0<b.length){var d=g.getModel(),d=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",d.getStyle(b[0])||"",function(d){null!=d&&g.setCellStyle(mxUtils.trim(d),b)},null,null,400,220);this.editorUi.showDialog(d.container,420,300,!0,!0);d.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){g.isEnabled()&&!g.isSelectionEmpty()&&e.setDefaultStyle(g.getSelectionCell())},
-null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){g.isEnabled()&&e.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var b=g.getSelectionCell();if(null!=b&&g.getModel().isEdge(b)){var d=k.graph.selectionCellsHandler.getHandler(b);if(d instanceof mxEdgeHandler){for(var c=g.view.translate,e=g.view.scale,n=c.x,c=c.y,b=g.getModel().getParent(b),u=g.getCellGeometry(b);g.getModel().isVertex(b)&&null!=u;)n+=u.x,c+=u.y,b=g.getModel().getParent(b),
-u=g.getCellGeometry(b);n=Math.round(g.snap(g.popupMenuHandler.triggerX/e-n));e=Math.round(g.snap(g.popupMenuHandler.triggerY/e-c));d.addPointAt(d.state,n,e)}}});this.addAction("removeWaypoint",function(){var b=e.actions.get("removeWaypoint");null!=b.handler&&b.handler.removePoint(b.handler.state,b.index)});this.addAction("clearWaypoints",function(b,d){b=null!=d?d:b;var c=g.getSelectionCells();if(null!=c){c=g.getEditableCells(g.addAllEdges(c));g.getModel().beginUpdate();try{for(var f=0;f<c.length;f++){var e=
-c[f];if(g.getModel().isEdge(e)){var l=g.getCellGeometry(e);null!=d&&mxEvent.isShiftDown(b)?(g.setCellStyles(mxConstants.STYLE_EXIT_X,null,[e]),g.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[e]),g.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[e]),g.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[e])):null!=l&&(l=l.clone(),l.points=null,l.x=0,l.y=0,l.offset=null,g.getModel().setGeometry(e,l))}}}finally{g.getModel().endUpdate()}}},null,null,"Alt+Shift+C");t=this.addAction("subscript",mxUtils.bind(this,
-function(){g.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");t=this.addAction("superscript",mxUtils.bind(this,function(){g.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())){var b=mxResources.get("image")+" ("+mxResources.get("url")+"):",d=g.getView().getState(g.getSelectionCell()),c="";null!=
-d&&(c=d.style[mxConstants.STYLE_IMAGE]||c);var m=g.cellEditor.saveSelection();e.showImageDialog(b,c,function(b,d,c){if(g.cellEditor.isContentEditing())g.cellEditor.restoreSelection(m),g.insertImage(b,d,c);else{var f=g.getSelectionCells();if(null!=b&&(0<b.length||0<f.length)){var e=null;g.getModel().beginUpdate();try{if(0==f.length){var f=[g.insertVertex(g.getDefaultParent(),null,"",0,0,d,c,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")],l=g.getCenterInsertPoint(g.getBoundingBoxFromGeometry(f,
-!0));f[0].geometry.x=l.x;f[0].geometry.y=l.y;e=f;g.fireEvent(new mxEventObject("cellsInserted","cells",e))}g.setCellStyles(mxConstants.STYLE_IMAGE,0<b.length?b:null,f);var k=g.getCurrentCellStyle(f[0]);"image"!=k[mxConstants.STYLE_SHAPE]&&"label"!=k[mxConstants.STYLE_SHAPE]?g.setCellStyles(mxConstants.STYLE_SHAPE,"image",f):0==b.length&&g.setCellStyles(mxConstants.STYLE_SHAPE,null,f);if(1==g.getSelectionCount()&&null!=d&&null!=c){var n=f[0],q=g.getModel().getGeometry(n);null!=q&&(q=q.clone(),q.width=
-d,q.height=c,g.getModel().setGeometry(n,q))}}finally{g.getModel().endUpdate()}null!=e&&(g.setSelectionCells(e),g.scrollCellToVisible(e[0]))}}},g.cellEditor.isContentEditing(),!g.cellEditor.isContentEditing())}}).isEnabled=p;t=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(e,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){e.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),
+!0)});this.addAction("shadow",function(){e.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){f.getModel().beginUpdate();try{f.setCellStyles(mxConstants.STYLE_DASHED,null),f.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}});this.addAction("dashed",function(){f.getModel().beginUpdate();
+try{f.setCellStyles(mxConstants.STYLE_DASHED,"1"),f.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}});this.addAction("dotted",function(){f.getModel().beginUpdate();try{f.setCellStyles(mxConstants.STYLE_DASHED,"1"),f.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),e.fireEvent(new mxEventObject("styleChanged",
+"keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}});this.addAction("sharp",function(){f.getModel().beginUpdate();try{f.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),f.setCellStyles(mxConstants.STYLE_CURVED,"0"),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}});
+this.addAction("rounded",function(){f.getModel().beginUpdate();try{f.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),f.setCellStyles(mxConstants.STYLE_CURVED,"0"),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!f.isSelectionEmpty()&&f.isEnabled()){f.getModel().beginUpdate();try{var b=f.getSelectionCells(),d=f.getCurrentCellStyle(b[0]),
+c="1"==mxUtils.getValue(d,mxConstants.STYLE_ROUNDED,"0")?"0":"1";f.setCellStyles(mxConstants.STYLE_ROUNDED,c);f.setCellStyles(mxConstants.STYLE_CURVED,null);e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[c,"0"],"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}}});this.addAction("curved",function(){f.getModel().beginUpdate();try{f.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),f.setCellStyles(mxConstants.STYLE_CURVED,
+"1"),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}});this.addAction("collapsible",function(){var b=f.view.getState(f.getSelectionCell()),d="1";null!=b&&null!=f.getFoldingImage(b)&&(d="0");f.setCellStyles("collapsible",d);e.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[d],"cells",f.getSelectionCells()))});this.addAction("editStyle...",
+mxUtils.bind(this,function(){var b=f.getEditableCells(f.getSelectionCells());if(null!=b&&0<b.length){var d=f.getModel(),d=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",d.getStyle(b[0])||"",function(d){null!=d&&f.setCellStyle(mxUtils.trim(d),b)},null,null,400,220);this.editorUi.showDialog(d.container,420,300,!0,!0);d.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){f.isEnabled()&&!f.isSelectionEmpty()&&e.setDefaultStyle(f.getSelectionCell())},
+null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){f.isEnabled()&&e.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var b=f.getSelectionCell();if(null!=b&&f.getModel().isEdge(b)){var d=k.graph.selectionCellsHandler.getHandler(b);if(d instanceof mxEdgeHandler){for(var c=f.view.translate,e=f.view.scale,n=c.x,c=c.y,b=f.getModel().getParent(b),u=f.getCellGeometry(b);f.getModel().isVertex(b)&&null!=u;)n+=u.x,c+=u.y,b=f.getModel().getParent(b),
+u=f.getCellGeometry(b);n=Math.round(f.snap(f.popupMenuHandler.triggerX/e-n));e=Math.round(f.snap(f.popupMenuHandler.triggerY/e-c));d.addPointAt(d.state,n,e)}}});this.addAction("removeWaypoint",function(){var b=e.actions.get("removeWaypoint");null!=b.handler&&b.handler.removePoint(b.handler.state,b.index)});this.addAction("clearWaypoints",function(b,d){b=null!=d?d:b;var c=f.getSelectionCells();if(null!=c){c=f.getEditableCells(f.addAllEdges(c));f.getModel().beginUpdate();try{for(var g=0;g<c.length;g++){var e=
+c[g];if(f.getModel().isEdge(e)){var l=f.getCellGeometry(e);null!=d&&mxEvent.isShiftDown(b)?(f.setCellStyles(mxConstants.STYLE_EXIT_X,null,[e]),f.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[e]),f.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[e]),f.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[e])):null!=l&&(l=l.clone(),l.points=null,l.x=0,l.y=0,l.offset=null,f.getModel().setGeometry(e,l))}}}finally{f.getModel().endUpdate()}}},null,null,"Alt+Shift+C");t=this.addAction("subscript",mxUtils.bind(this,
+function(){f.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");t=this.addAction("superscript",mxUtils.bind(this,function(){f.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())){var b=mxResources.get("image")+" ("+mxResources.get("url")+"):",d=f.getView().getState(f.getSelectionCell()),c="";null!=
+d&&(c=d.style[mxConstants.STYLE_IMAGE]||c);var k=f.cellEditor.saveSelection();e.showImageDialog(b,c,function(b,d,c){if(f.cellEditor.isContentEditing())f.cellEditor.restoreSelection(k),f.insertImage(b,d,c);else{var g=f.getSelectionCells();if(null!=b&&(0<b.length||0<g.length)){var e=null;f.getModel().beginUpdate();try{if(0==g.length){var g=[f.insertVertex(f.getDefaultParent(),null,"",0,0,d,c,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")],l=f.getCenterInsertPoint(f.getBoundingBoxFromGeometry(g,
+!0));g[0].geometry.x=l.x;g[0].geometry.y=l.y;e=g;f.fireEvent(new mxEventObject("cellsInserted","cells",e))}f.setCellStyles(mxConstants.STYLE_IMAGE,0<b.length?b:null,g);var m=f.getCurrentCellStyle(g[0]);"image"!=m[mxConstants.STYLE_SHAPE]&&"label"!=m[mxConstants.STYLE_SHAPE]?f.setCellStyles(mxConstants.STYLE_SHAPE,"image",g):0==b.length&&f.setCellStyles(mxConstants.STYLE_SHAPE,null,g);if(1==f.getSelectionCount()&&null!=d&&null!=c){var n=g[0],q=f.getModel().getGeometry(n);null!=q&&(q=q.clone(),q.width=
+d,q.height=c,f.getModel().setGeometry(n,q))}}finally{f.getModel().endUpdate()}null!=e&&(f.setSelectionCells(e),f.scrollCellToVisible(e[0]))}}},f.cellEditor.isContentEditing(),!f.cellEditor.isContentEditing())}}).isEnabled=p;t=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(e,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){e.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),
this.layersWindow.window.addListener("hide",function(){e.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),e.fireEvent(new mxEventObject("layers")),this.layersWindow.init()):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");t.setToggleAction(!0);t.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));t=this.addAction("formatPanel",mxUtils.bind(this,
function(){e.toggleFormatPanel()}),null,null,Editor.ctrlKey+"+Shift+P");t.setToggleAction(!0);t.setSelectedCallback(mxUtils.bind(this,function(){return 0<e.formatWidth}));t=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(e,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",mxUtils.bind(this,function(){e.fireEvent(new mxEventObject("outline"));this.outlineWindow.window.fit()})),this.outlineWindow.window.addListener("hide",
function(){e.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0),e.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");t.setToggleAction(!0);t.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))};
-Actions.prototype.addAction=function(b,c,e,k,g){var p;"..."==b.substring(b.length-3)?(b=b.substring(0,b.length-3),p=mxResources.get(b)+"..."):p=mxResources.get(b);return this.put(b,new Action(p,c,e,k,g))};Actions.prototype.put=function(b,c){return this.actions[b]=c};Actions.prototype.get=function(b){return this.actions[b]};function Action(b,c,e,k,g){mxEventSource.call(this);this.label=b;this.funct=this.createFunction(c);this.enabled=null!=e?e:!0;this.iconCls=k;this.shortcut=g;this.visible=!0}
+Actions.prototype.addAction=function(b,c,e,k,f){var p;"..."==b.substring(b.length-3)?(b=b.substring(0,b.length-3),p=mxResources.get(b)+"..."):p=mxResources.get(b);return this.put(b,new Action(p,c,e,k,f))};Actions.prototype.put=function(b,c){return this.actions[b]=c};Actions.prototype.get=function(b){return this.actions[b]};function Action(b,c,e,k,f){mxEventSource.call(this);this.label=b;this.funct=this.createFunction(c);this.enabled=null!=e?e:!0;this.iconCls=k;this.shortcut=f;this.visible=!0}
mxUtils.extend(Action,mxEventSource);Action.prototype.createFunction=function(b){return b};Action.prototype.setEnabled=function(b){this.enabled!=b&&(this.enabled=b,this.fireEvent(new mxEventObject("stateChanged")))};Action.prototype.isEnabled=function(){return this.enabled};Action.prototype.setToggleAction=function(b){this.toggleAction=b};Action.prototype.setSelectedCallback=function(b){this.selectedCallback=b};Action.prototype.isSelected=function(){return this.selectedCallback()};DrawioFile=function(b,c){mxEventSource.call(this);this.ui=b;this.shadowData=this.data=c||"";this.shadowPages=null;this.created=(new Date).getTime();this.stats={opened:0,merged:0,fileMerged:0,fileReloaded:0,conflicts:0,timeouts:0,saved:0,closed:0,destroyed:0,joined:0,checksumErrors:0,bytesSent:0,bytesReceived:0,msgSent:0,msgReceived:0,cacheHits:0,cacheMiss:0,cacheFail:0}};DrawioFile.SYNC=urlParams.sync||"auto";DrawioFile.LAST_WRITE_WINS=!0;mxUtils.extend(DrawioFile,mxEventSource);
DrawioFile.prototype.allChangesSavedKey="allChangesSaved";DrawioFile.prototype.savingSpinnerKey="saving";DrawioFile.prototype.savingStatusKey="saving";DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E4;DrawioFile.prototype.optimisticSyncDelay=300;DrawioFile.prototype.autosaveThread=null;DrawioFile.prototype.lastAutosave=null;DrawioFile.prototype.lastSaved=null;DrawioFile.prototype.lastChanged=null;DrawioFile.prototype.opened=null;DrawioFile.prototype.modified=!1;
DrawioFile.prototype.shadowModified=!1;DrawioFile.prototype.data=null;DrawioFile.prototype.shadowData=null;DrawioFile.prototype.shadowPages=null;DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveRevision=null;DrawioFile.prototype.maxAutosaveRevisionDelay=3E5;DrawioFile.prototype.inConflictState=!1;DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.errorReportsEnabled=!1;DrawioFile.prototype.ageStart=null;
DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};DrawioFile.prototype.synchronizeFile=function(b,c){this.savingFile?null!=c&&c({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(b,c):this.updateFile(b,c)};
-DrawioFile.prototype.updateFile=function(b,c,e,k){null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():this.getLatestVersion(mxUtils.bind(this,function(g){try{null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():null!=g?this.mergeFile(g,b,c,k):this.reloadFile(b,c))}catch(p){null!=c&&c(p)}}),c))};
-DrawioFile.prototype.mergeFile=function(b,c,e,k){var g=!0;try{this.stats.fileMerged++;var p=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),t=this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement);if(null!=t&&0<t.length){this.shadowPages=t;this.backupPatch=this.isModified()?this.ui.diffPages(p,this.ui.pages):null;var d=[this.ui.diffPages(null!=k?k:p,this.shadowPages)];if(!this.ignorePatches(d)){var f=this.ui.patchPages(p,
-d[0]);k={};var l=this.ui.getHashValueForPages(f,k),p={},q=this.ui.getHashValueForPages(this.shadowPages,p);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",d,"checksum",q==l,l);if(null!=l&&l!=q){var m=this.compressReportData(this.getAnonymizedXmlForPages(t)),n=this.compressReportData(this.getAnonymizedXmlForPages(f)),u=this.ui.hashValue(b.getCurrentEtag()),v=this.ui.hashValue(this.getCurrentEtag());this.checksumError(e,d,"Shadow Details: "+JSON.stringify(k)+
-"\nChecksum: "+l+"\nCurrent: "+q+"\nCurrent Details: "+JSON.stringify(p)+"\nFrom: "+u+"\nTo: "+v+"\n\nFile Data:\n"+m+"\nPatched Shadow:\n"+n,null,"mergeFile");return}this.patch(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw g=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(b.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(F){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
-null!=e&&e(F);try{if(g)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,F);else{var y=this.getCurrentUser(),x=null!=y?y.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),x,F)}}catch(H){}}};
-DrawioFile.prototype.getAnonymizedXmlForPages=function(b){var c=new mxCodec(mxUtils.createXmlDocument()),e=c.document.createElement("mxfile");if(null!=b)for(var k=0;k<b.length;k++){var g=c.encode(new mxGraphModel(b[k].root));"1"!=urlParams.dev&&(g=this.ui.anonymizeNode(g,!0));g.setAttribute("id",b[k].getId());b[k].viewState&&this.ui.editor.graph.saveViewState(b[k].viewState,g,!0);e.appendChild(g)}return mxUtils.getPrettyXml(e)};
+DrawioFile.prototype.updateFile=function(b,c,e,k){null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():this.getLatestVersion(mxUtils.bind(this,function(f){try{null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():null!=f?this.mergeFile(f,b,c,k):this.reloadFile(b,c))}catch(p){null!=c&&c(p)}}),c))};
+DrawioFile.prototype.mergeFile=function(b,c,e,k){var f=!0;try{this.stats.fileMerged++;var p=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),t=this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement);if(null!=t&&0<t.length){this.shadowPages=t;this.backupPatch=this.isModified()?this.ui.diffPages(p,this.ui.pages):null;var d=[this.ui.diffPages(null!=k?k:p,this.shadowPages)];if(!this.ignorePatches(d)){var g=this.ui.patchPages(p,
+d[0]);k={};var l=this.ui.getHashValueForPages(g,k),p={},q=this.ui.getHashValueForPages(this.shadowPages,p);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",d,"checksum",q==l,l);if(null!=l&&l!=q){var m=this.compressReportData(this.getAnonymizedXmlForPages(t)),n=this.compressReportData(this.getAnonymizedXmlForPages(g)),u=this.ui.hashValue(b.getCurrentEtag()),v=this.ui.hashValue(this.getCurrentEtag());this.checksumError(e,d,"Shadow Details: "+JSON.stringify(k)+
+"\nChecksum: "+l+"\nCurrent: "+q+"\nCurrent Details: "+JSON.stringify(p)+"\nFrom: "+u+"\nTo: "+v+"\n\nFile Data:\n"+m+"\nPatched Shadow:\n"+n,null,"mergeFile");return}this.patch(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw f=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(b.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(F){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
+null!=e&&e(F);try{if(f)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,F);else{var y=this.getCurrentUser(),x=null!=y?y.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),x,F)}}catch(H){}}};
+DrawioFile.prototype.getAnonymizedXmlForPages=function(b){var c=new mxCodec(mxUtils.createXmlDocument()),e=c.document.createElement("mxfile");if(null!=b)for(var k=0;k<b.length;k++){var f=c.encode(new mxGraphModel(b[k].root));"1"!=urlParams.dev&&(f=this.ui.anonymizeNode(f,!0));f.setAttribute("id",b[k].getId());b[k].viewState&&this.ui.editor.graph.saveViewState(b[k].viewState,f,!0);e.appendChild(f)}return mxUtils.getPrettyXml(e)};
DrawioFile.prototype.compressReportData=function(b,c,e){c=null!=c?c:1E4;null!=e&&null!=b&&b.length>e?b=b.substring(0,e)+"[...]":null!=b&&b.length>c&&(b=Graph.compress(b)+"\n");return b};
-DrawioFile.prototype.checksumError=function(b,c,e,k,g){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=b&&b();try{if(this.errorReportsEnabled){if(null!=c)for(b=0;b<c.length;b++)this.ui.anonymizePatch(c[b]);var p=mxUtils.bind(this,function(b){var d=this.compressReportData(JSON.stringify(c,null,2));b=null!=b?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement)),
-25E3):"n/a";this.sendErrorReport("Checksum Error in "+g+" "+this.getHash(),(null!=e?e:"")+"\n\nPatches:\n"+d+(null!=b?"\n\nRemote:\n"+b:""),null,7E4)});null==k?p(null):this.getLatestVersion(mxUtils.bind(this,function(b){null!=b&&b.getCurrentEtag()==k?p(b):p(null)}),function(){})}else{var t=this.getCurrentUser(),d=null!=t?t.id:"unknown";EditorUi.logError("Checksum Error in "+g+" "+this.getId(),null,this.getMode()+"."+this.getId(),"user_"+d+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync"));
-try{EditorUi.logEvent({category:"CHECKSUM-ERROR-SYNC-FILE-"+this.getHash(),action:g,label:"user_"+d+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync")})}catch(f){}}}catch(f){}};
-DrawioFile.prototype.sendErrorReport=function(b,c,e,k){try{var g=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),p=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),t=this.getCurrentUser(),d=null!=t?this.ui.hashValue(t.id):"unknown",f=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",l=this.getTitle(),q=l.lastIndexOf("."),t="xml";0<q&&(t=l.substring(q));var m=null!=e?e.stack:Error().stack;EditorUi.sendReport(b+" "+(new Date).toISOString()+
-":\n\nAppVersion="+navigator.appVersion+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+t+")\nUser="+d+f+"\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=c?"\n\n"+c:
-"")+(null!=e?"\n\nError: "+e.message:"")+"\n\nStack:\n"+m+"\n\nShadow:\n"+g+"\n\nData:\n"+p,k)}catch(n){}};
-DrawioFile.prototype.reloadFile=function(b,c){try{this.ui.spinner.stop();var e=mxUtils.bind(this,function(){this.stats.fileReloaded++;var c=this.ui.editor.graph.getViewState(),e=this.ui.editor.graph.getSelectionCells(),p=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(p,c,e);null!=this.backupPatch&&this.patch([this.backupPatch]);var g=this.ui.getCurrentFile();null!=g&&(g.stats=this.stats);null!=b&&
+DrawioFile.prototype.checksumError=function(b,c,e,k,f){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=b&&b();try{if(this.errorReportsEnabled){if(null!=c)for(b=0;b<c.length;b++)this.ui.anonymizePatch(c[b]);var p=mxUtils.bind(this,function(b){var d=this.compressReportData(JSON.stringify(c,null,2));b=null!=b?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement)),
+25E3):"n/a";this.sendErrorReport("Checksum Error in "+f+" "+this.getHash(),(null!=e?e:"")+"\n\nPatches:\n"+d+(null!=b?"\n\nRemote:\n"+b:""),null,7E4)});null==k?p(null):this.getLatestVersion(mxUtils.bind(this,function(b){null!=b&&b.getCurrentEtag()==k?p(b):p(null)}),function(){})}else{var t=this.getCurrentUser(),d=null!=t?t.id:"unknown";EditorUi.logError("Checksum Error in "+f+" "+this.getId(),null,this.getMode()+"."+this.getId(),"user_"+d+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync"));
+try{EditorUi.logEvent({category:"CHECKSUM-ERROR-SYNC-FILE-"+this.getHash(),action:f,label:"user_"+d+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync")})}catch(g){}}}catch(g){}};
+DrawioFile.prototype.sendErrorReport=function(b,c,e,k){try{var f=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),p=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),t=this.getCurrentUser(),d=null!=t?this.ui.hashValue(t.id):"unknown",g=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",l=this.getTitle(),q=l.lastIndexOf("."),t="xml";0<q&&(t=l.substring(q));var m=null!=e?e.stack:Error().stack;EditorUi.sendReport(b+" "+(new Date).toISOString()+
+":\n\nAppVersion="+navigator.appVersion+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+t+")\nUser="+d+g+"\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=c?"\n\n"+c:
+"")+(null!=e?"\n\nError: "+e.message:"")+"\n\nStack:\n"+m+"\n\nShadow:\n"+f+"\n\nData:\n"+p,k)}catch(n){}};
+DrawioFile.prototype.reloadFile=function(b,c){try{this.ui.spinner.stop();var e=mxUtils.bind(this,function(){this.stats.fileReloaded++;var c=this.ui.editor.graph.getViewState(),e=this.ui.editor.graph.getSelectionCells(),p=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(p,c,e);null!=this.backupPatch&&this.patch([this.backupPatch]);var f=this.ui.getCurrentFile();null!=f&&(f.stats=this.stats);null!=b&&
b()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),e,mxResources.get("cancel"),mxResources.get("discardChanges")):e()}catch(k){null!=c&&c(k)}};DrawioFile.prototype.copyFile=function(b,c){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))};
DrawioFile.prototype.ignorePatches=function(b){for(var c=!0,e=0;e<b.length&&c;e++)c=c&&0==Object.keys(b[e]).length;return c};
-DrawioFile.prototype.patch=function(b,c,e){var k=this.ui.editor.undoManager,g=k.history.slice(),p=k.indexOfNextAdd,t=this.ui.editor.graph;t.container.style.visibility="hidden";var d=this.changeListenerEnabled;this.changeListenerEnabled=e;var f=t.foldingEnabled,l=t.mathEnabled,q=t.cellRenderer.redraw;t.cellRenderer.redraw=function(b){b.view.graph.isEditing(b.cell)&&(b.view.graph.scrollCellToVisible(b.cell),b.view.graph.cellEditor.resize());q.apply(this,arguments)};t.model.beginUpdate();try{for(var m=
-0;m<b.length;m++)this.ui.pages=this.ui.patchPages(this.ui.pages,b[m],!0,c,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{t.container.style.visibility="";t.model.endUpdate();t.cellRenderer.redraw=q;this.changeListenerEnabled=d;e||(k.history=g,k.indexOfNextAdd=p,k.fireEvent(new mxEventObject(mxEvent.CLEAR)));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)l!=
-t.mathEnabled?(this.ui.editor.updateGraphComponents(),t.refresh()):(f!=t.foldingEnabled?t.view.revalidate():t.view.validate(),t.sizeDidChange());this.ui.updateTabContainer();this.ui.editor.fireEvent(new mxEventObject("pagesPatched","patches",b))}};
-DrawioFile.prototype.save=function(b,c,e,k,g,p){try{if(this.isEditable())if(!g&&this.invalidChecksum)if(null!=e)e({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave(),null!=c&&c();else if(null!=e)e({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));}catch(t){if(null!=e)e(t);else throw t;}};
+DrawioFile.prototype.patch=function(b,c,e){var k=this.ui.editor.undoManager,f=k.history.slice(),p=k.indexOfNextAdd,t=this.ui.editor.graph;t.container.style.visibility="hidden";var d=this.changeListenerEnabled;this.changeListenerEnabled=e;var g=t.foldingEnabled,l=t.mathEnabled,q=t.cellRenderer.redraw;t.cellRenderer.redraw=function(b){b.view.graph.isEditing(b.cell)&&(b.view.graph.scrollCellToVisible(b.cell),b.view.graph.cellEditor.resize());q.apply(this,arguments)};t.model.beginUpdate();try{for(var m=
+0;m<b.length;m++)this.ui.pages=this.ui.patchPages(this.ui.pages,b[m],!0,c,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{t.container.style.visibility="";t.model.endUpdate();t.cellRenderer.redraw=q;this.changeListenerEnabled=d;e||(k.history=f,k.indexOfNextAdd=p,k.fireEvent(new mxEventObject(mxEvent.CLEAR)));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)l!=
+t.mathEnabled?(this.ui.editor.updateGraphComponents(),t.refresh()):(g!=t.foldingEnabled?t.view.revalidate():t.view.validate(),t.sizeDidChange());this.ui.updateTabContainer();this.ui.editor.fireEvent(new mxEventObject("pagesPatched","patches",b))}};
+DrawioFile.prototype.save=function(b,c,e,k,f,p){try{if(this.isEditable())if(!f&&this.invalidChecksum)if(null!=e)e({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave(),null!=c&&c();else if(null!=e)e({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));}catch(t){if(null!=e)e(t);else throw t;}};
DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this,!this.isCompressed()))};DrawioFile.prototype.isCompressedStorage=function(){return!0};DrawioFile.prototype.isCompressed=function(){var b=null!=this.ui.fileNode?this.ui.fileNode.getAttribute("compressed"):null;return null!=b?"false"!=b:this.isCompressedStorage()&&Editor.compressXml};DrawioFile.prototype.saveAs=function(b,c,e){};DrawioFile.prototype.saveFile=function(b,c,e,k){};
DrawioFile.prototype.getPublicUrl=function(b){b(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.getShadowModified=function(){return this.shadowModified};DrawioFile.prototype.setShadowModified=function(b){this.shadowModified=b};DrawioFile.prototype.setModified=function(b){this.shadowModified=this.modified=b};DrawioFile.prototype.isAutosaveOptional=function(){return!1};
DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave};DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(b,c,e){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.isTrashed=function(){return!1};DrawioFile.prototype.move=function(b,c,e){};DrawioFile.prototype.share=function(){this.ui.alert(mxResources.get("sharingAvailable"),null,380)};DrawioFile.prototype.getHash=function(){return""};
@@ -3062,7 +3072,7 @@ DrawioFile.prototype.installListeners=function(){null==this.changeListener&&(thi
this.changeListener),this.ui.addListener("pageScaleChanged",this.changeListener),this.ui.addListener("backgroundColorChanged",this.changeListener),this.ui.addListener("backgroundImageChanged",this.changeListener),this.ui.addListener("foldingEnabledChanged",this.changeListener),this.ui.addListener("mathEnabledChanged",this.changeListener),this.ui.addListener("gridEnabledChanged",this.changeListener),this.ui.addListener("guidesEnabledChanged",this.changeListener),this.ui.addListener("tooltipsEnabledChanged",
this.changeListener),this.ui.addListener("pageViewChanged",this.changeListener),this.ui.addListener("connectionPointsChanged",this.changeListener),this.ui.addListener("connectionArrowsChanged",this.changeListener))};
DrawioFile.prototype.addAllSavedStatus=function(b){null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this&&(b=null!=b?b:mxUtils.htmlEntities(mxResources.get(this.allChangesSavedKey)),this.ui.editor.setStatus('<div title="'+b+'">'+b+"</div>"),b=this.ui.statusContainer.getElementsByTagName("div"),0<b.length&&this.isRevisionHistorySupported()&&(b[0].style.cursor="pointer",b[0].style.textDecoration="underline",mxEvent.addListener(b[0],"click",mxUtils.bind(this,function(){this.ui.actions.get("revisionHistory").funct()}))))};
-DrawioFile.prototype.saveDraft=function(){try{null==this.draftId&&(this.draftId=Editor.guid());var b={type:"draft",created:this.created,modified:(new Date).getTime(),data:this.ui.getFileData(),title:this.getTitle(),aliveCheck:this.ui.draftAliveCheck};this.ui.setDatabaseItem(".draft_"+this.draftId,JSON.stringify(b));EditorUi.debug("draft saved",this.draftId,b)}catch(c){this.removeDraft()}};
+DrawioFile.prototype.saveDraft=function(){try{null==this.draftId&&(this.draftId=Editor.guid());var b={type:"draft",created:this.created,modified:(new Date).getTime(),data:this.ui.getFileData(),title:this.getTitle(),fileObject:this.fileObject,aliveCheck:this.ui.draftAliveCheck};this.ui.setDatabaseItem(".draft_"+this.draftId,JSON.stringify(b));EditorUi.debug("draft saved",this.draftId,b)}catch(c){this.removeDraft()}};
DrawioFile.prototype.removeDraft=function(){try{null!=this.draftId&&(this.ui.removeDatabaseItem(".draft_"+this.draftId),EditorUi.debug("draft deleted",".draft_"+this.draftId))}catch(b){}};
DrawioFile.prototype.addUnsavedStatus=function(b){if(!this.inConflictState&&null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this)if(b instanceof Error&&null!=b.message&&""!=b.message){var c=mxUtils.htmlEntities(mxResources.get("unsavedChanges"));this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert">'+c+" ("+mxUtils.htmlEntities(b.message)+")</div>")}else{c=this.getErrorMessage(b);if(null==c&&null!=this.lastSaved){var e=this.ui.timeSince(new Date(this.lastSaved));null!=e&&(c=
mxResources.get("lastSaved",[e]))}null!=c&&60<c.length&&(c=c.substring(0,60)+"...");c=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+(null!=c&&""!=c?" ("+mxUtils.htmlEntities(c)+")":"");this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlertOrange">'+c+' <img src="'+Editor.saveImage+'"/></div>');c=this.ui.statusContainer.getElementsByTagName("div");null!=c&&0<c.length?(c[0].style.cursor="pointer",mxEvent.addListener(c[0],"click",mxUtils.bind(this,function(){this.ui.actions.get(null!=
@@ -3073,32 +3083,32 @@ DrawioFile.prototype.showRefreshDialog=function(b,c,e){null==e&&(e=mxResources.g
c)}),null,mxResources.get("synchronize"),mxUtils.bind(this,function(){this.reloadFile(b,c)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150))};
DrawioFile.prototype.showCopyDialog=function(b,c,e){this.invalidChecksum=this.inConflictState=!1;this.addUnsavedStatus();this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedOverwriteDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(b,c)}),null,mxResources.get("overwrite"),e,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150)};
DrawioFile.prototype.showConflictDialog=function(b,c){this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedSyncDialog"),mxResources.get("overwrite"),b,null,mxResources.get("synchronize"),c,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog();this.handleFileError(null,!1)}),340,150)};
-DrawioFile.prototype.redirectToNewApp=function(b,c){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var e=window.location.protocol+"//"+window.location.host+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#"+this.getHash(),k=mxResources.get("redirectToNewApp");null!=c&&(k+=" ("+c+")");var g=mxUtils.bind(this,function(){var c=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==e?window.location.reload():
-window.location.href=e});null==b&&this.isModified()?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.redirectDialogShowing=!1}),c,mxResources.get("cancel"),mxResources.get("discardChanges")):c()});null!=b?this.isModified()?this.ui.confirm(k,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;b()}),g,mxResources.get("cancel"),mxResources.get("discardChanges")):this.ui.confirm(k,g,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;b()})):this.ui.alert(mxResources.get("redirectToNewApp"),
-g)}};DrawioFile.prototype.handleFileSuccess=function(b){this.ui.spinner.stop();this.ui.getCurrentFile()==this&&(this.isModified()?this.fileChanged():b?(this.isTrashed()?this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get(this.allChangesSavedKey))+" ("+mxUtils.htmlEntities(mxResources.get("fileMovedToTrash"))+")"):this.addAllSavedStatus(),null!=this.sync&&(this.sync.resetUpdateStatusThread(),this.sync.remoteFileChanged&&(this.sync.remoteFileChanged=!1,this.sync.fileChangedNotify()))):this.ui.editor.setStatus(""))};
+DrawioFile.prototype.redirectToNewApp=function(b,c){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var e=window.location.protocol+"//"+window.location.host+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#"+this.getHash(),k=mxResources.get("redirectToNewApp");null!=c&&(k+=" ("+c+")");var f=mxUtils.bind(this,function(){var c=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==e?window.location.reload():
+window.location.href=e});null==b&&this.isModified()?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.redirectDialogShowing=!1}),c,mxResources.get("cancel"),mxResources.get("discardChanges")):c()});null!=b?this.isModified()?this.ui.confirm(k,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;b()}),f,mxResources.get("cancel"),mxResources.get("discardChanges")):this.ui.confirm(k,f,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;b()})):this.ui.alert(mxResources.get("redirectToNewApp"),
+f)}};DrawioFile.prototype.handleFileSuccess=function(b){this.ui.spinner.stop();this.ui.getCurrentFile()==this&&(this.isModified()?this.fileChanged():b?(this.isTrashed()?this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get(this.allChangesSavedKey))+" ("+mxUtils.htmlEntities(mxResources.get("fileMovedToTrash"))+")"):this.addAllSavedStatus(),null!=this.sync&&(this.sync.resetUpdateStatusThread(),this.sync.remoteFileChanged&&(this.sync.remoteFileChanged=!1,this.sync.fileChangedNotify()))):this.ui.editor.setStatus(""))};
DrawioFile.prototype.handleFileError=function(b,c){this.ui.spinner.stop();if(this.ui.getCurrentFile()==this)if(this.inConflictState)this.handleConflictError(b,c);else if(this.isModified()&&this.addUnsavedStatus(b),c)this.ui.handleError(b,null!=b?mxResources.get("errorSavingFile"):null);else if(!this.isModified()){var e=this.getErrorMessage(b);null!=e&&60<e.length&&(e=e.substring(0,60)+"...");this.ui.editor.setStatus('<div class="geStatusAlert">'+mxUtils.htmlEntities(mxResources.get("error"))+(null!=
e?" ("+mxUtils.htmlEntities(e)+")":"")+"</div>")}};
-DrawioFile.prototype.handleConflictError=function(b,c){var e=mxUtils.bind(this,function(){this.handleFileSuccess(!0)}),k=mxUtils.bind(this,function(b){this.handleFileError(b,!0)}),g=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get(this.savingSpinnerKey))&&(this.ui.editor.setStatus(""),this.save(!0,e,k,null,!0,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==b?null:b.commitMessage))}),p=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,
-mxResources.get("updatingDocument"))&&this.synchronizeFile(mxUtils.bind(this,function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get(this.savingSpinnerKey))&&this.save(!0,e,k,null,null,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==b?null:b.commitMessage)}),k)});"none"==DrawioFile.SYNC?this.showCopyDialog(e,k,g):this.invalidChecksum?this.showRefreshDialog(e,k,this.getErrorMessage(b)):c?this.showConflictDialog(g,p):this.addConflictStatus(mxUtils.bind(this,
+DrawioFile.prototype.handleConflictError=function(b,c){var e=mxUtils.bind(this,function(){this.handleFileSuccess(!0)}),k=mxUtils.bind(this,function(b){this.handleFileError(b,!0)}),f=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get(this.savingSpinnerKey))&&(this.ui.editor.setStatus(""),this.save(!0,e,k,null,!0,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==b?null:b.commitMessage))}),p=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,
+mxResources.get("updatingDocument"))&&this.synchronizeFile(mxUtils.bind(this,function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get(this.savingSpinnerKey))&&this.save(!0,e,k,null,null,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==b?null:b.commitMessage)}),k)});"none"==DrawioFile.SYNC?this.showCopyDialog(e,k,f):this.invalidChecksum?this.showRefreshDialog(e,k,this.getErrorMessage(b)):c?this.showConflictDialog(f,p):this.addConflictStatus(mxUtils.bind(this,
function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(e,k)}),this.getErrorMessage(b))};DrawioFile.prototype.getErrorMessage=function(b){var c=null!=b?null!=b.error?b.error.message:b.message:null;null==c&&null!=b&&b.code==App.ERROR_TIMEOUT&&(c=mxResources.get("timeout"));return c};DrawioFile.prototype.isOverdue=function(){return null!=this.ageStart&&Date.now()-this.ageStart.getTime()>=this.ui.warnInterval};
DrawioFile.prototype.fileChanged=function(){this.lastChanged=new Date;this.setModified(!0);this.isAutosave()?(null!=this.savingStatusKey&&this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get(this.savingStatusKey))+"..."),this.ui.scheduleSanityCheck(),null==this.ageStart&&(this.ageStart=new Date),this.sendFileChanges(),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(b){this.ui.stopSanityCheck();null==this.autosaveThread?(this.handleFileSuccess(!0),this.ageStart=
null):this.isModified()&&(this.ui.scheduleSanityCheck(),this.ageStart=this.lastChanged)}),mxUtils.bind(this,function(b){this.handleFileError(b)}))):(this.ageStart=null,this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus())};DrawioFile.prototype.isOptimisticSync=function(){return!1};
DrawioFile.prototype.createSecret=function(b){var c=Editor.guid(32);null==this.sync||this.isOptimisticSync()?b(c):this.sync.createToken(c,mxUtils.bind(this,function(e){b(c,e)}),mxUtils.bind(this,function(){b(c)}))};DrawioFile.prototype.fileSaving=function(){null!=this.sync&&this.isOptimisticSync()&&this.sync.fileSaving();"1"==urlParams.test&&EditorUi.debug("DrawioFile.fileSaving",[this])};
DrawioFile.prototype.sendFileChanges=function(){try{null!=this.p2pCollab&&null!=this.sync&&(this.updateFileData(),this.sync.sendFileChanges(this.ui.getPagesForNode(mxUtils.parseXml(this.getData()).documentElement),this.desc),"1"==urlParams.test&&EditorUi.debug("DrawioFile.sendFileChanges",[this]))}catch(b){console.log(b)}};
-DrawioFile.prototype.fileSaved=function(b,c,e,k,g){this.lastSaved=new Date;this.ageStart=null;try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync||this.isOptimisticSync()?(this.shadowData=b,this.shadowPages=null,null!=this.sync&&(this.sync.lastModified=this.getLastModifiedDate(),this.sync.resetUpdateStatusThread()),null!=e&&e()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(b).documentElement),c,e,k,g)}catch(d){this.invalidChecksum=this.inConflictState=
-!0;this.descriptorChanged();null!=k&&k(d);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,d);else{var p=this.getCurrentUser(),t=null!=p?p.id:"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),t,d)}}catch(f){}}"1"==urlParams.test&&EditorUi.debug("DrawioFile.fileSaved",[this])};
-DrawioFile.prototype.autosave=function(b,c,e,k){null==this.lastAutosave&&(this.lastAutosave=Date.now());b=Date.now()-this.lastAutosave<c?b:0;this.clearAutosave();var g=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==g&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var b=this.isAutosaveRevision();b&&(this.lastAutosaveRevision=(new Date).getTime());this.save(b,mxUtils.bind(this,function(b){this.autosaveCompleted();null!=e&&e(b)}),mxUtils.bind(this,
-function(b){null!=k&&k(b)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=e&&e(null)}),b);this.autosaveThread=g};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)};
+DrawioFile.prototype.fileSaved=function(b,c,e,k,f){this.lastSaved=new Date;this.ageStart=null;try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync||this.isOptimisticSync()?(this.shadowData=b,this.shadowPages=null,null!=this.sync&&(this.sync.lastModified=this.getLastModifiedDate(),this.sync.resetUpdateStatusThread()),null!=e&&e()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(b).documentElement),c,e,k,f)}catch(d){this.invalidChecksum=this.inConflictState=
+!0;this.descriptorChanged();null!=k&&k(d);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,d);else{var p=this.getCurrentUser(),t=null!=p?p.id:"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),t,d)}}catch(g){}}"1"==urlParams.test&&EditorUi.debug("DrawioFile.fileSaved",[this])};
+DrawioFile.prototype.autosave=function(b,c,e,k){null==this.lastAutosave&&(this.lastAutosave=Date.now());b=Date.now()-this.lastAutosave<c?b:0;this.clearAutosave();var f=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==f&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var b=this.isAutosaveRevision();b&&(this.lastAutosaveRevision=(new Date).getTime());this.save(b,mxUtils.bind(this,function(b){this.autosaveCompleted();null!=e&&e(b)}),mxUtils.bind(this,
+function(b){null!=k&&k(b)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=e&&e(null)}),b);this.autosaveThread=f};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)};
DrawioFile.prototype.isAutosaveRevision=function(){var b=(new Date).getTime();return null==this.lastAutosaveRevision||b-this.lastAutosaveRevision>this.maxAutosaveRevisionDelay};DrawioFile.prototype.descriptorChanged=function(){this.fireEvent(new mxEventObject("descriptorChanged"))};DrawioFile.prototype.contentChanged=function(){this.fireEvent(new mxEventObject("contentChanged"))};
DrawioFile.prototype.close=function(b){this.updateFileData();this.stats.closed++;this.isAutosave()&&this.isModified()&&this.save(this.isAutosaveRevision(),null,null,b);this.destroy()};DrawioFile.prototype.hasSameExtension=function(b,c){if(null!=b&&null!=c){var e=b.lastIndexOf("."),k=0<e?b.substring(e):"",e=c.lastIndexOf(".");return k===(0<e?c.substring(e):"")}return b==c};
DrawioFile.prototype.removeListeners=function(){null!=this.changeListener&&(this.ui.editor.graph.model.removeListener(this.changeListener),this.ui.editor.graph.removeListener(this.changeListener),this.ui.removeListener(this.changeListener),this.changeListener=null)};DrawioFile.prototype.destroy=function(){this.clearAutosave();this.removeListeners();this.stats.destroyed++;null!=this.sync&&(this.sync.destroy(),this.sync=null)};DrawioFile.prototype.commentsSupported=function(){return!1};
-DrawioFile.prototype.commentsRefreshNeeded=function(){return!0};DrawioFile.prototype.commentsSaveNeeded=function(){return!1};DrawioFile.prototype.getComments=function(b,c){b([])};DrawioFile.prototype.addComment=function(b,c,e){c(Date.now())};DrawioFile.prototype.canReplyToReplies=function(){return!0};DrawioFile.prototype.canComment=function(){return!0};DrawioFile.prototype.newComment=function(b,c){return new DrawioComment(this,null,b,Date.now(),Date.now(),!1,c)};LocalFile=function(b,c,e,k,g,p){DrawioFile.call(this,b,c);this.title=e;this.mode=k?null:App.MODE_DEVICE;this.fileHandle=g;this.desc=p};mxUtils.extend(LocalFile,DrawioFile);LocalFile.prototype.isAutosave=function(){return null!=this.fileHandle&&!this.invalidFileHandle&&DrawioFile.prototype.isAutosave.apply(this,arguments)};LocalFile.prototype.isAutosaveOptional=function(){return null!=this.fileHandle};LocalFile.prototype.getMode=function(){return this.mode};LocalFile.prototype.getTitle=function(){return this.title};
+DrawioFile.prototype.commentsRefreshNeeded=function(){return!0};DrawioFile.prototype.commentsSaveNeeded=function(){return!1};DrawioFile.prototype.getComments=function(b,c){b([])};DrawioFile.prototype.addComment=function(b,c,e){c(Date.now())};DrawioFile.prototype.canReplyToReplies=function(){return!0};DrawioFile.prototype.canComment=function(){return!0};DrawioFile.prototype.newComment=function(b,c){return new DrawioComment(this,null,b,Date.now(),Date.now(),!1,c)};LocalFile=function(b,c,e,k,f,p){DrawioFile.call(this,b,c);this.title=e;this.mode=k?null:App.MODE_DEVICE;this.fileHandle=f;this.desc=p};mxUtils.extend(LocalFile,DrawioFile);LocalFile.prototype.isAutosave=function(){return null!=this.fileHandle&&!this.invalidFileHandle&&DrawioFile.prototype.isAutosave.apply(this,arguments)};LocalFile.prototype.isAutosaveOptional=function(){return null!=this.fileHandle};LocalFile.prototype.getMode=function(){return this.mode};LocalFile.prototype.getTitle=function(){return this.title};
LocalFile.prototype.isRenamable=function(){return!0};LocalFile.prototype.save=function(b,c,e){this.saveAs(this.title,c,e)};LocalFile.prototype.saveAs=function(b,c,e){this.saveFile(b,!1,c,e)};LocalFile.prototype.saveAs=function(b,c,e){this.saveFile(b,!1,c,e)};LocalFile.prototype.getDescriptor=function(){return this.desc};LocalFile.prototype.setDescriptor=function(b){this.desc=b};
LocalFile.prototype.getLatestVersion=function(b,c){null==this.fileHandle?b(null):this.ui.loadFileSystemEntry(this.fileHandle,b,c)};
-LocalFile.prototype.saveFile=function(b,c,e,k,g){b!=this.title&&(this.desc=this.fileHandle=null);this.title=b;g||this.updateFileData();var p=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle());this.setShadowModified(!1);var t=this.getData(),d=mxUtils.bind(this,function(){this.setModified(this.getShadowModified());this.contentChanged();null!=e&&e()}),f=mxUtils.bind(this,function(c){if(null!=this.fileHandle){if(!this.savingFile){this.savingFileTime=new Date;this.savingFile=!0;var f=mxUtils.bind(this,
+LocalFile.prototype.saveFile=function(b,c,e,k,f){b!=this.title&&(this.desc=this.fileHandle=null);this.title=b;f||this.updateFileData();var p=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle());this.setShadowModified(!1);var t=this.getData(),d=mxUtils.bind(this,function(){this.setModified(this.getShadowModified());this.contentChanged();null!=e&&e()}),g=mxUtils.bind(this,function(c){if(null!=this.fileHandle){if(!this.savingFile){this.savingFileTime=new Date;this.savingFile=!0;var g=mxUtils.bind(this,
function(b){this.savingFile=!1;null!=k&&k({error:b})});this.saveDraft();this.fileHandle.createWritable().then(mxUtils.bind(this,function(b){this.fileHandle.getFile().then(mxUtils.bind(this,function(e){this.invalidFileHandle=null;this.desc.lastModified==e.lastModified?b.write(p?this.ui.base64ToBlob(c,"image/png"):c).then(mxUtils.bind(this,function(){b.close().then(mxUtils.bind(this,function(){this.fileHandle.getFile().then(mxUtils.bind(this,function(b){try{var c=this.desc;this.savingFile=!1;this.desc=
-b;this.fileSaved(t,c,d,f);this.removeDraft()}catch(x){f(x)}}),f)}),f)}),f):(this.inConflictState=!0,f())}),mxUtils.bind(this,function(b){this.invalidFileHandle=!0;f(b)}))}),f)}}else{if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(c,b,p?"image/png":"text/xml",p);else if(c.length<MAX_REQUEST_SIZE){var e=b.lastIndexOf("."),e=0<e?b.substring(e+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+e+"&xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(b)+(p?"&binary=1":""))).simulate(document,
-"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(c)}));d()}});p?(c=this.ui.getPngFileProperties(this.ui.fileNode),this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){f(b)}),k,this.ui.getCurrentFile()!=this?t:null,c.scale,c.border)):f(t)};LocalFile.prototype.rename=function(b,c,e){this.title=b;this.descriptorChanged();null!=c&&c()};
+b;this.fileSaved(t,c,d,g);this.removeDraft()}catch(x){g(x)}}),g)}),g)}),g):(this.inConflictState=!0,g())}),mxUtils.bind(this,function(b){this.invalidFileHandle=!0;g(b)}))}),g)}}else{if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(c,b,p?"image/png":"text/xml",p);else if(c.length<MAX_REQUEST_SIZE){var e=b.lastIndexOf("."),e=0<e?b.substring(e+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+e+"&xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(b)+(p?"&binary=1":""))).simulate(document,
+"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(c)}));d()}});p?(c=this.ui.getPngFileProperties(this.ui.fileNode),this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){g(b)}),k,this.ui.getCurrentFile()!=this?t:null,c.scale,c.border)):g(t)};LocalFile.prototype.rename=function(b,c,e){this.title=b;this.descriptorChanged();null!=c&&c()};
LocalFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};(function(){"undefined"!==typeof html4&&(html4.ATTRIBS["span::data-lucid-content"]=0,html4.ATTRIBS["span::data-lucid-type"]=0,html4.ATTRIBS["font::data-font-src"]=0);Editor.prototype.appName="diagrams.net";Editor.prototype.diagramFileTypes=[{description:"diagramXmlDesc",extension:"drawio",mimeType:"text/xml"},{description:"diagramPngDesc",extension:"png",mimeType:"image/png"},{description:"diagramSvgDesc",extension:"svg",mimeType:"image/svg"},{description:"diagramHtmlDesc",extension:"html",mimeType:"text/html"},
{description:"diagramXmlDesc",extension:"xml",mimeType:"text/xml"}];Editor.prototype.libraryFileTypes=[{description:"Library (.drawiolib, .xml)",extensions:["drawiolib","xml"]}];Editor.prototype.fileExtensions=[{ext:"html",title:"filetypeHtml"},{ext:"png",title:"filetypePng"},{ext:"svg",title:"filetypeSvg"}];Editor.styles=[{},{commonStyle:{fontColor:"#5C5C5C",strokeColor:"#006658",fillColor:"#21C0A5"}},{commonStyle:{fontColor:"#095C86",strokeColor:"#AF45ED",fillColor:"#F694C1"},edgeStyle:{strokeColor:"#60E696"}},
{commonStyle:{fontColor:"#46495D",strokeColor:"#788AA3",fillColor:"#B2C9AB"}},{commonStyle:{fontColor:"#5AA9E6",strokeColor:"#FF6392",fillColor:"#FFE45E"}},{commonStyle:{fontColor:"#1D3557",strokeColor:"#457B9D",fillColor:"#A8DADC"},graph:{background:"#F1FAEE"}},{commonStyle:{fontColor:"#393C56",strokeColor:"#E07A5F",fillColor:"#F2CC8F"},graph:{background:"#F4F1DE",gridColor:"#D4D0C0"}},{commonStyle:{fontColor:"#143642",strokeColor:"#0F8B8D",fillColor:"#FAE5C7"},edgeStyle:{strokeColor:"#A8201A"},
@@ -3113,6 +3123,7 @@ Editor.commentImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53M
Editor.shareImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTggMTYuMDhjLS43NiAwLTEuNDQuMy0xLjk2Ljc3TDguOTEgMTIuN2MuMDUtLjIzLjA5LS40Ni4wOS0uN3MtLjA0LS40Ny0uMDktLjdsNy4wNS00LjExYy41NC41IDEuMjUuODEgMi4wNC44MSAxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzYzAgLjI0LjA0LjQ3LjA5LjdMOC4wNCA5LjgxQzcuNSA5LjMxIDYuNzkgOSA2IDljLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDNjLjc5IDAgMS41LS4zMSAyLjA0LS44MWw3LjEyIDQuMTZjLS4wNS4yMS0uMDguNDMtLjA4LjY1IDAgMS42MSAxLjMxIDIuOTIgMi45MiAyLjkyIDEuNjEgMCAyLjkyLTEuMzEgMi45Mi0yLjkycy0xLjMxLTIuOTItMi45Mi0yLjkyeiIvPjwvc3ZnPg==";
Editor.syncImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgNFYxTDggNWw0IDRWNmMzLjMxIDAgNiAyLjY5IDYgNiAwIDEuMDEtLjI1IDEuOTctLjcgMi44bDEuNDYgMS40NkMxOS41NCAxNS4wMyAyMCAxMy41NyAyMCAxMmMwLTQuNDItMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTYgMC0xLjAxLjI1LTEuOTcuNy0yLjhMNS4yNCA3Ljc0QzQuNDYgOC45NyA0IDEwLjQzIDQgMTJjMCA0LjQyIDMuNTggOCA4IDh2M2w0LTQtNC00djN6Ii8+PC9zdmc+";Editor.syncDisabledImage=
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTAgNi4zNVY0LjI2Yy0uOC4yMS0xLjU1LjU0LTIuMjMuOTZsMS40NiAxLjQ2Yy4yNS0uMTIuNS0uMjQuNzctLjMzem0tNy4xNC0uOTRsMi4zNiAyLjM2QzQuNDUgOC45OSA0IDEwLjQ0IDQgMTJjMCAyLjIxLjkxIDQuMiAyLjM2IDUuNjRMNCAyMGg2di02bC0yLjI0IDIuMjRDNi42OCAxNS4xNSA2IDEzLjY2IDYgMTJjMC0xIC4yNS0xLjk0LjY4LTIuNzdsOC4wOCA4LjA4Yy0uMjUuMTMtLjUuMjUtLjc3LjM0djIuMDljLjgtLjIxIDEuNTUtLjU0IDIuMjMtLjk2bDIuMzYgMi4zNiAxLjI3LTEuMjdMNC4xNCA0LjE0IDIuODYgNS40MXpNMjAgNGgtNnY2bDIuMjQtMi4yNEMxNy4zMiA4Ljg1IDE4IDEwLjM0IDE4IDEyYzAgMS0uMjUgMS45NC0uNjggMi43N2wxLjQ2IDEuNDZDMTkuNTUgMTUuMDEgMjAgMTMuNTYgMjAgMTJjMC0yLjIxLS45MS00LjItMi4zNi01LjY0TDIwIDR6Ii8+PC9zdmc+";
+Editor.calendarImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxwYXRoIGQ9Ik0wLDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPjwvZz48Zz48cGF0aCBkPSJNMjAsNEg0QzIuOSw0LDIsNC45LDIsNnYxMmMwLDEuMSwwLjksMiwyLDJoMTZjMS4xLDAsMi0wLjksMi0yVjZDMjIsNC45LDIxLjEsNCwyMCw0eiBNOCwxMUg0VjZoNFYxMXogTTE0LDExaC00VjZoNFYxMXogTTIwLDExaC00VjZoNFYxMXogTTgsMThINHYtNWg0VjE4eiBNMTQsMThoLTR2LTVoNFYxOHogTTIwLDE4aC00di01aDRWMTh6Ii8+PC9nPjwvc3ZnPg==";
Editor.syncProblemImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyAxMmMwIDIuMjEuOTEgNC4yIDIuMzYgNS42NEwzIDIwaDZ2LTZsLTIuMjQgMi4yNEM1LjY4IDE1LjE1IDUgMTMuNjYgNSAxMmMwLTIuNjEgMS42Ny00LjgzIDQtNS42NVY0LjI2QzUuNTUgNS4xNSAzIDguMjcgMyAxMnptOCA1aDJ2LTJoLTJ2MnpNMjEgNGgtNnY2bDIuMjQtMi4yNEMxOC4zMiA4Ljg1IDE5IDEwLjM0IDE5IDEyYzAgMi42MS0xLjY3IDQuODMtNCA1LjY1djIuMDljMy40NS0uODkgNi00LjAxIDYtNy43NCAwLTIuMjEtLjkxLTQuMi0yLjM2LTUuNjRMMjEgNHptLTEwIDloMlY3aC0ydjZ6Ii8+PC9zdmc+";
Editor.drawLogoImage="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJFYmVuZV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjUwIDI1MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjUwIDI1MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MntmaWxsOiMwMDA7fQo8L3N0eWxlPgo8cGF0aCBjbGFzcz0ic3QyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDE1KSIgZD0iTTE5Ny4xLDEzOC4zaC0yMy43bC0yNS00Mi43YzUuNy0xLjIsOS44LTYuMiw5LjctMTJWNTEuNWMwLTYuOC01LjQtMTIuMy0xMi4yLTEyLjNjMCwwLTAuMSwwLTAuMSwwaC00MS43CgljLTYuOCwwLTEyLjMsNS40LTEyLjMsMTIuMmMwLDAsMCwwLjEsMCwwLjF2MzIuMWMwLDUuOCw0LDEwLjgsOS43LDEybC0yNSw0Mi43SDUyLjljLTYuOCwwLTEyLjMsNS40LTEyLjMsMTIuMmMwLDAsMCwwLjEsMCwwLjEKCXYzMi4xYzAsNi44LDUuNCwxMi4zLDEyLjIsMTIuM2MwLDAsMC4xLDAsMC4xLDBoNDEuN2M2LjgsMCwxMi4zLTUuNCwxMi4zLTEyLjJjMCwwLDAtMC4xLDAtMC4xdi0zMi4xYzAtNi44LTUuNC0xMi4zLTEyLjItMTIuMwoJYzAsMC0wLjEsMC0wLjEsMGgtNGwyNC44LTQyLjRoMTkuM2wyNC45LDQyLjRoLTQuMWMtNi44LDAtMTIuMyw1LjQtMTIuMywxMi4yYzAsMCwwLDAuMSwwLDAuMXYzMi4xYzAsNi44LDUuNCwxMi4zLDEyLjIsMTIuMwoJYzAsMCwwLjEsMCwwLjEsMGg0MS43YzYuOCwwLDEyLjMtNS40LDEyLjMtMTIuMmMwLDAsMC0wLjEsMC0wLjF2LTMyLjFjMC02LjgtNS40LTEyLjMtMTIuMi0xMi4zCglDMTk3LjIsMTM4LjMsMTk3LjIsMTM4LjMsMTk3LjEsMTM4LjN6Ii8+Cjwvc3ZnPgo=";
Editor.tailSpin="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9Ii0yIC0yIDQ0IDQ0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSI4LjA0MiUiIHkxPSIwJSIgeDI9IjY1LjY4MiUiIHkyPSIyMy44NjUlIiBpZD0iYSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiM4MDgwODAiIHN0b3Atb3BhY2l0eT0iMCIgb2Zmc2V0PSIwJSIvPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjODA4MDgwIiBzdG9wLW9wYWNpdHk9Ii42MzEiIG9mZnNldD0iNjMuMTQ2JSIvPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjODA4MDgwIiBvZmZzZXQ9IjEwMCUiLz4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEpIj4KICAgICAgICAgICAgPHBhdGggZD0iTTM2IDE4YzAtOS45NC04LjA2LTE4LTE4LTE4IiBzdHJva2U9InVybCgjYSkiIHN0cm9rZS13aWR0aD0iNiI+CiAgICAgICAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybQogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIKICAgICAgICAgICAgICAgICAgICB0eXBlPSJyb3RhdGUiCiAgICAgICAgICAgICAgICAgICAgZnJvbT0iMCAxOCAxOCIKICAgICAgICAgICAgICAgICAgICB0bz0iMzYwIDE4IDE4IgogICAgICAgICAgICAgICAgICAgIGR1cj0iMC45cyIKICAgICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4KICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICA8Y2lyY2xlIGZpbGw9IiM4MDgwODAiIGN4PSIzNiIgY3k9IjE4IiByPSIxIj4KICAgICAgICAgICAgICAgIDxhbmltYXRlVHJhbnNmb3JtCiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIgogICAgICAgICAgICAgICAgICAgIHR5cGU9InJvdGF0ZSIKICAgICAgICAgICAgICAgICAgICBmcm9tPSIwIDE4IDE4IgogICAgICAgICAgICAgICAgICAgIHRvPSIzNjAgMTggMTgiCiAgICAgICAgICAgICAgICAgICAgZHVyPSIwLjlzIgogICAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPgogICAgICAgICAgICA8L2NpcmNsZT4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPgo=";
@@ -3139,92 +3150,92 @@ type:"float",defVal:0},{name:"direction",dispName:"Direction",type:"enum",defVal
type:"bool",defVal:!1},{name:"connectable",dispName:"Connectable",type:"bool",getDefaultValue:function(b,d){return d.editorUi.editor.graph.isCellConnectable(0<b.vertices.length&&0==b.edges.length?b.vertices[0]:null)},isVisible:function(b,d){return 0<b.vertices.length&&0==b.edges.length}},{name:"allowArrows",dispName:"Allow Arrows",type:"bool",defVal:!0},{name:"snapToPoint",dispName:"Snap to Point",type:"bool",defVal:!1},{name:"perimeter",dispName:"Perimeter",defVal:"none",type:"enum",enumList:[{val:"none",
dispName:"None"},{val:"rectanglePerimeter",dispName:"Rectangle"},{val:"ellipsePerimeter",dispName:"Ellipse"},{val:"rhombusPerimeter",dispName:"Rhombus"},{val:"trianglePerimeter",dispName:"Triangle"},{val:"hexagonPerimeter2",dispName:"Hexagon"},{val:"lifelinePerimeter",dispName:"Lifeline"},{val:"orthogonalPerimeter",dispName:"Orthogonal"},{val:"backbonePerimeter",dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter",dispName:"Parallelogram"},{val:"trapezoidPerimeter",
dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"},{val:"centerPerimeter",dispName:"Center"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1,isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(b,d){var c=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:
-null,f=d.editorUi.editor.graph;return null!=c&&(f.isSwimlane(c)||0<f.model.getChildCount(c))},isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(b,d){var c=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null,f=d.editorUi.editor.graph;return null!=c&&(f.isContainer(c)&&"0"!=b.style.collapsible||!f.isContainer(c)&&"1"==b.style.collapsible)},isVisible:function(b,d){return 1==b.vertices.length&&
+null,g=d.editorUi.editor.graph;return null!=c&&(g.isSwimlane(c)||0<g.model.getChildCount(c))},isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(b,d){var c=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null,g=d.editorUi.editor.graph;return null!=c&&(g.isContainer(c)&&"0"!=b.style.collapsible||!g.isContainer(c)&&"1"==b.style.collapsible)},isVisible:function(b,d){return 1==b.vertices.length&&
0==b.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length&&!d.editorUi.editor.graph.isSwimlane(b.vertices[0])&&null==mxUtils.getValue(b.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function(b,d){var c=d.editorUi.editor.graph.model;return 0<b.vertices.length?c.isVertex(c.getParent(b.vertices[0])):
!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"metaEdit",dispName:"Edit Dialog",type:"bool",defVal:!1},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(b,d){var c=0<b.vertices.length?d.editorUi.editor.graph.getCellGeometry(b.vertices[0]):null;return null!=c&&!c.relative}},{name:"resizable",dispName:"Resizable",
type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",
type:"bool",defVal:!0,isVisible:function(b,d){var c=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null);return d.editorUi.editor.graph.isSwimlane(b.vertices[0])||null==c||c==mxConstants.NONE||0==mxUtils.getValue(b.style,mxConstants.STYLE_FILL_OPACITY,100)||0==mxUtils.getValue(b.style,mxConstants.STYLE_OPACITY,100)||null!=b.style.pointerEvents}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(b,d){return 0<b.vertices.length&&d.editorUi.editor.graph.isContainer(b.vertices[0])}}].concat(Editor.commonProperties);
Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## JSON for variables in styles of the form {"name": "value", "name": "value"} where name is a string\n## that will replace a placeholder in a style.\n#\n# vars: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## In addition to those, an optional source and targetlabel can be used to specify a label\n## that contains placeholders referencing the respective columns in the source or target row.\n## The label is created in the form fromlabel + sourcelabel + label + tolabel + targetlabel.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## An optional placeholders with the string value "source" or "target" can be specified\n## to replace placeholders in the additional label with data from the source or target.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle or a JSON string as used in Layout, Apply.\n## Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nTessa Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nAlison Donovan,System Admin,rdo,Office 3,Tessa Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nEvan Valet,HR Director,tva,Office 4,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\n';
-Editor.createRoughCanvas=function(b){var d=rough.canvas({getContext:function(){return b}});d.draw=function(d){var c=d.sets||[];d=d.options||this.getDefaultOptions();for(var f=0;f<c.length;f++){var e=c[f];switch(e.type){case "path":null!=d.stroke&&this._drawToContext(b,e,d);break;case "fillPath":this._drawToContext(b,e,d);break;case "fillSketch":this.fillSketch(b,e,d)}}};d.fillSketch=function(d,c,f){var e=b.state.strokeColor,g=b.state.strokeWidth,l=b.state.strokeAlpha,m=b.state.dashed,k=f.fillWeight;
-0>k&&(k=f.strokeWidth/2);b.setStrokeAlpha(b.state.fillAlpha);b.setStrokeColor(f.fill||"");b.setStrokeWidth(k);b.setDashed(!1);this._drawToContext(d,c,f);b.setDashed(m);b.setStrokeWidth(g);b.setStrokeColor(e);b.setStrokeAlpha(l)};d._drawToContext=function(b,d,c){b.begin();for(var f=0;f<d.ops.length;f++){var e=d.ops[f],g=e.data;switch(e.op){case "move":b.moveTo(g[0],g[1]);break;case "bcurveTo":b.curveTo(g[0],g[1],g[2],g[3],g[4],g[5]);break;case "lineTo":b.lineTo(g[0],g[1])}}b.end();"fillPath"===d.type&&
-c.filled?b.fill():b.stroke()};return d};(function(){function b(d,c,f){this.canvas=d;this.rc=c;this.shape=f;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,b.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,b.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,b.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
+Editor.createRoughCanvas=function(b){var d=rough.canvas({getContext:function(){return b}});d.draw=function(d){var c=d.sets||[];d=d.options||this.getDefaultOptions();for(var g=0;g<c.length;g++){var e=c[g];switch(e.type){case "path":null!=d.stroke&&this._drawToContext(b,e,d);break;case "fillPath":this._drawToContext(b,e,d);break;case "fillSketch":this.fillSketch(b,e,d)}}};d.fillSketch=function(d,c,g){var e=b.state.strokeColor,f=b.state.strokeWidth,l=b.state.strokeAlpha,k=b.state.dashed,m=g.fillWeight;
+0>m&&(m=g.strokeWidth/2);b.setStrokeAlpha(b.state.fillAlpha);b.setStrokeColor(g.fill||"");b.setStrokeWidth(m);b.setDashed(!1);this._drawToContext(d,c,g);b.setDashed(k);b.setStrokeWidth(f);b.setStrokeColor(e);b.setStrokeAlpha(l)};d._drawToContext=function(b,d,c){b.begin();for(var g=0;g<d.ops.length;g++){var e=d.ops[g],f=e.data;switch(e.op){case "move":b.moveTo(f[0],f[1]);break;case "bcurveTo":b.curveTo(f[0],f[1],f[2],f[3],f[4],f[5]);break;case "lineTo":b.lineTo(f[0],f[1])}}b.end();"fillPath"===d.type&&
+c.filled?b.fill():b.stroke()};return d};(function(){function b(d,c,g){this.canvas=d;this.rc=c;this.shape=g;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,b.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,b.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,b.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
mxUtils.bind(this,b.prototype.roundrect);this.originalEllipse=this.canvas.ellipse;this.canvas.ellipse=mxUtils.bind(this,b.prototype.ellipse);this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,b.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,b.prototype.moveTo);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,b.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
b.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,b.prototype.arcTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,b.prototype.close);this.originalFill=this.canvas.fill;this.canvas.fill=mxUtils.bind(this,b.prototype.fill);this.originalStroke=this.canvas.stroke;this.canvas.stroke=mxUtils.bind(this,b.prototype.stroke);this.originalFillAndStroke=this.canvas.fillAndStroke;this.canvas.fillAndStroke=mxUtils.bind(this,b.prototype.fillAndStroke);
-this.path=[];this.passThrough=!1}b.prototype.moveOp="M";b.prototype.lineOp="L";b.prototype.quadOp="Q";b.prototype.curveOp="C";b.prototype.closeOp="Z";b.prototype.getStyle=function(b,d){var c=1;if(null!=this.shape.state){var f=this.shape.state.cell.id;if(null!=f)for(var e=0;e<f.length;e++)c=(c<<5)-c+f.charCodeAt(e)<<0}c={strokeWidth:this.canvas.state.strokeWidth,seed:c,preserveVertices:!0};f=this.rc.getDefaultOptions();b?c.stroke="none"===this.canvas.state.strokeColor?"transparent":this.canvas.state.strokeColor:
-delete c.stroke;e=null;(c.filled=d)?(c.fill="none"===this.canvas.state.fillColor?"":this.canvas.state.fillColor,e="none"===this.canvas.state.gradientColor?null:this.canvas.state.gradientColor):c.fill="";c.bowing=mxUtils.getValue(this.shape.style,"bowing",f.bowing);c.hachureAngle=mxUtils.getValue(this.shape.style,"hachureAngle",f.hachureAngle);c.curveFitting=mxUtils.getValue(this.shape.style,"curveFitting",f.curveFitting);c.roughness=mxUtils.getValue(this.shape.style,"jiggle",f.roughness);c.simplification=
-mxUtils.getValue(this.shape.style,"simplification",f.simplification);c.disableMultiStroke=mxUtils.getValue(this.shape.style,"disableMultiStroke",f.disableMultiStroke);c.disableMultiStrokeFill=mxUtils.getValue(this.shape.style,"disableMultiStrokeFill",f.disableMultiStrokeFill);var g=mxUtils.getValue(this.shape.style,"hachureGap",-1);c.hachureGap="auto"==g?-1:g;c.dashGap=mxUtils.getValue(this.shape.style,"dashGap",g);c.dashOffset=mxUtils.getValue(this.shape.style,"dashOffset",g);c.zigzagOffset=mxUtils.getValue(this.shape.style,
-"zigzagOffset",g);g=mxUtils.getValue(this.shape.style,"fillWeight",-1);c.fillWeight="auto"==g?-1:g;g=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==g&&(g=mxUtils.hex2rgb(null!=this.shape.state?this.shape.state.view.graph.shapeBackgroundColor:Editor.isDarkMode()?Editor.darkColor:"#ffffff"),g=null!=c.fill&&(null!=e||null!=g&&c.fill==g)?"solid":f.fillStyle);c.fillStyle=g;return c};b.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,arguments):this.path=[]};
+this.path=[];this.passThrough=!1}b.prototype.moveOp="M";b.prototype.lineOp="L";b.prototype.quadOp="Q";b.prototype.curveOp="C";b.prototype.closeOp="Z";b.prototype.getStyle=function(b,d){var c=1;if(null!=this.shape.state){var g=this.shape.state.cell.id;if(null!=g)for(var e=0;e<g.length;e++)c=(c<<5)-c+g.charCodeAt(e)<<0}c={strokeWidth:this.canvas.state.strokeWidth,seed:c,preserveVertices:!0};g=this.rc.getDefaultOptions();b?c.stroke="none"===this.canvas.state.strokeColor?"transparent":this.canvas.state.strokeColor:
+delete c.stroke;e=null;(c.filled=d)?(c.fill="none"===this.canvas.state.fillColor?"":this.canvas.state.fillColor,e="none"===this.canvas.state.gradientColor?null:this.canvas.state.gradientColor):c.fill="";c.bowing=mxUtils.getValue(this.shape.style,"bowing",g.bowing);c.hachureAngle=mxUtils.getValue(this.shape.style,"hachureAngle",g.hachureAngle);c.curveFitting=mxUtils.getValue(this.shape.style,"curveFitting",g.curveFitting);c.roughness=mxUtils.getValue(this.shape.style,"jiggle",g.roughness);c.simplification=
+mxUtils.getValue(this.shape.style,"simplification",g.simplification);c.disableMultiStroke=mxUtils.getValue(this.shape.style,"disableMultiStroke",g.disableMultiStroke);c.disableMultiStrokeFill=mxUtils.getValue(this.shape.style,"disableMultiStrokeFill",g.disableMultiStrokeFill);var f=mxUtils.getValue(this.shape.style,"hachureGap",-1);c.hachureGap="auto"==f?-1:f;c.dashGap=mxUtils.getValue(this.shape.style,"dashGap",f);c.dashOffset=mxUtils.getValue(this.shape.style,"dashOffset",f);c.zigzagOffset=mxUtils.getValue(this.shape.style,
+"zigzagOffset",f);f=mxUtils.getValue(this.shape.style,"fillWeight",-1);c.fillWeight="auto"==f?-1:f;f=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==f&&(f=mxUtils.hex2rgb(null!=this.shape.state?this.shape.state.view.graph.shapeBackgroundColor:Editor.isDarkMode()?Editor.darkColor:"#ffffff"),f=null!=c.fill&&(null!=e||null!=f&&c.fill==f)?"solid":g.fillStyle);c.fillStyle=f;return c};b.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,arguments):this.path=[]};
b.prototype.end=function(){this.passThrough&&this.originalEnd.apply(this.canvas,arguments)};b.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var b=2;b<arguments.length;b+=2)this.lastX=arguments[b-1],this.lastY=arguments[b],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};b.prototype.lineTo=function(b,d){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,b,d),this.lastX=
-b,this.lastY=d)};b.prototype.moveTo=function(b,d){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,b,d),this.lastX=b,this.lastY=d,this.firstX=b,this.firstY=d)};b.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};b.prototype.quadTo=function(b,d,c,f){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,b,d,c,f),this.lastX=c,this.lastY=f)};b.prototype.curveTo=
-function(b,d,c,f,e,g){this.passThrough?this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,b,d,c,f,e,g),this.lastX=e,this.lastY=g)};b.prototype.arcTo=function(b,d,c,f,e,g,l){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var m=mxUtils.arcToCurves(this.lastX,this.lastY,b,d,c,f,e,g,l);if(null!=m)for(var k=0;k<m.length;k+=6)this.curveTo(m[k],m[k+1],m[k+2],m[k+3],m[k+4],m[k+5]);this.lastX=g;this.lastY=l}};b.prototype.rect=function(b,d,c,f){this.passThrough?
-this.originalRect.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(b,d,c,f,this.getStyle(!0,!0)))};b.prototype.ellipse=function(b,d,c,f){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(b+c/2,d+f/2,c,f,this.getStyle(!0,!0)))};b.prototype.roundrect=function(b,d,c,f,e,g){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(b+e,d),this.lineTo(b+c-e,d),
-this.quadTo(b+c,d,b+c,d+g),this.lineTo(b+c,d+f-g),this.quadTo(b+c,d+f,b+c-e,d+f),this.lineTo(b+e,d+f),this.quadTo(b,d+f,b,d+f-g),this.lineTo(b,d+g),this.quadTo(b,d,b+e,d))};b.prototype.drawPath=function(b){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),b)}catch(V){}this.passThrough=!1}else if(null!=this.nextShape){for(var d in b)this.nextShape.options[d]=b[d];null==b.stroke&&delete this.nextShape.options.stroke;b.filled||delete this.nextShape.options.fill;this.passThrough=
+b,this.lastY=d)};b.prototype.moveTo=function(b,d){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,b,d),this.lastX=b,this.lastY=d,this.firstX=b,this.firstY=d)};b.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};b.prototype.quadTo=function(b,d,c,g){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,b,d,c,g),this.lastX=c,this.lastY=g)};b.prototype.curveTo=
+function(b,d,c,g,e,f){this.passThrough?this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,b,d,c,g,e,f),this.lastX=e,this.lastY=f)};b.prototype.arcTo=function(b,d,c,g,e,f,l){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var m=mxUtils.arcToCurves(this.lastX,this.lastY,b,d,c,g,e,f,l);if(null!=m)for(var k=0;k<m.length;k+=6)this.curveTo(m[k],m[k+1],m[k+2],m[k+3],m[k+4],m[k+5]);this.lastX=f;this.lastY=l}};b.prototype.rect=function(b,d,c,g){this.passThrough?
+this.originalRect.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(b,d,c,g,this.getStyle(!0,!0)))};b.prototype.ellipse=function(b,d,c,g){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(b+c/2,d+g/2,c,g,this.getStyle(!0,!0)))};b.prototype.roundrect=function(b,d,c,g,e,f){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(b+e,d),this.lineTo(b+c-e,d),
+this.quadTo(b+c,d,b+c,d+f),this.lineTo(b+c,d+g-f),this.quadTo(b+c,d+g,b+c-e,d+g),this.lineTo(b+e,d+g),this.quadTo(b,d+g,b,d+g-f),this.lineTo(b,d+f),this.quadTo(b,d,b+e,d))};b.prototype.drawPath=function(b){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),b)}catch(V){}this.passThrough=!1}else if(null!=this.nextShape){for(var d in b)this.nextShape.options[d]=b[d];null==b.stroke&&delete this.nextShape.options.stroke;b.filled||delete this.nextShape.options.fill;this.passThrough=
!0;this.rc.draw(this.nextShape);this.passThrough=!1}};b.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};b.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,arguments):this.drawPath(this.getStyle(!1,!0))};b.prototype.fillAndStroke=function(){this.passThrough?this.originalFillAndStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!0))};b.prototype.destroy=function(){this.canvas.lineTo=
this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo;this.canvas.close=this.originalClose;this.canvas.fill=this.originalFill;this.canvas.stroke=this.originalStroke;this.canvas.fillAndStroke=this.originalFillAndStroke;this.canvas.begin=this.originalBegin;this.canvas.end=this.originalEnd;this.canvas.rect=this.originalRect;this.canvas.ellipse=
this.originalEllipse;this.canvas.roundrect=this.originalRoundrect};mxShape.prototype.createRoughCanvas=function(d){return new b(d,Editor.createRoughCanvas(d),this)};var d=mxShape.prototype.createHandJiggle;mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"sketch","0")?d.apply(this,arguments):"comic"==mxUtils.getValue(this.style,"sketchStyle","rough")?this.createComicCanvas(b):this.createRoughCanvas(b)};var c=mxShape.prototype.paint;
-mxShape.prototype.paint=function(d){var f=d.addTolerance,e=!0;null!=this.style&&(e="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(null!=d.handJiggle&&d.handJiggle.constructor==b&&!this.outline){d.save();var g=this.fill,l=this.stroke;this.stroke=this.fill=null;var m=this.configurePointerEvents,k=d.setStrokeColor;d.setStrokeColor=function(){};var n=d.setFillColor;d.setFillColor=function(){};e||null==g||(this.configurePointerEvents=function(){});d.handJiggle.passThrough=!0;
-c.apply(this,arguments);d.handJiggle.passThrough=!1;d.setFillColor=n;d.setStrokeColor=k;this.configurePointerEvents=m;this.stroke=l;this.fill=g;d.restore();e&&null!=g&&(d.addTolerance=function(){})}c.apply(this,arguments);d.addTolerance=f};var f=mxShape.prototype.paintGlassEffect;mxShape.prototype.paintGlassEffect=function(d,c,e,g,l,m){null!=d.handJiggle&&d.handJiggle.constructor==b?(d.handJiggle.passThrough=!0,f.apply(this,arguments),d.handJiggle.passThrough=!1):f.apply(this,arguments)}})();Editor.fastCompress=
-function(b){return null==b||0==b.length||"undefined"===typeof pako?b:Graph.arrayBufferToString(pako.deflateRaw(b))};Editor.fastDecompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:pako.inflateRaw(Graph.stringToArrayBuffer(atob(b)),{to:"string"})};Editor.extractGraphModel=function(b,d,c){if(null!=b&&"undefined"!==typeof pako){var f=b.ownerDocument.getElementsByTagName("div"),e=[];if(null!=f&&0<f.length)for(var g=0;g<f.length;g++)if("mxgraph"==f[g].getAttribute("class")){e.push(f[g]);
-break}0<e.length&&(f=e[0].getAttribute("data-mxgraph"),null!=f?(e=JSON.parse(f),null!=e&&null!=e.xml&&(b=mxUtils.parseXml(e.xml),b=b.documentElement)):(e=e[0].getElementsByTagName("div"),0<e.length&&(f=mxUtils.getTextContent(e[0]),f=Graph.decompress(f,null,c),0<f.length&&(b=mxUtils.parseXml(f),b=b.documentElement))))}if(null!=b&&"svg"==b.nodeName)if(f=b.getAttribute("content"),null!=f&&"<"!=f.charAt(0)&&"%"!=f.charAt(0)&&(f=unescape(window.atob?atob(f):Base64.decode(cont,f))),null!=f&&"%"==f.charAt(0)&&
-(f=decodeURIComponent(f)),null!=f&&0<f.length)b=mxUtils.parseXml(f).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==b||d||(e=null,"diagram"==b.nodeName?e=b:"mxfile"==b.nodeName&&(f=b.getElementsByTagName("diagram"),0<f.length&&(e=f[Math.max(0,Math.min(f.length-1,urlParams.page||0))])),null!=e&&(b=Editor.parseDiagramNode(e,c)));null==b||"mxGraphModel"==b.nodeName||d&&"mxfile"==b.nodeName||(b=null);return b};Editor.parseDiagramNode=function(b,d){var c=mxUtils.trim(mxUtils.getTextContent(b)),
-f=null;0<c.length?(c=Graph.decompress(c,null,d),null!=c&&0<c.length&&(f=mxUtils.parseXml(c).documentElement)):(c=mxUtils.getChildNodes(b),0<c.length&&(f=mxUtils.createXmlDocument(),f.appendChild(f.importNode(c[0],!0)),f=f.documentElement));return f};Editor.getDiagramNodeXml=function(b){var d=mxUtils.getTextContent(b),c=null;0<d.length?c=Graph.decompress(d):null!=b.firstChild&&(c=mxUtils.getXml(b.firstChild));return c};Editor.extractGraphModelFromPdf=function(b){b=b.substring(b.indexOf(",")+1);b=window.atob&&
-!mxClient.IS_SF?atob(b):Base64.decode(b,!0);if("%PDF-1.7"==b.substring(0,8)){var d=b.indexOf("EmbeddedFile");if(-1<d){var c=b.indexOf("stream",d)+9;if(0<b.substring(d,c).indexOf("application#2Fvnd.jgraph.mxfile"))return d=b.indexOf("endstream",c-1),pako.inflateRaw(Graph.stringToArrayBuffer(b.substring(c,d)),{to:"string"})}return null}for(var c=null,d="",f=0,e=0,g=[],l=null;e<b.length;){var m=b.charCodeAt(e),e=e+1;10!=m&&(d+=String.fromCharCode(m));m=="/Subject (%3Cmxfile".charCodeAt(f)?f++:f=0;if(19==
-f){var k=b.indexOf("%3C%2Fmxfile%3E)",e)+15,e=e-9;if(k>e){c=b.substring(e,k);break}}10==m&&("endobj"==d?l=null:"obj"==d.substring(d.length-3,d.length)||"xref"==d||"trailer"==d?(l=[],g[d.split(" ")[0]]=l):null!=l&&l.push(d),d="")}null==c&&(c=Editor.extractGraphModelFromXref(g));null!=c&&(c=decodeURIComponent(c.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return c};Editor.extractGraphModelFromXref=function(b){var d=b.trailer,c=null;null!=d&&(d=/.* \/Info (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<
-d.length&&(d=b[d[1]],null!=d&&(d=/.* \/Subject (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<d.length&&(b=b[d[1]],null!=b&&(b=b.join("\n"),c=b.substring(1,b.length-1))))));return c};Editor.extractParserError=function(b,d){var c=null,f=null!=b?b.getElementsByTagName("parsererror"):null;null!=f&&0<f.length&&(c=d||mxResources.get("invalidChars"),f=f[0].getElementsByTagName("div"),0<f.length&&(c=mxUtils.getTextContent(f[0])));return null!=c?mxUtils.trim(c):c};Editor.addRetryToError=function(b,d){if(null!=
+mxShape.prototype.paint=function(d){var g=d.addTolerance,e=!0;null!=this.style&&(e="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(null!=d.handJiggle&&d.handJiggle.constructor==b&&!this.outline){d.save();var f=this.fill,l=this.stroke;this.stroke=this.fill=null;var m=this.configurePointerEvents,k=d.setStrokeColor;d.setStrokeColor=function(){};var n=d.setFillColor;d.setFillColor=function(){};e||null==f||(this.configurePointerEvents=function(){});d.handJiggle.passThrough=!0;
+c.apply(this,arguments);d.handJiggle.passThrough=!1;d.setFillColor=n;d.setStrokeColor=k;this.configurePointerEvents=m;this.stroke=l;this.fill=f;d.restore();e&&null!=f&&(d.addTolerance=function(){})}c.apply(this,arguments);d.addTolerance=g};var g=mxShape.prototype.paintGlassEffect;mxShape.prototype.paintGlassEffect=function(d,c,e,f,l,m){null!=d.handJiggle&&d.handJiggle.constructor==b?(d.handJiggle.passThrough=!0,g.apply(this,arguments),d.handJiggle.passThrough=!1):g.apply(this,arguments)}})();Editor.fastCompress=
+function(b){return null==b||0==b.length||"undefined"===typeof pako?b:Graph.arrayBufferToString(pako.deflateRaw(b))};Editor.fastDecompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:pako.inflateRaw(Graph.stringToArrayBuffer(atob(b)),{to:"string"})};Editor.extractGraphModel=function(b,d,c){if(null!=b&&"undefined"!==typeof pako){var g=b.ownerDocument.getElementsByTagName("div"),e=[];if(null!=g&&0<g.length)for(var f=0;f<g.length;f++)if("mxgraph"==g[f].getAttribute("class")){e.push(g[f]);
+break}0<e.length&&(g=e[0].getAttribute("data-mxgraph"),null!=g?(e=JSON.parse(g),null!=e&&null!=e.xml&&(b=mxUtils.parseXml(e.xml),b=b.documentElement)):(e=e[0].getElementsByTagName("div"),0<e.length&&(g=mxUtils.getTextContent(e[0]),g=Graph.decompress(g,null,c),0<g.length&&(b=mxUtils.parseXml(g),b=b.documentElement))))}if(null!=b&&"svg"==b.nodeName)if(g=b.getAttribute("content"),null!=g&&"<"!=g.charAt(0)&&"%"!=g.charAt(0)&&(g=unescape(window.atob?atob(g):Base64.decode(cont,g))),null!=g&&"%"==g.charAt(0)&&
+(g=decodeURIComponent(g)),null!=g&&0<g.length)b=mxUtils.parseXml(g).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==b||d||(e=null,"diagram"==b.nodeName?e=b:"mxfile"==b.nodeName&&(g=b.getElementsByTagName("diagram"),0<g.length&&(e=g[Math.max(0,Math.min(g.length-1,urlParams.page||0))])),null!=e&&(b=Editor.parseDiagramNode(e,c)));null==b||"mxGraphModel"==b.nodeName||d&&"mxfile"==b.nodeName||(b=null);return b};Editor.parseDiagramNode=function(b,d){var c=mxUtils.trim(mxUtils.getTextContent(b)),
+g=null;0<c.length?(c=Graph.decompress(c,null,d),null!=c&&0<c.length&&(g=mxUtils.parseXml(c).documentElement)):(c=mxUtils.getChildNodes(b),0<c.length&&(g=mxUtils.createXmlDocument(),g.appendChild(g.importNode(c[0],!0)),g=g.documentElement));return g};Editor.getDiagramNodeXml=function(b){var d=mxUtils.getTextContent(b),c=null;0<d.length?c=Graph.decompress(d):null!=b.firstChild&&(c=mxUtils.getXml(b.firstChild));return c};Editor.extractGraphModelFromPdf=function(b){b=b.substring(b.indexOf(",")+1);b=window.atob&&
+!mxClient.IS_SF?atob(b):Base64.decode(b,!0);if("%PDF-1.7"==b.substring(0,8)){var d=b.indexOf("EmbeddedFile");if(-1<d){var c=b.indexOf("stream",d)+9;if(0<b.substring(d,c).indexOf("application#2Fvnd.jgraph.mxfile"))return d=b.indexOf("endstream",c-1),pako.inflateRaw(Graph.stringToArrayBuffer(b.substring(c,d)),{to:"string"})}return null}for(var c=null,d="",g=0,e=0,f=[],l=null;e<b.length;){var m=b.charCodeAt(e),e=e+1;10!=m&&(d+=String.fromCharCode(m));m=="/Subject (%3Cmxfile".charCodeAt(g)?g++:g=0;if(19==
+g){var k=b.indexOf("%3C%2Fmxfile%3E)",e)+15,e=e-9;if(k>e){c=b.substring(e,k);break}}10==m&&("endobj"==d?l=null:"obj"==d.substring(d.length-3,d.length)||"xref"==d||"trailer"==d?(l=[],f[d.split(" ")[0]]=l):null!=l&&l.push(d),d="")}null==c&&(c=Editor.extractGraphModelFromXref(f));null!=c&&(c=decodeURIComponent(c.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return c};Editor.extractGraphModelFromXref=function(b){var d=b.trailer,c=null;null!=d&&(d=/.* \/Info (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<
+d.length&&(d=b[d[1]],null!=d&&(d=/.* \/Subject (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<d.length&&(b=b[d[1]],null!=b&&(b=b.join("\n"),c=b.substring(1,b.length-1))))));return c};Editor.extractParserError=function(b,d){var c=null,g=null!=b?b.getElementsByTagName("parsererror"):null;null!=g&&0<g.length&&(c=d||mxResources.get("invalidChars"),g=g[0].getElementsByTagName("div"),0<g.length&&(c=mxUtils.getTextContent(g[0])));return null!=c?mxUtils.trim(c):c};Editor.addRetryToError=function(b,d){if(null!=
b){var c=null!=b.error?b.error:b;null==c.retry&&(c.retry=d)}};Editor.configure=function(b,d){if(null!=b){Editor.config=b;Editor.configVersion=b.version;Menus.prototype.defaultFonts=b.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=b.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=b.defaultColors||ColorDialog.prototype.defaultColors;ColorDialog.prototype.colorNames=b.colorNames||ColorDialog.prototype.colorNames;StyleFormatPanel.prototype.defaultColorSchemes=
b.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes;Graph.prototype.defaultEdgeLength=b.defaultEdgeLength||Graph.prototype.defaultEdgeLength;DrawioFile.prototype.autosaveDelay=b.autosaveDelay||DrawioFile.prototype.autosaveDelay;null!=b.templateFile&&(EditorUi.templateFile=b.templateFile);null!=b.styles&&(Array.isArray(b.styles)?Editor.styles=b.styles:EditorUi.debug("Configuration Error: Array expected for styles"));null!=b.globalVars&&(Editor.globalVars=b.globalVars);null!=b.compressXml&&
(Editor.compressXml=b.compressXml);null!=b.includeDiagram&&(Editor.defaultIncludeDiagram=b.includeDiagram);null!=b.simpleLabels&&(Editor.simpleLabels=b.simpleLabels);null!=b.oneDriveInlinePicker&&(Editor.oneDriveInlinePicker=b.oneDriveInlinePicker);null!=b.darkColor&&(Editor.darkColor=b.darkColor);null!=b.lightColor&&(Editor.lightColor=b.lightColor);null!=b.settingsName&&(Editor.configurationKey="."+b.settingsName+"-configuration",Editor.settingsKey="."+b.settingsName+"-config",mxSettings.key=Editor.settingsKey);
b.customFonts&&(Menus.prototype.defaultFonts=b.customFonts.concat(Menus.prototype.defaultFonts));b.customPresetColors&&(ColorDialog.prototype.presetColors=b.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=b.customColorSchemes&&(StyleFormatPanel.prototype.defaultColorSchemes=b.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes));if(null!=b.css){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(b.css));
-var f=document.getElementsByTagName("script")[0];f.parentNode.insertBefore(c,f)}null!=b.libraries&&(Sidebar.prototype.customEntries=b.libraries);null!=b.enabledLibraries&&(Array.isArray(b.enabledLibraries)?Sidebar.prototype.enabledLibraries=b.enabledLibraries:EditorUi.debug("Configuration Error: Array expected for enabledLibraries"));null!=b.defaultLibraries&&(Sidebar.prototype.defaultEntries=b.defaultLibraries);null!=b.defaultCustomLibraries&&(Editor.defaultCustomLibraries=b.defaultCustomLibraries);
+var g=document.getElementsByTagName("script")[0];g.parentNode.insertBefore(c,g)}null!=b.libraries&&(Sidebar.prototype.customEntries=b.libraries);null!=b.enabledLibraries&&(Array.isArray(b.enabledLibraries)?Sidebar.prototype.enabledLibraries=b.enabledLibraries:EditorUi.debug("Configuration Error: Array expected for enabledLibraries"));null!=b.defaultLibraries&&(Sidebar.prototype.defaultEntries=b.defaultLibraries);null!=b.defaultCustomLibraries&&(Editor.defaultCustomLibraries=b.defaultCustomLibraries);
null!=b.enableCustomLibraries&&(Editor.enableCustomLibraries=b.enableCustomLibraries);null!=b.defaultVertexStyle&&(Graph.prototype.defaultVertexStyle=b.defaultVertexStyle);null!=b.defaultEdgeStyle&&(Graph.prototype.defaultEdgeStyle=b.defaultEdgeStyle);null!=b.defaultPageVisible&&(Graph.prototype.defaultPageVisible=b.defaultPageVisible);null!=b.defaultGridEnabled&&(Graph.prototype.defaultGridEnabled=b.defaultGridEnabled);null!=b.zoomWheel&&(Graph.zoomWheel=b.zoomWheel);null!=b.zoomFactor&&(c=parseFloat(b.zoomFactor),
-!isNaN(c)&&1<c?Graph.prototype.zoomFactor=c:EditorUi.debug("Configuration Error: Float > 1 expected for zoomFactor"));null!=b.gridSteps&&(c=parseInt(b.gridSteps),!isNaN(c)&&0<c?mxGraphView.prototype.gridSteps=c:EditorUi.debug("Configuration Error: Int > 0 expected for gridSteps"));null!=b.pageFormat&&(c=parseInt(b.pageFormat.width),f=parseInt(b.pageFormat.height),!isNaN(c)&&0<c&&!isNaN(f)&&0<f?(mxGraph.prototype.defaultPageFormat=new mxRectangle(0,0,c,f),mxGraph.prototype.pageFormat=mxGraph.prototype.defaultPageFormat):
+!isNaN(c)&&1<c?Graph.prototype.zoomFactor=c:EditorUi.debug("Configuration Error: Float > 1 expected for zoomFactor"));null!=b.gridSteps&&(c=parseInt(b.gridSteps),!isNaN(c)&&0<c?mxGraphView.prototype.gridSteps=c:EditorUi.debug("Configuration Error: Int > 0 expected for gridSteps"));null!=b.pageFormat&&(c=parseInt(b.pageFormat.width),g=parseInt(b.pageFormat.height),!isNaN(c)&&0<c&&!isNaN(g)&&0<g?(mxGraph.prototype.defaultPageFormat=new mxRectangle(0,0,c,g),mxGraph.prototype.pageFormat=mxGraph.prototype.defaultPageFormat):
EditorUi.debug("Configuration Error: {width: int, height: int} expected for pageFormat"));b.thumbWidth&&(Sidebar.prototype.thumbWidth=b.thumbWidth);b.thumbHeight&&(Sidebar.prototype.thumbHeight=b.thumbHeight);b.emptyLibraryXml&&(EditorUi.prototype.emptyLibraryXml=b.emptyLibraryXml);b.emptyDiagramXml&&(EditorUi.prototype.emptyDiagramXml=b.emptyDiagramXml);b.sidebarWidth&&(EditorUi.prototype.hsplitPosition=b.sidebarWidth);b.sidebarTitles&&(Sidebar.prototype.sidebarTitles=b.sidebarTitles);b.sidebarTitleSize&&
(c=parseInt(b.sidebarTitleSize),!isNaN(c)&&0<c?Sidebar.prototype.sidebarTitleSize=c:EditorUi.debug("Configuration Error: Int > 0 expected for sidebarTitleSize"));b.fontCss&&("string"===typeof b.fontCss?Editor.configureFontCss(b.fontCss):EditorUi.debug("Configuration Error: String expected for fontCss"));null!=b.autosaveDelay&&(c=parseInt(b.autosaveDelay),!isNaN(c)&&0<c?DrawioFile.prototype.autosaveDelay=c:EditorUi.debug("Configuration Error: Int > 0 expected for autosaveDelay"));if(null!=b.plugins&&
!d)for(App.initPluginCallback(),c=0;c<b.plugins.length;c++)mxscript(b.plugins[c]);null!=b.maxImageBytes&&(EditorUi.prototype.maxImageBytes=b.maxImageBytes);null!=b.maxImageSize&&(EditorUi.prototype.maxImageSize=b.maxImageSize)}};Editor.configureFontCss=function(b){if(null!=b){Editor.prototype.fontCss=b;var d=document.getElementsByTagName("script")[0];if(null!=d&&null!=d.parentNode){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(b));d.parentNode.insertBefore(c,
-d);b=b.split("url(");for(c=1;c<b.length;c++){var f=b[c].indexOf(")"),f=Editor.trimCssUrl(b[c].substring(0,f)),e=document.createElement("link");e.setAttribute("rel","preload");e.setAttribute("href",f);e.setAttribute("as","font");e.setAttribute("crossorigin","");d.parentNode.insertBefore(e,d)}}}};Editor.trimCssUrl=function(b){return b.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")};Editor.GOOGLE_FONTS="https://fonts.googleapis.com/css?family=";Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";
+d);b=b.split("url(");for(c=1;c<b.length;c++){var g=b[c].indexOf(")"),g=Editor.trimCssUrl(b[c].substring(0,g)),e=document.createElement("link");e.setAttribute("rel","preload");e.setAttribute("href",g);e.setAttribute("as","font");e.setAttribute("crossorigin","");d.parentNode.insertBefore(e,d)}}}};Editor.trimCssUrl=function(b){return b.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")};Editor.GOOGLE_FONTS="https://fonts.googleapis.com/css?family=";Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";
Editor.GUID_LENGTH=20;Editor.guid=function(b){b=null!=b?b:Editor.GUID_LENGTH;for(var d=[],c=0;c<b;c++)d.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return d.join("")};Editor.prototype.timeout=25E3;Editor.prototype.useForeignObjectForMath=!0;Editor.prototype.editButtonLink=null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;Editor.prototype.crossOriginImages=!mxClient.IS_IE;var b=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(d){d=
-null!=d&&"mxlibrary"!=d.nodeName?this.extractGraphModel(d):null;if(null!=d){var c=d.getElementsByTagName("parsererror");if(null!=c&&0<c.length){var c=c[0],f=c.getElementsByTagName("div");null!=f&&0<f.length&&(c=f[0]);throw{message:mxUtils.getTextContent(c)};}if("mxGraphModel"==d.nodeName){c=d.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=c&&""!=c)c!=this.graph.currentStyle&&(f=null!=this.graph.themes?this.graph.themes[c]:mxUtils.load(STYLE_PATH+"/"+c+".xml").getDocumentElement(),
-null!=f&&(e=new mxCodec(f.ownerDocument),e.decode(f,this.graph.getStylesheet())));else if(f=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=f){var e=new mxCodec(f.ownerDocument);e.decode(f,this.graph.getStylesheet())}this.graph.currentStyle=c;this.graph.mathEnabled="1"==urlParams.math||"1"==d.getAttribute("math");c=d.getAttribute("backgroundImage");null!=c?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(c)):
-this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==d.getAttribute("shadow"),!1);if(c=d.getAttribute("extFonts"))try{for(c=c.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}}),f=0;f<c.length;f++)this.graph.addExtFont(c[f].name,
-c[f].url)}catch(S){console.log("ExtFonts format error: "+S.message)}else null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(this.graph.extFonts=[])}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(b,d){b=null!=b?b:!0;var f=c.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&f.setAttribute("style",
-this.graph.currentStyle);var e=this.graph.getBackgroundImageObject(this.graph.backgroundImage,d);null!=e&&f.setAttribute("backgroundImage",JSON.stringify(e));f.setAttribute("math",this.graph.mathEnabled?"1":"0");f.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(e=this.graph.extFonts.map(function(b){return b.name+"^"+b.url}),f.setAttribute("extFonts",e.join("|")));return f};Editor.prototype.isDataSvg=function(b){try{var d=mxUtils.parseXml(b).documentElement.getAttribute("content");
-if(null!=d&&(null!=d&&"<"!=d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var c=mxUtils.parseXml(d).documentElement;return"mxfile"==c.nodeName||"mxGraphModel"==c.nodeName}}catch(Y){}return!1};Editor.prototype.extractGraphModel=function(b,d,c){return Editor.extractGraphModel.apply(this,arguments)};var e=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled=
+null!=d&&"mxlibrary"!=d.nodeName?this.extractGraphModel(d):null;if(null!=d){var c=d.getElementsByTagName("parsererror");if(null!=c&&0<c.length){var c=c[0],g=c.getElementsByTagName("div");null!=g&&0<g.length&&(c=g[0]);throw{message:mxUtils.getTextContent(c)};}if("mxGraphModel"==d.nodeName){c=d.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=c&&""!=c)c!=this.graph.currentStyle&&(g=null!=this.graph.themes?this.graph.themes[c]:mxUtils.load(STYLE_PATH+"/"+c+".xml").getDocumentElement(),
+null!=g&&(e=new mxCodec(g.ownerDocument),e.decode(g,this.graph.getStylesheet())));else if(g=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=g){var e=new mxCodec(g.ownerDocument);e.decode(g,this.graph.getStylesheet())}this.graph.currentStyle=c;this.graph.mathEnabled="1"==urlParams.math||"1"==d.getAttribute("math");c=d.getAttribute("backgroundImage");null!=c?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(c)):
+this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==d.getAttribute("shadow"),!1);if(c=d.getAttribute("extFonts"))try{for(c=c.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}}),g=0;g<c.length;g++)this.graph.addExtFont(c[g].name,
+c[g].url)}catch(S){console.log("ExtFonts format error: "+S.message)}else null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(this.graph.extFonts=[])}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(b,d){b=null!=b?b:!0;var g=c.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&g.setAttribute("style",
+this.graph.currentStyle);var e=this.graph.getBackgroundImageObject(this.graph.backgroundImage,d);null!=e&&g.setAttribute("backgroundImage",JSON.stringify(e));g.setAttribute("math",this.graph.mathEnabled?"1":"0");g.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(e=this.graph.extFonts.map(function(b){return b.name+"^"+b.url}),g.setAttribute("extFonts",e.join("|")));return g};Editor.prototype.isDataSvg=function(b){try{var d=mxUtils.parseXml(b).documentElement.getAttribute("content");
+if(null!=d&&(null!=d&&"<"!=d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var c=mxUtils.parseXml(d).documentElement;return"mxfile"==c.nodeName||"mxGraphModel"==c.nodeName}}catch(ca){}return!1};Editor.prototype.extractGraphModel=function(b,d,c){return Editor.extractGraphModel.apply(this,arguments)};var e=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled=
"1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();e.apply(this,arguments)};var k=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){k.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&
null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.mathJaxWebkitCss="div.MathJax_SVG_Display { position: static; }\nspan.MathJax_SVG { position: static !important; }";Editor.initMath=function(b,d){if("undefined"===typeof window.MathJax){b=(null!=b?b:DRAW_MATH_URL+"/MathJax.js")+"?config=TeX-MML-AM_"+("html"==urlParams["math-output"]?"HTMLorMML":
"SVG")+"-full";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(b){window.setTimeout(function(){"hidden"!=b.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,b])},0)};var c=null!=urlParams["math-font"]?decodeURIComponent(urlParams["math-font"]):"TeX";d=null!=d?d:{"HTML-CSS":{availableFonts:[c],imageFont:null},SVG:{font:c,useFontCache:!1},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",
-AuthorInit:function(){MathJax.Hub.Config(d);MathJax.Hub.Register.StartupHook("Begin",function(){for(var b=0;b<Editor.mathJaxQueue.length;b++)Editor.doMathJaxRender(Editor.mathJaxQueue[b])})}};Editor.MathJaxRender=function(b){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(b):Editor.mathJaxQueue.push(b)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var f=Editor.prototype.init;Editor.prototype.init=function(){f.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,
-mxUtils.bind(this,function(b,d){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)}))};c=document.getElementsByTagName("script");if(null!=c&&0<c.length){var e=document.createElement("script");e.setAttribute("type","text/javascript");e.setAttribute("src",b);c[0].parentNode.appendChild(e)}try{if(mxClient.IS_GC||mxClient.IS_SF){var g=document.createElement("style");g.type="text/css";g.innerHTML=Editor.mathJaxWebkitCss;document.getElementsByTagName("head")[0].appendChild(g)}}catch(V){}}};
-Editor.prototype.csvToArray=function(b){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(b))return null;var d=[];b.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(b,c,f,e){void 0!==c?d.push(c.replace(/\\'/g,"'")):void 0!==f?d.push(f.replace(/\\"/g,
+AuthorInit:function(){MathJax.Hub.Config(d);MathJax.Hub.Register.StartupHook("Begin",function(){for(var b=0;b<Editor.mathJaxQueue.length;b++)Editor.doMathJaxRender(Editor.mathJaxQueue[b])})}};Editor.MathJaxRender=function(b){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(b):Editor.mathJaxQueue.push(b)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var g=Editor.prototype.init;Editor.prototype.init=function(){g.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,
+mxUtils.bind(this,function(b,d){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)}))};c=document.getElementsByTagName("script");if(null!=c&&0<c.length){var e=document.createElement("script");e.setAttribute("type","text/javascript");e.setAttribute("src",b);c[0].parentNode.appendChild(e)}try{if(mxClient.IS_GC||mxClient.IS_SF){var f=document.createElement("style");f.type="text/css";f.innerHTML=Editor.mathJaxWebkitCss;document.getElementsByTagName("head")[0].appendChild(f)}}catch(V){}}};
+Editor.prototype.csvToArray=function(b){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(b))return null;var d=[];b.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(b,c,g,e){void 0!==c?d.push(c.replace(/\\'/g,"'")):void 0!==g?d.push(g.replace(/\\"/g,
'"')):void 0!==e&&d.push(e);return""});/,\s*$/.test(b)&&d.push("");return d};Editor.prototype.isCorsEnabledForUrl=function(b){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||b.substring(0,window.location.origin.length)==window.location.origin)return!0;null!=urlParams.cors&&null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(b)||"https://raw.githubusercontent.com/"===b.substring(0,34)};Editor.prototype.createImageUrlConverter=
-function(){var b=new mxUrlConverter;b.updateBaseUrl();var d=b.convert,c=this;b.convert=function(f){if(null!=f){var e="http://"==f.substring(0,7)||"https://"==f.substring(0,8);e&&!navigator.onLine?f=Editor.svgBrokenImage.src:!e||f.substring(0,b.baseUrl.length)==b.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(f)?"chrome-extension://"==f.substring(0,19)||mxClient.IS_CHROMEAPP||(f=d.apply(this,arguments)):f=PROXY_URL+"?url="+encodeURIComponent(f)}return f};return b};Editor.createSvgDataUri=function(b){return"data:image/svg+xml;base64,"+
-btoa(unescape(encodeURIComponent(b)))};Editor.prototype.convertImageToDataUri=function(b,d){try{var c=!0,f=window.setTimeout(mxUtils.bind(this,function(){c=!1;d(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(b))mxUtils.get(b,mxUtils.bind(this,function(b){window.clearTimeout(f);c&&d(Editor.createSvgDataUri(b.getText()))}),function(){window.clearTimeout(f);c&&d(Editor.svgBrokenImage.src)});else{var e=new Image;this.crossOriginImages&&(e.crossOrigin="anonymous");e.onload=function(){window.clearTimeout(f);
-if(c)try{var b=document.createElement("canvas"),g=b.getContext("2d");b.height=e.height;b.width=e.width;g.drawImage(e,0,0);d(b.toDataURL())}catch(oa){d(Editor.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(f);c&&d(Editor.svgBrokenImage.src)};e.src=b}}catch(Q){d(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(b,d,c,f){null==f&&(f=this.createImageUrlConverter());var e=0,g=c||{};c=mxUtils.bind(this,function(c,l){for(var m=b.getElementsByTagName(c),k=0;k<m.length;k++)mxUtils.bind(this,
-function(c){try{if(null!=c){var m=f.convert(c.getAttribute(l));if(null!=m&&"data:"!=m.substring(0,5)){var k=g[m];null==k?(e++,this.convertImageToDataUri(m,function(f){null!=f&&(g[m]=f,c.setAttribute(l,f));e--;0==e&&d(b)})):c.setAttribute(l,k)}else null!=m&&c.setAttribute(l,m)}}catch(ba){}})(m[k])});c("image","xlink:href");c("img","src");0==e&&d(b)};Editor.base64Encode=function(b){for(var d="",c=0,f=b.length,e,g,l;c<f;){e=b.charCodeAt(c++)&255;if(c==f){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>
-2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);d+="==";break}g=b.charCodeAt(c++);if(c==f){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(g&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&15)<<2);d+="=";break}l=b.charCodeAt(c++);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>
-2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(g&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&15)<<2|(l&192)>>6);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l&63)}return d};Editor.prototype.loadUrl=function(b,d,c,f,e,g,l,m){try{var k=!l&&(f||/(\.png)($|\?)/i.test(b)||/(\.jpe?g)($|\?)/i.test(b)||/(\.gif)($|\?)/i.test(b)||/(\.pdf)($|\?)/i.test(b));e=null!=e?e:!0;var n=mxUtils.bind(this,
-function(){mxUtils.get(b,mxUtils.bind(this,function(b){if(200<=b.getStatus()&&299>=b.getStatus()){if(null!=d){var f=b.getText();if(k){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){b=mxUtilsBinaryToArray(b.request.responseBody).toArray();for(var f=Array(b.length),e=0;e<b.length;e++)f[e]=String.fromCharCode(b[e]);f=f.join("")}g=null!=g?g:"data:image/png;base64,";f=g+Editor.base64Encode(f)}d(f)}}else null!=c&&(0==b.getStatus()?c({message:mxResources.get("accessDenied")},
-b):c({message:mxResources.get("error")+" "+b.getStatus()},b))}),function(b){null!=c&&c({message:mxResources.get("error")+" "+b.getStatus()})},k,this.timeout,function(){e&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:n})},m)});n()}catch(ra){null!=c&&c(ra)}};Editor.prototype.absoluteCssFonts=function(b){var d=null;if(null!=b){var c=b.split("url(");if(0<c.length){d=[c[0]];b=window.location.pathname;var f=null!=b?b.lastIndexOf("/"):-1;0<=f&&(b=b.substring(0,f+1));var f=document.getElementsByTagName("base"),
-e=null;null!=f&&0<f.length&&(e=f[0].getAttribute("href"));for(var g=1;g<c.length;g++)if(f=c[g].indexOf(")"),0<f){var l=Editor.trimCssUrl(c[g].substring(0,f));this.graph.isRelativeUrl(l)&&(l=null!=e?e+l:window.location.protocol+"//"+window.location.hostname+("/"==l.charAt(0)?"":b)+l);d.push('url("'+l+'"'+c[g].substring(f))}else d.push(c[g])}else d=[b]}return null!=d?d.join(""):null};Editor.prototype.embedCssFonts=function(b,d){var c=b.split("url("),f=0;null==this.cachedFonts&&(this.cachedFonts={});
-var e=mxUtils.bind(this,function(){if(0==f){for(var b=[c[0]],e=1;e<c.length;e++){var g=c[e].indexOf(")");b.push('url("');b.push(this.cachedFonts[Editor.trimCssUrl(c[e].substring(0,g))]);b.push('"'+c[e].substring(g))}d(b.join(""))}});if(0<c.length){for(var g=1;g<c.length;g++){var l=c[g].indexOf(")"),m=null,k=c[g].indexOf("format(",l);0<k&&(m=Editor.trimCssUrl(c[g].substring(k+7,c[g].indexOf(")",k))));mxUtils.bind(this,function(b){if(null==this.cachedFonts[b]){this.cachedFonts[b]=b;f++;var d="application/x-font-ttf";
+function(){var b=new mxUrlConverter;b.updateBaseUrl();var d=b.convert,c=this;b.convert=function(g){if(null!=g){var e="http://"==g.substring(0,7)||"https://"==g.substring(0,8);e&&!navigator.onLine?g=Editor.svgBrokenImage.src:!e||g.substring(0,b.baseUrl.length)==b.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(g)?"chrome-extension://"==g.substring(0,19)||mxClient.IS_CHROMEAPP||(g=d.apply(this,arguments)):g=PROXY_URL+"?url="+encodeURIComponent(g)}return g};return b};Editor.createSvgDataUri=function(b){return"data:image/svg+xml;base64,"+
+btoa(unescape(encodeURIComponent(b)))};Editor.prototype.convertImageToDataUri=function(b,d){try{var c=!0,g=window.setTimeout(mxUtils.bind(this,function(){c=!1;d(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(b))mxUtils.get(b,mxUtils.bind(this,function(b){window.clearTimeout(g);c&&d(Editor.createSvgDataUri(b.getText()))}),function(){window.clearTimeout(g);c&&d(Editor.svgBrokenImage.src)});else{var e=new Image;this.crossOriginImages&&(e.crossOrigin="anonymous");e.onload=function(){window.clearTimeout(g);
+if(c)try{var b=document.createElement("canvas"),f=b.getContext("2d");b.height=e.height;b.width=e.width;f.drawImage(e,0,0);d(b.toDataURL())}catch(oa){d(Editor.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(g);c&&d(Editor.svgBrokenImage.src)};e.src=b}}catch(Q){d(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(b,d,c,g){null==g&&(g=this.createImageUrlConverter());var e=0,f=c||{};c=mxUtils.bind(this,function(c,l){for(var m=b.getElementsByTagName(c),k=0;k<m.length;k++)mxUtils.bind(this,
+function(c){try{if(null!=c){var m=g.convert(c.getAttribute(l));if(null!=m&&"data:"!=m.substring(0,5)){var k=f[m];null==k?(e++,this.convertImageToDataUri(m,function(g){null!=g&&(f[m]=g,c.setAttribute(l,g));e--;0==e&&d(b)})):c.setAttribute(l,k)}else null!=m&&c.setAttribute(l,m)}}catch(aa){}})(m[k])});c("image","xlink:href");c("img","src");0==e&&d(b)};Editor.base64Encode=function(b){for(var d="",c=0,g=b.length,e,f,l;c<g;){e=b.charCodeAt(c++)&255;if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>
+2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);d+="==";break}f=b.charCodeAt(c++);if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(f&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&15)<<2);d+="=";break}l=b.charCodeAt(c++);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>
+2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(f&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&15)<<2|(l&192)>>6);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l&63)}return d};Editor.prototype.loadUrl=function(b,d,c,g,e,f,l,m){try{var k=!l&&(g||/(\.png)($|\?)/i.test(b)||/(\.jpe?g)($|\?)/i.test(b)||/(\.gif)($|\?)/i.test(b)||/(\.pdf)($|\?)/i.test(b));e=null!=e?e:!0;var n=mxUtils.bind(this,
+function(){mxUtils.get(b,mxUtils.bind(this,function(b){if(200<=b.getStatus()&&299>=b.getStatus()){if(null!=d){var g=b.getText();if(k){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){b=mxUtilsBinaryToArray(b.request.responseBody).toArray();for(var g=Array(b.length),e=0;e<b.length;e++)g[e]=String.fromCharCode(b[e]);g=g.join("")}f=null!=f?f:"data:image/png;base64,";g=f+Editor.base64Encode(g)}d(g)}}else null!=c&&(0==b.getStatus()?c({message:mxResources.get("accessDenied")},
+b):c({message:mxResources.get("error")+" "+b.getStatus()},b))}),function(b){null!=c&&c({message:mxResources.get("error")+" "+b.getStatus()})},k,this.timeout,function(){e&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:n})},m)});n()}catch(ra){null!=c&&c(ra)}};Editor.prototype.absoluteCssFonts=function(b){var d=null;if(null!=b){var c=b.split("url(");if(0<c.length){d=[c[0]];b=window.location.pathname;var g=null!=b?b.lastIndexOf("/"):-1;0<=g&&(b=b.substring(0,g+1));var g=document.getElementsByTagName("base"),
+e=null;null!=g&&0<g.length&&(e=g[0].getAttribute("href"));for(var f=1;f<c.length;f++)if(g=c[f].indexOf(")"),0<g){var l=Editor.trimCssUrl(c[f].substring(0,g));this.graph.isRelativeUrl(l)&&(l=null!=e?e+l:window.location.protocol+"//"+window.location.hostname+("/"==l.charAt(0)?"":b)+l);d.push('url("'+l+'"'+c[f].substring(g))}else d.push(c[f])}else d=[b]}return null!=d?d.join(""):null};Editor.prototype.embedCssFonts=function(b,d){var c=b.split("url("),g=0;null==this.cachedFonts&&(this.cachedFonts={});
+var e=mxUtils.bind(this,function(){if(0==g){for(var b=[c[0]],e=1;e<c.length;e++){var f=c[e].indexOf(")");b.push('url("');b.push(this.cachedFonts[Editor.trimCssUrl(c[e].substring(0,f))]);b.push('"'+c[e].substring(f))}d(b.join(""))}});if(0<c.length){for(var f=1;f<c.length;f++){var l=c[f].indexOf(")"),m=null,k=c[f].indexOf("format(",l);0<k&&(m=Editor.trimCssUrl(c[f].substring(k+7,c[f].indexOf(")",k))));mxUtils.bind(this,function(b){if(null==this.cachedFonts[b]){this.cachedFonts[b]=b;g++;var d="application/x-font-ttf";
if("svg"==m||/(\.svg)($|\?)/i.test(b))d="image/svg+xml";else if("otf"==m||"embedded-opentype"==m||/(\.otf)($|\?)/i.test(b))d="application/x-font-opentype";else if("woff"==m||/(\.woff)($|\?)/i.test(b))d="application/font-woff";else if("woff2"==m||/(\.woff2)($|\?)/i.test(b))d="application/font-woff2";else if("eot"==m||/(\.eot)($|\?)/i.test(b))d="application/vnd.ms-fontobject";else if("sfnt"==m||/(\.sfnt)($|\?)/i.test(b))d="application/font-sfnt";var c=b;/^https?:\/\//.test(c)&&!this.isCorsEnabledForUrl(c)&&
-(c=PROXY_URL+"?url="+encodeURIComponent(b));this.loadUrl(c,mxUtils.bind(this,function(d){this.cachedFonts[b]=d;f--;e()}),mxUtils.bind(this,function(b){f--;e()}),!0,null,"data:"+d+";charset=utf-8;base64,")}})(Editor.trimCssUrl(c[g].substring(0,l)),m)}e()}else d(b)};Editor.prototype.loadFonts=function(b){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(d){this.resolvedFontCss=d;null!=b&&b()})):null!=b&&b()};Editor.prototype.embedExtFonts=function(b){var d=
-this.graph.getCustomFonts();if(0<d.length){var c="",f=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts={});for(var e=mxUtils.bind(this,function(){0==f&&this.embedCssFonts(c,b)}),g=0;g<d.length;g++)mxUtils.bind(this,function(b,d){Graph.isCssFontUrl(d)?null==this.cachedGoogleFonts[d]?(f++,this.loadUrl(d,mxUtils.bind(this,function(b){this.cachedGoogleFonts[d]=b;c+=b;f--;e()}),mxUtils.bind(this,function(b){f--;c+="@import url("+d+");";e()}))):c+=this.cachedGoogleFonts[d]:c+='@font-face {font-family: "'+
-b+'";src: url("'+d+'")}'})(d[g].name,d[g].url);e()}else b()};Editor.prototype.addMathCss=function(b){b=b.getElementsByTagName("defs");if(null!=b&&0<b.length)for(var d=document.getElementsByTagName("style"),c=0;c<d.length;c++)0<mxUtils.getTextContent(d[c]).indexOf("MathJax")&&b[0].appendChild(d[c].cloneNode(!0))};Editor.prototype.addFontCss=function(b,d){d=null!=d?d:this.absoluteCssFonts(this.fontCss);if(null!=d){var c=b.getElementsByTagName("defs"),f=b.ownerDocument;0==c.length?(c=null!=f.createElementNS?
-f.createElementNS(mxConstants.NS_SVG,"defs"):f.createElement("defs"),null!=b.firstChild?b.insertBefore(c,b.firstChild):b.appendChild(c)):c=c[0];f=null!=f.createElementNS?f.createElementNS(mxConstants.NS_SVG,"style"):f.createElement("style");f.setAttribute("type","text/css");mxUtils.setTextContent(f,d);c.appendChild(f)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(b,d,c){var f=mxClient.IS_FF?8192:16384;
-return Math.min(c,Math.min(f/b,f/d))};Editor.prototype.exportToCanvas=function(b,d,c,f,e,g,l,m,k,n,q,u,p,v,x,t,z,y){try{g=null!=g?g:!0;l=null!=l?l:!0;u=null!=u?u:this.graph;p=null!=p?p:0;var A=k?null:u.background;A==mxConstants.NONE&&(A=null);null==A&&(A=f);null==A&&0==k&&(A=t?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(u.getSvg(null,null,p,v,null,l,null,null,null,n,null,t,z,y),mxUtils.bind(this,function(c){try{var f=new Image;f.onload=mxUtils.bind(this,function(){try{var l=
-function(){mxClient.IS_SF?window.setTimeout(function(){v.drawImage(f,0,0);b(k,c)},0):(v.drawImage(f,0,0),b(k,c))},k=document.createElement("canvas"),n=parseInt(c.getAttribute("width")),q=parseInt(c.getAttribute("height"));m=null!=m?m:1;null!=d&&(m=g?Math.min(1,Math.min(3*d/(4*q),d/n)):d/n);m=this.getMaxCanvasScale(n,q,m);n=Math.ceil(m*n);q=Math.ceil(m*q);k.setAttribute("width",n);k.setAttribute("height",q);var v=k.getContext("2d");null!=A&&(v.beginPath(),v.rect(0,0,n,q),v.fillStyle=A,v.fill());1!=
-m&&v.scale(m,m);if(x){var t=u.view,z=t.scale;t.scale=1;var y=btoa(unescape(encodeURIComponent(t.createSvgGrid(t.gridColor))));t.scale=z;var y="data:image/svg+xml;base64,"+y,G=u.gridSize*t.gridSteps*m,C=u.getGraphBounds(),I=t.translate.x*z,N=t.translate.y*z,D=I+(C.x-I)/z-p,M=N+(C.y-N)/z-p,S=new Image;S.onload=function(){try{for(var b=-Math.round(G-mxUtils.mod((I-D)*m,G)),d=-Math.round(G-mxUtils.mod((N-M)*m,G));b<n;b+=G)for(var c=d;c<q;c+=G)v.drawImage(S,b/m,c/m);l()}catch(wa){null!=e&&e(wa)}};S.onerror=
-function(b){null!=e&&e(b)};S.src=y}else l()}catch(Aa){null!=e&&e(Aa)}});f.onerror=function(b){null!=e&&e(b)};n&&this.graph.addSvgShadow(c);this.graph.mathEnabled&&this.addMathCss(c);var l=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(c,this.resolvedFontCss),f.src=Editor.createSvgDataUri(mxUtils.getXml(c))}catch(ia){null!=e&&e(ia)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(c,b),this.loadFonts(l)}catch(da){null!=e&&e(da)}}))}catch(ia){null!=
-e&&e(ia)}}),c,q)}catch(ma){null!=e&&e(ma)}};Editor.crcTable=[];for(var g=0;256>g;g++)for(var p=g,t=0;8>t;t++)p=1==(p&1)?3988292384^p>>>1:p>>>1,Editor.crcTable[g]=p;Editor.updateCRC=function(b,d,c,f){for(var e=0;e<f;e++)b=Editor.crcTable[(b^d.charCodeAt(c+e))&255]^b>>>8;return b};Editor.crc32=function(b){for(var d=-1,c=0;c<b.length;c++)d=d>>>8^Editor.crcTable[(d^b.charCodeAt(c))&255];return(d^-1)>>>0};Editor.writeGraphModelToPng=function(b,d,c,f,e){function g(b,d){var c=k;k+=d;return b.substring(c,
-k)}function l(b){b=g(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}function m(b){return String.fromCharCode(b>>24&255,b>>16&255,b>>8&255,b&255)}b=b.substring(b.indexOf(",")+1);b=window.atob?atob(b):Base64.decode(b,!0);var k=0;if(g(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(g(b,4),"IHDR"!=g(b,4))null!=e&&e();else{g(b,17);e=b.substring(0,k);do{var n=l(b);if("IDAT"==g(b,4)){e=b.substring(0,k-8);"pHYs"==d&&
-"dpi"==c?(c=Math.round(f/.0254),c=m(c)+m(c)+String.fromCharCode(1)):c=c+String.fromCharCode(0)+("zTXt"==d?String.fromCharCode(0):"")+f;f=4294967295;f=Editor.updateCRC(f,d,0,4);f=Editor.updateCRC(f,c,0,c.length);e+=m(c.length)+d+c+m(f^4294967295);e+=b.substring(k-8,b.length);break}e+=b.substring(k-8,k-4+n);g(b,n);g(b,4)}while(n);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";
-var d=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(b,c){d.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var f=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){f.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(b,d){var c=null;null!=b.editor.graph.getModel().getParent(d)?c=d.getId():null!=b.currentPage&&
+(c=PROXY_URL+"?url="+encodeURIComponent(b));this.loadUrl(c,mxUtils.bind(this,function(d){this.cachedFonts[b]=d;g--;e()}),mxUtils.bind(this,function(b){g--;e()}),!0,null,"data:"+d+";charset=utf-8;base64,")}})(Editor.trimCssUrl(c[f].substring(0,l)),m)}e()}else d(b)};Editor.prototype.loadFonts=function(b){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(d){this.resolvedFontCss=d;null!=b&&b()})):null!=b&&b()};Editor.prototype.embedExtFonts=function(b){var d=
+this.graph.getCustomFonts();if(0<d.length){var c="",g=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts={});for(var e=mxUtils.bind(this,function(){0==g&&this.embedCssFonts(c,b)}),f=0;f<d.length;f++)mxUtils.bind(this,function(b,d){Graph.isCssFontUrl(d)?null==this.cachedGoogleFonts[d]?(g++,this.loadUrl(d,mxUtils.bind(this,function(b){this.cachedGoogleFonts[d]=b;c+=b;g--;e()}),mxUtils.bind(this,function(b){g--;c+="@import url("+d+");";e()}))):c+=this.cachedGoogleFonts[d]:c+='@font-face {font-family: "'+
+b+'";src: url("'+d+'")}'})(d[f].name,d[f].url);e()}else b()};Editor.prototype.addMathCss=function(b){b=b.getElementsByTagName("defs");if(null!=b&&0<b.length)for(var d=document.getElementsByTagName("style"),c=0;c<d.length;c++)0<mxUtils.getTextContent(d[c]).indexOf("MathJax")&&b[0].appendChild(d[c].cloneNode(!0))};Editor.prototype.addFontCss=function(b,d){d=null!=d?d:this.absoluteCssFonts(this.fontCss);if(null!=d){var c=b.getElementsByTagName("defs"),g=b.ownerDocument;0==c.length?(c=null!=g.createElementNS?
+g.createElementNS(mxConstants.NS_SVG,"defs"):g.createElement("defs"),null!=b.firstChild?b.insertBefore(c,b.firstChild):b.appendChild(c)):c=c[0];g=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"style"):g.createElement("style");g.setAttribute("type","text/css");mxUtils.setTextContent(g,d);c.appendChild(g)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(b,d,c){var g=mxClient.IS_FF?8192:16384;
+return Math.min(c,Math.min(g/b,g/d))};Editor.prototype.exportToCanvas=function(b,d,c,g,e,f,l,m,k,n,q,u,v,p,x,t,z,y){try{f=null!=f?f:!0;l=null!=l?l:!0;u=null!=u?u:this.graph;v=null!=v?v:0;var G=k?null:u.background;G==mxConstants.NONE&&(G=null);null==G&&(G=g);null==G&&0==k&&(G=t?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(u.getSvg(null,null,v,p,null,l,null,null,null,n,null,t,z,y),mxUtils.bind(this,function(c){try{var g=new Image;g.onload=mxUtils.bind(this,function(){try{var l=
+function(){mxClient.IS_SF?window.setTimeout(function(){p.drawImage(g,0,0);b(k,c)},0):(p.drawImage(g,0,0),b(k,c))},k=document.createElement("canvas"),n=parseInt(c.getAttribute("width")),q=parseInt(c.getAttribute("height"));m=null!=m?m:1;null!=d&&(m=f?Math.min(1,Math.min(3*d/(4*q),d/n)):d/n);m=this.getMaxCanvasScale(n,q,m);n=Math.ceil(m*n);q=Math.ceil(m*q);k.setAttribute("width",n);k.setAttribute("height",q);var p=k.getContext("2d");null!=G&&(p.beginPath(),p.rect(0,0,n,q),p.fillStyle=G,p.fill());1!=
+m&&p.scale(m,m);if(x){var t=u.view,z=t.scale;t.scale=1;var y=btoa(unescape(encodeURIComponent(t.createSvgGrid(t.gridColor))));t.scale=z;var y="data:image/svg+xml;base64,"+y,B=u.gridSize*t.gridSteps*m,C=u.getGraphBounds(),I=t.translate.x*z,L=t.translate.y*z,D=I+(C.x-I)/z-v,M=L+(C.y-L)/z-v,S=new Image;S.onload=function(){try{for(var b=-Math.round(B-mxUtils.mod((I-D)*m,B)),d=-Math.round(B-mxUtils.mod((L-M)*m,B));b<n;b+=B)for(var c=d;c<q;c+=B)p.drawImage(S,b/m,c/m);l()}catch(wa){null!=e&&e(wa)}};S.onerror=
+function(b){null!=e&&e(b)};S.src=y}else l()}catch(Aa){null!=e&&e(Aa)}});g.onerror=function(b){null!=e&&e(b)};n&&this.graph.addSvgShadow(c);this.graph.mathEnabled&&this.addMathCss(c);var l=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(c,this.resolvedFontCss),g.src=Editor.createSvgDataUri(mxUtils.getXml(c))}catch(ia){null!=e&&e(ia)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(c,b),this.loadFonts(l)}catch(da){null!=e&&e(da)}}))}catch(ia){null!=
+e&&e(ia)}}),c,q)}catch(ma){null!=e&&e(ma)}};Editor.crcTable=[];for(var f=0;256>f;f++)for(var p=f,t=0;8>t;t++)p=1==(p&1)?3988292384^p>>>1:p>>>1,Editor.crcTable[f]=p;Editor.updateCRC=function(b,d,c,g){for(var e=0;e<g;e++)b=Editor.crcTable[(b^d.charCodeAt(c+e))&255]^b>>>8;return b};Editor.crc32=function(b){for(var d=-1,c=0;c<b.length;c++)d=d>>>8^Editor.crcTable[(d^b.charCodeAt(c))&255];return(d^-1)>>>0};Editor.writeGraphModelToPng=function(b,d,c,g,e){function f(b,d){var c=k;k+=d;return b.substring(c,
+k)}function l(b){b=f(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}function m(b){return String.fromCharCode(b>>24&255,b>>16&255,b>>8&255,b&255)}b=b.substring(b.indexOf(",")+1);b=window.atob?atob(b):Base64.decode(b,!0);var k=0;if(f(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(f(b,4),"IHDR"!=f(b,4))null!=e&&e();else{f(b,17);e=b.substring(0,k);do{var n=l(b);if("IDAT"==f(b,4)){e=b.substring(0,k-8);"pHYs"==d&&
+"dpi"==c?(c=Math.round(g/.0254),c=m(c)+m(c)+String.fromCharCode(1)):c=c+String.fromCharCode(0)+("zTXt"==d?String.fromCharCode(0):"")+g;g=4294967295;g=Editor.updateCRC(g,d,0,4);g=Editor.updateCRC(g,c,0,c.length);e+=m(c.length)+d+c+m(g^4294967295);e+=b.substring(k-8,b.length);break}e+=b.substring(k-8,k-4+n);f(b,n);f(b,4)}while(n);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";
+var d=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(b,c){d.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var g=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){g.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(b,d){var c=null;null!=b.editor.graph.getModel().getParent(d)?c=d.getId():null!=b.currentPage&&
(c=b.currentPage.getId());return c});if(null!=window.StyleFormatPanel){var l=Format.prototype.init;Format.prototype.init=function(){l.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var q=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?q.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var b=this.editorUi.getCurrentFile();
-return"1"==urlParams.embed||null!=b&&b.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(b){return!1};var m=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(b){b=m.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var d=this.editorUi,c=d.editor.graph,f=this.createOption(mxResources.get("shadow"),function(){return c.shadowVisible},function(b){var f=new ChangePageSetup(d);f.ignoreColor=!0;f.ignoreImage=
-!0;f.shadowVisible=b;c.model.execute(f)},{install:function(b){this.listener=function(){b(c.shadowVisible)};d.addListener("shadowVisibleChanged",this.listener)},destroy:function(){d.removeListener(this.listener)}});Editor.enableShadowOption||(f.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(f,60));b.appendChild(f)}return b};var n=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(b){b=n.apply(this,arguments);var d=this.editorUi,
-c=d.editor.graph;if(c.isEnabled()){var f=d.getCurrentFile();if(null!=f&&f.isAutosaveOptional()){var e=this.createOption(mxResources.get("autosave"),function(){return d.editor.autosave},function(b){d.editor.setAutosave(b);d.editor.autosave&&f.isModified()&&f.fileChanged()},{install:function(b){this.listener=function(){b(d.editor.autosave)};d.editor.addListener("autosaveChanged",this.listener)},destroy:function(){d.editor.removeListener(this.listener)}});b.appendChild(e)}}if(this.isMathOptionVisible()&&
-c.isEnabled()&&"undefined"!==typeof MathJax){e=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return c.mathEnabled},function(b){d.actions.get("mathematicalTypesetting").funct()},{install:function(b){this.listener=function(){b(c.mathEnabled)};d.addListener("mathEnabledChanged",this.listener)},destroy:function(){d.removeListener(this.listener)}});e.style.paddingTop="5px";b.appendChild(e);var g=d.menus.createHelpLink("https://www.diagrams.net/doc/faq/math-typesetting");g.style.position=
-"relative";g.style.marginLeft="6px";g.style.top="2px";e.appendChild(g)}return b};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=
+return"1"==urlParams.embed||null!=b&&b.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(b){return!1};var m=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(b){b=m.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var d=this.editorUi,c=d.editor.graph,g=this.createOption(mxResources.get("shadow"),function(){return c.shadowVisible},function(b){var g=new ChangePageSetup(d);g.ignoreColor=!0;g.ignoreImage=
+!0;g.shadowVisible=b;c.model.execute(g)},{install:function(b){this.listener=function(){b(c.shadowVisible)};d.addListener("shadowVisibleChanged",this.listener)},destroy:function(){d.removeListener(this.listener)}});Editor.enableShadowOption||(g.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(g,60));b.appendChild(g)}return b};var n=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(b){b=n.apply(this,arguments);var d=this.editorUi,
+c=d.editor.graph;if(c.isEnabled()){var g=d.getCurrentFile();if(null!=g&&g.isAutosaveOptional()){var e=this.createOption(mxResources.get("autosave"),function(){return d.editor.autosave},function(b){d.editor.setAutosave(b);d.editor.autosave&&g.isModified()&&g.fileChanged()},{install:function(b){this.listener=function(){b(d.editor.autosave)};d.editor.addListener("autosaveChanged",this.listener)},destroy:function(){d.editor.removeListener(this.listener)}});b.appendChild(e)}}if(this.isMathOptionVisible()&&
+c.isEnabled()&&"undefined"!==typeof MathJax){e=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return c.mathEnabled},function(b){d.actions.get("mathematicalTypesetting").funct()},{install:function(b){this.listener=function(){b(c.mathEnabled)};d.addListener("mathEnabledChanged",this.listener)},destroy:function(){d.removeListener(this.listener)}});e.style.paddingTop="5px";b.appendChild(e);var f=d.menus.createHelpLink("https://www.diagrams.net/doc/faq/math-typesetting");f.style.position=
+"relative";f.style.marginLeft="6px";f.style.top="2px";e.appendChild(f)}return b};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=
[{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=[{name:"size",dispName:"Indent",type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double",
dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",type:"bool",defVal:!0},{name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.triangle.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE}];mxCellRenderer.defaultShapes.document.prototype.customProperties=
@@ -3245,89 +3256,87 @@ type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.offPageConnector.pro
stroke:"#6c8ebf"},{fill:"#d5e8d4",stroke:"#82b366"},{fill:"#ffe6cc",stroke:"#d79b00"},{fill:"#fff2cc",stroke:"#d6b656"},{fill:"#f8cecc",stroke:"#b85450"},{fill:"#e1d5e7",stroke:"#9673a6"}],[{fill:"",stroke:""},{fill:"#60a917",stroke:"#2D7600",font:"#ffffff"},{fill:"#008a00",stroke:"#005700",font:"#ffffff"},{fill:"#1ba1e2",stroke:"#006EAF",font:"#ffffff"},{fill:"#0050ef",stroke:"#001DBC",font:"#ffffff"},{fill:"#6a00ff",stroke:"#3700CC",font:"#ffffff"},{fill:"#d80073",stroke:"#A50040",font:"#ffffff"},
{fill:"#a20025",stroke:"#6F0000",font:"#ffffff"}],[{fill:"#e51400",stroke:"#B20000",font:"#ffffff"},{fill:"#fa6800",stroke:"#C73500",font:"#000000"},{fill:"#f0a30a",stroke:"#BD7000",font:"#000000"},{fill:"#e3c800",stroke:"#B09500",font:"#000000"},{fill:"#6d8764",stroke:"#3A5431",font:"#ffffff"},{fill:"#647687",stroke:"#314354",font:"#ffffff"},{fill:"#76608a",stroke:"#432D57",font:"#ffffff"},{fill:"#a0522d",stroke:"#6D1F00",font:"#ffffff"}],[{fill:"",stroke:""},{fill:mxConstants.NONE,stroke:""},{fill:"#fad7ac",
stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8088"},{fill:"#b1ddf0",stroke:"#10739e"},{fill:"#d0cee2",stroke:"#56517e"},{fill:"#bac8d3",stroke:"#23445d"}],[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",gradient:"#b3b3b3"},{fill:"#dae8fc",stroke:"#6c8ebf",gradient:"#7ea6e0"},{fill:"#d5e8d4",stroke:"#82b366",gradient:"#97d077"},{fill:"#ffcd28",stroke:"#d79b00",gradient:"#ffa500"},{fill:"#fff2cc",stroke:"#d6b656",gradient:"#ffd966"},{fill:"#f8cecc",stroke:"#b85450",
-gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill:"",stroke:""},{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(b,d,c){if(null!=d){var f=function(b){if(null!=b)if(c)for(var f=
-0;f<b.length;f++)d[b[f].name]=b[f];else for(var e in d){for(var g=!1,f=0;f<b.length;f++)if(b[f].name==e&&b[f].type==d[e].type){g=!0;break}g||delete d[e]}},e=this.editorUi.editor.graph.view.getState(b);null!=e&&null!=e.shape&&(e.shape.commonCustomPropAdded||(e.shape.commonCustomPropAdded=!0,e.shape.customProperties=e.shape.customProperties||[],e.cell.vertex?Array.prototype.push.apply(e.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(e.shape.customProperties,Editor.commonEdgeProperties)),
-f(e.shape.customProperties));b=b.getAttribute("customProperties");if(null!=b)try{f(JSON.parse(b))}catch(Q){}}};var u=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var b=this.format.getSelectionState();"image"!=b.style.shape&&!b.containsLabel&&0<b.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));u.apply(this,arguments);if(Editor.enableCustomProperties){for(var d={},c=b.vertices,f=b.edges,e=0;e<c.length;e++)this.findCommonProperties(c[e],d,0==
-e);for(e=0;e<f.length;e++)this.findCommonProperties(f[e],d,0==c.length&&0==e);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(d).length&&this.container.appendChild(this.addProperties(this.createPanel(),d,b))}};var v=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(b){var d=this.format.getSelectionState(),c=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(b){this.editorUi.actions.get("copyStyle").funct()}));c.setAttribute("title",
-mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");c.style.marginBottom="2px";c.style.width="104px";c.style.marginRight="2px";b.appendChild(c);0<d.cells.length?(c=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(b){this.editorUi.actions.get("pasteStyle").funct()})),c.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")"),c.style.marginBottom="2px",c.style.width="104px",b.appendChild(c)):
-c.style.width="210px";mxUtils.br(b);return v.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(b,d,c){function f(b,d,c,f){u.getModel().beginUpdate();try{var e=[],g=[];if(null!=c.index){for(var l=[],m=c.parentRow.nextSibling;m&&m.getAttribute("data-pName")==b;)l.push(m.getAttribute("data-pValue")),m=m.nextSibling;c.index<l.length?null!=f?l.splice(f,1):l[c.index]=d:l.push(d);null!=c.size&&l.length>c.size&&(l=l.slice(0,c.size));d=l.join(",");
-null!=c.countProperty&&(u.setCellStyles(c.countProperty,l.length,u.getSelectionCells()),e.push(c.countProperty),g.push(l.length))}u.setCellStyles(b,d,u.getSelectionCells());e.push(b);g.push(d);if(null!=c.dependentProps)for(b=0;b<c.dependentProps.length;b++){var k=c.dependentPropsDefVal[b],n=c.dependentPropsVals[b];if(n.length>d)n=n.slice(0,d);else for(var x=n.length;x<d;x++)n.push(k);n=n.join(",");u.setCellStyles(c.dependentProps[b],n,u.getSelectionCells());e.push(c.dependentProps[b]);g.push(n)}if("function"==
-typeof c.onChange)c.onChange(u,d);q.editorUi.fireEvent(new mxEventObject("styleChanged","keys",e,"values",g,"cells",u.getSelectionCells()))}finally{u.getModel().endUpdate()}}function e(d,c,f){var e=mxUtils.getOffset(b,!0),g=mxUtils.getOffset(d,!0);c.style.position="absolute";c.style.left=g.x-e.x+"px";c.style.top=g.y-e.y+"px";c.style.width=d.offsetWidth+"px";c.style.height=d.offsetHeight-(f?4:0)+"px";c.style.zIndex=5}function g(b,d,c){var e=document.createElement("div");e.style.width="32px";e.style.height=
-"4px";e.style.margin="2px";e.style.border="1px solid black";e.style.background=d&&"none"!=d?d:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(q,function(g){this.editorUi.pickColor(d,function(d){e.style.background="none"==d?"url('"+Dialog.prototype.noColorImage+"')":d;f(b,d,c)});mxEvent.consume(g)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(e);return btn}function l(b,d,c,e,g,l,m){null!=d&&(d=d.split(","),p.push({name:b,
-values:d,type:c,defVal:e,countProperty:g,parentRow:l,isDeletable:!0,flipBkg:m}));btn=mxUtils.button("+",mxUtils.bind(q,function(d){for(var k=l,q=0;null!=k.nextSibling;)if(k.nextSibling.getAttribute("data-pName")==b)k=k.nextSibling,q++;else break;var u={type:c,parentRow:l,index:q,isDeletable:!0,defVal:e,countProperty:g},q=n(b,"",u,0==q%2,m);f(b,e,u);k.parentNode.insertBefore(q,k.nextSibling);mxEvent.consume(d)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}
-function m(b,d,c,f,e,g,l){if(0<e){var m=Array(e);d=null!=d?d.split(","):[];for(var k=0;k<e;k++)m[k]=null!=d[k]?d[k]:null!=f?f:"";p.push({name:b,values:m,type:c,defVal:f,parentRow:g,flipBkg:l,size:e})}return document.createElement("div")}function k(b,d,c){var e=document.createElement("input");e.type="checkbox";e.checked="1"==d;mxEvent.addListener(e,"change",function(){f(b,e.checked?"1":"0",c)});return e}function n(d,c,n,u,x){var p=n.dispName,v=n.type,t=document.createElement("tr");t.className="gePropRow"+
-(x?"Dark":"")+(u?"Alt":"")+" gePropNonHeaderRow";t.setAttribute("data-pName",d);t.setAttribute("data-pValue",c);u=!1;null!=n.index&&(t.setAttribute("data-index",n.index),p=(null!=p?p:"")+"["+n.index+"]",u=!0);var z=document.createElement("td");z.className="gePropRowCell";p=mxResources.get(p,null,p);mxUtils.write(z,p);z.setAttribute("title",p);u&&(z.style.textAlign="right");t.appendChild(z);z=document.createElement("td");z.className="gePropRowCell";if("color"==v)z.appendChild(g(d,c,n));else if("bool"==
-v||"boolean"==v)z.appendChild(k(d,c,n));else if("enum"==v){var y=n.enumList;for(x=0;x<y.length;x++)if(p=y[x],p.val==c){mxUtils.write(z,mxResources.get(p.dispName,null,p.dispName));break}mxEvent.addListener(z,"click",mxUtils.bind(q,function(){var g=document.createElement("select");e(z,g);for(var l=0;l<y.length;l++){var m=y[l],k=document.createElement("option");k.value=mxUtils.htmlEntities(m.val);mxUtils.write(k,mxResources.get(m.dispName,null,m.dispName));g.appendChild(k)}g.value=c;b.appendChild(g);
-mxEvent.addListener(g,"change",function(){var b=mxUtils.htmlEntities(g.value);f(d,b,n)});g.focus();mxEvent.addListener(g,"blur",function(){b.removeChild(g)})}))}else"dynamicArr"==v?z.appendChild(l(d,c,n.subType,n.subDefVal,n.countProperty,t,x)):"staticArr"==v?z.appendChild(m(d,c,n.subType,n.subDefVal,n.size,t,x)):"readOnly"==v?(x=document.createElement("input"),x.setAttribute("readonly",""),x.value=c,x.style.width="96px",x.style.borderWidth="0px",z.appendChild(x)):(z.innerHTML=c,mxEvent.addListener(z,
-"click",mxUtils.bind(q,function(){function g(){var b=l.value,b=0==b.length&&"string"!=v?0:b;n.allowAuto&&(null!=b.trim&&"auto"==b.trim().toLowerCase()?(b="auto",v="string"):(b=parseFloat(b),b=isNaN(b)?0:b));null!=n.min&&b<n.min?b=n.min:null!=n.max&&b>n.max&&(b=n.max);b=mxUtils.htmlEntities(("int"==v?parseInt(b):b)+"");f(d,b,n)}var l=document.createElement("input");e(z,l,!0);l.value=c;l.className="gePropEditor";"int"!=v&&"float"!=v||n.allowAuto||(l.type="number",l.step="int"==v?"1":"any",null!=n.min&&
-(l.min=parseFloat(n.min)),null!=n.max&&(l.max=parseFloat(n.max)));b.appendChild(l);mxEvent.addListener(l,"keypress",function(b){13==b.keyCode&&g()});l.focus();mxEvent.addListener(l,"blur",function(){g()})})));n.isDeletable&&(x=mxUtils.button("-",mxUtils.bind(q,function(b){f(d,"",n,n.index);mxEvent.consume(b)})),x.style.height="16px",x.style.width="25px",x.style["float"]="right",x.className="geColorBtn",z.appendChild(x));t.appendChild(z);return t}var q=this,u=this.editorUi.editor.graph,p=[];b.style.position=
-"relative";b.style.padding="0";var v=document.createElement("table");v.className="geProperties";v.style.whiteSpace="nowrap";v.style.width="100%";var x=document.createElement("tr");x.className="gePropHeader";var t=document.createElement("th");t.className="gePropHeaderCell";var z=document.createElement("img");z.src=Sidebar.prototype.expandedImage;z.style.verticalAlign="middle";t.appendChild(z);mxUtils.write(t,mxResources.get("property"));x.style.cursor="pointer";var y=function(){var d=v.querySelectorAll(".gePropNonHeaderRow"),
-c;if(q.editorUi.propertiesCollapsed){z.src=Sidebar.prototype.collapsedImage;c="none";for(var f=b.childNodes.length-1;0<=f;f--)try{var e=b.childNodes[f],g=e.nodeName.toUpperCase();"INPUT"!=g&&"SELECT"!=g||b.removeChild(e)}catch(pa){}}else z.src=Sidebar.prototype.expandedImage,c="";for(f=0;f<d.length;f++)d[f].style.display=c};mxEvent.addListener(x,"click",function(){q.editorUi.propertiesCollapsed=!q.editorUi.propertiesCollapsed;y()});x.appendChild(t);t=document.createElement("th");t.className="gePropHeaderCell";
-t.innerHTML=mxResources.get("value");x.appendChild(t);v.appendChild(x);var A=!1,G=!1,x=null;1==c.vertices.length&&0==c.edges.length?x=c.vertices[0].id:0==c.vertices.length&&1==c.edges.length&&(x=c.edges[0].id);null!=x&&v.appendChild(n("id",mxUtils.htmlEntities(x),{dispName:"ID",type:"readOnly"},!0,!1));for(var C in d)if(x=d[C],"function"!=typeof x.isVisible||x.isVisible(c,this)){var N=null!=c.style[C]?mxUtils.htmlEntities(c.style[C]+""):null!=x.getDefaultValue?x.getDefaultValue(c,this):x.defVal;if("separator"==
-x.type)G=!G;else{if("staticArr"==x.type)x.size=parseInt(c.style[x.sizeProperty]||d[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var I=x.dependentProps,D=[],M=[],t=0;t<I.length;t++){var F=c.style[I[t]];M.push(d[I[t]].subDefVal);D.push(null!=F?F.split(","):[])}x.dependentPropsDefVal=M;x.dependentPropsVals=D}v.appendChild(n(C,N,x,A,G));A=!A}}for(t=0;t<p.length;t++)for(x=p[t],d=x.parentRow,c=0;c<x.values.length;c++)C=n(x.name,x.values[c],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,
-index:c,defVal:x.defVal,countProperty:x.countProperty,size:x.size},0==c%2,x.flipBkg),d.parentNode.insertBefore(C,d.nextSibling),d=C;b.appendChild(v);y();return b};StyleFormatPanel.prototype.addStyles=function(b){function d(b){mxEvent.addListener(b,"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var c=this.editorUi.editor.graph,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.paddingLeft="24px";f.style.paddingRight=
-"20px";b.style.paddingLeft="16px";b.style.paddingBottom="6px";b.style.position="relative";b.appendChild(f);var e="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "),g=document.createElement("div");g.style.whiteSpace="nowrap";g.style.position="relative";g.style.textAlign="center";g.style.width="210px";for(var l=[],m=0;m<this.defaultColorSchemes.length;m++){var k=document.createElement("div");
-k.style.display="inline-block";k.style.width="6px";k.style.height="6px";k.style.marginLeft="4px";k.style.marginRight="3px";k.style.borderRadius="3px";k.style.cursor="pointer";k.style.background="transparent";k.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(b){mxEvent.addListener(k,"click",mxUtils.bind(this,function(){n(b)}))})(m);l.push(k);g.appendChild(k)}var n=mxUtils.bind(this,function(b){null!=l[b]&&(null!=this.format.currentScheme&&null!=l[this.format.currentScheme]&&(l[this.format.currentScheme].style.background=
-"transparent"),this.format.currentScheme=b,q(this.defaultColorSchemes[this.format.currentScheme]),l[this.format.currentScheme].style.background="#84d7ff")}),q=mxUtils.bind(this,function(b){var d=mxUtils.bind(this,function(b){var d=mxUtils.button("",mxUtils.bind(this,function(d){c.getModel().beginUpdate();try{for(var f=this.format.getSelectionState().cells,g=0;g<f.length;g++){for(var l=c.getModel().getStyle(f[g]),m=0;m<e.length;m++)l=mxUtils.removeStylename(l,e[m]);var k=c.getModel().isVertex(f[g])?
-c.defaultVertexStyle:c.defaultEdgeStyle;null!=b?(mxEvent.isShiftDown(d)||(l=""==b.fill?mxUtils.setStyle(l,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(l,mxConstants.STYLE_FILLCOLOR,b.fill||mxUtils.getValue(k,mxConstants.STYLE_FILLCOLOR,null)),l=mxUtils.setStyle(l,mxConstants.STYLE_GRADIENTCOLOR,b.gradient||mxUtils.getValue(k,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(d)||mxClient.IS_MAC&&mxEvent.isMetaDown(d)||!c.getModel().isVertex(f[g])||(l=mxUtils.setStyle(l,mxConstants.STYLE_FONTCOLOR,
-b.font||mxUtils.getValue(k,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(d)||(l=""==b.stroke?mxUtils.setStyle(l,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(l,mxConstants.STYLE_STROKECOLOR,b.stroke||mxUtils.getValue(k,mxConstants.STYLE_STROKECOLOR,null)))):(l=mxUtils.setStyle(l,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(k,mxConstants.STYLE_FILLCOLOR,"#ffffff")),l=mxUtils.setStyle(l,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(k,mxConstants.STYLE_STROKECOLOR,"#000000")),l=mxUtils.setStyle(l,
-mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(k,mxConstants.STYLE_GRADIENTCOLOR,null)),c.getModel().isVertex(f[g])&&(l=mxUtils.setStyle(l,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(k,mxConstants.STYLE_FONTCOLOR,null))));c.getModel().setStyle(f[g],l)}}finally{c.getModel().endUpdate()}}));d.className="geStyleButton";d.style.width="36px";d.style.height=10>=this.defaultColorSchemes.length?"24px":"30px";d.style.margin="0px 6px 6px 0px";if(null!=b){var g="1"==urlParams.sketch?"2px solid":"1px solid";
-null!=b.gradient?mxClient.IS_IE&&10>document.documentMode?d.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+b.fill+"', EndColorStr='"+b.gradient+"', GradientType=0)":d.style.backgroundImage="linear-gradient("+b.fill+" 0px,"+b.gradient+" 100%)":b.fill==mxConstants.NONE?d.style.background="url('"+Dialog.prototype.noColorImage+"')":d.style.backgroundColor=""==b.fill?mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):
-b.fill||mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");d.style.border=b.stroke==mxConstants.NONE?g+" transparent":""==b.stroke?g+" "+mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor):g+" "+(b.stroke||mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=b.title&&d.setAttribute("title",b.title)}else{var g=
-mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),l=mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");d.style.backgroundColor=g;d.style.border="1px solid "+l}d.style.borderRadius="0";f.appendChild(d)});f.innerHTML="";for(var g=0;g<b.length;g++)0<g&&0==mxUtils.mod(g,4)&&mxUtils.br(f),d(b[g])});null==this.format.currentScheme?n(Editor.isDarkMode()?1:"1"==urlParams.sketch?5:0):n(this.format.currentScheme);var m=10>=this.defaultColorSchemes.length?
-28:8,u=document.createElement("div");u.style.cssText="position:absolute;left:10px;top:8px;bottom:"+m+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";mxEvent.addListener(u,
-"click",mxUtils.bind(this,function(){n(mxUtils.mod(this.format.currentScheme-1,this.defaultColorSchemes.length))}));var x=document.createElement("div");x.style.cssText="position:absolute;left:202px;top:8px;bottom:"+m+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";
-1<this.defaultColorSchemes.length&&(b.appendChild(u),b.appendChild(x));mxEvent.addListener(x,"click",mxUtils.bind(this,function(){n(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));d(u);d(x);q(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&b.appendChild(g);return b};StyleFormatPanel.prototype.addEditOps=function(b){var d=this.format.getSelectionState(),c=null;1==d.cells.length&&(c=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,
-function(b){this.editorUi.actions.get("editStyle").funct()})),c.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),c.style.width="210px",c.style.marginBottom="2px",b.appendChild(c));var f=this.editorUi.editor.graph,f=1==d.cells.length?f.view.getState(d.cells[0]):null;null!=f&&null!=f.shape&&null!=f.shape.stencil?(d=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(b){this.editorUi.actions.get("editShape").funct()})),d.setAttribute("title",
-mxResources.get("editShape")),d.style.marginBottom="2px",null==c?d.style.width="210px":(c.style.width="104px",d.style.width="104px",d.style.marginLeft="2px"),b.appendChild(d)):d.image&&0<d.cells.length&&(d=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(b){this.editorUi.actions.get("image").funct()})),d.setAttribute("title",mxResources.get("editImage")),d.style.marginBottom="2px",null==c?d.style.width="210px":(c.style.width="104px",d.style.width="104px",d.style.marginLeft="2px"),
+gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill:"",stroke:""},{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(b,d,c){if(null!=d){var g=function(b){if(null!=b)if(c)for(var g=
+0;g<b.length;g++)d[b[g].name]=b[g];else for(var e in d){for(var f=!1,g=0;g<b.length;g++)if(b[g].name==e&&b[g].type==d[e].type){f=!0;break}f||delete d[e]}},e=this.editorUi.editor.graph.view.getState(b);null!=e&&null!=e.shape&&(e.shape.commonCustomPropAdded||(e.shape.commonCustomPropAdded=!0,e.shape.customProperties=e.shape.customProperties||[],e.cell.vertex?Array.prototype.push.apply(e.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(e.shape.customProperties,Editor.commonEdgeProperties)),
+g(e.shape.customProperties));b=b.getAttribute("customProperties");if(null!=b)try{g(JSON.parse(b))}catch(Q){}}};var u=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var b=this.editorUi.getSelectionState();"image"!=b.style.shape&&!b.containsLabel&&0<b.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));u.apply(this,arguments);if(Editor.enableCustomProperties){for(var d={},c=b.vertices,g=b.edges,e=0;e<c.length;e++)this.findCommonProperties(c[e],d,
+0==e);for(e=0;e<g.length;e++)this.findCommonProperties(g[e],d,0==c.length&&0==e);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(d).length&&this.container.appendChild(this.addProperties(this.createPanel(),d,b))}};var v=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(b){this.addActions(b,["copyStyle","pasteStyle"]);return v.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(b,d,c){function g(b,
+d,c,g){u.getModel().beginUpdate();try{var e=[],f=[];if(null!=c.index){for(var l=[],m=c.parentRow.nextSibling;m&&m.getAttribute("data-pName")==b;)l.push(m.getAttribute("data-pValue")),m=m.nextSibling;c.index<l.length?null!=g?l.splice(g,1):l[c.index]=d:l.push(d);null!=c.size&&l.length>c.size&&(l=l.slice(0,c.size));d=l.join(",");null!=c.countProperty&&(u.setCellStyles(c.countProperty,l.length,u.getSelectionCells()),e.push(c.countProperty),f.push(l.length))}u.setCellStyles(b,d,u.getSelectionCells());
+e.push(b);f.push(d);if(null!=c.dependentProps)for(b=0;b<c.dependentProps.length;b++){var k=c.dependentPropsDefVal[b],n=c.dependentPropsVals[b];if(n.length>d)n=n.slice(0,d);else for(var p=n.length;p<d;p++)n.push(k);n=n.join(",");u.setCellStyles(c.dependentProps[b],n,u.getSelectionCells());e.push(c.dependentProps[b]);f.push(n)}if("function"==typeof c.onChange)c.onChange(u,d);q.editorUi.fireEvent(new mxEventObject("styleChanged","keys",e,"values",f,"cells",u.getSelectionCells()))}finally{u.getModel().endUpdate()}}
+function e(d,c,g){var e=mxUtils.getOffset(b,!0),f=mxUtils.getOffset(d,!0);c.style.position="absolute";c.style.left=f.x-e.x+"px";c.style.top=f.y-e.y+"px";c.style.width=d.offsetWidth+"px";c.style.height=d.offsetHeight-(g?4:0)+"px";c.style.zIndex=5}function f(b,d,c){var e=document.createElement("div");e.style.width="32px";e.style.height="4px";e.style.margin="2px";e.style.border="1px solid black";e.style.background=d&&"none"!=d?d:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(q,
+function(f){this.editorUi.pickColor(d,function(d){e.style.background="none"==d?"url('"+Dialog.prototype.noColorImage+"')":d;g(b,d,c)});mxEvent.consume(f)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(e);return btn}function l(b,d,c,e,f,l,m){null!=d&&(d=d.split(","),v.push({name:b,values:d,type:c,defVal:e,countProperty:f,parentRow:l,isDeletable:!0,flipBkg:m}));btn=mxUtils.button("+",mxUtils.bind(q,function(d){for(var k=l,q=0;null!=k.nextSibling;)if(k.nextSibling.getAttribute("data-pName")==
+b)k=k.nextSibling,q++;else break;var u={type:c,parentRow:l,index:q,isDeletable:!0,defVal:e,countProperty:f},q=n(b,"",u,0==q%2,m);g(b,e,u);k.parentNode.insertBefore(q,k.nextSibling);mxEvent.consume(d)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function m(b,d,c,g,e,f,l){if(0<e){var m=Array(e);d=null!=d?d.split(","):[];for(var k=0;k<e;k++)m[k]=null!=d[k]?d[k]:null!=g?g:"";v.push({name:b,values:m,type:c,defVal:g,parentRow:f,flipBkg:l,size:e})}return document.createElement("div")}
+function k(b,d,c){var e=document.createElement("input");e.type="checkbox";e.checked="1"==d;mxEvent.addListener(e,"change",function(){g(b,e.checked?"1":"0",c)});return e}function n(d,c,n,u,p){var v=n.dispName,x=n.type,t=document.createElement("tr");t.className="gePropRow"+(p?"Dark":"")+(u?"Alt":"")+" gePropNonHeaderRow";t.setAttribute("data-pName",d);t.setAttribute("data-pValue",c);u=!1;null!=n.index&&(t.setAttribute("data-index",n.index),v=(null!=v?v:"")+"["+n.index+"]",u=!0);var z=document.createElement("td");
+z.className="gePropRowCell";v=mxResources.get(v,null,v);mxUtils.write(z,v);z.setAttribute("title",v);u&&(z.style.textAlign="right");t.appendChild(z);z=document.createElement("td");z.className="gePropRowCell";if("color"==x)z.appendChild(f(d,c,n));else if("bool"==x||"boolean"==x)z.appendChild(k(d,c,n));else if("enum"==x){var y=n.enumList;for(p=0;p<y.length;p++)if(v=y[p],v.val==c){mxUtils.write(z,mxResources.get(v.dispName,null,v.dispName));break}mxEvent.addListener(z,"click",mxUtils.bind(q,function(){var f=
+document.createElement("select");e(z,f);for(var l=0;l<y.length;l++){var m=y[l],k=document.createElement("option");k.value=mxUtils.htmlEntities(m.val);mxUtils.write(k,mxResources.get(m.dispName,null,m.dispName));f.appendChild(k)}f.value=c;b.appendChild(f);mxEvent.addListener(f,"change",function(){var b=mxUtils.htmlEntities(f.value);g(d,b,n)});f.focus();mxEvent.addListener(f,"blur",function(){b.removeChild(f)})}))}else"dynamicArr"==x?z.appendChild(l(d,c,n.subType,n.subDefVal,n.countProperty,t,p)):"staticArr"==
+x?z.appendChild(m(d,c,n.subType,n.subDefVal,n.size,t,p)):"readOnly"==x?(p=document.createElement("input"),p.setAttribute("readonly",""),p.value=c,p.style.width="96px",p.style.borderWidth="0px",z.appendChild(p)):(z.innerHTML=c,mxEvent.addListener(z,"click",mxUtils.bind(q,function(){function f(){var b=l.value,b=0==b.length&&"string"!=x?0:b;n.allowAuto&&(null!=b.trim&&"auto"==b.trim().toLowerCase()?(b="auto",x="string"):(b=parseFloat(b),b=isNaN(b)?0:b));null!=n.min&&b<n.min?b=n.min:null!=n.max&&b>n.max&&
+(b=n.max);b=mxUtils.htmlEntities(("int"==x?parseInt(b):b)+"");g(d,b,n)}var l=document.createElement("input");e(z,l,!0);l.value=c;l.className="gePropEditor";"int"!=x&&"float"!=x||n.allowAuto||(l.type="number",l.step="int"==x?"1":"any",null!=n.min&&(l.min=parseFloat(n.min)),null!=n.max&&(l.max=parseFloat(n.max)));b.appendChild(l);mxEvent.addListener(l,"keypress",function(b){13==b.keyCode&&f()});l.focus();mxEvent.addListener(l,"blur",function(){f()})})));n.isDeletable&&(p=mxUtils.button("-",mxUtils.bind(q,
+function(b){g(d,"",n,n.index);mxEvent.consume(b)})),p.style.height="16px",p.style.width="25px",p.style["float"]="right",p.className="geColorBtn",z.appendChild(p));t.appendChild(z);return t}var q=this,u=this.editorUi.editor.graph,v=[];b.style.position="relative";b.style.padding="0";var p=document.createElement("table");p.className="geProperties";p.style.whiteSpace="nowrap";p.style.width="100%";var x=document.createElement("tr");x.className="gePropHeader";var t=document.createElement("th");t.className=
+"gePropHeaderCell";var z=document.createElement("img");z.src=Sidebar.prototype.expandedImage;z.style.verticalAlign="middle";t.appendChild(z);mxUtils.write(t,mxResources.get("property"));x.style.cursor="pointer";var y=function(){var d=p.querySelectorAll(".gePropNonHeaderRow"),c;if(q.editorUi.propertiesCollapsed){z.src=Sidebar.prototype.collapsedImage;c="none";for(var g=b.childNodes.length-1;0<=g;g--)try{var e=b.childNodes[g],f=e.nodeName.toUpperCase();"INPUT"!=f&&"SELECT"!=f||b.removeChild(e)}catch(pa){}}else z.src=
+Sidebar.prototype.expandedImage,c="";for(g=0;g<d.length;g++)d[g].style.display=c};mxEvent.addListener(x,"click",function(){q.editorUi.propertiesCollapsed=!q.editorUi.propertiesCollapsed;y()});x.appendChild(t);t=document.createElement("th");t.className="gePropHeaderCell";t.innerHTML=mxResources.get("value");x.appendChild(t);p.appendChild(x);var G=!1,C=!1,x=null;1==c.vertices.length&&0==c.edges.length?x=c.vertices[0].id:0==c.vertices.length&&1==c.edges.length&&(x=c.edges[0].id);null!=x&&p.appendChild(n("id",
+mxUtils.htmlEntities(x),{dispName:"ID",type:"readOnly"},!0,!1));for(var B in d)if(x=d[B],"function"!=typeof x.isVisible||x.isVisible(c,this)){var L=null!=c.style[B]?mxUtils.htmlEntities(c.style[B]+""):null!=x.getDefaultValue?x.getDefaultValue(c,this):x.defVal;if("separator"==x.type)C=!C;else{if("staticArr"==x.type)x.size=parseInt(c.style[x.sizeProperty]||d[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var I=x.dependentProps,D=[],M=[],t=0;t<I.length;t++){var F=c.style[I[t]];M.push(d[I[t]].subDefVal);
+D.push(null!=F?F.split(","):[])}x.dependentPropsDefVal=M;x.dependentPropsVals=D}p.appendChild(n(B,L,x,G,C));G=!G}}for(t=0;t<v.length;t++)for(x=v[t],d=x.parentRow,c=0;c<x.values.length;c++)B=n(x.name,x.values[c],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:c,defVal:x.defVal,countProperty:x.countProperty,size:x.size},0==c%2,x.flipBkg),d.parentNode.insertBefore(B,d.nextSibling),d=B;b.appendChild(p);y();return b};StyleFormatPanel.prototype.addStyles=function(b){function d(b){mxEvent.addListener(b,
+"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var c=this.editorUi,g=c.editor.graph,e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.paddingLeft="24px";e.style.paddingRight="20px";b.style.paddingLeft="16px";b.style.paddingBottom="6px";b.style.position="relative";b.appendChild(e);var f="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "),
+l=document.createElement("div");l.style.whiteSpace="nowrap";l.style.position="relative";l.style.textAlign="center";l.style.width="210px";for(var m=[],k=0;k<this.defaultColorSchemes.length;k++){var n=document.createElement("div");n.style.display="inline-block";n.style.width="6px";n.style.height="6px";n.style.marginLeft="4px";n.style.marginRight="3px";n.style.borderRadius="3px";n.style.cursor="pointer";n.style.background="transparent";n.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(b){mxEvent.addListener(n,
+"click",mxUtils.bind(this,function(){q(b)}))})(k);m.push(n);l.appendChild(n)}var q=mxUtils.bind(this,function(b){null!=m[b]&&(null!=this.format.currentScheme&&null!=m[this.format.currentScheme]&&(m[this.format.currentScheme].style.background="transparent"),this.format.currentScheme=b,u(this.defaultColorSchemes[this.format.currentScheme]),m[this.format.currentScheme].style.background="#84d7ff")}),u=mxUtils.bind(this,function(b){var d=mxUtils.bind(this,function(b){var d=mxUtils.button("",mxUtils.bind(this,
+function(d){g.getModel().beginUpdate();try{for(var e=c.getSelectionState().cells,l=0;l<e.length;l++){for(var m=g.getModel().getStyle(e[l]),k=0;k<f.length;k++)m=mxUtils.removeStylename(m,f[k]);var n=g.getModel().isVertex(e[l])?g.defaultVertexStyle:g.defaultEdgeStyle;null!=b?(mxEvent.isShiftDown(d)||(m=""==b.fill?mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,b.fill||mxUtils.getValue(n,mxConstants.STYLE_FILLCOLOR,null)),m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,
+b.gradient||mxUtils.getValue(n,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(d)||mxClient.IS_MAC&&mxEvent.isMetaDown(d)||!g.getModel().isVertex(e[l])||(m=mxUtils.setStyle(m,mxConstants.STYLE_FONTCOLOR,b.font||mxUtils.getValue(n,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(d)||(m=""==b.stroke?mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,b.stroke||mxUtils.getValue(n,mxConstants.STYLE_STROKECOLOR,null)))):(m=mxUtils.setStyle(m,
+mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(n,mxConstants.STYLE_FILLCOLOR,"#ffffff")),m=mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(n,mxConstants.STYLE_STROKECOLOR,"#000000")),m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(n,mxConstants.STYLE_GRADIENTCOLOR,null)),g.getModel().isVertex(e[l])&&(m=mxUtils.setStyle(m,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(n,mxConstants.STYLE_FONTCOLOR,null))));g.getModel().setStyle(e[l],m)}}finally{g.getModel().endUpdate()}}));
+d.className="geStyleButton";d.style.width="36px";d.style.height=10>=this.defaultColorSchemes.length?"24px":"30px";d.style.margin="0px 6px 6px 0px";if(null!=b){var l="1"==urlParams.sketch?"2px solid":"1px solid";null!=b.gradient?mxClient.IS_IE&&10>document.documentMode?d.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+b.fill+"', EndColorStr='"+b.gradient+"', GradientType=0)":d.style.backgroundImage="linear-gradient("+b.fill+" 0px,"+b.gradient+" 100%)":b.fill==mxConstants.NONE?
+d.style.background="url('"+Dialog.prototype.noColorImage+"')":d.style.backgroundColor=""==b.fill?mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):b.fill||mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");d.style.border=b.stroke==mxConstants.NONE?l+" transparent":""==b.stroke?l+" "+mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":
+Editor.darkColor):l+" "+(b.stroke||mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=b.title&&d.setAttribute("title",b.title)}else{var l=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),m=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");d.style.backgroundColor=l;d.style.border="1px solid "+m}d.style.borderRadius="0";e.appendChild(d)});e.innerHTML="";for(var l=0;l<b.length;l++)0<
+l&&0==mxUtils.mod(l,4)&&mxUtils.br(e),d(b[l])});null==this.format.currentScheme?q(Editor.isDarkMode()?1:"1"==urlParams.sketch?5:0):q(this.format.currentScheme);var k=10>=this.defaultColorSchemes.length?28:8,p=document.createElement("div");p.style.cssText="position:absolute;left:10px;top:8px;bottom:"+k+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";
+mxEvent.addListener(p,"click",mxUtils.bind(this,function(){q(mxUtils.mod(this.format.currentScheme-1,this.defaultColorSchemes.length))}));var v=document.createElement("div");v.style.cssText="position:absolute;left:202px;top:8px;bottom:"+k+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";
+1<this.defaultColorSchemes.length&&(b.appendChild(p),b.appendChild(v));mxEvent.addListener(v,"click",mxUtils.bind(this,function(){q(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));d(p);d(v);u(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&b.appendChild(l);return b};StyleFormatPanel.prototype.addEditOps=function(b){var d=this.editorUi.getSelectionState(),c=this.editorUi.editor.graph,g=null;1==d.cells.length&&(g=mxUtils.button(mxResources.get("editStyle"),
+mxUtils.bind(this,function(b){this.editorUi.actions.get("editStyle").funct()})),g.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),g.style.width="210px",g.style.marginBottom="2px",b.appendChild(g));c=1==d.cells.length?c.view.getState(d.cells[0]):null;null!=c&&null!=c.shape&&null!=c.shape.stencil?(d=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(b){this.editorUi.actions.get("editShape").funct()})),d.setAttribute("title",
+mxResources.get("editShape")),d.style.marginBottom="2px",null==g?d.style.width="210px":(g.style.width="104px",d.style.width="104px",d.style.marginLeft="2px"),b.appendChild(d)):d.image&&0<d.cells.length&&(d=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(b){this.editorUi.actions.get("image").funct()})),d.setAttribute("title",mxResources.get("editImage")),d.style.marginBottom="2px",null==g?d.style.width="210px":(g.style.width="104px",d.style.width="104px",d.style.marginLeft="2px"),
b.appendChild(d));return b}}Graph.customFontElements={};Graph.recentCustomFonts={};Graph.isGoogleFontUrl=function(b){return b.substring(0,Editor.GOOGLE_FONTS.length)==Editor.GOOGLE_FONTS};Graph.isCssFontUrl=function(b){return Graph.isGoogleFontUrl(b)};Graph.createFontElement=function(b,d){var c;Graph.isCssFontUrl(d)?(c=document.createElement("link"),c.setAttribute("rel","stylesheet"),c.setAttribute("type","text/css"),c.setAttribute("charset","UTF-8"),c.setAttribute("href",d)):(c=document.createElement("style"),
-mxUtils.write(c,'@font-face {\nfont-family: "'+b+'";\nsrc: url("'+d+'");\n}'));return c};Graph.addFont=function(b,d,c){if(null!=b&&0<b.length&&null!=d&&0<d.length){var f=b.toLowerCase();if("helvetica"!=f&&"arial"!=b&&"sans-serif"!=f){var e=Graph.customFontElements[f];null!=e&&e.url!=d&&(e.elt.parentNode.removeChild(e.elt),e=null);null==e?(e=d,"http:"==d.substring(0,5)&&(e=PROXY_URL+"?url="+encodeURIComponent(d)),e={name:b,url:d,elt:Graph.createFontElement(b,e)},Graph.customFontElements[f]=e,Graph.recentCustomFonts[f]=
-e,d=document.getElementsByTagName("head")[0],null!=c&&("link"==e.elt.nodeName.toLowerCase()?(e.elt.onload=c,e.elt.onerror=c):c()),null!=d&&d.appendChild(e.elt)):null!=c&&c()}else null!=c&&c()}else null!=c&&c();return b};Graph.getFontUrl=function(b,d){var c=Graph.customFontElements[b.toLowerCase()];null!=c&&(d=c.url);return d};Graph.processFontAttributes=function(b){b=b.getElementsByTagName("*");for(var d=0;d<b.length;d++){var c=b[d].getAttribute("data-font-src");if(null!=c){var f="FONT"==b[d].nodeName?
-b[d].getAttribute("face"):b[d].style.fontFamily;null!=f&&Graph.addFont(f,c)}}};Graph.processFontStyle=function(b){if(null!=b){var d=mxUtils.getValue(b,"fontSource",null);if(null!=d){var c=mxUtils.getValue(b,mxConstants.STYLE_FONTFAMILY,null);null!=c&&Graph.addFont(c,decodeURIComponent(d))}}return b};Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible=
+mxUtils.write(c,'@font-face {\nfont-family: "'+b+'";\nsrc: url("'+d+'");\n}'));return c};Graph.addFont=function(b,d,c){if(null!=b&&0<b.length&&null!=d&&0<d.length){var g=b.toLowerCase();if("helvetica"!=g&&"arial"!=b&&"sans-serif"!=g){var e=Graph.customFontElements[g];null!=e&&e.url!=d&&(e.elt.parentNode.removeChild(e.elt),e=null);null==e?(e=d,"http:"==d.substring(0,5)&&(e=PROXY_URL+"?url="+encodeURIComponent(d)),e={name:b,url:d,elt:Graph.createFontElement(b,e)},Graph.customFontElements[g]=e,Graph.recentCustomFonts[g]=
+e,d=document.getElementsByTagName("head")[0],null!=c&&("link"==e.elt.nodeName.toLowerCase()?(e.elt.onload=c,e.elt.onerror=c):c()),null!=d&&d.appendChild(e.elt)):null!=c&&c()}else null!=c&&c()}else null!=c&&c();return b};Graph.getFontUrl=function(b,d){var c=Graph.customFontElements[b.toLowerCase()];null!=c&&(d=c.url);return d};Graph.processFontAttributes=function(b){b=b.getElementsByTagName("*");for(var d=0;d<b.length;d++){var c=b[d].getAttribute("data-font-src");if(null!=c){var g="FONT"==b[d].nodeName?
+b[d].getAttribute("face"):b[d].style.fontFamily;null!=g&&Graph.addFont(g,c)}}};Graph.processFontStyle=function(b){if(null!=b){var d=mxUtils.getValue(b,"fontSource",null);if(null!=d){var c=mxUtils.getValue(b,mxConstants.STYLE_FONTFAMILY,null);null!=c&&Graph.addFont(c,decodeURIComponent(d))}}return b};Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible=
"0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize="3";Graph.prototype.edgeMode="move"!=urlParams.edge;Graph.prototype.hiddenTags=null;Graph.prototype.defaultMathEnabled=!1;var y=Graph.prototype.init;Graph.prototype.init=function(){function b(b){d=b}y.apply(this,arguments);this.hiddenTags=[];window.mxFreehand&&(this.freehand=new mxFreehand(this));var d=
-null;mxEvent.addListener(this.container,"mouseenter",b);mxEvent.addListener(this.container,"mousemove",b);mxEvent.addListener(this.container,"mouseleave",function(b){d=null});this.isMouseInsertPoint=function(){return null!=d};var c=this.getInsertPoint;this.getInsertPoint=function(){return null!=d?this.getPointForEvent(d):c.apply(this,arguments)};var f=this.layoutManager.getLayout;this.layoutManager.getLayout=function(b){var d=this.graph.getCellStyle(b);if(null!=d&&"rack"==d.childLayout){var c=new mxStackLayout(this.graph,
-!1);c.gridSize=null!=d.rackUnitSize?parseFloat(d.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:20;c.marginLeft=d.marginLeft||0;c.marginRight=d.marginRight||0;c.marginTop=d.marginTop||0;c.marginBottom=d.marginBottom||0;c.allowGaps=d.allowGaps||0;c.horizontal="1"==mxUtils.getValue(d,"horizontalRack","0");c.resizeParent=!1;c.fill=!0;return c}return f.apply(this,arguments)};this.updateGlobalUrlVariables()};var x=Graph.prototype.postProcessCellStyle;Graph.prototype.postProcessCellStyle=
-function(b,d){return Graph.processFontStyle(x.apply(this,arguments))};var F=mxSvgCanvas2D.prototype.updateTextNodes;mxSvgCanvas2D.prototype.updateTextNodes=function(b,d,c,f,e,g,l,m,k,n,q){F.apply(this,arguments);Graph.processFontAttributes(q)};var H=mxText.prototype.redraw;mxText.prototype.redraw=function(){H.apply(this,arguments);null!=this.node&&"DIV"==this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.createTagsDialog=function(b,d,c){function f(){for(var b=l.getSelectionCells(),
-d=[],c=0;c<b.length;c++)l.isCellVisible(b[c])&&d.push(b[c]);l.setSelectionCells(d)}function e(b){l.hiddenTags=b?[]:m.slice();f();l.refresh()}function g(b,c){n.innerHTML="";if(0<b.length){var g=document.createElement("table");g.setAttribute("cellpadding","2");g.style.boxSizing="border-box";g.style.tableLayout="fixed";g.style.width="100%";var k=document.createElement("tbody");if(null!=b&&0<b.length)for(var q=0;q<b.length;q++)(function(b){var g=0>mxUtils.indexOf(l.hiddenTags,b),n=document.createElement("tr"),
-q=document.createElement("td");q.style.align="center";q.style.width="16px";var u=document.createElement("img");u.setAttribute("src",g?Editor.visibleImage:Editor.hiddenImage);u.setAttribute("title",mxResources.get(g?"hideIt":"show",[b]));mxUtils.setOpacity(u,g?75:25);u.style.verticalAlign="middle";u.style.cursor="pointer";u.style.width="16px";if(d||Editor.isDarkMode())u.style.filter="invert(100%)";q.appendChild(u);mxEvent.addListener(u,"click",function(d){var c=mxUtils.indexOf(l.hiddenTags,b);mxEvent.isShiftDown(d)?
-e(0<=mxUtils.indexOf(l.hiddenTags,b)):(0>c?l.hiddenTags.push(b):0<=c&&l.hiddenTags.splice(c,1),f(),l.refresh());mxEvent.consume(d)});n.appendChild(q);q=document.createElement("td");q.style.overflow="hidden";q.style.whiteSpace="nowrap";q.style.textOverflow="ellipsis";q.style.verticalAlign="middle";q.style.cursor="pointer";q.setAttribute("title",b);a=document.createElement("a");mxUtils.write(a,b);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,g?100:40);q.appendChild(a);
-mxEvent.addListener(q,"click",function(d){if(mxEvent.isShiftDown(d)){e(!0);var c=l.getCellsForTags([b],null,null,!0);l.isEnabled()?l.setSelectionCells(c):l.highlightCells(c)}else if(g&&0<l.hiddenTags.length)e(!0);else{var c=m.slice(),k=mxUtils.indexOf(c,b);c.splice(k,1);l.hiddenTags=c;f();l.refresh()}mxEvent.consume(d)});n.appendChild(q);if(l.isEnabled()){q=document.createElement("td");q.style.verticalAlign="middle";q.style.textAlign="center";q.style.width="18px";if(null==c){q.style.align="center";
-q.style.width="16px";u=document.createElement("img");u.setAttribute("src",Editor.crossImage);u.setAttribute("title",mxResources.get("removeIt",[b]));mxUtils.setOpacity(u,g?75:25);u.style.verticalAlign="middle";u.style.cursor="pointer";u.style.width="16px";if(d||Editor.isDarkMode())u.style.filter="invert(100%)";mxEvent.addListener(u,"click",function(d){var c=mxUtils.indexOf(m,b);0<=c&&m.splice(c,1);l.removeTagsForCells(l.model.getDescendants(l.model.getRoot()),[b]);l.refresh();mxEvent.consume(d)});
-q.appendChild(u)}else{var x=document.createElement("input");x.setAttribute("type","checkbox");x.style.margin="0px";x.defaultChecked=null!=c&&0<=mxUtils.indexOf(c,b);x.checked=x.defaultChecked;x.style.background="transparent";x.setAttribute("title",mxResources.get(x.defaultChecked?"removeIt":"add",[b]));mxEvent.addListener(x,"change",function(d){x.checked?l.addTagsForCells(l.getSelectionCells(),[b]):l.removeTagsForCells(l.getSelectionCells(),[b]);mxEvent.consume(d)});q.appendChild(x)}n.appendChild(q)}k.appendChild(n)})(b[q]);
-g.appendChild(k);n.appendChild(g)}}var l=this,m=l.hiddenTags.slice(),k=document.createElement("div");k.style.userSelect="none";k.style.overflow="hidden";k.style.padding="10px";k.style.height="100%";var n=document.createElement("div");n.style.boxSizing="border-box";n.style.borderRadius="4px";n.style.userSelect="none";n.style.overflow="auto";n.style.position="absolute";n.style.left="10px";n.style.right="10px";n.style.top="10px";n.style.border=l.isEnabled()?"1px solid #808080":"none";n.style.bottom=
-l.isEnabled()?"48px":"10px";k.appendChild(n);var q=mxUtils.button(mxResources.get("reset"),function(b){l.hiddenTags=[];mxEvent.isShiftDown(b)||(m=l.hiddenTags.slice());f();l.refresh()});q.setAttribute("title",mxResources.get("reset"));q.className="geBtn";q.style.margin="0 4px 0 0";var u=mxUtils.button(mxResources.get("add"),function(){null!=c&&c(m,function(b){m=b;x()})});u.setAttribute("title",mxResources.get("add"));u.className="geBtn";u.style.margin="0";l.addListener(mxEvent.ROOT,function(){m=l.hiddenTags.slice()});
-var x=mxUtils.bind(this,function(d,c){if(b()){for(var f=l.getAllTags(),e=0;e<f.length;e++)0>mxUtils.indexOf(m,f[e])&&m.push(f[e]);m.sort();l.isSelectionEmpty()?g(m):g(m,l.getCommonTagsForCells(l.getSelectionCells()))}});l.selectionModel.addListener(mxEvent.CHANGE,x);l.model.addListener(mxEvent.CHANGE,x);l.addListener(mxEvent.REFRESH,x);var p=document.createElement("div");p.style.boxSizing="border-box";p.style.whiteSpace="nowrap";p.style.position="absolute";p.style.overflow="hidden";p.style.bottom=
-"0px";p.style.height="42px";p.style.right="10px";p.style.left="10px";l.isEnabled()&&(p.appendChild(q),p.appendChild(u),k.appendChild(p));return{div:k,refresh:x}};Graph.prototype.getCustomFonts=function(){var b=this.extFonts,b=null!=b?b.slice():[],d;for(d in Graph.customFontElements){var c=Graph.customFontElements[d];b.push({name:c.name,url:c.url})}return b};Graph.prototype.setFont=function(b,d){Graph.addFont(b,d);document.execCommand("fontname",!1,b);if(null!=d){var c=this.cellEditor.textarea.getElementsByTagName("font");
-d=Graph.getFontUrl(b,d);for(var f=0;f<c.length;f++)c[f].getAttribute("face")==b&&c[f].getAttribute("data-font-src")!=d&&c[f].setAttribute("data-font-src",d)}};var z=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return z.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};
-var b=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var d in b)this.globalVars[d]=b[d]}catch(A){null!=window.console&&console.log("Error in vars URL parameter: "+A)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var D=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(b){var d=D.apply(this,arguments);null==d&&null!=this.globalVars&&(d=this.globalVars[b]);return d};Graph.prototype.getDefaultStylesheet=
-function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var L=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,d,c,f,e,g,l,m,k,n,q,u,x,p){var v=null,t=null,z=null;u||null==this.themes||"darkTheme"!=this.defaultThemeName||(v=this.stylesheet,t=this.shapeForegroundColor,z=this.shapeBackgroundColor,this.shapeForegroundColor=
-"darkTheme"==this.defaultThemeName?"#000000":Editor.lightColor,this.shapeBackgroundColor="darkTheme"==this.defaultThemeName?"#ffffff":Editor.darkColor,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var y=L.apply(this,arguments),C=this.getCustomFonts();if(q&&0<C.length){var A=y.ownerDocument,N=null!=A.createElementNS?A.createElementNS(mxConstants.NS_SVG,"style"):A.createElement("style");null!=A.setAttributeNS?N.setAttributeNS("type","text/css"):N.setAttribute("type","text/css");for(var G=
-"",D="",I=0;I<C.length;I++){var M=C[I].name,F=C[I].url;Graph.isCssFontUrl(F)?G+="@import url("+F+");\n":D+='@font-face {\nfont-family: "'+M+'";\nsrc: url("'+F+'");\n}\n'}N.appendChild(A.createTextNode(G+D));y.getElementsByTagName("defs")[0].appendChild(N)}null!=v&&(this.shapeBackgroundColor=z,this.shapeForegroundColor=t,this.stylesheet=v,this.refresh());return y};var E=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var b=E.apply(this,arguments);if(this.mathEnabled){var d=
-b.drawText;b.drawText=function(b,c){if(null!=b.text&&null!=b.text.value&&b.text.checkBounds()&&(mxUtils.isNode(b.text.value)||b.text.dialect==mxConstants.DIALECT_STRICTHTML)){var f=b.text.getContentNode();if(null!=f){f=f.cloneNode(!0);if(f.getElementsByTagNameNS)for(var e=f.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<e.length;)e[0].parentNode.removeChild(e[0]);null!=f.innerHTML&&(e=b.text.value,b.text.value=f.innerHTML,d.apply(this,arguments),b.text.value=e)}}else d.apply(this,
+null;mxEvent.addListener(this.container,"mouseenter",b);mxEvent.addListener(this.container,"mousemove",b);mxEvent.addListener(this.container,"mouseleave",function(b){d=null});this.isMouseInsertPoint=function(){return null!=d};var c=this.getInsertPoint;this.getInsertPoint=function(){return null!=d?this.getPointForEvent(d):c.apply(this,arguments)};var g=this.layoutManager.getLayout;this.layoutManager.getLayout=function(b){var d=this.graph.getCellStyle(b);if(null!=d&&"rack"==d.childLayout){var c=new mxStackLayout(this.graph,
+!1);c.gridSize=null!=d.rackUnitSize?parseFloat(d.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:20;c.marginLeft=d.marginLeft||0;c.marginRight=d.marginRight||0;c.marginTop=d.marginTop||0;c.marginBottom=d.marginBottom||0;c.allowGaps=d.allowGaps||0;c.horizontal="1"==mxUtils.getValue(d,"horizontalRack","0");c.resizeParent=!1;c.fill=!0;return c}return g.apply(this,arguments)};this.updateGlobalUrlVariables()};var x=Graph.prototype.postProcessCellStyle;Graph.prototype.postProcessCellStyle=
+function(b,d){return Graph.processFontStyle(x.apply(this,arguments))};var F=mxSvgCanvas2D.prototype.updateTextNodes;mxSvgCanvas2D.prototype.updateTextNodes=function(b,d,c,g,e,f,l,m,k,n,q){F.apply(this,arguments);Graph.processFontAttributes(q)};var H=mxText.prototype.redraw;mxText.prototype.redraw=function(){H.apply(this,arguments);null!=this.node&&"DIV"==this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.createTagsDialog=function(b,d,c){function g(){for(var b=l.getSelectionCells(),
+d=[],c=0;c<b.length;c++)l.isCellVisible(b[c])&&d.push(b[c]);l.setSelectionCells(d)}function e(b){l.hiddenTags=b?[]:m.slice();g();l.refresh()}function f(b,c){n.innerHTML="";if(0<b.length){var f=document.createElement("table");f.setAttribute("cellpadding","2");f.style.boxSizing="border-box";f.style.tableLayout="fixed";f.style.width="100%";var k=document.createElement("tbody");if(null!=b&&0<b.length)for(var q=0;q<b.length;q++)(function(b){var f=0>mxUtils.indexOf(l.hiddenTags,b),n=document.createElement("tr"),
+q=document.createElement("td");q.style.align="center";q.style.width="16px";var u=document.createElement("img");u.setAttribute("src",f?Editor.visibleImage:Editor.hiddenImage);u.setAttribute("title",mxResources.get(f?"hideIt":"show",[b]));mxUtils.setOpacity(u,f?75:25);u.style.verticalAlign="middle";u.style.cursor="pointer";u.style.width="16px";if(d||Editor.isDarkMode())u.style.filter="invert(100%)";q.appendChild(u);mxEvent.addListener(u,"click",function(d){var c=mxUtils.indexOf(l.hiddenTags,b);mxEvent.isShiftDown(d)?
+e(0<=mxUtils.indexOf(l.hiddenTags,b)):(0>c?l.hiddenTags.push(b):0<=c&&l.hiddenTags.splice(c,1),g(),l.refresh());mxEvent.consume(d)});n.appendChild(q);q=document.createElement("td");q.style.overflow="hidden";q.style.whiteSpace="nowrap";q.style.textOverflow="ellipsis";q.style.verticalAlign="middle";q.style.cursor="pointer";q.setAttribute("title",b);a=document.createElement("a");mxUtils.write(a,b);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,f?100:40);q.appendChild(a);
+mxEvent.addListener(q,"click",function(d){if(mxEvent.isShiftDown(d)){e(!0);var c=l.getCellsForTags([b],null,null,!0);l.isEnabled()?l.setSelectionCells(c):l.highlightCells(c)}else if(f&&0<l.hiddenTags.length)e(!0);else{var c=m.slice(),k=mxUtils.indexOf(c,b);c.splice(k,1);l.hiddenTags=c;g();l.refresh()}mxEvent.consume(d)});n.appendChild(q);if(l.isEnabled()){q=document.createElement("td");q.style.verticalAlign="middle";q.style.textAlign="center";q.style.width="18px";if(null==c){q.style.align="center";
+q.style.width="16px";u=document.createElement("img");u.setAttribute("src",Editor.crossImage);u.setAttribute("title",mxResources.get("removeIt",[b]));mxUtils.setOpacity(u,f?75:25);u.style.verticalAlign="middle";u.style.cursor="pointer";u.style.width="16px";if(d||Editor.isDarkMode())u.style.filter="invert(100%)";mxEvent.addListener(u,"click",function(d){var c=mxUtils.indexOf(m,b);0<=c&&m.splice(c,1);l.removeTagsForCells(l.model.getDescendants(l.model.getRoot()),[b]);l.refresh();mxEvent.consume(d)});
+q.appendChild(u)}else{var p=document.createElement("input");p.setAttribute("type","checkbox");p.style.margin="0px";p.defaultChecked=null!=c&&0<=mxUtils.indexOf(c,b);p.checked=p.defaultChecked;p.style.background="transparent";p.setAttribute("title",mxResources.get(p.defaultChecked?"removeIt":"add",[b]));mxEvent.addListener(p,"change",function(d){p.checked?l.addTagsForCells(l.getSelectionCells(),[b]):l.removeTagsForCells(l.getSelectionCells(),[b]);mxEvent.consume(d)});q.appendChild(p)}n.appendChild(q)}k.appendChild(n)})(b[q]);
+f.appendChild(k);n.appendChild(f)}}var l=this,m=l.hiddenTags.slice(),k=document.createElement("div");k.style.userSelect="none";k.style.overflow="hidden";k.style.padding="10px";k.style.height="100%";var n=document.createElement("div");n.style.boxSizing="border-box";n.style.borderRadius="4px";n.style.userSelect="none";n.style.overflow="auto";n.style.position="absolute";n.style.left="10px";n.style.right="10px";n.style.top="10px";n.style.border=l.isEnabled()?"1px solid #808080":"none";n.style.bottom=
+l.isEnabled()?"48px":"10px";k.appendChild(n);var q=mxUtils.button(mxResources.get("reset"),function(b){l.hiddenTags=[];mxEvent.isShiftDown(b)||(m=l.hiddenTags.slice());g();l.refresh()});q.setAttribute("title",mxResources.get("reset"));q.className="geBtn";q.style.margin="0 4px 0 0";var u=mxUtils.button(mxResources.get("add"),function(){null!=c&&c(m,function(b){m=b;p()})});u.setAttribute("title",mxResources.get("add"));u.className="geBtn";u.style.margin="0";l.addListener(mxEvent.ROOT,function(){m=l.hiddenTags.slice()});
+var p=mxUtils.bind(this,function(d,c){if(b()){for(var g=l.getAllTags(),e=0;e<g.length;e++)0>mxUtils.indexOf(m,g[e])&&m.push(g[e]);m.sort();l.isSelectionEmpty()?f(m):f(m,l.getCommonTagsForCells(l.getSelectionCells()))}});l.selectionModel.addListener(mxEvent.CHANGE,p);l.model.addListener(mxEvent.CHANGE,p);l.addListener(mxEvent.REFRESH,p);var v=document.createElement("div");v.style.boxSizing="border-box";v.style.whiteSpace="nowrap";v.style.position="absolute";v.style.overflow="hidden";v.style.bottom=
+"0px";v.style.height="42px";v.style.right="10px";v.style.left="10px";l.isEnabled()&&(v.appendChild(q),v.appendChild(u),k.appendChild(v));return{div:k,refresh:p}};Graph.prototype.getCustomFonts=function(){var b=this.extFonts,b=null!=b?b.slice():[],d;for(d in Graph.customFontElements){var c=Graph.customFontElements[d];b.push({name:c.name,url:c.url})}return b};Graph.prototype.setFont=function(b,d){Graph.addFont(b,d);document.execCommand("fontname",!1,b);if(null!=d){var c=this.cellEditor.textarea.getElementsByTagName("font");
+d=Graph.getFontUrl(b,d);for(var g=0;g<c.length;g++)c[g].getAttribute("face")==b&&c[g].getAttribute("data-font-src")!=d&&c[g].setAttribute("data-font-src",d)}};var z=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return z.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};
+var b=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var d in b)this.globalVars[d]=b[d]}catch(B){null!=window.console&&console.log("Error in vars URL parameter: "+B)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var D=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(b){var d=D.apply(this,arguments);null==d&&null!=this.globalVars&&(d=this.globalVars[b]);return d};Graph.prototype.getDefaultStylesheet=
+function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var N=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,d,c,g,e,f,l,m,k,n,q,u,p,v){var x=null,t=null,z=null;u||null==this.themes||"darkTheme"!=this.defaultThemeName||(x=this.stylesheet,t=this.shapeForegroundColor,z=this.shapeBackgroundColor,this.shapeForegroundColor=
+"darkTheme"==this.defaultThemeName?"#000000":Editor.lightColor,this.shapeBackgroundColor="darkTheme"==this.defaultThemeName?"#ffffff":Editor.darkColor,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var y=N.apply(this,arguments),C=this.getCustomFonts();if(q&&0<C.length){var L=y.ownerDocument,G=null!=L.createElementNS?L.createElementNS(mxConstants.NS_SVG,"style"):L.createElement("style");null!=L.setAttributeNS?G.setAttributeNS("type","text/css"):G.setAttribute("type","text/css");for(var B=
+"",D="",I=0;I<C.length;I++){var M=C[I].name,F=C[I].url;Graph.isCssFontUrl(F)?B+="@import url("+F+");\n":D+='@font-face {\nfont-family: "'+M+'";\nsrc: url("'+F+'");\n}\n'}G.appendChild(L.createTextNode(B+D));y.getElementsByTagName("defs")[0].appendChild(G)}null!=x&&(this.shapeBackgroundColor=z,this.shapeForegroundColor=t,this.stylesheet=x,this.refresh());return y};var E=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var b=E.apply(this,arguments);if(this.mathEnabled){var d=
+b.drawText;b.drawText=function(b,c){if(null!=b.text&&null!=b.text.value&&b.text.checkBounds()&&(mxUtils.isNode(b.text.value)||b.text.dialect==mxConstants.DIALECT_STRICTHTML)){var g=b.text.getContentNode();if(null!=g){g=g.cloneNode(!0);if(g.getElementsByTagNameNS)for(var e=g.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<e.length;)e[0].parentNode.removeChild(e[0]);null!=g.innerHTML&&(e=b.text.value,b.text.value=g.innerHTML,d.apply(this,arguments),b.text.value=e)}}else d.apply(this,
arguments)}}return b};var J=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){J.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var b=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||
this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",b.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,b.ownerSVGElement))}};var C=Graph.prototype.refresh;Graph.prototype.refresh=function(){C.apply(this,
arguments);this.refreshBackgroundImage()};Graph.prototype.refreshBackgroundImage=function(){null!=this.backgroundImage&&null!=this.backgroundImage.originalSrc&&(this.setBackgroundImage(this.backgroundImage),this.view.validateBackgroundImage())};var K=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){K.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(b){"data:action/json,"==b.substring(0,17)&&(b=JSON.parse(b.substring(17)),null!=
-b.actions&&this.executeCustomActions(b.actions))};Graph.prototype.executeCustomActions=function(b,d){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),null!=this.pendingExecuteNextAction&&this.pendingExecuteNextAction(),this.fireEvent(new mxEventObject("stopExecutingCustomActions"));else{this.executingCustomActions=!0;var c=!1,f=0,e=0,g=mxUtils.bind(this,function(){c||(c=!0,this.model.beginUpdate())}),l=mxUtils.bind(this,
-function(){c&&(c=!1,this.model.endUpdate())}),m=mxUtils.bind(this,function(){0<f&&f--;0==f&&k()}),k=mxUtils.bind(this,function(){if(e<b.length){var c=this.stoppingCustomActions,n=b[e++],q=[];if(null!=n.open)if(l(),this.isCustomLink(n.open)){if(!this.customLinkClicked(n.open))return}else this.openLink(n.open);null==n.wait||c||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;m()}),f++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,
-""!=n.wait?parseInt(n.wait):1E3),l());null!=n.opacity&&null!=n.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(n.opacity,!0)),n.opacity.value);null!=n.fadeIn&&(f++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(n.fadeIn,!0)),0,1,m,c?0:n.fadeIn.delay));null!=n.fadeOut&&(f++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(n.fadeOut,!0)),1,0,m,c?0:n.fadeOut.delay));null!=n.wipeIn&&(q=q.concat(this.createWipeAnimations(this.getCellsForAction(n.wipeIn,
-!0),!0)));null!=n.wipeOut&&(q=q.concat(this.createWipeAnimations(this.getCellsForAction(n.wipeOut,!0),!1)));null!=n.toggle&&(g(),this.toggleCells(this.getCellsForAction(n.toggle,!0)));if(null!=n.show){g();var u=this.getCellsForAction(n.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(u),1);this.setCellsVisible(u,!0)}null!=n.hide&&(g(),u=this.getCellsForAction(n.hide,!0),Graph.setOpacityForNodes(this.getNodesForCells(u),0),this.setCellsVisible(u,!1));null!=n.toggleStyle&&null!=n.toggleStyle.key&&
-(g(),this.toggleCellStyles(n.toggleStyle.key,null!=n.toggleStyle.defaultValue?n.toggleStyle.defaultValue:"0",this.getCellsForAction(n.toggleStyle,!0)));null!=n.style&&null!=n.style.key&&(g(),this.setCellStyles(n.style.key,n.style.value,this.getCellsForAction(n.style,!0)));u=[];null!=n.select&&this.isEnabled()&&(u=this.getCellsForAction(n.select),this.setSelectionCells(u));null!=n.highlight&&(u=this.getCellsForAction(n.highlight),this.highlightCells(u,n.highlight.color,n.highlight.duration,n.highlight.opacity));
-null!=n.scroll&&(u=this.getCellsForAction(n.scroll));null!=n.viewbox&&this.fitWindow(n.viewbox,n.viewbox.border);0<u.length&&this.scrollCellToVisible(u[0]);if(null!=n.tags){u=[];null!=n.tags.hidden&&(u=u.concat(n.tags.hidden));if(null!=n.tags.visible)for(var x=this.getAllTags(),p=0;p<x.length;p++)0>mxUtils.indexOf(n.tags.visible,x[p])&&0>mxUtils.indexOf(u,x[p])&&u.push(x[p]);this.hiddenTags=u;this.refresh()}0<q.length&&(f++,this.executeAnimations(q,m,c?1:n.steps,c?0:n.delay));0==f?k():l()}else this.stoppingCustomActions=
-this.executingCustomActions=!1,l(),null!=d&&d()});k()}};Graph.prototype.doUpdateCustomLinksForCell=function(b,d){var c=this.getLinkForCell(d);null!=c&&"data:action/json,"==c.substring(0,17)&&this.setLinkForCell(d,this.updateCustomLink(b,c));if(this.isHtmlLabel(d)){var f=document.createElement("div");f.innerHTML=this.sanitizeHtml(this.getLabel(d));for(var e=f.getElementsByTagName("a"),g=!1,l=0;l<e.length;l++)c=e[l].getAttribute("href"),null!=c&&"data:action/json,"==c.substring(0,17)&&(e[l].setAttribute("href",
-this.updateCustomLink(b,c)),g=!0);g&&this.labelChanged(d,f.innerHTML)}};Graph.prototype.updateCustomLink=function(b,d){if("data:action/json,"==d.substring(0,17))try{var c=JSON.parse(d.substring(17));null!=c.actions&&(this.updateCustomLinkActions(b,c.actions),d="data:action/json,"+JSON.stringify(c))}catch(Y){}return d};Graph.prototype.updateCustomLinkActions=function(b,d){for(var c=0;c<d.length;c++){var f=d[c],e;for(e in f)this.updateCustomLinkAction(b,f[e],"cells"),this.updateCustomLinkAction(b,f[e],
-"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(b,d,c){if(null!=d&&null!=d[c]){for(var f=[],e=0;e<d[c].length;e++)if("*"==d[c][e])f.push(d[c][e]);else{var g=b[d[c][e]];null!=g?""!=g&&f.push(g):f.push(d[c][e])}d[c]=f}};Graph.prototype.getCellsForAction=function(b,d){var c=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,d));if(null!=b.excludeCells){for(var f=[],e=0;e<c.length;e++)0>b.excludeCells.indexOf(c[e].id)&&f.push(c[e]);c=f}return c};Graph.prototype.getCellsById=
-function(b){var d=[];if(null!=b)for(var c=0;c<b.length;c++)if("*"==b[c])var f=this.model.getRoot(),d=d.concat(this.model.filterDescendants(function(b){return b!=f},f));else{var e=this.model.getCell(b[c]);null!=e&&d.push(e)}return d};var M=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(b){return M.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");
-if(b.length>this.hiddenTags.length)return!1;for(var d=0;d<b.length;d++)if(0>mxUtils.indexOf(this.hiddenTags,b[d]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,d,c,f){var e=[];if(null!=b){d=null!=d?d:this.model.getDescendants(this.model.getRoot());for(var g=0,l={},m=0;m<b.length;m++)0<b[m].length&&(l[b[m]]=!0,g++);for(m=0;m<d.length;m++)if(c&&this.model.getParent(d[m])==this.model.root||this.model.isVertex(d[m])||this.model.isEdge(d[m])){var k=this.getTagsForCell(d[m]),n=!1;if(0<k.length&&
-(k=k.split(" "),k.length>=b.length)){for(var q=n=0;q<k.length&&n<g;q++)null!=l[k[q]]&&n++;n=n==g}n&&(1!=f||this.isCellVisible(d[m]))&&e.push(d[m])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(b){for(var d=null,c=[],f=0;f<b.length;f++){var e=this.getTagsForCell(b[f]),c=[];if(0<e.length){for(var e=e.split(" "),g={},l=0;l<e.length;l++)if(null==d||null!=d[e[l]])g[e[l]]=!0,c.push(e[l]);
-d=g}else return[]}return c};Graph.prototype.getTagsForCells=function(b){for(var d=[],c={},f=0;f<b.length;f++){var e=this.getTagsForCell(b[f]);if(0<e.length)for(var e=e.split(" "),g=0;g<e.length;g++)null==c[e[g]]&&(c[e[g]]=!0,d.push(e[g]))}return d};Graph.prototype.getTagsForCell=function(b){return this.getAttributeForCell(b,"tags","")};Graph.prototype.addTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){for(var f=this.getTagsForCell(b[c]),
-e=f.split(" "),g=!1,l=0;l<d.length;l++){var m=mxUtils.trim(d[l]);""!=m&&0>mxUtils.indexOf(e,m)&&(f=0<f.length?f+" "+m:m,g=!0)}g&&this.setAttributeForCell(b[c],"tags",f)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){var f=this.getTagsForCell(b[c]);if(0<f.length){for(var e=f.split(" "),g=!1,l=0;l<d.length;l++){var m=mxUtils.indexOf(e,d[l]);0<=m&&(e.splice(m,1),g=!0)}g&&this.setAttributeForCell(b[c],
-"tags",e.join(" "))}}}finally{this.model.endUpdate()}}};Graph.prototype.toggleCells=function(b){this.model.beginUpdate();try{for(var d=0;d<b.length;d++)this.model.setVisible(b[d],!this.model.isVisible(b[d]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(b,d){this.model.beginUpdate();try{for(var c=0;c<b.length;c++)this.model.setVisible(b[c],d)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(b,d,c,f){for(var e=0;e<b.length;e++)this.highlightCell(b[e],
-d,c,f)};Graph.prototype.highlightCell=function(b,d,c,f){d=null!=d?d:mxConstants.DEFAULT_VALID_COLOR;c=null!=c?c:1E3;b=this.view.getState(b);if(null!=b){var e=Math.max(5,mxUtils.getValue(b.style,mxConstants.STYLE_STROKEWIDTH,1)+4),g=new mxCellHighlight(this,d,e,!1);null!=f&&(g.opacity=f);g.highlight(b);window.setTimeout(function(){null!=g.shape&&(mxUtils.setPrefixedStyle(g.shape.node.style,"transition","all 1200ms ease-in-out"),g.shape.node.style.opacity=0);window.setTimeout(function(){g.destroy()},
-1200)},c)}};Graph.prototype.addSvgShadow=function(b,d,c,f){c=null!=c?c:!1;f=null!=f?f:!0;var e=b.ownerDocument,g=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"filter"):e.createElement("filter");g.setAttribute("id",this.shadowId);var l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):e.createElement("feGaussianBlur");l.setAttribute("in","SourceAlpha");l.setAttribute("stdDeviation",this.svgShadowBlur);l.setAttribute("result","blur");g.appendChild(l);l=null!=
-e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feOffset"):e.createElement("feOffset");l.setAttribute("in","blur");l.setAttribute("dx",this.svgShadowSize);l.setAttribute("dy",this.svgShadowSize);l.setAttribute("result","offsetBlur");g.appendChild(l);l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feFlood"):e.createElement("feFlood");l.setAttribute("flood-color",this.svgShadowColor);l.setAttribute("flood-opacity",this.svgShadowOpacity);l.setAttribute("result","offsetColor");
-g.appendChild(l);l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feComposite"):e.createElement("feComposite");l.setAttribute("in","offsetColor");l.setAttribute("in2","offsetBlur");l.setAttribute("operator","in");l.setAttribute("result","offsetBlur");g.appendChild(l);l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feBlend"):e.createElement("feBlend");l.setAttribute("in","SourceGraphic");l.setAttribute("in2","offsetBlur");g.appendChild(l);l=b.getElementsByTagName("defs");
-0==l.length?(e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=b.firstChild?b.insertBefore(e,b.firstChild):b.appendChild(e)):e=l[0];e.appendChild(g);c||(d=null!=d?d:b.getElementsByTagName("g")[0],null!=d&&(d.setAttribute("filter","url(#"+this.shadowId+")"),!isNaN(parseInt(b.getAttribute("width")))&&f&&(b.setAttribute("width",parseInt(b.getAttribute("width"))+6),b.setAttribute("height",parseInt(b.getAttribute("height"))+6),d=b.getAttribute("viewBox"),
-null!=d&&0<d.length&&(d=d.split(" "),3<d.length&&(w=parseFloat(d[2])+6,h=parseFloat(d[3])+6,b.setAttribute("viewBox",d[0]+" "+d[1]+" "+w+" "+h))))));return g};Graph.prototype.setShadowVisible=function(b,d){mxClient.IS_SVG&&!mxClient.IS_SF&&(d=null!=d?d:!0,(this.shadowVisible=b)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),d&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=
+b.actions&&this.executeCustomActions(b.actions))};Graph.prototype.executeCustomActions=function(b,d){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),null!=this.pendingExecuteNextAction&&this.pendingExecuteNextAction(),this.fireEvent(new mxEventObject("stopExecutingCustomActions"));else{this.executingCustomActions=!0;var c=!1,g=0,e=0,f=mxUtils.bind(this,function(){c||(c=!0,this.model.beginUpdate())}),l=mxUtils.bind(this,
+function(){c&&(c=!1,this.model.endUpdate())}),m=mxUtils.bind(this,function(){0<g&&g--;0==g&&k()}),k=mxUtils.bind(this,function(){if(e<b.length){var c=this.stoppingCustomActions,n=b[e++],q=[];if(null!=n.open)if(l(),this.isCustomLink(n.open)){if(!this.customLinkClicked(n.open))return}else this.openLink(n.open);null==n.wait||c||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;m()}),g++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,
+""!=n.wait?parseInt(n.wait):1E3),l());null!=n.opacity&&null!=n.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(n.opacity,!0)),n.opacity.value);null!=n.fadeIn&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(n.fadeIn,!0)),0,1,m,c?0:n.fadeIn.delay));null!=n.fadeOut&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(n.fadeOut,!0)),1,0,m,c?0:n.fadeOut.delay));null!=n.wipeIn&&(q=q.concat(this.createWipeAnimations(this.getCellsForAction(n.wipeIn,
+!0),!0)));null!=n.wipeOut&&(q=q.concat(this.createWipeAnimations(this.getCellsForAction(n.wipeOut,!0),!1)));null!=n.toggle&&(f(),this.toggleCells(this.getCellsForAction(n.toggle,!0)));if(null!=n.show){f();var u=this.getCellsForAction(n.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(u),1);this.setCellsVisible(u,!0)}null!=n.hide&&(f(),u=this.getCellsForAction(n.hide,!0),Graph.setOpacityForNodes(this.getNodesForCells(u),0),this.setCellsVisible(u,!1));null!=n.toggleStyle&&null!=n.toggleStyle.key&&
+(f(),this.toggleCellStyles(n.toggleStyle.key,null!=n.toggleStyle.defaultValue?n.toggleStyle.defaultValue:"0",this.getCellsForAction(n.toggleStyle,!0)));null!=n.style&&null!=n.style.key&&(f(),this.setCellStyles(n.style.key,n.style.value,this.getCellsForAction(n.style,!0)));u=[];null!=n.select&&this.isEnabled()&&(u=this.getCellsForAction(n.select),this.setSelectionCells(u));null!=n.highlight&&(u=this.getCellsForAction(n.highlight),this.highlightCells(u,n.highlight.color,n.highlight.duration,n.highlight.opacity));
+null!=n.scroll&&(u=this.getCellsForAction(n.scroll));null!=n.viewbox&&this.fitWindow(n.viewbox,n.viewbox.border);0<u.length&&this.scrollCellToVisible(u[0]);if(null!=n.tags){u=[];null!=n.tags.hidden&&(u=u.concat(n.tags.hidden));if(null!=n.tags.visible)for(var p=this.getAllTags(),v=0;v<p.length;v++)0>mxUtils.indexOf(n.tags.visible,p[v])&&0>mxUtils.indexOf(u,p[v])&&u.push(p[v]);this.hiddenTags=u;this.refresh()}0<q.length&&(g++,this.executeAnimations(q,m,c?1:n.steps,c?0:n.delay));0==g?k():l()}else this.stoppingCustomActions=
+this.executingCustomActions=!1,l(),null!=d&&d()});k()}};Graph.prototype.doUpdateCustomLinksForCell=function(b,d){var c=this.getLinkForCell(d);null!=c&&"data:action/json,"==c.substring(0,17)&&this.setLinkForCell(d,this.updateCustomLink(b,c));if(this.isHtmlLabel(d)){var g=document.createElement("div");g.innerHTML=this.sanitizeHtml(this.getLabel(d));for(var e=g.getElementsByTagName("a"),f=!1,l=0;l<e.length;l++)c=e[l].getAttribute("href"),null!=c&&"data:action/json,"==c.substring(0,17)&&(e[l].setAttribute("href",
+this.updateCustomLink(b,c)),f=!0);f&&this.labelChanged(d,g.innerHTML)}};Graph.prototype.updateCustomLink=function(b,d){if("data:action/json,"==d.substring(0,17))try{var c=JSON.parse(d.substring(17));null!=c.actions&&(this.updateCustomLinkActions(b,c.actions),d="data:action/json,"+JSON.stringify(c))}catch(ca){}return d};Graph.prototype.updateCustomLinkActions=function(b,d){for(var c=0;c<d.length;c++){var g=d[c],e;for(e in g)this.updateCustomLinkAction(b,g[e],"cells"),this.updateCustomLinkAction(b,
+g[e],"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(b,d,c){if(null!=d&&null!=d[c]){for(var g=[],e=0;e<d[c].length;e++)if("*"==d[c][e])g.push(d[c][e]);else{var f=b[d[c][e]];null!=f?""!=f&&g.push(f):g.push(d[c][e])}d[c]=g}};Graph.prototype.getCellsForAction=function(b,d){var c=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,d));if(null!=b.excludeCells){for(var g=[],e=0;e<c.length;e++)0>b.excludeCells.indexOf(c[e].id)&&g.push(c[e]);c=g}return c};Graph.prototype.getCellsById=
+function(b){var d=[];if(null!=b)for(var c=0;c<b.length;c++)if("*"==b[c])var g=this.model.getRoot(),d=d.concat(this.model.filterDescendants(function(b){return b!=g},g));else{var e=this.model.getCell(b[c]);null!=e&&d.push(e)}return d};var M=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(b){return M.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");
+if(b.length>this.hiddenTags.length)return!1;for(var d=0;d<b.length;d++)if(0>mxUtils.indexOf(this.hiddenTags,b[d]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,d,c,g){var e=[];if(null!=b){d=null!=d?d:this.model.getDescendants(this.model.getRoot());for(var f=0,l={},m=0;m<b.length;m++)0<b[m].length&&(l[b[m]]=!0,f++);for(m=0;m<d.length;m++)if(c&&this.model.getParent(d[m])==this.model.root||this.model.isVertex(d[m])||this.model.isEdge(d[m])){var k=this.getTagsForCell(d[m]),n=!1;if(0<k.length&&
+(k=k.split(" "),k.length>=b.length)){for(var q=n=0;q<k.length&&n<f;q++)null!=l[k[q]]&&n++;n=n==f}n&&(1!=g||this.isCellVisible(d[m]))&&e.push(d[m])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(b){for(var d=null,c=[],g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]),c=[];if(0<e.length){for(var e=e.split(" "),f={},l=0;l<e.length;l++)if(null==d||null!=d[e[l]])f[e[l]]=!0,c.push(e[l]);
+d=f}else return[]}return c};Graph.prototype.getTagsForCells=function(b){for(var d=[],c={},g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]);if(0<e.length)for(var e=e.split(" "),f=0;f<e.length;f++)null==c[e[f]]&&(c[e[f]]=!0,d.push(e[f]))}return d};Graph.prototype.getTagsForCell=function(b){return this.getAttributeForCell(b,"tags","")};Graph.prototype.addTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){for(var g=this.getTagsForCell(b[c]),
+e=g.split(" "),f=!1,l=0;l<d.length;l++){var m=mxUtils.trim(d[l]);""!=m&&0>mxUtils.indexOf(e,m)&&(g=0<g.length?g+" "+m:m,f=!0)}f&&this.setAttributeForCell(b[c],"tags",g)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){var g=this.getTagsForCell(b[c]);if(0<g.length){for(var e=g.split(" "),f=!1,l=0;l<d.length;l++){var m=mxUtils.indexOf(e,d[l]);0<=m&&(e.splice(m,1),f=!0)}f&&this.setAttributeForCell(b[c],
+"tags",e.join(" "))}}}finally{this.model.endUpdate()}}};Graph.prototype.toggleCells=function(b){this.model.beginUpdate();try{for(var d=0;d<b.length;d++)this.model.setVisible(b[d],!this.model.isVisible(b[d]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(b,d){this.model.beginUpdate();try{for(var c=0;c<b.length;c++)this.model.setVisible(b[c],d)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(b,d,c,g){for(var e=0;e<b.length;e++)this.highlightCell(b[e],
+d,c,g)};Graph.prototype.highlightCell=function(b,d,c,g){d=null!=d?d:mxConstants.DEFAULT_VALID_COLOR;c=null!=c?c:1E3;b=this.view.getState(b);if(null!=b){var e=Math.max(5,mxUtils.getValue(b.style,mxConstants.STYLE_STROKEWIDTH,1)+4),f=new mxCellHighlight(this,d,e,!1);null!=g&&(f.opacity=g);f.highlight(b);window.setTimeout(function(){null!=f.shape&&(mxUtils.setPrefixedStyle(f.shape.node.style,"transition","all 1200ms ease-in-out"),f.shape.node.style.opacity=0);window.setTimeout(function(){f.destroy()},
+1200)},c)}};Graph.prototype.addSvgShadow=function(b,d,c,g){c=null!=c?c:!1;g=null!=g?g:!0;var e=b.ownerDocument,f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"filter"):e.createElement("filter");f.setAttribute("id",this.shadowId);var l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):e.createElement("feGaussianBlur");l.setAttribute("in","SourceAlpha");l.setAttribute("stdDeviation",this.svgShadowBlur);l.setAttribute("result","blur");f.appendChild(l);l=null!=
+e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feOffset"):e.createElement("feOffset");l.setAttribute("in","blur");l.setAttribute("dx",this.svgShadowSize);l.setAttribute("dy",this.svgShadowSize);l.setAttribute("result","offsetBlur");f.appendChild(l);l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feFlood"):e.createElement("feFlood");l.setAttribute("flood-color",this.svgShadowColor);l.setAttribute("flood-opacity",this.svgShadowOpacity);l.setAttribute("result","offsetColor");
+f.appendChild(l);l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feComposite"):e.createElement("feComposite");l.setAttribute("in","offsetColor");l.setAttribute("in2","offsetBlur");l.setAttribute("operator","in");l.setAttribute("result","offsetBlur");f.appendChild(l);l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feBlend"):e.createElement("feBlend");l.setAttribute("in","SourceGraphic");l.setAttribute("in2","offsetBlur");f.appendChild(l);l=b.getElementsByTagName("defs");
+0==l.length?(e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=b.firstChild?b.insertBefore(e,b.firstChild):b.appendChild(e)):e=l[0];e.appendChild(f);c||(d=null!=d?d:b.getElementsByTagName("g")[0],null!=d&&(d.setAttribute("filter","url(#"+this.shadowId+")"),!isNaN(parseInt(b.getAttribute("width")))&&g&&(b.setAttribute("width",parseInt(b.getAttribute("width"))+6),b.setAttribute("height",parseInt(b.getAttribute("height"))+6),d=b.getAttribute("viewBox"),
+null!=d&&0<d.length&&(d=d.split(" "),3<d.length&&(w=parseFloat(d[2])+6,h=parseFloat(d[3])+6,b.setAttribute("viewBox",d[0]+" "+d[1]+" "+w+" "+h))))));return f};Graph.prototype.setShadowVisible=function(b,d){mxClient.IS_SVG&&!mxClient.IS_SF&&(d=null!=d?d:!0,(this.shadowVisible=b)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),d&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=
function(){if(null==this.defaultParent){var b=this.model.getChildCount(this.model.root),d,c=0;do d=this.model.getChildAt(this.model.root,c);while(c++<b&&"1"==mxUtils.getValue(this.getCellStyle(d),"locked","0"));null!=d&&this.setDefaultParent(d)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=
[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.bpmn2=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.c4=[SHAPES_PATH+"/mxC4.js"];mxStencilRegistry.libraries.cisco19=[SHAPES_PATH+"/mxCisco19.js",STENCIL_PATH+"/cisco19.xml"];mxStencilRegistry.libraries.cisco_safe=[SHAPES_PATH+"/mxCiscoSafe.js",STENCIL_PATH+"/cisco_safe/architecture.xml",STENCIL_PATH+"/cisco_safe/business_icons.xml",
STENCIL_PATH+"/cisco_safe/capability.xml",STENCIL_PATH+"/cisco_safe/design.xml",STENCIL_PATH+"/cisco_safe/iot_things_icons.xml",STENCIL_PATH+"/cisco_safe/people_places_things_icons.xml",STENCIL_PATH+"/cisco_safe/security_icons.xml",STENCIL_PATH+"/cisco_safe/technology_icons.xml",STENCIL_PATH+"/cisco_safe/threat.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.kubernetes=[SHAPES_PATH+"/mxKubernetes.js",
@@ -3339,152 +3348,152 @@ mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js
"/mxBasic.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"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",
STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.uml25=[SHAPES_PATH+"/mxUML25.js"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+
-"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var d=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?d="mxgraph.er":"sysML"==b.substring(0,5)&&(d="mxgraph.sysml"));return d};var aa=mxMarker.createMarker;mxMarker.createMarker=function(b,d,c,f,e,g,l,m,k,n){if(null!=c&&null==mxMarker.markers[c]){var q=this.getPackageForType(c);null!=
-q&&mxStencilRegistry.getStencil(q)}return aa.apply(this,arguments)};PrintDialog.prototype.create=function(b,d){function c(){p.value=Math.max(1,Math.min(m,Math.max(parseInt(p.value),parseInt(x.value))));x.value=Math.max(1,Math.min(m,Math.min(parseInt(p.value),parseInt(x.value))))}function f(d){function c(d,c,g){var l=d.useCssTransforms,m=d.currentTranslate,k=d.currentScale,n=d.view.translate,q=d.view.scale;d.useCssTransforms&&(d.useCssTransforms=!1,d.currentTranslate=new mxPoint(0,0),d.currentScale=
-1,d.view.translate=new mxPoint(0,0),d.view.scale=1);var u=d.getGraphBounds(),x=0,p=0,v=E.get(),t=1/d.pageScale,C=y.checked;if(C)var t=parseInt(O.value),N=parseInt(I.value),t=Math.min(v.height*N/(u.height/d.view.scale),v.width*t/(u.width/d.view.scale));else t=parseInt(z.value)/(100*d.pageScale),isNaN(t)&&(f=1/d.pageScale,z.value="100 %");v=mxRectangle.fromRectangle(v);v.width=Math.ceil(v.width*f);v.height=Math.ceil(v.height*f);t*=f;!C&&d.pageVisible?(u=d.getPageLayout(),x-=u.x*v.width,p-=u.y*v.height):
-C=!0;if(null==c){c=PrintDialog.createPrintPreview(d,t,v,0,x,p,C);c.pageSelector=!1;c.mathEnabled=!1;x=b.getCurrentFile();null!=x&&(c.title=x.getTitle());var A=c.writeHead;c.writeHead=function(c){A.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)c.writeln('<style type="text/css">'),c.writeln(Editor.mathJaxWebkitCss),c.writeln("</style>");mxClient.IS_GC&&(c.writeln('<style type="text/css">'),c.writeln("@media print {"),c.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),c.writeln("}"),
-c.writeln("</style>"));null!=b.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(b.editor.fontCss),c.writeln("</style>"));for(var f=d.getCustomFonts(),e=0;e<f.length;e++){var g=f[e].name,l=f[e].url;Graph.isCssFontUrl(l)?c.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(l)+'" charset="UTF-8" type="text/css">'):(c.writeln('<style type="text/css">'),c.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(g)+'";\nsrc: url("'+mxUtils.htmlEntities(l)+'");\n}'),c.writeln("</style>"))}};
-if("undefined"!==typeof MathJax){var D=c.renderPage;c.renderPage=function(d,c,f,e,g,l){var m=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var k=D.apply(this,arguments);mxClient.NO_FO=m;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:k.className="geDisableMathJax";return k}}x=null;p=e.enableFlowAnimation;e.enableFlowAnimation=!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(x=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),
-e.refresh());c.open(null,null,g,!0);e.enableFlowAnimation=p;null!=x&&(e.stylesheet=x,e.refresh())}else{v=d.background;if(null==v||""==v||v==mxConstants.NONE)v="#ffffff";c.backgroundColor=v;c.autoOrigin=C;c.appendGraph(d,t,x,p,g,!0);g=d.getCustomFonts();if(null!=c.wnd)for(x=0;x<g.length;x++)p=g[x].name,C=g[x].url,Graph.isCssFontUrl(C)?c.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(C)+'" charset="UTF-8" type="text/css">'):(c.wnd.document.writeln('<style type="text/css">'),
-c.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(p)+'";\nsrc: url("'+mxUtils.htmlEntities(C)+'");\n}'),c.wnd.document.writeln("</style>"))}l&&(d.useCssTransforms=l,d.currentTranslate=m,d.currentScale=k,d.view.translate=n,d.view.scale=q);return c}var f=parseInt(L.value)/100;isNaN(f)&&(f=1,L.value="100 %");var f=.75*f,g=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(g=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());var l=x.value,m=p.value,n=!q.checked,
-u=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,q.checked,l,m,y.checked,O.value,I.value,parseInt(z.value)/100,parseInt(L.value)/100,E.get());else{n&&(n=l==k&&m==k);if(!n&&null!=b.pages&&b.pages.length){var v=0,n=b.pages.length-1;q.checked||(v=parseInt(l)-1,n=parseInt(m)-1);for(var t=v;t<=n;t++){var C=b.pages[t],l=C==b.currentPage?e:null;if(null==l){var l=b.createTemporaryGraph(e.stylesheet),m=!0,v=!1,N=null,A=null;null==C.viewState&&null==C.root&&b.updatePageRoot(C);null!=C.viewState&&
-(m=C.viewState.pageVisible,v=C.viewState.mathEnabled,N=C.viewState.background,A=C.viewState.backgroundImage,l.extFonts=C.viewState.extFonts);l.background=N;l.backgroundImage=null!=A?new mxImage(A.src,A.width,A.height):null;l.pageVisible=m;l.mathEnabled=v;var D=l.getGlobalVariable;l.getGlobalVariable=function(d){return"page"==d?C.getName():"pagenumber"==d?t+1:"pagecount"==d?null!=b.pages?b.pages.length:1:D.apply(this,arguments)};document.body.appendChild(l.container);b.updatePageRoot(C);l.model.setRoot(C.root)}u=
-c(l,u,t!=n);l!=e&&l.container.parentNode.removeChild(l.container)}}else u=c(e);null==u?b.handleError({message:mxResources.get("errorUpdatingPreview")}):(u.mathEnabled&&(n=u.wnd.document,d&&(u.wnd.IMMEDIATE_PRINT=!0),n.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),u.closeDocument(),!u.mathEnabled&&d&&PrintDialog.printPreview(u));null!=g&&(e.stylesheet=g,e.refresh())}}var e=b.editor.graph,g=document.createElement("div"),l=document.createElement("h3");
-l.style.width="100%";l.style.textAlign="center";l.style.marginTop="0px";mxUtils.write(l,d||mxResources.get("print"));g.appendChild(l);var m=1,k=1,n=document.createElement("div");n.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var q=document.createElement("input");q.style.cssText="margin-right:8px;margin-bottom:8px;";q.setAttribute("value","all");q.setAttribute("type","radio");q.setAttribute("name","pages-printdialog");n.appendChild(q);l=document.createElement("span");
-mxUtils.write(l,mxResources.get("printAllPages"));n.appendChild(l);mxUtils.br(n);var u=q.cloneNode(!0);q.setAttribute("checked","checked");u.setAttribute("value","range");n.appendChild(u);l=document.createElement("span");mxUtils.write(l,mxResources.get("pages")+":");n.appendChild(l);var x=document.createElement("input");x.style.cssText="margin:0 8px 0 8px;";x.setAttribute("value","1");x.setAttribute("type","number");x.setAttribute("min","1");x.style.width="50px";n.appendChild(x);l=document.createElement("span");
-mxUtils.write(l,mxResources.get("to"));n.appendChild(l);var p=x.cloneNode(!0);n.appendChild(p);mxEvent.addListener(x,"focus",function(){u.checked=!0});mxEvent.addListener(p,"focus",function(){u.checked=!0});mxEvent.addListener(x,"change",c);mxEvent.addListener(p,"change",c);if(null!=b.pages&&(m=b.pages.length,null!=b.currentPage))for(l=0;l<b.pages.length;l++)if(b.currentPage==b.pages[l]){k=l+1;x.value=k;p.value=k;break}x.setAttribute("max",m);p.setAttribute("max",m);b.isPagesEnabled()?1<m&&(g.appendChild(n),
-u.checked=!0):u.checked=!0;var v=document.createElement("div");v.style.marginBottom="10px";var t=document.createElement("input");t.style.marginRight="8px";t.setAttribute("value","adjust");t.setAttribute("type","radio");t.setAttribute("name","printZoom");v.appendChild(t);l=document.createElement("span");mxUtils.write(l,mxResources.get("adjustTo"));v.appendChild(l);var z=document.createElement("input");z.style.cssText="margin:0 8px 0 8px;";z.setAttribute("value","100 %");z.style.width="50px";v.appendChild(z);
-mxEvent.addListener(z,"focus",function(){t.checked=!0});g.appendChild(v);var n=n.cloneNode(!1),y=t.cloneNode(!0);y.setAttribute("value","fit");t.setAttribute("checked","checked");l=document.createElement("div");l.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";l.appendChild(y);n.appendChild(l);v=document.createElement("table");v.style.display="inline-block";var C=document.createElement("tbody"),N=document.createElement("tr"),D=N.cloneNode(!0),M=document.createElement("td"),
-F=M.cloneNode(!0),K=M.cloneNode(!0),H=M.cloneNode(!0),G=M.cloneNode(!0),J=M.cloneNode(!0);M.style.textAlign="right";H.style.textAlign="right";mxUtils.write(M,mxResources.get("fitTo"));var O=document.createElement("input");O.style.cssText="margin:0 8px 0 8px;";O.setAttribute("value","1");O.setAttribute("min","1");O.setAttribute("type","number");O.style.width="40px";F.appendChild(O);l=document.createElement("span");mxUtils.write(l,mxResources.get("fitToSheetsAcross"));K.appendChild(l);mxUtils.write(H,
-mxResources.get("fitToBy"));var I=O.cloneNode(!0);G.appendChild(I);mxEvent.addListener(O,"focus",function(){y.checked=!0});mxEvent.addListener(I,"focus",function(){y.checked=!0});l=document.createElement("span");mxUtils.write(l,mxResources.get("fitToSheetsDown"));J.appendChild(l);N.appendChild(M);N.appendChild(F);N.appendChild(K);D.appendChild(H);D.appendChild(G);D.appendChild(J);C.appendChild(N);C.appendChild(D);v.appendChild(C);n.appendChild(v);g.appendChild(n);n=document.createElement("div");l=
-document.createElement("div");l.style.fontWeight="bold";l.style.marginBottom="12px";mxUtils.write(l,mxResources.get("paperSize"));n.appendChild(l);l=document.createElement("div");l.style.marginBottom="12px";var E=PageSetupDialog.addPageFormatPanel(l,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);n.appendChild(l);l=document.createElement("span");mxUtils.write(l,mxResources.get("pageScale"));n.appendChild(l);var L=document.createElement("input");L.style.cssText="margin:0 8px 0 8px;";
-L.setAttribute("value","100 %");L.style.width="60px";n.appendChild(L);g.appendChild(n);l=document.createElement("div");l.style.cssText="text-align:right;margin:48px 0 0 0;";n=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});n.className="geBtn";b.editor.cancelFirst&&l.appendChild(n);b.isOffline()||(v=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),v.className="geBtn",l.appendChild(v));PrintDialog.previewEnabled&&(v=
-mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();f(!1)}),v.className="geBtn",l.appendChild(v));v=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();f(!0)});v.className="geBtn gePrimaryBtn";l.appendChild(v);b.editor.cancelFirst||l.appendChild(n);g.appendChild(l);this.container=g};var N=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=
-this.page.viewState){this.ignoreColor||(this.page.viewState.background=this.color);if(!this.ignoreImage){var b=this.image;null!=b&&null!=b.src&&Graph.isPageLink(b.src)&&(b={originalSrc:b.src});this.page.viewState.backgroundImage=b}null!=this.format&&(this.page.viewState.pageFormat=this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)}}else N.apply(this,arguments),null!=this.mathEnabled&&
+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var d=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?d="mxgraph.er":"sysML"==b.substring(0,5)&&(d="mxgraph.sysml"));return d};var Z=mxMarker.createMarker;mxMarker.createMarker=function(b,d,c,g,e,f,l,m,k,n){if(null!=c&&null==mxMarker.markers[c]){var q=this.getPackageForType(c);null!=q&&
+mxStencilRegistry.getStencil(q)}return Z.apply(this,arguments)};PrintDialog.prototype.create=function(b,d){function c(){v.value=Math.max(1,Math.min(m,Math.max(parseInt(v.value),parseInt(p.value))));p.value=Math.max(1,Math.min(m,Math.min(parseInt(v.value),parseInt(p.value))))}function g(d){function c(d,c,f){var l=d.useCssTransforms,m=d.currentTranslate,k=d.currentScale,n=d.view.translate,q=d.view.scale;d.useCssTransforms&&(d.useCssTransforms=!1,d.currentTranslate=new mxPoint(0,0),d.currentScale=1,
+d.view.translate=new mxPoint(0,0),d.view.scale=1);var u=d.getGraphBounds(),p=0,v=0,x=E.get(),t=1/d.pageScale,C=y.checked;if(C)var t=parseInt(O.value),L=parseInt(I.value),t=Math.min(x.height*L/(u.height/d.view.scale),x.width*t/(u.width/d.view.scale));else t=parseInt(z.value)/(100*d.pageScale),isNaN(t)&&(g=1/d.pageScale,z.value="100 %");x=mxRectangle.fromRectangle(x);x.width=Math.ceil(x.width*g);x.height=Math.ceil(x.height*g);t*=g;!C&&d.pageVisible?(u=d.getPageLayout(),p-=u.x*x.width,v-=u.y*x.height):
+C=!0;if(null==c){c=PrintDialog.createPrintPreview(d,t,x,0,p,v,C);c.pageSelector=!1;c.mathEnabled=!1;p=b.getCurrentFile();null!=p&&(c.title=p.getTitle());var D=c.writeHead;c.writeHead=function(c){D.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)c.writeln('<style type="text/css">'),c.writeln(Editor.mathJaxWebkitCss),c.writeln("</style>");mxClient.IS_GC&&(c.writeln('<style type="text/css">'),c.writeln("@media print {"),c.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),c.writeln("}"),
+c.writeln("</style>"));null!=b.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(b.editor.fontCss),c.writeln("</style>"));for(var g=d.getCustomFonts(),e=0;e<g.length;e++){var f=g[e].name,l=g[e].url;Graph.isCssFontUrl(l)?c.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(l)+'" charset="UTF-8" type="text/css">'):(c.writeln('<style type="text/css">'),c.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(f)+'";\nsrc: url("'+mxUtils.htmlEntities(l)+'");\n}'),c.writeln("</style>"))}};
+if("undefined"!==typeof MathJax){var M=c.renderPage;c.renderPage=function(d,c,g,e,f,l){var m=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var k=M.apply(this,arguments);mxClient.NO_FO=m;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:k.className="geDisableMathJax";return k}}p=null;v=e.enableFlowAnimation;e.enableFlowAnimation=!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(p=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),
+e.refresh());c.open(null,null,f,!0);e.enableFlowAnimation=v;null!=p&&(e.stylesheet=p,e.refresh())}else{x=d.background;if(null==x||""==x||x==mxConstants.NONE)x="#ffffff";c.backgroundColor=x;c.autoOrigin=C;c.appendGraph(d,t,p,v,f,!0);f=d.getCustomFonts();if(null!=c.wnd)for(p=0;p<f.length;p++)v=f[p].name,C=f[p].url,Graph.isCssFontUrl(C)?c.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(C)+'" charset="UTF-8" type="text/css">'):(c.wnd.document.writeln('<style type="text/css">'),
+c.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(v)+'";\nsrc: url("'+mxUtils.htmlEntities(C)+'");\n}'),c.wnd.document.writeln("</style>"))}l&&(d.useCssTransforms=l,d.currentTranslate=m,d.currentScale=k,d.view.translate=n,d.view.scale=q);return c}var g=parseInt(N.value)/100;isNaN(g)&&(g=1,N.value="100 %");var g=.75*g,f=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(f=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());var l=p.value,m=v.value,n=!q.checked,
+u=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,q.checked,l,m,y.checked,O.value,I.value,parseInt(z.value)/100,parseInt(N.value)/100,E.get());else{n&&(n=l==k&&m==k);if(!n&&null!=b.pages&&b.pages.length){var x=0,n=b.pages.length-1;q.checked||(x=parseInt(l)-1,n=parseInt(m)-1);for(var t=x;t<=n;t++){var C=b.pages[t],l=C==b.currentPage?e:null;if(null==l){var l=b.createTemporaryGraph(e.stylesheet),m=!0,x=!1,L=null,D=null;null==C.viewState&&null==C.root&&b.updatePageRoot(C);null!=C.viewState&&
+(m=C.viewState.pageVisible,x=C.viewState.mathEnabled,L=C.viewState.background,D=C.viewState.backgroundImage,l.extFonts=C.viewState.extFonts);l.background=L;l.backgroundImage=null!=D?new mxImage(D.src,D.width,D.height):null;l.pageVisible=m;l.mathEnabled=x;var M=l.getGlobalVariable;l.getGlobalVariable=function(d){return"page"==d?C.getName():"pagenumber"==d?t+1:"pagecount"==d?null!=b.pages?b.pages.length:1:M.apply(this,arguments)};document.body.appendChild(l.container);b.updatePageRoot(C);l.model.setRoot(C.root)}u=
+c(l,u,t!=n);l!=e&&l.container.parentNode.removeChild(l.container)}}else u=c(e);null==u?b.handleError({message:mxResources.get("errorUpdatingPreview")}):(u.mathEnabled&&(n=u.wnd.document,d&&(u.wnd.IMMEDIATE_PRINT=!0),n.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),u.closeDocument(),!u.mathEnabled&&d&&PrintDialog.printPreview(u));null!=f&&(e.stylesheet=f,e.refresh())}}var e=b.editor.graph,f=document.createElement("div"),l=document.createElement("h3");
+l.style.width="100%";l.style.textAlign="center";l.style.marginTop="0px";mxUtils.write(l,d||mxResources.get("print"));f.appendChild(l);var m=1,k=1,n=document.createElement("div");n.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var q=document.createElement("input");q.style.cssText="margin-right:8px;margin-bottom:8px;";q.setAttribute("value","all");q.setAttribute("type","radio");q.setAttribute("name","pages-printdialog");n.appendChild(q);l=document.createElement("span");
+mxUtils.write(l,mxResources.get("printAllPages"));n.appendChild(l);mxUtils.br(n);var u=q.cloneNode(!0);q.setAttribute("checked","checked");u.setAttribute("value","range");n.appendChild(u);l=document.createElement("span");mxUtils.write(l,mxResources.get("pages")+":");n.appendChild(l);var p=document.createElement("input");p.style.cssText="margin:0 8px 0 8px;";p.setAttribute("value","1");p.setAttribute("type","number");p.setAttribute("min","1");p.style.width="50px";n.appendChild(p);l=document.createElement("span");
+mxUtils.write(l,mxResources.get("to"));n.appendChild(l);var v=p.cloneNode(!0);n.appendChild(v);mxEvent.addListener(p,"focus",function(){u.checked=!0});mxEvent.addListener(v,"focus",function(){u.checked=!0});mxEvent.addListener(p,"change",c);mxEvent.addListener(v,"change",c);if(null!=b.pages&&(m=b.pages.length,null!=b.currentPage))for(l=0;l<b.pages.length;l++)if(b.currentPage==b.pages[l]){k=l+1;p.value=k;v.value=k;break}p.setAttribute("max",m);v.setAttribute("max",m);b.isPagesEnabled()?1<m&&(f.appendChild(n),
+u.checked=!0):u.checked=!0;var x=document.createElement("div");x.style.marginBottom="10px";var t=document.createElement("input");t.style.marginRight="8px";t.setAttribute("value","adjust");t.setAttribute("type","radio");t.setAttribute("name","printZoom");x.appendChild(t);l=document.createElement("span");mxUtils.write(l,mxResources.get("adjustTo"));x.appendChild(l);var z=document.createElement("input");z.style.cssText="margin:0 8px 0 8px;";z.setAttribute("value","100 %");z.style.width="50px";x.appendChild(z);
+mxEvent.addListener(z,"focus",function(){t.checked=!0});f.appendChild(x);var n=n.cloneNode(!1),y=t.cloneNode(!0);y.setAttribute("value","fit");t.setAttribute("checked","checked");l=document.createElement("div");l.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";l.appendChild(y);n.appendChild(l);x=document.createElement("table");x.style.display="inline-block";var C=document.createElement("tbody"),L=document.createElement("tr"),D=L.cloneNode(!0),M=document.createElement("td"),
+F=M.cloneNode(!0),G=M.cloneNode(!0),K=M.cloneNode(!0),H=M.cloneNode(!0),J=M.cloneNode(!0);M.style.textAlign="right";K.style.textAlign="right";mxUtils.write(M,mxResources.get("fitTo"));var O=document.createElement("input");O.style.cssText="margin:0 8px 0 8px;";O.setAttribute("value","1");O.setAttribute("min","1");O.setAttribute("type","number");O.style.width="40px";F.appendChild(O);l=document.createElement("span");mxUtils.write(l,mxResources.get("fitToSheetsAcross"));G.appendChild(l);mxUtils.write(K,
+mxResources.get("fitToBy"));var I=O.cloneNode(!0);H.appendChild(I);mxEvent.addListener(O,"focus",function(){y.checked=!0});mxEvent.addListener(I,"focus",function(){y.checked=!0});l=document.createElement("span");mxUtils.write(l,mxResources.get("fitToSheetsDown"));J.appendChild(l);L.appendChild(M);L.appendChild(F);L.appendChild(G);D.appendChild(K);D.appendChild(H);D.appendChild(J);C.appendChild(L);C.appendChild(D);x.appendChild(C);n.appendChild(x);f.appendChild(n);n=document.createElement("div");l=
+document.createElement("div");l.style.fontWeight="bold";l.style.marginBottom="12px";mxUtils.write(l,mxResources.get("paperSize"));n.appendChild(l);l=document.createElement("div");l.style.marginBottom="12px";var E=PageSetupDialog.addPageFormatPanel(l,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);n.appendChild(l);l=document.createElement("span");mxUtils.write(l,mxResources.get("pageScale"));n.appendChild(l);var N=document.createElement("input");N.style.cssText="margin:0 8px 0 8px;";
+N.setAttribute("value","100 %");N.style.width="60px";n.appendChild(N);f.appendChild(n);l=document.createElement("div");l.style.cssText="text-align:right;margin:48px 0 0 0;";n=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});n.className="geBtn";b.editor.cancelFirst&&l.appendChild(n);b.isOffline()||(x=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),x.className="geBtn",l.appendChild(x));PrintDialog.previewEnabled&&(x=
+mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();g(!1)}),x.className="geBtn",l.appendChild(x));x=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();g(!0)});x.className="geBtn gePrimaryBtn";l.appendChild(x);b.editor.cancelFirst||l.appendChild(n);f.appendChild(l);this.container=f};var L=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=
+this.page.viewState){this.ignoreColor||(this.page.viewState.background=this.color);if(!this.ignoreImage){var b=this.image;null!=b&&null!=b.src&&Graph.isPageLink(b.src)&&(b={originalSrc:b.src});this.page.viewState.backgroundImage=b}null!=this.format&&(this.page.viewState.pageFormat=this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)}}else L.apply(this,arguments),null!=this.mathEnabled&&
this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible)};Editor.prototype.useCanvasForExport=!1;try{var O=document.createElement("canvas"),U=new Image;U.onload=function(){try{O.getContext("2d").drawImage(U,0,0);var b=O.toDataURL("image/png");Editor.prototype.useCanvasForExport=
null!=b&&6<b.length}catch(I){}};U.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(G){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(b,e,k){k.ui=b.ui;return e};b.afterDecode=function(b,e,k){k.previousColor=k.color;k.previousImage=k.image;k.previousFormat=k.format;null!=k.foldingEnabled&&(k.foldingEnabled=!k.foldingEnabled);null!=k.mathEnabled&&(k.mathEnabled=!k.mathEnabled);null!=k.shadowVisible&&(k.shadowVisible=!k.shadowVisible);return k};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(b,e,k){k.ui=b.ui;return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="15.9.6";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
+(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(b,e,k){k.ui=b.ui;return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.0.0";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.nativeFileSupport=
-!mxClient.IS_OP&&!EditorUi.isElectronApp&&"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,
-noteMargin:10,messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(b,c,e,g,m,k,u){k=null!=k?k:0<=b.indexOf("NetworkError")||0<=b.indexOf("SecurityError")||0<=b.indexOf("NS_ERROR_FAILURE")||0<=b.indexOf("out of memory")?"CONFIG":
-"SEVERE";if(EditorUi.enableLogging&&"1"!=urlParams.dev)try{if(b!=EditorUi.lastErrorMessage&&(null==b||null==c||-1==b.indexOf("Script error")&&-1==b.indexOf("extension"))&&null!=b&&0>b.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=b;var d=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";m=null!=m?m:Error(b);(new Image).src=d+"/log?severity="+k+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(b)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+
-encodeURIComponent(e)+(null!=g?":colno:"+encodeURIComponent(g):"")+(null!=m&&null!=m.stack?"&stack="+encodeURIComponent(m.stack):"")}}catch(y){}try{u||null==window.console||console.error(k,b,c,e,g,m)}catch(y){}};EditorUi.logEvent=function(b){if("1"==urlParams.dev)EditorUi.debug("logEvent",b);else if(EditorUi.enableLogging)try{var d=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=d+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=b?"&data="+encodeURIComponent(JSON.stringify(b)):
-"")}catch(l){}};EditorUi.sendReport=function(b,c){if("1"==urlParams.dev)EditorUi.debug("sendReport",b);else if(EditorUi.enableLogging)try{c=null!=c?c:5E4,b.length>c&&(b=b.substring(0,c)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(b))}catch(l){}};EditorUi.debug=function(){try{if(null!=window.console&&"1"==urlParams.test){for(var b=[(new Date).toISOString()],c=0;c<arguments.length;c++)null!=
-arguments[c]&&b.push(arguments[c]);console.log.apply(console,b)}}catch(l){}};EditorUi.removeChildNodes=function(b){for(;null!=b.firstChild;)b.removeChild(b.firstChild)};EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>";EditorUi.prototype.mode=null;EditorUi.prototype.timeout=Editor.prototype.timeout;EditorUi.prototype.sidebarFooterHeight=38;EditorUi.prototype.defaultCustomShapeStyle=
-"shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;";EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.maxTextWidth=520;EditorUi.prototype.resampleThreshold=1E5;
-EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.maxTextBytes=5E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport=!1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=!0;EditorUi.prototype.embedExportBorder=8;EditorUi.prototype.embedExportBackground=null;(function(){EditorUi.prototype.useCanvasForExport=!1;
-EditorUi.prototype.jpgSupported=!1;try{var b=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!b.getContext||!b.getContext("2d"))}catch(m){}try{var c=document.createElement("canvas"),e=new Image;e.onload=function(){try{c.getContext("2d").drawImage(e,0,0);var b=c.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=b&&6<b.length}catch(n){}};e.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(m){}try{c=
-document.createElement("canvas");c.width=c.height=1;var g=c.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==g.match("image/jpeg")}catch(m){}})();EditorUi.prototype.openLink=function(b,c,e){return this.editor.graph.openLink(b,c,e)};EditorUi.prototype.showSplash=function(b){};EditorUi.prototype.getLocalData=function(b,c){c(localStorage.getItem(b))};EditorUi.prototype.setLocalData=function(b,c,e){localStorage.setItem(b,c);null!=e&&e()};EditorUi.prototype.removeLocalData=function(b,c){localStorage.removeItem(b);
-c()};EditorUi.prototype.setMathEnabled=function(b){this.editor.graph.mathEnabled=b;this.editor.updateGraphComponents();this.editor.graph.refresh();this.editor.graph.defaultMathEnabled=b;this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(b){return this.editor.graph.mathEnabled};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(b){return this.isOfflineApp()||!navigator.onLine||!b&&("1"==urlParams.stealth||
-"1"==urlParams.lockdown)};EditorUi.prototype.createSpinner=function(b,c,e){var d=null==b||null==c;e=null!=e?e:24;var f=new Spinner({lines:12,length:e,width:Math.round(e/3),radius:Math.round(e/2),rotate:0,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),g=f.spin;f.spin=function(e,l){var m=!1;this.active||(g.call(this,e),this.active=!0,null!=l&&(d&&(c=Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,b=document.body.clientWidth/
-2-2),m=document.createElement("div"),m.style.position="absolute",m.style.whiteSpace="nowrap",m.style.background="#4B4243",m.style.color="white",m.style.fontFamily=Editor.defaultHtmlFont,m.style.fontSize="9pt",m.style.padding="6px",m.style.paddingLeft="10px",m.style.paddingRight="10px",m.style.zIndex=2E9,m.style.left=Math.max(0,b)+"px",m.style.top=Math.max(0,c+70)+"px",mxUtils.setPrefixedStyle(m.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(m.style,"transform","translate(-50%,-50%)"),Editor.isDarkMode()||
-mxUtils.setPrefixedStyle(m.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=l.substring(l.length-3,l.length)&&"!"!=l.charAt(l.length-1)&&(l+="..."),m.innerHTML=l,e.appendChild(m),f.status=m),this.pause=mxUtils.bind(this,function(){var b=function(){};this.active&&(b=mxUtils.bind(this,function(){this.spin(e,l)}));this.stop();return b}),m=!0);return m};var l=f.stop;f.stop=function(){l.call(this);this.active=!1;null!=f.status&&null!=f.status.parentNode&&f.status.parentNode.removeChild(f.status);f.status=
-null};f.pause=function(){return function(){}};return f};EditorUi.prototype.isCompatibleString=function(b){try{var d=mxUtils.parseXml(b),c=this.editor.extractGraphModel(d.documentElement,!0);return null!=c&&0==c.getElementsByTagName("parsererror").length}catch(q){}return!1};EditorUi.prototype.isVisioData=function(b){return 8<b.length&&(208==b.charCodeAt(0)&&207==b.charCodeAt(1)&&17==b.charCodeAt(2)&&224==b.charCodeAt(3)&&161==b.charCodeAt(4)&&177==b.charCodeAt(5)&&26==b.charCodeAt(6)&&225==b.charCodeAt(7)||
-80==b.charCodeAt(0)&&75==b.charCodeAt(1)&&3==b.charCodeAt(2)&&4==b.charCodeAt(3)||80==b.charCodeAt(0)&&75==b.charCodeAt(1)&&3==b.charCodeAt(2)&&6==b.charCodeAt(3))};EditorUi.prototype.isRemoteVisioData=function(b){return 8<b.length&&(208==b.charCodeAt(0)&&207==b.charCodeAt(1)&&17==b.charCodeAt(2)&&224==b.charCodeAt(3)&&161==b.charCodeAt(4)&&177==b.charCodeAt(5)&&26==b.charCodeAt(6)&&225==b.charCodeAt(7)||60==b.charCodeAt(0)&&63==b.charCodeAt(1)&&120==b.charCodeAt(2)&&109==b.charCodeAt(3)&&108==b.charCodeAt(3))};
-var b=EditorUi.prototype.createKeyHandler;EditorUi.prototype.createKeyHandler=function(d){var c=b.apply(this,arguments);if(!this.editor.chromeless||this.editor.editable){var e=c.getFunction,g=this.editor.graph,m=this;c.getFunction=function(b){if(g.isSelectionEmpty()&&null!=m.pages&&0<m.pages.length){var d=m.getSelectedPageIndex();if(mxEvent.isShiftDown(b)){if(37==b.keyCode)return function(){0<d&&m.movePage(d,d-1)};if(38==b.keyCode)return function(){0<d&&m.movePage(d,0)};if(39==b.keyCode)return function(){d<
-m.pages.length-1&&m.movePage(d,d+1)};if(40==b.keyCode)return function(){d<m.pages.length-1&&m.movePage(d,m.pages.length-1)}}else if(mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b)){if(37==b.keyCode)return function(){0<d&&m.selectNextPage(!1)};if(38==b.keyCode)return function(){0<d&&m.selectPage(m.pages[0])};if(39==b.keyCode)return function(){d<m.pages.length-1&&m.selectNextPage(!0)};if(40==b.keyCode)return function(){d<m.pages.length-1&&m.selectPage(m.pages[m.pages.length-1])}}}return e.apply(this,
-arguments)}}return c};var c=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(b){var d=c.apply(this,arguments);if(null==d)try{var e=b.indexOf("&lt;mxfile ");if(0<=e){var g=b.lastIndexOf("&lt;/mxfile&gt;");g>e&&(d=b.substring(e,g+15).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var m=mxUtils.parseXml(b),k=this.editor.extractGraphModel(m.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),
-d=null!=k?mxUtils.getXml(k):""}catch(u){}return d};EditorUi.prototype.validateFileData=function(b){if(null!=b&&0<b.length){var d=b.indexOf('<meta charset="utf-8">');0<=d&&(b=b.slice(0,d)+'<meta charset="utf-8"/>'+b.slice(d+23-1,b.length));b=Graph.zapGremlins(b)}return b};EditorUi.prototype.replaceFileData=function(b){b=this.validateFileData(b);b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:null;var d=null!=b?this.editor.extractGraphModel(b,!0):null;null!=d&&(b=d);if(null!=b){d=this.editor.graph;
-d.model.beginUpdate();try{var c=null!=this.pages?this.pages.slice():null,e=b.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<e.length||1==e.length&&e[0].hasAttribute("name")){this.fileNode=b;this.pages=null!=this.pages?this.pages:[];for(var g=e.length-1;0<=g;g--){var k=this.updatePageRoot(new DiagramPage(e[g]));null==k.getName()&&k.setName(mxResources.get("pageWithNumber",[g+1]));d.model.execute(new ChangePage(this,k,0==g?k:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=
-b.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),d.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(b),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=c)for(g=0;g<c.length;g++)d.model.execute(new ChangePage(this,c[g],null))}finally{d.model.endUpdate()}}};EditorUi.prototype.createFileData=
-function(b,c,e,g,m,k,u,p,t,x,F){c=null!=c?c:this.editor.graph;m=null!=m?m:!1;t=null!=t?t:!0;var d,f=null;null==e||e.getMode()==App.MODE_DEVICE||e.getMode()==App.MODE_BROWSER?d="_blank":f=d=g;if(null==b)return"";var l=b;if("mxfile"!=l.nodeName.toLowerCase()){if(F){var n=b.ownerDocument.createElement("diagram");n.setAttribute("id",Editor.guid());n.appendChild(b)}else{n=Graph.zapGremlins(mxUtils.getXml(b));l=Graph.compress(n);if(Graph.decompress(l)!=n)return n;n=b.ownerDocument.createElement("diagram");
-n.setAttribute("id",Editor.guid());mxUtils.setTextContent(n,l)}l=b.ownerDocument.createElement("mxfile");l.appendChild(n)}x?(l=l.cloneNode(!0),l.removeAttribute("modified"),l.removeAttribute("host"),l.removeAttribute("agent"),l.removeAttribute("etag"),l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type")):(l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("pages"),l.removeAttribute("type"),
-mxClient.IS_CHROMEAPP?l.setAttribute("host","Chrome"):EditorUi.isElectronApp?l.setAttribute("host","Electron"):l.setAttribute("host",window.location.hostname),l.setAttribute("modified",(new Date).toISOString()),l.setAttribute("agent",navigator.appVersion),l.setAttribute("version",EditorUi.VERSION),l.setAttribute("etag",Editor.guid()),b=null!=e?e.getMode():this.mode,null!=b&&l.setAttribute("type",b),1<l.getElementsByTagName("diagram").length&&null!=this.pages&&l.setAttribute("pages",this.pages.length));
-F=F?mxUtils.getPrettyXml(l):mxUtils.getXml(l);if(!k&&!m&&(u||null!=e&&/(\.html)$/i.test(e.getTitle())))F=this.getHtml2(mxUtils.getXml(l),c,null!=e?e.getTitle():null,d,f);else if(k||!m&&null!=e&&/(\.svg)$/i.test(e.getTitle()))null==e||e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER||(g=null),F=this.getEmbeddedSvg(F,c,g,null,p,t,f);return F};EditorUi.prototype.getXmlFileData=function(b,c,e,g){b=null!=b?b:!0;c=null!=c?c:!1;e=null!=e?e:!Editor.compressXml;var d=this.editor.getGraphXml(b,g);
-if(b&&null!=this.fileNode&&null!=this.currentPage)if(b=function(b){var c=b.getElementsByTagName("mxGraphModel"),c=0<c.length?c[0]:null;null==c&&e?(c=mxUtils.trim(mxUtils.getTextContent(b)),b=b.cloneNode(!1),0<c.length&&(c=Graph.decompress(c),null!=c&&0<c.length&&b.appendChild(mxUtils.parseXml(c).documentElement))):null==c||e?b=b.cloneNode(!0):(b=b.cloneNode(!1),mxUtils.setTextContent(b,Graph.compressNode(c)));d.appendChild(b)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,
-Graph.compressNode(d)),d=this.fileNode.cloneNode(!1),c)b(this.currentPage.node);else for(c=0;c<this.pages.length;c++){var f=this.pages[c],l=f.node;if(f!=this.currentPage)if(f.needsUpdate){var k=new mxCodec(mxUtils.createXmlDocument()),k=k.encode(new mxGraphModel(f.root));this.editor.graph.saveViewState(f.viewState,k,null,g);EditorUi.removeChildNodes(l);mxUtils.setTextContent(l,Graph.compressNode(k));delete f.needsUpdate}else g&&(this.updatePageRoot(f),null!=f.viewState.backgroundImage&&(null!=f.viewState.backgroundImage.originalSrc?
-f.viewState.backgroundImage=this.createImageForPageLink(f.viewState.backgroundImage.originalSrc,f):Graph.isPageLink(f.viewState.backgroundImage.src)&&(f.viewState.backgroundImage=this.createImageForPageLink(f.viewState.backgroundImage.src,f))),null!=f.viewState.backgroundImage&&null!=f.viewState.backgroundImage.originalSrc&&(k=new mxCodec(mxUtils.createXmlDocument()),k=k.encode(new mxGraphModel(f.root)),this.editor.graph.saveViewState(f.viewState,k,null,g),l=l.cloneNode(!1),mxUtils.setTextContent(l,
-Graph.compressNode(k))));b(l)}return d};EditorUi.prototype.anonymizeString=function(b,c){for(var d=[],f=0;f<b.length;f++){var e=b.charAt(f);0<=EditorUi.ignoredAnonymizedChars.indexOf(e)?d.push(e):isNaN(parseInt(e))?e.toLowerCase()!=e?d.push(String.fromCharCode(65+Math.round(25*Math.random()))):e.toUpperCase()!=e?d.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(e)?d.push(" "):d.push("?"):d.push(c?"0":Math.round(9*Math.random()))}return d.join("")};EditorUi.prototype.anonymizePatch=
-function(b){if(null!=b[EditorUi.DIFF_INSERT])for(var d=0;d<b[EditorUi.DIFF_INSERT].length;d++)try{var c=mxUtils.parseXml(b[EditorUi.DIFF_INSERT][d].data).documentElement.cloneNode(!1);null!=c.getAttribute("name")&&c.setAttribute("name",this.anonymizeString(c.getAttribute("name")));b[EditorUi.DIFF_INSERT][d].data=mxUtils.getXml(c)}catch(n){b[EditorUi.DIFF_INSERT][d].data=n.message}if(null!=b[EditorUi.DIFF_UPDATE]){for(var e in b[EditorUi.DIFF_UPDATE]){var g=b[EditorUi.DIFF_UPDATE][e];null!=g.name&&
-(g.name=this.anonymizeString(g.name));null!=g.cells&&(d=mxUtils.bind(this,function(b){var d=g.cells[b];if(null!=d){for(var c in d)null!=d[c].value&&(d[c].value="["+d[c].value.length+"]"),null!=d[c].xmlValue&&(d[c].xmlValue="["+d[c].xmlValue.length+"]"),null!=d[c].style&&(d[c].style="["+d[c].style.length+"]"),0==Object.keys(d[c]).length&&delete d[c];0==Object.keys(d).length&&delete g.cells[b]}}),d(EditorUi.DIFF_INSERT),d(EditorUi.DIFF_UPDATE),0==Object.keys(g.cells).length&&delete g.cells);0==Object.keys(g).length&&
-delete b[EditorUi.DIFF_UPDATE][e]}0==Object.keys(b[EditorUi.DIFF_UPDATE]).length&&delete b[EditorUi.DIFF_UPDATE]}return b};EditorUi.prototype.anonymizeAttributes=function(b,c){if(null!=b.attributes)for(var d=0;d<b.attributes.length;d++)"as"!=b.attributes[d].name&&b.setAttribute(b.attributes[d].name,this.anonymizeString(b.attributes[d].value,c));if(null!=b.childNodes)for(d=0;d<b.childNodes.length;d++)this.anonymizeAttributes(b.childNodes[d],c)};EditorUi.prototype.anonymizeNode=function(b,c){for(var d=
-b.getElementsByTagName("mxCell"),f=0;f<d.length;f++)null!=d[f].getAttribute("value")&&d[f].setAttribute("value","["+d[f].getAttribute("value").length+"]"),null!=d[f].getAttribute("xmlValue")&&d[f].setAttribute("xmlValue","["+d[f].getAttribute("xmlValue").length+"]"),null!=d[f].getAttribute("style")&&d[f].setAttribute("style","["+d[f].getAttribute("style").length+"]"),null!=d[f].parentNode&&"root"!=d[f].parentNode.nodeName&&null!=d[f].parentNode.parentNode&&(d[f].setAttribute("id",d[f].parentNode.getAttribute("id")),
-d[f].parentNode.parentNode.replaceChild(d[f],d[f].parentNode));return b};EditorUi.prototype.synchronizeCurrentFile=function(b){var d=this.getCurrentFile();null!=d&&(d.savingFile?this.handleError({message:mxResources.get("busy")}):!b&&d.invalidChecksum?d.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(d.clearAutosave(),this.editor.setStatus(""),b?d.reloadFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,
-function(b){d.handleFileError(b,!0)})):d.synchronizeFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(b){d.handleFileError(b,!0)}))))};EditorUi.prototype.getFileData=function(b,c,e,g,k,n,u,p,t,x,F){k=null!=k?k:!0;n=null!=n?n:!1;var d=this.editor.graph;if(c||!b&&null!=t&&/(\.svg)$/i.test(t.getTitle())){var f=null!=d.themes&&"darkTheme"==d.defaultThemeName;x=!1;if(f||null!=this.pages&&this.currentPage!=this.pages[0]){var l=d.getGlobalVariable,
-d=this.createTemporaryGraph(f?d.getDefaultStylesheet():d.getStylesheet());d.setBackgroundImage=this.editor.graph.setBackgroundImage;var m=this.pages[0];this.currentPage==m?d.setBackgroundImage(this.editor.graph.backgroundImage):null!=m.viewState&&null!=m.viewState&&d.setBackgroundImage(m.viewState.backgroundImage);d.getGlobalVariable=function(b){return"page"==b?m.getName():"pagenumber"==b?1:l.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(m.root)}}u=null!=u?u:this.getXmlFileData(k,
-n,x,F);t=null!=t?t:this.getCurrentFile();b=this.createFileData(u,d,t,window.location.href,b,c,e,g,k,p,x);d!=this.editor.graph&&d.container.parentNode.removeChild(d.container);return b};EditorUi.prototype.getHtml=function(b,c,e,g,k,n){n=null!=n?n:!0;var d=null,f=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=c){var d=n?c.getGraphBounds():c.getBoundingBox(c.getSelectionCells()),l=c.view.scale;n=Math.floor(d.x/l-c.view.translate.x);l=Math.floor(d.y/l-c.view.translate.y);d=c.background;null==k&&
-(c=this.getBasenames().join(";"),0<c.length&&(f=EditorUi.drawHost+"/embed.js?s="+c));b.setAttribute("x0",n);b.setAttribute("y0",l)}null!=b&&(b.setAttribute("pan","1"),b.setAttribute("zoom","1"),b.setAttribute("resize","0"),b.setAttribute("fit","0"),b.setAttribute("border","20"),b.setAttribute("links","1"),null!=g&&b.setAttribute("edit",g));null!=k&&(k=k.replace(/&/g,"&amp;"));b=null!=b?Graph.zapGremlins(mxUtils.getXml(b)):"";g=Graph.compress(b);Graph.decompress(g)!=b&&(g=encodeURIComponent(b));return(null==
-k?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=k?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==k?null!=e?"<title>"+mxUtils.htmlEntities(e)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=k?'<meta http-equiv="refresh" content="0;URL=\''+k+"'\"/>\n":"")+"</head>\n<body"+(null==k&&null!=d&&d!=mxConstants.NONE?' style="background-color:'+d+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+
-g+"</div>\n</div>\n"+(null==k?'<script type="text/javascript" src="'+f+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+k+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(b,c,e,g,k){c=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=k&&(k=k.replace(/&/g,"&amp;"));b={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,
-resize:!0,xml:Graph.zapGremlins(b),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(b.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==k?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=k?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==k?null!=e?"<title>"+mxUtils.htmlEntities(e)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=k?'<meta http-equiv="refresh" content="0;URL=\''+
-k+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(b))+'"></div>\n'+(null==k?'<script type="text/javascript" src="'+c+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+k+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=
-function(b){b=this.validateFileData(b);this.pages=this.fileNode=this.currentPage=null;b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:null;var d=Editor.extractParserError(b,mxResources.get("invalidOrMissingFile"));if(d)throw Error(mxResources.get("notADiagramFile")+" ("+d+")");d=null!=b?this.editor.extractGraphModel(b,!0):null;null!=d&&(b=d);if(null!=b&&"mxfile"==b.nodeName&&(d=b.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){var c=
-null;this.fileNode=b;this.pages=[];for(var e=0;e<d.length;e++)null==d[e].getAttribute("id")&&d[e].setAttribute("id",e),b=new DiagramPage(d[e]),null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[e+1])),this.pages.push(b),null!=urlParams["page-id"]&&b.getId()==urlParams["page-id"]&&(c=b);this.currentPage=null!=c?c:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];b=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=b&&(this.fileNode=b.ownerDocument.createElement("mxfile"),
-this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(b);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var g=urlParams["layer-ids"].split(" ");b={};for(e=0;e<g.length;e++)b[g[e]]=!0;for(var k=this.editor.graph.getModel(),u=k.getChildren(k.root),e=0;e<u.length;e++){var p=u[e];k.setVisible(p,b[p.id]||
-!1)}}catch(y){}};EditorUi.prototype.getBaseFilename=function(b){var d=this.getCurrentFile(),d=null!=d&&null!=d.getTitle()?d.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(d)||/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||/(\.png)$/i.test(d))d=d.substring(0,d.lastIndexOf("."));/(\.drawio)$/i.test(d)&&(d=d.substring(0,d.lastIndexOf(".")));!b&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(d=d+"-"+
-this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(b,c,e,g,k,n,u,p,t,x,F,H){try{g=null!=g?g:this.editor.graph.isSelectionEmpty();var d=this.getBaseFilename(!k),f=d+("xml"==b||"pdf"==b&&F?".drawio":"")+"."+b;if("xml"==b){var l=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,g,k,null,null,null,c);this.saveData(f,b,l,"text/xml")}else if("html"==b)l=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(f,b,l,"text/html");else if("svg"!=b&&"xmlsvg"!=
-b||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==b?f=d+".png":"jpeg"==b&&(f=d+".jpg"),this.saveRequest(f,b,mxUtils.bind(this,function(d,c){try{var f=this.editor.graph.pageVisible;null!=n&&(this.editor.graph.pageVisible=n);var e=this.createDownloadRequest(d,b,g,c,u,k,p,t,x,F,H);this.editor.graph.pageVisible=f;return e}catch(U){this.handleError(U)}}));else{var m=null,q=mxUtils.bind(this,function(b){b.length<=MAX_REQUEST_SIZE?this.saveData(f,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},
-mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(m)}))});if("svg"==b){var v=this.editor.graph.background;if(u||v==mxConstants.NONE)v=null;var y=this.editor.graph.getSvg(v,null,null,null,null,g);e&&this.editor.graph.addSvgShadow(y);this.editor.convertImages(y,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();q(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(b))})))}else f=d+".svg",m=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();
-q(b)}),g)}}catch(M){this.handleError(M)}};EditorUi.prototype.createDownloadRequest=function(b,c,e,g,k,n,u,p,t,x,F){var d=this.editor.graph,f=d.getGraphBounds();e=this.getFileData(!0,null,null,null,e,0==n?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var l="",m="";if(f.width*f.height>MAX_AREA||e.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};x=x?"1":"0";"pdf"==c&&(null!=F?m="&from="+F.from+"&to="+F.to:0==n&&(m="&allPages=1"));if("xmlpng"==c&&(x="1",c="png",null!=this.pages&&
-null!=this.currentPage))for(n=0;n<this.pages.length;n++)if(this.pages[n]==this.currentPage){l="&from="+n;break}n=d.background;"png"!=c&&"pdf"!=c||!k?k||null!=n&&n!=mxConstants.NONE||(n="#ffffff"):n=mxConstants.NONE;k={globalVars:d.getExportVariables()};t&&(k.grid={size:d.gridSize,steps:d.view.gridSteps,color:d.view.gridColor});Graph.translateDiagram&&(k.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+l+m+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+g+"&embedXml="+
-x+"&xml="+encodeURIComponent(e)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(k))+(null!=u?"&scale="+u:"")+(null!=p?"&border="+p:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,e){var d=window.location.hash,f=mxUtils.bind(this,function(f){var e=null!=b.data?b.data:"";null!=f&&0<f.length&&(0<e.length&&(e+="\n"),e+=f);f=new LocalFile(this,"csv"!=b.format&&0<e.length?e:this.emptyDiagramXml,null!=
-urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);f.getHash=function(){return d};this.fileLoaded(f);"csv"==b.format&&this.importCsv(e,mxUtils.bind(this,function(b){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=b.update){var g=null!=b.interval?parseInt(b.interval):6E4,l=null,k=mxUtils.bind(this,function(){var d=this.currentPage;mxUtils.post(b.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,
-function(b){d===this.currentPage&&(200<=b.getStatus()&&300>=b.getStatus()?(this.updateDiagram(b.getText()),m()):this.handleError({message:mxResources.get("error")+" "+b.getStatus()}))}),mxUtils.bind(this,function(b){this.handleError(b)}))}),m=mxUtils.bind(this,function(){window.clearTimeout(l);l=window.setTimeout(k,g)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){m();k()}));m();k()}null!=c&&c()});null!=b.url&&0<b.url.length?this.editor.loadUrl(b.url,mxUtils.bind(this,function(b){f(b)}),
-mxUtils.bind(this,function(b){null!=e&&e(b)})):f("")};EditorUi.prototype.updateDiagram=function(b){function d(b){var d=new mxCellOverlay(b.image||g.warningImage,b.tooltip,b.align,b.valign,b.offset);d.addListener(mxEvent.CLICK,function(d,c){e.alert(b.tooltip)});return d}var c=null,e=this;if(null!=b&&0<b.length&&(c=mxUtils.parseXml(b),b=null!=c?c.documentElement:null,null!=b&&"updates"==b.nodeName)){var g=this.editor.graph,k=g.getModel();k.beginUpdate();var u=null;try{for(b=b.firstChild;null!=b;){if("update"==
-b.nodeName){var p=k.getCell(b.getAttribute("id"));if(null!=p){try{var t=b.getAttribute("value");if(null!=t){var x=mxUtils.parseXml(t).documentElement;if(null!=x)if("1"==x.getAttribute("replace-value"))k.setValue(p,x);else for(var F=x.attributes,H=0;H<F.length;H++)g.setAttributeForCell(p,F[H].nodeName,0<F[H].nodeValue.length?F[H].nodeValue:null)}}catch(M){null!=window.console&&console.log("Error in value for "+p.id+": "+M)}try{var z=b.getAttribute("style");null!=z&&g.model.setStyle(p,z)}catch(M){null!=
-window.console&&console.log("Error in style for "+p.id+": "+M)}try{var D=b.getAttribute("icon");if(null!=D){var L=0<D.length?JSON.parse(D):null;null!=L&&L.append||g.removeCellOverlays(p);null!=L&&g.addCellOverlay(p,d(L))}}catch(M){null!=window.console&&console.log("Error in icon for "+p.id+": "+M)}try{var E=b.getAttribute("geometry");if(null!=E){var E=JSON.parse(E),J=g.getCellGeometry(p);if(null!=J){J=J.clone();for(key in E){var C=parseFloat(E[key]);"dx"==key?J.x+=C:"dy"==key?J.y+=C:"dw"==key?J.width+=
-C:"dh"==key?J.height+=C:J[key]=parseFloat(E[key])}g.model.setGeometry(p,J)}}}catch(M){null!=window.console&&console.log("Error in icon for "+p.id+": "+M)}}}else if("model"==b.nodeName){for(var K=b.firstChild;null!=K&&K.nodeType!=mxConstants.NODETYPE_ELEMENT;)K=K.nextSibling;null!=K&&(new mxCodec(b.firstChild)).decode(K,k)}else if("view"==b.nodeName){if(b.hasAttribute("scale")&&(g.view.scale=parseFloat(b.getAttribute("scale"))),b.hasAttribute("dx")||b.hasAttribute("dy"))g.view.translate=new mxPoint(parseFloat(b.getAttribute("dx")||
-0),parseFloat(b.getAttribute("dy")||0))}else"fit"==b.nodeName&&(u=b.hasAttribute("max-scale")?parseFloat(b.getAttribute("max-scale")):1);b=b.nextSibling}}finally{k.endUpdate()}null!=u&&this.chromelessResize&&this.chromelessResize(!0,u)}return c};EditorUi.prototype.getCopyFilename=function(b,c){var d=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename,f="",e=d.lastIndexOf(".");0<=e&&(f=d.substring(e),d=d.substring(0,e));if(c)var g=new Date,e=g.getFullYear(),k=g.getMonth()+1,p=g.getDate(),
-t=g.getHours(),x=g.getMinutes(),g=g.getSeconds(),d=d+(" "+(e+"-"+k+"-"+p+"-"+t+"-"+x+"-"+g));return d=mxResources.get("copyOf",[d])+f};EditorUi.prototype.fileLoaded=function(b,c){var d=this.getCurrentFile();this.fileEditable=this.fileLoadedError=null;this.setCurrentFile(null);var e=!1;this.hideDialog();null!=d&&(EditorUi.debug("File.closed",[d]),d.removeListener(this.descriptorChangedListener),d.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var f=mxUtils.bind(this,function(){this.setGraphEnabled(!1);
-this.setCurrentFile(null);null!=d&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!c&&null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();c||this.showSplash()});if(null!=b)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility=
-"");this.openingFile=!0;this.setCurrentFile(b);b.addListener("descriptorChanged",this.descriptorChangedListener);b.addListener("contentChanged",this.descriptorChangedListener);b.open();delete this.openingFile;this.setGraphEnabled(!0);this.setMode(b.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();b.isEditable()?b.isModified()?(b.addUnsavedStatus(),null!=b.backupPatch&&b.patch([b.backupPatch])):this.editor.setStatus(""):
-this.editor.setStatus('<span class="geStatusAlert">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));e=!0;if(!this.isOffline()&&null!=b.getMode()){var g=
-"1"==urlParams.sketch?"sketch":uiTheme;if(null==g)g="default";else if("sketch"==g||"min"==g)g+=Editor.isDarkMode()?"-dark":"-light";EditorUi.logEvent({category:b.getMode().toUpperCase()+"-OPEN-FILE-"+b.getHash(),action:"size_"+b.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+g})}EditorUi.debug("File.opened",[b]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));if(this.editor.editable&&this.mode==b.getMode()&&b.getMode()!=App.MODE_DEVICE&&null!=
-b.getMode())try{this.addRecent({id:b.getHash(),title:b.getTitle(),mode:b.getMode()})}catch(u){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(u){}}catch(u){this.fileLoadedError=u;if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+(null!=b?b.getHash():"none"),action:"message_"+u.message,label:"stack_"+u.stack})}catch(v){}g=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?
-window.location.search=this.getSearch(["url"]):null!=d?this.fileLoaded(d):f()});c?g():this.handleError(u,mxResources.get("errorLoadingFile"),g,!0,null,null,!0)}else f();return e};EditorUi.prototype.getHashValueForPages=function(b,c){var d=0,e=new mxGraphModel,f=new mxCodec;null!=c&&(c.byteCount=0,c.attrCount=0,c.eltCount=0,c.nodeCount=0);for(var g=0;g<b.length;g++){this.updatePageRoot(b[g]);var k=b[g].node.cloneNode(!1);k.removeAttribute("name");e.root=b[g].root;var p=f.encode(e);this.editor.graph.saveViewState(b[g].viewState,
-p,!0);p.removeAttribute("pageWidth");p.removeAttribute("pageHeight");k.appendChild(p);null!=c&&(c.eltCount+=k.getElementsByTagName("*").length,c.nodeCount+=k.getElementsByTagName("mxCell").length);d=(d<<5)-d+this.hashValue(k,function(b,d,c,e){return!e||"mxGeometry"!=b.nodeName&&"mxPoint"!=b.nodeName||"x"!=d&&"y"!=d&&"width"!=d&&"height"!=d?e&&"mxCell"==b.nodeName&&"previous"==d?null:c:Math.round(c)},c)<<0}return d};EditorUi.prototype.hashValue=function(b,c,e){var d=0;if(null!=b&&"object"===typeof b&&
-"number"===typeof b.nodeType&&"string"===typeof b.nodeName&&"function"===typeof b.getAttribute){null!=b.nodeName&&(d^=this.hashValue(b.nodeName,c,e));if(null!=b.attributes){null!=e&&(e.attrCount+=b.attributes.length);for(var f=0;f<b.attributes.length;f++){var g=b.attributes[f].name,l=null!=c?c(b,g,b.attributes[f].value,!0):b.attributes[f].value;null!=l&&(d^=this.hashValue(g,c,e)+this.hashValue(l,c,e))}}if(null!=b.childNodes)for(f=0;f<b.childNodes.length;f++)d=(d<<5)-d+this.hashValue(b.childNodes[f],
-c,e)<<0}else if(null!=b&&"function"!==typeof b){b=String(b);c=0;null!=e&&(e.byteCount+=b.length);for(f=0;f<b.length;f++)c=(c<<5)-c+b.charCodeAt(f)<<0;d^=c}return d};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(b,c,e,g,k,n,u){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?
-StorageFile.getFileContent(this,".scratchpad",mxUtils.bind(this,function(b){null==b&&(b=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,b,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(b){var d=mxUtils.createXmlDocument(),c=d.createElement("mxlibrary");mxUtils.setTextContent(c,JSON.stringify(b));d.appendChild(c);return mxUtils.getXml(d)};EditorUi.prototype.closeLibrary=function(b){null!=b&&(this.removeLibrarySidebar(b.getHash()),
-b.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(b.getHash()),".scratchpad"==b.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(b){var d=this.sidebar.palettes[b];if(null!=d){for(var c=0;c<d.length;c++)d[c].parentNode.removeChild(d[c]);delete this.sidebar.palettes[b]}};EditorUi.prototype.repositionLibrary=function(b){var d=this.sidebar.container;if(null==b){var c=this.sidebar.palettes["L.scratchpad"];null==c&&(c=this.sidebar.palettes.search);null!=c&&(b=c[c.length-
-1].nextSibling)}b=null!=b?b:d.firstChild.nextSibling.nextSibling;var c=d.lastChild,e=c.previousSibling;d.insertBefore(c,b);d.insertBefore(e,c)};EditorUi.prototype.loadLibrary=function(b,c){var d=mxUtils.parseXml(b.getData());if("mxlibrary"==d.documentElement.nodeName){var e=JSON.parse(mxUtils.getTextContent(d.documentElement));this.libraryLoaded(b,e,d.documentElement.getAttribute("title"),c)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(b){return""};
-EditorUi.prototype.libraryLoaded=function(b,c,e,g){if(null!=this.sidebar){b.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(b.getHash());".scratchpad"==b.title&&(this.scratchpad=b);var d=this.sidebar.palettes[b.getHash()],d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(b.getHash());var f=null,l=mxUtils.bind(this,function(d,c){0==d.length&&b.isEditable()?(null==f&&(f=document.createElement("div"),f.className="geDropTarget",mxUtils.write(f,mxResources.get("dragElementsHere"))),
-c.appendChild(f)):this.addLibraryEntries(d,c)});null!=this.sidebar&&null!=c&&this.sidebar.addEntries(c);null==e&&(e=b.getTitle(),null!=e&&/(\.xml)$/i.test(e)&&(e=e.substring(0,e.lastIndexOf("."))));var k=this.sidebar.addPalette(b.getHash(),e,null!=g?g:!0,mxUtils.bind(this,function(b){l(c,b)}));this.repositionLibrary(d);var q=k.parentNode.previousSibling;g=q.getAttribute("title");null!=g&&0<g.length&&".scratchpad"!=b.title&&q.setAttribute("title",this.getLibraryStorageHint(b)+"\n"+g);var p=document.createElement("div");
-p.style.position="absolute";p.style.right="0px";p.style.top="0px";p.style.padding="8px";p.style.backgroundColor="inherit";q.style.position="relative";var t=document.createElement("img");t.setAttribute("src",Editor.crossImage);t.setAttribute("title",mxResources.get("close"));t.setAttribute("valign","absmiddle");t.setAttribute("border","0");t.style.position="relative";t.style.top="2px";t.style.width="14px";t.style.cursor="pointer";t.style.margin="0 3px";Editor.isDarkMode()&&(t.style.filter="invert(100%)");
-var H=null;if(".scratchpad"!=b.title||this.closableScratchpad)p.appendChild(t),mxEvent.addListener(t,"click",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d)){var c=mxUtils.bind(this,function(){this.closeLibrary(b)});null!=H?this.confirm(mxResources.get("allChangesLost"),null,c,mxResources.get("cancel"),mxResources.get("discardChanges")):c();mxEvent.consume(d)}}));if(b.isEditable()){var z=this.editor.graph,D=null,L=mxUtils.bind(this,function(d){this.showLibraryDialog(b.getTitle(),k,c,b,b.getMode());
-mxEvent.consume(d)}),E=mxUtils.bind(this,function(d){b.setModified(!0);b.isAutosave()?(null!=D&&null!=D.parentNode&&D.parentNode.removeChild(D),D=t.cloneNode(!1),D.setAttribute("src",Editor.spinImage),D.setAttribute("title",mxResources.get("saving")),D.style.cursor="default",D.style.marginRight="2px",D.style.marginTop="-2px",p.insertBefore(D,p.firstChild),q.style.paddingRight=18*p.childNodes.length+"px",this.saveLibrary(b.getTitle(),c,b,b.getMode(),!0,!0,function(){null!=D&&null!=D.parentNode&&(D.parentNode.removeChild(D),
-q.style.paddingRight=18*p.childNodes.length+"px")})):null==H&&(H=t.cloneNode(!1),H.setAttribute("src",Editor.saveImage),H.setAttribute("title",mxResources.get("save")),p.insertBefore(H,p.firstChild),mxEvent.addListener(H,"click",mxUtils.bind(this,function(d){this.saveLibrary(b.getTitle(),c,b,b.getMode(),b.constructor==LocalLibrary,!0,function(){null==H||b.isModified()||(q.style.paddingRight=18*p.childNodes.length+"px",H.parentNode.removeChild(H),H=null)});mxEvent.consume(d)})),q.style.paddingRight=
-18*p.childNodes.length+"px")}),J=mxUtils.bind(this,function(b,d,e,g){b=z.cloneCells(mxUtils.sortCells(z.model.getTopmostCells(b)));for(var l=0;l<b.length;l++){var m=z.getCellGeometry(b[l]);null!=m&&m.translate(-d.x,-d.y)}k.appendChild(this.sidebar.createVertexTemplateFromCells(b,d.width,d.height,g||"",!0,!1,!1));b={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(b))),w:d.width,h:d.height};null!=g&&(b.title=g);c.push(b);E(e);null!=f&&null!=f.parentNode&&0<c.length&&(f.parentNode.removeChild(f),
-f=null)}),C=mxUtils.bind(this,function(b){if(z.isSelectionEmpty())z.getRubberband().isActive()?(z.getRubberband().execute(b),z.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d=z.getSelectionCells(),c=z.view.getBounds(d),e=z.view.scale;c.x/=e;c.y/=e;c.width/=e;c.height/=e;c.x-=z.view.translate.x;c.y-=z.view.translate.y;J(d,c)}mxEvent.consume(b)});mxEvent.addGestureListeners(k,function(){},mxUtils.bind(this,function(b){z.isMouseDown&&
-null!=z.panningManager&&null!=z.graphHandler.first&&(z.graphHandler.suspend(),null!=z.graphHandler.hint&&(z.graphHandler.hint.style.visibility="hidden"),k.style.backgroundColor="#f1f3f4",k.style.cursor="copy",z.panningManager.stop(),z.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){z.isMouseDown&&null!=z.panningManager&&null!=z.graphHandler&&(k.style.backgroundColor="",k.style.cursor="default",this.sidebar.showTooltips=!0,z.panningManager.stop(),z.graphHandler.reset(),z.isMouseDown=
-!1,z.autoScroll=!0,C(b),mxEvent.consume(b))}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(b){z.isMouseDown&&null!=z.graphHandler.first&&(z.graphHandler.resume(),null!=z.graphHandler.hint&&(z.graphHandler.hint.style.visibility="visible"),k.style.backgroundColor="",k.style.cursor="",z.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(k,"dragover",mxUtils.bind(this,function(b){k.style.backgroundColor="#f1f3f4";b.dataTransfer.dropEffect="copy";k.style.cursor="copy";this.sidebar.hideTooltip();
-b.stopPropagation();b.preventDefault()})),mxEvent.addListener(k,"drop",mxUtils.bind(this,function(b){k.style.cursor="";k.style.backgroundColor="";0<b.dataTransfer.files.length&&this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(d,e,g,m,n,q,p,u,x){if(null!=d&&"image/"==e.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,n,q),d)],d[0].vertex=!0,
-J(d,new mxRectangle(0,0,n,q),b,mxEvent.isAltDown(b)?null:p.substring(0,p.lastIndexOf(".")).replace(/_/g," ")),null!=f&&null!=f.parentNode&&0<c.length&&(f.parentNode.removeChild(f),f=null);else{var t=!1,v=mxUtils.bind(this,function(d,e){if(null!=d&&"application/pdf"==e){var g=Editor.extractGraphModelFromPdf(d);null!=g&&0<g.length&&(d=g)}if(null!=d)if(g=mxUtils.parseXml(d),"mxlibrary"==g.documentElement.nodeName)try{var m=JSON.parse(mxUtils.getTextContent(g.documentElement));l(m,k);c=c.concat(m);E(b);
-this.spinner.stop();t=!0}catch(ba){}else if("mxfile"==g.documentElement.nodeName)try{for(var n=g.documentElement.getElementsByTagName("diagram"),m=0;m<n.length;m++){var q=this.stringToCells(Editor.getDiagramNodeXml(n[m])),p=this.editor.graph.getBoundingBoxFromGeometry(q);J(q,new mxRectangle(0,0,p.width,p.height),b)}t=!0}catch(ba){null!=window.console&&console.log("error in drop handler:",ba)}t||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&
-0<c.length&&(f.parentNode.removeChild(f),f=null)});null!=x&&null!=p&&(/(\.v(dx|sdx?))($|\?)/i.test(p)||/(\.vs(x|sx?))($|\?)/i.test(p))?this.importVisio(x,function(b){v(b,"text/xml")},null,p):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,p)&&null!=x?this.parseFile(x,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?v(b.responseText,"text/xml"):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},
-mxResources.get("errorLoadingFile")))})):v(d,e)}}));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(k,"dragleave",function(b){k.style.cursor="";k.style.backgroundColor="";b.stopPropagation();b.preventDefault()}));t=t.cloneNode(!1);t.setAttribute("src",Editor.editImage);t.setAttribute("title",mxResources.get("edit"));p.insertBefore(t,p.firstChild);mxEvent.addListener(t,"click",L);mxEvent.addListener(k,"dblclick",function(b){mxEvent.getSource(b)==k&&L(b)});g=t.cloneNode(!1);g.setAttribute("src",
-Editor.plusImage);g.setAttribute("title",mxResources.get("add"));p.insertBefore(g,p.firstChild);mxEvent.addListener(g,"click",C);this.isOffline()||".scratchpad"!=b.title||null==EditorUi.scratchpadHelpLink||(g=document.createElement("span"),g.setAttribute("title",mxResources.get("help")),g.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(g,"?"),mxEvent.addGestureListeners(g,mxUtils.bind(this,function(b){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(b)})),
-p.insertBefore(g,p.firstChild))}q.appendChild(p);q.style.paddingRight=18*p.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(b,c){for(var d=0;d<b.length;d++){var e=b[d],f=e.data;if(null!=f){var f=this.convertDataUri(f),g="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==e.aspect&&(g+="aspect=fixed;");c.appendChild(this.sidebar.createVertexTemplate(g+"image="+f,e.w,e.h,"",e.title||"",!1,!1,!0))}else null!=e.xml&&(f=this.stringToCells(Graph.decompress(e.xml)),
-0<f.length&&c.appendChild(this.sidebar.createVertexTemplateFromCells(f,e.w,e.h,e.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=function(b){return null!=b?b[mxLanguage]||b.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground="linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",
-Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38):Editor.isDarkMode()&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor=Editor.darkColor,Format.inactiveTabBackgroundColor="black",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.shapeBackgroundColor=Editor.darkColor,Graph.prototype.shapeForegroundColor=Editor.lightColor,Graph.prototype.defaultPageBackgroundColor=
-Editor.darkColor,Graph.prototype.defaultPageBorderColor="#505759",BaseFormatPanel.prototype.buttonBackgroundColor=Editor.darkColor,mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxConstants.DROP_TARGET_COLOR="#00ff00");Editor.sketchFontFamily="Architects Daughter";Editor.sketchFontSource="https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter";"1"==urlParams.sketch&&(Graph.prototype.defaultVertexStyle={hachureGap:"4"},Graph.prototype.defaultEdgeStyle=
-{edgeStyle:"none",rounded:"0",curved:"1",jettySize:"auto",orthogonalLoop:"1",endArrow:"open",startSize:"14",endSize:"14",sourcePerimeterSpacing:"8",targetPerimeterSpacing:"8"},Editor.configurationKey=".sketch-configuration",Editor.settingsKey=".sketch-config",Graph.prototype.defaultGridEnabled="1"==urlParams.grid,Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=
-function(b,c,e,g,k){b=new ImageDialog(this,b,c,e,g,k);this.showDialog(b.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);b.init()};EditorUi.prototype.showBackgroundImageDialog=function(b,c){b=null!=b?b:mxUtils.bind(this,function(b,d){if(!d){var c=new ChangePageSetup(this,null,b);c.ignoreColor=!0;this.editor.graph.model.execute(c)}});var d=new BackgroundImageDialog(this,b,c);this.showDialog(d.container,360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(b,c,e,
-g,k){b=new LibraryDialog(this,b,c,e,g,k);this.showDialog(b.container,640,440,!0,!1,mxUtils.bind(this,function(b){b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));b.init()};var e=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(b){var d=e.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(b){this.editor.graph.isSelectionEmpty()&&d.refresh()}));return d};EditorUi.prototype.createSidebarFooterContainer=function(){var b=
-this.createDiv("geSidebarContainer geSidebarFooter");b.style.position="absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var e=c.getElementsByTagName("span")[0];e.style.fontSize="18px";e.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,
-function(b){b.preventDefault()}));mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};EditorUi.prototype.handleError=function(b,c,e,g,k,n,p){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},f=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{p?null!=window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&
-null!=b.name)?b.name:b.message,b.filename,b.lineNumber,b.columnNumber,b,"INFO")}catch(D){}if(null!=f||null!=c){p=mxUtils.htmlEntities(mxResources.get("unknownError"));var l=mxResources.get("ok"),m=null;c=null!=c?c:mxResources.get("error");if(null!=f){null!=f.retry&&(l=mxResources.get("cancel"),m=function(){d();f.retry()});if(404==f.code||404==f.status||403==f.code){p=403==f.code?null!=f.message?mxUtils.htmlEntities(f.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=k?k:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+
-(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var q=null!=k?null:null!=n?n:window.location.hash;if(null!=q&&("#G"==q.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==q.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==f.code||404==f.status)){q="#U"==q.substring(0,
-2)?q.substring(45,q.lastIndexOf("%26ex")):q.substring(2);this.showError(c,p,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+q);this.handleError(b,c,e,g,k)}),m,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){f.innerHTML="";for(var b=0;b<d.length;b++){var c=document.createElement("option");mxUtils.write(c,d[b].displayName);c.value=b;f.appendChild(c);c=document.createElement("option");c.innerHTML="&nbsp;&nbsp;&nbsp;";
-mxUtils.write(c,"<"+d[b].email+">");c.setAttribute("disabled","disabled");f.appendChild(c)}c=document.createElement("option");mxUtils.write(c,mxResources.get("addAccount"));c.value=d.length;f.appendChild(c)}var d=this.drive.getUsersList(),c=document.createElement("div"),e=document.createElement("span");e.style.marginTop="6px";mxUtils.write(e,mxResources.get("changeUser")+": ");c.appendChild(e);var f=document.createElement("select");f.style.width="200px";b();mxEvent.addListener(f,"change",mxUtils.bind(this,
-function(){var c=f.value,e=d.length!=c;e&&this.drive.setUser(d[c]);this.drive.authorize(e,mxUtils.bind(this,function(){e||(d=this.drive.getUsersList(),b())}),mxUtils.bind(this,function(b){this.handleError(b)}),!0)}));c.appendChild(f);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(c.container,300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=e&&e()}),480,150);return}}null!=f.message?
-p=""==f.message&&null!=f.name?mxUtils.htmlEntities(f.name):mxUtils.htmlEntities(f.message):null!=f.response&&null!=f.response.error?p=mxUtils.htmlEntities(f.response.error):"undefined"!==typeof window.App&&(f.code==App.ERROR_TIMEOUT?p=mxUtils.htmlEntities(mxResources.get("timeout")):f.code==App.ERROR_BUSY?p=mxUtils.htmlEntities(mxResources.get("busy")):"string"===typeof f&&0<f.length&&(p=mxUtils.htmlEntities(f)))}var u=n=null;null!=f&&null!=f.helpLink?(n=mxResources.get("help"),u=mxUtils.bind(this,
-function(){return this.editor.graph.openLink(f.helpLink)})):null!=f&&null!=f.ownerEmail&&(n=mxResources.get("contactOwner"),p+=mxUtils.htmlEntities(" ("+n+": "+f.ownerEmail+")"),u=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(f.ownerEmail))}));this.showError(c,p,l,e,m,null,null,n,u,null,null,null,g?e:null)}else null!=e&&e()};EditorUi.prototype.alert=function(b,c,e){b=new ErrorDialog(this,null,b,mxResources.get("ok"),c);this.showDialog(b.container,e||340,100,!0,!1);
-b.init()};EditorUi.prototype.confirm=function(b,c,e,g,k,n){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},f=Math.min(200,28*Math.ceil(b.length/50));b=new ConfirmDialog(this,b,function(){d();null!=c&&c()},function(){d();null!=e&&e()},g,k,null,null,null,null,f);this.showDialog(b.container,340,46+f,!0,n);b.init()};EditorUi.prototype.showBanner=function(b,c,e,g){var d=!1;if(!(this.bannerShowing||this["hideBanner"+b]||isLocalStorage&&null!=mxSettings.settings&&null!=
-mxSettings.settings["close"+b])){var f=document.createElement("div");f.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(f.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(f.style,"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(f.style,"transition","all 1s ease");f.className="geBtn gePrimaryBtn";
-d=document.createElement("img");d.setAttribute("src",IMAGE_PATH+"/logo.png");d.setAttribute("border","0");d.setAttribute("align","absmiddle");d.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";f.appendChild(d);d=document.createElement("img");d.setAttribute("src",Dialog.prototype.closeImage);d.setAttribute("title",mxResources.get(g?"doNotShowAgain":"close"));d.setAttribute("border","0");d.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";
-f.appendChild(d);mxUtils.write(f,c);document.body.appendChild(f);this.bannerShowing=!0;c=document.createElement("div");c.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var l=document.createElement("input");l.setAttribute("type","checkbox");l.setAttribute("id","geDoNotShowAgainCheckbox");l.style.marginRight="6px";if(!g){c.appendChild(l);var k=document.createElement("label");k.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(k,mxResources.get("doNotShowAgain"));c.appendChild(k);
-f.style.paddingBottom="30px";f.appendChild(c)}var q=mxUtils.bind(this,function(){null!=f.parentNode&&(f.parentNode.removeChild(f),this.bannerShowing=!1,l.checked||g)&&(this["hideBanner"+b]=!0,isLocalStorage&&null!=mxSettings.settings&&(mxSettings.settings["close"+b]=Date.now(),mxSettings.save()))});mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){mxEvent.consume(b);q()}));var p=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(f.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,
-function(){q()}),1E3)});mxEvent.addListener(f,"click",mxUtils.bind(this,function(b){var d=mxEvent.getSource(b);d!=l&&d!=k?(null!=e&&e(),q(),mxEvent.consume(b)):p()}));window.setTimeout(mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(f.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(p,3E4);d=!0}return d};EditorUi.prototype.setCurrentFile=function(b){null!=b&&(b.opened=new Date);this.currentFile=b};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=
-function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(b,c,e,g){b=b.toDataURL("image/"+e);if(null!=b&&6<b.length)null!=c&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(c))),0<g&&(b=Editor.writeGraphModelToPng(b,"pHYs","dpi",g));else throw{message:mxResources.get("unknownError")};return b};EditorUi.prototype.saveCanvas=function(b,c,e,g,k){var d="jpeg"==e?"jpg":e;g=this.getBaseFilename(g)+(null!=c?".drawio":"")+"."+d;b=this.createImageDataUri(b,
-c,e,k);this.saveData(g,d,b.substring(b.lastIndexOf(",")+1),"image/"+e,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(b,c){var d=new TextareaDialog(this,b,c,null,null,mxResources.get("close"));d.textarea.style.width="600px";
-d.textarea.style.height="380px";this.showDialog(d.container,620,460,!0,!0,null,null,null,null,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(b,c,e,g,k,n){"text/xml"!=e||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.html)$/i.test(c)||(c=c+"."+(null!=n?n:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)b=g?this.base64ToBlob(b,e):new Blob([b],{type:e}),navigator.msSaveOrOpenBlob(b,c);else if(mxClient.IS_IE)e=window.open("about:blank",
-"_blank"),null==e?mxUtils.popup(b,!0):(e.document.write(b),e.document.close(),e.document.execCommand("SaveAs",!0,c),e.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==e||"image/"!=e.substring(0,6)?this.showTextDialog(c+":",b):this.openInNewWindow(b,e,g);else{var d=document.createElement("a");n=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof d.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var f=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
-n=65==(f?parseInt(f[2],10):!1)?!1:n}if(n||this.isOffline()){d.href=URL.createObjectURL(g?this.base64ToBlob(b,e):new Blob([b],{type:e}));n?d.download=c:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},2E4),d.click(),d.parentNode.removeChild(d)}catch(y){}}else this.createEchoRequest(b,c,e,g,k).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,e,g,k,n){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,
-b+(null!=e?"&mime="+e:"")+(null!=k?"&format="+k:"")+(null!=n?"&base64="+n:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(g?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(b,c){c=c||"";for(var d=atob(b),e=d.length,f=Math.ceil(e/1024),g=Array(f),k=0;k<f;++k){for(var p=1024*k,t=Math.min(p+1024,e),x=Array(t-p),F=0;p<t;++F,++p)x[F]=d[p].charCodeAt(0);g[k]=new Uint8Array(x)}return new Blob(g,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,e,g,k,n,p,t){n=null!=n?n:!1;p=null!=p?
-p:"vsdx"!=k&&(!mxClient.IS_IOS||!navigator.standalone);k=this.getServiceCount(n);isLocalStorage&&k++;var d=4>=k?2:6<k?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(d,c){try{if("_blank"==c)if(null!=e&&"image/"==e.substring(0,6))this.openInNewWindow(b,e,g);else if(null!=e&&"text/html"==e.substring(0,9)){var f=new EmbedDialog(this,b);this.showDialog(f.container,450,240,!0,!0);f.init()}else{var l=window.open("about:blank");null==l?mxUtils.popup(b,!0):(l.document.write("<pre>"+mxUtils.htmlEntities(b,
-!1)+"</pre>"),l.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(b,d,e,g,null,t):null!=d&&0<d.length&&this.pickFolder(c,mxUtils.bind(this,function(f){try{this.exportFile(b,d,e,g,c,f)}catch(L){this.handleError(L)}}))}catch(D){this.handleError(D)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,n,p,null,1<k,d,b,e,g);n=this.isServices(k)?k>d?390:270:160;this.showDialog(c.container,420,n,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=
+!mxClient.IS_OP&&!EditorUi.isElectronApp&&"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,
+messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(b,c,e,f,m,k,u){k=null!=k?k:0<=b.indexOf("NetworkError")||0<=b.indexOf("SecurityError")||0<=b.indexOf("NS_ERROR_FAILURE")||0<=b.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
+"1"!=urlParams.dev)try{if(b!=EditorUi.lastErrorMessage&&(null==b||null==c||-1==b.indexOf("Script error")&&-1==b.indexOf("extension"))&&null!=b&&0>b.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=b;var d=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";m=null!=m?m:Error(b);(new Image).src=d+"/log?severity="+k+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(b)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(e)+(null!=f?":colno:"+
+encodeURIComponent(f):"")+(null!=m&&null!=m.stack?"&stack="+encodeURIComponent(m.stack):"")}}catch(y){}try{u||null==window.console||console.error(k,b,c,e,f,m)}catch(y){}};EditorUi.logEvent=function(b){if("1"==urlParams.dev)EditorUi.debug("logEvent",b);else if(EditorUi.enableLogging)try{var d=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=d+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=b?"&data="+encodeURIComponent(JSON.stringify(b)):"")}catch(l){}};EditorUi.sendReport=
+function(b,c){if("1"==urlParams.dev)EditorUi.debug("sendReport",b);else if(EditorUi.enableLogging)try{c=null!=c?c:5E4,b.length>c&&(b=b.substring(0,c)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(b))}catch(l){}};EditorUi.debug=function(){try{if(null!=window.console&&"1"==urlParams.test){for(var b=[(new Date).toISOString()],c=0;c<arguments.length;c++)null!=arguments[c]&&b.push(arguments[c]);
+console.log.apply(console,b)}}catch(l){}};EditorUi.removeChildNodes=function(b){for(;null!=b.firstChild;)b.removeChild(b.firstChild)};EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>";EditorUi.prototype.mode=null;EditorUi.prototype.timeout=Editor.prototype.timeout;EditorUi.prototype.sidebarFooterHeight=38;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;";
+EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.maxTextWidth=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.maxTextBytes=5E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport=!1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=
+!0;EditorUi.prototype.embedExportBorder=8;EditorUi.prototype.embedExportBackground=null;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var b=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!b.getContext||!b.getContext("2d"))}catch(m){}try{var c=document.createElement("canvas"),e=new Image;e.onload=function(){try{c.getContext("2d").drawImage(e,0,0);var b=c.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=b&&6<b.length}catch(n){}};
+e.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(m){}try{c=document.createElement("canvas");c.width=c.height=1;var f=c.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==f.match("image/jpeg")}catch(m){}})();EditorUi.prototype.openLink=
+function(b,c,e){return this.editor.graph.openLink(b,c,e)};EditorUi.prototype.showSplash=function(b){};EditorUi.prototype.getLocalData=function(b,c){c(localStorage.getItem(b))};EditorUi.prototype.setLocalData=function(b,c,e){localStorage.setItem(b,c);null!=e&&e()};EditorUi.prototype.removeLocalData=function(b,c){localStorage.removeItem(b);c()};EditorUi.prototype.setMathEnabled=function(b){this.editor.graph.mathEnabled=b;this.editor.updateGraphComponents();this.editor.graph.refresh();this.editor.graph.defaultMathEnabled=
+b;this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(b){return this.editor.graph.mathEnabled};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(b){return this.isOfflineApp()||!navigator.onLine||!b&&("1"==urlParams.stealth||"1"==urlParams.lockdown)};EditorUi.prototype.createSpinner=function(b,c,e){var d=null==b||null==c;e=null!=e?e:24;var g=new Spinner({lines:12,length:e,width:Math.round(e/
+3),radius:Math.round(e/2),rotate:0,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),f=g.spin;g.spin=function(e,l){var m=!1;this.active||(f.call(this,e),this.active=!0,null!=l&&(d&&(c=Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,b=document.body.clientWidth/2-2),m=document.createElement("div"),m.style.position="absolute",m.style.whiteSpace="nowrap",m.style.background="#4B4243",m.style.color="white",m.style.fontFamily=
+Editor.defaultHtmlFont,m.style.fontSize="9pt",m.style.padding="6px",m.style.paddingLeft="10px",m.style.paddingRight="10px",m.style.zIndex=2E9,m.style.left=Math.max(0,b)+"px",m.style.top=Math.max(0,c+70)+"px",mxUtils.setPrefixedStyle(m.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(m.style,"transform","translate(-50%,-50%)"),Editor.isDarkMode()||mxUtils.setPrefixedStyle(m.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=l.substring(l.length-3,l.length)&&"!"!=l.charAt(l.length-1)&&(l+="..."),
+m.innerHTML=l,e.appendChild(m),g.status=m),this.pause=mxUtils.bind(this,function(){var b=function(){};this.active&&(b=mxUtils.bind(this,function(){this.spin(e,l)}));this.stop();return b}),m=!0);return m};var l=g.stop;g.stop=function(){l.call(this);this.active=!1;null!=g.status&&null!=g.status.parentNode&&g.status.parentNode.removeChild(g.status);g.status=null};g.pause=function(){return function(){}};return g};EditorUi.prototype.isCompatibleString=function(b){try{var d=mxUtils.parseXml(b),c=this.editor.extractGraphModel(d.documentElement,
+!0);return null!=c&&0==c.getElementsByTagName("parsererror").length}catch(q){}return!1};EditorUi.prototype.isVisioData=function(b){return 8<b.length&&(208==b.charCodeAt(0)&&207==b.charCodeAt(1)&&17==b.charCodeAt(2)&&224==b.charCodeAt(3)&&161==b.charCodeAt(4)&&177==b.charCodeAt(5)&&26==b.charCodeAt(6)&&225==b.charCodeAt(7)||80==b.charCodeAt(0)&&75==b.charCodeAt(1)&&3==b.charCodeAt(2)&&4==b.charCodeAt(3)||80==b.charCodeAt(0)&&75==b.charCodeAt(1)&&3==b.charCodeAt(2)&&6==b.charCodeAt(3))};EditorUi.prototype.isRemoteVisioData=
+function(b){return 8<b.length&&(208==b.charCodeAt(0)&&207==b.charCodeAt(1)&&17==b.charCodeAt(2)&&224==b.charCodeAt(3)&&161==b.charCodeAt(4)&&177==b.charCodeAt(5)&&26==b.charCodeAt(6)&&225==b.charCodeAt(7)||60==b.charCodeAt(0)&&63==b.charCodeAt(1)&&120==b.charCodeAt(2)&&109==b.charCodeAt(3)&&108==b.charCodeAt(3))};var b=EditorUi.prototype.createKeyHandler;EditorUi.prototype.createKeyHandler=function(d){var c=b.apply(this,arguments);if(!this.editor.chromeless||this.editor.editable){var e=c.getFunction,
+f=this.editor.graph,m=this;c.getFunction=function(b){if(f.isSelectionEmpty()&&null!=m.pages&&0<m.pages.length){var d=m.getSelectedPageIndex();if(mxEvent.isShiftDown(b)){if(37==b.keyCode)return function(){0<d&&m.movePage(d,d-1)};if(38==b.keyCode)return function(){0<d&&m.movePage(d,0)};if(39==b.keyCode)return function(){d<m.pages.length-1&&m.movePage(d,d+1)};if(40==b.keyCode)return function(){d<m.pages.length-1&&m.movePage(d,m.pages.length-1)}}else if(mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b)){if(37==
+b.keyCode)return function(){0<d&&m.selectNextPage(!1)};if(38==b.keyCode)return function(){0<d&&m.selectPage(m.pages[0])};if(39==b.keyCode)return function(){d<m.pages.length-1&&m.selectNextPage(!0)};if(40==b.keyCode)return function(){d<m.pages.length-1&&m.selectPage(m.pages[m.pages.length-1])}}}return e.apply(this,arguments)}}return c};var c=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(b){var d=c.apply(this,arguments);if(null==d)try{var e=b.indexOf("&lt;mxfile ");
+if(0<=e){var f=b.lastIndexOf("&lt;/mxfile&gt;");f>e&&(d=b.substring(e,f+15).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var m=mxUtils.parseXml(b),k=this.editor.extractGraphModel(m.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),d=null!=k?mxUtils.getXml(k):""}catch(u){}return d};EditorUi.prototype.validateFileData=function(b){if(null!=b&&0<b.length){var d=b.indexOf('<meta charset="utf-8">');0<=d&&(b=b.slice(0,d)+'<meta charset="utf-8"/>'+
+b.slice(d+23-1,b.length));b=Graph.zapGremlins(b)}return b};EditorUi.prototype.replaceFileData=function(b){b=this.validateFileData(b);b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:null;var d=null!=b?this.editor.extractGraphModel(b,!0):null;null!=d&&(b=d);if(null!=b){d=this.editor.graph;d.model.beginUpdate();try{var c=null!=this.pages?this.pages.slice():null,e=b.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<e.length||1==e.length&&e[0].hasAttribute("name")){this.fileNode=b;this.pages=
+null!=this.pages?this.pages:[];for(var f=e.length-1;0<=f;f--){var k=this.updatePageRoot(new DiagramPage(e[f]));null==k.getName()&&k.setName(mxResources.get("pageWithNumber",[f+1]));d.model.execute(new ChangePage(this,k,0==f?k:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=b.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),d.model.execute(new ChangePage(this,
+this.currentPage,this.currentPage,0))),this.editor.setGraphXml(b),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=c)for(f=0;f<c.length;f++)d.model.execute(new ChangePage(this,c[f],null))}finally{d.model.endUpdate()}}};EditorUi.prototype.createFileData=function(b,c,e,f,m,k,u,p,t,x,F){c=null!=c?c:this.editor.graph;m=null!=m?m:!1;t=null!=t?t:!0;var d,g=null;null==e||e.getMode()==App.MODE_DEVICE||e.getMode()==App.MODE_BROWSER?d="_blank":g=d=f;if(null==b)return"";
+var l=b;if("mxfile"!=l.nodeName.toLowerCase()){if(F){var n=b.ownerDocument.createElement("diagram");n.setAttribute("id",Editor.guid());n.appendChild(b)}else{n=Graph.zapGremlins(mxUtils.getXml(b));l=Graph.compress(n);if(Graph.decompress(l)!=n)return n;n=b.ownerDocument.createElement("diagram");n.setAttribute("id",Editor.guid());mxUtils.setTextContent(n,l)}l=b.ownerDocument.createElement("mxfile");l.appendChild(n)}x?(l=l.cloneNode(!0),l.removeAttribute("modified"),l.removeAttribute("host"),l.removeAttribute("agent"),
+l.removeAttribute("etag"),l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type")):(l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("pages"),l.removeAttribute("type"),mxClient.IS_CHROMEAPP?l.setAttribute("host","Chrome"):EditorUi.isElectronApp?l.setAttribute("host","Electron"):l.setAttribute("host",window.location.hostname),l.setAttribute("modified",(new Date).toISOString()),l.setAttribute("agent",
+navigator.appVersion),l.setAttribute("version",EditorUi.VERSION),l.setAttribute("etag",Editor.guid()),b=null!=e?e.getMode():this.mode,null!=b&&l.setAttribute("type",b),1<l.getElementsByTagName("diagram").length&&null!=this.pages&&l.setAttribute("pages",this.pages.length));F=F?mxUtils.getPrettyXml(l):mxUtils.getXml(l);if(!k&&!m&&(u||null!=e&&/(\.html)$/i.test(e.getTitle())))F=this.getHtml2(mxUtils.getXml(l),c,null!=e?e.getTitle():null,d,g);else if(k||!m&&null!=e&&/(\.svg)$/i.test(e.getTitle()))null==
+e||e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER||(f=null),F=this.getEmbeddedSvg(F,c,f,null,p,t,g);return F};EditorUi.prototype.getXmlFileData=function(b,c,e,f){b=null!=b?b:!0;c=null!=c?c:!1;e=null!=e?e:!Editor.compressXml;var d=this.editor.getGraphXml(b,f);if(b&&null!=this.fileNode&&null!=this.currentPage)if(b=function(b){var c=b.getElementsByTagName("mxGraphModel"),c=0<c.length?c[0]:null;null==c&&e?(c=mxUtils.trim(mxUtils.getTextContent(b)),b=b.cloneNode(!1),0<c.length&&(c=Graph.decompress(c),
+null!=c&&0<c.length&&b.appendChild(mxUtils.parseXml(c).documentElement))):null==c||e?b=b.cloneNode(!0):(b=b.cloneNode(!1),mxUtils.setTextContent(b,Graph.compressNode(c)));d.appendChild(b)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,Graph.compressNode(d)),d=this.fileNode.cloneNode(!1),c)b(this.currentPage.node);else for(c=0;c<this.pages.length;c++){var g=this.pages[c],l=g.node;if(g!=this.currentPage)if(g.needsUpdate){var k=new mxCodec(mxUtils.createXmlDocument()),
+k=k.encode(new mxGraphModel(g.root));this.editor.graph.saveViewState(g.viewState,k,null,f);EditorUi.removeChildNodes(l);mxUtils.setTextContent(l,Graph.compressNode(k));delete g.needsUpdate}else f&&(this.updatePageRoot(g),null!=g.viewState.backgroundImage&&(null!=g.viewState.backgroundImage.originalSrc?g.viewState.backgroundImage=this.createImageForPageLink(g.viewState.backgroundImage.originalSrc,g):Graph.isPageLink(g.viewState.backgroundImage.src)&&(g.viewState.backgroundImage=this.createImageForPageLink(g.viewState.backgroundImage.src,
+g))),null!=g.viewState.backgroundImage&&null!=g.viewState.backgroundImage.originalSrc&&(k=new mxCodec(mxUtils.createXmlDocument()),k=k.encode(new mxGraphModel(g.root)),this.editor.graph.saveViewState(g.viewState,k,null,f),l=l.cloneNode(!1),mxUtils.setTextContent(l,Graph.compressNode(k))));b(l)}return d};EditorUi.prototype.anonymizeString=function(b,c){for(var d=[],g=0;g<b.length;g++){var e=b.charAt(g);0<=EditorUi.ignoredAnonymizedChars.indexOf(e)?d.push(e):isNaN(parseInt(e))?e.toLowerCase()!=e?d.push(String.fromCharCode(65+
+Math.round(25*Math.random()))):e.toUpperCase()!=e?d.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(e)?d.push(" "):d.push("?"):d.push(c?"0":Math.round(9*Math.random()))}return d.join("")};EditorUi.prototype.anonymizePatch=function(b){if(null!=b[EditorUi.DIFF_INSERT])for(var d=0;d<b[EditorUi.DIFF_INSERT].length;d++)try{var c=mxUtils.parseXml(b[EditorUi.DIFF_INSERT][d].data).documentElement.cloneNode(!1);null!=c.getAttribute("name")&&c.setAttribute("name",this.anonymizeString(c.getAttribute("name")));
+b[EditorUi.DIFF_INSERT][d].data=mxUtils.getXml(c)}catch(n){b[EditorUi.DIFF_INSERT][d].data=n.message}if(null!=b[EditorUi.DIFF_UPDATE]){for(var e in b[EditorUi.DIFF_UPDATE]){var f=b[EditorUi.DIFF_UPDATE][e];null!=f.name&&(f.name=this.anonymizeString(f.name));null!=f.cells&&(d=mxUtils.bind(this,function(b){var d=f.cells[b];if(null!=d){for(var c in d)null!=d[c].value&&(d[c].value="["+d[c].value.length+"]"),null!=d[c].xmlValue&&(d[c].xmlValue="["+d[c].xmlValue.length+"]"),null!=d[c].style&&(d[c].style=
+"["+d[c].style.length+"]"),0==Object.keys(d[c]).length&&delete d[c];0==Object.keys(d).length&&delete f.cells[b]}}),d(EditorUi.DIFF_INSERT),d(EditorUi.DIFF_UPDATE),0==Object.keys(f.cells).length&&delete f.cells);0==Object.keys(f).length&&delete b[EditorUi.DIFF_UPDATE][e]}0==Object.keys(b[EditorUi.DIFF_UPDATE]).length&&delete b[EditorUi.DIFF_UPDATE]}return b};EditorUi.prototype.anonymizeAttributes=function(b,c){if(null!=b.attributes)for(var d=0;d<b.attributes.length;d++)"as"!=b.attributes[d].name&&
+b.setAttribute(b.attributes[d].name,this.anonymizeString(b.attributes[d].value,c));if(null!=b.childNodes)for(d=0;d<b.childNodes.length;d++)this.anonymizeAttributes(b.childNodes[d],c)};EditorUi.prototype.anonymizeNode=function(b,c){for(var d=b.getElementsByTagName("mxCell"),g=0;g<d.length;g++)null!=d[g].getAttribute("value")&&d[g].setAttribute("value","["+d[g].getAttribute("value").length+"]"),null!=d[g].getAttribute("xmlValue")&&d[g].setAttribute("xmlValue","["+d[g].getAttribute("xmlValue").length+
+"]"),null!=d[g].getAttribute("style")&&d[g].setAttribute("style","["+d[g].getAttribute("style").length+"]"),null!=d[g].parentNode&&"root"!=d[g].parentNode.nodeName&&null!=d[g].parentNode.parentNode&&(d[g].setAttribute("id",d[g].parentNode.getAttribute("id")),d[g].parentNode.parentNode.replaceChild(d[g],d[g].parentNode));return b};EditorUi.prototype.synchronizeCurrentFile=function(b){var d=this.getCurrentFile();null!=d&&(d.savingFile?this.handleError({message:mxResources.get("busy")}):!b&&d.invalidChecksum?
+d.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(d.clearAutosave(),this.editor.setStatus(""),b?d.reloadFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(b){d.handleFileError(b,!0)})):d.synchronizeFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(b){d.handleFileError(b,!0)}))))};EditorUi.prototype.getFileData=function(b,c,e,f,m,k,u,
+p,t,x,F){m=null!=m?m:!0;k=null!=k?k:!1;var d=this.editor.graph;if(c||!b&&null!=t&&/(\.svg)$/i.test(t.getTitle())){var g=null!=d.themes&&"darkTheme"==d.defaultThemeName;x=!1;if(g||null!=this.pages&&this.currentPage!=this.pages[0]){var l=d.getGlobalVariable,d=this.createTemporaryGraph(g?d.getDefaultStylesheet():d.getStylesheet());d.setBackgroundImage=this.editor.graph.setBackgroundImage;var n=this.pages[0];this.currentPage==n?d.setBackgroundImage(this.editor.graph.backgroundImage):null!=n.viewState&&
+null!=n.viewState&&d.setBackgroundImage(n.viewState.backgroundImage);d.getGlobalVariable=function(b){return"page"==b?n.getName():"pagenumber"==b?1:l.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(n.root)}}u=null!=u?u:this.getXmlFileData(m,k,x,F);t=null!=t?t:this.getCurrentFile();b=this.createFileData(u,d,t,window.location.href,b,c,e,f,m,p,x);d!=this.editor.graph&&d.container.parentNode.removeChild(d.container);return b};EditorUi.prototype.getHtml=function(b,c,e,f,k,
+n){n=null!=n?n:!0;var d=null,g=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=c){var d=n?c.getGraphBounds():c.getBoundingBox(c.getSelectionCells()),l=c.view.scale;n=Math.floor(d.x/l-c.view.translate.x);l=Math.floor(d.y/l-c.view.translate.y);d=c.background;null==k&&(c=this.getBasenames().join(";"),0<c.length&&(g=EditorUi.drawHost+"/embed.js?s="+c));b.setAttribute("x0",n);b.setAttribute("y0",l)}null!=b&&(b.setAttribute("pan","1"),b.setAttribute("zoom","1"),b.setAttribute("resize","0"),b.setAttribute("fit",
+"0"),b.setAttribute("border","20"),b.setAttribute("links","1"),null!=f&&b.setAttribute("edit",f));null!=k&&(k=k.replace(/&/g,"&amp;"));b=null!=b?Graph.zapGremlins(mxUtils.getXml(b)):"";f=Graph.compress(b);Graph.decompress(f)!=b&&(f=encodeURIComponent(b));return(null==k?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=k?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==k?null!=e?"<title>"+mxUtils.htmlEntities(e)+
+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=k?'<meta http-equiv="refresh" content="0;URL=\''+k+"'\"/>\n":"")+"</head>\n<body"+(null==k&&null!=d&&d!=mxConstants.NONE?' style="background-color:'+d+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+f+"</div>\n</div>\n"+(null==k?'<script type="text/javascript" src="'+g+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+
+k+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(b,c,e,f,k){c=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=k&&(k=k.replace(/&/g,"&amp;"));b={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:Graph.zapGremlins(b),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(b.page=mxUtils.indexOf(this.pages,this.currentPage));
+return(null==k?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=k?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==k?null!=e?"<title>"+mxUtils.htmlEntities(e)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=k?'<meta http-equiv="refresh" content="0;URL=\''+k+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+
+mxUtils.htmlEntities(JSON.stringify(b))+'"></div>\n'+(null==k?'<script type="text/javascript" src="'+c+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+k+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(b){b=this.validateFileData(b);this.pages=this.fileNode=this.currentPage=null;b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:
+null;var d=Editor.extractParserError(b,mxResources.get("invalidOrMissingFile"));if(d)throw Error(mxResources.get("notADiagramFile")+" ("+d+")");d=null!=b?this.editor.extractGraphModel(b,!0):null;null!=d&&(b=d);if(null!=b&&"mxfile"==b.nodeName&&(d=b.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){var c=null;this.fileNode=b;this.pages=[];for(var e=0;e<d.length;e++)null==d[e].getAttribute("id")&&d[e].setAttribute("id",e),b=new DiagramPage(d[e]),
+null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[e+1])),this.pages.push(b),null!=urlParams["page-id"]&&b.getId()==urlParams["page-id"]&&(c=b);this.currentPage=null!=c?c:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];b=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=b&&(this.fileNode=b.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",
+[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(b);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var f=urlParams["layer-ids"].split(" ");b={};for(e=0;e<f.length;e++)b[f[e]]=!0;for(var k=this.editor.graph.getModel(),p=k.getChildren(k.root),e=0;e<p.length;e++){var v=p[e];k.setVisible(v,b[v.id]||!1)}}catch(y){}};EditorUi.prototype.getBaseFilename=function(b){var d=this.getCurrentFile(),d=null!=d&&null!=d.getTitle()?d.getTitle():
+this.defaultFilename;if(/(\.xml)$/i.test(d)||/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||/(\.png)$/i.test(d))d=d.substring(0,d.lastIndexOf("."));/(\.drawio)$/i.test(d)&&(d=d.substring(0,d.lastIndexOf(".")));!b&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(d=d+"-"+this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(b,c,e,f,k,n,p,v,t,x,F,H){try{f=null!=f?f:this.editor.graph.isSelectionEmpty();
+var d=this.getBaseFilename(!k),g=d+("xml"==b||"pdf"==b&&F?".drawio":"")+"."+b;if("xml"==b){var l=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,f,k,null,null,null,c);this.saveData(g,b,l,"text/xml")}else if("html"==b)l=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(g,b,l,"text/html");else if("svg"!=b&&"xmlsvg"!=b||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==b?g=d+".png":"jpeg"==b&&(g=d+".jpg"),this.saveRequest(g,b,mxUtils.bind(this,function(d,
+c){try{var e=this.editor.graph.pageVisible;null!=n&&(this.editor.graph.pageVisible=n);var g=this.createDownloadRequest(d,b,f,c,p,k,v,t,x,F,H);this.editor.graph.pageVisible=e;return g}catch(U){this.handleError(U)}}));else{var m=null,q=mxUtils.bind(this,function(b){b.length<=MAX_REQUEST_SIZE?this.saveData(g,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(m)}))});if("svg"==b){var u=this.editor.graph.background;
+if(p||u==mxConstants.NONE)u=null;var y=this.editor.graph.getSvg(u,null,null,null,null,f);e&&this.editor.graph.addSvgShadow(y);this.editor.convertImages(y,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();q(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(b))})))}else g=d+".svg",m=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();q(b)}),f)}}catch(M){this.handleError(M)}};EditorUi.prototype.createDownloadRequest=function(b,c,e,f,k,n,p,v,t,
+x,F){var d=this.editor.graph,g=d.getGraphBounds();e=this.getFileData(!0,null,null,null,e,0==n?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var l="",m="";if(g.width*g.height>MAX_AREA||e.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};x=x?"1":"0";"pdf"==c&&(null!=F?m="&from="+F.from+"&to="+F.to:0==n&&(m="&allPages=1"));if("xmlpng"==c&&(x="1",c="png",null!=this.pages&&null!=this.currentPage))for(n=0;n<this.pages.length;n++)if(this.pages[n]==this.currentPage){l="&from="+n;break}n=
+d.background;"png"!=c&&"pdf"!=c||!k?k||null!=n&&n!=mxConstants.NONE||(n="#ffffff"):n=mxConstants.NONE;k={globalVars:d.getExportVariables()};t&&(k.grid={size:d.gridSize,steps:d.view.gridSteps,color:d.view.gridColor});Graph.translateDiagram&&(k.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+l+m+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+f+"&embedXml="+x+"&xml="+encodeURIComponent(e)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(k))+
+(null!=p?"&scale="+p:"")+(null!=v?"&border="+v:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,e){var d=window.location.hash,g=mxUtils.bind(this,function(e){var g=null!=b.data?b.data:"";null!=e&&0<e.length&&(0<g.length&&(g+="\n"),g+=e);e=new LocalFile(this,"csv"!=b.format&&0<g.length?g:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);e.getHash=function(){return d};this.fileLoaded(e);"csv"==
+b.format&&this.importCsv(g,mxUtils.bind(this,function(b){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=b.update){var f=null!=b.interval?parseInt(b.interval):6E4,l=null,k=mxUtils.bind(this,function(){var d=this.currentPage;mxUtils.post(b.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(b){d===this.currentPage&&(200<=b.getStatus()&&300>=b.getStatus()?(this.updateDiagram(b.getText()),m()):this.handleError({message:mxResources.get("error")+
+" "+b.getStatus()}))}),mxUtils.bind(this,function(b){this.handleError(b)}))}),m=mxUtils.bind(this,function(){window.clearTimeout(l);l=window.setTimeout(k,f)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){m();k()}));m();k()}null!=c&&c()});null!=b.url&&0<b.url.length?this.editor.loadUrl(b.url,mxUtils.bind(this,function(b){g(b)}),mxUtils.bind(this,function(b){null!=e&&e(b)})):g("")};EditorUi.prototype.updateDiagram=function(b){function d(b){var d=new mxCellOverlay(b.image||f.warningImage,
+b.tooltip,b.align,b.valign,b.offset);d.addListener(mxEvent.CLICK,function(d,c){e.alert(b.tooltip)});return d}var c=null,e=this;if(null!=b&&0<b.length&&(c=mxUtils.parseXml(b),b=null!=c?c.documentElement:null,null!=b&&"updates"==b.nodeName)){var f=this.editor.graph,k=f.getModel();k.beginUpdate();var p=null;try{for(b=b.firstChild;null!=b;){if("update"==b.nodeName){var v=k.getCell(b.getAttribute("id"));if(null!=v){try{var t=b.getAttribute("value");if(null!=t){var x=mxUtils.parseXml(t).documentElement;
+if(null!=x)if("1"==x.getAttribute("replace-value"))k.setValue(v,x);else for(var F=x.attributes,H=0;H<F.length;H++)f.setAttributeForCell(v,F[H].nodeName,0<F[H].nodeValue.length?F[H].nodeValue:null)}}catch(M){null!=window.console&&console.log("Error in value for "+v.id+": "+M)}try{var z=b.getAttribute("style");null!=z&&f.model.setStyle(v,z)}catch(M){null!=window.console&&console.log("Error in style for "+v.id+": "+M)}try{var D=b.getAttribute("icon");if(null!=D){var N=0<D.length?JSON.parse(D):null;null!=
+N&&N.append||f.removeCellOverlays(v);null!=N&&f.addCellOverlay(v,d(N))}}catch(M){null!=window.console&&console.log("Error in icon for "+v.id+": "+M)}try{var E=b.getAttribute("geometry");if(null!=E){var E=JSON.parse(E),J=f.getCellGeometry(v);if(null!=J){J=J.clone();for(key in E){var C=parseFloat(E[key]);"dx"==key?J.x+=C:"dy"==key?J.y+=C:"dw"==key?J.width+=C:"dh"==key?J.height+=C:J[key]=parseFloat(E[key])}f.model.setGeometry(v,J)}}}catch(M){null!=window.console&&console.log("Error in icon for "+v.id+
+": "+M)}}}else if("model"==b.nodeName){for(var K=b.firstChild;null!=K&&K.nodeType!=mxConstants.NODETYPE_ELEMENT;)K=K.nextSibling;null!=K&&(new mxCodec(b.firstChild)).decode(K,k)}else if("view"==b.nodeName){if(b.hasAttribute("scale")&&(f.view.scale=parseFloat(b.getAttribute("scale"))),b.hasAttribute("dx")||b.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(b.getAttribute("dx")||0),parseFloat(b.getAttribute("dy")||0))}else"fit"==b.nodeName&&(p=b.hasAttribute("max-scale")?parseFloat(b.getAttribute("max-scale")):
+1);b=b.nextSibling}}finally{k.endUpdate()}null!=p&&this.chromelessResize&&this.chromelessResize(!0,p)}return c};EditorUi.prototype.getCopyFilename=function(b,c){var d=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename,e="",g=d.lastIndexOf(".");0<=g&&(e=d.substring(g),d=d.substring(0,g));if(c)var f=new Date,g=f.getFullYear(),k=f.getMonth()+1,p=f.getDate(),t=f.getHours(),x=f.getMinutes(),f=f.getSeconds(),d=d+(" "+(g+"-"+k+"-"+p+"-"+t+"-"+x+"-"+f));return d=mxResources.get("copyOf",[d])+e};
+EditorUi.prototype.fileLoaded=function(b,c){var d=this.getCurrentFile();this.fileEditable=this.fileLoadedError=null;this.setCurrentFile(null);var e=!1;this.hideDialog();null!=d&&(EditorUi.debug("File.closed",[d]),d.removeListener(this.descriptorChangedListener),d.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var g=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=d&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();
+this.setBackgroundImage(null);!c&&null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();c||this.showSplash()});if(null!=b)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(b);b.addListener("descriptorChanged",this.descriptorChangedListener);
+b.addListener("contentChanged",this.descriptorChangedListener);b.open();delete this.openingFile;this.setGraphEnabled(!0);this.setMode(b.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();b.isEditable()?b.isModified()?(b.addUnsavedStatus(),null!=b.backupPatch&&b.patch([b.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");
+!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));e=!0;if(!this.isOffline()&&null!=b.getMode()){var f="1"==urlParams.sketch?"sketch":uiTheme;if(null==f)f="default";else if("sketch"==f||"min"==f)f+=Editor.isDarkMode()?
+"-dark":"-light";EditorUi.logEvent({category:b.getMode().toUpperCase()+"-OPEN-FILE-"+b.getHash(),action:"size_"+b.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+f})}EditorUi.debug("File.opened",[b]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));if(this.editor.editable&&this.mode==b.getMode()&&b.getMode()!=App.MODE_DEVICE&&null!=b.getMode())try{this.addRecent({id:b.getHash(),title:b.getTitle(),mode:b.getMode()})}catch(u){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+
+1),mxSettings.save()}catch(u){}}catch(u){this.fileLoadedError=u;if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+(null!=b?b.getHash():"none"),action:"message_"+u.message,label:"stack_"+u.stack})}catch(v){}f=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=d?this.fileLoaded(d):g()});c?f():this.handleError(u,mxResources.get("errorLoadingFile"),
+f,!0,null,null,!0)}else g();return e};EditorUi.prototype.getHashValueForPages=function(b,c){var d=0,e=new mxGraphModel,g=new mxCodec;null!=c&&(c.byteCount=0,c.attrCount=0,c.eltCount=0,c.nodeCount=0);for(var f=0;f<b.length;f++){this.updatePageRoot(b[f]);var k=b[f].node.cloneNode(!1);k.removeAttribute("name");e.root=b[f].root;var p=g.encode(e);this.editor.graph.saveViewState(b[f].viewState,p,!0);p.removeAttribute("pageWidth");p.removeAttribute("pageHeight");k.appendChild(p);null!=c&&(c.eltCount+=k.getElementsByTagName("*").length,
+c.nodeCount+=k.getElementsByTagName("mxCell").length);d=(d<<5)-d+this.hashValue(k,function(b,d,c,e){return!e||"mxGeometry"!=b.nodeName&&"mxPoint"!=b.nodeName||"x"!=d&&"y"!=d&&"width"!=d&&"height"!=d?e&&"mxCell"==b.nodeName&&"previous"==d?null:c:Math.round(c)},c)<<0}return d};EditorUi.prototype.hashValue=function(b,c,e){var d=0;if(null!=b&&"object"===typeof b&&"number"===typeof b.nodeType&&"string"===typeof b.nodeName&&"function"===typeof b.getAttribute){null!=b.nodeName&&(d^=this.hashValue(b.nodeName,
+c,e));if(null!=b.attributes){null!=e&&(e.attrCount+=b.attributes.length);for(var g=0;g<b.attributes.length;g++){var f=b.attributes[g].name,l=null!=c?c(b,f,b.attributes[g].value,!0):b.attributes[g].value;null!=l&&(d^=this.hashValue(f,c,e)+this.hashValue(l,c,e))}}if(null!=b.childNodes)for(g=0;g<b.childNodes.length;g++)d=(d<<5)-d+this.hashValue(b.childNodes[g],c,e)<<0}else if(null!=b&&"function"!==typeof b){b=String(b);c=0;null!=e&&(e.byteCount+=b.length);for(g=0;g<b.length;g++)c=(c<<5)-c+b.charCodeAt(g)<<
+0;d^=c}return d};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(b,c,e,f,k,n,p){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?StorageFile.getFileContent(this,".scratchpad",mxUtils.bind(this,function(b){null==b&&(b=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,
+b,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(b){var d=mxUtils.createXmlDocument(),c=d.createElement("mxlibrary");mxUtils.setTextContent(c,JSON.stringify(b));d.appendChild(c);return mxUtils.getXml(d)};EditorUi.prototype.closeLibrary=function(b){null!=b&&(this.removeLibrarySidebar(b.getHash()),b.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(b.getHash()),".scratchpad"==b.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=
+function(b){var d=this.sidebar.palettes[b];if(null!=d){for(var c=0;c<d.length;c++)d[c].parentNode.removeChild(d[c]);delete this.sidebar.palettes[b]}};EditorUi.prototype.repositionLibrary=function(b){var d=this.sidebar.container;if(null==b){var c=this.sidebar.palettes["L.scratchpad"];null==c&&(c=this.sidebar.palettes.search);null!=c&&(b=c[c.length-1].nextSibling)}b=null!=b?b:d.firstChild.nextSibling.nextSibling;var c=d.lastChild,e=c.previousSibling;d.insertBefore(c,b);d.insertBefore(e,c)};EditorUi.prototype.loadLibrary=
+function(b,c){var d=mxUtils.parseXml(b.getData());if("mxlibrary"==d.documentElement.nodeName){var e=JSON.parse(mxUtils.getTextContent(d.documentElement));this.libraryLoaded(b,e,d.documentElement.getAttribute("title"),c)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(b){return""};EditorUi.prototype.libraryLoaded=function(b,c,e,f){if(null!=this.sidebar){b.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(b.getHash());".scratchpad"==b.title&&
+(this.scratchpad=b);var d=this.sidebar.palettes[b.getHash()],d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(b.getHash());var g=null,l=mxUtils.bind(this,function(d,c){0==d.length&&b.isEditable()?(null==g&&(g=document.createElement("div"),g.className="geDropTarget",mxUtils.write(g,mxResources.get("dragElementsHere"))),c.appendChild(g)):this.addLibraryEntries(d,c)});null!=this.sidebar&&null!=c&&this.sidebar.addEntries(c);null==e&&(e=b.getTitle(),null!=e&&/(\.xml)$/i.test(e)&&(e=e.substring(0,
+e.lastIndexOf("."))));var k=this.sidebar.addPalette(b.getHash(),e,null!=f?f:!0,mxUtils.bind(this,function(b){l(c,b)}));this.repositionLibrary(d);var q=k.parentNode.previousSibling;f=q.getAttribute("title");null!=f&&0<f.length&&".scratchpad"!=b.title&&q.setAttribute("title",this.getLibraryStorageHint(b)+"\n"+f);var p=document.createElement("div");p.style.position="absolute";p.style.right="0px";p.style.top="0px";p.style.padding="8px";p.style.backgroundColor="inherit";q.style.position="relative";var t=
+document.createElement("img");t.setAttribute("src",Editor.crossImage);t.setAttribute("title",mxResources.get("close"));t.setAttribute("valign","absmiddle");t.setAttribute("border","0");t.style.position="relative";t.style.top="2px";t.style.width="14px";t.style.cursor="pointer";t.style.margin="0 3px";Editor.isDarkMode()&&(t.style.filter="invert(100%)");var H=null;if(".scratchpad"!=b.title||this.closableScratchpad)p.appendChild(t),mxEvent.addListener(t,"click",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d)){var c=
+mxUtils.bind(this,function(){this.closeLibrary(b)});null!=H?this.confirm(mxResources.get("allChangesLost"),null,c,mxResources.get("cancel"),mxResources.get("discardChanges")):c();mxEvent.consume(d)}}));if(b.isEditable()){var z=this.editor.graph,D=null,N=mxUtils.bind(this,function(d){this.showLibraryDialog(b.getTitle(),k,c,b,b.getMode());mxEvent.consume(d)}),E=mxUtils.bind(this,function(d){b.setModified(!0);b.isAutosave()?(null!=D&&null!=D.parentNode&&D.parentNode.removeChild(D),D=t.cloneNode(!1),
+D.setAttribute("src",Editor.spinImage),D.setAttribute("title",mxResources.get("saving")),D.style.cursor="default",D.style.marginRight="2px",D.style.marginTop="-2px",p.insertBefore(D,p.firstChild),q.style.paddingRight=18*p.childNodes.length+"px",this.saveLibrary(b.getTitle(),c,b,b.getMode(),!0,!0,function(){null!=D&&null!=D.parentNode&&(D.parentNode.removeChild(D),q.style.paddingRight=18*p.childNodes.length+"px")})):null==H&&(H=t.cloneNode(!1),H.setAttribute("src",Editor.saveImage),H.setAttribute("title",
+mxResources.get("save")),p.insertBefore(H,p.firstChild),mxEvent.addListener(H,"click",mxUtils.bind(this,function(d){this.saveLibrary(b.getTitle(),c,b,b.getMode(),b.constructor==LocalLibrary,!0,function(){null==H||b.isModified()||(q.style.paddingRight=18*p.childNodes.length+"px",H.parentNode.removeChild(H),H=null)});mxEvent.consume(d)})),q.style.paddingRight=18*p.childNodes.length+"px")}),J=mxUtils.bind(this,function(b,d,e,f){b=z.cloneCells(mxUtils.sortCells(z.model.getTopmostCells(b)));for(var l=
+0;l<b.length;l++){var m=z.getCellGeometry(b[l]);null!=m&&m.translate(-d.x,-d.y)}k.appendChild(this.sidebar.createVertexTemplateFromCells(b,d.width,d.height,f||"",!0,!1,!1));b={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(b))),w:d.width,h:d.height};null!=f&&(b.title=f);c.push(b);E(e);null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)}),C=mxUtils.bind(this,function(b){if(z.isSelectionEmpty())z.getRubberband().isActive()?(z.getRubberband().execute(b),z.getRubberband().reset()):
+this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d=z.getSelectionCells(),c=z.view.getBounds(d),e=z.view.scale;c.x/=e;c.y/=e;c.width/=e;c.height/=e;c.x-=z.view.translate.x;c.y-=z.view.translate.y;J(d,c)}mxEvent.consume(b)});mxEvent.addGestureListeners(k,function(){},mxUtils.bind(this,function(b){z.isMouseDown&&null!=z.panningManager&&null!=z.graphHandler.first&&(z.graphHandler.suspend(),null!=z.graphHandler.hint&&(z.graphHandler.hint.style.visibility=
+"hidden"),k.style.backgroundColor="#f1f3f4",k.style.cursor="copy",z.panningManager.stop(),z.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){z.isMouseDown&&null!=z.panningManager&&null!=z.graphHandler&&(k.style.backgroundColor="",k.style.cursor="default",this.sidebar.showTooltips=!0,z.panningManager.stop(),z.graphHandler.reset(),z.isMouseDown=!1,z.autoScroll=!0,C(b),mxEvent.consume(b))}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(b){z.isMouseDown&&null!=z.graphHandler.first&&
+(z.graphHandler.resume(),null!=z.graphHandler.hint&&(z.graphHandler.hint.style.visibility="visible"),k.style.backgroundColor="",k.style.cursor="",z.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(k,"dragover",mxUtils.bind(this,function(b){k.style.backgroundColor="#f1f3f4";b.dataTransfer.dropEffect="copy";k.style.cursor="copy";this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()})),mxEvent.addListener(k,"drop",mxUtils.bind(this,function(b){k.style.cursor="";k.style.backgroundColor=
+"";0<b.dataTransfer.files.length&&this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(d,e,f,m,n,q,p,u,v){if(null!=d&&"image/"==e.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,n,q),d)],d[0].vertex=!0,J(d,new mxRectangle(0,0,n,q),b,mxEvent.isAltDown(b)?null:p.substring(0,p.lastIndexOf(".")).replace(/_/g," ")),null!=g&&null!=g.parentNode&&0<c.length&&
+(g.parentNode.removeChild(g),g=null);else{var x=!1,t=mxUtils.bind(this,function(d,e){if(null!=d&&"application/pdf"==e){var f=Editor.extractGraphModelFromPdf(d);null!=f&&0<f.length&&(d=f)}if(null!=d)if(f=mxUtils.parseXml(d),"mxlibrary"==f.documentElement.nodeName)try{var m=JSON.parse(mxUtils.getTextContent(f.documentElement));l(m,k);c=c.concat(m);E(b);this.spinner.stop();x=!0}catch(aa){}else if("mxfile"==f.documentElement.nodeName)try{for(var n=f.documentElement.getElementsByTagName("diagram"),m=0;m<
+n.length;m++){var q=this.stringToCells(Editor.getDiagramNodeXml(n[m])),p=this.editor.graph.getBoundingBoxFromGeometry(q);J(q,new mxRectangle(0,0,p.width,p.height),b)}x=!0}catch(aa){null!=window.console&&console.log("error in drop handler:",aa)}x||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)});null!=v&&null!=p&&(/(\.v(dx|sdx?))($|\?)/i.test(p)||/(\.vs(x|sx?))($|\?)/i.test(p))?this.importVisio(v,
+function(b){t(b,"text/xml")},null,p):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,p)&&null!=v?this.parseFile(v,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?t(b.responseText,"text/xml"):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):t(d,e)}}));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(k,"dragleave",function(b){k.style.cursor=
+"";k.style.backgroundColor="";b.stopPropagation();b.preventDefault()}));t=t.cloneNode(!1);t.setAttribute("src",Editor.editImage);t.setAttribute("title",mxResources.get("edit"));p.insertBefore(t,p.firstChild);mxEvent.addListener(t,"click",N);mxEvent.addListener(k,"dblclick",function(b){mxEvent.getSource(b)==k&&N(b)});f=t.cloneNode(!1);f.setAttribute("src",Editor.plusImage);f.setAttribute("title",mxResources.get("add"));p.insertBefore(f,p.firstChild);mxEvent.addListener(f,"click",C);this.isOffline()||
+".scratchpad"!=b.title||null==EditorUi.scratchpadHelpLink||(f=document.createElement("span"),f.setAttribute("title",mxResources.get("help")),f.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(f,"?"),mxEvent.addGestureListeners(f,mxUtils.bind(this,function(b){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(b)})),p.insertBefore(f,p.firstChild))}q.appendChild(p);q.style.paddingRight=18*p.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=
+function(b,c){for(var d=0;d<b.length;d++){var e=b[d],g=e.data;if(null!=g){var g=this.convertDataUri(g),f="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==e.aspect&&(f+="aspect=fixed;");c.appendChild(this.sidebar.createVertexTemplate(f+"image="+g,e.w,e.h,"",e.title||"",!1,!1,!0))}else null!=e.xml&&(g=this.stringToCells(Graph.decompress(e.xml)),0<g.length&&c.appendChild(this.sidebar.createVertexTemplateFromCells(g,e.w,e.h,e.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=
+function(b){return null!=b?b[mxLanguage]||b.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground="linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=
+3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38):Editor.isDarkMode()&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor=Editor.darkColor,Format.inactiveTabBackgroundColor="black",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.shapeBackgroundColor=Editor.darkColor,Graph.prototype.shapeForegroundColor=Editor.lightColor,Graph.prototype.defaultPageBackgroundColor=Editor.darkColor,Graph.prototype.defaultPageBorderColor="#505759",BaseFormatPanel.prototype.buttonBackgroundColor=
+Editor.darkColor,mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxConstants.DROP_TARGET_COLOR="#00ff00");Editor.sketchFontFamily="Architects Daughter";Editor.sketchFontSource="https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter";"1"==urlParams.sketch&&(Graph.prototype.defaultVertexStyle={hachureGap:"4"},Graph.prototype.defaultEdgeStyle={edgeStyle:"none",rounded:"0",curved:"1",jettySize:"auto",orthogonalLoop:"1",endArrow:"open",
+startSize:"14",endSize:"14",sourcePerimeterSpacing:"8",targetPerimeterSpacing:"8"},Editor.configurationKey=".sketch-configuration",Editor.settingsKey=".sketch-config",Graph.prototype.defaultGridEnabled="1"==urlParams.grid,Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=function(b,c,e,f,k){b=new ImageDialog(this,b,c,e,f,k);this.showDialog(b.container,
+Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);b.init()};EditorUi.prototype.showBackgroundImageDialog=function(b,c){b=null!=b?b:mxUtils.bind(this,function(b,d){if(!d){var c=new ChangePageSetup(this,null,b);c.ignoreColor=!0;this.editor.graph.model.execute(c)}});var d=new BackgroundImageDialog(this,b,c);this.showDialog(d.container,360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(b,c,e,f,k){b=new LibraryDialog(this,b,c,e,f,k);this.showDialog(b.container,640,440,!0,!1,
+mxUtils.bind(this,function(b){b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));b.init()};var e=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(b){var d=e.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(b){this.editor.graph.isSelectionEmpty()&&d.refresh()}));return d};EditorUi.prototype.createSidebarFooterContainer=function(){var b=this.createDiv("geSidebarContainer geSidebarFooter");b.style.position=
+"absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var e=c.getElementsByTagName("span")[0];e.style.fontSize="18px";e.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(c,
+"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};EditorUi.prototype.handleError=function(b,c,e,f,k,n,p){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{p?null!=window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&null!=b.name)?b.name:b.message,b.filename,b.lineNumber,
+b.columnNumber,b,"INFO")}catch(D){}if(null!=g||null!=c){p=mxUtils.htmlEntities(mxResources.get("unknownError"));var l=mxResources.get("ok"),m=null;c=null!=c?c:mxResources.get("error");if(null!=g){null!=g.retry&&(l=mxResources.get("cancel"),m=function(){d();g.retry()});if(404==g.code||404==g.status||403==g.code){p=403==g.code?null!=g.message?mxUtils.htmlEntities(g.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=k?k:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=
+this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var q=null!=k?null:null!=n?n:window.location.hash;if(null!=q&&("#G"==q.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==q.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==g.code||404==g.status)){q="#U"==q.substring(0,
+2)?q.substring(45,q.lastIndexOf("%26ex")):q.substring(2);this.showError(c,p,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+q);this.handleError(b,c,e,f,k)}),m,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){g.innerHTML="";for(var b=0;b<d.length;b++){var c=document.createElement("option");mxUtils.write(c,d[b].displayName);c.value=b;g.appendChild(c);c=document.createElement("option");c.innerHTML="&nbsp;&nbsp;&nbsp;";
+mxUtils.write(c,"<"+d[b].email+">");c.setAttribute("disabled","disabled");g.appendChild(c)}c=document.createElement("option");mxUtils.write(c,mxResources.get("addAccount"));c.value=d.length;g.appendChild(c)}var d=this.drive.getUsersList(),c=document.createElement("div"),e=document.createElement("span");e.style.marginTop="6px";mxUtils.write(e,mxResources.get("changeUser")+": ");c.appendChild(e);var g=document.createElement("select");g.style.width="200px";b();mxEvent.addListener(g,"change",mxUtils.bind(this,
+function(){var c=g.value,e=d.length!=c;e&&this.drive.setUser(d[c]);this.drive.authorize(e,mxUtils.bind(this,function(){e||(d=this.drive.getUsersList(),b())}),mxUtils.bind(this,function(b){this.handleError(b)}),!0)}));c.appendChild(g);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(c.container,300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=e&&e()}),480,150);return}}null!=g.message?
+p=""==g.message&&null!=g.name?mxUtils.htmlEntities(g.name):mxUtils.htmlEntities(g.message):null!=g.response&&null!=g.response.error?p=mxUtils.htmlEntities(g.response.error):"undefined"!==typeof window.App&&(g.code==App.ERROR_TIMEOUT?p=mxUtils.htmlEntities(mxResources.get("timeout")):g.code==App.ERROR_BUSY?p=mxUtils.htmlEntities(mxResources.get("busy")):"string"===typeof g&&0<g.length&&(p=mxUtils.htmlEntities(g)))}var u=n=null;null!=g&&null!=g.helpLink?(n=mxResources.get("help"),u=mxUtils.bind(this,
+function(){return this.editor.graph.openLink(g.helpLink)})):null!=g&&null!=g.ownerEmail&&(n=mxResources.get("contactOwner"),p+=mxUtils.htmlEntities(" ("+n+": "+g.ownerEmail+")"),u=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(g.ownerEmail))}));this.showError(c,p,l,e,m,null,null,n,u,null,null,null,f?e:null)}else null!=e&&e()};EditorUi.prototype.alert=function(b,c,e){b=new ErrorDialog(this,null,b,mxResources.get("ok"),c);this.showDialog(b.container,e||340,100,!0,!1);
+b.init()};EditorUi.prototype.confirm=function(b,c,e,f,k,n){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=Math.min(200,28*Math.ceil(b.length/50));b=new ConfirmDialog(this,b,function(){d();null!=c&&c()},function(){d();null!=e&&e()},f,k,null,null,null,null,g);this.showDialog(b.container,340,46+g,!0,n);b.init()};EditorUi.prototype.showBanner=function(b,c,e,f){var d=!1;if(!(this.bannerShowing||this["hideBanner"+b]||isLocalStorage&&null!=mxSettings.settings&&null!=
+mxSettings.settings["close"+b])){var g=document.createElement("div");g.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(g.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(g.style,"transition","all 1s ease");g.className="geBtn gePrimaryBtn";
+d=document.createElement("img");d.setAttribute("src",IMAGE_PATH+"/logo.png");d.setAttribute("border","0");d.setAttribute("align","absmiddle");d.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";g.appendChild(d);d=document.createElement("img");d.setAttribute("src",Dialog.prototype.closeImage);d.setAttribute("title",mxResources.get(f?"doNotShowAgain":"close"));d.setAttribute("border","0");d.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";
+g.appendChild(d);mxUtils.write(g,c);document.body.appendChild(g);this.bannerShowing=!0;c=document.createElement("div");c.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var l=document.createElement("input");l.setAttribute("type","checkbox");l.setAttribute("id","geDoNotShowAgainCheckbox");l.style.marginRight="6px";if(!f){c.appendChild(l);var k=document.createElement("label");k.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(k,mxResources.get("doNotShowAgain"));c.appendChild(k);
+g.style.paddingBottom="30px";g.appendChild(c)}var q=mxUtils.bind(this,function(){null!=g.parentNode&&(g.parentNode.removeChild(g),this.bannerShowing=!1,l.checked||f)&&(this["hideBanner"+b]=!0,isLocalStorage&&null!=mxSettings.settings&&(mxSettings.settings["close"+b]=Date.now(),mxSettings.save()))});mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){mxEvent.consume(b);q()}));var p=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,
+function(){q()}),1E3)});mxEvent.addListener(g,"click",mxUtils.bind(this,function(b){var d=mxEvent.getSource(b);d!=l&&d!=k?(null!=e&&e(),q(),mxEvent.consume(b)):p()}));window.setTimeout(mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(p,3E4);d=!0}return d};EditorUi.prototype.setCurrentFile=function(b){null!=b&&(b.opened=new Date);this.currentFile=b};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=
+function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(b,c,e,f){b=b.toDataURL("image/"+e);if(null!=b&&6<b.length)null!=c&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(c))),0<f&&(b=Editor.writeGraphModelToPng(b,"pHYs","dpi",f));else throw{message:mxResources.get("unknownError")};return b};EditorUi.prototype.saveCanvas=function(b,c,e,f,k){var d="jpeg"==e?"jpg":e;f=this.getBaseFilename(f)+(null!=c?".drawio":"")+"."+d;b=this.createImageDataUri(b,
+c,e,k);this.saveData(f,d,b.substring(b.lastIndexOf(",")+1),"image/"+e,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(b,c){var d=new TextareaDialog(this,b,c,null,null,mxResources.get("close"));d.textarea.style.width="600px";
+d.textarea.style.height="380px";this.showDialog(d.container,620,460,!0,!0,null,null,null,null,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(b,c,e,f,k,n){"text/xml"!=e||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.html)$/i.test(c)||(c=c+"."+(null!=n?n:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)b=f?this.base64ToBlob(b,e):new Blob([b],{type:e}),navigator.msSaveOrOpenBlob(b,c);else if(mxClient.IS_IE)e=window.open("about:blank",
+"_blank"),null==e?mxUtils.popup(b,!0):(e.document.write(b),e.document.close(),e.document.execCommand("SaveAs",!0,c),e.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==e||"image/"!=e.substring(0,6)?this.showTextDialog(c+":",b):this.openInNewWindow(b,e,f);else{var d=document.createElement("a");n=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof d.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
+n=65==(g?parseInt(g[2],10):!1)?!1:n}if(n||this.isOffline()){d.href=URL.createObjectURL(f?this.base64ToBlob(b,e):new Blob([b],{type:e}));n?d.download=c:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},2E4),d.click(),d.parentNode.removeChild(d)}catch(y){}}else this.createEchoRequest(b,c,e,f,k).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,e,f,k,n){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,
+b+(null!=e?"&mime="+e:"")+(null!=k?"&format="+k:"")+(null!=n?"&base64="+n:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(b,c){c=c||"";for(var d=atob(b),e=d.length,g=Math.ceil(e/1024),f=Array(g),k=0;k<g;++k){for(var p=1024*k,t=Math.min(p+1024,e),x=Array(t-p),F=0;p<t;++F,++p)x[F]=d[p].charCodeAt(0);f[k]=new Uint8Array(x)}return new Blob(f,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,e,f,k,n,p,v){n=null!=n?n:!1;p=null!=p?
+p:"vsdx"!=k&&(!mxClient.IS_IOS||!navigator.standalone);k=this.getServiceCount(n);isLocalStorage&&k++;var d=4>=k?2:6<k?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(d,c){try{if("_blank"==c)if(null!=e&&"image/"==e.substring(0,6))this.openInNewWindow(b,e,f);else if(null!=e&&"text/html"==e.substring(0,9)){var g=new EmbedDialog(this,b);this.showDialog(g.container,450,240,!0,!0);g.init()}else{var l=window.open("about:blank");null==l?mxUtils.popup(b,!0):(l.document.write("<pre>"+mxUtils.htmlEntities(b,
+!1)+"</pre>"),l.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(b,d,e,f,null,v):null!=d&&0<d.length&&this.pickFolder(c,mxUtils.bind(this,function(g){try{this.exportFile(b,d,e,f,c,g)}catch(N){this.handleError(N)}}))}catch(D){this.handleError(D)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,n,p,null,1<k,d,b,e,f);n=this.isServices(k)?k>d?390:270:160;this.showDialog(c.container,420,n,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=
function(b,c,e){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(b,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?d.document.write("<html>"+b+"</html>"):(b=e?b:btoa(unescape(encodeURIComponent(b))),d.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+b+'"/></html>')):d.document.write("<html><pre>"+mxUtils.htmlEntities(b,!1)+"</pre></html>"),d.document.close())};var k=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=
function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};EditorUi.prototype.addChromelessToolbarItems=function(b){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var d=b(mxUtils.bind(this,function(b){null==this.tagsComponent&&(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position=
"",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding="4px",this.tagsComponent.div.style.overflow="auto",this.tagsComponent.div.style.height="auto",this.tagsComponent.div.style.position="fixed",this.tagsComponent.div.style.fontFamily=Editor.defaultHtmlFont,mxClient.IS_IE||mxClient.IS_IE11?(this.tagsComponent.div.style.backgroundColor=
@@ -3494,146 +3503,146 @@ Editor.tagsImage,mxResources.get("tags"));this.editor.graph.getModel().addListen
(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null)}));this.editor.addListener("pageSelected",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));mxEvent.addListener(this.editor.graph.container,"click",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),
this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));if(this.isExportToCanvas()&&this.isChromelessImageExportEnabled()){this.exportDialog=null;var c=b(mxUtils.bind(this,function(b){var d=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",d);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)d.apply(this);
else{this.exportDialog=document.createElement("div");var e=c.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily=Editor.defaultHtmlFont;this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color=
-"#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=e.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";e=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=e.zIndex;var f=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});f.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,
-function(b){f.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(b,null,"png");b=document.createElement("img");b.style.maxWidth="140px";b.style.maxHeight="140px";b.style.cursor="pointer";b.style.backgroundColor="white";b.setAttribute("title",mxResources.get("openInNewWindow"));b.setAttribute("border","0");b.setAttribute("src",c);this.exportDialog.appendChild(b);mxEvent.addListener(b,"click",mxUtils.bind(this,
-function(){this.openInNewWindow(c.substring(c.indexOf(",")+1),"image/png",!0);d.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,null,null,null,null,null,null,Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",d);document.body.appendChild(this.exportDialog)}mxEvent.consume(b)}),Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(b,c,e,g,k){this.isLocalFileSave()?
-this.saveLocalFile(e,b,g,k,c):this.saveRequest(b,c,mxUtils.bind(this,function(b,d){return this.createEchoRequest(e,b,g,k,c,d)}),e,k,g)};EditorUi.prototype.saveRequest=function(b,c,e,g,k,n,p){p=null!=p?p:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);isLocalStorage&&d++;var f=4>=d?2:6<d?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,d){if("_blank"==d||null!=b&&0<b.length){var f=e("_blank"==d?null:b,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");
-null!=f&&(d==App.MODE_DEVICE||"download"==d||"_blank"==d?f.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(e){n=null!=n?n:"pdf"==c?"application/pdf":"image/"+c;if(null!=g)try{this.exportFile(g,b,n,!0,d,e)}catch(D){this.handleError(D)}else this.spinner.spin(document.body,mxResources.get("saving"))&&f.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=f.getStatus()&&299>=f.getStatus())try{this.exportFile(f.getText(),b,n,!0,d,e)}catch(D){this.handleError(D)}else this.handleError({message:mxResources.get("errorSavingFile")})}),
-function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,p,null,1<d,f,g,n,k);d=this.isServices(d)?4<d?390:270:160;this.showDialog(b.container,420,d,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,e,g,k,n){};EditorUi.prototype.pickFolder=function(b,
-c,e){c(null)};EditorUi.prototype.exportSvg=function(b,c,e,g,k,n,p,t,y,x,F,H,z,D){if(this.spinner.spin(document.body,mxResources.get("export")))try{var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;var f=c?null:this.editor.graph.background;f==mxConstants.NONE&&(f=null);null==f&&0==c&&(f=F?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var l=this.editor.graph.getSvg(f,b,p,t,null,e,null,null,"blank"==x?"_blank":"self"==x?"_top":null,null,!0,F,H);g&&this.editor.graph.addSvgShadow(l);var m=
+"#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=e.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";e=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=e.zIndex;var g=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});g.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,
+function(b){g.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(b,null,"png");b=document.createElement("img");b.style.maxWidth="140px";b.style.maxHeight="140px";b.style.cursor="pointer";b.style.backgroundColor="white";b.setAttribute("title",mxResources.get("openInNewWindow"));b.setAttribute("border","0");b.setAttribute("src",c);this.exportDialog.appendChild(b);mxEvent.addListener(b,"click",mxUtils.bind(this,
+function(){this.openInNewWindow(c.substring(c.indexOf(",")+1),"image/png",!0);d.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,null,null,null,null,null,null,Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",d);document.body.appendChild(this.exportDialog)}mxEvent.consume(b)}),Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(b,c,e,f,k){this.isLocalFileSave()?
+this.saveLocalFile(e,b,f,k,c):this.saveRequest(b,c,mxUtils.bind(this,function(b,d){return this.createEchoRequest(e,b,f,k,c,d)}),e,k,f)};EditorUi.prototype.saveRequest=function(b,c,e,f,k,n,p){p=null!=p?p:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);isLocalStorage&&d++;var g=4>=d?2:6<d?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,d){if("_blank"==d||null!=b&&0<b.length){var g=e("_blank"==d?null:b,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");
+null!=g&&(d==App.MODE_DEVICE||"download"==d||"_blank"==d?g.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(e){n=null!=n?n:"pdf"==c?"application/pdf":"image/"+c;if(null!=f)try{this.exportFile(f,b,n,!0,d,e)}catch(D){this.handleError(D)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),b,n,!0,d,e)}catch(D){this.handleError(D)}else this.handleError({message:mxResources.get("errorSavingFile")})}),
+function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,p,null,1<d,g,f,n,k);d=this.isServices(d)?4<d?390:270:160;this.showDialog(b.container,420,d,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,e,f,k,n){};EditorUi.prototype.pickFolder=function(b,
+c,e){c(null)};EditorUi.prototype.exportSvg=function(b,c,e,f,k,n,p,t,y,x,F,H,z,D){if(this.spinner.spin(document.body,mxResources.get("export")))try{var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;var g=c?null:this.editor.graph.background;g==mxConstants.NONE&&(g=null);null==g&&0==c&&(g=F?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var l=this.editor.graph.getSvg(g,b,p,t,null,e,null,null,"blank"==x?"_blank":"self"==x?"_top":null,null,!0,F,H);f&&this.editor.graph.addSvgShadow(l);var m=
this.getBaseFilename()+(k?".drawio":"")+".svg";D=null!=D?D:mxUtils.bind(this,function(b){this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(m,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});var q=mxUtils.bind(this,function(b){this.spinner.stop();k&&b.setAttribute("content",this.getFileData(!0,null,null,null,e,y,null,null,null,!1));D(Graph.xmlDeclaration+"\n"+(k?Graph.svgFileComment+
-"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(l);var u=mxUtils.bind(this,function(b){n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,q,this.thumbImageCache)):q(b)});z?this.embedFonts(l,u):(this.editor.addFontCss(l),u(l))}catch(aa){this.handleError(aa)}};EditorUi.prototype.addRadiobox=function(b,c,e,g,k,n,p){return this.addCheckbox(b,e,g,k,n,p,!0,c)};EditorUi.prototype.addCheckbox=function(b,c,e,g,k,n,
-p,t){n=null!=n?n:!0;var d=document.createElement("input");d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",p?"radio":"checkbox");p="geCheckbox-"+Editor.guid();d.id=p;null!=t&&d.setAttribute("name",t);e&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);g&&d.setAttribute("disabled","disabled");n&&(b.appendChild(d),e=document.createElement("label"),mxUtils.write(e,c),e.setAttribute("for",p),b.appendChild(e),k||mxUtils.br(b));return d};EditorUi.prototype.addEditButton=
-function(b,c){var d=this.addCheckbox(b,mxResources.get("edit")+":",!0,null,!0);d.style.marginLeft="24px";var e=this.getCurrentFile(),f="";null!=e&&e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var g=document.createElement("select");g.style.width="120px";g.style.marginLeft="8px";g.style.marginRight="10px";g.className="geBtn";e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,mxResources.get("makeCopy"));g.appendChild(e);e=document.createElement("option");
-e.setAttribute("value","custom");mxUtils.write(e,mxResources.get("custom")+"...");g.appendChild(e);b.appendChild(g);mxEvent.addListener(g,"change",mxUtils.bind(this,function(){if("custom"==g.value){var b=new FilenameDialog(this,f,mxResources.get("ok"),function(b){null!=b?f=b:g.value="blank"},mxResources.get("url"),null,null,null,null,function(){g.value="blank"});this.showDialog(b.container,300,80,!0,!1);b.init()}}));mxEvent.addListener(d,"change",mxUtils.bind(this,function(){d.checked&&(null==c||
-c.checked)?g.removeAttribute("disabled"):g.setAttribute("disabled","disabled")}));mxUtils.br(b);return{getLink:function(){return d.checked?"blank"===g.value?"_blank":f:null},getEditInput:function(){return d},getEditSelect:function(){return g}}};EditorUi.prototype.addLinkSection=function(b,c){function d(){var b=document.createElement("div");b.style.width="100%";b.style.height="100%";b.style.boxSizing="border-box";null!=g&&g!=mxConstants.NONE?(b.style.border="1px solid black",b.style.backgroundColor=
-g):(b.style.backgroundPosition="center center",b.style.backgroundRepeat="no-repeat",b.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')");k.innerHTML="";k.appendChild(b)}mxUtils.write(b,mxResources.get("links")+":");var e=document.createElement("select");e.style.width="100px";e.style.marginLeft="8px";e.style.marginRight="10px";e.className="geBtn";var f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));e.appendChild(f);f=document.createElement("option");
-f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));e.appendChild(f);f=document.createElement("option");f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));e.appendChild(f);c&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),e.appendChild(f));b.appendChild(e);mxUtils.write(b,mxResources.get("borderColor")+":");var g="#0000ff",k=
-null,k=mxUtils.button("",mxUtils.bind(this,function(b){this.pickColor(g||"none",function(b){g=b;d()});mxEvent.consume(b)}));d();k.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";k.style.marginLeft="4px";k.style.height="22px";k.style.width="22px";k.style.position="relative";k.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";k.className="geColorBtn";b.appendChild(k);mxUtils.br(b);return{getColor:function(){return g},getTarget:function(){return e.value},focus:function(){e.focus()}}};
-EditorUi.prototype.createUrlParameters=function(b,c,e,g,k,n,p){p=null!=p?p:[];g&&("https://viewer.diagrams.net"==EditorUi.lightboxHost&&"1"!=urlParams.dev||p.push("lightbox=1"),"auto"!=b&&p.push("target="+b),null!=c&&c!=mxConstants.NONE&&p.push("highlight="+("#"==c.charAt(0)?c.substring(1):c)),null!=k&&0<k.length&&p.push("edit="+encodeURIComponent(k)),n&&p.push("layers=1"),this.editor.graph.foldingEnabled&&p.push("nav=1"));e&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&
-p.push("page-id="+this.currentPage.getId());return p};EditorUi.prototype.createLink=function(b,c,e,g,k,n,p,t,y,x){y=this.createUrlParameters(b,c,e,g,k,n,y);b=this.getCurrentFile();c=!0;null!=p?e="#U"+encodeURIComponent(p):(b=this.getCurrentFile(),t||null==b||b.constructor!=window.DriveFile?e="#R"+encodeURIComponent(e?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(e="#"+b.getHash(),c=!1));c&&null!=b&&null!=b.getTitle()&&b.getTitle()!=
-this.defaultFilename&&y.push("title="+encodeURIComponent(b.getTitle()));x&&1<e.length&&(y.push("open="+e.substring(1)),e="");return(g&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<y.length?"?"+y.join("&"):"")+e};EditorUi.prototype.createHtml=function(b,c,e,g,k,n,p,t,y,x,F,H){this.getBasenames();var d={};""!=k&&k!=mxConstants.NONE&&(d.highlight=k);"auto"!==
-g&&(d.target=g);x||(d.lightbox=!1);d.nav=this.editor.graph.foldingEnabled;e=parseInt(e);isNaN(e)||100==e||(d.zoom=e/100);e=[];p&&(e.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));c&&(e.push("zoom"),d.resize=!0);t&&e.push("layers");y&&e.push("tags");0<e.length&&(x&&e.push("lightbox"),d.toolbar=e.join(" "));null!=F&&0<F.length&&(d.edit=F);null!=b?d.url=b:d.xml=this.getFileData(!0,null,null,null,null,!p);c='<div class="mxgraph" style="'+
+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(l);var u=mxUtils.bind(this,function(b){n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,q,this.thumbImageCache)):q(b)});z?this.embedFonts(l,u):(this.editor.addFontCss(l),u(l))}catch(Z){this.handleError(Z)}};EditorUi.prototype.addRadiobox=function(b,c,e,f,k,n,p){return this.addCheckbox(b,e,f,k,n,p,!0,c)};EditorUi.prototype.addCheckbox=function(b,c,e,f,k,n,p,
+t){n=null!=n?n:!0;var d=document.createElement("input");d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",p?"radio":"checkbox");p="geCheckbox-"+Editor.guid();d.id=p;null!=t&&d.setAttribute("name",t);e&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);f&&d.setAttribute("disabled","disabled");n&&(b.appendChild(d),e=document.createElement("label"),mxUtils.write(e,c),e.setAttribute("for",p),b.appendChild(e),k||mxUtils.br(b));return d};EditorUi.prototype.addEditButton=function(b,
+c){var d=this.addCheckbox(b,mxResources.get("edit")+":",!0,null,!0);d.style.marginLeft="24px";var e=this.getCurrentFile(),g="";null!=e&&e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER&&(g=window.location.href);var f=document.createElement("select");f.style.width="120px";f.style.marginLeft="8px";f.style.marginRight="10px";f.className="geBtn";e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,mxResources.get("makeCopy"));f.appendChild(e);e=document.createElement("option");
+e.setAttribute("value","custom");mxUtils.write(e,mxResources.get("custom")+"...");f.appendChild(e);b.appendChild(f);mxEvent.addListener(f,"change",mxUtils.bind(this,function(){if("custom"==f.value){var b=new FilenameDialog(this,g,mxResources.get("ok"),function(b){null!=b?g=b:f.value="blank"},mxResources.get("url"),null,null,null,null,function(){f.value="blank"});this.showDialog(b.container,300,80,!0,!1);b.init()}}));mxEvent.addListener(d,"change",mxUtils.bind(this,function(){d.checked&&(null==c||
+c.checked)?f.removeAttribute("disabled"):f.setAttribute("disabled","disabled")}));mxUtils.br(b);return{getLink:function(){return d.checked?"blank"===f.value?"_blank":g:null},getEditInput:function(){return d},getEditSelect:function(){return f}}};EditorUi.prototype.addLinkSection=function(b,c){function d(){var b=document.createElement("div");b.style.width="100%";b.style.height="100%";b.style.boxSizing="border-box";null!=f&&f!=mxConstants.NONE?(b.style.border="1px solid black",b.style.backgroundColor=
+f):(b.style.backgroundPosition="center center",b.style.backgroundRepeat="no-repeat",b.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')");k.innerHTML="";k.appendChild(b)}mxUtils.write(b,mxResources.get("links")+":");var e=document.createElement("select");e.style.width="100px";e.style.marginLeft="8px";e.style.marginRight="10px";e.className="geBtn";var g=document.createElement("option");g.setAttribute("value","auto");mxUtils.write(g,mxResources.get("automatic"));e.appendChild(g);g=document.createElement("option");
+g.setAttribute("value","blank");mxUtils.write(g,mxResources.get("openInNewWindow"));e.appendChild(g);g=document.createElement("option");g.setAttribute("value","self");mxUtils.write(g,mxResources.get("openInThisWindow"));e.appendChild(g);c&&(g=document.createElement("option"),g.setAttribute("value","frame"),mxUtils.write(g,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),e.appendChild(g));b.appendChild(e);mxUtils.write(b,mxResources.get("borderColor")+":");var f="#0000ff",k=
+null,k=mxUtils.button("",mxUtils.bind(this,function(b){this.pickColor(f||"none",function(b){f=b;d()});mxEvent.consume(b)}));d();k.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";k.style.marginLeft="4px";k.style.height="22px";k.style.width="22px";k.style.position="relative";k.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";k.className="geColorBtn";b.appendChild(k);mxUtils.br(b);return{getColor:function(){return f},getTarget:function(){return e.value},focus:function(){e.focus()}}};
+EditorUi.prototype.createUrlParameters=function(b,c,e,f,k,n,p){p=null!=p?p:[];f&&("https://viewer.diagrams.net"==EditorUi.lightboxHost&&"1"!=urlParams.dev||p.push("lightbox=1"),"auto"!=b&&p.push("target="+b),null!=c&&c!=mxConstants.NONE&&p.push("highlight="+("#"==c.charAt(0)?c.substring(1):c)),null!=k&&0<k.length&&p.push("edit="+encodeURIComponent(k)),n&&p.push("layers=1"),this.editor.graph.foldingEnabled&&p.push("nav=1"));e&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&
+p.push("page-id="+this.currentPage.getId());return p};EditorUi.prototype.createLink=function(b,c,e,f,k,n,p,t,y,x){y=this.createUrlParameters(b,c,e,f,k,n,y);b=this.getCurrentFile();c=!0;null!=p?e="#U"+encodeURIComponent(p):(b=this.getCurrentFile(),t||null==b||b.constructor!=window.DriveFile?e="#R"+encodeURIComponent(e?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(e="#"+b.getHash(),c=!1));c&&null!=b&&null!=b.getTitle()&&b.getTitle()!=
+this.defaultFilename&&y.push("title="+encodeURIComponent(b.getTitle()));x&&1<e.length&&(y.push("open="+e.substring(1)),e="");return(f&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<y.length?"?"+y.join("&"):"")+e};EditorUi.prototype.createHtml=function(b,c,e,f,k,n,p,t,y,x,F,H){this.getBasenames();var d={};""!=k&&k!=mxConstants.NONE&&(d.highlight=k);"auto"!==
+f&&(d.target=f);x||(d.lightbox=!1);d.nav=this.editor.graph.foldingEnabled;e=parseInt(e);isNaN(e)||100==e||(d.zoom=e/100);e=[];p&&(e.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));c&&(e.push("zoom"),d.resize=!0);t&&e.push("layers");y&&e.push("tags");0<e.length&&(x&&e.push("lightbox"),d.toolbar=e.join(" "));null!=F&&0<F.length&&(d.edit=F);null!=b?d.url=b:d.xml=this.getFileData(!0,null,null,null,null,!p);c='<div class="mxgraph" style="'+
(n?"max-width:100%;":"")+(""!=e?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(d))+'"></div>';b=null!=b?"&fetch="+encodeURIComponent(b):"";H(c,'<script type="text/javascript" src="'+(0<b.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+"/embed2.js?")+b:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+
-'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(b,c,e,g){var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=document.createElement("h3");mxUtils.write(f,mxResources.get("html"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(f);var l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var k=document.createElement("input");k.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";
-k.setAttribute("value","url");k.setAttribute("type","radio");k.setAttribute("name","type-embedhtmldialog");f=k.cloneNode(!0);f.setAttribute("value","copy");l.appendChild(f);var q=document.createElement("span");mxUtils.write(q,mxResources.get("includeCopyOfMyDiagram"));l.appendChild(q);mxUtils.br(l);l.appendChild(k);q=document.createElement("span");mxUtils.write(q,mxResources.get("publicDiagramUrl"));l.appendChild(q);var p=this.getCurrentFile();null==e&&null!=p&&p.constructor==window.DriveFile&&(q=
-document.createElement("a"),q.style.paddingLeft="12px",q.style.color="gray",q.style.cursor="pointer",mxUtils.write(q,mxResources.get("share")),l.appendChild(q),mxEvent.addListener(q,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(p.getId())})));f.setAttribute("checked","checked");null==e&&k.setAttribute("disabled","disabled");d.appendChild(l);var t=this.addLinkSection(d),H=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var z=document.createElement("input");
-z.setAttribute("type","text");z.style.marginRight="16px";z.style.width="60px";z.style.marginLeft="4px";z.style.marginRight="12px";z.value="100%";d.appendChild(z);var D=this.addCheckbox(d,mxResources.get("fit"),!0),l=null!=this.pages&&1<this.pages.length,L=L=this.addCheckbox(d,mxResources.get("allPages"),l,!l),E=this.addCheckbox(d,mxResources.get("layers"),!0),J=this.addCheckbox(d,mxResources.get("tags"),!0),C=this.addCheckbox(d,mxResources.get("lightbox"),!0),K=this.addEditButton(d,C),M=K.getEditInput();
-M.style.marginBottom="16px";mxEvent.addListener(C,"change",function(){C.checked?M.removeAttribute("disabled"):M.setAttribute("disabled","disabled");M.checked&&C.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){g(k.checked?e:null,H.checked,z.value,t.getTarget(),t.getColor(),D.checked,L.checked,E.checked,J.checked,C.checked,K.getLink())}),null,b,c);this.showDialog(b.container,340,430,
-!0,!0);f.focus()};EditorUi.prototype.showPublishLinkDialog=function(b,c,e,g,k,n,p,t){var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=document.createElement("h3");mxUtils.write(f,b||mxResources.get("link"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(f);var l=this.getCurrentFile();b=0;if(null==l||l.constructor!=window.DriveFile||c)p=null!=p?p:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{b=80;p=null!=p?p:"https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram";
-f=document.createElement("div");f.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var m=document.createElement("div");m.style.whiteSpace="normal";mxUtils.write(m,mxResources.get("linkAccountRequired"));f.appendChild(m);m=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(l.getId())}));m.style.marginTop="12px";m.className="geBtn";f.appendChild(m);d.appendChild(f);m=document.createElement("a");
-m.style.paddingLeft="12px";m.style.color="gray";m.style.fontSize="11px";m.style.cursor="pointer";mxUtils.write(m,mxResources.get("check"));f.appendChild(m);mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(b){this.spinner.stop();b=new ErrorDialog(this,null,mxResources.get(null!=b?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(b.container,
-300,80,!0,!1);b.init()}))}))}var q=null,u=null;if(null!=e||null!=g)b+=30,mxUtils.write(d,mxResources.get("width")+":"),q=document.createElement("input"),q.setAttribute("type","text"),q.style.marginRight="16px",q.style.width="50px",q.style.marginLeft="6px",q.style.marginRight="16px",q.style.marginBottom="10px",q.value="100%",d.appendChild(q),mxUtils.write(d,mxResources.get("height")+":"),u=document.createElement("input"),u.setAttribute("type","text"),u.style.width="50px",u.style.marginLeft="6px",u.style.marginBottom=
-"10px",u.value=g+"px",d.appendChild(u),mxUtils.br(d);var v=this.addLinkSection(d,n);e=null!=this.pages&&1<this.pages.length;var E=null;if(null==l||l.constructor!=window.DriveFile||c)E=this.addCheckbox(d,mxResources.get("allPages"),e,!e);var J=this.addCheckbox(d,mxResources.get("lightbox"),!0,null,null,!n),C=this.addEditButton(d,J),K=C.getEditInput();n&&(K.style.marginLeft=J.style.marginLeft,J.style.display="none",b-=20);var M=this.addCheckbox(d,mxResources.get("layers"),!0);M.style.marginLeft=K.style.marginLeft;
-M.style.marginTop="8px";var aa=this.addCheckbox(d,mxResources.get("tags"),!0);aa.style.marginLeft=K.style.marginLeft;aa.style.marginBottom="16px";aa.style.marginTop="16px";mxEvent.addListener(J,"change",function(){J.checked?(M.removeAttribute("disabled"),K.removeAttribute("disabled")):(M.setAttribute("disabled","disabled"),K.setAttribute("disabled","disabled"));K.checked&&J.checked?C.getEditSelect().removeAttribute("disabled"):C.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,
-d,mxUtils.bind(this,function(){k(v.getTarget(),v.getColor(),null==E?!0:E.checked,J.checked,C.getLink(),M.checked,null!=q?q.value:null,null!=u?u.value:null,aa.checked)}),null,mxResources.get("create"),p,t);this.showDialog(c.container,340,300+b,!0,!0);null!=q?(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?q.select():document.execCommand("selectAll",!1,null)):v.focus()};EditorUi.prototype.showRemoteExportDialog=function(b,c,e,g,k){var d=document.createElement("div");d.style.whiteSpace=
-"nowrap";var f=document.createElement("h3");mxUtils.write(f,mxResources.get("image"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(k?"10":"4")+"px";d.appendChild(f);if(k){mxUtils.write(d,mxResources.get("zoom")+":");var l=document.createElement("input");l.setAttribute("type","text");l.style.marginRight="16px";l.style.width="60px";l.style.marginLeft="4px";l.style.marginRight="12px";l.value=this.lastExportZoom||"100%";d.appendChild(l);mxUtils.write(d,mxResources.get("borderWidth")+
-":");var m=document.createElement("input");m.setAttribute("type","text");m.style.marginRight="16px";m.style.width="60px";m.style.marginLeft="4px";m.value=this.lastExportBorder||"0";d.appendChild(m);mxUtils.br(d)}var q=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),p=g?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram),f=this.editor.graph,t=g?null:this.addCheckbox(d,mxResources.get("transparentBackground"),f.background==
-mxConstants.NONE||null==f.background);null!=t&&(t.style.marginBottom="16px");b=new CustomDialog(this,d,mxUtils.bind(this,function(){var b=parseInt(l.value)/100||1,d=parseInt(m.value)||0;e(!q.checked,null!=p?p.checked:!1,null!=t?t.checked:!1,b,d)}),null,b,c);this.showDialog(b.container,300,(k?25:0)+(g?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(b,c,e,g,k,n,p,t,y){p=null!=p?p:Editor.defaultIncludeDiagram;var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=this.editor.graph,
+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(b,c,e,f){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("html"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var k=document.createElement("input");k.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";
+k.setAttribute("value","url");k.setAttribute("type","radio");k.setAttribute("name","type-embedhtmldialog");g=k.cloneNode(!0);g.setAttribute("value","copy");l.appendChild(g);var q=document.createElement("span");mxUtils.write(q,mxResources.get("includeCopyOfMyDiagram"));l.appendChild(q);mxUtils.br(l);l.appendChild(k);q=document.createElement("span");mxUtils.write(q,mxResources.get("publicDiagramUrl"));l.appendChild(q);var p=this.getCurrentFile();null==e&&null!=p&&p.constructor==window.DriveFile&&(q=
+document.createElement("a"),q.style.paddingLeft="12px",q.style.color="gray",q.style.cursor="pointer",mxUtils.write(q,mxResources.get("share")),l.appendChild(q),mxEvent.addListener(q,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(p.getId())})));g.setAttribute("checked","checked");null==e&&k.setAttribute("disabled","disabled");d.appendChild(l);var t=this.addLinkSection(d),H=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var z=document.createElement("input");
+z.setAttribute("type","text");z.style.marginRight="16px";z.style.width="60px";z.style.marginLeft="4px";z.style.marginRight="12px";z.value="100%";d.appendChild(z);var D=this.addCheckbox(d,mxResources.get("fit"),!0),l=null!=this.pages&&1<this.pages.length,N=N=this.addCheckbox(d,mxResources.get("allPages"),l,!l),E=this.addCheckbox(d,mxResources.get("layers"),!0),J=this.addCheckbox(d,mxResources.get("tags"),!0),C=this.addCheckbox(d,mxResources.get("lightbox"),!0),K=this.addEditButton(d,C),M=K.getEditInput();
+M.style.marginBottom="16px";mxEvent.addListener(C,"change",function(){C.checked?M.removeAttribute("disabled"):M.setAttribute("disabled","disabled");M.checked&&C.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){f(k.checked?e:null,H.checked,z.value,t.getTarget(),t.getColor(),D.checked,N.checked,E.checked,J.checked,C.checked,K.getLink())}),null,b,c);this.showDialog(b.container,340,430,
+!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=function(b,c,e,f,k,n,p,t){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,b||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var l=this.getCurrentFile();b=0;if(null==l||l.constructor!=window.DriveFile||c)p=null!=p?p:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{b=80;p=null!=p?p:"https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram";
+g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var m=document.createElement("div");m.style.whiteSpace="normal";mxUtils.write(m,mxResources.get("linkAccountRequired"));g.appendChild(m);m=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(l.getId())}));m.style.marginTop="12px";m.className="geBtn";g.appendChild(m);d.appendChild(g);m=document.createElement("a");
+m.style.paddingLeft="12px";m.style.color="gray";m.style.fontSize="11px";m.style.cursor="pointer";mxUtils.write(m,mxResources.get("check"));g.appendChild(m);mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(b){this.spinner.stop();b=new ErrorDialog(this,null,mxResources.get(null!=b?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(b.container,
+300,80,!0,!1);b.init()}))}))}var q=null,u=null;if(null!=e||null!=f)b+=30,mxUtils.write(d,mxResources.get("width")+":"),q=document.createElement("input"),q.setAttribute("type","text"),q.style.marginRight="16px",q.style.width="50px",q.style.marginLeft="6px",q.style.marginRight="16px",q.style.marginBottom="10px",q.value="100%",d.appendChild(q),mxUtils.write(d,mxResources.get("height")+":"),u=document.createElement("input"),u.setAttribute("type","text"),u.style.width="50px",u.style.marginLeft="6px",u.style.marginBottom=
+"10px",u.value=f+"px",d.appendChild(u),mxUtils.br(d);var v=this.addLinkSection(d,n);e=null!=this.pages&&1<this.pages.length;var E=null;if(null==l||l.constructor!=window.DriveFile||c)E=this.addCheckbox(d,mxResources.get("allPages"),e,!e);var J=this.addCheckbox(d,mxResources.get("lightbox"),!0,null,null,!n),C=this.addEditButton(d,J),K=C.getEditInput();n&&(K.style.marginLeft=J.style.marginLeft,J.style.display="none",b-=20);var M=this.addCheckbox(d,mxResources.get("layers"),!0);M.style.marginLeft=K.style.marginLeft;
+M.style.marginTop="8px";var Z=this.addCheckbox(d,mxResources.get("tags"),!0);Z.style.marginLeft=K.style.marginLeft;Z.style.marginBottom="16px";Z.style.marginTop="16px";mxEvent.addListener(J,"change",function(){J.checked?(M.removeAttribute("disabled"),K.removeAttribute("disabled")):(M.setAttribute("disabled","disabled"),K.setAttribute("disabled","disabled"));K.checked&&J.checked?C.getEditSelect().removeAttribute("disabled"):C.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,
+d,mxUtils.bind(this,function(){k(v.getTarget(),v.getColor(),null==E?!0:E.checked,J.checked,C.getLink(),M.checked,null!=q?q.value:null,null!=u?u.value:null,Z.checked)}),null,mxResources.get("create"),p,t);this.showDialog(c.container,340,300+b,!0,!0);null!=q?(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?q.select():document.execCommand("selectAll",!1,null)):v.focus()};EditorUi.prototype.showRemoteExportDialog=function(b,c,e,f,k){var d=document.createElement("div");d.style.whiteSpace=
+"nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(k?"10":"4")+"px";d.appendChild(g);if(k){mxUtils.write(d,mxResources.get("zoom")+":");var l=document.createElement("input");l.setAttribute("type","text");l.style.marginRight="16px";l.style.width="60px";l.style.marginLeft="4px";l.style.marginRight="12px";l.value=this.lastExportZoom||"100%";d.appendChild(l);mxUtils.write(d,mxResources.get("borderWidth")+
+":");var m=document.createElement("input");m.setAttribute("type","text");m.style.marginRight="16px";m.style.width="60px";m.style.marginLeft="4px";m.value=this.lastExportBorder||"0";d.appendChild(m);mxUtils.br(d)}var q=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),p=f?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram),g=this.editor.graph,t=f?null:this.addCheckbox(d,mxResources.get("transparentBackground"),g.background==
+mxConstants.NONE||null==g.background);null!=t&&(t.style.marginBottom="16px");b=new CustomDialog(this,d,mxUtils.bind(this,function(){var b=parseInt(l.value)/100||1,d=parseInt(m.value)||0;e(!q.checked,null!=p?p.checked:!1,null!=t?t.checked:!1,b,d)}),null,b,c);this.showDialog(b.container,300,(k?25:0)+(f?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(b,c,e,f,k,n,p,t,y){p=null!=p?p:Editor.defaultIncludeDiagram;var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph,
l="jpeg"==t?220:300,m=document.createElement("h3");mxUtils.write(m,b);m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(m);mxUtils.write(d,mxResources.get("zoom")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.marginRight="16px";q.style.width="60px";q.style.marginLeft="4px";q.style.marginRight="12px";q.value=this.lastExportZoom||"100%";d.appendChild(q);mxUtils.write(d,mxResources.get("borderWidth")+":");var u=document.createElement("input");
-u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.value=this.lastExportBorder||"0";d.appendChild(u);mxUtils.br(d);var v=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,f.isSelectionEmpty()),J=document.createElement("input");J.style.marginTop="16px";J.style.marginRight="8px";J.style.marginLeft="24px";J.setAttribute("disabled","disabled");J.setAttribute("type","checkbox");var C=document.createElement("select");C.style.marginTop="16px";C.style.marginLeft=
-"8px";b=["selectionOnly","diagram","page"];for(m=0;m<b.length;m++)if(!f.isSelectionEmpty()||"selectionOnly"!=b[m]){var K=document.createElement("option");mxUtils.write(K,mxResources.get(b[m]));K.setAttribute("value",b[m]);C.appendChild(K)}y?(mxUtils.write(d,mxResources.get("size")+":"),d.appendChild(C),mxUtils.br(d),l+=26,mxEvent.addListener(C,"change",function(){"selectionOnly"==C.value&&(v.checked=!0)})):n&&(d.appendChild(J),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),l+=30,mxEvent.addListener(v,
-"change",function(){v.checked?J.removeAttribute("disabled"):J.setAttribute("disabled","disabled")}));f.isSelectionEmpty()?y&&(v.style.display="none",v.nextSibling.style.display="none",v.nextSibling.nextSibling.style.display="none",l-=30):(C.value="diagram",J.setAttribute("checked","checked"),J.defaultChecked=!0,mxEvent.addListener(v,"change",function(){C.value=v.checked?"selectionOnly":"diagram"}));var M=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=t),aa=null;Editor.isDarkMode()&&
-(aa=this.addCheckbox(d,mxResources.get("dark"),!0),l+=26);var N=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible),O=document.createElement("input");O.style.marginTop="16px";O.style.marginRight="8px";O.setAttribute("type","checkbox");var U=document.createElement("input");U.style.marginTop="16px";U.style.marginRight="8px";U.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||O.setAttribute("disabled","disabled");c&&(d.appendChild(O),mxUtils.write(d,mxResources.get("embedImages")),
-mxUtils.br(d),d.appendChild(U),mxUtils.write(d,mxResources.get("embedFonts")),mxUtils.br(d),l+=60);var G=null;if("png"==t||"jpeg"==t)G=this.addCheckbox(d,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),l+=30;var I=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),p,null,null,"jpeg"!=t);I.style.marginBottom="16px";var A=document.createElement("select");A.style.maxWidth="260px";A.style.marginLeft="8px";A.style.marginRight="10px";A.className="geBtn";c=document.createElement("option");
-c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));A.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));A.appendChild(c);c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));A.appendChild(c);"svg"==t&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(A),mxUtils.br(d),mxUtils.br(d),l+=50);e=new CustomDialog(this,d,
-mxUtils.bind(this,function(){this.lastExportBorder=u.value;this.lastExportZoom=q.value;k(q.value,M.checked,!v.checked,N.checked,I.checked,O.checked,u.value,J.checked,!1,A.value,null!=G?G.checked:null,null!=aa?aa.checked:null,C.value,U.checked)}),null,e,g);this.showDialog(e.container,340,l,!0,!0,null,null,null,null,!0);q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?q.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,e,g,k){var d=
-document.createElement("div");d.style.whiteSpace="nowrap";var f=this.editor.graph;if(null!=c){var l=document.createElement("h3");mxUtils.write(l,c);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(l)}var m=this.addCheckbox(d,mxResources.get("fit"),!0),q=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible&&g,!g),p=this.addCheckbox(d,e),t=this.addCheckbox(d,mxResources.get("lightbox"),!0),z=this.addEditButton(d,t),D=z.getEditInput(),L=1<f.model.getChildCount(f.model.getRoot()),
-E=this.addCheckbox(d,mxResources.get("layers"),L,!L);E.style.marginLeft=D.style.marginLeft;E.style.marginBottom="12px";E.style.marginTop="8px";mxEvent.addListener(t,"change",function(){t.checked?(L&&E.removeAttribute("disabled"),D.removeAttribute("disabled")):(E.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"));D.checked&&t.checked?z.getEditSelect().removeAttribute("disabled"):z.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,
-function(){b(m.checked,q.checked,p.checked,t.checked,z.getLink(),E.checked)}),null,mxResources.get("embed"),k);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,e,g,k,n,p,t){function d(d){var c=" ",m="";g&&(c=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
-EditorUi.lightboxHost+"/?client=1"+(null!=l?"&page="+l:"")+(k?"&edit=_blank":"")+(n?"&layers=1":"")+"');}})(this);\"",m+="cursor:pointer;");b&&(m+="max-width:100%;");var q="";e&&(q=' width="'+Math.round(f.width)+'" height="'+Math.round(f.height)+'"');p('<img src="'+d+'"'+q+(""!=m?' style="'+m+'"':"")+c+"/>")}var f=this.editor.graph.getGraphBounds(),l=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(b){var c=g?this.getFileData(!0):null;b=
-this.createImageDataUri(b,c,"png");d(b)}),null,null,null,mxUtils.bind(this,function(b){t({message:mxResources.get("unknownError")})}),null,!0,e?2:1,null,c,null,null,Editor.defaultBorder);else if(c=this.getFileData(!0),f.width*f.height<=MAX_AREA&&c.length<=MAX_REQUEST_SIZE){var m="";e&&(m="&w="+Math.round(2*f.width)+"&h="+Math.round(2*f.height));var q=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(g?"1":"0")+m+"&xml="+encodeURIComponent(c));q.send(mxUtils.bind(this,function(){200<=q.getStatus()&&
-299>=q.getStatus()?d("data:image/png;base64,"+q.getText()):t({message:mxResources.get("unknownError")})}))}else t({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(b,c,e,g,k,n,p){var d=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!e),f=d.getElementsByTagName("a");if(null!=f)for(var l=0;l<f.length;l++){var m=f[l].getAttribute("href");null!=m&&"#"==m.charAt(0)&&"_blank"==f[l].getAttribute("target")&&f[l].removeAttribute("target")}g&&
-d.setAttribute("content",this.getFileData(!0));c&&this.editor.graph.addSvgShadow(d);if(e){var q=" ",t="";g&&(q="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+EditorUi.lightboxHost+"/?client=1"+(k?"&edit=_blank":"")+(n?"&layers=1":
-"")+"');}})(this);\"",t+="cursor:pointer;");b&&(t+="max-width:100%;");this.editor.convertImages(d,mxUtils.bind(this,function(b){p('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(b))+'"'+(""!=t?' style="'+t+'"':"")+q+"/>")}))}else t="",g&&(c=this.getSelectedPageIndex(),d.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+
+u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.value=this.lastExportBorder||"0";d.appendChild(u);mxUtils.br(d);var v=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),J=document.createElement("input");J.style.marginTop="16px";J.style.marginRight="8px";J.style.marginLeft="24px";J.setAttribute("disabled","disabled");J.setAttribute("type","checkbox");var C=document.createElement("select");C.style.marginTop="16px";C.style.marginLeft=
+"8px";b=["selectionOnly","diagram","page"];for(m=0;m<b.length;m++)if(!g.isSelectionEmpty()||"selectionOnly"!=b[m]){var K=document.createElement("option");mxUtils.write(K,mxResources.get(b[m]));K.setAttribute("value",b[m]);C.appendChild(K)}y?(mxUtils.write(d,mxResources.get("size")+":"),d.appendChild(C),mxUtils.br(d),l+=26,mxEvent.addListener(C,"change",function(){"selectionOnly"==C.value&&(v.checked=!0)})):n&&(d.appendChild(J),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),l+=30,mxEvent.addListener(v,
+"change",function(){v.checked?J.removeAttribute("disabled"):J.setAttribute("disabled","disabled")}));g.isSelectionEmpty()?y&&(v.style.display="none",v.nextSibling.style.display="none",v.nextSibling.nextSibling.style.display="none",l-=30):(C.value="diagram",J.setAttribute("checked","checked"),J.defaultChecked=!0,mxEvent.addListener(v,"change",function(){C.value=v.checked?"selectionOnly":"diagram"}));var M=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=t),Z=null;Editor.isDarkMode()&&
+(Z=this.addCheckbox(d,mxResources.get("dark"),!0),l+=26);var L=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible),O=document.createElement("input");O.style.marginTop="16px";O.style.marginRight="8px";O.setAttribute("type","checkbox");var U=document.createElement("input");U.style.marginTop="16px";U.style.marginRight="8px";U.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||O.setAttribute("disabled","disabled");c&&(d.appendChild(O),mxUtils.write(d,mxResources.get("embedImages")),
+mxUtils.br(d),d.appendChild(U),mxUtils.write(d,mxResources.get("embedFonts")),mxUtils.br(d),l+=60);var G=null;if("png"==t||"jpeg"==t)G=this.addCheckbox(d,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),l+=30;var I=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),p,null,null,"jpeg"!=t);I.style.marginBottom="16px";var B=document.createElement("select");B.style.maxWidth="260px";B.style.marginLeft="8px";B.style.marginRight="10px";B.className="geBtn";c=document.createElement("option");
+c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));B.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));B.appendChild(c);c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));B.appendChild(c);"svg"==t&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(B),mxUtils.br(d),mxUtils.br(d),l+=50);e=new CustomDialog(this,d,
+mxUtils.bind(this,function(){this.lastExportBorder=u.value;this.lastExportZoom=q.value;k(q.value,M.checked,!v.checked,L.checked,I.checked,O.checked,u.value,J.checked,!1,B.value,null!=G?G.checked:null,null!=Z?Z.checked:null,C.value,U.checked)}),null,e,f);this.showDialog(e.container,340,l,!0,!0,null,null,null,null,!0);q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?q.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,e,f,k){var d=
+document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph;if(null!=c){var l=document.createElement("h3");mxUtils.write(l,c);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(l)}var m=this.addCheckbox(d,mxResources.get("fit"),!0),q=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible&&f,!f),p=this.addCheckbox(d,e),t=this.addCheckbox(d,mxResources.get("lightbox"),!0),z=this.addEditButton(d,t),D=z.getEditInput(),N=1<g.model.getChildCount(g.model.getRoot()),
+E=this.addCheckbox(d,mxResources.get("layers"),N,!N);E.style.marginLeft=D.style.marginLeft;E.style.marginBottom="12px";E.style.marginTop="8px";mxEvent.addListener(t,"change",function(){t.checked?(N&&E.removeAttribute("disabled"),D.removeAttribute("disabled")):(E.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"));D.checked&&t.checked?z.getEditSelect().removeAttribute("disabled"):z.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,
+function(){b(m.checked,q.checked,p.checked,t.checked,z.getLink(),E.checked)}),null,mxResources.get("embed"),k);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,e,f,k,n,p,t){function d(d){var c=" ",m="";f&&(c=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
+EditorUi.lightboxHost+"/?client=1"+(null!=l?"&page="+l:"")+(k?"&edit=_blank":"")+(n?"&layers=1":"")+"');}})(this);\"",m+="cursor:pointer;");b&&(m+="max-width:100%;");var q="";e&&(q=' width="'+Math.round(g.width)+'" height="'+Math.round(g.height)+'"');p('<img src="'+d+'"'+q+(""!=m?' style="'+m+'"':"")+c+"/>")}var g=this.editor.graph.getGraphBounds(),l=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(b){var c=f?this.getFileData(!0):null;b=
+this.createImageDataUri(b,c,"png");d(b)}),null,null,null,mxUtils.bind(this,function(b){t({message:mxResources.get("unknownError")})}),null,!0,e?2:1,null,c,null,null,Editor.defaultBorder);else if(c=this.getFileData(!0),g.width*g.height<=MAX_AREA&&c.length<=MAX_REQUEST_SIZE){var m="";e&&(m="&w="+Math.round(2*g.width)+"&h="+Math.round(2*g.height));var q=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(f?"1":"0")+m+"&xml="+encodeURIComponent(c));q.send(mxUtils.bind(this,function(){200<=q.getStatus()&&
+299>=q.getStatus()?d("data:image/png;base64,"+q.getText()):t({message:mxResources.get("unknownError")})}))}else t({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(b,c,e,f,k,n,p){var d=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!e),g=d.getElementsByTagName("a");if(null!=g)for(var l=0;l<g.length;l++){var m=g[l].getAttribute("href");null!=m&&"#"==m.charAt(0)&&"_blank"==g[l].getAttribute("target")&&g[l].removeAttribute("target")}f&&
+d.setAttribute("content",this.getFileData(!0));c&&this.editor.graph.addSvgShadow(d);if(e){var q=" ",t="";f&&(q="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+EditorUi.lightboxHost+"/?client=1"+(k?"&edit=_blank":"")+(n?"&layers=1":
+"")+"');}})(this);\"",t+="cursor:pointer;");b&&(t+="max-width:100%;");this.editor.convertImages(d,mxUtils.bind(this,function(b){p('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(b))+'"'+(""!=t?' style="'+t+'"':"")+q+"/>")}))}else t="",f&&(c=this.getSelectedPageIndex(),d.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+
EditorUi.lightboxHost+"/?client=1"+(null!=c?"&page="+c:"")+(k?"&edit=_blank":"")+(n?"&layers=1":"")+"');}}})(this);"),t+="cursor:pointer;"),b&&(b=parseInt(d.getAttribute("width")),k=parseInt(d.getAttribute("height")),d.setAttribute("viewBox","-0.5 -0.5 "+b+" "+k),t+="max-width:100%;max-height:"+k+"px;",d.removeAttribute("height")),""!=t&&d.setAttribute("style",t),this.editor.addFontCss(d),this.editor.graph.mathEnabled&&this.editor.addMathCss(d),p(mxUtils.getXml(d))};EditorUi.prototype.timeSince=function(b){b=
Math.floor((new Date-b)/1E3);var d=Math.floor(b/31536E3);if(1<d)return d+" "+mxResources.get("years");d=Math.floor(b/2592E3);if(1<d)return d+" "+mxResources.get("months");d=Math.floor(b/86400);if(1<d)return d+" "+mxResources.get("days");d=Math.floor(b/3600);if(1<d)return d+" "+mxResources.get("hours");d=Math.floor(b/60);return 1<d?d+" "+mxResources.get("minutes"):1==d?d+" "+mxResources.get("minute"):null};EditorUi.prototype.decodeNodeIntoGraph=function(b,c){if(null!=b){var d=null;if("diagram"==b.nodeName)d=
-b;else if("mxfile"==b.nodeName){var e=b.getElementsByTagName("diagram");if(0<e.length){var d=e[0],f=c.getGlobalVariable;c.getGlobalVariable=function(b){return"page"==b?d.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==b?1:f.apply(this,arguments)}}}null!=d&&(b=Editor.parseDiagramNode(d))}e=this.editor.graph;try{this.editor.graph=c,this.editor.setGraphXml(b)}catch(n){}finally{this.editor.graph=e}return b};EditorUi.prototype.getPngFileProperties=function(b){var d=1,c=0;if(null!=
-b){if(b.hasAttribute("scale")){var e=parseFloat(b.getAttribute("scale"));!isNaN(e)&&0<e&&(d=e)}b.hasAttribute("border")&&(e=parseInt(b.getAttribute("border")),!isNaN(e)&&0<e&&(c=e))}return{scale:d,border:c}};EditorUi.prototype.getEmbeddedPng=function(b,c,e,g,k){try{var d=this.editor.graph,f=null!=d.themes&&"darkTheme"==d.defaultThemeName,l=null;if(null!=e&&0<e.length)d=this.createTemporaryGraph(f?d.getDefaultStylesheet():d.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(e).documentElement,
-!0),d),l=e;else if(f||null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(f?d.getDefaultStylesheet():d.getStylesheet()),m=d.getGlobalVariable;d.setBackgroundImage=this.editor.graph.setBackgroundImage;var q=this.pages[0];this.currentPage==q?d.setBackgroundImage(this.editor.graph.backgroundImage):null!=q.viewState&&null!=q.viewState&&d.setBackgroundImage(q.viewState.backgroundImage);d.getGlobalVariable=function(b){return"page"==b?q.getName():"pagenumber"==b?1:m.apply(this,
-arguments)};document.body.appendChild(d.container);d.model.setRoot(q.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(e){try{null==l&&(l=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var f=e.toDataURL("image/png"),f=Editor.writeGraphModelToPng(f,"tEXt","mxfile",encodeURIComponent(l));b(f.substring(f.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(z){null!=c&&c(z)}}),null,null,null,mxUtils.bind(this,function(b){null!=c&&
-c(b)}),null,null,g,null,d.shadowVisible,null,d,k,null,null,null,"diagram",null)}catch(F){null!=c&&c(F)}};EditorUi.prototype.getEmbeddedSvg=function(b,c,e,g,k,n,p,t,y,x,F,H,z){t=null!=t?t:!0;F=null!=F?F:0;p=null!=y?y:c.background;p==mxConstants.NONE&&(p=null);n=c.getSvg(p,x,F,null,null,n,null,null,null,c.shadowVisible||H,null,z,"diagram");(c.shadowVisible||H)&&c.addSvgShadow(n,null,null,0==F);null!=b&&n.setAttribute("content",b);null!=e&&n.setAttribute("resource",e);var d=mxUtils.bind(this,function(b){b=
-(g?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(b);null!=k&&k(b);return b});c.mathEnabled&&this.editor.addMathCss(n);if(null!=k)this.embedFonts(n,mxUtils.bind(this,function(b){t?this.editor.convertImages(b,mxUtils.bind(this,function(b){d(b)})):d(b)}));else return d(n)};EditorUi.prototype.embedFonts=function(b,c){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(b,this.editor.resolvedFontCss),
-this.editor.embedExtFonts(mxUtils.bind(this,function(d){try{null!=d&&this.editor.addFontCss(b,d),c(b)}catch(q){c(b)}}))}catch(l){c(b)}}))};EditorUi.prototype.exportImage=function(b,c,e,g,k,n,p,t,y,x,F,H,z){y=null!=y?y:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(b){this.spinner.stop();try{this.saveCanvas(b,
-k?this.getFileData(!0,null,null,null,e,t):null,y,null==this.pages||0==this.pages.length,F)}catch(E){this.handleError(E)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,e,b||1,c,g,null,null,n,p,x,H,z)}catch(L){this.spinner.stop(),this.handleError(L)}}};EditorUi.prototype.isCorsEnabledForUrl=function(b){return this.editor.isCorsEnabledForUrl(b)};EditorUi.prototype.importXml=function(b,c,e,g,k,n,p){c=null!=c?c:0;e=null!=e?e:0;var d=[];try{var f=
-this.editor.graph;if(null!=b&&0<b.length){f.model.beginUpdate();try{var l=mxUtils.parseXml(b);b={};var m=this.editor.extractGraphModel(l.documentElement,null!=this.pages);if(null!=m&&"mxfile"==m.nodeName&&null!=this.pages){var q=m.getElementsByTagName("diagram");if(1==q.length&&!n){if(m=Editor.parseDiagramNode(q[0]),null!=this.currentPage&&(b[q[0].getAttribute("id")]=this.currentPage.getId(),null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",
-[1]))){var t=q[0].getAttribute("name");null!=t&&""!=t&&this.editor.graph.model.execute(new RenamePage(this,this.currentPage,t))}}else if(0<q.length){n=[];var u=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(b[q[0].getAttribute("id")]=this.pages[0].getId(),m=Editor.parseDiagramNode(q[0]),g=!1,u=1);for(;u<q.length;u++){var L=q[u].getAttribute("id");q[u].removeAttribute("id");var E=this.updatePageRoot(new DiagramPage(q[u]));b[L]=q[u].getAttribute("id");var J=this.pages.length;null==
-E.getName()&&E.setName(mxResources.get("pageWithNumber",[J+1]));f.model.execute(new ChangePage(this,E,E,J,!0));n.push(E)}this.updatePageLinks(b,n)}}if(null!=m&&"mxGraphModel"===m.nodeName&&(d=f.importGraphModel(m,c,e,g),null!=d))for(u=0;u<d.length;u++)this.updatePageLinksForCell(b,d[u]);p&&this.insertHandler(d,null,null,f.defaultVertexStyle,f.defaultEdgeStyle,!1,!0)}finally{f.model.endUpdate()}}}catch(C){if(k)throw C;this.handleError(C)}return d};EditorUi.prototype.updatePageLinks=function(b,c){for(var d=
-0;d<c.length;d++)this.updatePageLinksForCell(b,c[d].root)};EditorUi.prototype.updatePageLinksForCell=function(b,c){var d=document.createElement("div"),e=this.editor.graph,f=e.getLinkForCell(c);null!=f&&e.setLinkForCell(c,this.updatePageLink(b,f));if(e.isHtmlLabel(c)){d.innerHTML=e.sanitizeHtml(e.getLabel(c));for(var g=d.getElementsByTagName("a"),k=!1,p=0;p<g.length;p++)f=g[p].getAttribute("href"),null!=f&&(g[p].setAttribute("href",this.updatePageLink(b,f)),k=!0);k&&e.labelChanged(c,d.innerHTML)}for(p=
-0;p<e.model.getChildCount(c);p++)this.updatePageLinksForCell(b,e.model.getChildAt(c,p))};EditorUi.prototype.updatePageLink=function(b,c){if(Graph.isPageLink(c)){var d=b[c.substring(c.indexOf(",")+1)];c=null!=d?"data:page/id,"+d:null}else if("data:action/json,"==c.substring(0,17))try{var e=JSON.parse(c.substring(17));if(null!=e.actions){for(var f=0;f<e.actions.length;f++){var g=e.actions[f];if(null!=g.open&&Graph.isPageLink(g.open)){var k=g.open.substring(g.open.indexOf(",")+1),d=b[k];null!=d?g.open=
-"data:page/id,"+d:null==this.getPageById(k)&&delete g.open}}c="data:action/json,"+JSON.stringify(e)}}catch(v){}return c};EditorUi.prototype.isRemoteVisioFormat=function(b){return/(\.v(sd|dx))($|\?)/i.test(b)||/(\.vs(s|x))($|\?)/i.test(b)};EditorUi.prototype.importVisio=function(b,c,e,g,k){g=null!=g?g:b.name;e=null!=e?e:mxUtils.bind(this,function(b){this.handleError(b)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var d=this.isRemoteVisioFormat(g);try{var f=
-"UNKNOWN-VISIO",l=g.lastIndexOf(".");if(0<=l&&l<g.length)f=g.substring(l+1).toUpperCase();else{var m=g.lastIndexOf("/");0<=m&&m<g.length&&(g=g.substring(m+1))}EditorUi.logEvent({category:f+"-MS-IMPORT-FILE",action:"filename_"+g,label:d?"remote":"local"})}catch(H){}if(d)if(null==VSD_CONVERT_URL||this.isOffline())e({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{d=new FormData;d.append("file1",b,g);var n=new XMLHttpRequest;
-n.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(g)?"?stencil=1":""));n.responseType="blob";this.addRemoteServiceSecurityCheck(n);null!=k&&n.setRequestHeader("x-convert-custom",k);n.onreadystatechange=mxUtils.bind(this,function(){if(4==n.readyState)if(200<=n.status&&299>=n.status)try{var b=n.response;if("text/xml"==b.type){var d=new FileReader;d.onload=mxUtils.bind(this,function(b){try{c(b.target.result)}catch(L){e({message:mxResources.get("errorLoadingFile")})}});d.readAsText(b)}else this.doImportVisio(b,
-c,e,g)}catch(D){e(D)}else try{""==n.responseType||"text"==n.responseType?e({message:n.responseText}):(d=new FileReader,d.onload=function(){e({message:JSON.parse(d.result).Message})},d.readAsText(n.response))}catch(D){e({})}});n.send(d)}else try{this.doImportVisio(b,c,e,g)}catch(H){e(H)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",
+b;else if("mxfile"==b.nodeName){var e=b.getElementsByTagName("diagram");if(0<e.length){var d=e[0],g=c.getGlobalVariable;c.getGlobalVariable=function(b){return"page"==b?d.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==b?1:g.apply(this,arguments)}}}null!=d&&(b=Editor.parseDiagramNode(d))}e=this.editor.graph;try{this.editor.graph=c,this.editor.setGraphXml(b)}catch(n){}finally{this.editor.graph=e}return b};EditorUi.prototype.getPngFileProperties=function(b){var d=1,c=0;if(null!=
+b){if(b.hasAttribute("scale")){var e=parseFloat(b.getAttribute("scale"));!isNaN(e)&&0<e&&(d=e)}b.hasAttribute("border")&&(e=parseInt(b.getAttribute("border")),!isNaN(e)&&0<e&&(c=e))}return{scale:d,border:c}};EditorUi.prototype.getEmbeddedPng=function(b,c,e,f,k){try{var d=this.editor.graph,g=null!=d.themes&&"darkTheme"==d.defaultThemeName,l=null;if(null!=e&&0<e.length)d=this.createTemporaryGraph(g?d.getDefaultStylesheet():d.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(e).documentElement,
+!0),d),l=e;else if(g||null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(g?d.getDefaultStylesheet():d.getStylesheet()),m=d.getGlobalVariable;d.setBackgroundImage=this.editor.graph.setBackgroundImage;var q=this.pages[0];this.currentPage==q?d.setBackgroundImage(this.editor.graph.backgroundImage):null!=q.viewState&&null!=q.viewState&&d.setBackgroundImage(q.viewState.backgroundImage);d.getGlobalVariable=function(b){return"page"==b?q.getName():"pagenumber"==b?1:m.apply(this,
+arguments)};document.body.appendChild(d.container);d.model.setRoot(q.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(e){try{null==l&&(l=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var g=e.toDataURL("image/png"),g=Editor.writeGraphModelToPng(g,"tEXt","mxfile",encodeURIComponent(l));b(g.substring(g.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(z){null!=c&&c(z)}}),null,null,null,mxUtils.bind(this,function(b){null!=c&&
+c(b)}),null,null,f,null,d.shadowVisible,null,d,k,null,null,null,"diagram",null)}catch(F){null!=c&&c(F)}};EditorUi.prototype.getEmbeddedSvg=function(b,c,e,f,k,n,p,t,y,x,F,H,z){t=null!=t?t:!0;F=null!=F?F:0;p=null!=y?y:c.background;p==mxConstants.NONE&&(p=null);n=c.getSvg(p,x,F,null,null,n,null,null,null,c.shadowVisible||H,null,z,"diagram");(c.shadowVisible||H)&&c.addSvgShadow(n,null,null,0==F);null!=b&&n.setAttribute("content",b);null!=e&&n.setAttribute("resource",e);var d=mxUtils.bind(this,function(b){b=
+(f?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(b);null!=k&&k(b);return b});c.mathEnabled&&this.editor.addMathCss(n);if(null!=k)this.embedFonts(n,mxUtils.bind(this,function(b){t?this.editor.convertImages(b,mxUtils.bind(this,function(b){d(b)})):d(b)}));else return d(n)};EditorUi.prototype.embedFonts=function(b,c){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(b,this.editor.resolvedFontCss),
+this.editor.embedExtFonts(mxUtils.bind(this,function(d){try{null!=d&&this.editor.addFontCss(b,d),c(b)}catch(q){c(b)}}))}catch(l){c(b)}}))};EditorUi.prototype.exportImage=function(b,c,e,f,k,n,p,t,y,x,F,H,z){y=null!=y?y:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(b){this.spinner.stop();try{this.saveCanvas(b,
+k?this.getFileData(!0,null,null,null,e,t):null,y,null==this.pages||0==this.pages.length,F)}catch(E){this.handleError(E)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,e,b||1,c,f,null,null,n,p,x,H,z)}catch(N){this.spinner.stop(),this.handleError(N)}}};EditorUi.prototype.isCorsEnabledForUrl=function(b){return this.editor.isCorsEnabledForUrl(b)};EditorUi.prototype.importXml=function(b,c,e,f,k,n,p){c=null!=c?c:0;e=null!=e?e:0;var d=[];try{var g=
+this.editor.graph;if(null!=b&&0<b.length){g.model.beginUpdate();try{var l=mxUtils.parseXml(b);b={};var m=this.editor.extractGraphModel(l.documentElement,null!=this.pages);if(null!=m&&"mxfile"==m.nodeName&&null!=this.pages){var q=m.getElementsByTagName("diagram");if(1==q.length&&!n){if(m=Editor.parseDiagramNode(q[0]),null!=this.currentPage&&(b[q[0].getAttribute("id")]=this.currentPage.getId(),null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",
+[1]))){var t=q[0].getAttribute("name");null!=t&&""!=t&&this.editor.graph.model.execute(new RenamePage(this,this.currentPage,t))}}else if(0<q.length){n=[];var u=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(b[q[0].getAttribute("id")]=this.pages[0].getId(),m=Editor.parseDiagramNode(q[0]),f=!1,u=1);for(;u<q.length;u++){var N=q[u].getAttribute("id");q[u].removeAttribute("id");var E=this.updatePageRoot(new DiagramPage(q[u]));b[N]=q[u].getAttribute("id");var J=this.pages.length;null==
+E.getName()&&E.setName(mxResources.get("pageWithNumber",[J+1]));g.model.execute(new ChangePage(this,E,E,J,!0));n.push(E)}this.updatePageLinks(b,n)}}if(null!=m&&"mxGraphModel"===m.nodeName&&(d=g.importGraphModel(m,c,e,f),null!=d))for(u=0;u<d.length;u++)this.updatePageLinksForCell(b,d[u]);p&&this.insertHandler(d,null,null,g.defaultVertexStyle,g.defaultEdgeStyle,!1,!0)}finally{g.model.endUpdate()}}}catch(C){if(k)throw C;this.handleError(C)}return d};EditorUi.prototype.updatePageLinks=function(b,c){for(var d=
+0;d<c.length;d++)this.updatePageLinksForCell(b,c[d].root)};EditorUi.prototype.updatePageLinksForCell=function(b,c){var d=document.createElement("div"),e=this.editor.graph,g=e.getLinkForCell(c);null!=g&&e.setLinkForCell(c,this.updatePageLink(b,g));if(e.isHtmlLabel(c)){d.innerHTML=e.sanitizeHtml(e.getLabel(c));for(var f=d.getElementsByTagName("a"),k=!1,p=0;p<f.length;p++)g=f[p].getAttribute("href"),null!=g&&(f[p].setAttribute("href",this.updatePageLink(b,g)),k=!0);k&&e.labelChanged(c,d.innerHTML)}for(p=
+0;p<e.model.getChildCount(c);p++)this.updatePageLinksForCell(b,e.model.getChildAt(c,p))};EditorUi.prototype.updatePageLink=function(b,c){if(Graph.isPageLink(c)){var d=b[c.substring(c.indexOf(",")+1)];c=null!=d?"data:page/id,"+d:null}else if("data:action/json,"==c.substring(0,17))try{var e=JSON.parse(c.substring(17));if(null!=e.actions){for(var g=0;g<e.actions.length;g++){var f=e.actions[g];if(null!=f.open&&Graph.isPageLink(f.open)){var k=f.open.substring(f.open.indexOf(",")+1),d=b[k];null!=d?f.open=
+"data:page/id,"+d:null==this.getPageById(k)&&delete f.open}}c="data:action/json,"+JSON.stringify(e)}}catch(v){}return c};EditorUi.prototype.isRemoteVisioFormat=function(b){return/(\.v(sd|dx))($|\?)/i.test(b)||/(\.vs(s|x))($|\?)/i.test(b)};EditorUi.prototype.importVisio=function(b,c,e,f,k){f=null!=f?f:b.name;e=null!=e?e:mxUtils.bind(this,function(b){this.handleError(b)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var d=this.isRemoteVisioFormat(f);try{var g=
+"UNKNOWN-VISIO",l=f.lastIndexOf(".");if(0<=l&&l<f.length)g=f.substring(l+1).toUpperCase();else{var m=f.lastIndexOf("/");0<=m&&m<f.length&&(f=f.substring(m+1))}EditorUi.logEvent({category:g+"-MS-IMPORT-FILE",action:"filename_"+f,label:d?"remote":"local"})}catch(H){}if(d)if(null==VSD_CONVERT_URL||this.isOffline())e({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{d=new FormData;d.append("file1",b,f);var n=new XMLHttpRequest;
+n.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(f)?"?stencil=1":""));n.responseType="blob";this.addRemoteServiceSecurityCheck(n);null!=k&&n.setRequestHeader("x-convert-custom",k);n.onreadystatechange=mxUtils.bind(this,function(){if(4==n.readyState)if(200<=n.status&&299>=n.status)try{var b=n.response;if("text/xml"==b.type){var d=new FileReader;d.onload=mxUtils.bind(this,function(b){try{c(b.target.result)}catch(N){e({message:mxResources.get("errorLoadingFile")})}});d.readAsText(b)}else this.doImportVisio(b,
+c,e,f)}catch(D){e(D)}else try{""==n.responseType||"text"==n.responseType?e({message:n.responseText}):(d=new FileReader,d.onload=function(){e({message:JSON.parse(d.result).Message})},d.readAsText(n.response))}catch(D){e({})}});n.send(d)}else try{this.doImportVisio(b,c,e,f)}catch(H){e(H)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",
d))};EditorUi.prototype.importGraphML=function(b,c,e){e=null!=e?e:mxUtils.bind(this,function(b){this.handleError(b)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(b,c,e)}catch(m){e(m)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.exportVisio=
function(b){var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams(b)||this.handleError({message:mxResources.get("unknownError")})}catch(l){this.handleError(l)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.convertLucidChart=
-function(b,c,e){var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{var d=JSON.parse(b);c(LucidImporter.importState(d));try{if(EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+b.length}),null!=window.console&&"1"==urlParams.test){var f=[(new Date).toISOString(),"convertLucidChart",d];null!=d.state&&f.push(JSON.parse(d.state));if(null!=d.svgThumbs)for(var g=0;g<d.svgThumbs.length;g++)f.push(Editor.createSvgDataUri(d.svgThumbs[g]));
-null!=d.thumb&&f.push(d.thumb);console.log.apply(console,f)}}catch(v){}}catch(v){null!=window.console&&console.error(v),e(v)}else e({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(d,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",function(){mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",
-function(){mxscript("js/orgchart/mxOrgChartLayout.js",d)})})})}):mxscript("js/extensions.min.js",d))};EditorUi.prototype.generateMermaidImage=function(b,c,e,g){var d=this,f=function(){try{this.loadingMermaid=!1,c=null!=c?c:EditorUi.defaultMermaidConfig,c.securityLevel="strict",c.startOnLoad=!1,mermaid.mermaidAPI.initialize(c),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),b,function(b){try{if(mxClient.IS_IE||mxClient.IS_IE11)b=b.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,
-"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var c=mxUtils.parseXml(b).getElementsByTagName("svg");if(0<c.length){var f=parseFloat(c[0].getAttribute("width")),l=parseFloat(c[0].getAttribute("height"));if(isNaN(f)||isNaN(l))try{var k=c[0].getAttribute("viewBox").split(/\s+/),f=parseFloat(k[2]),l=parseFloat(k[3])}catch(H){f=f||100,l=l||100}e(d.convertDataUri(Editor.createSvgDataUri(b)),f,l)}else g({message:mxResources.get("invalidInput")})}catch(H){g(H)}})}catch(u){g(u)}};
-"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?f():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",f):mxscript("js/extensions.min.js",f))};EditorUi.prototype.generatePlantUmlImage=function(b,c,e,g){function d(b,d,c){c1=b>>2;c2=(b&3)<<4|d>>4;c3=(d&15)<<2|c>>6;c4=c&63;r="";r+=f(c1&63);r+=f(c2&63);r+=f(c3&63);return r+=f(c4&63)}function f(b){if(10>b)return String.fromCharCode(48+b);b-=10;if(26>b)return String.fromCharCode(65+b);b-=26;if(26>b)return String.fromCharCode(97+
+function(b,c,e){var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{var d=JSON.parse(b);c(LucidImporter.importState(d));try{if(EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+b.length}),null!=window.console&&"1"==urlParams.test){var g=[(new Date).toISOString(),"convertLucidChart",d];null!=d.state&&g.push(JSON.parse(d.state));if(null!=d.svgThumbs)for(var f=0;f<d.svgThumbs.length;f++)g.push(Editor.createSvgDataUri(d.svgThumbs[f]));
+null!=d.thumb&&g.push(d.thumb);console.log.apply(console,g)}}catch(v){}}catch(v){null!=window.console&&console.error(v),e(v)}else e({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(d,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",function(){mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",
+function(){mxscript("js/orgchart/mxOrgChartLayout.js",d)})})})}):mxscript("js/extensions.min.js",d))};EditorUi.prototype.generateMermaidImage=function(b,c,e,f){var d=this,g=function(){try{this.loadingMermaid=!1,c=null!=c?c:mxUtils.clone(EditorUi.defaultMermaidConfig),c.securityLevel="strict",c.startOnLoad=!1,Editor.isDarkMode()&&(c.theme="dark"),mermaid.mermaidAPI.initialize(c),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),b,function(b){try{if(mxClient.IS_IE||mxClient.IS_IE11)b=
+b.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var c=mxUtils.parseXml(b).getElementsByTagName("svg");if(0<c.length){var g=parseFloat(c[0].getAttribute("width")),l=parseFloat(c[0].getAttribute("height"));if(isNaN(g)||isNaN(l))try{var k=c[0].getAttribute("viewBox").split(/\s+/),g=parseFloat(k[2]),l=parseFloat(k[3])}catch(H){g=g||100,l=l||100}e(d.convertDataUri(Editor.createSvgDataUri(b)),g,l)}else f({message:mxResources.get("invalidInput")})}catch(H){f(H)}})}catch(u){f(u)}};
+"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?g():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",g):mxscript("js/extensions.min.js",g))};EditorUi.prototype.generatePlantUmlImage=function(b,c,e,f){function d(b,d,c){c1=b>>2;c2=(b&3)<<4|d>>4;c3=(d&15)<<2|c>>6;c4=c&63;r="";r+=g(c1&63);r+=g(c2&63);r+=g(c3&63);return r+=g(c4&63)}function g(b){if(10>b)return String.fromCharCode(48+b);b-=10;if(26>b)return String.fromCharCode(65+b);b-=26;if(26>b)return String.fromCharCode(97+
b);b-=26;return 0==b?"-":1==b?"_":"?"}var l=new XMLHttpRequest;l.open("GET",("txt"==c?PLANT_URL+"/txt/":"png"==c?PLANT_URL+"/png/":PLANT_URL+"/svg/")+function(b){r="";for(i=0;i<b.length;i+=3)r=i+2==b.length?r+d(b.charCodeAt(i),b.charCodeAt(i+1),0):i+1==b.length?r+d(b.charCodeAt(i),0,0):r+d(b.charCodeAt(i),b.charCodeAt(i+1),b.charCodeAt(i+2));return r}(Graph.arrayBufferToString(pako.deflateRaw(b))),!0);"txt"!=c&&(l.responseType="blob");l.onload=function(b){if(200<=this.status&&300>this.status)if("txt"==
-c)e(this.response);else{var d=new FileReader;d.readAsDataURL(this.response);d.onloadend=function(b){var c=new Image;c.onload=function(){try{var b=c.width,f=c.height;if(0==b&&0==f){var l=d.result,k=l.indexOf(","),m=decodeURIComponent(escape(atob(l.substring(k+1)))),n=mxUtils.parseXml(m).getElementsByTagName("svg");0<n.length&&(b=parseFloat(n[0].getAttribute("width")),f=parseFloat(n[0].getAttribute("height")))}e(d.result,b,f)}catch(C){g(C)}};c.src=d.result};d.onerror=function(b){g(b)}}else g(b)};l.onerror=
-function(b){g(b)};l.send()};EditorUi.prototype.insertAsPreText=function(b,c,e){var d=this.editor.graph,f=null;d.getModel().beginUpdate();try{f=d.insertVertex(null,null,"<pre>"+b+"</pre>",c,e,1,1,"text;html=1;align=left;verticalAlign=top;"),d.updateCellSize(f,!0)}finally{d.getModel().endUpdate()}return f};EditorUi.prototype.insertTextAt=function(b,c,e,g,k,n,p,t){n=null!=n?n:!0;p=null!=p?p:!0;if(null!=b)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b))this.parseFile(new Blob([b.replace(/\s+/g,
-" ")],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&200<=b.status&&299>=b.status&&this.editor.graph.setSelectionCells(this.insertTextAt(b.responseText,c,e,!0))}));else if("data:"==b.substring(0,5)||!this.isOffline()&&(k||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(b))){var d=this.editor.graph;if("data:application/pdf;base64,"==b.substring(0,28)){var f=Editor.extractGraphModelFromPdf(b);if(null!=f&&0<f.length)return this.importXml(f,c,e,n,!0,t)}if(Editor.isPngDataUrl(b)&&
-(f=Editor.extractGraphModelFromPng(b),null!=f&&0<f.length))return this.importXml(f,c,e,n,!0,t);if("data:image/svg+xml;"==b.substring(0,19))try{f=null;"data:image/svg+xml;base64,"==b.substring(0,26)?(f=b.substring(b.indexOf(",")+1),f=window.atob&&!mxClient.IS_SF?atob(f):Base64.decode(f,!0)):f=decodeURIComponent(b.substring(b.indexOf(",")+1));var l=this.importXml(f,c,e,n,!0,t);if(0<l.length)return l}catch(z){}this.loadImage(b,mxUtils.bind(this,function(f){if("data:"==b.substring(0,5))this.resizeImage(f,
-b,mxUtils.bind(this,function(b,f,g){d.setSelectionCell(d.insertVertex(null,null,"",d.snap(c),d.snap(e),f,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(b)+";"))}),p,this.maxImageSize);else{var g=Math.min(1,Math.min(this.maxImageSize/f.width,this.maxImageSize/f.height)),l=Math.round(f.width*g);f=Math.round(f.height*g);d.setSelectionCell(d.insertVertex(null,null,"",d.snap(c),d.snap(e),l,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
-b+";"))}}),mxUtils.bind(this,function(){var f=null;d.getModel().beginUpdate();try{f=d.insertVertex(d.getDefaultParent(),null,b,d.snap(c),d.snap(e),1,1,"text;"+(g?"html=1;":"")),d.updateCellSize(f),d.fireEvent(new mxEventObject("textInserted","cells",[f]))}finally{d.getModel().endUpdate()}d.setSelectionCell(f)}))}else{b=Graph.zapGremlins(mxUtils.trim(b));if(this.isCompatibleString(b))return this.importXml(b,c,e,n,null,t);if(0<b.length)if(this.isLucidChartData(b))this.convertLucidChart(b,mxUtils.bind(this,
-function(b){this.editor.graph.setSelectionCells(this.importXml(b,c,e,n,null,t))}),mxUtils.bind(this,function(b){this.handleError(b)}));else{d=this.editor.graph;k=null;d.getModel().beginUpdate();try{k=d.insertVertex(d.getDefaultParent(),null,"",d.snap(c),d.snap(e),1,1,"text;whiteSpace=wrap;"+(g?"html=1;":""));d.fireEvent(new mxEventObject("textInserted","cells",[k]));"<"==b.charAt(0)&&b.indexOf(">")==b.length-1&&(b=mxUtils.htmlEntities(b));b.length>this.maxTextBytes&&(b=b.substring(0,this.maxTextBytes)+
+c)e(this.response);else{var d=new FileReader;d.readAsDataURL(this.response);d.onloadend=function(b){var c=new Image;c.onload=function(){try{var b=c.width,g=c.height;if(0==b&&0==g){var l=d.result,k=l.indexOf(","),m=decodeURIComponent(escape(atob(l.substring(k+1)))),n=mxUtils.parseXml(m).getElementsByTagName("svg");0<n.length&&(b=parseFloat(n[0].getAttribute("width")),g=parseFloat(n[0].getAttribute("height")))}e(d.result,b,g)}catch(C){f(C)}};c.src=d.result};d.onerror=function(b){f(b)}}else f(b)};l.onerror=
+function(b){f(b)};l.send()};EditorUi.prototype.insertAsPreText=function(b,c,e){var d=this.editor.graph,g=null;d.getModel().beginUpdate();try{g=d.insertVertex(null,null,"<pre>"+b+"</pre>",c,e,1,1,"text;html=1;align=left;verticalAlign=top;"),d.updateCellSize(g,!0)}finally{d.getModel().endUpdate()}return g};EditorUi.prototype.insertTextAt=function(b,c,e,f,k,n,p,t){n=null!=n?n:!0;p=null!=p?p:!0;if(null!=b)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b))this.parseFile(new Blob([b.replace(/\s+/g,
+" ")],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&200<=b.status&&299>=b.status&&this.editor.graph.setSelectionCells(this.insertTextAt(b.responseText,c,e,!0))}));else if("data:"==b.substring(0,5)||!this.isOffline()&&(k||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(b))){var d=this.editor.graph;if("data:application/pdf;base64,"==b.substring(0,28)){var g=Editor.extractGraphModelFromPdf(b);if(null!=g&&0<g.length)return this.importXml(g,c,e,n,!0,t)}if(Editor.isPngDataUrl(b)&&
+(g=Editor.extractGraphModelFromPng(b),null!=g&&0<g.length))return this.importXml(g,c,e,n,!0,t);if("data:image/svg+xml;"==b.substring(0,19))try{g=null;"data:image/svg+xml;base64,"==b.substring(0,26)?(g=b.substring(b.indexOf(",")+1),g=window.atob&&!mxClient.IS_SF?atob(g):Base64.decode(g,!0)):g=decodeURIComponent(b.substring(b.indexOf(",")+1));var l=this.importXml(g,c,e,n,!0,t);if(0<l.length)return l}catch(z){}this.loadImage(b,mxUtils.bind(this,function(g){if("data:"==b.substring(0,5))this.resizeImage(g,
+b,mxUtils.bind(this,function(b,g,f){d.setSelectionCell(d.insertVertex(null,null,"",d.snap(c),d.snap(e),g,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(b)+";"))}),p,this.maxImageSize);else{var f=Math.min(1,Math.min(this.maxImageSize/g.width,this.maxImageSize/g.height)),l=Math.round(g.width*f);g=Math.round(g.height*f);d.setSelectionCell(d.insertVertex(null,null,"",d.snap(c),d.snap(e),l,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
+b+";"))}}),mxUtils.bind(this,function(){var g=null;d.getModel().beginUpdate();try{g=d.insertVertex(d.getDefaultParent(),null,b,d.snap(c),d.snap(e),1,1,"text;"+(f?"html=1;":"")),d.updateCellSize(g),d.fireEvent(new mxEventObject("textInserted","cells",[g]))}finally{d.getModel().endUpdate()}d.setSelectionCell(g)}))}else{b=Graph.zapGremlins(mxUtils.trim(b));if(this.isCompatibleString(b))return this.importXml(b,c,e,n,null,t);if(0<b.length)if(this.isLucidChartData(b))this.convertLucidChart(b,mxUtils.bind(this,
+function(b){this.editor.graph.setSelectionCells(this.importXml(b,c,e,n,null,t))}),mxUtils.bind(this,function(b){this.handleError(b)}));else{d=this.editor.graph;k=null;d.getModel().beginUpdate();try{k=d.insertVertex(d.getDefaultParent(),null,"",d.snap(c),d.snap(e),1,1,"text;whiteSpace=wrap;"+(f?"html=1;":""));d.fireEvent(new mxEventObject("textInserted","cells",[k]));"<"==b.charAt(0)&&b.indexOf(">")==b.length-1&&(b=mxUtils.htmlEntities(b));b.length>this.maxTextBytes&&(b=b.substring(0,this.maxTextBytes)+
"...");k.value=b;d.updateCellSize(k);if(0<this.maxTextWidth&&k.geometry.width>this.maxTextWidth){var m=d.getPreferredSizeForCell(k,this.maxTextWidth);k.geometry.width=m.width;k.geometry.height=m.height}Graph.isLink(k.value)&&d.setLinkForCell(k,k.value);k.geometry.width+=d.gridSize;k.geometry.height+=d.gridSize}finally{d.getModel().endUpdate()}return[k]}}return[]};EditorUi.prototype.formatFileSize=function(b){var d=-1;do b/=1024,d++;while(1024<b);return Math.max(b,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[d]};
EditorUi.prototype.convertDataUri=function(b){if("data:"==b.substring(0,5)){var d=b.indexOf(";");0<d&&(b=b.substring(0,d)+b.substring(b.indexOf(",",d+1)))}return b};EditorUi.prototype.isRemoteFileFormat=function(b,c){return/(\"contentType\":\s*\"application\/gliffy\+json\")/.test(b)};EditorUi.prototype.isLucidChartData=function(b){return null!=b&&('{"state":"{\\"Properties\\":'==b.substring(0,26)||'{"Properties":'==b.substring(0,14))};EditorUi.prototype.importLocalFile=function(b,c){if(b&&Graph.fileSupport){if(null==
this.importFileInputElt){var d=document.createElement("input");d.setAttribute("type","file");mxEvent.addListener(d,"change",mxUtils.bind(this,function(){null!=d.files&&(this.importFiles(d.files,null,null,this.maxImageSize),d.type="",d.type="file",d.value="")}));d.style.display="none";document.body.appendChild(d);this.importFileInputElt=d}this.importFileInputElt.click()}else{window.openNew=!1;window.openKey="import";window.listBrowserFiles=mxUtils.bind(this,function(b,d){StorageFile.listFiles(this,
"F",b,d)});window.openBrowserFile=mxUtils.bind(this,function(b,d,c){StorageFile.getFileContent(this,b,d,c)});window.deleteBrowserFile=mxUtils.bind(this,function(b,d,c){StorageFile.deleteFile(this,b,d,c)});if(!c){var e=Editor.useLocalStorage;Editor.useLocalStorage=!b}window.openFile=new OpenFile(mxUtils.bind(this,function(b){this.hideDialog(b)}));window.openFile.setConsumer(mxUtils.bind(this,function(b,d){if(null!=d&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(d)){var c=new Blob([b],{type:"application/octet-stream"});
-this.importVisio(c,mxUtils.bind(this,function(b){this.importXml(b,0,0,!0)}),null,d)}else this.editor.graph.setSelectionCells(this.importXml(b,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,function(){window.openFile=null});if(!c){var f=this.dialog,g=f.close;this.dialog.close=mxUtils.bind(this,function(b){Editor.useLocalStorage=e;g.apply(f,arguments);b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};
-EditorUi.prototype.importZipFile=function(b,c,e){var d=this,f=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(b).then(function(f){if(0==Object.keys(f.files).length)e();else{var g=0,l,k=!1;f.forEach(function(b,d){var f=d.name.toLowerCase();"diagram/diagram.xml"==f?(k=!0,d.async("string").then(function(b){0==b.indexOf("<mxfile ")?c(b):e()})):0==f.indexOf("versions/")&&(f=parseInt(f.substr(9)),f>g&&(g=f,l=d))});0<g?l.async("string").then(function(f){!d.isOffline()&&
-(new XMLHttpRequest).upload&&d.isRemoteFileFormat(f,b.name)?d.parseFile(new Blob([f],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&299>=b.status?c(b.responseText):e())}),b.name):e()}):k||e()}},function(b){e(b)}):e()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.importFile=function(b,c,e,g,k,n,p,t,y,x,F,H){x=null!=x?x:!0;var d=!1,f=null,
-l=mxUtils.bind(this,function(b){var d=null;null!=b&&"<mxlibrary"==b.substring(0,10)?this.loadLibrary(new LocalLibrary(this,b,p)):d=this.importXml(b,e,g,x,null,null!=H?mxEvent.isControlDown(H):null);null!=t&&t(d)});"image"==c.substring(0,5)?(y=!1,"image/png"==c.substring(0,9)&&(c=F?null:this.extractGraphModelFromPng(b),null!=c&&0<c.length&&(f=this.importXml(c,e,g,x,null,null!=H?mxEvent.isControlDown(H):null),y=!0)),y||(c=this.editor.graph,F=b.indexOf(";"),0<F&&(b=b.substring(0,F)+b.substring(b.indexOf(",",
-F+1))),x&&c.isGridEnabled()&&(e=c.snap(e),g=c.snap(g)),f=[c.insertVertex(null,null,"",e,g,k,n,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+b+";")])):/(\.*<graphml )/.test(b)?(d=!0,this.importGraphML(b,l)):null!=y&&null!=p&&(/(\.v(dx|sdx?))($|\?)/i.test(p)||/(\.vs(x|sx?))($|\?)/i.test(p))?(d=!0,this.importVisio(y,l)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,p)?(d=!0,this.parseFile(null!=
-y?y:new Blob([b],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&299>=b.status?l(b.responseText):null!=t&&t(null))}),p)):0==b.indexOf("PK")&&null!=y?(d=!0,this.importZipFile(y,l,mxUtils.bind(this,function(){f=this.insertTextAt(this.validateFileData(b),e,g,!0,null,x);t(f)}))):/(\.v(sd|dx))($|\?)/i.test(p)||/(\.vs(s|x))($|\?)/i.test(p)||(f=this.insertTextAt(this.validateFileData(b),e,g,!0,null,x,null,null!=H?mxEvent.isControlDown(H):null));d||null==
-t||t(f);return f};EditorUi.prototype.importFiles=function(b,c,e,g,k,n,p,t,y,x,F,H,z){g=null!=g?g:this.maxImageSize;x=null!=x?x:this.maxImageBytes;var d=null!=c&&null!=e,f=!0;c=null!=c?c:0;e=null!=e?e:0;var l=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var m=F||this.resampleThreshold,q=0;q<b.length;q++)if("image/"==b[q].type.substring(0,6)&&b[q].size>m){l=!0;break}var u=mxUtils.bind(this,function(){var l=this.editor.graph,m=l.gridSize;k=null!=k?k:mxUtils.bind(this,function(b,c,e,f,g,l,k,m,n){try{return null!=
-b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,b,k)),null):this.importFile(b,c,e,f,g,l,k,m,n,d,H,z)}catch(la){return this.handleError(la),null}});n=null!=n?n:mxUtils.bind(this,function(b){l.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q=b.length,u=q,v=[],C=mxUtils.bind(this,function(b,d){v[b]=d;if(0==--u){this.spinner.stop();if(null!=t)t(v);else{var c=[];l.getModel().beginUpdate();try{for(var e=0;e<v.length;e++){var f=
-v[e]();null!=f&&(c=c.concat(f))}}finally{l.getModel().endUpdate()}}n(c)}}),y=0;y<q;y++)mxUtils.bind(this,function(d){var n=b[d];if(null!=n){var q=new FileReader;q.onload=mxUtils.bind(this,function(b){if(null==p||p(n))if("image/"==n.type.substring(0,6))if("image/svg"==n.type.substring(0,9)){var q=Graph.clipSvgDataUri(b.target.result),t=q.indexOf(","),u=decodeURIComponent(escape(atob(q.substring(t+1)))),v=mxUtils.parseXml(u),u=v.getElementsByTagName("svg");if(0<u.length){var u=u[0],z=H?null:u.getAttribute("content");
-null!=z&&"<"!=z.charAt(0)&&"%"!=z.charAt(0)&&(z=unescape(window.atob?atob(z):Base64.decode(z,!0)));null!=z&&"%"==z.charAt(0)&&(z=decodeURIComponent(z));null==z||"<mxfile "!==z.substring(0,8)&&"<mxGraphModel "!==z.substring(0,14)?C(d,mxUtils.bind(this,function(){try{if(q.substring(0,t+1),null!=v){var b=v.getElementsByTagName("svg");if(0<b.length){var f=b[0],p=f.getAttribute("width"),u=f.getAttribute("height"),p=null!=p&&"%"!=p.charAt(p.length-1)?parseFloat(p):NaN,u=null!=u&&"%"!=u.charAt(u.length-
-1)?parseFloat(u):NaN,x=f.getAttribute("viewBox");if(null==x||0==x.length)f.setAttribute("viewBox","0 0 "+p+" "+u);else if(isNaN(p)||isNaN(u)){var C=x.split(" ");3<C.length&&(p=parseFloat(C[2]),u=parseFloat(C[3]))}q=Editor.createSvgDataUri(mxUtils.getXml(f));var z=Math.min(1,Math.min(g/Math.max(1,p)),g/Math.max(1,u)),N=k(q,n.type,c+d*m,e+d*m,Math.max(1,Math.round(p*z)),Math.max(1,Math.round(u*z)),n.name);if(isNaN(p)||isNaN(u)){var y=new Image;y.onload=mxUtils.bind(this,function(){p=Math.max(1,y.width);
-u=Math.max(1,y.height);N[0].geometry.width=p;N[0].geometry.height=u;f.setAttribute("viewBox","0 0 "+p+" "+u);q=Editor.createSvgDataUri(mxUtils.getXml(f));var b=q.indexOf(";");0<b&&(q=q.substring(0,b)+q.substring(q.indexOf(",",b+1)));l.setCellStyles("image",q,[N[0]])});y.src=Editor.createSvgDataUri(mxUtils.getXml(f))}return N}}}catch(ia){}return null})):C(d,mxUtils.bind(this,function(){return k(z,"text/xml",c+d*m,e+d*m,0,0,n.name)}))}else C(d,mxUtils.bind(this,function(){return null}))}else{u=!1;if("image/png"==
-n.type){var N=H?null:this.extractGraphModelFromPng(b.target.result);if(null!=N&&0<N.length){var y=new Image;y.src=b.target.result;C(d,mxUtils.bind(this,function(){return k(N,"text/xml",c+d*m,e+d*m,y.width,y.height,n.name)}));u=!0}}u||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):
-this.loadImage(b.target.result,mxUtils.bind(this,function(l){this.resizeImage(l,b.target.result,mxUtils.bind(this,function(b,l,q){C(d,mxUtils.bind(this,function(){if(null!=b&&b.length<x){var p=f&&this.isResampleImageSize(n.size,F)?Math.min(1,Math.min(g/l,g/q)):1;return k(b,n.type,c+d*m,e+d*m,Math.round(l*p),Math.round(q*p),n.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),f,g,F,n.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else q=
-b.target.result,k(q,n.type,c+d*m,e+d*m,240,160,n.name,function(b){C(d,function(){return b})},n)});/(\.v(dx|sdx?))($|\?)/i.test(n.name)||/(\.vs(x|sx?))($|\?)/i.test(n.name)?k(null,n.type,c+d*m,e+d*m,240,160,n.name,function(b){C(d,function(){return b})},n):"image"==n.type.substring(0,5)||"application/pdf"==n.type?q.readAsDataURL(n):q.readAsText(n)}})(y)});if(l){l=[];for(q=0;q<b.length;q++)l.push(b[q]);b=l;this.confirmImageResize(function(b){f=b;u()},y)}else u()};EditorUi.prototype.confirmImageResize=
-function(b,c){c=null!=c?c:!1;var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},e=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,f=function(e,f){if(e||c)mxSettings.setResizeImages(e?f:null),mxSettings.save();d();b(f)};null==e||c?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(b){f(b,!0)},function(b){f(b,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+
-'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):f(!1,e)};EditorUi.prototype.parseFile=function(b,c,e){e=null!=e?e:b.name;var d=new FormData;d.append("format","xml");d.append("upfile",b,e);var f=new XMLHttpRequest;f.open("POST",OPEN_URL);f.onreadystatechange=function(){c(f)};f.send(d);try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+b.size})}catch(n){}};EditorUi.prototype.isResampleImageSize=
-function(b,c){c=null!=c?c:this.resampleThreshold;return b>c};EditorUi.prototype.resizeImage=function(b,c,e,g,k,n,p){k=null!=k?k:this.maxImageSize;var d=Math.max(1,b.width),f=Math.max(1,b.height);if(g&&this.isResampleImageSize(null!=p?p:c.length,n))try{var l=Math.max(d/k,f/k);if(1<l){var m=Math.round(d/l),q=Math.round(f/l),t=document.createElement("canvas");t.width=m;t.height=q;t.getContext("2d").drawImage(b,0,0,m,q);var u=t.toDataURL();if(u.length<c.length){var L=document.createElement("canvas");
-L.width=m;L.height=q;var E=L.toDataURL();u!==E&&(c=u,d=m,f=q)}}}catch(J){}e(c,d,f)};EditorUi.prototype.extractGraphModelFromPng=function(b){return Editor.extractGraphModelFromPng(b)};EditorUi.prototype.loadImage=function(b,c,e){try{var d=new Image;d.onload=function(){d.width=0<d.width?d.width:120;d.height=0<d.height?d.height:120;c(d)};null!=e&&(d.onerror=e);d.src=b}catch(m){if(null!=e)e(m);else throw m;}};var g=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=
-mxStencilRegistry.allowEval&&!this.isOfflineApp();this.isSettingsEnabled()&&("1"==urlParams.sketch&&this.doSetSketchMode(null!=mxSettings.settings.sketchMode&&null==urlParams.rough?mxSettings.settings.sketchMode:"0"!=urlParams.rough),this.formatWidth=mxSettings.getFormatWidth());var b=this,c=this.editor.graph;Editor.isDarkMode()&&(c.view.defaultGridColor=mxGraphView.prototype.defaultDarkGridColor);c.cellEditor.editPlantUmlData=function(d,e,f){var g=JSON.parse(f);e=new TextareaDialog(b,mxResources.get("plantUml")+
-":",g.data,function(e){null!=e&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generatePlantUmlImage(e,g.format,function(f,l,k){b.spinner.stop();c.getModel().beginUpdate();try{if("txt"==g.format)c.labelChanged(d,"<pre>"+f+"</pre>"),c.updateCellSize(d,!0);else{c.setCellStyles("image",b.convertDataUri(f),[d]);var m=c.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=l,m.height=k,c.cellsResized([d],[m],!1))}c.setAttributeForCell(d,"plantUmlData",JSON.stringify({data:e,format:g.format}))}finally{c.getModel().endUpdate()}},
-function(d){b.handleError(d)})},null,null,400,220);b.showDialog(e.container,420,300,!0,!0);e.init()};c.cellEditor.editMermaidData=function(d,e,f){var g=JSON.parse(f);e=new TextareaDialog(b,mxResources.get("mermaid")+":",g.data,function(e){null!=e&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generateMermaidImage(e,g.config,function(f,l,k){b.spinner.stop();c.getModel().beginUpdate();try{c.setCellStyles("image",f,[d]);var m=c.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=Math.max(m.width,
-l),m.height=Math.max(m.height,k),c.cellsResized([d],[m],!1));c.setAttributeForCell(d,"mermaidData",JSON.stringify({data:e,config:g.config},null,2))}finally{c.getModel().endUpdate()}},function(d){b.handleError(d)})},null,null,400,220);b.showDialog(e.container,420,300,!0,!0);e.init()};var e=c.cellEditor.startEditing;c.cellEditor.startEditing=function(d,f){try{var g=this.graph.getAttributeForCell(d,"plantUmlData");if(null!=g)this.editPlantUmlData(d,f,g);else if(g=this.graph.getAttributeForCell(d,"mermaidData"),
-null!=g)this.editMermaidData(d,f,g);else{var l=c.getCellStyle(d);"1"==mxUtils.getValue(l,"metaEdit","0")?b.showDataDialog(d):e.apply(this,arguments)}}catch(aa){b.handleError(aa)}};c.getLinkTitle=function(d){return b.getLinkTitle(d)};c.customLinkClicked=function(d){var c=!1;try{b.handleCustomLink(d),c=!0}catch(K){b.handleError(K)}return c};var k=c.parseBackgroundImage;c.parseBackgroundImage=function(b){var d=k.apply(this,arguments);null!=d&&null!=d.src&&Graph.isPageLink(d.src)&&(d={originalSrc:d.src});
+this.importVisio(c,mxUtils.bind(this,function(b){this.importXml(b,0,0,!0)}),null,d)}else this.editor.graph.setSelectionCells(this.importXml(b,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,function(){window.openFile=null});if(!c){var g=this.dialog,f=g.close;this.dialog.close=mxUtils.bind(this,function(b){Editor.useLocalStorage=e;f.apply(g,arguments);b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};
+EditorUi.prototype.importZipFile=function(b,c,e){var d=this,g=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(b).then(function(g){if(0==Object.keys(g.files).length)e();else{var f=0,l,k=!1;g.forEach(function(b,d){var g=d.name.toLowerCase();"diagram/diagram.xml"==g?(k=!0,d.async("string").then(function(b){0==b.indexOf("<mxfile ")?c(b):e()})):0==g.indexOf("versions/")&&(g=parseInt(g.substr(9)),g>f&&(f=g,l=d))});0<f?l.async("string").then(function(g){!d.isOffline()&&
+(new XMLHttpRequest).upload&&d.isRemoteFileFormat(g,b.name)?d.parseFile(new Blob([g],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&299>=b.status?c(b.responseText):e())}),b.name):e()}):k||e()}},function(b){e(b)}):e()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?g():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",g))};EditorUi.prototype.importFile=function(b,c,e,f,k,n,p,t,y,x,F,H){x=null!=x?x:!0;var d=!1,g=null,
+l=mxUtils.bind(this,function(b){var d=null;null!=b&&"<mxlibrary"==b.substring(0,10)?this.loadLibrary(new LocalLibrary(this,b,p)):d=this.importXml(b,e,f,x,null,null!=H?mxEvent.isControlDown(H):null);null!=t&&t(d)});"image"==c.substring(0,5)?(y=!1,"image/png"==c.substring(0,9)&&(c=F?null:this.extractGraphModelFromPng(b),null!=c&&0<c.length&&(g=this.importXml(c,e,f,x,null,null!=H?mxEvent.isControlDown(H):null),y=!0)),y||(c=this.editor.graph,F=b.indexOf(";"),0<F&&(b=b.substring(0,F)+b.substring(b.indexOf(",",
+F+1))),x&&c.isGridEnabled()&&(e=c.snap(e),f=c.snap(f)),g=[c.insertVertex(null,null,"",e,f,k,n,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+b+";")])):/(\.*<graphml )/.test(b)?(d=!0,this.importGraphML(b,l)):null!=y&&null!=p&&(/(\.v(dx|sdx?))($|\?)/i.test(p)||/(\.vs(x|sx?))($|\?)/i.test(p))?(d=!0,this.importVisio(y,l)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,p)?(d=!0,this.parseFile(null!=
+y?y:new Blob([b],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&299>=b.status?l(b.responseText):null!=t&&t(null))}),p)):0==b.indexOf("PK")&&null!=y?(d=!0,this.importZipFile(y,l,mxUtils.bind(this,function(){g=this.insertTextAt(this.validateFileData(b),e,f,!0,null,x);t(g)}))):/(\.v(sd|dx))($|\?)/i.test(p)||/(\.vs(s|x))($|\?)/i.test(p)||(g=this.insertTextAt(this.validateFileData(b),e,f,!0,null,x,null,null!=H?mxEvent.isControlDown(H):null));d||null==
+t||t(g);return g};EditorUi.prototype.importFiles=function(b,c,e,f,k,n,p,t,y,x,F,H,z){f=null!=f?f:this.maxImageSize;x=null!=x?x:this.maxImageBytes;var d=null!=c&&null!=e,g=!0;c=null!=c?c:0;e=null!=e?e:0;var l=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var m=F||this.resampleThreshold,q=0;q<b.length;q++)if("image/"==b[q].type.substring(0,6)&&b[q].size>m){l=!0;break}var u=mxUtils.bind(this,function(){var l=this.editor.graph,m=l.gridSize;k=null!=k?k:mxUtils.bind(this,function(b,c,e,g,f,l,k,m,n){try{return null!=
+b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,b,k)),null):this.importFile(b,c,e,g,f,l,k,m,n,d,H,z)}catch(la){return this.handleError(la),null}});n=null!=n?n:mxUtils.bind(this,function(b){l.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q=b.length,u=q,v=[],C=mxUtils.bind(this,function(b,d){v[b]=d;if(0==--u){this.spinner.stop();if(null!=t)t(v);else{var c=[];l.getModel().beginUpdate();try{for(var e=0;e<v.length;e++){var g=
+v[e]();null!=g&&(c=c.concat(g))}}finally{l.getModel().endUpdate()}}n(c)}}),y=0;y<q;y++)mxUtils.bind(this,function(d){var n=b[d];if(null!=n){var q=new FileReader;q.onload=mxUtils.bind(this,function(b){if(null==p||p(n))if("image/"==n.type.substring(0,6))if("image/svg"==n.type.substring(0,9)){var q=Graph.clipSvgDataUri(b.target.result),t=q.indexOf(","),u=decodeURIComponent(escape(atob(q.substring(t+1)))),v=mxUtils.parseXml(u),u=v.getElementsByTagName("svg");if(0<u.length){var u=u[0],z=H?null:u.getAttribute("content");
+null!=z&&"<"!=z.charAt(0)&&"%"!=z.charAt(0)&&(z=unescape(window.atob?atob(z):Base64.decode(z,!0)));null!=z&&"%"==z.charAt(0)&&(z=decodeURIComponent(z));null==z||"<mxfile "!==z.substring(0,8)&&"<mxGraphModel "!==z.substring(0,14)?C(d,mxUtils.bind(this,function(){try{if(q.substring(0,t+1),null!=v){var b=v.getElementsByTagName("svg");if(0<b.length){var g=b[0],p=g.getAttribute("width"),u=g.getAttribute("height"),p=null!=p&&"%"!=p.charAt(p.length-1)?parseFloat(p):NaN,u=null!=u&&"%"!=u.charAt(u.length-
+1)?parseFloat(u):NaN,x=g.getAttribute("viewBox");if(null==x||0==x.length)g.setAttribute("viewBox","0 0 "+p+" "+u);else if(isNaN(p)||isNaN(u)){var C=x.split(" ");3<C.length&&(p=parseFloat(C[2]),u=parseFloat(C[3]))}q=Editor.createSvgDataUri(mxUtils.getXml(g));var z=Math.min(1,Math.min(f/Math.max(1,p)),f/Math.max(1,u)),L=k(q,n.type,c+d*m,e+d*m,Math.max(1,Math.round(p*z)),Math.max(1,Math.round(u*z)),n.name);if(isNaN(p)||isNaN(u)){var y=new Image;y.onload=mxUtils.bind(this,function(){p=Math.max(1,y.width);
+u=Math.max(1,y.height);L[0].geometry.width=p;L[0].geometry.height=u;g.setAttribute("viewBox","0 0 "+p+" "+u);q=Editor.createSvgDataUri(mxUtils.getXml(g));var b=q.indexOf(";");0<b&&(q=q.substring(0,b)+q.substring(q.indexOf(",",b+1)));l.setCellStyles("image",q,[L[0]])});y.src=Editor.createSvgDataUri(mxUtils.getXml(g))}return L}}}catch(ia){}return null})):C(d,mxUtils.bind(this,function(){return k(z,"text/xml",c+d*m,e+d*m,0,0,n.name)}))}else C(d,mxUtils.bind(this,function(){return null}))}else{u=!1;if("image/png"==
+n.type){var L=H?null:this.extractGraphModelFromPng(b.target.result);if(null!=L&&0<L.length){var y=new Image;y.src=b.target.result;C(d,mxUtils.bind(this,function(){return k(L,"text/xml",c+d*m,e+d*m,y.width,y.height,n.name)}));u=!0}}u||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):
+this.loadImage(b.target.result,mxUtils.bind(this,function(l){this.resizeImage(l,b.target.result,mxUtils.bind(this,function(b,l,q){C(d,mxUtils.bind(this,function(){if(null!=b&&b.length<x){var p=g&&this.isResampleImageSize(n.size,F)?Math.min(1,Math.min(f/l,f/q)):1;return k(b,n.type,c+d*m,e+d*m,Math.round(l*p),Math.round(q*p),n.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),g,f,F,n.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else q=
+b.target.result,k(q,n.type,c+d*m,e+d*m,240,160,n.name,function(b){C(d,function(){return b})},n)});/(\.v(dx|sdx?))($|\?)/i.test(n.name)||/(\.vs(x|sx?))($|\?)/i.test(n.name)?k(null,n.type,c+d*m,e+d*m,240,160,n.name,function(b){C(d,function(){return b})},n):"image"==n.type.substring(0,5)||"application/pdf"==n.type?q.readAsDataURL(n):q.readAsText(n)}})(y)});if(l){l=[];for(q=0;q<b.length;q++)l.push(b[q]);b=l;this.confirmImageResize(function(b){g=b;u()},y)}else u()};EditorUi.prototype.confirmImageResize=
+function(b,c){c=null!=c?c:!1;var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},e=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,g=function(e,g){if(e||c)mxSettings.setResizeImages(e?g:null),mxSettings.save();d();b(g)};null==e||c?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(b){g(b,!0)},function(b){g(b,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+
+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):g(!1,e)};EditorUi.prototype.parseFile=function(b,c,e){e=null!=e?e:b.name;var d=new FormData;d.append("format","xml");d.append("upfile",b,e);var g=new XMLHttpRequest;g.open("POST",OPEN_URL);g.onreadystatechange=function(){c(g)};g.send(d);try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+b.size})}catch(n){}};EditorUi.prototype.isResampleImageSize=
+function(b,c){c=null!=c?c:this.resampleThreshold;return b>c};EditorUi.prototype.resizeImage=function(b,c,e,f,k,n,p){k=null!=k?k:this.maxImageSize;var d=Math.max(1,b.width),g=Math.max(1,b.height);if(f&&this.isResampleImageSize(null!=p?p:c.length,n))try{var l=Math.max(d/k,g/k);if(1<l){var m=Math.round(d/l),q=Math.round(g/l),t=document.createElement("canvas");t.width=m;t.height=q;t.getContext("2d").drawImage(b,0,0,m,q);var u=t.toDataURL();if(u.length<c.length){var N=document.createElement("canvas");
+N.width=m;N.height=q;var E=N.toDataURL();u!==E&&(c=u,d=m,g=q)}}}catch(J){}e(c,d,g)};EditorUi.prototype.extractGraphModelFromPng=function(b){return Editor.extractGraphModelFromPng(b)};EditorUi.prototype.loadImage=function(b,c,e){try{var d=new Image;d.onload=function(){d.width=0<d.width?d.width:120;d.height=0<d.height?d.height:120;c(d)};null!=e&&(d.onerror=e);d.src=b}catch(m){if(null!=e)e(m);else throw m;}};var f=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=
+mxStencilRegistry.allowEval&&!this.isOfflineApp();this.isSettingsEnabled()&&("1"==urlParams.sketch&&this.doSetSketchMode(null!=mxSettings.settings.sketchMode&&null==urlParams.rough?mxSettings.settings.sketchMode:"0"!=urlParams.rough),this.formatWidth=mxSettings.getFormatWidth());var b=this,c=this.editor.graph;Editor.isDarkMode()&&(c.view.defaultGridColor=mxGraphView.prototype.defaultDarkGridColor);c.cellEditor.editPlantUmlData=function(d,e,g){var f=JSON.parse(g);e=new TextareaDialog(b,mxResources.get("plantUml")+
+":",f.data,function(e){null!=e&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generatePlantUmlImage(e,f.format,function(g,l,k){b.spinner.stop();c.getModel().beginUpdate();try{if("txt"==f.format)c.labelChanged(d,"<pre>"+g+"</pre>"),c.updateCellSize(d,!0);else{c.setCellStyles("image",b.convertDataUri(g),[d]);var m=c.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=l,m.height=k,c.cellsResized([d],[m],!1))}c.setAttributeForCell(d,"plantUmlData",JSON.stringify({data:e,format:f.format}))}finally{c.getModel().endUpdate()}},
+function(d){b.handleError(d)})},null,null,400,220);b.showDialog(e.container,420,300,!0,!0);e.init()};c.cellEditor.editMermaidData=function(d,e,g){var f=JSON.parse(g);e=new TextareaDialog(b,mxResources.get("mermaid")+":",f.data,function(e){null!=e&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generateMermaidImage(e,f.config,function(g,l,k){b.spinner.stop();c.getModel().beginUpdate();try{c.setCellStyles("image",g,[d]);var m=c.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=Math.max(m.width,
+l),m.height=Math.max(m.height,k),c.cellsResized([d],[m],!1));c.setAttributeForCell(d,"mermaidData",JSON.stringify({data:e,config:f.config},null,2))}finally{c.getModel().endUpdate()}},function(d){b.handleError(d)})},null,null,400,220);b.showDialog(e.container,420,300,!0,!0);e.init()};var e=c.cellEditor.startEditing;c.cellEditor.startEditing=function(d,g){try{var f=this.graph.getAttributeForCell(d,"plantUmlData");if(null!=f)this.editPlantUmlData(d,g,f);else if(f=this.graph.getAttributeForCell(d,"mermaidData"),
+null!=f)this.editMermaidData(d,g,f);else{var l=c.getCellStyle(d);"1"==mxUtils.getValue(l,"metaEdit","0")?b.showDataDialog(d):e.apply(this,arguments)}}catch(Z){b.handleError(Z)}};c.getLinkTitle=function(d){return b.getLinkTitle(d)};c.customLinkClicked=function(d){var c=!1;try{b.handleCustomLink(d),c=!0}catch(K){b.handleError(K)}return c};var k=c.parseBackgroundImage;c.parseBackgroundImage=function(b){var d=k.apply(this,arguments);null!=d&&null!=d.src&&Graph.isPageLink(d.src)&&(d={originalSrc:d.src});
return d};var m=c.setBackgroundImage;c.setBackgroundImage=function(d){null!=d&&null!=d.originalSrc&&(d=b.createImageForPageLink(d.originalSrc,b.currentPage,this));m.apply(this,arguments)};this.editor.addListener("pageRenamed",mxUtils.bind(this,function(){c.refreshBackgroundImage()}));this.editor.addListener("pageMoved",mxUtils.bind(this,function(){c.refreshBackgroundImage()}));this.editor.addListener("pagesPatched",mxUtils.bind(this,function(b,d){var e=null!=c.backgroundImage?c.backgroundImage.originalSrc:
-null;if(null!=e){var f=e.indexOf(",");if(0<f)for(var e=e.substring(f+1),f=d.getProperty("patches"),g=0;g<f.length;g++)if(null!=f[g][EditorUi.DIFF_UPDATE]&&null!=f[g][EditorUi.DIFF_UPDATE][e]){c.refreshBackgroundImage();break}}}));var n=c.getBackgroundImageObject;c.getBackgroundImageObject=function(d,c){var e=n.apply(this,arguments);if(null!=e&&null!=e.originalSrc)if(!c)e={src:e.originalSrc};else if(c&&null!=this.themes&&"darkTheme"==this.defaultThemeName){var f=this.stylesheet,g=this.shapeForegroundColor,
-l=this.shapeBackgroundColor;this.stylesheet=this.getDefaultStylesheet();this.shapeBackgroundColor="#ffffff";this.shapeForegroundColor="#000000";e=b.createImageForPageLink(e.originalSrc);this.shapeBackgroundColor=l;this.shapeForegroundColor=g;this.stylesheet=f}return e};var p=this.clearDefaultStyle;this.clearDefaultStyle=function(){p.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://www.diagrams.net/doc/faq/predefined-placeholders");
-if(/viewer\.diagrams\.net$/.test(window.location.hostname)||/embed\.diagrams\.net$/.test(window.location.hostname))this.editor.editBlankUrl="https://app.diagrams.net/";var t=b.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1");return t.apply(this,arguments)};var y=c.addClickHandler;c.addClickHandler=function(b,d,e){var f=d;d=function(b,d){if(null==d){var e=mxEvent.getSource(b);"a"==e.nodeName.toLowerCase()&&(d=e.getAttribute("href"))}null!=
-d&&c.isCustomLink(d)&&(mxEvent.isTouchEvent(b)||!mxEvent.isPopupTrigger(b))&&c.customLinkClicked(d)&&mxEvent.consume(b);null!=f&&f(b,d)};y.call(this,b,d,e)};g.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(c.view.canvas.ownerSVGElement,null,!0);if(null!=this.menus){var x=Menus.prototype.addPopupMenuEditItems;this.menus.addPopupMenuEditItems=function(d,c,e){b.editor.graph.isSelectionEmpty()?x.apply(this,arguments):b.menus.addMenuItems(d,"delete - cut copy copyAsImage - duplicate".split(" "),
+null;if(null!=e){var g=e.indexOf(",");if(0<g)for(var e=e.substring(g+1),g=d.getProperty("patches"),f=0;f<g.length;f++)if(null!=g[f][EditorUi.DIFF_UPDATE]&&null!=g[f][EditorUi.DIFF_UPDATE][e]){c.refreshBackgroundImage();break}}}));var n=c.getBackgroundImageObject;c.getBackgroundImageObject=function(d,c){var e=n.apply(this,arguments);if(null!=e&&null!=e.originalSrc)if(!c)e={src:e.originalSrc};else if(c&&null!=this.themes&&"darkTheme"==this.defaultThemeName){var g=this.stylesheet,f=this.shapeForegroundColor,
+l=this.shapeBackgroundColor;this.stylesheet=this.getDefaultStylesheet();this.shapeBackgroundColor="#ffffff";this.shapeForegroundColor="#000000";e=b.createImageForPageLink(e.originalSrc);this.shapeBackgroundColor=l;this.shapeForegroundColor=f;this.stylesheet=g}return e};var p=this.clearDefaultStyle;this.clearDefaultStyle=function(){p.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://www.diagrams.net/doc/faq/predefined-placeholders");
+if(/viewer\.diagrams\.net$/.test(window.location.hostname)||/embed\.diagrams\.net$/.test(window.location.hostname))this.editor.editBlankUrl="https://app.diagrams.net/";var t=b.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1");return t.apply(this,arguments)};var y=c.addClickHandler;c.addClickHandler=function(b,d,e){var g=d;d=function(b,d){if(null==d){var e=mxEvent.getSource(b);"a"==e.nodeName.toLowerCase()&&(d=e.getAttribute("href"))}null!=
+d&&c.isCustomLink(d)&&(mxEvent.isTouchEvent(b)||!mxEvent.isPopupTrigger(b))&&c.customLinkClicked(d)&&mxEvent.consume(b);null!=g&&g(b,d)};y.call(this,b,d,e)};f.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(c.view.canvas.ownerSVGElement,null,!0);if(null!=this.menus){var x=Menus.prototype.addPopupMenuEditItems;this.menus.addPopupMenuEditItems=function(d,c,e){b.editor.graph.isSelectionEmpty()?x.apply(this,arguments):b.menus.addMenuItems(d,"delete - cut copy copyAsImage - duplicate".split(" "),
null,e)}}b.actions.get("print").funct=function(){b.showDialog((new PrintDialog(b)).container,360,null!=b.pages&&1<b.pages.length?450:370,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var F=c.getExportVariables;c.getExportVariables=function(){var d=F.apply(this,arguments),c=b.getCurrentFile();null!=c&&(d.filename=c.getTitle());d.pagecount=null!=b.pages?b.pages.length:1;d.page=null!=b.currentPage?b.currentPage.getName():"";d.pagenumber=null!=b.pages&&null!=b.currentPage?mxUtils.indexOf(b.pages,
-b.currentPage)+1:1;return d};var H=c.getGlobalVariable;c.getGlobalVariable=function(d){var c=b.getCurrentFile();return"filename"==d&&null!=c?c.getTitle():"page"==d&&null!=b.currentPage?b.currentPage.getName():"pagenumber"==d?null!=b.currentPage&&null!=b.pages?mxUtils.indexOf(b.pages,b.currentPage)+1:1:"pagecount"==d?null!=b.pages?b.pages.length:1:H.apply(this,arguments)};var z=c.labelLinkClicked;c.labelLinkClicked=function(b,d,e){var f=d.getAttribute("href");if(null==f||!c.isCustomLink(f)||!mxEvent.isTouchEvent(e)&&
-mxEvent.isPopupTrigger(e))z.apply(this,arguments);else{if(!c.isEnabled()||null!=b&&c.isCellLocked(b.cell))c.customLinkClicked(f),c.getRubberband().reset();mxEvent.consume(e)}};this.editor.getOrCreateFilename=function(){var d=b.defaultFilename,c=b.getCurrentFile();null!=c&&(d=null!=c.getTitle()?c.getTitle():d);return d};var D=this.actions.get("print");D.setEnabled(!mxClient.IS_IOS||!navigator.standalone);D.visible=D.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,
+b.currentPage)+1:1;return d};var H=c.getGlobalVariable;c.getGlobalVariable=function(d){var c=b.getCurrentFile();return"filename"==d&&null!=c?c.getTitle():"page"==d&&null!=b.currentPage?b.currentPage.getName():"pagenumber"==d?null!=b.currentPage&&null!=b.pages?mxUtils.indexOf(b.pages,b.currentPage)+1:1:"pagecount"==d?null!=b.pages?b.pages.length:1:H.apply(this,arguments)};var z=c.labelLinkClicked;c.labelLinkClicked=function(b,d,e){var g=d.getAttribute("href");if(null==g||!c.isCustomLink(g)||!mxEvent.isTouchEvent(e)&&
+mxEvent.isPopupTrigger(e))z.apply(this,arguments);else{if(!c.isEnabled()||null!=b&&c.isCellLocked(b.cell))c.customLinkClicked(g),c.getRubberband().reset();mxEvent.consume(e)}};this.editor.getOrCreateFilename=function(){var d=b.defaultFilename,c=b.getCurrentFile();null!=c&&(d=null!=c.getTitle()?c.getTitle():d);return d};var D=this.actions.get("print");D.setEnabled(!mxClient.IS_IOS||!navigator.standalone);D.visible=D.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,
!0,"findReplace"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,!0,"insertRectangle"),this.keyHandler.bindAction(75,!0,"insertEllipse",!0),this.altShiftActions[83]="synchronize",this.installImagePasteHandler(),this.installNativeClipboardHandler();this.spinner=this.createSpinner(null,null,24);Graph.fileSupport&&c.addListener(mxEvent.EDITING_STARTED,
mxUtils.bind(this,function(b){var d=c.cellEditor.text2,e=null;null!=d&&(mxEvent.addListener(d,"dragleave",function(b){null!=e&&(e.parentNode.removeChild(e),e=null);b.stopPropagation();b.preventDefault()}),mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(b){null==e&&(!mxClient.IS_IE||10<document.documentMode)&&(e=this.highlightElement(d));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(d,"drop",mxUtils.bind(this,function(b){null!=e&&(e.parentNode.removeChild(e),e=null);if(0<
-b.dataTransfer.files.length)this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,function(b,d,e,f,g,l){c.insertImage(b,g,l)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var d=0;d<b.length;d++)b[d]()},mxEvent.isControlDown(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var d=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)?this.loadImage(decodeURIComponent(d),mxUtils.bind(this,function(b){var e=Math.max(1,
-b.width);b=Math.max(1,b.height);var f=this.maxImageSize,f=Math.min(1,Math.min(f/Math.max(1,e)),f/Math.max(1,b));c.insertImage(decodeURIComponent(d),e*f,b*f)})):document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"))}else 0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"));b.stopPropagation();
+b.dataTransfer.files.length)this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,function(b,d,e,g,f,l){c.insertImage(b,f,l)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var d=0;d<b.length;d++)b[d]()},mxEvent.isControlDown(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var d=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)?this.loadImage(decodeURIComponent(d),mxUtils.bind(this,function(b){var e=Math.max(1,
+b.width);b=Math.max(1,b.height);var g=this.maxImageSize,g=Math.min(1,Math.min(g/Math.max(1,e)),g/Math.max(1,b));c.insertImage(decodeURIComponent(d),e*g,b*g)})):document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"))}else 0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"));b.stopPropagation();
b.preventDefault()})))}));this.isSettingsEnabled()&&(D=this.editor.graph.view,D.setUnit(mxSettings.getUnit()),D.addListener("unitChanged",function(b,d){mxSettings.setUnit(d.getProperty("unit"));mxSettings.save()}),this.ruler=!this.canvasSupported||9==document.documentMode||"1"!=urlParams.ruler&&!mxSettings.isRulerOn()||this.editor.isChromelessView()&&!this.editor.editable?null:new mxDualRuler(this,D.unit),this.refresh());if("1"==urlParams.styledev){D=document.getElementById("geFooter");null!=D&&(this.styleInput=
document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this,function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),D.appendChild(this.styleInput),
-this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(b,d){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var L=this.isSelectionAllowed;this.isSelectionAllowed=function(b){return mxEvent.getSource(b)==this.styleInput?!0:L.apply(this,arguments)}}D=document.getElementById("geInfo");
+this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(b,d){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var N=this.isSelectionAllowed;this.isSelectionAllowed=function(b){return mxEvent.getSource(b)==this.styleInput?!0:N.apply(this,arguments)}}D=document.getElementById("geInfo");
null!=D&&D.parentNode.removeChild(D);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var E=null;mxEvent.addListener(c.container,"dragleave",function(b){c.isEnabled()&&(null!=E&&(E.parentNode.removeChild(E),E=null),b.stopPropagation(),b.preventDefault())});mxEvent.addListener(c.container,"dragover",mxUtils.bind(this,function(b){null==E&&(!mxClient.IS_IE||10<document.documentMode)&&(E=this.highlightElement(c.container));null!=this.sidebar&&this.sidebar.hideTooltip();b.stopPropagation();
-b.preventDefault()}));mxEvent.addListener(c.container,"drop",mxUtils.bind(this,function(b){null!=E&&(E.parentNode.removeChild(E),E=null);if(c.isEnabled()){var d=mxUtils.convertPoint(c.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),e=c.view.translate,f=c.view.scale,g=d.x/f-e.x,l=d.y/f-e.y;if(0<b.dataTransfer.files.length)mxEvent.isShiftDown(b)?this.openFiles(b.dataTransfer.files,!0):(mxEvent.isAltDown(b)&&(l=g=null),this.importFiles(b.dataTransfer.files,g,l,this.maxImageSize,null,null,null,
-null,mxEvent.isControlDown(b),null,null,mxEvent.isShiftDown(b),b));else{mxEvent.isAltDown(b)&&(l=g=0);var k=0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")?b.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(b,null!=this.pages);if(null!=d)c.setSelectionCells(this.importXml(d,g,l,!0));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")){var m=b.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=c.sanitizeHtml(m);var n=null,e=d.getElementsByTagName("img");
-null!=e&&1==e.length?(m=e[0].getAttribute("src"),null==m&&(m=e[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(n=!0)):(e=d.getElementsByTagName("a"),null!=e&&1==e.length?m=e[0].getAttribute("href"):(d=d.getElementsByTagName("pre"),null!=d&&1==d.length&&(m=mxUtils.getTextContent(d[0]))));var q=!0,p=mxUtils.bind(this,function(){c.setSelectionCells(this.insertTextAt(m,g,l,!0,n,null,q,mxEvent.isControlDown(b)))});n&&null!=m&&m.length>this.resampleThreshold?this.confirmImageResize(function(b){q=
-b;p()},mxEvent.isControlDown(b)):p()}else null!=k&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)?this.loadImage(decodeURIComponent(k),mxUtils.bind(this,function(b){var d=Math.max(1,b.width);b=Math.max(1,b.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,d)),e/Math.max(1,b));c.setSelectionCell(c.insertVertex(null,null,"",g,l,d*e,b*e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+k+";"))}),mxUtils.bind(this,function(b){c.setSelectionCells(this.insertTextAt(k,
-g,l,!0))})):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&c.setSelectionCells(this.insertTextAt(b.dataTransfer.getData("text/plain"),g,l,!0))}}b.stopPropagation();b.preventDefault()}),!1)}c.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var b=this.editor.graph;b.container.addEventListener("paste",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d))try{for(var c=
-d.clipboardData||d.originalEvent.clipboardData,e=!1,f=0;f<c.types.length;f++)if("text/"===c.types[f].substring(0,5)){e=!0;break}if(!e){var g=c.items;for(index in g){var k=g[index];if("file"===k.kind){if(b.isEditing())this.importFiles([k.getAsFile()],0,0,this.maxImageSize,function(d,c,e,f,g,l){b.insertImage(d,g,l)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var d=0;d<b.length;d++)b[d]()});else{var p=this.editor.graph.getInsertPoint();this.importFiles([k.getAsFile()],
+b.preventDefault()}));mxEvent.addListener(c.container,"drop",mxUtils.bind(this,function(b){null!=E&&(E.parentNode.removeChild(E),E=null);if(c.isEnabled()){var d=mxUtils.convertPoint(c.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),e=c.view.translate,g=c.view.scale,f=d.x/g-e.x,l=d.y/g-e.y;if(0<b.dataTransfer.files.length)mxEvent.isShiftDown(b)?this.openFiles(b.dataTransfer.files,!0):(mxEvent.isAltDown(b)&&(l=f=null),this.importFiles(b.dataTransfer.files,f,l,this.maxImageSize,null,null,null,
+null,mxEvent.isControlDown(b),null,null,mxEvent.isShiftDown(b),b));else{mxEvent.isAltDown(b)&&(l=f=0);var k=0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")?b.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(b,null!=this.pages);if(null!=d)c.setSelectionCells(this.importXml(d,f,l,!0));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")){var m=b.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=c.sanitizeHtml(m);var n=null,e=d.getElementsByTagName("img");
+null!=e&&1==e.length?(m=e[0].getAttribute("src"),null==m&&(m=e[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(n=!0)):(e=d.getElementsByTagName("a"),null!=e&&1==e.length?m=e[0].getAttribute("href"):(d=d.getElementsByTagName("pre"),null!=d&&1==d.length&&(m=mxUtils.getTextContent(d[0]))));var q=!0,p=mxUtils.bind(this,function(){c.setSelectionCells(this.insertTextAt(m,f,l,!0,n,null,q,mxEvent.isControlDown(b)))});n&&null!=m&&m.length>this.resampleThreshold?this.confirmImageResize(function(b){q=
+b;p()},mxEvent.isControlDown(b)):p()}else null!=k&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)?this.loadImage(decodeURIComponent(k),mxUtils.bind(this,function(b){var d=Math.max(1,b.width);b=Math.max(1,b.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,d)),e/Math.max(1,b));c.setSelectionCell(c.insertVertex(null,null,"",f,l,d*e,b*e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+k+";"))}),mxUtils.bind(this,function(b){c.setSelectionCells(this.insertTextAt(k,
+f,l,!0))})):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&c.setSelectionCells(this.insertTextAt(b.dataTransfer.getData("text/plain"),f,l,!0))}}b.stopPropagation();b.preventDefault()}),!1)}c.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var b=this.editor.graph;b.container.addEventListener("paste",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d))try{for(var c=
+d.clipboardData||d.originalEvent.clipboardData,e=!1,g=0;g<c.types.length;g++)if("text/"===c.types[g].substring(0,5)){e=!0;break}if(!e){var f=c.items;for(index in f){var k=f[index];if("file"===k.kind){if(b.isEditing())this.importFiles([k.getAsFile()],0,0,this.maxImageSize,function(d,c,e,g,f,l){b.insertImage(d,f,l)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var d=0;d<b.length;d++)b[d]()});else{var p=this.editor.graph.getInsertPoint();this.importFiles([k.getAsFile()],
p.x,p.y,this.maxImageSize);mxEvent.consume(d)}break}}}}catch(y){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function b(){window.setTimeout(function(){e.innerHTML="&nbsp;";e.focus();document.execCommand("selectAll",!1,null)},0)}var c=this.editor.graph,e=document.createElement("div");e.setAttribute("autocomplete","off");e.setAttribute("autocorrect","off");e.setAttribute("autocapitalize","off");e.setAttribute("spellcheck","false");e.style.textRendering="optimizeSpeed";e.style.fontFamily=
-"monospace";e.style.wordBreak="break-all";e.style.background="transparent";e.style.color="transparent";e.style.position="absolute";e.style.whiteSpace="nowrap";e.style.overflow="hidden";e.style.display="block";e.style.fontSize="1";e.style.zIndex="-1";e.style.resize="none";e.style.outline="none";e.style.width="1px";e.style.height="1px";mxUtils.setOpacity(e,0);e.contentEditable=!0;e.innerHTML="&nbsp;";var g=!1;this.keyHandler.bindControlKey(88,null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,
-null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(b){var d=mxEvent.getSource(b);null==c.container||!c.isEnabled()||c.isMouseDown||c.isEditing()||null!=this.dialog||"INPUT"==d.nodeName||"TEXTAREA"==d.nodeName||224!=b.keyCode&&(mxClient.IS_MAC||17!=b.keyCode)&&(!mxClient.IS_MAC||91!=b.keyCode&&93!=b.keyCode)||g||(e.style.left=c.container.scrollLeft+10+"px",e.style.top=c.container.scrollTop+10+"px",c.container.appendChild(e),g=!0,e.focus(),document.execCommand("selectAll",!1,null))}));
-mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(b){var d=b.keyCode;window.setTimeout(mxUtils.bind(this,function(){!g||224!=d&&17!=d&&91!=d&&93!=d||(g=!1,c.isEditing()||null!=this.dialog||null==c.container||c.container.focus(),e.parentNode.removeChild(e),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(e,"copy",mxUtils.bind(this,function(d){if(c.isEnabled())try{mxClipboard.copy(c),this.copyCells(e),b()}catch(u){this.handleError(u)}}));mxEvent.addListener(e,"cut",
+"monospace";e.style.wordBreak="break-all";e.style.background="transparent";e.style.color="transparent";e.style.position="absolute";e.style.whiteSpace="nowrap";e.style.overflow="hidden";e.style.display="block";e.style.fontSize="1";e.style.zIndex="-1";e.style.resize="none";e.style.outline="none";e.style.width="1px";e.style.height="1px";mxUtils.setOpacity(e,0);e.contentEditable=!0;e.innerHTML="&nbsp;";var f=!1;this.keyHandler.bindControlKey(88,null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,
+null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(b){var d=mxEvent.getSource(b);null==c.container||!c.isEnabled()||c.isMouseDown||c.isEditing()||null!=this.dialog||"INPUT"==d.nodeName||"TEXTAREA"==d.nodeName||224!=b.keyCode&&(mxClient.IS_MAC||17!=b.keyCode)&&(!mxClient.IS_MAC||91!=b.keyCode&&93!=b.keyCode)||f||(e.style.left=c.container.scrollLeft+10+"px",e.style.top=c.container.scrollTop+10+"px",c.container.appendChild(e),f=!0,e.focus(),document.execCommand("selectAll",!1,null))}));
+mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(b){var d=b.keyCode;window.setTimeout(mxUtils.bind(this,function(){!f||224!=d&&17!=d&&91!=d&&93!=d||(f=!1,c.isEditing()||null!=this.dialog||null==c.container||c.container.focus(),e.parentNode.removeChild(e),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(e,"copy",mxUtils.bind(this,function(d){if(c.isEnabled())try{mxClipboard.copy(c),this.copyCells(e),b()}catch(u){this.handleError(u)}}));mxEvent.addListener(e,"cut",
mxUtils.bind(this,function(d){if(c.isEnabled())try{mxClipboard.copy(c),this.copyCells(e,!0),b()}catch(u){this.handleError(u)}}));mxEvent.addListener(e,"paste",mxUtils.bind(this,function(b){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&(e.innerHTML="&nbsp;",e.focus(),null!=b.clipboardData&&this.pasteCells(b,e,!0,!0),mxEvent.isConsumed(b)||window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(b,e,!1,!0)}),0))}),!0);var k=this.isSelectionAllowed;this.isSelectionAllowed=function(b){return mxEvent.getSource(b)==
e?!0:k.apply(this,arguments)}};EditorUi.prototype.setSketchMode=function(b){this.spinner.spin(document.body,mxResources.get("working")+"...")&&window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();this.doSetSketchMode(b);null==urlParams.rough&&(mxSettings.settings.sketchMode=b,mxSettings.save());this.fireEvent(new mxEventObject("sketchModeChanged"))}),0)};EditorUi.prototype.setPagesVisible=function(b){Editor.pagesVisible!=b&&(Editor.pagesVisible=b,mxSettings.settings.pagesVisible=b,mxSettings.save(),
this.fireEvent(new mxEventObject("pagesVisibleChanged")))};EditorUi.prototype.setInlineFullscreen=function(b){Editor.inlineFullscreen!=b&&(Editor.inlineFullscreen=b,this.fireEvent(new mxEventObject("inlineFullscreenChanged")),(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:this.diagramContainer.getBoundingClientRect()}),"*"),window.setTimeout(mxUtils.bind(this,function(){this.refresh();this.actions.get("resetView").funct()}),10))};
@@ -3647,197 +3656,197 @@ mxUtils.bind(this,function(b,c){if("1"!=urlParams["ext-fonts"])mxSettings.setCus
mxSettings.save()}));this.editor.graph.pageFormat=null!=this.editor.graph.defaultPageFormat?this.editor.graph.defaultPageFormat:mxSettings.getPageFormat();this.addListener("pageFormatChanged",mxUtils.bind(this,function(b,c){mxSettings.setPageFormat(this.editor.graph.pageFormat);mxSettings.save()}));this.editor.graph.view.gridColor=mxSettings.getGridColor(Editor.isDarkMode());this.addListener("gridColorChanged",mxUtils.bind(this,function(b,c){mxSettings.setGridColor(this.editor.graph.view.gridColor,
Editor.isDarkMode());mxSettings.save()}));if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(b,c){mxSettings.setAutosave(this.editor.autosave);mxSettings.save()})),this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&(null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes?(this.sidebar.searchShapes(decodeURIComponent(urlParams["search-shapes"])),this.sidebar.showEntries("search")):(this.sidebar.showPalette("search",
mxSettings.settings.search),this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),mxSettings.save())));this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyImage=function(b,c,e){try{null!=navigator.clipboard&&this.spinner.spin(document.body,mxResources.get("exporting"))&&this.editor.exportToCanvas(mxUtils.bind(this,function(b,
-d){try{this.spinner.stop();var e=this.createImageDataUri(b,c,"png"),f=parseInt(d.getAttribute("width")),g=parseInt(d.getAttribute("height"));this.writeImageToClipboard(e,f,g,mxUtils.bind(this,function(b){this.handleError(b)}))}catch(y){this.handleError(y)}}),null,null,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,null,null!=e?e:4,null==this.editor.graph.background||this.editor.graph.background==mxConstants.NONE,null,null,null,10,null,null,!1,null,0<b.length?b:null)}catch(q){this.handleError(q)}};
-EditorUi.prototype.writeImageToClipboard=function(b,c,e,g){var d=this.base64ToBlob(b.substring(b.indexOf(",")+1),"image/png");b=new ClipboardItem({"image/png":d,"text/html":new Blob(['<img src="'+b+'" width="'+c+'" height="'+e+'">'],{type:"text/html"})});navigator.clipboard.write([b])["catch"](g)};EditorUi.prototype.copyCells=function(b,c){var d=this.editor.graph;if(d.isSelectionEmpty())b.innerHTML="";else{var e=mxUtils.sortCells(d.model.getTopmostCells(d.getSelectionCells())),f=mxUtils.getXml(d.encodeCells(e));
-mxUtils.setTextContent(b,encodeURIComponent(f));c?(d.removeCells(e,!1),d.lastPasteXml=null):(d.lastPasteXml=f,d.pasteCounter=0);b.focus();document.execCommand("selectAll",!1,null)}};EditorUi.prototype.copyXml=function(){var b=null;if(Editor.enableNativeCipboard){var c=this.editor.graph;c.isSelectionEmpty()||(b=mxUtils.sortCells(c.getExportableCells(c.model.getTopmostCells(c.getSelectionCells()))),c=mxUtils.getXml(c.encodeCells(b)),navigator.clipboard.writeText(c))}return b};EditorUi.prototype.pasteXml=
-function(b,c,e,g){var d=this.editor.graph,f=null;d.lastPasteXml==b?d.pasteCounter++:(d.lastPasteXml=b,d.pasteCounter=0);var k=d.pasteCounter*d.gridSize;if(e||this.isCompatibleString(b))f=this.importXml(b,k,k),d.setSelectionCells(f);else if(c&&1==d.getSelectionCount()){k=d.getStartEditingCell(d.getSelectionCell(),g);if(/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(b)&&"image"==d.getCurrentCellStyle(k)[mxConstants.STYLE_SHAPE])d.setCellStyles(mxConstants.STYLE_IMAGE,b,[k]);else{d.model.beginUpdate();try{d.labelChanged(k,
-b),Graph.isLink(b)&&d.setLinkForCell(k,b)}finally{d.model.endUpdate()}}d.setSelectionCell(k)}else f=d.getInsertPoint(),d.isMouseInsertPoint()&&(k=0,d.lastPasteXml==b&&0<d.pasteCounter&&d.pasteCounter--),f=this.insertTextAt(b,f.x+k,f.y+k,!0),d.setSelectionCells(f);d.isSelectionEmpty()||(d.scrollCellToVisible(d.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell())));return f};EditorUi.prototype.pasteCells=function(b,c,e,g){if(!mxEvent.isConsumed(b)){var d=
-c,f=!1;if(e&&null!=b.clipboardData&&b.clipboardData.getData){var k=b.clipboardData.getData("text/plain"),l=!1;if(null!=k&&0<k.length&&"%3CmxGraphModel%3E"==k.substring(0,18)){var q=decodeURIComponent(k);this.isCompatibleString(q)&&(l=!0,k=q)}l=l?null:b.clipboardData.getData("text/html");null!=l&&0<l.length?(d=this.parseHtmlData(l),f="text/plain"!=d.getAttribute("data-type")):null!=k&&0<k.length&&(d=document.createElement("div"),mxUtils.setTextContent(d,l))}k=d.getElementsByTagName("span");if(null!=
-k&&0<k.length&&"application/vnd.lucid.chart.objects"===k[0].getAttribute("data-lucid-type"))e=k[0].getAttribute("data-lucid-content"),null!=e&&0<e.length&&(this.convertLucidChart(e,mxUtils.bind(this,function(b){var d=this.editor.graph;d.lastPasteXml==b?d.pasteCounter++:(d.lastPasteXml=b,d.pasteCounter=0);var c=d.pasteCounter*d.gridSize;d.setSelectionCells(this.importXml(b,c,c));d.scrollCellToVisible(d.getSelectionCell())}),mxUtils.bind(this,function(b){this.handleError(b)})),mxEvent.consume(b));else{f=
-f?d.innerHTML:mxUtils.trim(null==d.innerText?mxUtils.getTextContent(d):d.innerText);l=!1;try{var p=f.lastIndexOf("%3E");0<=p&&p<f.length-3&&(f=f.substring(0,p+3))}catch(H){}try{k=d.getElementsByTagName("span"),q=null!=k&&0<k.length?mxUtils.trim(decodeURIComponent(k[0].textContent)):decodeURIComponent(f),this.isCompatibleString(q)&&(l=!0,f=q)}catch(H){}try{if(null!=f&&0<f.length){this.pasteXml(f,g,l,b);try{mxEvent.consume(b)}catch(H){}}else if(!e){var t=this.editor.graph;t.lastPasteXml=null;t.pasteCounter=
+d){try{this.spinner.stop();var e=this.createImageDataUri(b,c,"png"),g=parseInt(d.getAttribute("width")),f=parseInt(d.getAttribute("height"));this.writeImageToClipboard(e,g,f,mxUtils.bind(this,function(b){this.handleError(b)}))}catch(y){this.handleError(y)}}),null,null,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,null,null!=e?e:4,null==this.editor.graph.background||this.editor.graph.background==mxConstants.NONE,null,null,null,10,null,null,!1,null,0<b.length?b:null)}catch(q){this.handleError(q)}};
+EditorUi.prototype.writeImageToClipboard=function(b,c,e,f){var d=this.base64ToBlob(b.substring(b.indexOf(",")+1),"image/png");b=new ClipboardItem({"image/png":d,"text/html":new Blob(['<img src="'+b+'" width="'+c+'" height="'+e+'">'],{type:"text/html"})});navigator.clipboard.write([b])["catch"](f)};EditorUi.prototype.copyCells=function(b,c){var d=this.editor.graph;if(d.isSelectionEmpty())b.innerHTML="";else{var e=mxUtils.sortCells(d.model.getTopmostCells(d.getSelectionCells())),g=mxUtils.getXml(d.encodeCells(e));
+mxUtils.setTextContent(b,encodeURIComponent(g));c?(d.removeCells(e,!1),d.lastPasteXml=null):(d.lastPasteXml=g,d.pasteCounter=0);b.focus();document.execCommand("selectAll",!1,null)}};EditorUi.prototype.copyXml=function(){var b=null;if(Editor.enableNativeCipboard){var c=this.editor.graph;c.isSelectionEmpty()||(b=mxUtils.sortCells(c.getExportableCells(c.model.getTopmostCells(c.getSelectionCells()))),c=mxUtils.getXml(c.encodeCells(b)),navigator.clipboard.writeText(c))}return b};EditorUi.prototype.pasteXml=
+function(b,c,e,f){var d=this.editor.graph,g=null;d.lastPasteXml==b?d.pasteCounter++:(d.lastPasteXml=b,d.pasteCounter=0);var k=d.pasteCounter*d.gridSize;if(e||this.isCompatibleString(b))g=this.importXml(b,k,k),d.setSelectionCells(g);else if(c&&1==d.getSelectionCount()){k=d.getStartEditingCell(d.getSelectionCell(),f);if(/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(b)&&"image"==d.getCurrentCellStyle(k)[mxConstants.STYLE_SHAPE])d.setCellStyles(mxConstants.STYLE_IMAGE,b,[k]);else{d.model.beginUpdate();try{d.labelChanged(k,
+b),Graph.isLink(b)&&d.setLinkForCell(k,b)}finally{d.model.endUpdate()}}d.setSelectionCell(k)}else g=d.getInsertPoint(),d.isMouseInsertPoint()&&(k=0,d.lastPasteXml==b&&0<d.pasteCounter&&d.pasteCounter--),g=this.insertTextAt(b,g.x+k,g.y+k,!0),d.setSelectionCells(g);d.isSelectionEmpty()||(d.scrollCellToVisible(d.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell())));return g};EditorUi.prototype.pasteCells=function(b,c,e,f){if(!mxEvent.isConsumed(b)){var d=
+c,g=!1;if(e&&null!=b.clipboardData&&b.clipboardData.getData){var k=b.clipboardData.getData("text/plain"),l=!1;if(null!=k&&0<k.length&&"%3CmxGraphModel%3E"==k.substring(0,18)){var p=decodeURIComponent(k);this.isCompatibleString(p)&&(l=!0,k=p)}l=l?null:b.clipboardData.getData("text/html");null!=l&&0<l.length?(d=this.parseHtmlData(l),g="text/plain"!=d.getAttribute("data-type")):null!=k&&0<k.length&&(d=document.createElement("div"),mxUtils.setTextContent(d,l))}k=d.getElementsByTagName("span");if(null!=
+k&&0<k.length&&"application/vnd.lucid.chart.objects"===k[0].getAttribute("data-lucid-type"))e=k[0].getAttribute("data-lucid-content"),null!=e&&0<e.length&&(this.convertLucidChart(e,mxUtils.bind(this,function(b){var d=this.editor.graph;d.lastPasteXml==b?d.pasteCounter++:(d.lastPasteXml=b,d.pasteCounter=0);var c=d.pasteCounter*d.gridSize;d.setSelectionCells(this.importXml(b,c,c));d.scrollCellToVisible(d.getSelectionCell())}),mxUtils.bind(this,function(b){this.handleError(b)})),mxEvent.consume(b));else{g=
+g?d.innerHTML:mxUtils.trim(null==d.innerText?mxUtils.getTextContent(d):d.innerText);l=!1;try{var q=g.lastIndexOf("%3E");0<=q&&q<g.length-3&&(g=g.substring(0,q+3))}catch(H){}try{k=d.getElementsByTagName("span"),p=null!=k&&0<k.length?mxUtils.trim(decodeURIComponent(k[0].textContent)):decodeURIComponent(g),this.isCompatibleString(p)&&(l=!0,g=p)}catch(H){}try{if(null!=g&&0<g.length){this.pasteXml(g,f,l,b);try{mxEvent.consume(b)}catch(H){}}else if(!e){var t=this.editor.graph;t.lastPasteXml=null;t.pasteCounter=
0}}catch(H){this.handleError(H)}}}c.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(b){if(Graph.fileSupport)for(var d=null,c=0;c<b.length;c++)mxEvent.addListener(b[c],"dragleave",function(b){null!=d&&(d.parentNode.removeChild(d),d=null);b.stopPropagation();b.preventDefault()}),mxEvent.addListener(b[c],"dragover",mxUtils.bind(this,function(b){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==d&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(d=
this.highlightElement());b.stopPropagation();b.preventDefault()})),mxEvent.addListener(b[c],"drop",mxUtils.bind(this,function(b){null!=d&&(d.parentNode.removeChild(d),d=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<b.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(b)&&!mxEvent.isShiftDown(b)):this.openFiles(b.dataTransfer.files,!0);else{var c=this.extractGraphModelFromEvent(b);
if(null==c){var e=null!=b.dataTransfer?b.dataTransfer:b.clipboardData;null!=e&&(10==document.documentMode||11==document.documentMode?c=e.getData("Text"):(c=null,c=0<=mxUtils.indexOf(e.types,"text/uri-list")?b.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(e.types,"text/html")?e.getData("text/html"):null,null!=c&&0<c.length?(e=document.createElement("div"),e.innerHTML=this.editor.graph.sanitizeHtml(c),e=e.getElementsByTagName("img"),0<e.length&&(c=e[0].getAttribute("src"))):0<=mxUtils.indexOf(e.types,
"text/plain")&&(c=e.getData("text/plain"))),null!=c&&(Editor.isPngDataUrl(c)?(c=Editor.extractGraphModelFromPng(c),null!=c&&0<c.length&&this.openLocalFile(c,null,!0)):!this.isOffline()&&this.isRemoteFileFormat(c)?(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(c))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()&&this.openLocalFile(b.getText(),null,!0)})):/^https?:\/\//.test(c)&&(null==this.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(c):
-window.openWindow((mxClient.IS_CHROMEAPP?EditorUi.drawHost+"/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(c)))))}else this.openLocalFile(c,null,!0)}b.stopPropagation();b.preventDefault()}))};EditorUi.prototype.highlightElement=function(b){var d=0,c=0,e,g;if(null==b){g=document.body;var k=document.documentElement;e=(g.clientWidth||k.clientWidth)-3;g=Math.max(g.clientHeight||0,k.clientHeight)-3}else d=b.offsetTop,c=b.offsetLeft,e=b.clientWidth,g=b.clientHeight;k=document.createElement("div");
-k.style.zIndex=mxPopupMenu.prototype.zIndex+2;k.style.border="3px dotted rgb(254, 137, 12)";k.style.pointerEvents="none";k.style.position="absolute";k.style.top=d+"px";k.style.left=c+"px";k.style.width=Math.max(0,e-3)+"px";k.style.height=Math.max(0,g-3)+"px";null!=b&&b.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(k):document.body.appendChild(k);return k};EditorUi.prototype.stringToCells=function(b){b=mxUtils.parseXml(b);var d=this.editor.extractGraphModel(b.documentElement);
-b=[];if(null!=d){var c=new mxCodec(d.ownerDocument),e=new mxGraphModel;c.decode(d,e);d=e.getChildAt(e.getRoot(),0);for(c=0;c<e.getChildCount(d);c++)b.push(e.getChildAt(d,c))}return b};EditorUi.prototype.openFileHandle=function(b,c,e,g,k){if(null!=c&&0<c.length){!this.useCanvasForExport&&/(\.png)$/i.test(c)?c=c.substring(0,c.length-4)+".drawio":/(\.pdf)$/i.test(c)&&(c=c.substring(0,c.length-4)+".drawio");var d=mxUtils.bind(this,function(b){c=0<=c.lastIndexOf(".")?c.substring(0,c.lastIndexOf("."))+
-".drawio":c+".drawio";if("<mxlibrary"==b.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,g);try{this.loadLibrary(new LocalLibrary(this,b,c))}catch(y){this.handleError(y,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(b,c,g)});if(/(\.v(dx|sdx?))($|\?)/i.test(c)||/(\.vs(x|sx?))($|\?)/i.test(c))this.importVisio(e,mxUtils.bind(this,function(b){this.spinner.stop();d(b)}));else if(/(\.*<graphml )/.test(b))this.importGraphML(b,
+window.openWindow((mxClient.IS_CHROMEAPP?EditorUi.drawHost+"/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(c)))))}else this.openLocalFile(c,null,!0)}b.stopPropagation();b.preventDefault()}))};EditorUi.prototype.highlightElement=function(b){var d=0,c=0,e,f;if(null==b){f=document.body;var k=document.documentElement;e=(f.clientWidth||k.clientWidth)-3;f=Math.max(f.clientHeight||0,k.clientHeight)-3}else d=b.offsetTop,c=b.offsetLeft,e=b.clientWidth,f=b.clientHeight;k=document.createElement("div");
+k.style.zIndex=mxPopupMenu.prototype.zIndex+2;k.style.border="3px dotted rgb(254, 137, 12)";k.style.pointerEvents="none";k.style.position="absolute";k.style.top=d+"px";k.style.left=c+"px";k.style.width=Math.max(0,e-3)+"px";k.style.height=Math.max(0,f-3)+"px";null!=b&&b.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(k):document.body.appendChild(k);return k};EditorUi.prototype.stringToCells=function(b){b=mxUtils.parseXml(b);var d=this.editor.extractGraphModel(b.documentElement);
+b=[];if(null!=d){var c=new mxCodec(d.ownerDocument),e=new mxGraphModel;c.decode(d,e);d=e.getChildAt(e.getRoot(),0);for(c=0;c<e.getChildCount(d);c++)b.push(e.getChildAt(d,c))}return b};EditorUi.prototype.openFileHandle=function(b,c,e,f,k){if(null!=c&&0<c.length){!this.useCanvasForExport&&/(\.png)$/i.test(c)?c=c.substring(0,c.length-4)+".drawio":/(\.pdf)$/i.test(c)&&(c=c.substring(0,c.length-4)+".drawio");var d=mxUtils.bind(this,function(b){c=0<=c.lastIndexOf(".")?c.substring(0,c.lastIndexOf("."))+
+".drawio":c+".drawio";if("<mxlibrary"==b.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,f);try{this.loadLibrary(new LocalLibrary(this,b,c))}catch(y){this.handleError(y,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(b,c,f)});if(/(\.v(dx|sdx?))($|\?)/i.test(c)||/(\.vs(x|sx?))($|\?)/i.test(c))this.importVisio(e,mxUtils.bind(this,function(b){this.spinner.stop();d(b)}));else if(/(\.*<graphml )/.test(b))this.importGraphML(b,
mxUtils.bind(this,function(b){this.spinner.stop();d(b)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,c))this.parseFile(e,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?d(b.responseText):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(b))/(\.json)$/i.test(c)&&(c=c.substring(0,
-c.length-5)+".drawio"),this.convertLucidChart(b,mxUtils.bind(this,function(b){this.spinner.stop();this.openLocalFile(b,c,g)}),mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}));else if("<mxlibrary"==b.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,g);try{this.loadLibrary(new LocalLibrary(this,b,e.name))}catch(v){this.handleError(v,mxResources.get("errorLoadingFile"))}}else if(0==
-b.indexOf("PK"))this.importZipFile(e,mxUtils.bind(this,function(b){this.spinner.stop();d(b)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(b,c,g)}));else{if("image/png"==e.type.substring(0,9))b=this.extractGraphModelFromPng(b);else if("application/pdf"==e.type){var f=Editor.extractGraphModelFromPdf(b);null!=f&&(k=null,g=!0,b=f)}this.spinner.stop();this.openLocalFile(b,c,g,k,null!=k?e:null)}}};EditorUi.prototype.openFiles=function(b,c){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var d=
-0;d<b.length;d++)mxUtils.bind(this,function(b){var d=new FileReader;d.onload=mxUtils.bind(this,function(d){try{this.openFileHandle(d.target.result,b.name,b,c)}catch(u){this.handleError(u)}});d.onerror=mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b);window.openFile=null});"image"!==b.type.substring(0,5)&&"application/pdf"!==b.type||"image/svg"===b.type.substring(0,9)?d.readAsText(b):d.readAsDataURL(b)})(b[d])};EditorUi.prototype.openLocalFile=function(b,c,e,g,k){var d=this.getCurrentFile(),
-f=mxUtils.bind(this,function(){window.openFile=null;if(null==c&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var d=mxUtils.parseXml(b);null!=d&&(this.editor.setGraphXml(d.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,b,c||this.defaultFilename,e,g,k))});if(null!=b&&0<b.length)null==d||!d.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=g)?f():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=g)&&null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),
-null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(b,c),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):f()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var b={};if(null!=this.pages)for(var c=
-0;c<this.pages.length;c++)this.updatePageRoot(this.pages[c]),this.addBasenamesForCell(this.pages[c].root,b);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),b);var c=[],e;for(e in b)c.push(e);return c};EditorUi.prototype.addBasenamesForCell=function(b,c){function d(b){if(null!=b){var d=b.lastIndexOf(".");0<d&&(b=b.substring(d+1,b.length));null==c[b]&&(c[b]=!0)}}var e=this.editor.graph,f=e.getCellStyle(b);d(mxStencilRegistry.getBasenameForStencil(f[mxConstants.STYLE_SHAPE]));e.model.isEdge(b)&&
-(d(mxMarker.getPackageForType(f[mxConstants.STYLE_STARTARROW])),d(mxMarker.getPackageForType(f[mxConstants.STYLE_ENDARROW])));for(var f=e.model.getChildCount(b),g=0;g<f;g++)this.addBasenamesForCell(e.model.getChildAt(b,g),c)};EditorUi.prototype.setGraphEnabled=function(b){this.diagramContainer.style.visibility=b?"":"hidden";this.formatContainer.style.visibility=b?"":"hidden";this.sidebarFooterContainer.style.display=b?"":"none";this.sidebarContainer.style.display=b?"":"none";this.hsplit.style.display=
+c.length-5)+".drawio"),this.convertLucidChart(b,mxUtils.bind(this,function(b){this.spinner.stop();this.openLocalFile(b,c,f)}),mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}));else if("<mxlibrary"==b.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,f);try{this.loadLibrary(new LocalLibrary(this,b,e.name))}catch(v){this.handleError(v,mxResources.get("errorLoadingFile"))}}else if(0==
+b.indexOf("PK"))this.importZipFile(e,mxUtils.bind(this,function(b){this.spinner.stop();d(b)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(b,c,f)}));else{if("image/png"==e.type.substring(0,9))b=this.extractGraphModelFromPng(b);else if("application/pdf"==e.type){var g=Editor.extractGraphModelFromPdf(b);null!=g&&(k=null,f=!0,b=g)}this.spinner.stop();this.openLocalFile(b,c,f,k,null!=k?e:null)}}};EditorUi.prototype.openFiles=function(b,c){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var d=
+0;d<b.length;d++)mxUtils.bind(this,function(b){var d=new FileReader;d.onload=mxUtils.bind(this,function(d){try{this.openFileHandle(d.target.result,b.name,b,c)}catch(u){this.handleError(u)}});d.onerror=mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b);window.openFile=null});"image"!==b.type.substring(0,5)&&"application/pdf"!==b.type||"image/svg"===b.type.substring(0,9)?d.readAsText(b):d.readAsDataURL(b)})(b[d])};EditorUi.prototype.openLocalFile=function(b,c,e,f,k){var d=this.getCurrentFile(),
+g=mxUtils.bind(this,function(){window.openFile=null;if(null==c&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var d=mxUtils.parseXml(b);null!=d&&(this.editor.setGraphXml(d.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,b,c||this.defaultFilename,e,f,k))});if(null!=b&&0<b.length)null==d||!d.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=f)?g():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=f)&&null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),
+null,g,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(b,c),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,g,mxResources.get("cancel"),mxResources.get("discardChanges")):g()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var b={};if(null!=this.pages)for(var c=
+0;c<this.pages.length;c++)this.updatePageRoot(this.pages[c]),this.addBasenamesForCell(this.pages[c].root,b);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),b);var c=[],e;for(e in b)c.push(e);return c};EditorUi.prototype.addBasenamesForCell=function(b,c){function d(b){if(null!=b){var d=b.lastIndexOf(".");0<d&&(b=b.substring(d+1,b.length));null==c[b]&&(c[b]=!0)}}var e=this.editor.graph,g=e.getCellStyle(b);d(mxStencilRegistry.getBasenameForStencil(g[mxConstants.STYLE_SHAPE]));e.model.isEdge(b)&&
+(d(mxMarker.getPackageForType(g[mxConstants.STYLE_STARTARROW])),d(mxMarker.getPackageForType(g[mxConstants.STYLE_ENDARROW])));for(var g=e.model.getChildCount(b),f=0;f<g;f++)this.addBasenamesForCell(e.model.getChildAt(b,f),c)};EditorUi.prototype.setGraphEnabled=function(b){this.diagramContainer.style.visibility=b?"":"hidden";this.formatContainer.style.visibility=b?"":"hidden";this.sidebarFooterContainer.style.display=b?"":"none";this.sidebarContainer.style.display=b?"":"none";this.hsplit.style.display=
b?"":"none";this.editor.graph.setEnabled(b);null!=this.ruler&&(this.ruler.hRuler.container.style.visibility=b?"":"hidden",this.ruler.vRuler.container.style.visibility=b?"":"hidden");null!=this.tabContainer&&(this.tabContainer.style.visibility=b?"":"hidden");b||(null!=this.actions.outlineWindow&&this.actions.outlineWindow.window.setVisible(!1),null!=this.actions.layersWindow&&this.actions.layersWindow.window.setVisible(!1),null!=this.menus.tagsWindow&&this.menus.tagsWindow.window.setVisible(!1),null!=
-this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1),null!=this.menus.findReplaceWindow&&this.menus.findReplaceWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);if((window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))){var b=!1;this.installMessageHandler(mxUtils.bind(this,function(d,c,e,g){b||(b=!0,this.spinner.stop(),this.addEmbedButtons(),this.setGraphEnabled(!0));
-if(null==d||0==d.length)d=this.emptyDiagramXml;this.setCurrentFile(new EmbedFile(this,d,{}));this.mode=App.MODE_EMBED;this.setFileData(d);if(g)try{var f=this.editor.graph;f.setGridEnabled(!1);f.pageVisible=!1;var k=f.model.cells,l;for(l in k){var m=k[l];null!=m&&null!=m.style&&(m.style+=";sketch=1;"+(-1==m.style.indexOf("fontFamily=")||-1<m.style.indexOf("fontFamily=Helvetica;")?"fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;":
+this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1),null!=this.menus.findReplaceWindow&&this.menus.findReplaceWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);if((window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))){var b=!1;this.installMessageHandler(mxUtils.bind(this,function(d,c,e,f){b||(b=!0,this.spinner.stop(),this.addEmbedButtons(),this.setGraphEnabled(!0));
+if(null==d||0==d.length)d=this.emptyDiagramXml;this.setCurrentFile(new EmbedFile(this,d,{}));this.mode=App.MODE_EMBED;this.setFileData(d);if(f)try{var g=this.editor.graph;g.setGridEnabled(!1);g.pageVisible=!1;var k=g.model.cells,l;for(l in k){var m=k[l];null!=m&&null!=m.style&&(m.style+=";sketch=1;"+(-1==m.style.indexOf("fontFamily=")||-1<m.style.indexOf("fontFamily=Helvetica;")?"fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;":
""))}}catch(x){console.log(x)}this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog();this.chromelessResize&&this.chromelessResize();this.editor.undoManager.clear();this.editor.modified=null!=e?e:!1;this.updateUi();window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))}};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?
this.actions.get("layers").funct():this.actions.layersWindow.window.setVisible(!0))};EditorUi.prototype.getPublicUrl=function(b,c){null!=b?b.getPublicUrl(c):c(null)};EditorUi.prototype.createLoadMessage=function(b){var d=this.editor.graph;return{event:b,pageVisible:d.pageVisible,translate:d.view.translate,bounds:d.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:d.view.scale,page:d.view.getBackgroundPageBounds()}};EditorUi.prototype.sendEmbeddedSvgExport=function(b){var d=this.editor.graph;
d.isEditing()&&d.stopEditing(!d.isInvokesStopCellEditing());var c=window.opener||window.parent;if(this.editor.modified){var e=d.background;if(null==e||e==mxConstants.NONE)e=this.embedExportBackground;this.getEmbeddedSvg(this.getFileData(!0,null,null,null,null,null,null,null,null,!1),d,null,!0,mxUtils.bind(this,function(d){c.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=b?!b:!0,data:Editor.createSvgDataUri(d)}),"*")}),null,null,!0,e,1,this.embedExportBorder)}else b||
-c.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");b||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,d.model.clear(),this.editor.undoManager.clear(),this.setBackgroundImage(null),this.editor.modified=!1,this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(b){var d=null,c=!1,e=!1,g=null,k=mxUtils.bind(this,function(b,d){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&
-this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE,k);mxEvent.addListener(window,"message",mxUtils.bind(this,function(f){if(f.source==(window.opener||window.parent)){var k=f.data,l=null,m=mxUtils.bind(this,function(b){if(null!=b&&"function"===typeof b.charAt&&"<"!=b.charAt(0))try{Editor.isPngDataUrl(b)?b=Editor.extractGraphModelFromPng(b):"data:image/svg+xml;base64,"==b.substring(0,26)?b=atob(b.substring(26)):
+c.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");b||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,d.model.clear(),this.editor.undoManager.clear(),this.setBackgroundImage(null),this.editor.modified=!1,this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(b){var d=null,c=!1,e=!1,f=null,k=mxUtils.bind(this,function(b,d){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&
+this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE,k);mxEvent.addListener(window,"message",mxUtils.bind(this,function(g){if(g.source==(window.opener||window.parent)){var k=g.data,l=null,m=mxUtils.bind(this,function(b){if(null!=b&&"function"===typeof b.charAt&&"<"!=b.charAt(0))try{Editor.isPngDataUrl(b)?b=Editor.extractGraphModelFromPng(b):"data:image/svg+xml;base64,"==b.substring(0,26)?b=atob(b.substring(26)):
"data:image/svg+xml;utf8,"==b.substring(0,24)&&(b=b.substring(24)),null!=b&&("%"==b.charAt(0)?b=decodeURIComponent(b):"<"!=b.charAt(0)&&(b=Graph.decompress(b)))}catch(ra){}return b});if("json"==urlParams.proto){var n=!1;try{k=JSON.parse(k)}catch(ka){k=null}try{if(null==k)return;if("dialog"==k.action){this.showError(null!=k.titleKey?mxResources.get(k.titleKey):k.title,null!=k.messageKey?mxResources.get(k.messageKey):k.message,null!=k.buttonKey?mxResources.get(k.buttonKey):k.button);null!=k.modified&&
(this.editor.modified=k.modified);return}if("layout"==k.action){this.executeLayoutList(k.layouts);return}if("prompt"==k.action){this.spinner.stop();var q=new FilenameDialog(this,k.defaultValue||"",null!=k.okKey?mxResources.get(k.okKey):k.ok,function(b){null!=b?p.postMessage(JSON.stringify({event:"prompt",value:b,message:k}),"*"):p.postMessage(JSON.stringify({event:"prompt-cancel",message:k}),"*")},null!=k.titleKey?mxResources.get(k.titleKey):k.title);this.showDialog(q.container,300,80,!0,!1);q.init();
return}if("draft"==k.action){var t=m(k.xml);this.spinner.stop();q=new DraftDialog(this,mxResources.get("draftFound",[k.name||this.defaultFilename]),t,mxUtils.bind(this,function(){this.hideDialog();p.postMessage(JSON.stringify({event:"draft",result:"edit",message:k}),"*")}),mxUtils.bind(this,function(){this.hideDialog();p.postMessage(JSON.stringify({event:"draft",result:"discard",message:k}),"*")}),k.editKey?mxResources.get(k.editKey):null,k.discardKey?mxResources.get(k.discardKey):null,k.ignore?mxUtils.bind(this,
function(){this.hideDialog();p.postMessage(JSON.stringify({event:"draft",result:"ignore",message:k}),"*")}):null);this.showDialog(q.container,640,480,!0,!1,mxUtils.bind(this,function(b){b&&this.actions.get("exit").funct()}));try{q.init()}catch(ka){p.postMessage(JSON.stringify({event:"draft",error:ka.toString(),message:k}),"*")}return}if("template"==k.action){this.spinner.stop();var u=1==k.enableRecent,v=1==k.enableSearch,C=1==k.enableCustomTemp;if("1"==urlParams.newTempDlg&&!k.templatesOnly&&null!=
k.callback){var y=this.getCurrentUser(),M=new TemplatesDialog(this,function(b,d,c){b=b||this.emptyDiagramXml;p.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:d,tempUrl:c.url,libs:c.libs,builtIn:null!=c.info&&null!=c.info.custContentId,message:k}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=y?y.id:null,u?mxUtils.bind(this,function(b,d,c){this.remoteInvoke("getRecentDiagrams",[c],null,b,d)}):null,v?mxUtils.bind(this,function(b,
-d,c,e){this.remoteInvoke("searchDiagrams",[b,e],null,d,c)}):null,mxUtils.bind(this,function(b,d,c){this.remoteInvoke("getFileContent",[b.url],null,d,c)}),null,C?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},0)})}):null,!1,!1,!0,!0);this.showDialog(M.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}q=new NewDialog(this,!1,k.templatesOnly?!1:null!=k.callback,mxUtils.bind(this,function(d,c,e,g){d=d||this.emptyDiagramXml;null!=
-k.callback?p.postMessage(JSON.stringify({event:"template",xml:d,blank:d==this.emptyDiagramXml,name:c,tempUrl:e,libs:g,builtIn:!0,message:k}),"*"):(b(d,f,d!=this.emptyDiagramXml,k.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,u?mxUtils.bind(this,function(b){this.remoteInvoke("getRecentDiagrams",[null],null,b,function(){b(null,"Network Error!")})}):null,v?mxUtils.bind(this,function(b,d){this.remoteInvoke("searchDiagrams",[b,null],null,d,function(){d(null,
-"Network Error!")})}):null,mxUtils.bind(this,function(b,d,c){p.postMessage(JSON.stringify({event:"template",docUrl:b,info:d,name:c}),"*")}),null,null,C?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},0)})}):null,1==k.withoutType);this.showDialog(q.container,620,460,!0,!1,mxUtils.bind(this,function(b){this.sidebar.hideTooltip();b&&this.actions.get("exit").funct()}));q.init();return}if("textContent"==k.action){var aa=this.getDiagramTextContent();p.postMessage(JSON.stringify({event:"textContent",
-data:aa,message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):null!=k.message&&this.editor.setStatus(mxUtils.htmlEntities(k.message));null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var N=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body,N):this.spinner.stop();return}if("exit"==k.action){this.actions.get("exit").funct();
+d,c,e){this.remoteInvoke("searchDiagrams",[b,e],null,d,c)}):null,mxUtils.bind(this,function(b,d,c){this.remoteInvoke("getFileContent",[b.url],null,d,c)}),null,C?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},0)})}):null,!1,!1,!0,!0);this.showDialog(M.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}q=new NewDialog(this,!1,k.templatesOnly?!1:null!=k.callback,mxUtils.bind(this,function(d,c,e,f){d=d||this.emptyDiagramXml;null!=
+k.callback?p.postMessage(JSON.stringify({event:"template",xml:d,blank:d==this.emptyDiagramXml,name:c,tempUrl:e,libs:f,builtIn:!0,message:k}),"*"):(b(d,g,d!=this.emptyDiagramXml,k.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,u?mxUtils.bind(this,function(b){this.remoteInvoke("getRecentDiagrams",[null],null,b,function(){b(null,"Network Error!")})}):null,v?mxUtils.bind(this,function(b,d){this.remoteInvoke("searchDiagrams",[b,null],null,d,function(){d(null,
+"Network Error!")})}):null,mxUtils.bind(this,function(b,d,c){p.postMessage(JSON.stringify({event:"template",docUrl:b,info:d,name:c}),"*")}),null,null,C?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},0)})}):null,1==k.withoutType);this.showDialog(q.container,620,460,!0,!1,mxUtils.bind(this,function(b){this.sidebar.hideTooltip();b&&this.actions.get("exit").funct()}));q.init();return}if("textContent"==k.action){var Z=this.getDiagramTextContent();p.postMessage(JSON.stringify({event:"textContent",
+data:Z,message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):null!=k.message&&this.editor.setStatus(mxUtils.htmlEntities(k.message));null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var L=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body,L):this.spinner.stop();return}if("exit"==k.action){this.actions.get("exit").funct();
return}if("viewport"==k.action){null!=k.viewport&&(this.embedViewport=k.viewport);return}if("snapshot"==k.action){this.sendEmbeddedSvgExport(!0);return}if("export"==k.action){if("png"==k.format||"xmlpng"==k.format){if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var O=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var U=this.editor.graph,G=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();
-var d=this.createLoadMessage("export");d.format=k.format;d.message=k;d.data=b;d.xml=O;p.postMessage(JSON.stringify(d),"*")}),I=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==k.format&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(O)));U!=this.editor.graph&&U.container.parentNode.removeChild(U.container);G(b)}),A=k.pageId||(null!=this.pages?k.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var Y=mxUtils.bind(this,
-function(){if(null!=this.pages&&this.currentPage.getId()!=A){var b=U.getGlobalVariable;U=this.createTemporaryGraph(U.getStylesheet());for(var d,c=0;c<this.pages.length;c++)if(this.pages[c].getId()==A){d=this.updatePageRoot(this.pages[c]);break}null==d&&(d=this.currentPage);U.getGlobalVariable=function(c){return"page"==c?d.getName():"pagenumber"==c?1:b.apply(this,arguments)};document.body.appendChild(U.container);U.model.setRoot(d.root)}if(null!=k.layerIds){for(var e=U.model,f=e.getChildCells(e.getRoot()),
-g={},c=0;c<k.layerIds.length;c++)g[k.layerIds[c]]=!0;for(c=0;c<f.length;c++)e.setVisible(f[c],g[f[c].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){I(b.toDataURL("image/png"))}),k.width,null,k.background,mxUtils.bind(this,function(){I(null)}),null,null,k.scale,k.transparent,k.shadow,null,U,k.border,null,k.grid,k.keepTheme)});null!=k.xml&&0<k.xml.length?(c=!0,this.setFileData(O),c=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(Y)},0):Y()):
-Y()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=A?"&pageId="+A:"")+(null!=k.layerIds&&0<k.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(O))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?G("data:image/png;base64,"+b.getText()):I(null)}),mxUtils.bind(this,function(){I(null)}))}}else Y=mxUtils.bind(this,function(){var b=
+var d=this.createLoadMessage("export");d.format=k.format;d.message=k;d.data=b;d.xml=O;p.postMessage(JSON.stringify(d),"*")}),I=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==k.format&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(O)));U!=this.editor.graph&&U.container.parentNode.removeChild(U.container);G(b)}),B=k.pageId||(null!=this.pages?k.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var ca=mxUtils.bind(this,
+function(){if(null!=this.pages&&this.currentPage.getId()!=B){var b=U.getGlobalVariable;U=this.createTemporaryGraph(U.getStylesheet());for(var d,c=0;c<this.pages.length;c++)if(this.pages[c].getId()==B){d=this.updatePageRoot(this.pages[c]);break}null==d&&(d=this.currentPage);U.getGlobalVariable=function(c){return"page"==c?d.getName():"pagenumber"==c?1:b.apply(this,arguments)};document.body.appendChild(U.container);U.model.setRoot(d.root)}if(null!=k.layerIds){for(var e=U.model,g=e.getChildCells(e.getRoot()),
+f={},c=0;c<k.layerIds.length;c++)f[k.layerIds[c]]=!0;for(c=0;c<g.length;c++)e.setVisible(g[c],f[g[c].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){I(b.toDataURL("image/png"))}),k.width,null,k.background,mxUtils.bind(this,function(){I(null)}),null,null,k.scale,k.transparent,k.shadow,null,U,k.border,null,k.grid,k.keepTheme)});null!=k.xml&&0<k.xml.length?(c=!0,this.setFileData(O),c=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(ca)},0):ca()):
+ca()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=B?"&pageId="+B:"")+(null!=k.layerIds&&0<k.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(O))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?G("data:image/png;base64,"+b.getText()):I(null)}),mxUtils.bind(this,function(){I(null)}))}}else ca=mxUtils.bind(this,function(){var b=
this.createLoadMessage("export");b.message=k;if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var d=this.getXmlFileData();b.xml=mxUtils.getXml(d);b.data=this.getFileData(null,null,!0,null,null,null,d);b.format=k.format}else if("html"==k.format)d=this.editor.getGraphXml(),b.data=this.getHtml(d,this.editor.graph),b.xml=mxUtils.getXml(d),b.format=k.format;else{mxSvgCanvas2D.prototype.foAltText=null;d=null!=k.background?k.background:this.editor.graph.background;
d==mxConstants.NONE&&(d=null);b.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);b.format="svg";var c=mxUtils.bind(this,function(d){this.editor.graph.setEnabled(!0);this.spinner.stop();b.data=Editor.createSvgDataUri(d);p.postMessage(JSON.stringify(b),"*")});if("xmlsvg"==k.format)(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))&&this.getEmbeddedSvg(b.xml,this.editor.graph,null,!0,c,null,null,k.embedImages,d,k.scale,
k.border,k.shadow,k.keepTheme);else if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))this.editor.graph.setEnabled(!1),d=this.editor.graph.getSvg(d,k.scale,k.border,null,null,null,null,null,null,this.editor.graph.shadowVisible||k.shadow,null,k.keepTheme),(this.editor.graph.shadowVisible||k.shadow)&&this.editor.graph.addSvgShadow(d),this.embedFonts(d,mxUtils.bind(this,function(b){k.embedImages||null==k.embedImages?this.editor.convertImages(b,
-mxUtils.bind(this,function(b){c(mxUtils.getXml(b))})):c(mxUtils.getXml(b))}));return}p.postMessage(JSON.stringify(b),"*")}),null!=k.xml&&0<k.xml.length?(c=!0,this.setFileData(k.xml),c=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(Y)},0):Y()):Y();return}if("load"==k.action){n=k.toSketch;e=1==k.autosave;this.hideDialog();null!=k.modified&&null==urlParams.modified&&(urlParams.modified=k.modified);null!=k.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=
+mxUtils.bind(this,function(b){c(mxUtils.getXml(b))})):c(mxUtils.getXml(b))}));return}p.postMessage(JSON.stringify(b),"*")}),null!=k.xml&&0<k.xml.length?(c=!0,this.setFileData(k.xml),c=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(ca)},0):ca()):ca();return}if("load"==k.action){n=k.toSketch;e=1==k.autosave;this.hideDialog();null!=k.modified&&null==urlParams.modified&&(urlParams.modified=k.modified);null!=k.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=
k.saveAndExit);null!=k.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=k.noSaveBtn);if(null!=k.rough){var S=Editor.sketchMode;this.doSetSketchMode(k.rough);S!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=k.dark&&(S=Editor.darkMode,this.doSetDarkMode(k.dark),S!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));null!=k.border&&(this.embedExportBorder=k.border);null!=k.background&&(this.embedExportBackground=k.background);null!=k.viewport&&
(this.embedViewport=k.viewport);this.embedExitPoint=null;if(null!=k.rect){var Q=this.embedExportBorder;this.diagramContainer.style.border="2px solid #295fcc";this.diagramContainer.style.top=k.rect.top+"px";this.diagramContainer.style.left=k.rect.left+"px";this.diagramContainer.style.height=k.rect.height+"px";this.diagramContainer.style.width=k.rect.width+"px";this.diagramContainer.style.bottom="";this.diagramContainer.style.right="";l=mxUtils.bind(this,function(){var b=this.editor.graph,d=b.maxFitScale;
b.maxFitScale=k.maxFitScale;b.fit(2*Q);b.maxFitScale=d;b.container.scrollTop-=2*Q;b.container.scrollLeft-=2*Q;this.fireEvent(new mxEventObject("editInlineStart","data",[k]))})}null!=k.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=k.noExitBtn);null!=k.title&&null!=this.buttonContainer&&(t=document.createElement("span"),mxUtils.write(t,k.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(t),this.embedFilenameSpan=
t);try{k.libs&&this.sidebar.showEntries(k.libs)}catch(ka){}k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):null!=k.descriptor?k.descriptor:k.xml}else{if("merge"==k.action){var V=this.getCurrentFile();null!=V&&(t=m(k.xml),null!=t&&""!=t&&V.mergeFile(new LocalFile(this,t),function(){p.postMessage(JSON.stringify({event:"merge",message:k}),"*")},function(b){p.postMessage(JSON.stringify({event:"merge",message:k,error:b}),"*")}))}else"remoteInvokeReady"==k.action?this.handleRemoteInvokeReady(p):
-"remoteInvoke"==k.action?this.handleRemoteInvoke(k,f.origin):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):p.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}catch(ka){this.handleError(ka)}}var oa=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),fa=mxUtils.bind(this,function(f,k){c=!0;try{b(f,k,null,n)}catch(ja){this.handleError(ja)}c=
-!1;null!=urlParams.modified&&this.editor.setStatus("");g=oa();e&&null==d&&(d=mxUtils.bind(this,function(b,d){var e=oa();if(e!=g&&!c){var f=this.createLoadMessage("autosave");f.xml=e;(window.opener||window.parent).postMessage(JSON.stringify(f),"*")}g=e}),this.editor.graph.model.addListener(mxEvent.CHANGE,d),this.editor.graph.addListener("gridSizeChanged",d),this.editor.graph.addListener("shadowVisibleChanged",d),this.addListener("pageFormatChanged",d),this.addListener("pageScaleChanged",d),this.addListener("backgroundColorChanged",
-d),this.addListener("backgroundImageChanged",d),this.addListener("foldingEnabledChanged",d),this.addListener("mathEnabledChanged",d),this.addListener("gridEnabledChanged",d),this.addListener("guidesEnabledChanged",d),this.addListener("pageViewChanged",d));if("1"==urlParams.returnbounds||"json"==urlParams.proto){var m=this.createLoadMessage("load");m.xml=f;p.postMessage(JSON.stringify(m),"*")}null!=l&&l()});null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,
-34)?(m="0M8R4KGxGuE"==k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+1)),function(b){fa(b,f)},mxUtils.bind(this,function(b){this.handleError(b)}),m)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFile(new Blob([k],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,
-13)&&fa(b.responseText,f)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k,mxUtils.bind(this,function(b){fa(b)}),mxUtils.bind(this,function(b){this.handleError(b)})):null==k||"object"!==typeof k||null==k.format||null==k.data&&null==k.url?(k=m(k),fa(k,f)):this.loadDescriptor(k,mxUtils.bind(this,function(b){fa(oa(),f)}),mxUtils.bind(this,function(b){this.handleError(b,mxResources.get("errorLoadingFile"))}))}}));var p=window.opener||window.parent,k="json"==
+"remoteInvoke"==k.action?this.handleRemoteInvoke(k,g.origin):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):p.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}catch(ka){this.handleError(ka)}}var oa=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),fa=mxUtils.bind(this,function(g,k){c=!0;try{b(g,k,null,n)}catch(ja){this.handleError(ja)}c=
+!1;null!=urlParams.modified&&this.editor.setStatus("");f=oa();e&&null==d&&(d=mxUtils.bind(this,function(b,d){var e=oa();if(e!=f&&!c){var g=this.createLoadMessage("autosave");g.xml=e;(window.opener||window.parent).postMessage(JSON.stringify(g),"*")}f=e}),this.editor.graph.model.addListener(mxEvent.CHANGE,d),this.editor.graph.addListener("gridSizeChanged",d),this.editor.graph.addListener("shadowVisibleChanged",d),this.addListener("pageFormatChanged",d),this.addListener("pageScaleChanged",d),this.addListener("backgroundColorChanged",
+d),this.addListener("backgroundImageChanged",d),this.addListener("foldingEnabledChanged",d),this.addListener("mathEnabledChanged",d),this.addListener("gridEnabledChanged",d),this.addListener("guidesEnabledChanged",d),this.addListener("pageViewChanged",d));if("1"==urlParams.returnbounds||"json"==urlParams.proto){var m=this.createLoadMessage("load");m.xml=g;p.postMessage(JSON.stringify(m),"*")}null!=l&&l()});null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,
+34)?(m="0M8R4KGxGuE"==k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+1)),function(b){fa(b,g)},mxUtils.bind(this,function(b){this.handleError(b)}),m)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFile(new Blob([k],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,
+13)&&fa(b.responseText,g)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k,mxUtils.bind(this,function(b){fa(b)}),mxUtils.bind(this,function(b){this.handleError(b)})):null==k||"object"!==typeof k||null==k.format||null==k.data&&null==k.url?(k=m(k),fa(k,g)):this.loadDescriptor(k,mxUtils.bind(this,function(b){fa(oa(),g)}),mxUtils.bind(this,function(b){this.handleError(b,mxResources.get("errorLoadingFile"))}))}}));var p=window.opener||window.parent,k="json"==
urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";p.postMessage(k,"*");if("json"==urlParams.proto){var t=this.editor.graph.openLink;this.editor.graph.openLink=function(b,d,c){t.apply(this,arguments);p.postMessage(JSON.stringify({event:"openLink",href:b,target:d,allowOpener:c}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var b=document.createElement("div");b.style.display="inline-block";b.style.position="absolute";b.style.paddingTop=
-"atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";b.style.paddingLeft="8px";b.style.paddingBottom="2px";var c=document.createElement("button");c.className="geBigButton";var e=c;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var g="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(c,g);c.setAttribute("title",g);mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));b.appendChild(c)}}else mxUtils.write(c,
+"atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";b.style.paddingLeft="8px";b.style.paddingBottom="2px";var c=document.createElement("button");c.className="geBigButton";var e=c;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var f="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(c,f);c.setAttribute("title",f);mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));b.appendChild(c)}}else mxUtils.write(c,
mxResources.get("save")),c.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),b.appendChild(c),"1"==urlParams.saveAndExit&&(c=document.createElement("a"),mxUtils.write(c,mxResources.get("saveAndExit")),c.setAttribute("title",mxResources.get("saveAndExit")),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),
b.appendChild(c),e=c);"1"!=urlParams.noExitBtn&&(c=document.createElement("a"),e="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(c,e),c.setAttribute("title",e),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),b.appendChild(c),e=c);e.style.marginRight="20px";this.toolbar.container.appendChild(b);this.toolbar.staticElements.push(b);b.style.right=
"atlas"==uiTheme||"1"==urlParams.atlas?"42px":"52px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(b){this.importCsv(b)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};
-EditorUi.prototype.executeLayoutList=function(b,c){for(var d=this.editor.graph,e=d.getSelectionCells(),f=0;f<b.length;f++){var g=new window[b[f].layout](d);if(null!=b[f].config)for(var k in b[f].config)g[k]=b[f].config[k];this.executeLayout(function(){g.execute(d.getDefaultParent(),0==e.length?null:e)},f==b.length-1,c)}};EditorUi.prototype.importCsv=function(b,c){try{var d=b.split("\n"),e=[],f=[],g=[],k={};if(0<d.length){var p={},t=null,x=null,F=null,H=null,z=null,D=null,L="whiteSpace=wrap;html=1;",
-E=null,J=null,C="",K="auto",M="auto",aa=null,N=null,O=40,U=40,G=100,I=0,A=this.editor.graph;A.getGraphBounds();for(var Y=function(){null!=c?c(pa):(A.setSelectionCells(pa),A.scrollCellToVisible(A.getSelectionCell()))},S=A.getFreeInsertPoint(),Q=S.x,V=S.y,S=V,oa=null,fa="auto",J=null,ka=[],ra=null,la=null,ja=0;ja<d.length&&"#"==d[ja].charAt(0);){b=d[ja];for(ja++;ja<d.length&&"\\"==b.charAt(b.length-1)&&"#"==d[ja].charAt(0);)b=b.substring(0,b.length-1)+mxUtils.trim(d[ja].substring(1)),ja++;if("#"!=b.charAt(1)){var ba=
-b.indexOf(":");if(0<ba){var ca=mxUtils.trim(b.substring(1,ba)),R=mxUtils.trim(b.substring(ba+1));"label"==ca?oa=A.sanitizeHtml(R):"labelname"==ca&&0<R.length&&"-"!=R?z=R:"labels"==ca&&0<R.length&&"-"!=R?D=JSON.parse(R):"style"==ca?x=R:"parentstyle"==ca?L=R:"stylename"==ca&&0<R.length&&"-"!=R?H=R:"styles"==ca&&0<R.length&&"-"!=R?F=JSON.parse(R):"vars"==ca&&0<R.length&&"-"!=R?t=JSON.parse(R):"identity"==ca&&0<R.length&&"-"!=R?E=R:"parent"==ca&&0<R.length&&"-"!=R?J=R:"namespace"==ca&&0<R.length&&"-"!=
-R?C=R:"width"==ca?K=R:"height"==ca?M=R:"left"==ca&&0<R.length?aa=R:"top"==ca&&0<R.length?N=R:"ignore"==ca?la=R.split(","):"connect"==ca?ka.push(JSON.parse(R)):"link"==ca?ra=R:"padding"==ca?I=parseFloat(R):"edgespacing"==ca?O=parseFloat(R):"nodespacing"==ca?U=parseFloat(R):"levelspacing"==ca?G=parseFloat(R):"layout"==ca&&(fa=R)}}}if(null==d[ja])throw Error(mxResources.get("invalidOrMissingFile"));for(var sa=this.editor.csvToArray(d[ja]),ca=ba=null,R=[],W=0;W<sa.length;W++)E==sa[W]&&(ba=W),J==sa[W]&&
-(ca=W),R.push(mxUtils.trim(sa[W]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==oa&&(oa="%"+R[0]+"%");if(null!=ka)for(var X=0;X<ka.length;X++)null==p[ka[X].to]&&(p[ka[X].to]={});E=[];for(W=ja+1;W<d.length;W++){var ma=this.editor.csvToArray(d[W]);if(null==ma){var qa=40<d[W].length?d[W].substring(0,40)+"...":d[W];throw Error(qa+" ("+W+"):\n"+mxResources.get("containsValidationErrors"));}0<ma.length&&E.push(ma)}A.model.beginUpdate();try{for(W=0;W<E.length;W++){var ma=E[W],T=
-null,ia=null!=ba?C+ma[ba]:null;null!=ia&&(T=A.model.getCell(ia));var d=null!=T,da=new mxCell(oa,new mxGeometry(Q,S,0,0),x||"whiteSpace=wrap;html=1;");da.vertex=!0;da.id=ia;for(var na=0;na<ma.length;na++)A.setAttributeForCell(da,R[na],ma[na]);if(null!=z&&null!=D){var ha=D[da.getAttribute(z)];null!=ha&&A.labelChanged(da,ha)}if(null!=H&&null!=F){var ua=F[da.getAttribute(H)];null!=ua&&(da.style=ua)}A.setAttributeForCell(da,"placeholders","1");da.style=A.replacePlaceholders(da,da.style,t);d?(A.model.setValue(T,
-da.value),A.model.setStyle(T,da.style),0>mxUtils.indexOf(g,T)&&g.push(T),A.fireEvent(new mxEventObject("cellsInserted","cells",[T]))):A.fireEvent(new mxEventObject("cellsInserted","cells",[da]));T=da;if(!d)for(X=0;X<ka.length;X++)p[ka[X].to][T.getAttribute(ka[X].to)]=T;null!=ra&&"link"!=ra&&(A.setLinkForCell(T,T.getAttribute(ra)),A.setAttributeForCell(T,ra,null));var P=this.editor.graph.getPreferredSizeForCell(T),J=null!=ca?A.model.getCell(C+ma[ca]):null;if(T.vertex){qa=null!=J?0:Q;ja=null!=J?0:V;
-null!=aa&&null!=T.getAttribute(aa)&&(T.geometry.x=qa+parseFloat(T.getAttribute(aa)));null!=N&&null!=T.getAttribute(N)&&(T.geometry.y=ja+parseFloat(T.getAttribute(N)));var ea="@"==K.charAt(0)?T.getAttribute(K.substring(1)):null;T.geometry.width=null!=ea&&"auto"!=ea?parseFloat(T.getAttribute(K.substring(1))):"auto"==K||"auto"==ea?P.width+I:parseFloat(K);var ta="@"==M.charAt(0)?T.getAttribute(M.substring(1)):null;T.geometry.height=null!=ta&&"auto"!=ta?parseFloat(ta):"auto"==M||"auto"==ta?P.height+I:
-parseFloat(M);S+=T.geometry.height+U}d?(null==k[ia]&&(k[ia]=[]),k[ia].push(T)):(e.push(T),null!=J?(J.style=A.replacePlaceholders(J,L,t),A.addCell(T,J),f.push(J)):g.push(A.addCell(T)))}for(W=0;W<f.length;W++)ea="@"==K.charAt(0)?f[W].getAttribute(K.substring(1)):null,ta="@"==M.charAt(0)?f[W].getAttribute(M.substring(1)):null,"auto"!=K&&"auto"!=ea||"auto"!=M&&"auto"!=ta||A.updateGroupBounds([f[W]],I,!0);for(var ya=g.slice(),pa=g.slice(),X=0;X<ka.length;X++)for(var xa=ka[X],W=0;W<e.length;W++){var T=
-e[W],za=mxUtils.bind(this,function(b,d,c){var e=d.getAttribute(c.from);if(null!=e&&""!=e)for(var e=e.split(","),f=0;f<e.length;f++){var g=p[c.to][e[f]];if(null!=g){var k=c.label;null!=c.fromlabel&&(k=(d.getAttribute(c.fromlabel)||"")+(k||""));null!=c.sourcelabel&&(k=A.replacePlaceholders(d,c.sourcelabel,t)+(k||""));null!=c.tolabel&&(k=(k||"")+(g.getAttribute(c.tolabel)||""));null!=c.targetlabel&&(k=(k||"")+A.replacePlaceholders(g,c.targetlabel,t));var l="target"==c.placeholders==!c.invert?g:b,l=null!=
-c.style?A.replacePlaceholders(l,c.style,t):A.createCurrentEdgeStyle(),k=A.insertEdge(null,null,k||"",c.invert?g:b,c.invert?b:g,l);if(null!=c.labels)for(l=0;l<c.labels.length;l++){var m=c.labels[l],n=new mxCell(m.label||l,new mxGeometry(null!=m.x?m.x:0,null!=m.y?m.y:0,0,0),"resizable=0;html=1;");n.vertex=!0;n.connectable=!1;n.geometry.relative=!0;null!=m.placeholders&&(n.value=A.replacePlaceholders("target"==m.placeholders==!c.invert?g:b,n.value,t));if(null!=m.dx||null!=m.dy)n.geometry.offset=new mxPoint(null!=
-m.dx?m.dx:0,null!=m.dy?m.dy:0);k.insert(n)}pa.push(k);mxUtils.remove(c.invert?b:g,ya)}}});za(T,T,xa);if(null!=k[T.id])for(na=0;na<k[T.id].length;na++)za(T,k[T.id][na],xa)}if(null!=la)for(W=0;W<e.length;W++)for(T=e[W],na=0;na<la.length;na++)A.setAttributeForCell(T,mxUtils.trim(la[na]),null);if(0<g.length){var Ba=new mxParallelEdgeLayout(A);Ba.spacing=O;Ba.checkOverlap=!0;var Ea=function(){0<Ba.spacing&&Ba.execute(A.getDefaultParent());for(var b=0;b<g.length;b++){var d=A.getCellGeometry(g[b]);d.x=Math.round(A.snap(d.x));
-d.y=Math.round(A.snap(d.y));"auto"==K&&(d.width=Math.round(A.snap(d.width)));"auto"==M&&(d.height=Math.round(A.snap(d.height)))}};if("["==fa.charAt(0)){var Ja=Y;A.view.validate();this.executeLayoutList(JSON.parse(fa),function(){Ea();Ja()});Y=null}else if("circle"==fa){var Aa=new mxCircleLayout(A);Aa.disableEdgeStyle=!1;Aa.resetEdges=!1;var Ka=Aa.isVertexIgnored;Aa.isVertexIgnored=function(b){return Ka.apply(this,arguments)||0>mxUtils.indexOf(g,b)};this.executeLayout(function(){Aa.execute(A.getDefaultParent());
-Ea()},!0,Y);Y=null}else if("horizontaltree"==fa||"verticaltree"==fa||"auto"==fa&&pa.length==2*g.length-1&&1==ya.length){A.view.validate();var Ca=new mxCompactTreeLayout(A,"horizontaltree"==fa);Ca.levelDistance=U;Ca.edgeRouting=!1;Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(A.getDefaultParent(),0<ya.length?ya[0]:null)},!0,Y);Y=null}else if("horizontalflow"==fa||"verticalflow"==fa||"auto"==fa&&1==ya.length){A.view.validate();var wa=new mxHierarchicalLayout(A,"horizontalflow"==fa?mxConstants.DIRECTION_WEST:
-mxConstants.DIRECTION_NORTH);wa.intraCellSpacing=U;wa.parallelEdgeSpacing=O;wa.interRankCellSpacing=G;wa.disableEdgeStyle=!1;this.executeLayout(function(){wa.execute(A.getDefaultParent(),pa);A.moveCells(pa,Q,V)},!0,Y);Y=null}else if("organic"==fa||"auto"==fa&&pa.length>g.length){A.view.validate();var Z=new mxFastOrganicLayout(A);Z.forceConstant=3*U;Z.disableEdgeStyle=!1;Z.resetEdges=!1;var Fa=Z.isVertexIgnored;Z.isVertexIgnored=function(b){return Fa.apply(this,arguments)||0>mxUtils.indexOf(g,b)};
-this.executeLayout(function(){Z.execute(A.getDefaultParent());Ea()},!0,Y);Y=null}}this.hideDialog()}finally{A.model.endUpdate()}null!=Y&&Y()}}catch(Na){this.handleError(Na)}};EditorUi.prototype.getSearch=function(b){var d="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=b&&0<window.location.search.length){var c="?",e;for(e in urlParams)0>mxUtils.indexOf(b,e)&&null!=urlParams[e]&&(d+=c+e+"="+urlParams[e],c="&")}else d=window.location.search;return d};EditorUi.prototype.getUrl=function(b){b=
-null!=b?b:window.location.pathname;var d=0<b.indexOf("?")?1:0;if("1"==urlParams.offline)b+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),e;for(e in urlParams)0>mxUtils.indexOf(c,e)&&(b=0==d?b+"?":b+"&",null!=urlParams[e]&&(b+=e+"="+urlParams[e],d++))}return b};EditorUi.prototype.showLinkDialog=function(b,c,e,g,k){b=new LinkDialog(this,b,c,e,!0,g,k);this.showDialog(b.container,560,130,!0,!0);b.init()};EditorUi.prototype.getServiceCount=
-function(b){var d=1;null==this.drive&&"function"!==typeof window.DriveClient||d++;null==this.dropbox&&"function"!==typeof window.DropboxClient||d++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||d++;null!=this.gitHub&&d++;null!=this.gitLab&&d++;null!=this.notion&&d++;b&&isLocalStorage&&"1"==urlParams.browser&&d++;return d};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var b=this.getCurrentFile(),c=null!=b||"1"==urlParams.embed&&this.editor.graph.isEnabled();
+EditorUi.prototype.executeLayoutList=function(b,c){for(var d=this.editor.graph,e=d.getSelectionCells(),g=0;g<b.length;g++){var f=new window[b[g].layout](d);if(null!=b[g].config)for(var k in b[g].config)f[k]=b[g].config[k];this.executeLayout(function(){f.execute(d.getDefaultParent(),0==e.length?null:e)},g==b.length-1,c)}};EditorUi.prototype.importCsv=function(b,c){try{var d=b.split("\n"),e=[],g=[],f=[],k={};if(0<d.length){var p={},t=null,x=null,F=null,H=null,z=null,D=null,N="whiteSpace=wrap;html=1;",
+E=null,J=null,C="",K="auto",M="auto",Z=null,L=null,O=40,U=40,G=100,I=0,B=this.editor.graph;B.getGraphBounds();for(var ca=function(){null!=c?c(pa):(B.setSelectionCells(pa),B.scrollCellToVisible(B.getSelectionCell()))},S=B.getFreeInsertPoint(),Q=S.x,V=S.y,S=V,oa=null,fa="auto",J=null,ka=[],ra=null,la=null,ja=0;ja<d.length&&"#"==d[ja].charAt(0);){b=d[ja];for(ja++;ja<d.length&&"\\"==b.charAt(b.length-1)&&"#"==d[ja].charAt(0);)b=b.substring(0,b.length-1)+mxUtils.trim(d[ja].substring(1)),ja++;if("#"!=b.charAt(1)){var aa=
+b.indexOf(":");if(0<aa){var ba=mxUtils.trim(b.substring(1,aa)),R=mxUtils.trim(b.substring(aa+1));"label"==ba?oa=B.sanitizeHtml(R):"labelname"==ba&&0<R.length&&"-"!=R?z=R:"labels"==ba&&0<R.length&&"-"!=R?D=JSON.parse(R):"style"==ba?x=R:"parentstyle"==ba?N=R:"stylename"==ba&&0<R.length&&"-"!=R?H=R:"styles"==ba&&0<R.length&&"-"!=R?F=JSON.parse(R):"vars"==ba&&0<R.length&&"-"!=R?t=JSON.parse(R):"identity"==ba&&0<R.length&&"-"!=R?E=R:"parent"==ba&&0<R.length&&"-"!=R?J=R:"namespace"==ba&&0<R.length&&"-"!=
+R?C=R:"width"==ba?K=R:"height"==ba?M=R:"left"==ba&&0<R.length?Z=R:"top"==ba&&0<R.length?L=R:"ignore"==ba?la=R.split(","):"connect"==ba?ka.push(JSON.parse(R)):"link"==ba?ra=R:"padding"==ba?I=parseFloat(R):"edgespacing"==ba?O=parseFloat(R):"nodespacing"==ba?U=parseFloat(R):"levelspacing"==ba?G=parseFloat(R):"layout"==ba&&(fa=R)}}}if(null==d[ja])throw Error(mxResources.get("invalidOrMissingFile"));for(var sa=this.editor.csvToArray(d[ja]),ba=aa=null,R=[],W=0;W<sa.length;W++)E==sa[W]&&(aa=W),J==sa[W]&&
+(ba=W),R.push(mxUtils.trim(sa[W]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==oa&&(oa="%"+R[0]+"%");if(null!=ka)for(var X=0;X<ka.length;X++)null==p[ka[X].to]&&(p[ka[X].to]={});E=[];for(W=ja+1;W<d.length;W++){var ma=this.editor.csvToArray(d[W]);if(null==ma){var qa=40<d[W].length?d[W].substring(0,40)+"...":d[W];throw Error(qa+" ("+W+"):\n"+mxResources.get("containsValidationErrors"));}0<ma.length&&E.push(ma)}B.model.beginUpdate();try{for(W=0;W<E.length;W++){var ma=E[W],T=
+null,ia=null!=aa?C+ma[aa]:null;null!=ia&&(T=B.model.getCell(ia));var d=null!=T,da=new mxCell(oa,new mxGeometry(Q,S,0,0),x||"whiteSpace=wrap;html=1;");da.vertex=!0;da.id=ia;for(var na=0;na<ma.length;na++)B.setAttributeForCell(da,R[na],ma[na]);if(null!=z&&null!=D){var ha=D[da.getAttribute(z)];null!=ha&&B.labelChanged(da,ha)}if(null!=H&&null!=F){var ua=F[da.getAttribute(H)];null!=ua&&(da.style=ua)}B.setAttributeForCell(da,"placeholders","1");da.style=B.replacePlaceholders(da,da.style,t);d?(B.model.setValue(T,
+da.value),B.model.setStyle(T,da.style),0>mxUtils.indexOf(f,T)&&f.push(T),B.fireEvent(new mxEventObject("cellsInserted","cells",[T]))):B.fireEvent(new mxEventObject("cellsInserted","cells",[da]));T=da;if(!d)for(X=0;X<ka.length;X++)p[ka[X].to][T.getAttribute(ka[X].to)]=T;null!=ra&&"link"!=ra&&(B.setLinkForCell(T,T.getAttribute(ra)),B.setAttributeForCell(T,ra,null));var P=this.editor.graph.getPreferredSizeForCell(T),J=null!=ba?B.model.getCell(C+ma[ba]):null;if(T.vertex){qa=null!=J?0:Q;ja=null!=J?0:V;
+null!=Z&&null!=T.getAttribute(Z)&&(T.geometry.x=qa+parseFloat(T.getAttribute(Z)));null!=L&&null!=T.getAttribute(L)&&(T.geometry.y=ja+parseFloat(T.getAttribute(L)));var ea="@"==K.charAt(0)?T.getAttribute(K.substring(1)):null;T.geometry.width=null!=ea&&"auto"!=ea?parseFloat(T.getAttribute(K.substring(1))):"auto"==K||"auto"==ea?P.width+I:parseFloat(K);var ta="@"==M.charAt(0)?T.getAttribute(M.substring(1)):null;T.geometry.height=null!=ta&&"auto"!=ta?parseFloat(ta):"auto"==M||"auto"==ta?P.height+I:parseFloat(M);
+S+=T.geometry.height+U}d?(null==k[ia]&&(k[ia]=[]),k[ia].push(T)):(e.push(T),null!=J?(J.style=B.replacePlaceholders(J,N,t),B.addCell(T,J),g.push(J)):f.push(B.addCell(T)))}for(W=0;W<g.length;W++)ea="@"==K.charAt(0)?g[W].getAttribute(K.substring(1)):null,ta="@"==M.charAt(0)?g[W].getAttribute(M.substring(1)):null,"auto"!=K&&"auto"!=ea||"auto"!=M&&"auto"!=ta||B.updateGroupBounds([g[W]],I,!0);for(var ya=f.slice(),pa=f.slice(),X=0;X<ka.length;X++)for(var xa=ka[X],W=0;W<e.length;W++){var T=e[W],za=mxUtils.bind(this,
+function(b,c,d){var e=c.getAttribute(d.from);if(null!=e&&""!=e)for(var e=e.split(","),g=0;g<e.length;g++){var f=p[d.to][e[g]];if(null!=f){var k=d.label;null!=d.fromlabel&&(k=(c.getAttribute(d.fromlabel)||"")+(k||""));null!=d.sourcelabel&&(k=B.replacePlaceholders(c,d.sourcelabel,t)+(k||""));null!=d.tolabel&&(k=(k||"")+(f.getAttribute(d.tolabel)||""));null!=d.targetlabel&&(k=(k||"")+B.replacePlaceholders(f,d.targetlabel,t));var l="target"==d.placeholders==!d.invert?f:b,l=null!=d.style?B.replacePlaceholders(l,
+d.style,t):B.createCurrentEdgeStyle(),k=B.insertEdge(null,null,k||"",d.invert?f:b,d.invert?b:f,l);if(null!=d.labels)for(l=0;l<d.labels.length;l++){var m=d.labels[l],n=new mxCell(m.label||l,new mxGeometry(null!=m.x?m.x:0,null!=m.y?m.y:0,0,0),"resizable=0;html=1;");n.vertex=!0;n.connectable=!1;n.geometry.relative=!0;null!=m.placeholders&&(n.value=B.replacePlaceholders("target"==m.placeholders==!d.invert?f:b,n.value,t));if(null!=m.dx||null!=m.dy)n.geometry.offset=new mxPoint(null!=m.dx?m.dx:0,null!=
+m.dy?m.dy:0);k.insert(n)}pa.push(k);mxUtils.remove(d.invert?b:f,ya)}}});za(T,T,xa);if(null!=k[T.id])for(na=0;na<k[T.id].length;na++)za(T,k[T.id][na],xa)}if(null!=la)for(W=0;W<e.length;W++)for(T=e[W],na=0;na<la.length;na++)B.setAttributeForCell(T,mxUtils.trim(la[na]),null);if(0<f.length){var Ba=new mxParallelEdgeLayout(B);Ba.spacing=O;Ba.checkOverlap=!0;var Ea=function(){0<Ba.spacing&&Ba.execute(B.getDefaultParent());for(var b=0;b<f.length;b++){var d=B.getCellGeometry(f[b]);d.x=Math.round(B.snap(d.x));
+d.y=Math.round(B.snap(d.y));"auto"==K&&(d.width=Math.round(B.snap(d.width)));"auto"==M&&(d.height=Math.round(B.snap(d.height)))}};if("["==fa.charAt(0)){var Ja=ca;B.view.validate();this.executeLayoutList(JSON.parse(fa),function(){Ea();Ja()});ca=null}else if("circle"==fa){var Aa=new mxCircleLayout(B);Aa.disableEdgeStyle=!1;Aa.resetEdges=!1;var Ka=Aa.isVertexIgnored;Aa.isVertexIgnored=function(b){return Ka.apply(this,arguments)||0>mxUtils.indexOf(f,b)};this.executeLayout(function(){Aa.execute(B.getDefaultParent());
+Ea()},!0,ca);ca=null}else if("horizontaltree"==fa||"verticaltree"==fa||"auto"==fa&&pa.length==2*f.length-1&&1==ya.length){B.view.validate();var Ca=new mxCompactTreeLayout(B,"horizontaltree"==fa);Ca.levelDistance=U;Ca.edgeRouting=!1;Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(B.getDefaultParent(),0<ya.length?ya[0]:null)},!0,ca);ca=null}else if("horizontalflow"==fa||"verticalflow"==fa||"auto"==fa&&1==ya.length){B.view.validate();var wa=new mxHierarchicalLayout(B,"horizontalflow"==fa?mxConstants.DIRECTION_WEST:
+mxConstants.DIRECTION_NORTH);wa.intraCellSpacing=U;wa.parallelEdgeSpacing=O;wa.interRankCellSpacing=G;wa.disableEdgeStyle=!1;this.executeLayout(function(){wa.execute(B.getDefaultParent(),pa);B.moveCells(pa,Q,V)},!0,ca);ca=null}else if("organic"==fa||"auto"==fa&&pa.length>f.length){B.view.validate();var Y=new mxFastOrganicLayout(B);Y.forceConstant=3*U;Y.disableEdgeStyle=!1;Y.resetEdges=!1;var Fa=Y.isVertexIgnored;Y.isVertexIgnored=function(b){return Fa.apply(this,arguments)||0>mxUtils.indexOf(f,b)};
+this.executeLayout(function(){Y.execute(B.getDefaultParent());Ea()},!0,ca);ca=null}}this.hideDialog()}finally{B.model.endUpdate()}null!=ca&&ca()}}catch(Na){this.handleError(Na)}};EditorUi.prototype.getSearch=function(b){var d="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=b&&0<window.location.search.length){var c="?",e;for(e in urlParams)0>mxUtils.indexOf(b,e)&&null!=urlParams[e]&&(d+=c+e+"="+urlParams[e],c="&")}else d=window.location.search;return d};EditorUi.prototype.getUrl=function(b){b=
+null!=b?b:window.location.pathname;var d=0<b.indexOf("?")?1:0;if("1"==urlParams.offline)b+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),e;for(e in urlParams)0>mxUtils.indexOf(c,e)&&(b=0==d?b+"?":b+"&",null!=urlParams[e]&&(b+=e+"="+urlParams[e],d++))}return b};EditorUi.prototype.showLinkDialog=function(b,c,e,f,k){b=new LinkDialog(this,b,c,e,!0,f,k);this.showDialog(b.container,560,130,!0,!0);b.init()};EditorUi.prototype.getServiceCount=
+function(b){var c=1;null==this.drive&&"function"!==typeof window.DriveClient||c++;null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||c++;null!=this.gitHub&&c++;null!=this.gitLab&&c++;null!=this.notion&&c++;b&&isLocalStorage&&"1"==urlParams.browser&&c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var b=this.getCurrentFile(),c=null!=b||"1"==urlParams.embed&&this.editor.graph.isEnabled();
this.menus.get("viewPanels").setEnabled(c);this.menus.get("viewZoom").setEnabled(c);var e=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==b||b.isRestricted());this.actions.get("makeCopy").setEnabled(!e);this.actions.get("print").setEnabled(!e);this.menus.get("exportAs").setEnabled(!e);this.menus.get("embed").setEnabled(!e);e="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(e);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(e),
this.menus.get("newLibrary").setEnabled(e));b="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=b&&b.isEditable();this.actions.get("image").setEnabled(c);this.actions.get("zoomIn").setEnabled(c);this.actions.get("zoomOut").setEnabled(c);this.actions.get("resetView").setEnabled(c);this.actions.get("undo").setEnabled(this.canUndo()&&b);this.actions.get("redo").setEnabled(this.canRedo()&&b);this.menus.get("edit").setEnabled(c);this.menus.get("view").setEnabled(c);this.menus.get("importFrom").setEnabled(b);
this.menus.get("arrange").setEnabled(b);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(b),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(b));this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var b=this.getCurrentFile();
-return null!=b&&b.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var p=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){p.apply(this,arguments);var b=this.editor.graph,c=this.getCurrentFile(),e=this.isDiagramActive(),g=b.getEditableCells(b.getSelectionCells());this.actions.get("pageSetup").setEnabled(e);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(e);this.actions.get("editData").setEnabled(0<
-g.length||b.isSelectionEmpty());this.actions.get("shadowVisible").setEnabled(e);this.actions.get("connectionArrows").setEnabled(e);this.actions.get("connectionPoints").setEnabled(e);this.actions.get("copyStyle").setEnabled(e&&!b.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(e&&0<g.length);this.actions.get("editGeometry").setEnabled(0<g.length&&b.getModel().isVertex(g[0]));this.actions.get("createShape").setEnabled(e);this.actions.get("createRevision").setEnabled(e);this.actions.get("moveToFolder").setEnabled(null!=
-c);this.actions.get("makeCopy").setEnabled(null!=c&&!c.isRestricted());this.actions.get("editDiagram").setEnabled(e&&(null==c||!c.isRestricted()));this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=
-c&&c.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());c=this.actions.get("findReplace");c.setEnabled("hidden"!=this.diagramContainer.style.visibility);c.label=mxResources.get("find")+(b.isEnabled()?"/"+mxResources.get("replace"):"")+"...";b=b.view.getState(b.getSelectionCell());this.actions.get("editShape").setEnabled(e&&null!=b&&null!=b.shape&&null!=b.shape.stencil)};var t=EditorUi.prototype.destroy;
-EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);t.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(b,c,e,g,k,n,p,t){var d=b.editor.graph;if("xml"==e)b.hideDialog(),b.saveData(c,"xml",mxUtils.getXml(b.editor.getGraphXml()),"text/xml");else if("svg"==e)b.hideDialog(),b.saveData(c,"svg",mxUtils.getXml(d.getSvg(g,
-k,n)),"image/svg+xml");else{var f=b.getFileData(!0,null,null,null,null,!0),l=d.getGraphBounds(),m=Math.floor(l.width*k/d.view.scale),q=Math.floor(l.height*k/d.view.scale);if(f.length<=MAX_REQUEST_SIZE&&m*q<MAX_AREA)if(b.hideDialog(),"png"!=e&&"jpg"!=e&&"jpeg"!=e||!b.isExportToCanvas()){var u={globalVars:d.getExportVariables()};t&&(u.grid={size:d.gridSize,steps:d.view.gridSteps,color:d.view.gridColor});b.saveRequest(c,e,function(b,c){return new mxXmlRequest(EXPORT_URL,"format="+e+"&base64="+(c||"0")+
-(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(u))+(0<p?"&dpi="+p:"")+"&bg="+(null!=g?g:"none")+"&w="+m+"&h="+q+"&border="+n+"&xml="+encodeURIComponent(f))})}else"png"==e?b.exportImage(k,null==g||"none"==g,!0,!1,!1,n,!0,!1,null,t,p):b.exportImage(k,!1,!0,!1,!1,n,!0,!1,"jpeg",t);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var b=this.editor.graph,c="";if(null!=
-this.pages)for(var e=0;e<this.pages.length;e++){var g=b;this.currentPage!=this.pages[e]&&(g=this.createTemporaryGraph(b.getStylesheet()),this.updatePageRoot(this.pages[e]),g.model.setRoot(this.pages[e].root));c+=this.pages[e].getName()+" "+g.getIndexableText()+" "}else c=b.getIndexableText();this.editor.graph.setEnabled(!0);return c};EditorUi.prototype.showRemotelyStoredLibrary=function(b){var c={},d=document.createElement("div");d.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,
-mxUtils.htmlEntities(b));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(e);var g=document.createElement("div");g.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";g.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var k={};try{var p=mxSettings.getCustomLibraries();for(b=0;b<p.length;b++){var t=p[b];if("R"==t.substring(0,1)){var y=JSON.parse(decodeURIComponent(t.substring(1)));k[y[0]]=
-{id:y[0],title:y[1],downloadUrl:y[2]}}}}catch(x){}this.remoteInvoke("getCustomLibraries",null,null,function(b){g.innerHTML="";if(0==b.length)g.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var d=0;d<b.length;d++){var e=b[d];k[e.id]&&(c[e.id]=e);var f=this.addCheckbox(g,e.title,k[e.id]);(function(b,d){mxEvent.addListener(d,"change",function(){this.checked?c[b.id]=b:delete c[b.id]})})(e,f)}},mxUtils.bind(this,
-function(b){g.innerHTML="";var c=document.createElement("div");c.style.padding="8px";c.style.textAlign="center";mxUtils.write(c,mxResources.get("error")+": ");mxUtils.write(c,null!=b&&null!=b.message?b.message:mxResources.get("unknownError"));g.appendChild(c)}));d.appendChild(g);d=new CustomDialog(this,d,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var b=0,d;for(d in c)null==k[d]&&(b++,mxUtils.bind(this,function(c){this.remoteInvoke("getFileContent",[c.downloadUrl],
-null,mxUtils.bind(this,function(d){b--;0==b&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,d,c))}catch(D){this.handleError(D,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){b--;0==b&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(c[d]));for(d in k)c[d]||this.closeLibrary(new RemoteLibrary(this,null,k[d]));0==b&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(d.container,
-340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(b){this.remoteWin=b;for(var c=0;c<this.remoteInvokeQueue.length;c++)b.postMessage(this.remoteInvokeQueue[c],
-"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(b){var c=b.msgMarkers,d=this.remoteInvokeCallbacks[c.callbackId];if(null==d)throw Error("No callback for "+(null!=c?c.callbackId:"null"));b.error?d.error&&d.error(b.error.errResp):d.callback&&d.callback.apply(this,b.resp);this.remoteInvokeCallbacks[c.callbackId]=null};EditorUi.prototype.remoteInvoke=function(b,c,e,g,k){var d=!0,f=window.setTimeout(mxUtils.bind(this,function(){d=!1;k({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),
-this.timeout),l=mxUtils.bind(this,function(){window.clearTimeout(f);d&&g.apply(this,arguments)}),m=mxUtils.bind(this,function(){window.clearTimeout(f);d&&k.apply(this,arguments)});e=e||{};e.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:l,error:m});b=JSON.stringify({event:"remoteInvoke",funtionName:b,functionArgs:c,msgMarkers:e});null!=this.remoteWin?this.remoteWin.postMessage(b,"*"):this.remoteInvokeQueue.push(b)};EditorUi.prototype.handleRemoteInvoke=function(b,
-c){var d=mxUtils.bind(this,function(c,d){var e={event:"remoteInvokeResponse",msgMarkers:b.msgMarkers};null!=d?e.error={errResp:d}:null!=c&&(e.resp=c);this.remoteWin.postMessage(JSON.stringify(e),"*")});try{var e=b.funtionName,f=this.remoteInvokableFns[e];if(null!=f&&"function"===typeof this[e]){if(f.allowedDomains){for(var g=!1,k=0;k<f.allowedDomains.length;k++)if(c=="https://"+f.allowedDomains[k]){g=!0;break}if(!g){d(null,"Invalid Call: "+e+" is not allowed.");return}}var p=b.functionArgs;Array.isArray(p)||
-(p=[]);if(f.isAsync)p.push(function(){d(Array.prototype.slice.apply(arguments))}),p.push(function(b){d(null,b||"Unkown Error")}),this[e].apply(this,p);else{var t=this[e].apply(this,p);d([t])}}else d(null,"Invalid Call: "+e+" is not found.")}catch(x){d(null,"Invalid Call: An error occurred, "+x.message)}};EditorUi.prototype.openDatabase=function(b,c){if(null==this.database){var d=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=d)try{var e=d.open("database",2);e.onupgradeneeded=
-function(b){try{var d=e.result;1>b.oldVersion&&d.createObjectStore("objects",{keyPath:"key"});2>b.oldVersion&&(d.createObjectStore("files",{keyPath:"title"}),d.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(u){null!=c&&c(u)}};e.onsuccess=mxUtils.bind(this,function(c){var d=e.result;this.database=d;EditorUi.migrateStorageFiles&&(StorageFile.migrate(d),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||
-(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(b){if(!b||"1"==urlParams.forceMigration){var c=document.createElement("iframe");c.style.display="none";c.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(c);var d=!0,e=!1,f,g=0,k=mxUtils.bind(this,function(){e=!0;this.setDatabaseItem(".drawioMigrated3",!0);c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",
-funtionName:"setMigratedFlag"}),"*")}),l=mxUtils.bind(this,function(){g++;m()}),m=mxUtils.bind(this,function(){try{if(g>=f.length)k();else{var b=f[g];StorageFile.getFileContent(this,b,mxUtils.bind(this,function(d){null==d||".scratchpad"==b&&d==this.emptyLibraryXml?c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[b]}),"*"):l()}),l)}}catch(C){console.log(C)}}),n=mxUtils.bind(this,function(b){try{this.setDatabaseItem(null,[{title:b.title,
-size:b.data.length,lastModified:Date.now(),type:b.isLib?"L":"F"},{title:b.title,data:b.data}],l,l,["filesInfo","files"])}catch(C){console.log(C)}});b=mxUtils.bind(this,function(b){try{if(b.source==c.contentWindow){var g={};try{g=JSON.parse(b.data)}catch(K){}"init"==g.event?(c.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=g.event||e||
-(d?null!=g.resp&&0<g.resp.length&&null!=g.resp[0]?(f=g.resp[0],d=!1,m()):k():null!=g.resp&&0<g.resp.length&&null!=g.resp[0]?n(g.resp[0]):l())}}catch(K){console.log(K)}});window.addEventListener("message",b)}})));b(d);d.onversionchange=function(){d.close()}});e.onerror=c;e.onblocked=function(){}}catch(m){null!=c&&c(m)}else null!=c&&c()}else b(this.database)};EditorUi.prototype.setDatabaseItem=function(b,c,e,g,k){this.openDatabase(mxUtils.bind(this,function(d){try{k=k||"objects";Array.isArray(k)||(k=
-[k],b=[b],c=[c]);var f=d.transaction(k,"readwrite");f.oncomplete=e;f.onerror=g;for(d=0;d<k.length;d++)f.objectStore(k[d]).put(null!=b&&null!=b[d]?{key:b[d],data:c[d]}:c[d])}catch(v){null!=g&&g(v)}}),g)};EditorUi.prototype.removeDatabaseItem=function(b,c,e,g){this.openDatabase(mxUtils.bind(this,function(d){g=g||"objects";Array.isArray(g)||(g=[g],b=[b]);d=d.transaction(g,"readwrite");d.oncomplete=c;d.onerror=e;for(var f=0;f<g.length;f++)d.objectStore(g[f])["delete"](b[f])}),e)};EditorUi.prototype.getDatabaseItem=
-function(b,c,e,g){this.openDatabase(mxUtils.bind(this,function(d){try{g=g||"objects";var f=d.transaction([g],"readonly").objectStore(g).get(b);f.onsuccess=function(){c(f.result)};f.onerror=e}catch(u){null!=e&&e(u)}}),e)};EditorUi.prototype.getDatabaseItems=function(b,c,e){this.openDatabase(mxUtils.bind(this,function(d){try{e=e||"objects";var f=d.transaction([e],"readonly").objectStore(e).openCursor(IDBKeyRange.lowerBound(0)),g=[];f.onsuccess=function(c){null==c.target.result?b(g):(g.push(c.target.result.value),
-c.target.result["continue"]())};f.onerror=c}catch(u){null!=c&&c(u)}}),c)};EditorUi.prototype.getDatabaseItemKeys=function(b,c,e){this.openDatabase(mxUtils.bind(this,function(d){try{e=e||"objects";var f=d.transaction([e],"readonly").objectStore(e).getAllKeys();f.onsuccess=function(){b(f.result)};f.onerror=c}catch(n){null!=c&&c(n)}}),c)};EditorUi.prototype.commentsSupported=function(){var b=this.getCurrentFile();return null!=b?b.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var b=
-this.getCurrentFile();return null!=b?b.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var b=this.getCurrentFile();return null!=b?b.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(b,c){var d=this.getCurrentFile();null!=d?d.getComments(b,c):b([])};EditorUi.prototype.addComment=function(b,c,e){var d=this.getCurrentFile();null!=d?d.addComment(b,c,e):c(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var b=this.getCurrentFile();return null!=b?
-b.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var b=this.getCurrentFile();return null!=b?b.canComment():!0};EditorUi.prototype.newComment=function(b,c){var d=this.getCurrentFile();return null!=d?d.newComment(b,c):new DrawioComment(this,null,b,Date.now(),Date.now(),!1,c)};EditorUi.prototype.isRevisionHistorySupported=function(){var b=this.getCurrentFile();return null!=b&&b.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(b,c){var d=this.getCurrentFile();null!=
-d&&d.getRevisions?d.getRevisions(b,c):c({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var b=this.getCurrentFile();return null!=b&&(b.constructor==DriveFile&&b.isEditable()||b.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(b){b.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(b,c,e,g,k,p,t,v){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");
-return this.editor.loadUrl(b,c,e,g,k,p,t,v)};EditorUi.prototype.loadFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(b)};EditorUi.prototype.createSvgDataUri=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(b)};EditorUi.prototype.embedCssFonts=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(b,c)};EditorUi.prototype.embedExtFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");
-return this.editor.embedExtFonts(b)};EditorUi.prototype.exportToCanvas=function(b,c,e,g,k,p,t,v,y,x,F,H,z,D,L,E){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(b,c,e,g,k,p,t,v,y,x,F,H,z,D,L,E)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(b,c,e,g){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");
-return this.editor.convertImages(b,c,e,g)};EditorUi.prototype.convertImageToDataUri=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(b,c)};EditorUi.prototype.base64Encode=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(b)};EditorUi.prototype.updateCRC=function(b,c,e,g){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(b,c,e,g)};EditorUi.prototype.crc32=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");
-return Editor.crc32(b)};EditorUi.prototype.writeGraphModelToPng=function(b,c,e,g,k){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(b,c,e,g,k)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var b=[],c=0;c<localStorage.length;c++){var e=localStorage.key(c),g=localStorage.getItem(e);if(0<e.length&&(".scratchpad"==e||"."!=e.charAt(0))&&0<g.length){var k=
-"<mxfile "===g.substring(0,8)||"<?xml"===g.substring(0,5)||"\x3c!--[if IE]>"===g.substring(0,12),g="<mxlibrary>"===g.substring(0,11);(k||g)&&b.push(e)}}return b};EditorUi.prototype.getLocalStorageFile=function(b){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var c=localStorage.getItem(b);return{title:b,data:c,isLib:"<mxlibrary>"===c.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
-var CommentsWindow=function(b,c,e,k,g,p){function t(){for(var b=H.getElementsByTagName("div"),c=0,d=0;d<b.length;d++)"none"!=b[d].style.display&&b[d].parentNode==H&&c++;z.style.display=0==c?"block":"none"}function d(b,c,d,e){function f(){c.removeChild(l);c.removeChild(m);k.style.display="block";g.style.display="block"}y={div:c,comment:b,saveCallback:d,deleteOnCancel:e};var g=c.querySelector(".geCommentTxt"),k=c.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className=
+return null!=b&&b.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var p=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){p.apply(this,arguments);var b=this.editor.graph,c=this.getCurrentFile(),e=this.getSelectionState(),f=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(f);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(f);this.actions.get("editData").setEnabled(b.isEnabled());
+this.actions.get("shadowVisible").setEnabled(f);this.actions.get("connectionArrows").setEnabled(f);this.actions.get("connectionPoints").setEnabled(f);this.actions.get("copyStyle").setEnabled(f&&!b.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(f&&0<e.cells.length);this.actions.get("editGeometry").setEnabled(0<e.vertices.length);this.actions.get("createShape").setEnabled(f);this.actions.get("createRevision").setEnabled(f);this.actions.get("moveToFolder").setEnabled(null!=c);this.actions.get("makeCopy").setEnabled(null!=
+c&&!c.isRestricted());this.actions.get("editDiagram").setEnabled(f&&(null==c||!c.isRestricted()));this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=c&&c.isRenamable()||"1"==
+urlParams.embed);this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());c=this.actions.get("findReplace");c.setEnabled("hidden"!=this.diagramContainer.style.visibility);c.label=mxResources.get("find")+(b.isEnabled()?"/"+mxResources.get("replace"):"")+"...";b=b.view.getState(b.getSelectionCell());this.actions.get("editShape").setEnabled(f&&null!=b&&null!=b.shape&&null!=b.shape.stencil)};var t=EditorUi.prototype.destroy;EditorUi.prototype.destroy=
+function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);t.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(b,c,e,f,k,n,p,t){var d=b.editor.graph;if("xml"==e)b.hideDialog(),b.saveData(c,"xml",mxUtils.getXml(b.editor.getGraphXml()),"text/xml");else if("svg"==e)b.hideDialog(),b.saveData(c,"svg",mxUtils.getXml(d.getSvg(f,k,n)),"image/svg+xml");
+else{var g=b.getFileData(!0,null,null,null,null,!0),l=d.getGraphBounds(),m=Math.floor(l.width*k/d.view.scale),q=Math.floor(l.height*k/d.view.scale);if(g.length<=MAX_REQUEST_SIZE&&m*q<MAX_AREA)if(b.hideDialog(),"png"!=e&&"jpg"!=e&&"jpeg"!=e||!b.isExportToCanvas()){var u={globalVars:d.getExportVariables()};t&&(u.grid={size:d.gridSize,steps:d.view.gridSteps,color:d.view.gridColor});b.saveRequest(c,e,function(b,c){return new mxXmlRequest(EXPORT_URL,"format="+e+"&base64="+(c||"0")+(null!=b?"&filename="+
+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(u))+(0<p?"&dpi="+p:"")+"&bg="+(null!=f?f:"none")+"&w="+m+"&h="+q+"&border="+n+"&xml="+encodeURIComponent(g))})}else"png"==e?b.exportImage(k,null==f||"none"==f,!0,!1,!1,n,!0,!1,null,t,p):b.exportImage(k,!1,!0,!1,!1,n,!0,!1,"jpeg",t);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var b=this.editor.graph,c="";if(null!=this.pages)for(var e=
+0;e<this.pages.length;e++){var f=b;this.currentPage!=this.pages[e]&&(f=this.createTemporaryGraph(b.getStylesheet()),this.updatePageRoot(this.pages[e]),f.model.setRoot(this.pages[e].root));c+=this.pages[e].getName()+" "+f.getIndexableText()+" "}else c=b.getIndexableText();this.editor.graph.setEnabled(!0);return c};EditorUi.prototype.showRemotelyStoredLibrary=function(b){var c={},d=document.createElement("div");d.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxUtils.htmlEntities(b));
+e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(e);var f=document.createElement("div");f.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";f.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var k={};try{var p=mxSettings.getCustomLibraries();for(b=0;b<p.length;b++){var t=p[b];if("R"==t.substring(0,1)){var y=JSON.parse(decodeURIComponent(t.substring(1)));k[y[0]]={id:y[0],title:y[1],downloadUrl:y[2]}}}}catch(x){}this.remoteInvoke("getCustomLibraries",
+null,null,function(b){f.innerHTML="";if(0==b.length)f.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var d=0;d<b.length;d++){var e=b[d];k[e.id]&&(c[e.id]=e);var g=this.addCheckbox(f,e.title,k[e.id]);(function(b,d){mxEvent.addListener(d,"change",function(){this.checked?c[b.id]=b:delete c[b.id]})})(e,g)}},mxUtils.bind(this,function(b){f.innerHTML="";var c=document.createElement("div");c.style.padding="8px";
+c.style.textAlign="center";mxUtils.write(c,mxResources.get("error")+": ");mxUtils.write(c,null!=b&&null!=b.message?b.message:mxResources.get("unknownError"));f.appendChild(c)}));d.appendChild(f);d=new CustomDialog(this,d,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var b=0,d;for(d in c)null==k[d]&&(b++,mxUtils.bind(this,function(c){this.remoteInvoke("getFileContent",[c.downloadUrl],null,mxUtils.bind(this,function(d){b--;0==b&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,
+d,c))}catch(D){this.handleError(D,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){b--;0==b&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(c[d]));for(d in k)c[d]||this.closeLibrary(new RemoteLibrary(this,null,k[d]));0==b&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(d.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},
+getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(b){this.remoteWin=b;for(var c=0;c<this.remoteInvokeQueue.length;c++)b.postMessage(this.remoteInvokeQueue[c],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=
+function(b){var c=b.msgMarkers,d=this.remoteInvokeCallbacks[c.callbackId];if(null==d)throw Error("No callback for "+(null!=c?c.callbackId:"null"));b.error?d.error&&d.error(b.error.errResp):d.callback&&d.callback.apply(this,b.resp);this.remoteInvokeCallbacks[c.callbackId]=null};EditorUi.prototype.remoteInvoke=function(b,c,e,f,k){var d=!0,g=window.setTimeout(mxUtils.bind(this,function(){d=!1;k({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),l=mxUtils.bind(this,function(){window.clearTimeout(g);
+d&&f.apply(this,arguments)}),m=mxUtils.bind(this,function(){window.clearTimeout(g);d&&k.apply(this,arguments)});e=e||{};e.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:l,error:m});b=JSON.stringify({event:"remoteInvoke",funtionName:b,functionArgs:c,msgMarkers:e});null!=this.remoteWin?this.remoteWin.postMessage(b,"*"):this.remoteInvokeQueue.push(b)};EditorUi.prototype.handleRemoteInvoke=function(b,c){var d=mxUtils.bind(this,function(c,d){var e={event:"remoteInvokeResponse",
+msgMarkers:b.msgMarkers};null!=d?e.error={errResp:d}:null!=c&&(e.resp=c);this.remoteWin.postMessage(JSON.stringify(e),"*")});try{var e=b.funtionName,g=this.remoteInvokableFns[e];if(null!=g&&"function"===typeof this[e]){if(g.allowedDomains){for(var f=!1,k=0;k<g.allowedDomains.length;k++)if(c=="https://"+g.allowedDomains[k]){f=!0;break}if(!f){d(null,"Invalid Call: "+e+" is not allowed.");return}}var p=b.functionArgs;Array.isArray(p)||(p=[]);if(g.isAsync)p.push(function(){d(Array.prototype.slice.apply(arguments))}),
+p.push(function(b){d(null,b||"Unkown Error")}),this[e].apply(this,p);else{var t=this[e].apply(this,p);d([t])}}else d(null,"Invalid Call: "+e+" is not found.")}catch(x){d(null,"Invalid Call: An error occurred, "+x.message)}};EditorUi.prototype.openDatabase=function(b,c){if(null==this.database){var d=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=d)try{var e=d.open("database",2);e.onupgradeneeded=function(b){try{var d=e.result;1>b.oldVersion&&d.createObjectStore("objects",{keyPath:"key"});
+2>b.oldVersion&&(d.createObjectStore("files",{keyPath:"title"}),d.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(u){null!=c&&c(u)}};e.onsuccess=mxUtils.bind(this,function(c){var d=e.result;this.database=d;EditorUi.migrateStorageFiles&&(StorageFile.migrate(d),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(b){if(!b||
+"1"==urlParams.forceMigration){var c=document.createElement("iframe");c.style.display="none";c.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(c);var d=!0,e=!1,g,f=0,k=mxUtils.bind(this,function(){e=!0;this.setDatabaseItem(".drawioMigrated3",!0);c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),l=mxUtils.bind(this,function(){f++;m()}),m=mxUtils.bind(this,function(){try{if(f>=
+g.length)k();else{var b=g[f];StorageFile.getFileContent(this,b,mxUtils.bind(this,function(d){null==d||".scratchpad"==b&&d==this.emptyLibraryXml?c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[b]}),"*"):l()}),l)}}catch(C){console.log(C)}}),p=mxUtils.bind(this,function(b){try{this.setDatabaseItem(null,[{title:b.title,size:b.data.length,lastModified:Date.now(),type:b.isLib?"L":"F"},{title:b.title,data:b.data}],l,l,["filesInfo","files"])}catch(C){console.log(C)}});
+b=mxUtils.bind(this,function(b){try{if(b.source==c.contentWindow){var f={};try{f=JSON.parse(b.data)}catch(K){}"init"==f.event?(c.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=f.event||e||(d?null!=f.resp&&0<f.resp.length&&null!=f.resp[0]?(g=f.resp[0],d=!1,m()):k():null!=f.resp&&0<f.resp.length&&null!=f.resp[0]?p(f.resp[0]):l())}}catch(K){console.log(K)}});
+window.addEventListener("message",b)}})));b(d);d.onversionchange=function(){d.close()}});e.onerror=c;e.onblocked=function(){}}catch(m){null!=c&&c(m)}else null!=c&&c()}else b(this.database)};EditorUi.prototype.setDatabaseItem=function(b,c,e,f,k){this.openDatabase(mxUtils.bind(this,function(d){try{k=k||"objects";Array.isArray(k)||(k=[k],b=[b],c=[c]);var g=d.transaction(k,"readwrite");g.oncomplete=e;g.onerror=f;for(d=0;d<k.length;d++)g.objectStore(k[d]).put(null!=b&&null!=b[d]?{key:b[d],data:c[d]}:c[d])}catch(v){null!=
+f&&f(v)}}),f)};EditorUi.prototype.removeDatabaseItem=function(b,c,e,f){this.openDatabase(mxUtils.bind(this,function(d){f=f||"objects";Array.isArray(f)||(f=[f],b=[b]);d=d.transaction(f,"readwrite");d.oncomplete=c;d.onerror=e;for(var g=0;g<f.length;g++)d.objectStore(f[g])["delete"](b[g])}),e)};EditorUi.prototype.getDatabaseItem=function(b,c,e,f){this.openDatabase(mxUtils.bind(this,function(d){try{f=f||"objects";var g=d.transaction([f],"readonly").objectStore(f).get(b);g.onsuccess=function(){c(g.result)};
+g.onerror=e}catch(u){null!=e&&e(u)}}),e)};EditorUi.prototype.getDatabaseItems=function(b,c,e){this.openDatabase(mxUtils.bind(this,function(d){try{e=e||"objects";var g=d.transaction([e],"readonly").objectStore(e).openCursor(IDBKeyRange.lowerBound(0)),f=[];g.onsuccess=function(c){null==c.target.result?b(f):(f.push(c.target.result.value),c.target.result["continue"]())};g.onerror=c}catch(u){null!=c&&c(u)}}),c)};EditorUi.prototype.getDatabaseItemKeys=function(b,c,e){this.openDatabase(mxUtils.bind(this,
+function(d){try{e=e||"objects";var g=d.transaction([e],"readonly").objectStore(e).getAllKeys();g.onsuccess=function(){b(g.result)};g.onerror=c}catch(n){null!=c&&c(n)}}),c)};EditorUi.prototype.commentsSupported=function(){var b=this.getCurrentFile();return null!=b?b.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var b=this.getCurrentFile();return null!=b?b.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var b=this.getCurrentFile();return null!=
+b?b.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(b,c){var d=this.getCurrentFile();null!=d?d.getComments(b,c):b([])};EditorUi.prototype.addComment=function(b,c,e){var d=this.getCurrentFile();null!=d?d.addComment(b,c,e):c(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var b=this.getCurrentFile();return null!=b?b.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var b=this.getCurrentFile();return null!=b?b.canComment():!0};EditorUi.prototype.newComment=
+function(b,c){var d=this.getCurrentFile();return null!=d?d.newComment(b,c):new DrawioComment(this,null,b,Date.now(),Date.now(),!1,c)};EditorUi.prototype.isRevisionHistorySupported=function(){var b=this.getCurrentFile();return null!=b&&b.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(b,c){var d=this.getCurrentFile();null!=d&&d.getRevisions?d.getRevisions(b,c):c({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var b=this.getCurrentFile();
+return null!=b&&(b.constructor==DriveFile&&b.isEditable()||b.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(b){b.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(b,c,e,f,k,p,t,v){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(b,c,e,f,k,p,t,v)};EditorUi.prototype.loadFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");
+return this.editor.loadFonts(b)};EditorUi.prototype.createSvgDataUri=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(b)};EditorUi.prototype.embedCssFonts=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(b,c)};EditorUi.prototype.embedExtFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(b)};EditorUi.prototype.exportToCanvas=function(b,
+c,e,f,k,p,t,v,y,x,F,H,z,D,N,E){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(b,c,e,f,k,p,t,v,y,x,F,H,z,D,N,E)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(b,c,e,f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(b,c,e,f)};EditorUi.prototype.convertImageToDataUri=
+function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(b,c)};EditorUi.prototype.base64Encode=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(b)};EditorUi.prototype.updateCRC=function(b,c,e,f){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(b,c,e,f)};EditorUi.prototype.crc32=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(b)};
+EditorUi.prototype.writeGraphModelToPng=function(b,c,e,f,k){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(b,c,e,f,k)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var b=[],c=0;c<localStorage.length;c++){var e=localStorage.key(c),f=localStorage.getItem(e);if(0<e.length&&(".scratchpad"==e||"."!=e.charAt(0))&&0<f.length){var k="<mxfile "===
+f.substring(0,8)||"<?xml"===f.substring(0,5)||"\x3c!--[if IE]>"===f.substring(0,12),f="<mxlibrary>"===f.substring(0,11);(k||f)&&b.push(e)}}return b};EditorUi.prototype.getLocalStorageFile=function(b){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var c=localStorage.getItem(b);return{title:b,data:c,isLib:"<mxlibrary>"===c.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
+var CommentsWindow=function(b,c,e,k,f,p){function t(){for(var b=H.getElementsByTagName("div"),c=0,d=0;d<b.length;d++)"none"!=b[d].style.display&&b[d].parentNode==H&&c++;z.style.display=0==c?"block":"none"}function d(b,c,d,e){function f(){c.removeChild(l);c.removeChild(m);k.style.display="block";g.style.display="block"}y={div:c,comment:b,saveCallback:d,deleteOnCancel:e};var g=c.querySelector(".geCommentTxt"),k=c.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className=
"geCommentEditTxtArea";l.style.minHeight=g.offsetHeight+"px";l.value=b.content;c.insertBefore(l,g);var m=document.createElement("div");m.className="geCommentEditBtns";var p=mxUtils.button(mxResources.get("cancel"),function(){e?(c.parentNode.removeChild(c),t()):f();y=null});p.className="geCommentEditBtn";m.appendChild(p);var n=mxUtils.button(mxResources.get("save"),function(){g.innerHTML="";b.content=l.value;mxUtils.write(g,b.content);f();d(b);y=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this,
-function(b){mxEvent.isConsumed(b)||((mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b))&&13==b.keyCode?(n.click(),mxEvent.consume(b)):27==b.keyCode&&(p.click(),mxEvent.consume(b)))}));n.focus();n.className="geCommentEditBtn gePrimaryBtn";m.appendChild(n);c.insertBefore(m,g);k.style.display="none";g.style.display="none";l.focus()}function f(c,d){d.innerHTML="";var e=new Date(c.modifiedDate),f=b.timeSince(e);null==f&&(f=mxResources.get("lessThanAMinute"));mxUtils.write(d,mxResources.get("timeAgo",
-[f],"{1} ago"));d.setAttribute("title",e.toLocaleDateString()+" "+e.toLocaleTimeString())}function l(b){var c=document.createElement("img");c.className="geCommentBusyImg";c.src=IMAGE_PATH+"/spin.gif";b.appendChild(c);b.busyImg=c}function q(b){b.style.border="1px solid red";b.removeChild(b.busyImg)}function m(b){b.style.border="";b.removeChild(b.busyImg)}function n(c,e,g,k,p){function C(b,d,e){var f=document.createElement("li");f.className="geCommentAction";var g=document.createElement("a");g.className=
-"geCommentActionLnk";mxUtils.write(g,b);f.appendChild(g);mxEvent.addListener(g,"click",function(b){d(b,c);b.preventDefault();mxEvent.consume(b)});M.appendChild(f);e&&(f.style.display="none")}function x(){function b(c){d.push(e);if(null!=c.replies)for(var f=0;f<c.replies.length;f++)e=e.nextSibling,b(c.replies[f])}var d=[],e=O;b(c);return{pdiv:e,replies:d}}function N(e,f,g,p,t){function u(){l(N);c.addReply(C,function(b){C.id=b;c.replies.push(C);m(N);g&&g()},function(c){z();q(N);b.handleError(c,null,
-null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},p,t)}function z(){d(C,N,function(b){u()},!0)}var v=x().pdiv,C=b.newComment(e,b.getCurrentUser());C.pCommentId=c.id;null==c.replies&&(c.replies=[]);var N=n(C,c.replies,v,k+1);f?z():u()}if(p||!c.isResolved){z.style.display="none";var O=document.createElement("div");O.className="geCommentContainer";O.setAttribute("data-commentId",c.id);O.style.marginLeft=20*k+5+"px";c.isResolved&&!Editor.isDarkMode()&&(O.style.backgroundColor="ghostWhite");
-var D=document.createElement("div");D.className="geCommentHeader";var K=document.createElement("img");K.className="geCommentUserImg";K.src=c.user.pictureUrl||Editor.userImage;D.appendChild(K);K=document.createElement("div");K.className="geCommentHeaderTxt";D.appendChild(K);var U=document.createElement("div");U.className="geCommentUsername";mxUtils.write(U,c.user.displayName||"");K.appendChild(U);U=document.createElement("div");U.className="geCommentDate";U.setAttribute("data-commentId",c.id);f(c,
-U);K.appendChild(U);O.appendChild(D);D=document.createElement("div");D.className="geCommentTxt";mxUtils.write(D,c.content||"");O.appendChild(D);c.isLocked&&(O.style.opacity="0.5");D=document.createElement("div");D.className="geCommentActions";var M=document.createElement("ul");M.className="geCommentActionsList";D.appendChild(M);u||c.isLocked||0!=k&&!v||C(mxResources.get("reply"),function(){N("",!0)},c.isResolved);K=b.getCurrentUser();null==K||K.id!=c.user.id||u||c.isLocked||(C(mxResources.get("edit"),
+function(b){mxEvent.isConsumed(b)||((mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b))&&13==b.keyCode?(n.click(),mxEvent.consume(b)):27==b.keyCode&&(p.click(),mxEvent.consume(b)))}));n.focus();n.className="geCommentEditBtn gePrimaryBtn";m.appendChild(n);c.insertBefore(m,g);k.style.display="none";g.style.display="none";l.focus()}function g(c,d){d.innerHTML="";var e=new Date(c.modifiedDate),f=b.timeSince(e);null==f&&(f=mxResources.get("lessThanAMinute"));mxUtils.write(d,mxResources.get("timeAgo",
+[f],"{1} ago"));d.setAttribute("title",e.toLocaleDateString()+" "+e.toLocaleTimeString())}function l(b){var c=document.createElement("img");c.className="geCommentBusyImg";c.src=IMAGE_PATH+"/spin.gif";b.appendChild(c);b.busyImg=c}function q(b){b.style.border="1px solid red";b.removeChild(b.busyImg)}function m(b){b.style.border="";b.removeChild(b.busyImg)}function n(c,e,f,k,p){function C(b,d,e){var f=document.createElement("li");f.className="geCommentAction";var g=document.createElement("a");g.className=
+"geCommentActionLnk";mxUtils.write(g,b);f.appendChild(g);mxEvent.addListener(g,"click",function(b){d(b,c);b.preventDefault();mxEvent.consume(b)});M.appendChild(f);e&&(f.style.display="none")}function x(){function b(c){d.push(e);if(null!=c.replies)for(var f=0;f<c.replies.length;f++)e=e.nextSibling,b(c.replies[f])}var d=[],e=O;b(c);return{pdiv:e,replies:d}}function L(e,f,g,p,t){function u(){l(L);c.addReply(C,function(b){C.id=b;c.replies.push(C);m(L);g&&g()},function(c){v();q(L);b.handleError(c,null,
+null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},p,t)}function v(){d(C,L,function(b){u()},!0)}var z=x().pdiv,C=b.newComment(e,b.getCurrentUser());C.pCommentId=c.id;null==c.replies&&(c.replies=[]);var L=n(C,c.replies,z,k+1);f?v():u()}if(p||!c.isResolved){z.style.display="none";var O=document.createElement("div");O.className="geCommentContainer";O.setAttribute("data-commentId",c.id);O.style.marginLeft=20*k+5+"px";c.isResolved&&!Editor.isDarkMode()&&(O.style.backgroundColor="ghostWhite");
+var D=document.createElement("div");D.className="geCommentHeader";var K=document.createElement("img");K.className="geCommentUserImg";K.src=c.user.pictureUrl||Editor.userImage;D.appendChild(K);K=document.createElement("div");K.className="geCommentHeaderTxt";D.appendChild(K);var U=document.createElement("div");U.className="geCommentUsername";mxUtils.write(U,c.user.displayName||"");K.appendChild(U);U=document.createElement("div");U.className="geCommentDate";U.setAttribute("data-commentId",c.id);g(c,
+U);K.appendChild(U);O.appendChild(D);D=document.createElement("div");D.className="geCommentTxt";mxUtils.write(D,c.content||"");O.appendChild(D);c.isLocked&&(O.style.opacity="0.5");D=document.createElement("div");D.className="geCommentActions";var M=document.createElement("ul");M.className="geCommentActionsList";D.appendChild(M);u||c.isLocked||0!=k&&!v||C(mxResources.get("reply"),function(){L("",!0)},c.isResolved);K=b.getCurrentUser();null==K||K.id!=c.user.id||u||c.isLocked||(C(mxResources.get("edit"),
function(){function e(){d(c,O,function(){l(O);c.editComment(c.content,function(){m(O)},function(c){q(O);e();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}e()},c.isResolved),C(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){l(O);c.deleteComment(function(b){if(!0===b){b=O.querySelector(".geCommentTxt");b.innerHTML="";mxUtils.write(b,mxResources.get("msgDeleted"));var d=O.querySelectorAll(".geCommentAction");for(b=
0;b<d.length;b++)d[b].parentNode.removeChild(d[b]);m(O);O.style.opacity="0.5"}else{d=x(c).replies;for(b=0;b<d.length;b++)H.removeChild(d[b]);for(b=0;b<e.length;b++)if(e[b]==c){e.splice(b,1);break}z.style.display=0==H.getElementsByTagName("div").length?"block":"none"}},function(c){q(O);b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},c.isResolved));u||c.isLocked||0!=k||C(c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(b){function d(){var d=
-b.target;d.innerHTML="";c.isResolved=!c.isResolved;mxUtils.write(d,c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var e=c.isResolved?"none":"",f=x(c).replies,g=Editor.isDarkMode()?"transparent":c.isResolved?"ghostWhite":"white",k=0;k<f.length;k++){f[k].style.backgroundColor=g;for(var l=f[k].querySelectorAll(".geCommentAction"),m=0;m<l.length;m++)l[m]!=d.parentNode&&(l[m].style.display=e);E||(f[k].style.display="none")}t()}c.isResolved?N(mxResources.get("reOpened")+": ",!0,
-d,!1,!0):N(mxResources.get("markedAsResolved"),!1,d,!0)});O.appendChild(D);null!=g?H.insertBefore(O,g.nextSibling):H.appendChild(O);for(g=0;null!=c.replies&&g<c.replies.length;g++)D=c.replies[g],D.isResolved=c.isResolved,n(D,c.replies,null,k+1,p);null!=y&&(y.comment.id==c.id?(p=c.content,c.content=y.comment.content,d(c,O,y.saveCallback,y.deleteOnCancel),c.content=p):null==y.comment.id&&y.comment.pCommentId==c.id&&(H.appendChild(y.div),d(y.comment,y.div,y.saveCallback,y.deleteOnCancel)));return O}}
+b.target;d.innerHTML="";c.isResolved=!c.isResolved;mxUtils.write(d,c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var e=c.isResolved?"none":"",f=x(c).replies,g=Editor.isDarkMode()?"transparent":c.isResolved?"ghostWhite":"white",k=0;k<f.length;k++){f[k].style.backgroundColor=g;for(var l=f[k].querySelectorAll(".geCommentAction"),m=0;m<l.length;m++)l[m]!=d.parentNode&&(l[m].style.display=e);E||(f[k].style.display="none")}t()}c.isResolved?L(mxResources.get("reOpened")+": ",!0,
+d,!1,!0):L(mxResources.get("markedAsResolved"),!1,d,!0)});O.appendChild(D);null!=f?H.insertBefore(O,f.nextSibling):H.appendChild(O);for(f=0;null!=c.replies&&f<c.replies.length;f++)D=c.replies[f],D.isResolved=c.isResolved,n(D,c.replies,null,k+1,p);null!=y&&(y.comment.id==c.id?(p=c.content,c.content=y.comment.content,d(c,O,y.saveCallback,y.deleteOnCancel),c.content=p):null==y.comment.id&&y.comment.pCommentId==c.id&&(H.appendChild(y.div),d(y.comment,y.div,y.saveCallback,y.deleteOnCancel)));return O}}
var u=!b.canComment(),v=b.canReplyToReplies(),y=null,x=document.createElement("div");x.className="geCommentsWin";x.style.background=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";var F=EditorUi.compactUi?"26px":"30px",H=document.createElement("div");H.className="geCommentsList";H.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";H.style.bottom=parseInt(F)+7+"px";x.appendChild(H);var z=document.createElement("span");z.style.cssText="display:none;padding-top:10px;text-align:center;";
-mxUtils.write(z,mxResources.get("noCommentsFound"));var D=document.createElement("div");D.className="geToolbarContainer geCommentsToolbar";D.style.height=F;D.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";D.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";F=document.createElement("a");F.className="geButton";if(!u){var L=F.cloneNode();L.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';L.setAttribute("title",mxResources.get("create")+
-"...");mxEvent.addListener(L,"click",function(c){function e(){d(f,g,function(c){l(g);b.addComment(c,function(b){c.id=b;J.push(c);m(g)},function(c){q(g);e();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var f=b.newComment("",b.getCurrentUser()),g=n(f,J,null,0);e();c.preventDefault();mxEvent.consume(c)});D.appendChild(L)}L=F.cloneNode();L.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';L.setAttribute("title",mxResources.get("showResolved"));
-var E=!1;Editor.isDarkMode()&&(L.style.filter="invert(100%)");mxEvent.addListener(L,"click",function(b){this.className=(E=!E)?"geButton geCheckedBtn":"geButton";C();b.preventDefault();mxEvent.consume(b)});D.appendChild(L);b.commentsRefreshNeeded()&&(L=F.cloneNode(),L.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',L.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(L.style.filter="invert(100%)"),mxEvent.addListener(L,"click",function(b){C();
-b.preventDefault();mxEvent.consume(b)}),D.appendChild(L));b.commentsSaveNeeded()&&(F=F.cloneNode(),F.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',F.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&(F.style.filter="invert(100%)"),mxEvent.addListener(F,"click",function(b){p();b.preventDefault();mxEvent.consume(b)}),D.appendChild(F));x.appendChild(D);var J=[],C=mxUtils.bind(this,function(){this.hasError=!1;if(null!=y)try{y.div=y.div.cloneNode(!0);
-var c=y.div.querySelector(".geCommentEditTxtArea"),e=y.div.querySelector(".geCommentEditBtns");y.comment.content=c.value;c.parentNode.removeChild(c);e.parentNode.removeChild(e)}catch(N){b.handleError(N)}H.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";v=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(b){function c(b){if(null!=b){b.sort(function(b,c){return new Date(b.modifiedDate)-
+mxUtils.write(z,mxResources.get("noCommentsFound"));var D=document.createElement("div");D.className="geToolbarContainer geCommentsToolbar";D.style.height=F;D.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";D.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";F=document.createElement("a");F.className="geButton";if(!u){var N=F.cloneNode();N.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';N.setAttribute("title",mxResources.get("create")+
+"...");mxEvent.addListener(N,"click",function(c){function e(){d(f,g,function(c){l(g);b.addComment(c,function(b){c.id=b;J.push(c);m(g)},function(c){q(g);e();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var f=b.newComment("",b.getCurrentUser()),g=n(f,J,null,0);e();c.preventDefault();mxEvent.consume(c)});D.appendChild(N)}N=F.cloneNode();N.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';N.setAttribute("title",mxResources.get("showResolved"));
+var E=!1;Editor.isDarkMode()&&(N.style.filter="invert(100%)");mxEvent.addListener(N,"click",function(b){this.className=(E=!E)?"geButton geCheckedBtn":"geButton";C();b.preventDefault();mxEvent.consume(b)});D.appendChild(N);b.commentsRefreshNeeded()&&(N=F.cloneNode(),N.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',N.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(N.style.filter="invert(100%)"),mxEvent.addListener(N,"click",function(b){C();
+b.preventDefault();mxEvent.consume(b)}),D.appendChild(N));b.commentsSaveNeeded()&&(F=F.cloneNode(),F.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',F.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&(F.style.filter="invert(100%)"),mxEvent.addListener(F,"click",function(b){p();b.preventDefault();mxEvent.consume(b)}),D.appendChild(F));x.appendChild(D);var J=[],C=mxUtils.bind(this,function(){this.hasError=!1;if(null!=y)try{y.div=y.div.cloneNode(!0);
+var c=y.div.querySelector(".geCommentEditTxtArea"),e=y.div.querySelector(".geCommentEditBtns");y.comment.content=c.value;c.parentNode.removeChild(c);e.parentNode.removeChild(e)}catch(L){b.handleError(L)}H.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";v=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(b){function c(b){if(null!=b){b.sort(function(b,c){return new Date(b.modifiedDate)-
new Date(c.modifiedDate)});for(var d=0;d<b.length;d++)c(b[d].replies)}}b.sort(function(b,c){return new Date(b.modifiedDate)-new Date(c.modifiedDate)});H.innerHTML="";H.appendChild(z);z.style.display="block";J=b;for(b=0;b<J.length;b++)c(J[b].replies),n(J[b],J,null,0,E);null!=y&&null==y.comment.id&&null==y.comment.pCommentId&&(H.appendChild(y.div),d(y.comment,y.div,y.saveCallback,y.deleteOnCancel))},mxUtils.bind(this,function(b){H.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(b&&b.message?
-": "+b.message:""));this.hasError=!0})):H.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});C();this.refreshComments=C;D=mxUtils.bind(this,function(){function b(c){var e=d[c.id];if(null!=e)for(f(c,e),e=0;null!=c.replies&&e<c.replies.length;e++)b(c.replies[e])}if(this.window.isVisible()){for(var c=H.querySelectorAll(".geCommentDate"),d={},e=0;e<c.length;e++){var g=c[e];d[g.getAttribute("data-commentId")]=g}for(e=0;e<J.length;e++)b(J[e])}});setInterval(D,6E4);this.refreshCommentsTime=D;this.window=
-new mxWindow(mxResources.get("comments"),x,c,e,k,g,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(b,c){var d=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;b=Math.max(0,Math.min(b,(window.innerWidth||
+": "+b.message:""));this.hasError=!0})):H.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});C();this.refreshComments=C;D=mxUtils.bind(this,function(){function b(c){var e=d[c.id];if(null!=e)for(g(c,e),e=0;null!=c.replies&&e<c.replies.length;e++)b(c.replies[e])}if(this.window.isVisible()){for(var c=H.querySelectorAll(".geCommentDate"),d={},e=0;e<c.length;e++){var f=c[e];d[f.getAttribute("data-commentId")]=f}for(e=0;e<J.length;e++)b(J[e])}});setInterval(D,6E4);this.refreshCommentsTime=D;this.window=
+new mxWindow(mxResources.get("comments"),x,c,e,k,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(b,c){var d=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;b=Math.max(0,Math.min(b,(window.innerWidth||
document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));c=Math.max(0,Math.min(c,d-this.table.clientHeight-48));this.getX()==b&&this.getY()==c||mxWindow.prototype.setLocation.apply(this,arguments)};var K=mxUtils.bind(this,function(){var b=this.window.getX(),c=this.window.getY();this.window.setLocation(b,c)});mxEvent.addListener(window,"resize",K);this.destroy=function(){mxEvent.removeListener(window,"resize",K);this.window.destroy()}},ConfirmDialog=function(b,c,e,
-k,g,p,t,d,f,l,q){var m=document.createElement("div");m.style.textAlign="center";q=null!=q?q:44;var n=document.createElement("div");n.style.padding="6px";n.style.overflow="auto";n.style.maxHeight=q+"px";n.style.lineHeight="1.2em";mxUtils.write(n,c);m.appendChild(n);null!=l&&(n=document.createElement("div"),n.style.padding="6px 0 6px 0",c=document.createElement("img"),c.setAttribute("src",l),n.appendChild(c),m.appendChild(n));l=document.createElement("div");l.style.textAlign="center";l.style.whiteSpace=
-"nowrap";var u=document.createElement("input");u.setAttribute("type","checkbox");p=mxUtils.button(p||mxResources.get("cancel"),function(){b.hideDialog();null!=k&&k(u.checked)});p.className="geBtn";null!=d&&(p.innerHTML=d+"<br>"+p.innerHTML,p.style.paddingBottom="8px",p.style.paddingTop="8px",p.style.height="auto",p.style.width="40%");b.editor.cancelFirst&&l.appendChild(p);var v=mxUtils.button(g||mxResources.get("ok"),function(){b.hideDialog();null!=e&&e(u.checked)});l.appendChild(v);null!=t?(v.innerHTML=
-t+"<br>"+v.innerHTML+"<br>",v.style.paddingBottom="8px",v.style.paddingTop="8px",v.style.height="auto",v.className="geBtn",v.style.width="40%"):v.className="geBtn gePrimaryBtn";b.editor.cancelFirst||l.appendChild(p);m.appendChild(l);f?(l.style.marginTop="10px",n=document.createElement("p"),n.style.marginTop="20px",n.style.marginBottom="0px",n.appendChild(u),g=document.createElement("span"),mxUtils.write(g," "+mxResources.get("rememberThisSetting")),n.appendChild(g),m.appendChild(n),mxEvent.addListener(g,
+k,f,p,t,d,g,l,q){var m=document.createElement("div");m.style.textAlign="center";q=null!=q?q:44;var n=document.createElement("div");n.style.padding="6px";n.style.overflow="auto";n.style.maxHeight=q+"px";n.style.lineHeight="1.2em";mxUtils.write(n,c);m.appendChild(n);null!=l&&(n=document.createElement("div"),n.style.padding="6px 0 6px 0",c=document.createElement("img"),c.setAttribute("src",l),n.appendChild(c),m.appendChild(n));l=document.createElement("div");l.style.textAlign="center";l.style.whiteSpace=
+"nowrap";var u=document.createElement("input");u.setAttribute("type","checkbox");p=mxUtils.button(p||mxResources.get("cancel"),function(){b.hideDialog();null!=k&&k(u.checked)});p.className="geBtn";null!=d&&(p.innerHTML=d+"<br>"+p.innerHTML,p.style.paddingBottom="8px",p.style.paddingTop="8px",p.style.height="auto",p.style.width="40%");b.editor.cancelFirst&&l.appendChild(p);var v=mxUtils.button(f||mxResources.get("ok"),function(){b.hideDialog();null!=e&&e(u.checked)});l.appendChild(v);null!=t?(v.innerHTML=
+t+"<br>"+v.innerHTML+"<br>",v.style.paddingBottom="8px",v.style.paddingTop="8px",v.style.height="auto",v.className="geBtn",v.style.width="40%"):v.className="geBtn gePrimaryBtn";b.editor.cancelFirst||l.appendChild(p);m.appendChild(l);g?(l.style.marginTop="10px",n=document.createElement("p"),n.style.marginTop="20px",n.style.marginBottom="0px",n.appendChild(u),f=document.createElement("span"),mxUtils.write(f," "+mxResources.get("rememberThisSetting")),n.appendChild(f),m.appendChild(n),mxEvent.addListener(f,
"click",function(b){u.checked=!u.checked;mxEvent.consume(b)})):l.style.marginTop="12px";this.init=function(){v.focus()};this.container=m};function DiagramPage(b,c){this.node=b;null!=c?this.node.setAttribute("id",c):null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};
DiagramPage.prototype.setName=function(b){null==b?this.node.removeAttribute("name"):this.node.setAttribute("name",b)};function RenamePage(b,c,e){this.ui=b;this.page=c;this.previous=this.name=e}RenamePage.prototype.execute=function(){var b=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=b;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};
function MovePage(b,c,e){this.ui=b;this.oldIndex=c;this.newIndex=e}MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var b=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=b;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};
function SelectPage(b,c,e){this.ui=b;this.previousPage=this.page=c;this.neverShown=!0;null!=c&&(this.neverShown=null==c.viewState,this.ui.updatePageRoot(c),null!=e&&(c.viewState=e,this.neverShown=!1))}
SelectPage.prototype.execute=function(){var b=mxUtils.indexOf(this.ui.pages,this.previousPage);if(null!=this.page&&0<=b){var b=this.ui.currentPage,c=this.ui.editor,e=c.graph,k=Graph.compressNode(c.getGraphXml(!0));mxUtils.setTextContent(b.node,k);b.viewState=e.getViewState();b.root=e.model.root;null!=b.model&&b.model.rootChanged(b.root);e.view.clear(b.root,!0);e.clearSelection();this.ui.currentPage=this.previousPage;this.previousPage=b;b=this.ui.currentPage;e.model.prefix=Editor.guid()+"-";e.model.rootChanged(b.root);
e.setViewState(b.viewState);e.gridEnabled=e.gridEnabled&&(!this.ui.editor.isChromelessView()||"1"==urlParams.grid);c.updateGraphComponents();e.view.validate();e.blockMathRender=!0;e.sizeDidChange();e.blockMathRender=!1;this.neverShown&&(this.neverShown=!1,e.selectUnlockedLayer());c.graph.fireEvent(new mxEventObject(mxEvent.ROOT));c.fireEvent(new mxEventObject("pageSelected","change",this))}};
-function ChangePage(b,c,e,k,g){SelectPage.call(this,b,e);this.relatedPage=c;this.index=k;this.previousIndex=null;this.noSelect=g}mxUtils.extend(ChangePage,SelectPage);
+function ChangePage(b,c,e,k,f){SelectPage.call(this,b,e);this.relatedPage=c;this.index=k;this.previousIndex=null;this.noSelect=f}mxUtils.extend(ChangePage,SelectPage);
ChangePage.prototype.execute=function(){this.ui.editor.fireEvent(new mxEventObject("beforePageChange","change",this));this.previousIndex=this.index;if(null==this.index){var b=mxUtils.indexOf(this.ui.pages,this.relatedPage);this.ui.pages.splice(b,1);this.index=b}else this.ui.pages.splice(this.index,0,this.relatedPage),this.index=null;this.noSelect||SelectPage.prototype.execute.apply(this,arguments)};EditorUi.prototype.tabContainerHeight=38;EditorUi.prototype.getSelectedPageIndex=function(){return this.getPageIndex(this.currentPage)};
EditorUi.prototype.getPageIndex=function(b){var c=null;if(null!=this.pages&&null!=b)for(var e=0;e<this.pages.length;e++)if(this.pages[e]==b){c=e;break}return c};EditorUi.prototype.getPageById=function(b){if(null!=this.pages)for(var c=0;c<this.pages.length;c++)if(this.pages[c].getId()==b)return this.pages[c];return null};
-EditorUi.prototype.createImageForPageLink=function(b,c,e){var k=b.indexOf(","),g=null;0<k&&(k=this.getPageById(b.substring(k+1)),null!=k&&k!=c&&(g=this.getImageForPage(k,c,e),g.originalSrc=b));null==g&&(g={originalSrc:b});return g};
-EditorUi.prototype.getImageForPage=function(b,c,e){e=null!=e?e:this.editor.graph;var k=e.getGlobalVariable,g=this.createTemporaryGraph(e.getStylesheet());g.defaultPageBackgroundColor=e.defaultPageBackgroundColor;g.shapeBackgroundColor=e.shapeBackgroundColor;g.shapeForegroundColor=e.shapeForegroundColor;var p=this.getPageIndex(null!=c?c:this.currentPage);g.getGlobalVariable=function(b){return"pagenumber"==b?p+1:"page"==b&&null!=c?c.getName():k.apply(this,arguments)};document.body.appendChild(g.container);
-this.updatePageRoot(b);g.model.setRoot(b.root);b=g.getSvg(null,null,null,null,null,null,null,null,null,null,null,!0);e=g.getGraphBounds();document.body.removeChild(g.container);return new mxImage(Editor.createSvgDataUri(mxUtils.getXml(b)),e.width,e.height,e.x,e.y)};
+EditorUi.prototype.createImageForPageLink=function(b,c,e){var k=b.indexOf(","),f=null;0<k&&(k=this.getPageById(b.substring(k+1)),null!=k&&k!=c&&(f=this.getImageForPage(k,c,e),f.originalSrc=b));null==f&&(f={originalSrc:b});return f};
+EditorUi.prototype.getImageForPage=function(b,c,e){e=null!=e?e:this.editor.graph;var k=e.getGlobalVariable,f=this.createTemporaryGraph(e.getStylesheet());f.defaultPageBackgroundColor=e.defaultPageBackgroundColor;f.shapeBackgroundColor=e.shapeBackgroundColor;f.shapeForegroundColor=e.shapeForegroundColor;var p=this.getPageIndex(null!=c?c:this.currentPage);f.getGlobalVariable=function(b){return"pagenumber"==b?p+1:"page"==b&&null!=c?c.getName():k.apply(this,arguments)};document.body.appendChild(f.container);
+this.updatePageRoot(b);f.model.setRoot(b.root);b=f.getSvg(null,null,null,null,null,null,null,null,null,null,null,!0);e=f.getGraphBounds();document.body.removeChild(f.container);return new mxImage(Editor.createSvgDataUri(mxUtils.getXml(b)),e.width,e.height,e.x,e.y)};
EditorUi.prototype.initPages=function(){if(!this.editor.graph.standalone){this.actions.addAction("previousPage",mxUtils.bind(this,function(){this.selectNextPage(!1)}));this.actions.addAction("nextPage",mxUtils.bind(this,function(){this.selectNextPage(!0)}));this.isPagesEnabled()&&(this.keyHandler.bindAction(33,!0,"previousPage",!0),this.keyHandler.bindAction(34,!0,"nextPage",!0));var b=this.editor.graph,c=b.view.validateBackground;b.view.validateBackground=mxUtils.bind(this,function(){if(null!=this.tabContainer){var e=
this.tabContainer.style.height;this.tabContainer.style.height=null==this.fileNode||null==this.pages||1==this.pages.length&&"0"==urlParams.pages?"0px":this.tabContainerHeight+"px";e!=this.tabContainer.style.height&&this.refresh(!1)}c.apply(b.view,arguments)});var e=null,k=mxUtils.bind(this,function(){this.updateTabContainer();var c=this.currentPage;null!=c&&c!=e&&(null==c.viewState||null==c.viewState.scrollLeft?(this.resetScrollbars(),b.isLightboxView()&&this.lightboxFit(),null!=this.chromelessResize&&
(b.container.scrollLeft=0,b.container.scrollTop=0,this.chromelessResize())):(b.container.scrollLeft=b.view.translate.x*b.view.scale+c.viewState.scrollLeft,b.container.scrollTop=b.view.translate.y*b.view.scale+c.viewState.scrollTop),e=c);null!=this.actions.layersWindow&&this.actions.layersWindow.refreshLayers();"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?1!=MathJax.Hub.queue.pending||null==this.editor||this.editor.graph.mathEnabled||MathJax.Hub.Queue(mxUtils.bind(this,function(){null!=
this.editor&&this.editor.graph.refresh()})):"undefined"===typeof Editor.MathJaxClear||null!=this.editor&&this.editor.graph.mathEnabled||Editor.MathJaxClear()});this.editor.graph.model.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(b,c){for(var e=c.getProperty("edit").changes,d=0;d<e.length;d++)if(e[d]instanceof SelectPage||e[d]instanceof RenamePage||e[d]instanceof MovePage||e[d]instanceof mxRootChange){k();break}}));null!=this.toolbar&&this.editor.addListener("pageSelected",this.toolbar.updateZoom)}};
EditorUi.prototype.restoreViewState=function(b,c,e){b=null!=b?this.getPageById(b.getId()):null;var k=this.editor.graph;null!=b&&null!=this.currentPage&&null!=this.pages&&(b!=this.currentPage?this.selectPage(b,!0,c):(k.setViewState(c),this.editor.updateGraphComponents(),k.view.revalidate(),k.sizeDidChange()),k.container.scrollLeft=k.view.translate.x*k.view.scale+c.scrollLeft,k.container.scrollTop=k.view.translate.y*k.view.scale+c.scrollTop,k.restoreSelection(e))};
-Graph.prototype.createViewState=function(b){var c=b.getAttribute("page"),e=parseFloat(b.getAttribute("pageScale")),k=parseFloat(b.getAttribute("pageWidth")),g=parseFloat(b.getAttribute("pageHeight")),p=b.getAttribute("background"),t=this.parseBackgroundImage(b.getAttribute("backgroundImage")),d=b.getAttribute("extFonts");if(d)try{d=d.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}})}catch(f){console.log("ExtFonts format error: "+f.message)}return{gridEnabled:"0"!=b.getAttribute("grid"),
-gridSize:parseFloat(b.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=b.getAttribute("guides"),foldingEnabled:"0"!=b.getAttribute("fold"),shadowVisible:"1"==b.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=c?"0"!=c:this.defaultPageVisible,background:null!=p&&0<p.length?p:null,backgroundImage:t,pageScale:isNaN(e)?mxGraph.prototype.pageScale:e,pageFormat:isNaN(k)||isNaN(g)?"undefined"===typeof mxSettings||null!=this.defaultPageFormat?mxGraph.prototype.pageFormat:
-mxSettings.getPageFormat():new mxRectangle(0,0,k,g),tooltips:"0"!=b.getAttribute("tooltips"),connect:"0"!=b.getAttribute("connect"),arrows:"0"!=b.getAttribute("arrows"),mathEnabled:"1"==b.getAttribute("math"),selectionCells:null,defaultParent:null,scrollbars:this.defaultScrollbars,scale:1,hiddenTags:[],extFonts:d||[]}};
+Graph.prototype.createViewState=function(b){var c=b.getAttribute("page"),e=parseFloat(b.getAttribute("pageScale")),k=parseFloat(b.getAttribute("pageWidth")),f=parseFloat(b.getAttribute("pageHeight")),p=b.getAttribute("background"),t=this.parseBackgroundImage(b.getAttribute("backgroundImage")),d=b.getAttribute("extFonts");if(d)try{d=d.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}})}catch(g){console.log("ExtFonts format error: "+g.message)}return{gridEnabled:"0"!=b.getAttribute("grid"),
+gridSize:parseFloat(b.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=b.getAttribute("guides"),foldingEnabled:"0"!=b.getAttribute("fold"),shadowVisible:"1"==b.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=c?"0"!=c:this.defaultPageVisible,background:null!=p&&0<p.length?p:null,backgroundImage:t,pageScale:isNaN(e)?mxGraph.prototype.pageScale:e,pageFormat:isNaN(k)||isNaN(f)?"undefined"===typeof mxSettings||null!=this.defaultPageFormat?mxGraph.prototype.pageFormat:
+mxSettings.getPageFormat():new mxRectangle(0,0,k,f),tooltips:"0"!=b.getAttribute("tooltips"),connect:"0"!=b.getAttribute("connect"),arrows:"0"!=b.getAttribute("arrows"),mathEnabled:"1"==b.getAttribute("math"),selectionCells:null,defaultParent:null,scrollbars:this.defaultScrollbars,scale:1,hiddenTags:[],extFonts:d||[]}};
Graph.prototype.saveViewState=function(b,c,e,k){e||(c.setAttribute("grid",null==b||b.gridEnabled?"1":"0"),c.setAttribute("gridSize",null!=b?b.gridSize:mxGraph.prototype.gridSize),c.setAttribute("guides",null==b||b.guidesEnabled?"1":"0"),c.setAttribute("tooltips",null==b||b.tooltips?"1":"0"),c.setAttribute("connect",null==b||b.connect?"1":"0"),c.setAttribute("arrows",null==b||b.arrows?"1":"0"),c.setAttribute("page",null==b&&this.defaultPageVisible||null!=b&&b.pageVisible?"1":"0"),c.setAttribute("fold",
null==b||b.foldingEnabled?"1":"0"));c.setAttribute("pageScale",null!=b&&null!=b.pageScale?b.pageScale:mxGraph.prototype.pageScale);e=null!=b?b.pageFormat:"undefined"===typeof mxSettings||null!=this.defaultPageFormat?mxGraph.prototype.pageFormat:mxSettings.getPageFormat();null!=e&&(c.setAttribute("pageWidth",e.width),c.setAttribute("pageHeight",e.height));null!=b&&(null!=b.background&&c.setAttribute("background",b.background),k=this.getBackgroundImageObject(b.backgroundImage,k),null!=k&&c.setAttribute("backgroundImage",
JSON.stringify(k)));c.setAttribute("math",null!=b&&b.mathEnabled?"1":"0");c.setAttribute("shadow",null!=b&&b.shadowVisible?"1":"0");null!=b&&null!=b.extFonts&&0<b.extFonts.length&&c.setAttribute("extFonts",b.extFonts.map(function(b){return b.name+"^"+b.url}).join("|"))};
Graph.prototype.getViewState=function(){return{defaultParent:this.defaultParent,currentRoot:this.view.currentRoot,gridEnabled:this.gridEnabled,gridSize:this.gridSize,guidesEnabled:this.graphHandler.guidesEnabled,foldingEnabled:this.foldingEnabled,shadowVisible:this.shadowVisible,scrollbars:this.scrollbars,pageVisible:this.pageVisible,background:this.background,backgroundImage:this.backgroundImage,pageScale:this.pageScale,pageFormat:this.pageFormat,tooltips:this.tooltipHandler.isEnabled(),connect:this.connectionHandler.isEnabled(),
arrows:this.connectionArrowsEnabled,scale:this.view.scale,scrollLeft:this.container.scrollLeft-this.view.translate.x*this.view.scale,scrollTop:this.container.scrollTop-this.view.translate.y*this.view.scale,translate:this.view.translate.clone(),lastPasteXml:this.lastPasteXml,pasteCounter:this.pasteCounter,mathEnabled:this.mathEnabled,hiddenTags:this.hiddenTags,extFonts:this.extFonts}};
Graph.prototype.setViewState=function(b,c){if(null!=b){this.lastPasteXml=b.lastPasteXml;this.pasteCounter=b.pasteCounter||0;this.mathEnabled=b.mathEnabled;this.gridEnabled=b.gridEnabled;this.gridSize=b.gridSize;this.graphHandler.guidesEnabled=b.guidesEnabled;this.foldingEnabled=b.foldingEnabled;this.setShadowVisible(b.shadowVisible,!1);this.scrollbars=b.scrollbars;this.pageVisible=!this.isViewer()&&b.pageVisible;this.background=b.background;this.pageScale=b.pageScale;this.pageFormat=b.pageFormat;
-this.view.currentRoot=b.currentRoot;this.defaultParent=b.defaultParent;this.connectionArrowsEnabled=b.arrows;this.setTooltips(b.tooltips);this.setConnectable(b.connect);this.setBackgroundImage(b.backgroundImage);this.hiddenTags=b.hiddenTags;var e=this.extFonts;this.extFonts=b.extFonts||[];if(c&&null!=e)for(var k=0;k<e.length;k++){var g=document.getElementById("extFont_"+e[k].name);null!=g&&g.parentNode.removeChild(g)}for(k=0;k<this.extFonts.length;k++)this.addExtFont(this.extFonts[k].name,this.extFonts[k].url,
+this.view.currentRoot=b.currentRoot;this.defaultParent=b.defaultParent;this.connectionArrowsEnabled=b.arrows;this.setTooltips(b.tooltips);this.setConnectable(b.connect);this.setBackgroundImage(b.backgroundImage);this.hiddenTags=b.hiddenTags;var e=this.extFonts;this.extFonts=b.extFonts||[];if(c&&null!=e)for(var k=0;k<e.length;k++){var f=document.getElementById("extFont_"+e[k].name);null!=f&&f.parentNode.removeChild(f)}for(k=0;k<this.extFonts.length;k++)this.addExtFont(this.extFonts[k].name,this.extFonts[k].url,
!0);this.view.scale=null!=b.scale?b.scale:1;null==this.view.currentRoot||this.model.contains(this.view.currentRoot)||(this.view.currentRoot=null);null==this.defaultParent||this.model.contains(this.defaultParent)||(this.setDefaultParent(null),this.selectUnlockedLayer());null!=b.translate&&(this.view.translate=b.translate)}else this.view.currentRoot=null,this.view.scale=1,this.gridEnabled=this.defaultGridEnabled,this.gridSize=mxGraph.prototype.gridSize,this.pageScale=mxGraph.prototype.pageScale,this.pageFormat=
"undefined"===typeof mxSettings||null!=this.defaultPageFormat?mxGraph.prototype.pageFormat:mxSettings.getPageFormat(),this.pageVisible=this.defaultPageVisible,this.backgroundImage=this.background=null,this.scrollbars=this.defaultScrollbars,this.foldingEnabled=this.graphHandler.guidesEnabled=!0,this.setShadowVisible(!1,!1),this.defaultParent=null,this.setTooltips(!0),this.setConnectable(!0),this.lastPasteXml=null,this.pasteCounter=0,this.mathEnabled=this.defaultMathEnabled,this.connectionArrowsEnabled=
!0,this.hiddenTags=[],this.extFonts=[];this.preferPageSize=this.pageBreaksVisible=this.pageVisible;this.fireEvent(new mxEventObject("viewStateChanged","state",b))};
-Graph.prototype.addExtFont=function(b,c,e){if(b&&c){"1"!=urlParams["ext-fonts"]&&(Graph.recentCustomFonts[b.toLowerCase()]={name:b,url:c});var k="extFont_"+b;if(null==document.getElementById(k))if(0==c.indexOf(Editor.GOOGLE_FONTS))mxClient.link("stylesheet",c,null,k);else{document.getElementsByTagName("head");var g=document.createElement("style");g.appendChild(document.createTextNode('@font-face {\n\tfont-family: "'+b+'";\n\tsrc: url("'+c+'");\n}'));g.setAttribute("id",k);document.getElementsByTagName("head")[0].appendChild(g)}if(!e){null==
-this.extFonts&&(this.extFonts=[]);e=this.extFonts;k=!0;for(g=0;g<e.length;g++)if(e[g].name==b){k=!1;break}k&&this.extFonts.push({name:b,url:c})}}};
+Graph.prototype.addExtFont=function(b,c,e){if(b&&c){"1"!=urlParams["ext-fonts"]&&(Graph.recentCustomFonts[b.toLowerCase()]={name:b,url:c});var k="extFont_"+b;if(null==document.getElementById(k))if(0==c.indexOf(Editor.GOOGLE_FONTS))mxClient.link("stylesheet",c,null,k);else{document.getElementsByTagName("head");var f=document.createElement("style");f.appendChild(document.createTextNode('@font-face {\n\tfont-family: "'+b+'";\n\tsrc: url("'+c+'");\n}'));f.setAttribute("id",k);document.getElementsByTagName("head")[0].appendChild(f)}if(!e){null==
+this.extFonts&&(this.extFonts=[]);e=this.extFonts;k=!0;for(f=0;f<e.length;f++)if(e[f].name==b){k=!1;break}k&&this.extFonts.push({name:b,url:c})}}};
EditorUi.prototype.updatePageRoot=function(b,c){if(null==b.root){var e=this.editor.extractGraphModel(b.node,null,c),k=Editor.extractParserError(e);if(k)throw Error(k);null!=e?(b.graphModelNode=e,b.viewState=this.editor.graph.createViewState(e),k=new mxCodec(e.ownerDocument),b.root=k.decode(e).root):b.root=this.editor.graph.model.createRoot()}else if(null==b.viewState){if(null==b.graphModelNode){e=this.editor.extractGraphModel(b.node);if(k=Editor.extractParserError(e))throw Error(k);null!=e&&(b.graphModelNode=
e)}null!=b.graphModelNode&&(b.viewState=this.editor.graph.createViewState(b.graphModelNode))}return b};
-EditorUi.prototype.selectPage=function(b,c,e){try{if(b!=this.currentPage){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c=null!=c?c:!1;this.editor.graph.isMouseDown=!1;this.editor.graph.reset();var k=this.editor.graph.model.createUndoableEdit();k.ignoreEdit=!0;var g=new SelectPage(this,b,e);g.execute();k.add(g);k.notify();this.editor.graph.tooltipHandler.hide();c||this.editor.graph.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",k))}}catch(p){this.handleError(p)}};
+EditorUi.prototype.selectPage=function(b,c,e){try{if(b!=this.currentPage){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c=null!=c?c:!1;this.editor.graph.isMouseDown=!1;this.editor.graph.reset();var k=this.editor.graph.model.createUndoableEdit();k.ignoreEdit=!0;var f=new SelectPage(this,b,e);f.execute();k.add(f);k.notify();this.editor.graph.tooltipHandler.hide();c||this.editor.graph.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",k))}}catch(p){this.handleError(p)}};
EditorUi.prototype.selectNextPage=function(b){var c=this.currentPage;null!=c&&null!=this.pages&&(c=mxUtils.indexOf(this.pages,c),b?this.selectPage(this.pages[mxUtils.mod(c+1,this.pages.length)]):b||this.selectPage(this.pages[mxUtils.mod(c-1,this.pages.length)]))};
EditorUi.prototype.insertPage=function(b,c){if(this.editor.graph.isEnabled()){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b=null!=b?b:this.createPage(null,this.createPageId());c=null!=c?c:this.pages.length;var e=new ChangePage(this,b,b,c);this.editor.graph.model.execute(e)}return b};EditorUi.prototype.createPageId=function(){var b;do b=Editor.guid();while(null!=this.getPageById(b));return b};
EditorUi.prototype.createPage=function(b,c){var e=new DiagramPage(this.fileNode.ownerDocument.createElement("diagram"),c);e.setName(null!=b?b:this.createPageName());return e};EditorUi.prototype.createPageName=function(){for(var b={},c=0;c<this.pages.length;c++){var e=this.pages[c].getName();null!=e&&0<e.length&&(b[e]=e)}c=this.pages.length;do e=mxResources.get("pageWithNumber",[++c]);while(null!=b[e]);return e};
-EditorUi.prototype.removePage=function(b){try{var c=this.editor.graph,e=mxUtils.indexOf(this.pages,b);if(c.isEnabled()&&0<=e){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c.model.beginUpdate();try{var k=this.currentPage;k==b&&1<this.pages.length?(e==this.pages.length-1?e--:e++,k=this.pages[e]):1>=this.pages.length&&(k=this.insertPage(),c.model.execute(new RenamePage(this,k,mxResources.get("pageWithNumber",[1]))));c.model.execute(new ChangePage(this,b,k))}finally{c.model.endUpdate()}}}catch(g){this.handleError(g)}return b};
-EditorUi.prototype.duplicatePage=function(b,c){var e=null;try{var k=this.editor.graph;if(k.isEnabled()){k.isEditing()&&k.stopEditing();var g=b.node.cloneNode(!1);g.removeAttribute("id");var p={},t=k.createCellLookup([k.model.root]),e=new DiagramPage(g);e.root=k.cloneCell(k.model.root,null,p);e.viewState=k.getViewState();e.viewState.scale=1;e.viewState.scrollLeft=null;e.viewState.scrollTop=null;e.viewState.currentRoot=null;e.viewState.defaultParent=null;e.setName(c);e=this.insertPage(e,mxUtils.indexOf(this.pages,
+EditorUi.prototype.removePage=function(b){try{var c=this.editor.graph,e=mxUtils.indexOf(this.pages,b);if(c.isEnabled()&&0<=e){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c.model.beginUpdate();try{var k=this.currentPage;k==b&&1<this.pages.length?(e==this.pages.length-1?e--:e++,k=this.pages[e]):1>=this.pages.length&&(k=this.insertPage(),c.model.execute(new RenamePage(this,k,mxResources.get("pageWithNumber",[1]))));c.model.execute(new ChangePage(this,b,k))}finally{c.model.endUpdate()}}}catch(f){this.handleError(f)}return b};
+EditorUi.prototype.duplicatePage=function(b,c){var e=null;try{var k=this.editor.graph;if(k.isEnabled()){k.isEditing()&&k.stopEditing();var f=b.node.cloneNode(!1);f.removeAttribute("id");var p={},t=k.createCellLookup([k.model.root]),e=new DiagramPage(f);e.root=k.cloneCell(k.model.root,null,p);e.viewState=k.getViewState();e.viewState.scale=1;e.viewState.scrollLeft=null;e.viewState.scrollTop=null;e.viewState.currentRoot=null;e.viewState.defaultParent=null;e.setName(c);e=this.insertPage(e,mxUtils.indexOf(this.pages,
b)+1);k.updateCustomLinks(k.createCellMapping(p,t),[e.root])}}catch(d){this.handleError(d)}return e};EditorUi.prototype.renamePage=function(b){if(this.editor.graph.isEnabled()){var c=new FilenameDialog(this,b.getName(),mxResources.get("rename"),mxUtils.bind(this,function(c){null!=c&&0<c.length&&this.editor.graph.model.execute(new RenamePage(this,b,c))}),mxResources.get("rename"));this.showDialog(c.container,300,80,!0,!0);c.init()}return b};
EditorUi.prototype.movePage=function(b,c){this.editor.graph.model.execute(new MovePage(this,b,c))};EditorUi.prototype.createTabContainer=function(){var b=document.createElement("div");b.className="geTabContainer";b.style.position="absolute";b.style.whiteSpace="nowrap";b.style.overflow="hidden";b.style.height="0px";return b};
EditorUi.prototype.updateTabContainer=function(){if(null!=this.tabContainer&&null!=this.pages){var b=this.editor.graph,c=document.createElement("div");c.style.position="relative";c.style.display="inline-block";c.style.verticalAlign="top";c.style.height=this.tabContainer.style.height;c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.fontSize="13px";c.style.marginLeft="30px";for(var e=this.editor.isChromelessView()?29:59,k=Math.min(140,Math.max(20,(this.tabContainer.clientWidth-e)/this.pages.length)+
-1),g=null,p=0;p<this.pages.length;p++)mxUtils.bind(this,function(d,e){this.pages[d]==this.currentPage?(e.className="geActivePage",e.style.backgroundColor=Editor.isDarkMode()?Editor.darkColor:"#fff"):e.className="geInactivePage";e.setAttribute("draggable","true");mxEvent.addListener(e,"dragstart",mxUtils.bind(this,function(c){b.isEnabled()?(mxClient.IS_FF&&c.dataTransfer.setData("Text","<diagram/>"),g=d):mxEvent.consume(c)}));mxEvent.addListener(e,"dragend",mxUtils.bind(this,function(b){g=null;b.stopPropagation();
-b.preventDefault()}));mxEvent.addListener(e,"dragover",mxUtils.bind(this,function(b){null!=g&&(b.dataTransfer.dropEffect="move");b.stopPropagation();b.preventDefault()}));mxEvent.addListener(e,"drop",mxUtils.bind(this,function(b){null!=g&&d!=g&&this.movePage(g,d);b.stopPropagation();b.preventDefault()}));c.appendChild(e)})(p,this.createTabForPage(this.pages[p],k,this.pages[p]!=this.currentPage,p+1));this.tabContainer.innerHTML="";this.tabContainer.appendChild(c);k=this.createPageMenuTab();this.tabContainer.appendChild(k);
+1),f=null,p=0;p<this.pages.length;p++)mxUtils.bind(this,function(d,e){this.pages[d]==this.currentPage?(e.className="geActivePage",e.style.backgroundColor=Editor.isDarkMode()?Editor.darkColor:"#fff"):e.className="geInactivePage";e.setAttribute("draggable","true");mxEvent.addListener(e,"dragstart",mxUtils.bind(this,function(c){b.isEnabled()?(mxClient.IS_FF&&c.dataTransfer.setData("Text","<diagram/>"),f=d):mxEvent.consume(c)}));mxEvent.addListener(e,"dragend",mxUtils.bind(this,function(b){f=null;b.stopPropagation();
+b.preventDefault()}));mxEvent.addListener(e,"dragover",mxUtils.bind(this,function(b){null!=f&&(b.dataTransfer.dropEffect="move");b.stopPropagation();b.preventDefault()}));mxEvent.addListener(e,"drop",mxUtils.bind(this,function(b){null!=f&&d!=f&&this.movePage(f,d);b.stopPropagation();b.preventDefault()}));c.appendChild(e)})(p,this.createTabForPage(this.pages[p],k,this.pages[p]!=this.currentPage,p+1));this.tabContainer.innerHTML="";this.tabContainer.appendChild(c);k=this.createPageMenuTab();this.tabContainer.appendChild(k);
k=null;this.isPageInsertTabVisible()&&(k=this.createPageInsertTab(),this.tabContainer.appendChild(k));if(c.clientWidth>this.tabContainer.clientWidth-e){null!=k&&(k.style.position="absolute",k.style.right="0px",c.style.marginRight="30px");var t=this.createControlTab(4,"&nbsp;&#10094;&nbsp;");t.style.position="absolute";t.style.right=this.editor.chromeless?"29px":"55px";t.style.fontSize="13pt";this.tabContainer.appendChild(t);var d=this.createControlTab(4,"&nbsp;&#10095;");d.style.position="absolute";
-d.style.right=this.editor.chromeless?"0px":"29px";d.style.fontSize="13pt";this.tabContainer.appendChild(d);var f=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));c.style.width=f+"px";mxEvent.addListener(t,"click",mxUtils.bind(this,function(b){c.scrollLeft-=Math.max(20,f-20);mxUtils.setOpacity(t,0<c.scrollLeft?100:50);mxUtils.setOpacity(d,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(b)}));mxUtils.setOpacity(t,0<c.scrollLeft?100:50);mxUtils.setOpacity(d,
-c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){c.scrollLeft+=Math.max(20,f-20);mxUtils.setOpacity(t,0<c.scrollLeft?100:50);mxUtils.setOpacity(d,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(b)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()};
+d.style.right=this.editor.chromeless?"0px":"29px";d.style.fontSize="13pt";this.tabContainer.appendChild(d);var g=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));c.style.width=g+"px";mxEvent.addListener(t,"click",mxUtils.bind(this,function(b){c.scrollLeft-=Math.max(20,g-20);mxUtils.setOpacity(t,0<c.scrollLeft?100:50);mxUtils.setOpacity(d,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(b)}));mxUtils.setOpacity(t,0<c.scrollLeft?100:50);mxUtils.setOpacity(d,
+c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){c.scrollLeft+=Math.max(20,g-20);mxUtils.setOpacity(t,0<c.scrollLeft?100:50);mxUtils.setOpacity(d,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(b)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()};
EditorUi.prototype.createTab=function(b){var c=document.createElement("div");c.style.display="inline-block";c.style.whiteSpace="nowrap";c.style.boxSizing="border-box";c.style.position="relative";c.style.overflow="hidden";c.style.textAlign="center";c.style.marginLeft="-1px";c.style.height=this.tabContainer.clientHeight+"px";c.style.padding="12px 4px 8px 4px";c.style.border=Editor.isDarkMode()?"1px solid #505759":"1px solid #e8eaed";c.style.borderTopStyle="none";c.style.borderBottomStyle="none";c.style.backgroundColor=
this.tabContainer.style.backgroundColor;c.style.cursor="move";c.style.color="gray";b&&(mxEvent.addListener(c,"mouseenter",mxUtils.bind(this,function(b){this.editor.graph.isMouseDown||(c.style.backgroundColor=Editor.isDarkMode()?"black":"#e8eaed",mxEvent.consume(b))})),mxEvent.addListener(c,"mouseleave",mxUtils.bind(this,function(b){c.style.backgroundColor=this.tabContainer.style.backgroundColor;mxEvent.consume(b)})));return c};
EditorUi.prototype.createControlTab=function(b,c,e){e=this.createTab(null!=e?e:!0);e.style.lineHeight=this.tabContainerHeight+"px";e.style.paddingTop=b+"px";e.style.cursor="pointer";e.style.width="30px";e.innerHTML=c;null!=e.firstChild&&null!=e.firstChild.style&&mxUtils.setOpacity(e.firstChild,40);return e};
@@ -3846,31 +3855,31 @@ var c=new mxPopupMenu(mxUtils.bind(this,function(b,c){for(var d=0;d<this.pages.l
null,mxUtils.bind(this,function(){this.insertPage()}),c);var e=this.currentPage;null!=e&&(b.addSeparator(c),d=e.getName(),b.addItem(mxResources.get("removeIt",[d]),null,mxUtils.bind(this,function(){this.removePage(e)}),c),b.addItem(mxResources.get("renameIt",[d]),null,mxUtils.bind(this,function(){this.renamePage(e,e.getName())}),c),b.addSeparator(c),b.addItem(mxResources.get("duplicateIt",[d]),null,mxUtils.bind(this,function(){this.duplicatePage(e,mxResources.get("copyOf",[e.getName()]))}),c))}}));
c.div.className+=" geMenubarMenu";c.smartSeparators=!0;c.showDisabled=!0;c.autoExpand=!0;c.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(c,arguments);c.destroy()});var e=mxEvent.getClientX(b),p=mxEvent.getClientY(b);c.popup(e,p,null,b);this.setCurrentMenu(c);mxEvent.consume(b)}));return b};
EditorUi.prototype.createPageInsertTab=function(){var b=this.createControlTab(4,'<div class="geSprite geSprite-plus"></div>');b.setAttribute("title",mxResources.get("insertPage"));mxEvent.addListener(b,"click",mxUtils.bind(this,function(b){this.insertPage();mxEvent.consume(b)}));var c=b.getElementsByTagName("div")[0];c.style.display="inline-block";c.style.width="21px";c.style.height="21px";return b};
-EditorUi.prototype.createTabForPage=function(b,c,e,k){e=this.createTab(e);var g=b.getName()||mxResources.get("untitled"),p=b.getId();e.setAttribute("title",g+(null!=p?" ("+p+")":"")+" ["+k+"]");mxUtils.write(e,g);e.style.maxWidth=c+"px";e.style.width=c+"px";this.addTabListeners(b,e);42<c&&(e.style.textOverflow="ellipsis");return e};
-EditorUi.prototype.addTabListeners=function(b,c){mxEvent.disableContextMenu(c);var e=this.editor.graph;mxEvent.addListener(c,"dblclick",mxUtils.bind(this,function(c){this.renamePage(b);mxEvent.consume(c)}));var k=!1,g=!1;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(c){k=null!=this.currentMenu;g=b==this.currentPage;e.isMouseDown||g||this.selectPage(b)}),null,mxUtils.bind(this,function(p){if(e.isEnabled()&&!e.isMouseDown&&(mxEvent.isTouchEvent(p)&&g||mxEvent.isPopupTrigger(p))){e.popupMenuHandler.hideMenu();
-this.hideCurrentMenu();if(!mxEvent.isTouchEvent(p)||!k){var t=new mxPopupMenu(this.createPageMenu(b));t.div.className+=" geMenubarMenu";t.smartSeparators=!0;t.showDisabled=!0;t.autoExpand=!0;t.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(t,arguments);this.resetCurrentMenu();t.destroy()});var d=mxEvent.getClientX(p),f=mxEvent.getClientY(p);t.popup(d,f,null,p);this.setCurrentMenu(t,c)}mxEvent.consume(p)}}))};
-EditorUi.prototype.getLinkForPage=function(b,c,e){if(!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp){var k=this.getCurrentFile();if(null!=k&&k.constructor!=LocalFile&&"draw.io"==this.getServiceName()){var g=this.getSearch("create title mode url drive splash state clibs ui viewbox hide-pages".split(" ")),g=g+((0==g.length?"?":"&")+"page-id="+b.getId());null!=c&&(g+="&"+c.join("&"));return(e&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?
-EditorUi.drawHost:"https://"+window.location.host)+"/"+g+"#"+k.getHash()}}return null};
-EditorUi.prototype.createPageMenu=function(b,c){return mxUtils.bind(this,function(e,k){var g=this.editor.graph;e.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,b)+1)}),k);e.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(b)}),k);e.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(b,c)}),k);null!=this.getLinkForPage(b)&&(e.addSeparator(k),e.addItem(mxResources.get("link"),
-null,mxUtils.bind(this,function(){this.showPublishLinkDialog(mxResources.get("url"),!0,null,null,mxUtils.bind(this,function(c,e,d,f,k,q){c=this.createUrlParameters(c,e,d,f,k,q);d||c.push("hide-pages=1");g.isSelectionEmpty()||(d=g.getBoundingBox(g.getSelectionCells()),e=g.view.translate,k=g.view.scale,d.width/=k,d.height/=k,d.x=d.x/k-e.x,d.y=d.y/k-e.y,c.push("viewbox="+encodeURIComponent(JSON.stringify({x:Math.round(d.x),y:Math.round(d.y),width:Math.round(d.width),height:Math.round(d.height),border:100}))));
-f=new EmbedDialog(this,this.getLinkForPage(b,c,f));this.showDialog(f.container,450,240,!0,!0);f.init()}))})));e.addSeparator(k);e.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(b,mxResources.get("copyOf",[b.getName()]))}),k);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"draw.io"!=this.getServiceName()||(e.addSeparator(k),e.addItem(mxResources.get("openInNewWindow"),null,mxUtils.bind(this,function(){this.editor.editAsNew(this.getFileData(!0,null,null,null,
+EditorUi.prototype.createTabForPage=function(b,c,e,k){e=this.createTab(e);var f=b.getName()||mxResources.get("untitled"),p=b.getId();e.setAttribute("title",f+(null!=p?" ("+p+")":"")+" ["+k+"]");mxUtils.write(e,f);e.style.maxWidth=c+"px";e.style.width=c+"px";this.addTabListeners(b,e);42<c&&(e.style.textOverflow="ellipsis");return e};
+EditorUi.prototype.addTabListeners=function(b,c){mxEvent.disableContextMenu(c);var e=this.editor.graph;mxEvent.addListener(c,"dblclick",mxUtils.bind(this,function(c){this.renamePage(b);mxEvent.consume(c)}));var k=!1,f=!1;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(c){k=null!=this.currentMenu;f=b==this.currentPage;e.isMouseDown||f||this.selectPage(b)}),null,mxUtils.bind(this,function(p){if(e.isEnabled()&&!e.isMouseDown&&(mxEvent.isTouchEvent(p)&&f||mxEvent.isPopupTrigger(p))){e.popupMenuHandler.hideMenu();
+this.hideCurrentMenu();if(!mxEvent.isTouchEvent(p)||!k){var t=new mxPopupMenu(this.createPageMenu(b));t.div.className+=" geMenubarMenu";t.smartSeparators=!0;t.showDisabled=!0;t.autoExpand=!0;t.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(t,arguments);this.resetCurrentMenu();t.destroy()});var d=mxEvent.getClientX(p),g=mxEvent.getClientY(p);t.popup(d,g,null,p);this.setCurrentMenu(t,c)}mxEvent.consume(p)}}))};
+EditorUi.prototype.getLinkForPage=function(b,c,e){if(!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp){var k=this.getCurrentFile();if(null!=k&&k.constructor!=LocalFile&&"draw.io"==this.getServiceName()){var f=this.getSearch("create title mode url drive splash state clibs ui viewbox hide-pages".split(" ")),f=f+((0==f.length?"?":"&")+"page-id="+b.getId());null!=c&&(f+="&"+c.join("&"));return(e&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?
+EditorUi.drawHost:"https://"+window.location.host)+"/"+f+"#"+k.getHash()}}return null};
+EditorUi.prototype.createPageMenu=function(b,c){return mxUtils.bind(this,function(e,k){var f=this.editor.graph;e.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,b)+1)}),k);e.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(b)}),k);e.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(b,c)}),k);null!=this.getLinkForPage(b)&&(e.addSeparator(k),e.addItem(mxResources.get("link"),
+null,mxUtils.bind(this,function(){this.showPublishLinkDialog(mxResources.get("url"),!0,null,null,mxUtils.bind(this,function(c,e,d,g,k,q){c=this.createUrlParameters(c,e,d,g,k,q);d||c.push("hide-pages=1");f.isSelectionEmpty()||(d=f.getBoundingBox(f.getSelectionCells()),e=f.view.translate,k=f.view.scale,d.width/=k,d.height/=k,d.x=d.x/k-e.x,d.y=d.y/k-e.y,c.push("viewbox="+encodeURIComponent(JSON.stringify({x:Math.round(d.x),y:Math.round(d.y),width:Math.round(d.width),height:Math.round(d.height),border:100}))));
+g=new EmbedDialog(this,this.getLinkForPage(b,c,g));this.showDialog(g.container,450,240,!0,!0);g.init()}))})));e.addSeparator(k);e.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(b,mxResources.get("copyOf",[b.getName()]))}),k);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"draw.io"!=this.getServiceName()||(e.addSeparator(k),e.addItem(mxResources.get("openInNewWindow"),null,mxUtils.bind(this,function(){this.editor.editAsNew(this.getFileData(!0,null,null,null,
!0,!0))}),k))})};(function(){var b=EditorUi.prototype.refresh;EditorUi.prototype.refresh=function(c){b.apply(this,arguments);this.updateTabContainer()}})();(function(){mxCodecRegistry.getCodec(ChangePageSetup).exclude.push("page")})();(function(){var b=new mxObjectCodec(new MovePage,["ui"]);b.beforeDecode=function(b,e,k){k.ui=b.ui;return e};b.afterDecode=function(b,e,k){b=k.oldIndex;k.oldIndex=k.newIndex;k.newIndex=b;return k};mxCodecRegistry.register(b)})();
(function(){var b=new mxObjectCodec(new RenamePage,["ui","page"]);b.beforeDecode=function(b,e,k){k.ui=b.ui;return e};b.afterDecode=function(b,e,k){b=k.previous;k.previous=k.name;k.name=b;return k};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),c="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");b.afterEncode=function(b,k,g){g.setAttribute("relatedPage",k.relatedPage.getId());null==k.index&&(g.setAttribute("name",k.relatedPage.getName()),null!=k.relatedPage.viewState&&g.setAttribute("viewState",JSON.stringify(k.relatedPage.viewState,function(b,e){return 0>mxUtils.indexOf(c,
-b)?e:void 0})),null!=k.relatedPage.root&&b.encodeCell(k.relatedPage.root,g));return g};b.beforeDecode=function(b,c,g){g.ui=b.ui;g.relatedPage=g.ui.getPageById(c.getAttribute("relatedPage"));if(null==g.relatedPage){var e=c.ownerDocument.createElement("diagram");e.setAttribute("id",c.getAttribute("relatedPage"));e.setAttribute("name",c.getAttribute("name"));g.relatedPage=new DiagramPage(e);e=c.getAttribute("viewState");null!=e&&(g.relatedPage.viewState=JSON.parse(e),c.removeAttribute("viewState"));
-c=c.cloneNode(!0);e=c.firstChild;if(null!=e)for(g.relatedPage.root=b.decodeCell(e,!1),g=e.nextSibling,e.parentNode.removeChild(e),e=g;null!=e;){g=e.nextSibling;if(e.nodeType==mxConstants.NODETYPE_ELEMENT){var k=e.getAttribute("id");null==b.lookup(k)&&b.decodeCell(e)}e.parentNode.removeChild(e);e=g}}return c};b.afterDecode=function(b,c,g){g.index=g.previousIndex;return g};mxCodecRegistry.register(b)})();(function(){EditorUi.prototype.altShiftActions[68]="selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(c,e,p,t,d){e=null!=e?e:!1;null==p&&(p=this.getFoldableCells(this.getSelectionCells(),c));this.stopEditing();this.model.beginUpdate();try{for(var f=p.slice(),g=0;g<p.length;g++)"1"==mxUtils.getValue(this.getCurrentCellStyle(p[g]),"treeFolding","0")&&this.foldTreeCell(c,p[g]);p=f;p=b.apply(this,arguments)}finally{this.model.endUpdate()}return p};Graph.prototype.foldTreeCell=
-function(b,c){this.model.beginUpdate();try{var e=[];this.traverse(c,!0,mxUtils.bind(this,function(b,f){var d=null!=f&&this.isTreeEdge(f);d&&e.push(f);b==c||null!=f&&!d||e.push(b);return(null==f||d)&&(b==c||!this.model.isCollapsed(b))}));this.model.setCollapsed(c,b);for(var g=0;g<e.length;g++)this.model.setVisible(e[g],!b)}finally{this.model.endUpdate()}};Graph.prototype.isTreeEdge=function(b){return!this.isEdgeIgnored(b)};Graph.prototype.getTreeEdges=function(b,c,e,t,d,f){return this.model.filterCells(this.getEdges(b,
-c,e,t,d,f),mxUtils.bind(this,function(b){return this.isTreeEdge(b)}))};Graph.prototype.getIncomingTreeEdges=function(b,c){return this.getTreeEdges(b,c,!0,!1,!1)};Graph.prototype.getOutgoingTreeEdges=function(b,c){return this.getTreeEdges(b,c,!1,!0,!1)};var c=EditorUi.prototype.init;EditorUi.prototype.init=function(){c.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(b){return y.isVertex(b)&&e(b)}function c(b){var c=
+(function(){var b=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),c="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");b.afterEncode=function(b,k,f){f.setAttribute("relatedPage",k.relatedPage.getId());null==k.index&&(f.setAttribute("name",k.relatedPage.getName()),null!=k.relatedPage.viewState&&f.setAttribute("viewState",JSON.stringify(k.relatedPage.viewState,function(b,e){return 0>mxUtils.indexOf(c,
+b)?e:void 0})),null!=k.relatedPage.root&&b.encodeCell(k.relatedPage.root,f));return f};b.beforeDecode=function(b,c,f){f.ui=b.ui;f.relatedPage=f.ui.getPageById(c.getAttribute("relatedPage"));if(null==f.relatedPage){var e=c.ownerDocument.createElement("diagram");e.setAttribute("id",c.getAttribute("relatedPage"));e.setAttribute("name",c.getAttribute("name"));f.relatedPage=new DiagramPage(e);e=c.getAttribute("viewState");null!=e&&(f.relatedPage.viewState=JSON.parse(e),c.removeAttribute("viewState"));
+c=c.cloneNode(!0);e=c.firstChild;if(null!=e)for(f.relatedPage.root=b.decodeCell(e,!1),f=e.nextSibling,e.parentNode.removeChild(e),e=f;null!=e;){f=e.nextSibling;if(e.nodeType==mxConstants.NODETYPE_ELEMENT){var k=e.getAttribute("id");null==b.lookup(k)&&b.decodeCell(e)}e.parentNode.removeChild(e);e=f}}return c};b.afterDecode=function(b,c,f){f.index=f.previousIndex;return f};mxCodecRegistry.register(b)})();(function(){EditorUi.prototype.altShiftActions[68]="selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(c,e,p,t,d){e=null!=e?e:!1;null==p&&(p=this.getFoldableCells(this.getSelectionCells(),c));this.stopEditing();this.model.beginUpdate();try{for(var f=p.slice(),k=0;k<p.length;k++)"1"==mxUtils.getValue(this.getCurrentCellStyle(p[k]),"treeFolding","0")&&this.foldTreeCell(c,p[k]);p=f;p=b.apply(this,arguments)}finally{this.model.endUpdate()}return p};Graph.prototype.foldTreeCell=
+function(b,c){this.model.beginUpdate();try{var e=[];this.traverse(c,!0,mxUtils.bind(this,function(b,f){var d=null!=f&&this.isTreeEdge(f);d&&e.push(f);b==c||null!=f&&!d||e.push(b);return(null==f||d)&&(b==c||!this.model.isCollapsed(b))}));this.model.setCollapsed(c,b);for(var f=0;f<e.length;f++)this.model.setVisible(e[f],!b)}finally{this.model.endUpdate()}};Graph.prototype.isTreeEdge=function(b){return!this.isEdgeIgnored(b)};Graph.prototype.getTreeEdges=function(b,c,e,t,d,g){return this.model.filterCells(this.getEdges(b,
+c,e,t,d,g),mxUtils.bind(this,function(b){return this.isTreeEdge(b)}))};Graph.prototype.getIncomingTreeEdges=function(b,c){return this.getTreeEdges(b,c,!0,!1,!1)};Graph.prototype.getOutgoingTreeEdges=function(b,c){return this.getTreeEdges(b,c,!1,!0,!1)};var c=EditorUi.prototype.init;EditorUi.prototype.init=function(){c.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(b){return y.isVertex(b)&&e(b)}function c(b){var c=
!1;null!=b&&(c="1"==v.getCurrentCellStyle(b).treeMoving);return c}function e(b){var c=!1;null!=b&&(b=y.getParent(b),c=v.view.getState(b),c="tree"==(null!=c?c.style:v.getCellStyle(b)).containerType);return c}function t(b){var c=!1;null!=b&&(b=y.getParent(b),c=v.view.getState(b),v.view.getState(b),c=null!=(null!=c?c.style:v.getCellStyle(b)).childLayout);return c}function d(b){b=v.view.getState(b);if(null!=b){var c=v.getIncomingTreeEdges(b.cell);if(0<c.length&&(c=v.view.getState(c[0]),null!=c&&(c=c.absolutePoints,
-null!=c&&0<c.length&&(c=c[c.length-1],null!=c)))){if(c.y==b.y&&Math.abs(c.x-b.getCenterX())<b.width/2)return mxConstants.DIRECTION_SOUTH;if(c.y==b.y+b.height&&Math.abs(c.x-b.getCenterX())<b.width/2)return mxConstants.DIRECTION_NORTH;if(c.x>b.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function f(b,c){c=null!=c?c:!0;v.model.beginUpdate();try{var e=v.model.getParent(b),f=v.getIncomingTreeEdges(b),g=v.cloneCells([f[0],b]);v.model.setTerminal(g[0],v.model.getTerminal(f[0],
-!0),!0);var k=d(b),l=e.geometry;k==mxConstants.DIRECTION_SOUTH||k==mxConstants.DIRECTION_NORTH?g[1].geometry.x+=c?b.geometry.width+10:-g[1].geometry.width-10:g[1].geometry.y+=c?b.geometry.height+10:-g[1].geometry.height-10;v.view.currentRoot!=e&&(g[1].geometry.x-=l.x,g[1].geometry.y-=l.y);var m=v.view.getState(b),n=v.view.scale;if(null!=m){var p=mxRectangle.fromRectangle(m);k==mxConstants.DIRECTION_SOUTH||k==mxConstants.DIRECTION_NORTH?p.x+=(c?b.geometry.width+10:-g[1].geometry.width-10)*n:p.y+=(c?
-b.geometry.height+10:-g[1].geometry.height-10)*n;var q=v.getOutgoingTreeEdges(v.model.getTerminal(f[0],!0));if(null!=q){for(var t=k==mxConstants.DIRECTION_SOUTH||k==mxConstants.DIRECTION_NORTH,u=l=f=0;u<q.length;u++){var z=v.model.getTerminal(q[u],!1);if(k==d(z)){var C=v.view.getState(z);z!=b&&null!=C&&(t&&c!=C.getCenterX()<m.getCenterX()||!t&&c!=C.getCenterY()<m.getCenterY())&&mxUtils.intersects(p,C)&&(f=10+Math.max(f,(Math.min(p.x+p.width,C.x+C.width)-Math.max(p.x,C.x))/n),l=10+Math.max(l,(Math.min(p.y+
-p.height,C.y+C.height)-Math.max(p.y,C.y))/n))}}t?l=0:f=0;for(u=0;u<q.length;u++)if(z=v.model.getTerminal(q[u],!1),k==d(z)&&(C=v.view.getState(z),z!=b&&null!=C&&(t&&c!=C.getCenterX()<m.getCenterX()||!t&&c!=C.getCenterY()<m.getCenterY()))){var x=[];v.traverse(C.cell,!0,function(b,c){var d=null!=c&&v.isTreeEdge(c);d&&x.push(c);(null==c||d)&&x.push(b);return null==c||d});v.moveCells(x,(c?1:-1)*f,(c?1:-1)*l)}}}return v.addCells(g,e)}finally{v.model.endUpdate()}}function l(b){v.model.beginUpdate();try{var c=
-d(b),e=v.getIncomingTreeEdges(b),f=v.cloneCells([e[0],b]);v.model.setTerminal(e[0],f[1],!1);v.model.setTerminal(f[0],f[1],!0);v.model.setTerminal(f[0],b,!1);var g=v.model.getParent(b),k=g.geometry,l=[];v.view.currentRoot!=g&&(f[1].geometry.x-=k.x,f[1].geometry.y-=k.y);v.traverse(b,!0,function(b,c){var d=null!=c&&v.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});var m=b.geometry.width+40,n=b.geometry.height+40;c==mxConstants.DIRECTION_SOUTH?m=0:c==mxConstants.DIRECTION_NORTH?
-(m=0,n=-n):c==mxConstants.DIRECTION_WEST?(m=-m,n=0):c==mxConstants.DIRECTION_EAST&&(n=0);v.moveCells(l,m,n);return v.addCells(f,g)}finally{v.model.endUpdate()}}function q(b,c){v.model.beginUpdate();try{var e=v.model.getParent(b),f=v.getIncomingTreeEdges(b),g=d(b);0==f.length&&(f=[v.createEdge(e,null,"",null,null,v.createCurrentEdgeStyle())],g=c);var k=v.cloneCells([f[0],b]);v.model.setTerminal(k[0],b,!0);if(null==v.model.getTerminal(k[0],!1)){v.model.setTerminal(k[0],k[1],!1);var l=v.getCellStyle(k[1]).newEdgeStyle;
-if(null!=l)try{var m=JSON.parse(l),n;for(n in m)v.setCellStyles(n,m[n],[k[0]]),"edgeStyle"==n&&"elbowEdgeStyle"==m[n]&&v.setCellStyles("elbow",g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[k[0]])}catch(la){}}var f=v.getOutgoingTreeEdges(b),p=e.geometry,l=[];v.view.currentRoot==e&&(p=new mxRectangle);for(m=0;m<f.length;m++){var q=v.model.getTerminal(f[m],!1);null!=q&&l.push(q)}var t=v.view.getBounds(l),u=v.view.translate,z=v.view.scale;g==mxConstants.DIRECTION_SOUTH?
-(k[1].geometry.x=null==t?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(t.x+t.width)/z-u.x-p.x+10,k[1].geometry.y+=k[1].geometry.height-p.y+40):g==mxConstants.DIRECTION_NORTH?(k[1].geometry.x=null==t?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(t.x+t.width)/z-u.x+-p.x+10,k[1].geometry.y-=k[1].geometry.height+p.y+40):(k[1].geometry.x=g==mxConstants.DIRECTION_WEST?k[1].geometry.x-(k[1].geometry.width+p.x+40):k[1].geometry.x+(k[1].geometry.width-p.x+40),k[1].geometry.y=null==t?b.geometry.y+
-(b.geometry.height-k[1].geometry.height)/2:(t.y+t.height)/z-u.y+-p.y+10);return v.addCells(k,e)}finally{v.model.endUpdate()}}function m(b,c,d){b=v.getOutgoingTreeEdges(b);d=v.view.getState(d);var e=[];if(null!=d&&null!=b){for(var f=0;f<b.length;f++){var g=v.view.getState(v.model.getTerminal(b[f],!1));null!=g&&(!c&&Math.min(g.x+g.width,d.x+d.width)>=Math.max(g.x,d.x)||c&&Math.min(g.y+g.height,d.y+d.height)>=Math.max(g.y,d.y))&&e.push(g)}e.sort(function(b,d){return c?b.x+b.width-d.x-d.width:b.y+b.height-
+null!=c&&0<c.length&&(c=c[c.length-1],null!=c)))){if(c.y==b.y&&Math.abs(c.x-b.getCenterX())<b.width/2)return mxConstants.DIRECTION_SOUTH;if(c.y==b.y+b.height&&Math.abs(c.x-b.getCenterX())<b.width/2)return mxConstants.DIRECTION_NORTH;if(c.x>b.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function g(b,c){c=null!=c?c:!0;v.model.beginUpdate();try{var e=v.model.getParent(b),f=v.getIncomingTreeEdges(b),g=v.cloneCells([f[0],b]);v.model.setTerminal(g[0],v.model.getTerminal(f[0],
+!0),!0);var k=d(b),l=e.geometry;k==mxConstants.DIRECTION_SOUTH||k==mxConstants.DIRECTION_NORTH?g[1].geometry.x+=c?b.geometry.width+10:-g[1].geometry.width-10:g[1].geometry.y+=c?b.geometry.height+10:-g[1].geometry.height-10;v.view.currentRoot!=e&&(g[1].geometry.x-=l.x,g[1].geometry.y-=l.y);var m=v.view.getState(b),p=v.view.scale;if(null!=m){var n=mxRectangle.fromRectangle(m);k==mxConstants.DIRECTION_SOUTH||k==mxConstants.DIRECTION_NORTH?n.x+=(c?b.geometry.width+10:-g[1].geometry.width-10)*p:n.y+=(c?
+b.geometry.height+10:-g[1].geometry.height-10)*p;var q=v.getOutgoingTreeEdges(v.model.getTerminal(f[0],!0));if(null!=q){for(var t=k==mxConstants.DIRECTION_SOUTH||k==mxConstants.DIRECTION_NORTH,u=l=f=0;u<q.length;u++){var z=v.model.getTerminal(q[u],!1);if(k==d(z)){var C=v.view.getState(z);z!=b&&null!=C&&(t&&c!=C.getCenterX()<m.getCenterX()||!t&&c!=C.getCenterY()<m.getCenterY())&&mxUtils.intersects(n,C)&&(f=10+Math.max(f,(Math.min(n.x+n.width,C.x+C.width)-Math.max(n.x,C.x))/p),l=10+Math.max(l,(Math.min(n.y+
+n.height,C.y+C.height)-Math.max(n.y,C.y))/p))}}t?l=0:f=0;for(u=0;u<q.length;u++)if(z=v.model.getTerminal(q[u],!1),k==d(z)&&(C=v.view.getState(z),z!=b&&null!=C&&(t&&c!=C.getCenterX()<m.getCenterX()||!t&&c!=C.getCenterY()<m.getCenterY()))){var x=[];v.traverse(C.cell,!0,function(b,c){var d=null!=c&&v.isTreeEdge(c);d&&x.push(c);(null==c||d)&&x.push(b);return null==c||d});v.moveCells(x,(c?1:-1)*f,(c?1:-1)*l)}}}return v.addCells(g,e)}finally{v.model.endUpdate()}}function l(b){v.model.beginUpdate();try{var c=
+d(b),e=v.getIncomingTreeEdges(b),f=v.cloneCells([e[0],b]);v.model.setTerminal(e[0],f[1],!1);v.model.setTerminal(f[0],f[1],!0);v.model.setTerminal(f[0],b,!1);var g=v.model.getParent(b),k=g.geometry,l=[];v.view.currentRoot!=g&&(f[1].geometry.x-=k.x,f[1].geometry.y-=k.y);v.traverse(b,!0,function(b,c){var d=null!=c&&v.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});var m=b.geometry.width+40,p=b.geometry.height+40;c==mxConstants.DIRECTION_SOUTH?m=0:c==mxConstants.DIRECTION_NORTH?
+(m=0,p=-p):c==mxConstants.DIRECTION_WEST?(m=-m,p=0):c==mxConstants.DIRECTION_EAST&&(p=0);v.moveCells(l,m,p);return v.addCells(f,g)}finally{v.model.endUpdate()}}function q(b,c){v.model.beginUpdate();try{var e=v.model.getParent(b),f=v.getIncomingTreeEdges(b),g=d(b);0==f.length&&(f=[v.createEdge(e,null,"",null,null,v.createCurrentEdgeStyle())],g=c);var k=v.cloneCells([f[0],b]);v.model.setTerminal(k[0],b,!0);if(null==v.model.getTerminal(k[0],!1)){v.model.setTerminal(k[0],k[1],!1);var l=v.getCellStyle(k[1]).newEdgeStyle;
+if(null!=l)try{var m=JSON.parse(l),p;for(p in m)v.setCellStyles(p,m[p],[k[0]]),"edgeStyle"==p&&"elbowEdgeStyle"==m[p]&&v.setCellStyles("elbow",g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[k[0]])}catch(la){}}var f=v.getOutgoingTreeEdges(b),n=e.geometry,l=[];v.view.currentRoot==e&&(n=new mxRectangle);for(m=0;m<f.length;m++){var q=v.model.getTerminal(f[m],!1);null!=q&&l.push(q)}var t=v.view.getBounds(l),u=v.view.translate,z=v.view.scale;g==mxConstants.DIRECTION_SOUTH?
+(k[1].geometry.x=null==t?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(t.x+t.width)/z-u.x-n.x+10,k[1].geometry.y+=k[1].geometry.height-n.y+40):g==mxConstants.DIRECTION_NORTH?(k[1].geometry.x=null==t?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(t.x+t.width)/z-u.x+-n.x+10,k[1].geometry.y-=k[1].geometry.height+n.y+40):(k[1].geometry.x=g==mxConstants.DIRECTION_WEST?k[1].geometry.x-(k[1].geometry.width+n.x+40):k[1].geometry.x+(k[1].geometry.width-n.x+40),k[1].geometry.y=null==t?b.geometry.y+
+(b.geometry.height-k[1].geometry.height)/2:(t.y+t.height)/z-u.y+-n.y+10);return v.addCells(k,e)}finally{v.model.endUpdate()}}function m(b,c,d){b=v.getOutgoingTreeEdges(b);d=v.view.getState(d);var e=[];if(null!=d&&null!=b){for(var f=0;f<b.length;f++){var g=v.view.getState(v.model.getTerminal(b[f],!1));null!=g&&(!c&&Math.min(g.x+g.width,d.x+d.width)>=Math.max(g.x,d.x)||c&&Math.min(g.y+g.height,d.y+d.height)>=Math.max(g.y,d.y))&&e.push(g)}e.sort(function(b,d){return c?b.x+b.width-d.x-d.width:b.y+b.height-
d.y-d.height})}return e}function n(b,c){var e=d(b),f=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST;(e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST)==f&&e!=c?u.actions.get("selectParent").funct():e==c?(f=v.getOutgoingTreeEdges(b),null!=f&&0<f.length&&v.setSelectionCell(v.model.getTerminal(f[0],!1))):(e=v.getIncomingTreeEdges(b),null!=e&&0<e.length&&(f=m(v.model.getTerminal(e[0],!0),f,b),e=v.view.getState(b),null!=e&&(e=mxUtils.indexOf(f,e),0<=e&&(e+=c==mxConstants.DIRECTION_NORTH||
c==mxConstants.DIRECTION_WEST?-1:1,0<=e&&e<=f.length-1&&v.setSelectionCell(f[e].cell)))))}var u=this,v=u.editor.graph,y=v.getModel(),x=u.menus.createPopupMenu;u.menus.createPopupMenu=function(c,d,e){x.apply(this,arguments);if(1==v.getSelectionCount()){d=v.getSelectionCell();var f=v.getOutgoingTreeEdges(d);c.addSeparator();0<f.length&&(b(v.getSelectionCell())&&this.addMenuItems(c,["selectChildren"],null,e),this.addMenuItems(c,["selectDescendants"],null,e));b(v.getSelectionCell())?(c.addSeparator(),
0<v.getIncomingTreeEdges(d).length&&this.addMenuItems(c,["selectSiblings","selectParent"],null,e)):0<v.model.getEdgeCount(d)&&this.addMenuItems(c,["selectConnections"],null,e)}};u.actions.addAction("selectChildren",function(){if(v.isEnabled()&&1==v.getSelectionCount()){var b=v.getSelectionCell(),b=v.getOutgoingTreeEdges(b);if(null!=b){for(var c=[],d=0;d<b.length;d++)c.push(v.model.getTerminal(b[d],!1));v.setSelectionCells(c)}}},null,null,"Alt+Shift+X");u.actions.addAction("selectSiblings",function(){if(v.isEnabled()&&
@@ -3878,30 +3887,30 @@ c==mxConstants.DIRECTION_WEST?-1:1,0<=e&&e<=f.length-1&&v.setSelectionCell(f[e].
!0))}},null,null,"Alt+Shift+P");u.actions.addAction("selectDescendants",function(b,c){var d=v.getSelectionCell();if(v.isEnabled()&&v.model.isVertex(d)){if(null!=c&&mxEvent.isAltDown(c))v.setSelectionCells(v.model.getTreeEdges(d,null==c||!mxEvent.isShiftDown(c),null==c||!mxEvent.isControlDown(c)));else{var e=[];v.traverse(d,!0,function(b,d){var f=null!=d&&v.isTreeEdge(d);f&&e.push(d);null!=d&&!f||null!=c&&mxEvent.isShiftDown(c)||e.push(b);return null==d||f})}v.setSelectionCells(e)}},null,null,"Alt+Shift+D");
var F=v.removeCells;v.removeCells=function(c,d){d=null!=d?d:!0;null==c&&(c=this.getDeletableCells(this.getSelectionCells()));d&&(c=this.getDeletableCells(this.addAllEdges(c)));for(var f=[],g=0;g<c.length;g++){var k=c[g];y.isEdge(k)&&e(k)&&(f.push(k),k=y.getTerminal(k,!1));if(b(k)){var l=[];v.traverse(k,!0,function(b,c){var d=null!=c&&v.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});0<l.length&&(f=f.concat(l),k=v.getIncomingTreeEdges(c[g]),c=c.concat(k))}else null!=k&&f.push(c[g])}c=
f;return F.apply(this,arguments)};u.hoverIcons.getStateAt=function(c,d,e){return b(c.cell)?null:this.graph.view.getState(this.graph.getCellAt(d,e))};var H=v.duplicateCells;v.duplicateCells=function(c,d){c=null!=c?c:this.getSelectionCells();for(var e=c.slice(0),f=0;f<e.length;f++){var g=v.view.getState(e[f]);if(null!=g&&b(g.cell))for(var k=v.getIncomingTreeEdges(g.cell),g=0;g<k.length;g++)mxUtils.remove(k[g],c)}this.model.beginUpdate();try{var l=H.call(this,c,d);if(l.length==c.length)for(f=0;f<c.length;f++)if(b(c[f])){var m=
-v.getIncomingTreeEdges(l[f]),k=v.getIncomingTreeEdges(c[f]);if(0==m.length&&0<k.length){var n=this.cloneCell(k[0]);this.addEdge(n,v.getDefaultParent(),this.model.getTerminal(k[0],!0),l[f])}}}finally{this.model.endUpdate()}return l};var z=v.moveCells;v.moveCells=function(c,d,e,f,g,k,l){var m=null;this.model.beginUpdate();try{var n=g,p=this.getCurrentCellStyle(g);if(null!=c&&b(g)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q=0;q<c.length;q++)if(b(c[q])||v.model.isEdge(c[q])&&null==v.model.getTerminal(c[q],
-!0)){g=v.model.getParent(c[q]);break}if(null!=n&&g!=n&&null!=this.view.getState(c[0])){var t=v.getIncomingTreeEdges(c[0]);if(0<t.length){var u=v.view.getState(v.model.getTerminal(t[0],!0));if(null!=u){var C=v.view.getState(n);null!=C&&(d=(C.getCenterX()-u.getCenterX())/v.view.scale,e=(C.getCenterY()-u.getCenterY())/v.view.scale)}}}}m=z.apply(this,arguments);if(null!=m&&null!=c&&m.length==c.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(n)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[q],
-!0))&&this.model.setTerminal(m[q],n,!0);else if(b(c[q])&&(t=v.getIncomingTreeEdges(c[q]),0<t.length))if(!f)b(n)&&0>mxUtils.indexOf(c,this.model.getTerminal(t[0],!0))&&this.model.setTerminal(t[0],n,!0);else if(0==v.getIncomingTreeEdges(m[q]).length){p=n;if(null==p||p==v.model.getParent(c[q]))p=v.model.getTerminal(t[0],!0);f=this.cloneCell(t[0]);this.addEdge(f,v.getDefaultParent(),p,m[q])}}finally{this.model.endUpdate()}return m};if(null!=u.sidebar){var D=u.sidebar.dropAndConnect;u.sidebar.dropAndConnect=
-function(c,d,e,f){var g=v.model,k=null;g.beginUpdate();try{if(k=D.apply(this,arguments),b(c))for(var l=0;l<k.length;l++)if(g.isEdge(k[l])&&null==g.getTerminal(k[l],!0)){g.setTerminal(k[l],c,!0);var m=v.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return k}}var L={88:u.actions.get("selectChildren"),84:u.actions.get("selectSubtree"),80:u.actions.get("selectParent"),83:u.actions.get("selectSiblings")},E=u.onKeyDown;u.onKeyDown=function(c){try{if(v.isEnabled()&&
-!v.isEditing()&&b(v.getSelectionCell())&&1==v.getSelectionCount()){var d=null;0<v.getIncomingTreeEdges(v.getSelectionCell()).length&&(9==c.which?d=mxEvent.isShiftDown(c)?l(v.getSelectionCell()):q(v.getSelectionCell()):13==c.which&&(d=f(v.getSelectionCell(),!mxEvent.isShiftDown(c))));if(null!=d&&0<d.length)1==d.length&&v.model.isEdge(d[0])?v.setSelectionCell(v.model.getTerminal(d[0],!1)):v.setSelectionCell(d[d.length-1]),null!=u.hoverIcons&&u.hoverIcons.update(v.view.getState(v.getSelectionCell())),
-v.startEditingAtCell(v.getSelectionCell()),mxEvent.consume(c);else if(mxEvent.isAltDown(c)&&mxEvent.isShiftDown(c)){var e=L[c.keyCode];null!=e&&(e.funct(c),mxEvent.consume(c))}else 37==c.keyCode?(n(v.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(c)):38==c.keyCode?(n(v.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(c)):39==c.keyCode?(n(v.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(c)):40==c.keyCode&&(n(v.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
-mxEvent.consume(c))}}catch(G){u.handleError(G)}mxEvent.isConsumed(c)||E.apply(this,arguments)};var J=v.connectVertex;v.connectVertex=function(c,e,g,k,m,n,p){var t=v.getIncomingTreeEdges(c);if(b(c)){var u=d(c),z=u==mxConstants.DIRECTION_EAST||u==mxConstants.DIRECTION_WEST,C=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST;return u==e||0==t.length?q(c,e):z==C?l(c):f(c,e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_WEST)}return J.apply(this,arguments)};v.getSubtree=function(d){var e=
+v.getIncomingTreeEdges(l[f]),k=v.getIncomingTreeEdges(c[f]);if(0==m.length&&0<k.length){var p=this.cloneCell(k[0]);this.addEdge(p,v.getDefaultParent(),this.model.getTerminal(k[0],!0),l[f])}}}finally{this.model.endUpdate()}return l};var z=v.moveCells;v.moveCells=function(c,d,e,f,g,k,l){var m=null;this.model.beginUpdate();try{var p=g,n=this.getCurrentCellStyle(g);if(null!=c&&b(g)&&"1"==mxUtils.getValue(n,"treeFolding","0")){for(var q=0;q<c.length;q++)if(b(c[q])||v.model.isEdge(c[q])&&null==v.model.getTerminal(c[q],
+!0)){g=v.model.getParent(c[q]);break}if(null!=p&&g!=p&&null!=this.view.getState(c[0])){var t=v.getIncomingTreeEdges(c[0]);if(0<t.length){var u=v.view.getState(v.model.getTerminal(t[0],!0));if(null!=u){var C=v.view.getState(p);null!=C&&(d=(C.getCenterX()-u.getCenterX())/v.view.scale,e=(C.getCenterY()-u.getCenterY())/v.view.scale)}}}}m=z.apply(this,arguments);if(null!=m&&null!=c&&m.length==c.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(p)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[q],
+!0))&&this.model.setTerminal(m[q],p,!0);else if(b(c[q])&&(t=v.getIncomingTreeEdges(c[q]),0<t.length))if(!f)b(p)&&0>mxUtils.indexOf(c,this.model.getTerminal(t[0],!0))&&this.model.setTerminal(t[0],p,!0);else if(0==v.getIncomingTreeEdges(m[q]).length){n=p;if(null==n||n==v.model.getParent(c[q]))n=v.model.getTerminal(t[0],!0);f=this.cloneCell(t[0]);this.addEdge(f,v.getDefaultParent(),n,m[q])}}finally{this.model.endUpdate()}return m};if(null!=u.sidebar){var D=u.sidebar.dropAndConnect;u.sidebar.dropAndConnect=
+function(c,d,e,f){var g=v.model,k=null;g.beginUpdate();try{if(k=D.apply(this,arguments),b(c))for(var l=0;l<k.length;l++)if(g.isEdge(k[l])&&null==g.getTerminal(k[l],!0)){g.setTerminal(k[l],c,!0);var m=v.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return k}}var N={88:u.actions.get("selectChildren"),84:u.actions.get("selectSubtree"),80:u.actions.get("selectParent"),83:u.actions.get("selectSiblings")},E=u.onKeyDown;u.onKeyDown=function(c){try{if(v.isEnabled()&&
+!v.isEditing()&&b(v.getSelectionCell())&&1==v.getSelectionCount()){var d=null;0<v.getIncomingTreeEdges(v.getSelectionCell()).length&&(9==c.which?d=mxEvent.isShiftDown(c)?l(v.getSelectionCell()):q(v.getSelectionCell()):13==c.which&&(d=g(v.getSelectionCell(),!mxEvent.isShiftDown(c))));if(null!=d&&0<d.length)1==d.length&&v.model.isEdge(d[0])?v.setSelectionCell(v.model.getTerminal(d[0],!1)):v.setSelectionCell(d[d.length-1]),null!=u.hoverIcons&&u.hoverIcons.update(v.view.getState(v.getSelectionCell())),
+v.startEditingAtCell(v.getSelectionCell()),mxEvent.consume(c);else if(mxEvent.isAltDown(c)&&mxEvent.isShiftDown(c)){var e=N[c.keyCode];null!=e&&(e.funct(c),mxEvent.consume(c))}else 37==c.keyCode?(n(v.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(c)):38==c.keyCode?(n(v.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(c)):39==c.keyCode?(n(v.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(c)):40==c.keyCode&&(n(v.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
+mxEvent.consume(c))}}catch(G){u.handleError(G)}mxEvent.isConsumed(c)||E.apply(this,arguments)};var J=v.connectVertex;v.connectVertex=function(c,e,f,k,m,p,n){var t=v.getIncomingTreeEdges(c);if(b(c)){var u=d(c),z=u==mxConstants.DIRECTION_EAST||u==mxConstants.DIRECTION_WEST,C=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST;return u==e||0==t.length?q(c,e):z==C?l(c):g(c,e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_WEST)}return J.apply(this,arguments)};v.getSubtree=function(d){var e=
[d];!c(d)&&!b(d)||t(d)||v.traverse(d,!0,function(b,c){var d=null!=c&&v.isTreeEdge(c);d&&0>mxUtils.indexOf(e,c)&&e.push(c);(null==c||d)&&0>mxUtils.indexOf(e,b)&&e.push(b);return null==c||d});return e};var C=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){C.apply(this,arguments);(c(this.state.cell)||b(this.state.cell))&&!t(this.state.cell)&&0<this.graph.getOutgoingTreeEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title",
"Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height="24px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(b){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(b);
this.graph.isMouseDown=!0;u.hoverIcons.reset();mxEvent.consume(b)})))};var K=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){K.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var M=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){M.apply(this,
-arguments);null!=this.moveHandle&&(this.moveHandle.style.display=b?"":"none")};var aa=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(b,c){aa.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var e=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var b=e.apply(this,arguments),c=this.graph;return b.concat([this.addEntry("tree container",
+arguments);null!=this.moveHandle&&(this.moveHandle.style.display=b?"":"none")};var Z=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(b,c){Z.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var e=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var b=e.apply(this,arguments),c=this.graph;return b.concat([this.addEntry("tree container",
function(){var b=new mxCell("Tree Container",new mxGeometry(0,0,400,320),"swimlane;startSize=20;horizontal=1;containerType=tree;");b.vertex=!0;var c=new mxCell("Parent",new mxGeometry(140,60,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');c.vertex=!0;var d=new mxCell("Child",new mxGeometry(140,140,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');
d.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");e.geometry.relative=!0;e.edge=!0;c.insertEdge(e,!0);d.insertEdge(e,!1);b.insert(e);b.insert(c);b.insert(d);return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree mindmap mindmaps central idea branch topic",function(){var b=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;startSize=20;horizontal=1;containerType=tree;");
b.vertex=!0;var c=new mxCell("Central Idea",new mxGeometry(160,60,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');c.vertex=!0;var d=new mxCell("Topic",new mxGeometry(320,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
-d.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");e.geometry.relative=!0;e.edge=!0;c.insertEdge(e,!0);d.insertEdge(e,!1);var g=new mxCell("Branch",new mxGeometry(320,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
-g.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");k.geometry.relative=!0;k.edge=!0;c.insertEdge(k,!0);g.insertEdge(k,!1);var m=new mxCell("Topic",new mxGeometry(20,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
+d.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");e.geometry.relative=!0;e.edge=!0;c.insertEdge(e,!0);d.insertEdge(e,!1);var f=new mxCell("Branch",new mxGeometry(320,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
+f.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");k.geometry.relative=!0;k.edge=!0;c.insertEdge(k,!0);f.insertEdge(k,!1);var m=new mxCell("Topic",new mxGeometry(20,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
m.vertex=!0;var n=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");n.geometry.relative=!0;n.edge=!0;c.insertEdge(n,!0);m.insertEdge(n,!1);var u=new mxCell("Branch",new mxGeometry(20,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
-u.vertex=!0;var v=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");v.geometry.relative=!0;v.edge=!0;c.insertEdge(v,!0);u.insertEdge(v,!1);b.insert(e);b.insert(k);b.insert(n);b.insert(v);b.insert(c);b.insert(d);b.insert(g);b.insert(m);b.insert(u);return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var b=new mxCell("Central Idea",
+u.vertex=!0;var v=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");v.geometry.relative=!0;v.edge=!0;c.insertEdge(v,!0);u.insertEdge(v,!1);b.insert(e);b.insert(k);b.insert(n);b.insert(v);b.insert(c);b.insert(d);b.insert(f);b.insert(m);b.insert(u);return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var b=new mxCell("Central Idea",
new mxGeometry(0,0,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};treeFolding=1;treeMoving=1;');b.vertex=!0;return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree mindmap mindmaps branch",function(){var b=new mxCell("Branch",new mxGeometry(0,0,80,20),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");c.geometry.setTerminalPoint(new mxPoint(-40,40),!0);c.geometry.relative=!0;c.edge=!0;b.insertEdge(c,!1);return sb.createVertexTemplateFromCells([b,c],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree mindmap mindmaps sub topic",function(){var b=new mxCell("Sub Topic",new mxGeometry(0,0,72,26),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");c.geometry.setTerminalPoint(new mxPoint(-40,40),!0);c.geometry.relative=!0;c.edge=!0;b.insertEdge(c,!1);return sb.createVertexTemplateFromCells([b,c],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree orgchart organization division",function(){var b=new mxCell("Orgchart",new mxGeometry(0,0,280,220),'swimlane;startSize=20;horizontal=1;containerType=tree;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');
b.vertex=!0;var e=new mxCell("Organization",new mxGeometry(80,40,120,60),'whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');c.setAttributeForCell(e,"treeRoot","1");e.vertex=!0;var d=new mxCell("Division",new mxGeometry(20,140,100,60),'whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');
-d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");f.geometry.relative=!0;f.edge=!0;e.insertEdge(f,!0);d.insertEdge(f,!1);var g=new mxCell("Division",new mxGeometry(160,140,100,60),'whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');g.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
-k.geometry.relative=!0;k.edge=!0;e.insertEdge(k,!0);g.insertEdge(k,!1);b.insert(f);b.insert(k);b.insert(e);b.insert(d);b.insert(g);return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree root",function(){var b=new mxCell("Organization",new mxGeometry(0,0,120,60),'whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');c.setAttributeForCell(b,"treeRoot",
+d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");f.geometry.relative=!0;f.edge=!0;e.insertEdge(f,!0);d.insertEdge(f,!1);var k=new mxCell("Division",new mxGeometry(160,140,100,60),'whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');k.vertex=!0;var q=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
+q.geometry.relative=!0;q.edge=!0;e.insertEdge(q,!0);k.insertEdge(q,!1);b.insert(f);b.insert(q);b.insert(e);b.insert(d);b.insert(k);return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree root",function(){var b=new mxCell("Organization",new mxGeometry(0,0,120,60),'whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');c.setAttributeForCell(b,"treeRoot",
"1");b.vertex=!0;return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree division",function(){var b=new mxCell("Division",new mxGeometry(20,40,100,60),'whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
c.geometry.setTerminalPoint(new mxPoint(0,0),!0);c.geometry.relative=!0;c.edge=!0;b.insertEdge(c,!1);return sb.createVertexTemplateFromCells([b,c],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree sub sections",function(){var b=new mxCell("Sub Section",new mxGeometry(0,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;");b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");
c.geometry.setTerminalPoint(new mxPoint(110,-40),!0);c.geometry.relative=!0;c.edge=!0;b.insertEdge(c,!1);var d=new mxCell("Sub Section",new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;");d.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");e.geometry.setTerminalPoint(new mxPoint(110,-40),!0);e.geometry.relative=
@@ -3918,12 +3927,12 @@ c=Math.max(0,Math.min(c,d-e.clientHeight-2));this.getX()==b&&this.getY()==c||mxW
mxWindow.prototype.closeImage=Graph.createSvgImage(18,10,'<path d="M 5 1 L 13 9 M 13 1 L 5 9" stroke="#C0C0C0" stroke-width="2"/>').src;mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="none"/>').src;mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="none"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke-width="2" style="stroke-opacity:0.4" stroke="#ffffff"/><path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');
mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR="#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR="#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity=
"0.4";Graph.prototype.svgShadowSize="0.6";Graph.prototype.svgShadowBlur="1.2";Format.inactiveTabBackgroundColor="#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50;HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight="1"==urlParams.sketch?1:46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert="1"!=urlParams.sketch&&!mxClient.IS_IOS&&!mxClient.IS_ANDROID;
-EditorUi.prototype.setDarkMode=function(b){this.spinner.spin(document.body,mxResources.get("working")+"...")&&window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();this.doSetDarkMode(b);null==urlParams.dark&&(mxSettings.settings.darkMode=b,mxSettings.save());this.fireEvent(new mxEventObject("darkModeChanged"))}),0)};var g=document.createElement("link");g.setAttribute("rel","stylesheet");g.setAttribute("href",STYLE_PATH+"/dark.css");g.setAttribute("charset","UTF-8");g.setAttribute("type",
+EditorUi.prototype.setDarkMode=function(b){this.spinner.spin(document.body,mxResources.get("working")+"...")&&window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();this.doSetDarkMode(b);null==urlParams.dark&&(mxSettings.settings.darkMode=b,mxSettings.save());this.fireEvent(new mxEventObject("darkModeChanged"))}),0)};var f=document.createElement("link");f.setAttribute("rel","stylesheet");f.setAttribute("href",STYLE_PATH+"/dark.css");f.setAttribute("charset","UTF-8");f.setAttribute("type",
"text/css");EditorUi.prototype.doSetDarkMode=function(b){if(Editor.darkMode!=b){var c=this.editor.graph;Editor.darkMode=b;this.spinner.opts.color=Editor.isDarkMode()?"#c0c0c0":"#000";this.setGridColor(Editor.isDarkMode()?c.view.defaultDarkGridColor:c.view.defaultGridColor);c.defaultPageBackgroundColor="1"==urlParams.embedInline?"transparent":Editor.isDarkMode()?Editor.darkColor:"#ffffff";c.defaultPageBorderColor=Editor.isDarkMode()?"#505759":"#ffffff";c.shapeBackgroundColor=Editor.isDarkMode()?Editor.darkColor:
"#ffffff";c.shapeForegroundColor=Editor.isDarkMode()?Editor.lightColor:"#000000";c.defaultThemeName=Editor.isDarkMode()?"darkTheme":"default-style2";c.graphHandler.previewColor=Editor.isDarkMode()?"#cccccc":"black";document.body.style.backgroundColor="1"==urlParams.embedInline?"transparent":Editor.isDarkMode()?Editor.darkColor:"#ffffff";c.loadStylesheet();null!=this.actions.layersWindow&&(b=this.actions.layersWindow.window.isVisible(),this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.destroy(),
this.actions.layersWindow=null,b&&window.setTimeout(this.actions.get("layers").funct,0));null!=this.menus.commentsWindow&&(this.menus.commentsWindow.window.setVisible(!1),this.menus.commentsWindow.destroy(),this.menus.commentsWindow=null);null!=this.ruler&&this.ruler.updateStyle();Graph.prototype.defaultPageBackgroundColor=c.defaultPageBackgroundColor;Graph.prototype.defaultPageBorderColor=c.defaultPageBorderColor;Graph.prototype.shapeBackgroundColor=c.shapeBackgroundColor;Graph.prototype.shapeForegroundColor=
c.shapeForegroundColor;Graph.prototype.defaultThemeName=c.defaultThemeName;StyleFormatPanel.prototype.defaultStrokeColor=Editor.isDarkMode()?"#cccccc":"black";BaseFormatPanel.prototype.buttonBackgroundColor=Editor.isDarkMode()?Editor.darkColor:"white";Format.inactiveTabBackgroundColor=Editor.isDarkMode()?"black":"#f0f0f0";Dialog.backdropColor=Editor.isDarkMode()?Editor.darkColor:"white";mxConstants.DROP_TARGET_COLOR=Editor.isDarkMode()?"#00ff00":"#0000FF";Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?
-Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;p.innerHTML=Editor.createMinimalCss();Editor.darkMode?null==g.parentNode&&document.getElementsByTagName("head")[0].appendChild(g):null!=g.parentNode&&g.parentNode.removeChild(g)}};Editor.createMinimalCss=function(){return"* { -webkit-font-smoothing: antialiased; }html body td.mxWindowTitle > div > img { padding: 8px 4px; }"+(Editor.isDarkMode()?
+Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;p.innerHTML=Editor.createMinimalCss();Editor.darkMode?null==f.parentNode&&document.getElementsByTagName("head")[0].appendChild(f):null!=f.parentNode&&f.parentNode.removeChild(f)}};Editor.createMinimalCss=function(){return"* { -webkit-font-smoothing: antialiased; }html body td.mxWindowTitle > div > img { padding: 8px 4px; }"+(Editor.isDarkMode()?
"html body td.mxWindowTitle > div > img { margin: -4px; }html body .geToolbarContainer .geMenuItem, html body .geToolbarContainer .geToolbarButton, html body .geMenubarContainer .geMenuItem .geMenuItem, html body .geMenubarContainer a.geMenuItem,html body .geMenubarContainer .geToolbarButton { filter: invert(1); }html body div.geToolbarContainer a.geInverted { filter: none; }html body .geMenubarContainer .geMenuItem .geMenuItem, html body .geMenubarContainer a.geMenuItem { color: #353535; }html > body > div > .geToolbarContainer { border: 1px solid #c0c0c0 !important; box-shadow: none !important; }html > body.geEditor > div > a.geItem { background-color: #2a2a2a; color: #cccccc; border-color: #505759; }html body .geTabContainer, html body .geTabContainer div, html body .geMenubarContainer { border-color: #505759 !important; }html body .mxCellEditor { color: #f0f0f0; }":
"html body div.geToolbarContainer a.geInverted { filter: invert(1); }html body.geEditor .geTabContainer div { border-color: #e5e5e5 !important; }")+'html > body > div > a.geItem { background-color: #ffffff; color: #707070; border-top: 1px solid lightgray; border-left: 1px solid lightgray; }html body .geMenubarContainer { border-bottom:1px solid lightgray;background-color:#ffffff; }html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }html body table.mxWindow td.mxWindowPane div.mxWindowPane *:not(svg *) { font-size:9pt; }table.mxWindow * :not(svg *) { font-size:13px; }html body .mxWindow { z-index: 3; }html body div.diagramContainer button, html body button.geBtn { font-size:14px; font-weight:700; border-radius: 5px; }html body button.geBtn:active { opacity: 0.6; }html body a.geMenuItem { opacity: 0.75; cursor: pointer; user-select: none; }html body a.geMenuItem[disabled] { opacity: 0.2; }html body a.geMenuItem[disabled]:active { opacity: 0.2; }html body div.geActivePage { opacity: 0.7; }html body a.geMenuItem:active { opacity: 0.2; }html body .geToolbarButton { opacity: 0.3; }html body .geToolbarButton:active { opacity: 0.15; }html body .geStatus:active { opacity: 0.5; }html body .geStatus { padding-top:3px !important; }html body .geMenubarContainer .geStatus { margin-top: 0px !important; }html table.mxPopupMenu tr.mxPopupMenuItemHover:active { opacity: 0.7; }html body .geDialog input, html body .geToolbarContainer input, html body .mxWindow input {padding: 2px; display: inline-block; }html body .mxWindow input[type="checkbox"] {padding: 0px; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: '+
(Editor.isDarkMode()?Editor.darkColor:"#fff")+" !important; border: none !important; }.mxWindow button, .geDialog select, .mxWindow select { display:inline-block; }html body .mxWindow .geColorBtn, html body .geDialog .geColorBtn { background: none; }html body div.diagramContainer button, html body .mxWindow button, html body .geDialog button { min-width: 0px; border-radius: 5px; color: "+(Editor.isDarkMode()?"#cccccc":"#353535")+" !important; border-style: solid; border-width: 1px; border-color: rgb(216, 216, 216); }html body div.diagramContainer button:hover, html body .mxWindow button:hover, html body .geDialog button:hover { border-color: rgb(177, 177, 177); }html body div.diagramContainer button:active, html body .mxWindow button:active, html body .geDialog button:active { opacity: 0.6; }div.diagramContainer button.geBtn, .mxWindow button.geBtn, .geDialog button.geBtn { min-width:72px; font-weight: 600; background: none; }div.diagramContainer button.gePrimaryBtn, .mxWindow button.gePrimaryBtn, .geDialog button.gePrimaryBtn, html body .gePrimaryBtn { background: #29b6f2; color: #fff !important; border: none; box-shadow: none; }html body .gePrimaryBtn:hover { background: #29b6f2; border: none; box-shadow: inherit; }html body button.gePrimaryBtn:hover { background: #29b6f2; border: none; }.geBtn button { min-width:72px !important; }div.geToolbarContainer a.geButton { margin:0px; padding: 0 2px 4px 2px; } html body div.geToolbarContainer a.geColorBtn { margin: 2px; } html body .mxWindow td.mxWindowPane input, html body .mxWindow td.mxWindowPane select, html body .mxWindow td.mxWindowPane textarea, html body .mxWindow td.mxWindowPane radio { padding: 0px; box-sizing: border-box; }.geDialog, .mxWindow td.mxWindowPane *, div.geSprite, td.mxWindowTitle, .geDiagramContainer { box-sizing:content-box; }.mxWindow div button.geStyleButton { box-sizing: border-box; }table.mxWindow td.mxWindowPane button.geColorBtn { padding:0px; box-sizing: border-box; }td.mxWindowPane .geSidebarContainer button { padding:2px; box-sizing: border-box; }html body .geMenuItem { font-size:14px; text-decoration: none; font-weight: normal; padding: 6px 10px 6px 10px; border: none; border-radius: 5px; color: #353535; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }.geTabContainer { border-bottom:1px solid lightgray; border-top:1px solid lightgray; background: "+
@@ -3932,8 +3941,8 @@ Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMo
(Editor.isDarkMode()?Editor.darkColor:"rgb(249, 249, 249)")+" !important; color: #A0A0A0 !important; } html div.geActivePage { background: "+(Editor.isDarkMode()?Editor.darkColor:"#fff")+" !important; "+(Editor.isDarkMode()?"":"color: #353535 !important; } ")+"html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.4) !important; } html body div.mxPopupMenu { border-radius:5px; border:1px solid #c0c0c0; padding:5px 0 5px 0; box-shadow: 0px 4px 17px -4px rgba(96,96,96,1); } html table.mxPopupMenu td.mxPopupMenuItem { color: "+
(Editor.isDarkMode()?"#cccccc":"#353535")+"; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: "+(Editor.isDarkMode()?"#000000":"#29b6f2")+"; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: "+(Editor.isDarkMode()?"#cccccc":"#ffffff")+" !important; }html tr.mxPopupMenuItem, html td.mxPopupMenuItem { transition-property: none !important; }html table.mxPopupMenu hr { height: 2px; background-color: rgba(0,0,0,.07); margin: 5px 0; }html body td.mxWindowTitle { padding-right: 14px; }html td.mxWindowTitle div { top: 0px !important; }"+
(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"")+("1"==urlParams.sketch?"a.geStatus > div { overflow: hidden; text-overflow: ellipsis; max-width: 100%; }":"")};var p=document.createElement("style");p.type="text/css";p.innerHTML=Editor.createMinimalCss();document.getElementsByTagName("head")[0].appendChild(p);Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var t=EditorUi.prototype.updateTabContainer;
-EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="1"==urlParams.sketch?"0px":this.tabContainerHeight+"px");t.apply(this,arguments)};var d=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){d.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var f=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(b,
-c){null!=c.shortcut&&900>e&&!mxClient.IS_IOS?b.firstChild.nextSibling.setAttribute("title",c.shortcut):f.apply(this,arguments)};var l=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){l.apply(this,arguments);if(null!=this.userElement){var b=this.userElement;b.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+b.style.display;b.className="geToolbarButton";b.innerHTML="";b.style.backgroundImage="url("+Editor.userImage+")";b.style.backgroundPosition="center center";
+EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="1"==urlParams.sketch?"0px":this.tabContainerHeight+"px");t.apply(this,arguments)};var d=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){d.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var g=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(b,
+c){null!=c.shortcut&&900>e&&!mxClient.IS_IOS?b.firstChild.nextSibling.setAttribute("title",c.shortcut):g.apply(this,arguments)};var l=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){l.apply(this,arguments);if(null!=this.userElement){var b=this.userElement;b.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+b.style.display;b.className="geToolbarButton";b.innerHTML="";b.style.backgroundImage="url("+Editor.userImage+")";b.style.backgroundPosition="center center";
b.style.backgroundRepeat="no-repeat";b.style.backgroundSize="24px 24px";b.style.height="24px";b.style.width="24px";b.style.cssFloat="right";b.setAttribute("title",mxResources.get("changeUser"));"none"!=b.style.display&&(b.style.display="inline-block")}};var q=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){q.apply(this,arguments);if(null!=this.shareButton){var b=this.shareButton;b.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";
b.className="geToolbarButton";b.innerHTML="";b.style.backgroundImage="url("+Editor.shareImage+")";b.style.backgroundPosition="center center";b.style.backgroundRepeat="no-repeat";b.style.backgroundSize="24px 24px";b.style.height="24px";b.style.width="24px";"1"==urlParams.sketch&&(this.shareButton.style.display="none")}null!=this.buttonContainer&&(this.buttonContainer.style.marginTop="-2px",this.buttonContainer.style.paddingTop="4px")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer&&
"1"!=urlParams.embedInline){var b=document.createElement("div");b.style.display="inline-block";b.style.position="relative";b.style.marginTop="6px";b.style.marginRight="4px";var c=document.createElement("a");c.className="geMenuItem gePrimaryBtn";c.style.marginLeft="8px";c.style.padding="6px";if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var d="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(c,d);c.setAttribute("title",d);mxEvent.addListener(c,
@@ -3982,7 +3991,7 @@ m.embedViewport.y+m.embedViewport.height-c))+"px"}};this.keyHandler.bindAction(7
p);m.statusContainer=m.createStatusContainer();m.statusContainer.style.position="relative";m.statusContainer.style.maxWidth="";m.statusContainer.style.marginTop="7px";m.statusContainer.style.marginLeft="6px";m.statusContainer.style.color="gray";m.statusContainer.style.cursor="default";var u=m.hideCurrentMenu;m.hideCurrentMenu=function(){u.apply(this,arguments);this.editor.graph.popupMenuHandler.hideMenu()};var v=m.descriptorChanged;m.descriptorChanged=function(){v.apply(this,arguments);var b=m.getCurrentFile();
if(null!=b&&null!=b.getTitle()){var c=b.getMode();"google"==c?c="googleDrive":"github"==c?c="gitHub":"gitlab"==c?c="gitLab":"onedrive"==c&&(c="oneDrive");c=mxResources.get(c);p.setAttribute("title",b.getTitle()+(null!=c?" ("+c+")":""))}else p.removeAttribute("title")};m.setStatusText(m.editor.getStatus());p.appendChild(m.statusContainer);m.buttonContainer=document.createElement("div");m.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";
p.appendChild(m.buttonContainer);m.menubarContainer=m.buttonContainer;m.tabContainer=document.createElement("div");m.tabContainer.className="geTabContainer";m.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";var l=m.diagramContainer.parentNode,x=document.createElement("div");x.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";m.diagramContainer.style.top="1"==urlParams.sketch?
-"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){x.style.top="20px";m.titlebar=document.createElement("div");m.titlebar.style.cssText="position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var y=document.createElement("div");y.style.cssText="max-width: calc(100% - 100px);text-overflow: ellipsis;user-select:none;height:20px;margin: 2px 10px;font-size: 12px;white-space: nowrap;overflow: hidden;";m.titlebar.appendChild(y);l.appendChild(m.titlebar)}var A=
+"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){x.style.top="20px";m.titlebar=document.createElement("div");m.titlebar.style.cssText="position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var y=document.createElement("div");y.style.cssText="max-width: calc(100% - 100px);text-overflow: ellipsis;user-select:none;height:20px;margin: 2px 10px;font-size: 12px;white-space: nowrap;overflow: hidden;";m.titlebar.appendChild(y);l.appendChild(m.titlebar)}var B=
m.menus.get("viewZoom"),F="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,S="1"==urlParams.sketch?document.createElement("div"):null,Q="1"==urlParams.sketch?document.createElement("div"):null,V="1"==urlParams.sketch?document.createElement("div"):null,y=mxUtils.bind(this,function(){null!=this.sidebar&&(this.sidebar.graph.stylesheet.styles=mxUtils.clone(n.stylesheet.styles),this.sidebar.container.innerHTML="",this.sidebar.palettes={},this.sidebar.init(),"1"==urlParams.sketch&&(this.scratchpad=
null,this.toggleScratchpad()));n.refresh();n.view.validateBackground()});m.addListener("darkModeChanged",y);m.addListener("sketchModeChanged",y);var oa=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)V.style.left="10px",V.style.top="10px",Q.style.left="10px",Q.style.top="60px",S.style.top="10px",S.style.right="12px",S.style.left="",m.diagramContainer.setAttribute("data-bounds",m.diagramContainer.style.top+" "+m.diagramContainer.style.left+" "+m.diagramContainer.style.width+" "+m.diagramContainer.style.height),
m.diagramContainer.style.top="0px",m.diagramContainer.style.left="0px",m.diagramContainer.style.bottom="0px",m.diagramContainer.style.right="0px",m.diagramContainer.style.width="",m.diagramContainer.style.height="";else{var b=m.diagramContainer.getAttribute("data-bounds");if(null!=b){m.diagramContainer.style.background="transparent";m.diagramContainer.removeAttribute("data-bounds");var c=n.getGraphBounds(),b=b.split(" ");m.diagramContainer.style.top=b[0];m.diagramContainer.style.left=b[1];m.diagramContainer.style.width=
@@ -3996,23 +4005,23 @@ if(null!=m.hoverIcons){var ka=m.hoverIcons.update;m.hoverIcons.update=function()
"function"===typeof m.statusContainer.firstChild.getAttribute&&null==m.statusContainer.firstChild.getAttribute("class")){var b=null!=m.statusContainer.firstChild&&"function"===typeof m.statusContainer.firstChild.getAttribute?m.statusContainer.firstChild.getAttribute("title"):m.editor.getStatus();ja(b);var c=m.getCurrentFile(),c=null!=c?c.savingStatusKey:DrawioFile.prototype.savingStatusKey;b==mxResources.get(c)+"..."?(m.statusContainer.innerHTML='<img title="'+mxUtils.htmlEntities(mxResources.get(c))+
'..."src="'+Editor.tailSpin+'">',m.statusContainer.style.display="inline-block",la=!0):6<m.buttonContainer.clientWidth&&(m.statusContainer.style.display="none",la=!1)}else m.statusContainer.style.display="inline-block",ja(null),la=!0;p.style.visibility=12<p.clientWidth?"":"hidden"}))):m.editor.addListener("statusChanged",mxUtils.bind(this,function(){p.style.visibility=16<p.clientWidth?"":"hidden"}));P=d("diagram",null,Editor.menuImage);P.style.boxShadow="none";P.style.padding="6px";P.style.margin=
"0px";V.appendChild(P);mxEvent.disableContextMenu(P);mxEvent.addGestureListeners(P,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&this.appIconClicked(b)}),null,null);m.statusContainer.style.position="";m.statusContainer.style.display="none";m.statusContainer.style.margin="0px";m.statusContainer.style.padding="6px 0px";m.statusContainer.style.maxWidth=Math.min(e-240,280)+"px";m.statusContainer.style.display=
-"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.buttonContainer.style.display="inline-block";var ba=document.createElement("a");ba.style.padding="0px";ba.style.boxShadow="none";ba.className="geMenuItem";ba.style.display="inline-block";ba.style.width="40px";ba.style.height="12px";ba.style.marginBottom="-2px";ba.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";ba.style.backgroundPosition=
-"top center";ba.style.backgroundRepeat="no-repeat";ba.setAttribute("title","Minimize");var ca=!1,R=mxUtils.bind(this,function(){Q.innerHTML="";if(!ca){var b=function(b,d,e){b=f("",b.funct,null,d,b,e);b.style.width="40px";b.style.opacity="0.7";return c(b,null,"pointer")},c=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";Q.appendChild(b);mxUtils.br(Q);return b};c(m.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
+"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.buttonContainer.style.display="inline-block";var aa=document.createElement("a");aa.style.padding="0px";aa.style.boxShadow="none";aa.className="geMenuItem";aa.style.display="inline-block";aa.style.width="40px";aa.style.height="12px";aa.style.marginBottom="-2px";aa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";aa.style.backgroundPosition=
+"top center";aa.style.backgroundRepeat="no-repeat";aa.setAttribute("title","Minimize");var ba=!1,R=mxUtils.bind(this,function(){Q.innerHTML="";if(!ba){var b=function(b,d,e){b=f("",b.funct,null,d,b,e);b.style.width="40px";b.style.opacity="0.7";return c(b,null,"pointer")},c=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";Q.appendChild(b);mxUtils.br(Q);return b};c(m.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
60,30,"Text",mxResources.get("text"),!0,!1,null,!0,!0),mxResources.get("text")+" ("+Editor.ctrlKey+"+Shift+X)");c(m.sidebar.createVertexTemplate("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;fontColor=#000000;darkOpacity=0.05;fillColor=#FFF9B2;strokeColor=none;fillStyle=solid;direction=west;gradientDirection=north;gradientColor=#FFF2A1;shadow=1;size=20;pointerEvents=1;",140,160,"",mxResources.get("note"),!0,!1,null,!0),mxResources.get("note"));c(m.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",
160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");c(m.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var b=new mxCell("",new mxGeometry(0,0,n.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,0),!1);
b.geometry.points=[];b.geometry.relative=!0;b.edge=!0;c(m.sidebar.createEdgeTemplateFromCells([b],b.geometry.width,b.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));b=b.clone();b.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";b.geometry.width=n.defaultEdgeLength+20;b.geometry.setTerminalPoint(new mxPoint(0,20),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,20),!1);b=c(m.sidebar.createEdgeTemplateFromCells([b],
-b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var e=m.actions.get("toggleShapes");b(e,mxResources.get("shapes")+" ("+e.shortcut+")",F);P=d("table",null,Editor.tableImage);P.style.boxShadow="none";P.style.opacity="0.7";P.style.padding="6px";
-P.style.margin="0px";P.style.width="37px";c(P,null,"pointer");b(m.actions.get("insertTemplate"),mxResources.get("template"),Editor.templateImage)}"1"!=urlParams.embedInline&&Q.appendChild(ba)});mxEvent.addListener(ba,"click",mxUtils.bind(this,function(){ca?(mxUtils.setPrefixedStyle(Q.style,"transform","translate(0, -50%)"),Q.style.padding="8px 6px 4px",Q.style.top="50%",Q.style.bottom="",Q.style.height="",ba.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",ba.style.width="40px",
-ba.style.height="12px",ba.setAttribute("title","Minimize"),ca=!1,R()):(Q.innerHTML="",Q.appendChild(ba),mxUtils.setPrefixedStyle(Q.style,"transform","translate(0, 0)"),Q.style.top="",Q.style.bottom="12px",Q.style.padding="0px",Q.style.height="24px",ba.style.height="24px",ba.style.backgroundImage="url("+Editor.plusImage+")",ba.setAttribute("title",mxResources.get("insert")),ba.style.width="24px",ca=!0)}));R();m.addListener("darkModeChanged",R);m.addListener("sketchModeChanged",R)}else m.editor.addListener("statusChanged",
-mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=A){var y=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},sa=m.actions.get("zoomIn"),W=m.actions.get("zoomOut"),X=m.actions.get("resetView"),ma=m.actions.get("fullscreen");m.actions.get("toggleDarkMode");var qa=m.actions.get("undo"),T=m.actions.get("redo"),ia=f("",qa.funct,null,mxResources.get("undo")+" ("+qa.shortcut+
-")",qa,Editor.undoImage),da=f("",T.funct,null,mxResources.get("redo")+" ("+T.shortcut+")",T,Editor.redoImage),na=f("",ma.funct,null,mxResources.get("fullscreen"),ma,Editor.fullscreenImage);if(null!=S){A=function(){ea.style.display=null!=m.pages&&("1"==urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};na.parentNode.removeChild(na);var ha=m.actions.get("delete"),ua=f("",ha.funct,null,mxResources.get("delete"),ha,Editor.trashImage);ua.style.opacity="0.1";V.appendChild(ua);
+b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var e=m.actions.get("toggleShapes");b(e,mxResources.get("shapes")+" ("+e.shortcut+")",F);P=d("table",null,Editor.calendarImage);P.style.boxShadow="none";P.style.opacity="0.7";P.style.padding="6px";
+P.style.margin="0px";P.style.width="37px";c(P,null,"pointer");b(m.actions.get("insertTemplate"),mxResources.get("template"),Editor.addImage)}"1"!=urlParams.embedInline&&Q.appendChild(aa)});mxEvent.addListener(aa,"click",mxUtils.bind(this,function(){ba?(mxUtils.setPrefixedStyle(Q.style,"transform","translate(0, -50%)"),Q.style.padding="8px 6px 4px",Q.style.top="50%",Q.style.bottom="",Q.style.height="",aa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",aa.style.width="40px",aa.style.height=
+"12px",aa.setAttribute("title","Minimize"),ba=!1,R()):(Q.innerHTML="",Q.appendChild(aa),mxUtils.setPrefixedStyle(Q.style,"transform","translate(0, 0)"),Q.style.top="",Q.style.bottom="12px",Q.style.padding="0px",Q.style.height="24px",aa.style.height="24px",aa.style.backgroundImage="url("+Editor.plusImage+")",aa.setAttribute("title",mxResources.get("insert")),aa.style.width="24px",ba=!0)}));R();m.addListener("darkModeChanged",R);m.addListener("sketchModeChanged",R)}else m.editor.addListener("statusChanged",
+mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=B){var y=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},sa=m.actions.get("zoomIn"),W=m.actions.get("zoomOut"),X=m.actions.get("resetView"),ma=m.actions.get("fullscreen");m.actions.get("toggleDarkMode");var qa=m.actions.get("undo"),T=m.actions.get("redo"),ia=f("",qa.funct,null,mxResources.get("undo")+" ("+qa.shortcut+
+")",qa,Editor.undoImage),da=f("",T.funct,null,mxResources.get("redo")+" ("+T.shortcut+")",T,Editor.redoImage),na=f("",ma.funct,null,mxResources.get("fullscreen"),ma,Editor.fullscreenImage);if(null!=S){B=function(){ea.style.display=null!=m.pages&&("1"==urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};na.parentNode.removeChild(na);var ha=m.actions.get("delete"),ua=f("",ha.funct,null,mxResources.get("delete"),ha,Editor.trashImage);ua.style.opacity="0.1";V.appendChild(ua);
ha.addListener("stateChanged",function(){ua.style.opacity=ha.enabled?"":"0.1"});X=function(){ia.style.display=0<m.editor.undoManager.history.length||n.isEditing()?"inline-block":"none";da.style.display=ia.style.display;ia.style.opacity=qa.enabled?"":"0.1";da.style.opacity=T.enabled?"":"0.1"};V.appendChild(ia);V.appendChild(da);qa.addListener("stateChanged",X);T.addListener("stateChanged",X);X();null!=urlParams.layers&&(X=m.actions.get("layers"),X=f("",X.funct,null,mxResources.get("layers"),X,Editor.layersImage),
X.style.opacity="0.4",S.appendChild(X));null!=urlParams.tags&&(X=m.actions.get("tags"),X=f("",X.funct,null,mxResources.get("tags"),X,Editor.tagsImage),X.style.opacity="0.4",S.appendChild(X));X=m.actions.get("outline");X=f("",X.funct,null,mxResources.get("outline"),X,Editor.outlineImage);S.appendChild(X);X=f("",W.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",W,Editor.zoomOutImage);S.appendChild(X);var P=document.createElement("div");P.innerHTML="100%";P.setAttribute("title",
mxResources.get("fitWindow")+"/"+mxResources.get("resetView")+" (Enter)");P.style.display="inline-block";P.style.cursor="pointer";P.style.textAlign="center";P.style.whiteSpace="nowrap";P.style.paddingRight="10px";P.style.textDecoration="none";P.style.verticalAlign="top";P.style.padding="6px 0";P.style.fontSize="14px";P.style.width="40px";P.style.opacity="0.4";S.appendChild(P);mxEvent.addListener(P,"click",y);y=f("",sa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",sa,
Editor.zoomInImage);S.appendChild(y);"1"==urlParams.embedInline&&(S.appendChild(na),y=m.actions.get("exit"),S.appendChild(f("",y.funct,null,mxResources.get("exit"),y,Editor.closeImage)));var ea=this.createPageMenuTab(!1);ea.style.display="none";ea.style.position="";ea.style.marginLeft="";ea.style.top="";ea.style.left="";ea.style.height="100%";ea.style.lineHeight="";ea.style.borderStyle="none";ea.style.padding="3px 0";ea.style.margin="0px";ea.style.background="";ea.style.border="";ea.style.boxShadow=
-"none";ea.style.verticalAlign="top";ea.firstChild.style.height="100%";ea.firstChild.style.opacity="0.6";ea.firstChild.style.margin="0px";S.appendChild(ea);m.addListener("fileDescriptorChanged",A);m.addListener("pagesVisibleChanged",A);A();m.tabContainer.style.visibility="hidden";p.style.cssText="position:absolute;right:14px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px 0px 6px 6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";
+"none";ea.style.verticalAlign="top";ea.firstChild.style.height="100%";ea.firstChild.style.opacity="0.6";ea.firstChild.style.margin="0px";S.appendChild(ea);m.addListener("fileDescriptorChanged",B);m.addListener("pagesVisibleChanged",B);B();m.tabContainer.style.visibility="hidden";p.style.cssText="position:absolute;right:14px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px 0px 6px 6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";
V.style.cssText="position:absolute;left:10px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";S.style.cssText="position:absolute;right:14px;bottom:14px;height:28px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px;white-space:nowrap;user-select:none;";x.appendChild(V);x.appendChild(S);Q.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
-x.appendChild(Q);window.setTimeout(function(){mxUtils.setPrefixedStyle(Q.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var ta=f("",y,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",X,Editor.zoomFitImage);p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;text-align:left;white-space:nowrap;";this.tabContainer.style.right="70px";P=t.addMenu("100%",A.funct);P.setAttribute("title",mxResources.get("zoom")+
+x.appendChild(Q);window.setTimeout(function(){mxUtils.setPrefixedStyle(Q.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var ta=f("",y,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",X,Editor.zoomFitImage);p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;text-align:left;white-space:nowrap;";this.tabContainer.style.right="70px";P=t.addMenu("100%",B.funct);P.setAttribute("title",mxResources.get("zoom")+
" (Alt+Mousewheel)");P.style.whiteSpace="nowrap";P.style.paddingRight="10px";P.style.textDecoration="none";P.style.textDecoration="none";P.style.overflow="hidden";P.style.visibility="hidden";P.style.textAlign="center";P.style.cursor="pointer";P.style.height=parseInt(m.tabContainerHeight)-1+"px";P.style.lineHeight=parseInt(m.tabContainerHeight)+1+"px";P.style.position="absolute";P.style.display="block";P.style.fontSize="12px";P.style.width="59px";P.style.right="0px";P.style.bottom="0px";P.style.backgroundImage=
"url("+mxWindow.prototype.minimizeImage+")";P.style.backgroundPosition="right 6px center";P.style.backgroundRepeat="no-repeat";x.appendChild(P)}(function(b){var c=mxUtils.bind(this,function(){b.innerHTML=Math.round(100*m.editor.graph.view.scale)+"%"});m.editor.graph.view.addListener(mxEvent.EVENT_SCALE,c);m.editor.addListener("resetGraphView",c);m.editor.addListener("pageSelected",c)})(P);var ya=m.setGraphEnabled;m.setGraphEnabled=function(){ya.apply(this,arguments);null!=this.tabContainer&&(P.style.visibility=
this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility&&null==S?this.tabContainerHeight+"px":"0px")}}x.appendChild(p);x.appendChild(m.diagramContainer);l.appendChild(x);m.updateTabContainer();null==S&&x.appendChild(m.tabContainer);var pa=null;k();mxEvent.addListener(window,"resize",function(){k();null!=m.sidebarWindow&&m.sidebarWindow.window.fit();null!=m.formatWindow&&m.formatWindow.window.fit();null!=m.actions.outlineWindow&&m.actions.outlineWindow.window.fit();
@@ -4020,7 +4029,7 @@ null!=m.actions.layersWindow&&m.actions.layersWindow.window.fit();null!=m.menus.
mxEvent.getClientY(b)),m.sendEmbeddedSvgExport())});l=document.createElement("div");l.style.position="absolute";l.style.width="10px";l.style.height="10px";l.style.borderRadius="5px";l.style.border="1px solid gray";l.style.background="#ffffff";l.style.cursor="row-resize";m.diagramContainer.parentNode.appendChild(l);m.bottomResizer=l;var xa=null,za=null,Ba=null,Ea=null;mxEvent.addGestureListeners(l,function(b){Ea=parseInt(m.diagramContainer.style.height);za=mxEvent.getClientY(b);n.popupMenuHandler.hideMenu();
mxEvent.consume(b)});l=l.cloneNode(!1);l.style.cursor="col-resize";m.diagramContainer.parentNode.appendChild(l);m.rightResizer=l;mxEvent.addGestureListeners(l,function(b){Ba=parseInt(m.diagramContainer.style.width);xa=mxEvent.getClientX(b);n.popupMenuHandler.hideMenu();mxEvent.consume(b)});mxEvent.addGestureListeners(document.body,null,function(b){var c=!1;null!=xa&&(m.diagramContainer.style.width=Math.max(20,Ba+mxEvent.getClientX(b)-xa)+"px",c=!0);null!=za&&(m.diagramContainer.style.height=Math.max(20,
Ea+mxEvent.getClientY(b)-za)+"px",c=!0);c&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:m.diagramContainer.getBoundingClientRect()}),"*"),oa(),m.refresh())},function(b){null==xa&&null==za||mxEvent.consume(b);za=xa=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility="hidden";V.style.visibility="hidden";S.style.visibility=
-"hidden";Q.style.display="none"}"1"==urlParams.prefetchFonts&&m.editor.loadFonts()}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,c,e,k,g,p,t){this.file=b;this.id=c;this.content=e;this.modifiedDate=k;this.createdDate=g;this.isResolved=p;this.user=t;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,c,e,k,g){c()};DrawioComment.prototype.editComment=function(b,c,e){c()};DrawioComment.prototype.deleteComment=function(b,c){b()};DrawioUser=function(b,c,e,k,g){this.id=b;this.email=c;this.displayName=e;this.pictureUrl=k;this.locale=g};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbringForward=Bring Forward\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncontainer=Container\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\ndraftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyData=Copy Data\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedFonts=Embed Fonts\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified.\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngetNotionChromeExtension=Get the Notion Chrome Extension\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteData=Paste Data\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradial=Radial\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendBackward=Send Backward\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save.\nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found\nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occurred during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\nreplaceWith=Replace with\nreplaceAll=Replace All\nconfASkipDiagModified=Skipped "{1}" as it was modified after initial import\nreplFind=Replace/Find\nmatchesRepl={1} matches replaced\ndraftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.\nibm=IBM\nlinkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.\nlinkToDiagram=Link to Diagram\nchangedBy=Changed By\nlastModifiedOn=Last modified on\nsearchResults=Search Results\nshowAllTemps=Show all templates\nnotionToken=Notion Token\nselectDB=Select Database\nnoDBs=No Databases\ndiagramEdited={1} diagram "{2}" edited\nconfDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?\nconfDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?\nowner=Owner\nrepository=Repository\nbranch=Branch\nmeters=Meters\nteamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)\ncontactOwner=Contact Owner\nviewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.\nwebsite=Website\ncheck4Updates=Check for updates\nattWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...\nconfPartialPageList=We couldn\'t fetch all pages due to an error in Confluence. Continuing using {1} pages only.\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="default"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="default"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="default"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="default"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="default"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
+"hidden";Q.style.display="none"}"1"==urlParams.prefetchFonts&&m.editor.loadFonts()}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,c,e,k,f,p,t){this.file=b;this.id=c;this.content=e;this.modifiedDate=k;this.createdDate=f;this.isResolved=p;this.user=t;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,c,e,k,f){c()};DrawioComment.prototype.editComment=function(b,c,e){c()};DrawioComment.prototype.deleteComment=function(b,c){b()};DrawioUser=function(b,c,e,k,f){this.id=b;this.email=c;this.displayName=e;this.pictureUrl=k;this.locale=f};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbringForward=Bring Forward\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncontainer=Container\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\ndraftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyData=Copy Data\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedFonts=Embed Fonts\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified.\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngetNotionChromeExtension=Get the Notion Chrome Extension\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteData=Paste Data\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradial=Radial\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendBackward=Send Backward\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save.\nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found\nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occurred during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\nreplaceWith=Replace with\nreplaceAll=Replace All\nconfASkipDiagModified=Skipped "{1}" as it was modified after initial import\nreplFind=Replace/Find\nmatchesRepl={1} matches replaced\ndraftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.\nibm=IBM\nlinkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.\nlinkToDiagram=Link to Diagram\nchangedBy=Changed By\nlastModifiedOn=Last modified on\nsearchResults=Search Results\nshowAllTemps=Show all templates\nnotionToken=Notion Token\nselectDB=Select Database\nnoDBs=No Databases\ndiagramEdited={1} diagram "{2}" edited\nconfDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?\nconfDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?\nowner=Owner\nrepository=Repository\nbranch=Branch\nmeters=Meters\nteamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)\ncontactOwner=Contact Owner\nviewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.\nwebsite=Website\ncheck4Updates=Check for updates\nattWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...\nconfPartialPageList=We couldn\'t fetch all pages due to an error in Confluence. Continuing using {1} pages only.\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="default"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="default"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="default"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="default"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="default"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
Graph.prototype.defaultThemes.darkTheme=Graph.prototype.defaultThemes["default-style2"];GraphViewer=function(b,c,e){this.init(b,c,e)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://app.diagrams.net/";GraphViewer.prototype.imageBaseUrl="https://viewer.diagrams.net/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?24:26;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!1;GraphViewer.prototype.autoCrop=!1;
GraphViewer.prototype.autoOrigin=!0;GraphViewer.prototype.center=!1;GraphViewer.prototype.forceCenter=!1;GraphViewer.prototype.allowZoomIn=!1;GraphViewer.prototype.allowZoomOut=!0;GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;GraphViewer.prototype.responsive=!1;
GraphViewer.prototype.init=function(b,c,e){this.graphConfig=null!=e?e:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.autoCrop=null!=this.graphConfig["auto-crop"]?this.graphConfig["auto-crop"]:this.autoCrop;this.autoOrigin=null!=this.graphConfig["auto-origin"]?this.graphConfig["auto-origin"]:this.autoOrigin;this.allowZoomOut=null!=this.graphConfig["allow-zoom-out"]?this.graphConfig["allow-zoom-out"]:this.allowZoomOut;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?
@@ -4029,53 +4038,53 @@ this.graphConfig["allow-zoom-in"]:this.allowZoomIn;this.forceCenter=null!=this.g
this.responsive)&&!this.zoomEnabled&&!mxClient.NO_FO&&!mxClient.IS_SF;this.pageId=this.graphConfig.pageId;this.editor=null;"inline"==this.graphConfig["toolbar-position"]&&(this.minHeight+=this.toolbarHeight);if(null!=c&&(this.xmlDocument=c.ownerDocument,this.xmlNode=c,this.xml=mxUtils.getXml(c),null!=b)){var k=mxUtils.bind(this,function(){this.graph=new Graph(b);this.graph.enableFlowAnimation=!0;this.graph.defaultPageBackgroundColor="transparent";this.graph.transparentBackground=!1;if(this.responsive&&
this.graph.dialect==mxConstants.DIALECT_SVG){var e=this.graph.view.getDrawPane().ownerSVGElement;this.graph.view.getCanvas();null!=this.graphConfig.border?e.style.padding=this.graphConfig.border+"px":""==b.style.padding&&(e.style.padding="8px");e.style.boxSizing="border-box";e.style.overflow="visible";this.graph.fit=function(){};this.graph.sizeDidChange=function(){var b=this.view.graphBounds,c=this.view.translate;e.setAttribute("viewBox",b.x+c.x-this.panDx+" "+(b.y+c.y-this.panDy)+" "+(b.width+1)+
" "+(b.height+1));this.container.style.backgroundColor=e.style.backgroundColor;this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",b))}}this.graphConfig.move&&(this.graph.isMoveCellsEvent=function(b){return!0});this.lightboxClickEnabled&&(b.style.cursor="pointer");this.editor=new Editor(!0,null,null,this.graph);this.editor.editBlankUrl=this.editBlankUrl;this.graph.lightbox=!0;this.graph.centerZoom=!1;this.graph.autoExtend=!1;this.graph.autoScroll=!1;this.graph.setEnabled(!1);1==this.graphConfig["toolbar-nohide"]&&
-(this.editor.defaultGraphOverflow="visible");this.xmlNode=this.editor.extractGraphModel(this.xmlNode,!0);this.xmlNode!=c&&(this.xml=mxUtils.getXml(this.xmlNode),this.xmlDocument=this.xmlNode.ownerDocument);var d=this;this.graph.getImageFromBundles=function(b){return d.getImageUrl(b)};mxClient.IS_SVG&&this.graph.addSvgShadow(this.graph.view.canvas.ownerSVGElement,null,!0);if("mxfile"==this.xmlNode.nodeName){var f=this.xmlNode.getElementsByTagName("diagram");if(0<f.length){if(null!=this.pageId)for(var g=
-0;g<f.length;g++)if(this.pageId==f[g].getAttribute("id")){this.currentPage=g;break}var k=this.graph.getGlobalVariable,d=this;this.graph.getGlobalVariable=function(b){var c=f[d.currentPage];return"page"==b?c.getAttribute("name")||"Page-"+(d.currentPage+1):"pagenumber"==b?d.currentPage+1:"pagecount"==b?f.length:k.apply(this,arguments)}}}this.diagrams=[];var m=null;this.selectPage=function(b){this.handlingResize||(this.currentPage=mxUtils.mod(b,this.diagrams.length),this.updateGraphXml(Editor.parseDiagramNode(this.diagrams[this.currentPage])))};
-this.selectPageById=function(b){b=this.getIndexById(b);var c=0<=b;c&&this.selectPage(b);return c};var g=mxUtils.bind(this,function(){if(null==this.xmlNode||"mxfile"!=this.xmlNode.nodeName)this.diagrams=[];this.xmlNode!=m&&(this.diagrams=this.xmlNode.getElementsByTagName("diagram"),m=this.xmlNode)}),n=this.graph.setBackgroundImage;this.graph.setBackgroundImage=function(b){if(null!=b&&Graph.isPageLink(b.src)){var c=b.src,e=c.indexOf(",");0<e&&(e=d.getIndexById(c.substring(e+1)),0<=e&&(b=d.getImageForGraphModel(Editor.parseDiagramNode(d.diagrams[e])),
-b.originalSrc=c))}n.apply(this,arguments)};var p=this.graph.getGraphBounds;this.graph.getGraphBounds=function(b){var c=p.apply(this,arguments);b=this.backgroundImage;if(null!=b){var d=this.view.translate,e=this.view.scale,c=mxRectangle.fromRectangle(c);c.add(new mxRectangle((d.x+b.x)*e,(d.y+b.y)*e,b.width*e,b.height*e))}return c};this.addListener("xmlNodeChanged",g);g();urlParams.page=d.currentPage;g=null;this.graph.getModel().beginUpdate();try{urlParams.nav=0!=this.graphConfig.nav?"1":"0",this.editor.setGraphXml(this.xmlNode),
-this.graph.view.scale=this.graphConfig.zoom||1,g=this.setLayersVisible(),this.responsive||(this.graph.border=null!=this.graphConfig.border?this.graphConfig.border:8)}finally{this.graph.getModel().endUpdate()}this.responsive||(this.graph.panningHandler.isForcePanningEvent=function(b){return!mxEvent.isPopupTrigger(b.getEvent())&&"auto"==this.graph.container.style.overflow},this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.panningHandler.ignoreCell=!0,this.graph.panningHandler.usePopupTrigger=
+(this.editor.defaultGraphOverflow="visible");this.xmlNode=this.editor.extractGraphModel(this.xmlNode,!0);this.xmlNode!=c&&(this.xml=mxUtils.getXml(this.xmlNode),this.xmlDocument=this.xmlNode.ownerDocument);var d=this;this.graph.getImageFromBundles=function(b){return d.getImageUrl(b)};mxClient.IS_SVG&&this.graph.addSvgShadow(this.graph.view.canvas.ownerSVGElement,null,!0);if("mxfile"==this.xmlNode.nodeName){var f=this.xmlNode.getElementsByTagName("diagram");if(0<f.length){if(null!=this.pageId)for(var k=
+0;k<f.length;k++)if(this.pageId==f[k].getAttribute("id")){this.currentPage=k;break}var p=this.graph.getGlobalVariable,d=this;this.graph.getGlobalVariable=function(b){var c=f[d.currentPage];return"page"==b?c.getAttribute("name")||"Page-"+(d.currentPage+1):"pagenumber"==b?d.currentPage+1:"pagecount"==b?f.length:p.apply(this,arguments)}}}this.diagrams=[];var m=null;this.selectPage=function(b){this.handlingResize||(this.currentPage=mxUtils.mod(b,this.diagrams.length),this.updateGraphXml(Editor.parseDiagramNode(this.diagrams[this.currentPage])))};
+this.selectPageById=function(b){b=this.getIndexById(b);var c=0<=b;c&&this.selectPage(b);return c};var k=mxUtils.bind(this,function(){if(null==this.xmlNode||"mxfile"!=this.xmlNode.nodeName)this.diagrams=[];this.xmlNode!=m&&(this.diagrams=this.xmlNode.getElementsByTagName("diagram"),m=this.xmlNode)}),n=this.graph.setBackgroundImage;this.graph.setBackgroundImage=function(b){if(null!=b&&Graph.isPageLink(b.src)){var c=b.src,e=c.indexOf(",");0<e&&(e=d.getIndexById(c.substring(e+1)),0<=e&&(b=d.getImageForGraphModel(Editor.parseDiagramNode(d.diagrams[e])),
+b.originalSrc=c))}n.apply(this,arguments)};var u=this.graph.getGraphBounds;this.graph.getGraphBounds=function(b){var c=u.apply(this,arguments);b=this.backgroundImage;if(null!=b){var d=this.view.translate,e=this.view.scale,c=mxRectangle.fromRectangle(c);c.add(new mxRectangle((d.x+b.x)*e,(d.y+b.y)*e,b.width*e,b.height*e))}return c};this.addListener("xmlNodeChanged",k);k();urlParams.page=d.currentPage;k=null;this.graph.getModel().beginUpdate();try{urlParams.nav=0!=this.graphConfig.nav?"1":"0",this.editor.setGraphXml(this.xmlNode),
+this.graph.view.scale=this.graphConfig.zoom||1,k=this.setLayersVisible(),this.responsive||(this.graph.border=null!=this.graphConfig.border?this.graphConfig.border:8)}finally{this.graph.getModel().endUpdate()}this.responsive||(this.graph.panningHandler.isForcePanningEvent=function(b){return!mxEvent.isPopupTrigger(b.getEvent())&&"auto"==this.graph.container.style.overflow},this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.panningHandler.ignoreCell=!0,this.graph.panningHandler.usePopupTrigger=
!1,this.graph.panningHandler.pinchEnabled=!1);this.graph.setPanning(!1);null!=this.graphConfig.toolbar?this.addToolbar():null!=this.graphConfig.title&&this.showTitleAsTooltip&&b.setAttribute("title",this.graphConfig.title);this.responsive||this.addSizeHandler();!this.showLayers(this.graph)||this.forceCenter||this.layersEnabled&&!this.autoCrop||this.crop();this.addClickHandler(this.graph);this.graph.setTooltips(0!=this.graphConfig.tooltips);this.graph.initialViewState={translate:this.graph.view.translate.clone(),
-scale:this.graph.view.scale};null!=g&&this.setLayersVisible(g);this.graph.customLinkClicked=function(b){if(Graph.isPageLink(b)){var c=b.indexOf(",");d.selectPageById(b.substring(c+1))||alert(mxResources.get("pageNotFound")||"Page not found")}else this.handleCustomLink(b);return!0};var v=this.graph.foldTreeCell;this.graph.foldTreeCell=mxUtils.bind(this,function(){this.treeCellFolded=!0;return v.apply(this.graph,arguments)});this.fireEvent(new mxEventObject("render"))});e=window.MutationObserver||window.WebKitMutationObserver||
-window.MozMutationObserver;if(this.checkVisibleState&&0==b.offsetWidth&&"undefined"!==typeof e){var g=this.getObservableParent(b),p=new e(mxUtils.bind(this,function(c){0<b.offsetWidth&&(p.disconnect(),k())}));p.observe(g,{attributes:!0})}else k()}};GraphViewer.prototype.getObservableParent=function(b){for(b=b.parentNode;b!=document.body&&null!=b.parentNode&&"none"!==mxUtils.getCurrentStyle(b).display;)b=b.parentNode;return b};
+scale:this.graph.view.scale};null!=k&&this.setLayersVisible(k);this.graph.customLinkClicked=function(b){if(Graph.isPageLink(b)){var c=b.indexOf(",");d.selectPageById(b.substring(c+1))||alert(mxResources.get("pageNotFound")||"Page not found")}else this.handleCustomLink(b);return!0};var v=this.graph.foldTreeCell;this.graph.foldTreeCell=mxUtils.bind(this,function(){this.treeCellFolded=!0;return v.apply(this.graph,arguments)});this.fireEvent(new mxEventObject("render"))});e=window.MutationObserver||window.WebKitMutationObserver||
+window.MozMutationObserver;if(this.checkVisibleState&&0==b.offsetWidth&&"undefined"!==typeof e){var f=this.getObservableParent(b),p=new e(mxUtils.bind(this,function(c){0<b.offsetWidth&&(p.disconnect(),k())}));p.observe(f,{attributes:!0})}else k()}};GraphViewer.prototype.getObservableParent=function(b){for(b=b.parentNode;b!=document.body&&null!=b.parentNode&&"none"!==mxUtils.getCurrentStyle(b).display;)b=b.parentNode;return b};
GraphViewer.prototype.getImageUrl=function(b){null!=b&&"http://"!=b.substring(0,7)&&"https://"!=b.substring(0,8)&&"data:image"!=b.substring(0,10)&&("/"==b.charAt(0)&&(b=b.substring(1,b.length)),b=this.imageBaseUrl+b);return b};
GraphViewer.prototype.getImageForGraphModel=function(b){var c=Graph.createOffscreenGraph(this.graph.getStylesheet());c.getGlobalVariable=this.graph.getGlobalVariable;document.body.appendChild(c.container);b=(new mxCodec(b.ownerDocument)).decode(b).root;c.model.setRoot(b);b=c.getSvg();var e=c.getGraphBounds();document.body.removeChild(c.container);return new mxImage(Editor.createSvgDataUri(mxUtils.getXml(b)),e.width,e.height,e.x,e.y)};
GraphViewer.prototype.getIndexById=function(b){if(null!=this.diagrams)for(var c=0;c<this.diagrams.length;c++)if(this.diagrams[c].getAttribute("id")==b)return c;return-1};GraphViewer.prototype.setXmlNode=function(b){b=this.editor.extractGraphModel(b,!0);this.xmlDocument=b.ownerDocument;this.xml=mxUtils.getXml(b);this.xmlNode=b;this.updateGraphXml(b);this.fireEvent(new mxEventObject("xmlNodeChanged"))};
GraphViewer.prototype.setFileNode=function(b){null==this.xmlNode&&(this.xmlDocument=b.ownerDocument,this.xml=mxUtils.getXml(b),this.xmlNode=b);this.setGraphXml(b)};GraphViewer.prototype.updateGraphXml=function(b){this.setGraphXml(b);this.fireEvent(new mxEventObject("graphChanged"))};
-GraphViewer.prototype.setLayersVisible=function(b){var c=!0;if(!this.autoOrigin){var e=[],k=this.graph.getModel();k.beginUpdate();try{for(var g=0;g<k.getChildCount(k.root);g++){var p=k.getChildAt(k.root,g),c=c&&k.isVisible(p);e.push(k.isVisible(p));k.setVisible(p,null!=b?b[g]:!0)}}finally{k.endUpdate()}}return c?null:e};
+GraphViewer.prototype.setLayersVisible=function(b){var c=!0;if(!this.autoOrigin){var e=[],k=this.graph.getModel();k.beginUpdate();try{for(var f=0;f<k.getChildCount(k.root);f++){var p=k.getChildAt(k.root,f),c=c&&k.isVisible(p);e.push(k.isVisible(p));k.setVisible(p,null!=b?b[f]:!0)}}finally{k.endUpdate()}}return c?null:e};
GraphViewer.prototype.setGraphXml=function(b){if(null!=this.graph){this.graph.view.translate=new mxPoint;this.graph.view.scale=1;var c=null;this.graph.getModel().beginUpdate();try{this.graph.getModel().clear(),this.editor.setGraphXml(b),c=this.setLayersVisible(!0)}finally{this.graph.getModel().endUpdate()}this.responsive||(this.widthIsEmpty?(this.graph.container.style.width="",this.graph.container.style.height=""):this.graph.container.style.width=this.initialWidth,this.positionGraph());this.graph.initialViewState=
{translate:this.graph.view.translate.clone(),scale:this.graph.view.scale};c&&this.setLayersVisible(c)}};
GraphViewer.prototype.addSizeHandler=function(){var b=this.graph.container,c=this.graph.getGraphBounds(),e=!1;b.style.overflow=1!=this.graphConfig["toolbar-nohide"]?"hidden":"visible";var k=mxUtils.bind(this,function(){if(!e){e=!0;var c=this.graph.getGraphBounds();b.style.overflow=1!=this.graphConfig["toolbar-nohide"]?c.width+2*this.graph.border>b.offsetWidth-2?"auto":"hidden":"visible";if(null!=this.toolbar&&1!=this.graphConfig["toolbar-nohide"]){var c=b.getBoundingClientRect(),f=mxUtils.getScrollOrigin(document.body),
f="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-f.x,top:-f.y},c={left:c.left-f.left,top:c.top-f.top,bottom:c.bottom-f.top,right:c.right-f.left};this.toolbar.style.left=c.left+"px";"bottom"==this.graphConfig["toolbar-position"]?this.toolbar.style.top=c.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(this.toolbar.style.width=Math.max(this.minToolbarWidth,b.offsetWidth)+"px",this.toolbar.style.top=c.top+1+"px"):this.toolbar.style.top=c.top+"px"}else null!=
-this.toolbar&&(this.toolbar.style.width=Math.max(this.minToolbarWidth,b.offsetWidth)+"px");this.treeCellFolded&&(this.treeCellFolded=!1,this.positionGraph(this.graph.view.translate),this.graph.initialViewState.translate=this.graph.view.translate.clone());e=!1}}),g=null;this.handlingResize=!1;this.fitGraph=mxUtils.bind(this,function(c){var d=b.offsetWidth;d==g||this.handlingResize||(this.handlingResize=!0,"auto"==b.style.overflow&&(b.style.overflow="hidden"),this.graph.maxFitScale=null!=c?c:this.graphConfig.zoom||
-(this.allowZoomIn?null:1),this.graph.fit(null,null,null,null,null,!0),(this.center||0==this.graphConfig.resize&&""!=b.style.height)&&this.graph.center(),this.graph.maxFitScale=null,0==this.graphConfig.resize&&""!=b.style.height||this.updateContainerHeight(b,Math.max(this.minHeight,this.graph.getGraphBounds().height+2*this.graph.border+1)),this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale},g=d,window.setTimeout(mxUtils.bind(this,function(){this.handlingResize=
+this.toolbar&&(this.toolbar.style.width=Math.max(this.minToolbarWidth,b.offsetWidth)+"px");this.treeCellFolded&&(this.treeCellFolded=!1,this.positionGraph(this.graph.view.translate),this.graph.initialViewState.translate=this.graph.view.translate.clone());e=!1}}),f=null;this.handlingResize=!1;this.fitGraph=mxUtils.bind(this,function(c){var d=b.offsetWidth;d==f||this.handlingResize||(this.handlingResize=!0,"auto"==b.style.overflow&&(b.style.overflow="hidden"),this.graph.maxFitScale=null!=c?c:this.graphConfig.zoom||
+(this.allowZoomIn?null:1),this.graph.fit(null,null,null,null,null,!0),(this.center||0==this.graphConfig.resize&&""!=b.style.height)&&this.graph.center(),this.graph.maxFitScale=null,0==this.graphConfig.resize&&""!=b.style.height||this.updateContainerHeight(b,Math.max(this.minHeight,this.graph.getGraphBounds().height+2*this.graph.border+1)),this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale},f=d,window.setTimeout(mxUtils.bind(this,function(){this.handlingResize=
!1}),0))});GraphViewer.useResizeSensor&&(9>=document.documentMode?(mxEvent.addListener(window,"resize",k),this.graph.addListener("size",k)):new ResizeSensor(this.graph.container,k));if(this.graphConfig.resize||(this.zoomEnabled||!this.autoFit)&&0!=this.graphConfig.resize)this.graph.minimumContainerSize=new mxRectangle(0,0,this.minWidth,this.minHeight),this.graph.resizeContainer=!0;else if(!this.widthIsEmpty||""!=b.style.height&&this.autoFit||this.updateContainerWidth(b,c.width+2*this.graph.border),
-0==this.graphConfig.resize&&""!=b.style.height||this.updateContainerHeight(b,Math.max(this.minHeight,c.height+2*this.graph.border+1)),!this.zoomEnabled&&this.autoFit){var p=g=null,k=mxUtils.bind(this,function(){window.clearTimeout(p);this.handlingResize||(p=window.setTimeout(mxUtils.bind(this,this.fitGraph),100))});GraphViewer.useResizeSensor&&(9>=document.documentMode?mxEvent.addListener(window,"resize",k):new ResizeSensor(this.graph.container,k))}else 9>=document.documentMode||this.graph.addListener("size",
+0==this.graphConfig.resize&&""!=b.style.height||this.updateContainerHeight(b,Math.max(this.minHeight,c.height+2*this.graph.border+1)),!this.zoomEnabled&&this.autoFit){var p=f=null,k=mxUtils.bind(this,function(){window.clearTimeout(p);this.handlingResize||(p=window.setTimeout(mxUtils.bind(this,this.fitGraph),100))});GraphViewer.useResizeSensor&&(9>=document.documentMode?mxEvent.addListener(window,"resize",k):new ResizeSensor(this.graph.container,k))}else 9>=document.documentMode||this.graph.addListener("size",
k);var t=mxUtils.bind(this,function(d){var e=b.style.minWidth;this.widthIsEmpty&&(b.style.minWidth="100%");var k=null!=this.graphConfig["max-height"]?this.graphConfig["max-height"]:""!=b.style.height&&this.autoFit?b.offsetHeight:void 0;0<b.offsetWidth&&null==d&&this.allowZoomOut&&(this.allowZoomIn||c.width+2*this.graph.border>b.offsetWidth||c.height+2*this.graph.border>k)?(d=null,null!=k&&c.height+2*this.graph.border>k-2&&(d=(k-2*this.graph.border-2)/c.height),this.fitGraph(d)):this.widthIsEmpty||
-null!=d||0!=this.graphConfig.resize||""==b.style.height?(d=null!=d?d:new mxPoint,this.graph.view.setTranslate(Math.floor(this.graph.border-c.x/this.graph.view.scale)+d.x,Math.floor(this.graph.border-c.y/this.graph.view.scale)+d.y),g=b.offsetWidth):this.graph.center((!this.widthIsEmpty||c.width<this.minWidth)&&1!=this.graphConfig.resize);b.style.minWidth=e});8==document.documentMode?window.setTimeout(t,0):t();this.positionGraph=function(b){c=this.graph.getGraphBounds();g=null;t(b)}};
+null!=d||0!=this.graphConfig.resize||""==b.style.height?(d=null!=d?d:new mxPoint,this.graph.view.setTranslate(Math.floor(this.graph.border-c.x/this.graph.view.scale)+d.x,Math.floor(this.graph.border-c.y/this.graph.view.scale)+d.y),f=b.offsetWidth):this.graph.center((!this.widthIsEmpty||c.width<this.minWidth)&&1!=this.graphConfig.resize);b.style.minWidth=e});8==document.documentMode?window.setTimeout(t,0):t();this.positionGraph=function(b){c=this.graph.getGraphBounds();f=null;t(b)}};
GraphViewer.prototype.crop=function(){var b=this.graph,c=b.getGraphBounds(),e=b.border,k=b.view.scale;b.view.setTranslate(null!=c.x?Math.floor(b.view.translate.x-c.x/k+e):e,null!=c.y?Math.floor(b.view.translate.y-c.y/k+e):e)};GraphViewer.prototype.updateContainerWidth=function(b,c){b.style.width=c+"px"};GraphViewer.prototype.updateContainerHeight=function(b,c){if(this.forceCenter||this.zoomEnabled||!this.autoFit||"BackCompat"==document.compatMode||8==document.documentMode)b.style.height=c+"px"};
-GraphViewer.prototype.showLayers=function(b,c){var e=this.graphConfig.layers,e=null!=e&&0<e.length?e.split(" "):[],k=this.graphConfig.layerIds,g=null!=k&&0<k.length,p=!1;if(0<e.length||g||null!=c){var t=null!=c?c.getModel():null,p=b.getModel();p.beginUpdate();try{var d=p.getChildCount(p.root);if(null==t){var t=!1,f={};if(g)for(var l=0;l<k.length;l++){var q=p.getCell(k[l]);null!=q&&(t=!0,f[q.id]=!0)}else for(l=0;l<e.length;l++)q=p.getChildAt(p.root,parseInt(e[l])),null!=q&&(t=!0,f[q.id]=!0);for(l=
-0;t&&l<d;l++)q=p.getChildAt(p.root,l),p.setVisible(q,f[q.id]||!1)}else for(l=0;l<d;l++)p.setVisible(p.getChildAt(p.root,l),t.isVisible(t.getChildAt(t.root,l)))}finally{p.endUpdate()}p=!0}return p};
+GraphViewer.prototype.showLayers=function(b,c){var e=this.graphConfig.layers,e=null!=e&&0<e.length?e.split(" "):[],k=this.graphConfig.layerIds,f=null!=k&&0<k.length,p=!1;if(0<e.length||f||null!=c){var t=null!=c?c.getModel():null,p=b.getModel();p.beginUpdate();try{var d=p.getChildCount(p.root);if(null==t){var t=!1,g={};if(f)for(var l=0;l<k.length;l++){var q=p.getCell(k[l]);null!=q&&(t=!0,g[q.id]=!0)}else for(l=0;l<e.length;l++)q=p.getChildAt(p.root,parseInt(e[l])),null!=q&&(t=!0,g[q.id]=!0);for(l=
+0;t&&l<d;l++)q=p.getChildAt(p.root,l),p.setVisible(q,g[q.id]||!1)}else for(l=0;l<d;l++)p.setVisible(p.getChildAt(p.root,l),t.isVisible(t.getChildAt(t.root,l)))}finally{p.endUpdate()}p=!0}return p};
GraphViewer.prototype.addToolbar=function(){function b(b,c,d,f){var g=document.createElement("div");g.style.borderRight="1px solid #d0d0d0";g.style.padding="3px 6px 3px 6px";mxEvent.addListener(g,"click",b);null!=d&&g.setAttribute("title",d);g.style.display="inline-block";b=document.createElement("img");b.setAttribute("border","0");b.setAttribute("src",c);b.style.width="18px";null==f||f?(mxEvent.addListener(g,"mouseenter",function(){g.style.backgroundColor="#ddd"}),mxEvent.addListener(g,"mouseleave",
function(){g.style.backgroundColor="#eee"}),mxUtils.setOpacity(b,60),g.style.cursor="pointer"):mxUtils.setOpacity(g,30);g.appendChild(b);e.appendChild(g);q++;return g}var c=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?c.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(c.style.marginTop=this.toolbarHeight+"px");var e=c.ownerDocument.createElement("div");e.style.position="absolute";e.style.overflow="hidden";e.style.boxSizing="border-box";
-e.style.whiteSpace="nowrap";e.style.textAlign="left";e.style.zIndex=this.toolbarZIndex;e.style.backgroundColor="#eee";e.style.height=this.toolbarHeight+"px";this.toolbar=e;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(e.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(e,30);var k=null,g=null,p=mxUtils.bind(this,function(b){null!=k&&(window.clearTimeout(k),fadeThead=null);null!=g&&(window.clearTimeout(g),fadeThead2=null);k=window.setTimeout(mxUtils.bind(this,
-function(){mxUtils.setOpacity(e,0);k=null;g=window.setTimeout(mxUtils.bind(this,function(){e.style.display="none";g=null}),100)}),b||200)}),t=mxUtils.bind(this,function(b){null!=k&&(window.clearTimeout(k),fadeThead=null);null!=g&&(window.clearTimeout(g),fadeThead2=null);e.style.display="";mxUtils.setOpacity(e,b||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||(t(30),p())}));mxEvent.addListener(e,mxClient.IS_POINTER?
-"pointermove":"mousemove",function(b){mxEvent.consume(b)});mxEvent.addListener(e,"mouseenter",mxUtils.bind(this,function(b){t(100)}));mxEvent.addListener(e,"mousemove",mxUtils.bind(this,function(b){t(100);mxEvent.consume(b)}));mxEvent.addListener(e,"mouseleave",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||t(30)}));var d=this.graph,f=d.getTolerance();d.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,c){this.startX=c.getGraphX();this.startY=c.getGraphY();
-this.scrollLeft=d.container.scrollLeft;this.scrollTop=d.container.scrollTop},mouseMove:function(b,c){},mouseUp:function(b,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-d.container.scrollLeft)<f&&Math.abs(this.scrollTop-d.container.scrollTop)<f&&Math.abs(this.startX-c.getGraphX())<f&&Math.abs(this.startY-c.getGraphY())<f&&(0<parseFloat(e.style.opacity||0)?p():t(30))}})}for(var l=this.toolbarItems,q=0,m=null,n=null,u=null,v=null,y=0;y<l.length;y++){var x=l[y];if("pages"==x){v=c.ownerDocument.createElement("div");
+e.style.whiteSpace="nowrap";e.style.textAlign="left";e.style.zIndex=this.toolbarZIndex;e.style.backgroundColor="#eee";e.style.height=this.toolbarHeight+"px";this.toolbar=e;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(e.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(e,30);var k=null,f=null,p=mxUtils.bind(this,function(b){null!=k&&(window.clearTimeout(k),fadeThead=null);null!=f&&(window.clearTimeout(f),fadeThead2=null);k=window.setTimeout(mxUtils.bind(this,
+function(){mxUtils.setOpacity(e,0);k=null;f=window.setTimeout(mxUtils.bind(this,function(){e.style.display="none";f=null}),100)}),b||200)}),t=mxUtils.bind(this,function(b){null!=k&&(window.clearTimeout(k),fadeThead=null);null!=f&&(window.clearTimeout(f),fadeThead2=null);e.style.display="";mxUtils.setOpacity(e,b||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||(t(30),p())}));mxEvent.addListener(e,mxClient.IS_POINTER?
+"pointermove":"mousemove",function(b){mxEvent.consume(b)});mxEvent.addListener(e,"mouseenter",mxUtils.bind(this,function(b){t(100)}));mxEvent.addListener(e,"mousemove",mxUtils.bind(this,function(b){t(100);mxEvent.consume(b)}));mxEvent.addListener(e,"mouseleave",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||t(30)}));var d=this.graph,g=d.getTolerance();d.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,c){this.startX=c.getGraphX();this.startY=c.getGraphY();
+this.scrollLeft=d.container.scrollLeft;this.scrollTop=d.container.scrollTop},mouseMove:function(b,c){},mouseUp:function(b,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-d.container.scrollLeft)<g&&Math.abs(this.scrollTop-d.container.scrollTop)<g&&Math.abs(this.startX-c.getGraphX())<g&&Math.abs(this.startY-c.getGraphY())<g&&(0<parseFloat(e.style.opacity||0)?p():t(30))}})}for(var l=this.toolbarItems,q=0,m=null,n=null,u=null,v=null,y=0;y<l.length;y++){var x=l[y];if("pages"==x){v=c.ownerDocument.createElement("div");
v.style.cssText="display:inline-block;position:relative;top:5px;padding:0 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;;cursor:default;";mxUtils.setOpacity(v,70);var F=b(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");F.style.borderRightStyle="none";F.style.paddingLeft="0px";F.style.paddingRight="0px";e.appendChild(v);var H=b(mxUtils.bind(this,function(){this.selectPage(this.currentPage+
1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");H.style.paddingLeft="0px";H.style.paddingRight="0px";x=mxUtils.bind(this,function(){v.innerHTML="";mxUtils.write(v,this.currentPage+1+" / "+this.diagrams.length);v.style.display=1<this.diagrams.length?"inline-block":"none";F.style.display=v.style.display;H.style.display=v.style.display});this.addListener("graphChanged",x);x()}else if("zoom"==x)this.zoomEnabled&&(b(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage,
mxResources.get("zoomOut")||"Zoom Out"),b(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),b(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==x){if(this.layersEnabled){var z=this.graph.getModel(),D=b(mxUtils.bind(this,function(b){if(null!=m)m.parentNode.removeChild(m),
m=null;else{m=this.graph.createLayersDialog(mxUtils.bind(this,function(){if(this.autoCrop)this.crop();else if(this.autoOrigin){var b=this.graph.getGraphBounds(),c=this.graph.view;0>b.x||0>b.y?(this.crop(),this.graph.originalViewState=this.graph.initialViewState,this.graph.initialViewState={translate:c.translate.clone(),scale:c.scale}):null!=this.graph.originalViewState&&0<b.x/c.scale+this.graph.originalViewState.translate.x-c.translate.x&&0<b.y/c.scale+this.graph.originalViewState.translate.y-c.translate.y&&
(c.setTranslate(this.graph.originalViewState.translate.x,this.graph.originalViewState.translate.y),this.graph.originalViewState=null,this.graph.initialViewState={translate:c.translate.clone(),scale:c.scale})}}));mxEvent.addListener(m,"mouseleave",function(){m.parentNode.removeChild(m);m=null});b=D.getBoundingClientRect();m.style.width="140px";m.style.padding="2px 0px 2px 0px";m.style.border="1px solid #d0d0d0";m.style.backgroundColor="#eee";m.style.fontFamily=Editor.defaultHtmlFont;m.style.fontSize=
-"11px";m.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(m,80);var c=mxUtils.getDocumentScrollOrigin(document);m.style.left=c.x+b.left-1+"px";m.style.top=c.y+b.bottom-2+"px";document.body.appendChild(m)}}),Editor.layersImage,mxResources.get("layers")||"Layers");z.addListener(mxEvent.CHANGE,function(){D.style.display=1<z.getChildCount(z.root)?"inline-block":"none"});D.style.display=1<z.getChildCount(z.root)?"inline-block":"none"}}else if("tags"==x){if(this.tagsEnabled){var L=b(mxUtils.bind(this,
-function(b){null==n&&(n=this.graph.createTagsDialog(mxUtils.bind(this,function(){return!0})),n.div.getElementsByTagName("div")[0].style.position="",n.div.style.maxHeight="160px",n.div.style.maxWidth="120px",n.div.style.padding="2px",n.div.style.overflow="auto",n.div.style.height="auto",n.div.style.position="fixed",n.div.style.fontFamily=Editor.defaultHtmlFont,n.div.style.fontSize="11px",n.div.style.backgroundColor="#eee",n.div.style.color="#000",n.div.style.border="1px solid #d0d0d0",n.div.style.zIndex=
-this.toolbarZIndex+1,mxUtils.setOpacity(n.div,80));if(null!=u)u.parentNode.removeChild(u),u=null;else{u=n.div;mxEvent.addListener(u,"mouseleave",function(){u.parentNode.removeChild(u);u=null});b=L.getBoundingClientRect();var c=mxUtils.getDocumentScrollOrigin(document);u.style.left=c.x+b.left-1+"px";u.style.top=c.y+b.bottom-2+"px";document.body.appendChild(u);n.refresh()}}),Editor.tagsImage,mxResources.get("tags")||"Tags");z.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){L.style.display=0<
-this.graph.getAllTags().length?"inline-block":"none"}));L.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}}else"lightbox"==x?this.lightboxEnabled&&b(mxUtils.bind(this,function(){this.showLightbox()}),Editor.fullscreenImage,mxResources.get("fullscreen")||"Fullscreen"):null!=this.graphConfig["toolbar-buttons"]&&(x=this.graphConfig["toolbar-buttons"][x],null!=x&&(x.elem=b(null==x.enabled||x.enabled?x.handler:function(){},x.image,x.title,x.enabled)))}null!=this.graph.minimumContainerSize&&
-(this.graph.minimumContainerSize.width=34*q);null!=this.graphConfig.title&&(l=c.ownerDocument.createElement("div"),l.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",l.setAttribute("title",this.graphConfig.title),mxUtils.write(l,this.graphConfig.title),mxUtils.setOpacity(l,70),e.appendChild(l),this.filename=l);this.minToolbarWidth=34*q;var E=c.style.border,J=mxUtils.bind(this,function(){e.style.width=
-"inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,c.offsetWidth)+"px";e.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var b=c.getBoundingClientRect(),d=mxUtils.getScrollOrigin(document.body),d="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-d.x,top:-d.y},b={left:b.left-d.left,top:b.top-d.top,bottom:b.bottom-d.top,right:b.right-d.left};e.style.left=b.left+"px";"bottom"==this.graphConfig["toolbar-position"]?
-e.style.top=b.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(e.style.marginTop=-this.toolbarHeight+"px",e.style.top=b.top+1+"px"):e.style.top=b.top+"px";"1px solid transparent"==E&&(c.style.border="1px solid #d0d0d0");document.body.appendChild(e);var f=mxUtils.bind(this,function(){null!=e.parentNode&&e.parentNode.removeChild(e);null!=m&&(m.parentNode.removeChild(m),m=null);c.style.border=E});mxEvent.addListener(document,"mousemove",function(b){for(b=mxEvent.getSource(b);null!=b;){if(b==
-c||b==e||b==m)return;b=b.parentNode}f()});mxEvent.addListener(document.body,"mouseleave",function(b){f()})}else e.style.top=-this.toolbarHeight+"px",c.appendChild(e)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(c,"mouseenter",J):J();this.responsive&&"undefined"!==typeof ResizeObserver&&(new ResizeObserver(function(){null!=e.parentNode&&J()})).observe(c)};
+"11px";m.style.overflowY="auto";m.style.maxHeight=this.graph.container.clientHeight-this.toolbarHeight-10+"px";m.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(m,80);var c=mxUtils.getDocumentScrollOrigin(document);m.style.left=c.x+b.left-1+"px";m.style.top=c.y+b.bottom-2+"px";document.body.appendChild(m)}}),Editor.layersImage,mxResources.get("layers")||"Layers");z.addListener(mxEvent.CHANGE,function(){D.style.display=1<z.getChildCount(z.root)?"inline-block":"none"});D.style.display=1<z.getChildCount(z.root)?
+"inline-block":"none"}}else if("tags"==x){if(this.tagsEnabled){var N=b(mxUtils.bind(this,function(b){null==n&&(n=this.graph.createTagsDialog(mxUtils.bind(this,function(){return!0})),n.div.getElementsByTagName("div")[0].style.position="",n.div.style.maxHeight="160px",n.div.style.maxWidth="120px",n.div.style.padding="2px",n.div.style.overflow="auto",n.div.style.height="auto",n.div.style.position="fixed",n.div.style.fontFamily=Editor.defaultHtmlFont,n.div.style.fontSize="11px",n.div.style.backgroundColor=
+"#eee",n.div.style.color="#000",n.div.style.border="1px solid #d0d0d0",n.div.style.zIndex=this.toolbarZIndex+1,mxUtils.setOpacity(n.div,80));if(null!=u)u.parentNode.removeChild(u),u=null;else{u=n.div;mxEvent.addListener(u,"mouseleave",function(){u.parentNode.removeChild(u);u=null});b=N.getBoundingClientRect();var c=mxUtils.getDocumentScrollOrigin(document);u.style.left=c.x+b.left-1+"px";u.style.top=c.y+b.bottom-2+"px";document.body.appendChild(u);n.refresh()}}),Editor.tagsImage,mxResources.get("tags")||
+"Tags");z.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){N.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}));N.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}}else"lightbox"==x?this.lightboxEnabled&&b(mxUtils.bind(this,function(){this.showLightbox()}),Editor.fullscreenImage,mxResources.get("fullscreen")||"Fullscreen"):null!=this.graphConfig["toolbar-buttons"]&&(x=this.graphConfig["toolbar-buttons"][x],null!=x&&(x.elem=b(null==x.enabled||x.enabled?
+x.handler:function(){},x.image,x.title,x.enabled)))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*q);null!=this.graphConfig.title&&(l=c.ownerDocument.createElement("div"),l.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",l.setAttribute("title",this.graphConfig.title),mxUtils.write(l,this.graphConfig.title),mxUtils.setOpacity(l,70),e.appendChild(l),this.filename=
+l);this.minToolbarWidth=34*q;var E=c.style.border,J=mxUtils.bind(this,function(){e.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,c.offsetWidth)+"px";e.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var b=c.getBoundingClientRect(),d=mxUtils.getScrollOrigin(document.body),d="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-d.x,top:-d.y},b={left:b.left-d.left,top:b.top-d.top,bottom:b.bottom-
+d.top,right:b.right-d.left};e.style.left=b.left+"px";"bottom"==this.graphConfig["toolbar-position"]?e.style.top=b.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(e.style.marginTop=-this.toolbarHeight+"px",e.style.top=b.top+1+"px"):e.style.top=b.top+"px";"1px solid transparent"==E&&(c.style.border="1px solid #d0d0d0");document.body.appendChild(e);var f=mxUtils.bind(this,function(){null!=e.parentNode&&e.parentNode.removeChild(e);null!=m&&(m.parentNode.removeChild(m),m=null);c.style.border=
+E});mxEvent.addListener(document,"mousemove",function(b){for(b=mxEvent.getSource(b);null!=b;){if(b==c||b==e||b==m)return;b=b.parentNode}f()});mxEvent.addListener(document.body,"mouseleave",function(b){f()})}else e.style.top=-this.toolbarHeight+"px",c.appendChild(e)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(c,"mouseenter",J):J();this.responsive&&"undefined"!==typeof ResizeObserver&&(new ResizeObserver(function(){null!=e.parentNode&&J()})).observe(c)};
GraphViewer.prototype.disableButton=function(b){var c=this.graphConfig["toolbar-buttons"][b];null!=c&&(mxUtils.setOpacity(c.elem,30),mxEvent.removeListener(c.elem,"click",c.handler),mxEvent.addListener(c.elem,"mouseenter",function(){c.elem.style.backgroundColor="#eee"}))};
-GraphViewer.prototype.addClickHandler=function(b,c){b.linkPolicy=this.graphConfig.target||b.linkPolicy;b.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(e,k){if(null==k)for(var g=mxEvent.getSource(e);g!=b.container&&null!=g&&null==k;)"a"==g.nodeName.toLowerCase()&&(k=g.getAttribute("href")),g=g.parentNode;null!=c?null==k||b.isCustomLink(k)?mxEvent.consume(e):b.isExternalProtocol(k)||b.isBlankLink(k)||window.setTimeout(function(){c.destroy()},0):null!=k&&null==c&&b.isCustomLink(k)&&
+GraphViewer.prototype.addClickHandler=function(b,c){b.linkPolicy=this.graphConfig.target||b.linkPolicy;b.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(e,k){if(null==k)for(var f=mxEvent.getSource(e);f!=b.container&&null!=f&&null==k;)"a"==f.nodeName.toLowerCase()&&(k=f.getAttribute("href")),f=f.parentNode;null!=c?null==k||b.isCustomLink(k)?mxEvent.consume(e):b.isExternalProtocol(k)||b.isBlankLink(k)||window.setTimeout(function(){c.destroy()},0):null!=k&&null==c&&b.isCustomLink(k)&&
(mxEvent.isTouchEvent(e)||!mxEvent.isPopupTrigger(e))&&b.customLinkClicked(k)&&(mxUtils.clearSelection(),mxEvent.consume(e))}),mxUtils.bind(this,function(b){null!=c||!this.lightboxClickEnabled||mxEvent.isTouchEvent(b)&&0!=this.toolbarItems.length||this.showLightbox()}))};
GraphViewer.prototype.showLightbox=function(b,c,e){if("open"==this.graphConfig.lightbox||window.self!==window.top)if(null==this.lightboxWindow||this.lightboxWindow.closed){b=null!=b?b:null!=this.graphConfig.editable?this.graphConfig.editable:!0;e={client:1,target:null!=e?e:"blank"};b&&(e.edit=this.graphConfig.edit||"_blank");if(null!=c?c:1)e.close=1;this.layersEnabled&&(e.layers=1);this.tagsEnabled&&(e.tags={});null!=this.graphConfig&&0!=this.graphConfig.nav&&(e.nav=1);null!=this.graphConfig&&null!=
this.graphConfig.highlight&&(e.highlight=this.graphConfig.highlight.substring(1));null!=this.currentPage&&0<this.currentPage&&(e.page=this.currentPage);"undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)?null==this.lightboxWindow&&mxEvent.addListener(window,"message",mxUtils.bind(this,function(b){"ready"==b.data&&b.source==this.lightboxWindow&&this.lightboxWindow.postMessage(this.xml,"*")})):e.data=encodeURIComponent(this.xml);"1"==urlParams.dev&&(e.dev=
@@ -4083,20 +4092,20 @@ this.graphConfig.highlight&&(e.highlight=this.graphConfig.highlight.substring(1)
GraphViewer.prototype.showLocalLightbox=function(){mxUtils.getDocumentScrollOrigin(document);var b=document.createElement("div");b.style.cssText="position:fixed;top:0;left:0;bottom:0;right:0;";b.style.zIndex=this.lightboxZIndex;b.style.backgroundColor="#000000";mxUtils.setOpacity(b,70);document.body.appendChild(b);var c=document.createElement("img");c.setAttribute("border","0");c.setAttribute("src",Editor.closeBlackImage);c.style.cssText="position:fixed;top:32px;right:32px;";c.style.cursor="pointer";
mxEvent.addListener(c,"click",function(){k.destroy()});urlParams.pages="1";urlParams.page=this.currentPage;urlParams["page-id"]=this.graphConfig.pageId;urlParams["layer-ids"]=null!=this.graphConfig.layerIds&&0<this.graphConfig.layerIds.length?this.graphConfig.layerIds.join(" "):null;urlParams.nav=0!=this.graphConfig.nav?"1":"0";urlParams.layers=this.layersEnabled?"1":"0";this.tagsEnabled&&(urlParams.tags="{}");if(null==document.documentMode||10<=document.documentMode)Editor.prototype.editButtonLink=
this.graphConfig.edit,Editor.prototype.editButtonFunc=this.graphConfig.editFunc;EditorUi.prototype.updateActionStates=function(){};EditorUi.prototype.addBeforeUnloadListener=function(){};EditorUi.prototype.addChromelessClickHandler=function(){};var e=Graph.prototype.shadowId;Graph.prototype.shadowId="lightboxDropShadow";var k=new EditorUi(new Editor(!0),document.createElement("div"),!0);k.editor.editBlankUrl=this.editBlankUrl;k.editor.graph.shadowId="lightboxDropShadow";Graph.prototype.shadowId=e;
-k.refresh=function(){};var g=mxUtils.bind(this,function(b){27==b.keyCode&&k.destroy()}),p=k.destroy;k.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",g);document.body.removeChild(b);document.body.removeChild(c);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled=!0;p.apply(this,arguments)};var t=k.editor.graph,d=t.container;d.style.overflow="hidden";this.lightboxChrome?(d.style.border="1px solid #c0c0c0",d.style.margin="40px",mxEvent.addListener(document.documentElement,
-"keydown",g)):(b.style.display="none",c.style.display="none");var f=this;t.getImageFromBundles=function(b){return f.getImageUrl(b)};var l=k.createTemporaryGraph;k.createTemporaryGraph=function(){var b=l.apply(this,arguments);b.getImageFromBundles=function(b){return f.getImageUrl(b)};return b};this.graphConfig.move&&(t.isMoveCellsEvent=function(b){return!0});mxUtils.setPrefixedStyle(d.style,"border-radius","4px");d.style.position="fixed";GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow=
+k.refresh=function(){};var f=mxUtils.bind(this,function(b){27==b.keyCode&&k.destroy()}),p=k.destroy;k.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",f);document.body.removeChild(b);document.body.removeChild(c);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled=!0;p.apply(this,arguments)};var t=k.editor.graph,d=t.container;d.style.overflow="hidden";this.lightboxChrome?(d.style.border="1px solid #c0c0c0",d.style.margin="40px",mxEvent.addListener(document.documentElement,
+"keydown",f)):(b.style.display="none",c.style.display="none");var g=this;t.getImageFromBundles=function(b){return g.getImageUrl(b)};var l=k.createTemporaryGraph;k.createTemporaryGraph=function(){var b=l.apply(this,arguments);b.getImageFromBundles=function(b){return g.getImageUrl(b)};return b};this.graphConfig.move&&(t.isMoveCellsEvent=function(b){return!0});mxUtils.setPrefixedStyle(d.style,"border-radius","4px");d.style.position="fixed";GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow=
"hidden";mxClient.IS_SF||mxClient.IS_EDGE||(mxUtils.setPrefixedStyle(d.style,"transform","rotateY(90deg)"),mxUtils.setPrefixedStyle(d.style,"transition","all .25s ease-in-out"));this.addClickHandler(t,k);window.setTimeout(mxUtils.bind(this,function(){d.style.outline="none";d.style.zIndex=this.lightboxZIndex;c.style.zIndex=this.lightboxZIndex;document.body.appendChild(d);document.body.appendChild(c);k.setFileData(this.xml);mxUtils.setPrefixedStyle(d.style,"transform","rotateY(0deg)");k.chromelessToolbar.style.bottom=
"60px";k.chromelessToolbar.style.zIndex=this.lightboxZIndex;document.body.appendChild(k.chromelessToolbar);k.getEditBlankXml=mxUtils.bind(this,function(){return this.xml});k.lightboxFit();k.chromelessResize();this.showLayers(t,this.graph);mxEvent.addListener(b,"click",function(){k.destroy()})}),0);return k};
GraphViewer.prototype.updateTitle=function(b){b=b||"";this.showTitleAsTooltip&&null!=this.graph&&null!=this.graph.container&&this.graph.container.setAttribute("title",b);null!=this.filename&&(this.filename.innerHTML="",mxUtils.write(this.filename,b),this.filename.setAttribute("title",b))};
GraphViewer.processElements=function(b){mxUtils.forEach(GraphViewer.getElementsByClassName(b||"mxgraph"),function(b){try{b.innerHTML="",GraphViewer.createViewerForElement(b)}catch(e){b.innerHTML=e.message,null!=window.console&&console.error(e)}})};
-GraphViewer.getElementsByClassName=function(b){if(document.getElementsByClassName){var c=document.getElementsByClassName(b);b=[];for(var e=0;e<c.length;e++)b.push(c[e]);return b}for(var k=document.getElementsByTagName("*"),c=[],e=0;e<k.length;e++){var g=k[e].className;null!=g&&0<g.length&&(g=g.split(" "),0<=mxUtils.indexOf(g,b)&&c.push(k[e]))}return c};
-GraphViewer.createViewerForElement=function(b,c){var e=b.getAttribute("data-mxgraph");if(null!=e){var k=JSON.parse(e),g=function(e){e=mxUtils.parseXml(e);e=new GraphViewer(b,e.documentElement,k);null!=c&&c(e)};null!=k.url?GraphViewer.getUrl(k.url,function(b){g(b)}):g(k.xml)}};
+GraphViewer.getElementsByClassName=function(b){if(document.getElementsByClassName){var c=document.getElementsByClassName(b);b=[];for(var e=0;e<c.length;e++)b.push(c[e]);return b}for(var k=document.getElementsByTagName("*"),c=[],e=0;e<k.length;e++){var f=k[e].className;null!=f&&0<f.length&&(f=f.split(" "),0<=mxUtils.indexOf(f,b)&&c.push(k[e]))}return c};
+GraphViewer.createViewerForElement=function(b,c){var e=b.getAttribute("data-mxgraph");if(null!=e){var k=JSON.parse(e),f=function(e){e=mxUtils.parseXml(e);e=new GraphViewer(b,e.documentElement,k);null!=c&&c(e)};null!=k.url?GraphViewer.getUrl(k.url,function(b){f(b)}):f(k.xml)}};
GraphViewer.initCss=function(){try{var b=document.createElement("style");b.type="text/css";b.innerHTML="div.mxTooltip {\n-webkit-box-shadow: 3px 3px 12px #C0C0C0;\n-moz-box-shadow: 3px 3px 12px #C0C0C0;\nbox-shadow: 3px 3px 12px #C0C0C0;\nbackground: #FFFFCC;\nborder-style: solid;\nborder-width: 1px;\nborder-color: black;\nfont-family: Arial;\nfont-size: 8pt;\nposition: absolute;\ncursor: default;\npadding: 4px;\ncolor: black;}\ntd.mxPopupMenuIcon div {\nwidth:16px;\nheight:16px;}\nhtml div.mxPopupMenu {\n-webkit-box-shadow:2px 2px 3px #d5d5d5;\n-moz-box-shadow:2px 2px 3px #d5d5d5;\nbox-shadow:2px 2px 3px #d5d5d5;\n_filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=2, OffY=2, Color='#d0d0d0',Positive='true');\nbackground:white;\nposition:absolute;\nborder:3px solid #e7e7e7;\npadding:3px;}\nhtml table.mxPopupMenu {\nborder-collapse:collapse;\nmargin:0px;}\nhtml td.mxPopupMenuItem {\npadding:7px 30px 7px 30px;\nfont-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;\nfont-size:10pt;}\nhtml td.mxPopupMenuIcon {\nbackground-color:white;\npadding:0px;}\ntd.mxPopupMenuIcon .geIcon {\npadding:2px;\npadding-bottom:4px;\nmargin:2px;\nborder:1px solid transparent;\nopacity:0.5;\n_width:26px;\n_height:26px;}\ntd.mxPopupMenuIcon .geIcon:hover {\nborder:1px solid gray;\nborder-radius:2px;\nopacity:1;}\nhtml tr.mxPopupMenuItemHover {\nbackground-color: #eeeeee;\ncolor: black;}\ntable.mxPopupMenu hr {\ncolor:#cccccc;\nbackground-color:#cccccc;\nborder:none;\nheight:1px;}\ntable.mxPopupMenu tr {\tfont-size:4pt;}\n.geDialog { font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;\nfont-size:10pt;\nborder:none;\nmargin:0px;}\n.geDialog {\tposition:absolute;\tbackground:white;\toverflow:hidden;\tpadding:30px;\tborder:1px solid #acacac;\t-webkit-box-shadow:0px 0px 2px 2px #d5d5d5;\t-moz-box-shadow:0px 0px 2px 2px #d5d5d5;\tbox-shadow:0px 0px 2px 2px #d5d5d5;\t_filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=2, OffY=2, Color='#d5d5d5', Positive='true');\tz-index: 2;}.geDialogClose {\tposition:absolute;\twidth:9px;\theight:9px;\topacity:0.5;\tcursor:pointer;\t_filter:alpha(opacity=50);}.geDialogClose:hover {\topacity:1;}.geDialogTitle {\tbox-sizing:border-box;\twhite-space:nowrap;\tbackground:rgb(229, 229, 229);\tborder-bottom:1px solid rgb(192, 192, 192);\tfont-size:15px;\tfont-weight:bold;\ttext-align:center;\tcolor:rgb(35, 86, 149);}.geDialogFooter {\tbackground:whiteSmoke;\twhite-space:nowrap;\ttext-align:right;\tbox-sizing:border-box;\tborder-top:1px solid #e5e5e5;\tcolor:darkGray;}\n.geBtn {\tbackground-color: #f5f5f5;\tborder-radius: 2px;\tborder: 1px solid #d8d8d8;\tcolor: #333;\tcursor: default;\tfont-size: 11px;\tfont-weight: bold;\theight: 29px;\tline-height: 27px;\tmargin: 0 0 0 8px;\tmin-width: 72px;\toutline: 0;\tpadding: 0 8px;\tcursor: pointer;}.geBtn:hover, .geBtn:focus {\t-webkit-box-shadow: 0px 1px 1px rgba(0,0,0,0.1);\t-moz-box-shadow: 0px 1px 1px rgba(0,0,0,0.1);\tbox-shadow: 0px 1px 1px rgba(0,0,0,0.1);\tborder: 1px solid #c6c6c6;\tbackground-color: #f8f8f8;\tbackground-image: linear-gradient(#f8f8f8 0px,#f1f1f1 100%);\tcolor: #111;}.geBtn:disabled {\topacity: .5;}.gePrimaryBtn {\tbackground-color: #4d90fe;\tbackground-image: linear-gradient(#4d90fe 0px,#4787ed 100%);\tborder: 1px solid #3079ed;\tcolor: #fff;}.gePrimaryBtn:hover, .gePrimaryBtn:focus {\tbackground-color: #357ae8;\tbackground-image: linear-gradient(#4d90fe 0px,#357ae8 100%);\tborder: 1px solid #2f5bb7;\tcolor: #fff;}.gePrimaryBtn:disabled {\topacity: .5;}";document.getElementsByTagName("head")[0].appendChild(b)}catch(c){}};
GraphViewer.cachedUrls={};GraphViewer.getUrl=function(b,c,e){if(null!=GraphViewer.cachedUrls[b])c(GraphViewer.cachedUrls[b]);else{var k=null!=navigator.userAgent&&0<navigator.userAgent.indexOf("MSIE 9")?new XDomainRequest:new XMLHttpRequest;k.open("GET",b);k.onload=function(){c(null!=k.getText?k.getText():k.responseText)};k.onerror=e;k.send()}};GraphViewer.resizeSensorEnabled=!0;GraphViewer.useResizeSensor=!0;
-(function(){var b=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(b){return window.setTimeout(b,20)},c=function(e,k){function g(){this.q=[];this.add=function(b){this.q.push(b)};var b,c;this.call=function(){b=0;for(c=this.q.length;b<c;b++)this.q[b].call()}}function p(b,c){return b.currentStyle?b.currentStyle[c]:window.getComputedStyle?window.getComputedStyle(b,null).getPropertyValue(c):b.style[c]}function t(c,d){if(!c.resizedAttached)c.resizedAttached=
-new g,c.resizedAttached.add(d);else if(c.resizedAttached){c.resizedAttached.add(d);return}c.resizeSensor=document.createElement("div");c.resizeSensor.className="resize-sensor";c.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";c.resizeSensor.innerHTML='<div class="resize-sensor-expand" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s;"></div></div><div class="resize-sensor-shrink" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s; width: 200%; height: 200%"></div></div>';
-c.appendChild(c.resizeSensor);"static"==p(c,"position")&&(c.style.position="relative");var e=c.resizeSensor.childNodes[0],f=e.childNodes[0],k=c.resizeSensor.childNodes[1],l=function(){f.style.width="100000px";f.style.height="100000px";e.scrollLeft=1E5;e.scrollTop=1E5;k.scrollLeft=1E5;k.scrollTop=1E5};l();var m=!1,n=function(){c.resizedAttached&&(m&&(c.resizedAttached.call(),m=!1),b(n))};b(n);var q,t,L,E,J=function(){if((L=c.offsetWidth)!=q||(E=c.offsetHeight)!=t)m=!0,q=L,t=E;l()},C=function(b,c,d){b.attachEvent?
-b.attachEvent("on"+c,d):b.addEventListener(c,d)};C(e,"scroll",J);C(k,"scroll",J)}var d=function(){GraphViewer.resizeSensorEnabled&&k()},f=Object.prototype.toString.call(e),l="[object Array]"===f||"[object NodeList]"===f||"[object HTMLCollection]"===f||"undefined"!==typeof jQuery&&e instanceof jQuery||"undefined"!==typeof Elements&&e instanceof Elements;if(l)for(var f=0,q=e.length;f<q;f++)t(e[f],d);else t(e,d);this.detach=function(){if(l)for(var b=0,d=e.length;b<d;b++)c.detach(e[b]);else c.detach(e)}};
+(function(){var b=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(b){return window.setTimeout(b,20)},c=function(e,k){function f(){this.q=[];this.add=function(b){this.q.push(b)};var b,c;this.call=function(){b=0;for(c=this.q.length;b<c;b++)this.q[b].call()}}function p(b,c){return b.currentStyle?b.currentStyle[c]:window.getComputedStyle?window.getComputedStyle(b,null).getPropertyValue(c):b.style[c]}function t(c,d){if(!c.resizedAttached)c.resizedAttached=
+new f,c.resizedAttached.add(d);else if(c.resizedAttached){c.resizedAttached.add(d);return}c.resizeSensor=document.createElement("div");c.resizeSensor.className="resize-sensor";c.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";c.resizeSensor.innerHTML='<div class="resize-sensor-expand" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s;"></div></div><div class="resize-sensor-shrink" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s; width: 200%; height: 200%"></div></div>';
+c.appendChild(c.resizeSensor);"static"==p(c,"position")&&(c.style.position="relative");var e=c.resizeSensor.childNodes[0],g=e.childNodes[0],k=c.resizeSensor.childNodes[1],l=function(){g.style.width="100000px";g.style.height="100000px";e.scrollLeft=1E5;e.scrollTop=1E5;k.scrollLeft=1E5;k.scrollTop=1E5};l();var m=!1,n=function(){c.resizedAttached&&(m&&(c.resizedAttached.call(),m=!1),b(n))};b(n);var q,t,N,E,J=function(){if((N=c.offsetWidth)!=q||(E=c.offsetHeight)!=t)m=!0,q=N,t=E;l()},C=function(b,c,d){b.attachEvent?
+b.attachEvent("on"+c,d):b.addEventListener(c,d)};C(e,"scroll",J);C(k,"scroll",J)}var d=function(){GraphViewer.resizeSensorEnabled&&k()},g=Object.prototype.toString.call(e),l="[object Array]"===g||"[object NodeList]"===g||"[object HTMLCollection]"===g||"undefined"!==typeof jQuery&&e instanceof jQuery||"undefined"!==typeof Elements&&e instanceof Elements;if(l)for(var g=0,q=e.length;g<q;g++)t(e[g],d);else t(e,d);this.detach=function(){if(l)for(var b=0,d=e.length;b<d;b++)c.detach(e[b]);else c.detach(e)}};
c.detach=function(b){b.resizeSensor&&(b.removeChild(b.resizeSensor),delete b.resizeSensor,delete b.resizedAttached)};window.ResizeSensor=c})();
function mxBpmnShape(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxBpmnShape,mxShape);
mxBpmnShape.prototype.customProperties=[{name:"symbol",dispName:"Event",type:"enum",defVal:"general",enumList:[{val:"general",dispName:"General"},{val:"message",dispName:"Message"},{val:"timer",dispName:"Timer"},{val:"escalation",dispName:"Escalation"},{val:"conditional",dispName:"Conditional"},{val:"link",dispName:"Link"},{val:"error",dispName:"Error"},{val:"cancel",dispName:"Cancel"},{val:"compensation",dispName:"Compensation"},{val:"signal",dispName:"Signal"},{val:"multiple",dispName:"Multiple"},
diff --git a/src/main/webapp/js/viewer.min.js b/src/main/webapp/js/viewer.min.js
index c920dd54..642dda00 100644
--- a/src/main/webapp/js/viewer.min.js
+++ b/src/main/webapp/js/viewer.min.js
@@ -202,7 +202,7 @@ null!=a&&(DRAWIO_GITLAB_ID=a);window.DRAWIO_LOG_URL=window.DRAWIO_LOG_URL||"";a=
if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==urlParams.local||"1"==urlParams.lockdown)urlParams.picker="0",urlParams.gapi="0",urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0";
"se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1");
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";
-window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"15.9.6",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
+window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"16.0.0",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform),IS_WEBVIEW:/((iPhone|iPod|iPad).*AppleWebKit(?!.*Version)|; wv)/i.test(navigator.userAgent),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&
0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!==document.createElementNS("http://www.w3.org/2000/svg","foreignObject").toString()||0<=navigator.userAgent.indexOf("Opera/"),
@@ -242,79 +242,79 @@ return a},remove:function(a,b){var c=null;if("object"==typeof b)for(var d=mxUtil
if(c&&b.childNodes&&0<b.childNodes.length)for(e=0;e<b.childNodes.length;e++)d.appendChild(mxUtils.importNodeImplementation(a,b.childNodes[e],c));return d;case 3:case 4:case 8:return a.createTextNode(null!=b.nodeValue?b.nodeValue:b.value)}},createXmlDocument:function(){var a=null;document.implementation&&document.implementation.createDocument?a=document.implementation.createDocument("","",null):"ActiveXObject"in window&&(a=mxUtils.createMsXmlDocument());return a},createMsXmlDocument:function(){var a=
new ActiveXObject("Microsoft.XMLDOM");a.async=!1;a.validateOnParse=!1;a.resolveExternals=!1;return a},parseXml:function(){return window.DOMParser?function(a){return(new DOMParser).parseFromString(a,"text/xml")}:function(a){var b=mxUtils.createMsXmlDocument();b.loadXML(a);return b}}(),clearSelection:function(){return document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&
window.getSelection().removeAllRanges()}:function(){}}(),removeWhitespace:function(a,b){for(var c=b?a.previousSibling:a.nextSibling;null!=c&&c.nodeType==mxConstants.NODETYPE_TEXT;){var d=b?c.previousSibling:c.nextSibling,e=mxUtils.getTextContent(c);0==mxUtils.trim(e).length&&c.parentNode.removeChild(c);c=d}},htmlEntities:function(a,b){a=String(a||"");a=a.replace(/&/g,"&amp;");a=a.replace(/"/g,"&quot;");a=a.replace(/\'/g,"&#39;");a=a.replace(/</g,"&lt;");a=a.replace(/>/g,"&gt;");if(null==b||b)a=a.replace(/\n/g,
-"&#xa;");return a},getXml:function(a,b){var c="";mxClient.IS_IE||mxClient.IS_IE11?c=mxUtils.getPrettyXml(a,"","",""):null!=window.XMLSerializer?c=(new XMLSerializer).serializeToString(a):null!=a.xml&&(c=a.xml.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n"));return c.replace(/\n/g,b||"&#xa;")},getPrettyXml:function(a,b,c,d,e){var f=[];if(null!=a)if(b=null!=b?b:" ",c=null!=c?c:"",d=null!=d?d:"\n",null!=a.namespaceURI&&a.namespaceURI!=e&&(e=a.namespaceURI,null==a.getAttribute("xmlns")&&
-a.setAttribute("xmlns",a.namespaceURI)),a.nodeType==mxConstants.NODETYPE_DOCUMENT)f.push(mxUtils.getPrettyXml(a.documentElement,b,c,d,e));else if(a.nodeType==mxConstants.NODETYPE_DOCUMENT_FRAGMENT){var g=a.firstChild;if(null!=g)for(;null!=g;)f.push(mxUtils.getPrettyXml(g,b,c,d,e)),g=g.nextSibling}else if(a.nodeType==mxConstants.NODETYPE_COMMENT)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+"\x3c!--"+a+"--\x3e"+d);else if(a.nodeType==mxConstants.NODETYPE_TEXT)a=mxUtils.trim(mxUtils.getTextContent(a)),
-0<a.length&&f.push(c+mxUtils.htmlEntities(a,!1)+d);else if(a.nodeType==mxConstants.NODETYPE_CDATA)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+"<![CDATA["+a+"]]"+d);else{f.push(c+"<"+a.nodeName);g=a.attributes;if(null!=g)for(var k=0;k<g.length;k++){var l=mxUtils.htmlEntities(g[k].value);f.push(" "+g[k].nodeName+'="'+l+'"')}g=a.firstChild;if(null!=g){for(f.push(">"+d);null!=g;)f.push(mxUtils.getPrettyXml(g,b,c+b,d,e)),g=g.nextSibling;f.push(c+"</"+a.nodeName+">"+d)}else f.push(" />"+d)}return f.join("")},
-extractTextWithWhitespace:function(a){function b(a){if(1!=a.length||"BR"!=a[0].nodeName&&"\n"!=a[0].innerHTML)for(var e=0;e<a.length;e++){var g=a[e];"BR"==g.nodeName||"\n"==g.innerHTML||(1==a.length||0==e)&&"DIV"==g.nodeName&&"<br>"==g.innerHTML.toLowerCase()?d.push("\n"):(3===g.nodeType||4===g.nodeType?0<g.nodeValue.length&&d.push(g.nodeValue):8!==g.nodeType&&0<g.childNodes.length&&b(g.childNodes),e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n"))}}var c="BLOCKQUOTE DIV H1 H2 H3 H4 H5 H6 OL P PRE TABLE UL".split(" "),
-d=[];b(a);return d.join("")},replaceTrailingNewlines:function(a,b){for(var c="";0<a.length&&"\n"==a.charAt(a.length-1);)a=a.substring(0,a.length-1),c+=b;return a+c},getTextContent:function(a){return mxClient.IS_IE&&void 0!==a.innerText?a.innerText:null!=a?a[void 0===a.textContent?"text":"textContent"]:""},setTextContent:function(a,b){void 0!==a.innerText?a.innerText=b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:
-""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName),b.push('="'),b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:
-function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c=null,d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");
-mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,
-b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement;try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},
-fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null,"GET",!1);a.send();return a},get:function(a,b,c,d,e,f,g){a=new mxXmlRequest(a,null,"GET");var k=a.setRequestHeaders;g&&(a.setRequestHeaders=
-function(a,b){k.apply(this,arguments);for(var c in g)a.setRequestHeader(c,g[c])});null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},
-loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,
-e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(null!=a[c]&&null==b[c]||null==a[c]&&null!=b[c]||null!=a[c]&&null!=b[c]&&(a[c].x!=b[c].x||a[c].y!=b[c].y))return!1;return!0},equalEntries:function(a,b){var c=0;if(null==a&&null!=b||null!=a&&null==
-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),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<=
-d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;
-b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,
-mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=
-b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+
-d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},intersectsPoints:function(a,b){for(var c=0;c<b.length-1;c++)if(mxUtils.rectangleIntersectsSegment(a,b[c],b[c+1]))return!0;return!1},rectangleIntersectsSegment:function(a,
-b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+
-g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,
-mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();
-null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:
-document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a);null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+
-(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;
-e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,
-b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;b=document.createElement("img");b.setAttribute("src",a);b.setAttribute("border","0");return b},
-sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>
-a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=
-a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},hex2rgb:function(a){if(null!=a&&7==a.length&&"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16);a=parseInt(a.substring(5,7),16);a="rgb("+b+", "+c+", "+a+")"}return a},
-hex2rgba:function(a){if(null!=a&&7<=a.length&&"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16),d=parseInt(a.substring(5,7),16),e=1;7<a.length&&(e=parseInt(a.substring(7,9),16)/255);a="rgba("+b+", "+c+", "+d+", "+e+")"}return a},rgba2hex:function(a){return(rgb=a&&a.match?a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i):a)&&4===rgb.length?"#"+("0"+parseInt(rgb[1],10).toString(16)).slice(-2)+("0"+parseInt(rgb[2],10).toString(16)).slice(-2)+
-("0"+parseInt(rgb[3],10).toString(16)).slice(-2):a},setCssText:function(a,b){if(null!=a&&null!=b)for(var c=b.split(";"),d=0;d<c.length;d++){var e=c[d].split(":");1<e.length&&(e[0]=mxUtils.trim(e[0].replace(/-([a-z])/gi,function(a,b){return b.toUpperCase()})),a[e[0]]=mxUtils.trim(e[1]))}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):
-0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,
-b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,b){var c=-.5,d=-.5;a==mxConstants.ALIGN_LEFT?c=0:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_TOP?
-d=0:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d,e){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var f=document.createElement("div");f.style.fontFamily=c;f.style.fontSize=Math.round(b)+"px";f.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";null!=e&&((e&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(f.style.fontWeight="bold"),(e&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(f.style.fontStyle=
-"italic"),b=[],(e&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&b.push("underline"),(e&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&b.push("line-through"),0<b.length&&(f.style.textDecoration=b.join(" ")));f.style.position="absolute";f.style.visibility="hidden";f.style.display="inline-block";f.style.zoom="1";null!=d?(f.style.width=d+"px",f.style.whiteSpace="normal"):f.style.whiteSpace="nowrap";f.innerHTML=a;document.body.appendChild(f);a=new mxRectangle(0,0,f.offsetWidth,
-f.offsetHeight);document.body.removeChild(f);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),
-f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=n,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=
-c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=
-null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;
-d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+k+"px;top:"+l+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");
-for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==
-a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+k+","+l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=
-document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;");c.appendChild(d);c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+
-"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign",
-"bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?
-c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=
-l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",
-RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,
-NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00",OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",
-CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,
-HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,DEFAULT_TEXT_DIRECTION:"",LINE_HEIGHT:1.2,WORD_WRAP:"normal",ABSOLUTE_LINE_HEIGHT:!1,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,
-ARROW_SPACING:0,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,827,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,827),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_PORT_CONSTRAINT_ROTATION:"portConstraintRotation",STYLE_SOURCE_PORT_CONSTRAINT:"sourcePortConstraint",
-STYLE_TARGET_PORT_CONSTRAINT:"targetPortConstraint",STYLE_OPACITY:"opacity",STYLE_FILL_OPACITY:"fillOpacity",STYLE_STROKE_OPACITY:"strokeOpacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_TEXT_DIRECTION:"textDirection",STYLE_OVERFLOW:"overflow",STYLE_BLOCK_SPACING:"blockSpacing",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_DX:"exitDx",STYLE_EXIT_DY:"exitDy",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_DX:"entryDx",
-STYLE_ENTRY_DY:"entryDy",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_POINTER_EVENTS:"pointerEvents",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_MARGIN:"margin",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_WIDTH:"labelWidth",
-STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",
-STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",
-STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_FIX_DASH:"fixDash",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_ABSOLUTE_ARCSIZE:"absoluteArcSize",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",
-STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ANCHOR_POINT_DIRECTION:"anchorPointDirection",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",
-STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",
-STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",
-ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",
-TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",
-PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_HEXAGON:"hexagonPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments.length;b+=2)null!=arguments[b+1]&&(this.properties[arguments[b]]=arguments[b+1])}mxEventObject.prototype.name=null;mxEventObject.prototype.properties=null;mxEventObject.prototype.consumed=!1;mxEventObject.prototype.getName=function(){return this.name};
-mxEventObject.prototype.getProperties=function(){return this.properties};mxEventObject.prototype.getProperty=function(a){return this.properties[a]};mxEventObject.prototype.isConsumed=function(){return this.consumed};mxEventObject.prototype.consume=function(){this.consumed=!0};function mxMouseEvent(a,b){this.evt=a;this.sourceState=this.state=b}mxMouseEvent.prototype.consumed=!1;mxMouseEvent.prototype.evt=null;mxMouseEvent.prototype.graphX=null;mxMouseEvent.prototype.graphY=null;
-mxMouseEvent.prototype.state=null;mxMouseEvent.prototype.sourceState=null;mxMouseEvent.prototype.getEvent=function(){return this.evt};mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)};mxMouseEvent.prototype.isSource=function(a){return null!=a?mxUtils.isAncestorNode(a.node,this.getSource()):!1};mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())};mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())};
-mxMouseEvent.prototype.getGraphX=function(){return this.graphX};mxMouseEvent.prototype.getGraphY=function(){return this.graphY};mxMouseEvent.prototype.getState=function(){return this.state};mxMouseEvent.prototype.getCell=function(){var a=this.getState();return null!=a?a.cell:null};mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())};mxMouseEvent.prototype.isConsumed=function(){return this.consumed};
+"&#xa;");return a},decodeHtml:function(a){var b=document.createElement("textarea");b.innerHTML=a;return b.value},getXml:function(a,b){var c="";mxClient.IS_IE||mxClient.IS_IE11?c=mxUtils.getPrettyXml(a,"","",""):null!=window.XMLSerializer?c=(new XMLSerializer).serializeToString(a):null!=a.xml&&(c=a.xml.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n"));return c.replace(/\n/g,b||"&#xa;")},getPrettyXml:function(a,b,c,d,e){var f=[];if(null!=a)if(b=null!=b?b:" ",c=null!=c?c:"",d=
+null!=d?d:"\n",null!=a.namespaceURI&&a.namespaceURI!=e&&(e=a.namespaceURI,null==a.getAttribute("xmlns")&&a.setAttribute("xmlns",a.namespaceURI)),a.nodeType==mxConstants.NODETYPE_DOCUMENT)f.push(mxUtils.getPrettyXml(a.documentElement,b,c,d,e));else if(a.nodeType==mxConstants.NODETYPE_DOCUMENT_FRAGMENT){var g=a.firstChild;if(null!=g)for(;null!=g;)f.push(mxUtils.getPrettyXml(g,b,c,d,e)),g=g.nextSibling}else if(a.nodeType==mxConstants.NODETYPE_COMMENT)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+
+"\x3c!--"+a+"--\x3e"+d);else if(a.nodeType==mxConstants.NODETYPE_TEXT)a=mxUtils.trim(mxUtils.getTextContent(a)),0<a.length&&f.push(c+mxUtils.htmlEntities(a,!1)+d);else if(a.nodeType==mxConstants.NODETYPE_CDATA)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+"<![CDATA["+a+"]]"+d);else{f.push(c+"<"+a.nodeName);g=a.attributes;if(null!=g)for(var k=0;k<g.length;k++){var l=mxUtils.htmlEntities(g[k].value);f.push(" "+g[k].nodeName+'="'+l+'"')}g=a.firstChild;if(null!=g){for(f.push(">"+d);null!=g;)f.push(mxUtils.getPrettyXml(g,
+b,c+b,d,e)),g=g.nextSibling;f.push(c+"</"+a.nodeName+">"+d)}else f.push(" />"+d)}return f.join("")},extractTextWithWhitespace:function(a){function b(a){if(1!=a.length||"BR"!=a[0].nodeName&&"\n"!=a[0].innerHTML)for(var e=0;e<a.length;e++){var g=a[e];"BR"==g.nodeName||"\n"==g.innerHTML||(1==a.length||0==e)&&"DIV"==g.nodeName&&"<br>"==g.innerHTML.toLowerCase()?d.push("\n"):(3===g.nodeType||4===g.nodeType?0<g.nodeValue.length&&d.push(g.nodeValue):8!==g.nodeType&&0<g.childNodes.length&&b(g.childNodes),
+e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n"))}}var c="BLOCKQUOTE DIV H1 H2 H3 H4 H5 H6 OL P PRE TABLE UL".split(" "),d=[];b(a);return d.join("")},replaceTrailingNewlines:function(a,b){for(var c="";0<a.length&&"\n"==a.charAt(a.length-1);)a=a.substring(0,a.length-1),c+=b;return a+c},getTextContent:function(a){return mxClient.IS_IE&&void 0!==a.innerText?a.innerText:null!=a?a[void 0===a.textContent?"text":"textContent"]:""},setTextContent:function(a,b){void 0!==a.innerText?a.innerText=
+b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName),b.push('="'),
+b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c=null,
+d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},
+linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement;
+try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null,
+"GET",!1);a.send();return a},get:function(a,b,c,d,e,f,g){a=new mxXmlRequest(a,null,"GET");var k=a.setRequestHeaders;g&&(a.setRequestHeaders=function(a,b){k.apply(this,arguments);for(var c in g)a.setRequestHeader(c,g[c])});null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&
+b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&
+(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(null!=a[c]&&null==b[c]||null==a[c]&&null!=b[c]||null!=a[c]&&
+null!=b[c]&&(a[c].x!=b[c].x||a[c].y!=b[c].y))return!1;return!0},equalEntries:function(a,b){var c=0;if(null==a&&null!=b||null!=a&&null==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),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<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=
+mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,
+e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,
+b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,
+d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},intersectsPoints:function(a,
+b){for(var c=0;c<b.length-1;c++)if(mxUtils.rectangleIntersectsSegment(a,b[c],b[c+1]))return!0;return!1},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,
+b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=
+n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=
+mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:
+(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a);null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,
+b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===
+String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},
+relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?
+"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;b=document.createElement("img");b.setAttribute("src",a);b.setAttribute("border","0");return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},
+getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,
+b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},hex2rgb:function(a){if(null!=a&&7==a.length&&
+"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16);a=parseInt(a.substring(5,7),16);a="rgb("+b+", "+c+", "+a+")"}return a},hex2rgba:function(a){if(null!=a&&7<=a.length&&"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16),d=parseInt(a.substring(5,7),16),e=1;7<a.length&&(e=parseInt(a.substring(7,9),16)/255);a="rgba("+b+", "+c+", "+d+", "+e+")"}return a},rgba2hex:function(a){return(rgb=a&&a.match?a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i):
+a)&&4===rgb.length?"#"+("0"+parseInt(rgb[1],10).toString(16)).slice(-2)+("0"+parseInt(rgb[2],10).toString(16)).slice(-2)+("0"+parseInt(rgb[3],10).toString(16)).slice(-2):a},setCssText:function(a,b){if(null!=a&&null!=b)for(var c=b.split(";"),d=0;d<c.length;d++){var e=c[d].split(":");1<e.length&&(e[0]=mxUtils.trim(e[0].replace(/-([a-z])/gi,function(a,b){return b.toUpperCase()})),a[e[0]]=mxUtils.trim(e[1]))}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==
+a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=
+b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,
+b){var c=-.5,d=-.5;a==mxConstants.ALIGN_LEFT?c=0:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_TOP?d=0:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d,e){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var f=document.createElement("div");f.style.fontFamily=c;f.style.fontSize=Math.round(b)+"px";f.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";null!=e&&((e&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&
+(f.style.fontWeight="bold"),(e&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(f.style.fontStyle="italic"),b=[],(e&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&b.push("underline"),(e&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&b.push("line-through"),0<b.length&&(f.style.textDecoration=b.join(" ")));f.style.position="absolute";f.style.visibility="hidden";f.style.display="inline-block";f.style.zoom="1";null!=d?(f.style.width=d+"px",f.style.whiteSpace="normal"):f.style.whiteSpace=
+"nowrap";f.innerHTML=a;document.body.appendChild(f);a=new mxRectangle(0,0,f.offsetWidth,f.offsetHeight);document.body.removeChild(f);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,
+"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=n,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;
+c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*
+c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");
+for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+k+"px;top:"+l+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));
+d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;
+for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+k+","+l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,
+500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;");c.appendChild(d);c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=
+window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",
+d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),
+c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=
+g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,
+MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,
+NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00",OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",
+CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",
+OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,DEFAULT_TEXT_DIRECTION:"",LINE_HEIGHT:1.2,WORD_WRAP:"normal",ABSOLUTE_LINE_HEIGHT:!1,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,
+DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:0,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,827,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,827),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_PORT_CONSTRAINT_ROTATION:"portConstraintRotation",
+STYLE_SOURCE_PORT_CONSTRAINT:"sourcePortConstraint",STYLE_TARGET_PORT_CONSTRAINT:"targetPortConstraint",STYLE_OPACITY:"opacity",STYLE_FILL_OPACITY:"fillOpacity",STYLE_STROKE_OPACITY:"strokeOpacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_TEXT_DIRECTION:"textDirection",STYLE_OVERFLOW:"overflow",STYLE_BLOCK_SPACING:"blockSpacing",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_DX:"exitDx",STYLE_EXIT_DY:"exitDy",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",
+STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_DX:"entryDx",STYLE_ENTRY_DY:"entryDy",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_POINTER_EVENTS:"pointerEvents",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_MARGIN:"margin",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",
+STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_WIDTH:"labelWidth",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",
+STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",
+STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_FIX_DASH:"fixDash",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_ABSOLUTE_ARCSIZE:"absoluteArcSize",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",
+STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ANCHOR_POINT_DIRECTION:"anchorPointDirection",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",
+STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",
+STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",
+SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",
+DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",
+EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_HEXAGON:"hexagonPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments.length;b+=2)null!=arguments[b+1]&&(this.properties[arguments[b]]=arguments[b+1])}mxEventObject.prototype.name=null;
+mxEventObject.prototype.properties=null;mxEventObject.prototype.consumed=!1;mxEventObject.prototype.getName=function(){return this.name};mxEventObject.prototype.getProperties=function(){return this.properties};mxEventObject.prototype.getProperty=function(a){return this.properties[a]};mxEventObject.prototype.isConsumed=function(){return this.consumed};mxEventObject.prototype.consume=function(){this.consumed=!0};function mxMouseEvent(a,b){this.evt=a;this.sourceState=this.state=b}
+mxMouseEvent.prototype.consumed=!1;mxMouseEvent.prototype.evt=null;mxMouseEvent.prototype.graphX=null;mxMouseEvent.prototype.graphY=null;mxMouseEvent.prototype.state=null;mxMouseEvent.prototype.sourceState=null;mxMouseEvent.prototype.getEvent=function(){return this.evt};mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)};mxMouseEvent.prototype.isSource=function(a){return null!=a?mxUtils.isAncestorNode(a.node,this.getSource()):!1};mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())};
+mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())};mxMouseEvent.prototype.getGraphX=function(){return this.graphX};mxMouseEvent.prototype.getGraphY=function(){return this.graphY};mxMouseEvent.prototype.getState=function(){return this.state};mxMouseEvent.prototype.getCell=function(){var a=this.getState();return null!=a?a.cell:null};mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())};mxMouseEvent.prototype.isConsumed=function(){return this.consumed};
mxMouseEvent.prototype.consume=function(a){(null!=a?a:null!=this.evt.touches||mxEvent.isMouseEvent(this.evt))&&this.evt.preventDefault&&this.evt.preventDefault();mxClient.IS_IE&&(this.evt.returnValue=!0);this.consumed=!0};function mxEventSource(a){this.setEventSource(a)}mxEventSource.prototype.eventListeners=null;mxEventSource.prototype.eventsEnabled=!0;mxEventSource.prototype.eventSource=null;mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled};
mxEventSource.prototype.setEventsEnabled=function(a){this.eventsEnabled=a};mxEventSource.prototype.getEventSource=function(){return this.eventSource};mxEventSource.prototype.setEventSource=function(a){this.eventSource=a};mxEventSource.prototype.addListener=function(a,b){null==this.eventListeners&&(this.eventListeners=[]);this.eventListeners.push(a);this.eventListeners.push(b)};
mxEventSource.prototype.removeListener=function(a){if(null!=this.eventListeners)for(var b=0;b<this.eventListeners.length;)this.eventListeners[b+1]==a?this.eventListeners.splice(b,2):b+=2};
@@ -2012,7 +2012,7 @@ d);this.exportColor(e)};this.fromRGB=function(a,b,c,d){0>a&&(a=0);1<a&&(a=1);0>b
function(a,b){var c=a.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);return c?(6===c[1].length?this.fromRGB(parseInt(c[1].substr(0,2),16)/255,parseInt(c[1].substr(2,2),16)/255,parseInt(c[1].substr(4,2),16)/255,b):this.fromRGB(parseInt(c[1].charAt(0)+c[1].charAt(0),16)/255,parseInt(c[1].charAt(1)+c[1].charAt(1),16)/255,parseInt(c[1].charAt(2)+c[1].charAt(2),16)/255,b),!0):!1};this.toString=function(){return(256|Math.round(255*this.rgb[0])).toString(16).substr(1)+(256|Math.round(255*this.rgb[1])).toString(16).substr(1)+
(256|Math.round(255*this.rgb[2])).toString(16).substr(1)};var r=this,t="hvs"===this.pickerMode.toLowerCase()?1:0,u=mxJSColor.fetchElement(this.valueElement),x=mxJSColor.fetchElement(this.styleElement),y=!1,B=!1,A=1,z=2,C=4,v=8;u&&(q=function(){r.fromString(u.value,A);p()},mxJSColor.addEvent(u,"keyup",q),mxJSColor.addEvent(u,"input",q),mxJSColor.addEvent(u,"blur",l),u.setAttribute("autocomplete","off"));x&&(x.jscStyle={backgroundImage:x.style.backgroundImage,backgroundColor:x.style.backgroundColor,
color:x.style.color});switch(t){case 0:mxJSColor.requireImage("hs.png");break;case 1:mxJSColor.requireImage("hv.png")}this.importColor()}};mxJSColor.install();
-Editor=function(b,c,e,k,g){mxEventSource.call(this);this.chromeless=null!=b?b:this.chromeless;this.initStencilRegistry();this.graph=k||this.createGraph(c,e);this.editable=null!=g?g:!b;this.undoManager=this.createUndoManager();this.status="";this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[Editor.pageCounter])+".xml"};this.getFilename=function(){return this.filename};this.setStatus=function(b){this.status=b;this.fireEvent(new mxEventObject("statusChanged"))};this.getStatus=
+Editor=function(b,c,e,k,f){mxEventSource.call(this);this.chromeless=null!=b?b:this.chromeless;this.initStencilRegistry();this.graph=k||this.createGraph(c,e);this.editable=null!=f?f:!b;this.undoManager=this.createUndoManager();this.status="";this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[Editor.pageCounter])+".xml"};this.getFilename=function(){return this.filename};this.setStatus=function(b){this.status=b;this.fireEvent(new mxEventObject("statusChanged"))};this.getStatus=
function(){return this.status};this.graphChangeListener=function(b,c){var d=null!=c?c.getProperty("edit"):null;null!=d&&d.ignoreEdit||this.setModified(!0)};this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)}));this.graph.resetViewOnRootChange=!1;this.init()};Editor.pageCounter=0;
(function(){try{for(var b=window;null!=b.opener&&"undefined"!==typeof b.opener.Editor&&!isNaN(b.opener.Editor.pageCounter)&&b.opener!=b;)b=b.opener;null!=b&&(b.Editor.pageCounter++,Editor.pageCounter=b.Editor.pageCounter)}catch(c){}})();Editor.defaultHtmlFont='-apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", system-ui, ui-sans-serif, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"';Editor.useLocalStorage="undefined"!=typeof Storage&&mxClient.IS_IOS;
Editor.rowMoveImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=":IMAGE_PATH+"/thumb_horz.png";
@@ -2039,19 +2039,19 @@ Editor.closeBlackImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy
Editor.plusImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==";Editor.shapesImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxwYXRoIGQ9Ik0wLDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPjwvZz48Zz48Zz48cGF0aCBkPSJNMywxMWg4VjNIM1YxMXogTTUsNWg0djRINVY1eiIvPjxwYXRoIGQ9Ik0xMywzdjhoOFYzSDEzeiBNMTksOWgtNFY1aDRWOXoiLz48cGF0aCBkPSJNMywyMWg4di04SDNWMjF6IE01LDE1aDR2NEg1VjE1eiIvPjxwb2x5Z29uIHBvaW50cz0iMTgsMTMgMTYsMTMgMTYsMTYgMTMsMTYgMTMsMTggMTYsMTggMTYsMjEgMTgsMjEgMTgsMTggMjEsMTggMjEsMTYgMTgsMTYiLz48L2c+PC9nPjwvc3ZnPg==";
Editor.formatImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==";
Editor.freehandImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0Ii8+PHBhdGggZD0iTTQuNSw4YzEuMDQsMCwyLjM0LTEuNSw0LjI1LTEuNWMxLjUyLDAsMi43NSwxLjIzLDIuNzUsMi43NWMwLDIuMDQtMS45OSwzLjE1LTMuOTEsNC4yMkM1LjQyLDE0LjY3LDQsMTUuNTcsNCwxNyBjMCwxLjEsMC45LDIsMiwydjJjLTIuMjEsMC00LTEuNzktNC00YzAtMi43MSwyLjU2LTQuMTQsNC42Mi01LjI4YzEuNDItMC43OSwyLjg4LTEuNiwyLjg4LTIuNDdjMC0wLjQxLTAuMzQtMC43NS0wLjc1LTAuNzUgQzcuNSw4LjUsNi4yNSwxMCw0LjUsMTBDMy4xMiwxMCwyLDguODgsMiw3LjVDMiw1LjQ1LDQuMTcsMi44Myw1LDJsMS40MSwxLjQxQzUuNDEsNC40Miw0LDYuNDMsNCw3LjVDNCw3Ljc4LDQuMjIsOCw0LjUsOHogTTgsMjEgbDMuNzUsMGw4LjA2LTguMDZsLTMuNzUtMy43NUw4LDE3LjI1TDgsMjF6IE0xMCwxOC4wOGw2LjA2LTYuMDZsMC45MiwwLjkyTDEwLjkyLDE5TDEwLDE5TDEwLDE4LjA4eiBNMjAuMzcsNi4yOSBjLTAuMzktMC4zOS0xLjAyLTAuMzktMS40MSwwbC0xLjgzLDEuODNsMy43NSwzLjc1bDEuODMtMS44M2MwLjM5LTAuMzksMC4zOS0xLjAyLDAtMS40MUwyMC4zNyw2LjI5eiIvPjwvc3ZnPg==";
-Editor.templateImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTEzIDExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTN6bTEtOUg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTQgMThINlY0aDd2NWg1djExeiIvPjwvc3ZnPg==";Editor.darkImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxwYXRoIGQ9Ik05LjM3LDUuNTFDOS4xOSw2LjE1LDkuMSw2LjgyLDkuMSw3LjVjMCw0LjA4LDMuMzIsNy40LDcuNCw3LjRjMC42OCwwLDEuMzUtMC4wOSwxLjk5LTAuMjdDMTcuNDUsMTcuMTksMTQuOTMsMTksMTIsMTkgYy0zLjg2LDAtNy0zLjE0LTctN0M1LDkuMDcsNi44MSw2LjU1LDkuMzcsNS41MXogTTEyLDNjLTQuOTcsMC05LDQuMDMtOSw5czQuMDMsOSw5LDlzOS00LjAzLDktOWMwLTAuNDYtMC4wNC0wLjkyLTAuMS0xLjM2IGMtMC45OCwxLjM3LTIuNTgsMi4yNi00LjQsMi4yNmMtMi45OCwwLTUuNC0yLjQyLTUuNC01LjRjMC0xLjgxLDAuODktMy40MiwyLjI2LTQuNEMxMi45MiwzLjA0LDEyLjQ2LDMsMTIsM0wxMiwzeiIvPjwvc3ZnPg==";
+Editor.darkImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxwYXRoIGQ9Ik05LjM3LDUuNTFDOS4xOSw2LjE1LDkuMSw2LjgyLDkuMSw3LjVjMCw0LjA4LDMuMzIsNy40LDcuNCw3LjRjMC42OCwwLDEuMzUtMC4wOSwxLjk5LTAuMjdDMTcuNDUsMTcuMTksMTQuOTMsMTksMTIsMTkgYy0zLjg2LDAtNy0zLjE0LTctN0M1LDkuMDcsNi44MSw2LjU1LDkuMzcsNS41MXogTTEyLDNjLTQuOTcsMC05LDQuMDMtOSw5czQuMDMsOSw5LDlzOS00LjAzLDktOWMwLTAuNDYtMC4wNC0wLjkyLTAuMS0xLjM2IGMtMC45OCwxLjM3LTIuNTgsMi4yNi00LjQsMi4yNmMtMi45OCwwLTUuNC0yLjQyLTUuNC01LjRjMC0xLjgxLDAuODktMy40MiwyLjI2LTQuNEMxMi45MiwzLjA0LDEyLjQ2LDMsMTIsM0wxMiwzeiIvPjwvc3ZnPg==";
Editor.lightImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxwYXRoIGQ9Ik0xMiw5YzEuNjUsMCwzLDEuMzUsMywzcy0xLjM1LDMtMywzcy0zLTEuMzUtMy0zUzEwLjM1LDksMTIsOSBNMTIsN2MtMi43NiwwLTUsMi4yNC01LDVzMi4yNCw1LDUsNXM1LTIuMjQsNS01IFMxNC43Niw3LDEyLDdMMTIsN3ogTTIsMTNsMiwwYzAuNTUsMCwxLTAuNDUsMS0xcy0wLjQ1LTEtMS0xbC0yLDBjLTAuNTUsMC0xLDAuNDUtMSwxUzEuNDUsMTMsMiwxM3ogTTIwLDEzbDIsMGMwLjU1LDAsMS0wLjQ1LDEtMSBzLTAuNDUtMS0xLTFsLTIsMGMtMC41NSwwLTEsMC40NS0xLDFTMTkuNDUsMTMsMjAsMTN6IE0xMSwydjJjMCwwLjU1LDAuNDUsMSwxLDFzMS0wLjQ1LDEtMVYyYzAtMC41NS0wLjQ1LTEtMS0xUzExLDEuNDUsMTEsMnogTTExLDIwdjJjMCwwLjU1LDAuNDUsMSwxLDFzMS0wLjQ1LDEtMXYtMmMwLTAuNTUtMC40NS0xLTEtMUMxMS40NSwxOSwxMSwxOS40NSwxMSwyMHogTTUuOTksNC41OGMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDAgYy0wLjM5LDAuMzktMC4zOSwxLjAzLDAsMS40MWwxLjA2LDEuMDZjMC4zOSwwLjM5LDEuMDMsMC4zOSwxLjQxLDBzMC4zOS0xLjAzLDAtMS40MUw1Ljk5LDQuNTh6IE0xOC4zNiwxNi45NSBjLTAuMzktMC4zOS0xLjAzLTAuMzktMS40MSwwYy0wLjM5LDAuMzktMC4zOSwxLjAzLDAsMS40MWwxLjA2LDEuMDZjMC4zOSwwLjM5LDEuMDMsMC4zOSwxLjQxLDBjMC4zOS0wLjM5LDAuMzktMS4wMywwLTEuNDEgTDE4LjM2LDE2Ljk1eiBNMTkuNDIsNS45OWMwLjM5LTAuMzksMC4zOS0xLjAzLDAtMS40MWMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDBsLTEuMDYsMS4wNmMtMC4zOSwwLjM5LTAuMzksMS4wMywwLDEuNDEgczEuMDMsMC4zOSwxLjQxLDBMMTkuNDIsNS45OXogTTcuMDUsMTguMzZjMC4zOS0wLjM5LDAuMzktMS4wMywwLTEuNDFjLTAuMzktMC4zOS0xLjAzLTAuMzktMS40MSwwbC0xLjA2LDEuMDYgYy0wLjM5LDAuMzktMC4zOSwxLjAzLDAsMS40MXMxLjAzLDAuMzksMS40MSwwTDcuMDUsMTguMzZ6Ii8+PC9zdmc+";
Editor.undoImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ii8+PC9zdmc+";Editor.redoImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiIvPjwvc3ZnPg==";
Editor.outlineImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMC41IDNsLS4xNi4wM0wxNSA1LjEgOSAzIDMuMzYgNC45Yy0uMjEuMDctLjM2LjI1LS4zNi40OFYyMC41YzAgLjI4LjIyLjUuNS41bC4xNi0uMDNMOSAxOC45bDYgMi4xIDUuNjQtMS45Yy4yMS0uMDcuMzYtLjI1LjM2LS40OFYzLjVjMC0uMjgtLjIyLS41LS41LS41ek0xNSAxOWwtNi0yLjExVjVsNiAyLjExVjE5eiIvPjwvc3ZnPg==";
-Editor.saveImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMThweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMThweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE5IDEydjdINXYtN0gzdjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnptLTYgLjY3bDIuNTktMi41OEwxNyAxMS41bC01IDUtNS01IDEuNDEtMS40MUwxMSAxMi42N1YzaDJ2OS42N3oiLz48L3N2Zz4=";Editor.tableImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTIwIDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDJ2M0g1VjVoMTV6bS01IDE0aC01di05aDV2OXpNNSAxMGgzdjlINXYtOXptMTIgOXYtOWgzdjloLTN6Ii8+PC9zdmc+";
+Editor.saveImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMThweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMThweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE5IDEydjdINXYtN0gzdjdjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnptLTYgLjY3bDIuNTktMi41OEwxNyAxMS41bC01IDUtNS01IDEuNDEtMS40MUwxMSAxMi42N1YzaDJ2OS42N3oiLz48L3N2Zz4=";
Editor.roughFillStyles=[{val:"auto",dispName:"Auto"},{val:"hachure",dispName:"Hachure"},{val:"solid",dispName:"Solid"},{val:"zigzag",dispName:"ZigZag"},{val:"cross-hatch",dispName:"Cross Hatch"},{val:"dashed",dispName:"Dashed"},{val:"zigzag-line",dispName:"ZigZag Line"}];Editor.themes=null;Editor.ctrlKey=mxClient.IS_MAC?"Cmd":"Ctrl";Editor.hintOffset=20;Editor.shapePickerHoverDelay=300;Editor.fitWindowBorders=null;Editor.popupsAllowed=null!=window.urlParams?"1"!=urlParams.noDevice:!0;
Editor.simpleLabels=!1;Editor.enableNativeCipboard=window==window.top&&!mxClient.IS_FF&&null!=navigator.clipboard;Editor.sketchMode=!1;Editor.darkMode=!1;Editor.darkColor="#2a2a2a";Editor.lightColor="#f0f0f0";Editor.isPngDataUrl=function(b){return null!=b&&"data:image/png;"==b.substring(0,15)};Editor.isPngData=function(b){return 8<b.length&&137==b.charCodeAt(0)&&80==b.charCodeAt(1)&&78==b.charCodeAt(2)&&71==b.charCodeAt(3)&&13==b.charCodeAt(4)&&10==b.charCodeAt(5)&&26==b.charCodeAt(6)&&10==b.charCodeAt(7)};
Editor.extractGraphModelFromPng=function(b){var c=null;try{var e=b.substring(b.indexOf(",")+1),k=window.atob&&!mxClient.IS_SF?atob(e):Base64.decode(e,!0);EditorUi.parsePng(k,mxUtils.bind(this,function(b,e,t){b=k.substring(b+8,b+8+t);"zTXt"==e?(t=b.indexOf(String.fromCharCode(0)),"mxGraphModel"==b.substring(0,t)&&(b=pako.inflateRaw(Graph.stringToArrayBuffer(b.substring(t+2)),{to:"string"}).replace(/\+/g," "),null!=b&&0<b.length&&(c=b))):"tEXt"==e&&(b=b.split(String.fromCharCode(0)),1<b.length&&("mxGraphModel"==
-b[0]||"mxfile"==b[0])&&(c=b[1]));if(null!=c||"IDAT"==e)return!0}))}catch(g){}null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c));null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c));return c};Editor.isDarkMode=function(b){return Editor.darkMode||"dark"==uiTheme};Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;mxUtils.extend(Editor,mxEventSource);
+b[0]||"mxfile"==b[0])&&(c=b[1]));if(null!=c||"IDAT"==e)return!0}))}catch(f){}null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c));null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c));return c};Editor.isDarkMode=function(b){return Editor.darkMode||"dark"==uiTheme};Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;mxUtils.extend(Editor,mxEventSource);
Editor.prototype.originalNoForeignObject=mxClient.NO_FO;Editor.prototype.transparentImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhMAAwAIAAAP///wAAACH5BAEAAAAALAAAAAAwADAAAAIxhI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8egpAAA7":IMAGE_PATH+"/transparent.gif";Editor.prototype.extendCanvas=!0;Editor.prototype.chromeless=!1;Editor.prototype.cancelFirst=!0;Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;
Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.defaultGraphOverflow="hidden";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(b){this.autosave=b;this.fireEvent(new mxEventObject("autosaveChanged"))};Editor.prototype.getEditBlankUrl=function(b){return this.editBlankUrl+b};
-Editor.prototype.editAsNew=function(b,c){var e=null!=c?"?title="+encodeURIComponent(c):"";null!=urlParams.ui&&(e+=(0<e.length?"&":"?")+"ui="+urlParams.ui);if("undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)){var k=null,g=mxUtils.bind(this,function(c){"ready"==c.data&&c.source==k&&(mxEvent.removeListener(window,"message",g),k.postMessage(b,"*"))});mxEvent.addListener(window,"message",g);k=this.graph.openLink(this.getEditBlankUrl(e+(0<e.length?"&":"?")+
-"client=1"),null,!0)}else this.graph.openLink(this.getEditBlankUrl(e)+"#R"+encodeURIComponent(b))};Editor.prototype.createGraph=function(b,c){var e=new Graph(null,c,null,null,b);e.transparentBackground=!1;var k=e.isCssTransformsSupported,g=this;e.isCssTransformsSupported=function(){return k.apply(this,arguments)&&(!g.chromeless||!mxClient.IS_SF)};this.chromeless||(e.isBlankLink=function(b){return!this.isExternalProtocol(b)});return e};
+Editor.prototype.editAsNew=function(b,c){var e=null!=c?"?title="+encodeURIComponent(c):"";null!=urlParams.ui&&(e+=(0<e.length?"&":"?")+"ui="+urlParams.ui);if("undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)){var k=null,f=mxUtils.bind(this,function(c){"ready"==c.data&&c.source==k&&(mxEvent.removeListener(window,"message",f),k.postMessage(b,"*"))});mxEvent.addListener(window,"message",f);k=this.graph.openLink(this.getEditBlankUrl(e+(0<e.length?"&":"?")+
+"client=1"),null,!0)}else this.graph.openLink(this.getEditBlankUrl(e)+"#R"+encodeURIComponent(b))};Editor.prototype.createGraph=function(b,c){var e=new Graph(null,c,null,null,b);e.transparentBackground=!1;var k=e.isCssTransformsSupported,f=this;e.isCssTransformsSupported=function(){return k.apply(this,arguments)&&(!f.chromeless||!mxClient.IS_SF)};this.chromeless||(e.isBlankLink=function(b){return!this.isExternalProtocol(b)});return e};
Editor.prototype.resetGraph=function(){this.graph.gridEnabled=this.graph.defaultGridEnabled&&(!this.isChromelessView()||"1"==urlParams.grid);this.graph.graphHandler.guidesEnabled=!0;this.graph.setTooltips(!0);this.graph.setConnectable(!0);this.graph.foldingEnabled=!0;this.graph.scrollbars=this.graph.defaultScrollbars;this.graph.pageVisible=this.graph.defaultPageVisible;this.graph.pageBreaksVisible=this.graph.pageVisible;this.graph.preferPageSize=this.graph.pageBreaksVisible;this.graph.background=
null;this.graph.pageScale=mxGraph.prototype.pageScale;this.graph.pageFormat=mxGraph.prototype.pageFormat;this.graph.currentScale=1;this.graph.currentTranslate.x=0;this.graph.currentTranslate.y=0;this.updateGraphComponents();this.graph.view.setScale(1)};
Editor.prototype.readGraphState=function(b){var c=b.getAttribute("grid");if(null==c||""==c)c=this.graph.defaultGridEnabled?"1":"0";this.graph.gridEnabled="0"!=c&&(!this.isChromelessView()||"1"==urlParams.grid);this.graph.gridSize=parseFloat(b.getAttribute("gridSize"))||mxGraph.prototype.gridSize;this.graph.graphHandler.guidesEnabled="0"!=b.getAttribute("guides");this.graph.setTooltips("0"!=b.getAttribute("tooltips"));this.graph.setConnectable("0"!=b.getAttribute("connect"));this.graph.connectionArrowsEnabled=
@@ -2063,122 +2063,128 @@ Editor.prototype.getGraphXml=function(b){b=(null!=b?b:1)?(new mxCodec(mxUtils.cr
this.graph.gridSize);b.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0");b.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0");b.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0");b.setAttribute("arrows",this.graph.connectionArrowsEnabled?"1":"0");b.setAttribute("fold",this.graph.foldingEnabled?"1":"0");b.setAttribute("page",this.graph.pageVisible?"1":"0");b.setAttribute("pageScale",this.graph.pageScale);b.setAttribute("pageWidth",this.graph.pageFormat.width);
b.setAttribute("pageHeight",this.graph.pageFormat.height);null!=this.graph.background&&b.setAttribute("background",this.graph.background);return b};Editor.prototype.updateGraphComponents=function(){var b=this.graph;null!=b.container&&(b.view.validateBackground(),b.container.style.overflow=b.scrollbars?"auto":this.defaultGraphOverflow,this.fireEvent(new mxEventObject("updateGraphComponents")))};Editor.prototype.setModified=function(b){this.modified=b};
Editor.prototype.setFilename=function(b){this.filename=b};
-Editor.prototype.createUndoManager=function(){var b=this.graph,c=new mxUndoManager;this.undoListener=function(b,e){c.undoableEditHappened(e.getProperty("edit"))};var e=mxUtils.bind(this,function(b,c){this.undoListener.apply(this,arguments)});b.getModel().addListener(mxEvent.UNDO,e);b.getView().addListener(mxEvent.UNDO,e);e=function(c,e){var g=b.getSelectionCellsForChanges(e.getProperty("edit").changes,function(b){return!(b instanceof mxChildChange)});if(0<g.length){b.getModel();for(var k=[],d=0;d<
-g.length;d++)null!=b.view.getState(g[d])&&k.push(g[d]);b.setSelectionCells(k)}};c.addListener(mxEvent.UNDO,e);c.addListener(mxEvent.REDO,e);return c};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(b){this.consumer=this.producer=null;this.done=b;this.args=null};OpenFile.prototype.setConsumer=function(b){this.consumer=b;this.execute()};
+Editor.prototype.createUndoManager=function(){var b=this.graph,c=new mxUndoManager;this.undoListener=function(b,e){c.undoableEditHappened(e.getProperty("edit"))};var e=mxUtils.bind(this,function(b,c){this.undoListener.apply(this,arguments)});b.getModel().addListener(mxEvent.UNDO,e);b.getView().addListener(mxEvent.UNDO,e);e=function(c,e){var f=b.getSelectionCellsForChanges(e.getProperty("edit").changes,function(b){return!(b instanceof mxChildChange)});if(0<f.length){b.getModel();for(var k=[],d=0;d<
+f.length;d++)null!=b.view.getState(f[d])&&k.push(f[d]);b.setSelectionCells(k)}};c.addListener(mxEvent.UNDO,e);c.addListener(mxEvent.REDO,e);return c};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(b){this.consumer=this.producer=null;this.done=b;this.args=null};OpenFile.prototype.setConsumer=function(b){this.consumer=b;this.execute()};
OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(b){this.cancel(!0);mxUtils.alert(b)};OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(b){null!=this.done&&this.done(null!=b?b:!0)};
-function Dialog(b,c,e,k,g,p,t,d,f,l,q){var m=f?57:0,n=e,u=k,v=f?0:64,y=Editor.inlineFullscreen||null==b.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(b.embedViewport);null==b.embedViewport&&null!=window.innerHeight&&(y.height=window.innerHeight);var x=y.height,F=Math.max(1,Math.round((y.width-e-v)/2)),H=Math.max(1,Math.round((x-k-b.footerHeight)/3));c.style.maxHeight="100%";e=null!=document.body?Math.min(e,document.body.scrollWidth-v):e;k=Math.min(k,x-v);0<b.dialogs.length&&(this.zIndex+=
+function Dialog(b,c,e,k,f,p,t,d,g,l,q){var m=g?57:0,n=e,u=k,v=g?0:64,y=Editor.inlineFullscreen||null==b.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(b.embedViewport);null==b.embedViewport&&null!=window.innerHeight&&(y.height=window.innerHeight);var x=y.height,F=Math.max(1,Math.round((y.width-e-v)/2)),H=Math.max(1,Math.round((x-k-b.footerHeight)/3));c.style.maxHeight="100%";e=null!=document.body?Math.min(e,document.body.scrollWidth-v):e;k=Math.min(k,x-v);0<b.dialogs.length&&(this.zIndex+=
2*b.dialogs.length);null==this.bg&&(this.bg=b.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=x+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));y=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=y.x+"px";this.bg.style.top=y.y+"px";F+=y.x;H+=y.y;Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px",
-H+=b.embedViewport.y,F+=b.embedViewport.x);g&&document.body.appendChild(this.bg);var z=b.createDiv(f?"geTransDialog":"geDialog");g=this.getPosition(F,H,e,k);F=g.x;H=g.y;z.style.width=e+"px";z.style.height=k+"px";z.style.left=F+"px";z.style.top=H+"px";z.style.zIndex=this.zIndex;z.appendChild(c);document.body.appendChild(z);!d&&c.clientHeight>z.clientHeight-v&&(c.style.overflowY="auto");c.style.overflowX="hidden";if(p&&(p=document.createElement("img"),p.setAttribute("src",Dialog.prototype.closeImage),
-p.setAttribute("title",mxResources.get("close")),p.className="geDialogClose",p.style.top=H+14+"px",p.style.left=F+e+38-m+"px",p.style.zIndex=this.zIndex,mxEvent.addListener(p,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(p),this.dialogImg=p,!q)){var D=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(b){D=!0}),null,mxUtils.bind(this,function(d){D&&(b.hideDialog(!0),D=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=l){var f=l();
-null!=f&&(n=e=f.w,u=k=f.h)}f=mxUtils.getDocumentSize();x=f.height;this.bg.style.height=x+"px";Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");F=Math.max(1,Math.round((f.width-e-v)/2));H=Math.max(1,Math.round((x-k-b.footerHeight)/3));e=null!=document.body?Math.min(n,document.body.scrollWidth-v):n;k=Math.min(u,x-v);f=this.getPosition(F,H,e,k);F=f.x;H=f.y;z.style.left=F+"px";z.style.top=H+"px";z.style.width=e+"px";z.style.height=k+"px";!d&&
+H+=b.embedViewport.y,F+=b.embedViewport.x);f&&document.body.appendChild(this.bg);var z=b.createDiv(g?"geTransDialog":"geDialog");f=this.getPosition(F,H,e,k);F=f.x;H=f.y;z.style.width=e+"px";z.style.height=k+"px";z.style.left=F+"px";z.style.top=H+"px";z.style.zIndex=this.zIndex;z.appendChild(c);document.body.appendChild(z);!d&&c.clientHeight>z.clientHeight-v&&(c.style.overflowY="auto");c.style.overflowX="hidden";if(p&&(p=document.createElement("img"),p.setAttribute("src",Dialog.prototype.closeImage),
+p.setAttribute("title",mxResources.get("close")),p.className="geDialogClose",p.style.top=H+14+"px",p.style.left=F+e+38-m+"px",p.style.zIndex=this.zIndex,mxEvent.addListener(p,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(p),this.dialogImg=p,!q)){var D=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(b){D=!0}),null,mxUtils.bind(this,function(d){D&&(b.hideDialog(!0),D=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=l){var g=l();
+null!=g&&(n=e=g.w,u=k=g.h)}g=mxUtils.getDocumentSize();x=g.height;this.bg.style.height=x+"px";Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");F=Math.max(1,Math.round((g.width-e-v)/2));H=Math.max(1,Math.round((x-k-b.footerHeight)/3));e=null!=document.body?Math.min(n,document.body.scrollWidth-v):n;k=Math.min(u,x-v);g=this.getPosition(F,H,e,k);F=g.x;H=g.y;z.style.left=F+"px";z.style.top=H+"px";z.style.width=e+"px";z.style.height=k+"px";!d&&
c.clientHeight>z.clientHeight-v&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=H+14+"px",this.dialogImg.style.left=F+e+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=t;this.container=z;b.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC":IMAGE_PATH+
"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png";
Dialog.prototype.clearImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQAKAIABAMDAwP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUIzOEM1NzI4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUIzOEM1NzM4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QjM4QzU3MDg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QjM4QzU3MTg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAEALAAAAAANAAoAAAIXTGCJebD9jEOTqRlttXdrB32PJ2ncyRQAOw==":IMAGE_PATH+
"/clear.gif";Dialog.prototype.bgOpacity=80;Dialog.prototype.getPosition=function(b,c){return new mxPoint(b,c)};Dialog.prototype.close=function(b,c){if(null!=this.onDialogClose){if(0==this.onDialogClose(b,c))return!1;this.onDialogClose=null}null!=this.dialogImg&&(this.dialogImg.parentNode.removeChild(this.dialogImg),this.dialogImg=null);null!=this.bg&&null!=this.bg.parentNode&&this.bg.parentNode.removeChild(this.bg);mxEvent.removeListener(window,"resize",this.resizeListener);this.container.parentNode.removeChild(this.container)};
-var ErrorDialog=function(b,c,e,k,g,p,t,d,f,l,q){f=null!=f?f:!0;var m=document.createElement("div");m.style.textAlign="center";if(null!=c){var n=document.createElement("div");n.style.padding="0px";n.style.margin="0px";n.style.fontSize="18px";n.style.paddingBottom="16px";n.style.marginBottom="10px";n.style.borderBottom="1px solid #c0c0c0";n.style.color="gray";n.style.whiteSpace="nowrap";n.style.textOverflow="ellipsis";n.style.overflow="hidden";mxUtils.write(n,c);n.setAttribute("title",c);m.appendChild(n)}c=
-document.createElement("div");c.style.lineHeight="1.2em";c.style.padding="6px";c.innerHTML=e;m.appendChild(c);e=document.createElement("div");e.style.marginTop="12px";e.style.textAlign="center";null!=p&&(c=mxUtils.button(mxResources.get("tryAgain"),function(){b.hideDialog();p()}),c.className="geBtn",e.appendChild(c),e.style.textAlign="center");null!=l&&(l=mxUtils.button(l,function(){null!=q&&q()}),l.className="geBtn",e.appendChild(l));var u=mxUtils.button(k,function(){f&&b.hideDialog();null!=g&&g()});
-u.className="geBtn";e.appendChild(u);null!=t&&(k=mxUtils.button(t,function(){f&&b.hideDialog();null!=d&&d()}),k.className="geBtn gePrimaryBtn",e.appendChild(k));this.init=function(){u.focus()};m.appendChild(e);this.container=m},PrintDialog=function(b,c){this.create(b,c)};
-PrintDialog.prototype.create=function(b){function c(b){var f=d.checked||l.checked,c=parseInt(m.value)/100;isNaN(c)&&(c=1,m.value="100%");var c=.75*c,g=e.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,k=1/e.pageScale;if(f){var n=d.checked?1:parseInt(q.value);isNaN(n)||(k=mxUtils.getScaleForPageCount(n,e,g))}e.getGraphBounds();var u=n=0,g=mxRectangle.fromRectangle(g);g.width=Math.ceil(g.width*c);g.height=Math.ceil(g.height*c);k*=c;!f&&e.pageVisible?(c=e.getPageLayout(),n-=c.x*g.width,u-=c.y*g.height):
-f=!0;f=PrintDialog.createPrintPreview(e,k,g,0,n,u,f);f.open();b&&PrintDialog.printPreview(f)}var e=b.editor.graph,k,g,p=document.createElement("table");p.style.width="100%";p.style.height="100%";var t=document.createElement("tbody");k=document.createElement("tr");var d=document.createElement("input");d.setAttribute("type","checkbox");g=document.createElement("td");g.setAttribute("colspan","2");g.style.fontSize="10pt";g.appendChild(d);var f=document.createElement("span");mxUtils.write(f," "+mxResources.get("fitPage"));
-g.appendChild(f);mxEvent.addListener(f,"click",function(b){d.checked=!d.checked;l.checked=!d.checked;mxEvent.consume(b)});mxEvent.addListener(d,"change",function(){l.checked=!d.checked});k.appendChild(g);t.appendChild(k);k=k.cloneNode(!1);var l=document.createElement("input");l.setAttribute("type","checkbox");g=document.createElement("td");g.style.fontSize="10pt";g.appendChild(l);f=document.createElement("span");mxUtils.write(f," "+mxResources.get("posterPrint")+":");g.appendChild(f);mxEvent.addListener(f,
-"click",function(b){l.checked=!l.checked;d.checked=!l.checked;mxEvent.consume(b)});k.appendChild(g);var q=document.createElement("input");q.setAttribute("value","1");q.setAttribute("type","number");q.setAttribute("min","1");q.setAttribute("size","4");q.setAttribute("disabled","disabled");q.style.width="50px";g=document.createElement("td");g.style.fontSize="10pt";g.appendChild(q);mxUtils.write(g," "+mxResources.get("pages")+" (max)");k.appendChild(g);t.appendChild(k);mxEvent.addListener(l,"change",
-function(){l.checked?q.removeAttribute("disabled"):q.setAttribute("disabled","disabled");d.checked=!l.checked});k=k.cloneNode(!1);g=document.createElement("td");mxUtils.write(g,mxResources.get("pageScale")+":");k.appendChild(g);g=document.createElement("td");var m=document.createElement("input");m.setAttribute("value","100 %");m.setAttribute("size","5");m.style.width="50px";g.appendChild(m);k.appendChild(g);t.appendChild(k);k=document.createElement("tr");g=document.createElement("td");g.colSpan=2;
-g.style.paddingTop="20px";g.setAttribute("align","right");f=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});f.className="geBtn";b.editor.cancelFirst&&g.appendChild(f);if(PrintDialog.previewEnabled){var n=mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();c(!1)});n.className="geBtn";g.appendChild(n)}n=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();c(!0)});n.className="geBtn gePrimaryBtn";g.appendChild(n);b.editor.cancelFirst||
-g.appendChild(f);k.appendChild(g);t.appendChild(k);p.appendChild(t);this.container=p};PrintDialog.printPreview=function(b){try{if(null!=b.wnd){var c=function(){b.wnd.focus();b.wnd.print();b.wnd.close()};mxClient.IS_GC?window.setTimeout(c,500):c()}}catch(e){}};
-PrintDialog.createPrintPreview=function(b,c,e,k,g,p,t){c=new mxPrintPreview(b,c,e,k,g,p);c.title=mxResources.get("preview");c.printBackgroundImage=!0;c.autoOrigin=t;b=b.background;if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";c.backgroundColor=b;var d=c.writeHead;c.writeHead=function(b){d.apply(this,arguments);b.writeln('<style type="text/css">');b.writeln("@media screen {");b.writeln(" body > div { padding:30px;box-sizing:content-box; }");b.writeln("}");b.writeln("</style>")};return c};
+var ErrorDialog=function(b,c,e,k,f,p,t,d,g,l,q){g=null!=g?g:!0;var m=document.createElement("div");m.style.textAlign="center";if(null!=c){var n=document.createElement("div");n.style.padding="0px";n.style.margin="0px";n.style.fontSize="18px";n.style.paddingBottom="16px";n.style.marginBottom="10px";n.style.borderBottom="1px solid #c0c0c0";n.style.color="gray";n.style.whiteSpace="nowrap";n.style.textOverflow="ellipsis";n.style.overflow="hidden";mxUtils.write(n,c);n.setAttribute("title",c);m.appendChild(n)}c=
+document.createElement("div");c.style.lineHeight="1.2em";c.style.padding="6px";c.innerHTML=e;m.appendChild(c);e=document.createElement("div");e.style.marginTop="12px";e.style.textAlign="center";null!=p&&(c=mxUtils.button(mxResources.get("tryAgain"),function(){b.hideDialog();p()}),c.className="geBtn",e.appendChild(c),e.style.textAlign="center");null!=l&&(l=mxUtils.button(l,function(){null!=q&&q()}),l.className="geBtn",e.appendChild(l));var u=mxUtils.button(k,function(){g&&b.hideDialog();null!=f&&f()});
+u.className="geBtn";e.appendChild(u);null!=t&&(k=mxUtils.button(t,function(){g&&b.hideDialog();null!=d&&d()}),k.className="geBtn gePrimaryBtn",e.appendChild(k));this.init=function(){u.focus()};m.appendChild(e);this.container=m},PrintDialog=function(b,c){this.create(b,c)};
+PrintDialog.prototype.create=function(b){function c(b){var g=d.checked||l.checked,c=parseInt(m.value)/100;isNaN(c)&&(c=1,m.value="100%");var c=.75*c,f=e.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,k=1/e.pageScale;if(g){var n=d.checked?1:parseInt(q.value);isNaN(n)||(k=mxUtils.getScaleForPageCount(n,e,f))}e.getGraphBounds();var t=n=0,f=mxRectangle.fromRectangle(f);f.width=Math.ceil(f.width*c);f.height=Math.ceil(f.height*c);k*=c;!g&&e.pageVisible?(c=e.getPageLayout(),n-=c.x*f.width,t-=c.y*f.height):
+g=!0;g=PrintDialog.createPrintPreview(e,k,f,0,n,t,g);g.open();b&&PrintDialog.printPreview(g)}var e=b.editor.graph,k,f,p=document.createElement("table");p.style.width="100%";p.style.height="100%";var t=document.createElement("tbody");k=document.createElement("tr");var d=document.createElement("input");d.setAttribute("type","checkbox");f=document.createElement("td");f.setAttribute("colspan","2");f.style.fontSize="10pt";f.appendChild(d);var g=document.createElement("span");mxUtils.write(g," "+mxResources.get("fitPage"));
+f.appendChild(g);mxEvent.addListener(g,"click",function(b){d.checked=!d.checked;l.checked=!d.checked;mxEvent.consume(b)});mxEvent.addListener(d,"change",function(){l.checked=!d.checked});k.appendChild(f);t.appendChild(k);k=k.cloneNode(!1);var l=document.createElement("input");l.setAttribute("type","checkbox");f=document.createElement("td");f.style.fontSize="10pt";f.appendChild(l);g=document.createElement("span");mxUtils.write(g," "+mxResources.get("posterPrint")+":");f.appendChild(g);mxEvent.addListener(g,
+"click",function(b){l.checked=!l.checked;d.checked=!l.checked;mxEvent.consume(b)});k.appendChild(f);var q=document.createElement("input");q.setAttribute("value","1");q.setAttribute("type","number");q.setAttribute("min","1");q.setAttribute("size","4");q.setAttribute("disabled","disabled");q.style.width="50px";f=document.createElement("td");f.style.fontSize="10pt";f.appendChild(q);mxUtils.write(f," "+mxResources.get("pages")+" (max)");k.appendChild(f);t.appendChild(k);mxEvent.addListener(l,"change",
+function(){l.checked?q.removeAttribute("disabled"):q.setAttribute("disabled","disabled");d.checked=!l.checked});k=k.cloneNode(!1);f=document.createElement("td");mxUtils.write(f,mxResources.get("pageScale")+":");k.appendChild(f);f=document.createElement("td");var m=document.createElement("input");m.setAttribute("value","100 %");m.setAttribute("size","5");m.style.width="50px";f.appendChild(m);k.appendChild(f);t.appendChild(k);k=document.createElement("tr");f=document.createElement("td");f.colSpan=2;
+f.style.paddingTop="20px";f.setAttribute("align","right");g=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});g.className="geBtn";b.editor.cancelFirst&&f.appendChild(g);if(PrintDialog.previewEnabled){var n=mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();c(!1)});n.className="geBtn";f.appendChild(n)}n=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();c(!0)});n.className="geBtn gePrimaryBtn";f.appendChild(n);b.editor.cancelFirst||
+f.appendChild(g);k.appendChild(f);t.appendChild(k);p.appendChild(t);this.container=p};PrintDialog.printPreview=function(b){try{if(null!=b.wnd){var c=function(){b.wnd.focus();b.wnd.print();b.wnd.close()};mxClient.IS_GC?window.setTimeout(c,500):c()}}catch(e){}};
+PrintDialog.createPrintPreview=function(b,c,e,k,f,p,t){c=new mxPrintPreview(b,c,e,k,f,p);c.title=mxResources.get("preview");c.printBackgroundImage=!0;c.autoOrigin=t;b=b.background;if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";c.backgroundColor=b;var d=c.writeHead;c.writeHead=function(b){d.apply(this,arguments);b.writeln('<style type="text/css">');b.writeln("@media screen {");b.writeln(" body > div { padding:30px;box-sizing:content-box; }");b.writeln("}");b.writeln("</style>")};return c};
PrintDialog.previewEnabled=!0;
-var PageSetupDialog=function(b){function c(){null==q||q==mxConstants.NONE?(l.style.backgroundColor="",l.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(l.style.backgroundColor=q,l.style.backgroundImage="")}function e(){var d=v;null!=d&&Graph.isPageLink(d.src)&&(d=b.createImageForPageLink(d.src,null));null!=d&&null!=d.src?(u.setAttribute("src",d.src),u.style.display=""):(u.removeAttribute("src"),u.style.display="none")}var k=b.editor.graph,g,p,t=document.createElement("table");t.style.width=
-"100%";t.style.height="100%";var d=document.createElement("tbody");g=document.createElement("tr");p=document.createElement("td");p.style.verticalAlign="top";p.style.fontSize="10pt";mxUtils.write(p,mxResources.get("paperSize")+":");g.appendChild(p);p=document.createElement("td");p.style.verticalAlign="top";p.style.fontSize="10pt";var f=PageSetupDialog.addPageFormatPanel(p,"pagesetupdialog",k.pageFormat);g.appendChild(p);d.appendChild(g);g=document.createElement("tr");p=document.createElement("td");
-mxUtils.write(p,mxResources.get("background")+":");g.appendChild(p);p=document.createElement("td");p.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var l=document.createElement("button");l.style.width="22px";l.style.height="22px";l.style.cursor="pointer";l.style.marginRight="20px";l.style.backgroundPosition="center center";l.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(l.style.position="relative",l.style.top="-6px");var q=k.background;c();mxEvent.addListener(l,
-"click",function(d){b.pickColor(q||"none",function(b){q=b;c()});mxEvent.consume(d)});p.appendChild(l);mxUtils.write(p,mxResources.get("gridSize")+":");var m=document.createElement("input");m.setAttribute("type","number");m.setAttribute("min","0");m.style.width="40px";m.style.marginLeft="6px";m.value=k.getGridSize();p.appendChild(m);mxEvent.addListener(m,"change",function(){var b=parseInt(m.value);m.value=Math.max(1,isNaN(b)?k.getGridSize():b)});g.appendChild(p);d.appendChild(g);g=document.createElement("tr");
-p=document.createElement("td");mxUtils.write(p,mxResources.get("image")+":");g.appendChild(p);p=document.createElement("td");var n=document.createElement("button");n.className="geBtn";n.style.margin="0px";mxUtils.write(n,mxResources.get("change")+"...");var u=document.createElement("img");u.setAttribute("valign","middle");u.style.verticalAlign="middle";u.style.border="1px solid lightGray";u.style.borderRadius="4px";u.style.marginRight="14px";u.style.maxWidth="100px";u.style.cursor="pointer";u.style.height=
-"60px";u.style.padding="4px";var v=k.backgroundImage,y=function(d){b.showBackgroundImageDialog(function(b,d){d||(v=b,e())},v);mxEvent.consume(d)};mxEvent.addListener(n,"click",y);mxEvent.addListener(u,"click",y);e();p.appendChild(u);p.appendChild(n);g.appendChild(p);d.appendChild(g);g=document.createElement("tr");p=document.createElement("td");p.colSpan=2;p.style.paddingTop="16px";p.setAttribute("align","right");n=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});n.className="geBtn";
-b.editor.cancelFirst&&p.appendChild(n);y=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();var d=parseInt(m.value);isNaN(d)||k.gridSize===d||k.setGridSize(d);d=new ChangePageSetup(b,q,v,f.get());d.ignoreColor=k.background==q;d.ignoreImage=(null!=k.backgroundImage?k.backgroundImage.src:null)===(null!=v?v.src:null);k.pageFormat.width==d.previousFormat.width&&k.pageFormat.height==d.previousFormat.height&&d.ignoreColor&&d.ignoreImage||k.model.execute(d)});y.className="geBtn gePrimaryBtn";
-p.appendChild(y);b.editor.cancelFirst||p.appendChild(n);g.appendChild(p);d.appendChild(g);t.appendChild(d);this.container=t};
-PageSetupDialog.addPageFormatPanel=function(b,c,e,k){function g(b,c,l){if(l||m!=document.activeElement&&n!=document.activeElement){b=!1;for(c=0;c<v.length;c++)l=v[c],H?"custom"==l.key&&(d.value=l.key,H=!1):null!=l.format&&("a4"==l.key?826==e.width?(e=mxRectangle.fromRectangle(e),e.width=827):826==e.height&&(e=mxRectangle.fromRectangle(e),e.height=827):"a5"==l.key&&(584==e.width?(e=mxRectangle.fromRectangle(e),e.width=583):584==e.height&&(e=mxRectangle.fromRectangle(e),e.height=583)),e.width==l.format.width&&
-e.height==l.format.height?(d.value=l.key,p.setAttribute("checked","checked"),p.defaultChecked=!0,p.checked=!0,t.removeAttribute("checked"),t.defaultChecked=!1,t.checked=!1,b=!0):e.width==l.format.height&&e.height==l.format.width&&(d.value=l.key,p.removeAttribute("checked"),p.defaultChecked=!1,p.checked=!1,t.setAttribute("checked","checked"),t.defaultChecked=!0,b=t.checked=!0));b?(f.style.display="",q.style.display="none"):(m.value=e.width/100,n.value=e.height/100,p.setAttribute("checked","checked"),
-d.value="custom",f.style.display="none",q.style.display="")}}c="format-"+c;var p=document.createElement("input");p.setAttribute("name",c);p.setAttribute("type","radio");p.setAttribute("value","portrait");var t=document.createElement("input");t.setAttribute("name",c);t.setAttribute("type","radio");t.setAttribute("value","landscape");var d=document.createElement("select");d.style.marginBottom="8px";d.style.borderRadius="4px";d.style.border="1px solid rgb(160, 160, 160)";d.style.width="206px";var f=
-document.createElement("div");f.style.marginLeft="4px";f.style.width="210px";f.style.height="24px";p.style.marginRight="6px";f.appendChild(p);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));f.appendChild(c);t.style.marginLeft="10px";t.style.marginRight="6px";f.appendChild(t);var l=document.createElement("span");l.style.width="100px";mxUtils.write(l,mxResources.get("landscape"));f.appendChild(l);var q=document.createElement("div");q.style.marginLeft=
-"4px";q.style.width="210px";q.style.height="24px";var m=document.createElement("input");m.setAttribute("size","7");m.style.textAlign="right";q.appendChild(m);mxUtils.write(q," in x ");var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";q.appendChild(n);mxUtils.write(q," in");f.style.display="none";q.style.display="none";for(var u={},v=PageSetupDialog.getFormats(),y=0;y<v.length;y++){var x=v[y];u[x.key]=x;var F=document.createElement("option");F.setAttribute("value",
-x.key);mxUtils.write(F,x.title);d.appendChild(F)}var H=!1;g();b.appendChild(d);mxUtils.br(b);b.appendChild(f);b.appendChild(q);var z=e,D=function(b,c){var l=u[d.value];null!=l.format?(m.value=l.format.width/100,n.value=l.format.height/100,q.style.display="none",f.style.display=""):(f.style.display="none",q.style.display="");l=parseFloat(m.value);if(isNaN(l)||0>=l)m.value=e.width/100;l=parseFloat(n.value);if(isNaN(l)||0>=l)n.value=e.height/100;l=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),
+var PageSetupDialog=function(b){function c(){null==q||q==mxConstants.NONE?(l.style.backgroundColor="",l.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(l.style.backgroundColor=q,l.style.backgroundImage="")}function e(){var d=v;null!=d&&Graph.isPageLink(d.src)&&(d=b.createImageForPageLink(d.src,null));null!=d&&null!=d.src?(u.setAttribute("src",d.src),u.style.display=""):(u.removeAttribute("src"),u.style.display="none")}var k=b.editor.graph,f,p,t=document.createElement("table");t.style.width=
+"100%";t.style.height="100%";var d=document.createElement("tbody");f=document.createElement("tr");p=document.createElement("td");p.style.verticalAlign="top";p.style.fontSize="10pt";mxUtils.write(p,mxResources.get("paperSize")+":");f.appendChild(p);p=document.createElement("td");p.style.verticalAlign="top";p.style.fontSize="10pt";var g=PageSetupDialog.addPageFormatPanel(p,"pagesetupdialog",k.pageFormat);f.appendChild(p);d.appendChild(f);f=document.createElement("tr");p=document.createElement("td");
+mxUtils.write(p,mxResources.get("background")+":");f.appendChild(p);p=document.createElement("td");p.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var l=document.createElement("button");l.style.width="22px";l.style.height="22px";l.style.cursor="pointer";l.style.marginRight="20px";l.style.backgroundPosition="center center";l.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(l.style.position="relative",l.style.top="-6px");var q=k.background;c();mxEvent.addListener(l,
+"click",function(d){b.pickColor(q||"none",function(b){q=b;c()});mxEvent.consume(d)});p.appendChild(l);mxUtils.write(p,mxResources.get("gridSize")+":");var m=document.createElement("input");m.setAttribute("type","number");m.setAttribute("min","0");m.style.width="40px";m.style.marginLeft="6px";m.value=k.getGridSize();p.appendChild(m);mxEvent.addListener(m,"change",function(){var b=parseInt(m.value);m.value=Math.max(1,isNaN(b)?k.getGridSize():b)});f.appendChild(p);d.appendChild(f);f=document.createElement("tr");
+p=document.createElement("td");mxUtils.write(p,mxResources.get("image")+":");f.appendChild(p);p=document.createElement("td");var n=document.createElement("button");n.className="geBtn";n.style.margin="0px";mxUtils.write(n,mxResources.get("change")+"...");var u=document.createElement("img");u.setAttribute("valign","middle");u.style.verticalAlign="middle";u.style.border="1px solid lightGray";u.style.borderRadius="4px";u.style.marginRight="14px";u.style.maxWidth="100px";u.style.cursor="pointer";u.style.height=
+"60px";u.style.padding="4px";var v=k.backgroundImage,y=function(d){b.showBackgroundImageDialog(function(b,d){d||(v=b,e())},v);mxEvent.consume(d)};mxEvent.addListener(n,"click",y);mxEvent.addListener(u,"click",y);e();p.appendChild(u);p.appendChild(n);f.appendChild(p);d.appendChild(f);f=document.createElement("tr");p=document.createElement("td");p.colSpan=2;p.style.paddingTop="16px";p.setAttribute("align","right");n=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});n.className="geBtn";
+b.editor.cancelFirst&&p.appendChild(n);y=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();var d=parseInt(m.value);isNaN(d)||k.gridSize===d||k.setGridSize(d);d=new ChangePageSetup(b,q,v,g.get());d.ignoreColor=k.background==q;d.ignoreImage=(null!=k.backgroundImage?k.backgroundImage.src:null)===(null!=v?v.src:null);k.pageFormat.width==d.previousFormat.width&&k.pageFormat.height==d.previousFormat.height&&d.ignoreColor&&d.ignoreImage||k.model.execute(d)});y.className="geBtn gePrimaryBtn";
+p.appendChild(y);b.editor.cancelFirst||p.appendChild(n);f.appendChild(p);d.appendChild(f);t.appendChild(d);this.container=t};
+PageSetupDialog.addPageFormatPanel=function(b,c,e,k){function f(b,c,l){if(l||m!=document.activeElement&&n!=document.activeElement){b=!1;for(c=0;c<v.length;c++)l=v[c],H?"custom"==l.key&&(d.value=l.key,H=!1):null!=l.format&&("a4"==l.key?826==e.width?(e=mxRectangle.fromRectangle(e),e.width=827):826==e.height&&(e=mxRectangle.fromRectangle(e),e.height=827):"a5"==l.key&&(584==e.width?(e=mxRectangle.fromRectangle(e),e.width=583):584==e.height&&(e=mxRectangle.fromRectangle(e),e.height=583)),e.width==l.format.width&&
+e.height==l.format.height?(d.value=l.key,p.setAttribute("checked","checked"),p.defaultChecked=!0,p.checked=!0,t.removeAttribute("checked"),t.defaultChecked=!1,t.checked=!1,b=!0):e.width==l.format.height&&e.height==l.format.width&&(d.value=l.key,p.removeAttribute("checked"),p.defaultChecked=!1,p.checked=!1,t.setAttribute("checked","checked"),t.defaultChecked=!0,b=t.checked=!0));b?(g.style.display="",q.style.display="none"):(m.value=e.width/100,n.value=e.height/100,p.setAttribute("checked","checked"),
+d.value="custom",g.style.display="none",q.style.display="")}}c="format-"+c;var p=document.createElement("input");p.setAttribute("name",c);p.setAttribute("type","radio");p.setAttribute("value","portrait");var t=document.createElement("input");t.setAttribute("name",c);t.setAttribute("type","radio");t.setAttribute("value","landscape");var d=document.createElement("select");d.style.marginBottom="8px";d.style.borderRadius="4px";d.style.border="1px solid rgb(160, 160, 160)";d.style.width="206px";var g=
+document.createElement("div");g.style.marginLeft="4px";g.style.width="210px";g.style.height="24px";p.style.marginRight="6px";g.appendChild(p);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));g.appendChild(c);t.style.marginLeft="10px";t.style.marginRight="6px";g.appendChild(t);var l=document.createElement("span");l.style.width="100px";mxUtils.write(l,mxResources.get("landscape"));g.appendChild(l);var q=document.createElement("div");q.style.marginLeft=
+"4px";q.style.width="210px";q.style.height="24px";var m=document.createElement("input");m.setAttribute("size","7");m.style.textAlign="right";q.appendChild(m);mxUtils.write(q," in x ");var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";q.appendChild(n);mxUtils.write(q," in");g.style.display="none";q.style.display="none";for(var u={},v=PageSetupDialog.getFormats(),y=0;y<v.length;y++){var x=v[y];u[x.key]=x;var F=document.createElement("option");F.setAttribute("value",
+x.key);mxUtils.write(F,x.title);d.appendChild(F)}var H=!1;f();b.appendChild(d);mxUtils.br(b);b.appendChild(g);b.appendChild(q);var z=e,D=function(b,c){var l=u[d.value];null!=l.format?(m.value=l.format.width/100,n.value=l.format.height/100,q.style.display="none",g.style.display=""):(g.style.display="none",q.style.display="");l=parseFloat(m.value);if(isNaN(l)||0>=l)m.value=e.width/100;l=parseFloat(n.value);if(isNaN(l)||0>=l)n.value=e.height/100;l=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),
Math.floor(100*parseFloat(n.value)));"custom"!=d.value&&t.checked&&(l=new mxRectangle(0,0,l.height,l.width));c&&H||l.width==z.width&&l.height==z.height||(z=l,null!=k&&k(z))};mxEvent.addListener(c,"click",function(b){p.checked=!0;D(b);mxEvent.consume(b)});mxEvent.addListener(l,"click",function(b){t.checked=!0;D(b);mxEvent.consume(b)});mxEvent.addListener(m,"blur",D);mxEvent.addListener(m,"click",D);mxEvent.addListener(n,"blur",D);mxEvent.addListener(n,"click",D);mxEvent.addListener(t,"change",D);mxEvent.addListener(p,
-"change",D);mxEvent.addListener(d,"change",function(b){H="custom"==d.value;D(b,!0)});D();return{set:function(b){e=b;g(null,null,!0)},get:function(){return z},widthInput:m,heightInput:n}};
+"change",D);mxEvent.addListener(d,"change",function(b){H="custom"==d.value;D(b,!0)});D();return{set:function(b){e=b;f(null,null,!0)},get:function(){return z},widthInput:m,heightInput:n}};
PageSetupDialog.getFormats=function(){return[{key:"letter",title:'US-Letter (8,5" x 11")',format:mxConstants.PAGE_FORMAT_LETTER_PORTRAIT},{key:"legal",title:'US-Legal (8,5" x 14")',format:new mxRectangle(0,0,850,1400)},{key:"tabloid",title:'US-Tabloid (11" x 17")',format:new mxRectangle(0,0,1100,1700)},{key:"executive",title:'US-Executive (7" x 10")',format:new mxRectangle(0,0,700,1E3)},{key:"a0",title:"A0 (841 mm x 1189 mm)",format:new mxRectangle(0,0,3300,4681)},{key:"a1",title:"A1 (594 mm x 841 mm)",
format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)",format:new mxRectangle(0,0,1654,2336)},{key:"a3",title:"A3 (297 mm x 420 mm)",format:new mxRectangle(0,0,1169,1654)},{key:"a4",title:"A4 (210 mm x 297 mm)",format:mxConstants.PAGE_FORMAT_A4_PORTRAIT},{key:"a5",title:"A5 (148 mm x 210 mm)",format:new mxRectangle(0,0,583,827)},{key:"a6",title:"A6 (105 mm x 148 mm)",format:new mxRectangle(0,0,413,583)},{key:"a7",title:"A7 (74 mm x 105 mm)",format:new mxRectangle(0,0,291,413)},
{key:"b4",title:"B4 (250 mm x 353 mm)",format:new mxRectangle(0,0,980,1390)},{key:"b5",title:"B5 (176 mm x 250 mm)",format:new mxRectangle(0,0,690,980)},{key:"16-9",title:"16:9 (1600 x 900)",format:new mxRectangle(0,0,900,1600)},{key:"16-10",title:"16:10 (1920 x 1200)",format:new mxRectangle(0,0,1200,1920)},{key:"4-3",title:"4:3 (1600 x 1200)",format:new mxRectangle(0,0,1200,1600)},{key:"custom",title:mxResources.get("custom"),format:null}]};
-var FilenameDialog=function(b,c,e,k,g,p,t,d,f,l,q,m){f=null!=f?f:!0;var n,u,v=document.createElement("table"),y=document.createElement("tbody");v.style.position="absolute";v.style.top="30px";v.style.left="20px";n=document.createElement("tr");u=document.createElement("td");u.style.textOverflow="ellipsis";u.style.textAlign="right";u.style.maxWidth="100px";u.style.fontSize="10pt";u.style.width="84px";mxUtils.write(u,(g||mxResources.get("filename"))+":");n.appendChild(u);var x=document.createElement("input");
-x.setAttribute("value",c||"");x.style.marginLeft="4px";x.style.width=null!=m?m+"px":"180px";var F=mxUtils.button(e,function(){if(null==p||p(x.value))f&&b.hideDialog(),k(x.value)});F.className="geBtn gePrimaryBtn";this.init=function(){if(null!=g||null==t)if(x.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?x.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var b=v.parentNode;if(null!=b){var d=null;mxEvent.addListener(b,"dragleave",function(b){null!=d&&(d.style.backgroundColor=
+var FilenameDialog=function(b,c,e,k,f,p,t,d,g,l,q,m){g=null!=g?g:!0;var n,u,v=document.createElement("table"),y=document.createElement("tbody");v.style.position="absolute";v.style.top="30px";v.style.left="20px";n=document.createElement("tr");u=document.createElement("td");u.style.textOverflow="ellipsis";u.style.textAlign="right";u.style.maxWidth="100px";u.style.fontSize="10pt";u.style.width="84px";mxUtils.write(u,(f||mxResources.get("filename"))+":");n.appendChild(u);var x=document.createElement("input");
+x.setAttribute("value",c||"");x.style.marginLeft="4px";x.style.width=null!=m?m+"px":"180px";var F=mxUtils.button(e,function(){if(null==p||p(x.value))g&&b.hideDialog(),k(x.value)});F.className="geBtn gePrimaryBtn";this.init=function(){if(null!=f||null==t)if(x.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?x.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var b=v.parentNode;if(null!=b){var d=null;mxEvent.addListener(b,"dragleave",function(b){null!=d&&(d.style.backgroundColor=
"",d=null);b.stopPropagation();b.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(b){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=x,d.style.backgroundColor="#ebf2f9");b.stopPropagation();b.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(b){null!=d&&(d.style.backgroundColor="",d=null);0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")&&(x.value=decodeURIComponent(b.dataTransfer.getData("text/uri-list")),F.click());b.stopPropagation();
-b.preventDefault()}))}}};u=document.createElement("td");u.style.whiteSpace="nowrap";u.appendChild(x);n.appendChild(u);if(null!=g||null==t)y.appendChild(n),null!=q&&(u.appendChild(FilenameDialog.createTypeHint(b,x,q)),null!=b.editor.diagramFileTypes&&(n=document.createElement("tr"),u=document.createElement("td"),u.style.textOverflow="ellipsis",u.style.textAlign="right",u.style.maxWidth="100px",u.style.fontSize="10pt",u.style.width="84px",mxUtils.write(u,mxResources.get("type")+":"),n.appendChild(u),
+b.preventDefault()}))}}};u=document.createElement("td");u.style.whiteSpace="nowrap";u.appendChild(x);n.appendChild(u);if(null!=f||null==t)y.appendChild(n),null!=q&&(u.appendChild(FilenameDialog.createTypeHint(b,x,q)),null!=b.editor.diagramFileTypes&&(n=document.createElement("tr"),u=document.createElement("td"),u.style.textOverflow="ellipsis",u.style.textAlign="right",u.style.maxWidth="100px",u.style.fontSize="10pt",u.style.width="84px",mxUtils.write(u,mxResources.get("type")+":"),n.appendChild(u),
u=document.createElement("td"),u.style.whiteSpace="nowrap",n.appendChild(u),c=FilenameDialog.createFileTypes(b,x,b.editor.diagramFileTypes),c.style.marginLeft="4px",c.style.width="198px",u.appendChild(c),x.style.width=null!=m?m-40+"px":"190px",n.appendChild(u),y.appendChild(n)));null!=t&&(n=document.createElement("tr"),u=document.createElement("td"),u.colSpan=2,u.appendChild(t),n.appendChild(u),y.appendChild(n));n=document.createElement("tr");u=document.createElement("td");u.colSpan=2;u.style.paddingTop=
null!=q?"12px":"20px";u.style.whiteSpace="nowrap";u.setAttribute("align","right");q=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog();null!=l&&l()});q.className="geBtn";b.editor.cancelFirst&&u.appendChild(q);null!=d&&(m=mxUtils.button(mxResources.get("help"),function(){b.editor.graph.openLink(d)}),m.className="geBtn",u.appendChild(m));mxEvent.addListener(x,"keypress",function(b){13==b.keyCode&&F.click()});u.appendChild(F);b.editor.cancelFirst||u.appendChild(q);n.appendChild(u);y.appendChild(n);
v.appendChild(y);this.container=v};FilenameDialog.filenameHelpLink=null;
-FilenameDialog.createTypeHint=function(b,c,e){var k=document.createElement("img");k.style.backgroundPosition="center bottom";k.style.backgroundRepeat="no-repeat";k.style.margin="2px 0 0 4px";k.style.verticalAlign="top";k.style.cursor="pointer";k.style.height="16px";k.style.width="16px";mxUtils.setOpacity(k,70);var g=function(){k.setAttribute("src",Editor.helpImage);k.setAttribute("title",mxResources.get("help"));for(var b=0;b<e.length;b++)if(0<e[b].ext.length&&c.value.toLowerCase().substring(c.value.length-
-e[b].ext.length-1)=="."+e[b].ext){k.setAttribute("title",mxResources.get(e[b].title));break}};mxEvent.addListener(c,"keyup",g);mxEvent.addListener(c,"change",g);mxEvent.addListener(k,"click",function(c){var e=k.getAttribute("title");k.getAttribute("src")==Editor.helpImage?b.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=e&&b.showError(null,e,mxResources.get("help"),function(){b.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);mxEvent.consume(c)});
-g();return k};
-FilenameDialog.createFileTypes=function(b,c,e){var k=document.createElement("select");for(b=0;b<e.length;b++){var g=document.createElement("option");g.setAttribute("value",b);mxUtils.write(g,mxResources.get(e[b].description)+" (."+e[b].extension+")");k.appendChild(g)}mxEvent.addListener(k,"change",function(b){b=e[k.value].extension;var g=c.value.lastIndexOf(".drawio."),g=0<g?g:c.value.lastIndexOf(".");"drawio"!=b&&(b="drawio."+b);c.value=0<g?c.value.substring(0,g+1)+b:c.value+"."+b;"createEvent"in
-document?(b=document.createEvent("HTMLEvents"),b.initEvent("change",!1,!0),c.dispatchEvent(b)):c.fireEvent("onchange")});b=function(b){b=c.value.toLowerCase();for(var g=0,d=0;d<e.length;d++){var f=e[d].extension,l=null;"drawio"!=f&&(l=f,f=".drawio."+f);if(b.substring(b.length-f.length-1)=="."+f||null!=l&&b.substring(b.length-l.length-1)=="."+l){g=d;break}}k.value=g};mxEvent.addListener(c,"change",b);mxEvent.addListener(c,"keyup",b);b();return k};
-(function(){mxGraphView.prototype.validateBackgroundPage=function(){var b=this.graph;if(null!=b.container&&!b.transparentBackground){if(b.pageVisible){var d=this.getBackgroundPageBounds();if(null==this.backgroundPageShape){for(var f=b.container.firstChild;null!=f&&f.nodeType!=mxConstants.NODETYPE_ELEMENT;)f=f.nextSibling;null!=f&&(this.backgroundPageShape=this.createBackgroundPageShape(d),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,
-this.backgroundPageShape.init(b.container),f.style.position="absolute",b.container.insertBefore(this.backgroundPageShape.node,f),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(d){b.dblClick(d)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(d){b.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(d))}),mxUtils.bind(this,function(d){null!=
+FilenameDialog.createTypeHint=function(b,c,e){var k=document.createElement("img");k.style.backgroundPosition="center bottom";k.style.backgroundRepeat="no-repeat";k.style.margin="2px 0 0 4px";k.style.verticalAlign="top";k.style.cursor="pointer";k.style.height="16px";k.style.width="16px";mxUtils.setOpacity(k,70);var f=function(){k.setAttribute("src",Editor.helpImage);k.setAttribute("title",mxResources.get("help"));for(var b=0;b<e.length;b++)if(0<e[b].ext.length&&c.value.toLowerCase().substring(c.value.length-
+e[b].ext.length-1)=="."+e[b].ext){k.setAttribute("title",mxResources.get(e[b].title));break}};mxEvent.addListener(c,"keyup",f);mxEvent.addListener(c,"change",f);mxEvent.addListener(k,"click",function(c){var e=k.getAttribute("title");k.getAttribute("src")==Editor.helpImage?b.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=e&&b.showError(null,e,mxResources.get("help"),function(){b.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);mxEvent.consume(c)});
+f();return k};
+FilenameDialog.createFileTypes=function(b,c,e){var k=document.createElement("select");for(b=0;b<e.length;b++){var f=document.createElement("option");f.setAttribute("value",b);mxUtils.write(f,mxResources.get(e[b].description)+" (."+e[b].extension+")");k.appendChild(f)}mxEvent.addListener(k,"change",function(b){b=e[k.value].extension;var f=c.value.lastIndexOf(".drawio."),f=0<f?f:c.value.lastIndexOf(".");"drawio"!=b&&(b="drawio."+b);c.value=0<f?c.value.substring(0,f+1)+b:c.value+"."+b;"createEvent"in
+document?(b=document.createEvent("HTMLEvents"),b.initEvent("change",!1,!0),c.dispatchEvent(b)):c.fireEvent("onchange")});b=function(b){b=c.value.toLowerCase();for(var f=0,d=0;d<e.length;d++){var g=e[d].extension,l=null;"drawio"!=g&&(l=g,g=".drawio."+g);if(b.substring(b.length-g.length-1)=="."+g||null!=l&&b.substring(b.length-l.length-1)=="."+l){f=d;break}}k.value=f};mxEvent.addListener(c,"change",b);mxEvent.addListener(c,"keyup",b);b();return k};
+(function(){mxGraphView.prototype.validateBackgroundPage=function(){var b=this.graph;if(null!=b.container&&!b.transparentBackground){if(b.pageVisible){var d=this.getBackgroundPageBounds();if(null==this.backgroundPageShape){for(var g=b.container.firstChild;null!=g&&g.nodeType!=mxConstants.NODETYPE_ELEMENT;)g=g.nextSibling;null!=g&&(this.backgroundPageShape=this.createBackgroundPageShape(d),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,
+this.backgroundPageShape.init(b.container),g.style.position="absolute",b.container.insertBefore(this.backgroundPageShape.node,g),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(d){b.dblClick(d)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(d){b.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(d))}),mxUtils.bind(this,function(d){null!=
b.tooltipHandler&&b.tooltipHandler.isHideOnHover()&&b.tooltipHandler.hide();b.isMouseDown&&!mxEvent.isConsumed(d)&&b.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(d))}),mxUtils.bind(this,function(d){b.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(d))})))}else this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=d,this.backgroundPageShape.redraw()}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null);this.validateBackgroundStyles()}};
-mxGraphView.prototype.validateBackgroundStyles=function(){var b=this.graph,d=null==b.background||b.background==mxConstants.NONE?b.defaultPageBackgroundColor:b.background,f=null!=d&&this.gridColor!=d.toLowerCase()?this.gridColor:"#ffffff",c="none",e="";if(b.isGridEnabled()||b.gridVisible){e=10;mxClient.IS_SVG?(c=unescape(encodeURIComponent(this.createSvgGrid(f))),c=window.btoa?btoa(c):Base64.encode(c,!0),c="url(data:image/svg+xml;base64,"+c+")",e=b.gridSize*this.scale*this.gridSteps):c="url("+this.gridImage+
-")";var g=f=0;null!=b.view.backgroundPageShape&&(g=this.getBackgroundPageBounds(),f=1+g.x,g=1+g.y);e=-Math.round(e-mxUtils.mod(this.translate.x*this.scale-f,e))+"px "+-Math.round(e-mxUtils.mod(this.translate.y*this.scale-g,e))+"px"}f=b.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);null!=b.view.backgroundPageShape?(b.view.backgroundPageShape.node.style.backgroundPosition=e,b.view.backgroundPageShape.node.style.backgroundImage=c,b.view.backgroundPageShape.node.style.backgroundColor=d,b.view.backgroundPageShape.node.style.borderColor=
-b.defaultPageBorderColor,b.container.className="geDiagramContainer geDiagramBackdrop",f.style.backgroundImage="none",f.style.backgroundColor=""):(b.container.className="geDiagramContainer",f.style.backgroundPosition=e,f.style.backgroundColor=d,f.style.backgroundImage=c)};mxGraphView.prototype.createSvgGrid=function(b){for(var d=this.graph.gridSize*this.scale;d<this.minGridSize;)d*=2;for(var f=this.gridSteps*d,c=[],e=1;e<this.gridSteps;e++){var g=e*d;c.push("M 0 "+g+" L "+f+" "+g+" M "+g+" 0 L "+g+
-" "+f)}return'<svg width="'+f+'" height="'+f+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+f+'" height="'+f+'" patternUnits="userSpaceOnUse"><path d="'+c.join(" ")+'" fill="none" stroke="'+b+'" opacity="0.2" stroke-width="1"/><path d="M '+f+" 0 L 0 0 0 "+f+'" fill="none" stroke="'+b+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var b=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(c,d){b.apply(this,arguments);
-if(null!=this.shiftPreview1){var f=this.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);var e=this.gridSize*this.view.scale*this.view.gridSteps,e=-Math.round(e-mxUtils.mod(this.view.translate.x*this.view.scale+c,e))+"px "+-Math.round(e-mxUtils.mod(this.view.translate.y*this.view.scale+d,e))+"px";f.style.backgroundPosition=e}};mxGraph.prototype.updatePageBreaks=function(b,d,f){var c=this.view.scale,e=this.view.translate,g=this.pageFormat,k=c*this.pageScale,u=this.view.getBackgroundPageBounds();
-d=u.width;f=u.height;var v=new mxRectangle(c*e.x,c*e.y,g.width*k,g.height*k),t=(b=b&&Math.min(v.width,v.height)>this.minPageBreakDist)?Math.ceil(f/v.height)-1:0,p=b?Math.ceil(d/v.width)-1:0,F=u.x+d,H=u.y+f;null==this.horizontalPageBreaks&&0<t&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<p&&(this.verticalPageBreaks=[]);b=mxUtils.bind(this,function(b){if(null!=b){for(var d=b==this.horizontalPageBreaks?t:p,f=0;f<=d;f++){var c=b==this.horizontalPageBreaks?[new mxPoint(Math.round(u.x),
-Math.round(u.y+(f+1)*v.height)),new mxPoint(Math.round(F),Math.round(u.y+(f+1)*v.height))]:[new mxPoint(Math.round(u.x+(f+1)*v.width),Math.round(u.y)),new mxPoint(Math.round(u.x+(f+1)*v.width),Math.round(H))];null!=b[f]?(b[f].points=c,b[f].redraw()):(c=new mxPolyline(c,this.pageBreakColor),c.dialect=this.dialect,c.isDashed=this.pageBreakDashed,c.pointerEvents=!1,c.init(this.view.backgroundPane),c.redraw(),b[f]=c)}for(f=d;f<b.length;f++)b[f].destroy();b.splice(d,b.length-d)}});b(this.horizontalPageBreaks);
-b(this.verticalPageBreaks)};var c=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(b,d,f){for(var e=0;e<d.length;e++){if(this.graph.isTableCell(d[e])||this.graph.isTableRow(d[e]))return!1;if(this.graph.getModel().isVertex(d[e])){var g=this.graph.getCellGeometry(d[e]);if(null!=g&&g.relative)return!1}}return c.apply(this,arguments)};var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var b=
-e.apply(this,arguments);b.intersects=mxUtils.bind(this,function(d,f){return this.isConnecting()?!0:mxCellMarker.prototype.intersects.apply(b,arguments)});return b};mxGraphView.prototype.createBackgroundPageShape=function(b){return new mxRectangleShape(b,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var b=this.getGraphBounds(),d=0<b.width?b.x/this.scale-this.translate.x:0,f=0<b.height?b.y/this.scale-this.translate.y:0,c=this.graph.pageFormat,
-e=this.graph.pageScale,g=c.width*e,c=c.height*e,e=Math.floor(Math.min(0,d)/g),k=Math.floor(Math.min(0,f)/c);return new mxRectangle(this.scale*(this.translate.x+e*g),this.scale*(this.translate.y+k*c),this.scale*(Math.ceil(Math.max(1,d+b.width/this.scale)/g)-e)*g,this.scale*(Math.ceil(Math.max(1,f+b.height/this.scale)/c)-k)*c)};var k=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(b,d){k.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
-this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=b+"px",this.view.backgroundPageShape.node.style.marginTop=d+"px")};var g=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(b,d,f,c,e,k){var l=g.apply(this,arguments);null==k||k||mxEvent.addListener(l,"mousedown",function(b){mxEvent.consume(b)});return l};var p=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
-function(b,d,f){var c,e=this.graph.model.getParent(b);if(d)c=this.graph.model.isEdge(b)?null:this.graph.getCellGeometry(b),c=!this.graph.model.isEdge(e)&&!this.graph.isSiblingSelected(b)&&(null!=c&&c.relative||!this.graph.isContainer(e)||this.graph.isPart(b));else if(c=p.apply(this,arguments),this.graph.isTableCell(b)||this.graph.isTableRow(b))c=e,this.graph.isTable(c)||(c=this.graph.model.getParent(c)),c=!this.graph.selectionCellsHandler.isHandled(c)||this.graph.isCellSelected(c)&&this.graph.isToggleEvent(f.getEvent())||
-this.graph.isCellSelected(b)&&!this.graph.isToggleEvent(f.getEvent())||this.graph.isTableCell(b)&&this.graph.isCellSelected(e);return c};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(b){b=b.getCell();for(var d=this.graph.getModel(),f=d.getParent(b),c=this.graph.view.getState(f),e=this.graph.isCellSelected(b);null!=c&&(d.isVertex(f)||d.isEdge(f));){var g=this.graph.isCellSelected(f),e=e||g;if(g||!e&&(this.graph.isTableCell(b)||this.graph.isTableRow(b)))b=f;f=d.getParent(f)}return b}})();EditorUi=function(b,c,e){mxEventSource.call(this);this.destroyFunctions=[];this.editor=b||new Editor;this.container=c||document.body;var k=this.editor.graph;k.lightbox=e;var g=k.getGraphBounds;k.getGraphBounds=function(b){var d=g.apply(this,arguments);b=this.backgroundImage;if(null!=b){var f=this.view.translate,c=this.view.scale,d=mxRectangle.fromRectangle(d);d.add(new mxRectangle((f.x+b.x)*c,(f.y+b.y)*c,b.width*c,b.height*c))}return d};k.useCssTransforms&&(this.lazyZoomDelay=0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage=
-"data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,k.isEnabled=function(){return!1},k.panningHandler.isForcePanningEvent=function(b){return!mxEvent.isPopupTrigger(b.getEvent())});this.actions=new Actions(this);
-this.menus=this.createMenus();if(!k.standalone){var p="rounded shadow glass dashed dashPattern labelBackgroundColor labelBorderColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle pointerEvents".split(" "),t="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),
-d="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(b){try{var d=k.getCellStyle(b,!1),f=[],c=[],e;for(e in d)f.push(d[e]),c.push(e);k.getModel().isEdge(b)?k.currentEdgeStyle={}:k.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",c,"values",f,"cells",[b]))}catch(A){this.handleError(A)}};this.clearDefaultStyle=function(){k.currentEdgeStyle=mxUtils.clone(k.defaultEdgeStyle);
-k.currentVertexStyle=mxUtils.clone(k.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var f=["fontFamily","fontSource","fontSize","fontColor"];for(c=0;c<f.length;c++)0>mxUtils.indexOf(p,f[c])&&p.push(f[c]);var l="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),q=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
-["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(c=0;c<q.length;c++)for(e=0;e<q[c].length;e++)p.push(q[c][e]);for(c=0;c<t.length;c++)0>mxUtils.indexOf(p,t[c])&&p.push(t[c]);var m=function(b,f,c,e,l,g,m){e=null!=e?e:k.currentVertexStyle;l=null!=l?l:k.currentEdgeStyle;g=null!=g?g:!0;c=null!=c?c:k.getModel();if(m){m=[];for(var G=0;G<b.length;G++)m=m.concat(c.getDescendants(b[G]));b=m}c.beginUpdate();try{for(G=0;G<b.length;G++){var n=b[G],A;if(f)A=["fontSize","fontFamily","fontColor"];
-else{var v=c.getStyle(n),u=null!=v?v.split(";"):[];A=p.slice();for(var I=0;I<u.length;I++){var x=u[I],t=x.indexOf("=");if(0<=t){var N=x.substring(0,t),y=mxUtils.indexOf(A,N);0<=y&&A.splice(y,1);for(m=0;m<q.length;m++){var z=q[m];if(0<=mxUtils.indexOf(z,N))for(var Y=0;Y<z.length;Y++){var C=mxUtils.indexOf(A,z[Y]);0<=C&&A.splice(C,1)}}}}}var U=c.isEdge(n);m=U?l:e;for(var D=c.getStyle(n),I=0;I<A.length;I++){var N=A[I],O=m[N];null!=O&&"edgeStyle"!=N&&("shape"!=N||U)&&(!U||g||0>mxUtils.indexOf(d,N))&&
-(D=mxUtils.setStyle(D,N,O))}Editor.simpleLabels&&(D=mxUtils.setStyle(mxUtils.setStyle(D,"html",null),"whiteSpace",null));c.setStyle(n,D)}}finally{c.endUpdate()}return b};k.addListener("cellsInserted",function(b,d){m(d.getProperty("cells"),null,null,null,null,!0,!0)});k.addListener("textInserted",function(b,d){m(d.getProperty("cells"),!0)});this.insertHandler=m;this.createDivs();this.createUi();this.refresh();var n=mxUtils.bind(this,function(b){null==b&&(b=window.event);return k.isEditing()||null!=
-b&&this.isSelectionAllowed(b)});this.container==document.body&&(this.menubarContainer.onselectstart=n,this.menubarContainer.onmousedown=n,this.toolbarContainer.onselectstart=n,this.toolbarContainer.onmousedown=n,this.diagramContainer.onselectstart=n,this.diagramContainer.onmousedown=n,this.sidebarContainer.onselectstart=n,this.sidebarContainer.onmousedown=n,this.formatContainer.onselectstart=n,this.formatContainer.onmousedown=n,this.footerContainer.onselectstart=n,this.footerContainer.onmousedown=
-n,null!=this.tabContainer&&(this.tabContainer.onselectstart=n));!this.editor.chromeless||this.editor.editable?(c=function(b){if(null!=b){var d=mxEvent.getSource(b);if("A"==d.nodeName)for(;null!=d;){if("geHint"==d.className)return!0;d=d.parentNode}}return n(b)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",c):this.diagramContainer.oncontextmenu=c):k.panningHandler.usePopupTrigger=!1;k.init(this.diagramContainer);
-mxClient.IS_SVG&&null!=k.view.getDrawPane()&&(c=k.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=k.graphHandler){var u=k.graphHandler.start;k.graphHandler.start=function(){null!=C.hoverIcons&&C.hoverIcons.reset();u.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(b){var d=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(b)-d.x-this.diagramContainer.clientWidth||
-0<mxEvent.getClientY(b)-d.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var v=!1,y=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(b,d){return v||y.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(b){32!=b.which||k.isEditing()?mxEvent.isConsumed(b)||27!=b.keyCode||this.hideDialog(null,!0):(v=!0,this.hoverIcons.reset(),k.container.style.cursor="move",
-k.isEditing()||mxEvent.getSource(b)!=k.container||mxEvent.consume(b))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(b){k.container.style.cursor="";v=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var x=k.panningHandler.isForcePanningEvent;k.panningHandler.isForcePanningEvent=function(b){return x.apply(this,arguments)||v||mxEvent.isMouseEvent(b.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(b.getEvent()))&&(!mxEvent.isControlDown(b.getEvent())&&
-mxEvent.isRightMouseButton(b.getEvent())||mxEvent.isMiddleMouseButton(b.getEvent()))};var F=k.cellEditor.isStopEditingEvent;k.cellEditor.isStopEditingEvent=function(b){return F.apply(this,arguments)||13==b.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b)||mxClient.IS_SF&&mxEvent.isShiftDown(b))};var H=k.isZoomWheelEvent;k.isZoomWheelEvent=function(){return v||H.apply(this,arguments)};var z=!1,D=null,L=null,E=null,J=mxUtils.bind(this,function(){if(null!=this.toolbar&&
-z!=k.cellEditor.isContentEditing()){for(var b=this.toolbar.container.firstChild,d=[];null!=b;){var f=b.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,b)&&(b.parentNode.removeChild(b),d.push(b));b=f}b=this.toolbar.fontMenu;f=this.toolbar.sizeMenu;if(null==E)this.toolbar.createTextToolbar();else{for(var c=0;c<E.length;c++)this.toolbar.container.appendChild(E[c]);this.toolbar.fontMenu=D;this.toolbar.sizeMenu=L}z=k.cellEditor.isContentEditing();D=b;L=f;E=d}}),C=this,K=k.cellEditor.startEditing;
-k.cellEditor.startEditing=function(){K.apply(this,arguments);J();if(k.cellEditor.isContentEditing()){var b=!1,d=function(){b||(b=!0,window.setTimeout(function(){var d=k.getSelectedEditingElement();null!=d&&(d=mxUtils.getCurrentStyle(d),null!=d&&null!=C.toolbar&&(C.toolbar.setFontName(Graph.stripQuotes(d.fontFamily)),C.toolbar.setFontSize(parseInt(d.fontSize))));b=!1},0))};mxEvent.addListener(k.cellEditor.textarea,"input",d);mxEvent.addListener(k.cellEditor.textarea,"touchend",d);mxEvent.addListener(k.cellEditor.textarea,
-"mouseup",d);mxEvent.addListener(k.cellEditor.textarea,"keyup",d);d()}};var M=k.cellEditor.stopEditing;k.cellEditor.stopEditing=function(b,d){try{M.apply(this,arguments),J()}catch(U){C.handleError(U)}};k.container.setAttribute("tabindex","0");k.container.style.cursor="default";if(window.self===window.top&&null!=k.container.parentNode)try{k.container.focus()}catch(N){}var aa=k.fireMouseEvent;k.fireMouseEvent=function(b,d,f){b==mxEvent.MOUSE_DOWN&&this.container.focus();aa.apply(this,arguments)};k.popupMenuHandler.autoExpand=
-!0;null!=this.menus&&(k.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(b,d,f){this.menus.createPopupMenu(b,d,f)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(b){k.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(b);this.getKeyHandler=function(){return keyHandler};k.connectionHandler.addListener(mxEvent.CONNECT,function(b,d){var f=[d.getProperty("cell")];d.getProperty("terminalInserted")&&(f.push(d.getProperty("terminal")),window.setTimeout(function(){null!=
-C.hoverIcons&&C.hoverIcons.update(k.view.getState(f[f.length-1]))},0));m(f)});this.addListener("styleChanged",mxUtils.bind(this,function(b,d){var c=d.getProperty("cells"),e=!1,g=!1;if(0<c.length)for(var q=0;q<c.length&&(e=k.getModel().isVertex(c[q])||e,!(g=k.getModel().isEdge(c[q])||g)||!e);q++);else g=e=!0;for(var c=d.getProperty("keys"),m=d.getProperty("values"),q=0;q<c.length;q++){var n=0<=mxUtils.indexOf(f,c[q]);if("strokeColor"!=c[q]||null!=m[q]&&"none"!=m[q])if(0<=mxUtils.indexOf(t,c[q]))g||
-0<=mxUtils.indexOf(l,c[q])?null==m[q]?delete k.currentEdgeStyle[c[q]]:k.currentEdgeStyle[c[q]]=m[q]:e&&0<=mxUtils.indexOf(p,c[q])&&(null==m[q]?delete k.currentVertexStyle[c[q]]:k.currentVertexStyle[c[q]]=m[q]);else if(0<=mxUtils.indexOf(p,c[q])){if(e||n)null==m[q]?delete k.currentVertexStyle[c[q]]:k.currentVertexStyle[c[q]]=m[q];if(g||n||0<=mxUtils.indexOf(l,c[q]))null==m[q]?delete k.currentEdgeStyle[c[q]]:k.currentEdgeStyle[c[q]]=m[q]}}null!=this.toolbar&&(this.toolbar.setFontName(k.currentVertexStyle.fontFamily||
-Menus.prototype.defaultFont),this.toolbar.setFontSize(k.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==k.currentEdgeStyle.edgeStyle&&"1"==k.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==k.currentEdgeStyle.edgeStyle||"none"==k.currentEdgeStyle.edgeStyle||null==k.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==
-k.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==k.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==k.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==k.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==k.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==k.currentEdgeStyle.shape?
-"geSprite geSprite-linkedge":"flexArrow"==k.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==k.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",k.currentEdgeStyle.shape,k.currentEdgeStyle[mxConstants.STYLE_STARTARROW],mxUtils.getValue(k.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className=
-this.getCssClassForMarker("end",k.currentEdgeStyle.shape,k.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(k.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(b=mxUtils.bind(this,function(){var b=k.currentVertexStyle.fontFamily||"Helvetica",d=String(k.currentVertexStyle.fontSize||"12"),f=k.getView().getState(k.getSelectionCell());null!=f&&(b=f.style[mxConstants.STYLE_FONTFAMILY]||b,d=f.style[mxConstants.STYLE_FONTSIZE]||d,10<b.length&&(b=b.substring(0,8)+"..."));this.toolbar.setFontName(b);
-this.toolbar.setFontSize(d)}),k.getSelectionModel().addListener(mxEvent.CHANGE,b),k.getModel().addListener(mxEvent.CHANGE,b));k.addListener(mxEvent.CELLS_ADDED,function(b,d){var f=d.getProperty("cells"),c=d.getProperty("parent");null!=c&&k.getModel().isLayer(c)&&!k.isCellVisible(c)&&null!=f&&0<f.length&&k.getModel().setVisible(c,!0)});this.gestureHandler=mxUtils.bind(this,function(b){null!=this.currentMenu&&mxEvent.getSource(b)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,
-this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,
-"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){k.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){k.view.validateBackground()}));k.addListener("gridSizeChanged",mxUtils.bind(this,function(){k.isGridEnabled()&&k.view.validateBackground()}));this.editor.resetGraph()}this.init();k.standalone||this.open()};
-EditorUi.compactUi=!0;EditorUi.parsePng=function(b,c,e){function k(b,f){var d=p;p+=f;return b.substring(d,p)}function g(b){b=k(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}var p=0;if(k(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(k(b,4),"IHDR"!=k(b,4))null!=e&&e();else{k(b,17);do{e=g(b);var t=k(b,4);if(null!=c&&c(p-8,t,e))break;value=k(b,e);k(b,4);if("IEND"==t)break}while(e)}};mxUtils.extend(EditorUi,mxEventSource);
+mxGraphView.prototype.validateBackgroundStyles=function(){var b=this.graph,d=null==b.background||b.background==mxConstants.NONE?b.defaultPageBackgroundColor:b.background,g=null!=d&&this.gridColor!=d.toLowerCase()?this.gridColor:"#ffffff",c="none",e="";if(b.isGridEnabled()||b.gridVisible){e=10;mxClient.IS_SVG?(c=unescape(encodeURIComponent(this.createSvgGrid(g))),c=window.btoa?btoa(c):Base64.encode(c,!0),c="url(data:image/svg+xml;base64,"+c+")",e=b.gridSize*this.scale*this.gridSteps):c="url("+this.gridImage+
+")";var f=g=0;null!=b.view.backgroundPageShape&&(f=this.getBackgroundPageBounds(),g=1+f.x,f=1+f.y);e=-Math.round(e-mxUtils.mod(this.translate.x*this.scale-g,e))+"px "+-Math.round(e-mxUtils.mod(this.translate.y*this.scale-f,e))+"px"}g=b.view.canvas;null!=g.ownerSVGElement&&(g=g.ownerSVGElement);null!=b.view.backgroundPageShape?(b.view.backgroundPageShape.node.style.backgroundPosition=e,b.view.backgroundPageShape.node.style.backgroundImage=c,b.view.backgroundPageShape.node.style.backgroundColor=d,b.view.backgroundPageShape.node.style.borderColor=
+b.defaultPageBorderColor,b.container.className="geDiagramContainer geDiagramBackdrop",g.style.backgroundImage="none",g.style.backgroundColor=""):(b.container.className="geDiagramContainer",g.style.backgroundPosition=e,g.style.backgroundColor=d,g.style.backgroundImage=c)};mxGraphView.prototype.createSvgGrid=function(b){for(var d=this.graph.gridSize*this.scale;d<this.minGridSize;)d*=2;for(var g=this.gridSteps*d,c=[],e=1;e<this.gridSteps;e++){var f=e*d;c.push("M 0 "+f+" L "+g+" "+f+" M "+f+" 0 L "+f+
+" "+g)}return'<svg width="'+g+'" height="'+g+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+g+'" height="'+g+'" patternUnits="userSpaceOnUse"><path d="'+c.join(" ")+'" fill="none" stroke="'+b+'" opacity="0.2" stroke-width="1"/><path d="M '+g+" 0 L 0 0 0 "+g+'" fill="none" stroke="'+b+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var b=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(c,d){b.apply(this,arguments);
+if(null!=this.shiftPreview1){var g=this.view.canvas;null!=g.ownerSVGElement&&(g=g.ownerSVGElement);var e=this.gridSize*this.view.scale*this.view.gridSteps,e=-Math.round(e-mxUtils.mod(this.view.translate.x*this.view.scale+c,e))+"px "+-Math.round(e-mxUtils.mod(this.view.translate.y*this.view.scale+d,e))+"px";g.style.backgroundPosition=e}};mxGraph.prototype.updatePageBreaks=function(b,d,g){var c=this.view.scale,e=this.view.translate,f=this.pageFormat,k=c*this.pageScale,u=this.view.getBackgroundPageBounds();
+d=u.width;g=u.height;var v=new mxRectangle(c*e.x,c*e.y,f.width*k,f.height*k),t=(b=b&&Math.min(v.width,v.height)>this.minPageBreakDist)?Math.ceil(g/v.height)-1:0,p=b?Math.ceil(d/v.width)-1:0,F=u.x+d,H=u.y+g;null==this.horizontalPageBreaks&&0<t&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<p&&(this.verticalPageBreaks=[]);b=mxUtils.bind(this,function(b){if(null!=b){for(var d=b==this.horizontalPageBreaks?t:p,g=0;g<=d;g++){var c=b==this.horizontalPageBreaks?[new mxPoint(Math.round(u.x),
+Math.round(u.y+(g+1)*v.height)),new mxPoint(Math.round(F),Math.round(u.y+(g+1)*v.height))]:[new mxPoint(Math.round(u.x+(g+1)*v.width),Math.round(u.y)),new mxPoint(Math.round(u.x+(g+1)*v.width),Math.round(H))];null!=b[g]?(b[g].points=c,b[g].redraw()):(c=new mxPolyline(c,this.pageBreakColor),c.dialect=this.dialect,c.isDashed=this.pageBreakDashed,c.pointerEvents=!1,c.init(this.view.backgroundPane),c.redraw(),b[g]=c)}for(g=d;g<b.length;g++)b[g].destroy();b.splice(d,b.length-d)}});b(this.horizontalPageBreaks);
+b(this.verticalPageBreaks)};var c=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(b,d,g){for(var e=0;e<d.length;e++){if(this.graph.isTableCell(d[e])||this.graph.isTableRow(d[e]))return!1;if(this.graph.getModel().isVertex(d[e])){var f=this.graph.getCellGeometry(d[e]);if(null!=f&&f.relative)return!1}}return c.apply(this,arguments)};var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var b=
+e.apply(this,arguments);b.intersects=mxUtils.bind(this,function(d,g){return this.isConnecting()?!0:mxCellMarker.prototype.intersects.apply(b,arguments)});return b};mxGraphView.prototype.createBackgroundPageShape=function(b){return new mxRectangleShape(b,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var b=this.getGraphBounds(),d=0<b.width?b.x/this.scale-this.translate.x:0,g=0<b.height?b.y/this.scale-this.translate.y:0,c=this.graph.pageFormat,
+e=this.graph.pageScale,f=c.width*e,c=c.height*e,e=Math.floor(Math.min(0,d)/f),k=Math.floor(Math.min(0,g)/c);return new mxRectangle(this.scale*(this.translate.x+e*f),this.scale*(this.translate.y+k*c),this.scale*(Math.ceil(Math.max(1,d+b.width/this.scale)/f)-e)*f,this.scale*(Math.ceil(Math.max(1,g+b.height/this.scale)/c)-k)*c)};var k=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(b,d){k.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
+this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=b+"px",this.view.backgroundPageShape.node.style.marginTop=d+"px")};var f=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(b,d,g,c,e,k){var l=f.apply(this,arguments);null==k||k||mxEvent.addListener(l,"mousedown",function(b){mxEvent.consume(b)});return l};var p=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
+function(b,d,g){var c,e=this.graph.model.getParent(b);if(d)c=this.graph.model.isEdge(b)?null:this.graph.getCellGeometry(b),c=!this.graph.model.isEdge(e)&&!this.graph.isSiblingSelected(b)&&(null!=c&&c.relative||!this.graph.isContainer(e)||this.graph.isPart(b));else if(c=p.apply(this,arguments),this.graph.isTableCell(b)||this.graph.isTableRow(b))c=e,this.graph.isTable(c)||(c=this.graph.model.getParent(c)),c=!this.graph.selectionCellsHandler.isHandled(c)||this.graph.isCellSelected(c)&&this.graph.isToggleEvent(g.getEvent())||
+this.graph.isCellSelected(b)&&!this.graph.isToggleEvent(g.getEvent())||this.graph.isTableCell(b)&&this.graph.isCellSelected(e);return c};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(b){b=b.getCell();for(var d=this.graph.getModel(),g=d.getParent(b),c=this.graph.view.getState(g),e=this.graph.isCellSelected(b);null!=c&&(d.isVertex(g)||d.isEdge(g));){var f=this.graph.isCellSelected(g),e=e||f;if(f||!e&&(this.graph.isTableCell(b)||this.graph.isTableRow(b)))b=g;g=d.getParent(g)}return b}})();EditorUi=function(b,c,e){mxEventSource.call(this);this.destroyFunctions=[];this.editor=b||new Editor;this.container=c||document.body;var k=this.editor.graph;k.lightbox=e;var f=k.getGraphBounds;k.getGraphBounds=function(b){var d=f.apply(this,arguments);b=this.backgroundImage;if(null!=b){var g=this.view.translate,c=this.view.scale,d=mxRectangle.fromRectangle(d);d.add(new mxRectangle((g.x+b.x)*c,(g.y+b.y)*c,b.width*c,b.height*c))}return d};k.useCssTransforms&&(this.lazyZoomDelay=0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage=
+"data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.selectionStateListener=mxUtils.bind(this,function(b,d){this.clearSelectionState()});k.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionStateListener);k.getModel().addListener(mxEvent.CHANGE,this.selectionStateListener);
+k.addListener(mxEvent.EDITING_STARTED,this.selectionStateListener);k.addListener(mxEvent.EDITING_STOPPED,this.selectionStateListener);k.getView().addListener("unitChanged",this.selectionStateListener);this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,k.isEnabled=function(){return!1},k.panningHandler.isForcePanningEvent=function(b){return!mxEvent.isPopupTrigger(b.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();if(!k.standalone){var p="rounded shadow glass dashed dashPattern labelBackgroundColor labelBorderColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle pointerEvents".split(" "),
+t="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),d="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(b){try{var d=k.getCellStyle(b,!1),g=[],c=[],e;for(e in d)g.push(d[e]),c.push(e);k.getModel().isEdge(b)?k.currentEdgeStyle={}:k.currentVertexStyle=
+{};this.fireEvent(new mxEventObject("styleChanged","keys",c,"values",g,"cells",[b]))}catch(B){this.handleError(B)}};this.clearDefaultStyle=function(){k.currentEdgeStyle=mxUtils.clone(k.defaultEdgeStyle);k.currentVertexStyle=mxUtils.clone(k.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var g=["fontFamily","fontSource","fontSize","fontColor"];for(c=0;c<g.length;c++)0>mxUtils.indexOf(p,g[c])&&p.push(g[c]);var l="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),
+q=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(c=0;c<q.length;c++)for(e=0;e<q[c].length;e++)p.push(q[c][e]);for(c=0;c<t.length;c++)0>mxUtils.indexOf(p,t[c])&&p.push(t[c]);var m=function(b,g,c,e,l,f,m){e=null!=e?e:k.currentVertexStyle;l=null!=l?l:k.currentEdgeStyle;f=null!=f?f:!0;c=null!=c?c:k.getModel();if(m){m=[];
+for(var G=0;G<b.length;G++)m=m.concat(c.getDescendants(b[G]));b=m}c.beginUpdate();try{for(G=0;G<b.length;G++){var n=b[G],v;if(g)v=["fontSize","fontFamily","fontColor"];else{var B=c.getStyle(n),u=null!=B?B.split(";"):[];v=p.slice();for(var t=0;t<u.length;t++){var I=u[t],x=I.indexOf("=");if(0<=x){var L=I.substring(0,x),y=mxUtils.indexOf(v,L);0<=y&&v.splice(y,1);for(m=0;m<q.length;m++){var z=q[m];if(0<=mxUtils.indexOf(z,L))for(var ca=0;ca<z.length;ca++){var C=mxUtils.indexOf(v,z[ca]);0<=C&&v.splice(C,
+1)}}}}}var U=c.isEdge(n);m=U?l:e;for(var D=c.getStyle(n),t=0;t<v.length;t++){var L=v[t],O=m[L];null!=O&&"edgeStyle"!=L&&("shape"!=L||U)&&(!U||f||0>mxUtils.indexOf(d,L))&&(D=mxUtils.setStyle(D,L,O))}Editor.simpleLabels&&(D=mxUtils.setStyle(mxUtils.setStyle(D,"html",null),"whiteSpace",null));c.setStyle(n,D)}}finally{c.endUpdate()}return b};k.addListener("cellsInserted",function(b,d){m(d.getProperty("cells"),null,null,null,null,!0,!0)});k.addListener("textInserted",function(b,d){m(d.getProperty("cells"),
+!0)});this.insertHandler=m;this.createDivs();this.createUi();this.refresh();var n=mxUtils.bind(this,function(b){null==b&&(b=window.event);return k.isEditing()||null!=b&&this.isSelectionAllowed(b)});this.container==document.body&&(this.menubarContainer.onselectstart=n,this.menubarContainer.onmousedown=n,this.toolbarContainer.onselectstart=n,this.toolbarContainer.onmousedown=n,this.diagramContainer.onselectstart=n,this.diagramContainer.onmousedown=n,this.sidebarContainer.onselectstart=n,this.sidebarContainer.onmousedown=
+n,this.formatContainer.onselectstart=n,this.formatContainer.onmousedown=n,this.footerContainer.onselectstart=n,this.footerContainer.onmousedown=n,null!=this.tabContainer&&(this.tabContainer.onselectstart=n));!this.editor.chromeless||this.editor.editable?(c=function(b){if(null!=b){var d=mxEvent.getSource(b);if("A"==d.nodeName)for(;null!=d;){if("geHint"==d.className)return!0;d=d.parentNode}}return n(b)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,
+"contextmenu",c):this.diagramContainer.oncontextmenu=c):k.panningHandler.usePopupTrigger=!1;k.init(this.diagramContainer);mxClient.IS_SVG&&null!=k.view.getDrawPane()&&(c=k.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=k.graphHandler){var u=k.graphHandler.start;k.graphHandler.start=function(){null!=C.hoverIcons&&C.hoverIcons.reset();u.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,
+function(b){var d=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(b)-d.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(b)-d.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var v=!1,y=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(b,d){return v||y.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(b){32!=b.which||k.isEditing()?
+mxEvent.isConsumed(b)||27!=b.keyCode||this.hideDialog(null,!0):(v=!0,this.hoverIcons.reset(),k.container.style.cursor="move",k.isEditing()||mxEvent.getSource(b)!=k.container||mxEvent.consume(b))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(b){k.container.style.cursor="";v=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var x=k.panningHandler.isForcePanningEvent;k.panningHandler.isForcePanningEvent=function(b){return x.apply(this,
+arguments)||v||mxEvent.isMouseEvent(b.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(b.getEvent()))&&(!mxEvent.isControlDown(b.getEvent())&&mxEvent.isRightMouseButton(b.getEvent())||mxEvent.isMiddleMouseButton(b.getEvent()))};var F=k.cellEditor.isStopEditingEvent;k.cellEditor.isStopEditingEvent=function(b){return F.apply(this,arguments)||13==b.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b)||mxClient.IS_SF&&mxEvent.isShiftDown(b))};var H=k.isZoomWheelEvent;
+k.isZoomWheelEvent=function(){return v||H.apply(this,arguments)};var z=!1,D=null,N=null,E=null,J=mxUtils.bind(this,function(){if(null!=this.toolbar&&z!=k.cellEditor.isContentEditing()){for(var b=this.toolbar.container.firstChild,d=[];null!=b;){var g=b.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,b)&&(b.parentNode.removeChild(b),d.push(b));b=g}b=this.toolbar.fontMenu;g=this.toolbar.sizeMenu;if(null==E)this.toolbar.createTextToolbar();else{for(var c=0;c<E.length;c++)this.toolbar.container.appendChild(E[c]);
+this.toolbar.fontMenu=D;this.toolbar.sizeMenu=N}z=k.cellEditor.isContentEditing();D=b;N=g;E=d}}),C=this,K=k.cellEditor.startEditing;k.cellEditor.startEditing=function(){K.apply(this,arguments);J();if(k.cellEditor.isContentEditing()){var b=!1,d=function(){b||(b=!0,window.setTimeout(function(){var d=k.getSelectedEditingElement();null!=d&&(d=mxUtils.getCurrentStyle(d),null!=d&&null!=C.toolbar&&(C.toolbar.setFontName(Graph.stripQuotes(d.fontFamily)),C.toolbar.setFontSize(parseInt(d.fontSize))));b=!1},
+0))};mxEvent.addListener(k.cellEditor.textarea,"input",d);mxEvent.addListener(k.cellEditor.textarea,"touchend",d);mxEvent.addListener(k.cellEditor.textarea,"mouseup",d);mxEvent.addListener(k.cellEditor.textarea,"keyup",d);d()}};var M=k.cellEditor.stopEditing;k.cellEditor.stopEditing=function(b,d){try{M.apply(this,arguments),J()}catch(U){C.handleError(U)}};k.container.setAttribute("tabindex","0");k.container.style.cursor="default";if(window.self===window.top&&null!=k.container.parentNode)try{k.container.focus()}catch(L){}var Z=
+k.fireMouseEvent;k.fireMouseEvent=function(b,d,g){b==mxEvent.MOUSE_DOWN&&this.container.focus();Z.apply(this,arguments)};k.popupMenuHandler.autoExpand=!0;null!=this.menus&&(k.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(b,d,g){this.menus.createPopupMenu(b,d,g)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(b){k.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(b);this.getKeyHandler=function(){return keyHandler};k.connectionHandler.addListener(mxEvent.CONNECT,
+function(b,d){var g=[d.getProperty("cell")];d.getProperty("terminalInserted")&&(g.push(d.getProperty("terminal")),window.setTimeout(function(){null!=C.hoverIcons&&C.hoverIcons.update(k.view.getState(g[g.length-1]))},0));m(g)});this.addListener("styleChanged",mxUtils.bind(this,function(b,d){var c=d.getProperty("cells"),e=!1,f=!1;if(0<c.length)for(var q=0;q<c.length&&(e=k.getModel().isVertex(c[q])||e,!(f=k.getModel().isEdge(c[q])||f)||!e);q++);else f=e=!0;for(var c=d.getProperty("keys"),m=d.getProperty("values"),
+q=0;q<c.length;q++){var n=0<=mxUtils.indexOf(g,c[q]);if("strokeColor"!=c[q]||null!=m[q]&&"none"!=m[q])if(0<=mxUtils.indexOf(t,c[q]))f||0<=mxUtils.indexOf(l,c[q])?null==m[q]?delete k.currentEdgeStyle[c[q]]:k.currentEdgeStyle[c[q]]=m[q]:e&&0<=mxUtils.indexOf(p,c[q])&&(null==m[q]?delete k.currentVertexStyle[c[q]]:k.currentVertexStyle[c[q]]=m[q]);else if(0<=mxUtils.indexOf(p,c[q])){if(e||n)null==m[q]?delete k.currentVertexStyle[c[q]]:k.currentVertexStyle[c[q]]=m[q];if(f||n||0<=mxUtils.indexOf(l,c[q]))null==
+m[q]?delete k.currentEdgeStyle[c[q]]:k.currentEdgeStyle[c[q]]=m[q]}}null!=this.toolbar&&(this.toolbar.setFontName(k.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(k.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==k.currentEdgeStyle.edgeStyle&&"1"==k.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==k.currentEdgeStyle.edgeStyle||
+"none"==k.currentEdgeStyle.edgeStyle||null==k.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==k.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==k.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==k.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==k.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==k.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),
+null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==k.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==k.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==k.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",k.currentEdgeStyle.shape,k.currentEdgeStyle[mxConstants.STYLE_STARTARROW],
+mxUtils.getValue(k.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("end",k.currentEdgeStyle.shape,k.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(k.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(b=mxUtils.bind(this,function(){var b=k.currentVertexStyle.fontFamily||"Helvetica",d=String(k.currentVertexStyle.fontSize||"12"),g=k.getView().getState(k.getSelectionCell());
+null!=g&&(b=g.style[mxConstants.STYLE_FONTFAMILY]||b,d=g.style[mxConstants.STYLE_FONTSIZE]||d,10<b.length&&(b=b.substring(0,8)+"..."));this.toolbar.setFontName(b);this.toolbar.setFontSize(d)}),k.getSelectionModel().addListener(mxEvent.CHANGE,b),k.getModel().addListener(mxEvent.CHANGE,b));k.addListener(mxEvent.CELLS_ADDED,function(b,d){var g=d.getProperty("cells"),c=d.getProperty("parent");null!=c&&k.getModel().isLayer(c)&&!k.isCellVisible(c)&&null!=g&&0<g.length&&k.getModel().setVisible(c,!0)});this.gestureHandler=
+mxUtils.bind(this,function(b){null!=this.currentMenu&&mxEvent.getSource(b)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",
+this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){k.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){k.view.validateBackground()}));
+k.addListener("gridSizeChanged",mxUtils.bind(this,function(){k.isGridEnabled()&&k.view.validateBackground()}));this.editor.resetGraph()}this.init();k.standalone||this.open()};EditorUi.compactUi=!0;
+EditorUi.parsePng=function(b,c,e){function k(b,g){var d=p;p+=g;return b.substring(d,p)}function f(b){b=k(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}var p=0;if(k(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(k(b,4),"IHDR"!=k(b,4))null!=e&&e();else{k(b,17);do{e=f(b);var t=k(b,4);if(null!=c&&c(p-8,t,e))break;value=k(b,e);k(b,4);if("IEND"==t)break}while(e)}};mxUtils.extend(EditorUi,mxEventSource);
EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=38;EditorUi.prototype.footerHeight=28;EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:"large"!=urlParams["sidebar-entries"]?212:240;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2;
EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1;
EditorUi.prototype.init=function(){var b=this.editor.graph;if(!b.standalone){"0"!=urlParams["shape-picker"]&&this.installShapePicker();mxEvent.addListener(b.container,"scroll",mxUtils.bind(this,function(){b.tooltipHandler.hide();null!=b.connectionHandler&&null!=b.connectionHandler.constraintHandler&&b.connectionHandler.constraintHandler.reset()}));b.addListener(mxEvent.ESCAPE,mxUtils.bind(this,function(){b.tooltipHandler.hide();var c=b.getRubberband();null!=c&&c.cancel()}));mxEvent.addListener(b.container,
"keydown",mxUtils.bind(this,function(b){this.onKeyDown(b)}));mxEvent.addListener(b.container,"keypress",mxUtils.bind(this,function(b){this.onKeyPress(b)}));this.addUndoListener();this.addBeforeUnloadListener();b.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));b.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));var c=b.setDefaultParent,e=this;this.editor.graph.setDefaultParent=function(){c.apply(this,
-arguments);e.updateActionStates()};b.editLink=e.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()}};
+arguments);e.updateActionStates()};b.editLink=e.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()}};EditorUi.prototype.clearSelectionState=function(){this.selectionState=null};EditorUi.prototype.getSelectionState=function(){null==this.selectionState&&(this.selectionState=this.createSelectionState());return this.selectionState};
+EditorUi.prototype.createSelectionState=function(){for(var b=this.editor.graph,c=b.getSelectionCells(),e=this.initSelectionState(),k=!0,f=0;f<c.length;f++){var p=b.getCurrentCellStyle(c[f]);"0"!=mxUtils.getValue(p,mxConstants.STYLE_EDITABLE,"1")&&(this.updateSelectionStateForCell(e,c[f],c,k),k=!1)}this.updateSelectionStateForTableCells(e);return e};
+EditorUi.prototype.initSelectionState=function(){return{vertices:[],edges:[],cells:[],x:null,y:null,width:null,height:null,style:{},containsImage:!1,containsLabel:!1,fill:!0,glass:!0,rounded:!0,autoSize:!1,image:!0,shadow:!0,lineJumps:!0,resizable:!0,table:!1,cell:!1,row:!1,movable:!0,rotatable:!0,stroke:!0,unlocked:this.editor.graph.isEnabled(),connections:!1}};EditorUi.prototype.updateSelectionStateForTableCells=function(b){};
+EditorUi.prototype.updateSelectionStateForCell=function(b,c,e,k){e=this.editor.graph;b.cells.push(c);if(e.getModel().isVertex(c)){b.connections=0<e.model.getEdgeCount(c);b.unlocked=b.unlocked&&!e.isCellLocked(c);b.resizable=b.resizable&&e.isCellResizable(c);b.rotatable=b.rotatable&&e.isCellRotatable(c);b.movable=b.movable&&e.isCellMovable(c)&&!e.isTableRow(c)&&!e.isTableCell(c);b.table=b.table||e.isTable(c);b.cell=b.cell||e.isTableCell(c);b.row=b.row||e.isTableRow(c);b.vertices.push(c);var f=e.getCellGeometry(c);
+if(null!=f&&(0<f.width?null==b.width?b.width=f.width:b.width!=f.width&&(b.width=""):b.containsLabel=!0,0<f.height?null==b.height?b.height=f.height:b.height!=f.height&&(b.height=""):b.containsLabel=!0,!f.relative||null!=f.offset)){var p=f.relative?f.offset.x:f.x,f=f.relative?f.offset.y:f.y;null==b.x?b.x=p:b.x!=p&&(b.x="");null==b.y?b.y=f:b.y!=f&&(b.y="")}}else e.getModel().isEdge(c)&&(b.edges.push(c),b.connections=!0,b.resizable=!1,b.rotatable=!1,b.movable=!1);c=e.view.getState(c);null!=c&&(b.autoSize=
+b.autoSize||e.isAutoSizeState(c),b.glass=b.glass&&e.isGlassState(c),b.rounded=b.rounded&&e.isRoundedState(c),b.lineJumps=b.lineJumps&&e.isLineJumpState(c),b.image=b.image&&e.isImageState(c),b.shadow=b.shadow&&e.isShadowState(c),b.fill=b.fill&&e.isFillState(c),b.stroke=b.stroke&&e.isStrokeState(c),p=mxUtils.getValue(c.style,mxConstants.STYLE_SHAPE,null),b.containsImage=b.containsImage||"image"==p,e.mergeStyle(c.style,b.style,k))};
EditorUi.prototype.installShapePicker=function(){var b=this.editor.graph,c=this;b.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,d){"mouseDown"==d.getProperty("eventName")&&c.hideShapePicker()}));var e=mxUtils.bind(this,function(){c.hideShapePicker(!0)});b.addListener("wheel",e);b.addListener(mxEvent.ESCAPE,e);b.view.addListener(mxEvent.SCALE,e);b.view.addListener(mxEvent.SCALE_AND_TRANSLATE,e);b.getSelectionModel().addListener(mxEvent.CHANGE,e);b.getModel().addListener(mxEvent.CHANGE,
-e);var k=b.popupMenuHandler.isMenuShowing;b.popupMenuHandler.isMenuShowing=function(){return k.apply(this,arguments)||null!=c.shapePicker};var g=b.dblClick;b.dblClick=function(d,e){if(this.isEnabled())if(null!=e||null==c.sidebar||mxEvent.isShiftDown(d)||b.isCellLocked(b.getDefaultParent()))g.apply(this,arguments);else{var f=mxUtils.convertPoint(this.container,mxEvent.getClientX(d),mxEvent.getClientY(d));mxEvent.consume(d);window.setTimeout(mxUtils.bind(this,function(){c.showShapePicker(f.x,f.y)}),
-30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",e);var p=this.hoverIcons.drag;this.hoverIcons.drag=function(){c.hideShapePicker();p.apply(this,arguments)};var t=this.hoverIcons.execute;this.hoverIcons.execute=function(d,e,g){var f=g.getEvent();this.graph.isCloneEvent(f)||mxEvent.isShiftDown(f)?t.apply(this,arguments):this.graph.connectVertex(d.cell,e,this.graph.defaultEdgeLength,f,null,null,mxUtils.bind(this,function(f,l,q){var k=b.getCompositeParent(d.cell);f=b.getCellGeometry(k);
-for(g.consume();null!=k&&b.model.isVertex(k)&&null!=f&&f.relative;)cell=k,k=b.model.getParent(cell),f=b.getCellGeometry(k);window.setTimeout(mxUtils.bind(this,function(){c.showShapePicker(g.getGraphX(),g.getGraphY(),k,mxUtils.bind(this,function(d){q(d);null!=c.hoverIcons&&c.hoverIcons.update(b.view.getState(d))}),e)}),30)}),mxUtils.bind(this,function(b){this.graph.selectCellsForConnectVertex(b,f,this)}))};var d=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(f,e){null!=d&&window.clearTimeout(d);
-d=window.setTimeout(mxUtils.bind(this,function(){var d=e.getProperty("arrow"),f=e.getProperty("direction"),l=e.getProperty("event"),d=d.getBoundingClientRect(),g=mxUtils.getOffset(b.container),k=b.container.scrollLeft+d.x-g.x,g=b.container.scrollTop+d.y-g.y,p=b.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),t=c.showShapePicker(k,g,p,mxUtils.bind(this,function(d){null!=d&&b.connectVertex(p,f,b.defaultEdgeLength,l,!0,!0,function(f,e,l){l(d);null!=c.hoverIcons&&
-c.hoverIcons.update(b.view.getState(d))},function(d){b.selectCellsForConnectVertex(d)},l,this.hoverIcons)}),f,!0);this.centerShapePicker(t,d,k,g,f);mxUtils.setOpacity(t,30);mxEvent.addListener(t,"mouseenter",function(){mxUtils.setOpacity(t,100)});mxEvent.addListener(t,"mouseleave",function(){c.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(b,c){null!=d&&window.clearTimeout(d)}))}};
-EditorUi.prototype.centerShapePicker=function(b,c,e,k,g){if(g==mxConstants.DIRECTION_EAST||g==mxConstants.DIRECTION_WEST)b.style.width="40px";var p=b.getBoundingClientRect();g==mxConstants.DIRECTION_NORTH?(e-=p.width/2-10,k-=p.height+6):g==mxConstants.DIRECTION_SOUTH?(e-=p.width/2-10,k+=c.height+6):g==mxConstants.DIRECTION_WEST?(e-=p.width+6,k-=p.height/2-10):g==mxConstants.DIRECTION_EAST&&(e+=c.width+6,k-=p.height/2-10);b.style.left=e+"px";b.style.top=k+"px"};
-EditorUi.prototype.showShapePicker=function(b,c,e,k,g,p){b=this.createShapePicker(b,c,e,k,g,mxUtils.bind(this,function(){this.hideShapePicker()}),this.getCellsForShapePicker(e,p),p);null!=b&&(null==this.hoverIcons||p||this.hoverIcons.reset(),p=this.editor.graph,p.popupMenuHandler.hideMenu(),p.tooltipHandler.hideTooltip(),this.hideCurrentMenu(),this.hideShapePicker(),this.shapePickerCallback=k,this.shapePicker=b);return b};
-EditorUi.prototype.createShapePicker=function(b,c,e,k,g,p,t,d){var f=null;if(null!=t&&0<t.length){var l=this,q=this.editor.graph,f=document.createElement("div");g=q.view.getState(e);var m=null==e||null!=g&&q.isTransparentState(g)?null:q.copyStyle(e);e=6>t.length?35*t.length:140;f.className="geToolbarContainer geSidebarContainer";f.style.cssText="position:absolute;left:"+b+"px;top:"+c+"px;width:"+e+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
-mxPopupMenu.prototype.zIndex+1+";";d||mxUtils.setPrefixedStyle(f.style,"transform","translate(-22px,-22px)");null!=q.background&&q.background!=mxConstants.NONE&&(f.style.backgroundColor=q.background);q.container.appendChild(f);e=mxUtils.bind(this,function(d){var e=document.createElement("a");e.className="geItem";e.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";f.appendChild(e);null!=m&&"1"!=urlParams.sketch?
-this.sidebar.graph.pasteStyle(m,[d]):l.insertHandler([d],""!=d.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([d],25,25,e,null,!0,!1,d.geometry.width,d.geometry.height);mxEvent.addListener(e,"click",function(){var f=q.cloneCell(d);if(null!=k)k(f);else{f.geometry.x=q.snap(Math.round(b/q.view.scale)-q.view.translate.x-d.geometry.width/2);f.geometry.y=q.snap(Math.round(c/q.view.scale)-q.view.translate.y-d.geometry.height/2);q.model.beginUpdate();try{q.addCell(f)}finally{q.model.endUpdate()}q.setSelectionCell(f);
-q.scrollCellToVisible(f);q.startEditingAtCell(f);null!=l.hoverIcons&&l.hoverIcons.update(q.view.getState(f))}null!=p&&p()})});for(g=0;g<(d?Math.min(t.length,4):t.length);g++)e(t[g]);t=f.offsetTop+f.clientHeight-(q.container.scrollTop+q.container.offsetHeight);0<t&&(f.style.top=Math.max(q.container.scrollTop+22,c-t)+"px");t=f.offsetLeft+f.clientWidth-(q.container.scrollLeft+q.container.offsetWidth);0<t&&(f.style.left=Math.max(q.container.scrollLeft+22,b-t)+"px")}return f};
+e);var k=b.popupMenuHandler.isMenuShowing;b.popupMenuHandler.isMenuShowing=function(){return k.apply(this,arguments)||null!=c.shapePicker};var f=b.dblClick;b.dblClick=function(d,e){if(this.isEnabled())if(null!=e||null==c.sidebar||mxEvent.isShiftDown(d)||b.isCellLocked(b.getDefaultParent()))f.apply(this,arguments);else{var g=mxUtils.convertPoint(this.container,mxEvent.getClientX(d),mxEvent.getClientY(d));mxEvent.consume(d);window.setTimeout(mxUtils.bind(this,function(){c.showShapePicker(g.x,g.y)}),
+30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",e);var p=this.hoverIcons.drag;this.hoverIcons.drag=function(){c.hideShapePicker();p.apply(this,arguments)};var t=this.hoverIcons.execute;this.hoverIcons.execute=function(d,e,f){var g=f.getEvent();this.graph.isCloneEvent(g)||mxEvent.isShiftDown(g)?t.apply(this,arguments):this.graph.connectVertex(d.cell,e,this.graph.defaultEdgeLength,g,null,null,mxUtils.bind(this,function(g,l,q){var k=b.getCompositeParent(d.cell);g=b.getCellGeometry(k);
+for(f.consume();null!=k&&b.model.isVertex(k)&&null!=g&&g.relative;)cell=k,k=b.model.getParent(cell),g=b.getCellGeometry(k);window.setTimeout(mxUtils.bind(this,function(){c.showShapePicker(f.getGraphX(),f.getGraphY(),k,mxUtils.bind(this,function(d){q(d);null!=c.hoverIcons&&c.hoverIcons.update(b.view.getState(d))}),e)}),30)}),mxUtils.bind(this,function(b){this.graph.selectCellsForConnectVertex(b,g,this)}))};var d=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(g,e){null!=d&&window.clearTimeout(d);
+d=window.setTimeout(mxUtils.bind(this,function(){var d=e.getProperty("arrow"),g=e.getProperty("direction"),l=e.getProperty("event"),d=d.getBoundingClientRect(),f=mxUtils.getOffset(b.container),k=b.container.scrollLeft+d.x-f.x,f=b.container.scrollTop+d.y-f.y,t=b.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),p=c.showShapePicker(k,f,t,mxUtils.bind(this,function(d){null!=d&&b.connectVertex(t,g,b.defaultEdgeLength,l,!0,!0,function(g,e,l){l(d);null!=c.hoverIcons&&
+c.hoverIcons.update(b.view.getState(d))},function(d){b.selectCellsForConnectVertex(d)},l,this.hoverIcons)}),g,!0);this.centerShapePicker(p,d,k,f,g);mxUtils.setOpacity(p,30);mxEvent.addListener(p,"mouseenter",function(){mxUtils.setOpacity(p,100)});mxEvent.addListener(p,"mouseleave",function(){c.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(b,c){null!=d&&window.clearTimeout(d)}))}};
+EditorUi.prototype.centerShapePicker=function(b,c,e,k,f){if(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST)b.style.width="40px";var p=b.getBoundingClientRect();f==mxConstants.DIRECTION_NORTH?(e-=p.width/2-10,k-=p.height+6):f==mxConstants.DIRECTION_SOUTH?(e-=p.width/2-10,k+=c.height+6):f==mxConstants.DIRECTION_WEST?(e-=p.width+6,k-=p.height/2-10):f==mxConstants.DIRECTION_EAST&&(e+=c.width+6,k-=p.height/2-10);b.style.left=e+"px";b.style.top=k+"px"};
+EditorUi.prototype.showShapePicker=function(b,c,e,k,f,p){b=this.createShapePicker(b,c,e,k,f,mxUtils.bind(this,function(){this.hideShapePicker()}),this.getCellsForShapePicker(e,p),p);null!=b&&(null==this.hoverIcons||p||this.hoverIcons.reset(),p=this.editor.graph,p.popupMenuHandler.hideMenu(),p.tooltipHandler.hideTooltip(),this.hideCurrentMenu(),this.hideShapePicker(),this.shapePickerCallback=k,this.shapePicker=b);return b};
+EditorUi.prototype.createShapePicker=function(b,c,e,k,f,p,t,d){var g=null;if(null!=t&&0<t.length){var l=this,q=this.editor.graph,g=document.createElement("div");f=q.view.getState(e);var m=null==e||null!=f&&q.isTransparentState(f)?null:q.copyStyle(e);e=6>t.length?35*t.length:140;g.className="geToolbarContainer geSidebarContainer";g.style.cssText="position:absolute;left:"+b+"px;top:"+c+"px;width:"+e+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
+mxPopupMenu.prototype.zIndex+1+";";d||mxUtils.setPrefixedStyle(g.style,"transform","translate(-22px,-22px)");null!=q.background&&q.background!=mxConstants.NONE&&(g.style.backgroundColor=q.background);q.container.appendChild(g);e=mxUtils.bind(this,function(d){var e=document.createElement("a");e.className="geItem";e.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";g.appendChild(e);null!=m&&"1"!=urlParams.sketch?
+this.sidebar.graph.pasteStyle(m,[d]):l.insertHandler([d],""!=d.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([d],25,25,e,null,!0,!1,d.geometry.width,d.geometry.height);mxEvent.addListener(e,"click",function(){var g=q.cloneCell(d);if(null!=k)k(g);else{g.geometry.x=q.snap(Math.round(b/q.view.scale)-q.view.translate.x-d.geometry.width/2);g.geometry.y=q.snap(Math.round(c/q.view.scale)-q.view.translate.y-d.geometry.height/2);q.model.beginUpdate();try{q.addCell(g)}finally{q.model.endUpdate()}q.setSelectionCell(g);
+q.scrollCellToVisible(g);q.startEditingAtCell(g);null!=l.hoverIcons&&l.hoverIcons.update(q.view.getState(g))}null!=p&&p()})});for(f=0;f<(d?Math.min(t.length,4):t.length);f++)e(t[f]);t=g.offsetTop+g.clientHeight-(q.container.scrollTop+q.container.offsetHeight);0<t&&(g.style.top=Math.max(q.container.scrollTop+22,c-t)+"px");t=g.offsetLeft+g.clientWidth-(q.container.scrollLeft+q.container.offsetWidth);0<t&&(g.style.left=Math.max(q.container.scrollLeft+22,b-t)+"px")}return g};
EditorUi.prototype.getCellsForShapePicker=function(b,c){var e=mxUtils.bind(this,function(b,c,e,t){return this.editor.graph.createVertex(null,null,t||"",0,0,c||120,e||60,b,!1)});return[null!=b?this.editor.graph.cloneCell(b):e("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;",40,20,"Text"),e("whiteSpace=wrap;html=1;"),e("ellipse;whiteSpace=wrap;html=1;"),e("rhombus;whiteSpace=wrap;html=1;",80,80),e("rounded=1;whiteSpace=wrap;html=1;"),
e("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;"),e("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,60),e("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;",120,80),e("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),e("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),e("triangle;whiteSpace=wrap;html=1;",60,80),e("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",
120,80),e("shape=tape;whiteSpace=wrap;html=1;",120,100),e("ellipse;shape=cloud;whiteSpace=wrap;html=1;",120,80),e("shape=singleArrow;whiteSpace=wrap;html=1;arrowWidth=0.4;arrowSize=0.4;",80,60),e("shape=waypoint;sketch=0;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;",40,40)]};
@@ -2192,49 +2198,49 @@ EditorUi.prototype.getCssClassForMarker=function(b,c,e,k){return"flexArrow"==c?n
e==mxConstants.ARROW_DIAMOND_THIN?"1"==k?"geSprite geSprite-"+b+"thindiamond":"geSprite geSprite-"+b+"thindiamondtrans":"openAsync"==e?"geSprite geSprite-"+b+"openasync":"dash"==e?"geSprite geSprite-"+b+"dash":"cross"==e?"geSprite geSprite-"+b+"cross":"async"==e?"1"==k?"geSprite geSprite-"+b+"async":"geSprite geSprite-"+b+"asynctrans":"circle"==e||"circlePlus"==e?"1"==k||"circle"==e?"geSprite geSprite-"+b+"circle":"geSprite geSprite-"+b+"circleplus":"ERone"==e?"geSprite geSprite-"+b+"erone":"ERmandOne"==
e?"geSprite geSprite-"+b+"eronetoone":"ERmany"==e?"geSprite geSprite-"+b+"ermany":"ERoneToMany"==e?"geSprite geSprite-"+b+"eronetomany":"ERzeroToOne"==e?"geSprite geSprite-"+b+"eroneopt":"ERzeroToMany"==e?"geSprite geSprite-"+b+"ermanyopt":"geSprite geSprite-noarrow"};EditorUi.prototype.createMenus=function(){return null};
EditorUi.prototype.updatePasteActionStates=function(){var b=this.editor.graph,c=this.actions.get("paste"),e=this.actions.get("pasteHere");c.setEnabled(this.editor.graph.cellEditor.isContentEditing()||(!mxClient.IS_FF&&null!=navigator.clipboard||!mxClipboard.isEmpty())&&b.isEnabled()&&!b.isCellLocked(b.getDefaultParent()));e.setEnabled(c.isEnabled())};
-EditorUi.prototype.initClipboard=function(){var b=this,c=mxClipboard.cut;mxClipboard.cut=function(e){e.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):c.apply(this,arguments);b.updatePasteActionStates()};mxClipboard.copy=function(c){var e=null;if(c.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{for(var e=e||c.getSelectionCells(),e=c.getExportableCells(c.model.getTopmostCells(e)),d={},f=c.createCellLookup(e),l=c.cloneCells(e,null,d),g=new mxGraphModel,k=g.getChildAt(g.getRoot(),
-0),n=0;n<l.length;n++){g.add(k,l[n]);var u=c.view.getState(e[n]);if(null!=u){var v=c.getCellGeometry(l[n]);null!=v&&v.relative&&!g.isEdge(e[n])&&null==f[mxObjectIdentity.get(g.getParent(e[n]))]&&(v.offset=null,v.relative=!1,v.x=u.x/u.view.scale-u.view.translate.x,v.y=u.y/u.view.scale-u.view.translate.y)}}c.updateCustomLinks(c.createCellMapping(d,f),l);mxClipboard.insertCount=1;mxClipboard.setCells(l)}b.updatePasteActionStates();return e};var e=mxClipboard.paste;mxClipboard.paste=function(c){var g=
-null;c.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):g=e.apply(this,arguments);b.updatePasteActionStates();return g};var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);b.updatePasteActionStates()};var g=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(c,e){g.apply(this,arguments);b.updatePasteActionStates()};this.updatePasteActionStates()};
+EditorUi.prototype.initClipboard=function(){var b=this,c=mxClipboard.cut;mxClipboard.cut=function(e){e.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):c.apply(this,arguments);b.updatePasteActionStates()};mxClipboard.copy=function(c){var e=null;if(c.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{for(var e=e||c.getSelectionCells(),e=c.getExportableCells(c.model.getTopmostCells(e)),d={},g=c.createCellLookup(e),l=c.cloneCells(e,null,d),f=new mxGraphModel,k=f.getChildAt(f.getRoot(),
+0),n=0;n<l.length;n++){f.add(k,l[n]);var u=c.view.getState(e[n]);if(null!=u){var v=c.getCellGeometry(l[n]);null!=v&&v.relative&&!f.isEdge(e[n])&&null==g[mxObjectIdentity.get(f.getParent(e[n]))]&&(v.offset=null,v.relative=!1,v.x=u.x/u.view.scale-u.view.translate.x,v.y=u.y/u.view.scale-u.view.translate.y)}}c.updateCustomLinks(c.createCellMapping(d,g),l);mxClipboard.insertCount=1;mxClipboard.setCells(l)}b.updatePasteActionStates();return e};var e=mxClipboard.paste;mxClipboard.paste=function(c){var f=
+null;c.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):f=e.apply(this,arguments);b.updatePasteActionStates();return f};var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);b.updatePasteActionStates()};var f=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(c,e){f.apply(this,arguments);b.updatePasteActionStates()};this.updatePasteActionStates()};
EditorUi.prototype.lazyZoomDelay=20;EditorUi.prototype.wheelZoomDelay=400;EditorUi.prototype.buttonZoomDelay=600;
EditorUi.prototype.initCanvas=function(){var b=this.editor.graph;b.timerAutoScroll=!0;b.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((b.container.offsetWidth-34)/b.view.scale)),Math.max(0,Math.round((b.container.offsetHeight-34)/b.view.scale)))};b.view.getBackgroundPageBounds=function(){var b=this.graph.getPageLayout(),d=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+b.x*d.width),this.scale*(this.translate.y+b.y*d.height),this.scale*b.width*d.width,
-this.scale*b.height*d.height)};b.getPreferredPageSize=function(b,d,f){b=this.getPageLayout();d=this.getPageSize();return new mxRectangle(0,0,b.width*d.width,b.height*d.height)};var c=null,e=this;if(this.editor.isChromelessView()){this.chromelessResize=c=mxUtils.bind(this,function(d,f,c,e){if(null!=b.container&&!b.isViewer()){c=null!=c?c:0;e=null!=e?e:0;var l=b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds(),g=mxUtils.hasScrollbars(b.container),k=b.view.translate,q=b.view.scale,m=mxRectangle.fromRectangle(l);
-m.x=m.x/q-k.x;m.y=m.y/q-k.y;m.width/=q;m.height/=q;var k=b.container.scrollTop,G=b.container.scrollLeft,n=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)n+=3;var A=b.container.offsetWidth-n,n=b.container.offsetHeight-n;d=d?Math.max(.3,Math.min(f||1,A/m.width)):q;f=(A-d*m.width)/2/d;var v=0==this.lightboxVerticalDivider?0:(n-d*m.height)/this.lightboxVerticalDivider/d;g&&(f=Math.max(f,0),v=Math.max(v,0));if(g||l.width<A||l.height<n)b.view.scaleAndTranslate(d,Math.floor(f-
-m.x),Math.floor(v-m.y)),b.container.scrollTop=k*d/q,b.container.scrollLeft=G*d/q;else if(0!=c||0!=e)l=b.view.translate,b.view.setTranslate(Math.floor(l.x+c/q),Math.floor(l.y+e/q))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var k=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",k);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",k)});this.editor.addListener("resetGraphView",mxUtils.bind(this,
-function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(d){b.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(d){b.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var g=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";this.chromelessToolbar.style.boxSizing=
+this.scale*b.height*d.height)};b.getPreferredPageSize=function(b,d,g){b=this.getPageLayout();d=this.getPageSize();return new mxRectangle(0,0,b.width*d.width,b.height*d.height)};var c=null,e=this;if(this.editor.isChromelessView()){this.chromelessResize=c=mxUtils.bind(this,function(d,g,c,e){if(null!=b.container&&!b.isViewer()){c=null!=c?c:0;e=null!=e?e:0;var l=b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds(),f=mxUtils.hasScrollbars(b.container),k=b.view.translate,q=b.view.scale,m=mxRectangle.fromRectangle(l);
+m.x=m.x/q-k.x;m.y=m.y/q-k.y;m.width/=q;m.height/=q;var k=b.container.scrollTop,G=b.container.scrollLeft,n=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)n+=3;var v=b.container.offsetWidth-n,n=b.container.offsetHeight-n;d=d?Math.max(.3,Math.min(g||1,v/m.width)):q;g=(v-d*m.width)/2/d;var u=0==this.lightboxVerticalDivider?0:(n-d*m.height)/this.lightboxVerticalDivider/d;f&&(g=Math.max(g,0),u=Math.max(u,0));if(f||l.width<v||l.height<n)b.view.scaleAndTranslate(d,Math.floor(g-
+m.x),Math.floor(u-m.y)),b.container.scrollTop=k*d/q,b.container.scrollLeft=G*d/q;else if(0!=c||0!=e)l=b.view.translate,b.view.setTranslate(Math.floor(l.x+c/q),Math.floor(l.y+e/q))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var k=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",k);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",k)});this.editor.addListener("resetGraphView",mxUtils.bind(this,
+function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(d){b.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(d){b.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var f=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";this.chromelessToolbar.style.boxSizing=
"border-box";this.chromelessToolbar.style.whiteSpace="nowrap";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left=b.isViewer()?"0":"50%";mxClient.IS_IE||mxClient.IS_IE11?(this.chromelessToolbar.style.backgroundColor="#ffffff",this.chromelessToolbar.style.border="3px solid black"):this.chromelessToolbar.style.backgroundColor="#000000";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","16px");mxUtils.setPrefixedStyle(this.chromelessToolbar.style,
-"transition","opacity 600ms ease-in-out");var p=mxUtils.bind(this,function(){var d=mxUtils.getCurrentStyle(b.container);b.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=d?parseInt(d["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",p);p();var t=0,p=mxUtils.bind(this,function(b,d,f){t++;var c=document.createElement("span");c.style.paddingLeft="8px";c.style.paddingRight=
-"8px";c.style.cursor="pointer";mxEvent.addListener(c,"click",b);null!=f&&c.setAttribute("title",f);b=document.createElement("img");b.setAttribute("border","0");b.setAttribute("src",d);b.style.width="36px";b.style.filter="invert(100%)";c.appendChild(b);this.chromelessToolbar.appendChild(c);return c});null!=g.backBtn&&p(mxUtils.bind(this,function(b){window.location.href=g.backBtn.url;mxEvent.consume(b)}),Editor.backImage,mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var d=p(mxUtils.bind(this,
-function(b){this.actions.get("previousPage").funct();mxEvent.consume(b)}),Editor.previousImage,mxResources.get("previousPage")),f=document.createElement("div");f.style.fontFamily=Editor.defaultHtmlFont;f.style.display="inline-block";f.style.verticalAlign="top";f.style.fontWeight="bold";f.style.marginTop="8px";f.style.fontSize="14px";f.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";this.chromelessToolbar.appendChild(f);var l=p(mxUtils.bind(this,function(b){this.actions.get("nextPage").funct();
-mxEvent.consume(b)}),Editor.nextImage,mxResources.get("nextPage")),q=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(f.innerHTML="",mxUtils.write(f,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});d.style.paddingLeft="0px";d.style.paddingRight="4px";l.style.paddingLeft="4px";l.style.paddingRight="0px";var m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(l.style.display="",d.style.display=
-"",f.style.display="inline-block"):(l.style.display="none",d.style.display="none",f.style.display="none");q()});this.editor.addListener("resetGraphView",m);this.editor.addListener("pageSelected",q)}p(mxUtils.bind(this,function(b){this.actions.get("zoomOut").funct();mxEvent.consume(b)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");p(mxUtils.bind(this,function(b){this.actions.get("zoomIn").funct();mxEvent.consume(b)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");
+"transition","opacity 600ms ease-in-out");var p=mxUtils.bind(this,function(){var d=mxUtils.getCurrentStyle(b.container);b.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=d?parseInt(d["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",p);p();var t=0,p=mxUtils.bind(this,function(b,d,g){t++;var c=document.createElement("span");c.style.paddingLeft="8px";c.style.paddingRight=
+"8px";c.style.cursor="pointer";mxEvent.addListener(c,"click",b);null!=g&&c.setAttribute("title",g);b=document.createElement("img");b.setAttribute("border","0");b.setAttribute("src",d);b.style.width="36px";b.style.filter="invert(100%)";c.appendChild(b);this.chromelessToolbar.appendChild(c);return c});null!=f.backBtn&&p(mxUtils.bind(this,function(b){window.location.href=f.backBtn.url;mxEvent.consume(b)}),Editor.backImage,mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var d=p(mxUtils.bind(this,
+function(b){this.actions.get("previousPage").funct();mxEvent.consume(b)}),Editor.previousImage,mxResources.get("previousPage")),g=document.createElement("div");g.style.fontFamily=Editor.defaultHtmlFont;g.style.display="inline-block";g.style.verticalAlign="top";g.style.fontWeight="bold";g.style.marginTop="8px";g.style.fontSize="14px";g.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";this.chromelessToolbar.appendChild(g);var l=p(mxUtils.bind(this,function(b){this.actions.get("nextPage").funct();
+mxEvent.consume(b)}),Editor.nextImage,mxResources.get("nextPage")),q=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(g.innerHTML="",mxUtils.write(g,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});d.style.paddingLeft="0px";d.style.paddingRight="4px";l.style.paddingLeft="4px";l.style.paddingRight="0px";var m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(l.style.display="",d.style.display=
+"",g.style.display="inline-block"):(l.style.display="none",d.style.display="none",g.style.display="none");q()});this.editor.addListener("resetGraphView",m);this.editor.addListener("pageSelected",q)}p(mxUtils.bind(this,function(b){this.actions.get("zoomOut").funct();mxEvent.consume(b)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");p(mxUtils.bind(this,function(b){this.actions.get("zoomIn").funct();mxEvent.consume(b)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");
p(mxUtils.bind(this,function(d){b.isLightboxView()?(1==b.view.scale?this.lightboxFit():b.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(d)}),Editor.zoomFitImage,mxResources.get("fit"));var n=null,u=null,v=mxUtils.bind(this,function(b){null!=n&&(window.clearTimeout(n),n=null);null!=u&&(window.clearTimeout(u),u=null);n=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);n=null;u=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display=
"none";u=null}),600)}),b||200)}),y=mxUtils.bind(this,function(b){null!=n&&(window.clearTimeout(n),n=null);null!=u&&(window.clearTimeout(u),u=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,b||30)});if("1"==urlParams.layers){this.layersDialog=null;var x=p(mxUtils.bind(this,function(d){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=b.createLayersDialog(null,!0);mxEvent.addListener(this.layersDialog,
-"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var f=x.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily=Editor.defaultHtmlFont;this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.left=f.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
-this.chromelessToolbar.offsetHeight+4+"px";mxClient.IS_IE||mxClient.IS_IE11?(this.layersDialog.style.backgroundColor="#ffffff",this.layersDialog.style.border="2px solid black",this.layersDialog.style.color="#000000"):(this.layersDialog.style.backgroundColor="#000000",this.layersDialog.style.color="#ffffff",mxUtils.setOpacity(this.layersDialog,80));f=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=f.zIndex;document.body.appendChild(this.layersDialog);this.editor.fireEvent(new mxEventObject("layersDialogShown"))}mxEvent.consume(d)}),
+"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var g=x.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily=Editor.defaultHtmlFont;this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.left=g.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
+this.chromelessToolbar.offsetHeight+4+"px";mxClient.IS_IE||mxClient.IS_IE11?(this.layersDialog.style.backgroundColor="#ffffff",this.layersDialog.style.border="2px solid black",this.layersDialog.style.color="#000000"):(this.layersDialog.style.backgroundColor="#000000",this.layersDialog.style.color="#ffffff",mxUtils.setOpacity(this.layersDialog,80));g=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=g.zIndex;document.body.appendChild(this.layersDialog);this.editor.fireEvent(new mxEventObject("layersDialogShown"))}mxEvent.consume(d)}),
Editor.layersImage,mxResources.get("layers")),F=b.getModel();F.addListener(mxEvent.CHANGE,function(){x.style.display=1<F.getChildCount(F.root)?"":"none"})}("1"!=urlParams.openInSameWin||navigator.standalone)&&this.addChromelessToolbarItems(p);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||p(mxUtils.bind(this,function(d){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):b.openLink(this.editor.editButtonLink,
-"editWindow");mxEvent.consume(d)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(m=0;m<this.lightboxToolbarActions.length;m++){var H=this.lightboxToolbarActions[m];H.elem=p(H.fn,H.icon,H.tooltip)}null!=g.refreshBtn&&p(mxUtils.bind(this,function(b){g.refreshBtn.url?window.location.href=g.refreshBtn.url:window.location.reload();mxEvent.consume(b)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=g.fullscreenBtn&&window.self!==window.top&&p(mxUtils.bind(this,
-function(d){g.fullscreenBtn.url?b.openLink(g.fullscreenBtn.url):b.openLink(window.location.href);mxEvent.consume(d)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(g.closeBtn&&window.self===window.top||b.lightbox&&("1"==urlParams.close||this.container!=document.body))&&p(mxUtils.bind(this,function(b){"1"==urlParams.close||g.closeBtn?window.close():(this.destroy(),mxEvent.consume(b))}),Editor.closeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display=
+"editWindow");mxEvent.consume(d)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(m=0;m<this.lightboxToolbarActions.length;m++){var H=this.lightboxToolbarActions[m];H.elem=p(H.fn,H.icon,H.tooltip)}null!=f.refreshBtn&&p(mxUtils.bind(this,function(b){f.refreshBtn.url?window.location.href=f.refreshBtn.url:window.location.reload();mxEvent.consume(b)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=f.fullscreenBtn&&window.self!==window.top&&p(mxUtils.bind(this,
+function(d){f.fullscreenBtn.url?b.openLink(f.fullscreenBtn.url):b.openLink(window.location.href);mxEvent.consume(d)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(f.closeBtn&&window.self===window.top||b.lightbox&&("1"==urlParams.close||this.container!=document.body))&&p(mxUtils.bind(this,function(b){"1"==urlParams.close||f.closeBtn?window.close():(this.destroy(),mxEvent.consume(b))}),Editor.closeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display=
"none";b.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");b.container.appendChild(this.chromelessToolbar);mxEvent.addListener(b.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||(mxEvent.isShiftDown(b)||y(30),v())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(b){mxEvent.consume(b)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",
-mxUtils.bind(this,function(d){b.tooltipHandler.resetTimer();b.tooltipHandler.hideTooltip();mxEvent.isShiftDown(d)?v():y(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(b){mxEvent.isShiftDown(b)?v():y(100);mxEvent.consume(b)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||y(30)}));var z=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(d,f){this.startX=
-f.getGraphX();this.startY=f.getGraphY();this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(b,d){},mouseUp:function(d,f){mxEvent.isTouchEvent(f.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<z&&Math.abs(this.scrollTop-b.container.scrollTop)<z&&Math.abs(this.startX-f.getGraphX())<z&&Math.abs(this.startY-f.getGraphY())<z&&(0<parseFloat(e.chromelessToolbar.style.opacity||0)?v():y(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var D=
-b.view.validate;b.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var b=this.graph.getPagePadding(),d=this.graph.getPageSize();this.translate.x=b.x-(this.x0||0)*d.width;this.translate.y=b.y-(this.y0||0)*d.height}D.apply(this,arguments)};if(!b.isViewer()){var L=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var d=this.getPageLayout(),f=this.getPagePadding(),c=this.getPageSize(),e=Math.ceil(2*
-f.x+d.width*c.width),l=Math.ceil(2*f.y+d.height*c.height),g=b.minimumGraphSize;if(null==g||g.width!=e||g.height!=l)b.minimumGraphSize=new mxRectangle(0,0,e,l);e=f.x-d.x*c.width;f=f.y-d.y*c.height;this.autoTranslate||this.view.translate.x==e&&this.view.translate.y==f?L.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=d.x,this.view.y0=d.y,d=b.view.translate.x,c=b.view.translate.y,b.view.setTranslate(e,f),b.container.scrollLeft+=Math.round((e-d)*b.view.scale),b.container.scrollTop+=Math.round((f-
-c)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var E=b.view.getBackgroundPane(),J=b.view.getDrawPane();b.cumulativeZoomFactor=1;var C=null,K=null,M=null,aa=null,N=null,O=function(d){null!=C&&window.clearTimeout(C);window.setTimeout(function(){if(!b.isMouseDown||aa)C=window.setTimeout(mxUtils.bind(this,function(){b.isFastZoomEnabled()&&(null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,
+mxUtils.bind(this,function(d){b.tooltipHandler.resetTimer();b.tooltipHandler.hideTooltip();mxEvent.isShiftDown(d)?v():y(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(b){mxEvent.isShiftDown(b)?v():y(100);mxEvent.consume(b)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||y(30)}));var z=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(d,g){this.startX=
+g.getGraphX();this.startY=g.getGraphY();this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(b,d){},mouseUp:function(d,g){mxEvent.isTouchEvent(g.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<z&&Math.abs(this.scrollTop-b.container.scrollTop)<z&&Math.abs(this.startX-g.getGraphX())<z&&Math.abs(this.startY-g.getGraphY())<z&&(0<parseFloat(e.chromelessToolbar.style.opacity||0)?v():y(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var D=
+b.view.validate;b.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var b=this.graph.getPagePadding(),d=this.graph.getPageSize();this.translate.x=b.x-(this.x0||0)*d.width;this.translate.y=b.y-(this.y0||0)*d.height}D.apply(this,arguments)};if(!b.isViewer()){var N=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var d=this.getPageLayout(),g=this.getPagePadding(),c=this.getPageSize(),e=Math.ceil(2*
+g.x+d.width*c.width),l=Math.ceil(2*g.y+d.height*c.height),f=b.minimumGraphSize;if(null==f||f.width!=e||f.height!=l)b.minimumGraphSize=new mxRectangle(0,0,e,l);e=g.x-d.x*c.width;g=g.y-d.y*c.height;this.autoTranslate||this.view.translate.x==e&&this.view.translate.y==g?N.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=d.x,this.view.y0=d.y,d=b.view.translate.x,c=b.view.translate.y,b.view.setTranslate(e,g),b.container.scrollLeft+=Math.round((e-d)*b.view.scale),b.container.scrollTop+=Math.round((g-
+c)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var E=b.view.getBackgroundPane(),J=b.view.getDrawPane();b.cumulativeZoomFactor=1;var C=null,K=null,M=null,Z=null,L=null,O=function(d){null!=C&&window.clearTimeout(C);window.setTimeout(function(){if(!b.isMouseDown||Z)C=window.setTimeout(mxUtils.bind(this,function(){b.isFastZoomEnabled()&&(null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,
"transform-origin",null),mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform",null)),J.style.transformOrigin="",E.style.transformOrigin="",mxClient.IS_SF?(J.style.transform="scale(1)",E.style.transform="scale(1)",window.setTimeout(function(){J.style.transform="";E.style.transform=""},0)):(J.style.transform="",E.style.transform=""),b.view.getDecoratorPane().style.opacity="",b.view.getOverlayPane().style.opacity="");var d=new mxPoint(b.container.scrollLeft,b.container.scrollTop),
-f=mxUtils.getOffset(b.container),l=b.view.scale,g=0,k=0;null!=K&&(g=b.container.offsetWidth/2-K.x+f.x,k=b.container.offsetHeight/2-K.y+f.y);b.zoom(b.cumulativeZoomFactor,null,20);b.view.scale!=l&&(null!=M&&(g+=d.x-M.x,k+=d.y-M.y),null!=c&&e.chromelessResize(!1,null,g*(b.cumulativeZoomFactor-1),k*(b.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(b.container)||0==g&&0==k||(b.container.scrollLeft-=g*(b.cumulativeZoomFactor-1),b.container.scrollTop-=k*(b.cumulativeZoomFactor-1)));null!=N&&J.setAttribute("filter",
-N);b.cumulativeZoomFactor=1;N=aa=K=M=C=null}),null!=d?d:b.isFastZoomEnabled()?e.wheelZoomDelay:e.lazyZoomDelay)},0)};b.lazyZoom=function(d,f,c,l){l=null!=l?l:this.zoomFactor;(f=f||!b.scrollbars)&&(K=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));d?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=l,this.cumulativeZoomFactor=Math.round(this.view.scale*
-this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=l,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;b.isFastZoomEnabled()&&(null==N&&""!=J.getAttribute("filter")&&(N=J.getAttribute("filter"),
-J.removeAttribute("filter")),M=new mxPoint(b.container.scrollLeft,b.container.scrollTop),d=f||null==K?b.container.scrollLeft+b.container.clientWidth/2:K.x+b.container.scrollLeft-b.container.offsetLeft,l=f||null==K?b.container.scrollTop+b.container.clientHeight/2:K.y+b.container.scrollTop-b.container.offsetTop,J.style.transformOrigin=d+"px "+l+"px",J.style.transform="scale("+this.cumulativeZoomFactor+")",E.style.transformOrigin=d+"px "+l+"px",E.style.transform="scale("+this.cumulativeZoomFactor+")",
-null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(d=b.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(d.style,"transform-origin",(f||null==K?b.container.clientWidth/2+b.container.scrollLeft-d.offsetLeft+"px":K.x+b.container.scrollLeft-d.offsetLeft-b.container.offsetLeft+"px")+" "+(f||null==K?b.container.clientHeight/2+b.container.scrollTop-d.offsetTop+"px":K.y+b.container.scrollTop-d.offsetTop-b.container.offsetTop+"px")),mxUtils.setPrefixedStyle(d.style,"transform",
-"scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=e.hoverIcons&&e.hoverIcons.reset());O(c)};mxEvent.addGestureListeners(b.container,function(b){null!=C&&window.clearTimeout(C)},null,function(d){1!=b.cumulativeZoomFactor&&O(0)});mxEvent.addListener(b.container,"scroll",function(d){null==C||b.isMouseDown||1==b.cumulativeZoomFactor||O(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,f,c,e,l){b.fireEvent(new mxEventObject("wheel"));
-if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!c&&b.isScrollWheelEvent(d))c=b.view.getTranslate(),e=40/b.view.scale,mxEvent.isShiftDown(d)?b.view.setTranslate(c.x+(f?-e:e),c.y):b.view.setTranslate(c.x,c.y+(f?e:-e));else if(c||b.isZoomWheelEvent(d))for(var g=mxEvent.getSource(d);null!=g;){if(g==b.container)return b.tooltipHandler.hideTooltip(),K=null!=e&&null!=l?new mxPoint(e,l):new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d)),aa=c,c=b.zoomFactor,null!=d.deltaY&&Math.round(d.deltaY)!=
-d.deltaY&&(c=1+Math.abs(d.deltaY)/20*(c-1)),b.lazyZoom(f,null,null,c),mxEvent.consume(d),!1;g=g.parentNode}}),b.container);b.panningHandler.zoomGraph=function(d){b.cumulativeZoomFactor=d.scale;b.lazyZoom(0<d.scale,!0);mxEvent.consume(d)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(b){this.actions.get("print").funct();mxEvent.consume(b)}),Editor.printImage,mxResources.get("print"))};
+g=mxUtils.getOffset(b.container),l=b.view.scale,f=0,k=0;null!=K&&(f=b.container.offsetWidth/2-K.x+g.x,k=b.container.offsetHeight/2-K.y+g.y);b.zoom(b.cumulativeZoomFactor,null,20);b.view.scale!=l&&(null!=M&&(f+=d.x-M.x,k+=d.y-M.y),null!=c&&e.chromelessResize(!1,null,f*(b.cumulativeZoomFactor-1),k*(b.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(b.container)||0==f&&0==k||(b.container.scrollLeft-=f*(b.cumulativeZoomFactor-1),b.container.scrollTop-=k*(b.cumulativeZoomFactor-1)));null!=L&&J.setAttribute("filter",
+L);b.cumulativeZoomFactor=1;L=Z=K=M=C=null}),null!=d?d:b.isFastZoomEnabled()?e.wheelZoomDelay:e.lazyZoomDelay)},0)};b.lazyZoom=function(d,g,c,l){l=null!=l?l:this.zoomFactor;(g=g||!b.scrollbars)&&(K=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));d?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=l,this.cumulativeZoomFactor=Math.round(this.view.scale*
+this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=l,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;b.isFastZoomEnabled()&&(null==L&&""!=J.getAttribute("filter")&&(L=J.getAttribute("filter"),
+J.removeAttribute("filter")),M=new mxPoint(b.container.scrollLeft,b.container.scrollTop),d=g||null==K?b.container.scrollLeft+b.container.clientWidth/2:K.x+b.container.scrollLeft-b.container.offsetLeft,l=g||null==K?b.container.scrollTop+b.container.clientHeight/2:K.y+b.container.scrollTop-b.container.offsetTop,J.style.transformOrigin=d+"px "+l+"px",J.style.transform="scale("+this.cumulativeZoomFactor+")",E.style.transformOrigin=d+"px "+l+"px",E.style.transform="scale("+this.cumulativeZoomFactor+")",
+null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(d=b.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(d.style,"transform-origin",(g||null==K?b.container.clientWidth/2+b.container.scrollLeft-d.offsetLeft+"px":K.x+b.container.scrollLeft-d.offsetLeft-b.container.offsetLeft+"px")+" "+(g||null==K?b.container.clientHeight/2+b.container.scrollTop-d.offsetTop+"px":K.y+b.container.scrollTop-d.offsetTop-b.container.offsetTop+"px")),mxUtils.setPrefixedStyle(d.style,"transform",
+"scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=e.hoverIcons&&e.hoverIcons.reset());O(c)};mxEvent.addGestureListeners(b.container,function(b){null!=C&&window.clearTimeout(C)},null,function(d){1!=b.cumulativeZoomFactor&&O(0)});mxEvent.addListener(b.container,"scroll",function(d){null==C||b.isMouseDown||1==b.cumulativeZoomFactor||O(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,g,c,e,l){b.fireEvent(new mxEventObject("wheel"));
+if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!c&&b.isScrollWheelEvent(d))c=b.view.getTranslate(),e=40/b.view.scale,mxEvent.isShiftDown(d)?b.view.setTranslate(c.x+(g?-e:e),c.y):b.view.setTranslate(c.x,c.y+(g?e:-e));else if(c||b.isZoomWheelEvent(d))for(var f=mxEvent.getSource(d);null!=f;){if(f==b.container)return b.tooltipHandler.hideTooltip(),K=null!=e&&null!=l?new mxPoint(e,l):new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d)),Z=c,c=b.zoomFactor,null!=d.deltaY&&Math.round(d.deltaY)!=
+d.deltaY&&(c=1+Math.abs(d.deltaY)/20*(c-1)),b.lazyZoom(g,null,null,c),mxEvent.consume(d),!1;f=f.parentNode}}),b.container);b.panningHandler.zoomGraph=function(d){b.cumulativeZoomFactor=d.scale;b.lazyZoom(0<d.scale,!0);mxEvent.consume(d)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(b){this.actions.get("print").funct();mxEvent.consume(b)}),Editor.printImage,mxResources.get("print"))};
EditorUi.prototype.isPagesEnabled=function(){return this.editor.editable||"1"!=urlParams["hide-pages"]};EditorUi.prototype.createTemporaryGraph=function(b){return Graph.createOffscreenGraph(b)};EditorUi.prototype.addChromelessClickHandler=function(){var b=urlParams.highlight;null!=b&&0<b.length&&(b="#"+b);this.editor.graph.addClickHandler(b)};
EditorUi.prototype.toggleFormatPanel=function(b){b=null!=b?b:0==this.formatWidth;null!=this.format&&(this.formatWidth=b?240:0,this.formatContainer.style.display=b?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))};
EditorUi.prototype.lightboxFit=function(b){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var c=urlParams.border,e=60;null!=c&&(e=parseInt(c));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(e,null,null,null,null,null,b);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var b=this.editor.graph.getModel();return 1==b.getChildCount(b.root)&&0==b.getChildCount(b.getChildAt(b.root,0))};
EditorUi.prototype.isSelectionAllowed=function(b){return"SELECT"==mxEvent.getSource(b).nodeName||"INPUT"==mxEvent.getSource(b).nodeName&&mxUtils.isAncestorNode(this.formatContainer,mxEvent.getSource(b))};EditorUi.prototype.addBeforeUnloadListener=function(){window.onbeforeunload=mxUtils.bind(this,function(){if(!this.editor.isChromelessView())return this.onBeforeUnload()})};EditorUi.prototype.onBeforeUnload=function(){if(this.editor.modified)return mxResources.get("allChangesLost")};
EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(b,c){try{var e=mxUtils.parseXml(b);this.editor.setGraphXml(e.documentElement);this.editor.setModified(!1);this.editor.undoManager.clear();null!=c&&(this.editor.setFilename(c),this.updateDocumentTitle())}catch(k){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+k.message)}}))}catch(b){}this.editor.graph.view.validate();this.editor.graph.sizeDidChange();
-this.editor.fireEvent(new mxEventObject("resetGraphView"))};EditorUi.prototype.showPopupMenu=function(b,c,e,k){this.editor.graph.popupMenuHandler.hideMenu();var g=new mxPopupMenu(b);g.div.className+=" geMenubarMenu";g.smartSeparators=!0;g.showDisabled=!0;g.autoExpand=!0;g.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(g,arguments);g.destroy()});g.popup(c,e,null,k);this.setCurrentMenu(g)};
+this.editor.fireEvent(new mxEventObject("resetGraphView"))};EditorUi.prototype.showPopupMenu=function(b,c,e,k){this.editor.graph.popupMenuHandler.hideMenu();var f=new mxPopupMenu(b);f.div.className+=" geMenubarMenu";f.smartSeparators=!0;f.showDisabled=!0;f.autoExpand=!0;f.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(f,arguments);f.destroy()});f.popup(c,e,null,k);this.setCurrentMenu(f)};
EditorUi.prototype.setCurrentMenu=function(b,c){this.currentMenuElt=c;this.currentMenu=b};EditorUi.prototype.resetCurrentMenu=function(){this.currentMenu=this.currentMenuElt=null};EditorUi.prototype.hideCurrentMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.resetCurrentMenu())};EditorUi.prototype.updateDocumentTitle=function(){var b=this.editor.getOrCreateFilename();null!=this.editor.appName&&(b+=" - "+this.editor.appName);document.title=b};
EditorUi.prototype.createHoverIcons=function(){return new HoverIcons(this.editor.graph)};EditorUi.prototype.redo=function(){try{this.editor.graph.isEditing()?document.execCommand("redo",!1,null):this.editor.undoManager.redo()}catch(b){}};EditorUi.prototype.undo=function(){try{var b=this.editor.graph;if(b.isEditing()){var c=b.cellEditor.textarea.innerHTML;document.execCommand("undo",!1,null);c==b.cellEditor.textarea.innerHTML&&(b.stopEditing(!0),this.editor.undoManager.undo())}else this.editor.undoManager.undo()}catch(e){}};
EditorUi.prototype.canRedo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canRedo()};EditorUi.prototype.canUndo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canUndo()};EditorUi.prototype.getEditBlankXml=function(){return mxUtils.getXml(this.editor.getGraphXml())};EditorUi.prototype.getUrl=function(b){b=null!=b?b:window.location.pathname;var c=0<b.indexOf("?")?1:0,e;for(e in urlParams)b=0==c?b+"?":b+"&",b+=e+"="+urlParams[e],c++;return b};
@@ -2242,29 +2248,29 @@ EditorUi.prototype.setScrollbars=function(b){var c=this.editor.graph,e=c.contain
EditorUi.prototype.resetScrollbars=function(){var b=this.editor.graph;if(!this.editor.extendCanvas)b.container.scrollTop=0,b.container.scrollLeft=0,mxUtils.hasScrollbars(b.container)||b.view.setTranslate(0,0);else if(!this.editor.isChromelessView())if(mxUtils.hasScrollbars(b.container))if(b.pageVisible){var c=b.getPagePadding();b.container.scrollTop=Math.floor(c.y-this.editor.initialTopSpacing)-1;b.container.scrollLeft=Math.floor(Math.min(c.x,(b.container.scrollWidth-b.container.clientWidth)/2))-
1;c=b.getGraphBounds();0<c.width&&0<c.height&&(c.x>b.container.scrollLeft+.9*b.container.clientWidth&&(b.container.scrollLeft=Math.min(c.x+c.width-b.container.clientWidth,c.x-10)),c.y>b.container.scrollTop+.9*b.container.clientHeight&&(b.container.scrollTop=Math.min(c.y+c.height-b.container.clientHeight,c.y-10)))}else{var c=b.getGraphBounds(),e=Math.max(c.width,b.scrollTileSize.width*b.view.scale);b.container.scrollTop=Math.floor(Math.max(0,c.y-Math.max(20,(b.container.clientHeight-Math.max(c.height,
b.scrollTileSize.height*b.view.scale))/4)));b.container.scrollLeft=Math.floor(Math.max(0,c.x-Math.max(0,(b.container.clientWidth-e)/2)))}else{var c=mxRectangle.fromRectangle(b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds()),e=b.view.translate,k=b.view.scale;c.x=c.x/k-e.x;c.y=c.y/k-e.y;c.width/=k;c.height/=k;b.view.setTranslate(Math.floor(Math.max(0,(b.container.clientWidth-c.width)/2)-c.x+2),Math.floor((b.pageVisible?0:Math.max(0,(b.container.clientHeight-c.height)/4))-c.y+1))}};
-EditorUi.prototype.setPageVisible=function(b){var c=this.editor.graph,e=mxUtils.hasScrollbars(c.container),k=0,g=0;e&&(k=c.view.translate.x*c.view.scale-c.container.scrollLeft,g=c.view.translate.y*c.view.scale-c.container.scrollTop);c.pageVisible=b;c.pageBreaksVisible=b;c.preferPageSize=b;c.view.validateBackground();if(e){var p=c.getSelectionCells();c.clearSelection();c.setSelectionCells(p)}c.sizeDidChange();e&&(c.container.scrollLeft=c.view.translate.x*c.view.scale-k,c.container.scrollTop=c.view.translate.y*
-c.view.scale-g);c.defaultPageVisible=b;this.fireEvent(new mxEventObject("pageViewChanged"))};function ChangeGridColor(b,c){this.ui=b;this.color=c}ChangeGridColor.prototype.execute=function(){var b=this.ui.editor.graph.view.gridColor;this.ui.setGridColor(this.color);this.color=b};(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);mxCodecRegistry.register(b)})();
-function ChangePageSetup(b,c,e,k,g){this.ui=b;this.previousColor=this.color=c;this.previousImage=this.image=e;this.previousFormat=this.format=k;this.previousPageScale=this.pageScale=g;this.ignoreImage=this.ignoreColor=!1}
+EditorUi.prototype.setPageVisible=function(b){var c=this.editor.graph,e=mxUtils.hasScrollbars(c.container),k=0,f=0;e&&(k=c.view.translate.x*c.view.scale-c.container.scrollLeft,f=c.view.translate.y*c.view.scale-c.container.scrollTop);c.pageVisible=b;c.pageBreaksVisible=b;c.preferPageSize=b;c.view.validateBackground();if(e){var p=c.getSelectionCells();c.clearSelection();c.setSelectionCells(p)}c.sizeDidChange();e&&(c.container.scrollLeft=c.view.translate.x*c.view.scale-k,c.container.scrollTop=c.view.translate.y*
+c.view.scale-f);c.defaultPageVisible=b;this.fireEvent(new mxEventObject("pageViewChanged"))};function ChangeGridColor(b,c){this.ui=b;this.color=c}ChangeGridColor.prototype.execute=function(){var b=this.ui.editor.graph.view.gridColor;this.ui.setGridColor(this.color);this.color=b};(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);mxCodecRegistry.register(b)})();
+function ChangePageSetup(b,c,e,k,f){this.ui=b;this.previousColor=this.color=c;this.previousImage=this.image=e;this.previousFormat=this.format=k;this.previousPageScale=this.pageScale=f;this.ignoreImage=this.ignoreColor=!1}
ChangePageSetup.prototype.execute=function(){var b=this.ui.editor.graph;if(!this.ignoreColor){this.color=this.previousColor;var c=b.background;this.ui.setBackgroundColor(this.previousColor);this.previousColor=c}if(!this.ignoreImage){this.image=this.previousImage;var c=b.backgroundImage,e=this.previousImage;null!=e&&null!=e.src&&"data:page/id,"==e.src.substring(0,13)&&(e=this.ui.createImageForPageLink(e.src,this.ui.currentPage));this.ui.setBackgroundImage(e);this.previousImage=c}null!=this.previousFormat&&
(this.format=this.previousFormat,c=b.pageFormat,this.previousFormat.width!=c.width||this.previousFormat.height!=c.height)&&(this.ui.setPageFormat(this.previousFormat),this.previousFormat=c);null!=this.foldingEnabled&&this.foldingEnabled!=this.ui.editor.graph.foldingEnabled&&(this.ui.setFoldingEnabled(this.foldingEnabled),this.foldingEnabled=!this.foldingEnabled);null!=this.previousPageScale&&(b=this.ui.editor.graph.pageScale,this.previousPageScale!=b&&(this.ui.setPageScale(this.previousPageScale),
this.previousPageScale=b))};(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat","previousPageScale"]);b.afterDecode=function(b,e,k){k.previousColor=k.color;k.previousImage=k.image;k.previousFormat=k.format;k.previousPageScale=k.pageScale;null!=k.foldingEnabled&&(k.foldingEnabled=!k.foldingEnabled);return k};mxCodecRegistry.register(b)})();
EditorUi.prototype.setBackgroundColor=function(b){this.editor.graph.background=b;this.editor.graph.view.validateBackground();this.fireEvent(new mxEventObject("backgroundColorChanged"))};EditorUi.prototype.setFoldingEnabled=function(b){this.editor.graph.foldingEnabled=b;this.editor.graph.view.revalidate();this.fireEvent(new mxEventObject("foldingEnabledChanged"))};
EditorUi.prototype.setPageFormat=function(b,c){c=null!=c?c:"1"==urlParams.sketch;this.editor.graph.pageFormat=b;c||(this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct());this.fireEvent(new mxEventObject("pageFormatChanged"))};
EditorUi.prototype.setPageScale=function(b){this.editor.graph.pageScale=b;this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct();this.fireEvent(new mxEventObject("pageScaleChanged"))};EditorUi.prototype.setGridColor=function(b){this.editor.graph.view.gridColor=b;this.editor.graph.view.validateBackground();this.fireEvent(new mxEventObject("gridColorChanged"))};
-EditorUi.prototype.addUndoListener=function(){var b=this.actions.get("undo"),c=this.actions.get("redo"),e=this.editor.undoManager,k=mxUtils.bind(this,function(){b.setEnabled(this.canUndo());c.setEnabled(this.canRedo())});e.addListener(mxEvent.ADD,k);e.addListener(mxEvent.UNDO,k);e.addListener(mxEvent.REDO,k);e.addListener(mxEvent.CLEAR,k);var g=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){g.apply(this,arguments);k()};var p=this.editor.graph.cellEditor.stopEditing;
+EditorUi.prototype.addUndoListener=function(){var b=this.actions.get("undo"),c=this.actions.get("redo"),e=this.editor.undoManager,k=mxUtils.bind(this,function(){b.setEnabled(this.canUndo());c.setEnabled(this.canRedo())});e.addListener(mxEvent.ADD,k);e.addListener(mxEvent.UNDO,k);e.addListener(mxEvent.REDO,k);e.addListener(mxEvent.CLEAR,k);var f=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){f.apply(this,arguments);k()};var p=this.editor.graph.cellEditor.stopEditing;
this.editor.graph.cellEditor.stopEditing=function(b,d){p.apply(this,arguments);k()};k()};
-EditorUi.prototype.updateActionStates=function(){var b=this.editor.graph,c=!1,e=!1,k=!1,g=!1,p=!1,t=!1,d=!1,f=[],l=b.getSelectionCells();if(null!=l)for(var q=0;q<l.length;q++){var m=l[q],g=g||b.isTable(m),t=t||b.isTableCell(m),p=p||b.isTableRow(m);b.isCellEditable(m)&&(f.push(m),d=!0,b.getModel().isEdge(m)&&(k=!0),b.getModel().isVertex(m)&&(c=!0,0<b.getModel().getChildCount(m)||b.isContainer(m)))&&(e=!0)}g="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" ");for(q=
-0;q<g.length;q++)this.actions.get(g[q]).setEnabled(d);this.actions.get("lockUnlock").setEnabled(!b.isSelectionEmpty());this.actions.get("setAsDefaultStyle").setEnabled(1==b.getSelectionCount());this.actions.get("clearWaypoints").setEnabled(d);this.actions.get("copySize").setEnabled(1==b.getSelectionCount());this.actions.get("bringForward").setEnabled(1==f.length);this.actions.get("sendBackward").setEnabled(1==f.length);this.actions.get("turn").setEnabled(0<b.getResizableCells(b.getSelectionCells()).length);
-this.actions.get("curved").setEnabled(k);this.actions.get("rotation").setEnabled(c);this.actions.get("wordWrap").setEnabled(c);this.actions.get("autosize").setEnabled(c);k=c&&1==b.getSelectionCount();this.actions.get("group").setEnabled((1<b.getSelectionCount()||k&&!b.isContainer(b.getSelectionCell())&&0==b.model.getChildCount(b.getSelectionCell()))&&!p&&!t);this.actions.get("ungroup").setEnabled(e&&!p&&!t);this.actions.get("removeFromGroup").setEnabled(k&&b.getModel().isVertex(b.getModel().getParent(f[0])));
-b.view.getState(b.getSelectionCell());this.menus.get("navigation").setEnabled(d||null!=b.view.currentRoot);this.actions.get("collapsible").setEnabled(c&&(b.isContainer(b.getSelectionCell())||0<b.model.getChildCount(b.getSelectionCell())));this.actions.get("home").setEnabled(null!=b.view.currentRoot);this.actions.get("exitGroup").setEnabled(null!=b.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==b.getSelectionCount()&&b.isValidRoot(b.getSelectionCell()));e=1==b.getSelectionCount()&&
-b.isCellFoldable(b.getSelectionCell());this.actions.get("expand").setEnabled(e);this.actions.get("collapse").setEnabled(e);this.actions.get("editLink").setEnabled(1==f.length);this.actions.get("openLink").setEnabled(1==b.getSelectionCount()&&null!=b.getLinkForCell(b.getSelectionCell()));this.actions.get("guides").setEnabled(b.isEnabled());this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);f=b.isEnabled()&&!b.isCellLocked(b.getDefaultParent());this.menus.get("layout").setEnabled(f);
-this.menus.get("insert").setEnabled(f);this.menus.get("direction").setEnabled(f&&c);this.menus.get("align").setEnabled(f&&c&&1<b.getSelectionCount());this.menus.get("distribute").setEnabled(f&&c&&1<b.getSelectionCount());this.actions.get("selectVertices").setEnabled(f);this.actions.get("selectEdges").setEnabled(f);this.actions.get("selectAll").setEnabled(f);this.actions.get("selectNone").setEnabled(f);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);
-EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
-EditorUi.prototype.refresh=function(b){b=null!=b?b:!0;var c=this.container.clientWidth,e=this.container.clientHeight;this.container==document.body&&(c=document.body.clientWidth||document.documentElement.clientWidth,e=document.documentElement.clientHeight);var k=0;mxClient.IS_IOS&&!window.navigator.standalone&&window.innerHeight!=document.documentElement.clientHeight&&(k=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var g=Math.max(0,Math.min(this.hsplitPosition,c-this.splitSize-
-20)),c=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",c+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",c+=this.toolbarHeight);0<c&&(c+=1);var p=0;if(null!=this.sidebarFooterContainer){var t=this.footerHeight+k,p=Math.max(0,Math.min(e-c-t,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=g+"px";this.sidebarFooterContainer.style.height=p+"px";
-this.sidebarFooterContainer.style.bottom=t+"px"}e=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=c+"px";this.sidebarContainer.style.width=g+"px";this.formatContainer.style.top=c+"px";this.formatContainer.style.width=e+"px";this.formatContainer.style.display=null!=this.format?"":"none";var t=this.getDiagramContainerOffset(),d=null!=this.hsplit.parentNode?g+this.splitSize:0;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;
-this.hsplit.style.bottom=this.footerHeight+k+"px";this.hsplit.style.left=g+"px";this.footerContainer.style.display=0==this.footerHeight?"none":"";null!=this.tabContainer&&(this.tabContainer.style.left=d+"px");0<this.footerHeight&&(this.footerContainer.style.bottom=k+"px");g=0;null!=this.tabContainer&&(this.tabContainer.style.bottom=this.footerHeight+k+"px",this.tabContainer.style.right=this.diagramContainer.style.right,g=this.tabContainer.clientHeight);this.sidebarContainer.style.bottom=this.footerHeight+
-p+k+"px";this.formatContainer.style.bottom=this.footerHeight+k+"px";"1"!=urlParams.embedInline&&(this.diagramContainer.style.left=d+t.x+"px",this.diagramContainer.style.top=c+t.y+"px",this.diagramContainer.style.right=e+"px",this.diagramContainer.style.bottom=this.footerHeight+k+g+"px");b&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null};
+EditorUi.prototype.updateActionStates=function(){for(var b=this.editor.graph,c=this.getSelectionState(),e=b.isEnabled()&&!b.isCellLocked(b.getDefaultParent()),k="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" "),f=0;f<k.length;f++)this.actions.get(k[f]).setEnabled(0<c.cells.length);this.actions.get("grid").setEnabled(!this.editor.chromeless||
+this.editor.editable);this.actions.get("pasteSize").setEnabled(null!=this.copiedSize&&0<c.vertices.length);this.actions.get("pasteData").setEnabled(null!=this.copiedValue&&0<c.cells.length);this.actions.get("setAsDefaultStyle").setEnabled(1==b.getSelectionCount());this.actions.get("copySize").setEnabled(1==b.getSelectionCount());this.actions.get("lockUnlock").setEnabled(!b.isSelectionEmpty());this.actions.get("bringForward").setEnabled(1==c.cells.length);this.actions.get("sendBackward").setEnabled(1==
+c.cells.length);this.actions.get("rotation").setEnabled(1==c.vertices.length);this.actions.get("wordWrap").setEnabled(1==c.vertices.length);this.actions.get("autosize").setEnabled(1==c.vertices.length);this.actions.get("clearWaypoints").setEnabled(c.connections);this.actions.get("curved").setEnabled(0<c.edges.length);this.actions.get("turn").setEnabled(c.resizable);this.actions.get("group").setEnabled(!c.row&&!c.cell&&(1<c.cells.length||1==c.vertices.length&&0==b.model.getChildCount(c.cells[0])&&
+!b.isContainer(c.vertices[0])));this.actions.get("ungroup").setEnabled(!c.row&&!c.cell&&!c.table&&0<c.vertices.length&&(b.isContainer(c.vertices[0])||0<b.getModel().getChildCount(c.vertices[0])));this.actions.get("removeFromGroup").setEnabled(1==c.cells.length&&b.getModel().isVertex(b.getModel().getParent(c.cells[0])));this.actions.get("collapsible").setEnabled(1==c.vertices.length&&(0<b.model.getChildCount(c.vertices[0])||b.isContainer(c.vertices[0])));this.actions.get("exitGroup").setEnabled(null!=
+b.view.currentRoot);this.actions.get("home").setEnabled(null!=b.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==c.cells.length&&b.isValidRoot(c.cells[0]));this.actions.get("editLink").setEnabled(1==c.cells.length);this.actions.get("openLink").setEnabled(1==c.cells.length&&null!=b.getLinkForCell(c.cells[0]));this.actions.get("guides").setEnabled(b.isEnabled());this.actions.get("selectVertices").setEnabled(e);this.actions.get("selectEdges").setEnabled(e);this.actions.get("selectAll").setEnabled(e);
+this.actions.get("selectNone").setEnabled(e);k=1==c.vertices.length&&b.isCellFoldable(c.vertices[0]);this.actions.get("expand").setEnabled(k);this.actions.get("collapse").setEnabled(k);this.menus.get("navigation").setEnabled(0<c.cells.length||null!=b.view.currentRoot);this.menus.get("layout").setEnabled(e);this.menus.get("insert").setEnabled(e);this.menus.get("direction").setEnabled(c.unlocked&&1==c.vertices.length);this.menus.get("distribute").setEnabled(c.unlocked&&1<c.vertices.length);this.menus.get("align").setEnabled(c.unlocked&&
+1<c.vertices.length);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
+EditorUi.prototype.refresh=function(b){b=null!=b?b:!0;var c=this.container.clientWidth,e=this.container.clientHeight;this.container==document.body&&(c=document.body.clientWidth||document.documentElement.clientWidth,e=document.documentElement.clientHeight);var k=0;mxClient.IS_IOS&&!window.navigator.standalone&&window.innerHeight!=document.documentElement.clientHeight&&(k=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var f=Math.max(0,Math.min(this.hsplitPosition,c-this.splitSize-
+20)),c=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",c+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",c+=this.toolbarHeight);0<c&&(c+=1);var p=0;if(null!=this.sidebarFooterContainer){var t=this.footerHeight+k,p=Math.max(0,Math.min(e-c-t,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=f+"px";this.sidebarFooterContainer.style.height=p+"px";
+this.sidebarFooterContainer.style.bottom=t+"px"}e=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=c+"px";this.sidebarContainer.style.width=f+"px";this.formatContainer.style.top=c+"px";this.formatContainer.style.width=e+"px";this.formatContainer.style.display=null!=this.format?"":"none";var t=this.getDiagramContainerOffset(),d=null!=this.hsplit.parentNode?f+this.splitSize:0;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;
+this.hsplit.style.bottom=this.footerHeight+k+"px";this.hsplit.style.left=f+"px";this.footerContainer.style.display=0==this.footerHeight?"none":"";null!=this.tabContainer&&(this.tabContainer.style.left=d+"px");0<this.footerHeight&&(this.footerContainer.style.bottom=k+"px");f=0;null!=this.tabContainer&&(this.tabContainer.style.bottom=this.footerHeight+k+"px",this.tabContainer.style.right=this.diagramContainer.style.right,f=this.tabContainer.clientHeight);this.sidebarContainer.style.bottom=this.footerHeight+
+p+k+"px";this.formatContainer.style.bottom=this.footerHeight+k+"px";"1"!=urlParams.embedInline&&(this.diagramContainer.style.left=d+t.x+"px",this.diagramContainer.style.top=c+t.y+"px",this.diagramContainer.style.right=e+"px",this.diagramContainer.style.bottom=this.footerHeight+k+f+"px");b&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null};
EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer");this.toolbarContainer=this.createDiv("geToolbarContainer");this.sidebarContainer=this.createDiv("geSidebarContainer");this.formatContainer=this.createDiv("geSidebarContainer geFormatContainer");this.diagramContainer=this.createDiv("geDiagramContainer");this.footerContainer=this.createDiv("geFooterContainer");this.hsplit=this.createDiv("geHsplit");this.hsplit.setAttribute("title",mxResources.get("collapseExpand"));
this.menubarContainer.style.top="0px";this.menubarContainer.style.left="0px";this.menubarContainer.style.right="0px";this.toolbarContainer.style.left="0px";this.toolbarContainer.style.right="0px";this.sidebarContainer.style.left="0px";this.formatContainer.style.right="0px";this.formatContainer.style.zIndex="1";this.diagramContainer.style.right=(null!=this.format?this.formatWidth:0)+"px";this.footerContainer.style.left="0px";this.footerContainer.style.right="0px";this.footerContainer.style.bottom=
"0px";this.footerContainer.style.zIndex=mxPopupMenu.prototype.zIndex-3;this.hsplit.style.width=this.splitSize+"px";if(this.sidebarFooterContainer=this.createSidebarFooterContainer())this.sidebarFooterContainer.style.left="0px";this.editor.chromeless?this.diagramContainer.style.border="none":this.tabContainer=this.createTabContainer()};EditorUi.prototype.createSidebarFooterContainer=function(){return null};
@@ -2273,18 +2279,18 @@ this.sidebar=this.editor.chromeless?null:this.createSidebar(this.sidebarContaine
this.container.appendChild(this.sidebarFooterContainer);this.container.appendChild(this.diagramContainer);null!=this.container&&null!=this.tabContainer&&this.container.appendChild(this.tabContainer);this.toolbar=this.editor.chromeless?null:this.createToolbar(this.createDiv("geToolbar"));null!=this.toolbar&&(this.toolbarContainer.appendChild(this.toolbar.container),this.container.appendChild(this.toolbarContainer));null!=this.sidebar&&(this.container.appendChild(this.hsplit),this.addSplitHandler(this.hsplit,
!0,0,mxUtils.bind(this,function(b){this.hsplitPosition=b;this.refresh()})))};EditorUi.prototype.createStatusContainer=function(){var b=document.createElement("a");b.className="geItem geStatus";return b};EditorUi.prototype.setStatusText=function(b){this.statusContainer.innerHTML=b};EditorUi.prototype.createToolbar=function(b){return new Toolbar(this,b)};EditorUi.prototype.createSidebar=function(b){return new Sidebar(this,b)};EditorUi.prototype.createFormat=function(b){return new Format(this,b)};
EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")};EditorUi.prototype.createDiv=function(b){var c=document.createElement("div");c.className=b;return c};
-EditorUi.prototype.addSplitHandler=function(b,c,e,k){function g(b){if(null!=t){var g=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));k(Math.max(0,d+(c?g.x-t.x:t.y-g.y)-e));mxEvent.consume(b);d!=q()&&(f=!0,l=null)}}function p(b){g(b);t=d=null}var t=null,d=null,f=!0,l=null;mxClient.IS_POINTER&&(b.style.touchAction="none");var q=mxUtils.bind(this,function(){var d=parseInt(c?b.style.left:b.style.bottom);c||(d=d+e-this.footerHeight);return d});mxEvent.addGestureListeners(b,function(b){t=new mxPoint(mxEvent.getClientX(b),
-mxEvent.getClientY(b));d=q();f=!1;mxEvent.consume(b)});mxEvent.addListener(b,"click",mxUtils.bind(this,function(b){if(!f&&this.hsplitClickEnabled){var d=null!=l?l-e:0;l=q();k(d);mxEvent.consume(b)}}));mxEvent.addGestureListeners(document,null,g,p);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,g,p)})};
-EditorUi.prototype.handleError=function(b,c,e,k,g){b=null!=b&&null!=b.error?b.error:b;if(null!=b||null!=c){g=mxUtils.htmlEntities(mxResources.get("unknownError"));var p=mxResources.get("ok");c=null!=c?c:mxResources.get("error");null!=b&&null!=b.message&&(g=mxUtils.htmlEntities(b.message));this.showError(c,g,p,e,null,null,null,null,null,null,null,null,k?e:null)}else null!=e&&e()};
-EditorUi.prototype.showError=function(b,c,e,k,g,p,t,d,f,l,q,m,n){b=new ErrorDialog(this,b,c,e||mxResources.get("ok"),k,g,p,t,m,d,f);c=Math.ceil(null!=c?c.length/50:1);this.showDialog(b.container,l||340,q||100+20*c,!0,!1,n);b.init()};EditorUi.prototype.showDialog=function(b,c,e,k,g,p,t,d,f,l){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,b,c,e,k,g,p,t,d,f,l);this.dialogs.push(this.dialog)};
+EditorUi.prototype.addSplitHandler=function(b,c,e,k){function f(b){if(null!=t){var f=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));k(Math.max(0,d+(c?f.x-t.x:t.y-f.y)-e));mxEvent.consume(b);d!=q()&&(g=!0,l=null)}}function p(b){f(b);t=d=null}var t=null,d=null,g=!0,l=null;mxClient.IS_POINTER&&(b.style.touchAction="none");var q=mxUtils.bind(this,function(){var d=parseInt(c?b.style.left:b.style.bottom);c||(d=d+e-this.footerHeight);return d});mxEvent.addGestureListeners(b,function(b){t=new mxPoint(mxEvent.getClientX(b),
+mxEvent.getClientY(b));d=q();g=!1;mxEvent.consume(b)});mxEvent.addListener(b,"click",mxUtils.bind(this,function(b){if(!g&&this.hsplitClickEnabled){var d=null!=l?l-e:0;l=q();k(d);mxEvent.consume(b)}}));mxEvent.addGestureListeners(document,null,f,p);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,f,p)})};
+EditorUi.prototype.handleError=function(b,c,e,k,f){b=null!=b&&null!=b.error?b.error:b;if(null!=b||null!=c){f=mxUtils.htmlEntities(mxResources.get("unknownError"));var p=mxResources.get("ok");c=null!=c?c:mxResources.get("error");null!=b&&null!=b.message&&(f=mxUtils.htmlEntities(b.message));this.showError(c,f,p,e,null,null,null,null,null,null,null,null,k?e:null)}else null!=e&&e()};
+EditorUi.prototype.showError=function(b,c,e,k,f,p,t,d,g,l,q,m,n){b=new ErrorDialog(this,b,c,e||mxResources.get("ok"),k,f,p,t,m,d,g);c=Math.ceil(null!=c?c.length/50:1);this.showDialog(b.container,l||340,q||100+20*c,!0,!1,n);b.init()};EditorUi.prototype.showDialog=function(b,c,e,k,f,p,t,d,g,l){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,b,c,e,k,f,p,t,d,g,l);this.dialogs.push(this.dialog)};
EditorUi.prototype.hideDialog=function(b,c,e){null!=this.dialogs&&0<this.dialogs.length&&(null==e||e==this.dialog.container.firstChild)&&(e=this.dialogs.pop(),0==e.close(b,c)?this.dialogs.push(e):(this.dialog=0<this.dialogs.length?this.dialogs[this.dialogs.length-1]:null,this.editor.fireEvent(new mxEventObject("hideDialog")),null==this.dialog&&"hidden"!=this.editor.graph.container.style.visibility&&window.setTimeout(mxUtils.bind(this,function(){this.editor.graph.isEditing()&&null!=this.editor.graph.cellEditor.textarea?
-this.editor.graph.cellEditor.textarea.focus():(mxUtils.clearSelection(),this.editor.graph.container.focus())}),0)))};EditorUi.prototype.ctrlEnter=function(){var b=this.editor.graph;if(b.isEnabled())try{for(var c=b.getSelectionCells(),e=new mxDictionary,k=[],g=0;g<c.length;g++){var p=b.isTableCell(c[g])?b.model.getParent(c[g]):c[g];null==p||e.get(p)||(e.put(p,!0),k.push(p))}b.setSelectionCells(b.duplicateCells(k,!1))}catch(t){this.handleError(t)}};
-EditorUi.prototype.pickColor=function(b,c){var e=this.editor.graph,k=e.cellEditor.saveSelection(),g=230+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12)),p=new ColorDialog(this,mxUtils.rgba2hex(b)||"none",function(b){e.cellEditor.restoreSelection(k);c(b)},function(){e.cellEditor.restoreSelection(k)});this.showDialog(p.container,230,g,!0,!1);p.init()};
+this.editor.graph.cellEditor.textarea.focus():(mxUtils.clearSelection(),this.editor.graph.container.focus())}),0)))};EditorUi.prototype.ctrlEnter=function(){var b=this.editor.graph;if(b.isEnabled())try{for(var c=b.getSelectionCells(),e=new mxDictionary,k=[],f=0;f<c.length;f++){var p=b.isTableCell(c[f])?b.model.getParent(c[f]):c[f];null==p||e.get(p)||(e.put(p,!0),k.push(p))}b.setSelectionCells(b.duplicateCells(k,!1))}catch(t){this.handleError(t)}};
+EditorUi.prototype.pickColor=function(b,c){var e=this.editor.graph,k=e.cellEditor.saveSelection(),f=230+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12)),p=new ColorDialog(this,mxUtils.rgba2hex(b)||"none",function(b){e.cellEditor.restoreSelection(k);c(b)},function(){e.cellEditor.restoreSelection(k)});this.showDialog(p.container,230,f,!0,!1);p.init()};
EditorUi.prototype.openFile=function(){window.openFile=new OpenFile(mxUtils.bind(this,function(b){this.hideDialog(b)}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:320,Editor.useLocalStorage?480:220,!0,!0,function(){window.openFile=null})};
-EditorUi.prototype.extractGraphModelFromHtml=function(b){var c=null;try{var e=b.indexOf("&lt;mxGraphModel ");if(0<=e){var k=b.lastIndexOf("&lt;/mxGraphModel&gt;");k>e&&(c=b.substring(e,k+21).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}}catch(g){}return c};
+EditorUi.prototype.extractGraphModelFromHtml=function(b){var c=null;try{var e=b.indexOf("&lt;mxGraphModel ");if(0<=e){var k=b.lastIndexOf("&lt;/mxGraphModel&gt;");k>e&&(c=b.substring(e,k+21).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}}catch(f){}return c};
EditorUi.prototype.readGraphModelFromClipboard=function(b){this.readGraphModelFromClipboardWithType(mxUtils.bind(this,function(c){null!=c?b(c):this.readGraphModelFromClipboardWithType(mxUtils.bind(this,function(c){if(null!=c){var e=decodeURIComponent(c);this.isCompatibleString(e)&&(c=e)}b(c)}),"text")}),"html")};
-EditorUi.prototype.readGraphModelFromClipboardWithType=function(b,c){navigator.clipboard.read().then(mxUtils.bind(this,function(e){if(null!=e&&0<e.length&&"html"==c&&0<=mxUtils.indexOf(e[0].types,"text/html"))e[0].getType("text/html").then(mxUtils.bind(this,function(c){c.text().then(mxUtils.bind(this,function(c){try{var e=this.parseHtmlData(c),g="text/plain"!=e.getAttribute("data-type")?e.innerHTML:mxUtils.trim(null==e.innerText?mxUtils.getTextContent(e):e.innerText);try{var d=g.lastIndexOf("%3E");
-0<=d&&d<g.length-3&&(g=g.substring(0,d+3))}catch(q){}try{var f=e.getElementsByTagName("span"),l=null!=f&&0<f.length?mxUtils.trim(decodeURIComponent(f[0].textContent)):decodeURIComponent(g);this.isCompatibleString(l)&&(g=l)}catch(q){}}catch(q){}b(this.isCompatibleString(g)?g:null)}))["catch"](function(c){b(null)})}))["catch"](function(c){b(null)});else if(null!=e&&0<e.length&&"text"==c&&0<=mxUtils.indexOf(e[0].types,"text/plain"))e[0].getType("text/plain").then(function(c){c.text().then(function(c){b(c)})["catch"](function(){b(null)})})["catch"](function(){b(null)});
+EditorUi.prototype.readGraphModelFromClipboardWithType=function(b,c){navigator.clipboard.read().then(mxUtils.bind(this,function(e){if(null!=e&&0<e.length&&"html"==c&&0<=mxUtils.indexOf(e[0].types,"text/html"))e[0].getType("text/html").then(mxUtils.bind(this,function(c){c.text().then(mxUtils.bind(this,function(c){try{var e=this.parseHtmlData(c),f="text/plain"!=e.getAttribute("data-type")?e.innerHTML:mxUtils.trim(null==e.innerText?mxUtils.getTextContent(e):e.innerText);try{var d=f.lastIndexOf("%3E");
+0<=d&&d<f.length-3&&(f=f.substring(0,d+3))}catch(q){}try{var g=e.getElementsByTagName("span"),l=null!=g&&0<g.length?mxUtils.trim(decodeURIComponent(g[0].textContent)):decodeURIComponent(f);this.isCompatibleString(l)&&(f=l)}catch(q){}}catch(q){}b(this.isCompatibleString(f)?f:null)}))["catch"](function(c){b(null)})}))["catch"](function(c){b(null)});else if(null!=e&&0<e.length&&"text"==c&&0<=mxUtils.indexOf(e[0].types,"text/plain"))e[0].getType("text/plain").then(function(c){c.text().then(function(c){b(c)})["catch"](function(){b(null)})})["catch"](function(){b(null)});
else b(null)}))["catch"](function(c){b(null)})};
EditorUi.prototype.parseHtmlData=function(b){var c=null;if(null!=b&&0<b.length){var e="<meta "==b.substring(0,6),c=document.createElement("div");c.innerHTML=(e?'<meta charset="utf-8">':"")+this.editor.graph.sanitizeHtml(b);asHtml=!0;b=c.getElementsByTagName("style");if(null!=b)for(;0<b.length;)b[0].parentNode.removeChild(b[0]);null!=c.firstChild&&c.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=c.firstChild.nextSibling&&c.firstChild.nextSibling.nodeType==mxConstants.NODETYPE_ELEMENT&&"META"==
c.firstChild.nodeName&&"A"==c.firstChild.nextSibling.nodeName&&null==c.firstChild.nextSibling.nextSibling&&(b=null==c.firstChild.nextSibling.innerText?mxUtils.getTextContent(c.firstChild.nextSibling):c.firstChild.nextSibling.innerText,b==c.firstChild.nextSibling.getAttribute("href")&&(mxUtils.setTextContent(c,b),asHtml=!1));e=e&&null!=c.firstChild?c.firstChild.nextSibling:c.firstChild;null!=e&&null==e.nextSibling&&e.nodeType==mxConstants.NODETYPE_ELEMENT&&"IMG"==e.nodeName?(b=e.getAttribute("src"),
@@ -2293,114 +2299,118 @@ EditorUi.prototype.extractGraphModelFromEvent=function(b){var c=null,e=null;null
(c=e);return c};EditorUi.prototype.isCompatibleString=function(b){return!1};EditorUi.prototype.saveFile=function(b){b||null==this.editor.filename?(b=new FilenameDialog(this,this.editor.getOrCreateFilename(),mxResources.get("save"),mxUtils.bind(this,function(b){this.save(b)}),null,mxUtils.bind(this,function(b){if(null!=b&&0<b.length)return!0;mxUtils.confirm(mxResources.get("invalidName"));return!1})),this.showDialog(b.container,300,100,!0,!0),b.init()):this.save(this.editor.getOrCreateFilename())};
EditorUi.prototype.save=function(b){if(null!=b){this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var c=mxUtils.getXml(this.editor.getGraphXml());try{if(Editor.useLocalStorage){if(null!=localStorage.getItem(b)&&!mxUtils.confirm(mxResources.get("replaceIt",[b])))return;localStorage.setItem(b,c);this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("saved"))+" "+new Date)}else if(c.length<MAX_REQUEST_SIZE)(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(b)+"&xml="+encodeURIComponent(c))).simulate(document,
"_blank");else{mxUtils.alert(mxResources.get("drawingTooLarge"));mxUtils.popup(c);return}this.editor.setModified(!1);this.editor.setFilename(b);this.updateDocumentTitle()}catch(e){this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("errorSavingFile")))}}};
-EditorUi.prototype.executeLayout=function(b,c,e){var k=this.editor.graph;if(k.isEnabled()){k.getModel().beginUpdate();try{b()}catch(g){throw g;}finally{this.allowAnimation&&c&&(null==navigator.userAgent||0>navigator.userAgent.indexOf("Camino"))?(b=new mxMorphing(k),b.addListener(mxEvent.DONE,mxUtils.bind(this,function(){k.getModel().endUpdate();null!=e&&e()})),b.startAnimation()):(k.getModel().endUpdate(),null!=e&&e())}}};
-EditorUi.prototype.showImageDialog=function(b,c,e,k){k=this.editor.graph.cellEditor;var g=k.saveSelection(),p=mxUtils.prompt(b,c);k.restoreSelection(g);if(null!=p&&0<p.length){var t=new Image;t.onload=function(){e(p,t.width,t.height)};t.onerror=function(){e(null);mxUtils.alert(mxResources.get("fileNotFound"))};t.src=p}else e(null)};EditorUi.prototype.showLinkDialog=function(b,c,e){b=new LinkDialog(this,b,c,e);this.showDialog(b.container,420,90,!0,!0);b.init()};
+EditorUi.prototype.executeLayout=function(b,c,e){var k=this.editor.graph;if(k.isEnabled()){k.getModel().beginUpdate();try{b()}catch(f){throw f;}finally{this.allowAnimation&&c&&(null==navigator.userAgent||0>navigator.userAgent.indexOf("Camino"))?(b=new mxMorphing(k),b.addListener(mxEvent.DONE,mxUtils.bind(this,function(){k.getModel().endUpdate();null!=e&&e()})),b.startAnimation()):(k.getModel().endUpdate(),null!=e&&e())}}};
+EditorUi.prototype.showImageDialog=function(b,c,e,k){k=this.editor.graph.cellEditor;var f=k.saveSelection(),p=mxUtils.prompt(b,c);k.restoreSelection(f);if(null!=p&&0<p.length){var t=new Image;t.onload=function(){e(p,t.width,t.height)};t.onerror=function(){e(null);mxUtils.alert(mxResources.get("fileNotFound"))};t.src=p}else e(null)};EditorUi.prototype.showLinkDialog=function(b,c,e){b=new LinkDialog(this,b,c,e);this.showDialog(b.container,420,90,!0,!0);b.init()};
EditorUi.prototype.showDataDialog=function(b){null!=b&&(b=new EditDataDialog(this,b),this.showDialog(b.container,480,420,!0,!1,null,!1),b.init())};
EditorUi.prototype.showBackgroundImageDialog=function(b,c){b=null!=b?b:mxUtils.bind(this,function(b){b=new ChangePageSetup(this,null,b);b.ignoreColor=!0;this.editor.graph.model.execute(b)});var e=mxUtils.prompt(mxResources.get("backgroundImage"),null!=c?c.src:"");null!=e&&0<e.length?(c=new Image,c.onload=function(){b(new mxImage(e,c.width,c.height),!1)},c.onerror=function(){b(null,!0);mxUtils.alert(mxResources.get("fileNotFound"))},c.src=e):b(null)};
EditorUi.prototype.setBackgroundImage=function(b){this.editor.graph.setBackgroundImage(b);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(b,c,e){mxUtils.confirm(b)?null!=c&&c():null!=e&&e()};EditorUi.prototype.createOutline=function(b){var c=new mxOutline(this.editor.graph);mxEvent.addListener(window,"resize",function(){c.update(!1)});return c};
EditorUi.prototype.altShiftActions={67:"clearWaypoints",65:"connectionArrows",76:"editLink",80:"connectionPoints",84:"editTooltip",86:"pasteSize",88:"copySize",66:"copyData",69:"pasteData"};
-EditorUi.prototype.createKeyHandler=function(b){function c(b,d,f){if(!k.isSelectionEmpty()&&k.isEnabled())if(d=null!=d?d:1,f){k.getModel().beginUpdate();try{var c=k.getSelectionCells();for(f=0;f<c.length;f++)if(k.getModel().isVertex(c[f])&&k.isCellResizable(c[f])){var e=k.getCellGeometry(c[f]);null!=e&&(e=e.clone(),37==b?e.width=Math.max(0,e.width-d):38==b?e.height=Math.max(0,e.height-d):39==b?e.width+=d:40==b&&(e.height+=d),k.getModel().setGeometry(c[f],e))}}finally{k.getModel().endUpdate()}}else{var c=
-k.getSelectionCell(),e=k.model.getParent(c),l=k.getView().scale;f=null;1==k.getSelectionCount()&&k.model.isVertex(c)&&null!=k.layoutManager&&!k.isCellLocked(c)&&(f=k.layoutManager.getLayout(e));if(null!=f&&f.constructor==mxStackLayout)d=e.getIndex(c),37==b||38==b?k.model.add(e,c,Math.max(0,d-1)):39!=b&&40!=b||k.model.add(e,c,Math.min(k.model.getChildCount(e),d+1));else{var g=k.graphHandler;null!=g&&(null==g.first&&g.start(k.getSelectionCell(),0,0,k.getSelectionCells()),null!=g.first&&(e=c=0,37==b?
-c=-d:38==b?e=-d:39==b?c=d:40==b&&(e=d),g.currentDx+=c*l,g.currentDy+=e*l,g.checkPreview(),g.updatePreview()),null!=t&&window.clearTimeout(t),t=window.setTimeout(function(){if(null!=g.first){var b=g.roundLength(g.currentDx/l),d=g.roundLength(g.currentDy/l);g.moveCells(g.cells,b,d);g.reset()}},400))}}}var e=this,k=this.editor.graph,g=new mxKeyHandler(k),p=g.isEventIgnored;g.isEventIgnored=function(b){return!(mxEvent.isShiftDown(b)&&9==b.keyCode)&&(!this.isControlDown(b)||mxEvent.isShiftDown(b)||90!=
-b.keyCode&&89!=b.keyCode&&188!=b.keyCode&&190!=b.keyCode&&85!=b.keyCode)&&(66!=b.keyCode&&73!=b.keyCode||!this.isControlDown(b)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&&!mxClient.IS_SF)&&p.apply(this,arguments)};g.isEnabledForEvent=function(b){return!mxEvent.isConsumed(b)&&this.isGraphEvent(b)&&this.isEnabled()&&(null==e.dialogs||0==e.dialogs.length)};g.isControlDown=function(b){return mxEvent.isControlDown(b)||mxClient.IS_MAC&&b.metaKey};var t=null,d={37:mxConstants.DIRECTION_WEST,
-38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},f=g.getFunction;mxKeyHandler.prototype.getFunction=function(b){if(k.isEnabled()){if(mxEvent.isShiftDown(b)&&mxEvent.isAltDown(b)){var l=e.actions.get(e.altShiftActions[b.keyCode]);if(null!=l)return l.funct}if(null!=d[b.keyCode]&&!k.isSelectionEmpty())if(!this.isControlDown(b)&&mxEvent.isShiftDown(b)&&mxEvent.isAltDown(b)){if(k.model.isVertex(k.getSelectionCell()))return function(){var f=k.connectVertex(k.getSelectionCell(),
-d[b.keyCode],k.defaultEdgeLength,b,!0);null!=f&&0<f.length&&(1==f.length&&k.model.isEdge(f[0])?k.setSelectionCell(k.model.getTerminal(f[0],!1)):k.setSelectionCell(f[f.length-1]),k.scrollCellToVisible(k.getSelectionCell()),null!=e.hoverIcons&&e.hoverIcons.update(k.view.getState(k.getSelectionCell())))}}else return this.isControlDown(b)?function(){c(b.keyCode,mxEvent.isShiftDown(b)?k.gridSize:null,!0)}:function(){c(b.keyCode,mxEvent.isShiftDown(b)?k.gridSize:null)}}return f.apply(this,arguments)};g.bindAction=
-mxUtils.bind(this,function(b,d,f,c){var e=this.actions.get(f);null!=e&&(f=function(){e.isEnabled()&&e.funct()},d?c?g.bindControlShiftKey(b,f):g.bindControlKey(b,f):c?g.bindShiftKey(b,f):g.bindKey(b,f))});var l=this,q=g.escape;g.escape=function(b){q.apply(this,arguments)};g.enter=function(){};g.bindControlShiftKey(36,function(){k.exitGroup()});g.bindControlShiftKey(35,function(){k.enterGroup()});g.bindShiftKey(36,function(){k.home()});g.bindKey(35,function(){k.refresh()});g.bindAction(107,!0,"zoomIn");
-g.bindAction(109,!0,"zoomOut");g.bindAction(80,!0,"print");g.bindAction(79,!0,"outline",!0);if(!this.editor.chromeless||this.editor.editable)g.bindControlKey(36,function(){k.isEnabled()&&k.foldCells(!0)}),g.bindControlKey(35,function(){k.isEnabled()&&k.foldCells(!1)}),g.bindControlKey(13,function(){l.ctrlEnter()}),g.bindAction(8,!1,"delete"),g.bindAction(8,!0,"deleteAll"),g.bindAction(8,!1,"deleteLabels",!0),g.bindAction(46,!1,"delete"),g.bindAction(46,!0,"deleteAll"),g.bindAction(46,!1,"deleteLabels",
-!0),g.bindAction(36,!1,"resetView"),g.bindAction(72,!0,"fitWindow",!0),g.bindAction(74,!0,"fitPage"),g.bindAction(74,!0,"fitTwoPages",!0),g.bindAction(48,!0,"customZoom"),g.bindAction(82,!0,"turn"),g.bindAction(82,!0,"clearDefaultStyle",!0),g.bindAction(83,!0,"save"),g.bindAction(83,!0,"saveAs",!0),g.bindAction(65,!0,"selectAll"),g.bindAction(65,!0,"selectNone",!0),g.bindAction(73,!0,"selectVertices",!0),g.bindAction(69,!0,"selectEdges",!0),g.bindAction(69,!0,"editStyle"),g.bindAction(66,!0,"bold"),
-g.bindAction(66,!0,"toBack",!0),g.bindAction(70,!0,"toFront",!0),g.bindAction(68,!0,"duplicate"),g.bindAction(68,!0,"setAsDefaultStyle",!0),g.bindAction(90,!0,"undo"),g.bindAction(89,!0,"autosize",!0),g.bindAction(88,!0,"cut"),g.bindAction(67,!0,"copy"),g.bindAction(86,!0,"paste"),g.bindAction(71,!0,"group"),g.bindAction(77,!0,"editData"),g.bindAction(71,!0,"grid",!0),g.bindAction(73,!0,"italic"),g.bindAction(76,!0,"lockUnlock"),g.bindAction(76,!0,"layers",!0),g.bindAction(80,!0,"formatPanel",!0),
-g.bindAction(85,!0,"underline"),g.bindAction(85,!0,"ungroup",!0),g.bindAction(190,!0,"superscript"),g.bindAction(188,!0,"subscript"),g.bindAction(13,!1,"keyPressEnter"),g.bindKey(113,function(){k.isEnabled()&&k.startEditingAtCell()});mxClient.IS_WIN?g.bindAction(89,!0,"redo"):g.bindAction(90,!0,"redo",!0);return g};
-EditorUi.prototype.destroy=function(){null!=this.editor&&(this.editor.destroy(),this.editor=null);null!=this.menubar&&(this.menubar.destroy(),this.menubar=null);null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null);null!=this.sidebar&&(this.sidebar.destroy(),this.sidebar=null);null!=this.keyHandler&&(this.keyHandler.destroy(),this.keyHandler=null);null!=this.keydownHandler&&(mxEvent.removeListener(document,"keydown",this.keydownHandler),this.keydownHandler=null);null!=this.keyupHandler&&
-(mxEvent.removeListener(document,"keyup",this.keyupHandler),this.keyupHandler=null);null!=this.resizeHandler&&(mxEvent.removeListener(window,"resize",this.resizeHandler),this.resizeHandler=null);null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null);null!=this.orientationChangeHandler&&(mxEvent.removeListener(window,"orientationchange",this.orientationChangeHandler),this.orientationChangeHandler=null);null!=this.scrollHandler&&(mxEvent.removeListener(window,
-"scroll",this.scrollHandler),this.scrollHandler=null);if(null!=this.destroyFunctions){for(var b=0;b<this.destroyFunctions.length;b++)this.destroyFunctions[b]();this.destroyFunctions=null}for(var c=[this.menubarContainer,this.toolbarContainer,this.sidebarContainer,this.formatContainer,this.diagramContainer,this.footerContainer,this.chromelessToolbar,this.hsplit,this.sidebarFooterContainer,this.layersDialog],b=0;b<c.length;b++)null!=c[b]&&null!=c[b].parentNode&&c[b].parentNode.removeChild(c[b])};"undefined"!==typeof html4&&(html4.ATTRIBS["a::target"]=0,html4.ATTRIBS["source::src"]=0,html4.ATTRIBS["video::src"]=0);(function(){var b=[["nbsp","160"],["shy","173"]],c=mxUtils.parseXml;mxUtils.parseXml=function(e){for(var k=0;k<b.length;k++)e=e.replace(new RegExp("&"+b[k][0]+";","g"),"&#"+b[k][1]+";");return c(e)}})();
+EditorUi.prototype.createKeyHandler=function(b){function c(b,d,g){if(!k.isSelectionEmpty()&&k.isEnabled())if(d=null!=d?d:1,g){k.getModel().beginUpdate();try{var c=k.getSelectionCells();for(g=0;g<c.length;g++)if(k.getModel().isVertex(c[g])&&k.isCellResizable(c[g])){var e=k.getCellGeometry(c[g]);null!=e&&(e=e.clone(),37==b?e.width=Math.max(0,e.width-d):38==b?e.height=Math.max(0,e.height-d):39==b?e.width+=d:40==b&&(e.height+=d),k.getModel().setGeometry(c[g],e))}}finally{k.getModel().endUpdate()}}else{var c=
+k.getSelectionCell(),e=k.model.getParent(c),l=k.getView().scale;g=null;1==k.getSelectionCount()&&k.model.isVertex(c)&&null!=k.layoutManager&&!k.isCellLocked(c)&&(g=k.layoutManager.getLayout(e));if(null!=g&&g.constructor==mxStackLayout)d=e.getIndex(c),37==b||38==b?k.model.add(e,c,Math.max(0,d-1)):39!=b&&40!=b||k.model.add(e,c,Math.min(k.model.getChildCount(e),d+1));else{var f=k.graphHandler;null!=f&&(null==f.first&&f.start(k.getSelectionCell(),0,0,k.getSelectionCells()),null!=f.first&&(e=c=0,37==b?
+c=-d:38==b?e=-d:39==b?c=d:40==b&&(e=d),f.currentDx+=c*l,f.currentDy+=e*l,f.checkPreview(),f.updatePreview()),null!=t&&window.clearTimeout(t),t=window.setTimeout(function(){if(null!=f.first){var b=f.roundLength(f.currentDx/l),d=f.roundLength(f.currentDy/l);f.moveCells(f.cells,b,d);f.reset()}},400))}}}var e=this,k=this.editor.graph,f=new mxKeyHandler(k),p=f.isEventIgnored;f.isEventIgnored=function(b){return!(mxEvent.isShiftDown(b)&&9==b.keyCode)&&(!this.isControlDown(b)||mxEvent.isShiftDown(b)||90!=
+b.keyCode&&89!=b.keyCode&&188!=b.keyCode&&190!=b.keyCode&&85!=b.keyCode)&&(66!=b.keyCode&&73!=b.keyCode||!this.isControlDown(b)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&&!mxClient.IS_SF)&&p.apply(this,arguments)};f.isEnabledForEvent=function(b){return!mxEvent.isConsumed(b)&&this.isGraphEvent(b)&&this.isEnabled()&&(null==e.dialogs||0==e.dialogs.length)};f.isControlDown=function(b){return mxEvent.isControlDown(b)||mxClient.IS_MAC&&b.metaKey};var t=null,d={37:mxConstants.DIRECTION_WEST,
+38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},g=f.getFunction;mxKeyHandler.prototype.getFunction=function(b){if(k.isEnabled()){if(mxEvent.isShiftDown(b)&&mxEvent.isAltDown(b)){var l=e.actions.get(e.altShiftActions[b.keyCode]);if(null!=l)return l.funct}if(null!=d[b.keyCode]&&!k.isSelectionEmpty())if(!this.isControlDown(b)&&mxEvent.isShiftDown(b)&&mxEvent.isAltDown(b)){if(k.model.isVertex(k.getSelectionCell()))return function(){var g=k.connectVertex(k.getSelectionCell(),
+d[b.keyCode],k.defaultEdgeLength,b,!0);null!=g&&0<g.length&&(1==g.length&&k.model.isEdge(g[0])?k.setSelectionCell(k.model.getTerminal(g[0],!1)):k.setSelectionCell(g[g.length-1]),k.scrollCellToVisible(k.getSelectionCell()),null!=e.hoverIcons&&e.hoverIcons.update(k.view.getState(k.getSelectionCell())))}}else return this.isControlDown(b)?function(){c(b.keyCode,mxEvent.isShiftDown(b)?k.gridSize:null,!0)}:function(){c(b.keyCode,mxEvent.isShiftDown(b)?k.gridSize:null)}}return g.apply(this,arguments)};f.bindAction=
+mxUtils.bind(this,function(b,d,g,c){var e=this.actions.get(g);null!=e&&(g=function(){e.isEnabled()&&e.funct()},d?c?f.bindControlShiftKey(b,g):f.bindControlKey(b,g):c?f.bindShiftKey(b,g):f.bindKey(b,g))});var l=this,q=f.escape;f.escape=function(b){q.apply(this,arguments)};f.enter=function(){};f.bindControlShiftKey(36,function(){k.exitGroup()});f.bindControlShiftKey(35,function(){k.enterGroup()});f.bindShiftKey(36,function(){k.home()});f.bindKey(35,function(){k.refresh()});f.bindAction(107,!0,"zoomIn");
+f.bindAction(109,!0,"zoomOut");f.bindAction(80,!0,"print");f.bindAction(79,!0,"outline",!0);if(!this.editor.chromeless||this.editor.editable)f.bindControlKey(36,function(){k.isEnabled()&&k.foldCells(!0)}),f.bindControlKey(35,function(){k.isEnabled()&&k.foldCells(!1)}),f.bindControlKey(13,function(){l.ctrlEnter()}),f.bindAction(8,!1,"delete"),f.bindAction(8,!0,"deleteAll"),f.bindAction(8,!1,"deleteLabels",!0),f.bindAction(46,!1,"delete"),f.bindAction(46,!0,"deleteAll"),f.bindAction(46,!1,"deleteLabels",
+!0),f.bindAction(36,!1,"resetView"),f.bindAction(72,!0,"fitWindow",!0),f.bindAction(74,!0,"fitPage"),f.bindAction(74,!0,"fitTwoPages",!0),f.bindAction(48,!0,"customZoom"),f.bindAction(82,!0,"turn"),f.bindAction(82,!0,"clearDefaultStyle",!0),f.bindAction(83,!0,"save"),f.bindAction(83,!0,"saveAs",!0),f.bindAction(65,!0,"selectAll"),f.bindAction(65,!0,"selectNone",!0),f.bindAction(73,!0,"selectVertices",!0),f.bindAction(69,!0,"selectEdges",!0),f.bindAction(69,!0,"editStyle"),f.bindAction(66,!0,"bold"),
+f.bindAction(66,!0,"toBack",!0),f.bindAction(70,!0,"toFront",!0),f.bindAction(68,!0,"duplicate"),f.bindAction(68,!0,"setAsDefaultStyle",!0),f.bindAction(90,!0,"undo"),f.bindAction(89,!0,"autosize",!0),f.bindAction(88,!0,"cut"),f.bindAction(67,!0,"copy"),f.bindAction(86,!0,"paste"),f.bindAction(71,!0,"group"),f.bindAction(77,!0,"editData"),f.bindAction(71,!0,"grid",!0),f.bindAction(73,!0,"italic"),f.bindAction(76,!0,"lockUnlock"),f.bindAction(76,!0,"layers",!0),f.bindAction(80,!0,"formatPanel",!0),
+f.bindAction(85,!0,"underline"),f.bindAction(85,!0,"ungroup",!0),f.bindAction(190,!0,"superscript"),f.bindAction(188,!0,"subscript"),f.bindAction(13,!1,"keyPressEnter"),f.bindKey(113,function(){k.isEnabled()&&k.startEditingAtCell()});mxClient.IS_WIN?f.bindAction(89,!0,"redo"):f.bindAction(90,!0,"redo",!0);return f};
+EditorUi.prototype.destroy=function(){var b=this.editor.graph;null!=b&&null!=this.selectionStateListener&&(b.getSelectionModel().removeListener(mxEvent.CHANGE,this.selectionStateListener),b.getModel().removeListener(mxEvent.CHANGE,this.selectionStateListener),b.removeListener(mxEvent.EDITING_STARTED,this.selectionStateListener),b.removeListener(mxEvent.EDITING_STOPPED,this.selectionStateListener),b.getView().removeListener("unitChanged",this.selectionStateListener),this.selectionStateListener=null);
+null!=this.editor&&(this.editor.destroy(),this.editor=null);null!=this.menubar&&(this.menubar.destroy(),this.menubar=null);null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null);null!=this.sidebar&&(this.sidebar.destroy(),this.sidebar=null);null!=this.keyHandler&&(this.keyHandler.destroy(),this.keyHandler=null);null!=this.keydownHandler&&(mxEvent.removeListener(document,"keydown",this.keydownHandler),this.keydownHandler=null);null!=this.keyupHandler&&(mxEvent.removeListener(document,"keyup",
+this.keyupHandler),this.keyupHandler=null);null!=this.resizeHandler&&(mxEvent.removeListener(window,"resize",this.resizeHandler),this.resizeHandler=null);null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null);null!=this.orientationChangeHandler&&(mxEvent.removeListener(window,"orientationchange",this.orientationChangeHandler),this.orientationChangeHandler=null);null!=this.scrollHandler&&(mxEvent.removeListener(window,"scroll",this.scrollHandler),
+this.scrollHandler=null);if(null!=this.destroyFunctions){for(b=0;b<this.destroyFunctions.length;b++)this.destroyFunctions[b]();this.destroyFunctions=null}for(var c=[this.menubarContainer,this.toolbarContainer,this.sidebarContainer,this.formatContainer,this.diagramContainer,this.footerContainer,this.chromelessToolbar,this.hsplit,this.sidebarFooterContainer,this.layersDialog],b=0;b<c.length;b++)null!=c[b]&&null!=c[b].parentNode&&c[b].parentNode.removeChild(c[b])};"undefined"!==typeof html4&&(html4.ATTRIBS["a::target"]=0,html4.ATTRIBS["source::src"]=0,html4.ATTRIBS["video::src"]=0);(function(){var b=[["nbsp","160"],["shy","173"]],c=mxUtils.parseXml;mxUtils.parseXml=function(e){for(var k=0;k<b.length;k++)e=e.replace(new RegExp("&"+b[k][0]+";","g"),"&#"+b[k][1]+";");return c(e)}})();
Date.prototype.toISOString||function(){function b(b){b=String(b);1===b.length&&(b="0"+b);return b}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+b(this.getUTCMonth()+1)+"-"+b(this.getUTCDate())+"T"+b(this.getUTCHours())+":"+b(this.getUTCMinutes())+":"+b(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}}();Date.now||(Date.now=function(){return(new Date).getTime()});
-Uint8Array.from||(Uint8Array.from=function(){var b=Object.prototype.toString,c=function(c){return"function"===typeof c||"[object Function]"===b.call(c)},e=Math.pow(2,53)-1;return function(b){var g=Object(b);if(null==b)throw new TypeError("Array.from requires an array-like object - not null or undefined");var k=1<arguments.length?arguments[1]:void 0,t;if("undefined"!==typeof k){if(!c(k))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(t=
-arguments[2])}var d;d=Number(g.length);d=isNaN(d)?0:0!==d&&isFinite(d)?(0<d?1:-1)*Math.floor(Math.abs(d)):d;d=Math.min(Math.max(d,0),e);for(var f=c(this)?Object(new this(d)):Array(d),l=0,q;l<d;)q=g[l],f[l]=k?"undefined"===typeof t?k(q,l):k.call(t,q,l):q,l+=1;f.length=d;return f}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
+Uint8Array.from||(Uint8Array.from=function(){var b=Object.prototype.toString,c=function(c){return"function"===typeof c||"[object Function]"===b.call(c)},e=Math.pow(2,53)-1;return function(b){var f=Object(b);if(null==b)throw new TypeError("Array.from requires an array-like object - not null or undefined");var k=1<arguments.length?arguments[1]:void 0,t;if("undefined"!==typeof k){if(!c(k))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(t=
+arguments[2])}var d;d=Number(f.length);d=isNaN(d)?0:0!==d&&isFinite(d)?(0<d?1:-1)*Math.floor(Math.abs(d)):d;d=Math.min(Math.max(d,0),e);for(var g=c(this)?Object(new this(d)):Array(d),l=0,q;l<d;)q=f[l],g[l]=k?"undefined"===typeof t?k(q,l):k.call(t,q,l):q,l+=1;g.length=d;return g}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var b=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===b||"en-ca"===b||"es-mx"===b?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(c){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;
mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;mxGraphView.prototype.unit=mxConstants.POINTS;
mxGraphView.prototype.setUnit=function(b){this.unit!=b&&(this.unit=b,this.fireEvent(new mxEventObject("unitChanged","unit",b)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(b,c,e){return null};
mxImageShape.prototype.getImageDataUri=function(){var b=this.image;if("data:image/svg+xml;base64,"==b.substring(0,26)&&null!=this.style&&"1"==mxUtils.getValue(this.style,"clipSvg","0")){if(null==this.clippedSvg||this.clippedImage!=b)this.clippedSvg=Graph.clipSvgDataUri(b,!0),this.clippedImage=b;b=this.clippedSvg}return b};
-Graph=function(b,c,e,k,g,p){mxGraph.call(this,b,c,e,k);this.themes=g||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=p?p:!1;b=this.baseUrl;c=b.indexOf("//");this.domainPathUrl=this.domainUrl="";0<c&&(c=b.indexOf("/",c+2),0<c&&(this.domainUrl=b.substring(0,c)),c=b.lastIndexOf("/"),0<c&&(this.domainPathUrl=b.substring(0,c+1)));this.isHtmlLabel=function(b){b=this.getCurrentCellStyle(b);
-return null!=b?"1"==b.html||"wrap"==b[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var t=null,d=null,f=null,l=null,q=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,c){if("mouseDown"==c.getProperty("eventName")&&this.isEnabled()){var e=c.getProperty("event"),g=e.getState(),k=this.view.scale;if(!mxEvent.isAltDown(e.getEvent())&&null!=g)if(this.model.isEdge(g.cell))if(t=new mxPoint(e.getGraphX(),e.getGraphY()),q=this.isCellSelected(g.cell),f=g,d=e,null!=g.text&&null!=
-g.text.boundingBox&&mxUtils.contains(g.text.boundingBox,e.getGraphX(),e.getGraphY()))l=mxEvent.LABEL_HANDLE;else{var m=this.selectionCellsHandler.getHandler(g.cell);null!=m&&null!=m.bends&&0<m.bends.length&&(l=m.getHandleForEvent(e))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(e.getEvent())&&(m=this.selectionCellsHandler.getHandler(g.cell),null==m||null==m.getHandleForEvent(e))){var n=new mxRectangle(e.getGraphX()-1,e.getGraphY()-1);n.grow(mxEvent.isTouchEvent(e.getEvent())?mxShape.prototype.svgStrokeTolerance-
-1:(mxShape.prototype.svgStrokeTolerance+1)/2);if(this.isTableCell(g.cell)&&!this.isCellSelected(g.cell)){var v=this.model.getParent(g.cell),m=this.model.getParent(v);if(!this.isCellSelected(m)){var u=this.getCellGeometry(g.cell),u=null!=u.alternateBounds?u.alternateBounds:u;if(mxUtils.intersects(n,new mxRectangle(g.x,g.y-2,u.width*k,3))&&this.model.getChildAt(m,0)!=v||mxUtils.intersects(n,new mxRectangle(g.x,g.y+u.height-2,u.width,3))||mxUtils.intersects(n,new mxRectangle(g.x-2,g.y,2,u.height*k))&&
-this.model.getChildAt(v,0)!=g.cell||mxUtils.intersects(n,new mxRectangle(g.x+u.width*k-2,g.y,2,u.height*k)))v=this.selectionCellsHandler.isHandled(m),this.selectCellForEvent(m,e.getEvent()),m=this.selectionCellsHandler.getHandler(m),null!=m&&(u=m.getHandleForEvent(e),null!=u&&(m.start(e.getGraphX(),e.getGraphY(),u),m.blockDelayedSelection=!v,e.consume()))}}for(;!e.isConsumed()&&null!=g&&(this.isTableCell(g.cell)||this.isTableRow(g.cell)||this.isTable(g.cell));)this.isSwimlane(g.cell)&&(m=this.getActualStartSize(g.cell),
-(0<m.x||0<m.width)&&mxUtils.intersects(n,new mxRectangle(g.x+(m.x-m.width-1)*k+(0==m.x?g.width:0),g.y,1,g.height))||(0<m.y||0<m.height)&&mxUtils.intersects(n,new mxRectangle(g.x,g.y+(m.y-m.height-1)*k+(0==m.y?g.height:0),g.width,1)))&&(this.selectCellForEvent(g.cell,e.getEvent()),m=this.selectionCellsHandler.getHandler(g.cell),null!=m&&(u=mxEvent.CUSTOM_HANDLE-m.customHandles.length+1,m.start(e.getGraphX(),e.getGraphY(),u),e.consume())),g=this.view.getState(this.model.getParent(g.cell))}}}));this.addMouseListener({mouseDown:function(b,
-d){},mouseMove:mxUtils.bind(this,function(b,c){var e=this.selectionCellsHandler.handlers.map,g;for(g in e)if(null!=e[g].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(c.getEvent()))if(g=this.tolerance,null!=t&&null!=f&&null!=d){if(e=f,Math.abs(t.x-c.getGraphX())>g||Math.abs(t.y-c.getGraphY())>g){var k=this.selectionCellsHandler.getHandler(e.cell);null==k&&this.model.isEdge(e.cell)&&(k=this.createHandler(e));if(null!=k&&null!=k.bends&&0<k.bends.length){g=k.getHandleForEvent(d);
-var m=this.view.getEdgeStyle(e),n=m==mxEdgeStyle.EntityRelation;q||l!=mxEvent.LABEL_HANDLE||(g=l);if(n&&0!=g&&g!=k.bends.length-1&&g!=mxEvent.LABEL_HANDLE)!n||null==e.visibleSourceState&&null==e.visibleTargetState||(this.graphHandler.reset(),c.consume());else if(g==mxEvent.LABEL_HANDLE||0==g||null!=e.visibleSourceState||g==k.bends.length-1||null!=e.visibleTargetState)n||g==mxEvent.LABEL_HANDLE||(n=e.absolutePoints,null!=n&&(null==m&&null==g||m==mxEdgeStyle.OrthConnector)&&(g=l,null==g&&(g=new mxRectangle(t.x,
-t.y),g.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(g,n[0].x,n[0].y)?g=0:mxUtils.contains(g,n[n.length-1].x,n[n.length-1].y)?g=k.bends.length-1:null!=m&&(2==n.length||3==n.length&&(0==Math.round(n[0].x-n[1].x)&&0==Math.round(n[1].x-n[2].x)||0==Math.round(n[0].y-n[1].y)&&0==Math.round(n[1].y-n[2].y)))?g=2:(g=mxUtils.findNearestSegment(e,t.x,t.y),g=null==m?mxEvent.VIRTUAL_HANDLE-g:g+1))),null==g&&(g=mxEvent.VIRTUAL_HANDLE)),k.start(c.getGraphX(),c.getGraphX(),g),c.consume(),this.graphHandler.reset()}null!=
-k&&(this.selectionCellsHandler.isHandlerActive(k)?this.isCellSelected(e.cell)||(this.selectionCellsHandler.handlers.put(e.cell,k),this.selectCellForEvent(e.cell,c.getEvent())):this.isCellSelected(e.cell)||k.destroy());q=!1;t=d=f=l=null}}else if(e=c.getState(),null!=e&&this.isCellEditable(e.cell)){k=null;if(this.model.isEdge(e.cell)){if(g=new mxRectangle(c.getGraphX(),c.getGraphY()),g.grow(mxEdgeHandler.prototype.handleImage.width/2),n=e.absolutePoints,null!=n)if(null!=e.text&&null!=e.text.boundingBox&&
-mxUtils.contains(e.text.boundingBox,c.getGraphX(),c.getGraphY()))k="move";else if(mxUtils.contains(g,n[0].x,n[0].y)||mxUtils.contains(g,n[n.length-1].x,n[n.length-1].y))k="pointer";else if(null!=e.visibleSourceState||null!=e.visibleTargetState)g=this.view.getEdgeStyle(e),k="crosshair",g!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(e)&&(g=mxUtils.findNearestSegment(e,c.getGraphX(),c.getGraphY()),g<n.length-1&&0<=g&&(k=0==Math.round(n[g].x-n[g+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(c.getEvent())){g=
-new mxRectangle(c.getGraphX()-1,c.getGraphY()-1);g.grow(mxShape.prototype.svgStrokeTolerance/2);if(this.isTableCell(e.cell)&&(n=this.model.getParent(e.cell),m=this.model.getParent(n),!this.isCellSelected(m)))if(mxUtils.intersects(g,new mxRectangle(e.x-2,e.y,2,e.height))&&this.model.getChildAt(n,0)!=e.cell||mxUtils.intersects(g,new mxRectangle(e.x+e.width-2,e.y,2,e.height)))k="col-resize";else if(mxUtils.intersects(g,new mxRectangle(e.x,e.y-2,e.width,3))&&this.model.getChildAt(m,0)!=n||mxUtils.intersects(g,
-new mxRectangle(e.x,e.y+e.height-2,e.width,3)))k="row-resize";for(n=e;null==k&&null!=n&&(this.isTableCell(n.cell)||this.isTableRow(n.cell)||this.isTable(n.cell));){if(this.isSwimlane(n.cell)){var m=this.getActualStartSize(n.cell),v=this.view.scale;(0<m.x||0<m.width)&&mxUtils.intersects(g,new mxRectangle(n.x+(m.x-m.width-1)*v+(0==m.x?n.width*v:0),n.y,1,n.height))?k="col-resize":(0<m.y||0<m.height)&&mxUtils.intersects(g,new mxRectangle(n.x,n.y+(m.y-m.height-1)*v+(0==m.y?n.height:0),n.width,1))&&(k=
-"row-resize")}n=this.view.getState(this.model.getParent(n.cell))}}null!=k&&e.setCursor(k)}}),mouseUp:mxUtils.bind(this,function(b,c){l=t=d=f=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(b){var d=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);b.view.graph.isHtmlLabel(b.cell)&&(d=1!=b.style.html?mxUtils.htmlEntities(d,!1):b.view.graph.sanitizeHtml(d));return d};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);
+Graph=function(b,c,e,k,f,p){mxGraph.call(this,b,c,e,k);this.themes=f||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=p?p:!1;b=this.baseUrl;c=b.indexOf("//");this.domainPathUrl=this.domainUrl="";0<c&&(c=b.indexOf("/",c+2),0<c&&(this.domainUrl=b.substring(0,c)),c=b.lastIndexOf("/"),0<c&&(this.domainPathUrl=b.substring(0,c+1)));this.isHtmlLabel=function(b){b=this.getCurrentCellStyle(b);
+return null!=b?"1"==b.html||"wrap"==b[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var t=null,d=null,g=null,l=null,q=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,c){if("mouseDown"==c.getProperty("eventName")&&this.isEnabled()){var e=c.getProperty("event"),f=e.getState(),k=this.view.scale;if(!mxEvent.isAltDown(e.getEvent())&&null!=f)if(this.model.isEdge(f.cell))if(t=new mxPoint(e.getGraphX(),e.getGraphY()),q=this.isCellSelected(f.cell),g=f,d=e,null!=f.text&&null!=
+f.text.boundingBox&&mxUtils.contains(f.text.boundingBox,e.getGraphX(),e.getGraphY()))l=mxEvent.LABEL_HANDLE;else{var m=this.selectionCellsHandler.getHandler(f.cell);null!=m&&null!=m.bends&&0<m.bends.length&&(l=m.getHandleForEvent(e))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(e.getEvent())&&(m=this.selectionCellsHandler.getHandler(f.cell),null==m||null==m.getHandleForEvent(e))){var n=new mxRectangle(e.getGraphX()-1,e.getGraphY()-1);n.grow(mxEvent.isTouchEvent(e.getEvent())?mxShape.prototype.svgStrokeTolerance-
+1:(mxShape.prototype.svgStrokeTolerance+1)/2);if(this.isTableCell(f.cell)&&!this.isCellSelected(f.cell)){var v=this.model.getParent(f.cell),m=this.model.getParent(v);if(!this.isCellSelected(m)){var u=this.getCellGeometry(f.cell),u=null!=u.alternateBounds?u.alternateBounds:u;if(mxUtils.intersects(n,new mxRectangle(f.x,f.y-2,u.width*k,3))&&this.model.getChildAt(m,0)!=v||mxUtils.intersects(n,new mxRectangle(f.x,f.y+u.height-2,u.width,3))||mxUtils.intersects(n,new mxRectangle(f.x-2,f.y,2,u.height*k))&&
+this.model.getChildAt(v,0)!=f.cell||mxUtils.intersects(n,new mxRectangle(f.x+u.width*k-2,f.y,2,u.height*k)))v=this.selectionCellsHandler.isHandled(m),this.selectCellForEvent(m,e.getEvent()),m=this.selectionCellsHandler.getHandler(m),null!=m&&(u=m.getHandleForEvent(e),null!=u&&(m.start(e.getGraphX(),e.getGraphY(),u),m.blockDelayedSelection=!v,e.consume()))}}for(;!e.isConsumed()&&null!=f&&(this.isTableCell(f.cell)||this.isTableRow(f.cell)||this.isTable(f.cell));)this.isSwimlane(f.cell)&&(m=this.getActualStartSize(f.cell),
+(0<m.x||0<m.width)&&mxUtils.intersects(n,new mxRectangle(f.x+(m.x-m.width-1)*k+(0==m.x?f.width:0),f.y,1,f.height))||(0<m.y||0<m.height)&&mxUtils.intersects(n,new mxRectangle(f.x,f.y+(m.y-m.height-1)*k+(0==m.y?f.height:0),f.width,1)))&&(this.selectCellForEvent(f.cell,e.getEvent()),m=this.selectionCellsHandler.getHandler(f.cell),null!=m&&(u=mxEvent.CUSTOM_HANDLE-m.customHandles.length+1,m.start(e.getGraphX(),e.getGraphY(),u),e.consume())),f=this.view.getState(this.model.getParent(f.cell))}}}));this.addMouseListener({mouseDown:function(b,
+d){},mouseMove:mxUtils.bind(this,function(b,c){var e=this.selectionCellsHandler.handlers.map,f;for(f in e)if(null!=e[f].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(c.getEvent()))if(f=this.tolerance,null!=t&&null!=g&&null!=d){if(e=g,Math.abs(t.x-c.getGraphX())>f||Math.abs(t.y-c.getGraphY())>f){var k=this.selectionCellsHandler.getHandler(e.cell);null==k&&this.model.isEdge(e.cell)&&(k=this.createHandler(e));if(null!=k&&null!=k.bends&&0<k.bends.length){f=k.getHandleForEvent(d);
+var m=this.view.getEdgeStyle(e),n=m==mxEdgeStyle.EntityRelation;q||l!=mxEvent.LABEL_HANDLE||(f=l);if(n&&0!=f&&f!=k.bends.length-1&&f!=mxEvent.LABEL_HANDLE)!n||null==e.visibleSourceState&&null==e.visibleTargetState||(this.graphHandler.reset(),c.consume());else if(f==mxEvent.LABEL_HANDLE||0==f||null!=e.visibleSourceState||f==k.bends.length-1||null!=e.visibleTargetState)n||f==mxEvent.LABEL_HANDLE||(n=e.absolutePoints,null!=n&&(null==m&&null==f||m==mxEdgeStyle.OrthConnector)&&(f=l,null==f&&(f=new mxRectangle(t.x,
+t.y),f.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(f,n[0].x,n[0].y)?f=0:mxUtils.contains(f,n[n.length-1].x,n[n.length-1].y)?f=k.bends.length-1:null!=m&&(2==n.length||3==n.length&&(0==Math.round(n[0].x-n[1].x)&&0==Math.round(n[1].x-n[2].x)||0==Math.round(n[0].y-n[1].y)&&0==Math.round(n[1].y-n[2].y)))?f=2:(f=mxUtils.findNearestSegment(e,t.x,t.y),f=null==m?mxEvent.VIRTUAL_HANDLE-f:f+1))),null==f&&(f=mxEvent.VIRTUAL_HANDLE)),k.start(c.getGraphX(),c.getGraphX(),f),c.consume(),this.graphHandler.reset()}null!=
+k&&(this.selectionCellsHandler.isHandlerActive(k)?this.isCellSelected(e.cell)||(this.selectionCellsHandler.handlers.put(e.cell,k),this.selectCellForEvent(e.cell,c.getEvent())):this.isCellSelected(e.cell)||k.destroy());q=!1;t=d=g=l=null}}else if(e=c.getState(),null!=e&&this.isCellEditable(e.cell)){k=null;if(this.model.isEdge(e.cell)){if(f=new mxRectangle(c.getGraphX(),c.getGraphY()),f.grow(mxEdgeHandler.prototype.handleImage.width/2),n=e.absolutePoints,null!=n)if(null!=e.text&&null!=e.text.boundingBox&&
+mxUtils.contains(e.text.boundingBox,c.getGraphX(),c.getGraphY()))k="move";else if(mxUtils.contains(f,n[0].x,n[0].y)||mxUtils.contains(f,n[n.length-1].x,n[n.length-1].y))k="pointer";else if(null!=e.visibleSourceState||null!=e.visibleTargetState)f=this.view.getEdgeStyle(e),k="crosshair",f!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(e)&&(f=mxUtils.findNearestSegment(e,c.getGraphX(),c.getGraphY()),f<n.length-1&&0<=f&&(k=0==Math.round(n[f].x-n[f+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(c.getEvent())){f=
+new mxRectangle(c.getGraphX()-1,c.getGraphY()-1);f.grow(mxShape.prototype.svgStrokeTolerance/2);if(this.isTableCell(e.cell)&&(n=this.model.getParent(e.cell),m=this.model.getParent(n),!this.isCellSelected(m)))if(mxUtils.intersects(f,new mxRectangle(e.x-2,e.y,2,e.height))&&this.model.getChildAt(n,0)!=e.cell||mxUtils.intersects(f,new mxRectangle(e.x+e.width-2,e.y,2,e.height)))k="col-resize";else if(mxUtils.intersects(f,new mxRectangle(e.x,e.y-2,e.width,3))&&this.model.getChildAt(m,0)!=n||mxUtils.intersects(f,
+new mxRectangle(e.x,e.y+e.height-2,e.width,3)))k="row-resize";for(n=e;null==k&&null!=n&&(this.isTableCell(n.cell)||this.isTableRow(n.cell)||this.isTable(n.cell));){if(this.isSwimlane(n.cell)){var m=this.getActualStartSize(n.cell),v=this.view.scale;(0<m.x||0<m.width)&&mxUtils.intersects(f,new mxRectangle(n.x+(m.x-m.width-1)*v+(0==m.x?n.width*v:0),n.y,1,n.height))?k="col-resize":(0<m.y||0<m.height)&&mxUtils.intersects(f,new mxRectangle(n.x,n.y+(m.y-m.height-1)*v+(0==m.y?n.height:0),n.width,1))&&(k=
+"row-resize")}n=this.view.getState(this.model.getParent(n.cell))}}null!=k&&e.setCursor(k)}}),mouseUp:mxUtils.bind(this,function(b,c){l=t=d=g=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(b){var d=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);b.view.graph.isHtmlLabel(b.cell)&&(d=1!=b.style.html?mxUtils.htmlEntities(d,!1):b.view.graph.sanitizeHtml(d));return d};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);
this.setPanning(!0);this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(b,d){return!1};this.alternateEdgeStyle="vertical";null==k&&this.loadStylesheet();var m=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=
-function(){var b=m.apply(this,arguments);if(this.graph.pageVisible){for(var d=[],f=this.graph.pageFormat,c=this.graph.pageScale,e=f.width*c,f=f.height*c,c=this.graph.view.translate,g=this.graph.view.scale,l=this.graph.getPageLayout(),k=0;k<l.width;k++)d.push(new mxRectangle(((l.x+k)*e+c.x)*g,(l.y*f+c.y)*g,e*g,f*g));for(k=1;k<l.height;k++)d.push(new mxRectangle((l.x*e+c.x)*g,((l.y+k)*f+c.y)*g,e*g,f*g));b=d.concat(b)}return b};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=
-function(b,d){return null==b.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(b){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var n=this.graphHandler.getCells;this.graphHandler.getCells=function(b){for(var d=n.apply(this,arguments),f=new mxDictionary,c=[],e=0;e<d.length;e++){var g=this.graph.isTableCell(b)&&this.graph.isTableCell(d[e])&&
-this.graph.isCellSelected(d[e])?this.graph.model.getParent(d[e]):this.graph.isTableRow(b)&&this.graph.isTableRow(d[e])&&this.graph.isCellSelected(d[e])?d[e]:this.graph.getCompositeParent(d[e]);null==g||f.get(g)||(f.put(g,!0),c.push(g))}return c};var u=this.graphHandler.start;this.graphHandler.start=function(b,d,f,c){var e=!1;this.graph.isTableCell(b)&&(this.graph.isCellSelected(b)?e=!0:b=this.graph.model.getParent(b));e||this.graph.isTableRow(b)&&this.graph.isCellSelected(b)||(b=this.graph.getCompositeParent(b));
+function(){var b=m.apply(this,arguments);if(this.graph.pageVisible){for(var d=[],g=this.graph.pageFormat,c=this.graph.pageScale,e=g.width*c,g=g.height*c,c=this.graph.view.translate,f=this.graph.view.scale,l=this.graph.getPageLayout(),k=0;k<l.width;k++)d.push(new mxRectangle(((l.x+k)*e+c.x)*f,(l.y*g+c.y)*f,e*f,g*f));for(k=1;k<l.height;k++)d.push(new mxRectangle((l.x*e+c.x)*f,((l.y+k)*g+c.y)*f,e*f,g*f));b=d.concat(b)}return b};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=
+function(b,d){return null==b.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(b){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var n=this.graphHandler.getCells;this.graphHandler.getCells=function(b){for(var d=n.apply(this,arguments),g=new mxDictionary,c=[],e=0;e<d.length;e++){var f=this.graph.isTableCell(b)&&this.graph.isTableCell(d[e])&&
+this.graph.isCellSelected(d[e])?this.graph.model.getParent(d[e]):this.graph.isTableRow(b)&&this.graph.isTableRow(d[e])&&this.graph.isCellSelected(d[e])?d[e]:this.graph.getCompositeParent(d[e]);null==f||g.get(f)||(g.put(f,!0),c.push(f))}return c};var u=this.graphHandler.start;this.graphHandler.start=function(b,d,g,c){var e=!1;this.graph.isTableCell(b)&&(this.graph.isCellSelected(b)?e=!0:b=this.graph.model.getParent(b));e||this.graph.isTableRow(b)&&this.graph.isCellSelected(b)||(b=this.graph.getCompositeParent(b));
u.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(b,d){d=this.graph.getCompositeParent(d);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var v=new mxRubberband(this);this.getRubberband=function(){return v};var y=(new Date).getTime(),x=0,F=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var b=this.currentState;F.apply(this,arguments);b!=this.currentState?(y=(new Date).getTime(),x=0):x=(new Date).getTime()-y};var H=
this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(b){return null!=this.currentState&&b.getState()==this.currentState&&2E3<x||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&H.apply(this,arguments)};var z=this.isToggleEvent;this.isToggleEvent=function(b){return z.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(b)};var D=v.isForceRubberbandEvent;v.isForceRubberbandEvent=function(b){return D.apply(this,
-arguments)&&!mxEvent.isShiftDown(b.getEvent())&&!mxEvent.isControlDown(b.getEvent())||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(b.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==b.getState()&&mxEvent.isTouchEvent(b.getEvent())};var L=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(L=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,
-mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=L)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(b){return mxEvent.isMouseEvent(b.getEvent())};var E=this.click;this.click=function(b){var d=null==b.state&&null!=b.sourceState&&this.isCellLocked(b.sourceState.cell);if(this.isEnabled()&&!d||b.isConsumed())return E.apply(this,arguments);var f=d?b.sourceState.cell:b.getCell();null!=f&&(f=this.getClickableLinkForCell(f),null!=f&&(this.isCustomLink(f)?
-this.customLinkClicked(f):this.openLink(f)));this.isEnabled()&&d&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(b){return b.sourceState};var J=this.tooltipHandler.show;this.tooltipHandler.show=function(){J.apply(this,arguments);if(null!=this.div)for(var b=this.div.getElementsByTagName("a"),d=0;d<b.length;d++)null!=b[d].getAttribute("href")&&null==b[d].getAttribute("target")&&b[d].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(b){return b.sourceState};
-this.getCursorForMouseEvent=function(b){var d=null==b.state&&null!=b.sourceState&&this.isCellLocked(b.sourceState.cell);return this.getCursorForCell(d?b.sourceState.cell:b.getCell())};var C=this.getCursorForCell;this.getCursorForCell=function(b){if(!this.isEnabled()||this.isCellLocked(b)){if(null!=this.getClickableLinkForCell(b))return"pointer";if(this.isCellLocked(b))return"default"}return C.apply(this,arguments)};this.selectRegion=function(b,d){var f=mxEvent.isAltDown(d)?b:null,f=this.getCells(b.x,
-b.y,b.width,b.height,null,null,f,function(b){return"1"==mxUtils.getValue(b.style,"locked","0")},!0);if(this.isToggleEvent(d))for(var c=0;c<f.length;c++)this.selectCellForEvent(f[c],d);else this.selectCellsForEvent(f,d);return f};var K=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(b,d,f){return this.graph.isCellSelected(b)?!1:K.apply(this,arguments)};this.isCellLocked=function(b){for(;null!=b;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(b),
-"locked","0"))return!0;b=this.model.getParent(b)}return!1};var M=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,d){if("mouseDown"==d.getProperty("eventName")){var f=d.getProperty("event").getState();M=null==f||this.isSelectionEmpty()||this.isCellSelected(f.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(b,d){if(!mxEvent.isMultiTouchEvent(d)){var f=d.getProperty("event"),c=d.getProperty("cell");null==c?(f=mxUtils.convertPoint(this.container,
-mxEvent.getClientX(f),mxEvent.getClientY(f)),v.start(f.x,f.y)):null!=M?this.addSelectionCells(M):1<this.getSelectionCount()&&this.isCellSelected(c)&&this.removeSelectionCell(c);M=null;d.consume()}}));this.connectionHandler.selectCells=function(b,d){this.graph.setSelectionCell(d||b)};this.connectionHandler.constraintHandler.isStateIgnored=function(b,d){var f=b.view.graph;return d&&(f.isCellSelected(b.cell)||f.isTableRow(b.cell)&&f.selectionCellsHandler.isHandled(f.model.getParent(b.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,
-mxUtils.bind(this,function(){var b=this.connectionHandler.constraintHandler;null!=b.currentFocus&&b.isStateIgnored(b.currentFocus,!0)&&(b.currentFocus=null,b.constraints=null,b.destroyIcons());b.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var aa=this.updateMouseEvent;this.updateMouseEvent=function(b){b=aa.apply(this,arguments);null!=b.state&&this.isCellLocked(b.getCell())&&(b.state=null);return b}}this.currentTranslate=new mxPoint(0,0)};
+arguments)&&!mxEvent.isShiftDown(b.getEvent())&&!mxEvent.isControlDown(b.getEvent())||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(b.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==b.getState()&&mxEvent.isTouchEvent(b.getEvent())};var N=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(N=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END,
+mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=N)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(b){return mxEvent.isMouseEvent(b.getEvent())};var E=this.click;this.click=function(b){var d=null==b.state&&null!=b.sourceState&&this.isCellLocked(b.sourceState.cell);if(this.isEnabled()&&!d||b.isConsumed())return E.apply(this,arguments);var g=d?b.sourceState.cell:b.getCell();null!=g&&(g=this.getClickableLinkForCell(g),null!=g&&(this.isCustomLink(g)?
+this.customLinkClicked(g):this.openLink(g)));this.isEnabled()&&d&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(b){return b.sourceState};var J=this.tooltipHandler.show;this.tooltipHandler.show=function(){J.apply(this,arguments);if(null!=this.div)for(var b=this.div.getElementsByTagName("a"),d=0;d<b.length;d++)null!=b[d].getAttribute("href")&&null==b[d].getAttribute("target")&&b[d].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(b){return b.sourceState};
+this.getCursorForMouseEvent=function(b){var d=null==b.state&&null!=b.sourceState&&this.isCellLocked(b.sourceState.cell);return this.getCursorForCell(d?b.sourceState.cell:b.getCell())};var C=this.getCursorForCell;this.getCursorForCell=function(b){if(!this.isEnabled()||this.isCellLocked(b)){if(null!=this.getClickableLinkForCell(b))return"pointer";if(this.isCellLocked(b))return"default"}return C.apply(this,arguments)};this.selectRegion=function(b,d){var g=mxEvent.isAltDown(d)?b:null,g=this.getCells(b.x,
+b.y,b.width,b.height,null,null,g,function(b){return"1"==mxUtils.getValue(b.style,"locked","0")},!0);if(this.isToggleEvent(d))for(var c=0;c<g.length;c++)this.selectCellForEvent(g[c],d);else this.selectCellsForEvent(g,d);return g};var K=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(b,d,g){return this.graph.isCellSelected(b)?!1:K.apply(this,arguments)};this.isCellLocked=function(b){for(;null!=b;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(b),
+"locked","0"))return!0;b=this.model.getParent(b)}return!1};var M=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,d){if("mouseDown"==d.getProperty("eventName")){var g=d.getProperty("event").getState();M=null==g||this.isSelectionEmpty()||this.isCellSelected(g.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(b,d){if(!mxEvent.isMultiTouchEvent(d)){var g=d.getProperty("event"),c=d.getProperty("cell");null==c?(g=mxUtils.convertPoint(this.container,
+mxEvent.getClientX(g),mxEvent.getClientY(g)),v.start(g.x,g.y)):null!=M?this.addSelectionCells(M):1<this.getSelectionCount()&&this.isCellSelected(c)&&this.removeSelectionCell(c);M=null;d.consume()}}));this.connectionHandler.selectCells=function(b,d){this.graph.setSelectionCell(d||b)};this.connectionHandler.constraintHandler.isStateIgnored=function(b,d){var g=b.view.graph;return d&&(g.isCellSelected(b.cell)||g.isTableRow(b.cell)&&g.selectionCellsHandler.isHandled(g.model.getParent(b.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,
+mxUtils.bind(this,function(){var b=this.connectionHandler.constraintHandler;null!=b.currentFocus&&b.isStateIgnored(b.currentFocus,!0)&&(b.currentFocus=null,b.constraints=null,b.destroyIcons());b.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var Z=this.updateMouseEvent;this.updateMouseEvent=function(b){b=Z.apply(this,arguments);null!=b.state&&this.isCellLocked(b.getCell())&&(b.state=null);return b}}this.currentTranslate=new mxPoint(0,0)};
Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.translateDiagram="1"==urlParams["translate-diagram"];Graph.diagramLanguage=null!=urlParams["diagram-language"]?urlParams["diagram-language"]:mxClient.language;Graph.lineJumpsEnabled=!0;
Graph.defaultJumpSize=6;Graph.zoomWheel=!1;Graph.minTableColumnWidth=20;Graph.minTableRowHeight=20;Graph.foreignObjectWarningText="Viewer does not support full SVG 1.1";Graph.foreignObjectWarningLink="https://www.diagrams.net/doc/faq/svg-export-text-problems";Graph.xmlDeclaration='<?xml version="1.0" encoding="UTF-8"?>';Graph.svgDoctype='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">';Graph.svgFileComment="\x3c!-- Do not edit this file with editors other than diagrams.net --\x3e";
Graph.pasteStyles="rounded shadow dashed dashPattern fontFamily fontSource fontSize fontColor fontStyle align verticalAlign strokeColor strokeWidth fillColor gradientColor swimlaneFillColor textOpacity gradientDirection glass labelBackgroundColor labelBorderColor opacity spacing spacingTop spacingLeft spacingBottom spacingRight endFill endArrow endSize targetPerimeterSpacing startFill startArrow startSize sourcePerimeterSpacing arcSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle".split(" ");
Graph.createOffscreenGraph=function(b){var c=new Graph(document.createElement("div"));c.stylesheet.styles=mxUtils.clone(b.styles);c.resetViewOnRootChange=!1;c.setConnectable(!1);c.gridEnabled=!1;c.autoScroll=!1;c.setTooltips(!1);c.setEnabled(!1);c.container.style.visibility="hidden";c.container.style.position="absolute";c.container.style.overflow="hidden";c.container.style.height="1px";c.container.style.width="1px";return c};
-Graph.createSvgImage=function(b,c,e,k,g){e=unescape(encodeURIComponent(Graph.svgDoctype+'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+b+'px" height="'+c+'px" '+(null!=k&&null!=g?'viewBox="0 0 '+k+" "+g+'" ':"")+'version="1.1">'+e+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0)),b,c)};
-Graph.zapGremlins=function(b){for(var c=0,e=[],k=0;k<b.length;k++){var g=b.charCodeAt(k);(32<=g||9==g||10==g||13==g)&&65535!=g&&65534!=g||(e.push(b.substring(c,k)),c=k+1)}0<c&&c<b.length&&e.push(b.substring(c));return 0==e.length?b:e.join("")};Graph.stringToBytes=function(b){for(var c=Array(b.length),e=0;e<b.length;e++)c[e]=b.charCodeAt(e);return c};Graph.bytesToString=function(b){for(var c=Array(b.length),e=0;e<b.length;e++)c[e]=String.fromCharCode(b[e]);return c.join("")};
+Graph.createSvgImage=function(b,c,e,k,f){e=unescape(encodeURIComponent(Graph.svgDoctype+'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+b+'px" height="'+c+'px" '+(null!=k&&null!=f?'viewBox="0 0 '+k+" "+f+'" ':"")+'version="1.1">'+e+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0)),b,c)};
+Graph.zapGremlins=function(b){for(var c=0,e=[],k=0;k<b.length;k++){var f=b.charCodeAt(k);(32<=f||9==f||10==f||13==f)&&65535!=f&&65534!=f||(e.push(b.substring(c,k)),c=k+1)}0<c&&c<b.length&&e.push(b.substring(c));return 0==e.length?b:e.join("")};Graph.stringToBytes=function(b){for(var c=Array(b.length),e=0;e<b.length;e++)c[e]=b.charCodeAt(e);return c};Graph.bytesToString=function(b){for(var c=Array(b.length),e=0;e<b.length;e++)c[e]=String.fromCharCode(b[e]);return c.join("")};
Graph.base64EncodeUnicode=function(b){return btoa(encodeURIComponent(b).replace(/%([0-9A-F]{2})/g,function(b,e){return String.fromCharCode(parseInt(e,16))}))};Graph.base64DecodeUnicode=function(b){return decodeURIComponent(Array.prototype.map.call(atob(b),function(b){return"%"+("00"+b.charCodeAt(0).toString(16)).slice(-2)}).join(""))};Graph.compressNode=function(b,c){var e=mxUtils.getXml(b);return Graph.compress(c?e:Graph.zapGremlins(e))};
Graph.arrayBufferToString=function(b){var c="";b=new Uint8Array(b);for(var e=b.byteLength,k=0;k<e;k++)c+=String.fromCharCode(b[k]);return c};Graph.stringToArrayBuffer=function(b){return Uint8Array.from(b,function(b){return b.charCodeAt(0)})};
-Graph.arrayBufferIndexOfString=function(b,c,e){var k=c.charCodeAt(0),g=1,p=-1;for(e=e||0;e<b.byteLength;e++)if(b[e]==k){p=e;break}for(e=p+1;-1<p&&e<b.byteLength&&e<p+c.length-1;e++){if(b[e]!=c.charCodeAt(g))return Graph.arrayBufferIndexOfString(b,c,p+1);g++}return g==c.length-1?p:-1};Graph.compress=function(b,c){if(null==b||0==b.length||"undefined"===typeof pako)return b;var e=c?pako.deflate(encodeURIComponent(b)):pako.deflateRaw(encodeURIComponent(b));return btoa(Graph.arrayBufferToString(new Uint8Array(e)))};
+Graph.arrayBufferIndexOfString=function(b,c,e){var k=c.charCodeAt(0),f=1,p=-1;for(e=e||0;e<b.byteLength;e++)if(b[e]==k){p=e;break}for(e=p+1;-1<p&&e<b.byteLength&&e<p+c.length-1;e++){if(b[e]!=c.charCodeAt(f))return Graph.arrayBufferIndexOfString(b,c,p+1);f++}return f==c.length-1?p:-1};Graph.compress=function(b,c){if(null==b||0==b.length||"undefined"===typeof pako)return b;var e=c?pako.deflate(encodeURIComponent(b)):pako.deflateRaw(encodeURIComponent(b));return btoa(Graph.arrayBufferToString(new Uint8Array(e)))};
Graph.decompress=function(b,c,e){if(null==b||0==b.length||"undefined"===typeof pako)return b;b=Graph.stringToArrayBuffer(atob(b));c=decodeURIComponent(c?pako.inflate(b,{to:"string"}):pako.inflateRaw(b,{to:"string"}));return e?c:Graph.zapGremlins(c)};
-Graph.fadeNodes=function(b,c,e,k,g){g=null!=g?g:1E3;Graph.setTransitionForNodes(b,null);Graph.setOpacityForNodes(b,c);window.setTimeout(function(){Graph.setTransitionForNodes(b,"all "+g+"ms ease-in-out");Graph.setOpacityForNodes(b,e);window.setTimeout(function(){Graph.setTransitionForNodes(b,null);null!=k&&k()},g)},0)};Graph.removeKeys=function(b,c){for(var e in b)c(e)&&delete b[e]};
+Graph.fadeNodes=function(b,c,e,k,f){f=null!=f?f:1E3;Graph.setTransitionForNodes(b,null);Graph.setOpacityForNodes(b,c);window.setTimeout(function(){Graph.setTransitionForNodes(b,"all "+f+"ms ease-in-out");Graph.setOpacityForNodes(b,e);window.setTimeout(function(){Graph.setTransitionForNodes(b,null);null!=k&&k()},f)},0)};Graph.removeKeys=function(b,c){for(var e in b)c(e)&&delete b[e]};
Graph.setTransitionForNodes=function(b,c){for(var e=0;e<b.length;e++)mxUtils.setPrefixedStyle(b[e].style,"transition",c)};Graph.setOpacityForNodes=function(b,c){for(var e=0;e<b.length;e++)b[e].style.opacity=c};Graph.removePasteFormatting=function(b){for(;null!=b;)null!=b.firstChild&&Graph.removePasteFormatting(b.firstChild),b.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=b.style&&(b.style.whiteSpace="","#000000"==b.style.color&&(b.style.color="")),b=b.nextSibling};
Graph.sanitizeHtml=function(b,c){return html_sanitize(b,function(b){return null!=b&&"javascript:"!==b.toString().toLowerCase().substring(0,11)?b:null},function(b){return b})};
-Graph.sanitizeSvg=function(b){function c(c){for(c=b.getElementsByTagName(c);0<c.length;)c[0].parentNode.removeChild(c[0])}for(var e=b.getElementsByTagName("*"),k=0;k<e.length;k++)for(var g=0;g<e[k].attributes.length;g++){var p=e[k].attributes[g];2<p.name.length&&"on"==p.name.toLowerCase().substring(0,2)&&e[k].removeAttribute(p.name)}c("meta");c("script");c("metadata")};
-Graph.clipSvgDataUri=function(b,c){if(!mxClient.IS_IE&&!mxClient.IS_IE11&&null!=b&&"data:image/svg+xml;base64,"==b.substring(0,26))try{var e=document.createElement("div");e.style.position="absolute";e.style.visibility="hidden";var k=decodeURIComponent(escape(atob(b.substring(26)))),g=k.indexOf("<svg");if(0<=g){e.innerHTML=k.substring(g);Graph.sanitizeSvg(e);var p=e.getElementsByTagName("svg");if(0<p.length){if(c||null!=p[0].getAttribute("preserveAspectRatio")){document.body.appendChild(e);try{var g=
-k=1,t=p[0].getAttribute("width"),d=p[0].getAttribute("height"),t=null!=t&&"%"!=t.charAt(t.length-1)?parseFloat(t):NaN,d=null!=d&&"%"!=d.charAt(d.length-1)?parseFloat(d):NaN,f=p[0].getAttribute("viewBox");if(null!=f&&!isNaN(t)&&!isNaN(d)){var l=f.split(" ");4<=f.length&&(k=parseFloat(l[2])/t,g=parseFloat(l[3])/d)}var q=p[0].getBBox();0<q.width&&0<q.height&&(e.getElementsByTagName("svg")[0].setAttribute("viewBox",q.x+" "+q.y+" "+q.width+" "+q.height),e.getElementsByTagName("svg")[0].setAttribute("width",
-q.width/k),e.getElementsByTagName("svg")[0].setAttribute("height",q.height/g))}catch(m){}finally{document.body.removeChild(e)}}b=Editor.createSvgDataUri(mxUtils.getXml(p[0]))}}}catch(m){}return b};Graph.stripQuotes=function(b){null!=b&&("'"==b.charAt(0)&&(b=b.substring(1)),"'"==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)),'"'==b.charAt(0)&&(b=b.substring(1)),'"'==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)));return b};
+Graph.sanitizeSvg=function(b){function c(c){for(c=b.getElementsByTagName(c);0<c.length;)c[0].parentNode.removeChild(c[0])}for(var e=b.getElementsByTagName("*"),k=0;k<e.length;k++)for(var f=0;f<e[k].attributes.length;f++){var p=e[k].attributes[f];2<p.name.length&&"on"==p.name.toLowerCase().substring(0,2)&&e[k].removeAttribute(p.name)}c("meta");c("script");c("metadata")};
+Graph.clipSvgDataUri=function(b,c){if(!mxClient.IS_IE&&!mxClient.IS_IE11&&null!=b&&"data:image/svg+xml;base64,"==b.substring(0,26))try{var e=document.createElement("div");e.style.position="absolute";e.style.visibility="hidden";var k=decodeURIComponent(escape(atob(b.substring(26)))),f=k.indexOf("<svg");if(0<=f){e.innerHTML=k.substring(f);Graph.sanitizeSvg(e);var p=e.getElementsByTagName("svg");if(0<p.length){if(c||null!=p[0].getAttribute("preserveAspectRatio")){document.body.appendChild(e);try{var f=
+k=1,t=p[0].getAttribute("width"),d=p[0].getAttribute("height"),t=null!=t&&"%"!=t.charAt(t.length-1)?parseFloat(t):NaN,d=null!=d&&"%"!=d.charAt(d.length-1)?parseFloat(d):NaN,g=p[0].getAttribute("viewBox");if(null!=g&&!isNaN(t)&&!isNaN(d)){var l=g.split(" ");4<=g.length&&(k=parseFloat(l[2])/t,f=parseFloat(l[3])/d)}var q=p[0].getBBox();0<q.width&&0<q.height&&(e.getElementsByTagName("svg")[0].setAttribute("viewBox",q.x+" "+q.y+" "+q.width+" "+q.height),e.getElementsByTagName("svg")[0].setAttribute("width",
+q.width/k),e.getElementsByTagName("svg")[0].setAttribute("height",q.height/f))}catch(m){}finally{document.body.removeChild(e)}}b=Editor.createSvgDataUri(mxUtils.getXml(p[0]))}}}catch(m){}return b};Graph.stripQuotes=function(b){null!=b&&("'"==b.charAt(0)&&(b=b.substring(1)),"'"==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)),'"'==b.charAt(0)&&(b=b.substring(1)),'"'==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)));return b};
Graph.createRemoveIcon=function(b,c){var e=document.createElement("img");e.setAttribute("src",Dialog.prototype.clearImage);e.setAttribute("title",b);e.setAttribute("width","13");e.setAttribute("height","10");e.style.marginLeft="4px";e.style.marginBottom="-1px";e.style.cursor="pointer";mxEvent.addListener(e,"click",c);return e};Graph.isPageLink=function(b){return null!=b&&"data:page/id,"==b.substring(0,13)};Graph.isLink=function(b){return null!=b&&Graph.linkPattern.test(b)};Graph.linkPattern=/^(https?:\/\/)?((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*(\?[;&a-z\d%_.~+=-]*)?(\#[-a-z\d_]*)?$/i;
mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null;Graph.prototype.linkPolicy="frame"==urlParams.target?"blank":urlParams.target||"auto";Graph.prototype.linkTarget="frame"==urlParams.target?"_self":"_blank";Graph.prototype.linkRelation="nofollow noopener noreferrer";Graph.prototype.defaultScrollbars=!mxClient.IS_IOS;Graph.prototype.defaultPageVisible=!0;Graph.prototype.defaultGridEnabled="0"!=urlParams.grid;Graph.prototype.lightbox=!1;
Graph.prototype.defaultPageBackgroundColor="#ffffff";Graph.prototype.defaultPageBorderColor="#ffffff";Graph.prototype.shapeForegroundColor="#000000";Graph.prototype.shapeBackgroundColor="#ffffff";Graph.prototype.scrollTileSize=new mxRectangle(0,0,400,400);Graph.prototype.transparentBackground=!0;Graph.prototype.selectParentAfterDelete=!1;Graph.prototype.defaultEdgeLength=80;Graph.prototype.edgeMode=!1;Graph.prototype.connectionArrowsEnabled=!0;
Graph.prototype.placeholderPattern=RegExp("%(date{.*}|[^%^{^}^ ^\"^ '^=^;]+)%","g");Graph.prototype.absoluteUrlPattern=/^(?:[a-z]+:)?\/\//i;Graph.prototype.defaultThemeName="default";Graph.prototype.defaultThemes={};Graph.prototype.baseUrl=null!=urlParams.base?decodeURIComponent(urlParams.base):(window!=window.top?document.referrer:document.location.toString()).split("#")[0];Graph.prototype.editAfterInsert=!1;Graph.prototype.builtInProperties=["label","tooltip","placeholders","placeholder"];
-Graph.prototype.standalone=!1;Graph.prototype.enableFlowAnimation=!1;
-Graph.prototype.init=function(b){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(b,c){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var e=b.view.graph.tolerance,k=!0,t=null,d=mxUtils.bind(this,function(b){k=!0;t=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b))}),f=mxUtils.bind(this,function(b){k=k&&null!=t&&Math.abs(t.x-mxEvent.getClientX(b))<e&&Math.abs(t.y-mxEvent.getClientY(b))<e}),l=mxUtils.bind(this,function(d){if(k)for(var f=mxEvent.getSource(d);null!=
-f&&f!=c.node;){if("a"==f.nodeName.toLowerCase()){b.view.graph.labelLinkClicked(b,f,d);break}f=f.parentNode}});mxEvent.addGestureListeners(c.node,d,f,l);mxEvent.addListener(c.node,"click",function(b){mxEvent.consume(b)})};if(null!=this.tooltipHandler){var c=this.tooltipHandler.init;this.tooltipHandler.init=function(){c.apply(this,arguments);null!=this.div&&mxEvent.addListener(this.div,"click",mxUtils.bind(this,function(b){var c=mxEvent.getSource(b);"A"==c.nodeName&&(c=c.getAttribute("href"),null!=
+Graph.prototype.standalone=!1;Graph.prototype.enableFlowAnimation=!1;Graph.prototype.roundableShapes="label rectangle internalStorage corner parallelogram swimlane triangle trapezoid ext step tee process link rhombus offPageConnector loopLimit hexagon manualInput card curlyBracket singleArrow callout doubleArrow flexArrow umlLifeline".split(" ");
+Graph.prototype.init=function(b){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(b,c){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var e=b.view.graph.tolerance,k=!0,t=null,d=mxUtils.bind(this,function(b){k=!0;t=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b))}),g=mxUtils.bind(this,function(b){k=k&&null!=t&&Math.abs(t.x-mxEvent.getClientX(b))<e&&Math.abs(t.y-mxEvent.getClientY(b))<e}),l=mxUtils.bind(this,function(d){if(k)for(var g=mxEvent.getSource(d);null!=
+g&&g!=c.node;){if("a"==g.nodeName.toLowerCase()){b.view.graph.labelLinkClicked(b,g,d);break}g=g.parentNode}});mxEvent.addGestureListeners(c.node,d,g,l);mxEvent.addListener(c.node,"click",function(b){mxEvent.consume(b)})};if(null!=this.tooltipHandler){var c=this.tooltipHandler.init;this.tooltipHandler.init=function(){c.apply(this,arguments);null!=this.div&&mxEvent.addListener(this.div,"click",mxUtils.bind(this,function(b){var c=mxEvent.getSource(b);"A"==c.nodeName&&(c=c.getAttribute("href"),null!=
c&&this.graph.isCustomLink(c)&&(mxEvent.isTouchEvent(b)||!mxEvent.isPopupTrigger(b))&&this.graph.customLinkClicked(c)&&mxEvent.consume(b))}))}}this.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,c){if(null!=this.container&&this.flowAnimationStyle){var e=this.flowAnimationStyle.getAttribute("id");this.flowAnimationStyle.innerHTML=this.getFlowAnimationStyleCss(e)}}));this.initLayoutManager()};
-(function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.getVerticesAndEdges=function(b,d){b=null!=b?b:!0;d=null!=d?d:!0;var f=this.model;return f.filterDescendants(function(c){return b&&f.isVertex(c)||d&&f.isEdge(c)},f.getRoot())};Graph.prototype.getCommonStyle=function(b){for(var d={},f=0;f<b.length;f++){var c=this.view.getState(b[f]);this.mergeStyle(c.style,d,0==f)}return d};Graph.prototype.mergeStyle=function(b,
-d,f){if(null!=b){var c={},e;for(e in b){var g=b[e];null!=g&&(c[e]=!0,null==d[e]&&f?d[e]=g:d[e]!=g&&delete d[e])}for(e in d)c[e]||delete d[e]}};Graph.prototype.getStartEditingCell=function(b,d){var f=this.getCellStyle(b),f=parseInt(mxUtils.getValue(f,mxConstants.STYLE_STARTSIZE,0));this.isTable(b)&&(!this.isSwimlane(b)||0==f)&&""==this.getLabel(b)&&0<this.model.getChildCount(b)&&(b=this.model.getChildAt(b,0),f=this.getCellStyle(b),f=parseInt(mxUtils.getValue(f,mxConstants.STYLE_STARTSIZE,0)));if(this.isTableRow(b)&&
-(!this.isSwimlane(b)||0==f)&&""==this.getLabel(b)&&0<this.model.getChildCount(b))for(f=0;f<this.model.getChildCount(b);f++){var c=this.model.getChildAt(b,f);if(this.isCellEditable(c)){b=c;break}}return b};Graph.prototype.copyStyle=function(b){return this.getCellStyle(b,!1)};Graph.prototype.pasteStyle=function(b,d,f){f=null!=f?f:Graph.pasteStyles;Graph.removeKeys(b,function(b){return 0>mxUtils.indexOf(f,b)});this.updateCellStyles(b,d)};Graph.prototype.updateCellStyles=function(b,d){this.model.beginUpdate();
-try{for(var f=0;f<d.length;f++)if(this.model.isVertex(d[f])||this.model.isEdge(d[f])){var c=this.getCellStyle(d[f],!1),e;for(e in b){var g=b[e];c[e]!=g&&this.setCellStyles(e,g,[d[f]])}}}finally{this.model.endUpdate()}};Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&(this.isCssTransformsSupported()||mxClient.IS_IOS)};Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&
-!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(b,d,f,c,e,g){this.useCssTransforms&&(b=b/this.currentScale-this.currentTranslate.x,d=d/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(b,d,f,c,e,g){c=null!=c?c:!0;e=null!=e?e:!0;null==f&&(f=this.getCurrentRoot(),null==f&&(f=this.getModel().getRoot()));if(null!=f)for(var l=this.model.getChildCount(f)-1;0<=l;l--){var k=this.model.getChildAt(f,
-l),q=this.getScaledCellAt(b,d,k,c,e,g);if(null!=q)return q;if(this.isCellVisible(k)&&(e&&this.model.isEdge(k)||c&&this.model.isVertex(k))&&(q=this.view.getState(k),null!=q&&(null==g||!g(q,b,d))&&this.intersects(q,b,d)))return k}return null};Graph.prototype.isRecursiveVertexResize=function(b){return!this.isSwimlane(b.cell)&&0<this.model.getChildCount(b.cell)&&!this.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,"childLayout",null)};Graph.prototype.getAbsoluteParent=
+(function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.isFillState=function(b){return!this.isSpecialColor(b.style[mxConstants.STYLE_FILLCOLOR])&&(this.model.isVertex(b.cell)||"arrow"==mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null)||"filledEdge"==mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null)||"flexArrow"==mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null))};Graph.prototype.isStrokeState=function(b){return!this.isSpecialColor(b.style[mxConstants.STYLE_STROKECOLOR])};
+Graph.prototype.isSpecialColor=function(b){return 0<=mxUtils.indexOf([mxConstants.STYLE_STROKECOLOR,mxConstants.STYLE_FILLCOLOR,"inherit","swimlane","indicated"],b)};Graph.prototype.isGlassState=function(b){b=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null);return"label"==b||"rectangle"==b||"internalStorage"==b||"ext"==b||"umlLifeline"==b||"swimlane"==b||"process"==b};Graph.prototype.isRoundedState=function(b){return null!=b.shape?b.shape.isRoundable():0<=mxUtils.indexOf(this.roundableShapes,
+mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null))};Graph.prototype.isLineJumpState=function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null);return!mxUtils.getValue(b.style,mxConstants.STYLE_CURVED,!1)&&("connector"==d||"filledEdge"==d)};Graph.prototype.isAutoSizeState=function(b){return"1"==mxUtils.getValue(b.style,mxConstants.STYLE_AUTOSIZE,null)};Graph.prototype.isImageState=function(b){b=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null);return"label"==b||"image"==b};
+Graph.prototype.isShadowState=function(b){return"image"!=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null)};Graph.prototype.getVerticesAndEdges=function(b,d){b=null!=b?b:!0;d=null!=d?d:!0;var g=this.model;return g.filterDescendants(function(c){return b&&g.isVertex(c)||d&&g.isEdge(c)},g.getRoot())};Graph.prototype.getCommonStyle=function(b){for(var d={},g=0;g<b.length;g++){var c=this.view.getState(b[g]);this.mergeStyle(c.style,d,0==g)}return d};Graph.prototype.mergeStyle=function(b,d,g){if(null!=
+b){var c={},e;for(e in b){var f=b[e];null!=f&&(c[e]=!0,null==d[e]&&g?d[e]=f:d[e]!=f&&delete d[e])}for(e in d)c[e]||delete d[e]}};Graph.prototype.getStartEditingCell=function(b,d){var g=this.getCellStyle(b),g=parseInt(mxUtils.getValue(g,mxConstants.STYLE_STARTSIZE,0));this.isTable(b)&&(!this.isSwimlane(b)||0==g)&&""==this.getLabel(b)&&0<this.model.getChildCount(b)&&(b=this.model.getChildAt(b,0),g=this.getCellStyle(b),g=parseInt(mxUtils.getValue(g,mxConstants.STYLE_STARTSIZE,0)));if(this.isTableRow(b)&&
+(!this.isSwimlane(b)||0==g)&&""==this.getLabel(b)&&0<this.model.getChildCount(b))for(g=0;g<this.model.getChildCount(b);g++){var c=this.model.getChildAt(b,g);if(this.isCellEditable(c)){b=c;break}}return b};Graph.prototype.copyStyle=function(b){return this.getCellStyle(b,!1)};Graph.prototype.pasteStyle=function(b,d,g){g=null!=g?g:Graph.pasteStyles;Graph.removeKeys(b,function(b){return 0>mxUtils.indexOf(g,b)});this.updateCellStyles(b,d)};Graph.prototype.updateCellStyles=function(b,d){this.model.beginUpdate();
+try{for(var g=0;g<d.length;g++)if(this.model.isVertex(d[g])||this.model.isEdge(d[g])){var c=this.getCellStyle(d[g],!1),e;for(e in b){var f=b[e];c[e]!=f&&this.setCellStyles(e,f,[d[g]])}}}finally{this.model.endUpdate()}};Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&(this.isCssTransformsSupported()||mxClient.IS_IOS)};Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&
+!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(b,d,g,c,e,f){this.useCssTransforms&&(b=b/this.currentScale-this.currentTranslate.x,d=d/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(b,d,g,c,e,f){c=null!=c?c:!0;e=null!=e?e:!0;null==g&&(g=this.getCurrentRoot(),null==g&&(g=this.getModel().getRoot()));if(null!=g)for(var l=this.model.getChildCount(g)-1;0<=l;l--){var k=this.model.getChildAt(g,
+l),q=this.getScaledCellAt(b,d,k,c,e,f);if(null!=q)return q;if(this.isCellVisible(k)&&(e&&this.model.isEdge(k)||c&&this.model.isVertex(k))&&(q=this.view.getState(k),null!=q&&(null==f||!f(q,b,d))&&this.intersects(q,b,d)))return k}return null};Graph.prototype.isRecursiveVertexResize=function(b){return!this.isSwimlane(b.cell)&&0<this.model.getChildCount(b.cell)&&!this.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,"childLayout",null)};Graph.prototype.getAbsoluteParent=
function(b){for(var d=this.getCellGeometry(b);null!=d&&d.relative;)b=this.getModel().getParent(b),d=this.getCellGeometry(b);return b};Graph.prototype.isPart=function(b){return"1"==mxUtils.getValue(this.getCurrentCellStyle(b),"part","0")||this.isTableCell(b)||this.isTableRow(b)};Graph.prototype.getCompositeParent=function(b){for(;this.isPart(b);){var d=this.model.getParent(b);if(!this.model.isVertex(d))break;b=d}return b};Graph.prototype.filterSelectionCells=function(b){var d=this.getSelectionCells();
-if(null!=b){for(var f=[],c=0;c<d.length;c++)b(d[c])||f.push(d[c]);d=f}return d};var b=mxGraph.prototype.scrollRectToVisible;Graph.prototype.scrollRectToVisible=function(c){if(this.useCssTransforms){var d=this.currentScale,f=this.currentTranslate;c=new mxRectangle((c.x+2*f.x)*d-f.x,(c.y+2*f.y)*d-f.y,c.width*d,c.height*d)}b.apply(this,arguments)};mxCellHighlight.prototype.getStrokeWidth=function(b){b=this.strokeWidth;this.graph.useCssTransforms&&(b/=this.graph.currentScale);return b};mxGraphView.prototype.getGraphBounds=
-function(){var b=this.graphBounds;if(this.graph.useCssTransforms)var d=this.graph.currentTranslate,f=this.graph.currentScale,b=new mxRectangle((b.x+d.x)*f,(b.y+d.y)*f,b.width*f,b.height*f);return b};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var c=mxGraphView.prototype.validate;mxGraphView.prototype.validate=function(b){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=
-this.translate.x,this.graph.currentTranslate.y=this.translate.y,this.scale=1,this.translate.x=0,this.translate.y=0);c.apply(this,arguments);this.graph.useCssTransforms&&(this.graph.updateCssTransform(),this.scale=this.graph.currentScale,this.translate.x=this.graph.currentTranslate.x,this.translate.y=this.graph.currentTranslate.y)};var e=mxGraph.prototype.getCellsForGroup;Graph.prototype.getCellsForGroup=function(b){b=e.apply(this,arguments);for(var d=[],f=0;f<b.length;f++)this.isTableRow(b[f])||this.isTableCell(b[f])||
-d.push(b[f]);return d};var k=mxGraph.prototype.getCellsForUngroup;Graph.prototype.getCellsForUngroup=function(b){b=k.apply(this,arguments);for(var d=[],f=0;f<b.length;f++)this.isTable(b[f])||this.isTableRow(b[f])||this.isTableCell(b[f])||d.push(b[f]);return d};Graph.prototype.updateCssTransform=function(){var b=this.view.getDrawPane();if(null!=b)if(b=b.parentNode,this.useCssTransforms){var d=b.getAttribute("transform");b.setAttribute("transformOrigin","0 0");var f=Math.round(100*this.currentScale)/
-100;b.setAttribute("transform","scale("+f+","+f+")translate("+Math.round(100*this.currentTranslate.x)/100+","+Math.round(100*this.currentTranslate.y)/100+")");d!=b.getAttribute("transform")&&this.fireEvent(new mxEventObject("cssTransformChanged"),"transform",b.getAttribute("transform"))}else b.removeAttribute("transformOrigin"),b.removeAttribute("transform")};var g=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){var b=this.graph.useCssTransforms,
-d=this.scale,f=this.translate;b&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);g.apply(this,arguments);b&&(this.scale=d,this.translate=f)};var p=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(b,d,f){var c=this.useCssTransforms,e=this.view.scale,g=this.view.translate;c&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms=!1);p.apply(this,arguments);c&&(this.view.scale=e,this.view.translate=g,this.useCssTransforms=
+if(null!=b){for(var g=[],c=0;c<d.length;c++)b(d[c])||g.push(d[c]);d=g}return d};var b=mxGraph.prototype.scrollRectToVisible;Graph.prototype.scrollRectToVisible=function(c){if(this.useCssTransforms){var d=this.currentScale,g=this.currentTranslate;c=new mxRectangle((c.x+2*g.x)*d-g.x,(c.y+2*g.y)*d-g.y,c.width*d,c.height*d)}b.apply(this,arguments)};mxCellHighlight.prototype.getStrokeWidth=function(b){b=this.strokeWidth;this.graph.useCssTransforms&&(b/=this.graph.currentScale);return b};mxGraphView.prototype.getGraphBounds=
+function(){var b=this.graphBounds;if(this.graph.useCssTransforms)var d=this.graph.currentTranslate,g=this.graph.currentScale,b=new mxRectangle((b.x+d.x)*g,(b.y+d.y)*g,b.width*g,b.height*g);return b};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var c=mxGraphView.prototype.validate;mxGraphView.prototype.validate=function(b){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=
+this.translate.x,this.graph.currentTranslate.y=this.translate.y,this.scale=1,this.translate.x=0,this.translate.y=0);c.apply(this,arguments);this.graph.useCssTransforms&&(this.graph.updateCssTransform(),this.scale=this.graph.currentScale,this.translate.x=this.graph.currentTranslate.x,this.translate.y=this.graph.currentTranslate.y)};var e=mxGraph.prototype.getCellsForGroup;Graph.prototype.getCellsForGroup=function(b){b=e.apply(this,arguments);for(var d=[],g=0;g<b.length;g++)this.isTableRow(b[g])||this.isTableCell(b[g])||
+d.push(b[g]);return d};var k=mxGraph.prototype.getCellsForUngroup;Graph.prototype.getCellsForUngroup=function(b){b=k.apply(this,arguments);for(var d=[],g=0;g<b.length;g++)this.isTable(b[g])||this.isTableRow(b[g])||this.isTableCell(b[g])||d.push(b[g]);return d};Graph.prototype.updateCssTransform=function(){var b=this.view.getDrawPane();if(null!=b)if(b=b.parentNode,this.useCssTransforms){var d=b.getAttribute("transform");b.setAttribute("transformOrigin","0 0");var g=Math.round(100*this.currentScale)/
+100;b.setAttribute("transform","scale("+g+","+g+")translate("+Math.round(100*this.currentTranslate.x)/100+","+Math.round(100*this.currentTranslate.y)/100+")");d!=b.getAttribute("transform")&&this.fireEvent(new mxEventObject("cssTransformChanged"),"transform",b.getAttribute("transform"))}else b.removeAttribute("transformOrigin"),b.removeAttribute("transform")};var f=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){var b=this.graph.useCssTransforms,
+d=this.scale,g=this.translate;b&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);f.apply(this,arguments);b&&(this.scale=d,this.translate=g)};var p=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(b,d,g){var c=this.useCssTransforms,e=this.view.scale,f=this.view.translate;c&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms=!1);p.apply(this,arguments);c&&(this.view.scale=e,this.view.translate=f,this.useCssTransforms=
!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.isViewer=function(){return!1};Graph.prototype.labelLinkClicked=function(b,c,e){c=c.getAttribute("href");if(null!=c&&!this.isCustomLink(c)&&(mxEvent.isLeftMouseButton(e)&&!mxEvent.isPopupTrigger(e)||mxEvent.isTouchEvent(e))){if(!this.isEnabled()||this.isCellLocked(b.cell))b=this.isBlankLink(c)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(c),b);mxEvent.consume(e)}};
-Graph.prototype.openLink=function(b,c,e){var k=window;try{if("_self"==c&&window!=window.top)window.location.href=b;else if(b.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==b.charAt(this.baseUrl.length)&&"_top"==c&&window==window.top){var g=b.split("#")[1];window.location.hash=="#"+g&&(window.location.hash="");window.location.hash=g}else k=window.open(b,null!=c?c:"_blank"),null==k||e||(k.opener=null)}catch(p){}return k};
+Graph.prototype.openLink=function(b,c,e){var k=window;try{if("_self"==c&&window!=window.top)window.location.href=b;else if(b.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==b.charAt(this.baseUrl.length)&&"_top"==c&&window==window.top){var f=b.split("#")[1];window.location.hash=="#"+f&&(window.location.hash="");window.location.hash=f}else k=window.open(b,null!=c?c:"_blank"),null==k||e||(k.opener=null)}catch(p){}return k};
Graph.prototype.getLinkTitle=function(b){return b.substring(b.lastIndexOf("/")+1)};Graph.prototype.isCustomLink=function(b){return"data:"==b.substring(0,5)};Graph.prototype.customLinkClicked=function(b){return!1};Graph.prototype.isExternalProtocol=function(b){return"mailto:"===b.substring(0,7)};Graph.prototype.isBlankLink=function(b){return!this.isExternalProtocol(b)&&("blank"===this.linkPolicy||"self"!==this.linkPolicy&&!this.isRelativeUrl(b)&&b.substring(0,this.domainUrl.length)!==this.domainUrl)};
Graph.prototype.isRelativeUrl=function(b){return null!=b&&!this.absoluteUrlPattern.test(b)&&"data:"!==b.substring(0,5)&&!this.isExternalProtocol(b)};Graph.prototype.getAbsoluteUrl=function(b){null!=b&&this.isRelativeUrl(b)&&(b="#"==b.charAt(0)?this.baseUrl+b:"/"==b.charAt(0)?this.domainUrl+b:this.domainPathUrl+b);return b};
Graph.prototype.initLayoutManager=function(){this.layoutManager=new mxLayoutManager(this);this.layoutManager.hasLayout=function(b){return null!=this.graph.getCellStyle(b).childLayout};this.layoutManager.getLayout=function(b,c){var e=this.graph.model.getParent(b);if(c!=mxEvent.BEGIN_UPDATE||this.hasLayout(e,c)){e=this.graph.getCellStyle(b);if("stackLayout"==e.childLayout){var k=new mxStackLayout(this.graph,!0);k.resizeParentMax="1"==mxUtils.getValue(e,"resizeParentMax","1");k.horizontal="1"==mxUtils.getValue(e,
"horizontalStack","1");k.resizeParent="1"==mxUtils.getValue(e,"resizeParent","1");k.resizeLast="1"==mxUtils.getValue(e,"resizeLast","0");k.spacing=e.stackSpacing||k.spacing;k.border=e.stackBorder||k.border;k.marginLeft=e.marginLeft||0;k.marginRight=e.marginRight||0;k.marginTop=e.marginTop||0;k.marginBottom=e.marginBottom||0;k.allowGaps=e.allowGaps||0;k.fill=!0;k.allowGaps&&(k.gridSize=parseFloat(mxUtils.getValue(e,"stackUnitSize",20)));return k}if("treeLayout"==e.childLayout)return k=new mxCompactTreeLayout(this.graph),
k.horizontal="1"==mxUtils.getValue(e,"horizontalTree","1"),k.resizeParent="1"==mxUtils.getValue(e,"resizeParent","1"),k.groupPadding=mxUtils.getValue(e,"parentPadding",20),k.levelDistance=mxUtils.getValue(e,"treeLevelDistance",30),k.maintainParentLocation=!0,k.edgeRouting=!1,k.resetEdges=!1,k;if("flowLayout"==e.childLayout)return k=new mxHierarchicalLayout(this.graph,mxUtils.getValue(e,"flowOrientation",mxConstants.DIRECTION_EAST)),k.resizeParent="1"==mxUtils.getValue(e,"resizeParent","1"),k.parentBorder=
mxUtils.getValue(e,"parentPadding",20),k.maintainParentLocation=!0,k.intraCellSpacing=mxUtils.getValue(e,"intraCellSpacing",mxHierarchicalLayout.prototype.intraCellSpacing),k.interRankCellSpacing=mxUtils.getValue(e,"interRankCellSpacing",mxHierarchicalLayout.prototype.interRankCellSpacing),k.interHierarchySpacing=mxUtils.getValue(e,"interHierarchySpacing",mxHierarchicalLayout.prototype.interHierarchySpacing),k.parallelEdgeSpacing=mxUtils.getValue(e,"parallelEdgeSpacing",mxHierarchicalLayout.prototype.parallelEdgeSpacing),
-k;if("circleLayout"==e.childLayout)return new mxCircleLayout(this.graph);if("organicLayout"==e.childLayout)return new mxFastOrganicLayout(this.graph);if("tableLayout"==e.childLayout)return new TableLayout(this.graph)}return null}};Graph.prototype.getDataForCells=function(b){for(var c=[],e=0;e<b.length;e++){var k=null!=b[e].value?b[e].value.attributes:null,g={};g.id=b[e].id;if(null!=k)for(var p=0;p<k.length;p++)g[k[p].nodeName]=k[p].nodeValue;else g.label=this.convertValueToString(b[e]);c.push(g)}return c};
-Graph.prototype.getNodesForCells=function(b){for(var c=[],e=0;e<b.length;e++){var k=this.view.getState(b[e]);if(null!=k){for(var g=this.cellRenderer.getShapesForState(k),p=0;p<g.length;p++)null!=g[p]&&null!=g[p].node&&c.push(g[p].node);null!=k.control&&null!=k.control.node&&c.push(k.control.node)}}return c};
-Graph.prototype.createWipeAnimations=function(b,c){for(var e=[],k=0;k<b.length;k++){var g=this.view.getState(b[k]);null!=g&&null!=g.shape&&(this.model.isEdge(g.cell)&&null!=g.absolutePoints&&1<g.absolutePoints.length?e.push(this.createEdgeWipeAnimation(g,c)):this.model.isVertex(g.cell)&&null!=g.shape.bounds&&e.push(this.createVertexWipeAnimation(g,c)))}return e};
-Graph.prototype.createEdgeWipeAnimation=function(b,c){var e=b.absolutePoints.slice(),k=b.segments,g=b.length,p=e.length;return{execute:mxUtils.bind(this,function(t,d){if(null!=b.shape){var f=[e[0]],l=t/d;c||(l=1-l);for(var q=g*l,m=1;m<p;m++)if(q<=k[m-1]){f.push(new mxPoint(e[m-1].x+(e[m].x-e[m-1].x)*q/k[m-1],e[m-1].y+(e[m].y-e[m-1].y)*q/k[m-1]));break}else q-=k[m-1],f.push(e[m]);b.shape.points=f;b.shape.redraw();0==t&&Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),1);null!=b.text&&null!=
+k;if("circleLayout"==e.childLayout)return new mxCircleLayout(this.graph);if("organicLayout"==e.childLayout)return new mxFastOrganicLayout(this.graph);if("tableLayout"==e.childLayout)return new TableLayout(this.graph)}return null}};Graph.prototype.getDataForCells=function(b){for(var c=[],e=0;e<b.length;e++){var k=null!=b[e].value?b[e].value.attributes:null,f={};f.id=b[e].id;if(null!=k)for(var p=0;p<k.length;p++)f[k[p].nodeName]=k[p].nodeValue;else f.label=this.convertValueToString(b[e]);c.push(f)}return c};
+Graph.prototype.getNodesForCells=function(b){for(var c=[],e=0;e<b.length;e++){var k=this.view.getState(b[e]);if(null!=k){for(var f=this.cellRenderer.getShapesForState(k),p=0;p<f.length;p++)null!=f[p]&&null!=f[p].node&&c.push(f[p].node);null!=k.control&&null!=k.control.node&&c.push(k.control.node)}}return c};
+Graph.prototype.createWipeAnimations=function(b,c){for(var e=[],k=0;k<b.length;k++){var f=this.view.getState(b[k]);null!=f&&null!=f.shape&&(this.model.isEdge(f.cell)&&null!=f.absolutePoints&&1<f.absolutePoints.length?e.push(this.createEdgeWipeAnimation(f,c)):this.model.isVertex(f.cell)&&null!=f.shape.bounds&&e.push(this.createVertexWipeAnimation(f,c)))}return e};
+Graph.prototype.createEdgeWipeAnimation=function(b,c){var e=b.absolutePoints.slice(),k=b.segments,f=b.length,p=e.length;return{execute:mxUtils.bind(this,function(t,d){if(null!=b.shape){var g=[e[0]],l=t/d;c||(l=1-l);for(var q=f*l,m=1;m<p;m++)if(q<=k[m-1]){g.push(new mxPoint(e[m-1].x+(e[m].x-e[m-1].x)*q/k[m-1],e[m-1].y+(e[m].y-e[m-1].y)*q/k[m-1]));break}else q-=k[m-1],g.push(e[m]);b.shape.points=g;b.shape.redraw();0==t&&Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),1);null!=b.text&&null!=
b.text.node&&(b.text.node.style.opacity=l)}}),stop:mxUtils.bind(this,function(){null!=b.shape&&(b.shape.points=e,b.shape.redraw(),null!=b.text&&null!=b.text.node&&(b.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),c?1:0))})}};
-Graph.prototype.createVertexWipeAnimation=function(b,c){var e=new mxRectangle.fromRectangle(b.shape.bounds);return{execute:mxUtils.bind(this,function(k,g){if(null!=b.shape){var p=k/g;c||(p=1-p);b.shape.bounds=new mxRectangle(e.x,e.y,e.width*p,e.height);b.shape.redraw();0==k&&Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),1);null!=b.text&&null!=b.text.node&&(b.text.node.style.opacity=p)}}),stop:mxUtils.bind(this,function(){null!=b.shape&&(b.shape.bounds=e,b.shape.redraw(),null!=b.text&&null!=
-b.text.node&&(b.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),c?1:0))})}};Graph.prototype.executeAnimations=function(b,c,e,k){e=null!=e?e:30;k=null!=k?k:30;var g=null,p=0,t=mxUtils.bind(this,function(){if(p==e||this.stoppingCustomActions){window.clearInterval(g);for(var d=0;d<b.length;d++)b[d].stop();null!=c&&c()}else for(d=0;d<b.length;d++)b[d].execute(p,e);p++}),g=window.setInterval(t,k);t()};
+Graph.prototype.createVertexWipeAnimation=function(b,c){var e=new mxRectangle.fromRectangle(b.shape.bounds);return{execute:mxUtils.bind(this,function(k,f){if(null!=b.shape){var p=k/f;c||(p=1-p);b.shape.bounds=new mxRectangle(e.x,e.y,e.width*p,e.height);b.shape.redraw();0==k&&Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),1);null!=b.text&&null!=b.text.node&&(b.text.node.style.opacity=p)}}),stop:mxUtils.bind(this,function(){null!=b.shape&&(b.shape.bounds=e,b.shape.redraw(),null!=b.text&&null!=
+b.text.node&&(b.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),c?1:0))})}};Graph.prototype.executeAnimations=function(b,c,e,k){e=null!=e?e:30;k=null!=k?k:30;var f=null,p=0,t=mxUtils.bind(this,function(){if(p==e||this.stoppingCustomActions){window.clearInterval(f);for(var d=0;d<b.length;d++)b[d].stop();null!=c&&c()}else for(d=0;d<b.length;d++)b[d].execute(p,e);p++}),f=window.setInterval(t,k);t()};
Graph.prototype.getPageSize=function(){return this.pageVisible?new mxRectangle(0,0,this.pageFormat.width*this.pageScale,this.pageFormat.height*this.pageScale):this.scrollTileSize};
Graph.prototype.getPageLayout=function(){var b=this.getPageSize(),c=this.getGraphBounds();if(0==c.width||0==c.height)return new mxRectangle(0,0,1,1);var e=Math.floor(Math.ceil(c.x/this.view.scale-this.view.translate.x)/b.width),k=Math.floor(Math.ceil(c.y/this.view.scale-this.view.translate.y)/b.height);return new mxRectangle(e,k,Math.ceil((Math.floor((c.x+c.width)/this.view.scale)-this.view.translate.x)/b.width)-e,Math.ceil((Math.floor((c.y+c.height)/this.view.scale)-this.view.translate.y)/b.height)-
k)};Graph.prototype.sanitizeHtml=function(b,c){return Graph.sanitizeHtml(b,c)};Graph.prototype.updatePlaceholders=function(){var b=!1,c;for(c in this.model.cells){var e=this.model.cells[c];this.isReplacePlaceholders(e)&&(this.view.invalidate(e,!1,!1),b=!0)}b&&this.view.validate()};Graph.prototype.isReplacePlaceholders=function(b){return null!=b.value&&"object"==typeof b.value&&"1"==b.value.getAttribute("placeholders")};
@@ -2410,23 +2420,23 @@ Graph.prototype.getLabel=function(b){var c=mxGraph.prototype.getLabel.apply(this
Graph.prototype.setGridSize=function(b){this.gridSize=b;this.fireEvent(new mxEventObject("gridSizeChanged"))};Graph.prototype.setDefaultParent=function(b){this.defaultParent=b;this.fireEvent(new mxEventObject("defaultParentChanged"))};Graph.prototype.getClickableLinkForCell=function(b){do{var c=this.getLinkForCell(b);if(null!=c)return c;b=this.model.getParent(b)}while(null!=b);return null};
Graph.prototype.getGlobalVariable=function(b){var c=null;"date"==b?c=(new Date).toLocaleDateString():"time"==b?c=(new Date).toLocaleTimeString():"timestamp"==b?c=(new Date).toLocaleString():"date{"==b.substring(0,5)&&(b=b.substring(5,b.length-1),c=this.formatDate(new Date,b));return c};
Graph.prototype.formatDate=function(b,c,e){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",
-shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var k=this.dateFormatCache,g=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,p=/[^-+\dA-Z]/g,t=function(b,d){b=String(b);for(d=d||2;b.length<d;)b="0"+b;return b};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(b)||
-/\d/.test(b)||(c=b,b=void 0);b=b?new Date(b):new Date;if(isNaN(b))throw SyntaxError("invalid date");c=String(k.masks[c]||c||k.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),e=!0);var d=e?"getUTC":"get",f=b[d+"Date"](),l=b[d+"Day"](),q=b[d+"Month"](),m=b[d+"FullYear"](),n=b[d+"Hours"](),u=b[d+"Minutes"](),v=b[d+"Seconds"](),d=b[d+"Milliseconds"](),y=e?0:b.getTimezoneOffset(),x={d:f,dd:t(f),ddd:k.i18n.dayNames[l],dddd:k.i18n.dayNames[l+7],m:q+1,mm:t(q+1),mmm:k.i18n.monthNames[q],mmmm:k.i18n.monthNames[q+
-12],yy:String(m).slice(2),yyyy:m,h:n%12||12,hh:t(n%12||12),H:n,HH:t(n),M:u,MM:t(u),s:v,ss:t(v),l:t(d,3),L:t(99<d?Math.round(d/10):d),t:12>n?"a":"p",tt:12>n?"am":"pm",T:12>n?"A":"P",TT:12>n?"AM":"PM",Z:e?"UTC":(String(b).match(g)||[""]).pop().replace(p,""),o:(0<y?"-":"+")+t(100*Math.floor(Math.abs(y)/60)+Math.abs(y)%60,4),S:["th","st","nd","rd"][3<f%10?0:(10!=f%100-f%10)*f%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(b){return b in x?x[b]:b.slice(1,
+shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var k=this.dateFormatCache,f=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,p=/[^-+\dA-Z]/g,t=function(b,d){b=String(b);for(d=d||2;b.length<d;)b="0"+b;return b};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(b)||
+/\d/.test(b)||(c=b,b=void 0);b=b?new Date(b):new Date;if(isNaN(b))throw SyntaxError("invalid date");c=String(k.masks[c]||c||k.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),e=!0);var d=e?"getUTC":"get",g=b[d+"Date"](),l=b[d+"Day"](),q=b[d+"Month"](),m=b[d+"FullYear"](),n=b[d+"Hours"](),u=b[d+"Minutes"](),v=b[d+"Seconds"](),d=b[d+"Milliseconds"](),y=e?0:b.getTimezoneOffset(),x={d:g,dd:t(g),ddd:k.i18n.dayNames[l],dddd:k.i18n.dayNames[l+7],m:q+1,mm:t(q+1),mmm:k.i18n.monthNames[q],mmmm:k.i18n.monthNames[q+
+12],yy:String(m).slice(2),yyyy:m,h:n%12||12,hh:t(n%12||12),H:n,HH:t(n),M:u,MM:t(u),s:v,ss:t(v),l:t(d,3),L:t(99<d?Math.round(d/10):d),t:12>n?"a":"p",tt:12>n?"am":"pm",T:12>n?"A":"P",TT:12>n?"AM":"PM",Z:e?"UTC":(String(b).match(f)||[""]).pop().replace(p,""),o:(0<y?"-":"+")+t(100*Math.floor(Math.abs(y)/60)+Math.abs(y)%60,4),S:["th","st","nd","rd"][3<g%10?0:(10!=g%100-g%10)*g%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(b){return b in x?x[b]:b.slice(1,
b.length-1)})};Graph.prototype.getLayerForCells=function(b){var c=null;if(0<b.length){for(c=b[0];!this.model.isLayer(c);)c=this.model.getParent(c);for(var e=1;e<b.length;e++)if(!this.model.isAncestor(c,b[e])){c=null;break}}return c};
-Graph.prototype.createLayersDialog=function(b,c){var e=document.createElement("div");e.style.position="absolute";for(var k=this.getModel(),g=k.getChildCount(k.root),p=0;p<g;p++)mxUtils.bind(this,function(g){function d(){k.isVisible(g)?(q.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(l,75)):(q.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(l,25))}var f=this.convertValueToString(g)||mxResources.get("background")||"Background",l=document.createElement("div");l.style.overflow=
-"hidden";l.style.textOverflow="ellipsis";l.style.padding="2px";l.style.whiteSpace="nowrap";l.style.cursor="pointer";l.setAttribute("title",mxResources.get(k.isVisible(g)?"hideIt":"show",[f]));var q=document.createElement("img");q.setAttribute("draggable","false");q.setAttribute("align","absmiddle");q.setAttribute("border","0");q.style.position="relative";q.style.width="16px";q.style.padding="0px 6px 0 4px";c&&(q.style.filter="invert(100%)",q.style.top="-2px");l.appendChild(q);mxUtils.write(l,f);e.appendChild(l);
-mxEvent.addListener(l,"click",function(){k.setVisible(g,!k.isVisible(g));d();null!=b&&b(g)});d()})(k.getChildAt(k.root,p));return e};
-Graph.prototype.replacePlaceholders=function(b,c,e,k){k=[];if(null!=c){for(var g=0;match=this.placeholderPattern.exec(c);){var p=match[0];if(2<p.length&&"%label%"!=p&&"%tooltip%"!=p){var t=null;if(match.index>g&&"%"==c.charAt(match.index-1))t=p.substring(1);else{var d=p.substring(1,p.length-1);if("id"==d)t=b.id;else if(0>d.indexOf("{"))for(var f=b;null==t&&null!=f;)null!=f.value&&"object"==typeof f.value&&(Graph.translateDiagram&&null!=Graph.diagramLanguage&&(t=f.getAttribute(d+"_"+Graph.diagramLanguage)),
-null==t&&(t=f.hasAttribute(d)?null!=f.getAttribute(d)?f.getAttribute(d):"":null)),f=this.model.getParent(f);null==t&&(t=this.getGlobalVariable(d));null==t&&null!=e&&(t=e[d])}k.push(c.substring(g,match.index)+(null!=t?t:p));g=match.index+p.length}}k.push(c.substring(g))}return k.join("")};Graph.prototype.restoreSelection=function(b){if(null!=b&&0<b.length){for(var c=[],e=0;e<b.length;e++){var k=this.model.getCell(b[e].id);null!=k&&c.push(k)}this.setSelectionCells(c)}else this.clearSelection()};
+Graph.prototype.createLayersDialog=function(b,c){var e=document.createElement("div");e.style.position="absolute";for(var k=this.getModel(),f=k.getChildCount(k.root),p=0;p<f;p++)mxUtils.bind(this,function(f){function d(){k.isVisible(f)?(q.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(l,75)):(q.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(l,25))}var g=this.convertValueToString(f)||mxResources.get("background")||"Background",l=document.createElement("div");l.style.overflow=
+"hidden";l.style.textOverflow="ellipsis";l.style.padding="2px";l.style.whiteSpace="nowrap";l.style.cursor="pointer";l.setAttribute("title",mxResources.get(k.isVisible(f)?"hideIt":"show",[g]));var q=document.createElement("img");q.setAttribute("draggable","false");q.setAttribute("align","absmiddle");q.setAttribute("border","0");q.style.position="relative";q.style.width="16px";q.style.padding="0px 6px 0 4px";c&&(q.style.filter="invert(100%)",q.style.top="-2px");l.appendChild(q);mxUtils.write(l,g);e.appendChild(l);
+mxEvent.addListener(l,"click",function(){k.setVisible(f,!k.isVisible(f));d();null!=b&&b(f)});d()})(k.getChildAt(k.root,p));return e};
+Graph.prototype.replacePlaceholders=function(b,c,e,k){k=[];if(null!=c){for(var f=0;match=this.placeholderPattern.exec(c);){var p=match[0];if(2<p.length&&"%label%"!=p&&"%tooltip%"!=p){var t=null;if(match.index>f&&"%"==c.charAt(match.index-1))t=p.substring(1);else{var d=p.substring(1,p.length-1);if("id"==d)t=b.id;else if(0>d.indexOf("{"))for(var g=b;null==t&&null!=g;)null!=g.value&&"object"==typeof g.value&&(Graph.translateDiagram&&null!=Graph.diagramLanguage&&(t=g.getAttribute(d+"_"+Graph.diagramLanguage)),
+null==t&&(t=g.hasAttribute(d)?null!=g.getAttribute(d)?g.getAttribute(d):"":null)),g=this.model.getParent(g);null==t&&(t=this.getGlobalVariable(d));null==t&&null!=e&&(t=e[d])}k.push(c.substring(f,match.index)+(null!=t?t:p));f=match.index+p.length}}k.push(c.substring(f))}return k.join("")};Graph.prototype.restoreSelection=function(b){if(null!=b&&0<b.length){for(var c=[],e=0;e<b.length;e++){var k=this.model.getCell(b[e].id);null!=k&&c.push(k)}this.setSelectionCells(c)}else this.clearSelection()};
Graph.prototype.selectCellsForConnectVertex=function(b,c,e){2==b.length&&this.model.isVertex(b[1])?(this.setSelectionCell(b[1]),this.scrollCellToVisible(b[1]),null!=e&&(mxEvent.isTouchEvent(c)?e.update(e.getState(this.view.getState(b[1]))):e.reset())):this.setSelectionCells(b)};Graph.prototype.isCloneConnectSource=function(b){var c=null;null!=this.layoutManager&&(c=this.layoutManager.getLayout(this.model.getParent(b)));return this.isTableRow(b)||this.isTableCell(b)||null!=c&&c.constructor==mxStackLayout};
-Graph.prototype.connectVertex=function(b,c,e,k,g,p,t,d){p=p?p:!1;if(b.geometry.relative&&this.model.isEdge(b.parent))return[];for(;b.geometry.relative&&this.model.isVertex(b.parent);)b=b.parent;var f=this.isCloneConnectSource(b),l=f?b:this.getCompositeParent(b),q=b.geometry.relative&&null!=b.parent.geometry?new mxPoint(b.parent.geometry.width*b.geometry.x,b.parent.geometry.height*b.geometry.y):new mxPoint(l.geometry.x,l.geometry.y);c==mxConstants.DIRECTION_NORTH?(q.x+=l.geometry.width/2,q.y-=e):c==
+Graph.prototype.connectVertex=function(b,c,e,k,f,p,t,d){p=p?p:!1;if(b.geometry.relative&&this.model.isEdge(b.parent))return[];for(;b.geometry.relative&&this.model.isVertex(b.parent);)b=b.parent;var g=this.isCloneConnectSource(b),l=g?b:this.getCompositeParent(b),q=b.geometry.relative&&null!=b.parent.geometry?new mxPoint(b.parent.geometry.width*b.geometry.x,b.parent.geometry.height*b.geometry.y):new mxPoint(l.geometry.x,l.geometry.y);c==mxConstants.DIRECTION_NORTH?(q.x+=l.geometry.width/2,q.y-=e):c==
mxConstants.DIRECTION_SOUTH?(q.x+=l.geometry.width/2,q.y+=l.geometry.height+e):(q.x=c==mxConstants.DIRECTION_WEST?q.x-e:q.x+(l.geometry.width+e),q.y+=l.geometry.height/2);var m=this.view.getState(this.model.getParent(b));e=this.view.scale;var n=this.view.translate,l=n.x*e,n=n.y*e;null!=m&&this.model.isVertex(m.cell)&&(l=m.x,n=m.y);this.model.isVertex(b.parent)&&b.geometry.relative&&(q.x+=b.parent.geometry.x,q.y+=b.parent.geometry.y);p=p?null:(new mxRectangle(l+q.x*e,n+q.y*e)).grow(40*e);p=null!=p?
this.getCells(0,0,0,0,null,null,p,null,!0):null;var m=this.view.getState(b),u=null,v=null;if(null!=p){p=p.reverse();for(var y=0;y<p.length;y++)if(!this.isCellLocked(p[y])&&!this.model.isEdge(p[y])&&p[y]!=b)if(!this.model.isAncestor(b,p[y])&&this.isContainer(p[y])&&(null==u||p[y]==this.model.getParent(b)))u=p[y];else if(null==v&&this.isCellConnectable(p[y])&&!this.model.isAncestor(p[y],b)&&!this.isSwimlane(p[y])){var x=this.view.getState(p[y]);null==m||null==x||mxUtils.intersects(m,x)||(v=p[y])}}var F=
-!mxEvent.isShiftDown(k)||mxEvent.isControlDown(k)||g;F&&("1"!=urlParams.sketch||g)&&(c==mxConstants.DIRECTION_NORTH?q.y-=b.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?q.y+=b.geometry.height/2:q.x=c==mxConstants.DIRECTION_WEST?q.x-b.geometry.width/2:q.x+b.geometry.width/2);var H=[],z=v,v=u;g=mxUtils.bind(this,function(e){if(null==t||null!=e||null==v&&f){this.model.beginUpdate();try{if(null==z&&F){var g=this.getAbsoluteParent(null!=e?e:b),g=f?b:this.getCompositeParent(g);z=null!=e?e:this.duplicateCells([g],
-!1)[0];null!=e&&this.addCells([z],this.model.getParent(b),null,null,null,!0);var l=this.getCellGeometry(z);null!=l&&(null!=e&&"1"==urlParams.sketch&&(c==mxConstants.DIRECTION_NORTH?q.y-=l.height/2:c==mxConstants.DIRECTION_SOUTH?q.y+=l.height/2:q.x=c==mxConstants.DIRECTION_WEST?q.x-l.width/2:q.x+l.width/2),l.x=q.x-l.width/2,l.y=q.y-l.height/2);null!=u?(this.addCells([z],u,null,null,null,!0),v=null):F&&!f&&this.addCells([z],this.getDefaultParent(),null,null,null,!0)}var m=mxEvent.isControlDown(k)&&
-mxEvent.isShiftDown(k)&&F||null==v&&f?null:this.insertEdge(this.model.getParent(b),null,"",b,z,this.createCurrentEdgeStyle());if(null!=m&&this.connectionHandler.insertBeforeSource){var n=null;for(e=b;null!=e.parent&&null!=e.geometry&&e.geometry.relative&&e.parent!=m.parent;)e=this.model.getParent(e);null!=e&&null!=e.parent&&e.parent==m.parent&&(n=e.parent.getIndex(e),this.model.add(e.parent,m,n))}null==v&&null!=z&&null!=b.parent&&f&&c==mxConstants.DIRECTION_WEST&&(n=b.parent.getIndex(b),this.model.add(b.parent,
-z,n));null!=m&&H.push(m);null==v&&null!=z&&H.push(z);null==z&&null!=m&&m.geometry.setTerminalPoint(q,!1);null!=m&&this.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{this.model.endUpdate()}}if(null!=d)d(H);else return H});if(null==t||null!=z||!F||null==v&&f)return g(z);t(l+q.x*e,n+q.y*e,g)};
+!mxEvent.isShiftDown(k)||mxEvent.isControlDown(k)||f;F&&("1"!=urlParams.sketch||f)&&(c==mxConstants.DIRECTION_NORTH?q.y-=b.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?q.y+=b.geometry.height/2:q.x=c==mxConstants.DIRECTION_WEST?q.x-b.geometry.width/2:q.x+b.geometry.width/2);var H=[],z=v,v=u;f=mxUtils.bind(this,function(e){if(null==t||null!=e||null==v&&g){this.model.beginUpdate();try{if(null==z&&F){var f=this.getAbsoluteParent(null!=e?e:b),f=g?b:this.getCompositeParent(f);z=null!=e?e:this.duplicateCells([f],
+!1)[0];null!=e&&this.addCells([z],this.model.getParent(b),null,null,null,!0);var l=this.getCellGeometry(z);null!=l&&(null!=e&&"1"==urlParams.sketch&&(c==mxConstants.DIRECTION_NORTH?q.y-=l.height/2:c==mxConstants.DIRECTION_SOUTH?q.y+=l.height/2:q.x=c==mxConstants.DIRECTION_WEST?q.x-l.width/2:q.x+l.width/2),l.x=q.x-l.width/2,l.y=q.y-l.height/2);null!=u?(this.addCells([z],u,null,null,null,!0),v=null):F&&!g&&this.addCells([z],this.getDefaultParent(),null,null,null,!0)}var m=mxEvent.isControlDown(k)&&
+mxEvent.isShiftDown(k)&&F||null==v&&g?null:this.insertEdge(this.model.getParent(b),null,"",b,z,this.createCurrentEdgeStyle());if(null!=m&&this.connectionHandler.insertBeforeSource){var n=null;for(e=b;null!=e.parent&&null!=e.geometry&&e.geometry.relative&&e.parent!=m.parent;)e=this.model.getParent(e);null!=e&&null!=e.parent&&e.parent==m.parent&&(n=e.parent.getIndex(e),this.model.add(e.parent,m,n))}null==v&&null!=z&&null!=b.parent&&g&&c==mxConstants.DIRECTION_WEST&&(n=b.parent.getIndex(b),this.model.add(b.parent,
+z,n));null!=m&&H.push(m);null==v&&null!=z&&H.push(z);null==z&&null!=m&&m.geometry.setTerminalPoint(q,!1);null!=m&&this.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{this.model.endUpdate()}}if(null!=d)d(H);else return H});if(null==t||null!=z||!F||null==v&&g)return f(z);t(l+q.x*e,n+q.y*e,f)};
Graph.prototype.getIndexableText=function(){var b=document.createElement("div"),c=[],e,k;for(k in this.model.cells)if(e=this.model.cells[k],this.model.isVertex(e)||this.model.isEdge(e))this.isHtmlLabel(e)?(b.innerHTML=this.sanitizeHtml(this.getLabel(e)),e=mxUtils.extractTextWithWhitespace([b])):e=this.getLabel(e),e=mxUtils.trim(e.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<e.length&&c.push(e);return c.join(" ")};
Graph.prototype.convertValueToString=function(b){var c=this.model.getValue(b);if(null!=c&&"object"==typeof c){var e=null;if(this.isReplacePlaceholders(b)&&null!=b.getAttribute("placeholder"))for(var c=b.getAttribute("placeholder"),k=b;null==e&&null!=k;)null!=k.value&&"object"==typeof k.value&&(e=k.hasAttribute(c)?null!=k.getAttribute(c)?k.getAttribute(c):"":null),k=this.model.getParent(k);else e=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(e=c.getAttribute("label_"+Graph.diagramLanguage)),
null==e&&(e=c.getAttribute("label")||"");return e||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};Graph.prototype.getLinksForState=function(b){return null!=b&&null!=b.text&&null!=b.text.node?b.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(b){return null!=b.value&&"object"==typeof b.value?(b=b.value.getAttribute("link"),null!=b&&"javascript:"===b.toLowerCase().substring(0,11)&&(b=b.substring(11)),b):null};
@@ -2435,18 +2445,18 @@ Graph.prototype.updateHorizontalStyle=function(b,c){if(null!=b&&null!=c&&null!=t
Graph.prototype.replaceDefaultColors=function(b,c){if(null!=c){var e=mxUtils.hex2rgb(this.shapeBackgroundColor),k=mxUtils.hex2rgb(this.shapeForegroundColor);this.replaceDefaultColor(c,mxConstants.STYLE_FONTCOLOR,k);this.replaceDefaultColor(c,mxConstants.STYLE_FILLCOLOR,e);this.replaceDefaultColor(c,mxConstants.STYLE_STROKECOLOR,k);this.replaceDefaultColor(c,mxConstants.STYLE_IMAGE_BORDER,k);this.replaceDefaultColor(c,mxConstants.STYLE_IMAGE_BACKGROUND,e);this.replaceDefaultColor(c,mxConstants.STYLE_LABEL_BORDERCOLOR,
k);this.replaceDefaultColor(c,mxConstants.STYLE_SWIMLANE_FILLCOLOR,e);this.replaceDefaultColor(c,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,e)}return c};Graph.prototype.replaceDefaultColor=function(b,c,e){null!=b&&"default"==b[c]&&null!=e&&(b[c]=e)};
Graph.prototype.updateAlternateBounds=function(b,c,e){if(null!=b&&null!=c&&null!=this.layoutManager&&null!=c.alternateBounds){var k=this.layoutManager.getLayout(this.model.getParent(b));null!=k&&k.constructor==mxStackLayout&&(k.horizontal?c.alternateBounds.height=0:c.alternateBounds.width=0)}mxGraph.prototype.updateAlternateBounds.apply(this,arguments)};Graph.prototype.isMoveCellsEvent=function(b,c){return mxEvent.isShiftDown(b)||"1"==mxUtils.getValue(c.style,"moveCells","0")};
-Graph.prototype.foldCells=function(b,c,e,k,g){c=null!=c?c:!1;null==e&&(e=this.getFoldableCells(this.getSelectionCells(),b));if(null!=e){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var p=0;p<e.length;p++){var t=this.view.getState(e[p]),d=this.getCellGeometry(e[p]);if(null!=t&&null!=d){var f=Math.round(d.width-t.width/this.view.scale),l=Math.round(d.height-t.height/this.view.scale);if(0!=l||0!=f){var q=this.model.getParent(e[p]),m=this.layoutManager.getLayout(q);
-null==m?null!=g&&this.isMoveCellsEvent(g,t)&&this.moveSiblings(t,q,f,l):null!=g&&mxEvent.isAltDown(g)||m.constructor!=mxStackLayout||m.resizeLast||this.resizeParentStacks(q,m,f,l)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(e)}};
-Graph.prototype.moveSiblings=function(b,c,e,k){this.model.beginUpdate();try{var g=this.getCellsBeyond(b.x,b.y,c,!0,!0);for(c=0;c<g.length;c++)if(g[c]!=b.cell){var p=this.view.getState(g[c]),t=this.getCellGeometry(g[c]);null!=p&&null!=t&&(t=t.clone(),t.translate(Math.round(e*Math.max(0,Math.min(1,(p.x-b.x)/b.width))),Math.round(k*Math.max(0,Math.min(1,(p.y-b.y)/b.height)))),this.model.setGeometry(g[c],t))}}finally{this.model.endUpdate()}};
-Graph.prototype.resizeParentStacks=function(b,c,e,k){if(null!=this.layoutManager&&null!=c&&c.constructor==mxStackLayout&&!c.resizeLast){this.model.beginUpdate();try{for(var g=c.horizontal;null!=b&&null!=c&&c.constructor==mxStackLayout&&c.horizontal==g&&!c.resizeLast;){var p=this.getCellGeometry(b),t=this.view.getState(b);null!=t&&null!=p&&(p=p.clone(),c.horizontal?p.width+=e+Math.min(0,t.width/this.view.scale-p.width):p.height+=k+Math.min(0,t.height/this.view.scale-p.height),this.model.setGeometry(b,
+Graph.prototype.foldCells=function(b,c,e,k,f){c=null!=c?c:!1;null==e&&(e=this.getFoldableCells(this.getSelectionCells(),b));if(null!=e){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var p=0;p<e.length;p++){var t=this.view.getState(e[p]),d=this.getCellGeometry(e[p]);if(null!=t&&null!=d){var g=Math.round(d.width-t.width/this.view.scale),l=Math.round(d.height-t.height/this.view.scale);if(0!=l||0!=g){var q=this.model.getParent(e[p]),m=this.layoutManager.getLayout(q);
+null==m?null!=f&&this.isMoveCellsEvent(f,t)&&this.moveSiblings(t,q,g,l):null!=f&&mxEvent.isAltDown(f)||m.constructor!=mxStackLayout||m.resizeLast||this.resizeParentStacks(q,m,g,l)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(e)}};
+Graph.prototype.moveSiblings=function(b,c,e,k){this.model.beginUpdate();try{var f=this.getCellsBeyond(b.x,b.y,c,!0,!0);for(c=0;c<f.length;c++)if(f[c]!=b.cell){var p=this.view.getState(f[c]),t=this.getCellGeometry(f[c]);null!=p&&null!=t&&(t=t.clone(),t.translate(Math.round(e*Math.max(0,Math.min(1,(p.x-b.x)/b.width))),Math.round(k*Math.max(0,Math.min(1,(p.y-b.y)/b.height)))),this.model.setGeometry(f[c],t))}}finally{this.model.endUpdate()}};
+Graph.prototype.resizeParentStacks=function(b,c,e,k){if(null!=this.layoutManager&&null!=c&&c.constructor==mxStackLayout&&!c.resizeLast){this.model.beginUpdate();try{for(var f=c.horizontal;null!=b&&null!=c&&c.constructor==mxStackLayout&&c.horizontal==f&&!c.resizeLast;){var p=this.getCellGeometry(b),t=this.view.getState(b);null!=t&&null!=p&&(p=p.clone(),c.horizontal?p.width+=e+Math.min(0,t.width/this.view.scale-p.width):p.height+=k+Math.min(0,t.height/this.view.scale-p.height),this.model.setGeometry(b,
p));b=this.model.getParent(b);c=this.layoutManager.getLayout(b)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(b){var c=this.getCurrentCellStyle(b);return this.isSwimlane(b)?"0"!=c.container:"1"==c.container};Graph.prototype.isCellConnectable=function(b){var c=this.getCurrentCellStyle(b);return null!=c.connectable?"0"!=c.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)};
Graph.prototype.isLabelMovable=function(b){var c=this.getCurrentCellStyle(b);return null!=c.movableLabel?"0"!=c.movableLabel:mxGraph.prototype.isLabelMovable.apply(this,arguments)};Graph.prototype.selectAll=function(b){b=b||this.getDefaultParent();this.isCellLocked(b)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(b,c,e){e=e||this.getDefaultParent();this.isCellLocked(e)||mxGraph.prototype.selectCells.apply(this,arguments)};
Graph.prototype.getSwimlaneAt=function(b,c,e){var k=mxGraph.prototype.getSwimlaneAt.apply(this,arguments);this.isCellLocked(k)&&(k=null);return k};Graph.prototype.isCellFoldable=function(b){var c=this.getCurrentCellStyle(b);return this.foldingEnabled&&"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&("1"==c.treeFolding||!this.isCellLocked(b)&&(this.isContainer(b)&&"0"!=c.collapsible||!this.isContainer(b)&&"1"==c.collapsible))};
Graph.prototype.reset=function(){this.isEditing()&&this.stopEditing(!0);this.escape();this.isSelectionEmpty()||this.clearSelection()};Graph.prototype.zoom=function(b,c){b=Math.max(.01,Math.min(this.view.scale*b,160))/this.view.scale;mxGraph.prototype.zoom.apply(this,arguments)};Graph.prototype.zoomIn=function(){.15>this.view.scale?this.zoom((this.view.scale+.01)/this.view.scale):this.zoom(Math.round(this.view.scale*this.zoomFactor*20)/20/this.view.scale)};
Graph.prototype.zoomOut=function(){.15>=this.view.scale?this.zoom((this.view.scale-.01)/this.view.scale):this.zoom(Math.round(1/this.zoomFactor*this.view.scale*20)/20/this.view.scale)};
-Graph.prototype.fitWindow=function(b,c){c=null!=c?c:10;var e=this.container.clientWidth-c,k=this.container.clientHeight-c,g=Math.floor(20*Math.min(e/b.width,k/b.height))/20;this.zoomTo(g);if(mxUtils.hasScrollbars(this.container)){var p=this.view.translate;this.container.scrollTop=(b.y+p.y)*g-Math.max((k-b.height*g)/2+c/2,0);this.container.scrollLeft=(b.x+p.x)*g-Math.max((e-b.width*g)/2+c/2,0)}};
-Graph.prototype.getTooltipForCell=function(b){var c="";if(mxUtils.isNode(b.value)){var e=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&(e=b.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==e&&(e=b.value.getAttribute("tooltip"));if(null!=e)null!=e&&this.isReplacePlaceholders(b)&&(e=this.replacePlaceholders(b,e)),c=this.sanitizeHtml(e);else{e=this.builtInProperties;b=b.value.attributes;var k=[];this.isEnabled()&&(e.push("linkTarget"),e.push("link"));for(var g=0;g<b.length;g++)0>
-mxUtils.indexOf(e,b[g].nodeName)&&0<b[g].nodeValue.length&&k.push({name:b[g].nodeName,value:b[g].nodeValue});k.sort(function(b,c){return b.name<c.name?-1:b.name>c.name?1:0});for(g=0;g<k.length;g++)"link"==k[g].name&&this.isCustomLink(k[g].value)||(c+=("link"!=k[g].name?"<b>"+k[g].name+":</b> ":"")+mxUtils.htmlEntities(k[g].value)+"\n");0<c.length&&(c=c.substring(0,c.length-1),mxClient.IS_SVG&&(c='<div style="max-width:360px;text-overflow:ellipsis;overflow:hidden;">'+c+"</div>"))}}return c};
+Graph.prototype.fitWindow=function(b,c){c=null!=c?c:10;var e=this.container.clientWidth-c,k=this.container.clientHeight-c,f=Math.floor(20*Math.min(e/b.width,k/b.height))/20;this.zoomTo(f);if(mxUtils.hasScrollbars(this.container)){var p=this.view.translate;this.container.scrollTop=(b.y+p.y)*f-Math.max((k-b.height*f)/2+c/2,0);this.container.scrollLeft=(b.x+p.x)*f-Math.max((e-b.width*f)/2+c/2,0)}};
+Graph.prototype.getTooltipForCell=function(b){var c="";if(mxUtils.isNode(b.value)){var e=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&(e=b.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==e&&(e=b.value.getAttribute("tooltip"));if(null!=e)null!=e&&this.isReplacePlaceholders(b)&&(e=this.replacePlaceholders(b,e)),c=this.sanitizeHtml(e);else{e=this.builtInProperties;b=b.value.attributes;var k=[];this.isEnabled()&&(e.push("linkTarget"),e.push("link"));for(var f=0;f<b.length;f++)0>
+mxUtils.indexOf(e,b[f].nodeName)&&0<b[f].nodeValue.length&&k.push({name:b[f].nodeName,value:b[f].nodeValue});k.sort(function(b,c){return b.name<c.name?-1:b.name>c.name?1:0});for(f=0;f<k.length;f++)"link"==k[f].name&&this.isCustomLink(k[f].value)||(c+=("link"!=k[f].name?"<b>"+k[f].name+":</b> ":"")+mxUtils.htmlEntities(k[f].value)+"\n");0<c.length&&(c=c.substring(0,c.length-1),mxClient.IS_SVG&&(c='<div style="max-width:360px;text-overflow:ellipsis;overflow:hidden;">'+c+"</div>"))}}return c};
Graph.prototype.getFlowAnimationStyle=function(){var b=document.getElementsByTagName("head")[0];if(null!=b&&null==this.flowAnimationStyle){this.flowAnimationStyle=document.createElement("style");this.flowAnimationStyle.setAttribute("id","geEditorFlowAnimation-"+Editor.guid());this.flowAnimationStyle.type="text/css";var c=this.flowAnimationStyle.getAttribute("id");this.flowAnimationStyle.innerHTML=this.getFlowAnimationStyleCss(c);b.appendChild(this.flowAnimationStyle)}return this.flowAnimationStyle};
Graph.prototype.getFlowAnimationStyleCss=function(b){return"."+b+" {\nanimation: "+b+" 0.5s linear;\nanimation-iteration-count: infinite;\n}\n@keyframes "+b+" {\nto {\nstroke-dashoffset: "+-16*this.view.scale+";\n}\n}"};Graph.prototype.stringToBytes=function(b){return Graph.stringToBytes(b)};Graph.prototype.bytesToString=function(b){return Graph.bytesToString(b)};Graph.prototype.compressNode=function(b){return Graph.compressNode(b)};Graph.prototype.compress=function(b,c){return Graph.compress(b,c)};
Graph.prototype.decompress=function(b,c){return Graph.decompress(b,c)};Graph.prototype.zapGremlins=function(b){return Graph.zapGremlins(b)};HoverIcons=function(b){mxEventSource.call(this);this.graph=b;this.init()};mxUtils.extend(HoverIcons,mxEventSource);HoverIcons.prototype.arrowSpacing=2;HoverIcons.prototype.updateDelay=500;HoverIcons.prototype.activationDelay=140;HoverIcons.prototype.currentState=null;HoverIcons.prototype.activeArrow=null;HoverIcons.prototype.inactiveOpacity=15;
@@ -2469,199 +2479,199 @@ HoverIcons.prototype.getDirection=function(){var b=mxConstants.DIRECTION_EAST;th
HoverIcons.prototype.setDisplay=function(b){this.visitNodes(function(c){c.style.display=b})};HoverIcons.prototype.isActive=function(){return null!=this.activeArrow&&null!=this.currentState};
HoverIcons.prototype.drag=function(b,c,e){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);null!=this.currentState&&(this.graph.connectionHandler.start(this.currentState,c,e),this.graph.isMouseTrigger=mxEvent.isMouseEvent(b),this.graph.isMouseDown=!0,c=this.graph.selectionCellsHandler.getHandler(this.currentState.cell),null!=c&&c.setHandlesVisible(!1),c=this.graph.connectionHandler.edgeState,null!=b&&mxEvent.isShiftDown(b)&&mxEvent.isControlDown(b)&&null!=c&&"orthogonalEdgeStyle"===
mxUtils.getValue(c.style,mxConstants.STYLE_EDGE,null)&&(b=this.getDirection(),c.cell.style=mxUtils.setStyle(c.cell.style,"sourcePortConstraint",b),c.style.sourcePortConstraint=b))};HoverIcons.prototype.getStateAt=function(b,c,e){return this.graph.view.getState(this.graph.getCellAt(c,e))};
-HoverIcons.prototype.click=function(b,c,e){var k=e.getEvent(),g=e.getGraphX(),p=e.getGraphY(),g=this.getStateAt(b,g,p);null==g||!this.graph.model.isEdge(g.cell)||this.graph.isCloneEvent(k)||g.getVisibleTerminalState(!0)!=b&&g.getVisibleTerminalState(!1)!=b?null!=b&&this.execute(b,c,e):(this.graph.setSelectionCell(g.cell),this.reset());e.consume()};
+HoverIcons.prototype.click=function(b,c,e){var k=e.getEvent(),f=e.getGraphX(),p=e.getGraphY(),f=this.getStateAt(b,f,p);null==f||!this.graph.model.isEdge(f.cell)||this.graph.isCloneEvent(k)||f.getVisibleTerminalState(!0)!=b&&f.getVisibleTerminalState(!1)!=b?null!=b&&this.execute(b,c,e):(this.graph.setSelectionCell(f.cell),this.reset());e.consume()};
HoverIcons.prototype.execute=function(b,c,e){e=e.getEvent();this.graph.selectCellsForConnectVertex(this.graph.connectVertex(b.cell,c,this.graph.defaultEdgeLength,e,this.graph.isCloneEvent(e),this.graph.isCloneEvent(e)),e,this)};HoverIcons.prototype.reset=function(b){null!=b&&!b||null==this.updateThread||window.clearTimeout(this.updateThread);this.activeArrow=this.currentState=this.mouseDownPoint=null;this.removeNodes();this.bbox=null;this.fireEvent(new mxEventObject("reset"))};
HoverIcons.prototype.repaint=function(){this.bbox=null;if(null!=this.currentState){this.currentState=this.getState(this.currentState);if(null!=this.currentState&&this.graph.model.isVertex(this.currentState.cell)&&this.graph.isCellConnectable(this.currentState.cell)){var b=mxRectangle.fromRectangle(this.currentState);null!=this.currentState.shape&&null!=this.currentState.shape.boundingBox&&(b=mxRectangle.fromRectangle(this.currentState.shape.boundingBox));b.grow(this.graph.tolerance);b.grow(this.arrowSpacing);
var c=this.graph.selectionCellsHandler.getHandler(this.currentState.cell);this.graph.isTableRow(this.currentState.cell)&&(c=this.graph.selectionCellsHandler.getHandler(this.graph.model.getParent(this.currentState.cell)));var e=null;null!=c&&(b.x-=c.horizontalOffset/2,b.y-=c.verticalOffset/2,b.width+=c.horizontalOffset,b.height+=c.verticalOffset,null!=c.rotationShape&&null!=c.rotationShape.node&&"hidden"!=c.rotationShape.node.style.visibility&&"none"!=c.rotationShape.node.style.display&&null!=c.rotationShape.boundingBox&&
-(e=c.rotationShape.boundingBox));c=mxUtils.bind(this,function(b,f,c){if(null!=e){var d=new mxRectangle(f,c,b.clientWidth,b.clientHeight);mxUtils.intersects(d,e)&&(b==this.arrowUp?c-=d.y+d.height-e.y:b==this.arrowRight?f+=e.x+e.width-d.x:b==this.arrowDown?c+=e.y+e.height-d.y:b==this.arrowLeft&&(f-=d.x+d.width-e.x))}b.style.left=f+"px";b.style.top=c+"px";mxUtils.setOpacity(b,this.inactiveOpacity)});c(this.arrowUp,Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance),Math.round(b.y-
+(e=c.rotationShape.boundingBox));c=mxUtils.bind(this,function(b,g,c){if(null!=e){var d=new mxRectangle(g,c,b.clientWidth,b.clientHeight);mxUtils.intersects(d,e)&&(b==this.arrowUp?c-=d.y+d.height-e.y:b==this.arrowRight?g+=e.x+e.width-d.x:b==this.arrowDown?c+=e.y+e.height-d.y:b==this.arrowLeft&&(g-=d.x+d.width-e.x))}b.style.left=g+"px";b.style.top=c+"px";mxUtils.setOpacity(b,this.inactiveOpacity)});c(this.arrowUp,Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance),Math.round(b.y-
this.triangleUp.height-this.tolerance));c(this.arrowRight,Math.round(b.x+b.width-this.tolerance),Math.round(this.currentState.getCenterY()-this.triangleRight.height/2-this.tolerance));c(this.arrowDown,parseInt(this.arrowUp.style.left),Math.round(b.y+b.height-this.tolerance));c(this.arrowLeft,Math.round(b.x-this.triangleLeft.width-this.tolerance),parseInt(this.arrowRight.style.top));if(this.checkCollisions){var c=this.graph.getCellAt(b.x+b.width+this.triangleRight.width/2,this.currentState.getCenterY()),
-k=this.graph.getCellAt(b.x-this.triangleLeft.width/2,this.currentState.getCenterY()),g=this.graph.getCellAt(this.currentState.getCenterX(),b.y-this.triangleUp.height/2),b=this.graph.getCellAt(this.currentState.getCenterX(),b.y+b.height+this.triangleDown.height/2);null!=c&&c==k&&k==g&&g==b&&(b=g=k=c=null);var p=this.graph.getCellGeometry(this.currentState.cell),t=mxUtils.bind(this,function(b,f){var d=this.graph.model.isVertex(b)&&this.graph.getCellGeometry(b);null==b||this.graph.model.isAncestor(b,
-this.currentState.cell)||this.graph.isSwimlane(b)||!(null==d||null==p||d.height<3*p.height&&d.width<3*p.width)?f.style.visibility="visible":f.style.visibility="hidden"});t(c,this.arrowRight);t(k,this.arrowLeft);t(g,this.arrowUp);t(b,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),
+k=this.graph.getCellAt(b.x-this.triangleLeft.width/2,this.currentState.getCenterY()),f=this.graph.getCellAt(this.currentState.getCenterX(),b.y-this.triangleUp.height/2),b=this.graph.getCellAt(this.currentState.getCenterX(),b.y+b.height+this.triangleDown.height/2);null!=c&&c==k&&k==f&&f==b&&(b=f=k=c=null);var p=this.graph.getCellGeometry(this.currentState.cell),t=mxUtils.bind(this,function(b,g){var d=this.graph.model.isVertex(b)&&this.graph.getCellGeometry(b);null==b||this.graph.model.isAncestor(b,
+this.currentState.cell)||this.graph.isSwimlane(b)||!(null==d||null==p||d.height<3*p.height&&d.width<3*p.width)?g.style.visibility="visible":g.style.visibility="hidden"});t(c,this.arrowRight);t(k,this.arrowLeft);t(f,this.arrowUp);t(b,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),
this.arrowRight.setAttribute("title",mxResources.get("plusTooltip")),this.arrowUp.setAttribute("title",mxResources.get("plusTooltip")),this.arrowDown.setAttribute("title",mxResources.get("plusTooltip"))):(this.arrowLeft.removeAttribute("title"),this.arrowRight.removeAttribute("title"),this.arrowUp.removeAttribute("title"),this.arrowDown.removeAttribute("title"))}else this.reset();null!=this.currentState&&(this.bbox=this.computeBoundingBox(),null!=this.bbox&&this.bbox.grow(10))}};
HoverIcons.prototype.computeBoundingBox=function(){var b=this.graph.model.isEdge(this.currentState.cell)?null:mxRectangle.fromRectangle(this.currentState);this.visitNodes(function(c){null!=c.parentNode&&(c=new mxRectangle(c.offsetLeft,c.offsetTop,c.offsetWidth,c.offsetHeight),null==b?b=c:b.add(c))});return b};
HoverIcons.prototype.getState=function(b){if(null!=b)if(b=b.cell,this.graph.getModel().contains(b)){if(this.graph.getModel().isVertex(b)&&!this.graph.isCellConnectable(b)){var c=this.graph.getModel().getParent(b);this.graph.getModel().isVertex(c)&&this.graph.isCellConnectable(c)&&(b=c)}if(this.graph.isCellLocked(b)||this.graph.model.isEdge(b))b=null;b=this.graph.view.getState(b);null!=b&&null==b.style&&(b=null)}else b=null;return b};
HoverIcons.prototype.update=function(b,c,e){if(!this.graph.connectionArrowsEnabled||null!=b&&"0"==mxUtils.getValue(b.style,"allowArrows","1"))this.reset();else{null!=b&&null!=b.cell.geometry&&b.cell.geometry.relative&&this.graph.model.isEdge(b.cell.parent)&&(b=null);var k=null;this.prev!=b||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=b,k=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=b&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||
this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=b,this.update(b,c,e))}),this.updateDelay+10))):null!=this.startTime&&(k=(new Date).getTime()-this.startTime);this.setDisplay("");null!=this.currentState&&this.currentState!=b&&k<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,c,e)?this.reset(!1):(null!=this.currentState||k>this.activationDelay)&&this.currentState!=b&&(k>this.updateDelay&&null!=b||null==this.bbox||null==c||null==e||!mxUtils.contains(this.bbox,
c,e))&&(null!=b&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(b),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=b&&this.graph.connectionHandler.constraintHandler.reset()):this.reset())}};
-HoverIcons.prototype.setCurrentState=function(b){"eastwest"!=b.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=b};Graph.prototype.createParent=function(b,c,e,k,g){b=this.cloneCell(b);for(var p=0;p<e;p++){var t=this.cloneCell(c),d=this.getCellGeometry(t);null!=d&&(d.x+=p*k,d.y+=p*g);b.insert(t)}return b};
-Graph.prototype.createTable=function(b,c,e,k,g,p,t,d,f){e=null!=e?e:60;k=null!=k?k:40;p=null!=p?p:30;d=null!=d?d:"shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;top=0;left=0;bottom=0;right=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;";f=null!=f?f:"shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;";return this.createParent(this.createVertex(null,null,null!=g?g:"",0,0,c*e,
-b*k+(null!=g?p:0),null!=t?t:"shape=table;startSize="+(null!=g?p:"0")+";container=1;collapsible=0;childLayout=tableLayout;"),this.createParent(this.createVertex(null,null,"",0,0,c*e,k,d),this.createVertex(null,null,"",0,0,e,k,f),c,e,0),b,0,k)};Graph.prototype.setTableValues=function(b,c,e){for(var k=this.model.getChildCells(b,!0),g=0;g<k.length;g++)if(null!=e&&(k[g].value=e[g]),null!=c)for(var p=this.model.getChildCells(k[g],!0),t=0;t<p.length;t++)null!=c[g][t]&&(p[t].value=c[g][t]);return b};
-Graph.prototype.createCrossFunctionalSwimlane=function(b,c,e,k,g,p,t,d,f){e=null!=e?e:120;k=null!=k?k:120;var l=null==g?0:40;t=null!=t?t:"swimlane;horizontal=0;fontStyle=0;points=[[0,0.5],[1,0.5]];fillColor=none;strokeColor=none;portConstraint=eastwest;startSize="+l+";collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";d=null!=d?d:"swimlane;fontStyle=0;connectable=0;fillColor=none;startSize=40;collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";f=null!=f?f:"swimlane;fontStyle=0;connectable=0;fillColor=none;startSize="+
-(null==g?"40":"0")+";collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";g=this.createVertex(null,null,null!=g?g:"",0,0,c*e,b*k,null!=p?p:"shape=table;childLayout=tableLayout;startSize="+l+";"+(null==g?"fillColor=none;":"")+"collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;");p=mxUtils.getValue(this.getCellStyle(g),mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);g.geometry.width+=p;g.geometry.height+=p;t=this.createVertex(null,null,"",0,p,c*e+p,k,t);g.insert(this.createParent(t,
-this.createVertex(null,null,"",p,0,e,k,d),c,e,0));return 1<b?(t.geometry.y=k+p,this.createParent(g,this.createParent(t,this.createVertex(null,null,"",p,0,e,k,f),c,e,0),b-1,0,k)):g};
-Graph.prototype.visitTableCells=function(b,c){for(var e=null,k=this.model.getChildCells(b,!0),g=this.getActualStartSize(b,!0),p=0;p<k.length;p++){for(var t=this.getActualStartSize(k[p],!0),d=this.model.getChildCells(k[p],!0),f=null,l=[],q=0;q<d.length;q++){var m=this.getCellGeometry(d[q]),n={cell:d[q],rospan:1,colspan:1,row:p,col:q,geo:m},m=null!=m.alternateBounds?m.alternateBounds:m;n.point=new mxPoint(m.width+(null!=f?f.point.x:g.x+t.x),m.height+(null!=e&&null!=e[0]?e[0].point.y:g.y+t.y));n.actual=
-n;null!=e&&null!=e[q]&&1<e[q].rowspan?(n.rowspan=e[q].rowspan-1,n.colspan=e[q].colspan,n.actual=e[q].actual):null!=f&&1<f.colspan?(n.rowspan=f.rowspan,n.colspan=f.colspan-1,n.actual=f.actual):(f=this.getCurrentCellStyle(d[q],!0),null!=f&&(n.rowspan=parseInt(f.rowspan||1),n.colspan=parseInt(f.colspan||1)));c(n,d.length,k.length,g.x+t.x,g.y+t.y);l.push(n);f=n}e=l}};
-Graph.prototype.getTableLines=function(b,c,e){var k=[],g=[];(c||e)&&this.visitTableCells(b,mxUtils.bind(this,function(b,t,d,f,l){c&&b.row<d-1&&(null==k[b.row]&&(k[b.row]=[new mxPoint(f,b.point.y)]),1<b.rowspan&&k[b.row].push(null),k[b.row].push(b.point));e&&b.col<t-1&&(null==g[b.col]&&(g[b.col]=[new mxPoint(b.point.x,l)]),1<b.colspan&&g[b.col].push(null),g[b.col].push(b.point))}));return k.concat(g)};Graph.prototype.isTableCell=function(b){return this.model.isVertex(b)&&this.isTableRow(this.model.getParent(b))};
+HoverIcons.prototype.setCurrentState=function(b){"eastwest"!=b.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=b};Graph.prototype.createParent=function(b,c,e,k,f){b=this.cloneCell(b);for(var p=0;p<e;p++){var t=this.cloneCell(c),d=this.getCellGeometry(t);null!=d&&(d.x+=p*k,d.y+=p*f);b.insert(t)}return b};
+Graph.prototype.createTable=function(b,c,e,k,f,p,t,d,g){e=null!=e?e:60;k=null!=k?k:40;p=null!=p?p:30;d=null!=d?d:"shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;top=0;left=0;bottom=0;right=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;";g=null!=g?g:"shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;";return this.createParent(this.createVertex(null,null,null!=f?f:"",0,0,c*e,
+b*k+(null!=f?p:0),null!=t?t:"shape=table;startSize="+(null!=f?p:"0")+";container=1;collapsible=0;childLayout=tableLayout;"),this.createParent(this.createVertex(null,null,"",0,0,c*e,k,d),this.createVertex(null,null,"",0,0,e,k,g),c,e,0),b,0,k)};Graph.prototype.setTableValues=function(b,c,e){for(var k=this.model.getChildCells(b,!0),f=0;f<k.length;f++)if(null!=e&&(k[f].value=e[f]),null!=c)for(var p=this.model.getChildCells(k[f],!0),t=0;t<p.length;t++)null!=c[f][t]&&(p[t].value=c[f][t]);return b};
+Graph.prototype.createCrossFunctionalSwimlane=function(b,c,e,k,f,p,t,d,g){e=null!=e?e:120;k=null!=k?k:120;var l=null==f?0:40;t=null!=t?t:"swimlane;horizontal=0;fontStyle=0;points=[[0,0.5],[1,0.5]];fillColor=none;strokeColor=none;portConstraint=eastwest;startSize="+l+";collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";d=null!=d?d:"swimlane;fontStyle=0;connectable=0;fillColor=none;startSize=40;collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";g=null!=g?g:"swimlane;fontStyle=0;connectable=0;fillColor=none;startSize="+
+(null==f?"40":"0")+";collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;";f=this.createVertex(null,null,null!=f?f:"",0,0,c*e,b*k,null!=p?p:"shape=table;childLayout=tableLayout;startSize="+l+";"+(null==f?"fillColor=none;":"")+"collapsible=0;recursiveResize=0;expand=0;pointerEvents=0;");p=mxUtils.getValue(this.getCellStyle(f),mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);f.geometry.width+=p;f.geometry.height+=p;t=this.createVertex(null,null,"",0,p,c*e+p,k,t);f.insert(this.createParent(t,
+this.createVertex(null,null,"",p,0,e,k,d),c,e,0));return 1<b?(t.geometry.y=k+p,this.createParent(f,this.createParent(t,this.createVertex(null,null,"",p,0,e,k,g),c,e,0),b-1,0,k)):f};
+Graph.prototype.visitTableCells=function(b,c){for(var e=null,k=this.model.getChildCells(b,!0),f=this.getActualStartSize(b,!0),p=0;p<k.length;p++){for(var t=this.getActualStartSize(k[p],!0),d=this.model.getChildCells(k[p],!0),g=null,l=[],q=0;q<d.length;q++){var m=this.getCellGeometry(d[q]),n={cell:d[q],rospan:1,colspan:1,row:p,col:q,geo:m},m=null!=m.alternateBounds?m.alternateBounds:m;n.point=new mxPoint(m.width+(null!=g?g.point.x:f.x+t.x),m.height+(null!=e&&null!=e[0]?e[0].point.y:f.y+t.y));n.actual=
+n;null!=e&&null!=e[q]&&1<e[q].rowspan?(n.rowspan=e[q].rowspan-1,n.colspan=e[q].colspan,n.actual=e[q].actual):null!=g&&1<g.colspan?(n.rowspan=g.rowspan,n.colspan=g.colspan-1,n.actual=g.actual):(g=this.getCurrentCellStyle(d[q],!0),null!=g&&(n.rowspan=parseInt(g.rowspan||1),n.colspan=parseInt(g.colspan||1)));c(n,d.length,k.length,f.x+t.x,f.y+t.y);l.push(n);g=n}e=l}};
+Graph.prototype.getTableLines=function(b,c,e){var k=[],f=[];(c||e)&&this.visitTableCells(b,mxUtils.bind(this,function(b,t,d,g,l){c&&b.row<d-1&&(null==k[b.row]&&(k[b.row]=[new mxPoint(g,b.point.y)]),1<b.rowspan&&k[b.row].push(null),k[b.row].push(b.point));e&&b.col<t-1&&(null==f[b.col]&&(f[b.col]=[new mxPoint(b.point.x,l)]),1<b.colspan&&f[b.col].push(null),f[b.col].push(b.point))}));return k.concat(f)};Graph.prototype.isTableCell=function(b){return this.model.isVertex(b)&&this.isTableRow(this.model.getParent(b))};
Graph.prototype.isTableRow=function(b){return this.model.isVertex(b)&&this.isTable(this.model.getParent(b))};Graph.prototype.isTable=function(b){b=this.getCellStyle(b);return null!=b&&"tableLayout"==b.childLayout};Graph.prototype.isStack=function(b){b=this.getCellStyle(b);return null!=b&&"stackLayout"==b.childLayout};Graph.prototype.isStackChild=function(b){return this.model.isVertex(b)&&this.isStack(this.model.getParent(b))};
-Graph.prototype.setTableRowHeight=function(b,c,e){e=null!=e?e:!0;var k=this.getModel();k.beginUpdate();try{var g=this.getCellGeometry(b);if(null!=g){g=g.clone();g.height+=c;k.setGeometry(b,g);var p=k.getParent(b),t=k.getChildCells(p,!0);if(!e){var d=mxUtils.indexOf(t,b);if(d<t.length-1){var f=t[d+1],l=this.getCellGeometry(f);null!=l&&(l=l.clone(),l.y+=c,l.height-=c,k.setGeometry(f,l))}}var q=this.getCellGeometry(p);null!=q&&(e||(e=b==t[t.length-1]),e&&(q=q.clone(),q.height+=c,k.setGeometry(p,q)))}}finally{k.endUpdate()}};
-Graph.prototype.setTableColumnWidth=function(b,c,e){e=null!=e?e:!1;var k=this.getModel(),g=k.getParent(b),p=k.getParent(g),t=k.getChildCells(g,!0);b=mxUtils.indexOf(t,b);var d=b==t.length-1;k.beginUpdate();try{for(var f=k.getChildCells(p,!0),l=0;l<f.length;l++){var g=f[l],t=k.getChildCells(g,!0),q=t[b],m=this.getCellGeometry(q);null!=m&&(m=m.clone(),m.width+=c,null!=m.alternateBounds&&(m.alternateBounds.width+=c),k.setGeometry(q,m));b<t.length-1&&(q=t[b+1],m=this.getCellGeometry(q),null!=m&&(m=m.clone(),
+Graph.prototype.setTableRowHeight=function(b,c,e){e=null!=e?e:!0;var k=this.getModel();k.beginUpdate();try{var f=this.getCellGeometry(b);if(null!=f){f=f.clone();f.height+=c;k.setGeometry(b,f);var p=k.getParent(b),t=k.getChildCells(p,!0);if(!e){var d=mxUtils.indexOf(t,b);if(d<t.length-1){var g=t[d+1],l=this.getCellGeometry(g);null!=l&&(l=l.clone(),l.y+=c,l.height-=c,k.setGeometry(g,l))}}var q=this.getCellGeometry(p);null!=q&&(e||(e=b==t[t.length-1]),e&&(q=q.clone(),q.height+=c,k.setGeometry(p,q)))}}finally{k.endUpdate()}};
+Graph.prototype.setTableColumnWidth=function(b,c,e){e=null!=e?e:!1;var k=this.getModel(),f=k.getParent(b),p=k.getParent(f),t=k.getChildCells(f,!0);b=mxUtils.indexOf(t,b);var d=b==t.length-1;k.beginUpdate();try{for(var g=k.getChildCells(p,!0),l=0;l<g.length;l++){var f=g[l],t=k.getChildCells(f,!0),q=t[b],m=this.getCellGeometry(q);null!=m&&(m=m.clone(),m.width+=c,null!=m.alternateBounds&&(m.alternateBounds.width+=c),k.setGeometry(q,m));b<t.length-1&&(q=t[b+1],m=this.getCellGeometry(q),null!=m&&(m=m.clone(),
m.x+=c,e||(m.width-=c,null!=m.alternateBounds&&(m.alternateBounds.width-=c)),k.setGeometry(q,m)))}if(d||e){var n=this.getCellGeometry(p);null!=n&&(n=n.clone(),n.width+=c,k.setGeometry(p,n))}}finally{k.endUpdate()}};function TableLayout(b){mxGraphLayout.call(this,b)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};TableLayout.prototype.isVertexIgnored=function(b){return!this.graph.getModel().isVertex(b)||!this.graph.isCellVisible(b)};
-TableLayout.prototype.getSize=function(b,c){for(var e=0,k=0;k<b.length;k++)if(!this.isVertexIgnored(b[k])){var g=this.graph.getCellGeometry(b[k]);null!=g&&(e+=c?g.width:g.height)}return e};
-TableLayout.prototype.getRowLayout=function(b,c){for(var e=this.graph.model.getChildCells(b,!0),k=this.graph.getActualStartSize(b,!0),g=this.getSize(e,!0),p=c-k.x-k.width,t=[],k=k.x,d=0;d<e.length;d++){var f=this.graph.getCellGeometry(e[d]);null!=f&&(k+=(null!=f.alternateBounds?f.alternateBounds.width:f.width)*p/g,t.push(Math.round(k)))}return t};
-TableLayout.prototype.layoutRow=function(b,c,e,k,g){g=this.graph.getModel();var p=g.getChildCells(b,!0);b=this.graph.getActualStartSize(b,!0);var t=b.x,d=0;null!=c&&(c=c.slice(),c.splice(0,0,b.x));for(var f=0;f<p.length;f++){var l=this.graph.getCellGeometry(p[f]);null!=l&&(l=l.clone(),l.y=b.y,l.height=e-b.y-b.height,null!=c?(l.x=c[f],l.width=c[f+1]-l.x,f==p.length-1&&f<c.length-2&&(l.width=k-l.x-b.x-b.width)):(l.x=t,t+=l.width,f==p.length-1?l.width=k-b.x-b.width-d:d+=l.width),l.alternateBounds=new mxRectangle(0,
-0,l.width,l.height),g.setGeometry(p[f],l))}return d};
-TableLayout.prototype.execute=function(b){if(null!=b){var c=this.graph.getActualStartSize(b,!0),e=this.graph.getCellGeometry(b),k=this.graph.getCellStyle(b),g="1"==mxUtils.getValue(k,"resizeLastRow","0"),p="1"==mxUtils.getValue(k,"resizeLast","0"),k="1"==mxUtils.getValue(k,"fixedRows","0"),t=this.graph.getModel(),d=0;t.beginUpdate();try{var f=e.height-c.y-c.height,l=e.width-c.x-c.width,q=t.getChildCells(b,!0),m=this.getSize(q,!1);if(0<f&&0<l&&0<q.length&&0<m){if(g){var n=this.graph.getCellGeometry(q[q.length-
-1]);null!=n&&(n=n.clone(),n.height=f-m+n.height,t.setGeometry(q[q.length-1],n))}for(var u=p?null:this.getRowLayout(q[0],l),v=[],y=c.y,x=0;x<q.length;x++)n=this.graph.getCellGeometry(q[x]),null!=n&&(n=n.clone(),n.x=c.x,n.width=l,n.y=Math.round(y),y=g||k?y+n.height:y+n.height/m*f,n.height=Math.round(y)-n.y,t.setGeometry(q[x],n)),d=Math.max(d,this.layoutRow(q[x],u,n.height,l,v));k&&f<m&&(e=e.clone(),e.height=y+c.height,t.setGeometry(b,e));p&&l<d+Graph.minTableColumnWidth&&(e=e.clone(),e.width=d+c.width+
+TableLayout.prototype.getSize=function(b,c){for(var e=0,k=0;k<b.length;k++)if(!this.isVertexIgnored(b[k])){var f=this.graph.getCellGeometry(b[k]);null!=f&&(e+=c?f.width:f.height)}return e};
+TableLayout.prototype.getRowLayout=function(b,c){for(var e=this.graph.model.getChildCells(b,!0),k=this.graph.getActualStartSize(b,!0),f=this.getSize(e,!0),p=c-k.x-k.width,t=[],k=k.x,d=0;d<e.length;d++){var g=this.graph.getCellGeometry(e[d]);null!=g&&(k+=(null!=g.alternateBounds?g.alternateBounds.width:g.width)*p/f,t.push(Math.round(k)))}return t};
+TableLayout.prototype.layoutRow=function(b,c,e,k,f){f=this.graph.getModel();var p=f.getChildCells(b,!0);b=this.graph.getActualStartSize(b,!0);var t=b.x,d=0;null!=c&&(c=c.slice(),c.splice(0,0,b.x));for(var g=0;g<p.length;g++){var l=this.graph.getCellGeometry(p[g]);null!=l&&(l=l.clone(),l.y=b.y,l.height=e-b.y-b.height,null!=c?(l.x=c[g],l.width=c[g+1]-l.x,g==p.length-1&&g<c.length-2&&(l.width=k-l.x-b.x-b.width)):(l.x=t,t+=l.width,g==p.length-1?l.width=k-b.x-b.width-d:d+=l.width),l.alternateBounds=new mxRectangle(0,
+0,l.width,l.height),f.setGeometry(p[g],l))}return d};
+TableLayout.prototype.execute=function(b){if(null!=b){var c=this.graph.getActualStartSize(b,!0),e=this.graph.getCellGeometry(b),k=this.graph.getCellStyle(b),f="1"==mxUtils.getValue(k,"resizeLastRow","0"),p="1"==mxUtils.getValue(k,"resizeLast","0"),k="1"==mxUtils.getValue(k,"fixedRows","0"),t=this.graph.getModel(),d=0;t.beginUpdate();try{var g=e.height-c.y-c.height,l=e.width-c.x-c.width,q=t.getChildCells(b,!0),m=this.getSize(q,!1);if(0<g&&0<l&&0<q.length&&0<m){if(f){var n=this.graph.getCellGeometry(q[q.length-
+1]);null!=n&&(n=n.clone(),n.height=g-m+n.height,t.setGeometry(q[q.length-1],n))}for(var u=p?null:this.getRowLayout(q[0],l),v=[],y=c.y,x=0;x<q.length;x++)n=this.graph.getCellGeometry(q[x]),null!=n&&(n=n.clone(),n.x=c.x,n.width=l,n.y=Math.round(y),y=f||k?y+n.height:y+n.height/m*g,n.height=Math.round(y)-n.y,t.setGeometry(q[x],n)),d=Math.max(d,this.layoutRow(q[x],u,n.height,l,v));k&&g<m&&(e=e.clone(),e.height=y+c.height,t.setGeometry(b,e));p&&l<d+Graph.minTableColumnWidth&&(e=e.clone(),e.width=d+c.width+
c.x+Graph.minTableColumnWidth,t.setGeometry(b,e));this.graph.visitTableCells(b,mxUtils.bind(this,function(b){t.setVisible(b.cell,b.actual.cell==b.cell);if(b.actual.cell!=b.cell){if(b.actual.row==b.row){var d=null!=b.geo.alternateBounds?b.geo.alternateBounds:b.geo;b.actual.geo.width+=d.width}b.actual.col==b.col&&(d=null!=b.geo.alternateBounds?b.geo.alternateBounds:b.geo,b.actual.geo.height+=d.height)}}))}}finally{t.endUpdate()}}};
-(function(){var b=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){b.apply(this,arguments);this.validEdges=[]};var c=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(b,d){d=null!=d?d:!0;var f=this.getState(b);null!=f&&d&&this.graph.model.isEdge(f.cell)&&null!=f.style&&1!=f.style[mxConstants.STYLE_CURVED]&&!f.invalid&&this.updateLineJumps(f)&&this.graph.cellRenderer.redraw(f,!1,this.isRendering());f=c.apply(this,
-arguments);null!=f&&d&&this.graph.model.isEdge(f.cell)&&null!=f.style&&1!=f.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(f);return f};var e=mxShape.prototype.paint;mxShape.prototype.paint=function(){e.apply(this,arguments);if(null!=this.state&&null!=this.node&&this.state.view.graph.enableFlowAnimation&&this.state.view.graph.model.isEdge(this.state.cell)&&"1"==mxUtils.getValue(this.state.style,"flowAnimation","0")){var b=this.node.getElementsByTagName("path");if(1<b.length){"1"!=mxUtils.getValue(this.state.style,
-mxConstants.STYLE_DASHED,"0")&&b[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var d=this.state.view.graph.getFlowAnimationStyle();null!=d&&b[1].setAttribute("class",d.getAttribute("id"))}}};var k=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(b,d){return k.apply(this,arguments)||null!=b.routedPoints&&null!=d.routedPoints&&!mxUtils.equalPoints(d.routedPoints,b.routedPoints)};var g=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
-function(b){g.apply(this,arguments);this.graph.model.isEdge(b.cell)&&1!=b.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(b)};mxGraphView.prototype.updateLineJumps=function(b){var d=b.absolutePoints;if(Graph.lineJumpsEnabled){var f=null!=b.routedPoints,c=null;if(null!=d&&null!=this.validEdges&&"none"!==mxUtils.getValue(b.style,"jumpStyle","none")){for(var e=function(d,f,e){var g=new mxPoint(f,e);g.type=d;c.push(g);g=null!=b.routedPoints?b.routedPoints[c.length-1]:null;return null==g||g.type!=
-d||g.x!=f||g.y!=e},g=.5*this.scale,f=!1,c=[],l=0;l<d.length-1;l++){for(var k=d[l+1],q=d[l],p=[],t=d[l+2];l<d.length-2&&mxUtils.ptSegDistSq(q.x,q.y,t.x,t.y,k.x,k.y)<1*this.scale*this.scale;)k=t,l++,t=d[l+2];for(var f=e(0,q.x,q.y)||f,L=0;L<this.validEdges.length;L++){var E=this.validEdges[L],J=E.absolutePoints;if(null!=J&&mxUtils.intersects(b,E)&&"1"!=E.style.noJump)for(E=0;E<J.length-1;E++){for(var C=J[E+1],K=J[E],t=J[E+2];E<J.length-2&&mxUtils.ptSegDistSq(K.x,K.y,t.x,t.y,C.x,C.y)<1*this.scale*this.scale;)C=
-t,E++,t=J[E+2];t=mxUtils.intersection(q.x,q.y,k.x,k.y,K.x,K.y,C.x,C.y);if(null!=t&&(Math.abs(t.x-q.x)>g||Math.abs(t.y-q.y)>g)&&(Math.abs(t.x-k.x)>g||Math.abs(t.y-k.y)>g)&&(Math.abs(t.x-K.x)>g||Math.abs(t.y-K.y)>g)&&(Math.abs(t.x-C.x)>g||Math.abs(t.y-C.y)>g)){C=t.x-q.x;K=t.y-q.y;t={distSq:C*C+K*K,x:t.x,y:t.y};for(C=0;C<p.length;C++)if(p[C].distSq>t.distSq){p.splice(C,0,t);t=null;break}null==t||0!=p.length&&p[p.length-1].x===t.x&&p[p.length-1].y===t.y||p.push(t)}}}for(E=0;E<p.length;E++)f=e(1,p[E].x,
-p[E].y)||f}t=d[d.length-1];f=e(0,t.x,t.y)||f}b.routedPoints=c;return f}return!1};var p=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(b,d,f){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)p.apply(this,arguments);else{var c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,
-"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),l=!0,k=null,q=null,m=[],n=null;b.begin();for(var t=0;t<this.state.routedPoints.length;t++){var E=this.state.routedPoints[t],J=new mxPoint(E.x/this.scale,E.y/this.scale);0==t?J=d[0]:t==this.state.routedPoints.length-1&&(J=d[d.length-1]);var C=!1;if(null!=k&&1==E.type){var K=this.state.routedPoints[t+1],E=K.x/this.scale-J.x,K=K.y/this.scale-J.y,E=E*E+K*K;null==n&&(n=new mxPoint(J.x-k.x,J.y-k.y),
-q=Math.sqrt(n.x*n.x+n.y*n.y),0<q?(n.x=n.x*e/q,n.y=n.y*e/q):n=null);E>e*e&&0<q&&(E=k.x-J.x,K=k.y-J.y,E=E*E+K*K,E>e*e&&(C=new mxPoint(J.x-n.x,J.y-n.y),E=new mxPoint(J.x+n.x,J.y+n.y),m.push(C),this.addPoints(b,m,f,c,!1,null,l),m=0>Math.round(n.x)||0==Math.round(n.x)&&0>=Math.round(n.y)?1:-1,l=!1,"sharp"==g?(b.lineTo(C.x-n.y*m,C.y+n.x*m),b.lineTo(E.x-n.y*m,E.y+n.x*m),b.lineTo(E.x,E.y)):"line"==g?(b.moveTo(C.x+n.y*m,C.y-n.x*m),b.lineTo(C.x-n.y*m,C.y+n.x*m),b.moveTo(E.x-n.y*m,E.y+n.x*m),b.lineTo(E.x+n.y*
-m,E.y-n.x*m),b.moveTo(E.x,E.y)):"arc"==g?(m*=1.3,b.curveTo(C.x-n.y*m,C.y+n.x*m,E.x-n.y*m,E.y+n.x*m,E.x,E.y)):(b.moveTo(E.x,E.y),l=!0),m=[E],C=!0))}else n=null;C||(m.push(J),k=J)}this.addPoints(b,m,f,c,!1,null,l);b.stroke()}};var t=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(b,d,f,c){return null!=d&&"centerPerimeter"==d.style[mxConstants.STYLE_PERIMETER]?new mxPoint(d.getCenterX(),d.getCenterY()):t.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;
-mxGraphView.prototype.updateFloatingTerminalPoint=function(b,f,c,e){if(null==f||null==b||"1"!=f.style.snapToPoint&&"1"!=b.style.snapToPoint)d.apply(this,arguments);else{f=this.getTerminalPort(b,f,e);var g=this.getNextPoint(b,c,e),l=this.graph.isOrthogonal(b),k=mxUtils.toRadians(Number(f.style[mxConstants.STYLE_ROTATION]||"0")),q=new mxPoint(f.getCenterX(),f.getCenterY());if(0!=k)var m=Math.cos(-k),n=Math.sin(-k),g=mxUtils.getRotatedPoint(g,m,n,q);m=parseFloat(b.style[mxConstants.STYLE_PERIMETER_SPACING]||
-0);m+=parseFloat(b.style[e?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);g=this.getPerimeterPoint(f,g,0==k&&l,m);0!=k&&(m=Math.cos(k),n=Math.sin(k),g=mxUtils.getRotatedPoint(g,m,n,q));b.setAbsoluteTerminalPoint(this.snapToAnchorPoint(b,f,c,e,g),e)}};mxGraphView.prototype.snapToAnchorPoint=function(b,d,f,c,e){if(null!=d&&null!=b){b=this.graph.getAllConnectionConstraints(d);c=f=null;if(null!=b)for(var g=0;g<b.length;g++){var l=this.graph.getConnectionPoint(d,
-b[g]);if(null!=l){var k=(l.x-e.x)*(l.x-e.x)+(l.y-e.y)*(l.y-e.y);if(null==c||k<c)f=l,c=k}}null!=f&&(e=f)}return e};var f=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(b,d,c){var e=f.apply(this,arguments);"1"==b.getAttribute("placeholders")&&null!=c.state&&(e=c.state.view.graph.replacePlaceholders(c.state.cell,e));return e};var l=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(b){if(null!=b.style&&"undefined"!==typeof pako){var d=
-mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null);if(null!=d&&"string"===typeof d&&"stencil("==d.substring(0,8))try{var f=d.substring(8,d.length-1),c=mxUtils.parseXml(Graph.decompress(f));return new mxShape(new mxStencil(c.documentElement))}catch(v){null!=window.console&&console.log("Error in shape: "+v)}}return l.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[];
+(function(){var b=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){b.apply(this,arguments);this.validEdges=[]};var c=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(b,d){d=null!=d?d:!0;var g=this.getState(b);null!=g&&d&&this.graph.model.isEdge(g.cell)&&null!=g.style&&1!=g.style[mxConstants.STYLE_CURVED]&&!g.invalid&&this.updateLineJumps(g)&&this.graph.cellRenderer.redraw(g,!1,this.isRendering());g=c.apply(this,
+arguments);null!=g&&d&&this.graph.model.isEdge(g.cell)&&null!=g.style&&1!=g.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(g);return g};var e=mxShape.prototype.paint;mxShape.prototype.paint=function(){e.apply(this,arguments);if(null!=this.state&&null!=this.node&&this.state.view.graph.enableFlowAnimation&&this.state.view.graph.model.isEdge(this.state.cell)&&"1"==mxUtils.getValue(this.state.style,"flowAnimation","0")){var b=this.node.getElementsByTagName("path");if(1<b.length){"1"!=mxUtils.getValue(this.state.style,
+mxConstants.STYLE_DASHED,"0")&&b[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var d=this.state.view.graph.getFlowAnimationStyle();null!=d&&b[1].setAttribute("class",d.getAttribute("id"))}}};var k=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(b,d){return k.apply(this,arguments)||null!=b.routedPoints&&null!=d.routedPoints&&!mxUtils.equalPoints(d.routedPoints,b.routedPoints)};var f=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
+function(b){f.apply(this,arguments);this.graph.model.isEdge(b.cell)&&1!=b.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(b)};mxGraphView.prototype.updateLineJumps=function(b){var d=b.absolutePoints;if(Graph.lineJumpsEnabled){var g=null!=b.routedPoints,c=null;if(null!=d&&null!=this.validEdges&&"none"!==mxUtils.getValue(b.style,"jumpStyle","none")){for(var e=function(d,g,e){var f=new mxPoint(g,e);f.type=d;c.push(f);f=null!=b.routedPoints?b.routedPoints[c.length-1]:null;return null==f||f.type!=
+d||f.x!=g||f.y!=e},f=.5*this.scale,g=!1,c=[],l=0;l<d.length-1;l++){for(var k=d[l+1],q=d[l],p=[],t=d[l+2];l<d.length-2&&mxUtils.ptSegDistSq(q.x,q.y,t.x,t.y,k.x,k.y)<1*this.scale*this.scale;)k=t,l++,t=d[l+2];for(var g=e(0,q.x,q.y)||g,N=0;N<this.validEdges.length;N++){var E=this.validEdges[N],J=E.absolutePoints;if(null!=J&&mxUtils.intersects(b,E)&&"1"!=E.style.noJump)for(E=0;E<J.length-1;E++){for(var C=J[E+1],K=J[E],t=J[E+2];E<J.length-2&&mxUtils.ptSegDistSq(K.x,K.y,t.x,t.y,C.x,C.y)<1*this.scale*this.scale;)C=
+t,E++,t=J[E+2];t=mxUtils.intersection(q.x,q.y,k.x,k.y,K.x,K.y,C.x,C.y);if(null!=t&&(Math.abs(t.x-q.x)>f||Math.abs(t.y-q.y)>f)&&(Math.abs(t.x-k.x)>f||Math.abs(t.y-k.y)>f)&&(Math.abs(t.x-K.x)>f||Math.abs(t.y-K.y)>f)&&(Math.abs(t.x-C.x)>f||Math.abs(t.y-C.y)>f)){C=t.x-q.x;K=t.y-q.y;t={distSq:C*C+K*K,x:t.x,y:t.y};for(C=0;C<p.length;C++)if(p[C].distSq>t.distSq){p.splice(C,0,t);t=null;break}null==t||0!=p.length&&p[p.length-1].x===t.x&&p[p.length-1].y===t.y||p.push(t)}}}for(E=0;E<p.length;E++)g=e(1,p[E].x,
+p[E].y)||g}t=d[d.length-1];g=e(0,t.x,t.y)||g}b.routedPoints=c;return g}return!1};var p=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(b,d,g){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)p.apply(this,arguments);else{var c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,
+"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,f=mxUtils.getValue(this.style,"jumpStyle","none"),l=!0,k=null,q=null,m=[],n=null;b.begin();for(var t=0;t<this.state.routedPoints.length;t++){var E=this.state.routedPoints[t],J=new mxPoint(E.x/this.scale,E.y/this.scale);0==t?J=d[0]:t==this.state.routedPoints.length-1&&(J=d[d.length-1]);var C=!1;if(null!=k&&1==E.type){var K=this.state.routedPoints[t+1],E=K.x/this.scale-J.x,K=K.y/this.scale-J.y,E=E*E+K*K;null==n&&(n=new mxPoint(J.x-k.x,J.y-k.y),
+q=Math.sqrt(n.x*n.x+n.y*n.y),0<q?(n.x=n.x*e/q,n.y=n.y*e/q):n=null);E>e*e&&0<q&&(E=k.x-J.x,K=k.y-J.y,E=E*E+K*K,E>e*e&&(C=new mxPoint(J.x-n.x,J.y-n.y),E=new mxPoint(J.x+n.x,J.y+n.y),m.push(C),this.addPoints(b,m,g,c,!1,null,l),m=0>Math.round(n.x)||0==Math.round(n.x)&&0>=Math.round(n.y)?1:-1,l=!1,"sharp"==f?(b.lineTo(C.x-n.y*m,C.y+n.x*m),b.lineTo(E.x-n.y*m,E.y+n.x*m),b.lineTo(E.x,E.y)):"line"==f?(b.moveTo(C.x+n.y*m,C.y-n.x*m),b.lineTo(C.x-n.y*m,C.y+n.x*m),b.moveTo(E.x-n.y*m,E.y+n.x*m),b.lineTo(E.x+n.y*
+m,E.y-n.x*m),b.moveTo(E.x,E.y)):"arc"==f?(m*=1.3,b.curveTo(C.x-n.y*m,C.y+n.x*m,E.x-n.y*m,E.y+n.x*m,E.x,E.y)):(b.moveTo(E.x,E.y),l=!0),m=[E],C=!0))}else n=null;C||(m.push(J),k=J)}this.addPoints(b,m,g,c,!1,null,l);b.stroke()}};var t=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(b,d,g,c){return null!=d&&"centerPerimeter"==d.style[mxConstants.STYLE_PERIMETER]?new mxPoint(d.getCenterX(),d.getCenterY()):t.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;
+mxGraphView.prototype.updateFloatingTerminalPoint=function(b,g,c,e){if(null==g||null==b||"1"!=g.style.snapToPoint&&"1"!=b.style.snapToPoint)d.apply(this,arguments);else{g=this.getTerminalPort(b,g,e);var f=this.getNextPoint(b,c,e),l=this.graph.isOrthogonal(b),k=mxUtils.toRadians(Number(g.style[mxConstants.STYLE_ROTATION]||"0")),q=new mxPoint(g.getCenterX(),g.getCenterY());if(0!=k)var m=Math.cos(-k),n=Math.sin(-k),f=mxUtils.getRotatedPoint(f,m,n,q);m=parseFloat(b.style[mxConstants.STYLE_PERIMETER_SPACING]||
+0);m+=parseFloat(b.style[e?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);f=this.getPerimeterPoint(g,f,0==k&&l,m);0!=k&&(m=Math.cos(k),n=Math.sin(k),f=mxUtils.getRotatedPoint(f,m,n,q));b.setAbsoluteTerminalPoint(this.snapToAnchorPoint(b,g,c,e,f),e)}};mxGraphView.prototype.snapToAnchorPoint=function(b,d,g,c,e){if(null!=d&&null!=b){b=this.graph.getAllConnectionConstraints(d);c=g=null;if(null!=b)for(var f=0;f<b.length;f++){var l=this.graph.getConnectionPoint(d,
+b[f]);if(null!=l){var k=(l.x-e.x)*(l.x-e.x)+(l.y-e.y)*(l.y-e.y);if(null==c||k<c)g=l,c=k}}null!=g&&(e=g)}return e};var g=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(b,d,c){var e=g.apply(this,arguments);"1"==b.getAttribute("placeholders")&&null!=c.state&&(e=c.state.view.graph.replacePlaceholders(c.state.cell,e));return e};var l=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(b){if(null!=b.style&&"undefined"!==typeof pako){var d=
+mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null);if(null!=d&&"string"===typeof d&&"stencil("==d.substring(0,8))try{var g=d.substring(8,d.length-1),c=mxUtils.parseXml(Graph.decompress(g));return new mxShape(new mxStencil(c.documentElement))}catch(v){null!=window.console&&console.log("Error in shape: "+v)}}return l.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[];
mxStencilRegistry.filesLoaded={};
-mxStencilRegistry.getStencil=function(b){var c=mxStencilRegistry.stencils[b];if(null==c&&null==mxCellRenderer.defaultShapes[b]&&mxStencilRegistry.dynamicLoading){var e=mxStencilRegistry.getBasenameForStencil(b);if(null!=e){c=mxStencilRegistry.libraries[e];if(null!=c){if(null==mxStencilRegistry.packages[e]){for(var k=0;k<c.length;k++){var g=c[k];if(!mxStencilRegistry.filesLoaded[g])if(mxStencilRegistry.filesLoaded[g]=!0,".xml"==g.toLowerCase().substring(g.length-4,g.length))mxStencilRegistry.loadStencilSet(g,
-null);else if(".js"==g.toLowerCase().substring(g.length-3,g.length))try{if(mxStencilRegistry.allowEval){var p=mxUtils.load(g);null!=p&&200<=p.getStatus()&&299>=p.getStatus()&&eval.call(window,p.getText())}}catch(t){null!=window.console&&console.log("error in getStencil:",b,e,c,g,t)}}mxStencilRegistry.packages[e]=1}}else e=e.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+e+".xml",null);c=mxStencilRegistry.stencils[b]}}return c};
+mxStencilRegistry.getStencil=function(b){var c=mxStencilRegistry.stencils[b];if(null==c&&null==mxCellRenderer.defaultShapes[b]&&mxStencilRegistry.dynamicLoading){var e=mxStencilRegistry.getBasenameForStencil(b);if(null!=e){c=mxStencilRegistry.libraries[e];if(null!=c){if(null==mxStencilRegistry.packages[e]){for(var k=0;k<c.length;k++){var f=c[k];if(!mxStencilRegistry.filesLoaded[f])if(mxStencilRegistry.filesLoaded[f]=!0,".xml"==f.toLowerCase().substring(f.length-4,f.length))mxStencilRegistry.loadStencilSet(f,
+null);else if(".js"==f.toLowerCase().substring(f.length-3,f.length))try{if(mxStencilRegistry.allowEval){var p=mxUtils.load(f);null!=p&&200<=p.getStatus()&&299>=p.getStatus()&&eval.call(window,p.getText())}}catch(t){null!=window.console&&console.log("error in getStencil:",b,e,c,f,t)}}mxStencilRegistry.packages[e]=1}}else e=e.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+e+".xml",null);c=mxStencilRegistry.stencils[b]}}return c};
mxStencilRegistry.getBasenameForStencil=function(b){var c=null;if(null!=b&&"string"===typeof b&&(b=b.split("."),0<b.length&&"mxgraph"==b[0]))for(var c=b[1],e=2;e<b.length-1;e++)c+="/"+b[e];return c};
-mxStencilRegistry.loadStencilSet=function(b,c,e,k){var g=mxStencilRegistry.packages[b];if(null!=e&&e||null==g){var p=!1;if(null==g)try{if(k){mxStencilRegistry.loadStencil(b,mxUtils.bind(this,function(e){null!=e&&null!=e.documentElement&&(mxStencilRegistry.packages[b]=e,p=!0,mxStencilRegistry.parseStencilSet(e.documentElement,c,p))}));return}g=mxStencilRegistry.loadStencil(b);mxStencilRegistry.packages[b]=g;p=!0}catch(t){null!=window.console&&console.log("error in loadStencilSet:",b,t)}null!=g&&null!=
-g.documentElement&&mxStencilRegistry.parseStencilSet(g.documentElement,c,p)}};mxStencilRegistry.loadStencil=function(b,c){if(null!=c)mxUtils.get(b,mxUtils.bind(this,function(b){c(200<=b.getStatus()&&299>=b.getStatus()?b.getXml():null)}));else return mxUtils.load(b).getXml()};mxStencilRegistry.parseStencilSets=function(b){for(var c=0;c<b.length;c++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(b[c]).documentElement)};
-mxStencilRegistry.parseStencilSet=function(b,c,e){if("stencils"==b.nodeName)for(var k=b.firstChild;null!=k;)"shapes"==k.nodeName&&mxStencilRegistry.parseStencilSet(k,c,e),k=k.nextSibling;else{e=null!=e?e:!0;var k=b.firstChild,g="";b=b.getAttribute("name");for(null!=b&&(g=b+".");null!=k;){if(k.nodeType==mxConstants.NODETYPE_ELEMENT&&(b=k.getAttribute("name"),null!=b)){var g=g.toLowerCase(),p=b.replace(/ /g,"_");e&&mxStencilRegistry.addStencil(g+p.toLowerCase(),new mxStencil(k));if(null!=c){var t=k.getAttribute("w"),
-d=k.getAttribute("h"),t=null==t?80:parseInt(t,10),d=null==d?80:parseInt(d,10);c(g,p,b,t,d)}}k=k.nextSibling}}};
+mxStencilRegistry.loadStencilSet=function(b,c,e,k){var f=mxStencilRegistry.packages[b];if(null!=e&&e||null==f){var p=!1;if(null==f)try{if(k){mxStencilRegistry.loadStencil(b,mxUtils.bind(this,function(e){null!=e&&null!=e.documentElement&&(mxStencilRegistry.packages[b]=e,p=!0,mxStencilRegistry.parseStencilSet(e.documentElement,c,p))}));return}f=mxStencilRegistry.loadStencil(b);mxStencilRegistry.packages[b]=f;p=!0}catch(t){null!=window.console&&console.log("error in loadStencilSet:",b,t)}null!=f&&null!=
+f.documentElement&&mxStencilRegistry.parseStencilSet(f.documentElement,c,p)}};mxStencilRegistry.loadStencil=function(b,c){if(null!=c)mxUtils.get(b,mxUtils.bind(this,function(b){c(200<=b.getStatus()&&299>=b.getStatus()?b.getXml():null)}));else return mxUtils.load(b).getXml()};mxStencilRegistry.parseStencilSets=function(b){for(var c=0;c<b.length;c++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(b[c]).documentElement)};
+mxStencilRegistry.parseStencilSet=function(b,c,e){if("stencils"==b.nodeName)for(var k=b.firstChild;null!=k;)"shapes"==k.nodeName&&mxStencilRegistry.parseStencilSet(k,c,e),k=k.nextSibling;else{e=null!=e?e:!0;var k=b.firstChild,f="";b=b.getAttribute("name");for(null!=b&&(f=b+".");null!=k;){if(k.nodeType==mxConstants.NODETYPE_ELEMENT&&(b=k.getAttribute("name"),null!=b)){var f=f.toLowerCase(),p=b.replace(/ /g,"_");e&&mxStencilRegistry.addStencil(f+p.toLowerCase(),new mxStencil(k));if(null!=c){var t=k.getAttribute("w"),
+d=k.getAttribute("h"),t=null==t?80:parseInt(t,10),d=null==d?80:parseInt(d,10);c(f,p,b,t,d)}}k=k.nextSibling}}};
"undefined"!=typeof mxVertexHandler&&function(){function b(){var b=document.createElement("div");b.className="geHint";b.style.whiteSpace="nowrap";b.style.position="absolute";return b}function c(b,d){switch(d){case mxConstants.POINTS:return b;case mxConstants.MILLIMETERS:return(b/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(b/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(b/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
mxConstants.HANDLE_STROKECOLOR="#0088cf";mxConstants.VERTEX_SELECTION_COLOR="#00a8ff";mxConstants.OUTLINE_COLOR="#00a8ff";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.EDGE_SELECTION_COLOR="#00a8ff";mxConstants.DEFAULT_VALID_COLOR="#00a8ff";mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff";mxConstants.GUIDE_COLOR="#0088cf";mxConstants.HIGHLIGHT_OPACITY=30;mxConstants.HIGHLIGHT_SIZE=5;mxEdgeHandler.prototype.snapToTerminals=
!0;mxGraphHandler.prototype.guidesEnabled=!0;mxGraphHandler.prototype.removeEmptyParents=!0;mxRubberband.prototype.fadeOut=!0;mxGuide.prototype.isEnabledForEvent=function(b){return!mxEvent.isAltDown(b)};var e=mxGraphLayout.prototype.isVertexIgnored;mxGraphLayout.prototype.isVertexIgnored=function(b){return e.apply(this,arguments)||this.graph.isTableRow(b)||this.graph.isTableCell(b)};var k=mxGraphLayout.prototype.isEdgeIgnored;mxGraphLayout.prototype.isEdgeIgnored=function(b){return k.apply(this,arguments)||
-this.graph.isEdgeIgnored(b)};var g=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(b){return this.graph.isCloneEvent(b)!=g.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var b=new mxEllipse(null,this.highlightColor,this.highlightColor,0);b.opacity=mxConstants.HIGHLIGHT_OPACITY;return b};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=
+this.graph.isEdgeIgnored(b)};var f=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(b){return this.graph.isCloneEvent(b)!=f.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var b=new mxEllipse(null,this.highlightColor,this.highlightColor,0);b.opacity=mxConstants.HIGHLIGHT_OPACITY;return b};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=
function(b){b=this.graph.createCurrentEdgeStyle();b=this.graph.createEdge(null,null,null,null,null,b);b=new mxCellState(this.graph.view,b,this.graph.getCellStyle(b));for(var d in this.graph.currentEdgeStyle)b.style[d]=this.graph.currentEdgeStyle[d];b.style=this.graph.postProcessCellStyle(b.cell,b.style);return b};var p=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var b=p.apply(this,arguments);b.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];
-return b};mxConnectionHandler.prototype.updatePreview=function(b){};var t=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var b=t.apply(this,arguments),d=b.getCell;b.getCell=mxUtils.bind(this,function(b){var f=d.apply(this,arguments);this.error=null;return f});return b};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=
-function(){for(var b="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",d="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),f=0;f<d.length;f++)null!=this.currentEdgeStyle[d[f]]&&(b+=d[f]+"="+this.currentEdgeStyle[d[f]]+";");null!=this.currentEdgeStyle.orthogonalLoop?b+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
+return b};mxConnectionHandler.prototype.updatePreview=function(b){};var t=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var b=t.apply(this,arguments),d=b.getCell;b.getCell=mxUtils.bind(this,function(b){var g=d.apply(this,arguments);this.error=null;return g});return b};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=
+function(){for(var b="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",d="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),g=0;g<d.length;g++)null!=this.currentEdgeStyle[d[g]]&&(b+=d[g]+"="+this.currentEdgeStyle[d[g]]+";");null!=this.currentEdgeStyle.orthogonalLoop?b+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
(b+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?b+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(b+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(b+="elbow="+this.currentEdgeStyle.elbow+";");return b=null!=this.currentEdgeStyle.html?b+("html="+this.currentEdgeStyle.html+";"):b+"html=1;"};
-Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var b=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=b&&(new mxCodec(b.ownerDocument)).decode(b,this.getStylesheet())};Graph.prototype.createCellLookup=function(b,d){d=null!=d?d:{};for(var f=0;f<b.length;f++){var c=b[f];d[mxObjectIdentity.get(c)]=c.getId();for(var e=this.model.getChildCount(c),
-g=0;g<e;g++)this.createCellLookup([this.model.getChildAt(c,g)],d)}return d};Graph.prototype.createCellMapping=function(b,d,f){f=null!=f?f:{};for(var c in b){var e=d[c];null==f[e]&&(f[e]=b[c].getId()||"")}return f};Graph.prototype.importGraphModel=function(b,d,f,c){d=null!=d?d:0;f=null!=f?f:0;var e=new mxCodec(b.ownerDocument),g=new mxGraphModel;e.decode(b,g);b=[];var e={},l={},k=g.getChildren(this.cloneCell(g.root,this.isCloneInvalidEdges(),e));if(null!=k){var q=this.createCellLookup([g.root]),k=
-k.slice();this.model.beginUpdate();try{if(1!=k.length||this.isCellLocked(this.getDefaultParent()))for(g=0;g<k.length;g++)m=this.model.getChildren(this.moveCells([k[g]],d,f,!1,this.model.getRoot())[0]),null!=m&&(b=b.concat(m));else{var m=g.getChildren(k[0]);null!=m&&(b=this.moveCells(m,d,f,!1,this.getDefaultParent()),l[g.getChildAt(g.root,0).getId()]=this.getDefaultParent().getId())}if(null!=b&&(this.createCellMapping(e,q,l),this.updateCustomLinks(l,b),c)){this.isGridEnabled()&&(d=this.snap(d),f=this.snap(f));
-var n=this.getBoundingBoxFromGeometry(b,!0);null!=n&&this.moveCells(b,d-n.x,f-n.y)}}finally{this.model.endUpdate()}}return b};Graph.prototype.encodeCells=function(b){for(var d={},f=this.cloneCells(b,null,d),c=new mxDictionary,e=0;e<b.length;e++)c.put(b[e],!0);for(var g=new mxCodec,l=new mxGraphModel,k=l.getChildAt(l.getRoot(),0),e=0;e<f.length;e++){l.add(k,f[e]);var q=this.view.getState(b[e]);if(null!=q){var m=this.getCellGeometry(f[e]);null!=m&&m.relative&&!this.model.isEdge(b[e])&&null==c.get(this.model.getParent(b[e]))&&
-(m.offset=null,m.relative=!1,m.x=q.x/q.view.scale-q.view.translate.x,m.y=q.y/q.view.scale-q.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(d,this.createCellLookup(b)),f);return g.encode(l)};Graph.prototype.isSwimlane=function(b,d){if(null!=b&&this.model.getParent(b)!=this.model.getRoot()&&!this.model.isEdge(b)){var f=this.getCurrentCellStyle(b,d)[mxConstants.STYLE_SHAPE];return f==mxConstants.SHAPE_SWIMLANE||"table"==f}return!1};var d=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=
-function(b){var f=this.model.getParent(b);if(null!=f){var c=this.getCurrentCellStyle(f);if(null!=c.expand)return"0"!=c.expand}return d.apply(this,arguments)&&(null==f||!this.isTable(f))};var f=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(b,d,c,e,g,l,k,q){null==q&&(q=this.model.getParent(b),this.isTable(q)||this.isTableRow(q))&&(q=this.getCellAt(l,k,null,!0,!1));c=null;this.model.beginUpdate();try{c=f.apply(this,[b,d,c,e,g,l,k,q]);this.model.setValue(c,"");var m=this.getChildCells(c,
+Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var b=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=b&&(new mxCodec(b.ownerDocument)).decode(b,this.getStylesheet())};Graph.prototype.createCellLookup=function(b,d){d=null!=d?d:{};for(var g=0;g<b.length;g++){var c=b[g];d[mxObjectIdentity.get(c)]=c.getId();for(var e=this.model.getChildCount(c),
+f=0;f<e;f++)this.createCellLookup([this.model.getChildAt(c,f)],d)}return d};Graph.prototype.createCellMapping=function(b,d,g){g=null!=g?g:{};for(var c in b){var e=d[c];null==g[e]&&(g[e]=b[c].getId()||"")}return g};Graph.prototype.importGraphModel=function(b,d,g,c){d=null!=d?d:0;g=null!=g?g:0;var e=new mxCodec(b.ownerDocument),f=new mxGraphModel;e.decode(b,f);b=[];var e={},l={},k=f.getChildren(this.cloneCell(f.root,this.isCloneInvalidEdges(),e));if(null!=k){var q=this.createCellLookup([f.root]),k=
+k.slice();this.model.beginUpdate();try{if(1!=k.length||this.isCellLocked(this.getDefaultParent()))for(f=0;f<k.length;f++)m=this.model.getChildren(this.moveCells([k[f]],d,g,!1,this.model.getRoot())[0]),null!=m&&(b=b.concat(m));else{var m=f.getChildren(k[0]);null!=m&&(b=this.moveCells(m,d,g,!1,this.getDefaultParent()),l[f.getChildAt(f.root,0).getId()]=this.getDefaultParent().getId())}if(null!=b&&(this.createCellMapping(e,q,l),this.updateCustomLinks(l,b),c)){this.isGridEnabled()&&(d=this.snap(d),g=this.snap(g));
+var n=this.getBoundingBoxFromGeometry(b,!0);null!=n&&this.moveCells(b,d-n.x,g-n.y)}}finally{this.model.endUpdate()}}return b};Graph.prototype.encodeCells=function(b){for(var d={},g=this.cloneCells(b,null,d),c=new mxDictionary,e=0;e<b.length;e++)c.put(b[e],!0);for(var f=new mxCodec,l=new mxGraphModel,k=l.getChildAt(l.getRoot(),0),e=0;e<g.length;e++){l.add(k,g[e]);var q=this.view.getState(b[e]);if(null!=q){var m=this.getCellGeometry(g[e]);null!=m&&m.relative&&!this.model.isEdge(b[e])&&null==c.get(this.model.getParent(b[e]))&&
+(m.offset=null,m.relative=!1,m.x=q.x/q.view.scale-q.view.translate.x,m.y=q.y/q.view.scale-q.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(d,this.createCellLookup(b)),g);return f.encode(l)};Graph.prototype.isSwimlane=function(b,d){if(null!=b&&this.model.getParent(b)!=this.model.getRoot()&&!this.model.isEdge(b)){var g=this.getCurrentCellStyle(b,d)[mxConstants.STYLE_SHAPE];return g==mxConstants.SHAPE_SWIMLANE||"table"==g}return!1};var d=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=
+function(b){var g=this.model.getParent(b);if(null!=g){var c=this.getCurrentCellStyle(g);if(null!=c.expand)return"0"!=c.expand}return d.apply(this,arguments)&&(null==g||!this.isTable(g))};var g=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(b,d,c,e,f,l,k,q){null==q&&(q=this.model.getParent(b),this.isTable(q)||this.isTableRow(q))&&(q=this.getCellAt(l,k,null,!0,!1));c=null;this.model.beginUpdate();try{c=g.apply(this,[b,d,c,e,f,l,k,q]);this.model.setValue(c,"");var m=this.getChildCells(c,
!0);for(d=0;d<m.length;d++){var n=this.getCellGeometry(m[d]);null!=n&&n.relative&&0<n.x&&this.model.remove(m[d])}var G=this.getChildCells(b,!0);for(d=0;d<G.length;d++)n=this.getCellGeometry(G[d]),null!=n&&n.relative&&0>=n.x&&this.model.remove(G[d]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[c]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[c]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,null,[b]);this.setCellStyles(mxConstants.STYLE_STARTARROW,
-mxConstants.NONE,[b]);var ha=this.model.getTerminal(c,!1);if(null!=ha){var v=this.getCurrentCellStyle(ha);null!=v&&"1"==v.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[b]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[b]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[c]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[c]))}}finally{this.model.endUpdate()}return c};var l=Graph.prototype.selectCell;Graph.prototype.selectCell=function(b,d,f){if(d||f)l.apply(this,arguments);
-else{var c=this.getSelectionCell(),e=null,g=[],k=mxUtils.bind(this,function(d){if(null!=this.view.getState(d)&&(this.model.isVertex(d)||this.model.isEdge(d)))if(g.push(d),d==c)e=g.length-1;else if(b&&null==c&&0<g.length||null!=e&&b&&g.length>e||!b&&0<e)return;for(var f=0;f<this.model.getChildCount(d);f++)k(this.model.getChildAt(d,f))});k(this.model.root);0<g.length&&(e=null!=e?mxUtils.mod(e+(b?1:-1),g.length):0,this.setSelectionCell(g[e]))}};Graph.prototype.swapUmlLifelines=function(b,d){var f=!1;
-if(null!=d&&1==b.length){var c=this.view.getState(d),e=this.view.getState(b[0]);if(null!=c&&null!=e&&"umlLifeline"==c.style.shape&&"umlLifeline"==e.style.shape&&(e=this.getCellGeometry(d),c=this.getCellGeometry(b[0]),null!=e&&null!=c)){f=e.clone();e=c.clone();e.x=f.x;e.y=f.y;f.x=c.x;f.y=c.y;this.model.beginUpdate();try{this.model.setGeometry(d,f),this.model.setGeometry(b[0],e)}finally{this.model.endUpdate()}f=!0}}return f};var q=Graph.prototype.moveCells;Graph.prototype.moveCells=function(b,d,f,c,
-e,g,l){if(!c&&this.swapUmlLifelines(b,e))return b;l=null!=l?l:{};if(this.isTable(e)){for(var k=[],m=0;m<b.length;m++)this.isTable(b[m])?k=k.concat(this.model.getChildCells(b[m],!0).reverse()):k.push(b[m]);b=k}this.model.beginUpdate();try{k=[];for(m=0;m<b.length;m++)if(null!=e&&this.isTableRow(b[m])){var n=this.model.getParent(b[m]),G=this.getCellGeometry(b[m]);this.isTable(n)&&k.push(n);if(null!=n&&null!=G&&this.isTable(n)&&this.isTable(e)&&(c||n!=e)){if(!c){var v=this.getCellGeometry(n);null!=v&&
-(v=v.clone(),v.height-=G.height,this.model.setGeometry(n,v))}v=this.getCellGeometry(e);null!=v&&(v=v.clone(),v.height+=G.height,this.model.setGeometry(e,v));var ha=this.model.getChildCells(e,!0);if(0<ha.length){b[m]=c?this.cloneCell(b[m]):b[m];var u=this.model.getChildCells(b[m],!0),A=this.model.getChildCells(ha[0],!0),p=A.length-u.length;if(0<p)for(var x=0;x<p;x++){var I=this.cloneCell(u[u.length-1]);null!=I&&(I.value="",this.model.add(b[m],I))}else if(0>p)for(x=0;x>p;x--)this.model.remove(u[u.length+
-x-1]);u=this.model.getChildCells(b[m],!0);for(x=0;x<A.length;x++){var P=this.getCellGeometry(A[x]),t=this.getCellGeometry(u[x]);null!=P&&null!=t&&(t=t.clone(),t.width=P.width,this.model.setGeometry(u[x],t))}}}}for(var ua=q.apply(this,arguments),m=0;m<k.length;m++)!c&&this.model.contains(k[m])&&0==this.model.getChildCount(k[m])&&this.model.remove(k[m]);c&&this.updateCustomLinks(this.createCellMapping(l,this.createCellLookup(b)),ua)}finally{this.model.endUpdate()}return ua};var m=Graph.prototype.removeCells;
-Graph.prototype.removeCells=function(b,d){var f=[];this.model.beginUpdate();try{for(var c=0;c<b.length;c++)if(this.isTableCell(b[c])){var e=this.model.getParent(b[c]),g=this.model.getParent(e);1==this.model.getChildCount(e)&&1==this.model.getChildCount(g)?0>mxUtils.indexOf(b,g)&&0>mxUtils.indexOf(f,g)&&f.push(g):this.labelChanged(b[c],"")}else{if(this.isTableRow(b[c])&&(g=this.model.getParent(b[c]),0>mxUtils.indexOf(b,g)&&0>mxUtils.indexOf(f,g))){for(var l=this.model.getChildCells(g,!0),k=0,q=0;q<
-l.length;q++)0<=mxUtils.indexOf(b,l[q])&&k++;k==l.length&&f.push(g)}f.push(b[c])}f=m.apply(this,[f,d])}finally{this.model.endUpdate()}return f};Graph.prototype.updateCustomLinks=function(b,d,f){f=null!=f?f:new Graph;for(var c=0;c<d.length;c++)null!=d[c]&&f.updateCustomLinksForCell(b,d[c],f)};Graph.prototype.updateCustomLinksForCell=function(b,d){this.doUpdateCustomLinksForCell(b,d);for(var f=this.model.getChildCount(d),c=0;c<f;c++)this.updateCustomLinksForCell(b,this.model.getChildAt(d,c))};Graph.prototype.doUpdateCustomLinksForCell=
-function(b,d){};Graph.prototype.getAllConnectionConstraints=function(b,d){if(null!=b){var f=mxUtils.getValue(b.style,"points",null);if(null!=f){var c=[];try{for(var e=JSON.parse(f),f=0;f<e.length;f++){var g=e[f];c.push(new mxConnectionConstraint(new mxPoint(g[0],g[1]),2<g.length?"0"!=g[2]:!0,null,3<g.length?g[3]:0,4<g.length?g[4]:0))}}catch(pa){}return c}if(null!=b.shape&&null!=b.shape.bounds){g=b.shape.direction;e=b.shape.bounds;f=b.shape.scale;c=e.width/f;e=e.height/f;if(g==mxConstants.DIRECTION_NORTH||
-g==mxConstants.DIRECTION_SOUTH)g=c,c=e,e=g;f=b.shape.getConstraints(b.style,c,e);if(null!=f)return f;if(null!=b.shape.stencil&&null!=b.shape.stencil.constraints)return b.shape.stencil.constraints;if(null!=b.shape.constraints)return b.shape.constraints}}return null};Graph.prototype.flipEdge=function(b){if(null!=b){var d=this.getCurrentCellStyle(b),d=mxUtils.getValue(d,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;
-this.setCellStyles(mxConstants.STYLE_ELBOW,d,[b])}};Graph.prototype.isValidRoot=function(b){for(var d=this.model.getChildCount(b),f=0,c=0;c<d;c++){var e=this.model.getChildAt(b,c);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||f++)}return 0<f||this.isContainer(b)};Graph.prototype.isValidDropTarget=function(b,d,f){for(var c=this.getCurrentCellStyle(b),e=!0,g=!0,l=0;l<d.length&&g;l++)e=e&&this.isTable(d[l]),g=g&&this.isTableRow(d[l]);return("1"!=mxUtils.getValue(c,"part","0")||
-this.isContainer(b))&&"0"!=mxUtils.getValue(c,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(b))&&!this.isTableRow(b)&&(!this.isTable(b)||g||e)&&!this.isCellLocked(b)};Graph.prototype.createGroupCell=function(){var b=mxGraph.prototype.createGroupCell.apply(this,arguments);b.setStyle("group");return b};Graph.prototype.isExtendParentsOnAdd=function(b){var d=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(d&&null!=b&&null!=this.layoutManager){var f=
-this.model.getParent(b);null!=f&&(f=this.layoutManager.getLayout(f),null!=f&&f.constructor==mxStackLayout&&(d=!1))}return d};Graph.prototype.getPreferredSizeForCell=function(b){var d=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=d&&(d.width+=10,d.height+=4,this.gridEnabled&&(d.width=this.snap(d.width),d.height=this.snap(d.height)));return d};Graph.prototype.turnShapes=function(b,d){var f=this.getModel(),c=[];f.beginUpdate();try{for(var e=0;e<b.length;e++){var g=b[e];if(f.isEdge(g)){var l=
-f.getTerminal(g,!0),k=f.getTerminal(g,!1);f.setTerminal(g,k,!0);f.setTerminal(g,l,!1);var m=f.getGeometry(g);if(null!=m){m=m.clone();null!=m.points&&m.points.reverse();var q=m.getTerminalPoint(!0),n=m.getTerminalPoint(!1);m.setTerminalPoint(q,!1);m.setTerminalPoint(n,!0);f.setGeometry(g,m);var G=this.view.getState(g),v=this.view.getState(l),u=this.view.getState(k);if(null!=G){var A=null!=v?this.getConnectionConstraint(G,v,!0):null,ha=null!=u?this.getConnectionConstraint(G,u,!1):null;this.setConnectionConstraint(g,
-l,!0,ha);this.setConnectionConstraint(g,k,!1,A);var p=mxUtils.getValue(G.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(G.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[g]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,p,[g])}c.push(g)}}else if(f.isVertex(g)&&(m=this.getCellGeometry(g),null!=m)){if(!(this.isTable(g)||this.isTableRow(g)||this.isTableCell(g)||this.isSwimlane(g))){m=m.clone();m.x+=m.width/
-2-m.height/2;m.y+=m.height/2-m.width/2;var x=m.width;m.width=m.height;m.height=x;f.setGeometry(g,m)}var I=this.view.getState(g);if(null!=I){var t=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],y=mxUtils.getValue(I.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,t[mxUtils.mod(mxUtils.indexOf(t,y)+(d?-1:1),t.length)],[g])}c.push(g)}}}finally{f.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=
+mxConstants.NONE,[b]);var ha=this.model.getTerminal(c,!1);if(null!=ha){var v=this.getCurrentCellStyle(ha);null!=v&&"1"==v.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[b]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[b]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[c]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[c]))}}finally{this.model.endUpdate()}return c};var l=Graph.prototype.selectCell;Graph.prototype.selectCell=function(b,d,g){if(d||g)l.apply(this,arguments);
+else{var c=this.getSelectionCell(),e=null,f=[],k=mxUtils.bind(this,function(d){if(null!=this.view.getState(d)&&(this.model.isVertex(d)||this.model.isEdge(d)))if(f.push(d),d==c)e=f.length-1;else if(b&&null==c&&0<f.length||null!=e&&b&&f.length>e||!b&&0<e)return;for(var g=0;g<this.model.getChildCount(d);g++)k(this.model.getChildAt(d,g))});k(this.model.root);0<f.length&&(e=null!=e?mxUtils.mod(e+(b?1:-1),f.length):0,this.setSelectionCell(f[e]))}};Graph.prototype.swapUmlLifelines=function(b,d){var g=!1;
+if(null!=d&&1==b.length){var c=this.view.getState(d),e=this.view.getState(b[0]);if(null!=c&&null!=e&&"umlLifeline"==c.style.shape&&"umlLifeline"==e.style.shape&&(e=this.getCellGeometry(d),c=this.getCellGeometry(b[0]),null!=e&&null!=c)){g=e.clone();e=c.clone();e.x=g.x;e.y=g.y;g.x=c.x;g.y=c.y;this.model.beginUpdate();try{this.model.setGeometry(d,g),this.model.setGeometry(b[0],e)}finally{this.model.endUpdate()}g=!0}}return g};var q=Graph.prototype.moveCells;Graph.prototype.moveCells=function(b,d,g,c,
+e,f,l){if(!c&&this.swapUmlLifelines(b,e))return b;l=null!=l?l:{};if(this.isTable(e)){for(var k=[],m=0;m<b.length;m++)this.isTable(b[m])?k=k.concat(this.model.getChildCells(b[m],!0).reverse()):k.push(b[m]);b=k}this.model.beginUpdate();try{k=[];for(m=0;m<b.length;m++)if(null!=e&&this.isTableRow(b[m])){var n=this.model.getParent(b[m]),G=this.getCellGeometry(b[m]);this.isTable(n)&&k.push(n);if(null!=n&&null!=G&&this.isTable(n)&&this.isTable(e)&&(c||n!=e)){if(!c){var v=this.getCellGeometry(n);null!=v&&
+(v=v.clone(),v.height-=G.height,this.model.setGeometry(n,v))}v=this.getCellGeometry(e);null!=v&&(v=v.clone(),v.height+=G.height,this.model.setGeometry(e,v));var ha=this.model.getChildCells(e,!0);if(0<ha.length){b[m]=c?this.cloneCell(b[m]):b[m];var u=this.model.getChildCells(b[m],!0),p=this.model.getChildCells(ha[0],!0),B=p.length-u.length;if(0<B)for(var x=0;x<B;x++){var I=this.cloneCell(u[u.length-1]);null!=I&&(I.value="",this.model.add(b[m],I))}else if(0>B)for(x=0;x>B;x--)this.model.remove(u[u.length+
+x-1]);u=this.model.getChildCells(b[m],!0);for(x=0;x<p.length;x++){var P=this.getCellGeometry(p[x]),t=this.getCellGeometry(u[x]);null!=P&&null!=t&&(t=t.clone(),t.width=P.width,this.model.setGeometry(u[x],t))}}}}for(var ua=q.apply(this,arguments),m=0;m<k.length;m++)!c&&this.model.contains(k[m])&&0==this.model.getChildCount(k[m])&&this.model.remove(k[m]);c&&this.updateCustomLinks(this.createCellMapping(l,this.createCellLookup(b)),ua)}finally{this.model.endUpdate()}return ua};var m=Graph.prototype.removeCells;
+Graph.prototype.removeCells=function(b,d){var g=[];this.model.beginUpdate();try{for(var c=0;c<b.length;c++)if(this.isTableCell(b[c])){var e=this.model.getParent(b[c]),f=this.model.getParent(e);1==this.model.getChildCount(e)&&1==this.model.getChildCount(f)?0>mxUtils.indexOf(b,f)&&0>mxUtils.indexOf(g,f)&&g.push(f):this.labelChanged(b[c],"")}else{if(this.isTableRow(b[c])&&(f=this.model.getParent(b[c]),0>mxUtils.indexOf(b,f)&&0>mxUtils.indexOf(g,f))){for(var l=this.model.getChildCells(f,!0),k=0,q=0;q<
+l.length;q++)0<=mxUtils.indexOf(b,l[q])&&k++;k==l.length&&g.push(f)}g.push(b[c])}g=m.apply(this,[g,d])}finally{this.model.endUpdate()}return g};Graph.prototype.updateCustomLinks=function(b,d,g){g=null!=g?g:new Graph;for(var c=0;c<d.length;c++)null!=d[c]&&g.updateCustomLinksForCell(b,d[c],g)};Graph.prototype.updateCustomLinksForCell=function(b,d){this.doUpdateCustomLinksForCell(b,d);for(var g=this.model.getChildCount(d),c=0;c<g;c++)this.updateCustomLinksForCell(b,this.model.getChildAt(d,c))};Graph.prototype.doUpdateCustomLinksForCell=
+function(b,d){};Graph.prototype.getAllConnectionConstraints=function(b,d){if(null!=b){var g=mxUtils.getValue(b.style,"points",null);if(null!=g){var c=[];try{for(var e=JSON.parse(g),g=0;g<e.length;g++){var f=e[g];c.push(new mxConnectionConstraint(new mxPoint(f[0],f[1]),2<f.length?"0"!=f[2]:!0,null,3<f.length?f[3]:0,4<f.length?f[4]:0))}}catch(pa){}return c}if(null!=b.shape&&null!=b.shape.bounds){f=b.shape.direction;e=b.shape.bounds;g=b.shape.scale;c=e.width/g;e=e.height/g;if(f==mxConstants.DIRECTION_NORTH||
+f==mxConstants.DIRECTION_SOUTH)f=c,c=e,e=f;g=b.shape.getConstraints(b.style,c,e);if(null!=g)return g;if(null!=b.shape.stencil&&null!=b.shape.stencil.constraints)return b.shape.stencil.constraints;if(null!=b.shape.constraints)return b.shape.constraints}}return null};Graph.prototype.flipEdge=function(b){if(null!=b){var d=this.getCurrentCellStyle(b),d=mxUtils.getValue(d,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;
+this.setCellStyles(mxConstants.STYLE_ELBOW,d,[b])}};Graph.prototype.isValidRoot=function(b){for(var d=this.model.getChildCount(b),g=0,c=0;c<d;c++){var e=this.model.getChildAt(b,c);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||g++)}return 0<g||this.isContainer(b)};Graph.prototype.isValidDropTarget=function(b,d,g){for(var c=this.getCurrentCellStyle(b),e=!0,f=!0,l=0;l<d.length&&f;l++)e=e&&this.isTable(d[l]),f=f&&this.isTableRow(d[l]);return("1"!=mxUtils.getValue(c,"part","0")||
+this.isContainer(b))&&"0"!=mxUtils.getValue(c,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(b))&&!this.isTableRow(b)&&(!this.isTable(b)||f||e)&&!this.isCellLocked(b)};Graph.prototype.createGroupCell=function(){var b=mxGraph.prototype.createGroupCell.apply(this,arguments);b.setStyle("group");return b};Graph.prototype.isExtendParentsOnAdd=function(b){var d=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(d&&null!=b&&null!=this.layoutManager){var g=
+this.model.getParent(b);null!=g&&(g=this.layoutManager.getLayout(g),null!=g&&g.constructor==mxStackLayout&&(d=!1))}return d};Graph.prototype.getPreferredSizeForCell=function(b){var d=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=d&&(d.width+=10,d.height+=4,this.gridEnabled&&(d.width=this.snap(d.width),d.height=this.snap(d.height)));return d};Graph.prototype.turnShapes=function(b,d){var g=this.getModel(),c=[];g.beginUpdate();try{for(var e=0;e<b.length;e++){var f=b[e];if(g.isEdge(f)){var l=
+g.getTerminal(f,!0),k=g.getTerminal(f,!1);g.setTerminal(f,k,!0);g.setTerminal(f,l,!1);var m=g.getGeometry(f);if(null!=m){m=m.clone();null!=m.points&&m.points.reverse();var q=m.getTerminalPoint(!0),n=m.getTerminalPoint(!1);m.setTerminalPoint(q,!1);m.setTerminalPoint(n,!0);g.setGeometry(f,m);var G=this.view.getState(f),v=this.view.getState(l),u=this.view.getState(k);if(null!=G){var ha=null!=v?this.getConnectionConstraint(G,v,!0):null,p=null!=u?this.getConnectionConstraint(G,u,!1):null;this.setConnectionConstraint(f,
+l,!0,p);this.setConnectionConstraint(f,k,!1,ha);var B=mxUtils.getValue(G.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,mxUtils.getValue(G.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[f]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,B,[f])}c.push(f)}}else if(g.isVertex(f)&&(m=this.getCellGeometry(f),null!=m)){if(!(this.isTable(f)||this.isTableRow(f)||this.isTableCell(f)||this.isSwimlane(f))){m=m.clone();m.x+=m.width/
+2-m.height/2;m.y+=m.height/2-m.width/2;var x=m.width;m.width=m.height;m.height=x;g.setGeometry(f,m)}var I=this.view.getState(f);if(null!=I){var t=[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],y=mxUtils.getValue(I.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,t[mxUtils.mod(mxUtils.indexOf(t,y)+(d?-1:1),t.length)],[f])}c.push(f)}}}finally{g.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=
function(b){if(null!=b&&null!=b.fgNode)for(b=b.fgNode.firstChild;null!=b;){if("text"==b.nodeName&&"1"==b.getAttribute("placeholders"))return!0;b=b.nextSibling}return!1};var n=Graph.prototype.processChange;Graph.prototype.processChange=function(b){if(b instanceof mxGeometryChange&&(this.isTableCell(b.cell)||this.isTableRow(b.cell))&&(null==b.previous&&null!=b.geometry||null!=b.previous&&!b.previous.equals(b.geometry))){var d=b.cell;this.isTableCell(d)&&(d=this.model.getParent(d));this.isTableRow(d)&&
-(d=this.model.getParent(d));var f=this.view.getState(d);null!=f&&null!=f.shape&&(this.view.invalidate(d),f.shape.bounds=null)}n.apply(this,arguments);b instanceof mxValueChange&&null!=b.cell&&null!=b.cell.value&&"object"==typeof b.cell.value&&this.invalidateDescendantsWithPlaceholders(b.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(b){b=this.model.getDescendants(b);if(0<b.length)for(var d=0;d<b.length;d++){var f=this.view.getState(b[d]);null!=f&&null!=f.shape&&null!=f.shape.stencil&&
-this.stencilHasPlaceholders(f.shape.stencil)?this.removeStateForCell(b[d]):this.isReplacePlaceholders(b[d])&&this.view.invalidate(b[d],!1,!1)}};Graph.prototype.replaceElement=function(b,d){for(var f=b.ownerDocument.createElement(null!=d?d:"span"),c=Array.prototype.slice.call(b.attributes);attr=c.pop();)f.setAttribute(attr.nodeName,attr.nodeValue);f.innerHTML=b.innerHTML;b.parentNode.replaceChild(f,b)};Graph.prototype.processElements=function(b,d){if(null!=b)for(var f=b.getElementsByTagName("*"),c=
-0;c<f.length;c++)d(f[c])};Graph.prototype.updateLabelElements=function(b,d,f){b=null!=b?b:this.getSelectionCells();for(var c=document.createElement("div"),e=0;e<b.length;e++)if(this.isHtmlLabel(b[e])){var g=this.convertValueToString(b[e]);if(null!=g&&0<g.length){c.innerHTML=g;for(var l=c.getElementsByTagName(null!=f?f:"*"),k=0;k<l.length;k++)d(l[k]);c.innerHTML!=g&&this.cellLabelChanged(b[e],c.innerHTML)}}};Graph.prototype.cellLabelChanged=function(b,d,f){d=Graph.zapGremlins(d);this.model.beginUpdate();
-try{if(null!=b.value&&"object"==typeof b.value){if(this.isReplacePlaceholders(b)&&null!=b.getAttribute("placeholder"))for(var c=b.getAttribute("placeholder"),e=b;null!=e;){if(e==this.model.getRoot()||null!=e.value&&"object"==typeof e.value&&e.hasAttribute(c)){this.setAttributeForCell(e,c,d);break}e=this.model.getParent(e)}var g=b.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&g.hasAttribute("label_"+Graph.diagramLanguage)?g.setAttribute("label_"+Graph.diagramLanguage,d):
-g.setAttribute("label",d);d=g}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(b){if(null!=b){for(var d=new mxDictionary,f=0;f<b.length;f++)d.put(b[f],!0);for(var c=[],f=0;f<b.length;f++){var e=this.model.getParent(b[f]);null==e||d.get(e)||(d.put(e,!0),c.push(e))}for(f=0;f<c.length;f++)if(e=this.view.getState(c[f]),null!=e&&(this.model.isEdge(e.cell)||this.model.isVertex(e.cell))&&this.isCellDeletable(e.cell)&&this.isTransparentState(e)){for(var g=
-!0,l=0;l<this.model.getChildCount(e.cell)&&g;l++)d.get(this.model.getChildAt(e.cell,l))||(g=!1);g&&b.push(e.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(b){for(var d=[],f=0;f<b.length;f++)this.isCellDeletable(b[f])&&this.isTransparentState(this.view.getState(b[f]))&&d.push(b[f]);b=d;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(b,d){this.setAttributeForCell(b,"link",d)};Graph.prototype.setTooltipForCell=
-function(b,d){var f="tooltip";Graph.translateDiagram&&null!=Graph.diagramLanguage&&mxUtils.isNode(b.value)&&b.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(f="tooltip_"+Graph.diagramLanguage);this.setAttributeForCell(b,f,d)};Graph.prototype.getAttributeForCell=function(b,d,f){b=null!=b.value&&"object"===typeof b.value?b.value.getAttribute(d):null;return null!=b?b:f};Graph.prototype.setAttributeForCell=function(b,d,f){var c;null!=b.value&&"object"==typeof b.value?c=b.value.cloneNode(!0):(c=
-mxUtils.createXmlDocument().createElement("UserObject"),c.setAttribute("label",b.value||""));null!=f?c.setAttribute(d,f):c.removeAttribute(d);this.model.setValue(b,c)};var u=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(b,d,f,c){this.getModel();if(mxEvent.isAltDown(d))return null;for(var e=0;e<b.length;e++){var g=this.model.getParent(b[e]);if(this.model.isEdge(g)&&0>mxUtils.indexOf(b,g))return null}for(var g=u.apply(this,arguments),l=!0,e=0;e<b.length&&l;e++)l=l&&this.isTableRow(b[e]);
-l&&(this.isTableCell(g)&&(g=this.model.getParent(g)),this.isTableRow(g)&&(g=this.model.getParent(g)),this.isTable(g)||(g=null));return g};Graph.prototype.click=function(b){mxGraph.prototype.click.call(this,b);this.firstClickState=b.getState();this.firstClickSource=b.getSource()};Graph.prototype.dblClick=function(b,d){this.isEnabled()&&(d=this.insertTextForEvent(b,d),mxGraph.prototype.dblClick.call(this,b,d))};Graph.prototype.insertTextForEvent=function(b,d){var f=mxUtils.convertPoint(this.container,
-mxEvent.getClientX(b),mxEvent.getClientY(b));if(null!=b&&!this.model.isVertex(d)){var c=this.model.isEdge(d)?this.view.getState(d):null,e=mxEvent.getSource(b);this.firstClickState!=c||this.firstClickSource!=e||null!=c&&null!=c.text&&null!=c.text.node&&null!=c.text.boundingBox&&(mxUtils.contains(c.text.boundingBox,f.x,f.y)||mxUtils.isAncestorNode(c.text.node,mxEvent.getSource(b)))||(null!=c||this.isCellLocked(this.getDefaultParent()))&&(null==c||this.isCellLocked(c.cell))||!(null!=c||mxClient.IS_SVG&&
-e==this.view.getCanvas().ownerSVGElement)||(null==c&&(c=this.view.getState(this.getCellAt(f.x,f.y))),d=this.addText(f.x,f.y,c))}return d};Graph.prototype.getInsertPoint=function(){var b=this.getGridSize(),d=this.container.scrollLeft/this.view.scale-this.view.translate.x,f=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible)var c=this.getPageLayout(),e=this.getPageSize(),d=Math.max(d,c.x*e.width),f=Math.max(f,c.y*e.height);return new mxPoint(this.snap(d+b),this.snap(f+
-b))};Graph.prototype.getFreeInsertPoint=function(){var b=this.view,d=this.getGraphBounds(),f=this.getInsertPoint(),c=this.snap(Math.round(Math.max(f.x,d.x/b.scale-b.translate.x+(0==d.width?2*this.gridSize:0)))),b=this.snap(Math.round(Math.max(f.y,(d.y+d.height)/b.scale-b.translate.y+2*this.gridSize)));return new mxPoint(c,b)};Graph.prototype.getCenterInsertPoint=function(b){b=null!=b?b:new mxRectangle;return mxUtils.hasScrollbars(this.container)?new mxPoint(this.snap(Math.round((this.container.scrollLeft+
+(d=this.model.getParent(d));var g=this.view.getState(d);null!=g&&null!=g.shape&&(this.view.invalidate(d),g.shape.bounds=null)}n.apply(this,arguments);b instanceof mxValueChange&&null!=b.cell&&null!=b.cell.value&&"object"==typeof b.cell.value&&this.invalidateDescendantsWithPlaceholders(b.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(b){b=this.model.getDescendants(b);if(0<b.length)for(var d=0;d<b.length;d++){var g=this.view.getState(b[d]);null!=g&&null!=g.shape&&null!=g.shape.stencil&&
+this.stencilHasPlaceholders(g.shape.stencil)?this.removeStateForCell(b[d]):this.isReplacePlaceholders(b[d])&&this.view.invalidate(b[d],!1,!1)}};Graph.prototype.replaceElement=function(b,d){for(var g=b.ownerDocument.createElement(null!=d?d:"span"),c=Array.prototype.slice.call(b.attributes);attr=c.pop();)g.setAttribute(attr.nodeName,attr.nodeValue);g.innerHTML=b.innerHTML;b.parentNode.replaceChild(g,b)};Graph.prototype.processElements=function(b,d){if(null!=b)for(var g=b.getElementsByTagName("*"),c=
+0;c<g.length;c++)d(g[c])};Graph.prototype.updateLabelElements=function(b,d,g){b=null!=b?b:this.getSelectionCells();for(var c=document.createElement("div"),e=0;e<b.length;e++)if(this.isHtmlLabel(b[e])){var f=this.convertValueToString(b[e]);if(null!=f&&0<f.length){c.innerHTML=f;for(var l=c.getElementsByTagName(null!=g?g:"*"),k=0;k<l.length;k++)d(l[k]);c.innerHTML!=f&&this.cellLabelChanged(b[e],c.innerHTML)}}};Graph.prototype.cellLabelChanged=function(b,d,g){d=Graph.zapGremlins(d);this.model.beginUpdate();
+try{if(null!=b.value&&"object"==typeof b.value){if(this.isReplacePlaceholders(b)&&null!=b.getAttribute("placeholder"))for(var c=b.getAttribute("placeholder"),e=b;null!=e;){if(e==this.model.getRoot()||null!=e.value&&"object"==typeof e.value&&e.hasAttribute(c)){this.setAttributeForCell(e,c,d);break}e=this.model.getParent(e)}var f=b.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&f.hasAttribute("label_"+Graph.diagramLanguage)?f.setAttribute("label_"+Graph.diagramLanguage,d):
+f.setAttribute("label",d);d=f}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(b){if(null!=b){for(var d=new mxDictionary,g=0;g<b.length;g++)d.put(b[g],!0);for(var c=[],g=0;g<b.length;g++){var e=this.model.getParent(b[g]);null==e||d.get(e)||(d.put(e,!0),c.push(e))}for(g=0;g<c.length;g++)if(e=this.view.getState(c[g]),null!=e&&(this.model.isEdge(e.cell)||this.model.isVertex(e.cell))&&this.isCellDeletable(e.cell)&&this.isTransparentState(e)){for(var f=
+!0,l=0;l<this.model.getChildCount(e.cell)&&f;l++)d.get(this.model.getChildAt(e.cell,l))||(f=!1);f&&b.push(e.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(b){for(var d=[],g=0;g<b.length;g++)this.isCellDeletable(b[g])&&this.isTransparentState(this.view.getState(b[g]))&&d.push(b[g]);b=d;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(b,d){this.setAttributeForCell(b,"link",d)};Graph.prototype.setTooltipForCell=
+function(b,d){var g="tooltip";Graph.translateDiagram&&null!=Graph.diagramLanguage&&mxUtils.isNode(b.value)&&b.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(g="tooltip_"+Graph.diagramLanguage);this.setAttributeForCell(b,g,d)};Graph.prototype.getAttributeForCell=function(b,d,g){b=null!=b.value&&"object"===typeof b.value?b.value.getAttribute(d):null;return null!=b?b:g};Graph.prototype.setAttributeForCell=function(b,d,g){var c;null!=b.value&&"object"==typeof b.value?c=b.value.cloneNode(!0):(c=
+mxUtils.createXmlDocument().createElement("UserObject"),c.setAttribute("label",b.value||""));null!=g?c.setAttribute(d,g):c.removeAttribute(d);this.model.setValue(b,c)};var u=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(b,d,g,c){this.getModel();if(mxEvent.isAltDown(d))return null;for(var e=0;e<b.length;e++){var f=this.model.getParent(b[e]);if(this.model.isEdge(f)&&0>mxUtils.indexOf(b,f))return null}for(var f=u.apply(this,arguments),l=!0,e=0;e<b.length&&l;e++)l=l&&this.isTableRow(b[e]);
+l&&(this.isTableCell(f)&&(f=this.model.getParent(f)),this.isTableRow(f)&&(f=this.model.getParent(f)),this.isTable(f)||(f=null));return f};Graph.prototype.click=function(b){mxGraph.prototype.click.call(this,b);this.firstClickState=b.getState();this.firstClickSource=b.getSource()};Graph.prototype.dblClick=function(b,d){this.isEnabled()&&(d=this.insertTextForEvent(b,d),mxGraph.prototype.dblClick.call(this,b,d))};Graph.prototype.insertTextForEvent=function(b,d){var g=mxUtils.convertPoint(this.container,
+mxEvent.getClientX(b),mxEvent.getClientY(b));if(null!=b&&!this.model.isVertex(d)){var c=this.model.isEdge(d)?this.view.getState(d):null,e=mxEvent.getSource(b);this.firstClickState!=c||this.firstClickSource!=e||null!=c&&null!=c.text&&null!=c.text.node&&null!=c.text.boundingBox&&(mxUtils.contains(c.text.boundingBox,g.x,g.y)||mxUtils.isAncestorNode(c.text.node,mxEvent.getSource(b)))||(null!=c||this.isCellLocked(this.getDefaultParent()))&&(null==c||this.isCellLocked(c.cell))||!(null!=c||mxClient.IS_SVG&&
+e==this.view.getCanvas().ownerSVGElement)||(null==c&&(c=this.view.getState(this.getCellAt(g.x,g.y))),d=this.addText(g.x,g.y,c))}return d};Graph.prototype.getInsertPoint=function(){var b=this.getGridSize(),d=this.container.scrollLeft/this.view.scale-this.view.translate.x,g=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible)var c=this.getPageLayout(),e=this.getPageSize(),d=Math.max(d,c.x*e.width),g=Math.max(g,c.y*e.height);return new mxPoint(this.snap(d+b),this.snap(g+
+b))};Graph.prototype.getFreeInsertPoint=function(){var b=this.view,d=this.getGraphBounds(),g=this.getInsertPoint(),c=this.snap(Math.round(Math.max(g.x,d.x/b.scale-b.translate.x+(0==d.width?2*this.gridSize:0)))),b=this.snap(Math.round(Math.max(g.y,(d.y+d.height)/b.scale-b.translate.y+2*this.gridSize)));return new mxPoint(c,b)};Graph.prototype.getCenterInsertPoint=function(b){b=null!=b?b:new mxRectangle;return mxUtils.hasScrollbars(this.container)?new mxPoint(this.snap(Math.round((this.container.scrollLeft+
this.container.clientWidth/2)/this.view.scale-this.view.translate.x-b.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/2)/this.view.scale-this.view.translate.y-b.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-b.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-b.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=
-function(b,d,f){var c=new mxCell;c.value="Text";c.geometry=new mxGeometry(0,0,0,0);c.vertex=!0;if(null!=f&&this.model.isEdge(f.cell)){c.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";c.geometry.relative=!0;c.connectable=!1;var e=this.view.getRelativePoint(f,b,d);c.geometry.x=Math.round(1E4*e.x)/1E4;c.geometry.y=Math.round(e.y);c.geometry.offset=new mxPoint(0,0);var e=this.view.getPoint(f,c.geometry),g=this.view.scale;c.geometry.offset=new mxPoint(Math.round((b-e.x)/
-g),Math.round((d-e.y)/g))}else e=this.view.translate,c.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",c.geometry.width=40,c.geometry.height=20,c.geometry.x=Math.round(b/this.view.scale)-e.x-(null!=f?f.origin.x:0),c.geometry.y=Math.round(d/this.view.scale)-e.y-(null!=f?f.origin.y:0),c.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([c],null!=f?f.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[c])),this.autoSizeCell(c)}finally{this.getModel().endUpdate()}return c};
-Graph.prototype.addClickHandler=function(b,d,f){var c=mxUtils.bind(this,function(){var b=this.container.getElementsByTagName("a");if(null!=b)for(var f=0;f<b.length;f++){var c=this.getAbsoluteUrl(b[f].getAttribute("href"));null!=c&&(b[f].setAttribute("rel",this.linkRelation),b[f].setAttribute("href",c),null!=d&&mxEvent.addGestureListeners(b[f],null,null,d))}});this.model.addListener(mxEvent.CHANGE,c);c();var e=this.container.style.cursor,g=this.getTolerance(),l=this,k={currentState:null,currentLink:null,
-currentTarget:null,highlight:null!=b&&""!=b&&b!=mxConstants.NONE?new mxCellHighlight(l,b,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(b){var d=b.sourceState;if(null==d||null==l.getLinkForCell(d.cell))b=l.getCellAt(b.getGraphX(),b.getGraphY(),null,null,null,function(b,d,f){return null==l.getLinkForCell(b.cell)}),d=null==d||l.model.isAncestor(b,d.cell)?l.view.getState(b):null;d!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=d,null!=this.currentState&&
-this.activate(this.currentState))},mouseDown:function(b,d){this.startX=d.getGraphX();this.startY=d.getGraphY();this.scrollLeft=l.container.scrollLeft;this.scrollTop=l.container.scrollTop;null==this.currentLink&&"auto"==l.container.style.overflow&&(l.container.style.cursor="move");this.updateCurrentState(d)},mouseMove:function(b,d){if(l.isMouseDown){if(null!=this.currentLink){var f=Math.abs(this.startX-d.getGraphX()),c=Math.abs(this.startY-d.getGraphY());(f>g||c>g)&&this.clear()}}else{for(f=d.getSource();null!=
-f&&"a"!=f.nodeName.toLowerCase();)f=f.parentNode;null!=f?this.clear():(null!=l.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&l.tooltipHandler.reset(d,!0,this.currentState),(null==this.currentState||d.getState()!=this.currentState&&null!=d.sourceState||!l.intersects(this.currentState,d.getGraphX(),d.getGraphY()))&&this.updateCurrentState(d))}},mouseUp:function(b,c){for(var e=c.getSource(),k=c.getEvent();null!=e&&"a"!=e.nodeName.toLowerCase();)e=e.parentNode;null==e&&Math.abs(this.scrollLeft-
-l.container.scrollLeft)<g&&Math.abs(this.scrollTop-l.container.scrollTop)<g&&(null==c.sourceState||!c.isSource(c.sourceState.control))&&((mxEvent.isLeftMouseButton(k)||mxEvent.isMiddleMouseButton(k))&&!mxEvent.isPopupTrigger(k)||mxEvent.isTouchEvent(k))&&(null!=this.currentLink?(e=l.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==d||d(k,this.currentLink),mxEvent.isConsumed(k)||(k=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(k)?"_blank":
-e?l.linkTarget:"_top",l.openLink(this.currentLink,k),c.consume())):null!=f&&!c.isConsumed()&&Math.abs(this.scrollLeft-l.container.scrollLeft)<g&&Math.abs(this.scrollTop-l.container.scrollTop)<g&&Math.abs(this.startX-c.getGraphX())<g&&Math.abs(this.startY-c.getGraphY())<g&&f(c.getEvent()));this.clear()},activate:function(b){this.currentLink=l.getAbsoluteUrl(l.getLinkForCell(b.cell));null!=this.currentLink&&(this.currentTarget=l.getLinkTargetForCell(b.cell),l.container.style.cursor="pointer",null!=
-this.highlight&&this.highlight.highlight(b))},clear:function(){null!=l.container&&(l.container.style.cursor=e);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=l.tooltipHandler&&l.tooltipHandler.hide()}};l.click=function(b){};l.addMouseListener(k);mxEvent.addListener(document,"mouseleave",function(b){k.clear()})};Graph.prototype.duplicateCells=function(b,d){b=null!=b?b:this.getSelectionCells();d=null!=d?d:!0;for(var f=0;f<b.length;f++)this.isTableCell(b[f])&&
-(b[f]=this.model.getParent(b[f]));b=this.model.getTopmostCells(b);var c=this.getModel(),e=this.gridSize,g=[];c.beginUpdate();try{for(var l={},k=this.createCellLookup(b),m=this.cloneCells(b,!1,l,!0),f=0;f<b.length;f++){var q=c.getParent(b[f]);if(null!=q){var n=this.moveCells([m[f]],e,e,!1)[0];g.push(n);if(d)c.add(q,m[f]);else{var G=q.getIndex(b[f]);c.add(q,m[f],G+1)}if(this.isTable(q)){var v=this.getCellGeometry(m[f]),u=this.getCellGeometry(q);null!=v&&null!=u&&(u=u.clone(),u.height+=v.height,c.setGeometry(q,
-u))}}else g.push(m[f])}this.updateCustomLinks(this.createCellMapping(l,k),m,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",m))}finally{c.endUpdate()}return g};Graph.prototype.insertImage=function(b,d,f){if(null!=b&&null!=this.cellEditor.textarea){for(var c=this.cellEditor.textarea.getElementsByTagName("img"),e=[],g=0;g<c.length;g++)e.push(c[g]);document.execCommand("insertimage",!1,b);b=this.cellEditor.textarea.getElementsByTagName("img");if(b.length==e.length+1)for(g=b.length-
-1;0<=g;g--)if(0==g||b[g]!=e[g-1]){b[g].setAttribute("width",d);b[g].setAttribute("height",f);break}}};Graph.prototype.insertLink=function(b){if(null!=this.cellEditor.textarea)if(0==b.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var d=this.cellEditor.textarea.getElementsByTagName("a"),f=[],c=0;c<d.length;c++)f.push(d[c]);document.execCommand("createlink",!1,mxUtils.trim(b));d=this.cellEditor.textarea.getElementsByTagName("a");if(d.length==f.length+1)for(c=d.length-1;0<=c;c--)if(d[c]!=
-f[c-1]){for(d=d[c].getElementsByTagName("a");0<d.length;){for(f=d[0].parentNode;null!=d[0].firstChild;)f.insertBefore(d[0].firstChild,d[0]);f.removeChild(d[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(b))};Graph.prototype.isCellResizable=function(b){var d=mxGraph.prototype.isCellResizable.apply(this,arguments),f=this.getCurrentCellStyle(b);return!this.isTableCell(b)&&!this.isTableRow(b)&&(d||"0"!=mxUtils.getValue(f,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==f[mxConstants.STYLE_WHITE_SPACE])};
-Graph.prototype.distributeCells=function(b,d){null==d&&(d=this.getSelectionCells());if(null!=d&&1<d.length){for(var f=[],c=null,e=null,g=0;g<d.length;g++)if(this.getModel().isVertex(d[g])){var l=this.view.getState(d[g]);if(null!=l){var k=b?l.getCenterX():l.getCenterY(),c=null!=c?Math.max(c,k):k,e=null!=e?Math.min(e,k):k;f.push(l)}}if(2<f.length){f.sort(function(d,f){return b?d.x-f.x:d.y-f.y});l=this.view.translate;k=this.view.scale;e=e/k-(b?l.x:l.y);c=c/k-(b?l.x:l.y);this.getModel().beginUpdate();
-try{for(var m=(c-e)/(f.length-1),c=e,g=1;g<f.length-1;g++){var q=this.view.getState(this.model.getParent(f[g].cell)),n=this.getCellGeometry(f[g].cell),c=c+m;null!=n&&null!=q&&(n=n.clone(),b?n.x=Math.round(c-n.width/2)-q.origin.x:n.y=Math.round(c-n.height/2)-q.origin.y,this.getModel().setGeometry(f[g].cell,n))}}finally{this.getModel().endUpdate()}}}return d};Graph.prototype.isCloneEvent=function(b){return mxClient.IS_MAC&&mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)};Graph.prototype.createSvgImageExport=
-function(){var b=new mxImageExport;b.getLinkForCellState=mxUtils.bind(this,function(b,d){return this.getLinkForCell(b.cell)});return b};Graph.prototype.parseBackgroundImage=function(b){var d=null;null!=b&&0<b.length&&(b=JSON.parse(b),d=new mxImage(b.src,b.width,b.height));return d};Graph.prototype.getBackgroundImageObject=function(b){return b};Graph.prototype.getSvg=function(b,d,f,c,e,g,l,k,m,q,n,G,v,u){var A=null;if(null!=u)for(A=new mxDictionary,n=0;n<u.length;n++)A.put(u[n],!0);if(u=this.useCssTransforms)this.useCssTransforms=
-!1,this.view.revalidate(),this.sizeDidChange();try{d=null!=d?d:1;f=null!=f?f:0;e=null!=e?e:!0;g=null!=g?g:!0;l=null!=l?l:!0;q=null!=q?q:!1;var p="page"==v?this.view.getBackgroundPageBounds():g&&null==A||c||"diagram"==v?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),x=this.view.scale;"diagram"==v&&null!=this.backgroundImage&&(p=mxRectangle.fromRectangle(p),p.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*x,(this.view.translate.y+this.backgroundImage.y)*x,this.backgroundImage.width*
-x,this.backgroundImage.height*x)));if(null==p)throw Error(mxResources.get("drawingEmpty"));var I=mxUtils.createXmlDocument(),t=null!=I.createElementNS?I.createElementNS(mxConstants.NS_SVG,"svg"):I.createElement("svg");null!=b&&(null!=t.style?t.style.backgroundColor=b:t.setAttribute("style","background-color:"+b));null==I.createElementNS?(t.setAttribute("xmlns",mxConstants.NS_SVG),t.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):t.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);
-b=d/x;var y=Math.max(1,Math.ceil(p.width*b)+2*f)+(q&&0==f?5:0),z=Math.max(1,Math.ceil(p.height*b)+2*f)+(q&&0==f?5:0);t.setAttribute("version","1.1");t.setAttribute("width",y+"px");t.setAttribute("height",z+"px");t.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+y+" "+z);I.appendChild(t);var S=null!=I.createElementNS?I.createElementNS(mxConstants.NS_SVG,"g"):I.createElement("g");t.appendChild(S);var C=this.createSvgCanvas(S);C.foOffset=e?-.5:0;C.textOffset=e?-.5:0;C.imageOffset=e?-.5:0;C.translate(Math.floor(f/
-d-p.x/x),Math.floor(f/d-p.y/x));var ha=document.createElement("div"),N=C.getAlternateText;C.getAlternateText=function(b,d,f,c,e,g,l,k,m,q,n,G,B){if(null!=g&&0<this.state.fontSize)try{mxUtils.isNode(g)?g=g.innerText:(ha.innerHTML=g,g=mxUtils.extractTextWithWhitespace(ha.childNodes));for(var va=Math.ceil(2*c/this.state.fontSize),Sa=[],Da=0,Ta=0;(0==va||Da<va)&&Ta<g.length;){var Wa=g.charCodeAt(Ta);if(10==Wa||13==Wa){if(0<Da)break}else Sa.push(g.charAt(Ta)),255>Wa&&Da++;Ta++}Sa.length<g.length&&1<g.length-
-Sa.length&&(g=mxUtils.trim(Sa.join(""))+"...");return g}catch(hb){return N.apply(this,arguments)}else return N.apply(this,arguments)};var Y=this.backgroundImage;if(null!=Y){d=x/d;var V=this.view.translate,P=new mxRectangle((Y.x+V.x)*d,(Y.y+V.y)*d,Y.width*d,Y.height*d);mxUtils.intersects(p,P)&&C.image(Y.x+V.x,Y.y+V.y,Y.width,Y.height,Y.src,!0)}C.scale(b);C.textEnabled=l;k=null!=k?k:this.createSvgImageExport();var ua=k.drawCellState,D=k.getLinkForCellState;k.getLinkForCellState=function(b,d){var f=
-D.apply(this,arguments);return null==f||b.view.graph.isCustomLink(f)?null:f};k.getLinkTargetForCellState=function(b,d){return b.view.graph.getLinkTargetForCell(b.cell)};k.drawCellState=function(b,d){for(var f=b.view.graph,c=null!=A?A.get(b.cell):f.isCellSelected(b.cell),e=f.model.getParent(b.cell);!(g&&null==A||c)&&null!=e;)c=null!=A?A.get(e):f.isCellSelected(e),e=f.model.getParent(e);(g&&null==A||c)&&ua.apply(this,arguments)};k.drawState(this.getView().getState(this.model.root),C);this.updateSvgLinks(t,
-m,!0);this.addForeignObjectWarning(C,t);return t}finally{u&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(b,d){if("0"!=urlParams["svg-warning"]&&0<d.getElementsByTagName("foreignObject").length){var f=b.createElement("switch"),c=b.createElement("g");c.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=b.createElement("a");e.setAttribute("transform","translate(0,-5)");null==e.setAttributeNS||
-d.ownerDocument!=document&&null==document.documentMode?(e.setAttribute("xlink:href",Graph.foreignObjectWarningLink),e.setAttribute("target","_blank")):(e.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),e.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var g=b.createElement("text");g.setAttribute("text-anchor","middle");g.setAttribute("font-size","10px");g.setAttribute("x","50%");g.setAttribute("y","100%");mxUtils.write(g,Graph.foreignObjectWarningText);f.appendChild(c);
-e.appendChild(g);f.appendChild(e);d.appendChild(f)}};Graph.prototype.updateSvgLinks=function(b,d,f){b=b.getElementsByTagName("a");for(var c=0;c<b.length;c++)if(null==b[c].getAttribute("target")){var e=b[c].getAttribute("href");null==e&&(e=b[c].getAttribute("xlink:href"));null!=e&&(null!=d&&/^https?:\/\//.test(e)?b[c].setAttribute("target",d):f&&this.isCustomLink(e)&&b[c].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(b){b=new mxSvgCanvas2D(b);b.pointerEvents=
+function(b,d,g){var c=new mxCell;c.value="Text";c.geometry=new mxGeometry(0,0,0,0);c.vertex=!0;if(null!=g&&this.model.isEdge(g.cell)){c.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";c.geometry.relative=!0;c.connectable=!1;var e=this.view.getRelativePoint(g,b,d);c.geometry.x=Math.round(1E4*e.x)/1E4;c.geometry.y=Math.round(e.y);c.geometry.offset=new mxPoint(0,0);var e=this.view.getPoint(g,c.geometry),f=this.view.scale;c.geometry.offset=new mxPoint(Math.round((b-e.x)/
+f),Math.round((d-e.y)/f))}else e=this.view.translate,c.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",c.geometry.width=40,c.geometry.height=20,c.geometry.x=Math.round(b/this.view.scale)-e.x-(null!=g?g.origin.x:0),c.geometry.y=Math.round(d/this.view.scale)-e.y-(null!=g?g.origin.y:0),c.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([c],null!=g?g.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[c])),this.autoSizeCell(c)}finally{this.getModel().endUpdate()}return c};
+Graph.prototype.addClickHandler=function(b,d,g){var c=mxUtils.bind(this,function(){var b=this.container.getElementsByTagName("a");if(null!=b)for(var g=0;g<b.length;g++){var c=this.getAbsoluteUrl(b[g].getAttribute("href"));null!=c&&(b[g].setAttribute("rel",this.linkRelation),b[g].setAttribute("href",c),null!=d&&mxEvent.addGestureListeners(b[g],null,null,d))}});this.model.addListener(mxEvent.CHANGE,c);c();var e=this.container.style.cursor,f=this.getTolerance(),l=this,k={currentState:null,currentLink:null,
+currentTarget:null,highlight:null!=b&&""!=b&&b!=mxConstants.NONE?new mxCellHighlight(l,b,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(b){var d=b.sourceState;if(null==d||null==l.getLinkForCell(d.cell))b=l.getCellAt(b.getGraphX(),b.getGraphY(),null,null,null,function(b,d,g){return null==l.getLinkForCell(b.cell)}),d=null==d||l.model.isAncestor(b,d.cell)?l.view.getState(b):null;d!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=d,null!=this.currentState&&
+this.activate(this.currentState))},mouseDown:function(b,d){this.startX=d.getGraphX();this.startY=d.getGraphY();this.scrollLeft=l.container.scrollLeft;this.scrollTop=l.container.scrollTop;null==this.currentLink&&"auto"==l.container.style.overflow&&(l.container.style.cursor="move");this.updateCurrentState(d)},mouseMove:function(b,d){if(l.isMouseDown){if(null!=this.currentLink){var g=Math.abs(this.startX-d.getGraphX()),c=Math.abs(this.startY-d.getGraphY());(g>f||c>f)&&this.clear()}}else{for(g=d.getSource();null!=
+g&&"a"!=g.nodeName.toLowerCase();)g=g.parentNode;null!=g?this.clear():(null!=l.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&l.tooltipHandler.reset(d,!0,this.currentState),(null==this.currentState||d.getState()!=this.currentState&&null!=d.sourceState||!l.intersects(this.currentState,d.getGraphX(),d.getGraphY()))&&this.updateCurrentState(d))}},mouseUp:function(b,c){for(var e=c.getSource(),k=c.getEvent();null!=e&&"a"!=e.nodeName.toLowerCase();)e=e.parentNode;null==e&&Math.abs(this.scrollLeft-
+l.container.scrollLeft)<f&&Math.abs(this.scrollTop-l.container.scrollTop)<f&&(null==c.sourceState||!c.isSource(c.sourceState.control))&&((mxEvent.isLeftMouseButton(k)||mxEvent.isMiddleMouseButton(k))&&!mxEvent.isPopupTrigger(k)||mxEvent.isTouchEvent(k))&&(null!=this.currentLink?(e=l.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==d||d(k,this.currentLink),mxEvent.isConsumed(k)||(k=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(k)?"_blank":
+e?l.linkTarget:"_top",l.openLink(this.currentLink,k),c.consume())):null!=g&&!c.isConsumed()&&Math.abs(this.scrollLeft-l.container.scrollLeft)<f&&Math.abs(this.scrollTop-l.container.scrollTop)<f&&Math.abs(this.startX-c.getGraphX())<f&&Math.abs(this.startY-c.getGraphY())<f&&g(c.getEvent()));this.clear()},activate:function(b){this.currentLink=l.getAbsoluteUrl(l.getLinkForCell(b.cell));null!=this.currentLink&&(this.currentTarget=l.getLinkTargetForCell(b.cell),l.container.style.cursor="pointer",null!=
+this.highlight&&this.highlight.highlight(b))},clear:function(){null!=l.container&&(l.container.style.cursor=e);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=l.tooltipHandler&&l.tooltipHandler.hide()}};l.click=function(b){};l.addMouseListener(k);mxEvent.addListener(document,"mouseleave",function(b){k.clear()})};Graph.prototype.duplicateCells=function(b,d){b=null!=b?b:this.getSelectionCells();d=null!=d?d:!0;for(var g=0;g<b.length;g++)this.isTableCell(b[g])&&
+(b[g]=this.model.getParent(b[g]));b=this.model.getTopmostCells(b);var c=this.getModel(),e=this.gridSize,f=[];c.beginUpdate();try{for(var l={},k=this.createCellLookup(b),m=this.cloneCells(b,!1,l,!0),g=0;g<b.length;g++){var q=c.getParent(b[g]);if(null!=q){var n=this.moveCells([m[g]],e,e,!1)[0];f.push(n);if(d)c.add(q,m[g]);else{var G=q.getIndex(b[g]);c.add(q,m[g],G+1)}if(this.isTable(q)){var v=this.getCellGeometry(m[g]),u=this.getCellGeometry(q);null!=v&&null!=u&&(u=u.clone(),u.height+=v.height,c.setGeometry(q,
+u))}}else f.push(m[g])}this.updateCustomLinks(this.createCellMapping(l,k),m,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",m))}finally{c.endUpdate()}return f};Graph.prototype.insertImage=function(b,d,g){if(null!=b&&null!=this.cellEditor.textarea){for(var c=this.cellEditor.textarea.getElementsByTagName("img"),e=[],f=0;f<c.length;f++)e.push(c[f]);document.execCommand("insertimage",!1,b);b=this.cellEditor.textarea.getElementsByTagName("img");if(b.length==e.length+1)for(f=b.length-
+1;0<=f;f--)if(0==f||b[f]!=e[f-1]){b[f].setAttribute("width",d);b[f].setAttribute("height",g);break}}};Graph.prototype.insertLink=function(b){if(null!=this.cellEditor.textarea)if(0==b.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var d=this.cellEditor.textarea.getElementsByTagName("a"),g=[],c=0;c<d.length;c++)g.push(d[c]);document.execCommand("createlink",!1,mxUtils.trim(b));d=this.cellEditor.textarea.getElementsByTagName("a");if(d.length==g.length+1)for(c=d.length-1;0<=c;c--)if(d[c]!=
+g[c-1]){for(d=d[c].getElementsByTagName("a");0<d.length;){for(g=d[0].parentNode;null!=d[0].firstChild;)g.insertBefore(d[0].firstChild,d[0]);g.removeChild(d[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(b))};Graph.prototype.isCellResizable=function(b){var d=mxGraph.prototype.isCellResizable.apply(this,arguments),g=this.getCurrentCellStyle(b);return!this.isTableCell(b)&&!this.isTableRow(b)&&(d||"0"!=mxUtils.getValue(g,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==g[mxConstants.STYLE_WHITE_SPACE])};
+Graph.prototype.distributeCells=function(b,d){null==d&&(d=this.getSelectionCells());if(null!=d&&1<d.length){for(var g=[],c=null,e=null,f=0;f<d.length;f++)if(this.getModel().isVertex(d[f])){var l=this.view.getState(d[f]);if(null!=l){var k=b?l.getCenterX():l.getCenterY(),c=null!=c?Math.max(c,k):k,e=null!=e?Math.min(e,k):k;g.push(l)}}if(2<g.length){g.sort(function(d,g){return b?d.x-g.x:d.y-g.y});l=this.view.translate;k=this.view.scale;e=e/k-(b?l.x:l.y);c=c/k-(b?l.x:l.y);this.getModel().beginUpdate();
+try{for(var m=(c-e)/(g.length-1),c=e,f=1;f<g.length-1;f++){var q=this.view.getState(this.model.getParent(g[f].cell)),n=this.getCellGeometry(g[f].cell),c=c+m;null!=n&&null!=q&&(n=n.clone(),b?n.x=Math.round(c-n.width/2)-q.origin.x:n.y=Math.round(c-n.height/2)-q.origin.y,this.getModel().setGeometry(g[f].cell,n))}}finally{this.getModel().endUpdate()}}}return d};Graph.prototype.isCloneEvent=function(b){return mxClient.IS_MAC&&mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)};Graph.prototype.createSvgImageExport=
+function(){var b=new mxImageExport;b.getLinkForCellState=mxUtils.bind(this,function(b,d){return this.getLinkForCell(b.cell)});return b};Graph.prototype.parseBackgroundImage=function(b){var d=null;null!=b&&0<b.length&&(b=JSON.parse(b),d=new mxImage(b.src,b.width,b.height));return d};Graph.prototype.getBackgroundImageObject=function(b){return b};Graph.prototype.getSvg=function(b,d,g,c,e,f,l,k,m,q,n,G,v,u){var p=null;if(null!=u)for(p=new mxDictionary,n=0;n<u.length;n++)p.put(u[n],!0);if(u=this.useCssTransforms)this.useCssTransforms=
+!1,this.view.revalidate(),this.sizeDidChange();try{d=null!=d?d:1;g=null!=g?g:0;e=null!=e?e:!0;f=null!=f?f:!0;l=null!=l?l:!0;q=null!=q?q:!1;var B="page"==v?this.view.getBackgroundPageBounds():f&&null==p||c||"diagram"==v?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),x=this.view.scale;"diagram"==v&&null!=this.backgroundImage&&(B=mxRectangle.fromRectangle(B),B.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*x,(this.view.translate.y+this.backgroundImage.y)*x,this.backgroundImage.width*
+x,this.backgroundImage.height*x)));if(null==B)throw Error(mxResources.get("drawingEmpty"));var I=mxUtils.createXmlDocument(),t=null!=I.createElementNS?I.createElementNS(mxConstants.NS_SVG,"svg"):I.createElement("svg");null!=b&&(null!=t.style?t.style.backgroundColor=b:t.setAttribute("style","background-color:"+b));null==I.createElementNS?(t.setAttribute("xmlns",mxConstants.NS_SVG),t.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):t.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);
+b=d/x;var y=Math.max(1,Math.ceil(B.width*b)+2*g)+(q&&0==g?5:0),z=Math.max(1,Math.ceil(B.height*b)+2*g)+(q&&0==g?5:0);t.setAttribute("version","1.1");t.setAttribute("width",y+"px");t.setAttribute("height",z+"px");t.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+y+" "+z);I.appendChild(t);var S=null!=I.createElementNS?I.createElementNS(mxConstants.NS_SVG,"g"):I.createElement("g");t.appendChild(S);var C=this.createSvgCanvas(S);C.foOffset=e?-.5:0;C.textOffset=e?-.5:0;C.imageOffset=e?-.5:0;C.translate(Math.floor(g/
+d-B.x/x),Math.floor(g/d-B.y/x));var ha=document.createElement("div"),ca=C.getAlternateText;C.getAlternateText=function(b,d,g,c,e,f,l,k,m,q,n,G,A){if(null!=f&&0<this.state.fontSize)try{mxUtils.isNode(f)?f=f.innerText:(ha.innerHTML=f,f=mxUtils.extractTextWithWhitespace(ha.childNodes));for(var va=Math.ceil(2*c/this.state.fontSize),Sa=[],Da=0,Ta=0;(0==va||Da<va)&&Ta<f.length;){var Wa=f.charCodeAt(Ta);if(10==Wa||13==Wa){if(0<Da)break}else Sa.push(f.charAt(Ta)),255>Wa&&Da++;Ta++}Sa.length<f.length&&1<f.length-
+Sa.length&&(f=mxUtils.trim(Sa.join(""))+"...");return f}catch(hb){return ca.apply(this,arguments)}else return ca.apply(this,arguments)};var L=this.backgroundImage;if(null!=L){d=x/d;var V=this.view.translate,P=new mxRectangle((L.x+V.x)*d,(L.y+V.y)*d,L.width*d,L.height*d);mxUtils.intersects(B,P)&&C.image(L.x+V.x,L.y+V.y,L.width,L.height,L.src,!0)}C.scale(b);C.textEnabled=l;k=null!=k?k:this.createSvgImageExport();var ua=k.drawCellState,D=k.getLinkForCellState;k.getLinkForCellState=function(b,d){var g=
+D.apply(this,arguments);return null==g||b.view.graph.isCustomLink(g)?null:g};k.getLinkTargetForCellState=function(b,d){return b.view.graph.getLinkTargetForCell(b.cell)};k.drawCellState=function(b,d){for(var g=b.view.graph,c=null!=p?p.get(b.cell):g.isCellSelected(b.cell),e=g.model.getParent(b.cell);!(f&&null==p||c)&&null!=e;)c=null!=p?p.get(e):g.isCellSelected(e),e=g.model.getParent(e);(f&&null==p||c)&&ua.apply(this,arguments)};k.drawState(this.getView().getState(this.model.root),C);this.updateSvgLinks(t,
+m,!0);this.addForeignObjectWarning(C,t);return t}finally{u&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(b,d){if("0"!=urlParams["svg-warning"]&&0<d.getElementsByTagName("foreignObject").length){var g=b.createElement("switch"),c=b.createElement("g");c.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=b.createElement("a");e.setAttribute("transform","translate(0,-5)");null==e.setAttributeNS||
+d.ownerDocument!=document&&null==document.documentMode?(e.setAttribute("xlink:href",Graph.foreignObjectWarningLink),e.setAttribute("target","_blank")):(e.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),e.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var f=b.createElement("text");f.setAttribute("text-anchor","middle");f.setAttribute("font-size","10px");f.setAttribute("x","50%");f.setAttribute("y","100%");mxUtils.write(f,Graph.foreignObjectWarningText);g.appendChild(c);
+e.appendChild(f);g.appendChild(e);d.appendChild(g)}};Graph.prototype.updateSvgLinks=function(b,d,g){b=b.getElementsByTagName("a");for(var c=0;c<b.length;c++)if(null==b[c].getAttribute("target")){var e=b[c].getAttribute("href");null==e&&(e=b[c].getAttribute("xlink:href"));null!=e&&(null!=d&&/^https?:\/\//.test(e)?b[c].setAttribute("target",d):g&&this.isCustomLink(e)&&b[c].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(b){b=new mxSvgCanvas2D(b);b.pointerEvents=
!0;return b};Graph.prototype.getSelectedElement=function(){var b=null;if(window.getSelection){var d=window.getSelection();d.getRangeAt&&d.rangeCount&&(b=d.getRangeAt(0).commonAncestorContainer)}else document.selection&&(b=document.selection.createRange().parentElement());return b};Graph.prototype.getSelectedEditingElement=function(){for(var b=this.getSelectedElement();null!=b&&b.nodeType!=mxConstants.NODETYPE_ELEMENT;)b=b.parentNode;null!=b&&b==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&
-this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(b=this.cellEditor.textarea.firstChild);return b};Graph.prototype.getParentByName=function(b,d,f){for(;null!=b&&b.nodeName!=d;){if(b==f)return null;b=b.parentNode}return b};Graph.prototype.getParentByNames=function(b,d,f){for(;null!=b&&!(0<=mxUtils.indexOf(d,b.nodeName));){if(b==f)return null;b=b.parentNode}return b};Graph.prototype.selectNode=function(b){var d=null;if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&
-d.rangeCount){var f=document.createRange();f.selectNode(b);d.removeAllRanges();d.addRange(f)}}else(d=document.selection)&&"Control"!=d.type&&(b=d.createRange(),b.collapse(!0),f=d.createRange(),f.setEndPoint("StartToStart",b),f.select())};Graph.prototype.deleteCells=function(b,d){var f=null;if(null!=b&&0<b.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){var e=this.model.getParent(b[c]);if(this.isTable(e)){var g=this.getCellGeometry(b[c]),l=this.getCellGeometry(e);null!=g&&null!=l&&
-(l=l.clone(),l.height-=g.height,this.model.setGeometry(e,l))}}var k=this.selectParentAfterDelete?this.model.getParents(b):null;this.removeCells(b,d)}finally{this.model.endUpdate()}if(null!=k)for(f=[],c=0;c<k.length;c++)this.model.contains(k[c])&&(this.model.isVertex(k[c])||this.model.isEdge(k[c]))&&f.push(k[c])}return f};Graph.prototype.insertTableColumn=function(b,d){var f=this.getModel();f.beginUpdate();try{var c=b,e=0;if(this.isTableCell(b))var g=f.getParent(b),c=f.getParent(g),e=mxUtils.indexOf(f.getChildCells(g,
-!0),b);else this.isTableRow(b)?c=f.getParent(b):b=f.getChildCells(c,!0)[0],d||(e=f.getChildCells(b,!0).length-1);for(var l=f.getChildCells(c,!0),k=Graph.minTableColumnWidth,g=0;g<l.length;g++){var m=f.getChildCells(l[g],!0)[e],q=f.cloneCell(m,!1),n=this.getCellGeometry(q);q.value=null;q.style=mxUtils.setStyle(mxUtils.setStyle(q.style,"rowspan",null),"colspan",null);if(null!=n){null!=n.alternateBounds&&(n.width=n.alternateBounds.width,n.height=n.alternateBounds.height,n.alternateBounds=null);var k=
-n.width,G=this.getCellGeometry(l[g]);null!=G&&(n.height=G.height)}f.add(l[g],q,e+(d?0:1))}var v=this.getCellGeometry(c);null!=v&&(v=v.clone(),v.width+=k,f.setGeometry(c,v))}finally{f.endUpdate()}};Graph.prototype.deleteLane=function(b){var d=this.getModel();d.beginUpdate();try{var f=null,f="stackLayout"==this.getCurrentCellStyle(b).childLayout?b:d.getParent(b),c=d.getChildCells(f,!0);0==c.length?d.remove(f):(f==b&&(b=c[c.length-1]),d.remove(b))}finally{d.endUpdate()}};Graph.prototype.insertLane=function(b,
-d){var f=this.getModel();f.beginUpdate();try{var c=null,e=b;if("stackLayout"==this.getCurrentCellStyle(e).childLayout)var c=e,g=f.getChildCells(c,!0),e=g[d?0:g.length-1];else c=f.getParent(e);var l=c.getIndex(e),e=f.cloneCell(e,!1);e.value=null;f.add(c,e,l+(d?0:1))}finally{f.endUpdate()}};Graph.prototype.insertTableRow=function(b,d){var f=this.getModel();f.beginUpdate();try{var c=b,e=b;if(this.isTableCell(b))e=f.getParent(b),c=f.getParent(e);else if(this.isTableRow(b))c=f.getParent(b);else var g=
-f.getChildCells(c,!0),e=g[d?0:g.length-1];var l=f.getChildCells(e,!0),k=c.getIndex(e),e=f.cloneCell(e,!1);e.value=null;var m=this.getCellGeometry(e);if(null!=m){for(g=0;g<l.length;g++){b=f.cloneCell(l[g],!1);b.value=null;b.style=mxUtils.setStyle(mxUtils.setStyle(b.style,"rowspan",null),"colspan",null);var q=this.getCellGeometry(b);null!=q&&(null!=q.alternateBounds&&(q.width=q.alternateBounds.width,q.height=q.alternateBounds.height,q.alternateBounds=null),q.height=m.height);e.insert(b)}f.add(c,e,k+
-(d?0:1));var n=this.getCellGeometry(c);null!=n&&(n=n.clone(),n.height+=m.height,f.setGeometry(c,n))}}finally{f.endUpdate()}};Graph.prototype.deleteTableColumn=function(b){var d=this.getModel();d.beginUpdate();try{var f=b,c=b;this.isTableCell(b)&&(c=d.getParent(b));this.isTableRow(c)&&(f=d.getParent(c));var e=d.getChildCells(f,!0);if(0==e.length)d.remove(f);else{this.isTableRow(c)||(c=e[0]);var g=d.getChildCells(c,!0);if(1>=g.length)d.remove(f);else{var l=g.length-1;this.isTableCell(b)&&(l=mxUtils.indexOf(g,
-b));for(c=b=0;c<e.length;c++){var k=d.getChildCells(e[c],!0)[l];d.remove(k);var m=this.getCellGeometry(k);null!=m&&(b=Math.max(b,m.width))}var q=this.getCellGeometry(f);null!=q&&(q=q.clone(),q.width-=b,d.setGeometry(f,q))}}}finally{d.endUpdate()}};Graph.prototype.deleteTableRow=function(b){var d=this.getModel();d.beginUpdate();try{var f=b,c=b;this.isTableCell(b)&&(b=c=d.getParent(b));this.isTableRow(b)&&(f=d.getParent(c));var e=d.getChildCells(f,!0);if(1>=e.length)d.remove(f);else{this.isTableRow(c)||
-(c=e[e.length-1]);d.remove(c);b=0;var g=this.getCellGeometry(c);null!=g&&(b=g.height);var l=this.getCellGeometry(f);null!=l&&(l=l.clone(),l.height-=b,d.setGeometry(f,l))}}finally{d.endUpdate()}};Graph.prototype.insertRow=function(b,d){for(var f=b.tBodies[0],c=f.rows[0].cells,e=0,g=0;g<c.length;g++)var l=c[g].getAttribute("colspan"),e=e+(null!=l?parseInt(l):1);f=f.insertRow(d);for(g=0;g<e;g++)mxUtils.br(f.insertCell(-1));return f.cells[0]};Graph.prototype.deleteRow=function(b,d){b.tBodies[0].deleteRow(d)};
-Graph.prototype.insertColumn=function(b,d){var f=b.tHead;if(null!=f)for(var c=0;c<f.rows.length;c++){var e=document.createElement("th");f.rows[c].appendChild(e);mxUtils.br(e)}f=b.tBodies[0];for(c=0;c<f.rows.length;c++)e=f.rows[c].insertCell(d),mxUtils.br(e);return f.rows[0].cells[0<=d?d:f.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(b,d){if(0<=d)for(var f=b.tBodies[0].rows,c=0;c<f.length;c++)f[c].cells.length>d&&f[c].deleteCell(d)};Graph.prototype.pasteHtmlAtCaret=function(b){var d;
-if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&d.rangeCount){d=d.getRangeAt(0);d.deleteContents();var f=document.createElement("div");f.innerHTML=b;b=document.createDocumentFragment();for(var c;c=f.firstChild;)lastNode=b.appendChild(c);d.insertNode(b)}}else(d=document.selection)&&"Control"!=d.type&&d.createRange().pasteHTML(b)};Graph.prototype.createLinkForHint=function(b,d){function f(b,d){b.length>d&&(b=b.substring(0,Math.round(d/2))+"..."+b.substring(b.length-Math.round(d/4)));
-return b}b=null!=b?b:"javascript:void(0);";if(null==d||0==d.length)d=this.isCustomLink(b)?this.getLinkTitle(b):b;var c=document.createElement("a");c.setAttribute("rel",this.linkRelation);c.setAttribute("href",this.getAbsoluteUrl(b));c.setAttribute("title",f(this.isCustomLink(b)?this.getLinkTitle(b):b,80));null!=this.linkTarget&&c.setAttribute("target",this.linkTarget);mxUtils.write(c,f(d,40));this.isCustomLink(b)&&mxEvent.addListener(c,"click",mxUtils.bind(this,function(d){this.customLinkClicked(b);
-mxEvent.consume(d)}));return c};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(b,d){this.popupMenuHandler.hideMenu()});var b=this.updateMouseEvent;this.updateMouseEvent=function(d){d=b.apply(this,arguments);if(mxEvent.isTouchEvent(d.getEvent())&&null==d.getState()){var f=this.getCellAt(d.graphX,d.graphY);null!=f&&this.isSwimlane(f)&&this.hitsSwimlaneContent(f,d.graphX,
-d.graphY)||(d.state=this.view.getState(f),null!=d.state&&null!=d.state.shape&&(this.container.style.cursor=d.state.shape.node.style.cursor))}null==d.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return d};var d=!1,f=!1,c=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(b,g,l){b==mxEvent.MOUSE_DOWN&&(g=this.updateMouseEvent(g),d=this.isCellSelected(g.getCell()),f=this.isSelectionEmpty(),c=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=
-mxUtils.bind(this,function(b,e){var g=mxEvent.isMouseEvent(e.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger||!c&&!g&&(f&&null==e.getCell()&&this.isSelectionEmpty()||d&&this.isCellSelected(e.getCell())));g=!d||g?null:mxUtils.bind(this,function(b){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var d=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(e.getX()+
-d.x+1,e.getY()+d.y+1,b,e.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[b,e,g])})};mxCellEditor.prototype.isContentEditing=function(){var b=this.graph.view.getState(this.editingCell);return null!=b&&1==b.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var b="";window.getSelection?b=window.getSelection():
-document.getSelection?b=document.getSelection():document.selection&&(b=document.selection.createRange().text);return""!=b};mxCellEditor.prototype.insertTab=function(b){var d=this.textarea.ownerDocument.defaultView.getSelection(),f=d.getRangeAt(0),c="\t";if(null!=b)for(c="";0<b;)c+=" ",b--;b=document.createElement("span");b.style.whiteSpace="pre";b.appendChild(document.createTextNode(c));f.insertNode(b);f.setStartAfter(b);f.setEndAfter(b);d.removeAllRanges();d.addRange(f)};mxCellEditor.prototype.alignText=
-function(b,d){var f=null!=d&&mxEvent.isShiftDown(d);if(f||null!=window.getSelection&&null!=window.getSelection().containsNode){var c=!0;this.graph.processElements(this.textarea,function(b){f||window.getSelection().containsNode(b,!0)?(b.removeAttribute("align"),b.style.textAlign=null):c=!1});c&&this.graph.cellEditor.setAlign(b)}document.execCommand("justify"+b.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var b=window.getSelection();if(b.getRangeAt&&
-b.rangeCount){for(var d=[],f=0,c=b.rangeCount;f<c;++f)d.push(b.getRangeAt(f));return d}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(b){try{if(b)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var d=0,f=b.length;d<f;++d)sel.addRange(b[d])}else document.selection&&b.select&&b.select()}catch(ea){}};var v=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=
+this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(b=this.cellEditor.textarea.firstChild);return b};Graph.prototype.getParentByName=function(b,d,g){for(;null!=b&&b.nodeName!=d;){if(b==g)return null;b=b.parentNode}return b};Graph.prototype.getParentByNames=function(b,d,g){for(;null!=b&&!(0<=mxUtils.indexOf(d,b.nodeName));){if(b==g)return null;b=b.parentNode}return b};Graph.prototype.selectNode=function(b){var d=null;if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&
+d.rangeCount){var g=document.createRange();g.selectNode(b);d.removeAllRanges();d.addRange(g)}}else(d=document.selection)&&"Control"!=d.type&&(b=d.createRange(),b.collapse(!0),g=d.createRange(),g.setEndPoint("StartToStart",b),g.select())};Graph.prototype.deleteCells=function(b,d){var g=null;if(null!=b&&0<b.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){var e=this.model.getParent(b[c]);if(this.isTable(e)){var f=this.getCellGeometry(b[c]),l=this.getCellGeometry(e);null!=f&&null!=l&&
+(l=l.clone(),l.height-=f.height,this.model.setGeometry(e,l))}}var k=this.selectParentAfterDelete?this.model.getParents(b):null;this.removeCells(b,d)}finally{this.model.endUpdate()}if(null!=k)for(g=[],c=0;c<k.length;c++)this.model.contains(k[c])&&(this.model.isVertex(k[c])||this.model.isEdge(k[c]))&&g.push(k[c])}return g};Graph.prototype.insertTableColumn=function(b,d){var g=this.getModel();g.beginUpdate();try{var c=b,e=0;if(this.isTableCell(b))var f=g.getParent(b),c=g.getParent(f),e=mxUtils.indexOf(g.getChildCells(f,
+!0),b);else this.isTableRow(b)?c=g.getParent(b):b=g.getChildCells(c,!0)[0],d||(e=g.getChildCells(b,!0).length-1);for(var l=g.getChildCells(c,!0),k=Graph.minTableColumnWidth,f=0;f<l.length;f++){var m=g.getChildCells(l[f],!0)[e],q=g.cloneCell(m,!1),n=this.getCellGeometry(q);q.value=null;q.style=mxUtils.setStyle(mxUtils.setStyle(q.style,"rowspan",null),"colspan",null);if(null!=n){null!=n.alternateBounds&&(n.width=n.alternateBounds.width,n.height=n.alternateBounds.height,n.alternateBounds=null);var k=
+n.width,G=this.getCellGeometry(l[f]);null!=G&&(n.height=G.height)}g.add(l[f],q,e+(d?0:1))}var v=this.getCellGeometry(c);null!=v&&(v=v.clone(),v.width+=k,g.setGeometry(c,v))}finally{g.endUpdate()}};Graph.prototype.deleteLane=function(b){var d=this.getModel();d.beginUpdate();try{var g=null,g="stackLayout"==this.getCurrentCellStyle(b).childLayout?b:d.getParent(b),c=d.getChildCells(g,!0);0==c.length?d.remove(g):(g==b&&(b=c[c.length-1]),d.remove(b))}finally{d.endUpdate()}};Graph.prototype.insertLane=function(b,
+d){var g=this.getModel();g.beginUpdate();try{var c=null,e=b;if("stackLayout"==this.getCurrentCellStyle(e).childLayout)var c=e,f=g.getChildCells(c,!0),e=f[d?0:f.length-1];else c=g.getParent(e);var l=c.getIndex(e),e=g.cloneCell(e,!1);e.value=null;g.add(c,e,l+(d?0:1))}finally{g.endUpdate()}};Graph.prototype.insertTableRow=function(b,d){var g=this.getModel();g.beginUpdate();try{var c=b,e=b;if(this.isTableCell(b))e=g.getParent(b),c=g.getParent(e);else if(this.isTableRow(b))c=g.getParent(b);else var f=
+g.getChildCells(c,!0),e=f[d?0:f.length-1];var l=g.getChildCells(e,!0),k=c.getIndex(e),e=g.cloneCell(e,!1);e.value=null;var m=this.getCellGeometry(e);if(null!=m){for(f=0;f<l.length;f++){b=g.cloneCell(l[f],!1);b.value=null;b.style=mxUtils.setStyle(mxUtils.setStyle(b.style,"rowspan",null),"colspan",null);var q=this.getCellGeometry(b);null!=q&&(null!=q.alternateBounds&&(q.width=q.alternateBounds.width,q.height=q.alternateBounds.height,q.alternateBounds=null),q.height=m.height);e.insert(b)}g.add(c,e,k+
+(d?0:1));var n=this.getCellGeometry(c);null!=n&&(n=n.clone(),n.height+=m.height,g.setGeometry(c,n))}}finally{g.endUpdate()}};Graph.prototype.deleteTableColumn=function(b){var d=this.getModel();d.beginUpdate();try{var g=b,c=b;this.isTableCell(b)&&(c=d.getParent(b));this.isTableRow(c)&&(g=d.getParent(c));var e=d.getChildCells(g,!0);if(0==e.length)d.remove(g);else{this.isTableRow(c)||(c=e[0]);var f=d.getChildCells(c,!0);if(1>=f.length)d.remove(g);else{var l=f.length-1;this.isTableCell(b)&&(l=mxUtils.indexOf(f,
+b));for(c=b=0;c<e.length;c++){var k=d.getChildCells(e[c],!0)[l];d.remove(k);var m=this.getCellGeometry(k);null!=m&&(b=Math.max(b,m.width))}var q=this.getCellGeometry(g);null!=q&&(q=q.clone(),q.width-=b,d.setGeometry(g,q))}}}finally{d.endUpdate()}};Graph.prototype.deleteTableRow=function(b){var d=this.getModel();d.beginUpdate();try{var g=b,c=b;this.isTableCell(b)&&(b=c=d.getParent(b));this.isTableRow(b)&&(g=d.getParent(c));var e=d.getChildCells(g,!0);if(1>=e.length)d.remove(g);else{this.isTableRow(c)||
+(c=e[e.length-1]);d.remove(c);b=0;var f=this.getCellGeometry(c);null!=f&&(b=f.height);var l=this.getCellGeometry(g);null!=l&&(l=l.clone(),l.height-=b,d.setGeometry(g,l))}}finally{d.endUpdate()}};Graph.prototype.insertRow=function(b,d){for(var g=b.tBodies[0],c=g.rows[0].cells,e=0,f=0;f<c.length;f++)var l=c[f].getAttribute("colspan"),e=e+(null!=l?parseInt(l):1);g=g.insertRow(d);for(f=0;f<e;f++)mxUtils.br(g.insertCell(-1));return g.cells[0]};Graph.prototype.deleteRow=function(b,d){b.tBodies[0].deleteRow(d)};
+Graph.prototype.insertColumn=function(b,d){var g=b.tHead;if(null!=g)for(var c=0;c<g.rows.length;c++){var e=document.createElement("th");g.rows[c].appendChild(e);mxUtils.br(e)}g=b.tBodies[0];for(c=0;c<g.rows.length;c++)e=g.rows[c].insertCell(d),mxUtils.br(e);return g.rows[0].cells[0<=d?d:g.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(b,d){if(0<=d)for(var g=b.tBodies[0].rows,c=0;c<g.length;c++)g[c].cells.length>d&&g[c].deleteCell(d)};Graph.prototype.pasteHtmlAtCaret=function(b){var d;
+if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&d.rangeCount){d=d.getRangeAt(0);d.deleteContents();var g=document.createElement("div");g.innerHTML=b;b=document.createDocumentFragment();for(var c;c=g.firstChild;)lastNode=b.appendChild(c);d.insertNode(b)}}else(d=document.selection)&&"Control"!=d.type&&d.createRange().pasteHTML(b)};Graph.prototype.createLinkForHint=function(b,d){function g(b,d){b.length>d&&(b=b.substring(0,Math.round(d/2))+"..."+b.substring(b.length-Math.round(d/4)));
+return b}b=null!=b?b:"javascript:void(0);";if(null==d||0==d.length)d=this.isCustomLink(b)?this.getLinkTitle(b):b;var c=document.createElement("a");c.setAttribute("rel",this.linkRelation);c.setAttribute("href",this.getAbsoluteUrl(b));c.setAttribute("title",g(this.isCustomLink(b)?this.getLinkTitle(b):b,80));null!=this.linkTarget&&c.setAttribute("target",this.linkTarget);mxUtils.write(c,g(d,40));this.isCustomLink(b)&&mxEvent.addListener(c,"click",mxUtils.bind(this,function(d){this.customLinkClicked(b);
+mxEvent.consume(d)}));return c};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(b,d){this.popupMenuHandler.hideMenu()});var b=this.updateMouseEvent;this.updateMouseEvent=function(d){d=b.apply(this,arguments);if(mxEvent.isTouchEvent(d.getEvent())&&null==d.getState()){var g=this.getCellAt(d.graphX,d.graphY);null!=g&&this.isSwimlane(g)&&this.hitsSwimlaneContent(g,d.graphX,
+d.graphY)||(d.state=this.view.getState(g),null!=d.state&&null!=d.state.shape&&(this.container.style.cursor=d.state.shape.node.style.cursor))}null==d.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return d};var d=!1,g=!1,c=!1,e=this.fireMouseEvent;this.fireMouseEvent=function(b,f,l){b==mxEvent.MOUSE_DOWN&&(f=this.updateMouseEvent(f),d=this.isCellSelected(f.getCell()),g=this.isSelectionEmpty(),c=this.popupMenuHandler.isMenuShowing());e.apply(this,arguments)};this.popupMenuHandler.mouseUp=
+mxUtils.bind(this,function(b,e){var f=mxEvent.isMouseEvent(e.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==e.getState()||!e.isSource(e.getState().control))&&(this.popupMenuHandler.popupTrigger||!c&&!f&&(g&&null==e.getCell()&&this.isSelectionEmpty()||d&&this.isCellSelected(e.getCell())));f=!d||f?null:mxUtils.bind(this,function(b){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var d=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(e.getX()+
+d.x+1,e.getY()+d.y+1,b,e.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[b,e,f])})};mxCellEditor.prototype.isContentEditing=function(){var b=this.graph.view.getState(this.editingCell);return null!=b&&1==b.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var b="";window.getSelection?b=window.getSelection():
+document.getSelection?b=document.getSelection():document.selection&&(b=document.selection.createRange().text);return""!=b};mxCellEditor.prototype.insertTab=function(b){var d=this.textarea.ownerDocument.defaultView.getSelection(),g=d.getRangeAt(0),c="\t";if(null!=b)for(c="";0<b;)c+=" ",b--;b=document.createElement("span");b.style.whiteSpace="pre";b.appendChild(document.createTextNode(c));g.insertNode(b);g.setStartAfter(b);g.setEndAfter(b);d.removeAllRanges();d.addRange(g)};mxCellEditor.prototype.alignText=
+function(b,d){var g=null!=d&&mxEvent.isShiftDown(d);if(g||null!=window.getSelection&&null!=window.getSelection().containsNode){var c=!0;this.graph.processElements(this.textarea,function(b){g||window.getSelection().containsNode(b,!0)?(b.removeAttribute("align"),b.style.textAlign=null):c=!1});c&&this.graph.cellEditor.setAlign(b)}document.execCommand("justify"+b.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var b=window.getSelection();if(b.getRangeAt&&
+b.rangeCount){for(var d=[],g=0,c=b.rangeCount;g<c;++g)d.push(b.getRangeAt(g));return d}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(b){try{if(b)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var d=0,g=b.length;d<g;++d)sel.addRange(b[d])}else document.selection&&b.select&&b.select()}catch(ea){}};var v=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=
function(b){null!=b.text&&(b.text.replaceLinefeeds="0"!=mxUtils.getValue(b.style,"nl2Br","1"));v.apply(this,arguments)};var y=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(b,d){this.isKeepFocusEvent(b)||!mxEvent.isAltDown(b.getEvent())?y.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(b){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var x=mxCellEditor.prototype.startEditing;
-mxCellEditor.prototype.startEditing=function(b,d){b=this.graph.getStartEditingCell(b,d);x.apply(this,arguments);var f=this.graph.view.getState(b);this.textarea.className=null!=f&&1==f.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(b);var f=this.graph.getModel().getParent(b),c=this.graph.getCellGeometry(b);if(this.graph.getModel().isEdge(f)&&null!=c&&c.relative||this.graph.getModel().isEdge(b))this.textarea.style.outline=
-mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var F=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(b){function d(b,f){f.originalNode=b;b=b.firstChild;for(var c=f.firstChild;null!=b&&null!=c;)d(b,c),b=b.nextSibling,c=c.nextSibling;return f}function f(b,d){if(null!=b)if(d.originalNode!=b)c(b);else for(b=b.firstChild,d=d.firstChild;null!=b;){var e=b.nextSibling;null==d?c(b):(f(b,d),d=d.nextSibling);b=e}}function c(b){for(var d=
-b.firstChild;null!=d;){var f=d.nextSibling;c(d);d=f}1==b.nodeType&&("BR"===b.nodeName||null!=b.firstChild)||3==b.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(b)).length?(3==b.nodeType&&mxUtils.setTextContent(b,mxUtils.getTextContent(b).replace(/\n|\r/g,"")),1==b.nodeType&&(b.removeAttribute("style"),b.removeAttribute("class"),b.removeAttribute("width"),b.removeAttribute("cellpadding"),b.removeAttribute("cellspacing"),b.removeAttribute("border"))):b.parentNode.removeChild(b)}F.apply(this,arguments);
-7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(b){var c=d(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?f(this.textarea,c):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var b=this.graph.view.getState(this.editingCell);
-if(null!=b){var d=null!=b&&"0"!=mxUtils.getValue(b.style,"nl2Br","1"),f=this.saveSelection();if(this.codeViewMode){m=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<m.length&&"\n"==m.charAt(m.length-1)&&(m=m.substring(0,m.length-1));m=this.graph.sanitizeHtml(d?m.replace(/\n/g,"<br/>"):m,!0);this.textarea.className="mxCellEditor geContentEditable";var c=mxUtils.getValue(b.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),d=mxUtils.getValue(b.style,mxConstants.STYLE_FONTFAMILY,
-mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),g=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,k=[];(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&k.push("underline");(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,
-0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&k.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration=k.join(" ");this.textarea.style.fontWeight=g?"bold":"normal";this.textarea.style.fontStyle=l?"italic":"";this.textarea.style.fontFamily=d;this.textarea.style.textAlign=e;this.textarea.style.padding=
+mxCellEditor.prototype.startEditing=function(b,d){b=this.graph.getStartEditingCell(b,d);x.apply(this,arguments);var g=this.graph.view.getState(b);this.textarea.className=null!=g&&1==g.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(b);var g=this.graph.getModel().getParent(b),c=this.graph.getCellGeometry(b);if(this.graph.getModel().isEdge(g)&&null!=c&&c.relative||this.graph.getModel().isEdge(b))this.textarea.style.outline=
+mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var F=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(b){function d(b,g){g.originalNode=b;b=b.firstChild;for(var c=g.firstChild;null!=b&&null!=c;)d(b,c),b=b.nextSibling,c=c.nextSibling;return g}function g(b,d){if(null!=b)if(d.originalNode!=b)c(b);else for(b=b.firstChild,d=d.firstChild;null!=b;){var e=b.nextSibling;null==d?c(b):(g(b,d),d=d.nextSibling);b=e}}function c(b){for(var d=
+b.firstChild;null!=d;){var g=d.nextSibling;c(d);d=g}1==b.nodeType&&("BR"===b.nodeName||null!=b.firstChild)||3==b.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(b)).length?(3==b.nodeType&&mxUtils.setTextContent(b,mxUtils.getTextContent(b).replace(/\n|\r/g,"")),1==b.nodeType&&(b.removeAttribute("style"),b.removeAttribute("class"),b.removeAttribute("width"),b.removeAttribute("cellpadding"),b.removeAttribute("cellspacing"),b.removeAttribute("border"))):b.parentNode.removeChild(b)}F.apply(this,arguments);
+7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(b){var c=d(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?g(this.textarea,c):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var b=this.graph.view.getState(this.editingCell);
+if(null!=b){var d=null!=b&&"0"!=mxUtils.getValue(b.style,"nl2Br","1"),g=this.saveSelection();if(this.codeViewMode){m=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<m.length&&"\n"==m.charAt(m.length-1)&&(m=m.substring(0,m.length-1));m=this.graph.sanitizeHtml(d?m.replace(/\n/g,"<br/>"):m,!0);this.textarea.className="mxCellEditor geContentEditable";var c=mxUtils.getValue(b.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),d=mxUtils.getValue(b.style,mxConstants.STYLE_FONTFAMILY,
+mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,k=[];(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&k.push("underline");(mxUtils.getValue(b.style,mxConstants.STYLE_FONTSTYLE,
+0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&k.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration=k.join(" ");this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=l?"italic":"";this.textarea.style.fontFamily=d;this.textarea.style.textAlign=e;this.textarea.style.padding=
"0px";this.textarea.innerHTML!=m&&(this.textarea.innerHTML=m,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var m=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(m=mxUtils.replaceTrailingNewlines(m,"<div><br></div>"));m=this.graph.sanitizeHtml(d?
m.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):m,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var c=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;
-this.textarea.style.textAlign="left";this.textarea.style.width="";this.textarea.style.padding="2px";this.textarea.innerHTML!=m&&(this.textarea.innerHTML=m);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=f;this.resize()}};var H=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(b,d){if(null!=this.textarea)if(b=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=
-b){var f=b.view.scale;this.bounds=mxRectangle.fromRectangle(b);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*f;this.bounds.height=60*f;var c=null!=b.text?b.text.margin:null;null==c&&(c=mxUtils.getAlignmentAsPoint(mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(b.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=c.x*this.bounds.width;this.bounds.y+=c.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-
-4)/f)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/f)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/f)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*f);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/f)+(this.textarea.offsetWidth-this.textarea.clientWidth)+
-"px",this.bounds.width=parseInt(this.textarea.style.width)*f);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+f+","+f+")")}else this.textarea.style.height="",this.textarea.style.overflow="",H.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(b,d){if("0"==mxUtils.getValue(b.style,"html",
-"0"))return mxCellEditorGetInitialValue.apply(this,arguments);var f=this.graph.getEditingValue(b.cell,d);"1"==mxUtils.getValue(b.style,"nl2Br","1")&&(f=f.replace(/\n/g,"<br/>"));return f=this.graph.sanitizeHtml(f,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(b){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var d=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return d=
+this.textarea.style.textAlign="left";this.textarea.style.width="";this.textarea.style.padding="2px";this.textarea.innerHTML!=m&&(this.textarea.innerHTML=m);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=g;this.resize()}};var H=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(b,d){if(null!=this.textarea)if(b=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=
+b){var g=b.view.scale;this.bounds=mxRectangle.fromRectangle(b);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*g;this.bounds.height=60*g;var c=null!=b.text?b.text.margin:null;null==c&&(c=mxUtils.getAlignmentAsPoint(mxUtils.getValue(b.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(b.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=c.x*this.bounds.width;this.bounds.y+=c.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-
+4)/g)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/g)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/g)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*g);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/g)+(this.textarea.offsetWidth-this.textarea.clientWidth)+
+"px",this.bounds.width=parseInt(this.textarea.style.width)*g);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+g+","+g+")")}else this.textarea.style.height="",this.textarea.style.overflow="",H.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(b,d){if("0"==mxUtils.getValue(b.style,"html",
+"0"))return mxCellEditorGetInitialValue.apply(this,arguments);var g=this.graph.getEditingValue(b.cell,d);"1"==mxUtils.getValue(b.style,"nl2Br","1")&&(g=g.replace(/\n/g,"<br/>"));return g=this.graph.sanitizeHtml(g,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(b){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var d=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return d=
"1"==mxUtils.getValue(b.style,"nl2Br","1")?d.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):d.replace(/\r\n/g,"").replace(/\n/g,"")};var z=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(b){this.codeViewMode&&this.toggleViewMode();z.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(ha){}};var D=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(b,d){this.graph.getModel().beginUpdate();
try{D.apply(this,arguments),""==d&&this.graph.isCellDeletable(b.cell)&&0==this.graph.model.getChildCount(b.cell)&&this.graph.isTransparentState(b)&&this.graph.removeCells([b.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=
mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getBorderColor=function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BORDERCOLOR,null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,
mxConstants.STYLE_STROKECOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getMinimumSize=function(b){var d=this.graph.getView().scale;return new mxRectangle(0,0,null==b.text?30:b.text.size*d+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(b,d){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(d.getEvent)};mxGraphView.prototype.formatUnitText=function(b){return b?
-c(b,this.unit):b};mxGraphHandler.prototype.updateHint=function(d){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var f=this.graph.view.translate,e=this.graph.view.scale;d=this.roundLength((this.bounds.x+this.currentDx)/e-f.x);f=this.roundLength((this.bounds.y+this.currentDy)/e-f.y);e=this.graph.view.unit;this.hint.innerHTML=c(d,e)+", "+c(f,e);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-
-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};var L=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(b,d){L.apply(this,arguments);var f=this.graph.getCellStyle(b);if(null==f.childLayout){var c=this.graph.model.getParent(b),e=null!=c?this.graph.getCellGeometry(c):null;
-if(null!=e&&(f=this.graph.getCellStyle(c),"stackLayout"==f.childLayout)){var g=parseFloat(mxUtils.getValue(f,"stackBorder",mxStackLayout.prototype.border)),f="1"==mxUtils.getValue(f,"horizontalStack","1"),l=this.graph.getActualStartSize(c),e=e.clone();f?e.height=d.height+l.y+l.height+2*g:e.width=d.width+l.x+l.width+2*g;this.graph.model.setGeometry(c,e)}}};var E=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function b(b){f.get(b)||
-(f.put(b,!0),e.push(b))}for(var d=E.apply(this,arguments),f=new mxDictionary,c=this.graph.model,e=[],g=0;g<d.length;g++){var l=d[g];this.graph.isTableCell(l)?b(c.getParent(c.getParent(l))):this.graph.isTableRow(l)&&b(c.getParent(l));b(l)}return e};var J=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(b){var d=J.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};var C=mxEdgeHandler.prototype.createParentHighlightShape;
+c(b,this.unit):b};mxGraphHandler.prototype.updateHint=function(d){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var g=this.graph.view.translate,e=this.graph.view.scale;d=this.roundLength((this.bounds.x+this.currentDx)/e-g.x);g=this.roundLength((this.bounds.y+this.currentDy)/e-g.y);e=this.graph.view.unit;this.hint.innerHTML=c(d,e)+", "+c(g,e);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-
+this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};var N=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(b,d){N.apply(this,arguments);var g=this.graph.getCellStyle(b);if(null==g.childLayout){var c=this.graph.model.getParent(b),e=null!=c?this.graph.getCellGeometry(c):null;
+if(null!=e&&(g=this.graph.getCellStyle(c),"stackLayout"==g.childLayout)){var f=parseFloat(mxUtils.getValue(g,"stackBorder",mxStackLayout.prototype.border)),g="1"==mxUtils.getValue(g,"horizontalStack","1"),l=this.graph.getActualStartSize(c),e=e.clone();g?e.height=d.height+l.y+l.height+2*f:e.width=d.width+l.x+l.width+2*f;this.graph.model.setGeometry(c,e)}}};var E=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function b(b){g.get(b)||
+(g.put(b,!0),e.push(b))}for(var d=E.apply(this,arguments),g=new mxDictionary,c=this.graph.model,e=[],f=0;f<d.length;f++){var l=d[f];this.graph.isTableCell(l)?b(c.getParent(c.getParent(l))):this.graph.isTableRow(l)&&b(c.getParent(l));b(l)}return e};var J=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(b){var d=J.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};var C=mxEdgeHandler.prototype.createParentHighlightShape;
mxEdgeHandler.prototype.createParentHighlightShape=function(b){var d=C.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var b=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+b.x/2,this.bounds.y+this.rotationHandleVSpacing-b.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(b,d){return this.graph.isRecursiveVertexResize(b)&&
!mxEvent.isControlDown(d.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(b,d){return!(!this.graph.isSwimlane(b.cell)&&0<this.graph.model.getChildCount(b.cell)&&!this.graph.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,"childLayout",null))&&mxEvent.isControlDown(d.getEvent())||mxEvent.isMetaDown(d.getEvent())};var K=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return K.apply(this,
arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)&&!this.graph.isTable(this.state.cell)};mxVertexHandler.prototype.getSizerBounds=function(){return this.graph.isTableCell(this.state.cell)?this.graph.view.getState(this.graph.model.getParent(this.graph.model.getParent(this.state.cell))):this.bounds};var M=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return M.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&
-!this.graph.isTableRow(this.state.cell)};var aa=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(b){return b.tableHandle||aa.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=function(){var b=0;this.graph.isTableRow(this.state.cell)?b=1:this.graph.isTableCell(this.state.cell)&&(b=2);return b};var N=mxVertexHandler.prototype.getSelectionBorderBounds;
-mxVertexHandler.prototype.getSelectionBorderBounds=function(){return N.apply(this,arguments).grow(-this.getSelectionBorderInset())};var O=null,U=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==O&&(O=mxCellRenderer.defaultShapes.tableLine);var b=U.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var d=function(b,d,f){for(var c=[],e=0;e<b.length;e++){var l=b[e];c.push(null==l?null:new mxPoint((m+l.x+d)*g,(q+l.y+f)*g))}return c},
-f=this,c=this.graph,e=c.model,g=c.view.scale,l=this.state,k=this.selectionBorder,m=this.state.origin.x+c.view.translate.x,q=this.state.origin.y+c.view.translate.y;null==b&&(b=[]);var n=c.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<n.length){for(var G=e.getChildCells(n[0].cell,!0),v=c.getTableLines(this.state.cell,!1,!0),u=c.getTableLines(this.state.cell,!0,!1),e=0;e<G.length;e++)mxUtils.bind(this,function(e){var m=c.view.getState(G[e]),q=c.getCellGeometry(G[e]),n=null!=q.alternateBounds?
-q.alternateBounds:q;null==m&&(m=new mxCellState(c.view,G[e],c.getCellStyle(G[e])),m.x=l.x+q.x*g,m.y=l.y+q.y*g,m.width=n.width*g,m.height=n.height*g,m.updateCachedBounds());var q=e<G.length-1?G[e+1]:null,q=null!=q?c.getCellGeometry(q):null,u=null!=q&&null!=q.alternateBounds?q.alternateBounds:q,q=null!=v[e]?new O(v[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);q.isDashed=k.isDashed;q.svgStrokeTolerance++;m=new mxHandle(m,"col-resize",null,q);m.tableHandle=!0;var A=0;m.shape.node.parentNode.insertBefore(m.shape.node,
-m.shape.node.parentNode.firstChild);m.redraw=function(){if(null!=this.shape&&null!=this.state.shape){this.shape.stroke=0==A?mxConstants.NONE:k.stroke;if(this.shape.constructor==O)this.shape.line=d(v[e],A,0),this.shape.updateBoundsFromLine();else{var b=c.getActualStartSize(l.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(n.width+A)*g;this.shape.bounds.y=l.y+(e==G.length-1?0:b.y*g);this.shape.bounds.height=l.height-(e==G.length-1?0:(b.height+b.y)*g)}this.shape.redraw()}};var p=
-!1;m.setPosition=function(b,d,f){A=Math.max(Graph.minTableColumnWidth-n.width,d.x-b.x-n.width);p=mxEvent.isShiftDown(f.getEvent());null==u||p||(A=Math.min(A,u.width-Graph.minTableColumnWidth))};m.execute=function(b){if(0!=A)c.setTableColumnWidth(this.state.cell,A,p);else if(!f.blockDelayedSelection){var d=c.getCellAt(b.getGraphX(),b.getGraphY())||l.cell;c.graphHandler.selectCellForEvent(d,b)}A=0};m.positionChanged=function(){};m.reset=function(){A=0};b.push(m)})(e);for(e=0;e<n.length;e++)mxUtils.bind(this,
+!this.graph.isTableRow(this.state.cell)};var Z=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(b){return b.tableHandle||Z.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=function(){var b=0;this.graph.isTableRow(this.state.cell)?b=1:this.graph.isTableCell(this.state.cell)&&(b=2);return b};var L=mxVertexHandler.prototype.getSelectionBorderBounds;
+mxVertexHandler.prototype.getSelectionBorderBounds=function(){return L.apply(this,arguments).grow(-this.getSelectionBorderInset())};var O=null,U=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==O&&(O=mxCellRenderer.defaultShapes.tableLine);var b=U.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var d=function(b,d,g){for(var c=[],e=0;e<b.length;e++){var l=b[e];c.push(null==l?null:new mxPoint((m+l.x+d)*f,(q+l.y+g)*f))}return c},
+g=this,c=this.graph,e=c.model,f=c.view.scale,l=this.state,k=this.selectionBorder,m=this.state.origin.x+c.view.translate.x,q=this.state.origin.y+c.view.translate.y;null==b&&(b=[]);var n=c.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<n.length){for(var G=e.getChildCells(n[0].cell,!0),v=c.getTableLines(this.state.cell,!1,!0),u=c.getTableLines(this.state.cell,!0,!1),e=0;e<G.length;e++)mxUtils.bind(this,function(e){var m=c.view.getState(G[e]),q=c.getCellGeometry(G[e]),n=null!=q.alternateBounds?
+q.alternateBounds:q;null==m&&(m=new mxCellState(c.view,G[e],c.getCellStyle(G[e])),m.x=l.x+q.x*f,m.y=l.y+q.y*f,m.width=n.width*f,m.height=n.height*f,m.updateCachedBounds());var q=e<G.length-1?G[e+1]:null,q=null!=q?c.getCellGeometry(q):null,u=null!=q&&null!=q.alternateBounds?q.alternateBounds:q,q=null!=v[e]?new O(v[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);q.isDashed=k.isDashed;q.svgStrokeTolerance++;m=new mxHandle(m,"col-resize",null,q);m.tableHandle=!0;var p=0;m.shape.node.parentNode.insertBefore(m.shape.node,
+m.shape.node.parentNode.firstChild);m.redraw=function(){if(null!=this.shape&&null!=this.state.shape){this.shape.stroke=0==p?mxConstants.NONE:k.stroke;if(this.shape.constructor==O)this.shape.line=d(v[e],p,0),this.shape.updateBoundsFromLine();else{var b=c.getActualStartSize(l.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(n.width+p)*f;this.shape.bounds.y=l.y+(e==G.length-1?0:b.y*f);this.shape.bounds.height=l.height-(e==G.length-1?0:(b.height+b.y)*f)}this.shape.redraw()}};var B=
+!1;m.setPosition=function(b,d,g){p=Math.max(Graph.minTableColumnWidth-n.width,d.x-b.x-n.width);B=mxEvent.isShiftDown(g.getEvent());null==u||B||(p=Math.min(p,u.width-Graph.minTableColumnWidth))};m.execute=function(b){if(0!=p)c.setTableColumnWidth(this.state.cell,p,B);else if(!g.blockDelayedSelection){var d=c.getCellAt(b.getGraphX(),b.getGraphY())||l.cell;c.graphHandler.selectCellForEvent(d,b)}p=0};m.positionChanged=function(){};m.reset=function(){p=0};b.push(m)})(e);for(e=0;e<n.length;e++)mxUtils.bind(this,
function(e){var m=n[e],q=e<n.length-1?n[e+1]:null,q=null!=q?c.getCellGeometry(q.cell):null,G=null!=q&&null!=q.alternateBounds?q.alternateBounds:q,q=null!=u[e]?new O(u[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);q.isDashed=k.isDashed;q.svgStrokeTolerance++;m=new mxHandle(m,"row-resize",null,q);m.tableHandle=!0;var v=0;m.shape.node.parentNode.insertBefore(m.shape.node,m.shape.node.parentNode.firstChild);m.redraw=function(){if(null!=this.shape&&null!=this.state.shape){this.shape.stroke=
-0==v?mxConstants.NONE:k.stroke;if(this.shape.constructor==O)this.shape.line=d(u[e],0,v),this.shape.updateBoundsFromLine();else{var b=c.getActualStartSize(l.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+v*g;this.shape.bounds.x=l.x+(e==n.length-1?0:b.x*g);this.shape.bounds.width=l.width-(e==n.length-1?0:b.width+b.x+g)}this.shape.redraw()}};var A=!1;m.setPosition=function(b,d,f){v=Math.max(Graph.minTableRowHeight-b.height,d.y-b.y-b.height);A=mxEvent.isShiftDown(f.getEvent());
-null!=G&&A&&(v=Math.min(v,G.height-Graph.minTableRowHeight))};m.execute=function(b){if(0!=v)c.setTableRowHeight(this.state.cell,v,!A);else if(!f.blockDelayedSelection){var d=c.getCellAt(b.getGraphX(),b.getGraphY())||l.cell;c.graphHandler.selectCellForEvent(d,b)}v=0};m.reset=function(){v=0};b.push(m)})(e)}}return null!=b?b.reverse():null};var G=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){G.apply(this,arguments);if(null!=this.moveHandles)for(var d=
+0==v?mxConstants.NONE:k.stroke;if(this.shape.constructor==O)this.shape.line=d(u[e],0,v),this.shape.updateBoundsFromLine();else{var b=c.getActualStartSize(l.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+v*f;this.shape.bounds.x=l.x+(e==n.length-1?0:b.x*f);this.shape.bounds.width=l.width-(e==n.length-1?0:b.width+b.x+f)}this.shape.redraw()}};var p=!1;m.setPosition=function(b,d,g){v=Math.max(Graph.minTableRowHeight-b.height,d.y-b.y-b.height);p=mxEvent.isShiftDown(g.getEvent());
+null!=G&&p&&(v=Math.min(v,G.height-Graph.minTableRowHeight))};m.execute=function(b){if(0!=v)c.setTableRowHeight(this.state.cell,v,!p);else if(!g.blockDelayedSelection){var d=c.getCellAt(b.getGraphX(),b.getGraphY())||l.cell;c.graphHandler.selectCellForEvent(d,b)}v=0};m.reset=function(){v=0};b.push(m)})(e)}}return null!=b?b.reverse():null};var G=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){G.apply(this,arguments);if(null!=this.moveHandles)for(var d=
0;d<this.moveHandles.length;d++)this.moveHandles[d].style.visibility=b?"":"hidden";if(null!=this.cornerHandles)for(d=0;d<this.cornerHandles.length;d++)this.cornerHandles[d].node.style.visibility=b?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var b=this.graph.model;if(null!=this.moveHandles){for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].parentNode.removeChild(this.moveHandles[d]);this.moveHandles=null}this.moveHandles=[];for(d=0;d<b.getChildCount(this.state.cell);d++)mxUtils.bind(this,
-function(d){if(null!=d&&b.isVertex(d.cell)){var f=mxUtils.createImage(Editor.rowMoveImage);f.style.position="absolute";f.style.cursor="pointer";f.style.width="7px";f.style.height="4px";f.style.padding="4px 2px 4px 2px";f.rowState=d;mxEvent.addGestureListeners(f,mxUtils.bind(this,function(b){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(b)&&this.graph.isCellSelected(d.cell)||this.graph.selectCellForEvent(d.cell,b);mxEvent.isPopupTrigger(b)||(this.graph.graphHandler.start(this.state.cell,
-mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(b),this.graph.isMouseDown=!0);mxEvent.consume(b)}),null,mxUtils.bind(this,function(b){mxEvent.isPopupTrigger(b)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(b),mxEvent.getClientY(b),d.cell,b),mxEvent.consume(b))}));this.moveHandles.push(f);this.graph.container.appendChild(f)}})(this.graph.view.getState(b.getChildAt(this.state.cell,
-d)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var b=0;b<this.customHandles.length;b++)this.customHandles[b].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var I=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var b=new mxPoint(0,0),d=this.tolerance,f=this.state.style.shape;null==mxCellRenderer.defaultShapes[f]&&mxStencilRegistry.getStencil(f);
-f=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!f&&null!=this.customHandles)for(var c=0;c<this.customHandles.length;c++)if(null!=this.customHandles[c].shape&&null!=this.customHandles[c].shape.bounds){var e=this.customHandles[c].shape.bounds,g=e.getCenterX(),l=e.getCenterY();if(Math.abs(this.state.x-g)<e.width/2||Math.abs(this.state.y-l)<e.height/2||Math.abs(this.state.x+this.state.width-g)<e.width/2||Math.abs(this.state.y+this.state.height-l)<e.height/
-2){f=!0;break}}f&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(d/=2,this.graph.isTable(this.state.cell)&&(d+=7),b.x=this.sizers[0].bounds.width+d,b.y=this.sizers[0].bounds.height+d):b=I.apply(this,arguments);return b};mxVertexHandler.prototype.updateHint=function(d){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{d=
-this.state.view.scale;var f=this.state.view.unit;this.hint.innerHTML=c(this.roundLength(this.bounds.width/d),f)+" x "+c(this.roundLength(this.bounds.height/d),f)}d=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==d&&(d=this.bounds);this.hint.style.left=d.x+Math.round((d.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=d.y+d.height+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")}};
-mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};var A=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(b,d){A.apply(this,arguments);null!=this.linkHint&&"none"!=this.linkHint.style.display&&null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&(this.linkHint.style.display="none")};var Y=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=
-function(b,d){Y.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(d,f){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var e=this.graph.view.translate,g=this.graph.view.scale,l=this.roundLength(f.x/g-e.x),e=this.roundLength(f.y/g-e.y),g=this.graph.view.unit;this.hint.innerHTML=c(l,g)+", "+c(e,g);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=
-this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(l=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*l.x)+"%, "+Math.round(100*l.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(d.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(d.getGraphY(),f.y)+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};Graph.prototype.expandedImage=
-Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="50%" y1="0%" x2="50%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 2 4.5 L 7 4.5 z" stroke="#000"/>');Graph.prototype.collapsedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 4.5 2 L 4.5 7 M 2 4.5 L 7 4.5 z" stroke="#000"/>');
+function(d){if(null!=d&&b.isVertex(d.cell)){var g=mxUtils.createImage(Editor.rowMoveImage);g.style.position="absolute";g.style.cursor="pointer";g.style.width="7px";g.style.height="4px";g.style.padding="4px 2px 4px 2px";g.rowState=d;mxEvent.addGestureListeners(g,mxUtils.bind(this,function(b){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(b)&&this.graph.isCellSelected(d.cell)||this.graph.selectCellForEvent(d.cell,b);mxEvent.isPopupTrigger(b)||(this.graph.graphHandler.start(this.state.cell,
+mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(b),this.graph.isMouseDown=!0);mxEvent.consume(b)}),null,mxUtils.bind(this,function(b){mxEvent.isPopupTrigger(b)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(b),mxEvent.getClientY(b),d.cell,b),mxEvent.consume(b))}));this.moveHandles.push(g);this.graph.container.appendChild(g)}})(this.graph.view.getState(b.getChildAt(this.state.cell,
+d)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var b=0;b<this.customHandles.length;b++)this.customHandles[b].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var I=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var b=new mxPoint(0,0),d=this.tolerance,g=this.state.style.shape;null==mxCellRenderer.defaultShapes[g]&&mxStencilRegistry.getStencil(g);
+g=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!g&&null!=this.customHandles)for(var c=0;c<this.customHandles.length;c++)if(null!=this.customHandles[c].shape&&null!=this.customHandles[c].shape.bounds){var e=this.customHandles[c].shape.bounds,f=e.getCenterX(),l=e.getCenterY();if(Math.abs(this.state.x-f)<e.width/2||Math.abs(this.state.y-l)<e.height/2||Math.abs(this.state.x+this.state.width-f)<e.width/2||Math.abs(this.state.y+this.state.height-l)<e.height/
+2){g=!0;break}}g&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(d/=2,this.graph.isTable(this.state.cell)&&(d+=7),b.x=this.sizers[0].bounds.width+d,b.y=this.sizers[0].bounds.height+d):b=I.apply(this,arguments);return b};mxVertexHandler.prototype.updateHint=function(d){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{d=
+this.state.view.scale;var g=this.state.view.unit;this.hint.innerHTML=c(this.roundLength(this.bounds.width/d),g)+" x "+c(this.roundLength(this.bounds.height/d),g)}d=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==d&&(d=this.bounds);this.hint.style.left=d.x+Math.round((d.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=d.y+d.height+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")}};
+mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};var B=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(b,d){B.apply(this,arguments);null!=this.linkHint&&"none"!=this.linkHint.style.display&&null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&(this.linkHint.style.display="none")};var ca=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=
+function(b,d){ca.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(d,g){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var e=this.graph.view.translate,f=this.graph.view.scale,l=this.roundLength(g.x/f-e.x),e=this.roundLength(g.y/f-e.y),f=this.graph.view.unit;this.hint.innerHTML=c(l,f)+", "+c(e,f);this.hint.style.visibility="visible";if(this.isSource||
+this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(l=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*l.x)+"%, "+Math.round(100*l.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(d.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(d.getGraphY(),g.y)+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};
+Graph.prototype.expandedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="50%" y1="0%" x2="50%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 2 4.5 L 7 4.5 z" stroke="#000"/>');Graph.prototype.collapsedImage=Graph.createSvgImage(9,9,'<defs><linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="30%" style="stop-color:#f0f0f0;" /><stop offset="100%" style="stop-color:#AFB0B6;" /></linearGradient></defs><rect x="0" y="0" width="9" height="9" stroke="#8A94A5" fill="url(#grad1)" stroke-width="2"/><path d="M 4.5 2 L 4.5 7 M 2 4.5 L 7 4.5 z" stroke="#000"/>');
mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.endMainHandle=Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="6" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>');HoverIcons.prototype.secondaryHandle=Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>');
HoverIcons.prototype.fixedHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="6" stroke="#fff" fill="#01bd22"/><path d="m 8 8 L 14 14M 8 14 L 14 8" stroke="#fff"/>');HoverIcons.prototype.endFixedHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="7" stroke="#fff" fill="#01bd22"/><path d="m 8 8 L 14 14M 8 14 L 14 8" stroke="#fff"/>');HoverIcons.prototype.terminalHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="6" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+
'"/><circle cx="11" cy="11" r="3" stroke="#fff" fill="transparent"/>');HoverIcons.prototype.endTerminalHandle=Graph.createSvgImage(22,22,'<circle cx="11" cy="11" r="7" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/><circle cx="11" cy="11" r="3" stroke="#fff" fill="transparent"/>');HoverIcons.prototype.rotationHandle=Graph.createSvgImage(16,16,'<path stroke="'+HoverIcons.prototype.arrowFill+'" fill="'+HoverIcons.prototype.arrowFill+'" d="M15.55 5.55L11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10l4.55-4.45zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47h2.02zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03zm3.89-2.42l1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48z"/>',
@@ -2672,272 +2682,272 @@ HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangl
!0;mxEdgeHandler.prototype.manageLabelHandle=!0;mxEdgeHandler.prototype.outlineConnect=!0;mxEdgeHandler.prototype.isAddVirtualBendEvent=function(b){return!mxEvent.isShiftDown(b.getEvent())};mxEdgeHandler.prototype.isCustomHandleEvent=function(b){return!mxEvent.isShiftDown(b.getEvent())};if(Graph.touchStyle){if(mxClient.IS_TOUCH||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints)mxShape.prototype.svgStrokeTolerance=18,mxVertexHandler.prototype.tolerance=12,mxEdgeHandler.prototype.tolerance=
12,Graph.prototype.tolerance=12,mxVertexHandler.prototype.rotationHandleVSpacing=-16,mxConstraintHandler.prototype.getTolerance=function(b){return mxEvent.isMouseEvent(b.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=function(b){var d=b.getEvent();return null==b.getState()&&!mxEvent.isMouseEvent(d)||mxEvent.isPopupTrigger(d)&&(null==b.getState()||mxEvent.isControlDown(d)||mxEvent.isShiftDown(d))};var S=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=
function(b,d){S.apply(this,arguments);mxEvent.isTouchEvent(d.getEvent())&&this.graph.isCellSelected(d.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(b){var d=b.getEvent();return mxEvent.isLeftMouseButton(d)&&(this.useLeftButtonForPanning&&null==b.getState()||mxEvent.isControlDown(d)&&!mxEvent.isShiftDown(d))||this.usePopupTrigger&&mxEvent.isPopupTrigger(d)};mxRubberband.prototype.isSpaceEvent=function(b){return this.graph.isEnabled()&&
-!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(b.getEvent())&&mxEvent.isShiftDown(b.getEvent())&&mxEvent.isAltDown(b.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(b,d){if(this.cancelled)this.cancelled=!1,d.consume();else{var f=null!=this.div&&"none"!=this.div.style.display,c=null,e=null,g=null,l=null;null!=this.first&&null!=this.currentX&&
-null!=this.currentY&&(c=this.first.x,e=this.first.y,g=(this.currentX-c)/this.graph.view.scale,l=(this.currentY-e)/this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(g=this.graph.snap(g),l=this.graph.snap(l),this.graph.isGridEnabled()||(Math.abs(g)<this.graph.tolerance&&(g=0),Math.abs(l)<this.graph.tolerance&&(l=0))));this.reset();if(f){if(this.isSpaceEvent(d)){this.graph.model.beginUpdate();try{for(var k=this.graph.getCellsBeyond(c,e,this.graph.getDefaultParent(),!0,!0),f=0;f<k.length;f++)if(this.graph.isCellMovable(k[f])){var m=
-this.graph.view.getState(k[f]),q=this.graph.getCellGeometry(k[f]);null!=m&&null!=q&&(q=q.clone(),q.translate(g,l),this.graph.model.setGeometry(k[f],q))}}finally{this.graph.model.endUpdate()}}else g=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(g,d.getEvent());d.consume()}}};mxRubberband.prototype.mouseMove=function(b,d){if(!d.isConsumed()&&null!=this.first){var f=mxUtils.getScrollOrigin(this.graph.container),c=mxUtils.getOffset(this.graph.container);f.x-=c.x;f.y-=c.y;
-var c=d.getX()+f.x,f=d.getY()+f.y,e=this.first.x-c,g=this.first.y-f,l=this.graph.tolerance;if(null!=this.div||Math.abs(e)>l||Math.abs(g)>l)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(c,f),this.isSpaceEvent(d)?(c=this.x+this.width,f=this.y+this.height,e=this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(this.width=this.graph.snap(this.width/e)*e,this.height=this.graph.snap(this.height/e)*e,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=
-0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=c-this.width),this.y<this.first.y&&(this.y=f-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor="white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=
+!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(b.getEvent())&&mxEvent.isShiftDown(b.getEvent())&&mxEvent.isAltDown(b.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(b,d){if(this.cancelled)this.cancelled=!1,d.consume();else{var g=null!=this.div&&"none"!=this.div.style.display,c=null,e=null,f=null,l=null;null!=this.first&&null!=this.currentX&&
+null!=this.currentY&&(c=this.first.x,e=this.first.y,f=(this.currentX-c)/this.graph.view.scale,l=(this.currentY-e)/this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(f=this.graph.snap(f),l=this.graph.snap(l),this.graph.isGridEnabled()||(Math.abs(f)<this.graph.tolerance&&(f=0),Math.abs(l)<this.graph.tolerance&&(l=0))));this.reset();if(g){if(this.isSpaceEvent(d)){this.graph.model.beginUpdate();try{for(var k=this.graph.getCellsBeyond(c,e,this.graph.getDefaultParent(),!0,!0),g=0;g<k.length;g++)if(this.graph.isCellMovable(k[g])){var m=
+this.graph.view.getState(k[g]),q=this.graph.getCellGeometry(k[g]);null!=m&&null!=q&&(q=q.clone(),q.translate(f,l),this.graph.model.setGeometry(k[g],q))}}finally{this.graph.model.endUpdate()}}else f=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(f,d.getEvent());d.consume()}}};mxRubberband.prototype.mouseMove=function(b,d){if(!d.isConsumed()&&null!=this.first){var g=mxUtils.getScrollOrigin(this.graph.container),c=mxUtils.getOffset(this.graph.container);g.x-=c.x;g.y-=c.y;
+var c=d.getX()+g.x,g=d.getY()+g.y,e=this.first.x-c,f=this.first.y-g,l=this.graph.tolerance;if(null!=this.div||Math.abs(e)>l||Math.abs(f)>l)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(c,g),this.isSpaceEvent(d)?(c=this.x+this.width,g=this.y+this.height,e=this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(this.width=this.graph.snap(this.width/e)*e,this.height=this.graph.snap(this.height/e)*e,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=
+0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=c-this.width),this.y<this.first.y&&(this.y=g-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor="white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=
this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),
-this.secondDiv=null)),d.consume()}};var Q=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);Q.apply(this,arguments)};var V=(new Date).getTime(),oa=0,fa=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(b,d,f,c){fa.apply(this,arguments);f!=this.currentTerminalState?(V=(new Date).getTime(),oa=0):oa=(new Date).getTime()-V;this.currentTerminalState=
-f};var ka=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(b){return null!=this.currentTerminalState&&b.getState()==this.currentTerminalState&&2E3<oa||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&ka.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=function(b,d,f){d=null!=b&&0==b;var c=this.state.getVisibleTerminalState(d);b=null!=b&&(0==b||b>=this.state.absolutePoints.length-
-1||this.constructor==mxElbowEdgeHandler&&2==b)?this.graph.getConnectionConstraint(this.state,c,d):null;f=null!=(null!=b?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(d),b):null)?f?this.endFixedHandleImage:this.fixedHandleImage:null!=b&&null!=c?f?this.endTerminalHandleImage:this.terminalHandleImage:f?this.endHandleImage:this.handleImage;if(null!=f)return f=new mxImageShape(new mxRectangle(0,0,f.width,f.height),f.src),f.preserveImageAspect=!1,f;f=mxConstants.HANDLE_SIZE;this.preferHtml&&
---f;return new mxRectangleShape(new mxRectangle(0,0,f,f),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var ra=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(b,d,f){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return ra.apply(this,arguments)};var la=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(b){if(null!=
-b&&1==b.length){var d=this.graph.getModel(),f=d.getParent(b[0]),c=this.graph.getCellGeometry(b[0]);if(d.isEdge(f)&&null!=c&&c.relative&&(d=this.graph.view.getState(b[0]),null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return la.apply(this,arguments)};var ja=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var b=ja.apply(this,arguments),d=[],f=0;f<b.length;f++)"1"!=mxUtils.getValue(b[f].style,
-"part","0")&&d.push(b[f]);return d};var ba=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(b){var d=this.graph.getModel(),f=d.getParent(b.cell),c=this.graph.getCellGeometry(b.cell);return d.isEdge(f)&&null!=c&&c.relative&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox?(d=b.text.unrotatedBoundingBox||b.text.boundingBox,new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):ba.apply(this,arguments)};
-var ca=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(b,d){var f=this.graph.getModel(),c=f.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!f.isEdge(c)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&ca.apply(this,arguments)};mxVertexHandler.prototype.rotateClick=function(){var b=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),
+this.secondDiv=null)),d.consume()}};var Q=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);Q.apply(this,arguments)};var V=(new Date).getTime(),oa=0,fa=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(b,d,g,c){fa.apply(this,arguments);g!=this.currentTerminalState?(V=(new Date).getTime(),oa=0):oa=(new Date).getTime()-V;this.currentTerminalState=
+g};var ka=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(b){return null!=this.currentTerminalState&&b.getState()==this.currentTerminalState&&2E3<oa||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&ka.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=function(b,d,g){d=null!=b&&0==b;var c=this.state.getVisibleTerminalState(d);b=null!=b&&(0==b||b>=this.state.absolutePoints.length-
+1||this.constructor==mxElbowEdgeHandler&&2==b)?this.graph.getConnectionConstraint(this.state,c,d):null;g=null!=(null!=b?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(d),b):null)?g?this.endFixedHandleImage:this.fixedHandleImage:null!=b&&null!=c?g?this.endTerminalHandleImage:this.terminalHandleImage:g?this.endHandleImage:this.handleImage;if(null!=g)return g=new mxImageShape(new mxRectangle(0,0,g.width,g.height),g.src),g.preserveImageAspect=!1,g;g=mxConstants.HANDLE_SIZE;this.preferHtml&&
+--g;return new mxRectangleShape(new mxRectangle(0,0,g,g),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var ra=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(b,d,g){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return ra.apply(this,arguments)};var la=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(b){if(null!=
+b&&1==b.length){var d=this.graph.getModel(),g=d.getParent(b[0]),c=this.graph.getCellGeometry(b[0]);if(d.isEdge(g)&&null!=c&&c.relative&&(d=this.graph.view.getState(b[0]),null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return la.apply(this,arguments)};var ja=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var b=ja.apply(this,arguments),d=[],g=0;g<b.length;g++)"1"!=mxUtils.getValue(b[g].style,
+"part","0")&&d.push(b[g]);return d};var aa=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(b){var d=this.graph.getModel(),g=d.getParent(b.cell),c=this.graph.getCellGeometry(b.cell);return d.isEdge(g)&&null!=c&&c.relative&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox?(d=b.text.unrotatedBoundingBox||b.text.boundingBox,new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):aa.apply(this,arguments)};
+var ba=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(b,d){var g=this.graph.getModel(),c=g.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!g.isEdge(c)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&ba.apply(this,arguments)};mxVertexHandler.prototype.rotateClick=function(){var b=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),
d=mxUtils.getValue(this.state.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);this.state.view.graph.model.isVertex(this.state.cell)&&b==mxConstants.NONE&&d==mxConstants.NONE?(b=mxUtils.mod(mxUtils.getValue(this.state.style,mxConstants.STYLE_ROTATION,0)+90,360),this.state.view.graph.setCellStyles(mxConstants.STYLE_ROTATION,b,[this.state.cell])):this.state.view.graph.turnShapes([this.state.cell])};var R=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(b,d){R.apply(this,
arguments);null!=this.graph.graphHandler.first&&(null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display="none"),null!=this.linkHint&&"none"!=this.linkHint.style.display&&(this.linkHint.style.display="none"))};var sa=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(b,d){sa.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");
null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="");this.blockDelayedSelection=null};var W=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){W.apply(this,arguments);var b=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",mxResources.get("rotateTooltip"));if(this.graph.isTable(this.state.cell))this.refreshMoveHandles();else if(1==this.graph.getSelectionCount()&&(this.graph.isTableCell(this.state.cell)||this.graph.isTableRow(this.state.cell))){this.cornerHandles=
-[];for(var d=0;4>d;d++){var f=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);f.dialect=mxConstants.DIALECT_SVG;f.init(this.graph.view.getOverlayPane());this.cornerHandles.push(f)}}var c=mxUtils.bind(this,function(){null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.changeHandler=mxUtils.bind(this,function(b,d){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),
-this.graph.getLinksForState(this.state));c()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(b,d){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);d=this.graph.getLinkForCell(this.state.cell);f=this.graph.getLinksForState(this.state);this.updateLinkHint(d,f);if(null!=d||null!=f&&0<f.length)b=!0;b&&this.redrawHandles()};
-mxVertexHandler.prototype.updateLinkHint=function(d,f){try{if(null==d&&(null==f||0==f.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=d||null!=f&&0<f.length){null==this.linkHint&&(this.linkHint=b(),this.linkHint.style.padding="6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint),mxEvent.addListener(this.linkHint,"mouseenter",
+[];for(var d=0;4>d;d++){var g=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);g.dialect=mxConstants.DIALECT_SVG;g.init(this.graph.view.getOverlayPane());this.cornerHandles.push(g)}}var c=mxUtils.bind(this,function(){null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.changeHandler=mxUtils.bind(this,function(b,d){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),
+this.graph.getLinksForState(this.state));c()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(b,d){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);d=this.graph.getLinkForCell(this.state.cell);g=this.graph.getLinksForState(this.state);this.updateLinkHint(d,g);if(null!=d||null!=g&&0<g.length)b=!0;b&&this.redrawHandles()};
+mxVertexHandler.prototype.updateLinkHint=function(d,g){try{if(null==d&&(null==g||0==g.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=d||null!=g&&0<g.length){null==this.linkHint&&(this.linkHint=b(),this.linkHint.style.padding="6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint),mxEvent.addListener(this.linkHint,"mouseenter",
mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.innerHTML="";if(null!=d&&(this.linkHint.appendChild(this.graph.createLinkForHint(d)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var c=document.createElement("img");c.setAttribute("src",Editor.editImage);c.setAttribute("title",mxResources.get("editLink"));c.setAttribute("width","11");c.setAttribute("height","11");c.style.marginLeft="10px";c.style.marginBottom="-1px";c.style.cursor="pointer";this.linkHint.appendChild(c);
-mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(b)}));this.linkHint.appendChildGraph.createRemoveIcon(mxResources.get("removeIt",[mxResources.get("link")]),mxUtils.bind(this,function(b){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(b)}))}if(null!=f)for(c=0;c<f.length;c++){var e=document.createElement("div");e.style.marginTop=null!=d||0<c?"6px":"0px";e.appendChild(this.graph.createLinkForHint(f[c].getAttribute("href"),
-mxUtils.getTextContent(f[c])));this.linkHint.appendChild(e)}}}catch(ta){}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var X=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){X.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var b=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");
-null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.changeHandler=mxUtils.bind(this,function(d,f){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));b();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var d=this.graph.getLinkForCell(this.state.cell),
-f=this.graph.getLinksForState(this.state);if(null!=d||null!=f&&0<f.length)this.updateLinkHint(d,f),this.redrawHandles()};var ma=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){ma.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var qa=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].style.left=
-this.moveHandles[b].rowState.x+this.moveHandles[b].rowState.width-5+"px",this.moveHandles[b].style.top=this.moveHandles[b].rowState.y+this.moveHandles[b].rowState.height/2-6+"px";if(null!=this.cornerHandles){var b=this.getSelectionBorderInset(),d=this.cornerHandles,f=d[0].bounds.height/2;d[0].bounds.x=this.state.x-d[0].bounds.width/2+b;d[0].bounds.y=this.state.y-f+b;d[0].redraw();d[1].bounds.x=d[0].bounds.x+this.state.width-2*b;d[1].bounds.y=d[0].bounds.y;d[1].redraw();d[2].bounds.x=d[0].bounds.x;
+mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(b)}));this.linkHint.appendChildGraph.createRemoveIcon(mxResources.get("removeIt",[mxResources.get("link")]),mxUtils.bind(this,function(b){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(b)}))}if(null!=g)for(c=0;c<g.length;c++){var e=document.createElement("div");e.style.marginTop=null!=d||0<c?"6px":"0px";e.appendChild(this.graph.createLinkForHint(g[c].getAttribute("href"),
+mxUtils.getTextContent(g[c])));this.linkHint.appendChild(e)}}}catch(ta){}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var X=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){X.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var b=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");
+null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.changeHandler=mxUtils.bind(this,function(d,g){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));b();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var d=this.graph.getLinkForCell(this.state.cell),
+g=this.graph.getLinksForState(this.state);if(null!=d||null!=g&&0<g.length)this.updateLinkHint(d,g),this.redrawHandles()};var ma=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){ma.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var qa=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].style.left=
+this.moveHandles[b].rowState.x+this.moveHandles[b].rowState.width-5+"px",this.moveHandles[b].style.top=this.moveHandles[b].rowState.y+this.moveHandles[b].rowState.height/2-6+"px";if(null!=this.cornerHandles){var b=this.getSelectionBorderInset(),d=this.cornerHandles,g=d[0].bounds.height/2;d[0].bounds.x=this.state.x-d[0].bounds.width/2+b;d[0].bounds.y=this.state.y-g+b;d[0].redraw();d[1].bounds.x=d[0].bounds.x+this.state.width-2*b;d[1].bounds.y=d[0].bounds.y;d[1].redraw();d[2].bounds.x=d[0].bounds.x;
d[2].bounds.y=this.state.y+this.state.height-2*b;d[2].redraw();d[3].bounds.x=d[1].bounds.x;d[3].bounds.y=d[2].bounds.y;d[3].redraw();for(b=0;b<this.cornerHandles.length;b++)this.cornerHandles[b].node.style.display=1==this.graph.getSelectionCount()?"":"none"}null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=null!=this.moveHandles||1!=this.graph.getSelectionCount()||null!=this.index&&this.index!=mxEvent.ROTATION_HANDLE?"none":"");qa.apply(this);null!=this.state&&
-null!=this.linkHint&&(b=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),d=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),f=mxUtils.getBoundingBox(d,this.state.style[mxConstants.STYLE_ROTATION]||"0",b),b=null!=f?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,d=null!=this.state.text?this.state.text.boundingBox:null,null==f&&(f=this.state),f=f.y+f.height,null!=d&&(f=Math.max(f,d.y+d.height)),this.linkHint.style.left=
-Math.max(0,Math.round(b.x+(b.width-this.linkHint.clientWidth)/2))+"px",this.linkHint.style.top=Math.round(f+this.verticalOffset/2+Editor.hintOffset)+"px")};var T=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){T.apply(this,arguments);if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)null!=this.moveHandles[b]&&null!=this.moveHandles[b].parentNode&&this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);this.moveHandles=null}if(null!=this.cornerHandles){for(b=
+null!=this.linkHint&&(b=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),d=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),g=mxUtils.getBoundingBox(d,this.state.style[mxConstants.STYLE_ROTATION]||"0",b),b=null!=g?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,d=null!=this.state.text?this.state.text.boundingBox:null,null==g&&(g=this.state),g=g.y+g.height,null!=d&&(g=Math.max(g,d.y+d.height)),this.linkHint.style.left=
+Math.max(0,Math.round(b.x+(b.width-this.linkHint.clientWidth)/2))+"px",this.linkHint.style.top=Math.round(g+this.verticalOffset/2+Editor.hintOffset)+"px")};var T=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){T.apply(this,arguments);if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)null!=this.moveHandles[b]&&null!=this.moveHandles[b].parentNode&&this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);this.moveHandles=null}if(null!=this.cornerHandles){for(b=
0;b<this.cornerHandles.length;b++)null!=this.cornerHandles[b]&&null!=this.cornerHandles[b].node&&null!=this.cornerHandles[b].node.parentNode&&this.cornerHandles[b].node.parentNode.removeChild(this.cornerHandles[b].node);this.cornerHandles=null}null!=this.linkHint&&(null!=this.linkHint.parentNode&&this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getSelectionModel().removeListener(this.changeHandler),this.graph.getModel().removeListener(this.changeHandler),
this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var ia=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(ia.apply(this),null!=this.state&&null!=this.linkHint)){var b=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(b=new mxRectangle(b.x,b.y,b.width,b.height),b.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(b.x+(b.width-
this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b.y+b.height+Editor.hintOffset)+"px"}};var da=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){da.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var na=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){na.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),
-this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function b(b,d,f){mxShape.call(this);this.line=b;this.stroke=d;this.strokewidth=null!=f?f:1;this.updateBoundsFromLine()}function c(){mxSwimlane.call(this)}function e(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function g(){mxActor.call(this)}function p(){mxCylinder.call(this)}function t(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function l(){mxShape.call(this)}function q(){mxShape.call(this)}function m(b,d,f,c){mxShape.call(this);
-this.bounds=b;this.fill=d;this.stroke=f;this.strokewidth=null!=c?c:1}function n(){mxActor.call(this)}function u(){mxCylinder.call(this)}function v(){mxCylinder.call(this)}function y(){mxActor.call(this)}function x(){mxActor.call(this)}function F(){mxActor.call(this)}function H(){mxActor.call(this)}function z(){mxActor.call(this)}function D(){mxActor.call(this)}function L(){mxActor.call(this)}function E(b,d){this.canvas=b;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=
+this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function b(b,d,g){mxShape.call(this);this.line=b;this.stroke=d;this.strokewidth=null!=g?g:1;this.updateBoundsFromLine()}function c(){mxSwimlane.call(this)}function e(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function f(){mxActor.call(this)}function p(){mxCylinder.call(this)}function t(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function l(){mxShape.call(this)}function q(){mxShape.call(this)}function m(b,d,g,c){mxShape.call(this);
+this.bounds=b;this.fill=d;this.stroke=g;this.strokewidth=null!=c?c:1}function n(){mxActor.call(this)}function u(){mxCylinder.call(this)}function v(){mxCylinder.call(this)}function y(){mxActor.call(this)}function x(){mxActor.call(this)}function F(){mxActor.call(this)}function H(){mxActor.call(this)}function z(){mxActor.call(this)}function D(){mxActor.call(this)}function N(){mxActor.call(this)}function E(b,d){this.canvas=b;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=
d;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,E.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,E.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,E.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,E.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,E.prototype.curveTo);this.originalArcTo=
-this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,E.prototype.arcTo)}function J(){mxRectangleShape.call(this)}function C(){mxRectangleShape.call(this)}function K(){mxActor.call(this)}function M(){mxActor.call(this)}function aa(){mxActor.call(this)}function N(){mxRectangleShape.call(this)}function O(){mxRectangleShape.call(this)}function U(){mxCylinder.call(this)}function G(){mxShape.call(this)}function I(){mxShape.call(this)}function A(){mxEllipse.call(this)}function Y(){mxShape.call(this)}function S(){mxShape.call(this)}
-function Q(){mxRectangleShape.call(this)}function V(){mxShape.call(this)}function oa(){mxShape.call(this)}function fa(){mxShape.call(this)}function ka(){mxShape.call(this)}function ra(){mxShape.call(this)}function la(){mxCylinder.call(this)}function ja(){mxCylinder.call(this)}function ba(){mxRectangleShape.call(this)}function ca(){mxDoubleEllipse.call(this)}function R(){mxDoubleEllipse.call(this)}function sa(){mxArrowConnector.call(this);this.spacing=0}function W(){mxArrowConnector.call(this);this.spacing=
+this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,E.prototype.arcTo)}function J(){mxRectangleShape.call(this)}function C(){mxRectangleShape.call(this)}function K(){mxActor.call(this)}function M(){mxActor.call(this)}function Z(){mxActor.call(this)}function L(){mxRectangleShape.call(this)}function O(){mxRectangleShape.call(this)}function U(){mxCylinder.call(this)}function G(){mxShape.call(this)}function I(){mxShape.call(this)}function B(){mxEllipse.call(this)}function ca(){mxShape.call(this)}function S(){mxShape.call(this)}
+function Q(){mxRectangleShape.call(this)}function V(){mxShape.call(this)}function oa(){mxShape.call(this)}function fa(){mxShape.call(this)}function ka(){mxShape.call(this)}function ra(){mxShape.call(this)}function la(){mxCylinder.call(this)}function ja(){mxCylinder.call(this)}function aa(){mxRectangleShape.call(this)}function ba(){mxDoubleEllipse.call(this)}function R(){mxDoubleEllipse.call(this)}function sa(){mxArrowConnector.call(this);this.spacing=0}function W(){mxArrowConnector.call(this);this.spacing=
0}function X(){mxActor.call(this)}function ma(){mxRectangleShape.call(this)}function qa(){mxActor.call(this)}function T(){mxActor.call(this)}function ia(){mxActor.call(this)}function da(){mxActor.call(this)}function na(){mxActor.call(this)}function ha(){mxActor.call(this)}function ua(){mxActor.call(this)}function P(){mxActor.call(this)}function ea(){mxActor.call(this)}function ta(){mxActor.call(this)}function ya(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}function xa(){mxEllipse.call(this)}
-function za(){mxRhombus.call(this)}function Ba(){mxEllipse.call(this)}function Ea(){mxEllipse.call(this)}function Ja(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function Ka(){mxActor.call(this)}function Ca(){mxActor.call(this)}function wa(){mxActor.call(this)}function Z(b,d,f,c){mxShape.call(this);this.bounds=b;this.fill=d;this.stroke=f;this.strokewidth=null!=c?c:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Fa(){mxConnector.call(this)}
-function Na(b,d,f,c,e,g,l,k,m,q){l+=m;var B=c.clone();c.x-=e*(2*l+m);c.y-=g*(2*l+m);e*=l+m;g*=l+m;return function(){b.ellipse(B.x-e-l,B.y-g-l,2*l,2*l);q?b.fillAndStroke():b.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var b=null;if(null!=this.line)for(var d=0;d<this.line.length;d++){var f=this.line[d];null!=f&&(f=new mxRectangle(f.x,f.y,this.strokewidth,this.strokewidth),null==b?b=f:b.add(f))}this.bounds=null!=b?b:new mxRectangle};b.prototype.paintVertexShape=function(b,
-d,f,c,e){this.paintTableLine(b,this.line,0,0)};b.prototype.paintTableLine=function(b,d,f,c){if(null!=d){var e=null;b.begin();for(var B=0;B<d.length;B++){var g=d[B];null!=g&&(null==e?b.moveTo(g.x+f,g.y+c):null!=e&&b.lineTo(g.x+f,g.y+c));e=g}b.end();b.stroke()}};b.prototype.intersectsRectangle=function(b){var d=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var f=null,c=0;c<this.line.length&&!d;c++){var e=this.line[c];null!=e&&null!=f&&(d=mxUtils.rectangleIntersectsSegment(b,
-f,e));f=e}return d};mxCellRenderer.registerShape("tableLine",b);mxUtils.extend(c,mxSwimlane);c.prototype.getLabelBounds=function(b){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};c.prototype.paintVertexShape=function(b,d,f,c,e){0==this.getTitleSize()?mxRectangleShape.prototype.paintBackground.apply(this,arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),b.translate(-d,-f));this.paintForeground(b,
-d,f,c,e)};c.prototype.paintForeground=function(b,d,f,c,e){if(null!=this.state){var B=this.flipH,g=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH)var l=B,B=g,g=l;b.rotate(-this.getShapeRotation(),B,g,d+c/2,f+e/2);s=this.scale;d=this.bounds.x/s;f=this.bounds.y/s;c=this.bounds.width/s;e=this.bounds.height/s;this.paintTableForeground(b,d,f,c,e)}};c.prototype.paintTableForeground=function(d,f,c,e,g){e=this.state.view.graph.getTableLines(this.state.cell,
-"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(g=0;g<e.length;g++)b.prototype.paintTableLine(d,e[g],f,c)};mxCellRenderer.registerShape("table",c);mxUtils.extend(e,mxCylinder);e.prototype.size=20;e.prototype.darkOpacity=0;e.prototype.darkOpacity2=0;e.prototype.paintVertexShape=function(b,d,f,c,e){var B=Math.max(0,Math.min(c,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"darkOpacity",this.darkOpacity)))),l=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));b.translate(d,f);b.begin();b.moveTo(0,0);b.lineTo(c-B,0);b.lineTo(c,B);b.lineTo(c,e);b.lineTo(B,e);b.lineTo(0,e-B);b.lineTo(0,0);b.close();b.end();b.fillAndStroke();this.outline||(b.setShadow(!1),0!=g&&(b.setFillAlpha(Math.abs(g)),b.setFillColor(0>g?"#FFFFFF":"#000000"),b.begin(),b.moveTo(0,0),b.lineTo(c-B,0),b.lineTo(c,B),b.lineTo(B,B),b.close(),b.fill()),0!=l&&
-(b.setFillAlpha(Math.abs(l)),b.setFillColor(0>l?"#FFFFFF":"#000000"),b.begin(),b.moveTo(0,0),b.lineTo(B,B),b.lineTo(B,e),b.lineTo(0,e-B),b.close(),b.fill()),b.begin(),b.moveTo(B,e),b.lineTo(B,B),b.lineTo(0,0),b.moveTo(B,B),b.lineTo(c,B),b.end(),b.stroke())};e.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)?(b=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(b,b,0,0)):null};mxCellRenderer.registerShape("cube",e);var Ua=Math.tan(mxUtils.toRadians(30)),
-Ia=(.5-Ua)/2;mxCellRenderer.registerShape("isoRectangle",g);mxUtils.extend(k,mxCylinder);k.prototype.size=6;k.prototype.paintVertexShape=function(b,d,f,c,e){b.setFillColor(this.stroke);var B=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;b.ellipse(d+.5*(c-B),f+.5*(e-B),B,B);b.fill();b.setFillColor(mxConstants.NONE);b.rect(d,f,c,e);b.fill()};mxCellRenderer.registerShape("waypoint",k);mxUtils.extend(g,mxActor);g.prototype.size=20;g.prototype.redrawPath=function(b,
-d,f,c,e){d=Math.min(c,e/Ua);b.translate((c-d)/2,(e-d)/2+d/4);b.moveTo(0,.25*d);b.lineTo(.5*d,d*Ia);b.lineTo(d,.25*d);b.lineTo(.5*d,(.5-Ia)*d);b.lineTo(0,.25*d);b.close();b.end()};mxCellRenderer.registerShape("isoRectangle",g);mxUtils.extend(p,mxCylinder);p.prototype.size=20;p.prototype.redrawPath=function(b,d,f,c,e,g){d=Math.min(c,e/(.5+Ua));g?(b.moveTo(0,.25*d),b.lineTo(.5*d,(.5-Ia)*d),b.lineTo(d,.25*d),b.moveTo(.5*d,(.5-Ia)*d),b.lineTo(.5*d,(1-Ia)*d)):(b.translate((c-d)/2,(e-d)/2),b.moveTo(0,.25*
-d),b.lineTo(.5*d,d*Ia),b.lineTo(d,.25*d),b.lineTo(d,.75*d),b.lineTo(.5*d,(1-Ia)*d),b.lineTo(0,.75*d),b.close());b.end()};mxCellRenderer.registerShape("isoCube",p);mxUtils.extend(t,mxCylinder);t.prototype.redrawPath=function(b,d,f,c,e,g){d=Math.min(e/2,Math.round(e/8)+this.strokewidth-1);if(g&&null!=this.fill||!g&&null==this.fill)b.moveTo(0,d),b.curveTo(0,2*d,c,2*d,c,d),g||(b.stroke(),b.begin()),b.translate(0,d/2),b.moveTo(0,d),b.curveTo(0,2*d,c,2*d,c,d),g||(b.stroke(),b.begin()),b.translate(0,d/2),
-b.moveTo(0,d),b.curveTo(0,2*d,c,2*d,c,d),g||(b.stroke(),b.begin()),b.translate(0,-d);g||(b.moveTo(0,d),b.curveTo(0,-d/3,c,-d/3,c,d),b.lineTo(c,e-d),b.curveTo(c,e+d/3,0,e+d/3,0,e-d),b.close())};t.prototype.getLabelMargins=function(b){return new mxRectangle(0,2.5*Math.min(b.height/2,Math.round(b.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",t);mxUtils.extend(d,mxCylinder);d.prototype.size=30;d.prototype.darkOpacity=0;d.prototype.paintVertexShape=function(b,d,f,c,e){var B=
-Math.max(0,Math.min(c,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));b.translate(d,f);b.begin();b.moveTo(0,0);b.lineTo(c-B,0);b.lineTo(c,B);b.lineTo(c,e);b.lineTo(0,e);b.lineTo(0,0);b.close();b.end();b.fillAndStroke();this.outline||(b.setShadow(!1),0!=g&&(b.setFillAlpha(Math.abs(g)),b.setFillColor(0>g?"#FFFFFF":"#000000"),b.begin(),b.moveTo(c-B,0),b.lineTo(c-B,B),b.lineTo(c,
-B),b.close(),b.fill()),b.begin(),b.moveTo(c-B,0),b.lineTo(c-B,B),b.lineTo(c,B),b.end(),b.stroke())};mxCellRenderer.registerShape("note",d);mxUtils.extend(f,d);mxCellRenderer.registerShape("note2",f);f.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,d*this.scale),0,0)}return null};mxUtils.extend(l,mxShape);l.prototype.isoAngle=15;l.prototype.paintVertexShape=function(b,
-d,f,c,e){var B=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,B=Math.min(c*Math.tan(B),.5*e);b.translate(d,f);b.begin();b.moveTo(.5*c,0);b.lineTo(c,B);b.lineTo(c,e-B);b.lineTo(.5*c,e);b.lineTo(0,e-B);b.lineTo(0,B);b.close();b.fillAndStroke();b.setShadow(!1);b.begin();b.moveTo(0,B);b.lineTo(.5*c,2*B);b.lineTo(c,B);b.moveTo(.5*c,2*B);b.lineTo(.5*c,e);b.stroke()};mxCellRenderer.registerShape("isoCube2",l);mxUtils.extend(q,mxShape);q.prototype.size=
-15;q.prototype.paintVertexShape=function(b,d,f,c,e){var B=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.translate(d,f);0==B?(b.rect(0,0,c,e),b.fillAndStroke()):(b.begin(),b.moveTo(0,B),b.arcTo(.5*c,B,0,0,1,.5*c,0),b.arcTo(.5*c,B,0,0,1,c,B),b.lineTo(c,e-B),b.arcTo(.5*c,B,0,0,1,.5*c,e),b.arcTo(.5*c,B,0,0,1,0,e-B),b.close(),b.fillAndStroke(),b.setShadow(!1),b.begin(),b.moveTo(c,B),b.arcTo(.5*c,B,0,0,1,.5*c,2*B),b.arcTo(.5*c,B,0,0,1,0,B),b.stroke())};mxCellRenderer.registerShape("cylinder2",
-q);mxUtils.extend(m,mxCylinder);m.prototype.size=15;m.prototype.paintVertexShape=function(b,d,f,c,e){var B=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"lid",!0);b.translate(d,f);0==B?(b.rect(0,0,c,e),b.fillAndStroke()):(b.begin(),g?(b.moveTo(0,B),b.arcTo(.5*c,B,0,0,1,.5*c,0),b.arcTo(.5*c,B,0,0,1,c,B)):(b.moveTo(0,0),b.arcTo(.5*c,B,0,0,0,.5*c,B),b.arcTo(.5*c,B,0,0,0,c,0)),b.lineTo(c,e-B),b.arcTo(.5*c,B,0,0,1,.5*c,e),b.arcTo(.5*
-c,B,0,0,1,0,e-B),b.close(),b.fillAndStroke(),b.setShadow(!1),g&&(b.begin(),b.moveTo(c,B),b.arcTo(.5*c,B,0,0,1,.5*c,2*B),b.arcTo(.5*c,B,0,0,1,0,B),b.stroke()))};mxCellRenderer.registerShape("cylinder3",m);mxUtils.extend(n,mxActor);n.prototype.redrawPath=function(b,d,f,c,e){b.moveTo(0,0);b.quadTo(c/2,.5*e,c,0);b.quadTo(.5*c,e/2,c,e);b.quadTo(c/2,.5*e,0,e);b.quadTo(.5*c,e/2,0,0);b.end()};mxCellRenderer.registerShape("switch",n);mxUtils.extend(u,mxCylinder);u.prototype.tabWidth=60;u.prototype.tabHeight=
-20;u.prototype.tabPosition="right";u.prototype.arcSize=.1;u.prototype.paintVertexShape=function(b,d,f,c,e){b.translate(d,f);d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var B=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),g=mxUtils.getValue(this.style,"rounded",!1),l=mxUtils.getValue(this.style,"absoluteArcSize",!1),k=parseFloat(mxUtils.getValue(this.style,
-"arcSize",this.arcSize));l||(k*=Math.min(c,e));k=Math.min(k,.5*c,.5*(e-f));d=Math.max(d,k);d=Math.min(c-k,d);g||(k=0);b.begin();"left"==B?(b.moveTo(Math.max(k,0),f),b.lineTo(Math.max(k,0),0),b.lineTo(d,0),b.lineTo(d,f)):(b.moveTo(c-d,f),b.lineTo(c-d,0),b.lineTo(c-Math.max(k,0),0),b.lineTo(c-Math.max(k,0),f));g?(b.moveTo(0,k+f),b.arcTo(k,k,0,0,1,k,f),b.lineTo(c-k,f),b.arcTo(k,k,0,0,1,c,k+f),b.lineTo(c,e-k),b.arcTo(k,k,0,0,1,c-k,e),b.lineTo(k,e),b.arcTo(k,k,0,0,1,0,e-k)):(b.moveTo(0,f),b.lineTo(c,f),
-b.lineTo(c,e),b.lineTo(0,e));b.close();b.fillAndStroke();b.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(b.begin(),b.moveTo(c-30,f+20),b.lineTo(c-20,f+10),b.lineTo(c-10,f+20),b.close(),b.stroke())};mxCellRenderer.registerShape("folder",u);u.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var f=mxUtils.getValue(this.style,
-"tabWidth",15)*this.scale,d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale,c=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),B=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(B*=Math.min(b.width,b.height));B=Math.min(B,.5*b.width,.5*(b.height-d));c||(B=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(B,0,Math.min(b.width,b.width-f),Math.min(b.height,b.height-d)):new mxRectangle(Math.min(b.width,
-b.width-f),0,B,Math.min(b.height,b.height-d))}return new mxRectangle(0,Math.min(b.height,d),0,0)}return null};mxUtils.extend(v,mxCylinder);v.prototype.arcSize=.1;v.prototype.paintVertexShape=function(b,d,f,c,e){b.translate(d,f);var B=mxUtils.getValue(this.style,"rounded",!1),g=mxUtils.getValue(this.style,"absoluteArcSize",!1);d=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));f=mxUtils.getValue(this.style,"umlStateConnection",null);g||(d*=Math.min(c,e));d=Math.min(d,.5*c,.5*e);B||(d=
-0);B=0;null!=f&&(B=10);b.begin();b.moveTo(B,d);b.arcTo(d,d,0,0,1,B+d,0);b.lineTo(c-d,0);b.arcTo(d,d,0,0,1,c,d);b.lineTo(c,e-d);b.arcTo(d,d,0,0,1,c-d,e);b.lineTo(B+d,e);b.arcTo(d,d,0,0,1,B,e-d);b.close();b.fillAndStroke();b.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(b.roundrect(c-40,e-20,10,10,3,3),b.stroke(),b.roundrect(c-20,e-20,10,10,3,3),b.stroke(),b.begin(),b.moveTo(c-30,e-15),b.lineTo(c-20,e-15),b.stroke());"connPointRefEntry"==f?(b.ellipse(0,.5*e-10,
-20,20),b.fillAndStroke()):"connPointRefExit"==f&&(b.ellipse(0,.5*e-10,20,20),b.fillAndStroke(),b.begin(),b.moveTo(5,.5*e-5),b.lineTo(15,.5*e+5),b.moveTo(15,.5*e-5),b.lineTo(5,.5*e+5),b.stroke())};v.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};mxCellRenderer.registerShape("umlState",v);mxUtils.extend(y,mxActor);y.prototype.size=30;y.prototype.isRoundable=
-function(){return!0};y.prototype.redrawPath=function(b,d,f,c,e){d=Math.max(0,Math.min(c,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c,e),new mxPoint(0,e),new mxPoint(0,d)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("card",y);mxUtils.extend(x,mxActor);x.prototype.size=.4;x.prototype.redrawPath=function(b,d,f,
-c,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(0,d/2);b.quadTo(c/4,1.4*d,c/2,d/2);b.quadTo(3*c/4,d*(1-1.4),c,d/2);b.lineTo(c,e-d/2);b.quadTo(3*c/4,e-1.4*d,c/2,e-d/2);b.quadTo(c/4,e-d*(1-1.4),0,e-d/2);b.lineTo(0,d/2);b.close();b.end()};x.prototype.getLabelBounds=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",this.size),f=b.width,c=b.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||
-this.direction==mxConstants.DIRECTION_WEST)return d*=c,new mxRectangle(b.x,b.y+d,f,c-2*d);d*=f;return new mxRectangle(b.x+d,b.y,f-2*d,c)}return b};mxCellRenderer.registerShape("tape",x);mxUtils.extend(F,mxActor);F.prototype.size=.3;F.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*b.height):null};F.prototype.redrawPath=function(b,d,f,c,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"size",this.size))));b.moveTo(0,0);b.lineTo(c,0);b.lineTo(c,e-d/2);b.quadTo(3*c/4,e-1.4*d,c/2,e-d/2);b.quadTo(c/4,e-d*(1-1.4),0,e-d/2);b.lineTo(0,d/2);b.close();b.end()};mxCellRenderer.registerShape("document",F);var ab=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(b,d,f,c){var e=mxUtils.getValue(this.style,"size");return null!=e?c*Math.max(0,Math.min(1,e)):ab.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,
+function za(){mxRhombus.call(this)}function Ba(){mxEllipse.call(this)}function Ea(){mxEllipse.call(this)}function Ja(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function Ka(){mxActor.call(this)}function Ca(){mxActor.call(this)}function wa(){mxActor.call(this)}function Y(b,d,g,c){mxShape.call(this);this.bounds=b;this.fill=d;this.stroke=g;this.strokewidth=null!=c?c:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Fa(){mxConnector.call(this)}
+function Na(b,d,g,c,e,f,l,k,m,q){l+=m;var A=c.clone();c.x-=e*(2*l+m);c.y-=f*(2*l+m);e*=l+m;f*=l+m;return function(){b.ellipse(A.x-e-l,A.y-f-l,2*l,2*l);q?b.fillAndStroke():b.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var b=null;if(null!=this.line)for(var d=0;d<this.line.length;d++){var g=this.line[d];null!=g&&(g=new mxRectangle(g.x,g.y,this.strokewidth,this.strokewidth),null==b?b=g:b.add(g))}this.bounds=null!=b?b:new mxRectangle};b.prototype.paintVertexShape=function(b,
+d,g,c,e){this.paintTableLine(b,this.line,0,0)};b.prototype.paintTableLine=function(b,d,g,c){if(null!=d){var e=null;b.begin();for(var A=0;A<d.length;A++){var f=d[A];null!=f&&(null==e?b.moveTo(f.x+g,f.y+c):null!=e&&b.lineTo(f.x+g,f.y+c));e=f}b.end();b.stroke()}};b.prototype.intersectsRectangle=function(b){var d=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var g=null,c=0;c<this.line.length&&!d;c++){var e=this.line[c];null!=e&&null!=g&&(d=mxUtils.rectangleIntersectsSegment(b,
+g,e));g=e}return d};mxCellRenderer.registerShape("tableLine",b);mxUtils.extend(c,mxSwimlane);c.prototype.getLabelBounds=function(b){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};c.prototype.paintVertexShape=function(b,d,g,c,e){0==this.getTitleSize()?mxRectangleShape.prototype.paintBackground.apply(this,arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),b.translate(-d,-g));this.paintForeground(b,
+d,g,c,e)};c.prototype.paintForeground=function(b,d,g,c,e){if(null!=this.state){var A=this.flipH,f=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH)var l=A,A=f,f=l;b.rotate(-this.getShapeRotation(),A,f,d+c/2,g+e/2);s=this.scale;d=this.bounds.x/s;g=this.bounds.y/s;c=this.bounds.width/s;e=this.bounds.height/s;this.paintTableForeground(b,d,g,c,e)}};c.prototype.paintTableForeground=function(d,g,c,e,f){e=this.state.view.graph.getTableLines(this.state.cell,
+"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(f=0;f<e.length;f++)b.prototype.paintTableLine(d,e[f],g,c)};mxCellRenderer.registerShape("table",c);mxUtils.extend(e,mxCylinder);e.prototype.size=20;e.prototype.darkOpacity=0;e.prototype.darkOpacity2=0;e.prototype.paintVertexShape=function(b,d,g,c,e){var A=Math.max(0,Math.min(c,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),f=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"darkOpacity",this.darkOpacity)))),l=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));b.translate(d,g);b.begin();b.moveTo(0,0);b.lineTo(c-A,0);b.lineTo(c,A);b.lineTo(c,e);b.lineTo(A,e);b.lineTo(0,e-A);b.lineTo(0,0);b.close();b.end();b.fillAndStroke();this.outline||(b.setShadow(!1),0!=f&&(b.setFillAlpha(Math.abs(f)),b.setFillColor(0>f?"#FFFFFF":"#000000"),b.begin(),b.moveTo(0,0),b.lineTo(c-A,0),b.lineTo(c,A),b.lineTo(A,A),b.close(),b.fill()),0!=l&&
+(b.setFillAlpha(Math.abs(l)),b.setFillColor(0>l?"#FFFFFF":"#000000"),b.begin(),b.moveTo(0,0),b.lineTo(A,A),b.lineTo(A,e),b.lineTo(0,e-A),b.close(),b.fill()),b.begin(),b.moveTo(A,e),b.lineTo(A,A),b.lineTo(0,0),b.moveTo(A,A),b.lineTo(c,A),b.end(),b.stroke())};e.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)?(b=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(b,b,0,0)):null};mxCellRenderer.registerShape("cube",e);var Ua=Math.tan(mxUtils.toRadians(30)),
+Ia=(.5-Ua)/2;mxCellRenderer.registerShape("isoRectangle",f);mxUtils.extend(k,mxCylinder);k.prototype.size=6;k.prototype.paintVertexShape=function(b,d,g,c,e){b.setFillColor(this.stroke);var A=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;b.ellipse(d+.5*(c-A),g+.5*(e-A),A,A);b.fill();b.setFillColor(mxConstants.NONE);b.rect(d,g,c,e);b.fill()};mxCellRenderer.registerShape("waypoint",k);mxUtils.extend(f,mxActor);f.prototype.size=20;f.prototype.redrawPath=function(b,
+d,g,c,e){d=Math.min(c,e/Ua);b.translate((c-d)/2,(e-d)/2+d/4);b.moveTo(0,.25*d);b.lineTo(.5*d,d*Ia);b.lineTo(d,.25*d);b.lineTo(.5*d,(.5-Ia)*d);b.lineTo(0,.25*d);b.close();b.end()};mxCellRenderer.registerShape("isoRectangle",f);mxUtils.extend(p,mxCylinder);p.prototype.size=20;p.prototype.redrawPath=function(b,d,g,c,e,f){d=Math.min(c,e/(.5+Ua));f?(b.moveTo(0,.25*d),b.lineTo(.5*d,(.5-Ia)*d),b.lineTo(d,.25*d),b.moveTo(.5*d,(.5-Ia)*d),b.lineTo(.5*d,(1-Ia)*d)):(b.translate((c-d)/2,(e-d)/2),b.moveTo(0,.25*
+d),b.lineTo(.5*d,d*Ia),b.lineTo(d,.25*d),b.lineTo(d,.75*d),b.lineTo(.5*d,(1-Ia)*d),b.lineTo(0,.75*d),b.close());b.end()};mxCellRenderer.registerShape("isoCube",p);mxUtils.extend(t,mxCylinder);t.prototype.redrawPath=function(b,d,g,c,e,f){d=Math.min(e/2,Math.round(e/8)+this.strokewidth-1);if(f&&null!=this.fill||!f&&null==this.fill)b.moveTo(0,d),b.curveTo(0,2*d,c,2*d,c,d),f||(b.stroke(),b.begin()),b.translate(0,d/2),b.moveTo(0,d),b.curveTo(0,2*d,c,2*d,c,d),f||(b.stroke(),b.begin()),b.translate(0,d/2),
+b.moveTo(0,d),b.curveTo(0,2*d,c,2*d,c,d),f||(b.stroke(),b.begin()),b.translate(0,-d);f||(b.moveTo(0,d),b.curveTo(0,-d/3,c,-d/3,c,d),b.lineTo(c,e-d),b.curveTo(c,e+d/3,0,e+d/3,0,e-d),b.close())};t.prototype.getLabelMargins=function(b){return new mxRectangle(0,2.5*Math.min(b.height/2,Math.round(b.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",t);mxUtils.extend(d,mxCylinder);d.prototype.size=30;d.prototype.darkOpacity=0;d.prototype.paintVertexShape=function(b,d,g,c,e){var A=
+Math.max(0,Math.min(c,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),f=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));b.translate(d,g);b.begin();b.moveTo(0,0);b.lineTo(c-A,0);b.lineTo(c,A);b.lineTo(c,e);b.lineTo(0,e);b.lineTo(0,0);b.close();b.end();b.fillAndStroke();this.outline||(b.setShadow(!1),0!=f&&(b.setFillAlpha(Math.abs(f)),b.setFillColor(0>f?"#FFFFFF":"#000000"),b.begin(),b.moveTo(c-A,0),b.lineTo(c-A,A),b.lineTo(c,
+A),b.close(),b.fill()),b.begin(),b.moveTo(c-A,0),b.lineTo(c-A,A),b.lineTo(c,A),b.end(),b.stroke())};mxCellRenderer.registerShape("note",d);mxUtils.extend(g,d);mxCellRenderer.registerShape("note2",g);g.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,d*this.scale),0,0)}return null};mxUtils.extend(l,mxShape);l.prototype.isoAngle=15;l.prototype.paintVertexShape=function(b,
+d,g,c,e){var A=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,A=Math.min(c*Math.tan(A),.5*e);b.translate(d,g);b.begin();b.moveTo(.5*c,0);b.lineTo(c,A);b.lineTo(c,e-A);b.lineTo(.5*c,e);b.lineTo(0,e-A);b.lineTo(0,A);b.close();b.fillAndStroke();b.setShadow(!1);b.begin();b.moveTo(0,A);b.lineTo(.5*c,2*A);b.lineTo(c,A);b.moveTo(.5*c,2*A);b.lineTo(.5*c,e);b.stroke()};mxCellRenderer.registerShape("isoCube2",l);mxUtils.extend(q,mxShape);q.prototype.size=
+15;q.prototype.paintVertexShape=function(b,d,g,c,e){var A=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.translate(d,g);0==A?(b.rect(0,0,c,e),b.fillAndStroke()):(b.begin(),b.moveTo(0,A),b.arcTo(.5*c,A,0,0,1,.5*c,0),b.arcTo(.5*c,A,0,0,1,c,A),b.lineTo(c,e-A),b.arcTo(.5*c,A,0,0,1,.5*c,e),b.arcTo(.5*c,A,0,0,1,0,e-A),b.close(),b.fillAndStroke(),b.setShadow(!1),b.begin(),b.moveTo(c,A),b.arcTo(.5*c,A,0,0,1,.5*c,2*A),b.arcTo(.5*c,A,0,0,1,0,A),b.stroke())};mxCellRenderer.registerShape("cylinder2",
+q);mxUtils.extend(m,mxCylinder);m.prototype.size=15;m.prototype.paintVertexShape=function(b,d,g,c,e){var A=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=mxUtils.getValue(this.style,"lid",!0);b.translate(d,g);0==A?(b.rect(0,0,c,e),b.fillAndStroke()):(b.begin(),f?(b.moveTo(0,A),b.arcTo(.5*c,A,0,0,1,.5*c,0),b.arcTo(.5*c,A,0,0,1,c,A)):(b.moveTo(0,0),b.arcTo(.5*c,A,0,0,0,.5*c,A),b.arcTo(.5*c,A,0,0,0,c,0)),b.lineTo(c,e-A),b.arcTo(.5*c,A,0,0,1,.5*c,e),b.arcTo(.5*
+c,A,0,0,1,0,e-A),b.close(),b.fillAndStroke(),b.setShadow(!1),f&&(b.begin(),b.moveTo(c,A),b.arcTo(.5*c,A,0,0,1,.5*c,2*A),b.arcTo(.5*c,A,0,0,1,0,A),b.stroke()))};mxCellRenderer.registerShape("cylinder3",m);mxUtils.extend(n,mxActor);n.prototype.redrawPath=function(b,d,g,c,e){b.moveTo(0,0);b.quadTo(c/2,.5*e,c,0);b.quadTo(.5*c,e/2,c,e);b.quadTo(c/2,.5*e,0,e);b.quadTo(.5*c,e/2,0,0);b.end()};mxCellRenderer.registerShape("switch",n);mxUtils.extend(u,mxCylinder);u.prototype.tabWidth=60;u.prototype.tabHeight=
+20;u.prototype.tabPosition="right";u.prototype.arcSize=.1;u.prototype.paintVertexShape=function(b,d,g,c,e){b.translate(d,g);d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var A=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),f=mxUtils.getValue(this.style,"rounded",!1),l=mxUtils.getValue(this.style,"absoluteArcSize",!1),k=parseFloat(mxUtils.getValue(this.style,
+"arcSize",this.arcSize));l||(k*=Math.min(c,e));k=Math.min(k,.5*c,.5*(e-g));d=Math.max(d,k);d=Math.min(c-k,d);f||(k=0);b.begin();"left"==A?(b.moveTo(Math.max(k,0),g),b.lineTo(Math.max(k,0),0),b.lineTo(d,0),b.lineTo(d,g)):(b.moveTo(c-d,g),b.lineTo(c-d,0),b.lineTo(c-Math.max(k,0),0),b.lineTo(c-Math.max(k,0),g));f?(b.moveTo(0,k+g),b.arcTo(k,k,0,0,1,k,g),b.lineTo(c-k,g),b.arcTo(k,k,0,0,1,c,k+g),b.lineTo(c,e-k),b.arcTo(k,k,0,0,1,c-k,e),b.lineTo(k,e),b.arcTo(k,k,0,0,1,0,e-k)):(b.moveTo(0,g),b.lineTo(c,g),
+b.lineTo(c,e),b.lineTo(0,e));b.close();b.fillAndStroke();b.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(b.begin(),b.moveTo(c-30,g+20),b.lineTo(c-20,g+10),b.lineTo(c-10,g+20),b.close(),b.stroke())};mxCellRenderer.registerShape("folder",u);u.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var g=mxUtils.getValue(this.style,
+"tabWidth",15)*this.scale,d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale,c=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(A*=Math.min(b.width,b.height));A=Math.min(A,.5*b.width,.5*(b.height-d));c||(A=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(b.width,b.width-g),Math.min(b.height,b.height-d)):new mxRectangle(Math.min(b.width,
+b.width-g),0,A,Math.min(b.height,b.height-d))}return new mxRectangle(0,Math.min(b.height,d),0,0)}return null};mxUtils.extend(v,mxCylinder);v.prototype.arcSize=.1;v.prototype.paintVertexShape=function(b,d,g,c,e){b.translate(d,g);var A=mxUtils.getValue(this.style,"rounded",!1),f=mxUtils.getValue(this.style,"absoluteArcSize",!1);d=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));g=mxUtils.getValue(this.style,"umlStateConnection",null);f||(d*=Math.min(c,e));d=Math.min(d,.5*c,.5*e);A||(d=
+0);A=0;null!=g&&(A=10);b.begin();b.moveTo(A,d);b.arcTo(d,d,0,0,1,A+d,0);b.lineTo(c-d,0);b.arcTo(d,d,0,0,1,c,d);b.lineTo(c,e-d);b.arcTo(d,d,0,0,1,c-d,e);b.lineTo(A+d,e);b.arcTo(d,d,0,0,1,A,e-d);b.close();b.fillAndStroke();b.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(b.roundrect(c-40,e-20,10,10,3,3),b.stroke(),b.roundrect(c-20,e-20,10,10,3,3),b.stroke(),b.begin(),b.moveTo(c-30,e-15),b.lineTo(c-20,e-15),b.stroke());"connPointRefEntry"==g?(b.ellipse(0,.5*e-10,
+20,20),b.fillAndStroke()):"connPointRefExit"==g&&(b.ellipse(0,.5*e-10,20,20),b.fillAndStroke(),b.begin(),b.moveTo(5,.5*e-5),b.lineTo(15,.5*e+5),b.moveTo(15,.5*e-5),b.lineTo(5,.5*e+5),b.stroke())};v.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};mxCellRenderer.registerShape("umlState",v);mxUtils.extend(y,mxActor);y.prototype.size=30;y.prototype.isRoundable=
+function(){return!0};y.prototype.redrawPath=function(b,d,g,c,e){d=Math.max(0,Math.min(c,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c,e),new mxPoint(0,e),new mxPoint(0,d)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("card",y);mxUtils.extend(x,mxActor);x.prototype.size=.4;x.prototype.redrawPath=function(b,d,g,
+c,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(0,d/2);b.quadTo(c/4,1.4*d,c/2,d/2);b.quadTo(3*c/4,d*(1-1.4),c,d/2);b.lineTo(c,e-d/2);b.quadTo(3*c/4,e-1.4*d,c/2,e-d/2);b.quadTo(c/4,e-d*(1-1.4),0,e-d/2);b.lineTo(0,d/2);b.close();b.end()};x.prototype.getLabelBounds=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",this.size),g=b.width,c=b.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||
+this.direction==mxConstants.DIRECTION_WEST)return d*=c,new mxRectangle(b.x,b.y+d,g,c-2*d);d*=g;return new mxRectangle(b.x+d,b.y,g-2*d,c)}return b};mxCellRenderer.registerShape("tape",x);mxUtils.extend(F,mxActor);F.prototype.size=.3;F.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*b.height):null};F.prototype.redrawPath=function(b,d,g,c,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"size",this.size))));b.moveTo(0,0);b.lineTo(c,0);b.lineTo(c,e-d/2);b.quadTo(3*c/4,e-1.4*d,c/2,e-d/2);b.quadTo(c/4,e-d*(1-1.4),0,e-d/2);b.lineTo(0,d/2);b.close();b.end()};mxCellRenderer.registerShape("document",F);var ab=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(b,d,g,c){var e=mxUtils.getValue(this.style,"size");return null!=e?c*Math.max(0,Math.min(1,e)):ab.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var d=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,b.height*d),0,0)}return null};m.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(d/=2);return new mxRectangle(0,Math.min(b.height*this.scale,2*d*this.scale),0,Math.max(0,.3*d*this.scale))}return null};u.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,
-"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var f=mxUtils.getValue(this.style,"tabWidth",15)*this.scale,d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale,c=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),B=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(B*=Math.min(b.width,b.height));B=Math.min(B,.5*b.width,.5*(b.height-d));c||(B=0);return"left"==
-mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(B,0,Math.min(b.width,b.width-f),Math.min(b.height,b.height-d)):new mxRectangle(Math.min(b.width,b.width-f),0,B,Math.min(b.height,b.height-d))}return new mxRectangle(0,Math.min(b.height,d),0,0)}return null};v.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};f.prototype.getLabelMargins=
-function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,d*this.scale),0,Math.max(0,d*this.scale))}return null};mxUtils.extend(H,mxActor);H.prototype.size=.2;H.prototype.fixedSize=20;H.prototype.isRoundable=function(){return!0};H.prototype.redrawPath=function(b,d,f,c,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):
-c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c-d,e)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("parallelogram",H);mxUtils.extend(z,mxActor);z.prototype.size=.2;z.prototype.fixedSize=20;z.prototype.isRoundable=function(){return!0};z.prototype.redrawPath=function(b,d,f,c,e){d="0"!=
-mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,e)],this.isRounded,f,!0)};mxCellRenderer.registerShape("trapezoid",z);mxUtils.extend(D,mxActor);D.prototype.size=
-.5;D.prototype.redrawPath=function(b,d,f,c,e){b.setFillColor(null);d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(c,0),new mxPoint(d,0),new mxPoint(d,e/2),new mxPoint(0,e/2),new mxPoint(d,e/2),new mxPoint(d,e),new mxPoint(c,e)],this.isRounded,f,!1);b.end()};mxCellRenderer.registerShape("curlyBracket",D);mxUtils.extend(L,mxActor);L.prototype.redrawPath=
-function(b,d,f,c,e){b.setStrokeWidth(1);b.setFillColor(this.stroke);d=c/5;b.rect(0,0,d,e);b.fillAndStroke();b.rect(2*d,0,d,e);b.fillAndStroke();b.rect(4*d,0,d,e);b.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",L);E.prototype.moveTo=function(b,d){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d;this.firstX=b;this.firstY=d};E.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,
-arguments));this.originalClose.apply(this.canvas,arguments)};E.prototype.quadTo=function(b,d,f,c){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=c};E.prototype.curveTo=function(b,d,f,c,e,g){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=g};E.prototype.arcTo=function(b,d,f,c,e,g,l){this.originalArcTo.apply(this.canvas,arguments);this.lastX=g;this.lastY=l};E.prototype.lineTo=function(b,d){if(null!=this.lastX&&null!=this.lastY){var f=function(b){return"number"===
-typeof b?b?0>b?-1:1:b===b?0:NaN:NaN},c=Math.abs(b-this.lastX),e=Math.abs(d-this.lastY),B=Math.sqrt(c*c+e*e);if(2>B){this.originalLineTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d;return}var g=Math.round(B/10),l=this.defaultVariation;5>g&&(g=5,l/=3);for(var k=f(b-this.lastX)*c/g,f=f(d-this.lastY)*e/g,c=c/B,e=e/B,B=0;B<g;B++){var m=(Math.random()-.5)*l;this.originalLineTo.call(this.canvas,k*B+this.lastX-m*e,f*B+this.lastY-m*c)}this.originalLineTo.call(this.canvas,b,d)}else this.originalLineTo.apply(this.canvas,
+"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var g=mxUtils.getValue(this.style,"tabWidth",15)*this.scale,d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale,c=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(A*=Math.min(b.width,b.height));A=Math.min(A,.5*b.width,.5*(b.height-d));c||(A=0);return"left"==
+mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(b.width,b.width-g),Math.min(b.height,b.height-d)):new mxRectangle(Math.min(b.width,b.width-g),0,A,Math.min(b.height,b.height-d))}return new mxRectangle(0,Math.min(b.height,d),0,0)}return null};v.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};g.prototype.getLabelMargins=
+function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,d*this.scale),0,Math.max(0,d*this.scale))}return null};mxUtils.extend(H,mxActor);H.prototype.size=.2;H.prototype.fixedSize=20;H.prototype.isRoundable=function(){return!0};H.prototype.redrawPath=function(b,d,g,c,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):
+c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c-d,e)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("parallelogram",H);mxUtils.extend(z,mxActor);z.prototype.size=.2;z.prototype.fixedSize=20;z.prototype.isRoundable=function(){return!0};z.prototype.redrawPath=function(b,d,g,c,e){d="0"!=
+mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,e)],this.isRounded,g,!0)};mxCellRenderer.registerShape("trapezoid",z);mxUtils.extend(D,mxActor);D.prototype.size=
+.5;D.prototype.redrawPath=function(b,d,g,c,e){b.setFillColor(null);d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(c,0),new mxPoint(d,0),new mxPoint(d,e/2),new mxPoint(0,e/2),new mxPoint(d,e/2),new mxPoint(d,e),new mxPoint(c,e)],this.isRounded,g,!1);b.end()};mxCellRenderer.registerShape("curlyBracket",D);mxUtils.extend(N,mxActor);N.prototype.redrawPath=
+function(b,d,g,c,e){b.setStrokeWidth(1);b.setFillColor(this.stroke);d=c/5;b.rect(0,0,d,e);b.fillAndStroke();b.rect(2*d,0,d,e);b.fillAndStroke();b.rect(4*d,0,d,e);b.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",N);E.prototype.moveTo=function(b,d){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d;this.firstX=b;this.firstY=d};E.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,
+arguments));this.originalClose.apply(this.canvas,arguments)};E.prototype.quadTo=function(b,d,g,c){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=g;this.lastY=c};E.prototype.curveTo=function(b,d,g,c,e,f){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=f};E.prototype.arcTo=function(b,d,g,c,e,f,l){this.originalArcTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=l};E.prototype.lineTo=function(b,d){if(null!=this.lastX&&null!=this.lastY){var g=function(b){return"number"===
+typeof b?b?0>b?-1:1:b===b?0:NaN:NaN},c=Math.abs(b-this.lastX),e=Math.abs(d-this.lastY),f=Math.sqrt(c*c+e*e);if(2>f){this.originalLineTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d;return}var A=Math.round(f/10),l=this.defaultVariation;5>A&&(A=5,l/=3);for(var k=g(b-this.lastX)*c/A,g=g(d-this.lastY)*e/A,c=c/f,e=e/f,f=0;f<A;f++){var m=(Math.random()-.5)*l;this.originalLineTo.call(this.canvas,k*f+this.lastX-m*e,g*f+this.lastY-m*c)}this.originalLineTo.call(this.canvas,b,d)}else this.originalLineTo.apply(this.canvas,
arguments);this.lastX=b;this.lastY=d};E.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var bb=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(b){bb.apply(this,arguments);null==b.handJiggle&&(b.handJiggle=this.createHandJiggle(b))};
var cb=mxShape.prototype.afterPaint;mxShape.prototype.afterPaint=function(b){cb.apply(this,arguments);null!=b.handJiggle&&(b.handJiggle.destroy(),delete b.handJiggle)};mxShape.prototype.createComicCanvas=function(b){return new E(b,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(b)};mxRhombus.prototype.defaultJiggle=2;var db=mxRectangleShape.prototype.isHtmlAllowed;
-mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&db.apply(this,arguments)};var gb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(b,d,f,c,e){if(null==b.handJiggle||b.handJiggle.constructor!=E)gb.apply(this,arguments);else{var g=!0;null!=this.style&&(g="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
-"1"));if(g||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)g||null!=this.fill&&this.fill!=mxConstants.NONE||(b.pointerEvents=!1),b.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?g=Math.min(c/2,Math.min(e/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.min(c*
-g,e*g)),b.moveTo(d+g,f),b.lineTo(d+c-g,f),b.quadTo(d+c,f,d+c,f+g),b.lineTo(d+c,f+e-g),b.quadTo(d+c,f+e,d+c-g,f+e),b.lineTo(d+g,f+e),b.quadTo(d,f+e,d,f+e-g),b.lineTo(d,f+g),b.quadTo(d,f,d+g,f)):(b.moveTo(d,f),b.lineTo(d+c,f),b.lineTo(d+c,f+e),b.lineTo(d,f+e),b.lineTo(d,f)),b.close(),b.end(),b.fillAndStroke()}};mxUtils.extend(J,mxRectangleShape);J.prototype.size=.1;J.prototype.fixedSize=!1;J.prototype.isHtmlAllowed=function(){return!1};J.prototype.getLabelBounds=function(b){if(mxUtils.getValue(this.state.style,
-mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var d=b.width,f=b.height;b=new mxRectangle(b.x,b.y,d,f);var c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,c=Math.max(c,Math.min(d*e,f*e));b.x+=Math.round(c);b.width-=Math.round(2*c)}return b};
-J.prototype.paintForeground=function(b,d,f,c,e){var g=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),B=parseFloat(mxUtils.getValue(this.style,"size",this.size)),B=g?Math.max(0,Math.min(c,B)):c*Math.max(0,Math.min(1,B));this.isRounded&&(g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,B=Math.max(B,Math.min(c*g,e*g)));B=Math.round(B);b.begin();b.moveTo(d+B,f);b.lineTo(d+B,f+e);b.moveTo(d+c-B,f);b.lineTo(d+c-B,f+e);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
-arguments)};mxCellRenderer.registerShape("process",J);mxCellRenderer.registerShape("process2",J);mxUtils.extend(C,mxRectangleShape);C.prototype.paintBackground=function(b,d,f,c,e){b.setFillColor(mxConstants.NONE);b.rect(d,f,c,e);b.fill()};C.prototype.paintForeground=function(b,d,f,c,e){};mxCellRenderer.registerShape("transparent",C);mxUtils.extend(K,mxHexagon);K.prototype.size=30;K.prototype.position=.5;K.prototype.position2=.5;K.prototype.base=20;K.prototype.getLabelMargins=function(){return new mxRectangle(0,
-0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};K.prototype.isRoundable=function(){return!0};K.prototype.redrawPath=function(b,d,f,c,e){d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),B=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
-this.position2)))),l=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e-f),new mxPoint(Math.min(c,g+l),e-f),new mxPoint(B,e),new mxPoint(Math.max(0,g),e-f),new mxPoint(0,e-f)],this.isRounded,d,!0,[4])};mxCellRenderer.registerShape("callout",K);mxUtils.extend(M,mxActor);M.prototype.size=.2;M.prototype.fixedSize=20;M.prototype.isRoundable=function(){return!0};M.prototype.redrawPath=function(b,d,f,c,e){d=
-"0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c-d,0),new mxPoint(c,e/2),new mxPoint(c-d,e),new mxPoint(0,e),new mxPoint(d,e/2)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("step",M);
-mxUtils.extend(aa,mxHexagon);aa.prototype.size=.25;aa.prototype.fixedSize=20;aa.prototype.isRoundable=function(){return!0};aa.prototype.redrawPath=function(b,d,f,c,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,
-0),new mxPoint(c-d,0),new mxPoint(c,.5*e),new mxPoint(c-d,e),new mxPoint(d,e),new mxPoint(0,.5*e)],this.isRounded,f,!0)};mxCellRenderer.registerShape("hexagon",aa);mxUtils.extend(N,mxRectangleShape);N.prototype.isHtmlAllowed=function(){return!1};N.prototype.paintForeground=function(b,d,f,c,e){var g=Math.min(c/5,e/5)+1;b.begin();b.moveTo(d+c/2,f+g);b.lineTo(d+c/2,f+e-g);b.moveTo(d+g,f+e/2);b.lineTo(d+c-g,f+e/2);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
-N);var Za=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};mxRhombus.prototype.paintVertexShape=function(b,d,f,c,e){Za.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var g=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
-0);d+=g;f+=g;c-=2*g;e-=2*g;0<c&&0<e&&(b.setShadow(!1),Za.apply(this,[b,d,f,c,e]))}};mxUtils.extend(O,mxRectangleShape);O.prototype.isHtmlAllowed=function(){return!1};O.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};O.prototype.paintForeground=function(b,d,f,c,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var g=
-Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=g;f+=g;c-=2*g;e-=2*g;0<c&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}b.setDashed(!1);var g=0,B;do{B=mxCellRenderer.defaultShapes[this.style["symbol"+g]];if(null!=B){var l=this.style["symbol"+g+"Align"],k=this.style["symbol"+g+"VerticalAlign"],m=this.style["symbol"+g+"Width"],q=this.style["symbol"+g+"Height"],n=this.style["symbol"+g+"Spacing"]||0,G=this.style["symbol"+g+"VSpacing"]||n,va=
-this.style["symbol"+g+"ArcSpacing"];null!=va&&(va*=this.getArcSize(c+this.strokewidth,e+this.strokewidth),n+=va,G+=va);var va=d,Da=f,va=l==mxConstants.ALIGN_CENTER?va+(c-m)/2:l==mxConstants.ALIGN_RIGHT?va+(c-m-n):va+n,Da=k==mxConstants.ALIGN_MIDDLE?Da+(e-q)/2:k==mxConstants.ALIGN_BOTTOM?Da+(e-q-G):Da+G;b.save();l=new B;l.style=this.style;B.prototype.paintVertexShape.call(l,b,va,Da,m,q);b.restore()}g++}while(null!=B)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
-O);mxUtils.extend(U,mxCylinder);U.prototype.redrawPath=function(b,d,f,c,e,g){g?(b.moveTo(0,0),b.lineTo(c/2,e/2),b.lineTo(c,0),b.end()):(b.moveTo(0,0),b.lineTo(c,0),b.lineTo(c,e),b.lineTo(0,e),b.close())};mxCellRenderer.registerShape("message",U);mxUtils.extend(G,mxShape);G.prototype.paintBackground=function(b,d,f,c,e){b.translate(d,f);b.ellipse(c/4,0,c/2,e/4);b.fillAndStroke();b.begin();b.moveTo(c/2,e/4);b.lineTo(c/2,2*e/3);b.moveTo(c/2,e/3);b.lineTo(0,e/3);b.moveTo(c/2,e/3);b.lineTo(c,e/3);b.moveTo(c/
-2,2*e/3);b.lineTo(0,e);b.moveTo(c/2,2*e/3);b.lineTo(c,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlActor",G);mxUtils.extend(I,mxShape);I.prototype.getLabelMargins=function(b){return new mxRectangle(b.width/6,0,0,0)};I.prototype.paintBackground=function(b,d,f,c,e){b.translate(d,f);b.begin();b.moveTo(0,e/4);b.lineTo(0,3*e/4);b.end();b.stroke();b.begin();b.moveTo(0,e/2);b.lineTo(c/6,e/2);b.end();b.stroke();b.ellipse(c/6,0,5*c/6,e);b.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
-I);mxUtils.extend(A,mxEllipse);A.prototype.paintVertexShape=function(b,d,f,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+c/8,f+e);b.lineTo(d+7*c/8,f+e);b.end();b.stroke()};mxCellRenderer.registerShape("umlEntity",A);mxUtils.extend(Y,mxShape);Y.prototype.paintVertexShape=function(b,d,f,c,e){b.translate(d,f);b.begin();b.moveTo(c,0);b.lineTo(0,e);b.moveTo(0,0);b.lineTo(c,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlDestroy",Y);mxUtils.extend(S,mxShape);
-S.prototype.getLabelBounds=function(b){return new mxRectangle(b.x,b.y+b.height/8,b.width,7*b.height/8)};S.prototype.paintBackground=function(b,d,f,c,e){b.translate(d,f);b.begin();b.moveTo(3*c/8,e/8*1.1);b.lineTo(5*c/8,0);b.end();b.stroke();b.ellipse(0,e/8,c,7*e/8);b.fillAndStroke()};S.prototype.paintForeground=function(b,d,f,c,e){b.begin();b.moveTo(3*c/8,e/8*1.1);b.lineTo(5*c/8,e/4);b.end();b.stroke()};mxCellRenderer.registerShape("umlControl",S);mxUtils.extend(Q,mxRectangleShape);Q.prototype.size=
-40;Q.prototype.isHtmlAllowed=function(){return!1};Q.prototype.getLabelBounds=function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(b.x,b.y,b.width,d)};Q.prototype.paintBackground=function(b,d,f,c,e){var g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"participant");null==B||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,b,d,
-f,c,g):(B=this.state.view.graph.cellRenderer.getShape(B),null!=B&&B!=Q&&(B=new B,B.apply(this.state),b.save(),B.paintVertexShape(b,d,f,c,g),b.restore()));g<e&&(b.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),b.begin(),b.moveTo(d+c/2,f+g),b.lineTo(d+c/2,f+e),b.end(),b.stroke())};Q.prototype.paintForeground=function(b,d,f,c,e){var g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,b,d,f,c,Math.min(e,
-g))};mxCellRenderer.registerShape("umlLifeline",Q);mxUtils.extend(V,mxShape);V.prototype.width=60;V.prototype.height=30;V.prototype.corner=10;V.prototype.getLabelMargins=function(b){return new mxRectangle(0,0,b.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),b.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};V.prototype.paintBackground=function(b,d,f,c,e){var g=this.corner,l=Math.min(c,Math.max(g,parseFloat(mxUtils.getValue(this.style,
-"width",this.width)))),B=Math.min(e,Math.max(1.5*g,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(b.setFillColor(k),b.rect(d,f,c,e),b.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(b,d,f,c,e),b.setGradient(this.fill,this.gradient,d,f,c,e,this.gradientDirection)):b.setFillColor(this.fill);b.begin();
-b.moveTo(d,f);b.lineTo(d+l,f);b.lineTo(d+l,f+Math.max(0,B-1.5*g));b.lineTo(d+Math.max(0,l-g),f+B);b.lineTo(d,f+B);b.close();b.fillAndStroke();b.begin();b.moveTo(d+l,f);b.lineTo(d+c,f);b.lineTo(d+c,f+e);b.lineTo(d,f+e);b.lineTo(d,f+B);b.stroke()};mxCellRenderer.registerShape("umlFrame",V);mxPerimeter.CenterPerimeter=function(b,d,f,c){return new mxPoint(b.getCenterX(),b.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(b,d,
-f,c){c=Q.prototype.size;null!=d&&(c=mxUtils.getValue(d.style,"size",c)*d.view.scale);d=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;f.x<b.getCenterX()&&(d=-1*(d+1));return new mxPoint(b.getCenterX()+d,Math.min(b.y+b.height,Math.max(b.y+c,f.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(b,d,f,c){c=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
-mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(b,d,f,c){c=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;null!=d.style.backboneSize&&(c+=parseFloat(d.style.backboneSize)*d.view.scale/2-1);if("south"==d.style[mxConstants.STYLE_DIRECTION]||"north"==d.style[mxConstants.STYLE_DIRECTION])return f.x<b.getCenterX()&&(c=-1*(c+1)),new mxPoint(b.getCenterX()+c,Math.min(b.y+b.height,Math.max(b.y,f.y)));f.y<b.getCenterY()&&(c=-1*(c+1));return new mxPoint(Math.min(b.x+
-b.width,Math.max(b.x,f.x)),b.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(b,d,f,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(b,new mxRectangle(0,0,0,Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(d.style,"size",K.prototype.size))*d.view.scale))),d.style),d,f,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(b,
-d,f,c){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),g=e?H.prototype.fixedSize:H.prototype.size;null!=d&&(g=mxUtils.getValue(d.style,"size",g));e&&(g*=d.view.scale);var l=b.x,B=b.y,k=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,g)):m*Math.max(0,Math.min(1,g)),B=[new mxPoint(l,B),new mxPoint(l+k,B+e),new mxPoint(l+
-k,B+m),new mxPoint(l,B+m-e),new mxPoint(l,B)]):(e=e?Math.max(0,Math.min(.5*k,g)):k*Math.max(0,Math.min(1,g)),B=[new mxPoint(l+e,B),new mxPoint(l+k,B),new mxPoint(l+k-e,B+m),new mxPoint(l,B+m),new mxPoint(l+e,B)]);m=b.getCenterX();b=b.getCenterY();b=new mxPoint(m,b);c&&(f.x<l||f.x>l+k?b.y=f.y:b.x=f.x);return mxUtils.getPerimeterPoint(B,b,f)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(b,d,f,c){var e="0"!=mxUtils.getValue(d.style,
-"fixedSize","0"),g=e?z.prototype.fixedSize:z.prototype.size;null!=d&&(g=mxUtils.getValue(d.style,"size",g));e&&(g*=d.view.scale);var l=b.x,B=b.y,k=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(.5*k,g)):k*Math.max(0,Math.min(1,g)),B=[new mxPoint(l+e,B),new mxPoint(l+k-e,B),new mxPoint(l+k,B+m),new mxPoint(l,B+m),new mxPoint(l+e,B)]):d==mxConstants.DIRECTION_WEST?
-(e=e?Math.max(0,Math.min(k,g)):k*Math.max(0,Math.min(1,g)),B=[new mxPoint(l,B),new mxPoint(l+k,B),new mxPoint(l+k-e,B+m),new mxPoint(l+e,B+m),new mxPoint(l,B)]):d==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(m,g)):m*Math.max(0,Math.min(1,g)),B=[new mxPoint(l,B+e),new mxPoint(l+k,B),new mxPoint(l+k,B+m),new mxPoint(l,B+m-e),new mxPoint(l,B+e)]):(e=e?Math.max(0,Math.min(m,g)):m*Math.max(0,Math.min(1,g)),B=[new mxPoint(l,B),new mxPoint(l+k,B+e),new mxPoint(l+k,B+m-e),new mxPoint(l,B+m),new mxPoint(l,
-B)]);m=b.getCenterX();b=b.getCenterY();b=new mxPoint(m,b);c&&(f.x<l||f.x>l+k?b.y=f.y:b.x=f.x);return mxUtils.getPerimeterPoint(B,b,f)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(b,d,f,c){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),g=e?M.prototype.fixedSize:M.prototype.size;null!=d&&(g=mxUtils.getValue(d.style,"size",g));e&&(g*=d.view.scale);var l=b.x,B=b.y,k=b.width,m=b.height,q=b.getCenterX();b=b.getCenterY();d=null!=
-d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(k,g)):k*Math.max(0,Math.min(1,g)),B=[new mxPoint(l,B),new mxPoint(l+k-e,B),new mxPoint(l+k,b),new mxPoint(l+k-e,B+m),new mxPoint(l,B+m),new mxPoint(l+e,b),new mxPoint(l,B)]):d==mxConstants.DIRECTION_WEST?(e=e?Math.max(0,Math.min(k,g)):k*Math.max(0,Math.min(1,g)),B=[new mxPoint(l+e,B),new mxPoint(l+k,B),new mxPoint(l+k-e,b),new mxPoint(l+
-k,B+m),new mxPoint(l+e,B+m),new mxPoint(l,b),new mxPoint(l+e,B)]):d==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(m,g)):m*Math.max(0,Math.min(1,g)),B=[new mxPoint(l,B+e),new mxPoint(q,B),new mxPoint(l+k,B+e),new mxPoint(l+k,B+m),new mxPoint(q,B+m-e),new mxPoint(l,B+m),new mxPoint(l,B+e)]):(e=e?Math.max(0,Math.min(m,g)):m*Math.max(0,Math.min(1,g)),B=[new mxPoint(l,B),new mxPoint(q,B+e),new mxPoint(l+k,B),new mxPoint(l+k,B+m-e),new mxPoint(q,B+m),new mxPoint(l,B+m-e),new mxPoint(l,B)]);q=new mxPoint(q,
-b);c&&(f.x<l||f.x>l+k?q.y=f.y:q.x=f.x);return mxUtils.getPerimeterPoint(B,q,f)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(b,d,f,c){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),g=e?aa.prototype.fixedSize:aa.prototype.size;null!=d&&(g=mxUtils.getValue(d.style,"size",g));e&&(g*=d.view.scale);var l=b.x,B=b.y,k=b.width,m=b.height,q=b.getCenterX();b=b.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
-mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,g)):m*Math.max(0,Math.min(1,g)),B=[new mxPoint(q,B),new mxPoint(l+k,B+e),new mxPoint(l+k,B+m-e),new mxPoint(q,B+m),new mxPoint(l,B+m-e),new mxPoint(l,B+e),new mxPoint(q,B)]):(e=e?Math.max(0,Math.min(k,g)):k*Math.max(0,Math.min(1,g)),B=[new mxPoint(l+e,B),new mxPoint(l+k-e,B),new mxPoint(l+k,b),new mxPoint(l+k-e,B+m),new mxPoint(l+e,B+m),new mxPoint(l,b),new mxPoint(l+e,B)]);q=new mxPoint(q,
-b);c&&(f.x<l||f.x>l+k?q.y=f.y:q.x=f.x);return mxUtils.getPerimeterPoint(B,q,f)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(oa,mxShape);oa.prototype.size=10;oa.prototype.paintBackground=function(b,d,f,c,e){var g=parseFloat(mxUtils.getValue(this.style,"size",this.size));b.translate(d,f);b.ellipse((c-g)/2,0,g,g);b.fillAndStroke();b.begin();b.moveTo(c/2,g);b.lineTo(c/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("lollipop",oa);mxUtils.extend(fa,
-mxShape);fa.prototype.size=10;fa.prototype.inset=2;fa.prototype.paintBackground=function(b,d,f,c,e){var g=parseFloat(mxUtils.getValue(this.style,"size",this.size)),l=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,f);b.begin();b.moveTo(c/2,g+l);b.lineTo(c/2,e);b.end();b.stroke();b.begin();b.moveTo((c-g)/2-l,g/2);b.quadTo((c-g)/2-l,g+l,c/2,g+l);b.quadTo((c+g)/2+l,g+l,(c+g)/2+l,g/2);b.end();b.stroke()};mxCellRenderer.registerShape("requires",fa);mxUtils.extend(ka,
-mxShape);ka.prototype.paintBackground=function(b,d,f,c,e){b.translate(d,f);b.begin();b.moveTo(0,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,0,e);b.end();b.stroke()};mxCellRenderer.registerShape("requiredInterface",ka);mxUtils.extend(ra,mxShape);ra.prototype.inset=2;ra.prototype.paintBackground=function(b,d,f,c,e){var g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,f);b.ellipse(0,g,c-2*g,e-2*g);b.fillAndStroke();b.begin();b.moveTo(c/2,0);b.quadTo(c,0,c,e/2);b.quadTo(c,
-e,c/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ra);mxUtils.extend(la,mxCylinder);la.prototype.jettyWidth=20;la.prototype.jettyHeight=10;la.prototype.redrawPath=function(b,d,f,c,e,g){var l=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));f=l/2;var l=f+l/2,B=Math.min(d,e-d),k=Math.min(B+2*d,e-d);g?(b.moveTo(f,B),b.lineTo(l,B),b.lineTo(l,B+d),b.lineTo(f,B+d),b.moveTo(f,
-k),b.lineTo(l,k),b.lineTo(l,k+d),b.lineTo(f,k+d)):(b.moveTo(f,0),b.lineTo(c,0),b.lineTo(c,e),b.lineTo(f,e),b.lineTo(f,k+d),b.lineTo(0,k+d),b.lineTo(0,k),b.lineTo(f,k),b.lineTo(f,B+d),b.lineTo(0,B+d),b.lineTo(0,B),b.lineTo(f,B),b.close());b.end()};mxCellRenderer.registerShape("module",la);mxUtils.extend(ja,mxCylinder);ja.prototype.jettyWidth=32;ja.prototype.jettyHeight=12;ja.prototype.redrawPath=function(b,d,f,c,e,g){var l=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,
-"jettyHeight",this.jettyHeight));f=l/2;var l=f+l/2,B=.3*e-d/2,k=.7*e-d/2;g?(b.moveTo(f,B),b.lineTo(l,B),b.lineTo(l,B+d),b.lineTo(f,B+d),b.moveTo(f,k),b.lineTo(l,k),b.lineTo(l,k+d),b.lineTo(f,k+d)):(b.moveTo(f,0),b.lineTo(c,0),b.lineTo(c,e),b.lineTo(f,e),b.lineTo(f,k+d),b.lineTo(0,k+d),b.lineTo(0,k),b.lineTo(f,k),b.lineTo(f,B+d),b.lineTo(0,B+d),b.lineTo(0,B),b.lineTo(f,B),b.close());b.end()};mxCellRenderer.registerShape("component",ja);mxUtils.extend(ba,mxRectangleShape);ba.prototype.paintForeground=
-function(b,d,f,c,e){var g=c/2,l=e/2,B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b.begin();this.addPoints(b,[new mxPoint(d+g,f),new mxPoint(d+c,f+l),new mxPoint(d+g,f+e),new mxPoint(d,f+l)],this.isRounded,B,!0);b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",ba);mxUtils.extend(ca,mxDoubleEllipse);ca.prototype.outerStroke=!0;ca.prototype.paintVertexShape=function(b,d,f,c,e){var g=Math.min(4,
-Math.min(c/5,e/5));0<c&&0<e&&(b.ellipse(d+g,f+g,c-2*g,e-2*g),b.fillAndStroke());b.setShadow(!1);this.outerStroke&&(b.ellipse(d,f,c,e),b.stroke())};mxCellRenderer.registerShape("endState",ca);mxUtils.extend(R,ca);R.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",R);mxUtils.extend(sa,mxArrowConnector);sa.prototype.defaultWidth=4;sa.prototype.isOpenEnded=function(){return!0};sa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
+mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&db.apply(this,arguments)};var gb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(b,d,g,c,e){if(null==b.handJiggle||b.handJiggle.constructor!=E)gb.apply(this,arguments);else{var f=!0;null!=this.style&&(f="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
+"1"));if(f||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)f||null!=this.fill&&this.fill!=mxConstants.NONE||(b.pointerEvents=!1),b.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?f=Math.min(c/2,Math.min(e/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.min(c*
+f,e*f)),b.moveTo(d+f,g),b.lineTo(d+c-f,g),b.quadTo(d+c,g,d+c,g+f),b.lineTo(d+c,g+e-f),b.quadTo(d+c,g+e,d+c-f,g+e),b.lineTo(d+f,g+e),b.quadTo(d,g+e,d,g+e-f),b.lineTo(d,g+f),b.quadTo(d,g,d+f,g)):(b.moveTo(d,g),b.lineTo(d+c,g),b.lineTo(d+c,g+e),b.lineTo(d,g+e),b.lineTo(d,g)),b.close(),b.end(),b.fillAndStroke()}};mxUtils.extend(J,mxRectangleShape);J.prototype.size=.1;J.prototype.fixedSize=!1;J.prototype.isHtmlAllowed=function(){return!1};J.prototype.getLabelBounds=function(b){if(mxUtils.getValue(this.state.style,
+mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var d=b.width,g=b.height;b=new mxRectangle(b.x,b.y,d,g);var c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,c=Math.max(c,Math.min(d*e,g*e));b.x+=Math.round(c);b.width-=Math.round(2*c)}return b};
+J.prototype.paintForeground=function(b,d,g,c,e){var f=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),A=parseFloat(mxUtils.getValue(this.style,"size",this.size)),A=f?Math.max(0,Math.min(c,A)):c*Math.max(0,Math.min(1,A));this.isRounded&&(f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,A=Math.max(A,Math.min(c*f,e*f)));A=Math.round(A);b.begin();b.moveTo(d+A,g);b.lineTo(d+A,g+e);b.moveTo(d+c-A,g);b.lineTo(d+c-A,g+e);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
+arguments)};mxCellRenderer.registerShape("process",J);mxCellRenderer.registerShape("process2",J);mxUtils.extend(C,mxRectangleShape);C.prototype.paintBackground=function(b,d,g,c,e){b.setFillColor(mxConstants.NONE);b.rect(d,g,c,e);b.fill()};C.prototype.paintForeground=function(b,d,g,c,e){};mxCellRenderer.registerShape("transparent",C);mxUtils.extend(K,mxHexagon);K.prototype.size=30;K.prototype.position=.5;K.prototype.position2=.5;K.prototype.base=20;K.prototype.getLabelMargins=function(){return new mxRectangle(0,
+0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};K.prototype.isRoundable=function(){return!0};K.prototype.redrawPath=function(b,d,g,c,e){d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var f=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),A=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
+this.position2)))),l=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e-g),new mxPoint(Math.min(c,f+l),e-g),new mxPoint(A,e),new mxPoint(Math.max(0,f),e-g),new mxPoint(0,e-g)],this.isRounded,d,!0,[4])};mxCellRenderer.registerShape("callout",K);mxUtils.extend(M,mxActor);M.prototype.size=.2;M.prototype.fixedSize=20;M.prototype.isRoundable=function(){return!0};M.prototype.redrawPath=function(b,d,g,c,e){d=
+"0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c-d,0),new mxPoint(c,e/2),new mxPoint(c-d,e),new mxPoint(0,e),new mxPoint(d,e/2)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("step",M);
+mxUtils.extend(Z,mxHexagon);Z.prototype.size=.25;Z.prototype.fixedSize=20;Z.prototype.isRoundable=function(){return!0};Z.prototype.redrawPath=function(b,d,g,c,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,
+0),new mxPoint(c-d,0),new mxPoint(c,.5*e),new mxPoint(c-d,e),new mxPoint(d,e),new mxPoint(0,.5*e)],this.isRounded,g,!0)};mxCellRenderer.registerShape("hexagon",Z);mxUtils.extend(L,mxRectangleShape);L.prototype.isHtmlAllowed=function(){return!1};L.prototype.paintForeground=function(b,d,g,c,e){var f=Math.min(c/5,e/5)+1;b.begin();b.moveTo(d+c/2,g+f);b.lineTo(d+c/2,g+e-f);b.moveTo(d+f,g+e/2);b.lineTo(d+c-f,g+e/2);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
+L);var Za=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};mxRhombus.prototype.paintVertexShape=function(b,d,g,c,e){Za.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
+0);d+=f;g+=f;c-=2*f;e-=2*f;0<c&&0<e&&(b.setShadow(!1),Za.apply(this,[b,d,g,c,e]))}};mxUtils.extend(O,mxRectangleShape);O.prototype.isHtmlAllowed=function(){return!1};O.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};O.prototype.paintForeground=function(b,d,g,c,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=
+Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=f;g+=f;c-=2*f;e-=2*f;0<c&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}b.setDashed(!1);var f=0,A;do{A=mxCellRenderer.defaultShapes[this.style["symbol"+f]];if(null!=A){var l=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],m=this.style["symbol"+f+"Width"],q=this.style["symbol"+f+"Height"],n=this.style["symbol"+f+"Spacing"]||0,G=this.style["symbol"+f+"VSpacing"]||n,va=
+this.style["symbol"+f+"ArcSpacing"];null!=va&&(va*=this.getArcSize(c+this.strokewidth,e+this.strokewidth),n+=va,G+=va);var va=d,Da=g,va=l==mxConstants.ALIGN_CENTER?va+(c-m)/2:l==mxConstants.ALIGN_RIGHT?va+(c-m-n):va+n,Da=k==mxConstants.ALIGN_MIDDLE?Da+(e-q)/2:k==mxConstants.ALIGN_BOTTOM?Da+(e-q-G):Da+G;b.save();l=new A;l.style=this.style;A.prototype.paintVertexShape.call(l,b,va,Da,m,q);b.restore()}f++}while(null!=A)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
+O);mxUtils.extend(U,mxCylinder);U.prototype.redrawPath=function(b,d,g,c,e,f){f?(b.moveTo(0,0),b.lineTo(c/2,e/2),b.lineTo(c,0),b.end()):(b.moveTo(0,0),b.lineTo(c,0),b.lineTo(c,e),b.lineTo(0,e),b.close())};mxCellRenderer.registerShape("message",U);mxUtils.extend(G,mxShape);G.prototype.paintBackground=function(b,d,g,c,e){b.translate(d,g);b.ellipse(c/4,0,c/2,e/4);b.fillAndStroke();b.begin();b.moveTo(c/2,e/4);b.lineTo(c/2,2*e/3);b.moveTo(c/2,e/3);b.lineTo(0,e/3);b.moveTo(c/2,e/3);b.lineTo(c,e/3);b.moveTo(c/
+2,2*e/3);b.lineTo(0,e);b.moveTo(c/2,2*e/3);b.lineTo(c,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlActor",G);mxUtils.extend(I,mxShape);I.prototype.getLabelMargins=function(b){return new mxRectangle(b.width/6,0,0,0)};I.prototype.paintBackground=function(b,d,g,c,e){b.translate(d,g);b.begin();b.moveTo(0,e/4);b.lineTo(0,3*e/4);b.end();b.stroke();b.begin();b.moveTo(0,e/2);b.lineTo(c/6,e/2);b.end();b.stroke();b.ellipse(c/6,0,5*c/6,e);b.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
+I);mxUtils.extend(B,mxEllipse);B.prototype.paintVertexShape=function(b,d,g,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+c/8,g+e);b.lineTo(d+7*c/8,g+e);b.end();b.stroke()};mxCellRenderer.registerShape("umlEntity",B);mxUtils.extend(ca,mxShape);ca.prototype.paintVertexShape=function(b,d,g,c,e){b.translate(d,g);b.begin();b.moveTo(c,0);b.lineTo(0,e);b.moveTo(0,0);b.lineTo(c,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlDestroy",ca);mxUtils.extend(S,mxShape);
+S.prototype.getLabelBounds=function(b){return new mxRectangle(b.x,b.y+b.height/8,b.width,7*b.height/8)};S.prototype.paintBackground=function(b,d,g,c,e){b.translate(d,g);b.begin();b.moveTo(3*c/8,e/8*1.1);b.lineTo(5*c/8,0);b.end();b.stroke();b.ellipse(0,e/8,c,7*e/8);b.fillAndStroke()};S.prototype.paintForeground=function(b,d,g,c,e){b.begin();b.moveTo(3*c/8,e/8*1.1);b.lineTo(5*c/8,e/4);b.end();b.stroke()};mxCellRenderer.registerShape("umlControl",S);mxUtils.extend(Q,mxRectangleShape);Q.prototype.size=
+40;Q.prototype.isHtmlAllowed=function(){return!1};Q.prototype.getLabelBounds=function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(b.x,b.y,b.width,d)};Q.prototype.paintBackground=function(b,d,g,c,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),A=mxUtils.getValue(this.style,"participant");null==A||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,b,d,
+g,c,f):(A=this.state.view.graph.cellRenderer.getShape(A),null!=A&&A!=Q&&(A=new A,A.apply(this.state),b.save(),A.paintVertexShape(b,d,g,c,f),b.restore()));f<e&&(b.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),b.begin(),b.moveTo(d+c/2,g+f),b.lineTo(d+c/2,g+e),b.end(),b.stroke())};Q.prototype.paintForeground=function(b,d,g,c,e){var f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,b,d,g,c,Math.min(e,
+f))};mxCellRenderer.registerShape("umlLifeline",Q);mxUtils.extend(V,mxShape);V.prototype.width=60;V.prototype.height=30;V.prototype.corner=10;V.prototype.getLabelMargins=function(b){return new mxRectangle(0,0,b.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),b.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};V.prototype.paintBackground=function(b,d,g,c,e){var f=this.corner,l=Math.min(c,Math.max(f,parseFloat(mxUtils.getValue(this.style,
+"width",this.width)))),A=Math.min(e,Math.max(1.5*f,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(b.setFillColor(k),b.rect(d,g,c,e),b.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(b,d,g,c,e),b.setGradient(this.fill,this.gradient,d,g,c,e,this.gradientDirection)):b.setFillColor(this.fill);b.begin();
+b.moveTo(d,g);b.lineTo(d+l,g);b.lineTo(d+l,g+Math.max(0,A-1.5*f));b.lineTo(d+Math.max(0,l-f),g+A);b.lineTo(d,g+A);b.close();b.fillAndStroke();b.begin();b.moveTo(d+l,g);b.lineTo(d+c,g);b.lineTo(d+c,g+e);b.lineTo(d,g+e);b.lineTo(d,g+A);b.stroke()};mxCellRenderer.registerShape("umlFrame",V);mxPerimeter.CenterPerimeter=function(b,d,g,c){return new mxPoint(b.getCenterX(),b.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(b,d,
+g,c){c=Q.prototype.size;null!=d&&(c=mxUtils.getValue(d.style,"size",c)*d.view.scale);d=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;g.x<b.getCenterX()&&(d=-1*(d+1));return new mxPoint(b.getCenterX()+d,Math.min(b.y+b.height,Math.max(b.y+c,g.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(b,d,g,c){c=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
+mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(b,d,g,c){c=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;null!=d.style.backboneSize&&(c+=parseFloat(d.style.backboneSize)*d.view.scale/2-1);if("south"==d.style[mxConstants.STYLE_DIRECTION]||"north"==d.style[mxConstants.STYLE_DIRECTION])return g.x<b.getCenterX()&&(c=-1*(c+1)),new mxPoint(b.getCenterX()+c,Math.min(b.y+b.height,Math.max(b.y,g.y)));g.y<b.getCenterY()&&(c=-1*(c+1));return new mxPoint(Math.min(b.x+
+b.width,Math.max(b.x,g.x)),b.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(b,d,g,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(b,new mxRectangle(0,0,0,Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(d.style,"size",K.prototype.size))*d.view.scale))),d.style),d,g,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(b,
+d,g,c){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),f=e?H.prototype.fixedSize:H.prototype.size;null!=d&&(f=mxUtils.getValue(d.style,"size",f));e&&(f*=d.view.scale);var l=b.x,A=b.y,k=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),A=[new mxPoint(l,A),new mxPoint(l+k,A+e),new mxPoint(l+
+k,A+m),new mxPoint(l,A+m-e),new mxPoint(l,A)]):(e=e?Math.max(0,Math.min(.5*k,f)):k*Math.max(0,Math.min(1,f)),A=[new mxPoint(l+e,A),new mxPoint(l+k,A),new mxPoint(l+k-e,A+m),new mxPoint(l,A+m),new mxPoint(l+e,A)]);m=b.getCenterX();b=b.getCenterY();b=new mxPoint(m,b);c&&(g.x<l||g.x>l+k?b.y=g.y:b.x=g.x);return mxUtils.getPerimeterPoint(A,b,g)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(b,d,g,c){var e="0"!=mxUtils.getValue(d.style,
+"fixedSize","0"),f=e?z.prototype.fixedSize:z.prototype.size;null!=d&&(f=mxUtils.getValue(d.style,"size",f));e&&(f*=d.view.scale);var l=b.x,A=b.y,k=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(.5*k,f)):k*Math.max(0,Math.min(1,f)),A=[new mxPoint(l+e,A),new mxPoint(l+k-e,A),new mxPoint(l+k,A+m),new mxPoint(l,A+m),new mxPoint(l+e,A)]):d==mxConstants.DIRECTION_WEST?
+(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),A=[new mxPoint(l,A),new mxPoint(l+k,A),new mxPoint(l+k-e,A+m),new mxPoint(l+e,A+m),new mxPoint(l,A)]):d==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),A=[new mxPoint(l,A+e),new mxPoint(l+k,A),new mxPoint(l+k,A+m),new mxPoint(l,A+m-e),new mxPoint(l,A+e)]):(e=e?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),A=[new mxPoint(l,A),new mxPoint(l+k,A+e),new mxPoint(l+k,A+m-e),new mxPoint(l,A+m),new mxPoint(l,
+A)]);m=b.getCenterX();b=b.getCenterY();b=new mxPoint(m,b);c&&(g.x<l||g.x>l+k?b.y=g.y:b.x=g.x);return mxUtils.getPerimeterPoint(A,b,g)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(b,d,g,c){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),f=e?M.prototype.fixedSize:M.prototype.size;null!=d&&(f=mxUtils.getValue(d.style,"size",f));e&&(f*=d.view.scale);var l=b.x,A=b.y,k=b.width,m=b.height,q=b.getCenterX();b=b.getCenterY();d=null!=
+d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),A=[new mxPoint(l,A),new mxPoint(l+k-e,A),new mxPoint(l+k,b),new mxPoint(l+k-e,A+m),new mxPoint(l,A+m),new mxPoint(l+e,b),new mxPoint(l,A)]):d==mxConstants.DIRECTION_WEST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),A=[new mxPoint(l+e,A),new mxPoint(l+k,A),new mxPoint(l+k-e,b),new mxPoint(l+
+k,A+m),new mxPoint(l+e,A+m),new mxPoint(l,b),new mxPoint(l+e,A)]):d==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),A=[new mxPoint(l,A+e),new mxPoint(q,A),new mxPoint(l+k,A+e),new mxPoint(l+k,A+m),new mxPoint(q,A+m-e),new mxPoint(l,A+m),new mxPoint(l,A+e)]):(e=e?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),A=[new mxPoint(l,A),new mxPoint(q,A+e),new mxPoint(l+k,A),new mxPoint(l+k,A+m-e),new mxPoint(q,A+m),new mxPoint(l,A+m-e),new mxPoint(l,A)]);q=new mxPoint(q,
+b);c&&(g.x<l||g.x>l+k?q.y=g.y:q.x=g.x);return mxUtils.getPerimeterPoint(A,q,g)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(b,d,g,c){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),f=e?Z.prototype.fixedSize:Z.prototype.size;null!=d&&(f=mxUtils.getValue(d.style,"size",f));e&&(f*=d.view.scale);var l=b.x,A=b.y,k=b.width,m=b.height,q=b.getCenterX();b=b.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
+mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,f)):m*Math.max(0,Math.min(1,f)),A=[new mxPoint(q,A),new mxPoint(l+k,A+e),new mxPoint(l+k,A+m-e),new mxPoint(q,A+m),new mxPoint(l,A+m-e),new mxPoint(l,A+e),new mxPoint(q,A)]):(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),A=[new mxPoint(l+e,A),new mxPoint(l+k-e,A),new mxPoint(l+k,b),new mxPoint(l+k-e,A+m),new mxPoint(l+e,A+m),new mxPoint(l,b),new mxPoint(l+e,A)]);q=new mxPoint(q,
+b);c&&(g.x<l||g.x>l+k?q.y=g.y:q.x=g.x);return mxUtils.getPerimeterPoint(A,q,g)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(oa,mxShape);oa.prototype.size=10;oa.prototype.paintBackground=function(b,d,g,c,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));b.translate(d,g);b.ellipse((c-f)/2,0,f,f);b.fillAndStroke();b.begin();b.moveTo(c/2,f);b.lineTo(c/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("lollipop",oa);mxUtils.extend(fa,
+mxShape);fa.prototype.size=10;fa.prototype.inset=2;fa.prototype.paintBackground=function(b,d,g,c,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),l=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,g);b.begin();b.moveTo(c/2,f+l);b.lineTo(c/2,e);b.end();b.stroke();b.begin();b.moveTo((c-f)/2-l,f/2);b.quadTo((c-f)/2-l,f+l,c/2,f+l);b.quadTo((c+f)/2+l,f+l,(c+f)/2+l,f/2);b.end();b.stroke()};mxCellRenderer.registerShape("requires",fa);mxUtils.extend(ka,
+mxShape);ka.prototype.paintBackground=function(b,d,g,c,e){b.translate(d,g);b.begin();b.moveTo(0,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,0,e);b.end();b.stroke()};mxCellRenderer.registerShape("requiredInterface",ka);mxUtils.extend(ra,mxShape);ra.prototype.inset=2;ra.prototype.paintBackground=function(b,d,g,c,e){var f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,g);b.ellipse(0,f,c-2*f,e-2*f);b.fillAndStroke();b.begin();b.moveTo(c/2,0);b.quadTo(c,0,c,e/2);b.quadTo(c,
+e,c/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ra);mxUtils.extend(la,mxCylinder);la.prototype.jettyWidth=20;la.prototype.jettyHeight=10;la.prototype.redrawPath=function(b,d,g,c,e,f){var l=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));g=l/2;var l=g+l/2,A=Math.min(d,e-d),k=Math.min(A+2*d,e-d);f?(b.moveTo(g,A),b.lineTo(l,A),b.lineTo(l,A+d),b.lineTo(g,A+d),b.moveTo(g,
+k),b.lineTo(l,k),b.lineTo(l,k+d),b.lineTo(g,k+d)):(b.moveTo(g,0),b.lineTo(c,0),b.lineTo(c,e),b.lineTo(g,e),b.lineTo(g,k+d),b.lineTo(0,k+d),b.lineTo(0,k),b.lineTo(g,k),b.lineTo(g,A+d),b.lineTo(0,A+d),b.lineTo(0,A),b.lineTo(g,A),b.close());b.end()};mxCellRenderer.registerShape("module",la);mxUtils.extend(ja,mxCylinder);ja.prototype.jettyWidth=32;ja.prototype.jettyHeight=12;ja.prototype.redrawPath=function(b,d,g,c,e,f){var l=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,
+"jettyHeight",this.jettyHeight));g=l/2;var l=g+l/2,A=.3*e-d/2,k=.7*e-d/2;f?(b.moveTo(g,A),b.lineTo(l,A),b.lineTo(l,A+d),b.lineTo(g,A+d),b.moveTo(g,k),b.lineTo(l,k),b.lineTo(l,k+d),b.lineTo(g,k+d)):(b.moveTo(g,0),b.lineTo(c,0),b.lineTo(c,e),b.lineTo(g,e),b.lineTo(g,k+d),b.lineTo(0,k+d),b.lineTo(0,k),b.lineTo(g,k),b.lineTo(g,A+d),b.lineTo(0,A+d),b.lineTo(0,A),b.lineTo(g,A),b.close());b.end()};mxCellRenderer.registerShape("component",ja);mxUtils.extend(aa,mxRectangleShape);aa.prototype.paintForeground=
+function(b,d,g,c,e){var f=c/2,l=e/2,A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b.begin();this.addPoints(b,[new mxPoint(d+f,g),new mxPoint(d+c,g+l),new mxPoint(d+f,g+e),new mxPoint(d,g+l)],this.isRounded,A,!0);b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",aa);mxUtils.extend(ba,mxDoubleEllipse);ba.prototype.outerStroke=!0;ba.prototype.paintVertexShape=function(b,d,g,c,e){var f=Math.min(4,
+Math.min(c/5,e/5));0<c&&0<e&&(b.ellipse(d+f,g+f,c-2*f,e-2*f),b.fillAndStroke());b.setShadow(!1);this.outerStroke&&(b.ellipse(d,g,c,e),b.stroke())};mxCellRenderer.registerShape("endState",ba);mxUtils.extend(R,ba);R.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",R);mxUtils.extend(sa,mxArrowConnector);sa.prototype.defaultWidth=4;sa.prototype.isOpenEnded=function(){return!0};sa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
this.strokewidth-1)};sa.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",sa);mxUtils.extend(W,mxArrowConnector);W.prototype.defaultWidth=10;W.prototype.defaultArrowWidth=20;W.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};W.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};W.prototype.getEdgeWidth=
-function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",W);mxUtils.extend(X,mxActor);X.prototype.size=30;X.prototype.isRoundable=function(){return!0};X.prototype.redrawPath=function(b,d,f,c,e){d=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(0,d),new mxPoint(c,
-0),new mxPoint(c,e)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("manualInput",X);mxUtils.extend(ma,mxRectangleShape);ma.prototype.dx=20;ma.prototype.dy=20;ma.prototype.isHtmlAllowed=function(){return!1};ma.prototype.paintForeground=function(b,d,f,c,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var g=0;if(this.isRounded)var l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(c*l,e*l));l=Math.max(g,
-Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));g=Math.max(g,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.begin();b.moveTo(d,f+g);b.lineTo(d+c,f+g);b.end();b.stroke();b.begin();b.moveTo(d+l,f);b.lineTo(d+l,f+e);b.end();b.stroke()};mxCellRenderer.registerShape("internalStorage",ma);mxUtils.extend(qa,mxActor);qa.prototype.dx=20;qa.prototype.dy=20;qa.prototype.redrawPath=function(b,d,f,c,e){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",
-this.dx))));f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,f),new mxPoint(d,f),new mxPoint(d,e),new mxPoint(0,e)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("corner",qa);mxUtils.extend(T,mxActor);T.prototype.redrawPath=function(b,d,f,c,e){b.moveTo(0,
-0);b.lineTo(0,e);b.end();b.moveTo(c,0);b.lineTo(c,e);b.end();b.moveTo(0,e/2);b.lineTo(c,e/2);b.end()};mxCellRenderer.registerShape("crossbar",T);mxUtils.extend(ia,mxActor);ia.prototype.dx=20;ia.prototype.dy=20;ia.prototype.redrawPath=function(b,d,f,c,e){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var g=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,f),new mxPoint((c+d)/2,f),new mxPoint((c+d)/2,e),new mxPoint((c-d)/2,e),new mxPoint((c-d)/2,f),new mxPoint(0,f)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("tee",ia);mxUtils.extend(da,mxActor);da.prototype.arrowWidth=.3;da.prototype.arrowSize=.2;da.prototype.redrawPath=function(b,d,f,c,e){var g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
-this.arrowWidth))));d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));f=(e-g)/2;var g=f+g,l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,f),new mxPoint(c-d,f),new mxPoint(c-d,0),new mxPoint(c,e/2),new mxPoint(c-d,e),new mxPoint(c-d,g),new mxPoint(0,g)],this.isRounded,l,!0);b.end()};mxCellRenderer.registerShape("singleArrow",da);mxUtils.extend(na,mxActor);na.prototype.redrawPath=function(b,
-d,f,c,e){var g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth))));d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize))));f=(e-g)/2;var g=f+g,l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e/2),new mxPoint(d,0),new mxPoint(d,f),new mxPoint(c-d,f),new mxPoint(c-d,0),new mxPoint(c,e/2),new mxPoint(c-d,e),new mxPoint(c-d,g),new mxPoint(d,
-g),new mxPoint(d,e)],this.isRounded,l,!0);b.end()};mxCellRenderer.registerShape("doubleArrow",na);mxUtils.extend(ha,mxActor);ha.prototype.size=.1;ha.prototype.fixedSize=20;ha.prototype.redrawPath=function(b,d,f,c,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(d,0);b.lineTo(c,0);b.quadTo(c-2*d,e/2,c,e);b.lineTo(d,
-e);b.quadTo(d-2*d,e/2,d,0);b.close();b.end()};mxCellRenderer.registerShape("dataStorage",ha);mxUtils.extend(ua,mxActor);ua.prototype.redrawPath=function(b,d,f,c,e){b.moveTo(0,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,0,e);b.close();b.end()};mxCellRenderer.registerShape("or",ua);mxUtils.extend(P,mxActor);P.prototype.redrawPath=function(b,d,f,c,e){b.moveTo(0,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,0,e);b.quadTo(c/2,e/2,0,0);b.close();b.end()};mxCellRenderer.registerShape("xor",P);mxUtils.extend(ea,mxActor);ea.prototype.size=
-20;ea.prototype.isRoundable=function(){return!0};ea.prototype.redrawPath=function(b,d,f,c,e){d=Math.min(c/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,.8*d),new mxPoint(c,e),new mxPoint(0,e),new mxPoint(0,.8*d)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("loopLimit",ea);mxUtils.extend(ta,mxActor);ta.prototype.size=
-.375;ta.prototype.isRoundable=function(){return!0};ta.prototype.redrawPath=function(b,d,f,c,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e-d),new mxPoint(c/2,e),new mxPoint(0,e-d)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("offPageConnector",ta);mxUtils.extend(ya,mxEllipse);ya.prototype.paintVertexShape=
-function(b,d,f,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+c/2,f+e);b.lineTo(d+c,f+e);b.end();b.stroke()};mxCellRenderer.registerShape("tapeData",ya);mxUtils.extend(pa,mxEllipse);pa.prototype.paintVertexShape=function(b,d,f,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d,f+e/2);b.lineTo(d+c,f+e/2);b.end();b.stroke();b.begin();b.moveTo(d+c/2,f);b.lineTo(d+c/2,f+e);b.end();b.stroke()};mxCellRenderer.registerShape("orEllipse",
-pa);mxUtils.extend(xa,mxEllipse);xa.prototype.paintVertexShape=function(b,d,f,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d+.145*c,f+.145*e);b.lineTo(d+.855*c,f+.855*e);b.end();b.stroke();b.begin();b.moveTo(d+.855*c,f+.145*e);b.lineTo(d+.145*c,f+.855*e);b.end();b.stroke()};mxCellRenderer.registerShape("sumEllipse",xa);mxUtils.extend(za,mxRhombus);za.prototype.paintVertexShape=function(b,d,f,c,e){mxRhombus.prototype.paintVertexShape.apply(this,
-arguments);b.setShadow(!1);b.begin();b.moveTo(d,f+e/2);b.lineTo(d+c,f+e/2);b.end();b.stroke()};mxCellRenderer.registerShape("sortShape",za);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=function(b,d,f,c,e){b.begin();b.moveTo(d,f);b.lineTo(d+c,f);b.lineTo(d+c/2,f+e/2);b.close();b.fillAndStroke();b.begin();b.moveTo(d,f+e);b.lineTo(d+c,f+e);b.lineTo(d+c/2,f+e/2);b.close();b.fillAndStroke()};mxCellRenderer.registerShape("collate",Ba);mxUtils.extend(Ea,mxEllipse);Ea.prototype.paintVertexShape=
-function(b,d,f,c,e){var g=f+e-5;b.begin();b.moveTo(d,f);b.lineTo(d,f+e);b.moveTo(d,g);b.lineTo(d+10,g-5);b.moveTo(d,g);b.lineTo(d+10,g+5);b.moveTo(d,g);b.lineTo(d+c,g);b.moveTo(d+c,f);b.lineTo(d+c,f+e);b.moveTo(d+c,g);b.lineTo(d+c-10,g-5);b.moveTo(d+c,g);b.lineTo(d+c-10,g+5);b.end();b.stroke()};mxCellRenderer.registerShape("dimension",Ea);mxUtils.extend(Ja,mxEllipse);Ja.prototype.paintVertexShape=function(b,d,f,c,e){this.outline||b.setStrokeColor(null);if(null!=this.style){var g=b.pointerEvents;"1"==
-mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||null!=this.fill&&this.fill!=mxConstants.NONE||(b.pointerEvents=!1);b.rect(d,f,c,e);b.fill();b.pointerEvents=g;b.setStrokeColor(this.stroke);b.setLineCap("square");b.begin();b.moveTo(d,f);this.outline||"1"==mxUtils.getValue(this.style,"top","1")?b.lineTo(d+c,f):b.moveTo(d+c,f);this.outline||"1"==mxUtils.getValue(this.style,"right","1")?b.lineTo(d+c,f+e):b.moveTo(d+c,f+e);this.outline||"1"==mxUtils.getValue(this.style,"bottom","1")?
-b.lineTo(d,f+e):b.moveTo(d,f+e);(this.outline||"1"==mxUtils.getValue(this.style,"left","1"))&&b.lineTo(d,f);b.end();b.stroke();b.setLineCap("flat")}};mxCellRenderer.registerShape("partialRectangle",Ja);mxUtils.extend(Aa,mxEllipse);Aa.prototype.paintVertexShape=function(b,d,f,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();"vertical"==mxUtils.getValue(this.style,"line")?(b.moveTo(d+c/2,f),b.lineTo(d+c/2,f+e)):(b.moveTo(d,f+e/2),b.lineTo(d+c,f+e/2));b.end();
-b.stroke()};mxCellRenderer.registerShape("lineEllipse",Aa);mxUtils.extend(Ka,mxActor);Ka.prototype.redrawPath=function(b,d,f,c,e){d=Math.min(c,e/2);b.moveTo(0,0);b.lineTo(c-d,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,c-d,e);b.lineTo(0,e);b.close();b.end()};mxCellRenderer.registerShape("delay",Ka);mxUtils.extend(Ca,mxActor);Ca.prototype.size=.2;Ca.prototype.redrawPath=function(b,d,f,c,e){d=Math.min(e,c);var g=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=(e-g)/2;f=
-d+g;var l=(c-g)/2,g=l+g;b.moveTo(0,d);b.lineTo(l,d);b.lineTo(l,0);b.lineTo(g,0);b.lineTo(g,d);b.lineTo(c,d);b.lineTo(c,f);b.lineTo(g,f);b.lineTo(g,e);b.lineTo(l,e);b.lineTo(l,f);b.lineTo(0,f);b.close();b.end()};mxCellRenderer.registerShape("cross",Ca);mxUtils.extend(wa,mxActor);wa.prototype.size=.25;wa.prototype.redrawPath=function(b,d,f,c,e){d=Math.min(c,e/2);f=Math.min(c-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);b.moveTo(0,e/2);b.lineTo(f,0);b.lineTo(c-d,0);b.quadTo(c,
-0,c,e/2);b.quadTo(c,e,c-d,e);b.lineTo(f,e);b.close();b.end()};mxCellRenderer.registerShape("display",wa);mxUtils.extend(Z,mxActor);Z.prototype.cst={RECT2:"mxgraph.basic.rect"};Z.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"size",dispName:"Corner Size",type:"float",defVal:10},
+function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",W);mxUtils.extend(X,mxActor);X.prototype.size=30;X.prototype.isRoundable=function(){return!0};X.prototype.redrawPath=function(b,d,g,c,e){d=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(0,d),new mxPoint(c,
+0),new mxPoint(c,e)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("manualInput",X);mxUtils.extend(ma,mxRectangleShape);ma.prototype.dx=20;ma.prototype.dy=20;ma.prototype.isHtmlAllowed=function(){return!1};ma.prototype.paintForeground=function(b,d,g,c,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var f=0;if(this.isRounded)var l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,f=Math.max(f,Math.min(c*l,e*l));l=Math.max(f,
+Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=Math.max(f,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.begin();b.moveTo(d,g+f);b.lineTo(d+c,g+f);b.end();b.stroke();b.begin();b.moveTo(d+l,g);b.lineTo(d+l,g+e);b.end();b.stroke()};mxCellRenderer.registerShape("internalStorage",ma);mxUtils.extend(qa,mxActor);qa.prototype.dx=20;qa.prototype.dy=20;qa.prototype.redrawPath=function(b,d,g,c,e){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",
+this.dx))));g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,g),new mxPoint(d,g),new mxPoint(d,e),new mxPoint(0,e)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("corner",qa);mxUtils.extend(T,mxActor);T.prototype.redrawPath=function(b,d,g,c,e){b.moveTo(0,
+0);b.lineTo(0,e);b.end();b.moveTo(c,0);b.lineTo(c,e);b.end();b.moveTo(0,e/2);b.lineTo(c,e/2);b.end()};mxCellRenderer.registerShape("crossbar",T);mxUtils.extend(ia,mxActor);ia.prototype.dx=20;ia.prototype.dy=20;ia.prototype.redrawPath=function(b,d,g,c,e){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,
+mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,g),new mxPoint((c+d)/2,g),new mxPoint((c+d)/2,e),new mxPoint((c-d)/2,e),new mxPoint((c-d)/2,g),new mxPoint(0,g)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("tee",ia);mxUtils.extend(da,mxActor);da.prototype.arrowWidth=.3;da.prototype.arrowSize=.2;da.prototype.redrawPath=function(b,d,g,c,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
+this.arrowWidth))));d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));g=(e-f)/2;var f=g+f,l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,g),new mxPoint(c-d,g),new mxPoint(c-d,0),new mxPoint(c,e/2),new mxPoint(c-d,e),new mxPoint(c-d,f),new mxPoint(0,f)],this.isRounded,l,!0);b.end()};mxCellRenderer.registerShape("singleArrow",da);mxUtils.extend(na,mxActor);na.prototype.redrawPath=function(b,
+d,g,c,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth))));d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize))));g=(e-f)/2;var f=g+f,l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e/2),new mxPoint(d,0),new mxPoint(d,g),new mxPoint(c-d,g),new mxPoint(c-d,0),new mxPoint(c,e/2),new mxPoint(c-d,e),new mxPoint(c-d,f),new mxPoint(d,
+f),new mxPoint(d,e)],this.isRounded,l,!0);b.end()};mxCellRenderer.registerShape("doubleArrow",na);mxUtils.extend(ha,mxActor);ha.prototype.size=.1;ha.prototype.fixedSize=20;ha.prototype.redrawPath=function(b,d,g,c,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(d,0);b.lineTo(c,0);b.quadTo(c-2*d,e/2,c,e);b.lineTo(d,
+e);b.quadTo(d-2*d,e/2,d,0);b.close();b.end()};mxCellRenderer.registerShape("dataStorage",ha);mxUtils.extend(ua,mxActor);ua.prototype.redrawPath=function(b,d,g,c,e){b.moveTo(0,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,0,e);b.close();b.end()};mxCellRenderer.registerShape("or",ua);mxUtils.extend(P,mxActor);P.prototype.redrawPath=function(b,d,g,c,e){b.moveTo(0,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,0,e);b.quadTo(c/2,e/2,0,0);b.close();b.end()};mxCellRenderer.registerShape("xor",P);mxUtils.extend(ea,mxActor);ea.prototype.size=
+20;ea.prototype.isRoundable=function(){return!0};ea.prototype.redrawPath=function(b,d,g,c,e){d=Math.min(c/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,.8*d),new mxPoint(c,e),new mxPoint(0,e),new mxPoint(0,.8*d)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("loopLimit",ea);mxUtils.extend(ta,mxActor);ta.prototype.size=
+.375;ta.prototype.isRoundable=function(){return!0};ta.prototype.redrawPath=function(b,d,g,c,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e-d),new mxPoint(c/2,e),new mxPoint(0,e-d)],this.isRounded,g,!0);b.end()};mxCellRenderer.registerShape("offPageConnector",ta);mxUtils.extend(ya,mxEllipse);ya.prototype.paintVertexShape=
+function(b,d,g,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+c/2,g+e);b.lineTo(d+c,g+e);b.end();b.stroke()};mxCellRenderer.registerShape("tapeData",ya);mxUtils.extend(pa,mxEllipse);pa.prototype.paintVertexShape=function(b,d,g,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d,g+e/2);b.lineTo(d+c,g+e/2);b.end();b.stroke();b.begin();b.moveTo(d+c/2,g);b.lineTo(d+c/2,g+e);b.end();b.stroke()};mxCellRenderer.registerShape("orEllipse",
+pa);mxUtils.extend(xa,mxEllipse);xa.prototype.paintVertexShape=function(b,d,g,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d+.145*c,g+.145*e);b.lineTo(d+.855*c,g+.855*e);b.end();b.stroke();b.begin();b.moveTo(d+.855*c,g+.145*e);b.lineTo(d+.145*c,g+.855*e);b.end();b.stroke()};mxCellRenderer.registerShape("sumEllipse",xa);mxUtils.extend(za,mxRhombus);za.prototype.paintVertexShape=function(b,d,g,c,e){mxRhombus.prototype.paintVertexShape.apply(this,
+arguments);b.setShadow(!1);b.begin();b.moveTo(d,g+e/2);b.lineTo(d+c,g+e/2);b.end();b.stroke()};mxCellRenderer.registerShape("sortShape",za);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=function(b,d,g,c,e){b.begin();b.moveTo(d,g);b.lineTo(d+c,g);b.lineTo(d+c/2,g+e/2);b.close();b.fillAndStroke();b.begin();b.moveTo(d,g+e);b.lineTo(d+c,g+e);b.lineTo(d+c/2,g+e/2);b.close();b.fillAndStroke()};mxCellRenderer.registerShape("collate",Ba);mxUtils.extend(Ea,mxEllipse);Ea.prototype.paintVertexShape=
+function(b,d,g,c,e){var f=g+e-5;b.begin();b.moveTo(d,g);b.lineTo(d,g+e);b.moveTo(d,f);b.lineTo(d+10,f-5);b.moveTo(d,f);b.lineTo(d+10,f+5);b.moveTo(d,f);b.lineTo(d+c,f);b.moveTo(d+c,g);b.lineTo(d+c,g+e);b.moveTo(d+c,f);b.lineTo(d+c-10,f-5);b.moveTo(d+c,f);b.lineTo(d+c-10,f+5);b.end();b.stroke()};mxCellRenderer.registerShape("dimension",Ea);mxUtils.extend(Ja,mxEllipse);Ja.prototype.paintVertexShape=function(b,d,g,c,e){this.outline||b.setStrokeColor(null);if(null!=this.style){var f=b.pointerEvents;"1"==
+mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||null!=this.fill&&this.fill!=mxConstants.NONE||(b.pointerEvents=!1);b.rect(d,g,c,e);b.fill();b.pointerEvents=f;b.setStrokeColor(this.stroke);b.setLineCap("square");b.begin();b.moveTo(d,g);this.outline||"1"==mxUtils.getValue(this.style,"top","1")?b.lineTo(d+c,g):b.moveTo(d+c,g);this.outline||"1"==mxUtils.getValue(this.style,"right","1")?b.lineTo(d+c,g+e):b.moveTo(d+c,g+e);this.outline||"1"==mxUtils.getValue(this.style,"bottom","1")?
+b.lineTo(d,g+e):b.moveTo(d,g+e);(this.outline||"1"==mxUtils.getValue(this.style,"left","1"))&&b.lineTo(d,g);b.end();b.stroke();b.setLineCap("flat")}};mxCellRenderer.registerShape("partialRectangle",Ja);mxUtils.extend(Aa,mxEllipse);Aa.prototype.paintVertexShape=function(b,d,g,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();"vertical"==mxUtils.getValue(this.style,"line")?(b.moveTo(d+c/2,g),b.lineTo(d+c/2,g+e)):(b.moveTo(d,g+e/2),b.lineTo(d+c,g+e/2));b.end();
+b.stroke()};mxCellRenderer.registerShape("lineEllipse",Aa);mxUtils.extend(Ka,mxActor);Ka.prototype.redrawPath=function(b,d,g,c,e){d=Math.min(c,e/2);b.moveTo(0,0);b.lineTo(c-d,0);b.quadTo(c,0,c,e/2);b.quadTo(c,e,c-d,e);b.lineTo(0,e);b.close();b.end()};mxCellRenderer.registerShape("delay",Ka);mxUtils.extend(Ca,mxActor);Ca.prototype.size=.2;Ca.prototype.redrawPath=function(b,d,g,c,e){d=Math.min(e,c);var f=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=(e-f)/2;g=
+d+f;var l=(c-f)/2,f=l+f;b.moveTo(0,d);b.lineTo(l,d);b.lineTo(l,0);b.lineTo(f,0);b.lineTo(f,d);b.lineTo(c,d);b.lineTo(c,g);b.lineTo(f,g);b.lineTo(f,e);b.lineTo(l,e);b.lineTo(l,g);b.lineTo(0,g);b.close();b.end()};mxCellRenderer.registerShape("cross",Ca);mxUtils.extend(wa,mxActor);wa.prototype.size=.25;wa.prototype.redrawPath=function(b,d,g,c,e){d=Math.min(c,e/2);g=Math.min(c-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);b.moveTo(0,e/2);b.lineTo(g,0);b.lineTo(c-d,0);b.quadTo(c,
+0,c,e/2);b.quadTo(c,e,c-d,e);b.lineTo(g,e);b.close();b.end()};mxCellRenderer.registerShape("display",wa);mxUtils.extend(Y,mxActor);Y.prototype.cst={RECT2:"mxgraph.basic.rect"};Y.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"size",dispName:"Corner Size",type:"float",defVal:10},
{name:"absoluteCornerSize",dispName:"Abs. Corner Size",type:"bool",defVal:!0},{name:"indent",dispName:"Indent",type:"float",defVal:2},{name:"rectOutline",dispName:"Outline",type:"enum",defVal:"single",enumList:[{val:"single",dispName:"Single"},{val:"double",dispName:"Double"},{val:"frame",dispName:"Frame"}]},{name:"fillColor2",dispName:"Inside Fill Color",type:"color",defVal:"none"},{name:"gradientColor2",dispName:"Inside Gradient Color",type:"color",defVal:"none"},{name:"gradientDirection2",dispName:"Inside Gradient Direction",
type:"enum",defVal:"south",enumList:[{val:"south",dispName:"South"},{val:"west",dispName:"West"},{val:"north",dispName:"North"},{val:"east",dispName:"East"}]},{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"right",dispName:"Right",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left ",type:"bool",defVal:!0},{name:"topLeftStyle",dispName:"Top Left Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},
{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"topRightStyle",dispName:"Top Right Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"bottomRightStyle",dispName:"Bottom Right Style",
type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"bottomLeftStyle",dispName:"Bottom Left Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",
-dispName:"Fold"}]}];Z.prototype.paintVertexShape=function(b,d,f,c,e){b.translate(d,f);this.strictDrawShape(b,0,0,c,e)};Z.prototype.strictDrawShape=function(b,d,f,c,e,g){var l=g&&g.rectStyle?g.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),k=g&&g.absoluteCornerSize?g.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",this.absoluteCornerSize),m=g&&g.size?g.size:Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),q=g&&g.rectOutline?g.rectOutline:
-mxUtils.getValue(this.style,"rectOutline",this.rectOutline),n=g&&g.indent?g.indent:Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),G=g&&g.dashed?g.dashed:mxUtils.getValue(this.style,"dashed",!1),B=g&&g.dashPattern?g.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),v=g&&g.relIndent?g.relIndent:Math.max(0,Math.min(50,n)),u=g&&g.top?g.top:mxUtils.getValue(this.style,"top",!0),A=g&&g.right?g.right:mxUtils.getValue(this.style,"right",!0),p=g&&g.bottom?g.bottom:
-mxUtils.getValue(this.style,"bottom",!0),x=g&&g.left?g.left:mxUtils.getValue(this.style,"left",!0),I=g&&g.topLeftStyle?g.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),t=g&&g.topRightStyle?g.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),y=g&&g.bottomRightStyle?g.bottomRightStyle:mxUtils.getValue(this.style,"bottomRightStyle","default"),z=g&&g.bottomLeftStyle?g.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),S=g&&g.fillColor?g.fillColor:
-mxUtils.getValue(this.style,"fillColor","#ffffff");g&&g.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var C=g&&g.strokeWidth?g.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),Y=g&&g.fillColor2?g.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),N=g&&g.gradientColor2?g.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),V=g&&g.gradientDirection2?g.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Da=g&&g.opacity?g.opacity:
-mxUtils.getValue(this.style,"opacity","100"),va=Math.max(0,Math.min(50,m));g=Z.prototype;b.setDashed(G);B&&""!=B&&b.setDashPattern(B);b.setStrokeWidth(C);m=Math.min(.5*e,.5*c,m);k||(m=va*Math.min(c,e)/100);m=Math.min(m,.5*Math.min(c,e));k||(n=Math.min(v*Math.min(c,e)/100));n=Math.min(n,.5*Math.min(c,e)-m);(u||A||p||x)&&"frame"!=q&&(b.begin(),u?g.moveNW(b,d,f,c,e,l,I,m,x):b.moveTo(0,0),u&&g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),A&&g.paintNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,
-c,e,l,y,m,p),p&&g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),x&&g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),b.close(),b.fill(),b.setShadow(!1),b.setFillColor(Y),G=k=Da,"none"==Y&&(k=0),"none"==N&&(G=0),b.setGradient(Y,N,0,0,c,e,V,k,G),b.begin(),u?g.moveNWInner(b,d,f,c,e,l,I,m,n,u,x):b.moveTo(n,0),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),x&&p&&g.paintSWInner(b,d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),p&&A&&g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,
-d,f,c,e,l,t,m,n,u,A),A&&u&&g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),u&&x&&g.paintNWInner(b,d,f,c,e,l,I,m,n),b.fill(),"none"==S&&(b.begin(),g.paintFolds(b,d,f,c,e,l,I,t,y,z,m,u,A,p,x),b.stroke()));u||A||p||!x?u||A||!p||x?!u&&!A&&p&&x?"frame"!=q?(b.begin(),g.moveSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),"double"==q&&(g.moveNWInner(b,d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),g.paintSWInner(b,
-d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p)),b.stroke()):(b.begin(),g.moveSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.lineNWInner(b,d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),g.paintSWInner(b,d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),b.close(),b.fillAndStroke()):u||!A||p||x?!u&&A&&!p&&x?"frame"!=q?(b.begin(),g.moveSW(b,d,f,c,e,l,I,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),"double"==
-q&&(g.moveNWInner(b,d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x)),b.stroke(),b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),"double"==q&&(g.moveSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A)),b.stroke()):(b.begin(),g.moveSW(b,d,f,c,e,l,I,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.lineNWInner(b,d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),b.close(),b.fillAndStroke(),b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,
-l,y,m,p),g.lineSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),b.close(),b.fillAndStroke()):!u&&A&&p&&!x?"frame"!=q?(b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),"double"==q&&(g.moveSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A)),b.stroke()):(b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,
-d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.lineSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),b.close(),b.fillAndStroke()):!u&&A&&p&&x?"frame"!=q?(b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),"double"==q&&(g.moveNWInner(b,
-d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),g.paintSWInner(b,d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A)),b.stroke()):(b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.lineNWInner(b,d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),g.paintSWInner(b,
-d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),b.close(),b.fillAndStroke()):!u||A||p||x?u&&!A&&!p&&x?"frame"!=q?(b.begin(),g.moveSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),"double"==q&&(g.moveNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x)),b.stroke()):
-(b.begin(),g.moveSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.lineNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),b.close(),b.fillAndStroke()):u&&!A&&p&&!x?"frame"!=q?(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),"double"==q&&(g.moveNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u)),b.stroke(),b.begin(),
-g.moveSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),"double"==q&&(g.moveSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p)),b.stroke()):(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.lineNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),b.close(),b.fillAndStroke(),b.begin(),g.moveSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.lineSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),b.close(),b.fillAndStroke()):
-u&&!A&&p&&x?"frame"!=q?(b.begin(),g.moveSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),"double"==q&&(g.moveNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),g.paintSWInner(b,d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p)),b.stroke()):(b.begin(),g.moveSE(b,d,f,c,e,l,y,
-m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.lineNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),g.paintSWInner(b,d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),b.close(),b.fillAndStroke()):u&&A&&!p&&!x?"frame"!=q?(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,
-A),g.paintNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),"double"==q&&(g.moveSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u)),b.stroke()):(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.paintNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.lineSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,
-c,e,l,I,m,n,x,u),b.close(),b.fillAndStroke()):u&&A&&!p&&x?"frame"!=q?(b.begin(),g.moveSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.paintNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),"double"==q&&(g.moveSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x)),b.stroke()):
-(b.begin(),g.moveSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.paintNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.lineSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),b.close(),b.fillAndStroke()):u&&A&&p&&!x?"frame"!=q?(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,
-x),g.paintTop(b,d,f,c,e,l,t,m,A),g.paintNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),"double"==q&&(g.moveSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u)),b.stroke()):(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.paintNE(b,d,f,c,e,l,t,
-m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.lineSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),b.close(),b.fillAndStroke()):u&&A&&p&&x&&("frame"!=q?(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.paintNE(b,d,f,c,e,l,t,m,
-u),g.paintRight(b,d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),b.close(),"double"==q&&(g.moveSWInner(b,d,f,c,e,l,z,m,n,x),g.paintSWInner(b,d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,
-e,l,z,m,n,p,x),b.close()),b.stroke()):(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.paintNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.paintSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.paintSW(b,d,f,c,e,l,z,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),b.close(),g.moveSWInner(b,d,f,c,e,l,z,m,n,x),g.paintSWInner(b,d,f,c,e,l,z,m,n,p),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),g.paintSEInner(b,d,f,c,e,l,y,m,n),g.paintRightInner(b,d,f,c,
-e,l,t,m,n,u,A),g.paintNEInner(b,d,f,c,e,l,t,m,n),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u),g.paintNWInner(b,d,f,c,e,l,I,m,n),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),b.close(),b.fillAndStroke())):"frame"!=q?(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),"double"==q&&(g.moveNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,e,l,I,m,n,x,u)),b.stroke()):(b.begin(),g.moveNW(b,d,f,c,e,l,I,m,x),g.paintTop(b,d,f,c,e,l,t,m,A),g.lineNEInner(b,d,f,c,e,l,t,m,n,A),g.paintTopInner(b,d,f,c,
-e,l,I,m,n,x,u),b.close(),b.fillAndStroke()):"frame"!=q?(b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),"double"==q&&(g.moveSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A)),b.stroke()):(b.begin(),g.moveNE(b,d,f,c,e,l,t,m,u),g.paintRight(b,d,f,c,e,l,y,m,p),g.lineSEInner(b,d,f,c,e,l,y,m,n,p),g.paintRightInner(b,d,f,c,e,l,t,m,n,u,A),b.close(),b.fillAndStroke()):"frame"!=q?(b.begin(),g.moveSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),"double"==q&&
-(g.moveSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p)),b.stroke()):(b.begin(),g.moveSE(b,d,f,c,e,l,y,m,A),g.paintBottom(b,d,f,c,e,l,z,m,x),g.lineSWInner(b,d,f,c,e,l,z,m,n,x),g.paintBottomInner(b,d,f,c,e,l,y,m,n,A,p),b.close(),b.fillAndStroke()):"frame"!=q?(b.begin(),g.moveSW(b,d,f,c,e,l,I,m,p),g.paintLeft(b,d,f,c,e,l,I,m,u),"double"==q&&(g.moveNWInner(b,d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x)),b.stroke()):(b.begin(),g.moveSW(b,d,f,c,e,l,I,m,p),g.paintLeft(b,
-d,f,c,e,l,I,m,u),g.lineNWInner(b,d,f,c,e,l,I,m,n,u,x),g.paintLeftInner(b,d,f,c,e,l,z,m,n,p,x),b.close(),b.fillAndStroke());b.begin();g.paintFolds(b,d,f,c,e,l,I,t,y,z,m,u,A,p,x);b.stroke()};Z.prototype.moveNW=function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==l&&"square"==g||!k?b.moveTo(0,0):b.moveTo(0,m)};Z.prototype.moveNE=function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==l&&"square"==g||!k?b.moveTo(c,0):b.moveTo(c-m,0)};Z.prototype.moveSE=function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==l&&
-"square"==g||!k?b.moveTo(c,e):b.moveTo(c,e-m)};Z.prototype.moveSW=function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==l&&"square"==g||!k?b.moveTo(0,e):b.moveTo(m,e)};Z.prototype.paintNW=function(b,d,f,c,e,g,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==g||"invRound"==l||"default"==l&&"invRound"==g){d=0;if("rounded"==l||"default"==l&&"rounded"==g)d=1;b.arcTo(m,m,0,0,d,m,0)}else("snip"==l||"default"==l&&"snip"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(m,0);else b.lineTo(0,0)};Z.prototype.paintTop=
-function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==l&&"square"==g||!k?b.lineTo(c,0):b.lineTo(c-m,0)};Z.prototype.paintNE=function(b,d,f,c,e,g,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==g||"invRound"==l||"default"==l&&"invRound"==g){d=0;if("rounded"==l||"default"==l&&"rounded"==g)d=1;b.arcTo(m,m,0,0,d,c,m)}else("snip"==l||"default"==l&&"snip"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(c,m);else b.lineTo(c,0)};Z.prototype.paintRight=function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==
-l&&"square"==g||!k?b.lineTo(c,e):b.lineTo(c,e-m)};Z.prototype.paintLeft=function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==l&&"square"==g||!k?b.lineTo(0,0):b.lineTo(0,m)};Z.prototype.paintSE=function(b,d,f,c,e,g,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==g||"invRound"==l||"default"==l&&"invRound"==g){d=0;if("rounded"==l||"default"==l&&"rounded"==g)d=1;b.arcTo(m,m,0,0,d,c-m,e)}else("snip"==l||"default"==l&&"snip"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(c-m,e);else b.lineTo(c,
-e)};Z.prototype.paintBottom=function(b,d,f,c,e,g,l,m,k){"square"==l||"default"==l&&"square"==g||!k?b.lineTo(0,e):b.lineTo(m,e)};Z.prototype.paintSW=function(b,d,f,c,e,g,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==g||"invRound"==l||"default"==l&&"invRound"==g){d=0;if("rounded"==l||"default"==l&&"rounded"==g)d=1;b.arcTo(m,m,0,0,d,0,e-m)}else("snip"==l||"default"==l&&"snip"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(0,e-m);else b.lineTo(0,e)};Z.prototype.paintNWInner=function(b,d,f,
-c,e,g,l,m,k){if("rounded"==l||"default"==l&&"rounded"==g)b.arcTo(m-.5*k,m-.5*k,0,0,0,k,.5*k+m);else if("invRound"==l||"default"==l&&"invRound"==g)b.arcTo(m+k,m+k,0,0,1,k,k+m);else if("snip"==l||"default"==l&&"snip"==g)b.lineTo(k,.5*k+m);else if("fold"==l||"default"==l&&"fold"==g)b.lineTo(k+m,k+m),b.lineTo(k,k+m)};Z.prototype.paintTopInner=function(b,d,f,c,e,g,l,m,k,n,q){n||q?!n&&q?b.lineTo(0,k):n&&!q?b.lineTo(k,0):n?"square"==l||"default"==l&&"square"==g?b.lineTo(k,k):"rounded"==l||"default"==l&&
-"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.lineTo(m+.5*k,k):b.lineTo(m+k,k):b.lineTo(0,k):b.lineTo(0,0)};Z.prototype.paintNEInner=function(b,d,f,c,e,g,l,m,k){if("rounded"==l||"default"==l&&"rounded"==g)b.arcTo(m-.5*k,m-.5*k,0,0,0,c-m-.5*k,k);else if("invRound"==l||"default"==l&&"invRound"==g)b.arcTo(m+k,m+k,0,0,1,c-m-k,k);else if("snip"==l||"default"==l&&"snip"==g)b.lineTo(c-m-.5*k,k);else if("fold"==l||"default"==l&&"fold"==g)b.lineTo(c-m-k,m+k),b.lineTo(c-m-k,k)};Z.prototype.paintRightInner=
-function(b,d,f,c,e,g,l,m,k,n,q){n||q?!n&&q?b.lineTo(c-k,0):n&&!q?b.lineTo(c,k):n?"square"==l||"default"==l&&"square"==g?b.lineTo(c-k,k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.lineTo(c-k,m+.5*k):b.lineTo(c-k,m+k):b.lineTo(c-k,0):b.lineTo(c,0)};Z.prototype.paintLeftInner=function(b,d,f,c,e,g,l,m,k,n,q){n||q?!n&&q?b.lineTo(k,e):n&&!q?b.lineTo(0,e-k):n?"square"==l||"default"==l&&"square"==g?b.lineTo(k,e-k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==
-l&&"snip"==g?b.lineTo(k,e-m-.5*k):b.lineTo(k,e-m-k):b.lineTo(k,e):b.lineTo(0,e)};Z.prototype.paintSEInner=function(b,d,f,c,e,g,l,m,k){if("rounded"==l||"default"==l&&"rounded"==g)b.arcTo(m-.5*k,m-.5*k,0,0,0,c-k,e-m-.5*k);else if("invRound"==l||"default"==l&&"invRound"==g)b.arcTo(m+k,m+k,0,0,1,c-k,e-m-k);else if("snip"==l||"default"==l&&"snip"==g)b.lineTo(c-k,e-m-.5*k);else if("fold"==l||"default"==l&&"fold"==g)b.lineTo(c-m-k,e-m-k),b.lineTo(c-k,e-m-k)};Z.prototype.paintBottomInner=function(b,d,f,c,
-e,g,l,m,k,n,q){n||q?!n&&q?b.lineTo(c,e-k):n&&!q?b.lineTo(c-k,e):"square"==l||"default"==l&&"square"==g||!n?b.lineTo(c-k,e-k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.lineTo(c-m-.5*k,e-k):b.lineTo(c-m-k,e-k):b.lineTo(c,e)};Z.prototype.paintSWInner=function(b,d,f,c,e,g,l,m,k,n){if(!n)b.lineTo(k,e);else if("square"==l||"default"==l&&"square"==g)b.lineTo(k,e-k);else if("rounded"==l||"default"==l&&"rounded"==g)b.arcTo(m-.5*k,m-.5*k,0,0,0,m+.5*k,e-k);else if("invRound"==
-l||"default"==l&&"invRound"==g)b.arcTo(m+k,m+k,0,0,1,m+k,e-k);else if("snip"==l||"default"==l&&"snip"==g)b.lineTo(m+.5*k,e-k);else if("fold"==l||"default"==l&&"fold"==g)b.lineTo(k+m,e-m-k),b.lineTo(k+m,e-k)};Z.prototype.moveSWInner=function(b,d,f,c,e,g,l,m,k,n){n?"square"==l||"default"==l&&"square"==g?b.moveTo(k,e-k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.moveTo(k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.moveTo(k,
-e-m-k):b.moveTo(0,e-k)};Z.prototype.lineSWInner=function(b,d,f,c,e,g,l,m,k,n){n?"square"==l||"default"==l&&"square"==g?b.lineTo(k,e-k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.lineTo(k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(k,e-m-k):b.lineTo(0,e-k)};Z.prototype.moveSEInner=function(b,d,f,c,e,g,l,m,k,n){n?"square"==l||"default"==l&&"square"==g?b.moveTo(c-k,e-k):"rounded"==l||"default"==l&&"rounded"==
-g||"snip"==l||"default"==l&&"snip"==g?b.moveTo(c-k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.moveTo(c-k,e-m-k):b.moveTo(c-k,e)};Z.prototype.lineSEInner=function(b,d,f,c,e,g,l,m,k,n){n?"square"==l||"default"==l&&"square"==g?b.lineTo(c-k,e-k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.lineTo(c-k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(c-k,e-m-k):b.lineTo(c-
-k,e)};Z.prototype.moveNEInner=function(b,d,f,c,e,g,l,m,k,n){n?"square"==l||"default"==l&&"square"==g||n?b.moveTo(c-k,k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.moveTo(c-k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.moveTo(c-k,m+k):b.moveTo(c,k)};Z.prototype.lineNEInner=function(b,d,f,c,e,g,l,m,k,n){n?"square"==l||"default"==l&&"square"==g||n?b.lineTo(c-k,k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==
-l&&"snip"==g?b.lineTo(c-k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(c-k,m+k):b.lineTo(c,k)};Z.prototype.moveNWInner=function(b,d,f,c,e,g,l,m,k,n,q){n||q?!n&&q?b.moveTo(k,0):n&&!q?b.moveTo(0,k):"square"==l||"default"==l&&"square"==g?b.moveTo(k,k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.moveTo(k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.moveTo(k,m+k):b.moveTo(0,
-0)};Z.prototype.lineNWInner=function(b,d,f,c,e,g,l,m,k,n,q){n||q?!n&&q?b.lineTo(k,0):n&&!q?b.lineTo(0,k):"square"==l||"default"==l&&"square"==g?b.lineTo(k,k):"rounded"==l||"default"==l&&"rounded"==g||"snip"==l||"default"==l&&"snip"==g?b.lineTo(k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==g||"fold"==l||"default"==l&&"fold"==g)&&b.lineTo(k,m+k):b.lineTo(0,0)};Z.prototype.paintFolds=function(b,d,f,c,e,g,l,m,k,n,q,G,u,A,v){if("fold"==g||"fold"==l||"fold"==m||"fold"==k||"fold"==n)("fold"==l||"default"==
-l&&"fold"==g)&&G&&v&&(b.moveTo(0,q),b.lineTo(q,q),b.lineTo(q,0)),("fold"==m||"default"==m&&"fold"==g)&&G&&u&&(b.moveTo(c-q,0),b.lineTo(c-q,q),b.lineTo(c,q)),("fold"==k||"default"==k&&"fold"==g)&&A&&u&&(b.moveTo(c-q,e),b.lineTo(c-q,e-q),b.lineTo(c,e-q)),("fold"==n||"default"==n&&"fold"==g)&&A&&v&&(b.moveTo(0,e-q),b.lineTo(q,e-q),b.lineTo(q,e))};mxCellRenderer.registerShape(Z.prototype.cst.RECT2,Z);Z.prototype.constraints=null;mxUtils.extend(Fa,mxConnector);Fa.prototype.origPaintEdgeShape=Fa.prototype.paintEdgeShape;
-Fa.prototype.paintEdgeShape=function(b,d,f){for(var c=[],e=0;e<d.length;e++)c.push(mxUtils.clone(d[e]));var e=b.state.dashed,g=b.state.fixDash;Fa.prototype.origPaintEdgeShape.apply(this,[b,c,f]);3<=b.state.strokeWidth&&(c=mxUtils.getValue(this.style,"fillColor",null),null!=c&&(b.setStrokeColor(c),b.setStrokeWidth(b.state.strokeWidth-2),b.setDashed(e,g),Fa.prototype.origPaintEdgeShape.apply(this,[b,d,f])))};mxCellRenderer.registerShape("filledEdge",Fa);"undefined"!==typeof StyleFormatPanel&&function(){var b=
-StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var d=this.format.getSelectionState(),f=b.apply(this,arguments);"umlFrame"==d.style.shape&&f.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return f}}();mxMarker.addMarker("dash",function(b,d,f,c,e,g,l,m,k,n){var q=e*(l+k+1),G=g*(l+k+1);return function(){b.begin();b.moveTo(c.x-q/2-G/2,c.y-G/2+q/2);b.lineTo(c.x+G/2-3*q/2,c.y-3*G/2-q/2);b.stroke()}});mxMarker.addMarker("box",
-function(b,d,f,c,e,g,l,m,k,n){var q=e*(l+k+1),G=g*(l+k+1),u=c.x+q/2,A=c.y+G/2;c.x-=q;c.y-=G;return function(){b.begin();b.moveTo(u-q/2-G/2,A-G/2+q/2);b.lineTo(u-q/2+G/2,A-G/2-q/2);b.lineTo(u+G/2-3*q/2,A-3*G/2-q/2);b.lineTo(u-G/2-3*q/2,A-3*G/2+q/2);b.close();n?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("cross",function(b,d,f,c,e,g,l,m,k,n){var q=e*(l+k+1),G=g*(l+k+1);return function(){b.begin();b.moveTo(c.x-q/2-G/2,c.y-G/2+q/2);b.lineTo(c.x+G/2-3*q/2,c.y-3*G/2-q/2);b.moveTo(c.x-q/2+G/2,c.y-
-G/2-q/2);b.lineTo(c.x-G/2-3*q/2,c.y-3*G/2+q/2);b.stroke()}});mxMarker.addMarker("circle",Na);mxMarker.addMarker("circlePlus",function(b,d,f,c,e,g,l,m,k,n){var q=c.clone(),G=Na.apply(this,arguments),u=e*(l+2*k),A=g*(l+2*k);return function(){G.apply(this,arguments);b.begin();b.moveTo(q.x-e*k,q.y-g*k);b.lineTo(q.x-2*u+e*k,q.y-2*A+g*k);b.moveTo(q.x-u-A+g*k,q.y-A+u-e*k);b.lineTo(q.x+A-u-g*k,q.y-A-u+e*k);b.stroke()}});mxMarker.addMarker("halfCircle",function(b,d,f,c,e,g,l,m,k,q){var n=e*(l+k+1),G=g*(l+
-k+1),u=c.clone();c.x-=n;c.y-=G;return function(){b.begin();b.moveTo(u.x-G,u.y+n);b.quadTo(c.x-G,c.y+n,c.x,c.y);b.quadTo(c.x+G,c.y-n,u.x+G,u.y-n);b.stroke()}});mxMarker.addMarker("async",function(b,d,f,c,e,g,l,m,k,n){d=e*k*1.118;f=g*k*1.118;e*=l+k;g*=l+k;var q=c.clone();q.x-=d;q.y-=f;c.x+=1*-e-d;c.y+=1*-g-f;return function(){b.begin();b.moveTo(q.x,q.y);m?b.lineTo(q.x-e-g/2,q.y-g+e/2):b.lineTo(q.x+g/2-e,q.y-g-e/2);b.lineTo(q.x-e,q.y-g);b.close();n?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("openAsync",
-function(b){b=null!=b?b:2;return function(d,f,c,e,g,l,m,k,q,n){g*=m+q;l*=m+q;var G=e.clone();return function(){d.begin();d.moveTo(G.x,G.y);k?d.lineTo(G.x-g-l/b,G.y-l+g/b):d.lineTo(G.x+l/b-g,G.y-l-g/b);d.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var $a=function(b,d,f){return Ma(b,["width"],d,function(d,c,e,g,l){l=b.shape.getEdgeWidth()*b.view.scale+f;return new mxPoint(g.x+c*d/4+e*l/2,g.y+e*d/4-c*l/2)},function(d,c,e,g,l,m){d=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,l.x,l.y,m.x,m.y));b.style.width=
-Math.round(2*d)/b.view.scale-f})},Ma=function(b,d,f,c,e){return ga(b,d,function(d){var e=b.absolutePoints,g=e.length-1;d=b.view.translate;var l=b.view.scale,m=f?e[0]:e[g],e=f?e[1]:e[g-1],g=e.x-m.x,k=e.y-m.y,q=Math.sqrt(g*g+k*k),m=c.call(this,q,g/q,k/q,m,e);return new mxPoint(m.x/l-d.x,m.y/l-d.y)},function(d,c,g){var l=b.absolutePoints,m=l.length-1;d=b.view.translate;var k=b.view.scale,q=f?l[0]:l[m],l=f?l[1]:l[m-1],m=l.x-q.x,n=l.y-q.y,G=Math.sqrt(m*m+n*n);c.x=(c.x+d.x)*k;c.y=(c.y+d.y)*k;e.call(this,
-G,m/G,n/G,q,l,c,g)})},Ha=function(b){return function(d){return[ga(d,["arrowWidth","arrowSize"],function(d){var f=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",da.prototype.arrowWidth))),c=Math.max(0,Math.min(b,mxUtils.getValue(this.state.style,"arrowSize",da.prototype.arrowSize)));return new mxPoint(d.x+(1-c)*d.width,d.y+(1-f)*d.height/2)},function(d,f){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(d.y+d.height/2-f.y)/d.height*2));this.state.style.arrowSize=Math.max(0,
-Math.min(b,(d.x+d.width-f.x)/d.width))})]}},Xa=function(b){return function(d){return[ga(d,["size"],function(d){var f=Math.max(0,Math.min(.5*d.height,parseFloat(mxUtils.getValue(this.state.style,"size",b))));return new mxPoint(d.x,d.y+f)},function(b,d){this.state.style.size=Math.max(0,d.y-b.y)},!0)]}},Va=function(b,d,f){return function(c){var e=[ga(c,["size"],function(f){var c=Math.max(0,Math.min(f.width,Math.min(f.height,parseFloat(mxUtils.getValue(this.state.style,"size",d)))))*b;return new mxPoint(f.x+
-c,f.y+c)},function(d,f){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(d.width,f.x-d.x),Math.min(d.height,f.y-d.y)))/b)},!1)];f&&mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ga(c));return e}},Oa=function(b,d,f,c,e){f=null!=f?f:.5;return function(g){var l=[ga(g,["size"],function(d){var f=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,c=parseFloat(mxUtils.getValue(this.state.style,"size",f?e:b));return new mxPoint(d.x+Math.max(0,Math.min(.5*d.width,
-c*(f?1:d.width))),d.getCenterY())},function(b,d,c){b=null!=e&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?d.x-b.x:Math.max(0,Math.min(f,(d.x-b.x)/b.width));this.state.style.size=b},!1,c)];d&&mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(Ga(g));return l}},Ya=function(b,d,f){b=null!=b?b:.5;return function(c){var e=[ga(c,["size"],function(c){var e=null!=f?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,g=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,
-"size",e?f:d)));return new mxPoint(c.x+Math.min(.75*c.width*b,g*(e?.75:.75*c.width)),c.y+c.height/4)},function(d,c){var e=null!=f&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?c.x-d.x:Math.max(0,Math.min(b,(c.x-d.x)/d.width*.75));this.state.style.size=e},!1,!0)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ga(c));return e}},La=function(){return function(b){var d=[];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d}},Ga=function(b,d){return ga(b,
-[mxConstants.STYLE_ARCSIZE],function(f){var c=null!=d?d:f.height/8;if("1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(f.x+f.width-Math.min(f.width/2,e),f.y+c)}e=Math.max(0,parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(f.x+f.width-Math.min(Math.max(f.width/2,f.height/2),Math.min(f.width,f.height)*
-e),f.y+c)},function(d,f,c){"1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(d.width,2*(d.x+d.width-f.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(d.width-f.x+d.x)/Math.min(d.width,d.height))))})},ga=function(b,d,f,c,e,g,l){var m=new mxHandle(b,null,mxVertexHandler.prototype.secondaryHandleImage);m.execute=function(b){for(var f=0;f<d.length;f++)this.copyStyle(d[f]);
-l&&l(b)};m.getPosition=f;m.setPosition=c;m.ignoreGrid=null!=e?e:!0;if(g){var k=m.positionChanged;m.positionChanged=function(){k.apply(this,arguments);b.view.invalidate(this.state.cell);b.view.validate()}}return m},Pa={link:function(b){return[$a(b,!0,10),$a(b,!1,10)]},flexArrow:function(b){var d=b.view.graph.gridSize/b.view.scale,f=[];mxUtils.getValue(b.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(f.push(Ma(b,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
-!0,function(d,f,c,e,g){d=(b.shape.getEdgeWidth()-b.shape.strokewidth)*b.view.scale;g=3*mxUtils.getNumber(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+f*(g+b.shape.strokewidth*b.view.scale)+c*d/2,e.y+c*(g+b.shape.strokewidth*b.view.scale)-f*d/2)},function(f,c,e,g,l,m,k){f=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-c,m.x,m.y);b.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-b.shape.strokewidth)/
-3)/100/b.view.scale;b.style.width=Math.round(2*f)/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(b.style[mxConstants.STYLE_STARTSIZE])-parseFloat(b.style[mxConstants.STYLE_ENDSIZE]))<d/6&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE])})),f.push(Ma(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(d,
-f,c,e,g){d=(b.shape.getStartArrowWidth()-b.shape.strokewidth)*b.view.scale;g=3*mxUtils.getNumber(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+f*(g+b.shape.strokewidth*b.view.scale)+c*d/2,e.y+c*(g+b.shape.strokewidth*b.view.scale)-f*d/2)},function(f,c,e,g,l,m,k){f=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-c,m.x,m.y);b.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-b.shape.strokewidth)/3)/
-100/b.view.scale;b.style.startWidth=Math.max(0,Math.round(2*f)-b.shape.getEdgeWidth())/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE],b.style.endWidth=b.style.startWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(b.style[mxConstants.STYLE_STARTSIZE])-parseFloat(b.style[mxConstants.STYLE_ENDSIZE]))<d/6&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(b.style.startWidth)-
-parseFloat(b.style.endWidth))<d&&(b.style.startWidth=b.style.endWidth))})));mxUtils.getValue(b.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(f.push(Ma(b,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(d,f,c,e,g){d=(b.shape.getEdgeWidth()-b.shape.strokewidth)*b.view.scale;g=3*mxUtils.getNumber(b.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+f*(g+b.shape.strokewidth*b.view.scale)-c*d/2,e.y+c*(g+b.shape.strokewidth*
-b.view.scale)+f*d/2)},function(f,c,e,g,l,m,k){f=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-c,m.x,m.y);b.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-b.shape.strokewidth)/3)/100/b.view.scale;b.style.width=Math.round(2*f)/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<
-d/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE])})),f.push(Ma(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(d,f,c,e,g){d=(b.shape.getEndArrowWidth()-b.shape.strokewidth)*b.view.scale;g=3*mxUtils.getNumber(b.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+f*(g+b.shape.strokewidth*b.view.scale)-c*d/2,e.y+c*(g+b.shape.strokewidth*b.view.scale)+f*d/2)},function(f,c,e,g,l,m,k){f=
-Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(g.x,g.y,g.x+e,g.y-c,m.x,m.y);b.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-b.shape.strokewidth)/3)/100/b.view.scale;b.style.endWidth=Math.max(0,Math.round(2*f)-b.shape.getEdgeWidth())/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE],b.style.startWidth=b.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-
-parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<d/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(b.style.endWidth)-parseFloat(b.style.startWidth))<d&&(b.style.endWidth=b.style.startWidth))})));return f},swimlane:function(b){var d=[];if(mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED)){var f=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));d.push(Ga(b,f/2))}d.push(ga(b,[mxConstants.STYLE_STARTSIZE],
-function(d){var f=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(d.getCenterX(),d.y+Math.max(0,Math.min(d.height,f))):new mxPoint(d.x+Math.max(0,Math.min(d.width,f)),d.getCenterY())},function(d,f){b.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(d.height,f.y-d.y))):Math.round(Math.max(0,
-Math.min(d.width,f.x-d.x)))},!1,null,function(d){if(mxEvent.isControlDown(d.getEvent())&&(d=b.view.graph,d.isTableRow(b.cell)||d.isTableCell(b.cell))){for(var f=d.getSwimlaneDirection(b.style),c=d.model.getParent(b.cell),c=d.model.getChildCells(c,!0),e=[],g=0;g<c.length;g++)c[g]!=b.cell&&d.isSwimlane(c[g])&&d.getSwimlaneDirection(d.getCurrentCellStyle(c[g]))==f&&e.push(c[g]);d.setCellStyles(mxConstants.STYLE_STARTSIZE,b.style[mxConstants.STYLE_STARTSIZE],e)}}));return d},label:La(),ext:La(),rectangle:La(),
+dispName:"Fold"}]}];Y.prototype.paintVertexShape=function(b,d,g,c,e){b.translate(d,g);this.strictDrawShape(b,0,0,c,e)};Y.prototype.strictDrawShape=function(b,d,g,c,e,f){var l=f&&f.rectStyle?f.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),k=f&&f.absoluteCornerSize?f.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",this.absoluteCornerSize),m=f&&f.size?f.size:Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),q=f&&f.rectOutline?f.rectOutline:
+mxUtils.getValue(this.style,"rectOutline",this.rectOutline),n=f&&f.indent?f.indent:Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),G=f&&f.dashed?f.dashed:mxUtils.getValue(this.style,"dashed",!1),A=f&&f.dashPattern?f.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),v=f&&f.relIndent?f.relIndent:Math.max(0,Math.min(50,n)),u=f&&f.top?f.top:mxUtils.getValue(this.style,"top",!0),p=f&&f.right?f.right:mxUtils.getValue(this.style,"right",!0),B=f&&f.bottom?f.bottom:
+mxUtils.getValue(this.style,"bottom",!0),x=f&&f.left?f.left:mxUtils.getValue(this.style,"left",!0),I=f&&f.topLeftStyle?f.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),t=f&&f.topRightStyle?f.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),y=f&&f.bottomRightStyle?f.bottomRightStyle:mxUtils.getValue(this.style,"bottomRightStyle","default"),z=f&&f.bottomLeftStyle?f.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),S=f&&f.fillColor?f.fillColor:
+mxUtils.getValue(this.style,"fillColor","#ffffff");f&&f.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var C=f&&f.strokeWidth?f.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),L=f&&f.fillColor2?f.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),ca=f&&f.gradientColor2?f.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),V=f&&f.gradientDirection2?f.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Da=f&&f.opacity?f.opacity:
+mxUtils.getValue(this.style,"opacity","100"),va=Math.max(0,Math.min(50,m));f=Y.prototype;b.setDashed(G);A&&""!=A&&b.setDashPattern(A);b.setStrokeWidth(C);m=Math.min(.5*e,.5*c,m);k||(m=va*Math.min(c,e)/100);m=Math.min(m,.5*Math.min(c,e));k||(n=Math.min(v*Math.min(c,e)/100));n=Math.min(n,.5*Math.min(c,e)-m);(u||p||B||x)&&"frame"!=q&&(b.begin(),u?f.moveNW(b,d,g,c,e,l,I,m,x):b.moveTo(0,0),u&&f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),p&&f.paintNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,
+c,e,l,y,m,B),B&&f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),x&&f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),b.close(),b.fill(),b.setShadow(!1),b.setFillColor(L),G=k=Da,"none"==L&&(k=0),"none"==ca&&(G=0),b.setGradient(L,ca,0,0,c,e,V,k,G),b.begin(),u?f.moveNWInner(b,d,g,c,e,l,I,m,n,u,x):b.moveTo(n,0),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),x&&B&&f.paintSWInner(b,d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),B&&p&&f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,
+d,g,c,e,l,t,m,n,u,p),p&&u&&f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),u&&x&&f.paintNWInner(b,d,g,c,e,l,I,m,n),b.fill(),"none"==S&&(b.begin(),f.paintFolds(b,d,g,c,e,l,I,t,y,z,m,u,p,B,x),b.stroke()));u||p||B||!x?u||p||!B||x?!u&&!p&&B&&x?"frame"!=q?(b.begin(),f.moveSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),"double"==q&&(f.moveNWInner(b,d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),f.paintSWInner(b,
+d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B)),b.stroke()):(b.begin(),f.moveSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.lineNWInner(b,d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),f.paintSWInner(b,d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),b.close(),b.fillAndStroke()):u||!p||B||x?!u&&p&&!B&&x?"frame"!=q?(b.begin(),f.moveSW(b,d,g,c,e,l,I,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),"double"==
+q&&(f.moveNWInner(b,d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x)),b.stroke(),b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),"double"==q&&(f.moveSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p)),b.stroke()):(b.begin(),f.moveSW(b,d,g,c,e,l,I,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.lineNWInner(b,d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),b.close(),b.fillAndStroke(),b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,
+l,y,m,B),f.lineSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),b.close(),b.fillAndStroke()):!u&&p&&B&&!x?"frame"!=q?(b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),"double"==q&&(f.moveSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p)),b.stroke()):(b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,
+d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.lineSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),b.close(),b.fillAndStroke()):!u&&p&&B&&x?"frame"!=q?(b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),"double"==q&&(f.moveNWInner(b,
+d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),f.paintSWInner(b,d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p)),b.stroke()):(b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.lineNWInner(b,d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),f.paintSWInner(b,
+d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),b.close(),b.fillAndStroke()):!u||p||B||x?u&&!p&&!B&&x?"frame"!=q?(b.begin(),f.moveSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),"double"==q&&(f.moveNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x)),b.stroke()):
+(b.begin(),f.moveSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.lineNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),b.close(),b.fillAndStroke()):u&&!p&&B&&!x?"frame"!=q?(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),"double"==q&&(f.moveNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u)),b.stroke(),b.begin(),
+f.moveSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),"double"==q&&(f.moveSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B)),b.stroke()):(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.lineNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),b.close(),b.fillAndStroke(),b.begin(),f.moveSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.lineSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),b.close(),b.fillAndStroke()):
+u&&!p&&B&&x?"frame"!=q?(b.begin(),f.moveSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),"double"==q&&(f.moveNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),f.paintSWInner(b,d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B)),b.stroke()):(b.begin(),f.moveSE(b,d,g,c,e,l,y,
+m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.lineNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),f.paintSWInner(b,d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),b.close(),b.fillAndStroke()):u&&p&&!B&&!x?"frame"!=q?(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,
+p),f.paintNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),"double"==q&&(f.moveSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u)),b.stroke()):(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.paintNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.lineSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,
+c,e,l,I,m,n,x,u),b.close(),b.fillAndStroke()):u&&p&&!B&&x?"frame"!=q?(b.begin(),f.moveSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.paintNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),"double"==q&&(f.moveSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x)),b.stroke()):
+(b.begin(),f.moveSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.paintNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.lineSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),b.close(),b.fillAndStroke()):u&&p&&B&&!x?"frame"!=q?(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,
+x),f.paintTop(b,d,g,c,e,l,t,m,p),f.paintNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),"double"==q&&(f.moveSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u)),b.stroke()):(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.paintNE(b,d,g,c,e,l,t,
+m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.lineSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),b.close(),b.fillAndStroke()):u&&p&&B&&x&&("frame"!=q?(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.paintNE(b,d,g,c,e,l,t,m,
+u),f.paintRight(b,d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),b.close(),"double"==q&&(f.moveSWInner(b,d,g,c,e,l,z,m,n,x),f.paintSWInner(b,d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,
+e,l,z,m,n,B,x),b.close()),b.stroke()):(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.paintNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.paintSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.paintSW(b,d,g,c,e,l,z,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),b.close(),f.moveSWInner(b,d,g,c,e,l,z,m,n,x),f.paintSWInner(b,d,g,c,e,l,z,m,n,B),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),f.paintSEInner(b,d,g,c,e,l,y,m,n),f.paintRightInner(b,d,g,c,
+e,l,t,m,n,u,p),f.paintNEInner(b,d,g,c,e,l,t,m,n),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u),f.paintNWInner(b,d,g,c,e,l,I,m,n),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),b.close(),b.fillAndStroke())):"frame"!=q?(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),"double"==q&&(f.moveNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,e,l,I,m,n,x,u)),b.stroke()):(b.begin(),f.moveNW(b,d,g,c,e,l,I,m,x),f.paintTop(b,d,g,c,e,l,t,m,p),f.lineNEInner(b,d,g,c,e,l,t,m,n,p),f.paintTopInner(b,d,g,c,
+e,l,I,m,n,x,u),b.close(),b.fillAndStroke()):"frame"!=q?(b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),"double"==q&&(f.moveSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p)),b.stroke()):(b.begin(),f.moveNE(b,d,g,c,e,l,t,m,u),f.paintRight(b,d,g,c,e,l,y,m,B),f.lineSEInner(b,d,g,c,e,l,y,m,n,B),f.paintRightInner(b,d,g,c,e,l,t,m,n,u,p),b.close(),b.fillAndStroke()):"frame"!=q?(b.begin(),f.moveSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),"double"==q&&
+(f.moveSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B)),b.stroke()):(b.begin(),f.moveSE(b,d,g,c,e,l,y,m,p),f.paintBottom(b,d,g,c,e,l,z,m,x),f.lineSWInner(b,d,g,c,e,l,z,m,n,x),f.paintBottomInner(b,d,g,c,e,l,y,m,n,p,B),b.close(),b.fillAndStroke()):"frame"!=q?(b.begin(),f.moveSW(b,d,g,c,e,l,I,m,B),f.paintLeft(b,d,g,c,e,l,I,m,u),"double"==q&&(f.moveNWInner(b,d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x)),b.stroke()):(b.begin(),f.moveSW(b,d,g,c,e,l,I,m,B),f.paintLeft(b,
+d,g,c,e,l,I,m,u),f.lineNWInner(b,d,g,c,e,l,I,m,n,u,x),f.paintLeftInner(b,d,g,c,e,l,z,m,n,B,x),b.close(),b.fillAndStroke());b.begin();f.paintFolds(b,d,g,c,e,l,I,t,y,z,m,u,p,B,x);b.stroke()};Y.prototype.moveNW=function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==l&&"square"==f||!k?b.moveTo(0,0):b.moveTo(0,m)};Y.prototype.moveNE=function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==l&&"square"==f||!k?b.moveTo(c,0):b.moveTo(c-m,0)};Y.prototype.moveSE=function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==l&&
+"square"==f||!k?b.moveTo(c,e):b.moveTo(c,e-m)};Y.prototype.moveSW=function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==l&&"square"==f||!k?b.moveTo(0,e):b.moveTo(m,e)};Y.prototype.paintNW=function(b,d,g,c,e,f,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==f||"invRound"==l||"default"==l&&"invRound"==f){d=0;if("rounded"==l||"default"==l&&"rounded"==f)d=1;b.arcTo(m,m,0,0,d,m,0)}else("snip"==l||"default"==l&&"snip"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(m,0);else b.lineTo(0,0)};Y.prototype.paintTop=
+function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==l&&"square"==f||!k?b.lineTo(c,0):b.lineTo(c-m,0)};Y.prototype.paintNE=function(b,d,g,c,e,f,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==f||"invRound"==l||"default"==l&&"invRound"==f){d=0;if("rounded"==l||"default"==l&&"rounded"==f)d=1;b.arcTo(m,m,0,0,d,c,m)}else("snip"==l||"default"==l&&"snip"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(c,m);else b.lineTo(c,0)};Y.prototype.paintRight=function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==
+l&&"square"==f||!k?b.lineTo(c,e):b.lineTo(c,e-m)};Y.prototype.paintLeft=function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==l&&"square"==f||!k?b.lineTo(0,0):b.lineTo(0,m)};Y.prototype.paintSE=function(b,d,g,c,e,f,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==f||"invRound"==l||"default"==l&&"invRound"==f){d=0;if("rounded"==l||"default"==l&&"rounded"==f)d=1;b.arcTo(m,m,0,0,d,c-m,e)}else("snip"==l||"default"==l&&"snip"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(c-m,e);else b.lineTo(c,
+e)};Y.prototype.paintBottom=function(b,d,g,c,e,f,l,m,k){"square"==l||"default"==l&&"square"==f||!k?b.lineTo(0,e):b.lineTo(m,e)};Y.prototype.paintSW=function(b,d,g,c,e,f,l,m,k){if(k)if("rounded"==l||"default"==l&&"rounded"==f||"invRound"==l||"default"==l&&"invRound"==f){d=0;if("rounded"==l||"default"==l&&"rounded"==f)d=1;b.arcTo(m,m,0,0,d,0,e-m)}else("snip"==l||"default"==l&&"snip"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(0,e-m);else b.lineTo(0,e)};Y.prototype.paintNWInner=function(b,d,g,
+c,e,f,l,m,k){if("rounded"==l||"default"==l&&"rounded"==f)b.arcTo(m-.5*k,m-.5*k,0,0,0,k,.5*k+m);else if("invRound"==l||"default"==l&&"invRound"==f)b.arcTo(m+k,m+k,0,0,1,k,k+m);else if("snip"==l||"default"==l&&"snip"==f)b.lineTo(k,.5*k+m);else if("fold"==l||"default"==l&&"fold"==f)b.lineTo(k+m,k+m),b.lineTo(k,k+m)};Y.prototype.paintTopInner=function(b,d,g,c,e,f,l,m,k,n,q){n||q?!n&&q?b.lineTo(0,k):n&&!q?b.lineTo(k,0):n?"square"==l||"default"==l&&"square"==f?b.lineTo(k,k):"rounded"==l||"default"==l&&
+"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.lineTo(m+.5*k,k):b.lineTo(m+k,k):b.lineTo(0,k):b.lineTo(0,0)};Y.prototype.paintNEInner=function(b,d,g,c,e,f,l,m,k){if("rounded"==l||"default"==l&&"rounded"==f)b.arcTo(m-.5*k,m-.5*k,0,0,0,c-m-.5*k,k);else if("invRound"==l||"default"==l&&"invRound"==f)b.arcTo(m+k,m+k,0,0,1,c-m-k,k);else if("snip"==l||"default"==l&&"snip"==f)b.lineTo(c-m-.5*k,k);else if("fold"==l||"default"==l&&"fold"==f)b.lineTo(c-m-k,m+k),b.lineTo(c-m-k,k)};Y.prototype.paintRightInner=
+function(b,d,g,c,e,f,l,m,k,n,q){n||q?!n&&q?b.lineTo(c-k,0):n&&!q?b.lineTo(c,k):n?"square"==l||"default"==l&&"square"==f?b.lineTo(c-k,k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.lineTo(c-k,m+.5*k):b.lineTo(c-k,m+k):b.lineTo(c-k,0):b.lineTo(c,0)};Y.prototype.paintLeftInner=function(b,d,g,c,e,f,l,m,k,n,q){n||q?!n&&q?b.lineTo(k,e):n&&!q?b.lineTo(0,e-k):n?"square"==l||"default"==l&&"square"==f?b.lineTo(k,e-k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==
+l&&"snip"==f?b.lineTo(k,e-m-.5*k):b.lineTo(k,e-m-k):b.lineTo(k,e):b.lineTo(0,e)};Y.prototype.paintSEInner=function(b,d,g,c,e,f,l,m,k){if("rounded"==l||"default"==l&&"rounded"==f)b.arcTo(m-.5*k,m-.5*k,0,0,0,c-k,e-m-.5*k);else if("invRound"==l||"default"==l&&"invRound"==f)b.arcTo(m+k,m+k,0,0,1,c-k,e-m-k);else if("snip"==l||"default"==l&&"snip"==f)b.lineTo(c-k,e-m-.5*k);else if("fold"==l||"default"==l&&"fold"==f)b.lineTo(c-m-k,e-m-k),b.lineTo(c-k,e-m-k)};Y.prototype.paintBottomInner=function(b,d,g,c,
+e,f,l,m,k,n,q){n||q?!n&&q?b.lineTo(c,e-k):n&&!q?b.lineTo(c-k,e):"square"==l||"default"==l&&"square"==f||!n?b.lineTo(c-k,e-k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.lineTo(c-m-.5*k,e-k):b.lineTo(c-m-k,e-k):b.lineTo(c,e)};Y.prototype.paintSWInner=function(b,d,g,c,e,f,l,m,k,n){if(!n)b.lineTo(k,e);else if("square"==l||"default"==l&&"square"==f)b.lineTo(k,e-k);else if("rounded"==l||"default"==l&&"rounded"==f)b.arcTo(m-.5*k,m-.5*k,0,0,0,m+.5*k,e-k);else if("invRound"==
+l||"default"==l&&"invRound"==f)b.arcTo(m+k,m+k,0,0,1,m+k,e-k);else if("snip"==l||"default"==l&&"snip"==f)b.lineTo(m+.5*k,e-k);else if("fold"==l||"default"==l&&"fold"==f)b.lineTo(k+m,e-m-k),b.lineTo(k+m,e-k)};Y.prototype.moveSWInner=function(b,d,g,c,e,f,l,m,k,n){n?"square"==l||"default"==l&&"square"==f?b.moveTo(k,e-k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.moveTo(k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.moveTo(k,
+e-m-k):b.moveTo(0,e-k)};Y.prototype.lineSWInner=function(b,d,g,c,e,f,l,m,k,n){n?"square"==l||"default"==l&&"square"==f?b.lineTo(k,e-k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.lineTo(k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(k,e-m-k):b.lineTo(0,e-k)};Y.prototype.moveSEInner=function(b,d,g,c,e,f,l,m,k,n){n?"square"==l||"default"==l&&"square"==f?b.moveTo(c-k,e-k):"rounded"==l||"default"==l&&"rounded"==
+f||"snip"==l||"default"==l&&"snip"==f?b.moveTo(c-k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.moveTo(c-k,e-m-k):b.moveTo(c-k,e)};Y.prototype.lineSEInner=function(b,d,g,c,e,f,l,m,k,n){n?"square"==l||"default"==l&&"square"==f?b.lineTo(c-k,e-k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.lineTo(c-k,e-m-.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(c-k,e-m-k):b.lineTo(c-
+k,e)};Y.prototype.moveNEInner=function(b,d,g,c,e,f,l,m,k,n){n?"square"==l||"default"==l&&"square"==f||n?b.moveTo(c-k,k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.moveTo(c-k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.moveTo(c-k,m+k):b.moveTo(c,k)};Y.prototype.lineNEInner=function(b,d,g,c,e,f,l,m,k,n){n?"square"==l||"default"==l&&"square"==f||n?b.lineTo(c-k,k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==
+l&&"snip"==f?b.lineTo(c-k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(c-k,m+k):b.lineTo(c,k)};Y.prototype.moveNWInner=function(b,d,g,c,e,f,l,m,k,n,q){n||q?!n&&q?b.moveTo(k,0):n&&!q?b.moveTo(0,k):"square"==l||"default"==l&&"square"==f?b.moveTo(k,k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.moveTo(k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.moveTo(k,m+k):b.moveTo(0,
+0)};Y.prototype.lineNWInner=function(b,d,g,c,e,f,l,m,k,n,q){n||q?!n&&q?b.lineTo(k,0):n&&!q?b.lineTo(0,k):"square"==l||"default"==l&&"square"==f?b.lineTo(k,k):"rounded"==l||"default"==l&&"rounded"==f||"snip"==l||"default"==l&&"snip"==f?b.lineTo(k,m+.5*k):("invRound"==l||"default"==l&&"invRound"==f||"fold"==l||"default"==l&&"fold"==f)&&b.lineTo(k,m+k):b.lineTo(0,0)};Y.prototype.paintFolds=function(b,d,g,c,e,f,l,m,k,n,q,G,u,v,p){if("fold"==f||"fold"==l||"fold"==m||"fold"==k||"fold"==n)("fold"==l||"default"==
+l&&"fold"==f)&&G&&p&&(b.moveTo(0,q),b.lineTo(q,q),b.lineTo(q,0)),("fold"==m||"default"==m&&"fold"==f)&&G&&u&&(b.moveTo(c-q,0),b.lineTo(c-q,q),b.lineTo(c,q)),("fold"==k||"default"==k&&"fold"==f)&&v&&u&&(b.moveTo(c-q,e),b.lineTo(c-q,e-q),b.lineTo(c,e-q)),("fold"==n||"default"==n&&"fold"==f)&&v&&p&&(b.moveTo(0,e-q),b.lineTo(q,e-q),b.lineTo(q,e))};mxCellRenderer.registerShape(Y.prototype.cst.RECT2,Y);Y.prototype.constraints=null;mxUtils.extend(Fa,mxConnector);Fa.prototype.origPaintEdgeShape=Fa.prototype.paintEdgeShape;
+Fa.prototype.paintEdgeShape=function(b,d,g){for(var c=[],e=0;e<d.length;e++)c.push(mxUtils.clone(d[e]));var e=b.state.dashed,f=b.state.fixDash;Fa.prototype.origPaintEdgeShape.apply(this,[b,c,g]);3<=b.state.strokeWidth&&(c=mxUtils.getValue(this.style,"fillColor",null),null!=c&&(b.setStrokeColor(c),b.setStrokeWidth(b.state.strokeWidth-2),b.setDashed(e,f),Fa.prototype.origPaintEdgeShape.apply(this,[b,d,g])))};mxCellRenderer.registerShape("filledEdge",Fa);"undefined"!==typeof StyleFormatPanel&&function(){var b=
+StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var d=this.editorUi.getSelectionState(),g=b.apply(this,arguments);"umlFrame"==d.style.shape&&g.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return g}}();mxMarker.addMarker("dash",function(b,d,g,c,e,f,l,m,k,n){var q=e*(l+k+1),G=f*(l+k+1);return function(){b.begin();b.moveTo(c.x-q/2-G/2,c.y-G/2+q/2);b.lineTo(c.x+G/2-3*q/2,c.y-3*G/2-q/2);b.stroke()}});mxMarker.addMarker("box",
+function(b,d,g,c,e,f,l,m,k,n){var q=e*(l+k+1),G=f*(l+k+1),u=c.x+q/2,v=c.y+G/2;c.x-=q;c.y-=G;return function(){b.begin();b.moveTo(u-q/2-G/2,v-G/2+q/2);b.lineTo(u-q/2+G/2,v-G/2-q/2);b.lineTo(u+G/2-3*q/2,v-3*G/2-q/2);b.lineTo(u-G/2-3*q/2,v-3*G/2+q/2);b.close();n?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("cross",function(b,d,g,c,e,f,l,m,k,n){var q=e*(l+k+1),G=f*(l+k+1);return function(){b.begin();b.moveTo(c.x-q/2-G/2,c.y-G/2+q/2);b.lineTo(c.x+G/2-3*q/2,c.y-3*G/2-q/2);b.moveTo(c.x-q/2+G/2,c.y-
+G/2-q/2);b.lineTo(c.x-G/2-3*q/2,c.y-3*G/2+q/2);b.stroke()}});mxMarker.addMarker("circle",Na);mxMarker.addMarker("circlePlus",function(b,d,g,c,e,f,l,m,k,n){var q=c.clone(),G=Na.apply(this,arguments),u=e*(l+2*k),v=f*(l+2*k);return function(){G.apply(this,arguments);b.begin();b.moveTo(q.x-e*k,q.y-f*k);b.lineTo(q.x-2*u+e*k,q.y-2*v+f*k);b.moveTo(q.x-u-v+f*k,q.y-v+u-e*k);b.lineTo(q.x+v-u-f*k,q.y-v-u+e*k);b.stroke()}});mxMarker.addMarker("halfCircle",function(b,d,g,c,e,f,l,m,k,q){var n=e*(l+k+1),G=f*(l+
+k+1),u=c.clone();c.x-=n;c.y-=G;return function(){b.begin();b.moveTo(u.x-G,u.y+n);b.quadTo(c.x-G,c.y+n,c.x,c.y);b.quadTo(c.x+G,c.y-n,u.x+G,u.y-n);b.stroke()}});mxMarker.addMarker("async",function(b,d,g,c,e,f,l,m,k,n){d=e*k*1.118;g=f*k*1.118;e*=l+k;f*=l+k;var q=c.clone();q.x-=d;q.y-=g;c.x+=1*-e-d;c.y+=1*-f-g;return function(){b.begin();b.moveTo(q.x,q.y);m?b.lineTo(q.x-e-f/2,q.y-f+e/2):b.lineTo(q.x+f/2-e,q.y-f-e/2);b.lineTo(q.x-e,q.y-f);b.close();n?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("openAsync",
+function(b){b=null!=b?b:2;return function(d,g,c,e,f,l,m,k,q,n){f*=m+q;l*=m+q;var G=e.clone();return function(){d.begin();d.moveTo(G.x,G.y);k?d.lineTo(G.x-f-l/b,G.y-l+f/b):d.lineTo(G.x+l/b-f,G.y-l-f/b);d.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var $a=function(b,d,g){return Ma(b,["width"],d,function(d,c,e,f,l){l=b.shape.getEdgeWidth()*b.view.scale+g;return new mxPoint(f.x+c*d/4+e*l/2,f.y+e*d/4-c*l/2)},function(d,c,e,f,l,m){d=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,l.x,l.y,m.x,m.y));b.style.width=
+Math.round(2*d)/b.view.scale-g})},Ma=function(b,d,g,c,e){return ga(b,d,function(d){var e=b.absolutePoints,f=e.length-1;d=b.view.translate;var l=b.view.scale,m=g?e[0]:e[f],e=g?e[1]:e[f-1],f=e.x-m.x,k=e.y-m.y,q=Math.sqrt(f*f+k*k),m=c.call(this,q,f/q,k/q,m,e);return new mxPoint(m.x/l-d.x,m.y/l-d.y)},function(d,c,f){var l=b.absolutePoints,m=l.length-1;d=b.view.translate;var k=b.view.scale,q=g?l[0]:l[m],l=g?l[1]:l[m-1],m=l.x-q.x,n=l.y-q.y,G=Math.sqrt(m*m+n*n);c.x=(c.x+d.x)*k;c.y=(c.y+d.y)*k;e.call(this,
+G,m/G,n/G,q,l,c,f)})},Ha=function(b){return function(d){return[ga(d,["arrowWidth","arrowSize"],function(d){var g=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",da.prototype.arrowWidth))),c=Math.max(0,Math.min(b,mxUtils.getValue(this.state.style,"arrowSize",da.prototype.arrowSize)));return new mxPoint(d.x+(1-c)*d.width,d.y+(1-g)*d.height/2)},function(d,g){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(d.y+d.height/2-g.y)/d.height*2));this.state.style.arrowSize=Math.max(0,
+Math.min(b,(d.x+d.width-g.x)/d.width))})]}},Xa=function(b){return function(d){return[ga(d,["size"],function(d){var g=Math.max(0,Math.min(.5*d.height,parseFloat(mxUtils.getValue(this.state.style,"size",b))));return new mxPoint(d.x,d.y+g)},function(b,d){this.state.style.size=Math.max(0,d.y-b.y)},!0)]}},Va=function(b,d,g){return function(c){var e=[ga(c,["size"],function(g){var c=Math.max(0,Math.min(g.width,Math.min(g.height,parseFloat(mxUtils.getValue(this.state.style,"size",d)))))*b;return new mxPoint(g.x+
+c,g.y+c)},function(d,g){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(d.width,g.x-d.x),Math.min(d.height,g.y-d.y)))/b)},!1)];g&&mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ga(c));return e}},Oa=function(b,d,g,c,e){g=null!=g?g:.5;return function(f){var l=[ga(f,["size"],function(d){var g=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,c=parseFloat(mxUtils.getValue(this.state.style,"size",g?e:b));return new mxPoint(d.x+Math.max(0,Math.min(.5*d.width,
+c*(g?1:d.width))),d.getCenterY())},function(b,d,c){b=null!=e&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?d.x-b.x:Math.max(0,Math.min(g,(d.x-b.x)/b.width));this.state.style.size=b},!1,c)];d&&mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(Ga(f));return l}},Ya=function(b,d,g){b=null!=b?b:.5;return function(c){var e=[ga(c,["size"],function(c){var e=null!=g?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,f=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,
+"size",e?g:d)));return new mxPoint(c.x+Math.min(.75*c.width*b,f*(e?.75:.75*c.width)),c.y+c.height/4)},function(d,c){var e=null!=g&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?c.x-d.x:Math.max(0,Math.min(b,(c.x-d.x)/d.width*.75));this.state.style.size=e},!1,!0)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ga(c));return e}},La=function(){return function(b){var d=[];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d}},Ga=function(b,d){return ga(b,
+[mxConstants.STYLE_ARCSIZE],function(g){var c=null!=d?d:g.height/8;if("1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(g.x+g.width-Math.min(g.width/2,e),g.y+c)}e=Math.max(0,parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(g.x+g.width-Math.min(Math.max(g.width/2,g.height/2),Math.min(g.width,g.height)*
+e),g.y+c)},function(d,g,c){"1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(d.width,2*(d.x+d.width-g.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(d.width-g.x+d.x)/Math.min(d.width,d.height))))})},ga=function(b,d,g,c,e,f,l){var m=new mxHandle(b,null,mxVertexHandler.prototype.secondaryHandleImage);m.execute=function(b){for(var g=0;g<d.length;g++)this.copyStyle(d[g]);
+l&&l(b)};m.getPosition=g;m.setPosition=c;m.ignoreGrid=null!=e?e:!0;if(f){var k=m.positionChanged;m.positionChanged=function(){k.apply(this,arguments);b.view.invalidate(this.state.cell);b.view.validate()}}return m},Pa={link:function(b){return[$a(b,!0,10),$a(b,!1,10)]},flexArrow:function(b){var d=b.view.graph.gridSize/b.view.scale,g=[];mxUtils.getValue(b.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(g.push(Ma(b,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
+!0,function(d,g,c,e,f){d=(b.shape.getEdgeWidth()-b.shape.strokewidth)*b.view.scale;f=3*mxUtils.getNumber(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+g*(f+b.shape.strokewidth*b.view.scale)+c*d/2,e.y+c*(f+b.shape.strokewidth*b.view.scale)-g*d/2)},function(g,c,e,f,l,m,k){g=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-c,m.x,m.y);b.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-b.shape.strokewidth)/
+3)/100/b.view.scale;b.style.width=Math.round(2*g)/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(b.style[mxConstants.STYLE_STARTSIZE])-parseFloat(b.style[mxConstants.STYLE_ENDSIZE]))<d/6&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE])})),g.push(Ma(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(d,
+g,c,e,f){d=(b.shape.getStartArrowWidth()-b.shape.strokewidth)*b.view.scale;f=3*mxUtils.getNumber(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+g*(f+b.shape.strokewidth*b.view.scale)+c*d/2,e.y+c*(f+b.shape.strokewidth*b.view.scale)-g*d/2)},function(g,c,e,f,l,m,k){g=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-c,m.x,m.y);b.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(c-b.shape.strokewidth)/3)/
+100/b.view.scale;b.style.startWidth=Math.max(0,Math.round(2*g)-b.shape.getEdgeWidth())/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE],b.style.endWidth=b.style.startWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(b.style[mxConstants.STYLE_STARTSIZE])-parseFloat(b.style[mxConstants.STYLE_ENDSIZE]))<d/6&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(b.style.startWidth)-
+parseFloat(b.style.endWidth))<d&&(b.style.startWidth=b.style.endWidth))})));mxUtils.getValue(b.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(g.push(Ma(b,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(d,g,c,e,f){d=(b.shape.getEdgeWidth()-b.shape.strokewidth)*b.view.scale;f=3*mxUtils.getNumber(b.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+g*(f+b.shape.strokewidth*b.view.scale)-c*d/2,e.y+c*(f+b.shape.strokewidth*
+b.view.scale)+g*d/2)},function(g,c,e,f,l,m,k){g=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-c,m.x,m.y);b.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-b.shape.strokewidth)/3)/100/b.view.scale;b.style.width=Math.round(2*g)/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(k.getEvent())||Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<
+d/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE])})),g.push(Ma(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(d,g,c,e,f){d=(b.shape.getEndArrowWidth()-b.shape.strokewidth)*b.view.scale;f=3*mxUtils.getNumber(b.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+g*(f+b.shape.strokewidth*b.view.scale)-c*d/2,e.y+c*(f+b.shape.strokewidth*b.view.scale)+g*d/2)},function(g,c,e,f,l,m,k){g=
+Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,l.x,l.y,m.x,m.y));c=mxUtils.ptLineDist(f.x,f.y,f.x+e,f.y-c,m.x,m.y);b.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(c-b.shape.strokewidth)/3)/100/b.view.scale;b.style.endWidth=Math.max(0,Math.round(2*g)-b.shape.getEdgeWidth())/b.view.scale;mxEvent.isControlDown(k.getEvent())&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE],b.style.startWidth=b.style.endWidth);mxEvent.isAltDown(k.getEvent())||(Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-
+parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<d/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(b.style.endWidth)-parseFloat(b.style.startWidth))<d&&(b.style.endWidth=b.style.startWidth))})));return g},swimlane:function(b){var d=[];if(mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED)){var g=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));d.push(Ga(b,g/2))}d.push(ga(b,[mxConstants.STYLE_STARTSIZE],
+function(d){var g=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(d.getCenterX(),d.y+Math.max(0,Math.min(d.height,g))):new mxPoint(d.x+Math.max(0,Math.min(d.width,g)),d.getCenterY())},function(d,g){b.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(d.height,g.y-d.y))):Math.round(Math.max(0,
+Math.min(d.width,g.x-d.x)))},!1,null,function(d){if(mxEvent.isControlDown(d.getEvent())&&(d=b.view.graph,d.isTableRow(b.cell)||d.isTableCell(b.cell))){for(var g=d.getSwimlaneDirection(b.style),c=d.model.getParent(b.cell),c=d.model.getChildCells(c,!0),e=[],f=0;f<c.length;f++)c[f]!=b.cell&&d.isSwimlane(c[f])&&d.getSwimlaneDirection(d.getCurrentCellStyle(c[f]))==g&&e.push(c[f]);d.setCellStyles(mxConstants.STYLE_STARTSIZE,b.style[mxConstants.STYLE_STARTSIZE],e)}}));return d},label:La(),ext:La(),rectangle:La(),
triangle:La(),rhombus:La(),umlLifeline:function(b){return[ga(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",Q.prototype.size))));return new mxPoint(b.getCenterX(),b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},umlFrame:function(b){return[ga(b,["width","height"],function(b){var d=Math.max(V.prototype.corner,Math.min(b.width,mxUtils.getValue(this.state.style,"width",V.prototype.width))),
-f=Math.max(1.5*V.prototype.corner,Math.min(b.height,mxUtils.getValue(this.state.style,"height",V.prototype.height)));return new mxPoint(b.x+d,b.y+f)},function(b,d){this.state.style.width=Math.round(Math.max(V.prototype.corner,Math.min(b.width,d.x-b.x)));this.state.style.height=Math.round(Math.max(1.5*V.prototype.corner,Math.min(b.height,d.y-b.y)))},!1)]},process:function(b){var d=[ga(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),f=parseFloat(mxUtils.getValue(this.state.style,
-"size",J.prototype.size));return d?new mxPoint(b.x+f,b.y+b.height/4):new mxPoint(b.x+b.width*f,b.y+b.height/4)},function(b,d){var f="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*b.width,d.x-b.x)):Math.max(0,Math.min(.5,(d.x-b.x)/b.width));this.state.style.size=f},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},cross:function(b){return[ga(b,["size"],function(b){var d=Math.min(b.width,b.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
-"size",Ca.prototype.size)))*d/2;return new mxPoint(b.getCenterX()-d,b.getCenterY()-d)},function(b,d){var f=Math.min(b.width,b.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,b.getCenterY()-d.y)/f*2,Math.max(0,b.getCenterX()-d.x)/f*2)))})]},note:function(b){return[ga(b,["size"],function(b){var f=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",d.prototype.size)))));return new mxPoint(b.x+b.width-f,b.y+f)},function(b,d){this.state.style.size=
-Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},note2:function(b){return[ga(b,["size"],function(b){var d=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},manualInput:function(b){var d=[ga(b,["size"],function(b){var d=
-Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",X.prototype.size)));return new mxPoint(b.x+b.width/4,b.y+3*d/4)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,4*(d.y-b.y)/3)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},dataStorage:function(b){return[ga(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),f=parseFloat(mxUtils.getValue(this.state.style,"size",d?ha.prototype.fixedSize:
-ha.prototype.size));return new mxPoint(b.x+b.width-f*(d?1:b.width),b.getCenterY())},function(b,d){var f="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(b.width,b.x+b.width-d.x)):Math.max(0,Math.min(1,(b.x+b.width-d.x)/b.width));this.state.style.size=f},!1)]},callout:function(b){var d=[ga(b,["size","position"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",K.prototype.size))),f=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
-"position",K.prototype.position)));mxUtils.getValue(this.state.style,"base",K.prototype.base);return new mxPoint(b.x+f*b.width,b.y+b.height-d)},function(b,d){mxUtils.getValue(this.state.style,"base",K.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(b.height,b.y+b.height-d.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ga(b,["position2"],function(b){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",K.prototype.position2)));
-return new mxPoint(b.x+d*b.width,b.y+b.height)},function(b,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ga(b,["base"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",K.prototype.size))),f=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",K.prototype.position))),c=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"base",K.prototype.base)));return new mxPoint(b.x+Math.min(b.width,
-f*b.width+c),b.y+b.height-d)},function(b,d){var f=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",K.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(b.width,d.x-b.x-f*b.width)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},internalStorage:function(b){var d=[ga(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",ma.prototype.dx))),f=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,
-"dy",ma.prototype.dy)));return new mxPoint(b.x+d,b.y+f)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},module:function(b){return[ga(b,["jettyWidth","jettyHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"jettyWidth",la.prototype.jettyWidth))),f=Math.max(0,Math.min(b.height,
-mxUtils.getValue(this.state.style,"jettyHeight",la.prototype.jettyHeight)));return new mxPoint(b.x+d/2,b.y+2*f)},function(b,d){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y))/2)})]},corner:function(b){return[ga(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",qa.prototype.dx))),f=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,
-"dy",qa.prototype.dy)));return new mxPoint(b.x+d,b.y+f)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},tee:function(b){return[ga(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",ia.prototype.dx))),f=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",ia.prototype.dy)));return new mxPoint(b.x+(b.width+d)/2,b.y+f)},function(b,
-d){this.state.style.dx=Math.round(Math.max(0,2*Math.min(b.width/2,d.x-b.x-b.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},singleArrow:Ha(1),doubleArrow:Ha(.5),folder:function(b){return[ga(b,["tabWidth","tabHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"tabWidth",u.prototype.tabWidth))),f=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"tabHeight",u.prototype.tabHeight)));mxUtils.getValue(this.state.style,
-"tabPosition",u.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(d=b.width-d);return new mxPoint(b.x+d,b.y+f)},function(b,d){var f=Math.max(0,Math.min(b.width,d.x-b.x));mxUtils.getValue(this.state.style,"tabPosition",u.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(f=b.width-f);this.state.style.tabWidth=Math.round(f);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},document:function(b){return[ga(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
+g=Math.max(1.5*V.prototype.corner,Math.min(b.height,mxUtils.getValue(this.state.style,"height",V.prototype.height)));return new mxPoint(b.x+d,b.y+g)},function(b,d){this.state.style.width=Math.round(Math.max(V.prototype.corner,Math.min(b.width,d.x-b.x)));this.state.style.height=Math.round(Math.max(1.5*V.prototype.corner,Math.min(b.height,d.y-b.y)))},!1)]},process:function(b){var d=[ga(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),g=parseFloat(mxUtils.getValue(this.state.style,
+"size",J.prototype.size));return d?new mxPoint(b.x+g,b.y+b.height/4):new mxPoint(b.x+b.width*g,b.y+b.height/4)},function(b,d){var g="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*b.width,d.x-b.x)):Math.max(0,Math.min(.5,(d.x-b.x)/b.width));this.state.style.size=g},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},cross:function(b){return[ga(b,["size"],function(b){var d=Math.min(b.width,b.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
+"size",Ca.prototype.size)))*d/2;return new mxPoint(b.getCenterX()-d,b.getCenterY()-d)},function(b,d){var g=Math.min(b.width,b.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,b.getCenterY()-d.y)/g*2,Math.max(0,b.getCenterX()-d.x)/g*2)))})]},note:function(b){return[ga(b,["size"],function(b){var g=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",d.prototype.size)))));return new mxPoint(b.x+b.width-g,b.y+g)},function(b,d){this.state.style.size=
+Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},note2:function(b){return[ga(b,["size"],function(b){var d=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},manualInput:function(b){var d=[ga(b,["size"],function(b){var d=
+Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",X.prototype.size)));return new mxPoint(b.x+b.width/4,b.y+3*d/4)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,4*(d.y-b.y)/3)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},dataStorage:function(b){return[ga(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),g=parseFloat(mxUtils.getValue(this.state.style,"size",d?ha.prototype.fixedSize:
+ha.prototype.size));return new mxPoint(b.x+b.width-g*(d?1:b.width),b.getCenterY())},function(b,d){var g="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(b.width,b.x+b.width-d.x)):Math.max(0,Math.min(1,(b.x+b.width-d.x)/b.width));this.state.style.size=g},!1)]},callout:function(b){var d=[ga(b,["size","position"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",K.prototype.size))),g=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
+"position",K.prototype.position)));mxUtils.getValue(this.state.style,"base",K.prototype.base);return new mxPoint(b.x+g*b.width,b.y+b.height-d)},function(b,d){mxUtils.getValue(this.state.style,"base",K.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(b.height,b.y+b.height-d.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ga(b,["position2"],function(b){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",K.prototype.position2)));
+return new mxPoint(b.x+d*b.width,b.y+b.height)},function(b,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ga(b,["base"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",K.prototype.size))),g=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",K.prototype.position))),c=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"base",K.prototype.base)));return new mxPoint(b.x+Math.min(b.width,
+g*b.width+c),b.y+b.height-d)},function(b,d){var g=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",K.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(b.width,d.x-b.x-g*b.width)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},internalStorage:function(b){var d=[ga(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",ma.prototype.dx))),g=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,
+"dy",ma.prototype.dy)));return new mxPoint(b.x+d,b.y+g)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ga(b));return d},module:function(b){return[ga(b,["jettyWidth","jettyHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"jettyWidth",la.prototype.jettyWidth))),g=Math.max(0,Math.min(b.height,
+mxUtils.getValue(this.state.style,"jettyHeight",la.prototype.jettyHeight)));return new mxPoint(b.x+d/2,b.y+2*g)},function(b,d){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y))/2)})]},corner:function(b){return[ga(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",qa.prototype.dx))),g=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,
+"dy",qa.prototype.dy)));return new mxPoint(b.x+d,b.y+g)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},tee:function(b){return[ga(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",ia.prototype.dx))),g=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",ia.prototype.dy)));return new mxPoint(b.x+(b.width+d)/2,b.y+g)},function(b,
+d){this.state.style.dx=Math.round(Math.max(0,2*Math.min(b.width/2,d.x-b.x-b.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},singleArrow:Ha(1),doubleArrow:Ha(.5),folder:function(b){return[ga(b,["tabWidth","tabHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"tabWidth",u.prototype.tabWidth))),g=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"tabHeight",u.prototype.tabHeight)));mxUtils.getValue(this.state.style,
+"tabPosition",u.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(d=b.width-d);return new mxPoint(b.x+d,b.y+g)},function(b,d){var g=Math.max(0,Math.min(b.width,d.x-b.x));mxUtils.getValue(this.state.style,"tabPosition",u.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(g=b.width-g);this.state.style.tabWidth=Math.round(g);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},document:function(b){return[ga(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
"size",F.prototype.size))));return new mxPoint(b.x+3*b.width/4,b.y+(1-d)*b.height)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(b.y+b.height-d.y)/b.height))},!1)]},tape:function(b){return[ga(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",x.prototype.size))));return new mxPoint(b.getCenterX(),b.y+d*b.height/2)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(d.y-b.y)/b.height*2))},!1)]},isoCube2:function(b){return[ga(b,
["isoAngle"],function(b){var d=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",l.isoAngle))))*Math.PI/200;return new mxPoint(b.x,b.y+Math.min(b.width*Math.tan(d),.5*b.height))},function(b,d){this.state.style.isoAngle=Math.max(0,50*(d.y-b.y)/b.height)},!0)]},cylinder2:Xa(q.prototype.size),cylinder3:Xa(m.prototype.size),offPageConnector:function(b){return[ga(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ta.prototype.size))));
return new mxPoint(b.getCenterX(),b.y+(1-d)*b.height)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(b.y+b.height-d.y)/b.height))},!1)]},"mxgraph.basic.rect":function(b){var d=[Graph.createHandle(b,["size"],function(b){var d=Math.max(0,Math.min(b.width/2,b.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(b.x+d,b.y+d)},function(b,d){this.state.style.size=Math.round(100*Math.max(0,Math.min(b.height/2,b.width/2,d.x-b.x)))/100})];b=Graph.createHandle(b,
-["indent"],function(b){var d=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(b.x+.75*b.width,b.y+d*b.height/200)},function(b,d){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(d.y-b.y)/b.height)))/100});d.push(b);return d},step:Oa(M.prototype.size,!0,null,!0,M.prototype.fixedSize),hexagon:Oa(aa.prototype.size,!0,.5,!0,aa.prototype.fixedSize),curlyBracket:Oa(D.prototype.size,!1),display:Oa(wa.prototype.size,!1),cube:Va(1,
+["indent"],function(b){var d=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(b.x+.75*b.width,b.y+d*b.height/200)},function(b,d){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(d.y-b.y)/b.height)))/100});d.push(b);return d},step:Oa(M.prototype.size,!0,null,!0,M.prototype.fixedSize),hexagon:Oa(Z.prototype.size,!0,.5,!0,Z.prototype.fixedSize),curlyBracket:Oa(D.prototype.size,!1),display:Oa(wa.prototype.size,!1),cube:Va(1,
e.prototype.size,!1),card:Va(.5,y.prototype.size,!0),loopLimit:Va(.5,ea.prototype.size,!0),trapezoid:Ya(.5,z.prototype.size,z.prototype.fixedSize),parallelogram:Ya(1,H.prototype.size,H.prototype.fixedSize)};Graph.createHandle=ga;Graph.handleFactory=Pa;var eb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var b=eb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var d=this.state.style.shape;null==mxCellRenderer.defaultShapes[d]&&
null==mxStencilRegistry.getStencil(d)?d=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(d=mxConstants.SHAPE_SWIMLANE);d=Pa[d];null==d&&null!=this.state.shape&&this.state.shape.isRoundable()&&(d=Pa[mxConstants.SHAPE_RECTANGLE]);null!=d&&(d=d(this.state),null!=d&&(b=null==b?d:b.concat(d)))}return b};mxEdgeHandler.prototype.createCustomHandles=function(){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)&&(b=mxConstants.SHAPE_CONNECTOR);
-b=Pa[b];return null!=b?b(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Qa=new mxPoint(1,0),Ra=new mxPoint(1,0),Ha=mxUtils.toRadians(-30),Qa=mxUtils.getRotatedPoint(Qa,Math.cos(Ha),Math.sin(Ha)),Ha=mxUtils.toRadians(-150),Ra=mxUtils.getRotatedPoint(Ra,Math.cos(Ha),Math.sin(Ha));mxEdgeStyle.IsometricConnector=function(b,d,f,c,e){var g=b.view;c=null!=c&&0<c.length?c[0]:null;var l=b.absolutePoints,m=l[0],l=l[l.length-1];null!=c&&(c=g.transformControlPoint(b,c));null==
-m&&null!=d&&(m=new mxPoint(d.getCenterX(),d.getCenterY()));null==l&&null!=f&&(l=new mxPoint(f.getCenterX(),f.getCenterY()));var k=Qa.x,q=Qa.y,n=Ra.x,G=Ra.y,u="horizontal"==mxUtils.getValue(b.style,"elbow","horizontal");if(null!=l&&null!=m){b=function(b,d,f){b-=A.x;var c=d-A.y;d=(G*b-n*c)/(k*G-q*n);b=(q*b-k*c)/(q*n-k*G);u?(f&&(A=new mxPoint(A.x+k*d,A.y+q*d),e.push(A)),A=new mxPoint(A.x+n*b,A.y+G*b)):(f&&(A=new mxPoint(A.x+n*b,A.y+G*b),e.push(A)),A=new mxPoint(A.x+k*d,A.y+q*d));e.push(A)};var A=m;null==
-c&&(c=new mxPoint(m.x+(l.x-m.x)/2,m.y+(l.y-m.y)/2));b(c.x,c.y,!0);b(l.x,l.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var fb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(b,d){if(d==mxEdgeStyle.IsometricConnector){var f=new mxElbowEdgeHandler(b);f.snapToTerminals=!1;return f}return fb.apply(this,arguments)};g.prototype.constraints=[];p.prototype.getConstraints=function(b,d,f){b=[];var c=Math.tan(mxUtils.toRadians(30)),e=(.5-
-c)/2,c=Math.min(d,f/(.5+c));d=(d-c)/2;f=(f-c)/2;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f+.25*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,f+c*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,f+.25*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,f+.75*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,f+(1-e)*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f+.75*c));return b};l.prototype.getConstraints=
-function(b,d,f){b=[];var c=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,c=Math.min(d*Math.tan(c),.5*f);b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f-c));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,f-c));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));return b};K.prototype.getConstraints=function(b,d,f){b=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var c=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(f-c)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
-d,f-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(f-c)));d>=2*c&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
+b=Pa[b];return null!=b?b(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Qa=new mxPoint(1,0),Ra=new mxPoint(1,0),Ha=mxUtils.toRadians(-30),Qa=mxUtils.getRotatedPoint(Qa,Math.cos(Ha),Math.sin(Ha)),Ha=mxUtils.toRadians(-150),Ra=mxUtils.getRotatedPoint(Ra,Math.cos(Ha),Math.sin(Ha));mxEdgeStyle.IsometricConnector=function(b,d,g,c,e){var f=b.view;c=null!=c&&0<c.length?c[0]:null;var l=b.absolutePoints,m=l[0],l=l[l.length-1];null!=c&&(c=f.transformControlPoint(b,c));null==
+m&&null!=d&&(m=new mxPoint(d.getCenterX(),d.getCenterY()));null==l&&null!=g&&(l=new mxPoint(g.getCenterX(),g.getCenterY()));var k=Qa.x,q=Qa.y,n=Ra.x,G=Ra.y,u="horizontal"==mxUtils.getValue(b.style,"elbow","horizontal");if(null!=l&&null!=m){b=function(b,d,g){b-=v.x;var c=d-v.y;d=(G*b-n*c)/(k*G-q*n);b=(q*b-k*c)/(q*n-k*G);u?(g&&(v=new mxPoint(v.x+k*d,v.y+q*d),e.push(v)),v=new mxPoint(v.x+n*b,v.y+G*b)):(g&&(v=new mxPoint(v.x+n*b,v.y+G*b),e.push(v)),v=new mxPoint(v.x+k*d,v.y+q*d));e.push(v)};var v=m;null==
+c&&(c=new mxPoint(m.x+(l.x-m.x)/2,m.y+(l.y-m.y)/2));b(c.x,c.y,!0);b(l.x,l.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var fb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(b,d){if(d==mxEdgeStyle.IsometricConnector){var g=new mxElbowEdgeHandler(b);g.snapToTerminals=!1;return g}return fb.apply(this,arguments)};f.prototype.constraints=[];p.prototype.getConstraints=function(b,d,g){b=[];var c=Math.tan(mxUtils.toRadians(30)),e=(.5-
+c)/2,c=Math.min(d,g/(.5+c));d=(d-c)/2;g=(g-c)/2;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g+.25*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,g+c*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,g+.25*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,g+.75*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,g+(1-e)*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g+.75*c));return b};l.prototype.getConstraints=
+function(b,d,g){b=[];var c=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,c=Math.min(d*Math.tan(c),.5*g);b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g-c));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,g-c));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));return b};K.prototype.getConstraints=function(b,d,g){b=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var c=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(g-c)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
+d,g-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(g-c)));d>=2*c&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,
1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0)];mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];Ja.prototype.constraints=mxRectangleShape.prototype.constraints;
-mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;N.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;d.prototype.getConstraints=function(b,d,f){b=[];var c=Math.max(0,Math.min(d,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,.5*(d-c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(f+c)));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1));d>=2*c&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};y.prototype.getConstraints=function(b,d,f){b=[];var c=Math.max(0,Math.min(d,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(f+c)));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));d>=2*c&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};e.prototype.getConstraints=function(b,d,f){b=[];var c=Math.max(0,Math.min(d,Math.min(f,parseFloat(mxUtils.getValue(this.style,
-"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(f+c)));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,.5*(d+c),f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,f-.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(f-c)));return b};m.prototype.getConstraints=function(b,d,f){b=[];d=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,d));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-d));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-d));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d+.5*(.5*f-d)));b.push(new mxConnectionConstraint(new mxPoint(1,
-0),!1,null,0,d+.5*(.5*f-d)));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,f-d-.5*(.5*f-d)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f-d-.5*(.5*f-d)));b.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*d));b.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*d));b.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-d));b.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-d));return b};u.prototype.getConstraints=
-function(b,d,f){b=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(b.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,0)),b.push(new mxConnectionConstraint(new mxPoint(0,
+mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;L.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;d.prototype.getConstraints=function(b,d,g){b=[];var c=Math.max(0,Math.min(d,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,.5*(d-c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(g+c)));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+.5),!1));d>=2*c&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};y.prototype.getConstraints=function(b,d,g){b=[];var c=Math.max(0,Math.min(d,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(g+c)));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));d>=2*c&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};e.prototype.getConstraints=function(b,d,g){b=[];var c=Math.max(0,Math.min(d,Math.min(g,parseFloat(mxUtils.getValue(this.style,
+"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(g+c)));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,.5*(d+c),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,g-.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(g-c)));return b};m.prototype.getConstraints=function(b,d,g){b=[];d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+.5),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,d));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-d));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-d));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d+.5*(.5*g-d)));b.push(new mxConnectionConstraint(new mxPoint(1,
+0),!1,null,0,d+.5*(.5*g-d)));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,g-d-.5*(.5*g-d)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g-d-.5*(.5*g-d)));b.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*d));b.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*d));b.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-d));b.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-d));return b};u.prototype.getConstraints=
+function(b,d,g){b=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(b.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,0)),b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,c,e)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),e))):(b.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*c,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,e)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,d,.25*(f-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(f-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.75*(f-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(f-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(f-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,.75*(f-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f));b.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return b};ma.prototype.constraints=mxRectangleShape.prototype.constraints;ha.prototype.constraints=mxRectangleShape.prototype.constraints;ya.prototype.constraints=mxEllipse.prototype.constraints;pa.prototype.constraints=mxEllipse.prototype.constraints;
-xa.prototype.constraints=mxEllipse.prototype.constraints;Aa.prototype.constraints=mxEllipse.prototype.constraints;X.prototype.constraints=mxRectangleShape.prototype.constraints;Ka.prototype.constraints=mxRectangleShape.prototype.constraints;wa.prototype.getConstraints=function(b,d,f){b=[];var c=Math.min(d,f/2),e=Math.min(d-c,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-c),f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));return b};la.prototype.getConstraints=function(b,d,f){d=parseFloat(mxUtils.getValue(b,
+0),!1,null,d,.25*(g-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(g-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.75*(g-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(g-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(g-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,.75*(g-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return b};ma.prototype.constraints=mxRectangleShape.prototype.constraints;ha.prototype.constraints=mxRectangleShape.prototype.constraints;ya.prototype.constraints=mxEllipse.prototype.constraints;pa.prototype.constraints=mxEllipse.prototype.constraints;
+xa.prototype.constraints=mxEllipse.prototype.constraints;Aa.prototype.constraints=mxEllipse.prototype.constraints;X.prototype.constraints=mxRectangleShape.prototype.constraints;Ka.prototype.constraints=mxRectangleShape.prototype.constraints;wa.prototype.getConstraints=function(b,d,g){b=[];var c=Math.min(d,g/2),e=Math.min(d-c,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*d);b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-c),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-c,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-c),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));return b};la.prototype.getConstraints=function(b,d,g){d=parseFloat(mxUtils.getValue(b,
"jettyWidth",la.prototype.jettyWidth))/2;b=parseFloat(mxUtils.getValue(b,"jettyHeight",la.prototype.jettyHeight));var c=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,d),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,
-.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,d),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(f-.5*b,1.5*b)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(f-.5*b,3.5*b))];f>5*b&&c.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,d));f>8*b&&c.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1,null,d));f>15*b&&c.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,d));return c};ea.prototype.constraints=mxRectangleShape.prototype.constraints;ta.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
+.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,d),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(g-.5*b,1.5*b)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(g-.5*b,3.5*b))];g>5*b&&c.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,d));g>8*b&&c.push(new mxConnectionConstraint(new mxPoint(0,
+.5),!1,null,d));g>15*b&&c.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,d));return c};ea.prototype.constraints=mxRectangleShape.prototype.constraints;ta.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];G.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,
.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];ja.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,
@@ -2949,106 +2959,106 @@ xa.prototype.constraints=mxEllipse.prototype.constraints;Aa.prototype.constraint
.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.375,
1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,
.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];H.prototype.constraints=mxRectangleShape.prototype.constraints;z.prototype.constraints=mxRectangleShape.prototype.constraints;F.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
-0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;ia.prototype.getConstraints=function(b,d,f){b=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,
+0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;ia.prototype.getConstraints=function(b,d,g){b=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*d+.25*c,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),e));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,.5*(d+c),.5*(f+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),f));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),.5*(f+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d-.25*c,e));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return b};qa.prototype.getConstraints=function(b,d,f){b=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,d,.5*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*(f+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,f));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,.5*(d+c),.5*(g+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),g));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),.5*(g+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-c),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d-.25*c,e));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return b};qa.prototype.getConstraints=function(b,d,g){b=[];var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,d,.5*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*(g+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,g));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
1),!1));return b};T.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];da.prototype.getConstraints=
-function(b,d,f){b=[];var c=f*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),c=(f-c)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,
-.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),f-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,f-c));return b};na.prototype.getConstraints=function(b,d,f){b=[];var c=f*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize)))),c=(f-c)/2;b.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,f-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));return b};Ca.prototype.getConstraints=
-function(b,d,f){b=[];var c=Math.min(f,d),e=Math.max(0,Math.min(c,c*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),c=(f-e)/2,g=c+e,l=(d-e)/2,e=l+e;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,f-.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,f));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f-.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),c));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,c));return b};Q.prototype.constraints=null;ua.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,
+function(b,d,g){b=[];var c=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),c=(g-c)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,
+.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),g-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g-c));return b};na.prototype.getConstraints=function(b,d,g){b=[];var c=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize)))),c=(g-c)/2;b.push(new mxConnectionConstraint(new mxPoint(0,
+.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,g-c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));return b};Ca.prototype.getConstraints=
+function(b,d,g){b=[];var c=Math.min(g,d),e=Math.max(0,Math.min(c,c*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),c=(g-e)/2,f=c+e,l=(d-e)/2,e=l+e;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,g-.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,g));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g-.5*c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),c));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,f));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,c));return b};Q.prototype.constraints=null;ua.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,
.9),!1)];P.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ka.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];ra.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(b){this.editorUi=b;this.actions={};this.init()}
-Actions.prototype.init=function(){function b(b){g.escape();b=g.deleteCells(g.getDeletableCells(g.getSelectionCells()),b);null!=b&&g.setSelectionCells(b)}function c(){if(!g.isSelectionEmpty()){g.getModel().beginUpdate();try{for(var b=g.getSelectionCells(),d=0;d<b.length;d++)g.cellLabelChanged(b[d],"")}finally{g.getModel().endUpdate()}}}var e=this.editorUi,k=e.editor,g=k.graph,p=function(){return Action.prototype.isEnabled.apply(this,arguments)&&g.isEnabled()};this.addAction("new...",function(){g.openLink(e.getUrl())});
-this.addAction("open...",function(){window.openNew=!0;window.openKey="open";e.openFile()});this.addAction("smartFit",function(){g.popupMenuHandler.hideMenu();var b=g.view.scale,d=g.view.translate.x,c=g.view.translate.y;e.actions.get("resetView").funct();1E-5>Math.abs(b-g.view.scale)&&d==g.view.translate.x&&c==g.view.translate.y&&e.actions.get(g.pageVisible?"fitPage":"fitWindow").funct()});this.addAction("keyPressEnter",function(){g.isEnabled()&&(g.isSelectionEmpty()?e.actions.get("smartFit").funct():
-g.startEditingAtCell())});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){e.hideDialog()}));window.openFile.setConsumer(mxUtils.bind(this,function(b,d){try{var f=mxUtils.parseXml(b);k.graph.setSelectionCells(k.graph.importGraphModel(f.documentElement))}catch(m){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+m.message)}}));e.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=
+Actions.prototype.init=function(){function b(b){f.escape();b=f.deleteCells(f.getDeletableCells(f.getSelectionCells()),b);null!=b&&f.setSelectionCells(b)}function c(){if(!f.isSelectionEmpty()){f.getModel().beginUpdate();try{for(var b=f.getSelectionCells(),d=0;d<b.length;d++)f.cellLabelChanged(b[d],"")}finally{f.getModel().endUpdate()}}}var e=this.editorUi,k=e.editor,f=k.graph,p=function(){return Action.prototype.isEnabled.apply(this,arguments)&&f.isEnabled()};this.addAction("new...",function(){f.openLink(e.getUrl())});
+this.addAction("open...",function(){window.openNew=!0;window.openKey="open";e.openFile()});this.addAction("smartFit",function(){f.popupMenuHandler.hideMenu();var b=f.view.scale,d=f.view.translate.x,c=f.view.translate.y;e.actions.get("resetView").funct();1E-5>Math.abs(b-f.view.scale)&&d==f.view.translate.x&&c==f.view.translate.y&&e.actions.get(f.pageVisible?"fitPage":"fitWindow").funct()});this.addAction("keyPressEnter",function(){f.isEnabled()&&(f.isSelectionEmpty()?e.actions.get("smartFit").funct():
+f.startEditingAtCell())});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){e.hideDialog()}));window.openFile.setConsumer(mxUtils.bind(this,function(b,d){try{var g=mxUtils.parseXml(b);k.graph.setSelectionCells(k.graph.importGraphModel(g.documentElement))}catch(m){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+m.message)}}));e.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=
null})}).isEnabled=p;this.addAction("save",function(){e.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=p;this.addAction("saveAs...",function(){e.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=p;this.addAction("export...",function(){e.showDialog((new ExportDialog(e)).container,300,340,!0,!0)});this.addAction("editDiagram...",function(){var b=new EditDiagramDialog(e);e.showDialog(b.container,620,420,!0,!1);b.init()});this.addAction("pageSetup...",function(){e.showDialog((new PageSetupDialog(e)).container,
-320,240,!0,!0)}).isEnabled=p;this.addAction("print...",function(){e.showDialog((new PrintDialog(e)).container,300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(g,null,10,10)});this.addAction("undo",function(){e.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){e.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){var b=null;try{b=e.copyXml(),
-null!=b&&g.removeCells(b,!1)}catch(l){}null==b&&mxClipboard.cut(g)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{e.copyXml()}catch(f){}try{mxClipboard.copy(g)}catch(f){e.handleError(f)}},null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){if(g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())){var b=!1;try{Editor.enableNativeCipboard&&(e.readGraphModelFromClipboard(function(b){if(null!=b){g.getModel().beginUpdate();try{e.pasteXml(b,!0)}finally{g.getModel().endUpdate()}}else mxClipboard.paste(g)}),
-b=!0)}catch(l){}b||mxClipboard.paste(g)}},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(b){function d(b){if(null!=b){for(var d=!0,f=0;f<b.length&&d;f++)d=d&&g.model.isEdge(b[f]);var c=g.view.translate,f=g.view.scale,e=c.x,l=c.y,c=null;if(1==b.length&&d){var m=g.getCellGeometry(b[0]);null!=m&&(c=m.getTerminalPoint(!0))}c=null!=c?c:g.getBoundingBoxFromGeometry(b,d);null!=c&&(d=Math.round(g.snap(g.popupMenuHandler.triggerX/f-e)),f=Math.round(g.snap(g.popupMenuHandler.triggerY/
-f-l)),g.cellsMoved(b,d-c.x,f-c.y))}}function f(){g.getModel().beginUpdate();try{d(mxClipboard.paste(g))}finally{g.getModel().endUpdate()}}if(g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())){b=!1;try{Editor.enableNativeCipboard&&(e.readGraphModelFromClipboard(function(b){if(null!=b){g.getModel().beginUpdate();try{d(e.pasteXml(b,!0))}finally{g.getModel().endUpdate()}}else f()}),b=!0)}catch(m){}b||f()}});this.addAction("copySize",function(){var b=g.getSelectionCell();g.isEnabled()&&null!=b&&g.getModel().isVertex(b)&&
-(b=g.getCellGeometry(b),null!=b&&(e.copiedSize=new mxRectangle(b.x,b.y,b.width,b.height)))},null,null,"Alt+Shift+X");this.addAction("pasteSize",function(){if(g.isEnabled()&&!g.isSelectionEmpty()&&null!=e.copiedSize){g.getModel().beginUpdate();try{for(var b=g.getResizableCells(g.getSelectionCells()),d=0;d<b.length;d++)if(g.getModel().isVertex(b[d])){var c=g.getCellGeometry(b[d]);null!=c&&(c=c.clone(),c.width=e.copiedSize.width,c.height=e.copiedSize.height,g.getModel().setGeometry(b[d],c))}}finally{g.getModel().endUpdate()}}},
-null,null,"Alt+Shift+V");this.addAction("copyData",function(){var b=g.getSelectionCell()||g.getModel().getRoot();g.isEnabled()&&null!=b&&(b=b.cloneValue(),null==b||isNaN(b.nodeType)||(e.copiedValue=b))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(b,d){function f(d,f){var e=c.getValue(d);f=d.cloneValue(f);f.removeAttribute("placeholders");null==e||isNaN(e.nodeType)||f.setAttribute("placeholders",e.getAttribute("placeholders"));null!=b&&mxEvent.isShiftDown(b)||f.setAttribute("label",
-g.convertValueToString(d));c.setValue(d,f)}b=null!=d?d:b;var c=g.getModel();if(g.isEnabled()&&!g.isSelectionEmpty()&&null!=e.copiedValue){c.beginUpdate();try{var l=g.getEditableCells(g.getSelectionCells());if(0==l.length)f(c.getRoot(),e.copiedValue);else for(var k=0;k<l.length;k++)f(l[k],e.copiedValue)}finally{c.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(d,e){d=null!=e?e:d;null!=d&&mxEvent.isShiftDown(d)?c():b(null!=d&&(mxEvent.isControlDown(d)||mxEvent.isMetaDown(d)||
-mxEvent.isAltDown(d)))},null,null,"Delete");this.addAction("deleteAll",function(){b(!0)});this.addAction("deleteLabels",function(){c()},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){try{g.setSelectionCells(g.duplicateCells()),g.scrollCellToVisible(g.getSelectionCell())}catch(f){e.handleError(f)}},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(b,d){b=null!=d?d:b;g.turnShapes(g.getResizableCells(g.getSelectionCells()),
-null!=b?mxEvent.isShiftDown(b):!1)},null,null,Editor.ctrlKey+"+R"));this.put("selectConnections",new Action(mxResources.get("selectEdges"),function(b){b=g.getSelectionCell();g.isEnabled()&&null!=b&&g.addSelectionCells(g.getEdges(b))}));this.addAction("selectVertices",function(){g.selectVertices(null,!0)},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){g.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){g.selectAll(null,!0)},null,
-null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){g.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!g.isSelectionEmpty()){g.getModel().beginUpdate();try{var b=g.getSelectionCells(),d=g.getCurrentCellStyle(g.getSelectionCell()),c=1==mxUtils.getValue(d,mxConstants.STYLE_EDITABLE,1)?0:1;g.setCellStyles(mxConstants.STYLE_MOVABLE,c,b);g.setCellStyles(mxConstants.STYLE_RESIZABLE,c,b);g.setCellStyles(mxConstants.STYLE_ROTATABLE,c,b);g.setCellStyles(mxConstants.STYLE_DELETABLE,
-c,b);g.setCellStyles(mxConstants.STYLE_EDITABLE,c,b);g.setCellStyles("connectable",c,b)}finally{g.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+L");this.addAction("home",function(){g.home()},null,null,"Shift+Home");this.addAction("exitGroup",function(){g.exitGroup()},null,null,Editor.ctrlKey+"+Shift+Home");this.addAction("enterGroup",function(){g.enterGroup()},null,null,Editor.ctrlKey+"+Shift+End");this.addAction("collapse",function(){g.foldCells(!0)},null,null,Editor.ctrlKey+"+Home");this.addAction("expand",
-function(){g.foldCells(!1)},null,null,Editor.ctrlKey+"+End");this.addAction("toFront",function(){g.orderCells(!1)},null,null,Editor.ctrlKey+"+Shift+F");this.addAction("toBack",function(){g.orderCells(!0)},null,null,Editor.ctrlKey+"+Shift+B");this.addAction("bringForward",function(b){g.orderCells(!1,null,!0)});this.addAction("sendBackward",function(b){g.orderCells(!0,null,!0)});this.addAction("group",function(){if(g.isEnabled()){var b=mxUtils.sortCells(g.getSelectionCells(),!0);1!=b.length||g.isTable(b[0])||
-g.isTableRow(b[0])?(b=g.getCellsForGroup(b),1<b.length&&g.setSelectionCell(g.groupCells(null,0,b))):g.setCellStyles("container","1")}},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){if(g.isEnabled()){var b=g.getEditableCells(g.getSelectionCells());g.model.beginUpdate();try{var d=g.ungroupCells();if(null!=b)for(var c=0;c<b.length;c++)g.model.contains(b[c])&&(0==g.model.getChildCount(b[c])&&g.model.isVertex(b[c])&&g.setCellStyles("container","0",[b[c]]),d.push(b[c]))}finally{g.model.endUpdate()}0<
-d.length&&g.setSelectionCells(d)}},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){if(g.isEnabled()){var b=g.getSelectionCells();if(null!=b){for(var d=[],c=0;c<b.length;c++)g.isTableRow(b[c])||g.isTableCell(b[c])||d.push(b[c]);g.removeCellsFromParent(d)}}});this.addAction("edit",function(){g.isEnabled()&&g.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var b=g.getSelectionCell()||g.getModel().getRoot();e.showDataDialog(b)},null,
-null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var b=g.getSelectionCell();if(g.isEnabled()&&null!=b&&g.isCellEditable(b)){var d="";if(mxUtils.isNode(b.value)){var c=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&b.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(c=b.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==c&&(c=b.value.getAttribute("tooltip"));null!=c&&(d=c)}d=new TextareaDialog(e,mxResources.get("editTooltip")+":",d,function(d){g.setTooltipForCell(b,
-d)});e.showDialog(d.container,320,200,!0,!0);d.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var b=g.getLinkForCell(g.getSelectionCell());null!=b&&g.openLink(b)});this.addAction("editLink...",function(){var b=g.getSelectionCell();if(g.isEnabled()&&null!=b&&g.isCellEditable(b)){var d=g.getLinkForCell(b)||"";e.showLinkDialog(d,mxResources.get("apply"),function(d,c,f){d=mxUtils.trim(d);g.setLinkForCell(b,0<d.length?d:null);g.setAttributeForCell(b,"linkTarget",f)},!0,g.getLinkTargetForCell(b))}},
-null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&(g.clearSelection(),e.actions.get("image").funct())})).isEnabled=p;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&e.showLinkDialog("",mxResources.get("insert"),function(b,d,c){b=mxUtils.trim(b);if(0<b.length){var f=null,e=g.getLinkTitle(b);null!=d&&0<d.length&&(f=d[0].iconUrl,
-e=d[0].name||d[0].type,e=e.charAt(0).toUpperCase()+e.substring(1),30<e.length&&(e=e.substring(0,30)+"..."));d=new mxCell(e,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+(null!=f?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+f:"spacing=10;"));d.vertex=!0;f=g.getCenterInsertPoint(g.getBoundingBoxFromGeometry([d],!0));d.geometry.x=f.x;d.geometry.y=f.y;g.setAttributeForCell(d,"linkTarget",c);g.setLinkForCell(d,b);g.cellSizeUpdated(d,
-!0);g.getModel().beginUpdate();try{d=g.addCell(d),g.fireEvent(new mxEventObject("cellsInserted","cells",[d]))}finally{g.getModel().endUpdate()}g.setSelectionCell(d);g.scrollCellToVisible(g.getSelectionCell())}},!0)})).isEnabled=p;this.addAction("link...",mxUtils.bind(this,function(){if(g.isEnabled())if(g.cellEditor.isContentEditing()){var b=g.getSelectedElement(),d=g.getParentByName(b,"A",g.cellEditor.textarea),c="";if(null==d&&null!=b&&null!=b.getElementsByTagName)for(var m=b.getElementsByTagName("a"),
-k=0;k<m.length&&null==d;k++)m[k].textContent==b.textContent&&(d=m[k]);null!=d&&"A"==d.nodeName&&(c=d.getAttribute("href")||"",g.selectNode(d));var u=g.cellEditor.saveSelection();e.showLinkDialog(c,mxResources.get("apply"),mxUtils.bind(this,function(b){g.cellEditor.restoreSelection(u);null!=b&&g.insertLink(b)}))}else g.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=p;this.addAction("autosize",function(){var b=g.getSelectionCells();if(null!=b){g.getModel().beginUpdate();
-try{for(var d=0;d<b.length;d++){var c=b[d];0<g.getModel().getChildCount(c)?g.updateGroupBounds([c],0,!0):g.updateCellSize(c)}}finally{g.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){g.stopEditing();var b=g.getCommonStyle(g.getSelectionCells()),b="1"==mxUtils.getValue(b,"html","0")?null:"1";g.getModel().beginUpdate();try{for(var d=g.getEditableCells(g.getSelectionCells()),c=0;c<d.length;c++)if(state=g.getView().getState(d[c]),null!=state){var m=
-mxUtils.getValue(state.style,"html","0");if("1"==m&&null==b){var k=g.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(k=k.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var u=document.createElement("div");u.innerHTML=g.sanitizeHtml(k);k=mxUtils.extractTextWithWhitespace(u.childNodes);g.cellLabelChanged(state.cell,k);g.setCellStyles("html",b,[d[c]])}else"0"==m&&"1"==b&&(k=mxUtils.htmlEntities(g.convertValueToString(state.cell),!1),"0"!=mxUtils.getValue(state.style,"nl2Br",
-"1")&&(k=k.replace(/\n/g,"<br/>")),g.cellLabelChanged(state.cell,g.sanitizeHtml(k)),g.setCellStyles("html",b,[d[c]]))}e.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=b?b:"0"],"cells",d))}finally{g.getModel().endUpdate()}});this.addAction("wordWrap",function(){var b=g.getView().getState(g.getSelectionCell()),d="wrap";g.stopEditing();null!=b&&"wrap"==b.style[mxConstants.STYLE_WHITE_SPACE]&&(d=null);g.setCellStyles(mxConstants.STYLE_WHITE_SPACE,d)});this.addAction("rotation",
-function(){var b="0",d=g.getView().getState(g.getSelectionCell());null!=d&&(b=d.style[mxConstants.STYLE_ROTATION]||b);b=new FilenameDialog(e,b,mxResources.get("apply"),function(b){null!=b&&0<b.length&&g.setCellStyles(mxConstants.STYLE_ROTATION,b)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");e.showDialog(b.container,375,80,!0,!0);b.init()});this.addAction("resetView",function(){g.zoomTo(1);e.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",function(b){g.isFastZoomEnabled()?
-g.lazyZoom(!0,!0,e.buttonZoomDelay):g.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(b){g.isFastZoomEnabled()?g.lazyZoom(!1,!0,e.buttonZoomDelay):g.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var b=g.isSelectionEmpty()?g.getGraphBounds():g.getBoundingBox(g.getSelectionCells()),d=g.view.translate,c=g.view.scale;b.x=b.x/c-d.x;b.y=b.y/c-d.y;b.width/=c;b.height/=c;null!=g.backgroundImage&&
-(b=mxRectangle.fromRectangle(b),b.add(new mxRectangle(0,0,g.backgroundImage.width,g.backgroundImage.height)));0==b.width||0==b.height?(g.zoomTo(1),e.resetScrollbars()):(d=Editor.fitWindowBorders,null!=d&&(b.x-=d.x,b.y-=d.y,b.width+=d.width+d.x,b.height+=d.height+d.y),g.fitWindow(b))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){g.pageVisible||this.get("pageView").funct();var b=g.pageFormat,d=g.pageScale;g.zoomTo(Math.floor(20*Math.min((g.container.clientWidth-
-10)/b.width/d,(g.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(g.container)&&(b=g.getPagePadding(),g.container.scrollTop=b.y*g.view.scale-1,g.container.scrollLeft=Math.min(b.x*g.view.scale,(g.container.scrollWidth-g.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){g.pageVisible||this.get("pageView").funct();var b=g.pageFormat,d=g.pageScale;g.zoomTo(Math.floor(20*Math.min((g.container.clientWidth-10)/(2*b.width)/
-d,(g.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(g.container)&&(b=g.getPagePadding(),g.container.scrollTop=Math.min(b.y,(g.container.scrollHeight-g.container.clientHeight)/2),g.container.scrollLeft=Math.min(b.x,(g.container.scrollWidth-g.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){g.pageVisible||this.get("pageView").funct();g.zoomTo(Math.floor(20*(g.container.clientWidth-10)/g.pageFormat.width/g.pageScale)/
-20);if(mxUtils.hasScrollbars(g.container)){var b=g.getPagePadding();g.container.scrollLeft=Math.min(b.x*g.view.scale,(g.container.scrollWidth-g.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,parseInt(100*g.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(b){b=parseInt(b);!isNaN(b)&&0<b&&g.zoomTo(b/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(b.container,
-300,80,!0,!0);b.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,parseInt(100*g.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(b){b=parseInt(b);!isNaN(b)&&0<b&&(b=new ChangePageSetup(e,null,null,null,b/100),b.ignoreColor=!0,b.ignoreImage=!0,g.model.execute(b))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(b.container,300,80,!0,!0);b.init()}));var t=null,t=this.addAction("grid",
-function(){g.setGridEnabled(!g.isGridEnabled());g.defaultGridEnabled=g.isGridEnabled();e.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+"+Shift+G");t.setToggleAction(!0);t.setSelectedCallback(function(){return g.isGridEnabled()});t.setEnabled(!1);t=this.addAction("guides",function(){g.graphHandler.guidesEnabled=!g.graphHandler.guidesEnabled;e.fireEvent(new mxEventObject("guidesEnabledChanged"))});t.setToggleAction(!0);t.setSelectedCallback(function(){return g.graphHandler.guidesEnabled});
-t.setEnabled(!1);t=this.addAction("tooltips",function(){g.tooltipHandler.setEnabled(!g.tooltipHandler.isEnabled());e.fireEvent(new mxEventObject("tooltipsEnabledChanged"))});t.setToggleAction(!0);t.setSelectedCallback(function(){return g.tooltipHandler.isEnabled()});t=this.addAction("collapseExpand",function(){var b=new ChangePageSetup(e);b.ignoreColor=!0;b.ignoreImage=!0;b.foldingEnabled=!g.foldingEnabled;g.model.execute(b)});t.setToggleAction(!0);t.setSelectedCallback(function(){return g.foldingEnabled});
-t.isEnabled=p;t=this.addAction("scrollbars",function(){e.setScrollbars(!e.hasScrollbars())});t.setToggleAction(!0);t.setSelectedCallback(function(){return g.scrollbars});t=this.addAction("pageView",mxUtils.bind(this,function(){e.setPageVisible(!g.pageVisible)}));t.setToggleAction(!0);t.setSelectedCallback(function(){return g.pageVisible});t=this.addAction("connectionArrows",function(){g.connectionArrowsEnabled=!g.connectionArrowsEnabled;e.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,
-null,"Alt+Shift+A");t.setToggleAction(!0);t.setSelectedCallback(function(){return g.connectionArrowsEnabled});t=this.addAction("connectionPoints",function(){g.setConnectable(!g.connectionHandler.isEnabled());e.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");t.setToggleAction(!0);t.setSelectedCallback(function(){return g.connectionHandler.isEnabled()});t=this.addAction("copyConnect",function(){g.connectionHandler.setCreateTarget(!g.connectionHandler.isCreateTarget());
-e.fireEvent(new mxEventObject("copyConnectChanged"))});t.setToggleAction(!0);t.setSelectedCallback(function(){return g.connectionHandler.isCreateTarget()});t.isEnabled=p;t=this.addAction("autosave",function(){e.editor.setAutosave(!e.editor.autosave)});t.setToggleAction(!0);t.setSelectedCallback(function(){return e.editor.autosave});t.isEnabled=p;t.visible=!1;this.addAction("help",function(){var b="";mxResources.isLanguageSupported(mxClient.language)&&(b="_"+mxClient.language);g.openLink(RESOURCES_PATH+
-"/help"+b+".html")});var d=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){d||(e.showDialog((new AboutDialog(e)).container,320,280,!0,!0,function(){d=!1}),d=!0)}));t=mxUtils.bind(this,function(b,d,c,e){return this.addAction(b,function(){if(null!=c&&g.cellEditor.isContentEditing())c();else{g.stopEditing(!1);g.getModel().beginUpdate();try{var b=g.getEditableCells(g.getSelectionCells());g.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,d,b);(d&mxConstants.FONT_BOLD)==
-mxConstants.FONT_BOLD?g.updateLabelElements(b,function(b){b.style.fontWeight=null;"B"==b.nodeName&&g.replaceElement(b)}):(d&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?g.updateLabelElements(b,function(b){b.style.fontStyle=null;"I"==b.nodeName&&g.replaceElement(b)}):(d&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&g.updateLabelElements(b,function(b){b.style.textDecoration=null;"U"==b.nodeName&&g.replaceElement(b)});for(var f=0;f<b.length;f++)0==g.model.getChildCount(b[f])&&g.autoSizeCell(b[f],
-!1)}finally{g.getModel().endUpdate()}}},null,null,e)});t("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");t("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");t("underline",mxConstants.FONT_UNDERLINE,function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){e.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",
+320,240,!0,!0)}).isEnabled=p;this.addAction("print...",function(){e.showDialog((new PrintDialog(e)).container,300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(f,null,10,10)});this.addAction("undo",function(){e.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){e.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){var b=null;try{b=e.copyXml(),
+null!=b&&f.removeCells(b,!1)}catch(l){}null==b&&mxClipboard.cut(f)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{e.copyXml()}catch(g){}try{mxClipboard.copy(f)}catch(g){e.handleError(g)}},null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){if(f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())){var b=!1;try{Editor.enableNativeCipboard&&(e.readGraphModelFromClipboard(function(b){if(null!=b){f.getModel().beginUpdate();try{e.pasteXml(b,!0)}finally{f.getModel().endUpdate()}}else mxClipboard.paste(f)}),
+b=!0)}catch(l){}b||mxClipboard.paste(f)}},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(b){function d(b){if(null!=b){for(var d=!0,g=0;g<b.length&&d;g++)d=d&&f.model.isEdge(b[g]);var c=f.view.translate,g=f.view.scale,e=c.x,l=c.y,c=null;if(1==b.length&&d){var m=f.getCellGeometry(b[0]);null!=m&&(c=m.getTerminalPoint(!0))}c=null!=c?c:f.getBoundingBoxFromGeometry(b,d);null!=c&&(d=Math.round(f.snap(f.popupMenuHandler.triggerX/g-e)),g=Math.round(f.snap(f.popupMenuHandler.triggerY/
+g-l)),f.cellsMoved(b,d-c.x,g-c.y))}}function g(){f.getModel().beginUpdate();try{d(mxClipboard.paste(f))}finally{f.getModel().endUpdate()}}if(f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())){b=!1;try{Editor.enableNativeCipboard&&(e.readGraphModelFromClipboard(function(b){if(null!=b){f.getModel().beginUpdate();try{d(e.pasteXml(b,!0))}finally{f.getModel().endUpdate()}}else g()}),b=!0)}catch(m){}b||g()}});this.addAction("copySize",function(){var b=f.getSelectionCell();f.isEnabled()&&null!=b&&f.getModel().isVertex(b)&&
+(b=f.getCellGeometry(b),null!=b&&(e.copiedSize=new mxRectangle(b.x,b.y,b.width,b.height)))},null,null,"Alt+Shift+X");this.addAction("pasteSize",function(){if(f.isEnabled()&&!f.isSelectionEmpty()&&null!=e.copiedSize){f.getModel().beginUpdate();try{for(var b=f.getResizableCells(f.getSelectionCells()),d=0;d<b.length;d++)if(f.getModel().isVertex(b[d])){var c=f.getCellGeometry(b[d]);null!=c&&(c=c.clone(),c.width=e.copiedSize.width,c.height=e.copiedSize.height,f.getModel().setGeometry(b[d],c))}}finally{f.getModel().endUpdate()}}},
+null,null,"Alt+Shift+V");this.addAction("copyData",function(){var b=f.getSelectionCell()||f.getModel().getRoot();f.isEnabled()&&null!=b&&(b=b.cloneValue(),null==b||isNaN(b.nodeType)||(e.copiedValue=b))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(b,d){function c(d,c){var e=g.getValue(d);c=d.cloneValue(c);c.removeAttribute("placeholders");null==e||isNaN(e.nodeType)||c.setAttribute("placeholders",e.getAttribute("placeholders"));null!=b&&mxEvent.isShiftDown(b)||c.setAttribute("label",
+f.convertValueToString(d));g.setValue(d,c)}b=null!=d?d:b;var g=f.getModel();if(f.isEnabled()&&!f.isSelectionEmpty()&&null!=e.copiedValue){g.beginUpdate();try{var l=f.getEditableCells(f.getSelectionCells());if(0==l.length)c(g.getRoot(),e.copiedValue);else for(var k=0;k<l.length;k++)c(l[k],e.copiedValue)}finally{g.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(d,e){d=null!=e?e:d;null!=d&&mxEvent.isShiftDown(d)?c():b(null!=d&&(mxEvent.isControlDown(d)||mxEvent.isMetaDown(d)||
+mxEvent.isAltDown(d)))},null,null,"Delete");this.addAction("deleteAll",function(){b(!0)});this.addAction("deleteLabels",function(){c()},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){try{f.setSelectionCells(f.duplicateCells()),f.scrollCellToVisible(f.getSelectionCell())}catch(g){e.handleError(g)}},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(b,d){b=null!=d?d:b;f.turnShapes(f.getResizableCells(f.getSelectionCells()),
+null!=b?mxEvent.isShiftDown(b):!1)},null,null,mxClient.IS_SF?null:Editor.ctrlKey+"+R"));this.put("selectConnections",new Action(mxResources.get("selectEdges"),function(b){b=f.getSelectionCell();f.isEnabled()&&null!=b&&f.addSelectionCells(f.getEdges(b))}));this.addAction("selectVertices",function(){f.selectVertices(null,!0)},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){f.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){f.selectAll(null,
+!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){f.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!f.isSelectionEmpty()){f.getModel().beginUpdate();try{var b=f.getSelectionCells(),d=f.getCurrentCellStyle(f.getSelectionCell()),c=1==mxUtils.getValue(d,mxConstants.STYLE_EDITABLE,1)?0:1;f.setCellStyles(mxConstants.STYLE_MOVABLE,c,b);f.setCellStyles(mxConstants.STYLE_RESIZABLE,c,b);f.setCellStyles(mxConstants.STYLE_ROTATABLE,c,
+b);f.setCellStyles(mxConstants.STYLE_DELETABLE,c,b);f.setCellStyles(mxConstants.STYLE_EDITABLE,c,b);f.setCellStyles("connectable",c,b)}finally{f.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+L");this.addAction("home",function(){f.home()},null,null,"Shift+Home");this.addAction("exitGroup",function(){f.exitGroup()},null,null,Editor.ctrlKey+"+Shift+Home");this.addAction("enterGroup",function(){f.enterGroup()},null,null,Editor.ctrlKey+"+Shift+End");this.addAction("collapse",function(){f.foldCells(!0)},
+null,null,Editor.ctrlKey+"+Home");this.addAction("expand",function(){f.foldCells(!1)},null,null,Editor.ctrlKey+"+End");this.addAction("toFront",function(){f.orderCells(!1)},null,null,Editor.ctrlKey+"+Shift+F");this.addAction("toBack",function(){f.orderCells(!0)},null,null,Editor.ctrlKey+"+Shift+B");this.addAction("bringForward",function(b){f.orderCells(!1,null,!0)});this.addAction("sendBackward",function(b){f.orderCells(!0,null,!0)});this.addAction("group",function(){if(f.isEnabled()){var b=mxUtils.sortCells(f.getSelectionCells(),
+!0);1!=b.length||f.isTable(b[0])||f.isTableRow(b[0])?(b=f.getCellsForGroup(b),1<b.length&&f.setSelectionCell(f.groupCells(null,0,b))):f.setCellStyles("container","1")}},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){if(f.isEnabled()){var b=f.getEditableCells(f.getSelectionCells());f.model.beginUpdate();try{var d=f.ungroupCells();if(null!=b)for(var c=0;c<b.length;c++)f.model.contains(b[c])&&(0==f.model.getChildCount(b[c])&&f.model.isVertex(b[c])&&f.setCellStyles("container","0",
+[b[c]]),d.push(b[c]))}finally{f.model.endUpdate()}0<d.length&&f.setSelectionCells(d)}},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){if(f.isEnabled()){var b=f.getSelectionCells();if(null!=b){for(var d=[],c=0;c<b.length;c++)f.isTableRow(b[c])||f.isTableCell(b[c])||d.push(b[c]);f.removeCellsFromParent(d)}}});this.addAction("edit",function(){f.isEnabled()&&f.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var b=f.getSelectionCell()||
+f.getModel().getRoot();e.showDataDialog(b)},null,null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var b=f.getSelectionCell();if(f.isEnabled()&&null!=b&&f.isCellEditable(b)){var d="";if(mxUtils.isNode(b.value)){var c=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&b.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(c=b.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==c&&(c=b.value.getAttribute("tooltip"));null!=c&&(d=c)}d=new TextareaDialog(e,mxResources.get("editTooltip")+
+":",d,function(d){f.setTooltipForCell(b,d)});e.showDialog(d.container,320,200,!0,!0);d.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var b=f.getLinkForCell(f.getSelectionCell());null!=b&&f.openLink(b)});this.addAction("editLink...",function(){var b=f.getSelectionCell();if(f.isEnabled()&&null!=b&&f.isCellEditable(b)){var d=f.getLinkForCell(b)||"";e.showLinkDialog(d,mxResources.get("apply"),function(d,c,g){d=mxUtils.trim(d);f.setLinkForCell(b,0<d.length?d:null);f.setAttributeForCell(b,
+"linkTarget",g)},!0,f.getLinkTargetForCell(b))}},null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())&&(f.clearSelection(),e.actions.get("image").funct())})).isEnabled=p;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())&&e.showLinkDialog("",mxResources.get("insert"),function(b,d,c){b=mxUtils.trim(b);if(0<b.length){var g=null,
+e=f.getLinkTitle(b);null!=d&&0<d.length&&(g=d[0].iconUrl,e=d[0].name||d[0].type,e=e.charAt(0).toUpperCase()+e.substring(1),30<e.length&&(e=e.substring(0,30)+"..."));d=new mxCell(e,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+(null!=g?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+g:"spacing=10;"));d.vertex=!0;g=f.getCenterInsertPoint(f.getBoundingBoxFromGeometry([d],!0));d.geometry.x=g.x;d.geometry.y=g.y;f.setAttributeForCell(d,
+"linkTarget",c);f.setLinkForCell(d,b);f.cellSizeUpdated(d,!0);f.getModel().beginUpdate();try{d=f.addCell(d),f.fireEvent(new mxEventObject("cellsInserted","cells",[d]))}finally{f.getModel().endUpdate()}f.setSelectionCell(d);f.scrollCellToVisible(f.getSelectionCell())}},!0)})).isEnabled=p;this.addAction("link...",mxUtils.bind(this,function(){if(f.isEnabled())if(f.cellEditor.isContentEditing()){var b=f.getSelectedElement(),d=f.getParentByName(b,"A",f.cellEditor.textarea),c="";if(null==d&&null!=b&&null!=
+b.getElementsByTagName)for(var m=b.getElementsByTagName("a"),k=0;k<m.length&&null==d;k++)m[k].textContent==b.textContent&&(d=m[k]);null!=d&&"A"==d.nodeName&&(c=d.getAttribute("href")||"",f.selectNode(d));var u=f.cellEditor.saveSelection();e.showLinkDialog(c,mxResources.get("apply"),mxUtils.bind(this,function(b){f.cellEditor.restoreSelection(u);null!=b&&f.insertLink(b)}))}else f.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=p;this.addAction("autosize",
+function(){var b=f.getSelectionCells();if(null!=b){f.getModel().beginUpdate();try{for(var d=0;d<b.length;d++){var c=b[d];0<f.getModel().getChildCount(c)?f.updateGroupBounds([c],0,!0):f.updateCellSize(c)}}finally{f.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){f.stopEditing();var b=f.getCommonStyle(f.getSelectionCells()),b="1"==mxUtils.getValue(b,"html","0")?null:"1";f.getModel().beginUpdate();try{for(var d=f.getEditableCells(f.getSelectionCells()),
+c=0;c<d.length;c++)if(state=f.getView().getState(d[c]),null!=state){var m=mxUtils.getValue(state.style,"html","0");if("1"==m&&null==b){var k=f.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(k=k.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var u=document.createElement("div");u.innerHTML=f.sanitizeHtml(k);k=mxUtils.extractTextWithWhitespace(u.childNodes);f.cellLabelChanged(state.cell,k);f.setCellStyles("html",b,[d[c]])}else"0"==m&&"1"==b&&(k=mxUtils.htmlEntities(f.convertValueToString(state.cell),
+!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(k=k.replace(/\n/g,"<br/>")),f.cellLabelChanged(state.cell,f.sanitizeHtml(k)),f.setCellStyles("html",b,[d[c]]))}e.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=b?b:"0"],"cells",d))}finally{f.getModel().endUpdate()}});this.addAction("wordWrap",function(){var b=f.getView().getState(f.getSelectionCell()),d="wrap";f.stopEditing();null!=b&&"wrap"==b.style[mxConstants.STYLE_WHITE_SPACE]&&(d=null);f.setCellStyles(mxConstants.STYLE_WHITE_SPACE,
+d)});this.addAction("rotation",function(){var b="0",d=f.getView().getState(f.getSelectionCell());null!=d&&(b=d.style[mxConstants.STYLE_ROTATION]||b);b=new FilenameDialog(e,b,mxResources.get("apply"),function(b){null!=b&&0<b.length&&f.setCellStyles(mxConstants.STYLE_ROTATION,b)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");e.showDialog(b.container,375,80,!0,!0);b.init()});this.addAction("resetView",function(){f.zoomTo(1);e.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",
+function(b){f.isFastZoomEnabled()?f.lazyZoom(!0,!0,e.buttonZoomDelay):f.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(b){f.isFastZoomEnabled()?f.lazyZoom(!1,!0,e.buttonZoomDelay):f.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var b=f.isSelectionEmpty()?f.getGraphBounds():f.getBoundingBox(f.getSelectionCells()),d=f.view.translate,c=f.view.scale;b.x=b.x/c-d.x;b.y=b.y/c-d.y;b.width/=c;
+b.height/=c;null!=f.backgroundImage&&(b=mxRectangle.fromRectangle(b),b.add(new mxRectangle(0,0,f.backgroundImage.width,f.backgroundImage.height)));0==b.width||0==b.height?(f.zoomTo(1),e.resetScrollbars()):(d=Editor.fitWindowBorders,null!=d&&(b.x-=d.x,b.y-=d.y,b.width+=d.width+d.x,b.height+=d.height+d.y),f.fitWindow(b))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){f.pageVisible||this.get("pageView").funct();var b=f.pageFormat,d=f.pageScale;f.zoomTo(Math.floor(20*
+Math.min((f.container.clientWidth-10)/b.width/d,(f.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(f.container)&&(b=f.getPagePadding(),f.container.scrollTop=b.y*f.view.scale-1,f.container.scrollLeft=Math.min(b.x*f.view.scale,(f.container.scrollWidth-f.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){f.pageVisible||this.get("pageView").funct();var b=f.pageFormat,d=f.pageScale;f.zoomTo(Math.floor(20*Math.min((f.container.clientWidth-
+10)/(2*b.width)/d,(f.container.clientHeight-10)/b.height/d))/20);mxUtils.hasScrollbars(f.container)&&(b=f.getPagePadding(),f.container.scrollTop=Math.min(b.y,(f.container.scrollHeight-f.container.clientHeight)/2),f.container.scrollLeft=Math.min(b.x,(f.container.scrollWidth-f.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){f.pageVisible||this.get("pageView").funct();f.zoomTo(Math.floor(20*(f.container.clientWidth-10)/f.pageFormat.width/
+f.pageScale)/20);if(mxUtils.hasScrollbars(f.container)){var b=f.getPagePadding();f.container.scrollLeft=Math.min(b.x*f.view.scale,(f.container.scrollWidth-f.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,parseInt(100*f.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(b){b=parseInt(b);!isNaN(b)&&0<b&&f.zoomTo(b/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(b.container,
+300,80,!0,!0);b.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var b=new FilenameDialog(this.editorUi,parseInt(100*f.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(b){b=parseInt(b);!isNaN(b)&&0<b&&(b=new ChangePageSetup(e,null,null,null,b/100),b.ignoreColor=!0,b.ignoreImage=!0,f.model.execute(b))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(b.container,300,80,!0,!0);b.init()}));var t=null,t=this.addAction("grid",
+function(){f.setGridEnabled(!f.isGridEnabled());f.defaultGridEnabled=f.isGridEnabled();e.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+"+Shift+G");t.setToggleAction(!0);t.setSelectedCallback(function(){return f.isGridEnabled()});t.setEnabled(!1);t=this.addAction("guides",function(){f.graphHandler.guidesEnabled=!f.graphHandler.guidesEnabled;e.fireEvent(new mxEventObject("guidesEnabledChanged"))});t.setToggleAction(!0);t.setSelectedCallback(function(){return f.graphHandler.guidesEnabled});
+t.setEnabled(!1);t=this.addAction("tooltips",function(){f.tooltipHandler.setEnabled(!f.tooltipHandler.isEnabled());e.fireEvent(new mxEventObject("tooltipsEnabledChanged"))});t.setToggleAction(!0);t.setSelectedCallback(function(){return f.tooltipHandler.isEnabled()});t=this.addAction("collapseExpand",function(){var b=new ChangePageSetup(e);b.ignoreColor=!0;b.ignoreImage=!0;b.foldingEnabled=!f.foldingEnabled;f.model.execute(b)});t.setToggleAction(!0);t.setSelectedCallback(function(){return f.foldingEnabled});
+t.isEnabled=p;t=this.addAction("scrollbars",function(){e.setScrollbars(!e.hasScrollbars())});t.setToggleAction(!0);t.setSelectedCallback(function(){return f.scrollbars});t=this.addAction("pageView",mxUtils.bind(this,function(){e.setPageVisible(!f.pageVisible)}));t.setToggleAction(!0);t.setSelectedCallback(function(){return f.pageVisible});t=this.addAction("connectionArrows",function(){f.connectionArrowsEnabled=!f.connectionArrowsEnabled;e.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,
+null,"Alt+Shift+A");t.setToggleAction(!0);t.setSelectedCallback(function(){return f.connectionArrowsEnabled});t=this.addAction("connectionPoints",function(){f.setConnectable(!f.connectionHandler.isEnabled());e.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");t.setToggleAction(!0);t.setSelectedCallback(function(){return f.connectionHandler.isEnabled()});t=this.addAction("copyConnect",function(){f.connectionHandler.setCreateTarget(!f.connectionHandler.isCreateTarget());
+e.fireEvent(new mxEventObject("copyConnectChanged"))});t.setToggleAction(!0);t.setSelectedCallback(function(){return f.connectionHandler.isCreateTarget()});t.isEnabled=p;t=this.addAction("autosave",function(){e.editor.setAutosave(!e.editor.autosave)});t.setToggleAction(!0);t.setSelectedCallback(function(){return e.editor.autosave});t.isEnabled=p;t.visible=!1;this.addAction("help",function(){var b="";mxResources.isLanguageSupported(mxClient.language)&&(b="_"+mxClient.language);f.openLink(RESOURCES_PATH+
+"/help"+b+".html")});var d=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){d||(e.showDialog((new AboutDialog(e)).container,320,280,!0,!0,function(){d=!1}),d=!0)}));t=mxUtils.bind(this,function(b,d,c,e){return this.addAction(b,function(){if(null!=c&&f.cellEditor.isContentEditing())c();else{f.stopEditing(!1);f.getModel().beginUpdate();try{var b=f.getEditableCells(f.getSelectionCells());f.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,d,b);(d&mxConstants.FONT_BOLD)==
+mxConstants.FONT_BOLD?f.updateLabelElements(b,function(b){b.style.fontWeight=null;"B"==b.nodeName&&f.replaceElement(b)}):(d&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?f.updateLabelElements(b,function(b){b.style.fontStyle=null;"I"==b.nodeName&&f.replaceElement(b)}):(d&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&f.updateLabelElements(b,function(b){b.style.textDecoration=null;"U"==b.nodeName&&f.replaceElement(b)});for(var g=0;g<b.length;g++)0==f.model.getChildCount(b[g])&&f.autoSizeCell(b[g],
+!1)}finally{f.getModel().endUpdate()}}},null,null,e)});t("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");t("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");t("underline",mxConstants.FONT_UNDERLINE,function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){e.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",
function(){e.menus.pickColor(mxConstants.STYLE_STROKECOLOR)});this.addAction("fillColor...",function(){e.menus.pickColor(mxConstants.STYLE_FILLCOLOR)});this.addAction("gradientColor...",function(){e.menus.pickColor(mxConstants.STYLE_GRADIENTCOLOR)});this.addAction("backgroundColor...",function(){e.menus.pickColor(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"backcolor")});this.addAction("borderColor...",function(){e.menus.pickColor(mxConstants.STYLE_LABEL_BORDERCOLOR)});this.addAction("vertical",function(){e.menus.toggleStyle(mxConstants.STYLE_HORIZONTAL,
-!0)});this.addAction("shadow",function(){e.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){g.getModel().beginUpdate();try{g.setCellStyles(mxConstants.STYLE_DASHED,null),g.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",g.getSelectionCells()))}finally{g.getModel().endUpdate()}});this.addAction("dashed",function(){g.getModel().beginUpdate();
-try{g.setCellStyles(mxConstants.STYLE_DASHED,"1"),g.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",g.getSelectionCells()))}finally{g.getModel().endUpdate()}});this.addAction("dotted",function(){g.getModel().beginUpdate();try{g.setCellStyles(mxConstants.STYLE_DASHED,"1"),g.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),e.fireEvent(new mxEventObject("styleChanged",
-"keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",g.getSelectionCells()))}finally{g.getModel().endUpdate()}});this.addAction("sharp",function(){g.getModel().beginUpdate();try{g.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),g.setCellStyles(mxConstants.STYLE_CURVED,"0"),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",g.getSelectionCells()))}finally{g.getModel().endUpdate()}});
-this.addAction("rounded",function(){g.getModel().beginUpdate();try{g.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),g.setCellStyles(mxConstants.STYLE_CURVED,"0"),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",g.getSelectionCells()))}finally{g.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!g.isSelectionEmpty()&&g.isEnabled()){g.getModel().beginUpdate();try{var b=g.getSelectionCells(),d=g.getCurrentCellStyle(b[0]),
-c="1"==mxUtils.getValue(d,mxConstants.STYLE_ROUNDED,"0")?"0":"1";g.setCellStyles(mxConstants.STYLE_ROUNDED,c);g.setCellStyles(mxConstants.STYLE_CURVED,null);e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[c,"0"],"cells",g.getSelectionCells()))}finally{g.getModel().endUpdate()}}});this.addAction("curved",function(){g.getModel().beginUpdate();try{g.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),g.setCellStyles(mxConstants.STYLE_CURVED,
-"1"),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",g.getSelectionCells()))}finally{g.getModel().endUpdate()}});this.addAction("collapsible",function(){var b=g.view.getState(g.getSelectionCell()),d="1";null!=b&&null!=g.getFoldingImage(b)&&(d="0");g.setCellStyles("collapsible",d);e.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[d],"cells",g.getSelectionCells()))});this.addAction("editStyle...",
-mxUtils.bind(this,function(){var b=g.getEditableCells(g.getSelectionCells());if(null!=b&&0<b.length){var d=g.getModel(),d=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",d.getStyle(b[0])||"",function(d){null!=d&&g.setCellStyle(mxUtils.trim(d),b)},null,null,400,220);this.editorUi.showDialog(d.container,420,300,!0,!0);d.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){g.isEnabled()&&!g.isSelectionEmpty()&&e.setDefaultStyle(g.getSelectionCell())},
-null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){g.isEnabled()&&e.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var b=g.getSelectionCell();if(null!=b&&g.getModel().isEdge(b)){var d=k.graph.selectionCellsHandler.getHandler(b);if(d instanceof mxEdgeHandler){for(var c=g.view.translate,e=g.view.scale,n=c.x,c=c.y,b=g.getModel().getParent(b),u=g.getCellGeometry(b);g.getModel().isVertex(b)&&null!=u;)n+=u.x,c+=u.y,b=g.getModel().getParent(b),
-u=g.getCellGeometry(b);n=Math.round(g.snap(g.popupMenuHandler.triggerX/e-n));e=Math.round(g.snap(g.popupMenuHandler.triggerY/e-c));d.addPointAt(d.state,n,e)}}});this.addAction("removeWaypoint",function(){var b=e.actions.get("removeWaypoint");null!=b.handler&&b.handler.removePoint(b.handler.state,b.index)});this.addAction("clearWaypoints",function(b,d){b=null!=d?d:b;var c=g.getSelectionCells();if(null!=c){c=g.getEditableCells(g.addAllEdges(c));g.getModel().beginUpdate();try{for(var f=0;f<c.length;f++){var e=
-c[f];if(g.getModel().isEdge(e)){var l=g.getCellGeometry(e);null!=d&&mxEvent.isShiftDown(b)?(g.setCellStyles(mxConstants.STYLE_EXIT_X,null,[e]),g.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[e]),g.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[e]),g.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[e])):null!=l&&(l=l.clone(),l.points=null,l.x=0,l.y=0,l.offset=null,g.getModel().setGeometry(e,l))}}}finally{g.getModel().endUpdate()}}},null,null,"Alt+Shift+C");t=this.addAction("subscript",mxUtils.bind(this,
-function(){g.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");t=this.addAction("superscript",mxUtils.bind(this,function(){g.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())){var b=mxResources.get("image")+" ("+mxResources.get("url")+"):",d=g.getView().getState(g.getSelectionCell()),c="";null!=
-d&&(c=d.style[mxConstants.STYLE_IMAGE]||c);var m=g.cellEditor.saveSelection();e.showImageDialog(b,c,function(b,d,c){if(g.cellEditor.isContentEditing())g.cellEditor.restoreSelection(m),g.insertImage(b,d,c);else{var f=g.getSelectionCells();if(null!=b&&(0<b.length||0<f.length)){var e=null;g.getModel().beginUpdate();try{if(0==f.length){var f=[g.insertVertex(g.getDefaultParent(),null,"",0,0,d,c,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")],l=g.getCenterInsertPoint(g.getBoundingBoxFromGeometry(f,
-!0));f[0].geometry.x=l.x;f[0].geometry.y=l.y;e=f;g.fireEvent(new mxEventObject("cellsInserted","cells",e))}g.setCellStyles(mxConstants.STYLE_IMAGE,0<b.length?b:null,f);var k=g.getCurrentCellStyle(f[0]);"image"!=k[mxConstants.STYLE_SHAPE]&&"label"!=k[mxConstants.STYLE_SHAPE]?g.setCellStyles(mxConstants.STYLE_SHAPE,"image",f):0==b.length&&g.setCellStyles(mxConstants.STYLE_SHAPE,null,f);if(1==g.getSelectionCount()&&null!=d&&null!=c){var n=f[0],q=g.getModel().getGeometry(n);null!=q&&(q=q.clone(),q.width=
-d,q.height=c,g.getModel().setGeometry(n,q))}}finally{g.getModel().endUpdate()}null!=e&&(g.setSelectionCells(e),g.scrollCellToVisible(e[0]))}}},g.cellEditor.isContentEditing(),!g.cellEditor.isContentEditing())}}).isEnabled=p;t=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(e,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){e.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),
+!0)});this.addAction("shadow",function(){e.menus.toggleStyle(mxConstants.STYLE_SHADOW)});this.addAction("solid",function(){f.getModel().beginUpdate();try{f.setCellStyles(mxConstants.STYLE_DASHED,null),f.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",[null,null],"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}});this.addAction("dashed",function(){f.getModel().beginUpdate();
+try{f.setCellStyles(mxConstants.STYLE_DASHED,"1"),f.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1",null],"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}});this.addAction("dotted",function(){f.getModel().beginUpdate();try{f.setCellStyles(mxConstants.STYLE_DASHED,"1"),f.setCellStyles(mxConstants.STYLE_DASH_PATTERN,"1 4"),e.fireEvent(new mxEventObject("styleChanged",
+"keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}});this.addAction("sharp",function(){f.getModel().beginUpdate();try{f.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),f.setCellStyles(mxConstants.STYLE_CURVED,"0"),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}});
+this.addAction("rounded",function(){f.getModel().beginUpdate();try{f.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),f.setCellStyles(mxConstants.STYLE_CURVED,"0"),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!f.isSelectionEmpty()&&f.isEnabled()){f.getModel().beginUpdate();try{var b=f.getSelectionCells(),d=f.getCurrentCellStyle(b[0]),
+c="1"==mxUtils.getValue(d,mxConstants.STYLE_ROUNDED,"0")?"0":"1";f.setCellStyles(mxConstants.STYLE_ROUNDED,c);f.setCellStyles(mxConstants.STYLE_CURVED,null);e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[c,"0"],"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}}});this.addAction("curved",function(){f.getModel().beginUpdate();try{f.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),f.setCellStyles(mxConstants.STYLE_CURVED,
+"1"),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}});this.addAction("collapsible",function(){var b=f.view.getState(f.getSelectionCell()),d="1";null!=b&&null!=f.getFoldingImage(b)&&(d="0");f.setCellStyles("collapsible",d);e.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[d],"cells",f.getSelectionCells()))});this.addAction("editStyle...",
+mxUtils.bind(this,function(){var b=f.getEditableCells(f.getSelectionCells());if(null!=b&&0<b.length){var d=f.getModel(),d=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",d.getStyle(b[0])||"",function(d){null!=d&&f.setCellStyle(mxUtils.trim(d),b)},null,null,400,220);this.editorUi.showDialog(d.container,420,300,!0,!0);d.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){f.isEnabled()&&!f.isSelectionEmpty()&&e.setDefaultStyle(f.getSelectionCell())},
+null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){f.isEnabled()&&e.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var b=f.getSelectionCell();if(null!=b&&f.getModel().isEdge(b)){var d=k.graph.selectionCellsHandler.getHandler(b);if(d instanceof mxEdgeHandler){for(var c=f.view.translate,e=f.view.scale,n=c.x,c=c.y,b=f.getModel().getParent(b),u=f.getCellGeometry(b);f.getModel().isVertex(b)&&null!=u;)n+=u.x,c+=u.y,b=f.getModel().getParent(b),
+u=f.getCellGeometry(b);n=Math.round(f.snap(f.popupMenuHandler.triggerX/e-n));e=Math.round(f.snap(f.popupMenuHandler.triggerY/e-c));d.addPointAt(d.state,n,e)}}});this.addAction("removeWaypoint",function(){var b=e.actions.get("removeWaypoint");null!=b.handler&&b.handler.removePoint(b.handler.state,b.index)});this.addAction("clearWaypoints",function(b,d){b=null!=d?d:b;var c=f.getSelectionCells();if(null!=c){c=f.getEditableCells(f.addAllEdges(c));f.getModel().beginUpdate();try{for(var g=0;g<c.length;g++){var e=
+c[g];if(f.getModel().isEdge(e)){var l=f.getCellGeometry(e);null!=d&&mxEvent.isShiftDown(b)?(f.setCellStyles(mxConstants.STYLE_EXIT_X,null,[e]),f.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[e]),f.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[e]),f.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[e])):null!=l&&(l=l.clone(),l.points=null,l.x=0,l.y=0,l.offset=null,f.getModel().setGeometry(e,l))}}}finally{f.getModel().endUpdate()}}},null,null,"Alt+Shift+C");t=this.addAction("subscript",mxUtils.bind(this,
+function(){f.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");t=this.addAction("superscript",mxUtils.bind(this,function(){f.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())){var b=mxResources.get("image")+" ("+mxResources.get("url")+"):",d=f.getView().getState(f.getSelectionCell()),c="";null!=
+d&&(c=d.style[mxConstants.STYLE_IMAGE]||c);var k=f.cellEditor.saveSelection();e.showImageDialog(b,c,function(b,d,c){if(f.cellEditor.isContentEditing())f.cellEditor.restoreSelection(k),f.insertImage(b,d,c);else{var g=f.getSelectionCells();if(null!=b&&(0<b.length||0<g.length)){var e=null;f.getModel().beginUpdate();try{if(0==g.length){var g=[f.insertVertex(f.getDefaultParent(),null,"",0,0,d,c,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")],l=f.getCenterInsertPoint(f.getBoundingBoxFromGeometry(g,
+!0));g[0].geometry.x=l.x;g[0].geometry.y=l.y;e=g;f.fireEvent(new mxEventObject("cellsInserted","cells",e))}f.setCellStyles(mxConstants.STYLE_IMAGE,0<b.length?b:null,g);var m=f.getCurrentCellStyle(g[0]);"image"!=m[mxConstants.STYLE_SHAPE]&&"label"!=m[mxConstants.STYLE_SHAPE]?f.setCellStyles(mxConstants.STYLE_SHAPE,"image",g):0==b.length&&f.setCellStyles(mxConstants.STYLE_SHAPE,null,g);if(1==f.getSelectionCount()&&null!=d&&null!=c){var n=g[0],q=f.getModel().getGeometry(n);null!=q&&(q=q.clone(),q.width=
+d,q.height=c,f.getModel().setGeometry(n,q))}}finally{f.getModel().endUpdate()}null!=e&&(f.setSelectionCells(e),f.scrollCellToVisible(e[0]))}}},f.cellEditor.isContentEditing(),!f.cellEditor.isContentEditing())}}).isEnabled=p;t=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(e,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){e.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),
this.layersWindow.window.addListener("hide",function(){e.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),e.fireEvent(new mxEventObject("layers")),this.layersWindow.init()):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");t.setToggleAction(!0);t.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));t=this.addAction("formatPanel",mxUtils.bind(this,
function(){e.toggleFormatPanel()}),null,null,Editor.ctrlKey+"+Shift+P");t.setToggleAction(!0);t.setSelectedCallback(mxUtils.bind(this,function(){return 0<e.formatWidth}));t=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(e,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",mxUtils.bind(this,function(){e.fireEvent(new mxEventObject("outline"));this.outlineWindow.window.fit()})),this.outlineWindow.window.addListener("hide",
function(){e.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0),e.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");t.setToggleAction(!0);t.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))};
-Actions.prototype.addAction=function(b,c,e,k,g){var p;"..."==b.substring(b.length-3)?(b=b.substring(0,b.length-3),p=mxResources.get(b)+"..."):p=mxResources.get(b);return this.put(b,new Action(p,c,e,k,g))};Actions.prototype.put=function(b,c){return this.actions[b]=c};Actions.prototype.get=function(b){return this.actions[b]};function Action(b,c,e,k,g){mxEventSource.call(this);this.label=b;this.funct=this.createFunction(c);this.enabled=null!=e?e:!0;this.iconCls=k;this.shortcut=g;this.visible=!0}
+Actions.prototype.addAction=function(b,c,e,k,f){var p;"..."==b.substring(b.length-3)?(b=b.substring(0,b.length-3),p=mxResources.get(b)+"..."):p=mxResources.get(b);return this.put(b,new Action(p,c,e,k,f))};Actions.prototype.put=function(b,c){return this.actions[b]=c};Actions.prototype.get=function(b){return this.actions[b]};function Action(b,c,e,k,f){mxEventSource.call(this);this.label=b;this.funct=this.createFunction(c);this.enabled=null!=e?e:!0;this.iconCls=k;this.shortcut=f;this.visible=!0}
mxUtils.extend(Action,mxEventSource);Action.prototype.createFunction=function(b){return b};Action.prototype.setEnabled=function(b){this.enabled!=b&&(this.enabled=b,this.fireEvent(new mxEventObject("stateChanged")))};Action.prototype.isEnabled=function(){return this.enabled};Action.prototype.setToggleAction=function(b){this.toggleAction=b};Action.prototype.setSelectedCallback=function(b){this.selectedCallback=b};Action.prototype.isSelected=function(){return this.selectedCallback()};DrawioFile=function(b,c){mxEventSource.call(this);this.ui=b;this.shadowData=this.data=c||"";this.shadowPages=null;this.created=(new Date).getTime();this.stats={opened:0,merged:0,fileMerged:0,fileReloaded:0,conflicts:0,timeouts:0,saved:0,closed:0,destroyed:0,joined:0,checksumErrors:0,bytesSent:0,bytesReceived:0,msgSent:0,msgReceived:0,cacheHits:0,cacheMiss:0,cacheFail:0}};DrawioFile.SYNC=urlParams.sync||"auto";DrawioFile.LAST_WRITE_WINS=!0;mxUtils.extend(DrawioFile,mxEventSource);
DrawioFile.prototype.allChangesSavedKey="allChangesSaved";DrawioFile.prototype.savingSpinnerKey="saving";DrawioFile.prototype.savingStatusKey="saving";DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E4;DrawioFile.prototype.optimisticSyncDelay=300;DrawioFile.prototype.autosaveThread=null;DrawioFile.prototype.lastAutosave=null;DrawioFile.prototype.lastSaved=null;DrawioFile.prototype.lastChanged=null;DrawioFile.prototype.opened=null;DrawioFile.prototype.modified=!1;
DrawioFile.prototype.shadowModified=!1;DrawioFile.prototype.data=null;DrawioFile.prototype.shadowData=null;DrawioFile.prototype.shadowPages=null;DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveRevision=null;DrawioFile.prototype.maxAutosaveRevisionDelay=3E5;DrawioFile.prototype.inConflictState=!1;DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.errorReportsEnabled=!1;DrawioFile.prototype.ageStart=null;
DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};DrawioFile.prototype.synchronizeFile=function(b,c){this.savingFile?null!=c&&c({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(b,c):this.updateFile(b,c)};
-DrawioFile.prototype.updateFile=function(b,c,e,k){null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():this.getLatestVersion(mxUtils.bind(this,function(g){try{null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():null!=g?this.mergeFile(g,b,c,k):this.reloadFile(b,c))}catch(p){null!=c&&c(p)}}),c))};
-DrawioFile.prototype.mergeFile=function(b,c,e,k){var g=!0;try{this.stats.fileMerged++;var p=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),t=this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement);if(null!=t&&0<t.length){this.shadowPages=t;this.backupPatch=this.isModified()?this.ui.diffPages(p,this.ui.pages):null;var d=[this.ui.diffPages(null!=k?k:p,this.shadowPages)];if(!this.ignorePatches(d)){var f=this.ui.patchPages(p,
-d[0]);k={};var l=this.ui.getHashValueForPages(f,k),p={},q=this.ui.getHashValueForPages(this.shadowPages,p);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",d,"checksum",q==l,l);if(null!=l&&l!=q){var m=this.compressReportData(this.getAnonymizedXmlForPages(t)),n=this.compressReportData(this.getAnonymizedXmlForPages(f)),u=this.ui.hashValue(b.getCurrentEtag()),v=this.ui.hashValue(this.getCurrentEtag());this.checksumError(e,d,"Shadow Details: "+JSON.stringify(k)+
-"\nChecksum: "+l+"\nCurrent: "+q+"\nCurrent Details: "+JSON.stringify(p)+"\nFrom: "+u+"\nTo: "+v+"\n\nFile Data:\n"+m+"\nPatched Shadow:\n"+n,null,"mergeFile");return}this.patch(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw g=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(b.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(F){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
-null!=e&&e(F);try{if(g)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,F);else{var y=this.getCurrentUser(),x=null!=y?y.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),x,F)}}catch(H){}}};
-DrawioFile.prototype.getAnonymizedXmlForPages=function(b){var c=new mxCodec(mxUtils.createXmlDocument()),e=c.document.createElement("mxfile");if(null!=b)for(var k=0;k<b.length;k++){var g=c.encode(new mxGraphModel(b[k].root));"1"!=urlParams.dev&&(g=this.ui.anonymizeNode(g,!0));g.setAttribute("id",b[k].getId());b[k].viewState&&this.ui.editor.graph.saveViewState(b[k].viewState,g,!0);e.appendChild(g)}return mxUtils.getPrettyXml(e)};
+DrawioFile.prototype.updateFile=function(b,c,e,k){null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():this.getLatestVersion(mxUtils.bind(this,function(f){try{null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():null!=f?this.mergeFile(f,b,c,k):this.reloadFile(b,c))}catch(p){null!=c&&c(p)}}),c))};
+DrawioFile.prototype.mergeFile=function(b,c,e,k){var f=!0;try{this.stats.fileMerged++;var p=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),t=this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement);if(null!=t&&0<t.length){this.shadowPages=t;this.backupPatch=this.isModified()?this.ui.diffPages(p,this.ui.pages):null;var d=[this.ui.diffPages(null!=k?k:p,this.shadowPages)];if(!this.ignorePatches(d)){var g=this.ui.patchPages(p,
+d[0]);k={};var l=this.ui.getHashValueForPages(g,k),p={},q=this.ui.getHashValueForPages(this.shadowPages,p);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",d,"checksum",q==l,l);if(null!=l&&l!=q){var m=this.compressReportData(this.getAnonymizedXmlForPages(t)),n=this.compressReportData(this.getAnonymizedXmlForPages(g)),u=this.ui.hashValue(b.getCurrentEtag()),v=this.ui.hashValue(this.getCurrentEtag());this.checksumError(e,d,"Shadow Details: "+JSON.stringify(k)+
+"\nChecksum: "+l+"\nCurrent: "+q+"\nCurrent Details: "+JSON.stringify(p)+"\nFrom: "+u+"\nTo: "+v+"\n\nFile Data:\n"+m+"\nPatched Shadow:\n"+n,null,"mergeFile");return}this.patch(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw f=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(b.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(F){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
+null!=e&&e(F);try{if(f)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,F);else{var y=this.getCurrentUser(),x=null!=y?y.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),x,F)}}catch(H){}}};
+DrawioFile.prototype.getAnonymizedXmlForPages=function(b){var c=new mxCodec(mxUtils.createXmlDocument()),e=c.document.createElement("mxfile");if(null!=b)for(var k=0;k<b.length;k++){var f=c.encode(new mxGraphModel(b[k].root));"1"!=urlParams.dev&&(f=this.ui.anonymizeNode(f,!0));f.setAttribute("id",b[k].getId());b[k].viewState&&this.ui.editor.graph.saveViewState(b[k].viewState,f,!0);e.appendChild(f)}return mxUtils.getPrettyXml(e)};
DrawioFile.prototype.compressReportData=function(b,c,e){c=null!=c?c:1E4;null!=e&&null!=b&&b.length>e?b=b.substring(0,e)+"[...]":null!=b&&b.length>c&&(b=Graph.compress(b)+"\n");return b};
-DrawioFile.prototype.checksumError=function(b,c,e,k,g){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=b&&b();try{if(this.errorReportsEnabled){if(null!=c)for(b=0;b<c.length;b++)this.ui.anonymizePatch(c[b]);var p=mxUtils.bind(this,function(b){var d=this.compressReportData(JSON.stringify(c,null,2));b=null!=b?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement)),
-25E3):"n/a";this.sendErrorReport("Checksum Error in "+g+" "+this.getHash(),(null!=e?e:"")+"\n\nPatches:\n"+d+(null!=b?"\n\nRemote:\n"+b:""),null,7E4)});null==k?p(null):this.getLatestVersion(mxUtils.bind(this,function(b){null!=b&&b.getCurrentEtag()==k?p(b):p(null)}),function(){})}else{var t=this.getCurrentUser(),d=null!=t?t.id:"unknown";EditorUi.logError("Checksum Error in "+g+" "+this.getId(),null,this.getMode()+"."+this.getId(),"user_"+d+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync"));
-try{EditorUi.logEvent({category:"CHECKSUM-ERROR-SYNC-FILE-"+this.getHash(),action:g,label:"user_"+d+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync")})}catch(f){}}}catch(f){}};
-DrawioFile.prototype.sendErrorReport=function(b,c,e,k){try{var g=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),p=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),t=this.getCurrentUser(),d=null!=t?this.ui.hashValue(t.id):"unknown",f=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",l=this.getTitle(),q=l.lastIndexOf("."),t="xml";0<q&&(t=l.substring(q));var m=null!=e?e.stack:Error().stack;EditorUi.sendReport(b+" "+(new Date).toISOString()+
-":\n\nAppVersion="+navigator.appVersion+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+t+")\nUser="+d+f+"\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=c?"\n\n"+c:
-"")+(null!=e?"\n\nError: "+e.message:"")+"\n\nStack:\n"+m+"\n\nShadow:\n"+g+"\n\nData:\n"+p,k)}catch(n){}};
-DrawioFile.prototype.reloadFile=function(b,c){try{this.ui.spinner.stop();var e=mxUtils.bind(this,function(){this.stats.fileReloaded++;var c=this.ui.editor.graph.getViewState(),e=this.ui.editor.graph.getSelectionCells(),p=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(p,c,e);null!=this.backupPatch&&this.patch([this.backupPatch]);var g=this.ui.getCurrentFile();null!=g&&(g.stats=this.stats);null!=b&&
+DrawioFile.prototype.checksumError=function(b,c,e,k,f){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=b&&b();try{if(this.errorReportsEnabled){if(null!=c)for(b=0;b<c.length;b++)this.ui.anonymizePatch(c[b]);var p=mxUtils.bind(this,function(b){var d=this.compressReportData(JSON.stringify(c,null,2));b=null!=b?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement)),
+25E3):"n/a";this.sendErrorReport("Checksum Error in "+f+" "+this.getHash(),(null!=e?e:"")+"\n\nPatches:\n"+d+(null!=b?"\n\nRemote:\n"+b:""),null,7E4)});null==k?p(null):this.getLatestVersion(mxUtils.bind(this,function(b){null!=b&&b.getCurrentEtag()==k?p(b):p(null)}),function(){})}else{var t=this.getCurrentUser(),d=null!=t?t.id:"unknown";EditorUi.logError("Checksum Error in "+f+" "+this.getId(),null,this.getMode()+"."+this.getId(),"user_"+d+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync"));
+try{EditorUi.logEvent({category:"CHECKSUM-ERROR-SYNC-FILE-"+this.getHash(),action:f,label:"user_"+d+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync")})}catch(g){}}}catch(g){}};
+DrawioFile.prototype.sendErrorReport=function(b,c,e,k){try{var f=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),p=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),t=this.getCurrentUser(),d=null!=t?this.ui.hashValue(t.id):"unknown",g=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",l=this.getTitle(),q=l.lastIndexOf("."),t="xml";0<q&&(t=l.substring(q));var m=null!=e?e.stack:Error().stack;EditorUi.sendReport(b+" "+(new Date).toISOString()+
+":\n\nAppVersion="+navigator.appVersion+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+t+")\nUser="+d+g+"\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=c?"\n\n"+c:
+"")+(null!=e?"\n\nError: "+e.message:"")+"\n\nStack:\n"+m+"\n\nShadow:\n"+f+"\n\nData:\n"+p,k)}catch(n){}};
+DrawioFile.prototype.reloadFile=function(b,c){try{this.ui.spinner.stop();var e=mxUtils.bind(this,function(){this.stats.fileReloaded++;var c=this.ui.editor.graph.getViewState(),e=this.ui.editor.graph.getSelectionCells(),p=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(p,c,e);null!=this.backupPatch&&this.patch([this.backupPatch]);var f=this.ui.getCurrentFile();null!=f&&(f.stats=this.stats);null!=b&&
b()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),e,mxResources.get("cancel"),mxResources.get("discardChanges")):e()}catch(k){null!=c&&c(k)}};DrawioFile.prototype.copyFile=function(b,c){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))};
DrawioFile.prototype.ignorePatches=function(b){for(var c=!0,e=0;e<b.length&&c;e++)c=c&&0==Object.keys(b[e]).length;return c};
-DrawioFile.prototype.patch=function(b,c,e){var k=this.ui.editor.undoManager,g=k.history.slice(),p=k.indexOfNextAdd,t=this.ui.editor.graph;t.container.style.visibility="hidden";var d=this.changeListenerEnabled;this.changeListenerEnabled=e;var f=t.foldingEnabled,l=t.mathEnabled,q=t.cellRenderer.redraw;t.cellRenderer.redraw=function(b){b.view.graph.isEditing(b.cell)&&(b.view.graph.scrollCellToVisible(b.cell),b.view.graph.cellEditor.resize());q.apply(this,arguments)};t.model.beginUpdate();try{for(var m=
-0;m<b.length;m++)this.ui.pages=this.ui.patchPages(this.ui.pages,b[m],!0,c,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{t.container.style.visibility="";t.model.endUpdate();t.cellRenderer.redraw=q;this.changeListenerEnabled=d;e||(k.history=g,k.indexOfNextAdd=p,k.fireEvent(new mxEventObject(mxEvent.CLEAR)));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)l!=
-t.mathEnabled?(this.ui.editor.updateGraphComponents(),t.refresh()):(f!=t.foldingEnabled?t.view.revalidate():t.view.validate(),t.sizeDidChange());this.ui.updateTabContainer();this.ui.editor.fireEvent(new mxEventObject("pagesPatched","patches",b))}};
-DrawioFile.prototype.save=function(b,c,e,k,g,p){try{if(this.isEditable())if(!g&&this.invalidChecksum)if(null!=e)e({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave(),null!=c&&c();else if(null!=e)e({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));}catch(t){if(null!=e)e(t);else throw t;}};
+DrawioFile.prototype.patch=function(b,c,e){var k=this.ui.editor.undoManager,f=k.history.slice(),p=k.indexOfNextAdd,t=this.ui.editor.graph;t.container.style.visibility="hidden";var d=this.changeListenerEnabled;this.changeListenerEnabled=e;var g=t.foldingEnabled,l=t.mathEnabled,q=t.cellRenderer.redraw;t.cellRenderer.redraw=function(b){b.view.graph.isEditing(b.cell)&&(b.view.graph.scrollCellToVisible(b.cell),b.view.graph.cellEditor.resize());q.apply(this,arguments)};t.model.beginUpdate();try{for(var m=
+0;m<b.length;m++)this.ui.pages=this.ui.patchPages(this.ui.pages,b[m],!0,c,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{t.container.style.visibility="";t.model.endUpdate();t.cellRenderer.redraw=q;this.changeListenerEnabled=d;e||(k.history=f,k.indexOfNextAdd=p,k.fireEvent(new mxEventObject(mxEvent.CLEAR)));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)l!=
+t.mathEnabled?(this.ui.editor.updateGraphComponents(),t.refresh()):(g!=t.foldingEnabled?t.view.revalidate():t.view.validate(),t.sizeDidChange());this.ui.updateTabContainer();this.ui.editor.fireEvent(new mxEventObject("pagesPatched","patches",b))}};
+DrawioFile.prototype.save=function(b,c,e,k,f,p){try{if(this.isEditable())if(!f&&this.invalidChecksum)if(null!=e)e({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave(),null!=c&&c();else if(null!=e)e({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));}catch(t){if(null!=e)e(t);else throw t;}};
DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this,!this.isCompressed()))};DrawioFile.prototype.isCompressedStorage=function(){return!0};DrawioFile.prototype.isCompressed=function(){var b=null!=this.ui.fileNode?this.ui.fileNode.getAttribute("compressed"):null;return null!=b?"false"!=b:this.isCompressedStorage()&&Editor.compressXml};DrawioFile.prototype.saveAs=function(b,c,e){};DrawioFile.prototype.saveFile=function(b,c,e,k){};
DrawioFile.prototype.getPublicUrl=function(b){b(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.getShadowModified=function(){return this.shadowModified};DrawioFile.prototype.setShadowModified=function(b){this.shadowModified=b};DrawioFile.prototype.setModified=function(b){this.shadowModified=this.modified=b};DrawioFile.prototype.isAutosaveOptional=function(){return!1};
DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave};DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(b,c,e){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.isTrashed=function(){return!1};DrawioFile.prototype.move=function(b,c,e){};DrawioFile.prototype.share=function(){this.ui.alert(mxResources.get("sharingAvailable"),null,380)};DrawioFile.prototype.getHash=function(){return""};
@@ -3062,7 +3072,7 @@ DrawioFile.prototype.installListeners=function(){null==this.changeListener&&(thi
this.changeListener),this.ui.addListener("pageScaleChanged",this.changeListener),this.ui.addListener("backgroundColorChanged",this.changeListener),this.ui.addListener("backgroundImageChanged",this.changeListener),this.ui.addListener("foldingEnabledChanged",this.changeListener),this.ui.addListener("mathEnabledChanged",this.changeListener),this.ui.addListener("gridEnabledChanged",this.changeListener),this.ui.addListener("guidesEnabledChanged",this.changeListener),this.ui.addListener("tooltipsEnabledChanged",
this.changeListener),this.ui.addListener("pageViewChanged",this.changeListener),this.ui.addListener("connectionPointsChanged",this.changeListener),this.ui.addListener("connectionArrowsChanged",this.changeListener))};
DrawioFile.prototype.addAllSavedStatus=function(b){null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this&&(b=null!=b?b:mxUtils.htmlEntities(mxResources.get(this.allChangesSavedKey)),this.ui.editor.setStatus('<div title="'+b+'">'+b+"</div>"),b=this.ui.statusContainer.getElementsByTagName("div"),0<b.length&&this.isRevisionHistorySupported()&&(b[0].style.cursor="pointer",b[0].style.textDecoration="underline",mxEvent.addListener(b[0],"click",mxUtils.bind(this,function(){this.ui.actions.get("revisionHistory").funct()}))))};
-DrawioFile.prototype.saveDraft=function(){try{null==this.draftId&&(this.draftId=Editor.guid());var b={type:"draft",created:this.created,modified:(new Date).getTime(),data:this.ui.getFileData(),title:this.getTitle(),aliveCheck:this.ui.draftAliveCheck};this.ui.setDatabaseItem(".draft_"+this.draftId,JSON.stringify(b));EditorUi.debug("draft saved",this.draftId,b)}catch(c){this.removeDraft()}};
+DrawioFile.prototype.saveDraft=function(){try{null==this.draftId&&(this.draftId=Editor.guid());var b={type:"draft",created:this.created,modified:(new Date).getTime(),data:this.ui.getFileData(),title:this.getTitle(),fileObject:this.fileObject,aliveCheck:this.ui.draftAliveCheck};this.ui.setDatabaseItem(".draft_"+this.draftId,JSON.stringify(b));EditorUi.debug("draft saved",this.draftId,b)}catch(c){this.removeDraft()}};
DrawioFile.prototype.removeDraft=function(){try{null!=this.draftId&&(this.ui.removeDatabaseItem(".draft_"+this.draftId),EditorUi.debug("draft deleted",".draft_"+this.draftId))}catch(b){}};
DrawioFile.prototype.addUnsavedStatus=function(b){if(!this.inConflictState&&null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this)if(b instanceof Error&&null!=b.message&&""!=b.message){var c=mxUtils.htmlEntities(mxResources.get("unsavedChanges"));this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert">'+c+" ("+mxUtils.htmlEntities(b.message)+")</div>")}else{c=this.getErrorMessage(b);if(null==c&&null!=this.lastSaved){var e=this.ui.timeSince(new Date(this.lastSaved));null!=e&&(c=
mxResources.get("lastSaved",[e]))}null!=c&&60<c.length&&(c=c.substring(0,60)+"...");c=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+(null!=c&&""!=c?" ("+mxUtils.htmlEntities(c)+")":"");this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlertOrange">'+c+' <img src="'+Editor.saveImage+'"/></div>');c=this.ui.statusContainer.getElementsByTagName("div");null!=c&&0<c.length?(c[0].style.cursor="pointer",mxEvent.addListener(c[0],"click",mxUtils.bind(this,function(){this.ui.actions.get(null!=
@@ -3073,32 +3083,32 @@ DrawioFile.prototype.showRefreshDialog=function(b,c,e){null==e&&(e=mxResources.g
c)}),null,mxResources.get("synchronize"),mxUtils.bind(this,function(){this.reloadFile(b,c)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150))};
DrawioFile.prototype.showCopyDialog=function(b,c,e){this.invalidChecksum=this.inConflictState=!1;this.addUnsavedStatus();this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedOverwriteDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(b,c)}),null,mxResources.get("overwrite"),e,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150)};
DrawioFile.prototype.showConflictDialog=function(b,c){this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedSyncDialog"),mxResources.get("overwrite"),b,null,mxResources.get("synchronize"),c,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog();this.handleFileError(null,!1)}),340,150)};
-DrawioFile.prototype.redirectToNewApp=function(b,c){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var e=window.location.protocol+"//"+window.location.host+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#"+this.getHash(),k=mxResources.get("redirectToNewApp");null!=c&&(k+=" ("+c+")");var g=mxUtils.bind(this,function(){var c=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==e?window.location.reload():
-window.location.href=e});null==b&&this.isModified()?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.redirectDialogShowing=!1}),c,mxResources.get("cancel"),mxResources.get("discardChanges")):c()});null!=b?this.isModified()?this.ui.confirm(k,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;b()}),g,mxResources.get("cancel"),mxResources.get("discardChanges")):this.ui.confirm(k,g,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;b()})):this.ui.alert(mxResources.get("redirectToNewApp"),
-g)}};DrawioFile.prototype.handleFileSuccess=function(b){this.ui.spinner.stop();this.ui.getCurrentFile()==this&&(this.isModified()?this.fileChanged():b?(this.isTrashed()?this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get(this.allChangesSavedKey))+" ("+mxUtils.htmlEntities(mxResources.get("fileMovedToTrash"))+")"):this.addAllSavedStatus(),null!=this.sync&&(this.sync.resetUpdateStatusThread(),this.sync.remoteFileChanged&&(this.sync.remoteFileChanged=!1,this.sync.fileChangedNotify()))):this.ui.editor.setStatus(""))};
+DrawioFile.prototype.redirectToNewApp=function(b,c){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var e=window.location.protocol+"//"+window.location.host+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#"+this.getHash(),k=mxResources.get("redirectToNewApp");null!=c&&(k+=" ("+c+")");var f=mxUtils.bind(this,function(){var c=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==e?window.location.reload():
+window.location.href=e});null==b&&this.isModified()?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.redirectDialogShowing=!1}),c,mxResources.get("cancel"),mxResources.get("discardChanges")):c()});null!=b?this.isModified()?this.ui.confirm(k,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;b()}),f,mxResources.get("cancel"),mxResources.get("discardChanges")):this.ui.confirm(k,f,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;b()})):this.ui.alert(mxResources.get("redirectToNewApp"),
+f)}};DrawioFile.prototype.handleFileSuccess=function(b){this.ui.spinner.stop();this.ui.getCurrentFile()==this&&(this.isModified()?this.fileChanged():b?(this.isTrashed()?this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get(this.allChangesSavedKey))+" ("+mxUtils.htmlEntities(mxResources.get("fileMovedToTrash"))+")"):this.addAllSavedStatus(),null!=this.sync&&(this.sync.resetUpdateStatusThread(),this.sync.remoteFileChanged&&(this.sync.remoteFileChanged=!1,this.sync.fileChangedNotify()))):this.ui.editor.setStatus(""))};
DrawioFile.prototype.handleFileError=function(b,c){this.ui.spinner.stop();if(this.ui.getCurrentFile()==this)if(this.inConflictState)this.handleConflictError(b,c);else if(this.isModified()&&this.addUnsavedStatus(b),c)this.ui.handleError(b,null!=b?mxResources.get("errorSavingFile"):null);else if(!this.isModified()){var e=this.getErrorMessage(b);null!=e&&60<e.length&&(e=e.substring(0,60)+"...");this.ui.editor.setStatus('<div class="geStatusAlert">'+mxUtils.htmlEntities(mxResources.get("error"))+(null!=
e?" ("+mxUtils.htmlEntities(e)+")":"")+"</div>")}};
-DrawioFile.prototype.handleConflictError=function(b,c){var e=mxUtils.bind(this,function(){this.handleFileSuccess(!0)}),k=mxUtils.bind(this,function(b){this.handleFileError(b,!0)}),g=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get(this.savingSpinnerKey))&&(this.ui.editor.setStatus(""),this.save(!0,e,k,null,!0,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==b?null:b.commitMessage))}),p=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,
-mxResources.get("updatingDocument"))&&this.synchronizeFile(mxUtils.bind(this,function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get(this.savingSpinnerKey))&&this.save(!0,e,k,null,null,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==b?null:b.commitMessage)}),k)});"none"==DrawioFile.SYNC?this.showCopyDialog(e,k,g):this.invalidChecksum?this.showRefreshDialog(e,k,this.getErrorMessage(b)):c?this.showConflictDialog(g,p):this.addConflictStatus(mxUtils.bind(this,
+DrawioFile.prototype.handleConflictError=function(b,c){var e=mxUtils.bind(this,function(){this.handleFileSuccess(!0)}),k=mxUtils.bind(this,function(b){this.handleFileError(b,!0)}),f=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get(this.savingSpinnerKey))&&(this.ui.editor.setStatus(""),this.save(!0,e,k,null,!0,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==b?null:b.commitMessage))}),p=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,
+mxResources.get("updatingDocument"))&&this.synchronizeFile(mxUtils.bind(this,function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get(this.savingSpinnerKey))&&this.save(!0,e,k,null,null,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==b?null:b.commitMessage)}),k)});"none"==DrawioFile.SYNC?this.showCopyDialog(e,k,f):this.invalidChecksum?this.showRefreshDialog(e,k,this.getErrorMessage(b)):c?this.showConflictDialog(f,p):this.addConflictStatus(mxUtils.bind(this,
function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(e,k)}),this.getErrorMessage(b))};DrawioFile.prototype.getErrorMessage=function(b){var c=null!=b?null!=b.error?b.error.message:b.message:null;null==c&&null!=b&&b.code==App.ERROR_TIMEOUT&&(c=mxResources.get("timeout"));return c};DrawioFile.prototype.isOverdue=function(){return null!=this.ageStart&&Date.now()-this.ageStart.getTime()>=this.ui.warnInterval};
DrawioFile.prototype.fileChanged=function(){this.lastChanged=new Date;this.setModified(!0);this.isAutosave()?(null!=this.savingStatusKey&&this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get(this.savingStatusKey))+"..."),this.ui.scheduleSanityCheck(),null==this.ageStart&&(this.ageStart=new Date),this.sendFileChanges(),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(b){this.ui.stopSanityCheck();null==this.autosaveThread?(this.handleFileSuccess(!0),this.ageStart=
null):this.isModified()&&(this.ui.scheduleSanityCheck(),this.ageStart=this.lastChanged)}),mxUtils.bind(this,function(b){this.handleFileError(b)}))):(this.ageStart=null,this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus())};DrawioFile.prototype.isOptimisticSync=function(){return!1};
DrawioFile.prototype.createSecret=function(b){var c=Editor.guid(32);null==this.sync||this.isOptimisticSync()?b(c):this.sync.createToken(c,mxUtils.bind(this,function(e){b(c,e)}),mxUtils.bind(this,function(){b(c)}))};DrawioFile.prototype.fileSaving=function(){null!=this.sync&&this.isOptimisticSync()&&this.sync.fileSaving();"1"==urlParams.test&&EditorUi.debug("DrawioFile.fileSaving",[this])};
DrawioFile.prototype.sendFileChanges=function(){try{null!=this.p2pCollab&&null!=this.sync&&(this.updateFileData(),this.sync.sendFileChanges(this.ui.getPagesForNode(mxUtils.parseXml(this.getData()).documentElement),this.desc),"1"==urlParams.test&&EditorUi.debug("DrawioFile.sendFileChanges",[this]))}catch(b){console.log(b)}};
-DrawioFile.prototype.fileSaved=function(b,c,e,k,g){this.lastSaved=new Date;this.ageStart=null;try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync||this.isOptimisticSync()?(this.shadowData=b,this.shadowPages=null,null!=this.sync&&(this.sync.lastModified=this.getLastModifiedDate(),this.sync.resetUpdateStatusThread()),null!=e&&e()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(b).documentElement),c,e,k,g)}catch(d){this.invalidChecksum=this.inConflictState=
-!0;this.descriptorChanged();null!=k&&k(d);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,d);else{var p=this.getCurrentUser(),t=null!=p?p.id:"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),t,d)}}catch(f){}}"1"==urlParams.test&&EditorUi.debug("DrawioFile.fileSaved",[this])};
-DrawioFile.prototype.autosave=function(b,c,e,k){null==this.lastAutosave&&(this.lastAutosave=Date.now());b=Date.now()-this.lastAutosave<c?b:0;this.clearAutosave();var g=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==g&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var b=this.isAutosaveRevision();b&&(this.lastAutosaveRevision=(new Date).getTime());this.save(b,mxUtils.bind(this,function(b){this.autosaveCompleted();null!=e&&e(b)}),mxUtils.bind(this,
-function(b){null!=k&&k(b)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=e&&e(null)}),b);this.autosaveThread=g};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)};
+DrawioFile.prototype.fileSaved=function(b,c,e,k,f){this.lastSaved=new Date;this.ageStart=null;try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync||this.isOptimisticSync()?(this.shadowData=b,this.shadowPages=null,null!=this.sync&&(this.sync.lastModified=this.getLastModifiedDate(),this.sync.resetUpdateStatusThread()),null!=e&&e()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(b).documentElement),c,e,k,f)}catch(d){this.invalidChecksum=this.inConflictState=
+!0;this.descriptorChanged();null!=k&&k(d);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,d);else{var p=this.getCurrentUser(),t=null!=p?p.id:"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),t,d)}}catch(g){}}"1"==urlParams.test&&EditorUi.debug("DrawioFile.fileSaved",[this])};
+DrawioFile.prototype.autosave=function(b,c,e,k){null==this.lastAutosave&&(this.lastAutosave=Date.now());b=Date.now()-this.lastAutosave<c?b:0;this.clearAutosave();var f=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==f&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var b=this.isAutosaveRevision();b&&(this.lastAutosaveRevision=(new Date).getTime());this.save(b,mxUtils.bind(this,function(b){this.autosaveCompleted();null!=e&&e(b)}),mxUtils.bind(this,
+function(b){null!=k&&k(b)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=e&&e(null)}),b);this.autosaveThread=f};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)};
DrawioFile.prototype.isAutosaveRevision=function(){var b=(new Date).getTime();return null==this.lastAutosaveRevision||b-this.lastAutosaveRevision>this.maxAutosaveRevisionDelay};DrawioFile.prototype.descriptorChanged=function(){this.fireEvent(new mxEventObject("descriptorChanged"))};DrawioFile.prototype.contentChanged=function(){this.fireEvent(new mxEventObject("contentChanged"))};
DrawioFile.prototype.close=function(b){this.updateFileData();this.stats.closed++;this.isAutosave()&&this.isModified()&&this.save(this.isAutosaveRevision(),null,null,b);this.destroy()};DrawioFile.prototype.hasSameExtension=function(b,c){if(null!=b&&null!=c){var e=b.lastIndexOf("."),k=0<e?b.substring(e):"",e=c.lastIndexOf(".");return k===(0<e?c.substring(e):"")}return b==c};
DrawioFile.prototype.removeListeners=function(){null!=this.changeListener&&(this.ui.editor.graph.model.removeListener(this.changeListener),this.ui.editor.graph.removeListener(this.changeListener),this.ui.removeListener(this.changeListener),this.changeListener=null)};DrawioFile.prototype.destroy=function(){this.clearAutosave();this.removeListeners();this.stats.destroyed++;null!=this.sync&&(this.sync.destroy(),this.sync=null)};DrawioFile.prototype.commentsSupported=function(){return!1};
-DrawioFile.prototype.commentsRefreshNeeded=function(){return!0};DrawioFile.prototype.commentsSaveNeeded=function(){return!1};DrawioFile.prototype.getComments=function(b,c){b([])};DrawioFile.prototype.addComment=function(b,c,e){c(Date.now())};DrawioFile.prototype.canReplyToReplies=function(){return!0};DrawioFile.prototype.canComment=function(){return!0};DrawioFile.prototype.newComment=function(b,c){return new DrawioComment(this,null,b,Date.now(),Date.now(),!1,c)};LocalFile=function(b,c,e,k,g,p){DrawioFile.call(this,b,c);this.title=e;this.mode=k?null:App.MODE_DEVICE;this.fileHandle=g;this.desc=p};mxUtils.extend(LocalFile,DrawioFile);LocalFile.prototype.isAutosave=function(){return null!=this.fileHandle&&!this.invalidFileHandle&&DrawioFile.prototype.isAutosave.apply(this,arguments)};LocalFile.prototype.isAutosaveOptional=function(){return null!=this.fileHandle};LocalFile.prototype.getMode=function(){return this.mode};LocalFile.prototype.getTitle=function(){return this.title};
+DrawioFile.prototype.commentsRefreshNeeded=function(){return!0};DrawioFile.prototype.commentsSaveNeeded=function(){return!1};DrawioFile.prototype.getComments=function(b,c){b([])};DrawioFile.prototype.addComment=function(b,c,e){c(Date.now())};DrawioFile.prototype.canReplyToReplies=function(){return!0};DrawioFile.prototype.canComment=function(){return!0};DrawioFile.prototype.newComment=function(b,c){return new DrawioComment(this,null,b,Date.now(),Date.now(),!1,c)};LocalFile=function(b,c,e,k,f,p){DrawioFile.call(this,b,c);this.title=e;this.mode=k?null:App.MODE_DEVICE;this.fileHandle=f;this.desc=p};mxUtils.extend(LocalFile,DrawioFile);LocalFile.prototype.isAutosave=function(){return null!=this.fileHandle&&!this.invalidFileHandle&&DrawioFile.prototype.isAutosave.apply(this,arguments)};LocalFile.prototype.isAutosaveOptional=function(){return null!=this.fileHandle};LocalFile.prototype.getMode=function(){return this.mode};LocalFile.prototype.getTitle=function(){return this.title};
LocalFile.prototype.isRenamable=function(){return!0};LocalFile.prototype.save=function(b,c,e){this.saveAs(this.title,c,e)};LocalFile.prototype.saveAs=function(b,c,e){this.saveFile(b,!1,c,e)};LocalFile.prototype.saveAs=function(b,c,e){this.saveFile(b,!1,c,e)};LocalFile.prototype.getDescriptor=function(){return this.desc};LocalFile.prototype.setDescriptor=function(b){this.desc=b};
LocalFile.prototype.getLatestVersion=function(b,c){null==this.fileHandle?b(null):this.ui.loadFileSystemEntry(this.fileHandle,b,c)};
-LocalFile.prototype.saveFile=function(b,c,e,k,g){b!=this.title&&(this.desc=this.fileHandle=null);this.title=b;g||this.updateFileData();var p=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle());this.setShadowModified(!1);var t=this.getData(),d=mxUtils.bind(this,function(){this.setModified(this.getShadowModified());this.contentChanged();null!=e&&e()}),f=mxUtils.bind(this,function(c){if(null!=this.fileHandle){if(!this.savingFile){this.savingFileTime=new Date;this.savingFile=!0;var f=mxUtils.bind(this,
+LocalFile.prototype.saveFile=function(b,c,e,k,f){b!=this.title&&(this.desc=this.fileHandle=null);this.title=b;f||this.updateFileData();var p=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle());this.setShadowModified(!1);var t=this.getData(),d=mxUtils.bind(this,function(){this.setModified(this.getShadowModified());this.contentChanged();null!=e&&e()}),g=mxUtils.bind(this,function(c){if(null!=this.fileHandle){if(!this.savingFile){this.savingFileTime=new Date;this.savingFile=!0;var g=mxUtils.bind(this,
function(b){this.savingFile=!1;null!=k&&k({error:b})});this.saveDraft();this.fileHandle.createWritable().then(mxUtils.bind(this,function(b){this.fileHandle.getFile().then(mxUtils.bind(this,function(e){this.invalidFileHandle=null;this.desc.lastModified==e.lastModified?b.write(p?this.ui.base64ToBlob(c,"image/png"):c).then(mxUtils.bind(this,function(){b.close().then(mxUtils.bind(this,function(){this.fileHandle.getFile().then(mxUtils.bind(this,function(b){try{var c=this.desc;this.savingFile=!1;this.desc=
-b;this.fileSaved(t,c,d,f);this.removeDraft()}catch(x){f(x)}}),f)}),f)}),f):(this.inConflictState=!0,f())}),mxUtils.bind(this,function(b){this.invalidFileHandle=!0;f(b)}))}),f)}}else{if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(c,b,p?"image/png":"text/xml",p);else if(c.length<MAX_REQUEST_SIZE){var e=b.lastIndexOf("."),e=0<e?b.substring(e+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+e+"&xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(b)+(p?"&binary=1":""))).simulate(document,
-"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(c)}));d()}});p?(c=this.ui.getPngFileProperties(this.ui.fileNode),this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){f(b)}),k,this.ui.getCurrentFile()!=this?t:null,c.scale,c.border)):f(t)};LocalFile.prototype.rename=function(b,c,e){this.title=b;this.descriptorChanged();null!=c&&c()};
+b;this.fileSaved(t,c,d,g);this.removeDraft()}catch(x){g(x)}}),g)}),g)}),g):(this.inConflictState=!0,g())}),mxUtils.bind(this,function(b){this.invalidFileHandle=!0;g(b)}))}),g)}}else{if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(c,b,p?"image/png":"text/xml",p);else if(c.length<MAX_REQUEST_SIZE){var e=b.lastIndexOf("."),e=0<e?b.substring(e+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+e+"&xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(b)+(p?"&binary=1":""))).simulate(document,
+"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(c)}));d()}});p?(c=this.ui.getPngFileProperties(this.ui.fileNode),this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){g(b)}),k,this.ui.getCurrentFile()!=this?t:null,c.scale,c.border)):g(t)};LocalFile.prototype.rename=function(b,c,e){this.title=b;this.descriptorChanged();null!=c&&c()};
LocalFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};(function(){"undefined"!==typeof html4&&(html4.ATTRIBS["span::data-lucid-content"]=0,html4.ATTRIBS["span::data-lucid-type"]=0,html4.ATTRIBS["font::data-font-src"]=0);Editor.prototype.appName="diagrams.net";Editor.prototype.diagramFileTypes=[{description:"diagramXmlDesc",extension:"drawio",mimeType:"text/xml"},{description:"diagramPngDesc",extension:"png",mimeType:"image/png"},{description:"diagramSvgDesc",extension:"svg",mimeType:"image/svg"},{description:"diagramHtmlDesc",extension:"html",mimeType:"text/html"},
{description:"diagramXmlDesc",extension:"xml",mimeType:"text/xml"}];Editor.prototype.libraryFileTypes=[{description:"Library (.drawiolib, .xml)",extensions:["drawiolib","xml"]}];Editor.prototype.fileExtensions=[{ext:"html",title:"filetypeHtml"},{ext:"png",title:"filetypePng"},{ext:"svg",title:"filetypeSvg"}];Editor.styles=[{},{commonStyle:{fontColor:"#5C5C5C",strokeColor:"#006658",fillColor:"#21C0A5"}},{commonStyle:{fontColor:"#095C86",strokeColor:"#AF45ED",fillColor:"#F694C1"},edgeStyle:{strokeColor:"#60E696"}},
{commonStyle:{fontColor:"#46495D",strokeColor:"#788AA3",fillColor:"#B2C9AB"}},{commonStyle:{fontColor:"#5AA9E6",strokeColor:"#FF6392",fillColor:"#FFE45E"}},{commonStyle:{fontColor:"#1D3557",strokeColor:"#457B9D",fillColor:"#A8DADC"},graph:{background:"#F1FAEE"}},{commonStyle:{fontColor:"#393C56",strokeColor:"#E07A5F",fillColor:"#F2CC8F"},graph:{background:"#F4F1DE",gridColor:"#D4D0C0"}},{commonStyle:{fontColor:"#143642",strokeColor:"#0F8B8D",fillColor:"#FAE5C7"},edgeStyle:{strokeColor:"#A8201A"},
@@ -3113,6 +3123,7 @@ Editor.commentImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53M
Editor.shareImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTggMTYuMDhjLS43NiAwLTEuNDQuMy0xLjk2Ljc3TDguOTEgMTIuN2MuMDUtLjIzLjA5LS40Ni4wOS0uN3MtLjA0LS40Ny0uMDktLjdsNy4wNS00LjExYy41NC41IDEuMjUuODEgMi4wNC44MSAxLjY2IDAgMy0xLjM0IDMtM3MtMS4zNC0zLTMtMy0zIDEuMzQtMyAzYzAgLjI0LjA0LjQ3LjA5LjdMOC4wNCA5LjgxQzcuNSA5LjMxIDYuNzkgOSA2IDljLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDNjLjc5IDAgMS41LS4zMSAyLjA0LS44MWw3LjEyIDQuMTZjLS4wNS4yMS0uMDguNDMtLjA4LjY1IDAgMS42MSAxLjMxIDIuOTIgMi45MiAyLjkyIDEuNjEgMCAyLjkyLTEuMzEgMi45Mi0yLjkycy0xLjMxLTIuOTItMi45Mi0yLjkyeiIvPjwvc3ZnPg==";
Editor.syncImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgNFYxTDggNWw0IDRWNmMzLjMxIDAgNiAyLjY5IDYgNiAwIDEuMDEtLjI1IDEuOTctLjcgMi44bDEuNDYgMS40NkMxOS41NCAxNS4wMyAyMCAxMy41NyAyMCAxMmMwLTQuNDItMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTYgMC0xLjAxLjI1LTEuOTcuNy0yLjhMNS4yNCA3Ljc0QzQuNDYgOC45NyA0IDEwLjQzIDQgMTJjMCA0LjQyIDMuNTggOCA4IDh2M2w0LTQtNC00djN6Ii8+PC9zdmc+";Editor.syncDisabledImage=
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTAgNi4zNVY0LjI2Yy0uOC4yMS0xLjU1LjU0LTIuMjMuOTZsMS40NiAxLjQ2Yy4yNS0uMTIuNS0uMjQuNzctLjMzem0tNy4xNC0uOTRsMi4zNiAyLjM2QzQuNDUgOC45OSA0IDEwLjQ0IDQgMTJjMCAyLjIxLjkxIDQuMiAyLjM2IDUuNjRMNCAyMGg2di02bC0yLjI0IDIuMjRDNi42OCAxNS4xNSA2IDEzLjY2IDYgMTJjMC0xIC4yNS0xLjk0LjY4LTIuNzdsOC4wOCA4LjA4Yy0uMjUuMTMtLjUuMjUtLjc3LjM0djIuMDljLjgtLjIxIDEuNTUtLjU0IDIuMjMtLjk2bDIuMzYgMi4zNiAxLjI3LTEuMjdMNC4xNCA0LjE0IDIuODYgNS40MXpNMjAgNGgtNnY2bDIuMjQtMi4yNEMxNy4zMiA4Ljg1IDE4IDEwLjM0IDE4IDEyYzAgMS0uMjUgMS45NC0uNjggMi43N2wxLjQ2IDEuNDZDMTkuNTUgMTUuMDEgMjAgMTMuNTYgMjAgMTJjMC0yLjIxLS45MS00LjItMi4zNi01LjY0TDIwIDR6Ii8+PC9zdmc+";
+Editor.calendarImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxwYXRoIGQ9Ik0wLDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPjwvZz48Zz48cGF0aCBkPSJNMjAsNEg0QzIuOSw0LDIsNC45LDIsNnYxMmMwLDEuMSwwLjksMiwyLDJoMTZjMS4xLDAsMi0wLjksMi0yVjZDMjIsNC45LDIxLjEsNCwyMCw0eiBNOCwxMUg0VjZoNFYxMXogTTE0LDExaC00VjZoNFYxMXogTTIwLDExaC00VjZoNFYxMXogTTgsMThINHYtNWg0VjE4eiBNMTQsMThoLTR2LTVoNFYxOHogTTIwLDE4aC00di01aDRWMTh6Ii8+PC9nPjwvc3ZnPg==";
Editor.syncProblemImage="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyAxMmMwIDIuMjEuOTEgNC4yIDIuMzYgNS42NEwzIDIwaDZ2LTZsLTIuMjQgMi4yNEM1LjY4IDE1LjE1IDUgMTMuNjYgNSAxMmMwLTIuNjEgMS42Ny00LjgzIDQtNS42NVY0LjI2QzUuNTUgNS4xNSAzIDguMjcgMyAxMnptOCA1aDJ2LTJoLTJ2MnpNMjEgNGgtNnY2bDIuMjQtMi4yNEMxOC4zMiA4Ljg1IDE5IDEwLjM0IDE5IDEyYzAgMi42MS0xLjY3IDQuODMtNCA1LjY1djIuMDljMy40NS0uODkgNi00LjAxIDYtNy43NCAwLTIuMjEtLjkxLTQuMi0yLjM2LTUuNjRMMjEgNHptLTEwIDloMlY3aC0ydjZ6Ii8+PC9zdmc+";
Editor.drawLogoImage="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJFYmVuZV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjUwIDI1MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjUwIDI1MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MntmaWxsOiMwMDA7fQo8L3N0eWxlPgo8cGF0aCBjbGFzcz0ic3QyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDE1KSIgZD0iTTE5Ny4xLDEzOC4zaC0yMy43bC0yNS00Mi43YzUuNy0xLjIsOS44LTYuMiw5LjctMTJWNTEuNWMwLTYuOC01LjQtMTIuMy0xMi4yLTEyLjNjMCwwLTAuMSwwLTAuMSwwaC00MS43CgljLTYuOCwwLTEyLjMsNS40LTEyLjMsMTIuMmMwLDAsMCwwLjEsMCwwLjF2MzIuMWMwLDUuOCw0LDEwLjgsOS43LDEybC0yNSw0Mi43SDUyLjljLTYuOCwwLTEyLjMsNS40LTEyLjMsMTIuMmMwLDAsMCwwLjEsMCwwLjEKCXYzMi4xYzAsNi44LDUuNCwxMi4zLDEyLjIsMTIuM2MwLDAsMC4xLDAsMC4xLDBoNDEuN2M2LjgsMCwxMi4zLTUuNCwxMi4zLTEyLjJjMCwwLDAtMC4xLDAtMC4xdi0zMi4xYzAtNi44LTUuNC0xMi4zLTEyLjItMTIuMwoJYzAsMC0wLjEsMC0wLjEsMGgtNGwyNC44LTQyLjRoMTkuM2wyNC45LDQyLjRoLTQuMWMtNi44LDAtMTIuMyw1LjQtMTIuMywxMi4yYzAsMCwwLDAuMSwwLDAuMXYzMi4xYzAsNi44LDUuNCwxMi4zLDEyLjIsMTIuMwoJYzAsMCwwLjEsMCwwLjEsMGg0MS43YzYuOCwwLDEyLjMtNS40LDEyLjMtMTIuMmMwLDAsMC0wLjEsMC0wLjF2LTMyLjFjMC02LjgtNS40LTEyLjMtMTIuMi0xMi4zCglDMTk3LjIsMTM4LjMsMTk3LjIsMTM4LjMsMTk3LjEsMTM4LjN6Ii8+Cjwvc3ZnPgo=";
Editor.tailSpin="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9Ii0yIC0yIDQ0IDQ0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSI4LjA0MiUiIHkxPSIwJSIgeDI9IjY1LjY4MiUiIHkyPSIyMy44NjUlIiBpZD0iYSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiM4MDgwODAiIHN0b3Atb3BhY2l0eT0iMCIgb2Zmc2V0PSIwJSIvPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjODA4MDgwIiBzdG9wLW9wYWNpdHk9Ii42MzEiIG9mZnNldD0iNjMuMTQ2JSIvPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjODA4MDgwIiBvZmZzZXQ9IjEwMCUiLz4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEpIj4KICAgICAgICAgICAgPHBhdGggZD0iTTM2IDE4YzAtOS45NC04LjA2LTE4LTE4LTE4IiBzdHJva2U9InVybCgjYSkiIHN0cm9rZS13aWR0aD0iNiI+CiAgICAgICAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybQogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIKICAgICAgICAgICAgICAgICAgICB0eXBlPSJyb3RhdGUiCiAgICAgICAgICAgICAgICAgICAgZnJvbT0iMCAxOCAxOCIKICAgICAgICAgICAgICAgICAgICB0bz0iMzYwIDE4IDE4IgogICAgICAgICAgICAgICAgICAgIGR1cj0iMC45cyIKICAgICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4KICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICA8Y2lyY2xlIGZpbGw9IiM4MDgwODAiIGN4PSIzNiIgY3k9IjE4IiByPSIxIj4KICAgICAgICAgICAgICAgIDxhbmltYXRlVHJhbnNmb3JtCiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIgogICAgICAgICAgICAgICAgICAgIHR5cGU9InJvdGF0ZSIKICAgICAgICAgICAgICAgICAgICBmcm9tPSIwIDE4IDE4IgogICAgICAgICAgICAgICAgICAgIHRvPSIzNjAgMTggMTgiCiAgICAgICAgICAgICAgICAgICAgZHVyPSIwLjlzIgogICAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPgogICAgICAgICAgICA8L2NpcmNsZT4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPgo=";
@@ -3139,92 +3150,92 @@ type:"float",defVal:0},{name:"direction",dispName:"Direction",type:"enum",defVal
type:"bool",defVal:!1},{name:"connectable",dispName:"Connectable",type:"bool",getDefaultValue:function(b,d){return d.editorUi.editor.graph.isCellConnectable(0<b.vertices.length&&0==b.edges.length?b.vertices[0]:null)},isVisible:function(b,d){return 0<b.vertices.length&&0==b.edges.length}},{name:"allowArrows",dispName:"Allow Arrows",type:"bool",defVal:!0},{name:"snapToPoint",dispName:"Snap to Point",type:"bool",defVal:!1},{name:"perimeter",dispName:"Perimeter",defVal:"none",type:"enum",enumList:[{val:"none",
dispName:"None"},{val:"rectanglePerimeter",dispName:"Rectangle"},{val:"ellipsePerimeter",dispName:"Ellipse"},{val:"rhombusPerimeter",dispName:"Rhombus"},{val:"trianglePerimeter",dispName:"Triangle"},{val:"hexagonPerimeter2",dispName:"Hexagon"},{val:"lifelinePerimeter",dispName:"Lifeline"},{val:"orthogonalPerimeter",dispName:"Orthogonal"},{val:"backbonePerimeter",dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter",dispName:"Parallelogram"},{val:"trapezoidPerimeter",
dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"},{val:"centerPerimeter",dispName:"Center"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1,isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(b,d){var c=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:
-null,f=d.editorUi.editor.graph;return null!=c&&(f.isSwimlane(c)||0<f.model.getChildCount(c))},isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(b,d){var c=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null,f=d.editorUi.editor.graph;return null!=c&&(f.isContainer(c)&&"0"!=b.style.collapsible||!f.isContainer(c)&&"1"==b.style.collapsible)},isVisible:function(b,d){return 1==b.vertices.length&&
+null,g=d.editorUi.editor.graph;return null!=c&&(g.isSwimlane(c)||0<g.model.getChildCount(c))},isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(b,d){var c=1==b.vertices.length&&0==b.edges.length?b.vertices[0]:null,g=d.editorUi.editor.graph;return null!=c&&(g.isContainer(c)&&"0"!=b.style.collapsible||!g.isContainer(c)&&"1"==b.style.collapsible)},isVisible:function(b,d){return 1==b.vertices.length&&
0==b.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(b,d){return 1==b.vertices.length&&0==b.edges.length&&!d.editorUi.editor.graph.isSwimlane(b.vertices[0])&&null==mxUtils.getValue(b.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function(b,d){var c=d.editorUi.editor.graph.model;return 0<b.vertices.length?c.isVertex(c.getParent(b.vertices[0])):
!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"metaEdit",dispName:"Edit Dialog",type:"bool",defVal:!1},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(b,d){var c=0<b.vertices.length?d.editorUi.editor.graph.getCellGeometry(b.vertices[0]):null;return null!=c&&!c.relative}},{name:"resizable",dispName:"Resizable",
type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",
type:"bool",defVal:!0,isVisible:function(b,d){var c=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null);return d.editorUi.editor.graph.isSwimlane(b.vertices[0])||null==c||c==mxConstants.NONE||0==mxUtils.getValue(b.style,mxConstants.STYLE_FILL_OPACITY,100)||0==mxUtils.getValue(b.style,mxConstants.STYLE_OPACITY,100)||null!=b.style.pointerEvents}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(b,d){return 0<b.vertices.length&&d.editorUi.editor.graph.isContainer(b.vertices[0])}}].concat(Editor.commonProperties);
Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## JSON for variables in styles of the form {"name": "value", "name": "value"} where name is a string\n## that will replace a placeholder in a style.\n#\n# vars: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## In addition to those, an optional source and targetlabel can be used to specify a label\n## that contains placeholders referencing the respective columns in the source or target row.\n## The label is created in the form fromlabel + sourcelabel + label + tolabel + targetlabel.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## An optional placeholders with the string value "source" or "target" can be specified\n## to replace placeholders in the additional label with data from the source or target.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle or a JSON string as used in Layout, Apply.\n## Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nTessa Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nAlison Donovan,System Admin,rdo,Office 3,Tessa Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nEvan Valet,HR Director,tva,Office 4,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\n';
-Editor.createRoughCanvas=function(b){var d=rough.canvas({getContext:function(){return b}});d.draw=function(d){var c=d.sets||[];d=d.options||this.getDefaultOptions();for(var f=0;f<c.length;f++){var e=c[f];switch(e.type){case "path":null!=d.stroke&&this._drawToContext(b,e,d);break;case "fillPath":this._drawToContext(b,e,d);break;case "fillSketch":this.fillSketch(b,e,d)}}};d.fillSketch=function(d,c,f){var e=b.state.strokeColor,g=b.state.strokeWidth,l=b.state.strokeAlpha,m=b.state.dashed,k=f.fillWeight;
-0>k&&(k=f.strokeWidth/2);b.setStrokeAlpha(b.state.fillAlpha);b.setStrokeColor(f.fill||"");b.setStrokeWidth(k);b.setDashed(!1);this._drawToContext(d,c,f);b.setDashed(m);b.setStrokeWidth(g);b.setStrokeColor(e);b.setStrokeAlpha(l)};d._drawToContext=function(b,d,c){b.begin();for(var f=0;f<d.ops.length;f++){var e=d.ops[f],g=e.data;switch(e.op){case "move":b.moveTo(g[0],g[1]);break;case "bcurveTo":b.curveTo(g[0],g[1],g[2],g[3],g[4],g[5]);break;case "lineTo":b.lineTo(g[0],g[1])}}b.end();"fillPath"===d.type&&
-c.filled?b.fill():b.stroke()};return d};(function(){function b(d,c,f){this.canvas=d;this.rc=c;this.shape=f;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,b.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,b.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,b.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
+Editor.createRoughCanvas=function(b){var d=rough.canvas({getContext:function(){return b}});d.draw=function(d){var c=d.sets||[];d=d.options||this.getDefaultOptions();for(var g=0;g<c.length;g++){var e=c[g];switch(e.type){case "path":null!=d.stroke&&this._drawToContext(b,e,d);break;case "fillPath":this._drawToContext(b,e,d);break;case "fillSketch":this.fillSketch(b,e,d)}}};d.fillSketch=function(d,c,g){var e=b.state.strokeColor,f=b.state.strokeWidth,l=b.state.strokeAlpha,k=b.state.dashed,m=g.fillWeight;
+0>m&&(m=g.strokeWidth/2);b.setStrokeAlpha(b.state.fillAlpha);b.setStrokeColor(g.fill||"");b.setStrokeWidth(m);b.setDashed(!1);this._drawToContext(d,c,g);b.setDashed(k);b.setStrokeWidth(f);b.setStrokeColor(e);b.setStrokeAlpha(l)};d._drawToContext=function(b,d,c){b.begin();for(var g=0;g<d.ops.length;g++){var e=d.ops[g],f=e.data;switch(e.op){case "move":b.moveTo(f[0],f[1]);break;case "bcurveTo":b.curveTo(f[0],f[1],f[2],f[3],f[4],f[5]);break;case "lineTo":b.lineTo(f[0],f[1])}}b.end();"fillPath"===d.type&&
+c.filled?b.fill():b.stroke()};return d};(function(){function b(d,c,g){this.canvas=d;this.rc=c;this.shape=g;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,b.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,b.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,b.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
mxUtils.bind(this,b.prototype.roundrect);this.originalEllipse=this.canvas.ellipse;this.canvas.ellipse=mxUtils.bind(this,b.prototype.ellipse);this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,b.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,b.prototype.moveTo);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,b.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
b.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,b.prototype.arcTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,b.prototype.close);this.originalFill=this.canvas.fill;this.canvas.fill=mxUtils.bind(this,b.prototype.fill);this.originalStroke=this.canvas.stroke;this.canvas.stroke=mxUtils.bind(this,b.prototype.stroke);this.originalFillAndStroke=this.canvas.fillAndStroke;this.canvas.fillAndStroke=mxUtils.bind(this,b.prototype.fillAndStroke);
-this.path=[];this.passThrough=!1}b.prototype.moveOp="M";b.prototype.lineOp="L";b.prototype.quadOp="Q";b.prototype.curveOp="C";b.prototype.closeOp="Z";b.prototype.getStyle=function(b,d){var c=1;if(null!=this.shape.state){var f=this.shape.state.cell.id;if(null!=f)for(var e=0;e<f.length;e++)c=(c<<5)-c+f.charCodeAt(e)<<0}c={strokeWidth:this.canvas.state.strokeWidth,seed:c,preserveVertices:!0};f=this.rc.getDefaultOptions();b?c.stroke="none"===this.canvas.state.strokeColor?"transparent":this.canvas.state.strokeColor:
-delete c.stroke;e=null;(c.filled=d)?(c.fill="none"===this.canvas.state.fillColor?"":this.canvas.state.fillColor,e="none"===this.canvas.state.gradientColor?null:this.canvas.state.gradientColor):c.fill="";c.bowing=mxUtils.getValue(this.shape.style,"bowing",f.bowing);c.hachureAngle=mxUtils.getValue(this.shape.style,"hachureAngle",f.hachureAngle);c.curveFitting=mxUtils.getValue(this.shape.style,"curveFitting",f.curveFitting);c.roughness=mxUtils.getValue(this.shape.style,"jiggle",f.roughness);c.simplification=
-mxUtils.getValue(this.shape.style,"simplification",f.simplification);c.disableMultiStroke=mxUtils.getValue(this.shape.style,"disableMultiStroke",f.disableMultiStroke);c.disableMultiStrokeFill=mxUtils.getValue(this.shape.style,"disableMultiStrokeFill",f.disableMultiStrokeFill);var g=mxUtils.getValue(this.shape.style,"hachureGap",-1);c.hachureGap="auto"==g?-1:g;c.dashGap=mxUtils.getValue(this.shape.style,"dashGap",g);c.dashOffset=mxUtils.getValue(this.shape.style,"dashOffset",g);c.zigzagOffset=mxUtils.getValue(this.shape.style,
-"zigzagOffset",g);g=mxUtils.getValue(this.shape.style,"fillWeight",-1);c.fillWeight="auto"==g?-1:g;g=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==g&&(g=mxUtils.hex2rgb(null!=this.shape.state?this.shape.state.view.graph.shapeBackgroundColor:Editor.isDarkMode()?Editor.darkColor:"#ffffff"),g=null!=c.fill&&(null!=e||null!=g&&c.fill==g)?"solid":f.fillStyle);c.fillStyle=g;return c};b.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,arguments):this.path=[]};
+this.path=[];this.passThrough=!1}b.prototype.moveOp="M";b.prototype.lineOp="L";b.prototype.quadOp="Q";b.prototype.curveOp="C";b.prototype.closeOp="Z";b.prototype.getStyle=function(b,d){var c=1;if(null!=this.shape.state){var g=this.shape.state.cell.id;if(null!=g)for(var e=0;e<g.length;e++)c=(c<<5)-c+g.charCodeAt(e)<<0}c={strokeWidth:this.canvas.state.strokeWidth,seed:c,preserveVertices:!0};g=this.rc.getDefaultOptions();b?c.stroke="none"===this.canvas.state.strokeColor?"transparent":this.canvas.state.strokeColor:
+delete c.stroke;e=null;(c.filled=d)?(c.fill="none"===this.canvas.state.fillColor?"":this.canvas.state.fillColor,e="none"===this.canvas.state.gradientColor?null:this.canvas.state.gradientColor):c.fill="";c.bowing=mxUtils.getValue(this.shape.style,"bowing",g.bowing);c.hachureAngle=mxUtils.getValue(this.shape.style,"hachureAngle",g.hachureAngle);c.curveFitting=mxUtils.getValue(this.shape.style,"curveFitting",g.curveFitting);c.roughness=mxUtils.getValue(this.shape.style,"jiggle",g.roughness);c.simplification=
+mxUtils.getValue(this.shape.style,"simplification",g.simplification);c.disableMultiStroke=mxUtils.getValue(this.shape.style,"disableMultiStroke",g.disableMultiStroke);c.disableMultiStrokeFill=mxUtils.getValue(this.shape.style,"disableMultiStrokeFill",g.disableMultiStrokeFill);var f=mxUtils.getValue(this.shape.style,"hachureGap",-1);c.hachureGap="auto"==f?-1:f;c.dashGap=mxUtils.getValue(this.shape.style,"dashGap",f);c.dashOffset=mxUtils.getValue(this.shape.style,"dashOffset",f);c.zigzagOffset=mxUtils.getValue(this.shape.style,
+"zigzagOffset",f);f=mxUtils.getValue(this.shape.style,"fillWeight",-1);c.fillWeight="auto"==f?-1:f;f=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==f&&(f=mxUtils.hex2rgb(null!=this.shape.state?this.shape.state.view.graph.shapeBackgroundColor:Editor.isDarkMode()?Editor.darkColor:"#ffffff"),f=null!=c.fill&&(null!=e||null!=f&&c.fill==f)?"solid":g.fillStyle);c.fillStyle=f;return c};b.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,arguments):this.path=[]};
b.prototype.end=function(){this.passThrough&&this.originalEnd.apply(this.canvas,arguments)};b.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var b=2;b<arguments.length;b+=2)this.lastX=arguments[b-1],this.lastY=arguments[b],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};b.prototype.lineTo=function(b,d){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,b,d),this.lastX=
-b,this.lastY=d)};b.prototype.moveTo=function(b,d){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,b,d),this.lastX=b,this.lastY=d,this.firstX=b,this.firstY=d)};b.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};b.prototype.quadTo=function(b,d,c,f){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,b,d,c,f),this.lastX=c,this.lastY=f)};b.prototype.curveTo=
-function(b,d,c,f,e,g){this.passThrough?this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,b,d,c,f,e,g),this.lastX=e,this.lastY=g)};b.prototype.arcTo=function(b,d,c,f,e,g,l){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var m=mxUtils.arcToCurves(this.lastX,this.lastY,b,d,c,f,e,g,l);if(null!=m)for(var k=0;k<m.length;k+=6)this.curveTo(m[k],m[k+1],m[k+2],m[k+3],m[k+4],m[k+5]);this.lastX=g;this.lastY=l}};b.prototype.rect=function(b,d,c,f){this.passThrough?
-this.originalRect.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(b,d,c,f,this.getStyle(!0,!0)))};b.prototype.ellipse=function(b,d,c,f){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(b+c/2,d+f/2,c,f,this.getStyle(!0,!0)))};b.prototype.roundrect=function(b,d,c,f,e,g){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(b+e,d),this.lineTo(b+c-e,d),
-this.quadTo(b+c,d,b+c,d+g),this.lineTo(b+c,d+f-g),this.quadTo(b+c,d+f,b+c-e,d+f),this.lineTo(b+e,d+f),this.quadTo(b,d+f,b,d+f-g),this.lineTo(b,d+g),this.quadTo(b,d,b+e,d))};b.prototype.drawPath=function(b){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),b)}catch(V){}this.passThrough=!1}else if(null!=this.nextShape){for(var d in b)this.nextShape.options[d]=b[d];null==b.stroke&&delete this.nextShape.options.stroke;b.filled||delete this.nextShape.options.fill;this.passThrough=
+b,this.lastY=d)};b.prototype.moveTo=function(b,d){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,b,d),this.lastX=b,this.lastY=d,this.firstX=b,this.firstY=d)};b.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};b.prototype.quadTo=function(b,d,c,g){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,b,d,c,g),this.lastX=c,this.lastY=g)};b.prototype.curveTo=
+function(b,d,c,g,e,f){this.passThrough?this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,b,d,c,g,e,f),this.lastX=e,this.lastY=f)};b.prototype.arcTo=function(b,d,c,g,e,f,l){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var m=mxUtils.arcToCurves(this.lastX,this.lastY,b,d,c,g,e,f,l);if(null!=m)for(var k=0;k<m.length;k+=6)this.curveTo(m[k],m[k+1],m[k+2],m[k+3],m[k+4],m[k+5]);this.lastX=f;this.lastY=l}};b.prototype.rect=function(b,d,c,g){this.passThrough?
+this.originalRect.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(b,d,c,g,this.getStyle(!0,!0)))};b.prototype.ellipse=function(b,d,c,g){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(b+c/2,d+g/2,c,g,this.getStyle(!0,!0)))};b.prototype.roundrect=function(b,d,c,g,e,f){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(b+e,d),this.lineTo(b+c-e,d),
+this.quadTo(b+c,d,b+c,d+f),this.lineTo(b+c,d+g-f),this.quadTo(b+c,d+g,b+c-e,d+g),this.lineTo(b+e,d+g),this.quadTo(b,d+g,b,d+g-f),this.lineTo(b,d+f),this.quadTo(b,d,b+e,d))};b.prototype.drawPath=function(b){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),b)}catch(V){}this.passThrough=!1}else if(null!=this.nextShape){for(var d in b)this.nextShape.options[d]=b[d];null==b.stroke&&delete this.nextShape.options.stroke;b.filled||delete this.nextShape.options.fill;this.passThrough=
!0;this.rc.draw(this.nextShape);this.passThrough=!1}};b.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};b.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,arguments):this.drawPath(this.getStyle(!1,!0))};b.prototype.fillAndStroke=function(){this.passThrough?this.originalFillAndStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!0))};b.prototype.destroy=function(){this.canvas.lineTo=
this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo;this.canvas.close=this.originalClose;this.canvas.fill=this.originalFill;this.canvas.stroke=this.originalStroke;this.canvas.fillAndStroke=this.originalFillAndStroke;this.canvas.begin=this.originalBegin;this.canvas.end=this.originalEnd;this.canvas.rect=this.originalRect;this.canvas.ellipse=
this.originalEllipse;this.canvas.roundrect=this.originalRoundrect};mxShape.prototype.createRoughCanvas=function(d){return new b(d,Editor.createRoughCanvas(d),this)};var d=mxShape.prototype.createHandJiggle;mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"sketch","0")?d.apply(this,arguments):"comic"==mxUtils.getValue(this.style,"sketchStyle","rough")?this.createComicCanvas(b):this.createRoughCanvas(b)};var c=mxShape.prototype.paint;
-mxShape.prototype.paint=function(d){var f=d.addTolerance,e=!0;null!=this.style&&(e="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(null!=d.handJiggle&&d.handJiggle.constructor==b&&!this.outline){d.save();var g=this.fill,l=this.stroke;this.stroke=this.fill=null;var m=this.configurePointerEvents,k=d.setStrokeColor;d.setStrokeColor=function(){};var n=d.setFillColor;d.setFillColor=function(){};e||null==g||(this.configurePointerEvents=function(){});d.handJiggle.passThrough=!0;
-c.apply(this,arguments);d.handJiggle.passThrough=!1;d.setFillColor=n;d.setStrokeColor=k;this.configurePointerEvents=m;this.stroke=l;this.fill=g;d.restore();e&&null!=g&&(d.addTolerance=function(){})}c.apply(this,arguments);d.addTolerance=f};var f=mxShape.prototype.paintGlassEffect;mxShape.prototype.paintGlassEffect=function(d,c,e,g,l,m){null!=d.handJiggle&&d.handJiggle.constructor==b?(d.handJiggle.passThrough=!0,f.apply(this,arguments),d.handJiggle.passThrough=!1):f.apply(this,arguments)}})();Editor.fastCompress=
-function(b){return null==b||0==b.length||"undefined"===typeof pako?b:Graph.arrayBufferToString(pako.deflateRaw(b))};Editor.fastDecompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:pako.inflateRaw(Graph.stringToArrayBuffer(atob(b)),{to:"string"})};Editor.extractGraphModel=function(b,d,c){if(null!=b&&"undefined"!==typeof pako){var f=b.ownerDocument.getElementsByTagName("div"),e=[];if(null!=f&&0<f.length)for(var g=0;g<f.length;g++)if("mxgraph"==f[g].getAttribute("class")){e.push(f[g]);
-break}0<e.length&&(f=e[0].getAttribute("data-mxgraph"),null!=f?(e=JSON.parse(f),null!=e&&null!=e.xml&&(b=mxUtils.parseXml(e.xml),b=b.documentElement)):(e=e[0].getElementsByTagName("div"),0<e.length&&(f=mxUtils.getTextContent(e[0]),f=Graph.decompress(f,null,c),0<f.length&&(b=mxUtils.parseXml(f),b=b.documentElement))))}if(null!=b&&"svg"==b.nodeName)if(f=b.getAttribute("content"),null!=f&&"<"!=f.charAt(0)&&"%"!=f.charAt(0)&&(f=unescape(window.atob?atob(f):Base64.decode(cont,f))),null!=f&&"%"==f.charAt(0)&&
-(f=decodeURIComponent(f)),null!=f&&0<f.length)b=mxUtils.parseXml(f).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==b||d||(e=null,"diagram"==b.nodeName?e=b:"mxfile"==b.nodeName&&(f=b.getElementsByTagName("diagram"),0<f.length&&(e=f[Math.max(0,Math.min(f.length-1,urlParams.page||0))])),null!=e&&(b=Editor.parseDiagramNode(e,c)));null==b||"mxGraphModel"==b.nodeName||d&&"mxfile"==b.nodeName||(b=null);return b};Editor.parseDiagramNode=function(b,d){var c=mxUtils.trim(mxUtils.getTextContent(b)),
-f=null;0<c.length?(c=Graph.decompress(c,null,d),null!=c&&0<c.length&&(f=mxUtils.parseXml(c).documentElement)):(c=mxUtils.getChildNodes(b),0<c.length&&(f=mxUtils.createXmlDocument(),f.appendChild(f.importNode(c[0],!0)),f=f.documentElement));return f};Editor.getDiagramNodeXml=function(b){var d=mxUtils.getTextContent(b),c=null;0<d.length?c=Graph.decompress(d):null!=b.firstChild&&(c=mxUtils.getXml(b.firstChild));return c};Editor.extractGraphModelFromPdf=function(b){b=b.substring(b.indexOf(",")+1);b=window.atob&&
-!mxClient.IS_SF?atob(b):Base64.decode(b,!0);if("%PDF-1.7"==b.substring(0,8)){var d=b.indexOf("EmbeddedFile");if(-1<d){var c=b.indexOf("stream",d)+9;if(0<b.substring(d,c).indexOf("application#2Fvnd.jgraph.mxfile"))return d=b.indexOf("endstream",c-1),pako.inflateRaw(Graph.stringToArrayBuffer(b.substring(c,d)),{to:"string"})}return null}for(var c=null,d="",f=0,e=0,g=[],l=null;e<b.length;){var m=b.charCodeAt(e),e=e+1;10!=m&&(d+=String.fromCharCode(m));m=="/Subject (%3Cmxfile".charCodeAt(f)?f++:f=0;if(19==
-f){var k=b.indexOf("%3C%2Fmxfile%3E)",e)+15,e=e-9;if(k>e){c=b.substring(e,k);break}}10==m&&("endobj"==d?l=null:"obj"==d.substring(d.length-3,d.length)||"xref"==d||"trailer"==d?(l=[],g[d.split(" ")[0]]=l):null!=l&&l.push(d),d="")}null==c&&(c=Editor.extractGraphModelFromXref(g));null!=c&&(c=decodeURIComponent(c.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return c};Editor.extractGraphModelFromXref=function(b){var d=b.trailer,c=null;null!=d&&(d=/.* \/Info (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<
-d.length&&(d=b[d[1]],null!=d&&(d=/.* \/Subject (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<d.length&&(b=b[d[1]],null!=b&&(b=b.join("\n"),c=b.substring(1,b.length-1))))));return c};Editor.extractParserError=function(b,d){var c=null,f=null!=b?b.getElementsByTagName("parsererror"):null;null!=f&&0<f.length&&(c=d||mxResources.get("invalidChars"),f=f[0].getElementsByTagName("div"),0<f.length&&(c=mxUtils.getTextContent(f[0])));return null!=c?mxUtils.trim(c):c};Editor.addRetryToError=function(b,d){if(null!=
+mxShape.prototype.paint=function(d){var g=d.addTolerance,e=!0;null!=this.style&&(e="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(null!=d.handJiggle&&d.handJiggle.constructor==b&&!this.outline){d.save();var f=this.fill,l=this.stroke;this.stroke=this.fill=null;var m=this.configurePointerEvents,k=d.setStrokeColor;d.setStrokeColor=function(){};var n=d.setFillColor;d.setFillColor=function(){};e||null==f||(this.configurePointerEvents=function(){});d.handJiggle.passThrough=!0;
+c.apply(this,arguments);d.handJiggle.passThrough=!1;d.setFillColor=n;d.setStrokeColor=k;this.configurePointerEvents=m;this.stroke=l;this.fill=f;d.restore();e&&null!=f&&(d.addTolerance=function(){})}c.apply(this,arguments);d.addTolerance=g};var g=mxShape.prototype.paintGlassEffect;mxShape.prototype.paintGlassEffect=function(d,c,e,f,l,m){null!=d.handJiggle&&d.handJiggle.constructor==b?(d.handJiggle.passThrough=!0,g.apply(this,arguments),d.handJiggle.passThrough=!1):g.apply(this,arguments)}})();Editor.fastCompress=
+function(b){return null==b||0==b.length||"undefined"===typeof pako?b:Graph.arrayBufferToString(pako.deflateRaw(b))};Editor.fastDecompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:pako.inflateRaw(Graph.stringToArrayBuffer(atob(b)),{to:"string"})};Editor.extractGraphModel=function(b,d,c){if(null!=b&&"undefined"!==typeof pako){var g=b.ownerDocument.getElementsByTagName("div"),e=[];if(null!=g&&0<g.length)for(var f=0;f<g.length;f++)if("mxgraph"==g[f].getAttribute("class")){e.push(g[f]);
+break}0<e.length&&(g=e[0].getAttribute("data-mxgraph"),null!=g?(e=JSON.parse(g),null!=e&&null!=e.xml&&(b=mxUtils.parseXml(e.xml),b=b.documentElement)):(e=e[0].getElementsByTagName("div"),0<e.length&&(g=mxUtils.getTextContent(e[0]),g=Graph.decompress(g,null,c),0<g.length&&(b=mxUtils.parseXml(g),b=b.documentElement))))}if(null!=b&&"svg"==b.nodeName)if(g=b.getAttribute("content"),null!=g&&"<"!=g.charAt(0)&&"%"!=g.charAt(0)&&(g=unescape(window.atob?atob(g):Base64.decode(cont,g))),null!=g&&"%"==g.charAt(0)&&
+(g=decodeURIComponent(g)),null!=g&&0<g.length)b=mxUtils.parseXml(g).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==b||d||(e=null,"diagram"==b.nodeName?e=b:"mxfile"==b.nodeName&&(g=b.getElementsByTagName("diagram"),0<g.length&&(e=g[Math.max(0,Math.min(g.length-1,urlParams.page||0))])),null!=e&&(b=Editor.parseDiagramNode(e,c)));null==b||"mxGraphModel"==b.nodeName||d&&"mxfile"==b.nodeName||(b=null);return b};Editor.parseDiagramNode=function(b,d){var c=mxUtils.trim(mxUtils.getTextContent(b)),
+g=null;0<c.length?(c=Graph.decompress(c,null,d),null!=c&&0<c.length&&(g=mxUtils.parseXml(c).documentElement)):(c=mxUtils.getChildNodes(b),0<c.length&&(g=mxUtils.createXmlDocument(),g.appendChild(g.importNode(c[0],!0)),g=g.documentElement));return g};Editor.getDiagramNodeXml=function(b){var d=mxUtils.getTextContent(b),c=null;0<d.length?c=Graph.decompress(d):null!=b.firstChild&&(c=mxUtils.getXml(b.firstChild));return c};Editor.extractGraphModelFromPdf=function(b){b=b.substring(b.indexOf(",")+1);b=window.atob&&
+!mxClient.IS_SF?atob(b):Base64.decode(b,!0);if("%PDF-1.7"==b.substring(0,8)){var d=b.indexOf("EmbeddedFile");if(-1<d){var c=b.indexOf("stream",d)+9;if(0<b.substring(d,c).indexOf("application#2Fvnd.jgraph.mxfile"))return d=b.indexOf("endstream",c-1),pako.inflateRaw(Graph.stringToArrayBuffer(b.substring(c,d)),{to:"string"})}return null}for(var c=null,d="",g=0,e=0,f=[],l=null;e<b.length;){var m=b.charCodeAt(e),e=e+1;10!=m&&(d+=String.fromCharCode(m));m=="/Subject (%3Cmxfile".charCodeAt(g)?g++:g=0;if(19==
+g){var k=b.indexOf("%3C%2Fmxfile%3E)",e)+15,e=e-9;if(k>e){c=b.substring(e,k);break}}10==m&&("endobj"==d?l=null:"obj"==d.substring(d.length-3,d.length)||"xref"==d||"trailer"==d?(l=[],f[d.split(" ")[0]]=l):null!=l&&l.push(d),d="")}null==c&&(c=Editor.extractGraphModelFromXref(f));null!=c&&(c=decodeURIComponent(c.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return c};Editor.extractGraphModelFromXref=function(b){var d=b.trailer,c=null;null!=d&&(d=/.* \/Info (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<
+d.length&&(d=b[d[1]],null!=d&&(d=/.* \/Subject (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<d.length&&(b=b[d[1]],null!=b&&(b=b.join("\n"),c=b.substring(1,b.length-1))))));return c};Editor.extractParserError=function(b,d){var c=null,g=null!=b?b.getElementsByTagName("parsererror"):null;null!=g&&0<g.length&&(c=d||mxResources.get("invalidChars"),g=g[0].getElementsByTagName("div"),0<g.length&&(c=mxUtils.getTextContent(g[0])));return null!=c?mxUtils.trim(c):c};Editor.addRetryToError=function(b,d){if(null!=
b){var c=null!=b.error?b.error:b;null==c.retry&&(c.retry=d)}};Editor.configure=function(b,d){if(null!=b){Editor.config=b;Editor.configVersion=b.version;Menus.prototype.defaultFonts=b.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=b.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=b.defaultColors||ColorDialog.prototype.defaultColors;ColorDialog.prototype.colorNames=b.colorNames||ColorDialog.prototype.colorNames;StyleFormatPanel.prototype.defaultColorSchemes=
b.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes;Graph.prototype.defaultEdgeLength=b.defaultEdgeLength||Graph.prototype.defaultEdgeLength;DrawioFile.prototype.autosaveDelay=b.autosaveDelay||DrawioFile.prototype.autosaveDelay;null!=b.templateFile&&(EditorUi.templateFile=b.templateFile);null!=b.styles&&(Array.isArray(b.styles)?Editor.styles=b.styles:EditorUi.debug("Configuration Error: Array expected for styles"));null!=b.globalVars&&(Editor.globalVars=b.globalVars);null!=b.compressXml&&
(Editor.compressXml=b.compressXml);null!=b.includeDiagram&&(Editor.defaultIncludeDiagram=b.includeDiagram);null!=b.simpleLabels&&(Editor.simpleLabels=b.simpleLabels);null!=b.oneDriveInlinePicker&&(Editor.oneDriveInlinePicker=b.oneDriveInlinePicker);null!=b.darkColor&&(Editor.darkColor=b.darkColor);null!=b.lightColor&&(Editor.lightColor=b.lightColor);null!=b.settingsName&&(Editor.configurationKey="."+b.settingsName+"-configuration",Editor.settingsKey="."+b.settingsName+"-config",mxSettings.key=Editor.settingsKey);
b.customFonts&&(Menus.prototype.defaultFonts=b.customFonts.concat(Menus.prototype.defaultFonts));b.customPresetColors&&(ColorDialog.prototype.presetColors=b.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=b.customColorSchemes&&(StyleFormatPanel.prototype.defaultColorSchemes=b.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes));if(null!=b.css){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(b.css));
-var f=document.getElementsByTagName("script")[0];f.parentNode.insertBefore(c,f)}null!=b.libraries&&(Sidebar.prototype.customEntries=b.libraries);null!=b.enabledLibraries&&(Array.isArray(b.enabledLibraries)?Sidebar.prototype.enabledLibraries=b.enabledLibraries:EditorUi.debug("Configuration Error: Array expected for enabledLibraries"));null!=b.defaultLibraries&&(Sidebar.prototype.defaultEntries=b.defaultLibraries);null!=b.defaultCustomLibraries&&(Editor.defaultCustomLibraries=b.defaultCustomLibraries);
+var g=document.getElementsByTagName("script")[0];g.parentNode.insertBefore(c,g)}null!=b.libraries&&(Sidebar.prototype.customEntries=b.libraries);null!=b.enabledLibraries&&(Array.isArray(b.enabledLibraries)?Sidebar.prototype.enabledLibraries=b.enabledLibraries:EditorUi.debug("Configuration Error: Array expected for enabledLibraries"));null!=b.defaultLibraries&&(Sidebar.prototype.defaultEntries=b.defaultLibraries);null!=b.defaultCustomLibraries&&(Editor.defaultCustomLibraries=b.defaultCustomLibraries);
null!=b.enableCustomLibraries&&(Editor.enableCustomLibraries=b.enableCustomLibraries);null!=b.defaultVertexStyle&&(Graph.prototype.defaultVertexStyle=b.defaultVertexStyle);null!=b.defaultEdgeStyle&&(Graph.prototype.defaultEdgeStyle=b.defaultEdgeStyle);null!=b.defaultPageVisible&&(Graph.prototype.defaultPageVisible=b.defaultPageVisible);null!=b.defaultGridEnabled&&(Graph.prototype.defaultGridEnabled=b.defaultGridEnabled);null!=b.zoomWheel&&(Graph.zoomWheel=b.zoomWheel);null!=b.zoomFactor&&(c=parseFloat(b.zoomFactor),
-!isNaN(c)&&1<c?Graph.prototype.zoomFactor=c:EditorUi.debug("Configuration Error: Float > 1 expected for zoomFactor"));null!=b.gridSteps&&(c=parseInt(b.gridSteps),!isNaN(c)&&0<c?mxGraphView.prototype.gridSteps=c:EditorUi.debug("Configuration Error: Int > 0 expected for gridSteps"));null!=b.pageFormat&&(c=parseInt(b.pageFormat.width),f=parseInt(b.pageFormat.height),!isNaN(c)&&0<c&&!isNaN(f)&&0<f?(mxGraph.prototype.defaultPageFormat=new mxRectangle(0,0,c,f),mxGraph.prototype.pageFormat=mxGraph.prototype.defaultPageFormat):
+!isNaN(c)&&1<c?Graph.prototype.zoomFactor=c:EditorUi.debug("Configuration Error: Float > 1 expected for zoomFactor"));null!=b.gridSteps&&(c=parseInt(b.gridSteps),!isNaN(c)&&0<c?mxGraphView.prototype.gridSteps=c:EditorUi.debug("Configuration Error: Int > 0 expected for gridSteps"));null!=b.pageFormat&&(c=parseInt(b.pageFormat.width),g=parseInt(b.pageFormat.height),!isNaN(c)&&0<c&&!isNaN(g)&&0<g?(mxGraph.prototype.defaultPageFormat=new mxRectangle(0,0,c,g),mxGraph.prototype.pageFormat=mxGraph.prototype.defaultPageFormat):
EditorUi.debug("Configuration Error: {width: int, height: int} expected for pageFormat"));b.thumbWidth&&(Sidebar.prototype.thumbWidth=b.thumbWidth);b.thumbHeight&&(Sidebar.prototype.thumbHeight=b.thumbHeight);b.emptyLibraryXml&&(EditorUi.prototype.emptyLibraryXml=b.emptyLibraryXml);b.emptyDiagramXml&&(EditorUi.prototype.emptyDiagramXml=b.emptyDiagramXml);b.sidebarWidth&&(EditorUi.prototype.hsplitPosition=b.sidebarWidth);b.sidebarTitles&&(Sidebar.prototype.sidebarTitles=b.sidebarTitles);b.sidebarTitleSize&&
(c=parseInt(b.sidebarTitleSize),!isNaN(c)&&0<c?Sidebar.prototype.sidebarTitleSize=c:EditorUi.debug("Configuration Error: Int > 0 expected for sidebarTitleSize"));b.fontCss&&("string"===typeof b.fontCss?Editor.configureFontCss(b.fontCss):EditorUi.debug("Configuration Error: String expected for fontCss"));null!=b.autosaveDelay&&(c=parseInt(b.autosaveDelay),!isNaN(c)&&0<c?DrawioFile.prototype.autosaveDelay=c:EditorUi.debug("Configuration Error: Int > 0 expected for autosaveDelay"));if(null!=b.plugins&&
!d)for(App.initPluginCallback(),c=0;c<b.plugins.length;c++)mxscript(b.plugins[c]);null!=b.maxImageBytes&&(EditorUi.prototype.maxImageBytes=b.maxImageBytes);null!=b.maxImageSize&&(EditorUi.prototype.maxImageSize=b.maxImageSize)}};Editor.configureFontCss=function(b){if(null!=b){Editor.prototype.fontCss=b;var d=document.getElementsByTagName("script")[0];if(null!=d&&null!=d.parentNode){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(b));d.parentNode.insertBefore(c,
-d);b=b.split("url(");for(c=1;c<b.length;c++){var f=b[c].indexOf(")"),f=Editor.trimCssUrl(b[c].substring(0,f)),e=document.createElement("link");e.setAttribute("rel","preload");e.setAttribute("href",f);e.setAttribute("as","font");e.setAttribute("crossorigin","");d.parentNode.insertBefore(e,d)}}}};Editor.trimCssUrl=function(b){return b.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")};Editor.GOOGLE_FONTS="https://fonts.googleapis.com/css?family=";Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";
+d);b=b.split("url(");for(c=1;c<b.length;c++){var g=b[c].indexOf(")"),g=Editor.trimCssUrl(b[c].substring(0,g)),e=document.createElement("link");e.setAttribute("rel","preload");e.setAttribute("href",g);e.setAttribute("as","font");e.setAttribute("crossorigin","");d.parentNode.insertBefore(e,d)}}}};Editor.trimCssUrl=function(b){return b.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")};Editor.GOOGLE_FONTS="https://fonts.googleapis.com/css?family=";Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";
Editor.GUID_LENGTH=20;Editor.guid=function(b){b=null!=b?b:Editor.GUID_LENGTH;for(var d=[],c=0;c<b;c++)d.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return d.join("")};Editor.prototype.timeout=25E3;Editor.prototype.useForeignObjectForMath=!0;Editor.prototype.editButtonLink=null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;Editor.prototype.crossOriginImages=!mxClient.IS_IE;var b=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(d){d=
-null!=d&&"mxlibrary"!=d.nodeName?this.extractGraphModel(d):null;if(null!=d){var c=d.getElementsByTagName("parsererror");if(null!=c&&0<c.length){var c=c[0],f=c.getElementsByTagName("div");null!=f&&0<f.length&&(c=f[0]);throw{message:mxUtils.getTextContent(c)};}if("mxGraphModel"==d.nodeName){c=d.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=c&&""!=c)c!=this.graph.currentStyle&&(f=null!=this.graph.themes?this.graph.themes[c]:mxUtils.load(STYLE_PATH+"/"+c+".xml").getDocumentElement(),
-null!=f&&(e=new mxCodec(f.ownerDocument),e.decode(f,this.graph.getStylesheet())));else if(f=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=f){var e=new mxCodec(f.ownerDocument);e.decode(f,this.graph.getStylesheet())}this.graph.currentStyle=c;this.graph.mathEnabled="1"==urlParams.math||"1"==d.getAttribute("math");c=d.getAttribute("backgroundImage");null!=c?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(c)):
-this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==d.getAttribute("shadow"),!1);if(c=d.getAttribute("extFonts"))try{for(c=c.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}}),f=0;f<c.length;f++)this.graph.addExtFont(c[f].name,
-c[f].url)}catch(S){console.log("ExtFonts format error: "+S.message)}else null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(this.graph.extFonts=[])}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(b,d){b=null!=b?b:!0;var f=c.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&f.setAttribute("style",
-this.graph.currentStyle);var e=this.graph.getBackgroundImageObject(this.graph.backgroundImage,d);null!=e&&f.setAttribute("backgroundImage",JSON.stringify(e));f.setAttribute("math",this.graph.mathEnabled?"1":"0");f.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(e=this.graph.extFonts.map(function(b){return b.name+"^"+b.url}),f.setAttribute("extFonts",e.join("|")));return f};Editor.prototype.isDataSvg=function(b){try{var d=mxUtils.parseXml(b).documentElement.getAttribute("content");
-if(null!=d&&(null!=d&&"<"!=d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var c=mxUtils.parseXml(d).documentElement;return"mxfile"==c.nodeName||"mxGraphModel"==c.nodeName}}catch(Y){}return!1};Editor.prototype.extractGraphModel=function(b,d,c){return Editor.extractGraphModel.apply(this,arguments)};var e=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled=
+null!=d&&"mxlibrary"!=d.nodeName?this.extractGraphModel(d):null;if(null!=d){var c=d.getElementsByTagName("parsererror");if(null!=c&&0<c.length){var c=c[0],g=c.getElementsByTagName("div");null!=g&&0<g.length&&(c=g[0]);throw{message:mxUtils.getTextContent(c)};}if("mxGraphModel"==d.nodeName){c=d.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=c&&""!=c)c!=this.graph.currentStyle&&(g=null!=this.graph.themes?this.graph.themes[c]:mxUtils.load(STYLE_PATH+"/"+c+".xml").getDocumentElement(),
+null!=g&&(e=new mxCodec(g.ownerDocument),e.decode(g,this.graph.getStylesheet())));else if(g=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=g){var e=new mxCodec(g.ownerDocument);e.decode(g,this.graph.getStylesheet())}this.graph.currentStyle=c;this.graph.mathEnabled="1"==urlParams.math||"1"==d.getAttribute("math");c=d.getAttribute("backgroundImage");null!=c?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(c)):
+this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==d.getAttribute("shadow"),!1);if(c=d.getAttribute("extFonts"))try{for(c=c.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}}),g=0;g<c.length;g++)this.graph.addExtFont(c[g].name,
+c[g].url)}catch(S){console.log("ExtFonts format error: "+S.message)}else null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(this.graph.extFonts=[])}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(b,d){b=null!=b?b:!0;var g=c.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&g.setAttribute("style",
+this.graph.currentStyle);var e=this.graph.getBackgroundImageObject(this.graph.backgroundImage,d);null!=e&&g.setAttribute("backgroundImage",JSON.stringify(e));g.setAttribute("math",this.graph.mathEnabled?"1":"0");g.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(e=this.graph.extFonts.map(function(b){return b.name+"^"+b.url}),g.setAttribute("extFonts",e.join("|")));return g};Editor.prototype.isDataSvg=function(b){try{var d=mxUtils.parseXml(b).documentElement.getAttribute("content");
+if(null!=d&&(null!=d&&"<"!=d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var c=mxUtils.parseXml(d).documentElement;return"mxfile"==c.nodeName||"mxGraphModel"==c.nodeName}}catch(ca){}return!1};Editor.prototype.extractGraphModel=function(b,d,c){return Editor.extractGraphModel.apply(this,arguments)};var e=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled=
"1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();e.apply(this,arguments)};var k=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){k.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&
null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.mathJaxWebkitCss="div.MathJax_SVG_Display { position: static; }\nspan.MathJax_SVG { position: static !important; }";Editor.initMath=function(b,d){if("undefined"===typeof window.MathJax){b=(null!=b?b:DRAW_MATH_URL+"/MathJax.js")+"?config=TeX-MML-AM_"+("html"==urlParams["math-output"]?"HTMLorMML":
"SVG")+"-full";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(b){window.setTimeout(function(){"hidden"!=b.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,b])},0)};var c=null!=urlParams["math-font"]?decodeURIComponent(urlParams["math-font"]):"TeX";d=null!=d?d:{"HTML-CSS":{availableFonts:[c],imageFont:null},SVG:{font:c,useFontCache:!1},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",
-AuthorInit:function(){MathJax.Hub.Config(d);MathJax.Hub.Register.StartupHook("Begin",function(){for(var b=0;b<Editor.mathJaxQueue.length;b++)Editor.doMathJaxRender(Editor.mathJaxQueue[b])})}};Editor.MathJaxRender=function(b){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(b):Editor.mathJaxQueue.push(b)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var f=Editor.prototype.init;Editor.prototype.init=function(){f.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,
-mxUtils.bind(this,function(b,d){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)}))};c=document.getElementsByTagName("script");if(null!=c&&0<c.length){var e=document.createElement("script");e.setAttribute("type","text/javascript");e.setAttribute("src",b);c[0].parentNode.appendChild(e)}try{if(mxClient.IS_GC||mxClient.IS_SF){var g=document.createElement("style");g.type="text/css";g.innerHTML=Editor.mathJaxWebkitCss;document.getElementsByTagName("head")[0].appendChild(g)}}catch(V){}}};
-Editor.prototype.csvToArray=function(b){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(b))return null;var d=[];b.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(b,c,f,e){void 0!==c?d.push(c.replace(/\\'/g,"'")):void 0!==f?d.push(f.replace(/\\"/g,
+AuthorInit:function(){MathJax.Hub.Config(d);MathJax.Hub.Register.StartupHook("Begin",function(){for(var b=0;b<Editor.mathJaxQueue.length;b++)Editor.doMathJaxRender(Editor.mathJaxQueue[b])})}};Editor.MathJaxRender=function(b){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(b):Editor.mathJaxQueue.push(b)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var g=Editor.prototype.init;Editor.prototype.init=function(){g.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,
+mxUtils.bind(this,function(b,d){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)}))};c=document.getElementsByTagName("script");if(null!=c&&0<c.length){var e=document.createElement("script");e.setAttribute("type","text/javascript");e.setAttribute("src",b);c[0].parentNode.appendChild(e)}try{if(mxClient.IS_GC||mxClient.IS_SF){var f=document.createElement("style");f.type="text/css";f.innerHTML=Editor.mathJaxWebkitCss;document.getElementsByTagName("head")[0].appendChild(f)}}catch(V){}}};
+Editor.prototype.csvToArray=function(b){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(b))return null;var d=[];b.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(b,c,g,e){void 0!==c?d.push(c.replace(/\\'/g,"'")):void 0!==g?d.push(g.replace(/\\"/g,
'"')):void 0!==e&&d.push(e);return""});/,\s*$/.test(b)&&d.push("");return d};Editor.prototype.isCorsEnabledForUrl=function(b){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||b.substring(0,window.location.origin.length)==window.location.origin)return!0;null!=urlParams.cors&&null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(b)||"https://raw.githubusercontent.com/"===b.substring(0,34)};Editor.prototype.createImageUrlConverter=
-function(){var b=new mxUrlConverter;b.updateBaseUrl();var d=b.convert,c=this;b.convert=function(f){if(null!=f){var e="http://"==f.substring(0,7)||"https://"==f.substring(0,8);e&&!navigator.onLine?f=Editor.svgBrokenImage.src:!e||f.substring(0,b.baseUrl.length)==b.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(f)?"chrome-extension://"==f.substring(0,19)||mxClient.IS_CHROMEAPP||(f=d.apply(this,arguments)):f=PROXY_URL+"?url="+encodeURIComponent(f)}return f};return b};Editor.createSvgDataUri=function(b){return"data:image/svg+xml;base64,"+
-btoa(unescape(encodeURIComponent(b)))};Editor.prototype.convertImageToDataUri=function(b,d){try{var c=!0,f=window.setTimeout(mxUtils.bind(this,function(){c=!1;d(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(b))mxUtils.get(b,mxUtils.bind(this,function(b){window.clearTimeout(f);c&&d(Editor.createSvgDataUri(b.getText()))}),function(){window.clearTimeout(f);c&&d(Editor.svgBrokenImage.src)});else{var e=new Image;this.crossOriginImages&&(e.crossOrigin="anonymous");e.onload=function(){window.clearTimeout(f);
-if(c)try{var b=document.createElement("canvas"),g=b.getContext("2d");b.height=e.height;b.width=e.width;g.drawImage(e,0,0);d(b.toDataURL())}catch(oa){d(Editor.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(f);c&&d(Editor.svgBrokenImage.src)};e.src=b}}catch(Q){d(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(b,d,c,f){null==f&&(f=this.createImageUrlConverter());var e=0,g=c||{};c=mxUtils.bind(this,function(c,l){for(var m=b.getElementsByTagName(c),k=0;k<m.length;k++)mxUtils.bind(this,
-function(c){try{if(null!=c){var m=f.convert(c.getAttribute(l));if(null!=m&&"data:"!=m.substring(0,5)){var k=g[m];null==k?(e++,this.convertImageToDataUri(m,function(f){null!=f&&(g[m]=f,c.setAttribute(l,f));e--;0==e&&d(b)})):c.setAttribute(l,k)}else null!=m&&c.setAttribute(l,m)}}catch(ba){}})(m[k])});c("image","xlink:href");c("img","src");0==e&&d(b)};Editor.base64Encode=function(b){for(var d="",c=0,f=b.length,e,g,l;c<f;){e=b.charCodeAt(c++)&255;if(c==f){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>
-2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);d+="==";break}g=b.charCodeAt(c++);if(c==f){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(g&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&15)<<2);d+="=";break}l=b.charCodeAt(c++);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>
-2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(g&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&15)<<2|(l&192)>>6);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l&63)}return d};Editor.prototype.loadUrl=function(b,d,c,f,e,g,l,m){try{var k=!l&&(f||/(\.png)($|\?)/i.test(b)||/(\.jpe?g)($|\?)/i.test(b)||/(\.gif)($|\?)/i.test(b)||/(\.pdf)($|\?)/i.test(b));e=null!=e?e:!0;var n=mxUtils.bind(this,
-function(){mxUtils.get(b,mxUtils.bind(this,function(b){if(200<=b.getStatus()&&299>=b.getStatus()){if(null!=d){var f=b.getText();if(k){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){b=mxUtilsBinaryToArray(b.request.responseBody).toArray();for(var f=Array(b.length),e=0;e<b.length;e++)f[e]=String.fromCharCode(b[e]);f=f.join("")}g=null!=g?g:"data:image/png;base64,";f=g+Editor.base64Encode(f)}d(f)}}else null!=c&&(0==b.getStatus()?c({message:mxResources.get("accessDenied")},
-b):c({message:mxResources.get("error")+" "+b.getStatus()},b))}),function(b){null!=c&&c({message:mxResources.get("error")+" "+b.getStatus()})},k,this.timeout,function(){e&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:n})},m)});n()}catch(ra){null!=c&&c(ra)}};Editor.prototype.absoluteCssFonts=function(b){var d=null;if(null!=b){var c=b.split("url(");if(0<c.length){d=[c[0]];b=window.location.pathname;var f=null!=b?b.lastIndexOf("/"):-1;0<=f&&(b=b.substring(0,f+1));var f=document.getElementsByTagName("base"),
-e=null;null!=f&&0<f.length&&(e=f[0].getAttribute("href"));for(var g=1;g<c.length;g++)if(f=c[g].indexOf(")"),0<f){var l=Editor.trimCssUrl(c[g].substring(0,f));this.graph.isRelativeUrl(l)&&(l=null!=e?e+l:window.location.protocol+"//"+window.location.hostname+("/"==l.charAt(0)?"":b)+l);d.push('url("'+l+'"'+c[g].substring(f))}else d.push(c[g])}else d=[b]}return null!=d?d.join(""):null};Editor.prototype.embedCssFonts=function(b,d){var c=b.split("url("),f=0;null==this.cachedFonts&&(this.cachedFonts={});
-var e=mxUtils.bind(this,function(){if(0==f){for(var b=[c[0]],e=1;e<c.length;e++){var g=c[e].indexOf(")");b.push('url("');b.push(this.cachedFonts[Editor.trimCssUrl(c[e].substring(0,g))]);b.push('"'+c[e].substring(g))}d(b.join(""))}});if(0<c.length){for(var g=1;g<c.length;g++){var l=c[g].indexOf(")"),m=null,k=c[g].indexOf("format(",l);0<k&&(m=Editor.trimCssUrl(c[g].substring(k+7,c[g].indexOf(")",k))));mxUtils.bind(this,function(b){if(null==this.cachedFonts[b]){this.cachedFonts[b]=b;f++;var d="application/x-font-ttf";
+function(){var b=new mxUrlConverter;b.updateBaseUrl();var d=b.convert,c=this;b.convert=function(g){if(null!=g){var e="http://"==g.substring(0,7)||"https://"==g.substring(0,8);e&&!navigator.onLine?g=Editor.svgBrokenImage.src:!e||g.substring(0,b.baseUrl.length)==b.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(g)?"chrome-extension://"==g.substring(0,19)||mxClient.IS_CHROMEAPP||(g=d.apply(this,arguments)):g=PROXY_URL+"?url="+encodeURIComponent(g)}return g};return b};Editor.createSvgDataUri=function(b){return"data:image/svg+xml;base64,"+
+btoa(unescape(encodeURIComponent(b)))};Editor.prototype.convertImageToDataUri=function(b,d){try{var c=!0,g=window.setTimeout(mxUtils.bind(this,function(){c=!1;d(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(b))mxUtils.get(b,mxUtils.bind(this,function(b){window.clearTimeout(g);c&&d(Editor.createSvgDataUri(b.getText()))}),function(){window.clearTimeout(g);c&&d(Editor.svgBrokenImage.src)});else{var e=new Image;this.crossOriginImages&&(e.crossOrigin="anonymous");e.onload=function(){window.clearTimeout(g);
+if(c)try{var b=document.createElement("canvas"),f=b.getContext("2d");b.height=e.height;b.width=e.width;f.drawImage(e,0,0);d(b.toDataURL())}catch(oa){d(Editor.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(g);c&&d(Editor.svgBrokenImage.src)};e.src=b}}catch(Q){d(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(b,d,c,g){null==g&&(g=this.createImageUrlConverter());var e=0,f=c||{};c=mxUtils.bind(this,function(c,l){for(var m=b.getElementsByTagName(c),k=0;k<m.length;k++)mxUtils.bind(this,
+function(c){try{if(null!=c){var m=g.convert(c.getAttribute(l));if(null!=m&&"data:"!=m.substring(0,5)){var k=f[m];null==k?(e++,this.convertImageToDataUri(m,function(g){null!=g&&(f[m]=g,c.setAttribute(l,g));e--;0==e&&d(b)})):c.setAttribute(l,k)}else null!=m&&c.setAttribute(l,m)}}catch(aa){}})(m[k])});c("image","xlink:href");c("img","src");0==e&&d(b)};Editor.base64Encode=function(b){for(var d="",c=0,g=b.length,e,f,l;c<g;){e=b.charCodeAt(c++)&255;if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>
+2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);d+="==";break}f=b.charCodeAt(c++);if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(f&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&15)<<2);d+="=";break}l=b.charCodeAt(c++);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>
+2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(f&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&15)<<2|(l&192)>>6);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l&63)}return d};Editor.prototype.loadUrl=function(b,d,c,g,e,f,l,m){try{var k=!l&&(g||/(\.png)($|\?)/i.test(b)||/(\.jpe?g)($|\?)/i.test(b)||/(\.gif)($|\?)/i.test(b)||/(\.pdf)($|\?)/i.test(b));e=null!=e?e:!0;var n=mxUtils.bind(this,
+function(){mxUtils.get(b,mxUtils.bind(this,function(b){if(200<=b.getStatus()&&299>=b.getStatus()){if(null!=d){var g=b.getText();if(k){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){b=mxUtilsBinaryToArray(b.request.responseBody).toArray();for(var g=Array(b.length),e=0;e<b.length;e++)g[e]=String.fromCharCode(b[e]);g=g.join("")}f=null!=f?f:"data:image/png;base64,";g=f+Editor.base64Encode(g)}d(g)}}else null!=c&&(0==b.getStatus()?c({message:mxResources.get("accessDenied")},
+b):c({message:mxResources.get("error")+" "+b.getStatus()},b))}),function(b){null!=c&&c({message:mxResources.get("error")+" "+b.getStatus()})},k,this.timeout,function(){e&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:n})},m)});n()}catch(ra){null!=c&&c(ra)}};Editor.prototype.absoluteCssFonts=function(b){var d=null;if(null!=b){var c=b.split("url(");if(0<c.length){d=[c[0]];b=window.location.pathname;var g=null!=b?b.lastIndexOf("/"):-1;0<=g&&(b=b.substring(0,g+1));var g=document.getElementsByTagName("base"),
+e=null;null!=g&&0<g.length&&(e=g[0].getAttribute("href"));for(var f=1;f<c.length;f++)if(g=c[f].indexOf(")"),0<g){var l=Editor.trimCssUrl(c[f].substring(0,g));this.graph.isRelativeUrl(l)&&(l=null!=e?e+l:window.location.protocol+"//"+window.location.hostname+("/"==l.charAt(0)?"":b)+l);d.push('url("'+l+'"'+c[f].substring(g))}else d.push(c[f])}else d=[b]}return null!=d?d.join(""):null};Editor.prototype.embedCssFonts=function(b,d){var c=b.split("url("),g=0;null==this.cachedFonts&&(this.cachedFonts={});
+var e=mxUtils.bind(this,function(){if(0==g){for(var b=[c[0]],e=1;e<c.length;e++){var f=c[e].indexOf(")");b.push('url("');b.push(this.cachedFonts[Editor.trimCssUrl(c[e].substring(0,f))]);b.push('"'+c[e].substring(f))}d(b.join(""))}});if(0<c.length){for(var f=1;f<c.length;f++){var l=c[f].indexOf(")"),m=null,k=c[f].indexOf("format(",l);0<k&&(m=Editor.trimCssUrl(c[f].substring(k+7,c[f].indexOf(")",k))));mxUtils.bind(this,function(b){if(null==this.cachedFonts[b]){this.cachedFonts[b]=b;g++;var d="application/x-font-ttf";
if("svg"==m||/(\.svg)($|\?)/i.test(b))d="image/svg+xml";else if("otf"==m||"embedded-opentype"==m||/(\.otf)($|\?)/i.test(b))d="application/x-font-opentype";else if("woff"==m||/(\.woff)($|\?)/i.test(b))d="application/font-woff";else if("woff2"==m||/(\.woff2)($|\?)/i.test(b))d="application/font-woff2";else if("eot"==m||/(\.eot)($|\?)/i.test(b))d="application/vnd.ms-fontobject";else if("sfnt"==m||/(\.sfnt)($|\?)/i.test(b))d="application/font-sfnt";var c=b;/^https?:\/\//.test(c)&&!this.isCorsEnabledForUrl(c)&&
-(c=PROXY_URL+"?url="+encodeURIComponent(b));this.loadUrl(c,mxUtils.bind(this,function(d){this.cachedFonts[b]=d;f--;e()}),mxUtils.bind(this,function(b){f--;e()}),!0,null,"data:"+d+";charset=utf-8;base64,")}})(Editor.trimCssUrl(c[g].substring(0,l)),m)}e()}else d(b)};Editor.prototype.loadFonts=function(b){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(d){this.resolvedFontCss=d;null!=b&&b()})):null!=b&&b()};Editor.prototype.embedExtFonts=function(b){var d=
-this.graph.getCustomFonts();if(0<d.length){var c="",f=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts={});for(var e=mxUtils.bind(this,function(){0==f&&this.embedCssFonts(c,b)}),g=0;g<d.length;g++)mxUtils.bind(this,function(b,d){Graph.isCssFontUrl(d)?null==this.cachedGoogleFonts[d]?(f++,this.loadUrl(d,mxUtils.bind(this,function(b){this.cachedGoogleFonts[d]=b;c+=b;f--;e()}),mxUtils.bind(this,function(b){f--;c+="@import url("+d+");";e()}))):c+=this.cachedGoogleFonts[d]:c+='@font-face {font-family: "'+
-b+'";src: url("'+d+'")}'})(d[g].name,d[g].url);e()}else b()};Editor.prototype.addMathCss=function(b){b=b.getElementsByTagName("defs");if(null!=b&&0<b.length)for(var d=document.getElementsByTagName("style"),c=0;c<d.length;c++)0<mxUtils.getTextContent(d[c]).indexOf("MathJax")&&b[0].appendChild(d[c].cloneNode(!0))};Editor.prototype.addFontCss=function(b,d){d=null!=d?d:this.absoluteCssFonts(this.fontCss);if(null!=d){var c=b.getElementsByTagName("defs"),f=b.ownerDocument;0==c.length?(c=null!=f.createElementNS?
-f.createElementNS(mxConstants.NS_SVG,"defs"):f.createElement("defs"),null!=b.firstChild?b.insertBefore(c,b.firstChild):b.appendChild(c)):c=c[0];f=null!=f.createElementNS?f.createElementNS(mxConstants.NS_SVG,"style"):f.createElement("style");f.setAttribute("type","text/css");mxUtils.setTextContent(f,d);c.appendChild(f)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(b,d,c){var f=mxClient.IS_FF?8192:16384;
-return Math.min(c,Math.min(f/b,f/d))};Editor.prototype.exportToCanvas=function(b,d,c,f,e,g,l,m,k,n,q,u,p,v,x,t,z,y){try{g=null!=g?g:!0;l=null!=l?l:!0;u=null!=u?u:this.graph;p=null!=p?p:0;var A=k?null:u.background;A==mxConstants.NONE&&(A=null);null==A&&(A=f);null==A&&0==k&&(A=t?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(u.getSvg(null,null,p,v,null,l,null,null,null,n,null,t,z,y),mxUtils.bind(this,function(c){try{var f=new Image;f.onload=mxUtils.bind(this,function(){try{var l=
-function(){mxClient.IS_SF?window.setTimeout(function(){v.drawImage(f,0,0);b(k,c)},0):(v.drawImage(f,0,0),b(k,c))},k=document.createElement("canvas"),n=parseInt(c.getAttribute("width")),q=parseInt(c.getAttribute("height"));m=null!=m?m:1;null!=d&&(m=g?Math.min(1,Math.min(3*d/(4*q),d/n)):d/n);m=this.getMaxCanvasScale(n,q,m);n=Math.ceil(m*n);q=Math.ceil(m*q);k.setAttribute("width",n);k.setAttribute("height",q);var v=k.getContext("2d");null!=A&&(v.beginPath(),v.rect(0,0,n,q),v.fillStyle=A,v.fill());1!=
-m&&v.scale(m,m);if(x){var t=u.view,z=t.scale;t.scale=1;var y=btoa(unescape(encodeURIComponent(t.createSvgGrid(t.gridColor))));t.scale=z;var y="data:image/svg+xml;base64,"+y,G=u.gridSize*t.gridSteps*m,C=u.getGraphBounds(),I=t.translate.x*z,N=t.translate.y*z,D=I+(C.x-I)/z-p,M=N+(C.y-N)/z-p,S=new Image;S.onload=function(){try{for(var b=-Math.round(G-mxUtils.mod((I-D)*m,G)),d=-Math.round(G-mxUtils.mod((N-M)*m,G));b<n;b+=G)for(var c=d;c<q;c+=G)v.drawImage(S,b/m,c/m);l()}catch(wa){null!=e&&e(wa)}};S.onerror=
-function(b){null!=e&&e(b)};S.src=y}else l()}catch(Aa){null!=e&&e(Aa)}});f.onerror=function(b){null!=e&&e(b)};n&&this.graph.addSvgShadow(c);this.graph.mathEnabled&&this.addMathCss(c);var l=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(c,this.resolvedFontCss),f.src=Editor.createSvgDataUri(mxUtils.getXml(c))}catch(ia){null!=e&&e(ia)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(c,b),this.loadFonts(l)}catch(da){null!=e&&e(da)}}))}catch(ia){null!=
-e&&e(ia)}}),c,q)}catch(ma){null!=e&&e(ma)}};Editor.crcTable=[];for(var g=0;256>g;g++)for(var p=g,t=0;8>t;t++)p=1==(p&1)?3988292384^p>>>1:p>>>1,Editor.crcTable[g]=p;Editor.updateCRC=function(b,d,c,f){for(var e=0;e<f;e++)b=Editor.crcTable[(b^d.charCodeAt(c+e))&255]^b>>>8;return b};Editor.crc32=function(b){for(var d=-1,c=0;c<b.length;c++)d=d>>>8^Editor.crcTable[(d^b.charCodeAt(c))&255];return(d^-1)>>>0};Editor.writeGraphModelToPng=function(b,d,c,f,e){function g(b,d){var c=k;k+=d;return b.substring(c,
-k)}function l(b){b=g(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}function m(b){return String.fromCharCode(b>>24&255,b>>16&255,b>>8&255,b&255)}b=b.substring(b.indexOf(",")+1);b=window.atob?atob(b):Base64.decode(b,!0);var k=0;if(g(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(g(b,4),"IHDR"!=g(b,4))null!=e&&e();else{g(b,17);e=b.substring(0,k);do{var n=l(b);if("IDAT"==g(b,4)){e=b.substring(0,k-8);"pHYs"==d&&
-"dpi"==c?(c=Math.round(f/.0254),c=m(c)+m(c)+String.fromCharCode(1)):c=c+String.fromCharCode(0)+("zTXt"==d?String.fromCharCode(0):"")+f;f=4294967295;f=Editor.updateCRC(f,d,0,4);f=Editor.updateCRC(f,c,0,c.length);e+=m(c.length)+d+c+m(f^4294967295);e+=b.substring(k-8,b.length);break}e+=b.substring(k-8,k-4+n);g(b,n);g(b,4)}while(n);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";
-var d=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(b,c){d.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var f=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){f.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(b,d){var c=null;null!=b.editor.graph.getModel().getParent(d)?c=d.getId():null!=b.currentPage&&
+(c=PROXY_URL+"?url="+encodeURIComponent(b));this.loadUrl(c,mxUtils.bind(this,function(d){this.cachedFonts[b]=d;g--;e()}),mxUtils.bind(this,function(b){g--;e()}),!0,null,"data:"+d+";charset=utf-8;base64,")}})(Editor.trimCssUrl(c[f].substring(0,l)),m)}e()}else d(b)};Editor.prototype.loadFonts=function(b){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(d){this.resolvedFontCss=d;null!=b&&b()})):null!=b&&b()};Editor.prototype.embedExtFonts=function(b){var d=
+this.graph.getCustomFonts();if(0<d.length){var c="",g=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts={});for(var e=mxUtils.bind(this,function(){0==g&&this.embedCssFonts(c,b)}),f=0;f<d.length;f++)mxUtils.bind(this,function(b,d){Graph.isCssFontUrl(d)?null==this.cachedGoogleFonts[d]?(g++,this.loadUrl(d,mxUtils.bind(this,function(b){this.cachedGoogleFonts[d]=b;c+=b;g--;e()}),mxUtils.bind(this,function(b){g--;c+="@import url("+d+");";e()}))):c+=this.cachedGoogleFonts[d]:c+='@font-face {font-family: "'+
+b+'";src: url("'+d+'")}'})(d[f].name,d[f].url);e()}else b()};Editor.prototype.addMathCss=function(b){b=b.getElementsByTagName("defs");if(null!=b&&0<b.length)for(var d=document.getElementsByTagName("style"),c=0;c<d.length;c++)0<mxUtils.getTextContent(d[c]).indexOf("MathJax")&&b[0].appendChild(d[c].cloneNode(!0))};Editor.prototype.addFontCss=function(b,d){d=null!=d?d:this.absoluteCssFonts(this.fontCss);if(null!=d){var c=b.getElementsByTagName("defs"),g=b.ownerDocument;0==c.length?(c=null!=g.createElementNS?
+g.createElementNS(mxConstants.NS_SVG,"defs"):g.createElement("defs"),null!=b.firstChild?b.insertBefore(c,b.firstChild):b.appendChild(c)):c=c[0];g=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"style"):g.createElement("style");g.setAttribute("type","text/css");mxUtils.setTextContent(g,d);c.appendChild(g)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(b,d,c){var g=mxClient.IS_FF?8192:16384;
+return Math.min(c,Math.min(g/b,g/d))};Editor.prototype.exportToCanvas=function(b,d,c,g,e,f,l,m,k,n,q,u,v,p,x,t,z,y){try{f=null!=f?f:!0;l=null!=l?l:!0;u=null!=u?u:this.graph;v=null!=v?v:0;var G=k?null:u.background;G==mxConstants.NONE&&(G=null);null==G&&(G=g);null==G&&0==k&&(G=t?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(u.getSvg(null,null,v,p,null,l,null,null,null,n,null,t,z,y),mxUtils.bind(this,function(c){try{var g=new Image;g.onload=mxUtils.bind(this,function(){try{var l=
+function(){mxClient.IS_SF?window.setTimeout(function(){p.drawImage(g,0,0);b(k,c)},0):(p.drawImage(g,0,0),b(k,c))},k=document.createElement("canvas"),n=parseInt(c.getAttribute("width")),q=parseInt(c.getAttribute("height"));m=null!=m?m:1;null!=d&&(m=f?Math.min(1,Math.min(3*d/(4*q),d/n)):d/n);m=this.getMaxCanvasScale(n,q,m);n=Math.ceil(m*n);q=Math.ceil(m*q);k.setAttribute("width",n);k.setAttribute("height",q);var p=k.getContext("2d");null!=G&&(p.beginPath(),p.rect(0,0,n,q),p.fillStyle=G,p.fill());1!=
+m&&p.scale(m,m);if(x){var t=u.view,z=t.scale;t.scale=1;var y=btoa(unescape(encodeURIComponent(t.createSvgGrid(t.gridColor))));t.scale=z;var y="data:image/svg+xml;base64,"+y,B=u.gridSize*t.gridSteps*m,C=u.getGraphBounds(),I=t.translate.x*z,L=t.translate.y*z,D=I+(C.x-I)/z-v,M=L+(C.y-L)/z-v,S=new Image;S.onload=function(){try{for(var b=-Math.round(B-mxUtils.mod((I-D)*m,B)),d=-Math.round(B-mxUtils.mod((L-M)*m,B));b<n;b+=B)for(var c=d;c<q;c+=B)p.drawImage(S,b/m,c/m);l()}catch(wa){null!=e&&e(wa)}};S.onerror=
+function(b){null!=e&&e(b)};S.src=y}else l()}catch(Aa){null!=e&&e(Aa)}});g.onerror=function(b){null!=e&&e(b)};n&&this.graph.addSvgShadow(c);this.graph.mathEnabled&&this.addMathCss(c);var l=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(c,this.resolvedFontCss),g.src=Editor.createSvgDataUri(mxUtils.getXml(c))}catch(ia){null!=e&&e(ia)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(c,b),this.loadFonts(l)}catch(da){null!=e&&e(da)}}))}catch(ia){null!=
+e&&e(ia)}}),c,q)}catch(ma){null!=e&&e(ma)}};Editor.crcTable=[];for(var f=0;256>f;f++)for(var p=f,t=0;8>t;t++)p=1==(p&1)?3988292384^p>>>1:p>>>1,Editor.crcTable[f]=p;Editor.updateCRC=function(b,d,c,g){for(var e=0;e<g;e++)b=Editor.crcTable[(b^d.charCodeAt(c+e))&255]^b>>>8;return b};Editor.crc32=function(b){for(var d=-1,c=0;c<b.length;c++)d=d>>>8^Editor.crcTable[(d^b.charCodeAt(c))&255];return(d^-1)>>>0};Editor.writeGraphModelToPng=function(b,d,c,g,e){function f(b,d){var c=k;k+=d;return b.substring(c,
+k)}function l(b){b=f(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}function m(b){return String.fromCharCode(b>>24&255,b>>16&255,b>>8&255,b&255)}b=b.substring(b.indexOf(",")+1);b=window.atob?atob(b):Base64.decode(b,!0);var k=0;if(f(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(f(b,4),"IHDR"!=f(b,4))null!=e&&e();else{f(b,17);e=b.substring(0,k);do{var n=l(b);if("IDAT"==f(b,4)){e=b.substring(0,k-8);"pHYs"==d&&
+"dpi"==c?(c=Math.round(g/.0254),c=m(c)+m(c)+String.fromCharCode(1)):c=c+String.fromCharCode(0)+("zTXt"==d?String.fromCharCode(0):"")+g;g=4294967295;g=Editor.updateCRC(g,d,0,4);g=Editor.updateCRC(g,c,0,c.length);e+=m(c.length)+d+c+m(g^4294967295);e+=b.substring(k-8,b.length);break}e+=b.substring(k-8,k-4+n);f(b,n);f(b,4)}while(n);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";
+var d=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(b,c){d.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var g=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){g.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(b,d){var c=null;null!=b.editor.graph.getModel().getParent(d)?c=d.getId():null!=b.currentPage&&
(c=b.currentPage.getId());return c});if(null!=window.StyleFormatPanel){var l=Format.prototype.init;Format.prototype.init=function(){l.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var q=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?q.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var b=this.editorUi.getCurrentFile();
-return"1"==urlParams.embed||null!=b&&b.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(b){return!1};var m=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(b){b=m.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var d=this.editorUi,c=d.editor.graph,f=this.createOption(mxResources.get("shadow"),function(){return c.shadowVisible},function(b){var f=new ChangePageSetup(d);f.ignoreColor=!0;f.ignoreImage=
-!0;f.shadowVisible=b;c.model.execute(f)},{install:function(b){this.listener=function(){b(c.shadowVisible)};d.addListener("shadowVisibleChanged",this.listener)},destroy:function(){d.removeListener(this.listener)}});Editor.enableShadowOption||(f.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(f,60));b.appendChild(f)}return b};var n=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(b){b=n.apply(this,arguments);var d=this.editorUi,
-c=d.editor.graph;if(c.isEnabled()){var f=d.getCurrentFile();if(null!=f&&f.isAutosaveOptional()){var e=this.createOption(mxResources.get("autosave"),function(){return d.editor.autosave},function(b){d.editor.setAutosave(b);d.editor.autosave&&f.isModified()&&f.fileChanged()},{install:function(b){this.listener=function(){b(d.editor.autosave)};d.editor.addListener("autosaveChanged",this.listener)},destroy:function(){d.editor.removeListener(this.listener)}});b.appendChild(e)}}if(this.isMathOptionVisible()&&
-c.isEnabled()&&"undefined"!==typeof MathJax){e=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return c.mathEnabled},function(b){d.actions.get("mathematicalTypesetting").funct()},{install:function(b){this.listener=function(){b(c.mathEnabled)};d.addListener("mathEnabledChanged",this.listener)},destroy:function(){d.removeListener(this.listener)}});e.style.paddingTop="5px";b.appendChild(e);var g=d.menus.createHelpLink("https://www.diagrams.net/doc/faq/math-typesetting");g.style.position=
-"relative";g.style.marginLeft="6px";g.style.top="2px";e.appendChild(g)}return b};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=
+return"1"==urlParams.embed||null!=b&&b.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(b){return!1};var m=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(b){b=m.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var d=this.editorUi,c=d.editor.graph,g=this.createOption(mxResources.get("shadow"),function(){return c.shadowVisible},function(b){var g=new ChangePageSetup(d);g.ignoreColor=!0;g.ignoreImage=
+!0;g.shadowVisible=b;c.model.execute(g)},{install:function(b){this.listener=function(){b(c.shadowVisible)};d.addListener("shadowVisibleChanged",this.listener)},destroy:function(){d.removeListener(this.listener)}});Editor.enableShadowOption||(g.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(g,60));b.appendChild(g)}return b};var n=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(b){b=n.apply(this,arguments);var d=this.editorUi,
+c=d.editor.graph;if(c.isEnabled()){var g=d.getCurrentFile();if(null!=g&&g.isAutosaveOptional()){var e=this.createOption(mxResources.get("autosave"),function(){return d.editor.autosave},function(b){d.editor.setAutosave(b);d.editor.autosave&&g.isModified()&&g.fileChanged()},{install:function(b){this.listener=function(){b(d.editor.autosave)};d.editor.addListener("autosaveChanged",this.listener)},destroy:function(){d.editor.removeListener(this.listener)}});b.appendChild(e)}}if(this.isMathOptionVisible()&&
+c.isEnabled()&&"undefined"!==typeof MathJax){e=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return c.mathEnabled},function(b){d.actions.get("mathematicalTypesetting").funct()},{install:function(b){this.listener=function(){b(c.mathEnabled)};d.addListener("mathEnabledChanged",this.listener)},destroy:function(){d.removeListener(this.listener)}});e.style.paddingTop="5px";b.appendChild(e);var f=d.menus.createHelpLink("https://www.diagrams.net/doc/faq/math-typesetting");f.style.position=
+"relative";f.style.marginLeft="6px";f.style.top="2px";e.appendChild(f)}return b};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=
[{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=[{name:"size",dispName:"Indent",type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double",
dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",type:"bool",defVal:!0},{name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.triangle.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE}];mxCellRenderer.defaultShapes.document.prototype.customProperties=
@@ -3245,89 +3256,87 @@ type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.offPageConnector.pro
stroke:"#6c8ebf"},{fill:"#d5e8d4",stroke:"#82b366"},{fill:"#ffe6cc",stroke:"#d79b00"},{fill:"#fff2cc",stroke:"#d6b656"},{fill:"#f8cecc",stroke:"#b85450"},{fill:"#e1d5e7",stroke:"#9673a6"}],[{fill:"",stroke:""},{fill:"#60a917",stroke:"#2D7600",font:"#ffffff"},{fill:"#008a00",stroke:"#005700",font:"#ffffff"},{fill:"#1ba1e2",stroke:"#006EAF",font:"#ffffff"},{fill:"#0050ef",stroke:"#001DBC",font:"#ffffff"},{fill:"#6a00ff",stroke:"#3700CC",font:"#ffffff"},{fill:"#d80073",stroke:"#A50040",font:"#ffffff"},
{fill:"#a20025",stroke:"#6F0000",font:"#ffffff"}],[{fill:"#e51400",stroke:"#B20000",font:"#ffffff"},{fill:"#fa6800",stroke:"#C73500",font:"#000000"},{fill:"#f0a30a",stroke:"#BD7000",font:"#000000"},{fill:"#e3c800",stroke:"#B09500",font:"#000000"},{fill:"#6d8764",stroke:"#3A5431",font:"#ffffff"},{fill:"#647687",stroke:"#314354",font:"#ffffff"},{fill:"#76608a",stroke:"#432D57",font:"#ffffff"},{fill:"#a0522d",stroke:"#6D1F00",font:"#ffffff"}],[{fill:"",stroke:""},{fill:mxConstants.NONE,stroke:""},{fill:"#fad7ac",
stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8088"},{fill:"#b1ddf0",stroke:"#10739e"},{fill:"#d0cee2",stroke:"#56517e"},{fill:"#bac8d3",stroke:"#23445d"}],[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",gradient:"#b3b3b3"},{fill:"#dae8fc",stroke:"#6c8ebf",gradient:"#7ea6e0"},{fill:"#d5e8d4",stroke:"#82b366",gradient:"#97d077"},{fill:"#ffcd28",stroke:"#d79b00",gradient:"#ffa500"},{fill:"#fff2cc",stroke:"#d6b656",gradient:"#ffd966"},{fill:"#f8cecc",stroke:"#b85450",
-gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill:"",stroke:""},{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(b,d,c){if(null!=d){var f=function(b){if(null!=b)if(c)for(var f=
-0;f<b.length;f++)d[b[f].name]=b[f];else for(var e in d){for(var g=!1,f=0;f<b.length;f++)if(b[f].name==e&&b[f].type==d[e].type){g=!0;break}g||delete d[e]}},e=this.editorUi.editor.graph.view.getState(b);null!=e&&null!=e.shape&&(e.shape.commonCustomPropAdded||(e.shape.commonCustomPropAdded=!0,e.shape.customProperties=e.shape.customProperties||[],e.cell.vertex?Array.prototype.push.apply(e.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(e.shape.customProperties,Editor.commonEdgeProperties)),
-f(e.shape.customProperties));b=b.getAttribute("customProperties");if(null!=b)try{f(JSON.parse(b))}catch(Q){}}};var u=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var b=this.format.getSelectionState();"image"!=b.style.shape&&!b.containsLabel&&0<b.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));u.apply(this,arguments);if(Editor.enableCustomProperties){for(var d={},c=b.vertices,f=b.edges,e=0;e<c.length;e++)this.findCommonProperties(c[e],d,0==
-e);for(e=0;e<f.length;e++)this.findCommonProperties(f[e],d,0==c.length&&0==e);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(d).length&&this.container.appendChild(this.addProperties(this.createPanel(),d,b))}};var v=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(b){var d=this.format.getSelectionState(),c=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(b){this.editorUi.actions.get("copyStyle").funct()}));c.setAttribute("title",
-mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");c.style.marginBottom="2px";c.style.width="104px";c.style.marginRight="2px";b.appendChild(c);0<d.cells.length?(c=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(b){this.editorUi.actions.get("pasteStyle").funct()})),c.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")"),c.style.marginBottom="2px",c.style.width="104px",b.appendChild(c)):
-c.style.width="210px";mxUtils.br(b);return v.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(b,d,c){function f(b,d,c,f){u.getModel().beginUpdate();try{var e=[],g=[];if(null!=c.index){for(var l=[],m=c.parentRow.nextSibling;m&&m.getAttribute("data-pName")==b;)l.push(m.getAttribute("data-pValue")),m=m.nextSibling;c.index<l.length?null!=f?l.splice(f,1):l[c.index]=d:l.push(d);null!=c.size&&l.length>c.size&&(l=l.slice(0,c.size));d=l.join(",");
-null!=c.countProperty&&(u.setCellStyles(c.countProperty,l.length,u.getSelectionCells()),e.push(c.countProperty),g.push(l.length))}u.setCellStyles(b,d,u.getSelectionCells());e.push(b);g.push(d);if(null!=c.dependentProps)for(b=0;b<c.dependentProps.length;b++){var k=c.dependentPropsDefVal[b],n=c.dependentPropsVals[b];if(n.length>d)n=n.slice(0,d);else for(var x=n.length;x<d;x++)n.push(k);n=n.join(",");u.setCellStyles(c.dependentProps[b],n,u.getSelectionCells());e.push(c.dependentProps[b]);g.push(n)}if("function"==
-typeof c.onChange)c.onChange(u,d);q.editorUi.fireEvent(new mxEventObject("styleChanged","keys",e,"values",g,"cells",u.getSelectionCells()))}finally{u.getModel().endUpdate()}}function e(d,c,f){var e=mxUtils.getOffset(b,!0),g=mxUtils.getOffset(d,!0);c.style.position="absolute";c.style.left=g.x-e.x+"px";c.style.top=g.y-e.y+"px";c.style.width=d.offsetWidth+"px";c.style.height=d.offsetHeight-(f?4:0)+"px";c.style.zIndex=5}function g(b,d,c){var e=document.createElement("div");e.style.width="32px";e.style.height=
-"4px";e.style.margin="2px";e.style.border="1px solid black";e.style.background=d&&"none"!=d?d:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(q,function(g){this.editorUi.pickColor(d,function(d){e.style.background="none"==d?"url('"+Dialog.prototype.noColorImage+"')":d;f(b,d,c)});mxEvent.consume(g)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(e);return btn}function l(b,d,c,e,g,l,m){null!=d&&(d=d.split(","),p.push({name:b,
-values:d,type:c,defVal:e,countProperty:g,parentRow:l,isDeletable:!0,flipBkg:m}));btn=mxUtils.button("+",mxUtils.bind(q,function(d){for(var k=l,q=0;null!=k.nextSibling;)if(k.nextSibling.getAttribute("data-pName")==b)k=k.nextSibling,q++;else break;var u={type:c,parentRow:l,index:q,isDeletable:!0,defVal:e,countProperty:g},q=n(b,"",u,0==q%2,m);f(b,e,u);k.parentNode.insertBefore(q,k.nextSibling);mxEvent.consume(d)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}
-function m(b,d,c,f,e,g,l){if(0<e){var m=Array(e);d=null!=d?d.split(","):[];for(var k=0;k<e;k++)m[k]=null!=d[k]?d[k]:null!=f?f:"";p.push({name:b,values:m,type:c,defVal:f,parentRow:g,flipBkg:l,size:e})}return document.createElement("div")}function k(b,d,c){var e=document.createElement("input");e.type="checkbox";e.checked="1"==d;mxEvent.addListener(e,"change",function(){f(b,e.checked?"1":"0",c)});return e}function n(d,c,n,u,x){var p=n.dispName,v=n.type,t=document.createElement("tr");t.className="gePropRow"+
-(x?"Dark":"")+(u?"Alt":"")+" gePropNonHeaderRow";t.setAttribute("data-pName",d);t.setAttribute("data-pValue",c);u=!1;null!=n.index&&(t.setAttribute("data-index",n.index),p=(null!=p?p:"")+"["+n.index+"]",u=!0);var z=document.createElement("td");z.className="gePropRowCell";p=mxResources.get(p,null,p);mxUtils.write(z,p);z.setAttribute("title",p);u&&(z.style.textAlign="right");t.appendChild(z);z=document.createElement("td");z.className="gePropRowCell";if("color"==v)z.appendChild(g(d,c,n));else if("bool"==
-v||"boolean"==v)z.appendChild(k(d,c,n));else if("enum"==v){var y=n.enumList;for(x=0;x<y.length;x++)if(p=y[x],p.val==c){mxUtils.write(z,mxResources.get(p.dispName,null,p.dispName));break}mxEvent.addListener(z,"click",mxUtils.bind(q,function(){var g=document.createElement("select");e(z,g);for(var l=0;l<y.length;l++){var m=y[l],k=document.createElement("option");k.value=mxUtils.htmlEntities(m.val);mxUtils.write(k,mxResources.get(m.dispName,null,m.dispName));g.appendChild(k)}g.value=c;b.appendChild(g);
-mxEvent.addListener(g,"change",function(){var b=mxUtils.htmlEntities(g.value);f(d,b,n)});g.focus();mxEvent.addListener(g,"blur",function(){b.removeChild(g)})}))}else"dynamicArr"==v?z.appendChild(l(d,c,n.subType,n.subDefVal,n.countProperty,t,x)):"staticArr"==v?z.appendChild(m(d,c,n.subType,n.subDefVal,n.size,t,x)):"readOnly"==v?(x=document.createElement("input"),x.setAttribute("readonly",""),x.value=c,x.style.width="96px",x.style.borderWidth="0px",z.appendChild(x)):(z.innerHTML=c,mxEvent.addListener(z,
-"click",mxUtils.bind(q,function(){function g(){var b=l.value,b=0==b.length&&"string"!=v?0:b;n.allowAuto&&(null!=b.trim&&"auto"==b.trim().toLowerCase()?(b="auto",v="string"):(b=parseFloat(b),b=isNaN(b)?0:b));null!=n.min&&b<n.min?b=n.min:null!=n.max&&b>n.max&&(b=n.max);b=mxUtils.htmlEntities(("int"==v?parseInt(b):b)+"");f(d,b,n)}var l=document.createElement("input");e(z,l,!0);l.value=c;l.className="gePropEditor";"int"!=v&&"float"!=v||n.allowAuto||(l.type="number",l.step="int"==v?"1":"any",null!=n.min&&
-(l.min=parseFloat(n.min)),null!=n.max&&(l.max=parseFloat(n.max)));b.appendChild(l);mxEvent.addListener(l,"keypress",function(b){13==b.keyCode&&g()});l.focus();mxEvent.addListener(l,"blur",function(){g()})})));n.isDeletable&&(x=mxUtils.button("-",mxUtils.bind(q,function(b){f(d,"",n,n.index);mxEvent.consume(b)})),x.style.height="16px",x.style.width="25px",x.style["float"]="right",x.className="geColorBtn",z.appendChild(x));t.appendChild(z);return t}var q=this,u=this.editorUi.editor.graph,p=[];b.style.position=
-"relative";b.style.padding="0";var v=document.createElement("table");v.className="geProperties";v.style.whiteSpace="nowrap";v.style.width="100%";var x=document.createElement("tr");x.className="gePropHeader";var t=document.createElement("th");t.className="gePropHeaderCell";var z=document.createElement("img");z.src=Sidebar.prototype.expandedImage;z.style.verticalAlign="middle";t.appendChild(z);mxUtils.write(t,mxResources.get("property"));x.style.cursor="pointer";var y=function(){var d=v.querySelectorAll(".gePropNonHeaderRow"),
-c;if(q.editorUi.propertiesCollapsed){z.src=Sidebar.prototype.collapsedImage;c="none";for(var f=b.childNodes.length-1;0<=f;f--)try{var e=b.childNodes[f],g=e.nodeName.toUpperCase();"INPUT"!=g&&"SELECT"!=g||b.removeChild(e)}catch(pa){}}else z.src=Sidebar.prototype.expandedImage,c="";for(f=0;f<d.length;f++)d[f].style.display=c};mxEvent.addListener(x,"click",function(){q.editorUi.propertiesCollapsed=!q.editorUi.propertiesCollapsed;y()});x.appendChild(t);t=document.createElement("th");t.className="gePropHeaderCell";
-t.innerHTML=mxResources.get("value");x.appendChild(t);v.appendChild(x);var A=!1,G=!1,x=null;1==c.vertices.length&&0==c.edges.length?x=c.vertices[0].id:0==c.vertices.length&&1==c.edges.length&&(x=c.edges[0].id);null!=x&&v.appendChild(n("id",mxUtils.htmlEntities(x),{dispName:"ID",type:"readOnly"},!0,!1));for(var C in d)if(x=d[C],"function"!=typeof x.isVisible||x.isVisible(c,this)){var N=null!=c.style[C]?mxUtils.htmlEntities(c.style[C]+""):null!=x.getDefaultValue?x.getDefaultValue(c,this):x.defVal;if("separator"==
-x.type)G=!G;else{if("staticArr"==x.type)x.size=parseInt(c.style[x.sizeProperty]||d[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var I=x.dependentProps,D=[],M=[],t=0;t<I.length;t++){var F=c.style[I[t]];M.push(d[I[t]].subDefVal);D.push(null!=F?F.split(","):[])}x.dependentPropsDefVal=M;x.dependentPropsVals=D}v.appendChild(n(C,N,x,A,G));A=!A}}for(t=0;t<p.length;t++)for(x=p[t],d=x.parentRow,c=0;c<x.values.length;c++)C=n(x.name,x.values[c],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,
-index:c,defVal:x.defVal,countProperty:x.countProperty,size:x.size},0==c%2,x.flipBkg),d.parentNode.insertBefore(C,d.nextSibling),d=C;b.appendChild(v);y();return b};StyleFormatPanel.prototype.addStyles=function(b){function d(b){mxEvent.addListener(b,"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var c=this.editorUi.editor.graph,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.paddingLeft="24px";f.style.paddingRight=
-"20px";b.style.paddingLeft="16px";b.style.paddingBottom="6px";b.style.position="relative";b.appendChild(f);var e="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "),g=document.createElement("div");g.style.whiteSpace="nowrap";g.style.position="relative";g.style.textAlign="center";g.style.width="210px";for(var l=[],m=0;m<this.defaultColorSchemes.length;m++){var k=document.createElement("div");
-k.style.display="inline-block";k.style.width="6px";k.style.height="6px";k.style.marginLeft="4px";k.style.marginRight="3px";k.style.borderRadius="3px";k.style.cursor="pointer";k.style.background="transparent";k.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(b){mxEvent.addListener(k,"click",mxUtils.bind(this,function(){n(b)}))})(m);l.push(k);g.appendChild(k)}var n=mxUtils.bind(this,function(b){null!=l[b]&&(null!=this.format.currentScheme&&null!=l[this.format.currentScheme]&&(l[this.format.currentScheme].style.background=
-"transparent"),this.format.currentScheme=b,q(this.defaultColorSchemes[this.format.currentScheme]),l[this.format.currentScheme].style.background="#84d7ff")}),q=mxUtils.bind(this,function(b){var d=mxUtils.bind(this,function(b){var d=mxUtils.button("",mxUtils.bind(this,function(d){c.getModel().beginUpdate();try{for(var f=this.format.getSelectionState().cells,g=0;g<f.length;g++){for(var l=c.getModel().getStyle(f[g]),m=0;m<e.length;m++)l=mxUtils.removeStylename(l,e[m]);var k=c.getModel().isVertex(f[g])?
-c.defaultVertexStyle:c.defaultEdgeStyle;null!=b?(mxEvent.isShiftDown(d)||(l=""==b.fill?mxUtils.setStyle(l,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(l,mxConstants.STYLE_FILLCOLOR,b.fill||mxUtils.getValue(k,mxConstants.STYLE_FILLCOLOR,null)),l=mxUtils.setStyle(l,mxConstants.STYLE_GRADIENTCOLOR,b.gradient||mxUtils.getValue(k,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(d)||mxClient.IS_MAC&&mxEvent.isMetaDown(d)||!c.getModel().isVertex(f[g])||(l=mxUtils.setStyle(l,mxConstants.STYLE_FONTCOLOR,
-b.font||mxUtils.getValue(k,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(d)||(l=""==b.stroke?mxUtils.setStyle(l,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(l,mxConstants.STYLE_STROKECOLOR,b.stroke||mxUtils.getValue(k,mxConstants.STYLE_STROKECOLOR,null)))):(l=mxUtils.setStyle(l,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(k,mxConstants.STYLE_FILLCOLOR,"#ffffff")),l=mxUtils.setStyle(l,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(k,mxConstants.STYLE_STROKECOLOR,"#000000")),l=mxUtils.setStyle(l,
-mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(k,mxConstants.STYLE_GRADIENTCOLOR,null)),c.getModel().isVertex(f[g])&&(l=mxUtils.setStyle(l,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(k,mxConstants.STYLE_FONTCOLOR,null))));c.getModel().setStyle(f[g],l)}}finally{c.getModel().endUpdate()}}));d.className="geStyleButton";d.style.width="36px";d.style.height=10>=this.defaultColorSchemes.length?"24px":"30px";d.style.margin="0px 6px 6px 0px";if(null!=b){var g="1"==urlParams.sketch?"2px solid":"1px solid";
-null!=b.gradient?mxClient.IS_IE&&10>document.documentMode?d.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+b.fill+"', EndColorStr='"+b.gradient+"', GradientType=0)":d.style.backgroundImage="linear-gradient("+b.fill+" 0px,"+b.gradient+" 100%)":b.fill==mxConstants.NONE?d.style.background="url('"+Dialog.prototype.noColorImage+"')":d.style.backgroundColor=""==b.fill?mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):
-b.fill||mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");d.style.border=b.stroke==mxConstants.NONE?g+" transparent":""==b.stroke?g+" "+mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor):g+" "+(b.stroke||mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=b.title&&d.setAttribute("title",b.title)}else{var g=
-mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),l=mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");d.style.backgroundColor=g;d.style.border="1px solid "+l}d.style.borderRadius="0";f.appendChild(d)});f.innerHTML="";for(var g=0;g<b.length;g++)0<g&&0==mxUtils.mod(g,4)&&mxUtils.br(f),d(b[g])});null==this.format.currentScheme?n(Editor.isDarkMode()?1:"1"==urlParams.sketch?5:0):n(this.format.currentScheme);var m=10>=this.defaultColorSchemes.length?
-28:8,u=document.createElement("div");u.style.cssText="position:absolute;left:10px;top:8px;bottom:"+m+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";mxEvent.addListener(u,
-"click",mxUtils.bind(this,function(){n(mxUtils.mod(this.format.currentScheme-1,this.defaultColorSchemes.length))}));var x=document.createElement("div");x.style.cssText="position:absolute;left:202px;top:8px;bottom:"+m+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";
-1<this.defaultColorSchemes.length&&(b.appendChild(u),b.appendChild(x));mxEvent.addListener(x,"click",mxUtils.bind(this,function(){n(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));d(u);d(x);q(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&b.appendChild(g);return b};StyleFormatPanel.prototype.addEditOps=function(b){var d=this.format.getSelectionState(),c=null;1==d.cells.length&&(c=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,
-function(b){this.editorUi.actions.get("editStyle").funct()})),c.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),c.style.width="210px",c.style.marginBottom="2px",b.appendChild(c));var f=this.editorUi.editor.graph,f=1==d.cells.length?f.view.getState(d.cells[0]):null;null!=f&&null!=f.shape&&null!=f.shape.stencil?(d=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(b){this.editorUi.actions.get("editShape").funct()})),d.setAttribute("title",
-mxResources.get("editShape")),d.style.marginBottom="2px",null==c?d.style.width="210px":(c.style.width="104px",d.style.width="104px",d.style.marginLeft="2px"),b.appendChild(d)):d.image&&0<d.cells.length&&(d=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(b){this.editorUi.actions.get("image").funct()})),d.setAttribute("title",mxResources.get("editImage")),d.style.marginBottom="2px",null==c?d.style.width="210px":(c.style.width="104px",d.style.width="104px",d.style.marginLeft="2px"),
+gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill:"",stroke:""},{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(b,d,c){if(null!=d){var g=function(b){if(null!=b)if(c)for(var g=
+0;g<b.length;g++)d[b[g].name]=b[g];else for(var e in d){for(var f=!1,g=0;g<b.length;g++)if(b[g].name==e&&b[g].type==d[e].type){f=!0;break}f||delete d[e]}},e=this.editorUi.editor.graph.view.getState(b);null!=e&&null!=e.shape&&(e.shape.commonCustomPropAdded||(e.shape.commonCustomPropAdded=!0,e.shape.customProperties=e.shape.customProperties||[],e.cell.vertex?Array.prototype.push.apply(e.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(e.shape.customProperties,Editor.commonEdgeProperties)),
+g(e.shape.customProperties));b=b.getAttribute("customProperties");if(null!=b)try{g(JSON.parse(b))}catch(Q){}}};var u=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var b=this.editorUi.getSelectionState();"image"!=b.style.shape&&!b.containsLabel&&0<b.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));u.apply(this,arguments);if(Editor.enableCustomProperties){for(var d={},c=b.vertices,g=b.edges,e=0;e<c.length;e++)this.findCommonProperties(c[e],d,
+0==e);for(e=0;e<g.length;e++)this.findCommonProperties(g[e],d,0==c.length&&0==e);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(d).length&&this.container.appendChild(this.addProperties(this.createPanel(),d,b))}};var v=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(b){this.addActions(b,["copyStyle","pasteStyle"]);return v.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(b,d,c){function g(b,
+d,c,g){u.getModel().beginUpdate();try{var e=[],f=[];if(null!=c.index){for(var l=[],m=c.parentRow.nextSibling;m&&m.getAttribute("data-pName")==b;)l.push(m.getAttribute("data-pValue")),m=m.nextSibling;c.index<l.length?null!=g?l.splice(g,1):l[c.index]=d:l.push(d);null!=c.size&&l.length>c.size&&(l=l.slice(0,c.size));d=l.join(",");null!=c.countProperty&&(u.setCellStyles(c.countProperty,l.length,u.getSelectionCells()),e.push(c.countProperty),f.push(l.length))}u.setCellStyles(b,d,u.getSelectionCells());
+e.push(b);f.push(d);if(null!=c.dependentProps)for(b=0;b<c.dependentProps.length;b++){var k=c.dependentPropsDefVal[b],n=c.dependentPropsVals[b];if(n.length>d)n=n.slice(0,d);else for(var p=n.length;p<d;p++)n.push(k);n=n.join(",");u.setCellStyles(c.dependentProps[b],n,u.getSelectionCells());e.push(c.dependentProps[b]);f.push(n)}if("function"==typeof c.onChange)c.onChange(u,d);q.editorUi.fireEvent(new mxEventObject("styleChanged","keys",e,"values",f,"cells",u.getSelectionCells()))}finally{u.getModel().endUpdate()}}
+function e(d,c,g){var e=mxUtils.getOffset(b,!0),f=mxUtils.getOffset(d,!0);c.style.position="absolute";c.style.left=f.x-e.x+"px";c.style.top=f.y-e.y+"px";c.style.width=d.offsetWidth+"px";c.style.height=d.offsetHeight-(g?4:0)+"px";c.style.zIndex=5}function f(b,d,c){var e=document.createElement("div");e.style.width="32px";e.style.height="4px";e.style.margin="2px";e.style.border="1px solid black";e.style.background=d&&"none"!=d?d:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(q,
+function(f){this.editorUi.pickColor(d,function(d){e.style.background="none"==d?"url('"+Dialog.prototype.noColorImage+"')":d;g(b,d,c)});mxEvent.consume(f)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(e);return btn}function l(b,d,c,e,f,l,m){null!=d&&(d=d.split(","),v.push({name:b,values:d,type:c,defVal:e,countProperty:f,parentRow:l,isDeletable:!0,flipBkg:m}));btn=mxUtils.button("+",mxUtils.bind(q,function(d){for(var k=l,q=0;null!=k.nextSibling;)if(k.nextSibling.getAttribute("data-pName")==
+b)k=k.nextSibling,q++;else break;var u={type:c,parentRow:l,index:q,isDeletable:!0,defVal:e,countProperty:f},q=n(b,"",u,0==q%2,m);g(b,e,u);k.parentNode.insertBefore(q,k.nextSibling);mxEvent.consume(d)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function m(b,d,c,g,e,f,l){if(0<e){var m=Array(e);d=null!=d?d.split(","):[];for(var k=0;k<e;k++)m[k]=null!=d[k]?d[k]:null!=g?g:"";v.push({name:b,values:m,type:c,defVal:g,parentRow:f,flipBkg:l,size:e})}return document.createElement("div")}
+function k(b,d,c){var e=document.createElement("input");e.type="checkbox";e.checked="1"==d;mxEvent.addListener(e,"change",function(){g(b,e.checked?"1":"0",c)});return e}function n(d,c,n,u,p){var v=n.dispName,x=n.type,t=document.createElement("tr");t.className="gePropRow"+(p?"Dark":"")+(u?"Alt":"")+" gePropNonHeaderRow";t.setAttribute("data-pName",d);t.setAttribute("data-pValue",c);u=!1;null!=n.index&&(t.setAttribute("data-index",n.index),v=(null!=v?v:"")+"["+n.index+"]",u=!0);var z=document.createElement("td");
+z.className="gePropRowCell";v=mxResources.get(v,null,v);mxUtils.write(z,v);z.setAttribute("title",v);u&&(z.style.textAlign="right");t.appendChild(z);z=document.createElement("td");z.className="gePropRowCell";if("color"==x)z.appendChild(f(d,c,n));else if("bool"==x||"boolean"==x)z.appendChild(k(d,c,n));else if("enum"==x){var y=n.enumList;for(p=0;p<y.length;p++)if(v=y[p],v.val==c){mxUtils.write(z,mxResources.get(v.dispName,null,v.dispName));break}mxEvent.addListener(z,"click",mxUtils.bind(q,function(){var f=
+document.createElement("select");e(z,f);for(var l=0;l<y.length;l++){var m=y[l],k=document.createElement("option");k.value=mxUtils.htmlEntities(m.val);mxUtils.write(k,mxResources.get(m.dispName,null,m.dispName));f.appendChild(k)}f.value=c;b.appendChild(f);mxEvent.addListener(f,"change",function(){var b=mxUtils.htmlEntities(f.value);g(d,b,n)});f.focus();mxEvent.addListener(f,"blur",function(){b.removeChild(f)})}))}else"dynamicArr"==x?z.appendChild(l(d,c,n.subType,n.subDefVal,n.countProperty,t,p)):"staticArr"==
+x?z.appendChild(m(d,c,n.subType,n.subDefVal,n.size,t,p)):"readOnly"==x?(p=document.createElement("input"),p.setAttribute("readonly",""),p.value=c,p.style.width="96px",p.style.borderWidth="0px",z.appendChild(p)):(z.innerHTML=c,mxEvent.addListener(z,"click",mxUtils.bind(q,function(){function f(){var b=l.value,b=0==b.length&&"string"!=x?0:b;n.allowAuto&&(null!=b.trim&&"auto"==b.trim().toLowerCase()?(b="auto",x="string"):(b=parseFloat(b),b=isNaN(b)?0:b));null!=n.min&&b<n.min?b=n.min:null!=n.max&&b>n.max&&
+(b=n.max);b=mxUtils.htmlEntities(("int"==x?parseInt(b):b)+"");g(d,b,n)}var l=document.createElement("input");e(z,l,!0);l.value=c;l.className="gePropEditor";"int"!=x&&"float"!=x||n.allowAuto||(l.type="number",l.step="int"==x?"1":"any",null!=n.min&&(l.min=parseFloat(n.min)),null!=n.max&&(l.max=parseFloat(n.max)));b.appendChild(l);mxEvent.addListener(l,"keypress",function(b){13==b.keyCode&&f()});l.focus();mxEvent.addListener(l,"blur",function(){f()})})));n.isDeletable&&(p=mxUtils.button("-",mxUtils.bind(q,
+function(b){g(d,"",n,n.index);mxEvent.consume(b)})),p.style.height="16px",p.style.width="25px",p.style["float"]="right",p.className="geColorBtn",z.appendChild(p));t.appendChild(z);return t}var q=this,u=this.editorUi.editor.graph,v=[];b.style.position="relative";b.style.padding="0";var p=document.createElement("table");p.className="geProperties";p.style.whiteSpace="nowrap";p.style.width="100%";var x=document.createElement("tr");x.className="gePropHeader";var t=document.createElement("th");t.className=
+"gePropHeaderCell";var z=document.createElement("img");z.src=Sidebar.prototype.expandedImage;z.style.verticalAlign="middle";t.appendChild(z);mxUtils.write(t,mxResources.get("property"));x.style.cursor="pointer";var y=function(){var d=p.querySelectorAll(".gePropNonHeaderRow"),c;if(q.editorUi.propertiesCollapsed){z.src=Sidebar.prototype.collapsedImage;c="none";for(var g=b.childNodes.length-1;0<=g;g--)try{var e=b.childNodes[g],f=e.nodeName.toUpperCase();"INPUT"!=f&&"SELECT"!=f||b.removeChild(e)}catch(pa){}}else z.src=
+Sidebar.prototype.expandedImage,c="";for(g=0;g<d.length;g++)d[g].style.display=c};mxEvent.addListener(x,"click",function(){q.editorUi.propertiesCollapsed=!q.editorUi.propertiesCollapsed;y()});x.appendChild(t);t=document.createElement("th");t.className="gePropHeaderCell";t.innerHTML=mxResources.get("value");x.appendChild(t);p.appendChild(x);var G=!1,C=!1,x=null;1==c.vertices.length&&0==c.edges.length?x=c.vertices[0].id:0==c.vertices.length&&1==c.edges.length&&(x=c.edges[0].id);null!=x&&p.appendChild(n("id",
+mxUtils.htmlEntities(x),{dispName:"ID",type:"readOnly"},!0,!1));for(var B in d)if(x=d[B],"function"!=typeof x.isVisible||x.isVisible(c,this)){var L=null!=c.style[B]?mxUtils.htmlEntities(c.style[B]+""):null!=x.getDefaultValue?x.getDefaultValue(c,this):x.defVal;if("separator"==x.type)C=!C;else{if("staticArr"==x.type)x.size=parseInt(c.style[x.sizeProperty]||d[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var I=x.dependentProps,D=[],M=[],t=0;t<I.length;t++){var F=c.style[I[t]];M.push(d[I[t]].subDefVal);
+D.push(null!=F?F.split(","):[])}x.dependentPropsDefVal=M;x.dependentPropsVals=D}p.appendChild(n(B,L,x,G,C));G=!G}}for(t=0;t<v.length;t++)for(x=v[t],d=x.parentRow,c=0;c<x.values.length;c++)B=n(x.name,x.values[c],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:c,defVal:x.defVal,countProperty:x.countProperty,size:x.size},0==c%2,x.flipBkg),d.parentNode.insertBefore(B,d.nextSibling),d=B;b.appendChild(p);y();return b};StyleFormatPanel.prototype.addStyles=function(b){function d(b){mxEvent.addListener(b,
+"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var c=this.editorUi,g=c.editor.graph,e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.paddingLeft="24px";e.style.paddingRight="20px";b.style.paddingLeft="16px";b.style.paddingBottom="6px";b.style.position="relative";b.appendChild(e);var f="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "),
+l=document.createElement("div");l.style.whiteSpace="nowrap";l.style.position="relative";l.style.textAlign="center";l.style.width="210px";for(var m=[],k=0;k<this.defaultColorSchemes.length;k++){var n=document.createElement("div");n.style.display="inline-block";n.style.width="6px";n.style.height="6px";n.style.marginLeft="4px";n.style.marginRight="3px";n.style.borderRadius="3px";n.style.cursor="pointer";n.style.background="transparent";n.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(b){mxEvent.addListener(n,
+"click",mxUtils.bind(this,function(){q(b)}))})(k);m.push(n);l.appendChild(n)}var q=mxUtils.bind(this,function(b){null!=m[b]&&(null!=this.format.currentScheme&&null!=m[this.format.currentScheme]&&(m[this.format.currentScheme].style.background="transparent"),this.format.currentScheme=b,u(this.defaultColorSchemes[this.format.currentScheme]),m[this.format.currentScheme].style.background="#84d7ff")}),u=mxUtils.bind(this,function(b){var d=mxUtils.bind(this,function(b){var d=mxUtils.button("",mxUtils.bind(this,
+function(d){g.getModel().beginUpdate();try{for(var e=c.getSelectionState().cells,l=0;l<e.length;l++){for(var m=g.getModel().getStyle(e[l]),k=0;k<f.length;k++)m=mxUtils.removeStylename(m,f[k]);var n=g.getModel().isVertex(e[l])?g.defaultVertexStyle:g.defaultEdgeStyle;null!=b?(mxEvent.isShiftDown(d)||(m=""==b.fill?mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(m,mxConstants.STYLE_FILLCOLOR,b.fill||mxUtils.getValue(n,mxConstants.STYLE_FILLCOLOR,null)),m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,
+b.gradient||mxUtils.getValue(n,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(d)||mxClient.IS_MAC&&mxEvent.isMetaDown(d)||!g.getModel().isVertex(e[l])||(m=mxUtils.setStyle(m,mxConstants.STYLE_FONTCOLOR,b.font||mxUtils.getValue(n,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(d)||(m=""==b.stroke?mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,b.stroke||mxUtils.getValue(n,mxConstants.STYLE_STROKECOLOR,null)))):(m=mxUtils.setStyle(m,
+mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(n,mxConstants.STYLE_FILLCOLOR,"#ffffff")),m=mxUtils.setStyle(m,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(n,mxConstants.STYLE_STROKECOLOR,"#000000")),m=mxUtils.setStyle(m,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(n,mxConstants.STYLE_GRADIENTCOLOR,null)),g.getModel().isVertex(e[l])&&(m=mxUtils.setStyle(m,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(n,mxConstants.STYLE_FONTCOLOR,null))));g.getModel().setStyle(e[l],m)}}finally{g.getModel().endUpdate()}}));
+d.className="geStyleButton";d.style.width="36px";d.style.height=10>=this.defaultColorSchemes.length?"24px":"30px";d.style.margin="0px 6px 6px 0px";if(null!=b){var l="1"==urlParams.sketch?"2px solid":"1px solid";null!=b.gradient?mxClient.IS_IE&&10>document.documentMode?d.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+b.fill+"', EndColorStr='"+b.gradient+"', GradientType=0)":d.style.backgroundImage="linear-gradient("+b.fill+" 0px,"+b.gradient+" 100%)":b.fill==mxConstants.NONE?
+d.style.background="url('"+Dialog.prototype.noColorImage+"')":d.style.backgroundColor=""==b.fill?mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):b.fill||mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");d.style.border=b.stroke==mxConstants.NONE?l+" transparent":""==b.stroke?l+" "+mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":
+Editor.darkColor):l+" "+(b.stroke||mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=b.title&&d.setAttribute("title",b.title)}else{var l=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),m=mxUtils.getValue(g.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");d.style.backgroundColor=l;d.style.border="1px solid "+m}d.style.borderRadius="0";e.appendChild(d)});e.innerHTML="";for(var l=0;l<b.length;l++)0<
+l&&0==mxUtils.mod(l,4)&&mxUtils.br(e),d(b[l])});null==this.format.currentScheme?q(Editor.isDarkMode()?1:"1"==urlParams.sketch?5:0):q(this.format.currentScheme);var k=10>=this.defaultColorSchemes.length?28:8,p=document.createElement("div");p.style.cssText="position:absolute;left:10px;top:8px;bottom:"+k+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";
+mxEvent.addListener(p,"click",mxUtils.bind(this,function(){q(mxUtils.mod(this.format.currentScheme-1,this.defaultColorSchemes.length))}));var v=document.createElement("div");v.style.cssText="position:absolute;left:202px;top:8px;bottom:"+k+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";
+1<this.defaultColorSchemes.length&&(b.appendChild(p),b.appendChild(v));mxEvent.addListener(v,"click",mxUtils.bind(this,function(){q(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));d(p);d(v);u(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&b.appendChild(l);return b};StyleFormatPanel.prototype.addEditOps=function(b){var d=this.editorUi.getSelectionState(),c=this.editorUi.editor.graph,g=null;1==d.cells.length&&(g=mxUtils.button(mxResources.get("editStyle"),
+mxUtils.bind(this,function(b){this.editorUi.actions.get("editStyle").funct()})),g.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),g.style.width="210px",g.style.marginBottom="2px",b.appendChild(g));c=1==d.cells.length?c.view.getState(d.cells[0]):null;null!=c&&null!=c.shape&&null!=c.shape.stencil?(d=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(b){this.editorUi.actions.get("editShape").funct()})),d.setAttribute("title",
+mxResources.get("editShape")),d.style.marginBottom="2px",null==g?d.style.width="210px":(g.style.width="104px",d.style.width="104px",d.style.marginLeft="2px"),b.appendChild(d)):d.image&&0<d.cells.length&&(d=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(b){this.editorUi.actions.get("image").funct()})),d.setAttribute("title",mxResources.get("editImage")),d.style.marginBottom="2px",null==g?d.style.width="210px":(g.style.width="104px",d.style.width="104px",d.style.marginLeft="2px"),
b.appendChild(d));return b}}Graph.customFontElements={};Graph.recentCustomFonts={};Graph.isGoogleFontUrl=function(b){return b.substring(0,Editor.GOOGLE_FONTS.length)==Editor.GOOGLE_FONTS};Graph.isCssFontUrl=function(b){return Graph.isGoogleFontUrl(b)};Graph.createFontElement=function(b,d){var c;Graph.isCssFontUrl(d)?(c=document.createElement("link"),c.setAttribute("rel","stylesheet"),c.setAttribute("type","text/css"),c.setAttribute("charset","UTF-8"),c.setAttribute("href",d)):(c=document.createElement("style"),
-mxUtils.write(c,'@font-face {\nfont-family: "'+b+'";\nsrc: url("'+d+'");\n}'));return c};Graph.addFont=function(b,d,c){if(null!=b&&0<b.length&&null!=d&&0<d.length){var f=b.toLowerCase();if("helvetica"!=f&&"arial"!=b&&"sans-serif"!=f){var e=Graph.customFontElements[f];null!=e&&e.url!=d&&(e.elt.parentNode.removeChild(e.elt),e=null);null==e?(e=d,"http:"==d.substring(0,5)&&(e=PROXY_URL+"?url="+encodeURIComponent(d)),e={name:b,url:d,elt:Graph.createFontElement(b,e)},Graph.customFontElements[f]=e,Graph.recentCustomFonts[f]=
-e,d=document.getElementsByTagName("head")[0],null!=c&&("link"==e.elt.nodeName.toLowerCase()?(e.elt.onload=c,e.elt.onerror=c):c()),null!=d&&d.appendChild(e.elt)):null!=c&&c()}else null!=c&&c()}else null!=c&&c();return b};Graph.getFontUrl=function(b,d){var c=Graph.customFontElements[b.toLowerCase()];null!=c&&(d=c.url);return d};Graph.processFontAttributes=function(b){b=b.getElementsByTagName("*");for(var d=0;d<b.length;d++){var c=b[d].getAttribute("data-font-src");if(null!=c){var f="FONT"==b[d].nodeName?
-b[d].getAttribute("face"):b[d].style.fontFamily;null!=f&&Graph.addFont(f,c)}}};Graph.processFontStyle=function(b){if(null!=b){var d=mxUtils.getValue(b,"fontSource",null);if(null!=d){var c=mxUtils.getValue(b,mxConstants.STYLE_FONTFAMILY,null);null!=c&&Graph.addFont(c,decodeURIComponent(d))}}return b};Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible=
+mxUtils.write(c,'@font-face {\nfont-family: "'+b+'";\nsrc: url("'+d+'");\n}'));return c};Graph.addFont=function(b,d,c){if(null!=b&&0<b.length&&null!=d&&0<d.length){var g=b.toLowerCase();if("helvetica"!=g&&"arial"!=b&&"sans-serif"!=g){var e=Graph.customFontElements[g];null!=e&&e.url!=d&&(e.elt.parentNode.removeChild(e.elt),e=null);null==e?(e=d,"http:"==d.substring(0,5)&&(e=PROXY_URL+"?url="+encodeURIComponent(d)),e={name:b,url:d,elt:Graph.createFontElement(b,e)},Graph.customFontElements[g]=e,Graph.recentCustomFonts[g]=
+e,d=document.getElementsByTagName("head")[0],null!=c&&("link"==e.elt.nodeName.toLowerCase()?(e.elt.onload=c,e.elt.onerror=c):c()),null!=d&&d.appendChild(e.elt)):null!=c&&c()}else null!=c&&c()}else null!=c&&c();return b};Graph.getFontUrl=function(b,d){var c=Graph.customFontElements[b.toLowerCase()];null!=c&&(d=c.url);return d};Graph.processFontAttributes=function(b){b=b.getElementsByTagName("*");for(var d=0;d<b.length;d++){var c=b[d].getAttribute("data-font-src");if(null!=c){var g="FONT"==b[d].nodeName?
+b[d].getAttribute("face"):b[d].style.fontFamily;null!=g&&Graph.addFont(g,c)}}};Graph.processFontStyle=function(b){if(null!=b){var d=mxUtils.getValue(b,"fontSource",null);if(null!=d){var c=mxUtils.getValue(b,mxConstants.STYLE_FONTFAMILY,null);null!=c&&Graph.addFont(c,decodeURIComponent(d))}}return b};Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible=
"0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize="3";Graph.prototype.edgeMode="move"!=urlParams.edge;Graph.prototype.hiddenTags=null;Graph.prototype.defaultMathEnabled=!1;var y=Graph.prototype.init;Graph.prototype.init=function(){function b(b){d=b}y.apply(this,arguments);this.hiddenTags=[];window.mxFreehand&&(this.freehand=new mxFreehand(this));var d=
-null;mxEvent.addListener(this.container,"mouseenter",b);mxEvent.addListener(this.container,"mousemove",b);mxEvent.addListener(this.container,"mouseleave",function(b){d=null});this.isMouseInsertPoint=function(){return null!=d};var c=this.getInsertPoint;this.getInsertPoint=function(){return null!=d?this.getPointForEvent(d):c.apply(this,arguments)};var f=this.layoutManager.getLayout;this.layoutManager.getLayout=function(b){var d=this.graph.getCellStyle(b);if(null!=d&&"rack"==d.childLayout){var c=new mxStackLayout(this.graph,
-!1);c.gridSize=null!=d.rackUnitSize?parseFloat(d.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:20;c.marginLeft=d.marginLeft||0;c.marginRight=d.marginRight||0;c.marginTop=d.marginTop||0;c.marginBottom=d.marginBottom||0;c.allowGaps=d.allowGaps||0;c.horizontal="1"==mxUtils.getValue(d,"horizontalRack","0");c.resizeParent=!1;c.fill=!0;return c}return f.apply(this,arguments)};this.updateGlobalUrlVariables()};var x=Graph.prototype.postProcessCellStyle;Graph.prototype.postProcessCellStyle=
-function(b,d){return Graph.processFontStyle(x.apply(this,arguments))};var F=mxSvgCanvas2D.prototype.updateTextNodes;mxSvgCanvas2D.prototype.updateTextNodes=function(b,d,c,f,e,g,l,m,k,n,q){F.apply(this,arguments);Graph.processFontAttributes(q)};var H=mxText.prototype.redraw;mxText.prototype.redraw=function(){H.apply(this,arguments);null!=this.node&&"DIV"==this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.createTagsDialog=function(b,d,c){function f(){for(var b=l.getSelectionCells(),
-d=[],c=0;c<b.length;c++)l.isCellVisible(b[c])&&d.push(b[c]);l.setSelectionCells(d)}function e(b){l.hiddenTags=b?[]:m.slice();f();l.refresh()}function g(b,c){n.innerHTML="";if(0<b.length){var g=document.createElement("table");g.setAttribute("cellpadding","2");g.style.boxSizing="border-box";g.style.tableLayout="fixed";g.style.width="100%";var k=document.createElement("tbody");if(null!=b&&0<b.length)for(var q=0;q<b.length;q++)(function(b){var g=0>mxUtils.indexOf(l.hiddenTags,b),n=document.createElement("tr"),
-q=document.createElement("td");q.style.align="center";q.style.width="16px";var u=document.createElement("img");u.setAttribute("src",g?Editor.visibleImage:Editor.hiddenImage);u.setAttribute("title",mxResources.get(g?"hideIt":"show",[b]));mxUtils.setOpacity(u,g?75:25);u.style.verticalAlign="middle";u.style.cursor="pointer";u.style.width="16px";if(d||Editor.isDarkMode())u.style.filter="invert(100%)";q.appendChild(u);mxEvent.addListener(u,"click",function(d){var c=mxUtils.indexOf(l.hiddenTags,b);mxEvent.isShiftDown(d)?
-e(0<=mxUtils.indexOf(l.hiddenTags,b)):(0>c?l.hiddenTags.push(b):0<=c&&l.hiddenTags.splice(c,1),f(),l.refresh());mxEvent.consume(d)});n.appendChild(q);q=document.createElement("td");q.style.overflow="hidden";q.style.whiteSpace="nowrap";q.style.textOverflow="ellipsis";q.style.verticalAlign="middle";q.style.cursor="pointer";q.setAttribute("title",b);a=document.createElement("a");mxUtils.write(a,b);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,g?100:40);q.appendChild(a);
-mxEvent.addListener(q,"click",function(d){if(mxEvent.isShiftDown(d)){e(!0);var c=l.getCellsForTags([b],null,null,!0);l.isEnabled()?l.setSelectionCells(c):l.highlightCells(c)}else if(g&&0<l.hiddenTags.length)e(!0);else{var c=m.slice(),k=mxUtils.indexOf(c,b);c.splice(k,1);l.hiddenTags=c;f();l.refresh()}mxEvent.consume(d)});n.appendChild(q);if(l.isEnabled()){q=document.createElement("td");q.style.verticalAlign="middle";q.style.textAlign="center";q.style.width="18px";if(null==c){q.style.align="center";
-q.style.width="16px";u=document.createElement("img");u.setAttribute("src",Editor.crossImage);u.setAttribute("title",mxResources.get("removeIt",[b]));mxUtils.setOpacity(u,g?75:25);u.style.verticalAlign="middle";u.style.cursor="pointer";u.style.width="16px";if(d||Editor.isDarkMode())u.style.filter="invert(100%)";mxEvent.addListener(u,"click",function(d){var c=mxUtils.indexOf(m,b);0<=c&&m.splice(c,1);l.removeTagsForCells(l.model.getDescendants(l.model.getRoot()),[b]);l.refresh();mxEvent.consume(d)});
-q.appendChild(u)}else{var x=document.createElement("input");x.setAttribute("type","checkbox");x.style.margin="0px";x.defaultChecked=null!=c&&0<=mxUtils.indexOf(c,b);x.checked=x.defaultChecked;x.style.background="transparent";x.setAttribute("title",mxResources.get(x.defaultChecked?"removeIt":"add",[b]));mxEvent.addListener(x,"change",function(d){x.checked?l.addTagsForCells(l.getSelectionCells(),[b]):l.removeTagsForCells(l.getSelectionCells(),[b]);mxEvent.consume(d)});q.appendChild(x)}n.appendChild(q)}k.appendChild(n)})(b[q]);
-g.appendChild(k);n.appendChild(g)}}var l=this,m=l.hiddenTags.slice(),k=document.createElement("div");k.style.userSelect="none";k.style.overflow="hidden";k.style.padding="10px";k.style.height="100%";var n=document.createElement("div");n.style.boxSizing="border-box";n.style.borderRadius="4px";n.style.userSelect="none";n.style.overflow="auto";n.style.position="absolute";n.style.left="10px";n.style.right="10px";n.style.top="10px";n.style.border=l.isEnabled()?"1px solid #808080":"none";n.style.bottom=
-l.isEnabled()?"48px":"10px";k.appendChild(n);var q=mxUtils.button(mxResources.get("reset"),function(b){l.hiddenTags=[];mxEvent.isShiftDown(b)||(m=l.hiddenTags.slice());f();l.refresh()});q.setAttribute("title",mxResources.get("reset"));q.className="geBtn";q.style.margin="0 4px 0 0";var u=mxUtils.button(mxResources.get("add"),function(){null!=c&&c(m,function(b){m=b;x()})});u.setAttribute("title",mxResources.get("add"));u.className="geBtn";u.style.margin="0";l.addListener(mxEvent.ROOT,function(){m=l.hiddenTags.slice()});
-var x=mxUtils.bind(this,function(d,c){if(b()){for(var f=l.getAllTags(),e=0;e<f.length;e++)0>mxUtils.indexOf(m,f[e])&&m.push(f[e]);m.sort();l.isSelectionEmpty()?g(m):g(m,l.getCommonTagsForCells(l.getSelectionCells()))}});l.selectionModel.addListener(mxEvent.CHANGE,x);l.model.addListener(mxEvent.CHANGE,x);l.addListener(mxEvent.REFRESH,x);var p=document.createElement("div");p.style.boxSizing="border-box";p.style.whiteSpace="nowrap";p.style.position="absolute";p.style.overflow="hidden";p.style.bottom=
-"0px";p.style.height="42px";p.style.right="10px";p.style.left="10px";l.isEnabled()&&(p.appendChild(q),p.appendChild(u),k.appendChild(p));return{div:k,refresh:x}};Graph.prototype.getCustomFonts=function(){var b=this.extFonts,b=null!=b?b.slice():[],d;for(d in Graph.customFontElements){var c=Graph.customFontElements[d];b.push({name:c.name,url:c.url})}return b};Graph.prototype.setFont=function(b,d){Graph.addFont(b,d);document.execCommand("fontname",!1,b);if(null!=d){var c=this.cellEditor.textarea.getElementsByTagName("font");
-d=Graph.getFontUrl(b,d);for(var f=0;f<c.length;f++)c[f].getAttribute("face")==b&&c[f].getAttribute("data-font-src")!=d&&c[f].setAttribute("data-font-src",d)}};var z=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return z.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};
-var b=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var d in b)this.globalVars[d]=b[d]}catch(A){null!=window.console&&console.log("Error in vars URL parameter: "+A)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var D=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(b){var d=D.apply(this,arguments);null==d&&null!=this.globalVars&&(d=this.globalVars[b]);return d};Graph.prototype.getDefaultStylesheet=
-function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var L=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,d,c,f,e,g,l,m,k,n,q,u,x,p){var v=null,t=null,z=null;u||null==this.themes||"darkTheme"!=this.defaultThemeName||(v=this.stylesheet,t=this.shapeForegroundColor,z=this.shapeBackgroundColor,this.shapeForegroundColor=
-"darkTheme"==this.defaultThemeName?"#000000":Editor.lightColor,this.shapeBackgroundColor="darkTheme"==this.defaultThemeName?"#ffffff":Editor.darkColor,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var y=L.apply(this,arguments),C=this.getCustomFonts();if(q&&0<C.length){var A=y.ownerDocument,N=null!=A.createElementNS?A.createElementNS(mxConstants.NS_SVG,"style"):A.createElement("style");null!=A.setAttributeNS?N.setAttributeNS("type","text/css"):N.setAttribute("type","text/css");for(var G=
-"",D="",I=0;I<C.length;I++){var M=C[I].name,F=C[I].url;Graph.isCssFontUrl(F)?G+="@import url("+F+");\n":D+='@font-face {\nfont-family: "'+M+'";\nsrc: url("'+F+'");\n}\n'}N.appendChild(A.createTextNode(G+D));y.getElementsByTagName("defs")[0].appendChild(N)}null!=v&&(this.shapeBackgroundColor=z,this.shapeForegroundColor=t,this.stylesheet=v,this.refresh());return y};var E=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var b=E.apply(this,arguments);if(this.mathEnabled){var d=
-b.drawText;b.drawText=function(b,c){if(null!=b.text&&null!=b.text.value&&b.text.checkBounds()&&(mxUtils.isNode(b.text.value)||b.text.dialect==mxConstants.DIALECT_STRICTHTML)){var f=b.text.getContentNode();if(null!=f){f=f.cloneNode(!0);if(f.getElementsByTagNameNS)for(var e=f.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<e.length;)e[0].parentNode.removeChild(e[0]);null!=f.innerHTML&&(e=b.text.value,b.text.value=f.innerHTML,d.apply(this,arguments),b.text.value=e)}}else d.apply(this,
+null;mxEvent.addListener(this.container,"mouseenter",b);mxEvent.addListener(this.container,"mousemove",b);mxEvent.addListener(this.container,"mouseleave",function(b){d=null});this.isMouseInsertPoint=function(){return null!=d};var c=this.getInsertPoint;this.getInsertPoint=function(){return null!=d?this.getPointForEvent(d):c.apply(this,arguments)};var g=this.layoutManager.getLayout;this.layoutManager.getLayout=function(b){var d=this.graph.getCellStyle(b);if(null!=d&&"rack"==d.childLayout){var c=new mxStackLayout(this.graph,
+!1);c.gridSize=null!=d.rackUnitSize?parseFloat(d.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:20;c.marginLeft=d.marginLeft||0;c.marginRight=d.marginRight||0;c.marginTop=d.marginTop||0;c.marginBottom=d.marginBottom||0;c.allowGaps=d.allowGaps||0;c.horizontal="1"==mxUtils.getValue(d,"horizontalRack","0");c.resizeParent=!1;c.fill=!0;return c}return g.apply(this,arguments)};this.updateGlobalUrlVariables()};var x=Graph.prototype.postProcessCellStyle;Graph.prototype.postProcessCellStyle=
+function(b,d){return Graph.processFontStyle(x.apply(this,arguments))};var F=mxSvgCanvas2D.prototype.updateTextNodes;mxSvgCanvas2D.prototype.updateTextNodes=function(b,d,c,g,e,f,l,m,k,n,q){F.apply(this,arguments);Graph.processFontAttributes(q)};var H=mxText.prototype.redraw;mxText.prototype.redraw=function(){H.apply(this,arguments);null!=this.node&&"DIV"==this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.createTagsDialog=function(b,d,c){function g(){for(var b=l.getSelectionCells(),
+d=[],c=0;c<b.length;c++)l.isCellVisible(b[c])&&d.push(b[c]);l.setSelectionCells(d)}function e(b){l.hiddenTags=b?[]:m.slice();g();l.refresh()}function f(b,c){n.innerHTML="";if(0<b.length){var f=document.createElement("table");f.setAttribute("cellpadding","2");f.style.boxSizing="border-box";f.style.tableLayout="fixed";f.style.width="100%";var k=document.createElement("tbody");if(null!=b&&0<b.length)for(var q=0;q<b.length;q++)(function(b){var f=0>mxUtils.indexOf(l.hiddenTags,b),n=document.createElement("tr"),
+q=document.createElement("td");q.style.align="center";q.style.width="16px";var u=document.createElement("img");u.setAttribute("src",f?Editor.visibleImage:Editor.hiddenImage);u.setAttribute("title",mxResources.get(f?"hideIt":"show",[b]));mxUtils.setOpacity(u,f?75:25);u.style.verticalAlign="middle";u.style.cursor="pointer";u.style.width="16px";if(d||Editor.isDarkMode())u.style.filter="invert(100%)";q.appendChild(u);mxEvent.addListener(u,"click",function(d){var c=mxUtils.indexOf(l.hiddenTags,b);mxEvent.isShiftDown(d)?
+e(0<=mxUtils.indexOf(l.hiddenTags,b)):(0>c?l.hiddenTags.push(b):0<=c&&l.hiddenTags.splice(c,1),g(),l.refresh());mxEvent.consume(d)});n.appendChild(q);q=document.createElement("td");q.style.overflow="hidden";q.style.whiteSpace="nowrap";q.style.textOverflow="ellipsis";q.style.verticalAlign="middle";q.style.cursor="pointer";q.setAttribute("title",b);a=document.createElement("a");mxUtils.write(a,b);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,f?100:40);q.appendChild(a);
+mxEvent.addListener(q,"click",function(d){if(mxEvent.isShiftDown(d)){e(!0);var c=l.getCellsForTags([b],null,null,!0);l.isEnabled()?l.setSelectionCells(c):l.highlightCells(c)}else if(f&&0<l.hiddenTags.length)e(!0);else{var c=m.slice(),k=mxUtils.indexOf(c,b);c.splice(k,1);l.hiddenTags=c;g();l.refresh()}mxEvent.consume(d)});n.appendChild(q);if(l.isEnabled()){q=document.createElement("td");q.style.verticalAlign="middle";q.style.textAlign="center";q.style.width="18px";if(null==c){q.style.align="center";
+q.style.width="16px";u=document.createElement("img");u.setAttribute("src",Editor.crossImage);u.setAttribute("title",mxResources.get("removeIt",[b]));mxUtils.setOpacity(u,f?75:25);u.style.verticalAlign="middle";u.style.cursor="pointer";u.style.width="16px";if(d||Editor.isDarkMode())u.style.filter="invert(100%)";mxEvent.addListener(u,"click",function(d){var c=mxUtils.indexOf(m,b);0<=c&&m.splice(c,1);l.removeTagsForCells(l.model.getDescendants(l.model.getRoot()),[b]);l.refresh();mxEvent.consume(d)});
+q.appendChild(u)}else{var p=document.createElement("input");p.setAttribute("type","checkbox");p.style.margin="0px";p.defaultChecked=null!=c&&0<=mxUtils.indexOf(c,b);p.checked=p.defaultChecked;p.style.background="transparent";p.setAttribute("title",mxResources.get(p.defaultChecked?"removeIt":"add",[b]));mxEvent.addListener(p,"change",function(d){p.checked?l.addTagsForCells(l.getSelectionCells(),[b]):l.removeTagsForCells(l.getSelectionCells(),[b]);mxEvent.consume(d)});q.appendChild(p)}n.appendChild(q)}k.appendChild(n)})(b[q]);
+f.appendChild(k);n.appendChild(f)}}var l=this,m=l.hiddenTags.slice(),k=document.createElement("div");k.style.userSelect="none";k.style.overflow="hidden";k.style.padding="10px";k.style.height="100%";var n=document.createElement("div");n.style.boxSizing="border-box";n.style.borderRadius="4px";n.style.userSelect="none";n.style.overflow="auto";n.style.position="absolute";n.style.left="10px";n.style.right="10px";n.style.top="10px";n.style.border=l.isEnabled()?"1px solid #808080":"none";n.style.bottom=
+l.isEnabled()?"48px":"10px";k.appendChild(n);var q=mxUtils.button(mxResources.get("reset"),function(b){l.hiddenTags=[];mxEvent.isShiftDown(b)||(m=l.hiddenTags.slice());g();l.refresh()});q.setAttribute("title",mxResources.get("reset"));q.className="geBtn";q.style.margin="0 4px 0 0";var u=mxUtils.button(mxResources.get("add"),function(){null!=c&&c(m,function(b){m=b;p()})});u.setAttribute("title",mxResources.get("add"));u.className="geBtn";u.style.margin="0";l.addListener(mxEvent.ROOT,function(){m=l.hiddenTags.slice()});
+var p=mxUtils.bind(this,function(d,c){if(b()){for(var g=l.getAllTags(),e=0;e<g.length;e++)0>mxUtils.indexOf(m,g[e])&&m.push(g[e]);m.sort();l.isSelectionEmpty()?f(m):f(m,l.getCommonTagsForCells(l.getSelectionCells()))}});l.selectionModel.addListener(mxEvent.CHANGE,p);l.model.addListener(mxEvent.CHANGE,p);l.addListener(mxEvent.REFRESH,p);var v=document.createElement("div");v.style.boxSizing="border-box";v.style.whiteSpace="nowrap";v.style.position="absolute";v.style.overflow="hidden";v.style.bottom=
+"0px";v.style.height="42px";v.style.right="10px";v.style.left="10px";l.isEnabled()&&(v.appendChild(q),v.appendChild(u),k.appendChild(v));return{div:k,refresh:p}};Graph.prototype.getCustomFonts=function(){var b=this.extFonts,b=null!=b?b.slice():[],d;for(d in Graph.customFontElements){var c=Graph.customFontElements[d];b.push({name:c.name,url:c.url})}return b};Graph.prototype.setFont=function(b,d){Graph.addFont(b,d);document.execCommand("fontname",!1,b);if(null!=d){var c=this.cellEditor.textarea.getElementsByTagName("font");
+d=Graph.getFontUrl(b,d);for(var g=0;g<c.length;g++)c[g].getAttribute("face")==b&&c[g].getAttribute("data-font-src")!=d&&c[g].setAttribute("data-font-src",d)}};var z=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return z.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};
+var b=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var d in b)this.globalVars[d]=b[d]}catch(B){null!=window.console&&console.log("Error in vars URL parameter: "+B)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var D=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(b){var d=D.apply(this,arguments);null==d&&null!=this.globalVars&&(d=this.globalVars[b]);return d};Graph.prototype.getDefaultStylesheet=
+function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var N=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,d,c,g,e,f,l,m,k,n,q,u,p,v){var x=null,t=null,z=null;u||null==this.themes||"darkTheme"!=this.defaultThemeName||(x=this.stylesheet,t=this.shapeForegroundColor,z=this.shapeBackgroundColor,this.shapeForegroundColor=
+"darkTheme"==this.defaultThemeName?"#000000":Editor.lightColor,this.shapeBackgroundColor="darkTheme"==this.defaultThemeName?"#ffffff":Editor.darkColor,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var y=N.apply(this,arguments),C=this.getCustomFonts();if(q&&0<C.length){var L=y.ownerDocument,G=null!=L.createElementNS?L.createElementNS(mxConstants.NS_SVG,"style"):L.createElement("style");null!=L.setAttributeNS?G.setAttributeNS("type","text/css"):G.setAttribute("type","text/css");for(var B=
+"",D="",I=0;I<C.length;I++){var M=C[I].name,F=C[I].url;Graph.isCssFontUrl(F)?B+="@import url("+F+");\n":D+='@font-face {\nfont-family: "'+M+'";\nsrc: url("'+F+'");\n}\n'}G.appendChild(L.createTextNode(B+D));y.getElementsByTagName("defs")[0].appendChild(G)}null!=x&&(this.shapeBackgroundColor=z,this.shapeForegroundColor=t,this.stylesheet=x,this.refresh());return y};var E=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var b=E.apply(this,arguments);if(this.mathEnabled){var d=
+b.drawText;b.drawText=function(b,c){if(null!=b.text&&null!=b.text.value&&b.text.checkBounds()&&(mxUtils.isNode(b.text.value)||b.text.dialect==mxConstants.DIALECT_STRICTHTML)){var g=b.text.getContentNode();if(null!=g){g=g.cloneNode(!0);if(g.getElementsByTagNameNS)for(var e=g.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<e.length;)e[0].parentNode.removeChild(e[0]);null!=g.innerHTML&&(e=b.text.value,b.text.value=g.innerHTML,d.apply(this,arguments),b.text.value=e)}}else d.apply(this,
arguments)}}return b};var J=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){J.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var b=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||
this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",b.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,b.ownerSVGElement))}};var C=Graph.prototype.refresh;Graph.prototype.refresh=function(){C.apply(this,
arguments);this.refreshBackgroundImage()};Graph.prototype.refreshBackgroundImage=function(){null!=this.backgroundImage&&null!=this.backgroundImage.originalSrc&&(this.setBackgroundImage(this.backgroundImage),this.view.validateBackgroundImage())};var K=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){K.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(b){"data:action/json,"==b.substring(0,17)&&(b=JSON.parse(b.substring(17)),null!=
-b.actions&&this.executeCustomActions(b.actions))};Graph.prototype.executeCustomActions=function(b,d){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),null!=this.pendingExecuteNextAction&&this.pendingExecuteNextAction(),this.fireEvent(new mxEventObject("stopExecutingCustomActions"));else{this.executingCustomActions=!0;var c=!1,f=0,e=0,g=mxUtils.bind(this,function(){c||(c=!0,this.model.beginUpdate())}),l=mxUtils.bind(this,
-function(){c&&(c=!1,this.model.endUpdate())}),m=mxUtils.bind(this,function(){0<f&&f--;0==f&&k()}),k=mxUtils.bind(this,function(){if(e<b.length){var c=this.stoppingCustomActions,n=b[e++],q=[];if(null!=n.open)if(l(),this.isCustomLink(n.open)){if(!this.customLinkClicked(n.open))return}else this.openLink(n.open);null==n.wait||c||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;m()}),f++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,
-""!=n.wait?parseInt(n.wait):1E3),l());null!=n.opacity&&null!=n.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(n.opacity,!0)),n.opacity.value);null!=n.fadeIn&&(f++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(n.fadeIn,!0)),0,1,m,c?0:n.fadeIn.delay));null!=n.fadeOut&&(f++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(n.fadeOut,!0)),1,0,m,c?0:n.fadeOut.delay));null!=n.wipeIn&&(q=q.concat(this.createWipeAnimations(this.getCellsForAction(n.wipeIn,
-!0),!0)));null!=n.wipeOut&&(q=q.concat(this.createWipeAnimations(this.getCellsForAction(n.wipeOut,!0),!1)));null!=n.toggle&&(g(),this.toggleCells(this.getCellsForAction(n.toggle,!0)));if(null!=n.show){g();var u=this.getCellsForAction(n.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(u),1);this.setCellsVisible(u,!0)}null!=n.hide&&(g(),u=this.getCellsForAction(n.hide,!0),Graph.setOpacityForNodes(this.getNodesForCells(u),0),this.setCellsVisible(u,!1));null!=n.toggleStyle&&null!=n.toggleStyle.key&&
-(g(),this.toggleCellStyles(n.toggleStyle.key,null!=n.toggleStyle.defaultValue?n.toggleStyle.defaultValue:"0",this.getCellsForAction(n.toggleStyle,!0)));null!=n.style&&null!=n.style.key&&(g(),this.setCellStyles(n.style.key,n.style.value,this.getCellsForAction(n.style,!0)));u=[];null!=n.select&&this.isEnabled()&&(u=this.getCellsForAction(n.select),this.setSelectionCells(u));null!=n.highlight&&(u=this.getCellsForAction(n.highlight),this.highlightCells(u,n.highlight.color,n.highlight.duration,n.highlight.opacity));
-null!=n.scroll&&(u=this.getCellsForAction(n.scroll));null!=n.viewbox&&this.fitWindow(n.viewbox,n.viewbox.border);0<u.length&&this.scrollCellToVisible(u[0]);if(null!=n.tags){u=[];null!=n.tags.hidden&&(u=u.concat(n.tags.hidden));if(null!=n.tags.visible)for(var x=this.getAllTags(),p=0;p<x.length;p++)0>mxUtils.indexOf(n.tags.visible,x[p])&&0>mxUtils.indexOf(u,x[p])&&u.push(x[p]);this.hiddenTags=u;this.refresh()}0<q.length&&(f++,this.executeAnimations(q,m,c?1:n.steps,c?0:n.delay));0==f?k():l()}else this.stoppingCustomActions=
-this.executingCustomActions=!1,l(),null!=d&&d()});k()}};Graph.prototype.doUpdateCustomLinksForCell=function(b,d){var c=this.getLinkForCell(d);null!=c&&"data:action/json,"==c.substring(0,17)&&this.setLinkForCell(d,this.updateCustomLink(b,c));if(this.isHtmlLabel(d)){var f=document.createElement("div");f.innerHTML=this.sanitizeHtml(this.getLabel(d));for(var e=f.getElementsByTagName("a"),g=!1,l=0;l<e.length;l++)c=e[l].getAttribute("href"),null!=c&&"data:action/json,"==c.substring(0,17)&&(e[l].setAttribute("href",
-this.updateCustomLink(b,c)),g=!0);g&&this.labelChanged(d,f.innerHTML)}};Graph.prototype.updateCustomLink=function(b,d){if("data:action/json,"==d.substring(0,17))try{var c=JSON.parse(d.substring(17));null!=c.actions&&(this.updateCustomLinkActions(b,c.actions),d="data:action/json,"+JSON.stringify(c))}catch(Y){}return d};Graph.prototype.updateCustomLinkActions=function(b,d){for(var c=0;c<d.length;c++){var f=d[c],e;for(e in f)this.updateCustomLinkAction(b,f[e],"cells"),this.updateCustomLinkAction(b,f[e],
-"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(b,d,c){if(null!=d&&null!=d[c]){for(var f=[],e=0;e<d[c].length;e++)if("*"==d[c][e])f.push(d[c][e]);else{var g=b[d[c][e]];null!=g?""!=g&&f.push(g):f.push(d[c][e])}d[c]=f}};Graph.prototype.getCellsForAction=function(b,d){var c=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,d));if(null!=b.excludeCells){for(var f=[],e=0;e<c.length;e++)0>b.excludeCells.indexOf(c[e].id)&&f.push(c[e]);c=f}return c};Graph.prototype.getCellsById=
-function(b){var d=[];if(null!=b)for(var c=0;c<b.length;c++)if("*"==b[c])var f=this.model.getRoot(),d=d.concat(this.model.filterDescendants(function(b){return b!=f},f));else{var e=this.model.getCell(b[c]);null!=e&&d.push(e)}return d};var M=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(b){return M.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");
-if(b.length>this.hiddenTags.length)return!1;for(var d=0;d<b.length;d++)if(0>mxUtils.indexOf(this.hiddenTags,b[d]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,d,c,f){var e=[];if(null!=b){d=null!=d?d:this.model.getDescendants(this.model.getRoot());for(var g=0,l={},m=0;m<b.length;m++)0<b[m].length&&(l[b[m]]=!0,g++);for(m=0;m<d.length;m++)if(c&&this.model.getParent(d[m])==this.model.root||this.model.isVertex(d[m])||this.model.isEdge(d[m])){var k=this.getTagsForCell(d[m]),n=!1;if(0<k.length&&
-(k=k.split(" "),k.length>=b.length)){for(var q=n=0;q<k.length&&n<g;q++)null!=l[k[q]]&&n++;n=n==g}n&&(1!=f||this.isCellVisible(d[m]))&&e.push(d[m])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(b){for(var d=null,c=[],f=0;f<b.length;f++){var e=this.getTagsForCell(b[f]),c=[];if(0<e.length){for(var e=e.split(" "),g={},l=0;l<e.length;l++)if(null==d||null!=d[e[l]])g[e[l]]=!0,c.push(e[l]);
-d=g}else return[]}return c};Graph.prototype.getTagsForCells=function(b){for(var d=[],c={},f=0;f<b.length;f++){var e=this.getTagsForCell(b[f]);if(0<e.length)for(var e=e.split(" "),g=0;g<e.length;g++)null==c[e[g]]&&(c[e[g]]=!0,d.push(e[g]))}return d};Graph.prototype.getTagsForCell=function(b){return this.getAttributeForCell(b,"tags","")};Graph.prototype.addTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){for(var f=this.getTagsForCell(b[c]),
-e=f.split(" "),g=!1,l=0;l<d.length;l++){var m=mxUtils.trim(d[l]);""!=m&&0>mxUtils.indexOf(e,m)&&(f=0<f.length?f+" "+m:m,g=!0)}g&&this.setAttributeForCell(b[c],"tags",f)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){var f=this.getTagsForCell(b[c]);if(0<f.length){for(var e=f.split(" "),g=!1,l=0;l<d.length;l++){var m=mxUtils.indexOf(e,d[l]);0<=m&&(e.splice(m,1),g=!0)}g&&this.setAttributeForCell(b[c],
-"tags",e.join(" "))}}}finally{this.model.endUpdate()}}};Graph.prototype.toggleCells=function(b){this.model.beginUpdate();try{for(var d=0;d<b.length;d++)this.model.setVisible(b[d],!this.model.isVisible(b[d]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(b,d){this.model.beginUpdate();try{for(var c=0;c<b.length;c++)this.model.setVisible(b[c],d)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(b,d,c,f){for(var e=0;e<b.length;e++)this.highlightCell(b[e],
-d,c,f)};Graph.prototype.highlightCell=function(b,d,c,f){d=null!=d?d:mxConstants.DEFAULT_VALID_COLOR;c=null!=c?c:1E3;b=this.view.getState(b);if(null!=b){var e=Math.max(5,mxUtils.getValue(b.style,mxConstants.STYLE_STROKEWIDTH,1)+4),g=new mxCellHighlight(this,d,e,!1);null!=f&&(g.opacity=f);g.highlight(b);window.setTimeout(function(){null!=g.shape&&(mxUtils.setPrefixedStyle(g.shape.node.style,"transition","all 1200ms ease-in-out"),g.shape.node.style.opacity=0);window.setTimeout(function(){g.destroy()},
-1200)},c)}};Graph.prototype.addSvgShadow=function(b,d,c,f){c=null!=c?c:!1;f=null!=f?f:!0;var e=b.ownerDocument,g=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"filter"):e.createElement("filter");g.setAttribute("id",this.shadowId);var l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):e.createElement("feGaussianBlur");l.setAttribute("in","SourceAlpha");l.setAttribute("stdDeviation",this.svgShadowBlur);l.setAttribute("result","blur");g.appendChild(l);l=null!=
-e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feOffset"):e.createElement("feOffset");l.setAttribute("in","blur");l.setAttribute("dx",this.svgShadowSize);l.setAttribute("dy",this.svgShadowSize);l.setAttribute("result","offsetBlur");g.appendChild(l);l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feFlood"):e.createElement("feFlood");l.setAttribute("flood-color",this.svgShadowColor);l.setAttribute("flood-opacity",this.svgShadowOpacity);l.setAttribute("result","offsetColor");
-g.appendChild(l);l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feComposite"):e.createElement("feComposite");l.setAttribute("in","offsetColor");l.setAttribute("in2","offsetBlur");l.setAttribute("operator","in");l.setAttribute("result","offsetBlur");g.appendChild(l);l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feBlend"):e.createElement("feBlend");l.setAttribute("in","SourceGraphic");l.setAttribute("in2","offsetBlur");g.appendChild(l);l=b.getElementsByTagName("defs");
-0==l.length?(e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=b.firstChild?b.insertBefore(e,b.firstChild):b.appendChild(e)):e=l[0];e.appendChild(g);c||(d=null!=d?d:b.getElementsByTagName("g")[0],null!=d&&(d.setAttribute("filter","url(#"+this.shadowId+")"),!isNaN(parseInt(b.getAttribute("width")))&&f&&(b.setAttribute("width",parseInt(b.getAttribute("width"))+6),b.setAttribute("height",parseInt(b.getAttribute("height"))+6),d=b.getAttribute("viewBox"),
-null!=d&&0<d.length&&(d=d.split(" "),3<d.length&&(w=parseFloat(d[2])+6,h=parseFloat(d[3])+6,b.setAttribute("viewBox",d[0]+" "+d[1]+" "+w+" "+h))))));return g};Graph.prototype.setShadowVisible=function(b,d){mxClient.IS_SVG&&!mxClient.IS_SF&&(d=null!=d?d:!0,(this.shadowVisible=b)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),d&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=
+b.actions&&this.executeCustomActions(b.actions))};Graph.prototype.executeCustomActions=function(b,d){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),null!=this.pendingExecuteNextAction&&this.pendingExecuteNextAction(),this.fireEvent(new mxEventObject("stopExecutingCustomActions"));else{this.executingCustomActions=!0;var c=!1,g=0,e=0,f=mxUtils.bind(this,function(){c||(c=!0,this.model.beginUpdate())}),l=mxUtils.bind(this,
+function(){c&&(c=!1,this.model.endUpdate())}),m=mxUtils.bind(this,function(){0<g&&g--;0==g&&k()}),k=mxUtils.bind(this,function(){if(e<b.length){var c=this.stoppingCustomActions,n=b[e++],q=[];if(null!=n.open)if(l(),this.isCustomLink(n.open)){if(!this.customLinkClicked(n.open))return}else this.openLink(n.open);null==n.wait||c||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;m()}),g++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,
+""!=n.wait?parseInt(n.wait):1E3),l());null!=n.opacity&&null!=n.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(n.opacity,!0)),n.opacity.value);null!=n.fadeIn&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(n.fadeIn,!0)),0,1,m,c?0:n.fadeIn.delay));null!=n.fadeOut&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(n.fadeOut,!0)),1,0,m,c?0:n.fadeOut.delay));null!=n.wipeIn&&(q=q.concat(this.createWipeAnimations(this.getCellsForAction(n.wipeIn,
+!0),!0)));null!=n.wipeOut&&(q=q.concat(this.createWipeAnimations(this.getCellsForAction(n.wipeOut,!0),!1)));null!=n.toggle&&(f(),this.toggleCells(this.getCellsForAction(n.toggle,!0)));if(null!=n.show){f();var u=this.getCellsForAction(n.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(u),1);this.setCellsVisible(u,!0)}null!=n.hide&&(f(),u=this.getCellsForAction(n.hide,!0),Graph.setOpacityForNodes(this.getNodesForCells(u),0),this.setCellsVisible(u,!1));null!=n.toggleStyle&&null!=n.toggleStyle.key&&
+(f(),this.toggleCellStyles(n.toggleStyle.key,null!=n.toggleStyle.defaultValue?n.toggleStyle.defaultValue:"0",this.getCellsForAction(n.toggleStyle,!0)));null!=n.style&&null!=n.style.key&&(f(),this.setCellStyles(n.style.key,n.style.value,this.getCellsForAction(n.style,!0)));u=[];null!=n.select&&this.isEnabled()&&(u=this.getCellsForAction(n.select),this.setSelectionCells(u));null!=n.highlight&&(u=this.getCellsForAction(n.highlight),this.highlightCells(u,n.highlight.color,n.highlight.duration,n.highlight.opacity));
+null!=n.scroll&&(u=this.getCellsForAction(n.scroll));null!=n.viewbox&&this.fitWindow(n.viewbox,n.viewbox.border);0<u.length&&this.scrollCellToVisible(u[0]);if(null!=n.tags){u=[];null!=n.tags.hidden&&(u=u.concat(n.tags.hidden));if(null!=n.tags.visible)for(var p=this.getAllTags(),v=0;v<p.length;v++)0>mxUtils.indexOf(n.tags.visible,p[v])&&0>mxUtils.indexOf(u,p[v])&&u.push(p[v]);this.hiddenTags=u;this.refresh()}0<q.length&&(g++,this.executeAnimations(q,m,c?1:n.steps,c?0:n.delay));0==g?k():l()}else this.stoppingCustomActions=
+this.executingCustomActions=!1,l(),null!=d&&d()});k()}};Graph.prototype.doUpdateCustomLinksForCell=function(b,d){var c=this.getLinkForCell(d);null!=c&&"data:action/json,"==c.substring(0,17)&&this.setLinkForCell(d,this.updateCustomLink(b,c));if(this.isHtmlLabel(d)){var g=document.createElement("div");g.innerHTML=this.sanitizeHtml(this.getLabel(d));for(var e=g.getElementsByTagName("a"),f=!1,l=0;l<e.length;l++)c=e[l].getAttribute("href"),null!=c&&"data:action/json,"==c.substring(0,17)&&(e[l].setAttribute("href",
+this.updateCustomLink(b,c)),f=!0);f&&this.labelChanged(d,g.innerHTML)}};Graph.prototype.updateCustomLink=function(b,d){if("data:action/json,"==d.substring(0,17))try{var c=JSON.parse(d.substring(17));null!=c.actions&&(this.updateCustomLinkActions(b,c.actions),d="data:action/json,"+JSON.stringify(c))}catch(ca){}return d};Graph.prototype.updateCustomLinkActions=function(b,d){for(var c=0;c<d.length;c++){var g=d[c],e;for(e in g)this.updateCustomLinkAction(b,g[e],"cells"),this.updateCustomLinkAction(b,
+g[e],"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(b,d,c){if(null!=d&&null!=d[c]){for(var g=[],e=0;e<d[c].length;e++)if("*"==d[c][e])g.push(d[c][e]);else{var f=b[d[c][e]];null!=f?""!=f&&g.push(f):g.push(d[c][e])}d[c]=g}};Graph.prototype.getCellsForAction=function(b,d){var c=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,d));if(null!=b.excludeCells){for(var g=[],e=0;e<c.length;e++)0>b.excludeCells.indexOf(c[e].id)&&g.push(c[e]);c=g}return c};Graph.prototype.getCellsById=
+function(b){var d=[];if(null!=b)for(var c=0;c<b.length;c++)if("*"==b[c])var g=this.model.getRoot(),d=d.concat(this.model.filterDescendants(function(b){return b!=g},g));else{var e=this.model.getCell(b[c]);null!=e&&d.push(e)}return d};var M=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(b){return M.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");
+if(b.length>this.hiddenTags.length)return!1;for(var d=0;d<b.length;d++)if(0>mxUtils.indexOf(this.hiddenTags,b[d]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,d,c,g){var e=[];if(null!=b){d=null!=d?d:this.model.getDescendants(this.model.getRoot());for(var f=0,l={},m=0;m<b.length;m++)0<b[m].length&&(l[b[m]]=!0,f++);for(m=0;m<d.length;m++)if(c&&this.model.getParent(d[m])==this.model.root||this.model.isVertex(d[m])||this.model.isEdge(d[m])){var k=this.getTagsForCell(d[m]),n=!1;if(0<k.length&&
+(k=k.split(" "),k.length>=b.length)){for(var q=n=0;q<k.length&&n<f;q++)null!=l[k[q]]&&n++;n=n==f}n&&(1!=g||this.isCellVisible(d[m]))&&e.push(d[m])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(b){for(var d=null,c=[],g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]),c=[];if(0<e.length){for(var e=e.split(" "),f={},l=0;l<e.length;l++)if(null==d||null!=d[e[l]])f[e[l]]=!0,c.push(e[l]);
+d=f}else return[]}return c};Graph.prototype.getTagsForCells=function(b){for(var d=[],c={},g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]);if(0<e.length)for(var e=e.split(" "),f=0;f<e.length;f++)null==c[e[f]]&&(c[e[f]]=!0,d.push(e[f]))}return d};Graph.prototype.getTagsForCell=function(b){return this.getAttributeForCell(b,"tags","")};Graph.prototype.addTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){for(var g=this.getTagsForCell(b[c]),
+e=g.split(" "),f=!1,l=0;l<d.length;l++){var m=mxUtils.trim(d[l]);""!=m&&0>mxUtils.indexOf(e,m)&&(g=0<g.length?g+" "+m:m,f=!0)}f&&this.setAttributeForCell(b[c],"tags",g)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){var g=this.getTagsForCell(b[c]);if(0<g.length){for(var e=g.split(" "),f=!1,l=0;l<d.length;l++){var m=mxUtils.indexOf(e,d[l]);0<=m&&(e.splice(m,1),f=!0)}f&&this.setAttributeForCell(b[c],
+"tags",e.join(" "))}}}finally{this.model.endUpdate()}}};Graph.prototype.toggleCells=function(b){this.model.beginUpdate();try{for(var d=0;d<b.length;d++)this.model.setVisible(b[d],!this.model.isVisible(b[d]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(b,d){this.model.beginUpdate();try{for(var c=0;c<b.length;c++)this.model.setVisible(b[c],d)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(b,d,c,g){for(var e=0;e<b.length;e++)this.highlightCell(b[e],
+d,c,g)};Graph.prototype.highlightCell=function(b,d,c,g){d=null!=d?d:mxConstants.DEFAULT_VALID_COLOR;c=null!=c?c:1E3;b=this.view.getState(b);if(null!=b){var e=Math.max(5,mxUtils.getValue(b.style,mxConstants.STYLE_STROKEWIDTH,1)+4),f=new mxCellHighlight(this,d,e,!1);null!=g&&(f.opacity=g);f.highlight(b);window.setTimeout(function(){null!=f.shape&&(mxUtils.setPrefixedStyle(f.shape.node.style,"transition","all 1200ms ease-in-out"),f.shape.node.style.opacity=0);window.setTimeout(function(){f.destroy()},
+1200)},c)}};Graph.prototype.addSvgShadow=function(b,d,c,g){c=null!=c?c:!1;g=null!=g?g:!0;var e=b.ownerDocument,f=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"filter"):e.createElement("filter");f.setAttribute("id",this.shadowId);var l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):e.createElement("feGaussianBlur");l.setAttribute("in","SourceAlpha");l.setAttribute("stdDeviation",this.svgShadowBlur);l.setAttribute("result","blur");f.appendChild(l);l=null!=
+e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feOffset"):e.createElement("feOffset");l.setAttribute("in","blur");l.setAttribute("dx",this.svgShadowSize);l.setAttribute("dy",this.svgShadowSize);l.setAttribute("result","offsetBlur");f.appendChild(l);l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feFlood"):e.createElement("feFlood");l.setAttribute("flood-color",this.svgShadowColor);l.setAttribute("flood-opacity",this.svgShadowOpacity);l.setAttribute("result","offsetColor");
+f.appendChild(l);l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feComposite"):e.createElement("feComposite");l.setAttribute("in","offsetColor");l.setAttribute("in2","offsetBlur");l.setAttribute("operator","in");l.setAttribute("result","offsetBlur");f.appendChild(l);l=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feBlend"):e.createElement("feBlend");l.setAttribute("in","SourceGraphic");l.setAttribute("in2","offsetBlur");f.appendChild(l);l=b.getElementsByTagName("defs");
+0==l.length?(e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=b.firstChild?b.insertBefore(e,b.firstChild):b.appendChild(e)):e=l[0];e.appendChild(f);c||(d=null!=d?d:b.getElementsByTagName("g")[0],null!=d&&(d.setAttribute("filter","url(#"+this.shadowId+")"),!isNaN(parseInt(b.getAttribute("width")))&&g&&(b.setAttribute("width",parseInt(b.getAttribute("width"))+6),b.setAttribute("height",parseInt(b.getAttribute("height"))+6),d=b.getAttribute("viewBox"),
+null!=d&&0<d.length&&(d=d.split(" "),3<d.length&&(w=parseFloat(d[2])+6,h=parseFloat(d[3])+6,b.setAttribute("viewBox",d[0]+" "+d[1]+" "+w+" "+h))))));return f};Graph.prototype.setShadowVisible=function(b,d){mxClient.IS_SVG&&!mxClient.IS_SF&&(d=null!=d?d:!0,(this.shadowVisible=b)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),d&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=
function(){if(null==this.defaultParent){var b=this.model.getChildCount(this.model.root),d,c=0;do d=this.model.getChildAt(this.model.root,c);while(c++<b&&"1"==mxUtils.getValue(this.getCellStyle(d),"locked","0"));null!=d&&this.setDefaultParent(d)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn=
[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.bpmn2=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bpmn.xml",SHAPES_PATH+"/bpmn/mxBpmnShape2.js"];mxStencilRegistry.libraries.c4=[SHAPES_PATH+"/mxC4.js"];mxStencilRegistry.libraries.cisco19=[SHAPES_PATH+"/mxCisco19.js",STENCIL_PATH+"/cisco19.xml"];mxStencilRegistry.libraries.cisco_safe=[SHAPES_PATH+"/mxCiscoSafe.js",STENCIL_PATH+"/cisco_safe/architecture.xml",STENCIL_PATH+"/cisco_safe/business_icons.xml",
STENCIL_PATH+"/cisco_safe/capability.xml",STENCIL_PATH+"/cisco_safe/design.xml",STENCIL_PATH+"/cisco_safe/iot_things_icons.xml",STENCIL_PATH+"/cisco_safe/people_places_things_icons.xml",STENCIL_PATH+"/cisco_safe/security_icons.xml",STENCIL_PATH+"/cisco_safe/technology_icons.xml",STENCIL_PATH+"/cisco_safe/threat.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.kubernetes=[SHAPES_PATH+"/mxKubernetes.js",
@@ -3339,152 +3348,152 @@ mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js
"/mxBasic.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"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",
STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.uml25=[SHAPES_PATH+"/mxUML25.js"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+
-"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var d=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?d="mxgraph.er":"sysML"==b.substring(0,5)&&(d="mxgraph.sysml"));return d};var aa=mxMarker.createMarker;mxMarker.createMarker=function(b,d,c,f,e,g,l,m,k,n){if(null!=c&&null==mxMarker.markers[c]){var q=this.getPackageForType(c);null!=
-q&&mxStencilRegistry.getStencil(q)}return aa.apply(this,arguments)};PrintDialog.prototype.create=function(b,d){function c(){p.value=Math.max(1,Math.min(m,Math.max(parseInt(p.value),parseInt(x.value))));x.value=Math.max(1,Math.min(m,Math.min(parseInt(p.value),parseInt(x.value))))}function f(d){function c(d,c,g){var l=d.useCssTransforms,m=d.currentTranslate,k=d.currentScale,n=d.view.translate,q=d.view.scale;d.useCssTransforms&&(d.useCssTransforms=!1,d.currentTranslate=new mxPoint(0,0),d.currentScale=
-1,d.view.translate=new mxPoint(0,0),d.view.scale=1);var u=d.getGraphBounds(),x=0,p=0,v=E.get(),t=1/d.pageScale,C=y.checked;if(C)var t=parseInt(O.value),N=parseInt(I.value),t=Math.min(v.height*N/(u.height/d.view.scale),v.width*t/(u.width/d.view.scale));else t=parseInt(z.value)/(100*d.pageScale),isNaN(t)&&(f=1/d.pageScale,z.value="100 %");v=mxRectangle.fromRectangle(v);v.width=Math.ceil(v.width*f);v.height=Math.ceil(v.height*f);t*=f;!C&&d.pageVisible?(u=d.getPageLayout(),x-=u.x*v.width,p-=u.y*v.height):
-C=!0;if(null==c){c=PrintDialog.createPrintPreview(d,t,v,0,x,p,C);c.pageSelector=!1;c.mathEnabled=!1;x=b.getCurrentFile();null!=x&&(c.title=x.getTitle());var A=c.writeHead;c.writeHead=function(c){A.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)c.writeln('<style type="text/css">'),c.writeln(Editor.mathJaxWebkitCss),c.writeln("</style>");mxClient.IS_GC&&(c.writeln('<style type="text/css">'),c.writeln("@media print {"),c.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),c.writeln("}"),
-c.writeln("</style>"));null!=b.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(b.editor.fontCss),c.writeln("</style>"));for(var f=d.getCustomFonts(),e=0;e<f.length;e++){var g=f[e].name,l=f[e].url;Graph.isCssFontUrl(l)?c.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(l)+'" charset="UTF-8" type="text/css">'):(c.writeln('<style type="text/css">'),c.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(g)+'";\nsrc: url("'+mxUtils.htmlEntities(l)+'");\n}'),c.writeln("</style>"))}};
-if("undefined"!==typeof MathJax){var D=c.renderPage;c.renderPage=function(d,c,f,e,g,l){var m=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var k=D.apply(this,arguments);mxClient.NO_FO=m;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:k.className="geDisableMathJax";return k}}x=null;p=e.enableFlowAnimation;e.enableFlowAnimation=!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(x=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),
-e.refresh());c.open(null,null,g,!0);e.enableFlowAnimation=p;null!=x&&(e.stylesheet=x,e.refresh())}else{v=d.background;if(null==v||""==v||v==mxConstants.NONE)v="#ffffff";c.backgroundColor=v;c.autoOrigin=C;c.appendGraph(d,t,x,p,g,!0);g=d.getCustomFonts();if(null!=c.wnd)for(x=0;x<g.length;x++)p=g[x].name,C=g[x].url,Graph.isCssFontUrl(C)?c.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(C)+'" charset="UTF-8" type="text/css">'):(c.wnd.document.writeln('<style type="text/css">'),
-c.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(p)+'";\nsrc: url("'+mxUtils.htmlEntities(C)+'");\n}'),c.wnd.document.writeln("</style>"))}l&&(d.useCssTransforms=l,d.currentTranslate=m,d.currentScale=k,d.view.translate=n,d.view.scale=q);return c}var f=parseInt(L.value)/100;isNaN(f)&&(f=1,L.value="100 %");var f=.75*f,g=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(g=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());var l=x.value,m=p.value,n=!q.checked,
-u=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,q.checked,l,m,y.checked,O.value,I.value,parseInt(z.value)/100,parseInt(L.value)/100,E.get());else{n&&(n=l==k&&m==k);if(!n&&null!=b.pages&&b.pages.length){var v=0,n=b.pages.length-1;q.checked||(v=parseInt(l)-1,n=parseInt(m)-1);for(var t=v;t<=n;t++){var C=b.pages[t],l=C==b.currentPage?e:null;if(null==l){var l=b.createTemporaryGraph(e.stylesheet),m=!0,v=!1,N=null,A=null;null==C.viewState&&null==C.root&&b.updatePageRoot(C);null!=C.viewState&&
-(m=C.viewState.pageVisible,v=C.viewState.mathEnabled,N=C.viewState.background,A=C.viewState.backgroundImage,l.extFonts=C.viewState.extFonts);l.background=N;l.backgroundImage=null!=A?new mxImage(A.src,A.width,A.height):null;l.pageVisible=m;l.mathEnabled=v;var D=l.getGlobalVariable;l.getGlobalVariable=function(d){return"page"==d?C.getName():"pagenumber"==d?t+1:"pagecount"==d?null!=b.pages?b.pages.length:1:D.apply(this,arguments)};document.body.appendChild(l.container);b.updatePageRoot(C);l.model.setRoot(C.root)}u=
-c(l,u,t!=n);l!=e&&l.container.parentNode.removeChild(l.container)}}else u=c(e);null==u?b.handleError({message:mxResources.get("errorUpdatingPreview")}):(u.mathEnabled&&(n=u.wnd.document,d&&(u.wnd.IMMEDIATE_PRINT=!0),n.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),u.closeDocument(),!u.mathEnabled&&d&&PrintDialog.printPreview(u));null!=g&&(e.stylesheet=g,e.refresh())}}var e=b.editor.graph,g=document.createElement("div"),l=document.createElement("h3");
-l.style.width="100%";l.style.textAlign="center";l.style.marginTop="0px";mxUtils.write(l,d||mxResources.get("print"));g.appendChild(l);var m=1,k=1,n=document.createElement("div");n.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var q=document.createElement("input");q.style.cssText="margin-right:8px;margin-bottom:8px;";q.setAttribute("value","all");q.setAttribute("type","radio");q.setAttribute("name","pages-printdialog");n.appendChild(q);l=document.createElement("span");
-mxUtils.write(l,mxResources.get("printAllPages"));n.appendChild(l);mxUtils.br(n);var u=q.cloneNode(!0);q.setAttribute("checked","checked");u.setAttribute("value","range");n.appendChild(u);l=document.createElement("span");mxUtils.write(l,mxResources.get("pages")+":");n.appendChild(l);var x=document.createElement("input");x.style.cssText="margin:0 8px 0 8px;";x.setAttribute("value","1");x.setAttribute("type","number");x.setAttribute("min","1");x.style.width="50px";n.appendChild(x);l=document.createElement("span");
-mxUtils.write(l,mxResources.get("to"));n.appendChild(l);var p=x.cloneNode(!0);n.appendChild(p);mxEvent.addListener(x,"focus",function(){u.checked=!0});mxEvent.addListener(p,"focus",function(){u.checked=!0});mxEvent.addListener(x,"change",c);mxEvent.addListener(p,"change",c);if(null!=b.pages&&(m=b.pages.length,null!=b.currentPage))for(l=0;l<b.pages.length;l++)if(b.currentPage==b.pages[l]){k=l+1;x.value=k;p.value=k;break}x.setAttribute("max",m);p.setAttribute("max",m);b.isPagesEnabled()?1<m&&(g.appendChild(n),
-u.checked=!0):u.checked=!0;var v=document.createElement("div");v.style.marginBottom="10px";var t=document.createElement("input");t.style.marginRight="8px";t.setAttribute("value","adjust");t.setAttribute("type","radio");t.setAttribute("name","printZoom");v.appendChild(t);l=document.createElement("span");mxUtils.write(l,mxResources.get("adjustTo"));v.appendChild(l);var z=document.createElement("input");z.style.cssText="margin:0 8px 0 8px;";z.setAttribute("value","100 %");z.style.width="50px";v.appendChild(z);
-mxEvent.addListener(z,"focus",function(){t.checked=!0});g.appendChild(v);var n=n.cloneNode(!1),y=t.cloneNode(!0);y.setAttribute("value","fit");t.setAttribute("checked","checked");l=document.createElement("div");l.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";l.appendChild(y);n.appendChild(l);v=document.createElement("table");v.style.display="inline-block";var C=document.createElement("tbody"),N=document.createElement("tr"),D=N.cloneNode(!0),M=document.createElement("td"),
-F=M.cloneNode(!0),K=M.cloneNode(!0),H=M.cloneNode(!0),G=M.cloneNode(!0),J=M.cloneNode(!0);M.style.textAlign="right";H.style.textAlign="right";mxUtils.write(M,mxResources.get("fitTo"));var O=document.createElement("input");O.style.cssText="margin:0 8px 0 8px;";O.setAttribute("value","1");O.setAttribute("min","1");O.setAttribute("type","number");O.style.width="40px";F.appendChild(O);l=document.createElement("span");mxUtils.write(l,mxResources.get("fitToSheetsAcross"));K.appendChild(l);mxUtils.write(H,
-mxResources.get("fitToBy"));var I=O.cloneNode(!0);G.appendChild(I);mxEvent.addListener(O,"focus",function(){y.checked=!0});mxEvent.addListener(I,"focus",function(){y.checked=!0});l=document.createElement("span");mxUtils.write(l,mxResources.get("fitToSheetsDown"));J.appendChild(l);N.appendChild(M);N.appendChild(F);N.appendChild(K);D.appendChild(H);D.appendChild(G);D.appendChild(J);C.appendChild(N);C.appendChild(D);v.appendChild(C);n.appendChild(v);g.appendChild(n);n=document.createElement("div");l=
-document.createElement("div");l.style.fontWeight="bold";l.style.marginBottom="12px";mxUtils.write(l,mxResources.get("paperSize"));n.appendChild(l);l=document.createElement("div");l.style.marginBottom="12px";var E=PageSetupDialog.addPageFormatPanel(l,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);n.appendChild(l);l=document.createElement("span");mxUtils.write(l,mxResources.get("pageScale"));n.appendChild(l);var L=document.createElement("input");L.style.cssText="margin:0 8px 0 8px;";
-L.setAttribute("value","100 %");L.style.width="60px";n.appendChild(L);g.appendChild(n);l=document.createElement("div");l.style.cssText="text-align:right;margin:48px 0 0 0;";n=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});n.className="geBtn";b.editor.cancelFirst&&l.appendChild(n);b.isOffline()||(v=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),v.className="geBtn",l.appendChild(v));PrintDialog.previewEnabled&&(v=
-mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();f(!1)}),v.className="geBtn",l.appendChild(v));v=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();f(!0)});v.className="geBtn gePrimaryBtn";l.appendChild(v);b.editor.cancelFirst||l.appendChild(n);g.appendChild(l);this.container=g};var N=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=
-this.page.viewState){this.ignoreColor||(this.page.viewState.background=this.color);if(!this.ignoreImage){var b=this.image;null!=b&&null!=b.src&&Graph.isPageLink(b.src)&&(b={originalSrc:b.src});this.page.viewState.backgroundImage=b}null!=this.format&&(this.page.viewState.pageFormat=this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)}}else N.apply(this,arguments),null!=this.mathEnabled&&
+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var d=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?d="mxgraph.er":"sysML"==b.substring(0,5)&&(d="mxgraph.sysml"));return d};var Z=mxMarker.createMarker;mxMarker.createMarker=function(b,d,c,g,e,f,l,m,k,n){if(null!=c&&null==mxMarker.markers[c]){var q=this.getPackageForType(c);null!=q&&
+mxStencilRegistry.getStencil(q)}return Z.apply(this,arguments)};PrintDialog.prototype.create=function(b,d){function c(){v.value=Math.max(1,Math.min(m,Math.max(parseInt(v.value),parseInt(p.value))));p.value=Math.max(1,Math.min(m,Math.min(parseInt(v.value),parseInt(p.value))))}function g(d){function c(d,c,f){var l=d.useCssTransforms,m=d.currentTranslate,k=d.currentScale,n=d.view.translate,q=d.view.scale;d.useCssTransforms&&(d.useCssTransforms=!1,d.currentTranslate=new mxPoint(0,0),d.currentScale=1,
+d.view.translate=new mxPoint(0,0),d.view.scale=1);var u=d.getGraphBounds(),p=0,v=0,x=E.get(),t=1/d.pageScale,C=y.checked;if(C)var t=parseInt(O.value),L=parseInt(I.value),t=Math.min(x.height*L/(u.height/d.view.scale),x.width*t/(u.width/d.view.scale));else t=parseInt(z.value)/(100*d.pageScale),isNaN(t)&&(g=1/d.pageScale,z.value="100 %");x=mxRectangle.fromRectangle(x);x.width=Math.ceil(x.width*g);x.height=Math.ceil(x.height*g);t*=g;!C&&d.pageVisible?(u=d.getPageLayout(),p-=u.x*x.width,v-=u.y*x.height):
+C=!0;if(null==c){c=PrintDialog.createPrintPreview(d,t,x,0,p,v,C);c.pageSelector=!1;c.mathEnabled=!1;p=b.getCurrentFile();null!=p&&(c.title=p.getTitle());var D=c.writeHead;c.writeHead=function(c){D.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)c.writeln('<style type="text/css">'),c.writeln(Editor.mathJaxWebkitCss),c.writeln("</style>");mxClient.IS_GC&&(c.writeln('<style type="text/css">'),c.writeln("@media print {"),c.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),c.writeln("}"),
+c.writeln("</style>"));null!=b.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(b.editor.fontCss),c.writeln("</style>"));for(var g=d.getCustomFonts(),e=0;e<g.length;e++){var f=g[e].name,l=g[e].url;Graph.isCssFontUrl(l)?c.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(l)+'" charset="UTF-8" type="text/css">'):(c.writeln('<style type="text/css">'),c.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(f)+'";\nsrc: url("'+mxUtils.htmlEntities(l)+'");\n}'),c.writeln("</style>"))}};
+if("undefined"!==typeof MathJax){var M=c.renderPage;c.renderPage=function(d,c,g,e,f,l){var m=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var k=M.apply(this,arguments);mxClient.NO_FO=m;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:k.className="geDisableMathJax";return k}}p=null;v=e.enableFlowAnimation;e.enableFlowAnimation=!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(p=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),
+e.refresh());c.open(null,null,f,!0);e.enableFlowAnimation=v;null!=p&&(e.stylesheet=p,e.refresh())}else{x=d.background;if(null==x||""==x||x==mxConstants.NONE)x="#ffffff";c.backgroundColor=x;c.autoOrigin=C;c.appendGraph(d,t,p,v,f,!0);f=d.getCustomFonts();if(null!=c.wnd)for(p=0;p<f.length;p++)v=f[p].name,C=f[p].url,Graph.isCssFontUrl(C)?c.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(C)+'" charset="UTF-8" type="text/css">'):(c.wnd.document.writeln('<style type="text/css">'),
+c.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(v)+'";\nsrc: url("'+mxUtils.htmlEntities(C)+'");\n}'),c.wnd.document.writeln("</style>"))}l&&(d.useCssTransforms=l,d.currentTranslate=m,d.currentScale=k,d.view.translate=n,d.view.scale=q);return c}var g=parseInt(N.value)/100;isNaN(g)&&(g=1,N.value="100 %");var g=.75*g,f=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(f=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());var l=p.value,m=v.value,n=!q.checked,
+u=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,q.checked,l,m,y.checked,O.value,I.value,parseInt(z.value)/100,parseInt(N.value)/100,E.get());else{n&&(n=l==k&&m==k);if(!n&&null!=b.pages&&b.pages.length){var x=0,n=b.pages.length-1;q.checked||(x=parseInt(l)-1,n=parseInt(m)-1);for(var t=x;t<=n;t++){var C=b.pages[t],l=C==b.currentPage?e:null;if(null==l){var l=b.createTemporaryGraph(e.stylesheet),m=!0,x=!1,L=null,D=null;null==C.viewState&&null==C.root&&b.updatePageRoot(C);null!=C.viewState&&
+(m=C.viewState.pageVisible,x=C.viewState.mathEnabled,L=C.viewState.background,D=C.viewState.backgroundImage,l.extFonts=C.viewState.extFonts);l.background=L;l.backgroundImage=null!=D?new mxImage(D.src,D.width,D.height):null;l.pageVisible=m;l.mathEnabled=x;var M=l.getGlobalVariable;l.getGlobalVariable=function(d){return"page"==d?C.getName():"pagenumber"==d?t+1:"pagecount"==d?null!=b.pages?b.pages.length:1:M.apply(this,arguments)};document.body.appendChild(l.container);b.updatePageRoot(C);l.model.setRoot(C.root)}u=
+c(l,u,t!=n);l!=e&&l.container.parentNode.removeChild(l.container)}}else u=c(e);null==u?b.handleError({message:mxResources.get("errorUpdatingPreview")}):(u.mathEnabled&&(n=u.wnd.document,d&&(u.wnd.IMMEDIATE_PRINT=!0),n.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),u.closeDocument(),!u.mathEnabled&&d&&PrintDialog.printPreview(u));null!=f&&(e.stylesheet=f,e.refresh())}}var e=b.editor.graph,f=document.createElement("div"),l=document.createElement("h3");
+l.style.width="100%";l.style.textAlign="center";l.style.marginTop="0px";mxUtils.write(l,d||mxResources.get("print"));f.appendChild(l);var m=1,k=1,n=document.createElement("div");n.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var q=document.createElement("input");q.style.cssText="margin-right:8px;margin-bottom:8px;";q.setAttribute("value","all");q.setAttribute("type","radio");q.setAttribute("name","pages-printdialog");n.appendChild(q);l=document.createElement("span");
+mxUtils.write(l,mxResources.get("printAllPages"));n.appendChild(l);mxUtils.br(n);var u=q.cloneNode(!0);q.setAttribute("checked","checked");u.setAttribute("value","range");n.appendChild(u);l=document.createElement("span");mxUtils.write(l,mxResources.get("pages")+":");n.appendChild(l);var p=document.createElement("input");p.style.cssText="margin:0 8px 0 8px;";p.setAttribute("value","1");p.setAttribute("type","number");p.setAttribute("min","1");p.style.width="50px";n.appendChild(p);l=document.createElement("span");
+mxUtils.write(l,mxResources.get("to"));n.appendChild(l);var v=p.cloneNode(!0);n.appendChild(v);mxEvent.addListener(p,"focus",function(){u.checked=!0});mxEvent.addListener(v,"focus",function(){u.checked=!0});mxEvent.addListener(p,"change",c);mxEvent.addListener(v,"change",c);if(null!=b.pages&&(m=b.pages.length,null!=b.currentPage))for(l=0;l<b.pages.length;l++)if(b.currentPage==b.pages[l]){k=l+1;p.value=k;v.value=k;break}p.setAttribute("max",m);v.setAttribute("max",m);b.isPagesEnabled()?1<m&&(f.appendChild(n),
+u.checked=!0):u.checked=!0;var x=document.createElement("div");x.style.marginBottom="10px";var t=document.createElement("input");t.style.marginRight="8px";t.setAttribute("value","adjust");t.setAttribute("type","radio");t.setAttribute("name","printZoom");x.appendChild(t);l=document.createElement("span");mxUtils.write(l,mxResources.get("adjustTo"));x.appendChild(l);var z=document.createElement("input");z.style.cssText="margin:0 8px 0 8px;";z.setAttribute("value","100 %");z.style.width="50px";x.appendChild(z);
+mxEvent.addListener(z,"focus",function(){t.checked=!0});f.appendChild(x);var n=n.cloneNode(!1),y=t.cloneNode(!0);y.setAttribute("value","fit");t.setAttribute("checked","checked");l=document.createElement("div");l.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";l.appendChild(y);n.appendChild(l);x=document.createElement("table");x.style.display="inline-block";var C=document.createElement("tbody"),L=document.createElement("tr"),D=L.cloneNode(!0),M=document.createElement("td"),
+F=M.cloneNode(!0),G=M.cloneNode(!0),K=M.cloneNode(!0),H=M.cloneNode(!0),J=M.cloneNode(!0);M.style.textAlign="right";K.style.textAlign="right";mxUtils.write(M,mxResources.get("fitTo"));var O=document.createElement("input");O.style.cssText="margin:0 8px 0 8px;";O.setAttribute("value","1");O.setAttribute("min","1");O.setAttribute("type","number");O.style.width="40px";F.appendChild(O);l=document.createElement("span");mxUtils.write(l,mxResources.get("fitToSheetsAcross"));G.appendChild(l);mxUtils.write(K,
+mxResources.get("fitToBy"));var I=O.cloneNode(!0);H.appendChild(I);mxEvent.addListener(O,"focus",function(){y.checked=!0});mxEvent.addListener(I,"focus",function(){y.checked=!0});l=document.createElement("span");mxUtils.write(l,mxResources.get("fitToSheetsDown"));J.appendChild(l);L.appendChild(M);L.appendChild(F);L.appendChild(G);D.appendChild(K);D.appendChild(H);D.appendChild(J);C.appendChild(L);C.appendChild(D);x.appendChild(C);n.appendChild(x);f.appendChild(n);n=document.createElement("div");l=
+document.createElement("div");l.style.fontWeight="bold";l.style.marginBottom="12px";mxUtils.write(l,mxResources.get("paperSize"));n.appendChild(l);l=document.createElement("div");l.style.marginBottom="12px";var E=PageSetupDialog.addPageFormatPanel(l,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);n.appendChild(l);l=document.createElement("span");mxUtils.write(l,mxResources.get("pageScale"));n.appendChild(l);var N=document.createElement("input");N.style.cssText="margin:0 8px 0 8px;";
+N.setAttribute("value","100 %");N.style.width="60px";n.appendChild(N);f.appendChild(n);l=document.createElement("div");l.style.cssText="text-align:right;margin:48px 0 0 0;";n=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});n.className="geBtn";b.editor.cancelFirst&&l.appendChild(n);b.isOffline()||(x=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),x.className="geBtn",l.appendChild(x));PrintDialog.previewEnabled&&(x=
+mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();g(!1)}),x.className="geBtn",l.appendChild(x));x=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();g(!0)});x.className="geBtn gePrimaryBtn";l.appendChild(x);b.editor.cancelFirst||l.appendChild(n);f.appendChild(l);this.container=f};var L=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=
+this.page.viewState){this.ignoreColor||(this.page.viewState.background=this.color);if(!this.ignoreImage){var b=this.image;null!=b&&null!=b.src&&Graph.isPageLink(b.src)&&(b={originalSrc:b.src});this.page.viewState.backgroundImage=b}null!=this.format&&(this.page.viewState.pageFormat=this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)}}else L.apply(this,arguments),null!=this.mathEnabled&&
this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible)};Editor.prototype.useCanvasForExport=!1;try{var O=document.createElement("canvas"),U=new Image;U.onload=function(){try{O.getContext("2d").drawImage(U,0,0);var b=O.toDataURL("image/png");Editor.prototype.useCanvasForExport=
null!=b&&6<b.length}catch(I){}};U.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(G){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(b,e,k){k.ui=b.ui;return e};b.afterDecode=function(b,e,k){k.previousColor=k.color;k.previousImage=k.image;k.previousFormat=k.format;null!=k.foldingEnabled&&(k.foldingEnabled=!k.foldingEnabled);null!=k.mathEnabled&&(k.mathEnabled=!k.mathEnabled);null!=k.shadowVisible&&(k.shadowVisible=!k.shadowVisible);return k};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(b,e,k){k.ui=b.ui;return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="15.9.6";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
+(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(b,e,k){k.ui=b.ui;return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.0.0";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.nativeFileSupport=
-!mxClient.IS_OP&&!EditorUi.isElectronApp&&"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,
-noteMargin:10,messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(b,c,e,g,m,k,u){k=null!=k?k:0<=b.indexOf("NetworkError")||0<=b.indexOf("SecurityError")||0<=b.indexOf("NS_ERROR_FAILURE")||0<=b.indexOf("out of memory")?"CONFIG":
-"SEVERE";if(EditorUi.enableLogging&&"1"!=urlParams.dev)try{if(b!=EditorUi.lastErrorMessage&&(null==b||null==c||-1==b.indexOf("Script error")&&-1==b.indexOf("extension"))&&null!=b&&0>b.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=b;var d=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";m=null!=m?m:Error(b);(new Image).src=d+"/log?severity="+k+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(b)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+
-encodeURIComponent(e)+(null!=g?":colno:"+encodeURIComponent(g):"")+(null!=m&&null!=m.stack?"&stack="+encodeURIComponent(m.stack):"")}}catch(y){}try{u||null==window.console||console.error(k,b,c,e,g,m)}catch(y){}};EditorUi.logEvent=function(b){if("1"==urlParams.dev)EditorUi.debug("logEvent",b);else if(EditorUi.enableLogging)try{var d=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=d+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=b?"&data="+encodeURIComponent(JSON.stringify(b)):
-"")}catch(l){}};EditorUi.sendReport=function(b,c){if("1"==urlParams.dev)EditorUi.debug("sendReport",b);else if(EditorUi.enableLogging)try{c=null!=c?c:5E4,b.length>c&&(b=b.substring(0,c)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(b))}catch(l){}};EditorUi.debug=function(){try{if(null!=window.console&&"1"==urlParams.test){for(var b=[(new Date).toISOString()],c=0;c<arguments.length;c++)null!=
-arguments[c]&&b.push(arguments[c]);console.log.apply(console,b)}}catch(l){}};EditorUi.removeChildNodes=function(b){for(;null!=b.firstChild;)b.removeChild(b.firstChild)};EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>";EditorUi.prototype.mode=null;EditorUi.prototype.timeout=Editor.prototype.timeout;EditorUi.prototype.sidebarFooterHeight=38;EditorUi.prototype.defaultCustomShapeStyle=
-"shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;";EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.maxTextWidth=520;EditorUi.prototype.resampleThreshold=1E5;
-EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.maxTextBytes=5E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport=!1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=!0;EditorUi.prototype.embedExportBorder=8;EditorUi.prototype.embedExportBackground=null;(function(){EditorUi.prototype.useCanvasForExport=!1;
-EditorUi.prototype.jpgSupported=!1;try{var b=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!b.getContext||!b.getContext("2d"))}catch(m){}try{var c=document.createElement("canvas"),e=new Image;e.onload=function(){try{c.getContext("2d").drawImage(e,0,0);var b=c.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=b&&6<b.length}catch(n){}};e.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(m){}try{c=
-document.createElement("canvas");c.width=c.height=1;var g=c.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==g.match("image/jpeg")}catch(m){}})();EditorUi.prototype.openLink=function(b,c,e){return this.editor.graph.openLink(b,c,e)};EditorUi.prototype.showSplash=function(b){};EditorUi.prototype.getLocalData=function(b,c){c(localStorage.getItem(b))};EditorUi.prototype.setLocalData=function(b,c,e){localStorage.setItem(b,c);null!=e&&e()};EditorUi.prototype.removeLocalData=function(b,c){localStorage.removeItem(b);
-c()};EditorUi.prototype.setMathEnabled=function(b){this.editor.graph.mathEnabled=b;this.editor.updateGraphComponents();this.editor.graph.refresh();this.editor.graph.defaultMathEnabled=b;this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(b){return this.editor.graph.mathEnabled};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(b){return this.isOfflineApp()||!navigator.onLine||!b&&("1"==urlParams.stealth||
-"1"==urlParams.lockdown)};EditorUi.prototype.createSpinner=function(b,c,e){var d=null==b||null==c;e=null!=e?e:24;var f=new Spinner({lines:12,length:e,width:Math.round(e/3),radius:Math.round(e/2),rotate:0,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),g=f.spin;f.spin=function(e,l){var m=!1;this.active||(g.call(this,e),this.active=!0,null!=l&&(d&&(c=Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,b=document.body.clientWidth/
-2-2),m=document.createElement("div"),m.style.position="absolute",m.style.whiteSpace="nowrap",m.style.background="#4B4243",m.style.color="white",m.style.fontFamily=Editor.defaultHtmlFont,m.style.fontSize="9pt",m.style.padding="6px",m.style.paddingLeft="10px",m.style.paddingRight="10px",m.style.zIndex=2E9,m.style.left=Math.max(0,b)+"px",m.style.top=Math.max(0,c+70)+"px",mxUtils.setPrefixedStyle(m.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(m.style,"transform","translate(-50%,-50%)"),Editor.isDarkMode()||
-mxUtils.setPrefixedStyle(m.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=l.substring(l.length-3,l.length)&&"!"!=l.charAt(l.length-1)&&(l+="..."),m.innerHTML=l,e.appendChild(m),f.status=m),this.pause=mxUtils.bind(this,function(){var b=function(){};this.active&&(b=mxUtils.bind(this,function(){this.spin(e,l)}));this.stop();return b}),m=!0);return m};var l=f.stop;f.stop=function(){l.call(this);this.active=!1;null!=f.status&&null!=f.status.parentNode&&f.status.parentNode.removeChild(f.status);f.status=
-null};f.pause=function(){return function(){}};return f};EditorUi.prototype.isCompatibleString=function(b){try{var d=mxUtils.parseXml(b),c=this.editor.extractGraphModel(d.documentElement,!0);return null!=c&&0==c.getElementsByTagName("parsererror").length}catch(q){}return!1};EditorUi.prototype.isVisioData=function(b){return 8<b.length&&(208==b.charCodeAt(0)&&207==b.charCodeAt(1)&&17==b.charCodeAt(2)&&224==b.charCodeAt(3)&&161==b.charCodeAt(4)&&177==b.charCodeAt(5)&&26==b.charCodeAt(6)&&225==b.charCodeAt(7)||
-80==b.charCodeAt(0)&&75==b.charCodeAt(1)&&3==b.charCodeAt(2)&&4==b.charCodeAt(3)||80==b.charCodeAt(0)&&75==b.charCodeAt(1)&&3==b.charCodeAt(2)&&6==b.charCodeAt(3))};EditorUi.prototype.isRemoteVisioData=function(b){return 8<b.length&&(208==b.charCodeAt(0)&&207==b.charCodeAt(1)&&17==b.charCodeAt(2)&&224==b.charCodeAt(3)&&161==b.charCodeAt(4)&&177==b.charCodeAt(5)&&26==b.charCodeAt(6)&&225==b.charCodeAt(7)||60==b.charCodeAt(0)&&63==b.charCodeAt(1)&&120==b.charCodeAt(2)&&109==b.charCodeAt(3)&&108==b.charCodeAt(3))};
-var b=EditorUi.prototype.createKeyHandler;EditorUi.prototype.createKeyHandler=function(d){var c=b.apply(this,arguments);if(!this.editor.chromeless||this.editor.editable){var e=c.getFunction,g=this.editor.graph,m=this;c.getFunction=function(b){if(g.isSelectionEmpty()&&null!=m.pages&&0<m.pages.length){var d=m.getSelectedPageIndex();if(mxEvent.isShiftDown(b)){if(37==b.keyCode)return function(){0<d&&m.movePage(d,d-1)};if(38==b.keyCode)return function(){0<d&&m.movePage(d,0)};if(39==b.keyCode)return function(){d<
-m.pages.length-1&&m.movePage(d,d+1)};if(40==b.keyCode)return function(){d<m.pages.length-1&&m.movePage(d,m.pages.length-1)}}else if(mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b)){if(37==b.keyCode)return function(){0<d&&m.selectNextPage(!1)};if(38==b.keyCode)return function(){0<d&&m.selectPage(m.pages[0])};if(39==b.keyCode)return function(){d<m.pages.length-1&&m.selectNextPage(!0)};if(40==b.keyCode)return function(){d<m.pages.length-1&&m.selectPage(m.pages[m.pages.length-1])}}}return e.apply(this,
-arguments)}}return c};var c=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(b){var d=c.apply(this,arguments);if(null==d)try{var e=b.indexOf("&lt;mxfile ");if(0<=e){var g=b.lastIndexOf("&lt;/mxfile&gt;");g>e&&(d=b.substring(e,g+15).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var m=mxUtils.parseXml(b),k=this.editor.extractGraphModel(m.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),
-d=null!=k?mxUtils.getXml(k):""}catch(u){}return d};EditorUi.prototype.validateFileData=function(b){if(null!=b&&0<b.length){var d=b.indexOf('<meta charset="utf-8">');0<=d&&(b=b.slice(0,d)+'<meta charset="utf-8"/>'+b.slice(d+23-1,b.length));b=Graph.zapGremlins(b)}return b};EditorUi.prototype.replaceFileData=function(b){b=this.validateFileData(b);b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:null;var d=null!=b?this.editor.extractGraphModel(b,!0):null;null!=d&&(b=d);if(null!=b){d=this.editor.graph;
-d.model.beginUpdate();try{var c=null!=this.pages?this.pages.slice():null,e=b.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<e.length||1==e.length&&e[0].hasAttribute("name")){this.fileNode=b;this.pages=null!=this.pages?this.pages:[];for(var g=e.length-1;0<=g;g--){var k=this.updatePageRoot(new DiagramPage(e[g]));null==k.getName()&&k.setName(mxResources.get("pageWithNumber",[g+1]));d.model.execute(new ChangePage(this,k,0==g?k:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=
-b.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),d.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(b),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=c)for(g=0;g<c.length;g++)d.model.execute(new ChangePage(this,c[g],null))}finally{d.model.endUpdate()}}};EditorUi.prototype.createFileData=
-function(b,c,e,g,m,k,u,p,t,x,F){c=null!=c?c:this.editor.graph;m=null!=m?m:!1;t=null!=t?t:!0;var d,f=null;null==e||e.getMode()==App.MODE_DEVICE||e.getMode()==App.MODE_BROWSER?d="_blank":f=d=g;if(null==b)return"";var l=b;if("mxfile"!=l.nodeName.toLowerCase()){if(F){var n=b.ownerDocument.createElement("diagram");n.setAttribute("id",Editor.guid());n.appendChild(b)}else{n=Graph.zapGremlins(mxUtils.getXml(b));l=Graph.compress(n);if(Graph.decompress(l)!=n)return n;n=b.ownerDocument.createElement("diagram");
-n.setAttribute("id",Editor.guid());mxUtils.setTextContent(n,l)}l=b.ownerDocument.createElement("mxfile");l.appendChild(n)}x?(l=l.cloneNode(!0),l.removeAttribute("modified"),l.removeAttribute("host"),l.removeAttribute("agent"),l.removeAttribute("etag"),l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type")):(l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("pages"),l.removeAttribute("type"),
-mxClient.IS_CHROMEAPP?l.setAttribute("host","Chrome"):EditorUi.isElectronApp?l.setAttribute("host","Electron"):l.setAttribute("host",window.location.hostname),l.setAttribute("modified",(new Date).toISOString()),l.setAttribute("agent",navigator.appVersion),l.setAttribute("version",EditorUi.VERSION),l.setAttribute("etag",Editor.guid()),b=null!=e?e.getMode():this.mode,null!=b&&l.setAttribute("type",b),1<l.getElementsByTagName("diagram").length&&null!=this.pages&&l.setAttribute("pages",this.pages.length));
-F=F?mxUtils.getPrettyXml(l):mxUtils.getXml(l);if(!k&&!m&&(u||null!=e&&/(\.html)$/i.test(e.getTitle())))F=this.getHtml2(mxUtils.getXml(l),c,null!=e?e.getTitle():null,d,f);else if(k||!m&&null!=e&&/(\.svg)$/i.test(e.getTitle()))null==e||e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER||(g=null),F=this.getEmbeddedSvg(F,c,g,null,p,t,f);return F};EditorUi.prototype.getXmlFileData=function(b,c,e,g){b=null!=b?b:!0;c=null!=c?c:!1;e=null!=e?e:!Editor.compressXml;var d=this.editor.getGraphXml(b,g);
-if(b&&null!=this.fileNode&&null!=this.currentPage)if(b=function(b){var c=b.getElementsByTagName("mxGraphModel"),c=0<c.length?c[0]:null;null==c&&e?(c=mxUtils.trim(mxUtils.getTextContent(b)),b=b.cloneNode(!1),0<c.length&&(c=Graph.decompress(c),null!=c&&0<c.length&&b.appendChild(mxUtils.parseXml(c).documentElement))):null==c||e?b=b.cloneNode(!0):(b=b.cloneNode(!1),mxUtils.setTextContent(b,Graph.compressNode(c)));d.appendChild(b)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,
-Graph.compressNode(d)),d=this.fileNode.cloneNode(!1),c)b(this.currentPage.node);else for(c=0;c<this.pages.length;c++){var f=this.pages[c],l=f.node;if(f!=this.currentPage)if(f.needsUpdate){var k=new mxCodec(mxUtils.createXmlDocument()),k=k.encode(new mxGraphModel(f.root));this.editor.graph.saveViewState(f.viewState,k,null,g);EditorUi.removeChildNodes(l);mxUtils.setTextContent(l,Graph.compressNode(k));delete f.needsUpdate}else g&&(this.updatePageRoot(f),null!=f.viewState.backgroundImage&&(null!=f.viewState.backgroundImage.originalSrc?
-f.viewState.backgroundImage=this.createImageForPageLink(f.viewState.backgroundImage.originalSrc,f):Graph.isPageLink(f.viewState.backgroundImage.src)&&(f.viewState.backgroundImage=this.createImageForPageLink(f.viewState.backgroundImage.src,f))),null!=f.viewState.backgroundImage&&null!=f.viewState.backgroundImage.originalSrc&&(k=new mxCodec(mxUtils.createXmlDocument()),k=k.encode(new mxGraphModel(f.root)),this.editor.graph.saveViewState(f.viewState,k,null,g),l=l.cloneNode(!1),mxUtils.setTextContent(l,
-Graph.compressNode(k))));b(l)}return d};EditorUi.prototype.anonymizeString=function(b,c){for(var d=[],f=0;f<b.length;f++){var e=b.charAt(f);0<=EditorUi.ignoredAnonymizedChars.indexOf(e)?d.push(e):isNaN(parseInt(e))?e.toLowerCase()!=e?d.push(String.fromCharCode(65+Math.round(25*Math.random()))):e.toUpperCase()!=e?d.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(e)?d.push(" "):d.push("?"):d.push(c?"0":Math.round(9*Math.random()))}return d.join("")};EditorUi.prototype.anonymizePatch=
-function(b){if(null!=b[EditorUi.DIFF_INSERT])for(var d=0;d<b[EditorUi.DIFF_INSERT].length;d++)try{var c=mxUtils.parseXml(b[EditorUi.DIFF_INSERT][d].data).documentElement.cloneNode(!1);null!=c.getAttribute("name")&&c.setAttribute("name",this.anonymizeString(c.getAttribute("name")));b[EditorUi.DIFF_INSERT][d].data=mxUtils.getXml(c)}catch(n){b[EditorUi.DIFF_INSERT][d].data=n.message}if(null!=b[EditorUi.DIFF_UPDATE]){for(var e in b[EditorUi.DIFF_UPDATE]){var g=b[EditorUi.DIFF_UPDATE][e];null!=g.name&&
-(g.name=this.anonymizeString(g.name));null!=g.cells&&(d=mxUtils.bind(this,function(b){var d=g.cells[b];if(null!=d){for(var c in d)null!=d[c].value&&(d[c].value="["+d[c].value.length+"]"),null!=d[c].xmlValue&&(d[c].xmlValue="["+d[c].xmlValue.length+"]"),null!=d[c].style&&(d[c].style="["+d[c].style.length+"]"),0==Object.keys(d[c]).length&&delete d[c];0==Object.keys(d).length&&delete g.cells[b]}}),d(EditorUi.DIFF_INSERT),d(EditorUi.DIFF_UPDATE),0==Object.keys(g.cells).length&&delete g.cells);0==Object.keys(g).length&&
-delete b[EditorUi.DIFF_UPDATE][e]}0==Object.keys(b[EditorUi.DIFF_UPDATE]).length&&delete b[EditorUi.DIFF_UPDATE]}return b};EditorUi.prototype.anonymizeAttributes=function(b,c){if(null!=b.attributes)for(var d=0;d<b.attributes.length;d++)"as"!=b.attributes[d].name&&b.setAttribute(b.attributes[d].name,this.anonymizeString(b.attributes[d].value,c));if(null!=b.childNodes)for(d=0;d<b.childNodes.length;d++)this.anonymizeAttributes(b.childNodes[d],c)};EditorUi.prototype.anonymizeNode=function(b,c){for(var d=
-b.getElementsByTagName("mxCell"),f=0;f<d.length;f++)null!=d[f].getAttribute("value")&&d[f].setAttribute("value","["+d[f].getAttribute("value").length+"]"),null!=d[f].getAttribute("xmlValue")&&d[f].setAttribute("xmlValue","["+d[f].getAttribute("xmlValue").length+"]"),null!=d[f].getAttribute("style")&&d[f].setAttribute("style","["+d[f].getAttribute("style").length+"]"),null!=d[f].parentNode&&"root"!=d[f].parentNode.nodeName&&null!=d[f].parentNode.parentNode&&(d[f].setAttribute("id",d[f].parentNode.getAttribute("id")),
-d[f].parentNode.parentNode.replaceChild(d[f],d[f].parentNode));return b};EditorUi.prototype.synchronizeCurrentFile=function(b){var d=this.getCurrentFile();null!=d&&(d.savingFile?this.handleError({message:mxResources.get("busy")}):!b&&d.invalidChecksum?d.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(d.clearAutosave(),this.editor.setStatus(""),b?d.reloadFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,
-function(b){d.handleFileError(b,!0)})):d.synchronizeFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(b){d.handleFileError(b,!0)}))))};EditorUi.prototype.getFileData=function(b,c,e,g,k,n,u,p,t,x,F){k=null!=k?k:!0;n=null!=n?n:!1;var d=this.editor.graph;if(c||!b&&null!=t&&/(\.svg)$/i.test(t.getTitle())){var f=null!=d.themes&&"darkTheme"==d.defaultThemeName;x=!1;if(f||null!=this.pages&&this.currentPage!=this.pages[0]){var l=d.getGlobalVariable,
-d=this.createTemporaryGraph(f?d.getDefaultStylesheet():d.getStylesheet());d.setBackgroundImage=this.editor.graph.setBackgroundImage;var m=this.pages[0];this.currentPage==m?d.setBackgroundImage(this.editor.graph.backgroundImage):null!=m.viewState&&null!=m.viewState&&d.setBackgroundImage(m.viewState.backgroundImage);d.getGlobalVariable=function(b){return"page"==b?m.getName():"pagenumber"==b?1:l.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(m.root)}}u=null!=u?u:this.getXmlFileData(k,
-n,x,F);t=null!=t?t:this.getCurrentFile();b=this.createFileData(u,d,t,window.location.href,b,c,e,g,k,p,x);d!=this.editor.graph&&d.container.parentNode.removeChild(d.container);return b};EditorUi.prototype.getHtml=function(b,c,e,g,k,n){n=null!=n?n:!0;var d=null,f=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=c){var d=n?c.getGraphBounds():c.getBoundingBox(c.getSelectionCells()),l=c.view.scale;n=Math.floor(d.x/l-c.view.translate.x);l=Math.floor(d.y/l-c.view.translate.y);d=c.background;null==k&&
-(c=this.getBasenames().join(";"),0<c.length&&(f=EditorUi.drawHost+"/embed.js?s="+c));b.setAttribute("x0",n);b.setAttribute("y0",l)}null!=b&&(b.setAttribute("pan","1"),b.setAttribute("zoom","1"),b.setAttribute("resize","0"),b.setAttribute("fit","0"),b.setAttribute("border","20"),b.setAttribute("links","1"),null!=g&&b.setAttribute("edit",g));null!=k&&(k=k.replace(/&/g,"&amp;"));b=null!=b?Graph.zapGremlins(mxUtils.getXml(b)):"";g=Graph.compress(b);Graph.decompress(g)!=b&&(g=encodeURIComponent(b));return(null==
-k?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=k?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==k?null!=e?"<title>"+mxUtils.htmlEntities(e)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=k?'<meta http-equiv="refresh" content="0;URL=\''+k+"'\"/>\n":"")+"</head>\n<body"+(null==k&&null!=d&&d!=mxConstants.NONE?' style="background-color:'+d+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+
-g+"</div>\n</div>\n"+(null==k?'<script type="text/javascript" src="'+f+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+k+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(b,c,e,g,k){c=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=k&&(k=k.replace(/&/g,"&amp;"));b={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,
-resize:!0,xml:Graph.zapGremlins(b),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(b.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==k?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=k?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==k?null!=e?"<title>"+mxUtils.htmlEntities(e)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=k?'<meta http-equiv="refresh" content="0;URL=\''+
-k+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(b))+'"></div>\n'+(null==k?'<script type="text/javascript" src="'+c+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+k+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=
-function(b){b=this.validateFileData(b);this.pages=this.fileNode=this.currentPage=null;b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:null;var d=Editor.extractParserError(b,mxResources.get("invalidOrMissingFile"));if(d)throw Error(mxResources.get("notADiagramFile")+" ("+d+")");d=null!=b?this.editor.extractGraphModel(b,!0):null;null!=d&&(b=d);if(null!=b&&"mxfile"==b.nodeName&&(d=b.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){var c=
-null;this.fileNode=b;this.pages=[];for(var e=0;e<d.length;e++)null==d[e].getAttribute("id")&&d[e].setAttribute("id",e),b=new DiagramPage(d[e]),null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[e+1])),this.pages.push(b),null!=urlParams["page-id"]&&b.getId()==urlParams["page-id"]&&(c=b);this.currentPage=null!=c?c:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];b=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=b&&(this.fileNode=b.ownerDocument.createElement("mxfile"),
-this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(b);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var g=urlParams["layer-ids"].split(" ");b={};for(e=0;e<g.length;e++)b[g[e]]=!0;for(var k=this.editor.graph.getModel(),u=k.getChildren(k.root),e=0;e<u.length;e++){var p=u[e];k.setVisible(p,b[p.id]||
-!1)}}catch(y){}};EditorUi.prototype.getBaseFilename=function(b){var d=this.getCurrentFile(),d=null!=d&&null!=d.getTitle()?d.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(d)||/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||/(\.png)$/i.test(d))d=d.substring(0,d.lastIndexOf("."));/(\.drawio)$/i.test(d)&&(d=d.substring(0,d.lastIndexOf(".")));!b&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(d=d+"-"+
-this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(b,c,e,g,k,n,u,p,t,x,F,H){try{g=null!=g?g:this.editor.graph.isSelectionEmpty();var d=this.getBaseFilename(!k),f=d+("xml"==b||"pdf"==b&&F?".drawio":"")+"."+b;if("xml"==b){var l=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,g,k,null,null,null,c);this.saveData(f,b,l,"text/xml")}else if("html"==b)l=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(f,b,l,"text/html");else if("svg"!=b&&"xmlsvg"!=
-b||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==b?f=d+".png":"jpeg"==b&&(f=d+".jpg"),this.saveRequest(f,b,mxUtils.bind(this,function(d,c){try{var f=this.editor.graph.pageVisible;null!=n&&(this.editor.graph.pageVisible=n);var e=this.createDownloadRequest(d,b,g,c,u,k,p,t,x,F,H);this.editor.graph.pageVisible=f;return e}catch(U){this.handleError(U)}}));else{var m=null,q=mxUtils.bind(this,function(b){b.length<=MAX_REQUEST_SIZE?this.saveData(f,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},
-mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(m)}))});if("svg"==b){var v=this.editor.graph.background;if(u||v==mxConstants.NONE)v=null;var y=this.editor.graph.getSvg(v,null,null,null,null,g);e&&this.editor.graph.addSvgShadow(y);this.editor.convertImages(y,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();q(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(b))})))}else f=d+".svg",m=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();
-q(b)}),g)}}catch(M){this.handleError(M)}};EditorUi.prototype.createDownloadRequest=function(b,c,e,g,k,n,u,p,t,x,F){var d=this.editor.graph,f=d.getGraphBounds();e=this.getFileData(!0,null,null,null,e,0==n?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var l="",m="";if(f.width*f.height>MAX_AREA||e.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};x=x?"1":"0";"pdf"==c&&(null!=F?m="&from="+F.from+"&to="+F.to:0==n&&(m="&allPages=1"));if("xmlpng"==c&&(x="1",c="png",null!=this.pages&&
-null!=this.currentPage))for(n=0;n<this.pages.length;n++)if(this.pages[n]==this.currentPage){l="&from="+n;break}n=d.background;"png"!=c&&"pdf"!=c||!k?k||null!=n&&n!=mxConstants.NONE||(n="#ffffff"):n=mxConstants.NONE;k={globalVars:d.getExportVariables()};t&&(k.grid={size:d.gridSize,steps:d.view.gridSteps,color:d.view.gridColor});Graph.translateDiagram&&(k.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+l+m+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+g+"&embedXml="+
-x+"&xml="+encodeURIComponent(e)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(k))+(null!=u?"&scale="+u:"")+(null!=p?"&border="+p:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,e){var d=window.location.hash,f=mxUtils.bind(this,function(f){var e=null!=b.data?b.data:"";null!=f&&0<f.length&&(0<e.length&&(e+="\n"),e+=f);f=new LocalFile(this,"csv"!=b.format&&0<e.length?e:this.emptyDiagramXml,null!=
-urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);f.getHash=function(){return d};this.fileLoaded(f);"csv"==b.format&&this.importCsv(e,mxUtils.bind(this,function(b){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=b.update){var g=null!=b.interval?parseInt(b.interval):6E4,l=null,k=mxUtils.bind(this,function(){var d=this.currentPage;mxUtils.post(b.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,
-function(b){d===this.currentPage&&(200<=b.getStatus()&&300>=b.getStatus()?(this.updateDiagram(b.getText()),m()):this.handleError({message:mxResources.get("error")+" "+b.getStatus()}))}),mxUtils.bind(this,function(b){this.handleError(b)}))}),m=mxUtils.bind(this,function(){window.clearTimeout(l);l=window.setTimeout(k,g)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){m();k()}));m();k()}null!=c&&c()});null!=b.url&&0<b.url.length?this.editor.loadUrl(b.url,mxUtils.bind(this,function(b){f(b)}),
-mxUtils.bind(this,function(b){null!=e&&e(b)})):f("")};EditorUi.prototype.updateDiagram=function(b){function d(b){var d=new mxCellOverlay(b.image||g.warningImage,b.tooltip,b.align,b.valign,b.offset);d.addListener(mxEvent.CLICK,function(d,c){e.alert(b.tooltip)});return d}var c=null,e=this;if(null!=b&&0<b.length&&(c=mxUtils.parseXml(b),b=null!=c?c.documentElement:null,null!=b&&"updates"==b.nodeName)){var g=this.editor.graph,k=g.getModel();k.beginUpdate();var u=null;try{for(b=b.firstChild;null!=b;){if("update"==
-b.nodeName){var p=k.getCell(b.getAttribute("id"));if(null!=p){try{var t=b.getAttribute("value");if(null!=t){var x=mxUtils.parseXml(t).documentElement;if(null!=x)if("1"==x.getAttribute("replace-value"))k.setValue(p,x);else for(var F=x.attributes,H=0;H<F.length;H++)g.setAttributeForCell(p,F[H].nodeName,0<F[H].nodeValue.length?F[H].nodeValue:null)}}catch(M){null!=window.console&&console.log("Error in value for "+p.id+": "+M)}try{var z=b.getAttribute("style");null!=z&&g.model.setStyle(p,z)}catch(M){null!=
-window.console&&console.log("Error in style for "+p.id+": "+M)}try{var D=b.getAttribute("icon");if(null!=D){var L=0<D.length?JSON.parse(D):null;null!=L&&L.append||g.removeCellOverlays(p);null!=L&&g.addCellOverlay(p,d(L))}}catch(M){null!=window.console&&console.log("Error in icon for "+p.id+": "+M)}try{var E=b.getAttribute("geometry");if(null!=E){var E=JSON.parse(E),J=g.getCellGeometry(p);if(null!=J){J=J.clone();for(key in E){var C=parseFloat(E[key]);"dx"==key?J.x+=C:"dy"==key?J.y+=C:"dw"==key?J.width+=
-C:"dh"==key?J.height+=C:J[key]=parseFloat(E[key])}g.model.setGeometry(p,J)}}}catch(M){null!=window.console&&console.log("Error in icon for "+p.id+": "+M)}}}else if("model"==b.nodeName){for(var K=b.firstChild;null!=K&&K.nodeType!=mxConstants.NODETYPE_ELEMENT;)K=K.nextSibling;null!=K&&(new mxCodec(b.firstChild)).decode(K,k)}else if("view"==b.nodeName){if(b.hasAttribute("scale")&&(g.view.scale=parseFloat(b.getAttribute("scale"))),b.hasAttribute("dx")||b.hasAttribute("dy"))g.view.translate=new mxPoint(parseFloat(b.getAttribute("dx")||
-0),parseFloat(b.getAttribute("dy")||0))}else"fit"==b.nodeName&&(u=b.hasAttribute("max-scale")?parseFloat(b.getAttribute("max-scale")):1);b=b.nextSibling}}finally{k.endUpdate()}null!=u&&this.chromelessResize&&this.chromelessResize(!0,u)}return c};EditorUi.prototype.getCopyFilename=function(b,c){var d=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename,f="",e=d.lastIndexOf(".");0<=e&&(f=d.substring(e),d=d.substring(0,e));if(c)var g=new Date,e=g.getFullYear(),k=g.getMonth()+1,p=g.getDate(),
-t=g.getHours(),x=g.getMinutes(),g=g.getSeconds(),d=d+(" "+(e+"-"+k+"-"+p+"-"+t+"-"+x+"-"+g));return d=mxResources.get("copyOf",[d])+f};EditorUi.prototype.fileLoaded=function(b,c){var d=this.getCurrentFile();this.fileEditable=this.fileLoadedError=null;this.setCurrentFile(null);var e=!1;this.hideDialog();null!=d&&(EditorUi.debug("File.closed",[d]),d.removeListener(this.descriptorChangedListener),d.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var f=mxUtils.bind(this,function(){this.setGraphEnabled(!1);
-this.setCurrentFile(null);null!=d&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!c&&null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();c||this.showSplash()});if(null!=b)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility=
-"");this.openingFile=!0;this.setCurrentFile(b);b.addListener("descriptorChanged",this.descriptorChangedListener);b.addListener("contentChanged",this.descriptorChangedListener);b.open();delete this.openingFile;this.setGraphEnabled(!0);this.setMode(b.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();b.isEditable()?b.isModified()?(b.addUnsavedStatus(),null!=b.backupPatch&&b.patch([b.backupPatch])):this.editor.setStatus(""):
-this.editor.setStatus('<span class="geStatusAlert">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));e=!0;if(!this.isOffline()&&null!=b.getMode()){var g=
-"1"==urlParams.sketch?"sketch":uiTheme;if(null==g)g="default";else if("sketch"==g||"min"==g)g+=Editor.isDarkMode()?"-dark":"-light";EditorUi.logEvent({category:b.getMode().toUpperCase()+"-OPEN-FILE-"+b.getHash(),action:"size_"+b.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+g})}EditorUi.debug("File.opened",[b]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));if(this.editor.editable&&this.mode==b.getMode()&&b.getMode()!=App.MODE_DEVICE&&null!=
-b.getMode())try{this.addRecent({id:b.getHash(),title:b.getTitle(),mode:b.getMode()})}catch(u){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(u){}}catch(u){this.fileLoadedError=u;if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+(null!=b?b.getHash():"none"),action:"message_"+u.message,label:"stack_"+u.stack})}catch(v){}g=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?
-window.location.search=this.getSearch(["url"]):null!=d?this.fileLoaded(d):f()});c?g():this.handleError(u,mxResources.get("errorLoadingFile"),g,!0,null,null,!0)}else f();return e};EditorUi.prototype.getHashValueForPages=function(b,c){var d=0,e=new mxGraphModel,f=new mxCodec;null!=c&&(c.byteCount=0,c.attrCount=0,c.eltCount=0,c.nodeCount=0);for(var g=0;g<b.length;g++){this.updatePageRoot(b[g]);var k=b[g].node.cloneNode(!1);k.removeAttribute("name");e.root=b[g].root;var p=f.encode(e);this.editor.graph.saveViewState(b[g].viewState,
-p,!0);p.removeAttribute("pageWidth");p.removeAttribute("pageHeight");k.appendChild(p);null!=c&&(c.eltCount+=k.getElementsByTagName("*").length,c.nodeCount+=k.getElementsByTagName("mxCell").length);d=(d<<5)-d+this.hashValue(k,function(b,d,c,e){return!e||"mxGeometry"!=b.nodeName&&"mxPoint"!=b.nodeName||"x"!=d&&"y"!=d&&"width"!=d&&"height"!=d?e&&"mxCell"==b.nodeName&&"previous"==d?null:c:Math.round(c)},c)<<0}return d};EditorUi.prototype.hashValue=function(b,c,e){var d=0;if(null!=b&&"object"===typeof b&&
-"number"===typeof b.nodeType&&"string"===typeof b.nodeName&&"function"===typeof b.getAttribute){null!=b.nodeName&&(d^=this.hashValue(b.nodeName,c,e));if(null!=b.attributes){null!=e&&(e.attrCount+=b.attributes.length);for(var f=0;f<b.attributes.length;f++){var g=b.attributes[f].name,l=null!=c?c(b,g,b.attributes[f].value,!0):b.attributes[f].value;null!=l&&(d^=this.hashValue(g,c,e)+this.hashValue(l,c,e))}}if(null!=b.childNodes)for(f=0;f<b.childNodes.length;f++)d=(d<<5)-d+this.hashValue(b.childNodes[f],
-c,e)<<0}else if(null!=b&&"function"!==typeof b){b=String(b);c=0;null!=e&&(e.byteCount+=b.length);for(f=0;f<b.length;f++)c=(c<<5)-c+b.charCodeAt(f)<<0;d^=c}return d};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(b,c,e,g,k,n,u){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?
-StorageFile.getFileContent(this,".scratchpad",mxUtils.bind(this,function(b){null==b&&(b=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,b,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(b){var d=mxUtils.createXmlDocument(),c=d.createElement("mxlibrary");mxUtils.setTextContent(c,JSON.stringify(b));d.appendChild(c);return mxUtils.getXml(d)};EditorUi.prototype.closeLibrary=function(b){null!=b&&(this.removeLibrarySidebar(b.getHash()),
-b.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(b.getHash()),".scratchpad"==b.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(b){var d=this.sidebar.palettes[b];if(null!=d){for(var c=0;c<d.length;c++)d[c].parentNode.removeChild(d[c]);delete this.sidebar.palettes[b]}};EditorUi.prototype.repositionLibrary=function(b){var d=this.sidebar.container;if(null==b){var c=this.sidebar.palettes["L.scratchpad"];null==c&&(c=this.sidebar.palettes.search);null!=c&&(b=c[c.length-
-1].nextSibling)}b=null!=b?b:d.firstChild.nextSibling.nextSibling;var c=d.lastChild,e=c.previousSibling;d.insertBefore(c,b);d.insertBefore(e,c)};EditorUi.prototype.loadLibrary=function(b,c){var d=mxUtils.parseXml(b.getData());if("mxlibrary"==d.documentElement.nodeName){var e=JSON.parse(mxUtils.getTextContent(d.documentElement));this.libraryLoaded(b,e,d.documentElement.getAttribute("title"),c)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(b){return""};
-EditorUi.prototype.libraryLoaded=function(b,c,e,g){if(null!=this.sidebar){b.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(b.getHash());".scratchpad"==b.title&&(this.scratchpad=b);var d=this.sidebar.palettes[b.getHash()],d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(b.getHash());var f=null,l=mxUtils.bind(this,function(d,c){0==d.length&&b.isEditable()?(null==f&&(f=document.createElement("div"),f.className="geDropTarget",mxUtils.write(f,mxResources.get("dragElementsHere"))),
-c.appendChild(f)):this.addLibraryEntries(d,c)});null!=this.sidebar&&null!=c&&this.sidebar.addEntries(c);null==e&&(e=b.getTitle(),null!=e&&/(\.xml)$/i.test(e)&&(e=e.substring(0,e.lastIndexOf("."))));var k=this.sidebar.addPalette(b.getHash(),e,null!=g?g:!0,mxUtils.bind(this,function(b){l(c,b)}));this.repositionLibrary(d);var q=k.parentNode.previousSibling;g=q.getAttribute("title");null!=g&&0<g.length&&".scratchpad"!=b.title&&q.setAttribute("title",this.getLibraryStorageHint(b)+"\n"+g);var p=document.createElement("div");
-p.style.position="absolute";p.style.right="0px";p.style.top="0px";p.style.padding="8px";p.style.backgroundColor="inherit";q.style.position="relative";var t=document.createElement("img");t.setAttribute("src",Editor.crossImage);t.setAttribute("title",mxResources.get("close"));t.setAttribute("valign","absmiddle");t.setAttribute("border","0");t.style.position="relative";t.style.top="2px";t.style.width="14px";t.style.cursor="pointer";t.style.margin="0 3px";Editor.isDarkMode()&&(t.style.filter="invert(100%)");
-var H=null;if(".scratchpad"!=b.title||this.closableScratchpad)p.appendChild(t),mxEvent.addListener(t,"click",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d)){var c=mxUtils.bind(this,function(){this.closeLibrary(b)});null!=H?this.confirm(mxResources.get("allChangesLost"),null,c,mxResources.get("cancel"),mxResources.get("discardChanges")):c();mxEvent.consume(d)}}));if(b.isEditable()){var z=this.editor.graph,D=null,L=mxUtils.bind(this,function(d){this.showLibraryDialog(b.getTitle(),k,c,b,b.getMode());
-mxEvent.consume(d)}),E=mxUtils.bind(this,function(d){b.setModified(!0);b.isAutosave()?(null!=D&&null!=D.parentNode&&D.parentNode.removeChild(D),D=t.cloneNode(!1),D.setAttribute("src",Editor.spinImage),D.setAttribute("title",mxResources.get("saving")),D.style.cursor="default",D.style.marginRight="2px",D.style.marginTop="-2px",p.insertBefore(D,p.firstChild),q.style.paddingRight=18*p.childNodes.length+"px",this.saveLibrary(b.getTitle(),c,b,b.getMode(),!0,!0,function(){null!=D&&null!=D.parentNode&&(D.parentNode.removeChild(D),
-q.style.paddingRight=18*p.childNodes.length+"px")})):null==H&&(H=t.cloneNode(!1),H.setAttribute("src",Editor.saveImage),H.setAttribute("title",mxResources.get("save")),p.insertBefore(H,p.firstChild),mxEvent.addListener(H,"click",mxUtils.bind(this,function(d){this.saveLibrary(b.getTitle(),c,b,b.getMode(),b.constructor==LocalLibrary,!0,function(){null==H||b.isModified()||(q.style.paddingRight=18*p.childNodes.length+"px",H.parentNode.removeChild(H),H=null)});mxEvent.consume(d)})),q.style.paddingRight=
-18*p.childNodes.length+"px")}),J=mxUtils.bind(this,function(b,d,e,g){b=z.cloneCells(mxUtils.sortCells(z.model.getTopmostCells(b)));for(var l=0;l<b.length;l++){var m=z.getCellGeometry(b[l]);null!=m&&m.translate(-d.x,-d.y)}k.appendChild(this.sidebar.createVertexTemplateFromCells(b,d.width,d.height,g||"",!0,!1,!1));b={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(b))),w:d.width,h:d.height};null!=g&&(b.title=g);c.push(b);E(e);null!=f&&null!=f.parentNode&&0<c.length&&(f.parentNode.removeChild(f),
-f=null)}),C=mxUtils.bind(this,function(b){if(z.isSelectionEmpty())z.getRubberband().isActive()?(z.getRubberband().execute(b),z.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d=z.getSelectionCells(),c=z.view.getBounds(d),e=z.view.scale;c.x/=e;c.y/=e;c.width/=e;c.height/=e;c.x-=z.view.translate.x;c.y-=z.view.translate.y;J(d,c)}mxEvent.consume(b)});mxEvent.addGestureListeners(k,function(){},mxUtils.bind(this,function(b){z.isMouseDown&&
-null!=z.panningManager&&null!=z.graphHandler.first&&(z.graphHandler.suspend(),null!=z.graphHandler.hint&&(z.graphHandler.hint.style.visibility="hidden"),k.style.backgroundColor="#f1f3f4",k.style.cursor="copy",z.panningManager.stop(),z.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){z.isMouseDown&&null!=z.panningManager&&null!=z.graphHandler&&(k.style.backgroundColor="",k.style.cursor="default",this.sidebar.showTooltips=!0,z.panningManager.stop(),z.graphHandler.reset(),z.isMouseDown=
-!1,z.autoScroll=!0,C(b),mxEvent.consume(b))}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(b){z.isMouseDown&&null!=z.graphHandler.first&&(z.graphHandler.resume(),null!=z.graphHandler.hint&&(z.graphHandler.hint.style.visibility="visible"),k.style.backgroundColor="",k.style.cursor="",z.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(k,"dragover",mxUtils.bind(this,function(b){k.style.backgroundColor="#f1f3f4";b.dataTransfer.dropEffect="copy";k.style.cursor="copy";this.sidebar.hideTooltip();
-b.stopPropagation();b.preventDefault()})),mxEvent.addListener(k,"drop",mxUtils.bind(this,function(b){k.style.cursor="";k.style.backgroundColor="";0<b.dataTransfer.files.length&&this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(d,e,g,m,n,q,p,u,x){if(null!=d&&"image/"==e.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,n,q),d)],d[0].vertex=!0,
-J(d,new mxRectangle(0,0,n,q),b,mxEvent.isAltDown(b)?null:p.substring(0,p.lastIndexOf(".")).replace(/_/g," ")),null!=f&&null!=f.parentNode&&0<c.length&&(f.parentNode.removeChild(f),f=null);else{var t=!1,v=mxUtils.bind(this,function(d,e){if(null!=d&&"application/pdf"==e){var g=Editor.extractGraphModelFromPdf(d);null!=g&&0<g.length&&(d=g)}if(null!=d)if(g=mxUtils.parseXml(d),"mxlibrary"==g.documentElement.nodeName)try{var m=JSON.parse(mxUtils.getTextContent(g.documentElement));l(m,k);c=c.concat(m);E(b);
-this.spinner.stop();t=!0}catch(ba){}else if("mxfile"==g.documentElement.nodeName)try{for(var n=g.documentElement.getElementsByTagName("diagram"),m=0;m<n.length;m++){var q=this.stringToCells(Editor.getDiagramNodeXml(n[m])),p=this.editor.graph.getBoundingBoxFromGeometry(q);J(q,new mxRectangle(0,0,p.width,p.height),b)}t=!0}catch(ba){null!=window.console&&console.log("error in drop handler:",ba)}t||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&
-0<c.length&&(f.parentNode.removeChild(f),f=null)});null!=x&&null!=p&&(/(\.v(dx|sdx?))($|\?)/i.test(p)||/(\.vs(x|sx?))($|\?)/i.test(p))?this.importVisio(x,function(b){v(b,"text/xml")},null,p):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,p)&&null!=x?this.parseFile(x,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?v(b.responseText,"text/xml"):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},
-mxResources.get("errorLoadingFile")))})):v(d,e)}}));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(k,"dragleave",function(b){k.style.cursor="";k.style.backgroundColor="";b.stopPropagation();b.preventDefault()}));t=t.cloneNode(!1);t.setAttribute("src",Editor.editImage);t.setAttribute("title",mxResources.get("edit"));p.insertBefore(t,p.firstChild);mxEvent.addListener(t,"click",L);mxEvent.addListener(k,"dblclick",function(b){mxEvent.getSource(b)==k&&L(b)});g=t.cloneNode(!1);g.setAttribute("src",
-Editor.plusImage);g.setAttribute("title",mxResources.get("add"));p.insertBefore(g,p.firstChild);mxEvent.addListener(g,"click",C);this.isOffline()||".scratchpad"!=b.title||null==EditorUi.scratchpadHelpLink||(g=document.createElement("span"),g.setAttribute("title",mxResources.get("help")),g.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(g,"?"),mxEvent.addGestureListeners(g,mxUtils.bind(this,function(b){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(b)})),
-p.insertBefore(g,p.firstChild))}q.appendChild(p);q.style.paddingRight=18*p.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(b,c){for(var d=0;d<b.length;d++){var e=b[d],f=e.data;if(null!=f){var f=this.convertDataUri(f),g="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==e.aspect&&(g+="aspect=fixed;");c.appendChild(this.sidebar.createVertexTemplate(g+"image="+f,e.w,e.h,"",e.title||"",!1,!1,!0))}else null!=e.xml&&(f=this.stringToCells(Graph.decompress(e.xml)),
-0<f.length&&c.appendChild(this.sidebar.createVertexTemplateFromCells(f,e.w,e.h,e.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=function(b){return null!=b?b[mxLanguage]||b.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground="linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",
-Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38):Editor.isDarkMode()&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor=Editor.darkColor,Format.inactiveTabBackgroundColor="black",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.shapeBackgroundColor=Editor.darkColor,Graph.prototype.shapeForegroundColor=Editor.lightColor,Graph.prototype.defaultPageBackgroundColor=
-Editor.darkColor,Graph.prototype.defaultPageBorderColor="#505759",BaseFormatPanel.prototype.buttonBackgroundColor=Editor.darkColor,mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxConstants.DROP_TARGET_COLOR="#00ff00");Editor.sketchFontFamily="Architects Daughter";Editor.sketchFontSource="https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter";"1"==urlParams.sketch&&(Graph.prototype.defaultVertexStyle={hachureGap:"4"},Graph.prototype.defaultEdgeStyle=
-{edgeStyle:"none",rounded:"0",curved:"1",jettySize:"auto",orthogonalLoop:"1",endArrow:"open",startSize:"14",endSize:"14",sourcePerimeterSpacing:"8",targetPerimeterSpacing:"8"},Editor.configurationKey=".sketch-configuration",Editor.settingsKey=".sketch-config",Graph.prototype.defaultGridEnabled="1"==urlParams.grid,Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=
-function(b,c,e,g,k){b=new ImageDialog(this,b,c,e,g,k);this.showDialog(b.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);b.init()};EditorUi.prototype.showBackgroundImageDialog=function(b,c){b=null!=b?b:mxUtils.bind(this,function(b,d){if(!d){var c=new ChangePageSetup(this,null,b);c.ignoreColor=!0;this.editor.graph.model.execute(c)}});var d=new BackgroundImageDialog(this,b,c);this.showDialog(d.container,360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(b,c,e,
-g,k){b=new LibraryDialog(this,b,c,e,g,k);this.showDialog(b.container,640,440,!0,!1,mxUtils.bind(this,function(b){b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));b.init()};var e=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(b){var d=e.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(b){this.editor.graph.isSelectionEmpty()&&d.refresh()}));return d};EditorUi.prototype.createSidebarFooterContainer=function(){var b=
-this.createDiv("geSidebarContainer geSidebarFooter");b.style.position="absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var e=c.getElementsByTagName("span")[0];e.style.fontSize="18px";e.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,
-function(b){b.preventDefault()}));mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};EditorUi.prototype.handleError=function(b,c,e,g,k,n,p){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},f=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{p?null!=window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&
-null!=b.name)?b.name:b.message,b.filename,b.lineNumber,b.columnNumber,b,"INFO")}catch(D){}if(null!=f||null!=c){p=mxUtils.htmlEntities(mxResources.get("unknownError"));var l=mxResources.get("ok"),m=null;c=null!=c?c:mxResources.get("error");if(null!=f){null!=f.retry&&(l=mxResources.get("cancel"),m=function(){d();f.retry()});if(404==f.code||404==f.status||403==f.code){p=403==f.code?null!=f.message?mxUtils.htmlEntities(f.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=k?k:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+
-(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var q=null!=k?null:null!=n?n:window.location.hash;if(null!=q&&("#G"==q.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==q.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==f.code||404==f.status)){q="#U"==q.substring(0,
-2)?q.substring(45,q.lastIndexOf("%26ex")):q.substring(2);this.showError(c,p,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+q);this.handleError(b,c,e,g,k)}),m,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){f.innerHTML="";for(var b=0;b<d.length;b++){var c=document.createElement("option");mxUtils.write(c,d[b].displayName);c.value=b;f.appendChild(c);c=document.createElement("option");c.innerHTML="&nbsp;&nbsp;&nbsp;";
-mxUtils.write(c,"<"+d[b].email+">");c.setAttribute("disabled","disabled");f.appendChild(c)}c=document.createElement("option");mxUtils.write(c,mxResources.get("addAccount"));c.value=d.length;f.appendChild(c)}var d=this.drive.getUsersList(),c=document.createElement("div"),e=document.createElement("span");e.style.marginTop="6px";mxUtils.write(e,mxResources.get("changeUser")+": ");c.appendChild(e);var f=document.createElement("select");f.style.width="200px";b();mxEvent.addListener(f,"change",mxUtils.bind(this,
-function(){var c=f.value,e=d.length!=c;e&&this.drive.setUser(d[c]);this.drive.authorize(e,mxUtils.bind(this,function(){e||(d=this.drive.getUsersList(),b())}),mxUtils.bind(this,function(b){this.handleError(b)}),!0)}));c.appendChild(f);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(c.container,300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=e&&e()}),480,150);return}}null!=f.message?
-p=""==f.message&&null!=f.name?mxUtils.htmlEntities(f.name):mxUtils.htmlEntities(f.message):null!=f.response&&null!=f.response.error?p=mxUtils.htmlEntities(f.response.error):"undefined"!==typeof window.App&&(f.code==App.ERROR_TIMEOUT?p=mxUtils.htmlEntities(mxResources.get("timeout")):f.code==App.ERROR_BUSY?p=mxUtils.htmlEntities(mxResources.get("busy")):"string"===typeof f&&0<f.length&&(p=mxUtils.htmlEntities(f)))}var u=n=null;null!=f&&null!=f.helpLink?(n=mxResources.get("help"),u=mxUtils.bind(this,
-function(){return this.editor.graph.openLink(f.helpLink)})):null!=f&&null!=f.ownerEmail&&(n=mxResources.get("contactOwner"),p+=mxUtils.htmlEntities(" ("+n+": "+f.ownerEmail+")"),u=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(f.ownerEmail))}));this.showError(c,p,l,e,m,null,null,n,u,null,null,null,g?e:null)}else null!=e&&e()};EditorUi.prototype.alert=function(b,c,e){b=new ErrorDialog(this,null,b,mxResources.get("ok"),c);this.showDialog(b.container,e||340,100,!0,!1);
-b.init()};EditorUi.prototype.confirm=function(b,c,e,g,k,n){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},f=Math.min(200,28*Math.ceil(b.length/50));b=new ConfirmDialog(this,b,function(){d();null!=c&&c()},function(){d();null!=e&&e()},g,k,null,null,null,null,f);this.showDialog(b.container,340,46+f,!0,n);b.init()};EditorUi.prototype.showBanner=function(b,c,e,g){var d=!1;if(!(this.bannerShowing||this["hideBanner"+b]||isLocalStorage&&null!=mxSettings.settings&&null!=
-mxSettings.settings["close"+b])){var f=document.createElement("div");f.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(f.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(f.style,"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(f.style,"transition","all 1s ease");f.className="geBtn gePrimaryBtn";
-d=document.createElement("img");d.setAttribute("src",IMAGE_PATH+"/logo.png");d.setAttribute("border","0");d.setAttribute("align","absmiddle");d.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";f.appendChild(d);d=document.createElement("img");d.setAttribute("src",Dialog.prototype.closeImage);d.setAttribute("title",mxResources.get(g?"doNotShowAgain":"close"));d.setAttribute("border","0");d.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";
-f.appendChild(d);mxUtils.write(f,c);document.body.appendChild(f);this.bannerShowing=!0;c=document.createElement("div");c.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var l=document.createElement("input");l.setAttribute("type","checkbox");l.setAttribute("id","geDoNotShowAgainCheckbox");l.style.marginRight="6px";if(!g){c.appendChild(l);var k=document.createElement("label");k.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(k,mxResources.get("doNotShowAgain"));c.appendChild(k);
-f.style.paddingBottom="30px";f.appendChild(c)}var q=mxUtils.bind(this,function(){null!=f.parentNode&&(f.parentNode.removeChild(f),this.bannerShowing=!1,l.checked||g)&&(this["hideBanner"+b]=!0,isLocalStorage&&null!=mxSettings.settings&&(mxSettings.settings["close"+b]=Date.now(),mxSettings.save()))});mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){mxEvent.consume(b);q()}));var p=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(f.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,
-function(){q()}),1E3)});mxEvent.addListener(f,"click",mxUtils.bind(this,function(b){var d=mxEvent.getSource(b);d!=l&&d!=k?(null!=e&&e(),q(),mxEvent.consume(b)):p()}));window.setTimeout(mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(f.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(p,3E4);d=!0}return d};EditorUi.prototype.setCurrentFile=function(b){null!=b&&(b.opened=new Date);this.currentFile=b};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=
-function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(b,c,e,g){b=b.toDataURL("image/"+e);if(null!=b&&6<b.length)null!=c&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(c))),0<g&&(b=Editor.writeGraphModelToPng(b,"pHYs","dpi",g));else throw{message:mxResources.get("unknownError")};return b};EditorUi.prototype.saveCanvas=function(b,c,e,g,k){var d="jpeg"==e?"jpg":e;g=this.getBaseFilename(g)+(null!=c?".drawio":"")+"."+d;b=this.createImageDataUri(b,
-c,e,k);this.saveData(g,d,b.substring(b.lastIndexOf(",")+1),"image/"+e,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(b,c){var d=new TextareaDialog(this,b,c,null,null,mxResources.get("close"));d.textarea.style.width="600px";
-d.textarea.style.height="380px";this.showDialog(d.container,620,460,!0,!0,null,null,null,null,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(b,c,e,g,k,n){"text/xml"!=e||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.html)$/i.test(c)||(c=c+"."+(null!=n?n:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)b=g?this.base64ToBlob(b,e):new Blob([b],{type:e}),navigator.msSaveOrOpenBlob(b,c);else if(mxClient.IS_IE)e=window.open("about:blank",
-"_blank"),null==e?mxUtils.popup(b,!0):(e.document.write(b),e.document.close(),e.document.execCommand("SaveAs",!0,c),e.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==e||"image/"!=e.substring(0,6)?this.showTextDialog(c+":",b):this.openInNewWindow(b,e,g);else{var d=document.createElement("a");n=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof d.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var f=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
-n=65==(f?parseInt(f[2],10):!1)?!1:n}if(n||this.isOffline()){d.href=URL.createObjectURL(g?this.base64ToBlob(b,e):new Blob([b],{type:e}));n?d.download=c:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},2E4),d.click(),d.parentNode.removeChild(d)}catch(y){}}else this.createEchoRequest(b,c,e,g,k).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,e,g,k,n){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,
-b+(null!=e?"&mime="+e:"")+(null!=k?"&format="+k:"")+(null!=n?"&base64="+n:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(g?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(b,c){c=c||"";for(var d=atob(b),e=d.length,f=Math.ceil(e/1024),g=Array(f),k=0;k<f;++k){for(var p=1024*k,t=Math.min(p+1024,e),x=Array(t-p),F=0;p<t;++F,++p)x[F]=d[p].charCodeAt(0);g[k]=new Uint8Array(x)}return new Blob(g,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,e,g,k,n,p,t){n=null!=n?n:!1;p=null!=p?
-p:"vsdx"!=k&&(!mxClient.IS_IOS||!navigator.standalone);k=this.getServiceCount(n);isLocalStorage&&k++;var d=4>=k?2:6<k?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(d,c){try{if("_blank"==c)if(null!=e&&"image/"==e.substring(0,6))this.openInNewWindow(b,e,g);else if(null!=e&&"text/html"==e.substring(0,9)){var f=new EmbedDialog(this,b);this.showDialog(f.container,450,240,!0,!0);f.init()}else{var l=window.open("about:blank");null==l?mxUtils.popup(b,!0):(l.document.write("<pre>"+mxUtils.htmlEntities(b,
-!1)+"</pre>"),l.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(b,d,e,g,null,t):null!=d&&0<d.length&&this.pickFolder(c,mxUtils.bind(this,function(f){try{this.exportFile(b,d,e,g,c,f)}catch(L){this.handleError(L)}}))}catch(D){this.handleError(D)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,n,p,null,1<k,d,b,e,g);n=this.isServices(k)?k>d?390:270:160;this.showDialog(c.container,420,n,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=
+!mxClient.IS_OP&&!EditorUi.isElectronApp&&"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,
+messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(b,c,e,f,m,k,u){k=null!=k?k:0<=b.indexOf("NetworkError")||0<=b.indexOf("SecurityError")||0<=b.indexOf("NS_ERROR_FAILURE")||0<=b.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
+"1"!=urlParams.dev)try{if(b!=EditorUi.lastErrorMessage&&(null==b||null==c||-1==b.indexOf("Script error")&&-1==b.indexOf("extension"))&&null!=b&&0>b.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=b;var d=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";m=null!=m?m:Error(b);(new Image).src=d+"/log?severity="+k+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(b)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(e)+(null!=f?":colno:"+
+encodeURIComponent(f):"")+(null!=m&&null!=m.stack?"&stack="+encodeURIComponent(m.stack):"")}}catch(y){}try{u||null==window.console||console.error(k,b,c,e,f,m)}catch(y){}};EditorUi.logEvent=function(b){if("1"==urlParams.dev)EditorUi.debug("logEvent",b);else if(EditorUi.enableLogging)try{var d=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=d+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=b?"&data="+encodeURIComponent(JSON.stringify(b)):"")}catch(l){}};EditorUi.sendReport=
+function(b,c){if("1"==urlParams.dev)EditorUi.debug("sendReport",b);else if(EditorUi.enableLogging)try{c=null!=c?c:5E4,b.length>c&&(b=b.substring(0,c)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(b))}catch(l){}};EditorUi.debug=function(){try{if(null!=window.console&&"1"==urlParams.test){for(var b=[(new Date).toISOString()],c=0;c<arguments.length;c++)null!=arguments[c]&&b.push(arguments[c]);
+console.log.apply(console,b)}}catch(l){}};EditorUi.removeChildNodes=function(b){for(;null!=b.firstChild;)b.removeChild(b.firstChild)};EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>";EditorUi.prototype.mode=null;EditorUi.prototype.timeout=Editor.prototype.timeout;EditorUi.prototype.sidebarFooterHeight=38;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;";
+EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.maxTextWidth=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.maxTextBytes=5E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport=!1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=
+!0;EditorUi.prototype.embedExportBorder=8;EditorUi.prototype.embedExportBackground=null;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var b=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!b.getContext||!b.getContext("2d"))}catch(m){}try{var c=document.createElement("canvas"),e=new Image;e.onload=function(){try{c.getContext("2d").drawImage(e,0,0);var b=c.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=b&&6<b.length}catch(n){}};
+e.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(m){}try{c=document.createElement("canvas");c.width=c.height=1;var f=c.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==f.match("image/jpeg")}catch(m){}})();EditorUi.prototype.openLink=
+function(b,c,e){return this.editor.graph.openLink(b,c,e)};EditorUi.prototype.showSplash=function(b){};EditorUi.prototype.getLocalData=function(b,c){c(localStorage.getItem(b))};EditorUi.prototype.setLocalData=function(b,c,e){localStorage.setItem(b,c);null!=e&&e()};EditorUi.prototype.removeLocalData=function(b,c){localStorage.removeItem(b);c()};EditorUi.prototype.setMathEnabled=function(b){this.editor.graph.mathEnabled=b;this.editor.updateGraphComponents();this.editor.graph.refresh();this.editor.graph.defaultMathEnabled=
+b;this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(b){return this.editor.graph.mathEnabled};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(b){return this.isOfflineApp()||!navigator.onLine||!b&&("1"==urlParams.stealth||"1"==urlParams.lockdown)};EditorUi.prototype.createSpinner=function(b,c,e){var d=null==b||null==c;e=null!=e?e:24;var g=new Spinner({lines:12,length:e,width:Math.round(e/
+3),radius:Math.round(e/2),rotate:0,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),f=g.spin;g.spin=function(e,l){var m=!1;this.active||(f.call(this,e),this.active=!0,null!=l&&(d&&(c=Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,b=document.body.clientWidth/2-2),m=document.createElement("div"),m.style.position="absolute",m.style.whiteSpace="nowrap",m.style.background="#4B4243",m.style.color="white",m.style.fontFamily=
+Editor.defaultHtmlFont,m.style.fontSize="9pt",m.style.padding="6px",m.style.paddingLeft="10px",m.style.paddingRight="10px",m.style.zIndex=2E9,m.style.left=Math.max(0,b)+"px",m.style.top=Math.max(0,c+70)+"px",mxUtils.setPrefixedStyle(m.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(m.style,"transform","translate(-50%,-50%)"),Editor.isDarkMode()||mxUtils.setPrefixedStyle(m.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=l.substring(l.length-3,l.length)&&"!"!=l.charAt(l.length-1)&&(l+="..."),
+m.innerHTML=l,e.appendChild(m),g.status=m),this.pause=mxUtils.bind(this,function(){var b=function(){};this.active&&(b=mxUtils.bind(this,function(){this.spin(e,l)}));this.stop();return b}),m=!0);return m};var l=g.stop;g.stop=function(){l.call(this);this.active=!1;null!=g.status&&null!=g.status.parentNode&&g.status.parentNode.removeChild(g.status);g.status=null};g.pause=function(){return function(){}};return g};EditorUi.prototype.isCompatibleString=function(b){try{var d=mxUtils.parseXml(b),c=this.editor.extractGraphModel(d.documentElement,
+!0);return null!=c&&0==c.getElementsByTagName("parsererror").length}catch(q){}return!1};EditorUi.prototype.isVisioData=function(b){return 8<b.length&&(208==b.charCodeAt(0)&&207==b.charCodeAt(1)&&17==b.charCodeAt(2)&&224==b.charCodeAt(3)&&161==b.charCodeAt(4)&&177==b.charCodeAt(5)&&26==b.charCodeAt(6)&&225==b.charCodeAt(7)||80==b.charCodeAt(0)&&75==b.charCodeAt(1)&&3==b.charCodeAt(2)&&4==b.charCodeAt(3)||80==b.charCodeAt(0)&&75==b.charCodeAt(1)&&3==b.charCodeAt(2)&&6==b.charCodeAt(3))};EditorUi.prototype.isRemoteVisioData=
+function(b){return 8<b.length&&(208==b.charCodeAt(0)&&207==b.charCodeAt(1)&&17==b.charCodeAt(2)&&224==b.charCodeAt(3)&&161==b.charCodeAt(4)&&177==b.charCodeAt(5)&&26==b.charCodeAt(6)&&225==b.charCodeAt(7)||60==b.charCodeAt(0)&&63==b.charCodeAt(1)&&120==b.charCodeAt(2)&&109==b.charCodeAt(3)&&108==b.charCodeAt(3))};var b=EditorUi.prototype.createKeyHandler;EditorUi.prototype.createKeyHandler=function(d){var c=b.apply(this,arguments);if(!this.editor.chromeless||this.editor.editable){var e=c.getFunction,
+f=this.editor.graph,m=this;c.getFunction=function(b){if(f.isSelectionEmpty()&&null!=m.pages&&0<m.pages.length){var d=m.getSelectedPageIndex();if(mxEvent.isShiftDown(b)){if(37==b.keyCode)return function(){0<d&&m.movePage(d,d-1)};if(38==b.keyCode)return function(){0<d&&m.movePage(d,0)};if(39==b.keyCode)return function(){d<m.pages.length-1&&m.movePage(d,d+1)};if(40==b.keyCode)return function(){d<m.pages.length-1&&m.movePage(d,m.pages.length-1)}}else if(mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b)){if(37==
+b.keyCode)return function(){0<d&&m.selectNextPage(!1)};if(38==b.keyCode)return function(){0<d&&m.selectPage(m.pages[0])};if(39==b.keyCode)return function(){d<m.pages.length-1&&m.selectNextPage(!0)};if(40==b.keyCode)return function(){d<m.pages.length-1&&m.selectPage(m.pages[m.pages.length-1])}}}return e.apply(this,arguments)}}return c};var c=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(b){var d=c.apply(this,arguments);if(null==d)try{var e=b.indexOf("&lt;mxfile ");
+if(0<=e){var f=b.lastIndexOf("&lt;/mxfile&gt;");f>e&&(d=b.substring(e,f+15).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var m=mxUtils.parseXml(b),k=this.editor.extractGraphModel(m.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),d=null!=k?mxUtils.getXml(k):""}catch(u){}return d};EditorUi.prototype.validateFileData=function(b){if(null!=b&&0<b.length){var d=b.indexOf('<meta charset="utf-8">');0<=d&&(b=b.slice(0,d)+'<meta charset="utf-8"/>'+
+b.slice(d+23-1,b.length));b=Graph.zapGremlins(b)}return b};EditorUi.prototype.replaceFileData=function(b){b=this.validateFileData(b);b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:null;var d=null!=b?this.editor.extractGraphModel(b,!0):null;null!=d&&(b=d);if(null!=b){d=this.editor.graph;d.model.beginUpdate();try{var c=null!=this.pages?this.pages.slice():null,e=b.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<e.length||1==e.length&&e[0].hasAttribute("name")){this.fileNode=b;this.pages=
+null!=this.pages?this.pages:[];for(var f=e.length-1;0<=f;f--){var k=this.updatePageRoot(new DiagramPage(e[f]));null==k.getName()&&k.setName(mxResources.get("pageWithNumber",[f+1]));d.model.execute(new ChangePage(this,k,0==f?k:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=b.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),d.model.execute(new ChangePage(this,
+this.currentPage,this.currentPage,0))),this.editor.setGraphXml(b),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=c)for(f=0;f<c.length;f++)d.model.execute(new ChangePage(this,c[f],null))}finally{d.model.endUpdate()}}};EditorUi.prototype.createFileData=function(b,c,e,f,m,k,u,p,t,x,F){c=null!=c?c:this.editor.graph;m=null!=m?m:!1;t=null!=t?t:!0;var d,g=null;null==e||e.getMode()==App.MODE_DEVICE||e.getMode()==App.MODE_BROWSER?d="_blank":g=d=f;if(null==b)return"";
+var l=b;if("mxfile"!=l.nodeName.toLowerCase()){if(F){var n=b.ownerDocument.createElement("diagram");n.setAttribute("id",Editor.guid());n.appendChild(b)}else{n=Graph.zapGremlins(mxUtils.getXml(b));l=Graph.compress(n);if(Graph.decompress(l)!=n)return n;n=b.ownerDocument.createElement("diagram");n.setAttribute("id",Editor.guid());mxUtils.setTextContent(n,l)}l=b.ownerDocument.createElement("mxfile");l.appendChild(n)}x?(l=l.cloneNode(!0),l.removeAttribute("modified"),l.removeAttribute("host"),l.removeAttribute("agent"),
+l.removeAttribute("etag"),l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type")):(l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("pages"),l.removeAttribute("type"),mxClient.IS_CHROMEAPP?l.setAttribute("host","Chrome"):EditorUi.isElectronApp?l.setAttribute("host","Electron"):l.setAttribute("host",window.location.hostname),l.setAttribute("modified",(new Date).toISOString()),l.setAttribute("agent",
+navigator.appVersion),l.setAttribute("version",EditorUi.VERSION),l.setAttribute("etag",Editor.guid()),b=null!=e?e.getMode():this.mode,null!=b&&l.setAttribute("type",b),1<l.getElementsByTagName("diagram").length&&null!=this.pages&&l.setAttribute("pages",this.pages.length));F=F?mxUtils.getPrettyXml(l):mxUtils.getXml(l);if(!k&&!m&&(u||null!=e&&/(\.html)$/i.test(e.getTitle())))F=this.getHtml2(mxUtils.getXml(l),c,null!=e?e.getTitle():null,d,g);else if(k||!m&&null!=e&&/(\.svg)$/i.test(e.getTitle()))null==
+e||e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER||(f=null),F=this.getEmbeddedSvg(F,c,f,null,p,t,g);return F};EditorUi.prototype.getXmlFileData=function(b,c,e,f){b=null!=b?b:!0;c=null!=c?c:!1;e=null!=e?e:!Editor.compressXml;var d=this.editor.getGraphXml(b,f);if(b&&null!=this.fileNode&&null!=this.currentPage)if(b=function(b){var c=b.getElementsByTagName("mxGraphModel"),c=0<c.length?c[0]:null;null==c&&e?(c=mxUtils.trim(mxUtils.getTextContent(b)),b=b.cloneNode(!1),0<c.length&&(c=Graph.decompress(c),
+null!=c&&0<c.length&&b.appendChild(mxUtils.parseXml(c).documentElement))):null==c||e?b=b.cloneNode(!0):(b=b.cloneNode(!1),mxUtils.setTextContent(b,Graph.compressNode(c)));d.appendChild(b)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,Graph.compressNode(d)),d=this.fileNode.cloneNode(!1),c)b(this.currentPage.node);else for(c=0;c<this.pages.length;c++){var g=this.pages[c],l=g.node;if(g!=this.currentPage)if(g.needsUpdate){var k=new mxCodec(mxUtils.createXmlDocument()),
+k=k.encode(new mxGraphModel(g.root));this.editor.graph.saveViewState(g.viewState,k,null,f);EditorUi.removeChildNodes(l);mxUtils.setTextContent(l,Graph.compressNode(k));delete g.needsUpdate}else f&&(this.updatePageRoot(g),null!=g.viewState.backgroundImage&&(null!=g.viewState.backgroundImage.originalSrc?g.viewState.backgroundImage=this.createImageForPageLink(g.viewState.backgroundImage.originalSrc,g):Graph.isPageLink(g.viewState.backgroundImage.src)&&(g.viewState.backgroundImage=this.createImageForPageLink(g.viewState.backgroundImage.src,
+g))),null!=g.viewState.backgroundImage&&null!=g.viewState.backgroundImage.originalSrc&&(k=new mxCodec(mxUtils.createXmlDocument()),k=k.encode(new mxGraphModel(g.root)),this.editor.graph.saveViewState(g.viewState,k,null,f),l=l.cloneNode(!1),mxUtils.setTextContent(l,Graph.compressNode(k))));b(l)}return d};EditorUi.prototype.anonymizeString=function(b,c){for(var d=[],g=0;g<b.length;g++){var e=b.charAt(g);0<=EditorUi.ignoredAnonymizedChars.indexOf(e)?d.push(e):isNaN(parseInt(e))?e.toLowerCase()!=e?d.push(String.fromCharCode(65+
+Math.round(25*Math.random()))):e.toUpperCase()!=e?d.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(e)?d.push(" "):d.push("?"):d.push(c?"0":Math.round(9*Math.random()))}return d.join("")};EditorUi.prototype.anonymizePatch=function(b){if(null!=b[EditorUi.DIFF_INSERT])for(var d=0;d<b[EditorUi.DIFF_INSERT].length;d++)try{var c=mxUtils.parseXml(b[EditorUi.DIFF_INSERT][d].data).documentElement.cloneNode(!1);null!=c.getAttribute("name")&&c.setAttribute("name",this.anonymizeString(c.getAttribute("name")));
+b[EditorUi.DIFF_INSERT][d].data=mxUtils.getXml(c)}catch(n){b[EditorUi.DIFF_INSERT][d].data=n.message}if(null!=b[EditorUi.DIFF_UPDATE]){for(var e in b[EditorUi.DIFF_UPDATE]){var f=b[EditorUi.DIFF_UPDATE][e];null!=f.name&&(f.name=this.anonymizeString(f.name));null!=f.cells&&(d=mxUtils.bind(this,function(b){var d=f.cells[b];if(null!=d){for(var c in d)null!=d[c].value&&(d[c].value="["+d[c].value.length+"]"),null!=d[c].xmlValue&&(d[c].xmlValue="["+d[c].xmlValue.length+"]"),null!=d[c].style&&(d[c].style=
+"["+d[c].style.length+"]"),0==Object.keys(d[c]).length&&delete d[c];0==Object.keys(d).length&&delete f.cells[b]}}),d(EditorUi.DIFF_INSERT),d(EditorUi.DIFF_UPDATE),0==Object.keys(f.cells).length&&delete f.cells);0==Object.keys(f).length&&delete b[EditorUi.DIFF_UPDATE][e]}0==Object.keys(b[EditorUi.DIFF_UPDATE]).length&&delete b[EditorUi.DIFF_UPDATE]}return b};EditorUi.prototype.anonymizeAttributes=function(b,c){if(null!=b.attributes)for(var d=0;d<b.attributes.length;d++)"as"!=b.attributes[d].name&&
+b.setAttribute(b.attributes[d].name,this.anonymizeString(b.attributes[d].value,c));if(null!=b.childNodes)for(d=0;d<b.childNodes.length;d++)this.anonymizeAttributes(b.childNodes[d],c)};EditorUi.prototype.anonymizeNode=function(b,c){for(var d=b.getElementsByTagName("mxCell"),g=0;g<d.length;g++)null!=d[g].getAttribute("value")&&d[g].setAttribute("value","["+d[g].getAttribute("value").length+"]"),null!=d[g].getAttribute("xmlValue")&&d[g].setAttribute("xmlValue","["+d[g].getAttribute("xmlValue").length+
+"]"),null!=d[g].getAttribute("style")&&d[g].setAttribute("style","["+d[g].getAttribute("style").length+"]"),null!=d[g].parentNode&&"root"!=d[g].parentNode.nodeName&&null!=d[g].parentNode.parentNode&&(d[g].setAttribute("id",d[g].parentNode.getAttribute("id")),d[g].parentNode.parentNode.replaceChild(d[g],d[g].parentNode));return b};EditorUi.prototype.synchronizeCurrentFile=function(b){var d=this.getCurrentFile();null!=d&&(d.savingFile?this.handleError({message:mxResources.get("busy")}):!b&&d.invalidChecksum?
+d.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(d.clearAutosave(),this.editor.setStatus(""),b?d.reloadFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(b){d.handleFileError(b,!0)})):d.synchronizeFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(b){d.handleFileError(b,!0)}))))};EditorUi.prototype.getFileData=function(b,c,e,f,m,k,u,
+p,t,x,F){m=null!=m?m:!0;k=null!=k?k:!1;var d=this.editor.graph;if(c||!b&&null!=t&&/(\.svg)$/i.test(t.getTitle())){var g=null!=d.themes&&"darkTheme"==d.defaultThemeName;x=!1;if(g||null!=this.pages&&this.currentPage!=this.pages[0]){var l=d.getGlobalVariable,d=this.createTemporaryGraph(g?d.getDefaultStylesheet():d.getStylesheet());d.setBackgroundImage=this.editor.graph.setBackgroundImage;var n=this.pages[0];this.currentPage==n?d.setBackgroundImage(this.editor.graph.backgroundImage):null!=n.viewState&&
+null!=n.viewState&&d.setBackgroundImage(n.viewState.backgroundImage);d.getGlobalVariable=function(b){return"page"==b?n.getName():"pagenumber"==b?1:l.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(n.root)}}u=null!=u?u:this.getXmlFileData(m,k,x,F);t=null!=t?t:this.getCurrentFile();b=this.createFileData(u,d,t,window.location.href,b,c,e,f,m,p,x);d!=this.editor.graph&&d.container.parentNode.removeChild(d.container);return b};EditorUi.prototype.getHtml=function(b,c,e,f,k,
+n){n=null!=n?n:!0;var d=null,g=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=c){var d=n?c.getGraphBounds():c.getBoundingBox(c.getSelectionCells()),l=c.view.scale;n=Math.floor(d.x/l-c.view.translate.x);l=Math.floor(d.y/l-c.view.translate.y);d=c.background;null==k&&(c=this.getBasenames().join(";"),0<c.length&&(g=EditorUi.drawHost+"/embed.js?s="+c));b.setAttribute("x0",n);b.setAttribute("y0",l)}null!=b&&(b.setAttribute("pan","1"),b.setAttribute("zoom","1"),b.setAttribute("resize","0"),b.setAttribute("fit",
+"0"),b.setAttribute("border","20"),b.setAttribute("links","1"),null!=f&&b.setAttribute("edit",f));null!=k&&(k=k.replace(/&/g,"&amp;"));b=null!=b?Graph.zapGremlins(mxUtils.getXml(b)):"";f=Graph.compress(b);Graph.decompress(f)!=b&&(f=encodeURIComponent(b));return(null==k?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=k?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==k?null!=e?"<title>"+mxUtils.htmlEntities(e)+
+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=k?'<meta http-equiv="refresh" content="0;URL=\''+k+"'\"/>\n":"")+"</head>\n<body"+(null==k&&null!=d&&d!=mxConstants.NONE?' style="background-color:'+d+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+f+"</div>\n</div>\n"+(null==k?'<script type="text/javascript" src="'+g+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+
+k+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(b,c,e,f,k){c=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=k&&(k=k.replace(/&/g,"&amp;"));b={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:Graph.zapGremlins(b),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(b.page=mxUtils.indexOf(this.pages,this.currentPage));
+return(null==k?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=k?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==k?null!=e?"<title>"+mxUtils.htmlEntities(e)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=k?'<meta http-equiv="refresh" content="0;URL=\''+k+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+
+mxUtils.htmlEntities(JSON.stringify(b))+'"></div>\n'+(null==k?'<script type="text/javascript" src="'+c+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+k+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(b){b=this.validateFileData(b);this.pages=this.fileNode=this.currentPage=null;b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:
+null;var d=Editor.extractParserError(b,mxResources.get("invalidOrMissingFile"));if(d)throw Error(mxResources.get("notADiagramFile")+" ("+d+")");d=null!=b?this.editor.extractGraphModel(b,!0):null;null!=d&&(b=d);if(null!=b&&"mxfile"==b.nodeName&&(d=b.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){var c=null;this.fileNode=b;this.pages=[];for(var e=0;e<d.length;e++)null==d[e].getAttribute("id")&&d[e].setAttribute("id",e),b=new DiagramPage(d[e]),
+null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[e+1])),this.pages.push(b),null!=urlParams["page-id"]&&b.getId()==urlParams["page-id"]&&(c=b);this.currentPage=null!=c?c:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];b=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=b&&(this.fileNode=b.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",
+[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(b);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var f=urlParams["layer-ids"].split(" ");b={};for(e=0;e<f.length;e++)b[f[e]]=!0;for(var k=this.editor.graph.getModel(),p=k.getChildren(k.root),e=0;e<p.length;e++){var v=p[e];k.setVisible(v,b[v.id]||!1)}}catch(y){}};EditorUi.prototype.getBaseFilename=function(b){var d=this.getCurrentFile(),d=null!=d&&null!=d.getTitle()?d.getTitle():
+this.defaultFilename;if(/(\.xml)$/i.test(d)||/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||/(\.png)$/i.test(d))d=d.substring(0,d.lastIndexOf("."));/(\.drawio)$/i.test(d)&&(d=d.substring(0,d.lastIndexOf(".")));!b&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(d=d+"-"+this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(b,c,e,f,k,n,p,v,t,x,F,H){try{f=null!=f?f:this.editor.graph.isSelectionEmpty();
+var d=this.getBaseFilename(!k),g=d+("xml"==b||"pdf"==b&&F?".drawio":"")+"."+b;if("xml"==b){var l=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,f,k,null,null,null,c);this.saveData(g,b,l,"text/xml")}else if("html"==b)l=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(g,b,l,"text/html");else if("svg"!=b&&"xmlsvg"!=b||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==b?g=d+".png":"jpeg"==b&&(g=d+".jpg"),this.saveRequest(g,b,mxUtils.bind(this,function(d,
+c){try{var e=this.editor.graph.pageVisible;null!=n&&(this.editor.graph.pageVisible=n);var g=this.createDownloadRequest(d,b,f,c,p,k,v,t,x,F,H);this.editor.graph.pageVisible=e;return g}catch(U){this.handleError(U)}}));else{var m=null,q=mxUtils.bind(this,function(b){b.length<=MAX_REQUEST_SIZE?this.saveData(g,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(m)}))});if("svg"==b){var u=this.editor.graph.background;
+if(p||u==mxConstants.NONE)u=null;var y=this.editor.graph.getSvg(u,null,null,null,null,f);e&&this.editor.graph.addSvgShadow(y);this.editor.convertImages(y,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();q(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(b))})))}else g=d+".svg",m=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();q(b)}),f)}}catch(M){this.handleError(M)}};EditorUi.prototype.createDownloadRequest=function(b,c,e,f,k,n,p,v,t,
+x,F){var d=this.editor.graph,g=d.getGraphBounds();e=this.getFileData(!0,null,null,null,e,0==n?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var l="",m="";if(g.width*g.height>MAX_AREA||e.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};x=x?"1":"0";"pdf"==c&&(null!=F?m="&from="+F.from+"&to="+F.to:0==n&&(m="&allPages=1"));if("xmlpng"==c&&(x="1",c="png",null!=this.pages&&null!=this.currentPage))for(n=0;n<this.pages.length;n++)if(this.pages[n]==this.currentPage){l="&from="+n;break}n=
+d.background;"png"!=c&&"pdf"!=c||!k?k||null!=n&&n!=mxConstants.NONE||(n="#ffffff"):n=mxConstants.NONE;k={globalVars:d.getExportVariables()};t&&(k.grid={size:d.gridSize,steps:d.view.gridSteps,color:d.view.gridColor});Graph.translateDiagram&&(k.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+l+m+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+f+"&embedXml="+x+"&xml="+encodeURIComponent(e)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(k))+
+(null!=p?"&scale="+p:"")+(null!=v?"&border="+v:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,e){var d=window.location.hash,g=mxUtils.bind(this,function(e){var g=null!=b.data?b.data:"";null!=e&&0<e.length&&(0<g.length&&(g+="\n"),g+=e);e=new LocalFile(this,"csv"!=b.format&&0<g.length?g:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);e.getHash=function(){return d};this.fileLoaded(e);"csv"==
+b.format&&this.importCsv(g,mxUtils.bind(this,function(b){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=b.update){var f=null!=b.interval?parseInt(b.interval):6E4,l=null,k=mxUtils.bind(this,function(){var d=this.currentPage;mxUtils.post(b.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(b){d===this.currentPage&&(200<=b.getStatus()&&300>=b.getStatus()?(this.updateDiagram(b.getText()),m()):this.handleError({message:mxResources.get("error")+
+" "+b.getStatus()}))}),mxUtils.bind(this,function(b){this.handleError(b)}))}),m=mxUtils.bind(this,function(){window.clearTimeout(l);l=window.setTimeout(k,f)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){m();k()}));m();k()}null!=c&&c()});null!=b.url&&0<b.url.length?this.editor.loadUrl(b.url,mxUtils.bind(this,function(b){g(b)}),mxUtils.bind(this,function(b){null!=e&&e(b)})):g("")};EditorUi.prototype.updateDiagram=function(b){function d(b){var d=new mxCellOverlay(b.image||f.warningImage,
+b.tooltip,b.align,b.valign,b.offset);d.addListener(mxEvent.CLICK,function(d,c){e.alert(b.tooltip)});return d}var c=null,e=this;if(null!=b&&0<b.length&&(c=mxUtils.parseXml(b),b=null!=c?c.documentElement:null,null!=b&&"updates"==b.nodeName)){var f=this.editor.graph,k=f.getModel();k.beginUpdate();var p=null;try{for(b=b.firstChild;null!=b;){if("update"==b.nodeName){var v=k.getCell(b.getAttribute("id"));if(null!=v){try{var t=b.getAttribute("value");if(null!=t){var x=mxUtils.parseXml(t).documentElement;
+if(null!=x)if("1"==x.getAttribute("replace-value"))k.setValue(v,x);else for(var F=x.attributes,H=0;H<F.length;H++)f.setAttributeForCell(v,F[H].nodeName,0<F[H].nodeValue.length?F[H].nodeValue:null)}}catch(M){null!=window.console&&console.log("Error in value for "+v.id+": "+M)}try{var z=b.getAttribute("style");null!=z&&f.model.setStyle(v,z)}catch(M){null!=window.console&&console.log("Error in style for "+v.id+": "+M)}try{var D=b.getAttribute("icon");if(null!=D){var N=0<D.length?JSON.parse(D):null;null!=
+N&&N.append||f.removeCellOverlays(v);null!=N&&f.addCellOverlay(v,d(N))}}catch(M){null!=window.console&&console.log("Error in icon for "+v.id+": "+M)}try{var E=b.getAttribute("geometry");if(null!=E){var E=JSON.parse(E),J=f.getCellGeometry(v);if(null!=J){J=J.clone();for(key in E){var C=parseFloat(E[key]);"dx"==key?J.x+=C:"dy"==key?J.y+=C:"dw"==key?J.width+=C:"dh"==key?J.height+=C:J[key]=parseFloat(E[key])}f.model.setGeometry(v,J)}}}catch(M){null!=window.console&&console.log("Error in icon for "+v.id+
+": "+M)}}}else if("model"==b.nodeName){for(var K=b.firstChild;null!=K&&K.nodeType!=mxConstants.NODETYPE_ELEMENT;)K=K.nextSibling;null!=K&&(new mxCodec(b.firstChild)).decode(K,k)}else if("view"==b.nodeName){if(b.hasAttribute("scale")&&(f.view.scale=parseFloat(b.getAttribute("scale"))),b.hasAttribute("dx")||b.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(b.getAttribute("dx")||0),parseFloat(b.getAttribute("dy")||0))}else"fit"==b.nodeName&&(p=b.hasAttribute("max-scale")?parseFloat(b.getAttribute("max-scale")):
+1);b=b.nextSibling}}finally{k.endUpdate()}null!=p&&this.chromelessResize&&this.chromelessResize(!0,p)}return c};EditorUi.prototype.getCopyFilename=function(b,c){var d=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename,e="",g=d.lastIndexOf(".");0<=g&&(e=d.substring(g),d=d.substring(0,g));if(c)var f=new Date,g=f.getFullYear(),k=f.getMonth()+1,p=f.getDate(),t=f.getHours(),x=f.getMinutes(),f=f.getSeconds(),d=d+(" "+(g+"-"+k+"-"+p+"-"+t+"-"+x+"-"+f));return d=mxResources.get("copyOf",[d])+e};
+EditorUi.prototype.fileLoaded=function(b,c){var d=this.getCurrentFile();this.fileEditable=this.fileLoadedError=null;this.setCurrentFile(null);var e=!1;this.hideDialog();null!=d&&(EditorUi.debug("File.closed",[d]),d.removeListener(this.descriptorChangedListener),d.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var g=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=d&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();
+this.setBackgroundImage(null);!c&&null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();c||this.showSplash()});if(null!=b)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(b);b.addListener("descriptorChanged",this.descriptorChangedListener);
+b.addListener("contentChanged",this.descriptorChangedListener);b.open();delete this.openingFile;this.setGraphEnabled(!0);this.setMode(b.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();b.isEditable()?b.isModified()?(b.addUnsavedStatus(),null!=b.backupPatch&&b.patch([b.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");
+!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));e=!0;if(!this.isOffline()&&null!=b.getMode()){var f="1"==urlParams.sketch?"sketch":uiTheme;if(null==f)f="default";else if("sketch"==f||"min"==f)f+=Editor.isDarkMode()?
+"-dark":"-light";EditorUi.logEvent({category:b.getMode().toUpperCase()+"-OPEN-FILE-"+b.getHash(),action:"size_"+b.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+f})}EditorUi.debug("File.opened",[b]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));if(this.editor.editable&&this.mode==b.getMode()&&b.getMode()!=App.MODE_DEVICE&&null!=b.getMode())try{this.addRecent({id:b.getHash(),title:b.getTitle(),mode:b.getMode()})}catch(u){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+
+1),mxSettings.save()}catch(u){}}catch(u){this.fileLoadedError=u;if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+(null!=b?b.getHash():"none"),action:"message_"+u.message,label:"stack_"+u.stack})}catch(v){}f=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=d?this.fileLoaded(d):g()});c?f():this.handleError(u,mxResources.get("errorLoadingFile"),
+f,!0,null,null,!0)}else g();return e};EditorUi.prototype.getHashValueForPages=function(b,c){var d=0,e=new mxGraphModel,g=new mxCodec;null!=c&&(c.byteCount=0,c.attrCount=0,c.eltCount=0,c.nodeCount=0);for(var f=0;f<b.length;f++){this.updatePageRoot(b[f]);var k=b[f].node.cloneNode(!1);k.removeAttribute("name");e.root=b[f].root;var p=g.encode(e);this.editor.graph.saveViewState(b[f].viewState,p,!0);p.removeAttribute("pageWidth");p.removeAttribute("pageHeight");k.appendChild(p);null!=c&&(c.eltCount+=k.getElementsByTagName("*").length,
+c.nodeCount+=k.getElementsByTagName("mxCell").length);d=(d<<5)-d+this.hashValue(k,function(b,d,c,e){return!e||"mxGeometry"!=b.nodeName&&"mxPoint"!=b.nodeName||"x"!=d&&"y"!=d&&"width"!=d&&"height"!=d?e&&"mxCell"==b.nodeName&&"previous"==d?null:c:Math.round(c)},c)<<0}return d};EditorUi.prototype.hashValue=function(b,c,e){var d=0;if(null!=b&&"object"===typeof b&&"number"===typeof b.nodeType&&"string"===typeof b.nodeName&&"function"===typeof b.getAttribute){null!=b.nodeName&&(d^=this.hashValue(b.nodeName,
+c,e));if(null!=b.attributes){null!=e&&(e.attrCount+=b.attributes.length);for(var g=0;g<b.attributes.length;g++){var f=b.attributes[g].name,l=null!=c?c(b,f,b.attributes[g].value,!0):b.attributes[g].value;null!=l&&(d^=this.hashValue(f,c,e)+this.hashValue(l,c,e))}}if(null!=b.childNodes)for(g=0;g<b.childNodes.length;g++)d=(d<<5)-d+this.hashValue(b.childNodes[g],c,e)<<0}else if(null!=b&&"function"!==typeof b){b=String(b);c=0;null!=e&&(e.byteCount+=b.length);for(g=0;g<b.length;g++)c=(c<<5)-c+b.charCodeAt(g)<<
+0;d^=c}return d};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(b,c,e,f,k,n,p){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?StorageFile.getFileContent(this,".scratchpad",mxUtils.bind(this,function(b){null==b&&(b=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,
+b,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(b){var d=mxUtils.createXmlDocument(),c=d.createElement("mxlibrary");mxUtils.setTextContent(c,JSON.stringify(b));d.appendChild(c);return mxUtils.getXml(d)};EditorUi.prototype.closeLibrary=function(b){null!=b&&(this.removeLibrarySidebar(b.getHash()),b.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(b.getHash()),".scratchpad"==b.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=
+function(b){var d=this.sidebar.palettes[b];if(null!=d){for(var c=0;c<d.length;c++)d[c].parentNode.removeChild(d[c]);delete this.sidebar.palettes[b]}};EditorUi.prototype.repositionLibrary=function(b){var d=this.sidebar.container;if(null==b){var c=this.sidebar.palettes["L.scratchpad"];null==c&&(c=this.sidebar.palettes.search);null!=c&&(b=c[c.length-1].nextSibling)}b=null!=b?b:d.firstChild.nextSibling.nextSibling;var c=d.lastChild,e=c.previousSibling;d.insertBefore(c,b);d.insertBefore(e,c)};EditorUi.prototype.loadLibrary=
+function(b,c){var d=mxUtils.parseXml(b.getData());if("mxlibrary"==d.documentElement.nodeName){var e=JSON.parse(mxUtils.getTextContent(d.documentElement));this.libraryLoaded(b,e,d.documentElement.getAttribute("title"),c)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(b){return""};EditorUi.prototype.libraryLoaded=function(b,c,e,f){if(null!=this.sidebar){b.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(b.getHash());".scratchpad"==b.title&&
+(this.scratchpad=b);var d=this.sidebar.palettes[b.getHash()],d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(b.getHash());var g=null,l=mxUtils.bind(this,function(d,c){0==d.length&&b.isEditable()?(null==g&&(g=document.createElement("div"),g.className="geDropTarget",mxUtils.write(g,mxResources.get("dragElementsHere"))),c.appendChild(g)):this.addLibraryEntries(d,c)});null!=this.sidebar&&null!=c&&this.sidebar.addEntries(c);null==e&&(e=b.getTitle(),null!=e&&/(\.xml)$/i.test(e)&&(e=e.substring(0,
+e.lastIndexOf("."))));var k=this.sidebar.addPalette(b.getHash(),e,null!=f?f:!0,mxUtils.bind(this,function(b){l(c,b)}));this.repositionLibrary(d);var q=k.parentNode.previousSibling;f=q.getAttribute("title");null!=f&&0<f.length&&".scratchpad"!=b.title&&q.setAttribute("title",this.getLibraryStorageHint(b)+"\n"+f);var p=document.createElement("div");p.style.position="absolute";p.style.right="0px";p.style.top="0px";p.style.padding="8px";p.style.backgroundColor="inherit";q.style.position="relative";var t=
+document.createElement("img");t.setAttribute("src",Editor.crossImage);t.setAttribute("title",mxResources.get("close"));t.setAttribute("valign","absmiddle");t.setAttribute("border","0");t.style.position="relative";t.style.top="2px";t.style.width="14px";t.style.cursor="pointer";t.style.margin="0 3px";Editor.isDarkMode()&&(t.style.filter="invert(100%)");var H=null;if(".scratchpad"!=b.title||this.closableScratchpad)p.appendChild(t),mxEvent.addListener(t,"click",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d)){var c=
+mxUtils.bind(this,function(){this.closeLibrary(b)});null!=H?this.confirm(mxResources.get("allChangesLost"),null,c,mxResources.get("cancel"),mxResources.get("discardChanges")):c();mxEvent.consume(d)}}));if(b.isEditable()){var z=this.editor.graph,D=null,N=mxUtils.bind(this,function(d){this.showLibraryDialog(b.getTitle(),k,c,b,b.getMode());mxEvent.consume(d)}),E=mxUtils.bind(this,function(d){b.setModified(!0);b.isAutosave()?(null!=D&&null!=D.parentNode&&D.parentNode.removeChild(D),D=t.cloneNode(!1),
+D.setAttribute("src",Editor.spinImage),D.setAttribute("title",mxResources.get("saving")),D.style.cursor="default",D.style.marginRight="2px",D.style.marginTop="-2px",p.insertBefore(D,p.firstChild),q.style.paddingRight=18*p.childNodes.length+"px",this.saveLibrary(b.getTitle(),c,b,b.getMode(),!0,!0,function(){null!=D&&null!=D.parentNode&&(D.parentNode.removeChild(D),q.style.paddingRight=18*p.childNodes.length+"px")})):null==H&&(H=t.cloneNode(!1),H.setAttribute("src",Editor.saveImage),H.setAttribute("title",
+mxResources.get("save")),p.insertBefore(H,p.firstChild),mxEvent.addListener(H,"click",mxUtils.bind(this,function(d){this.saveLibrary(b.getTitle(),c,b,b.getMode(),b.constructor==LocalLibrary,!0,function(){null==H||b.isModified()||(q.style.paddingRight=18*p.childNodes.length+"px",H.parentNode.removeChild(H),H=null)});mxEvent.consume(d)})),q.style.paddingRight=18*p.childNodes.length+"px")}),J=mxUtils.bind(this,function(b,d,e,f){b=z.cloneCells(mxUtils.sortCells(z.model.getTopmostCells(b)));for(var l=
+0;l<b.length;l++){var m=z.getCellGeometry(b[l]);null!=m&&m.translate(-d.x,-d.y)}k.appendChild(this.sidebar.createVertexTemplateFromCells(b,d.width,d.height,f||"",!0,!1,!1));b={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(b))),w:d.width,h:d.height};null!=f&&(b.title=f);c.push(b);E(e);null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)}),C=mxUtils.bind(this,function(b){if(z.isSelectionEmpty())z.getRubberband().isActive()?(z.getRubberband().execute(b),z.getRubberband().reset()):
+this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d=z.getSelectionCells(),c=z.view.getBounds(d),e=z.view.scale;c.x/=e;c.y/=e;c.width/=e;c.height/=e;c.x-=z.view.translate.x;c.y-=z.view.translate.y;J(d,c)}mxEvent.consume(b)});mxEvent.addGestureListeners(k,function(){},mxUtils.bind(this,function(b){z.isMouseDown&&null!=z.panningManager&&null!=z.graphHandler.first&&(z.graphHandler.suspend(),null!=z.graphHandler.hint&&(z.graphHandler.hint.style.visibility=
+"hidden"),k.style.backgroundColor="#f1f3f4",k.style.cursor="copy",z.panningManager.stop(),z.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){z.isMouseDown&&null!=z.panningManager&&null!=z.graphHandler&&(k.style.backgroundColor="",k.style.cursor="default",this.sidebar.showTooltips=!0,z.panningManager.stop(),z.graphHandler.reset(),z.isMouseDown=!1,z.autoScroll=!0,C(b),mxEvent.consume(b))}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(b){z.isMouseDown&&null!=z.graphHandler.first&&
+(z.graphHandler.resume(),null!=z.graphHandler.hint&&(z.graphHandler.hint.style.visibility="visible"),k.style.backgroundColor="",k.style.cursor="",z.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(k,"dragover",mxUtils.bind(this,function(b){k.style.backgroundColor="#f1f3f4";b.dataTransfer.dropEffect="copy";k.style.cursor="copy";this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()})),mxEvent.addListener(k,"drop",mxUtils.bind(this,function(b){k.style.cursor="";k.style.backgroundColor=
+"";0<b.dataTransfer.files.length&&this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(d,e,f,m,n,q,p,u,v){if(null!=d&&"image/"==e.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,n,q),d)],d[0].vertex=!0,J(d,new mxRectangle(0,0,n,q),b,mxEvent.isAltDown(b)?null:p.substring(0,p.lastIndexOf(".")).replace(/_/g," ")),null!=g&&null!=g.parentNode&&0<c.length&&
+(g.parentNode.removeChild(g),g=null);else{var x=!1,t=mxUtils.bind(this,function(d,e){if(null!=d&&"application/pdf"==e){var f=Editor.extractGraphModelFromPdf(d);null!=f&&0<f.length&&(d=f)}if(null!=d)if(f=mxUtils.parseXml(d),"mxlibrary"==f.documentElement.nodeName)try{var m=JSON.parse(mxUtils.getTextContent(f.documentElement));l(m,k);c=c.concat(m);E(b);this.spinner.stop();x=!0}catch(aa){}else if("mxfile"==f.documentElement.nodeName)try{for(var n=f.documentElement.getElementsByTagName("diagram"),m=0;m<
+n.length;m++){var q=this.stringToCells(Editor.getDiagramNodeXml(n[m])),p=this.editor.graph.getBoundingBoxFromGeometry(q);J(q,new mxRectangle(0,0,p.width,p.height),b)}x=!0}catch(aa){null!=window.console&&console.log("error in drop handler:",aa)}x||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)});null!=v&&null!=p&&(/(\.v(dx|sdx?))($|\?)/i.test(p)||/(\.vs(x|sx?))($|\?)/i.test(p))?this.importVisio(v,
+function(b){t(b,"text/xml")},null,p):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,p)&&null!=v?this.parseFile(v,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?t(b.responseText,"text/xml"):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):t(d,e)}}));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(k,"dragleave",function(b){k.style.cursor=
+"";k.style.backgroundColor="";b.stopPropagation();b.preventDefault()}));t=t.cloneNode(!1);t.setAttribute("src",Editor.editImage);t.setAttribute("title",mxResources.get("edit"));p.insertBefore(t,p.firstChild);mxEvent.addListener(t,"click",N);mxEvent.addListener(k,"dblclick",function(b){mxEvent.getSource(b)==k&&N(b)});f=t.cloneNode(!1);f.setAttribute("src",Editor.plusImage);f.setAttribute("title",mxResources.get("add"));p.insertBefore(f,p.firstChild);mxEvent.addListener(f,"click",C);this.isOffline()||
+".scratchpad"!=b.title||null==EditorUi.scratchpadHelpLink||(f=document.createElement("span"),f.setAttribute("title",mxResources.get("help")),f.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(f,"?"),mxEvent.addGestureListeners(f,mxUtils.bind(this,function(b){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(b)})),p.insertBefore(f,p.firstChild))}q.appendChild(p);q.style.paddingRight=18*p.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=
+function(b,c){for(var d=0;d<b.length;d++){var e=b[d],g=e.data;if(null!=g){var g=this.convertDataUri(g),f="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==e.aspect&&(f+="aspect=fixed;");c.appendChild(this.sidebar.createVertexTemplate(f+"image="+g,e.w,e.h,"",e.title||"",!1,!1,!0))}else null!=e.xml&&(g=this.stringToCells(Graph.decompress(e.xml)),0<g.length&&c.appendChild(this.sidebar.createVertexTemplateFromCells(g,e.w,e.h,e.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=
+function(b){return null!=b?b[mxLanguage]||b.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground="linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=
+3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38):Editor.isDarkMode()&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor=Editor.darkColor,Format.inactiveTabBackgroundColor="black",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.shapeBackgroundColor=Editor.darkColor,Graph.prototype.shapeForegroundColor=Editor.lightColor,Graph.prototype.defaultPageBackgroundColor=Editor.darkColor,Graph.prototype.defaultPageBorderColor="#505759",BaseFormatPanel.prototype.buttonBackgroundColor=
+Editor.darkColor,mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxConstants.DROP_TARGET_COLOR="#00ff00");Editor.sketchFontFamily="Architects Daughter";Editor.sketchFontSource="https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter";"1"==urlParams.sketch&&(Graph.prototype.defaultVertexStyle={hachureGap:"4"},Graph.prototype.defaultEdgeStyle={edgeStyle:"none",rounded:"0",curved:"1",jettySize:"auto",orthogonalLoop:"1",endArrow:"open",
+startSize:"14",endSize:"14",sourcePerimeterSpacing:"8",targetPerimeterSpacing:"8"},Editor.configurationKey=".sketch-configuration",Editor.settingsKey=".sketch-config",Graph.prototype.defaultGridEnabled="1"==urlParams.grid,Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=function(b,c,e,f,k){b=new ImageDialog(this,b,c,e,f,k);this.showDialog(b.container,
+Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);b.init()};EditorUi.prototype.showBackgroundImageDialog=function(b,c){b=null!=b?b:mxUtils.bind(this,function(b,d){if(!d){var c=new ChangePageSetup(this,null,b);c.ignoreColor=!0;this.editor.graph.model.execute(c)}});var d=new BackgroundImageDialog(this,b,c);this.showDialog(d.container,360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(b,c,e,f,k){b=new LibraryDialog(this,b,c,e,f,k);this.showDialog(b.container,640,440,!0,!1,
+mxUtils.bind(this,function(b){b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));b.init()};var e=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(b){var d=e.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(b){this.editor.graph.isSelectionEmpty()&&d.refresh()}));return d};EditorUi.prototype.createSidebarFooterContainer=function(){var b=this.createDiv("geSidebarContainer geSidebarFooter");b.style.position=
+"absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var e=c.getElementsByTagName("span")[0];e.style.fontSize="18px";e.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(c,
+"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};EditorUi.prototype.handleError=function(b,c,e,f,k,n,p){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{p?null!=window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&null!=b.name)?b.name:b.message,b.filename,b.lineNumber,
+b.columnNumber,b,"INFO")}catch(D){}if(null!=g||null!=c){p=mxUtils.htmlEntities(mxResources.get("unknownError"));var l=mxResources.get("ok"),m=null;c=null!=c?c:mxResources.get("error");if(null!=g){null!=g.retry&&(l=mxResources.get("cancel"),m=function(){d();g.retry()});if(404==g.code||404==g.status||403==g.code){p=403==g.code?null!=g.message?mxUtils.htmlEntities(g.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=k?k:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=
+this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var q=null!=k?null:null!=n?n:window.location.hash;if(null!=q&&("#G"==q.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==q.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==g.code||404==g.status)){q="#U"==q.substring(0,
+2)?q.substring(45,q.lastIndexOf("%26ex")):q.substring(2);this.showError(c,p,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+q);this.handleError(b,c,e,f,k)}),m,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){g.innerHTML="";for(var b=0;b<d.length;b++){var c=document.createElement("option");mxUtils.write(c,d[b].displayName);c.value=b;g.appendChild(c);c=document.createElement("option");c.innerHTML="&nbsp;&nbsp;&nbsp;";
+mxUtils.write(c,"<"+d[b].email+">");c.setAttribute("disabled","disabled");g.appendChild(c)}c=document.createElement("option");mxUtils.write(c,mxResources.get("addAccount"));c.value=d.length;g.appendChild(c)}var d=this.drive.getUsersList(),c=document.createElement("div"),e=document.createElement("span");e.style.marginTop="6px";mxUtils.write(e,mxResources.get("changeUser")+": ");c.appendChild(e);var g=document.createElement("select");g.style.width="200px";b();mxEvent.addListener(g,"change",mxUtils.bind(this,
+function(){var c=g.value,e=d.length!=c;e&&this.drive.setUser(d[c]);this.drive.authorize(e,mxUtils.bind(this,function(){e||(d=this.drive.getUsersList(),b())}),mxUtils.bind(this,function(b){this.handleError(b)}),!0)}));c.appendChild(g);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(c.container,300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=e&&e()}),480,150);return}}null!=g.message?
+p=""==g.message&&null!=g.name?mxUtils.htmlEntities(g.name):mxUtils.htmlEntities(g.message):null!=g.response&&null!=g.response.error?p=mxUtils.htmlEntities(g.response.error):"undefined"!==typeof window.App&&(g.code==App.ERROR_TIMEOUT?p=mxUtils.htmlEntities(mxResources.get("timeout")):g.code==App.ERROR_BUSY?p=mxUtils.htmlEntities(mxResources.get("busy")):"string"===typeof g&&0<g.length&&(p=mxUtils.htmlEntities(g)))}var u=n=null;null!=g&&null!=g.helpLink?(n=mxResources.get("help"),u=mxUtils.bind(this,
+function(){return this.editor.graph.openLink(g.helpLink)})):null!=g&&null!=g.ownerEmail&&(n=mxResources.get("contactOwner"),p+=mxUtils.htmlEntities(" ("+n+": "+g.ownerEmail+")"),u=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(g.ownerEmail))}));this.showError(c,p,l,e,m,null,null,n,u,null,null,null,f?e:null)}else null!=e&&e()};EditorUi.prototype.alert=function(b,c,e){b=new ErrorDialog(this,null,b,mxResources.get("ok"),c);this.showDialog(b.container,e||340,100,!0,!1);
+b.init()};EditorUi.prototype.confirm=function(b,c,e,f,k,n){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=Math.min(200,28*Math.ceil(b.length/50));b=new ConfirmDialog(this,b,function(){d();null!=c&&c()},function(){d();null!=e&&e()},f,k,null,null,null,null,g);this.showDialog(b.container,340,46+g,!0,n);b.init()};EditorUi.prototype.showBanner=function(b,c,e,f){var d=!1;if(!(this.bannerShowing||this["hideBanner"+b]||isLocalStorage&&null!=mxSettings.settings&&null!=
+mxSettings.settings["close"+b])){var g=document.createElement("div");g.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(g.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(g.style,"transition","all 1s ease");g.className="geBtn gePrimaryBtn";
+d=document.createElement("img");d.setAttribute("src",IMAGE_PATH+"/logo.png");d.setAttribute("border","0");d.setAttribute("align","absmiddle");d.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";g.appendChild(d);d=document.createElement("img");d.setAttribute("src",Dialog.prototype.closeImage);d.setAttribute("title",mxResources.get(f?"doNotShowAgain":"close"));d.setAttribute("border","0");d.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";
+g.appendChild(d);mxUtils.write(g,c);document.body.appendChild(g);this.bannerShowing=!0;c=document.createElement("div");c.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var l=document.createElement("input");l.setAttribute("type","checkbox");l.setAttribute("id","geDoNotShowAgainCheckbox");l.style.marginRight="6px";if(!f){c.appendChild(l);var k=document.createElement("label");k.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(k,mxResources.get("doNotShowAgain"));c.appendChild(k);
+g.style.paddingBottom="30px";g.appendChild(c)}var q=mxUtils.bind(this,function(){null!=g.parentNode&&(g.parentNode.removeChild(g),this.bannerShowing=!1,l.checked||f)&&(this["hideBanner"+b]=!0,isLocalStorage&&null!=mxSettings.settings&&(mxSettings.settings["close"+b]=Date.now(),mxSettings.save()))});mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){mxEvent.consume(b);q()}));var p=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,
+function(){q()}),1E3)});mxEvent.addListener(g,"click",mxUtils.bind(this,function(b){var d=mxEvent.getSource(b);d!=l&&d!=k?(null!=e&&e(),q(),mxEvent.consume(b)):p()}));window.setTimeout(mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(p,3E4);d=!0}return d};EditorUi.prototype.setCurrentFile=function(b){null!=b&&(b.opened=new Date);this.currentFile=b};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=
+function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(b,c,e,f){b=b.toDataURL("image/"+e);if(null!=b&&6<b.length)null!=c&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(c))),0<f&&(b=Editor.writeGraphModelToPng(b,"pHYs","dpi",f));else throw{message:mxResources.get("unknownError")};return b};EditorUi.prototype.saveCanvas=function(b,c,e,f,k){var d="jpeg"==e?"jpg":e;f=this.getBaseFilename(f)+(null!=c?".drawio":"")+"."+d;b=this.createImageDataUri(b,
+c,e,k);this.saveData(f,d,b.substring(b.lastIndexOf(",")+1),"image/"+e,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(b,c){var d=new TextareaDialog(this,b,c,null,null,mxResources.get("close"));d.textarea.style.width="600px";
+d.textarea.style.height="380px";this.showDialog(d.container,620,460,!0,!0,null,null,null,null,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(b,c,e,f,k,n){"text/xml"!=e||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.html)$/i.test(c)||(c=c+"."+(null!=n?n:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)b=f?this.base64ToBlob(b,e):new Blob([b],{type:e}),navigator.msSaveOrOpenBlob(b,c);else if(mxClient.IS_IE)e=window.open("about:blank",
+"_blank"),null==e?mxUtils.popup(b,!0):(e.document.write(b),e.document.close(),e.document.execCommand("SaveAs",!0,c),e.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==e||"image/"!=e.substring(0,6)?this.showTextDialog(c+":",b):this.openInNewWindow(b,e,f);else{var d=document.createElement("a");n=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof d.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
+n=65==(g?parseInt(g[2],10):!1)?!1:n}if(n||this.isOffline()){d.href=URL.createObjectURL(f?this.base64ToBlob(b,e):new Blob([b],{type:e}));n?d.download=c:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},2E4),d.click(),d.parentNode.removeChild(d)}catch(y){}}else this.createEchoRequest(b,c,e,f,k).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,e,f,k,n){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,
+b+(null!=e?"&mime="+e:"")+(null!=k?"&format="+k:"")+(null!=n?"&base64="+n:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(b,c){c=c||"";for(var d=atob(b),e=d.length,g=Math.ceil(e/1024),f=Array(g),k=0;k<g;++k){for(var p=1024*k,t=Math.min(p+1024,e),x=Array(t-p),F=0;p<t;++F,++p)x[F]=d[p].charCodeAt(0);f[k]=new Uint8Array(x)}return new Blob(f,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,e,f,k,n,p,v){n=null!=n?n:!1;p=null!=p?
+p:"vsdx"!=k&&(!mxClient.IS_IOS||!navigator.standalone);k=this.getServiceCount(n);isLocalStorage&&k++;var d=4>=k?2:6<k?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(d,c){try{if("_blank"==c)if(null!=e&&"image/"==e.substring(0,6))this.openInNewWindow(b,e,f);else if(null!=e&&"text/html"==e.substring(0,9)){var g=new EmbedDialog(this,b);this.showDialog(g.container,450,240,!0,!0);g.init()}else{var l=window.open("about:blank");null==l?mxUtils.popup(b,!0):(l.document.write("<pre>"+mxUtils.htmlEntities(b,
+!1)+"</pre>"),l.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(b,d,e,f,null,v):null!=d&&0<d.length&&this.pickFolder(c,mxUtils.bind(this,function(g){try{this.exportFile(b,d,e,f,c,g)}catch(N){this.handleError(N)}}))}catch(D){this.handleError(D)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,n,p,null,1<k,d,b,e,f);n=this.isServices(k)?k>d?390:270:160;this.showDialog(c.container,420,n,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=
function(b,c,e){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(b,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?d.document.write("<html>"+b+"</html>"):(b=e?b:btoa(unescape(encodeURIComponent(b))),d.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+b+'"/></html>')):d.document.write("<html><pre>"+mxUtils.htmlEntities(b,!1)+"</pre></html>"),d.document.close())};var k=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=
function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};EditorUi.prototype.addChromelessToolbarItems=function(b){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var d=b(mxUtils.bind(this,function(b){null==this.tagsComponent&&(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position=
"",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding="4px",this.tagsComponent.div.style.overflow="auto",this.tagsComponent.div.style.height="auto",this.tagsComponent.div.style.position="fixed",this.tagsComponent.div.style.fontFamily=Editor.defaultHtmlFont,mxClient.IS_IE||mxClient.IS_IE11?(this.tagsComponent.div.style.backgroundColor=
@@ -3494,146 +3503,146 @@ Editor.tagsImage,mxResources.get("tags"));this.editor.graph.getModel().addListen
(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null)}));this.editor.addListener("pageSelected",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));mxEvent.addListener(this.editor.graph.container,"click",mxUtils.bind(this,function(){null!=this.tagsDialog&&(this.tagsDialog.parentNode.removeChild(this.tagsDialog),
this.tagsDialog=null);null!=this.layersDialog&&(this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null)}));if(this.isExportToCanvas()&&this.isChromelessImageExportEnabled()){this.exportDialog=null;var c=b(mxUtils.bind(this,function(b){var d=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",d);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)d.apply(this);
else{this.exportDialog=document.createElement("div");var e=c.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily=Editor.defaultHtmlFont;this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color=
-"#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=e.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";e=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=e.zIndex;var f=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});f.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,
-function(b){f.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(b,null,"png");b=document.createElement("img");b.style.maxWidth="140px";b.style.maxHeight="140px";b.style.cursor="pointer";b.style.backgroundColor="white";b.setAttribute("title",mxResources.get("openInNewWindow"));b.setAttribute("border","0");b.setAttribute("src",c);this.exportDialog.appendChild(b);mxEvent.addListener(b,"click",mxUtils.bind(this,
-function(){this.openInNewWindow(c.substring(c.indexOf(",")+1),"image/png",!0);d.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,null,null,null,null,null,null,Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",d);document.body.appendChild(this.exportDialog)}mxEvent.consume(b)}),Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(b,c,e,g,k){this.isLocalFileSave()?
-this.saveLocalFile(e,b,g,k,c):this.saveRequest(b,c,mxUtils.bind(this,function(b,d){return this.createEchoRequest(e,b,g,k,c,d)}),e,k,g)};EditorUi.prototype.saveRequest=function(b,c,e,g,k,n,p){p=null!=p?p:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);isLocalStorage&&d++;var f=4>=d?2:6<d?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,d){if("_blank"==d||null!=b&&0<b.length){var f=e("_blank"==d?null:b,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");
-null!=f&&(d==App.MODE_DEVICE||"download"==d||"_blank"==d?f.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(e){n=null!=n?n:"pdf"==c?"application/pdf":"image/"+c;if(null!=g)try{this.exportFile(g,b,n,!0,d,e)}catch(D){this.handleError(D)}else this.spinner.spin(document.body,mxResources.get("saving"))&&f.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=f.getStatus()&&299>=f.getStatus())try{this.exportFile(f.getText(),b,n,!0,d,e)}catch(D){this.handleError(D)}else this.handleError({message:mxResources.get("errorSavingFile")})}),
-function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,p,null,1<d,f,g,n,k);d=this.isServices(d)?4<d?390:270:160;this.showDialog(b.container,420,d,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,e,g,k,n){};EditorUi.prototype.pickFolder=function(b,
-c,e){c(null)};EditorUi.prototype.exportSvg=function(b,c,e,g,k,n,p,t,y,x,F,H,z,D){if(this.spinner.spin(document.body,mxResources.get("export")))try{var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;var f=c?null:this.editor.graph.background;f==mxConstants.NONE&&(f=null);null==f&&0==c&&(f=F?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var l=this.editor.graph.getSvg(f,b,p,t,null,e,null,null,"blank"==x?"_blank":"self"==x?"_top":null,null,!0,F,H);g&&this.editor.graph.addSvgShadow(l);var m=
+"#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=e.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";e=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=e.zIndex;var g=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});g.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,
+function(b){g.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(b,null,"png");b=document.createElement("img");b.style.maxWidth="140px";b.style.maxHeight="140px";b.style.cursor="pointer";b.style.backgroundColor="white";b.setAttribute("title",mxResources.get("openInNewWindow"));b.setAttribute("border","0");b.setAttribute("src",c);this.exportDialog.appendChild(b);mxEvent.addListener(b,"click",mxUtils.bind(this,
+function(){this.openInNewWindow(c.substring(c.indexOf(",")+1),"image/png",!0);d.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,null,null,null,null,null,null,Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",d);document.body.appendChild(this.exportDialog)}mxEvent.consume(b)}),Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(b,c,e,f,k){this.isLocalFileSave()?
+this.saveLocalFile(e,b,f,k,c):this.saveRequest(b,c,mxUtils.bind(this,function(b,d){return this.createEchoRequest(e,b,f,k,c,d)}),e,k,f)};EditorUi.prototype.saveRequest=function(b,c,e,f,k,n,p){p=null!=p?p:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);isLocalStorage&&d++;var g=4>=d?2:6<d?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,d){if("_blank"==d||null!=b&&0<b.length){var g=e("_blank"==d?null:b,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");
+null!=g&&(d==App.MODE_DEVICE||"download"==d||"_blank"==d?g.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(e){n=null!=n?n:"pdf"==c?"application/pdf":"image/"+c;if(null!=f)try{this.exportFile(f,b,n,!0,d,e)}catch(D){this.handleError(D)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),b,n,!0,d,e)}catch(D){this.handleError(D)}else this.handleError({message:mxResources.get("errorSavingFile")})}),
+function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,p,null,1<d,g,f,n,k);d=this.isServices(d)?4<d?390:270:160;this.showDialog(b.container,420,d,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,e,f,k,n){};EditorUi.prototype.pickFolder=function(b,
+c,e){c(null)};EditorUi.prototype.exportSvg=function(b,c,e,f,k,n,p,t,y,x,F,H,z,D){if(this.spinner.spin(document.body,mxResources.get("export")))try{var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;var g=c?null:this.editor.graph.background;g==mxConstants.NONE&&(g=null);null==g&&0==c&&(g=F?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var l=this.editor.graph.getSvg(g,b,p,t,null,e,null,null,"blank"==x?"_blank":"self"==x?"_top":null,null,!0,F,H);f&&this.editor.graph.addSvgShadow(l);var m=
this.getBaseFilename()+(k?".drawio":"")+".svg";D=null!=D?D:mxUtils.bind(this,function(b){this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(m,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});var q=mxUtils.bind(this,function(b){this.spinner.stop();k&&b.setAttribute("content",this.getFileData(!0,null,null,null,e,y,null,null,null,!1));D(Graph.xmlDeclaration+"\n"+(k?Graph.svgFileComment+
-"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(l);var u=mxUtils.bind(this,function(b){n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,q,this.thumbImageCache)):q(b)});z?this.embedFonts(l,u):(this.editor.addFontCss(l),u(l))}catch(aa){this.handleError(aa)}};EditorUi.prototype.addRadiobox=function(b,c,e,g,k,n,p){return this.addCheckbox(b,e,g,k,n,p,!0,c)};EditorUi.prototype.addCheckbox=function(b,c,e,g,k,n,
-p,t){n=null!=n?n:!0;var d=document.createElement("input");d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",p?"radio":"checkbox");p="geCheckbox-"+Editor.guid();d.id=p;null!=t&&d.setAttribute("name",t);e&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);g&&d.setAttribute("disabled","disabled");n&&(b.appendChild(d),e=document.createElement("label"),mxUtils.write(e,c),e.setAttribute("for",p),b.appendChild(e),k||mxUtils.br(b));return d};EditorUi.prototype.addEditButton=
-function(b,c){var d=this.addCheckbox(b,mxResources.get("edit")+":",!0,null,!0);d.style.marginLeft="24px";var e=this.getCurrentFile(),f="";null!=e&&e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var g=document.createElement("select");g.style.width="120px";g.style.marginLeft="8px";g.style.marginRight="10px";g.className="geBtn";e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,mxResources.get("makeCopy"));g.appendChild(e);e=document.createElement("option");
-e.setAttribute("value","custom");mxUtils.write(e,mxResources.get("custom")+"...");g.appendChild(e);b.appendChild(g);mxEvent.addListener(g,"change",mxUtils.bind(this,function(){if("custom"==g.value){var b=new FilenameDialog(this,f,mxResources.get("ok"),function(b){null!=b?f=b:g.value="blank"},mxResources.get("url"),null,null,null,null,function(){g.value="blank"});this.showDialog(b.container,300,80,!0,!1);b.init()}}));mxEvent.addListener(d,"change",mxUtils.bind(this,function(){d.checked&&(null==c||
-c.checked)?g.removeAttribute("disabled"):g.setAttribute("disabled","disabled")}));mxUtils.br(b);return{getLink:function(){return d.checked?"blank"===g.value?"_blank":f:null},getEditInput:function(){return d},getEditSelect:function(){return g}}};EditorUi.prototype.addLinkSection=function(b,c){function d(){var b=document.createElement("div");b.style.width="100%";b.style.height="100%";b.style.boxSizing="border-box";null!=g&&g!=mxConstants.NONE?(b.style.border="1px solid black",b.style.backgroundColor=
-g):(b.style.backgroundPosition="center center",b.style.backgroundRepeat="no-repeat",b.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')");k.innerHTML="";k.appendChild(b)}mxUtils.write(b,mxResources.get("links")+":");var e=document.createElement("select");e.style.width="100px";e.style.marginLeft="8px";e.style.marginRight="10px";e.className="geBtn";var f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));e.appendChild(f);f=document.createElement("option");
-f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));e.appendChild(f);f=document.createElement("option");f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));e.appendChild(f);c&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),e.appendChild(f));b.appendChild(e);mxUtils.write(b,mxResources.get("borderColor")+":");var g="#0000ff",k=
-null,k=mxUtils.button("",mxUtils.bind(this,function(b){this.pickColor(g||"none",function(b){g=b;d()});mxEvent.consume(b)}));d();k.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";k.style.marginLeft="4px";k.style.height="22px";k.style.width="22px";k.style.position="relative";k.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";k.className="geColorBtn";b.appendChild(k);mxUtils.br(b);return{getColor:function(){return g},getTarget:function(){return e.value},focus:function(){e.focus()}}};
-EditorUi.prototype.createUrlParameters=function(b,c,e,g,k,n,p){p=null!=p?p:[];g&&("https://viewer.diagrams.net"==EditorUi.lightboxHost&&"1"!=urlParams.dev||p.push("lightbox=1"),"auto"!=b&&p.push("target="+b),null!=c&&c!=mxConstants.NONE&&p.push("highlight="+("#"==c.charAt(0)?c.substring(1):c)),null!=k&&0<k.length&&p.push("edit="+encodeURIComponent(k)),n&&p.push("layers=1"),this.editor.graph.foldingEnabled&&p.push("nav=1"));e&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&
-p.push("page-id="+this.currentPage.getId());return p};EditorUi.prototype.createLink=function(b,c,e,g,k,n,p,t,y,x){y=this.createUrlParameters(b,c,e,g,k,n,y);b=this.getCurrentFile();c=!0;null!=p?e="#U"+encodeURIComponent(p):(b=this.getCurrentFile(),t||null==b||b.constructor!=window.DriveFile?e="#R"+encodeURIComponent(e?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(e="#"+b.getHash(),c=!1));c&&null!=b&&null!=b.getTitle()&&b.getTitle()!=
-this.defaultFilename&&y.push("title="+encodeURIComponent(b.getTitle()));x&&1<e.length&&(y.push("open="+e.substring(1)),e="");return(g&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<y.length?"?"+y.join("&"):"")+e};EditorUi.prototype.createHtml=function(b,c,e,g,k,n,p,t,y,x,F,H){this.getBasenames();var d={};""!=k&&k!=mxConstants.NONE&&(d.highlight=k);"auto"!==
-g&&(d.target=g);x||(d.lightbox=!1);d.nav=this.editor.graph.foldingEnabled;e=parseInt(e);isNaN(e)||100==e||(d.zoom=e/100);e=[];p&&(e.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));c&&(e.push("zoom"),d.resize=!0);t&&e.push("layers");y&&e.push("tags");0<e.length&&(x&&e.push("lightbox"),d.toolbar=e.join(" "));null!=F&&0<F.length&&(d.edit=F);null!=b?d.url=b:d.xml=this.getFileData(!0,null,null,null,null,!p);c='<div class="mxgraph" style="'+
+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(l);var u=mxUtils.bind(this,function(b){n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,q,this.thumbImageCache)):q(b)});z?this.embedFonts(l,u):(this.editor.addFontCss(l),u(l))}catch(Z){this.handleError(Z)}};EditorUi.prototype.addRadiobox=function(b,c,e,f,k,n,p){return this.addCheckbox(b,e,f,k,n,p,!0,c)};EditorUi.prototype.addCheckbox=function(b,c,e,f,k,n,p,
+t){n=null!=n?n:!0;var d=document.createElement("input");d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",p?"radio":"checkbox");p="geCheckbox-"+Editor.guid();d.id=p;null!=t&&d.setAttribute("name",t);e&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);f&&d.setAttribute("disabled","disabled");n&&(b.appendChild(d),e=document.createElement("label"),mxUtils.write(e,c),e.setAttribute("for",p),b.appendChild(e),k||mxUtils.br(b));return d};EditorUi.prototype.addEditButton=function(b,
+c){var d=this.addCheckbox(b,mxResources.get("edit")+":",!0,null,!0);d.style.marginLeft="24px";var e=this.getCurrentFile(),g="";null!=e&&e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER&&(g=window.location.href);var f=document.createElement("select");f.style.width="120px";f.style.marginLeft="8px";f.style.marginRight="10px";f.className="geBtn";e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,mxResources.get("makeCopy"));f.appendChild(e);e=document.createElement("option");
+e.setAttribute("value","custom");mxUtils.write(e,mxResources.get("custom")+"...");f.appendChild(e);b.appendChild(f);mxEvent.addListener(f,"change",mxUtils.bind(this,function(){if("custom"==f.value){var b=new FilenameDialog(this,g,mxResources.get("ok"),function(b){null!=b?g=b:f.value="blank"},mxResources.get("url"),null,null,null,null,function(){f.value="blank"});this.showDialog(b.container,300,80,!0,!1);b.init()}}));mxEvent.addListener(d,"change",mxUtils.bind(this,function(){d.checked&&(null==c||
+c.checked)?f.removeAttribute("disabled"):f.setAttribute("disabled","disabled")}));mxUtils.br(b);return{getLink:function(){return d.checked?"blank"===f.value?"_blank":g:null},getEditInput:function(){return d},getEditSelect:function(){return f}}};EditorUi.prototype.addLinkSection=function(b,c){function d(){var b=document.createElement("div");b.style.width="100%";b.style.height="100%";b.style.boxSizing="border-box";null!=f&&f!=mxConstants.NONE?(b.style.border="1px solid black",b.style.backgroundColor=
+f):(b.style.backgroundPosition="center center",b.style.backgroundRepeat="no-repeat",b.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')");k.innerHTML="";k.appendChild(b)}mxUtils.write(b,mxResources.get("links")+":");var e=document.createElement("select");e.style.width="100px";e.style.marginLeft="8px";e.style.marginRight="10px";e.className="geBtn";var g=document.createElement("option");g.setAttribute("value","auto");mxUtils.write(g,mxResources.get("automatic"));e.appendChild(g);g=document.createElement("option");
+g.setAttribute("value","blank");mxUtils.write(g,mxResources.get("openInNewWindow"));e.appendChild(g);g=document.createElement("option");g.setAttribute("value","self");mxUtils.write(g,mxResources.get("openInThisWindow"));e.appendChild(g);c&&(g=document.createElement("option"),g.setAttribute("value","frame"),mxUtils.write(g,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),e.appendChild(g));b.appendChild(e);mxUtils.write(b,mxResources.get("borderColor")+":");var f="#0000ff",k=
+null,k=mxUtils.button("",mxUtils.bind(this,function(b){this.pickColor(f||"none",function(b){f=b;d()});mxEvent.consume(b)}));d();k.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";k.style.marginLeft="4px";k.style.height="22px";k.style.width="22px";k.style.position="relative";k.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";k.className="geColorBtn";b.appendChild(k);mxUtils.br(b);return{getColor:function(){return f},getTarget:function(){return e.value},focus:function(){e.focus()}}};
+EditorUi.prototype.createUrlParameters=function(b,c,e,f,k,n,p){p=null!=p?p:[];f&&("https://viewer.diagrams.net"==EditorUi.lightboxHost&&"1"!=urlParams.dev||p.push("lightbox=1"),"auto"!=b&&p.push("target="+b),null!=c&&c!=mxConstants.NONE&&p.push("highlight="+("#"==c.charAt(0)?c.substring(1):c)),null!=k&&0<k.length&&p.push("edit="+encodeURIComponent(k)),n&&p.push("layers=1"),this.editor.graph.foldingEnabled&&p.push("nav=1"));e&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&
+p.push("page-id="+this.currentPage.getId());return p};EditorUi.prototype.createLink=function(b,c,e,f,k,n,p,t,y,x){y=this.createUrlParameters(b,c,e,f,k,n,y);b=this.getCurrentFile();c=!0;null!=p?e="#U"+encodeURIComponent(p):(b=this.getCurrentFile(),t||null==b||b.constructor!=window.DriveFile?e="#R"+encodeURIComponent(e?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(e="#"+b.getHash(),c=!1));c&&null!=b&&null!=b.getTitle()&&b.getTitle()!=
+this.defaultFilename&&y.push("title="+encodeURIComponent(b.getTitle()));x&&1<e.length&&(y.push("open="+e.substring(1)),e="");return(f&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<y.length?"?"+y.join("&"):"")+e};EditorUi.prototype.createHtml=function(b,c,e,f,k,n,p,t,y,x,F,H){this.getBasenames();var d={};""!=k&&k!=mxConstants.NONE&&(d.highlight=k);"auto"!==
+f&&(d.target=f);x||(d.lightbox=!1);d.nav=this.editor.graph.foldingEnabled;e=parseInt(e);isNaN(e)||100==e||(d.zoom=e/100);e=[];p&&(e.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));c&&(e.push("zoom"),d.resize=!0);t&&e.push("layers");y&&e.push("tags");0<e.length&&(x&&e.push("lightbox"),d.toolbar=e.join(" "));null!=F&&0<F.length&&(d.edit=F);null!=b?d.url=b:d.xml=this.getFileData(!0,null,null,null,null,!p);c='<div class="mxgraph" style="'+
(n?"max-width:100%;":"")+(""!=e?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(d))+'"></div>';b=null!=b?"&fetch="+encodeURIComponent(b):"";H(c,'<script type="text/javascript" src="'+(0<b.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+"/embed2.js?")+b:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+
-'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(b,c,e,g){var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=document.createElement("h3");mxUtils.write(f,mxResources.get("html"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(f);var l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var k=document.createElement("input");k.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";
-k.setAttribute("value","url");k.setAttribute("type","radio");k.setAttribute("name","type-embedhtmldialog");f=k.cloneNode(!0);f.setAttribute("value","copy");l.appendChild(f);var q=document.createElement("span");mxUtils.write(q,mxResources.get("includeCopyOfMyDiagram"));l.appendChild(q);mxUtils.br(l);l.appendChild(k);q=document.createElement("span");mxUtils.write(q,mxResources.get("publicDiagramUrl"));l.appendChild(q);var p=this.getCurrentFile();null==e&&null!=p&&p.constructor==window.DriveFile&&(q=
-document.createElement("a"),q.style.paddingLeft="12px",q.style.color="gray",q.style.cursor="pointer",mxUtils.write(q,mxResources.get("share")),l.appendChild(q),mxEvent.addListener(q,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(p.getId())})));f.setAttribute("checked","checked");null==e&&k.setAttribute("disabled","disabled");d.appendChild(l);var t=this.addLinkSection(d),H=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var z=document.createElement("input");
-z.setAttribute("type","text");z.style.marginRight="16px";z.style.width="60px";z.style.marginLeft="4px";z.style.marginRight="12px";z.value="100%";d.appendChild(z);var D=this.addCheckbox(d,mxResources.get("fit"),!0),l=null!=this.pages&&1<this.pages.length,L=L=this.addCheckbox(d,mxResources.get("allPages"),l,!l),E=this.addCheckbox(d,mxResources.get("layers"),!0),J=this.addCheckbox(d,mxResources.get("tags"),!0),C=this.addCheckbox(d,mxResources.get("lightbox"),!0),K=this.addEditButton(d,C),M=K.getEditInput();
-M.style.marginBottom="16px";mxEvent.addListener(C,"change",function(){C.checked?M.removeAttribute("disabled"):M.setAttribute("disabled","disabled");M.checked&&C.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){g(k.checked?e:null,H.checked,z.value,t.getTarget(),t.getColor(),D.checked,L.checked,E.checked,J.checked,C.checked,K.getLink())}),null,b,c);this.showDialog(b.container,340,430,
-!0,!0);f.focus()};EditorUi.prototype.showPublishLinkDialog=function(b,c,e,g,k,n,p,t){var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=document.createElement("h3");mxUtils.write(f,b||mxResources.get("link"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(f);var l=this.getCurrentFile();b=0;if(null==l||l.constructor!=window.DriveFile||c)p=null!=p?p:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{b=80;p=null!=p?p:"https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram";
-f=document.createElement("div");f.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var m=document.createElement("div");m.style.whiteSpace="normal";mxUtils.write(m,mxResources.get("linkAccountRequired"));f.appendChild(m);m=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(l.getId())}));m.style.marginTop="12px";m.className="geBtn";f.appendChild(m);d.appendChild(f);m=document.createElement("a");
-m.style.paddingLeft="12px";m.style.color="gray";m.style.fontSize="11px";m.style.cursor="pointer";mxUtils.write(m,mxResources.get("check"));f.appendChild(m);mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(b){this.spinner.stop();b=new ErrorDialog(this,null,mxResources.get(null!=b?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(b.container,
-300,80,!0,!1);b.init()}))}))}var q=null,u=null;if(null!=e||null!=g)b+=30,mxUtils.write(d,mxResources.get("width")+":"),q=document.createElement("input"),q.setAttribute("type","text"),q.style.marginRight="16px",q.style.width="50px",q.style.marginLeft="6px",q.style.marginRight="16px",q.style.marginBottom="10px",q.value="100%",d.appendChild(q),mxUtils.write(d,mxResources.get("height")+":"),u=document.createElement("input"),u.setAttribute("type","text"),u.style.width="50px",u.style.marginLeft="6px",u.style.marginBottom=
-"10px",u.value=g+"px",d.appendChild(u),mxUtils.br(d);var v=this.addLinkSection(d,n);e=null!=this.pages&&1<this.pages.length;var E=null;if(null==l||l.constructor!=window.DriveFile||c)E=this.addCheckbox(d,mxResources.get("allPages"),e,!e);var J=this.addCheckbox(d,mxResources.get("lightbox"),!0,null,null,!n),C=this.addEditButton(d,J),K=C.getEditInput();n&&(K.style.marginLeft=J.style.marginLeft,J.style.display="none",b-=20);var M=this.addCheckbox(d,mxResources.get("layers"),!0);M.style.marginLeft=K.style.marginLeft;
-M.style.marginTop="8px";var aa=this.addCheckbox(d,mxResources.get("tags"),!0);aa.style.marginLeft=K.style.marginLeft;aa.style.marginBottom="16px";aa.style.marginTop="16px";mxEvent.addListener(J,"change",function(){J.checked?(M.removeAttribute("disabled"),K.removeAttribute("disabled")):(M.setAttribute("disabled","disabled"),K.setAttribute("disabled","disabled"));K.checked&&J.checked?C.getEditSelect().removeAttribute("disabled"):C.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,
-d,mxUtils.bind(this,function(){k(v.getTarget(),v.getColor(),null==E?!0:E.checked,J.checked,C.getLink(),M.checked,null!=q?q.value:null,null!=u?u.value:null,aa.checked)}),null,mxResources.get("create"),p,t);this.showDialog(c.container,340,300+b,!0,!0);null!=q?(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?q.select():document.execCommand("selectAll",!1,null)):v.focus()};EditorUi.prototype.showRemoteExportDialog=function(b,c,e,g,k){var d=document.createElement("div");d.style.whiteSpace=
-"nowrap";var f=document.createElement("h3");mxUtils.write(f,mxResources.get("image"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(k?"10":"4")+"px";d.appendChild(f);if(k){mxUtils.write(d,mxResources.get("zoom")+":");var l=document.createElement("input");l.setAttribute("type","text");l.style.marginRight="16px";l.style.width="60px";l.style.marginLeft="4px";l.style.marginRight="12px";l.value=this.lastExportZoom||"100%";d.appendChild(l);mxUtils.write(d,mxResources.get("borderWidth")+
-":");var m=document.createElement("input");m.setAttribute("type","text");m.style.marginRight="16px";m.style.width="60px";m.style.marginLeft="4px";m.value=this.lastExportBorder||"0";d.appendChild(m);mxUtils.br(d)}var q=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),p=g?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram),f=this.editor.graph,t=g?null:this.addCheckbox(d,mxResources.get("transparentBackground"),f.background==
-mxConstants.NONE||null==f.background);null!=t&&(t.style.marginBottom="16px");b=new CustomDialog(this,d,mxUtils.bind(this,function(){var b=parseInt(l.value)/100||1,d=parseInt(m.value)||0;e(!q.checked,null!=p?p.checked:!1,null!=t?t.checked:!1,b,d)}),null,b,c);this.showDialog(b.container,300,(k?25:0)+(g?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(b,c,e,g,k,n,p,t,y){p=null!=p?p:Editor.defaultIncludeDiagram;var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=this.editor.graph,
+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(b,c,e,f){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("html"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var k=document.createElement("input");k.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";
+k.setAttribute("value","url");k.setAttribute("type","radio");k.setAttribute("name","type-embedhtmldialog");g=k.cloneNode(!0);g.setAttribute("value","copy");l.appendChild(g);var q=document.createElement("span");mxUtils.write(q,mxResources.get("includeCopyOfMyDiagram"));l.appendChild(q);mxUtils.br(l);l.appendChild(k);q=document.createElement("span");mxUtils.write(q,mxResources.get("publicDiagramUrl"));l.appendChild(q);var p=this.getCurrentFile();null==e&&null!=p&&p.constructor==window.DriveFile&&(q=
+document.createElement("a"),q.style.paddingLeft="12px",q.style.color="gray",q.style.cursor="pointer",mxUtils.write(q,mxResources.get("share")),l.appendChild(q),mxEvent.addListener(q,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(p.getId())})));g.setAttribute("checked","checked");null==e&&k.setAttribute("disabled","disabled");d.appendChild(l);var t=this.addLinkSection(d),H=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var z=document.createElement("input");
+z.setAttribute("type","text");z.style.marginRight="16px";z.style.width="60px";z.style.marginLeft="4px";z.style.marginRight="12px";z.value="100%";d.appendChild(z);var D=this.addCheckbox(d,mxResources.get("fit"),!0),l=null!=this.pages&&1<this.pages.length,N=N=this.addCheckbox(d,mxResources.get("allPages"),l,!l),E=this.addCheckbox(d,mxResources.get("layers"),!0),J=this.addCheckbox(d,mxResources.get("tags"),!0),C=this.addCheckbox(d,mxResources.get("lightbox"),!0),K=this.addEditButton(d,C),M=K.getEditInput();
+M.style.marginBottom="16px";mxEvent.addListener(C,"change",function(){C.checked?M.removeAttribute("disabled"):M.setAttribute("disabled","disabled");M.checked&&C.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){f(k.checked?e:null,H.checked,z.value,t.getTarget(),t.getColor(),D.checked,N.checked,E.checked,J.checked,C.checked,K.getLink())}),null,b,c);this.showDialog(b.container,340,430,
+!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=function(b,c,e,f,k,n,p,t){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,b||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var l=this.getCurrentFile();b=0;if(null==l||l.constructor!=window.DriveFile||c)p=null!=p?p:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{b=80;p=null!=p?p:"https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram";
+g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var m=document.createElement("div");m.style.whiteSpace="normal";mxUtils.write(m,mxResources.get("linkAccountRequired"));g.appendChild(m);m=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(l.getId())}));m.style.marginTop="12px";m.className="geBtn";g.appendChild(m);d.appendChild(g);m=document.createElement("a");
+m.style.paddingLeft="12px";m.style.color="gray";m.style.fontSize="11px";m.style.cursor="pointer";mxUtils.write(m,mxResources.get("check"));g.appendChild(m);mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(b){this.spinner.stop();b=new ErrorDialog(this,null,mxResources.get(null!=b?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(b.container,
+300,80,!0,!1);b.init()}))}))}var q=null,u=null;if(null!=e||null!=f)b+=30,mxUtils.write(d,mxResources.get("width")+":"),q=document.createElement("input"),q.setAttribute("type","text"),q.style.marginRight="16px",q.style.width="50px",q.style.marginLeft="6px",q.style.marginRight="16px",q.style.marginBottom="10px",q.value="100%",d.appendChild(q),mxUtils.write(d,mxResources.get("height")+":"),u=document.createElement("input"),u.setAttribute("type","text"),u.style.width="50px",u.style.marginLeft="6px",u.style.marginBottom=
+"10px",u.value=f+"px",d.appendChild(u),mxUtils.br(d);var v=this.addLinkSection(d,n);e=null!=this.pages&&1<this.pages.length;var E=null;if(null==l||l.constructor!=window.DriveFile||c)E=this.addCheckbox(d,mxResources.get("allPages"),e,!e);var J=this.addCheckbox(d,mxResources.get("lightbox"),!0,null,null,!n),C=this.addEditButton(d,J),K=C.getEditInput();n&&(K.style.marginLeft=J.style.marginLeft,J.style.display="none",b-=20);var M=this.addCheckbox(d,mxResources.get("layers"),!0);M.style.marginLeft=K.style.marginLeft;
+M.style.marginTop="8px";var Z=this.addCheckbox(d,mxResources.get("tags"),!0);Z.style.marginLeft=K.style.marginLeft;Z.style.marginBottom="16px";Z.style.marginTop="16px";mxEvent.addListener(J,"change",function(){J.checked?(M.removeAttribute("disabled"),K.removeAttribute("disabled")):(M.setAttribute("disabled","disabled"),K.setAttribute("disabled","disabled"));K.checked&&J.checked?C.getEditSelect().removeAttribute("disabled"):C.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,
+d,mxUtils.bind(this,function(){k(v.getTarget(),v.getColor(),null==E?!0:E.checked,J.checked,C.getLink(),M.checked,null!=q?q.value:null,null!=u?u.value:null,Z.checked)}),null,mxResources.get("create"),p,t);this.showDialog(c.container,340,300+b,!0,!0);null!=q?(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?q.select():document.execCommand("selectAll",!1,null)):v.focus()};EditorUi.prototype.showRemoteExportDialog=function(b,c,e,f,k){var d=document.createElement("div");d.style.whiteSpace=
+"nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(k?"10":"4")+"px";d.appendChild(g);if(k){mxUtils.write(d,mxResources.get("zoom")+":");var l=document.createElement("input");l.setAttribute("type","text");l.style.marginRight="16px";l.style.width="60px";l.style.marginLeft="4px";l.style.marginRight="12px";l.value=this.lastExportZoom||"100%";d.appendChild(l);mxUtils.write(d,mxResources.get("borderWidth")+
+":");var m=document.createElement("input");m.setAttribute("type","text");m.style.marginRight="16px";m.style.width="60px";m.style.marginLeft="4px";m.value=this.lastExportBorder||"0";d.appendChild(m);mxUtils.br(d)}var q=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),p=f?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram),g=this.editor.graph,t=f?null:this.addCheckbox(d,mxResources.get("transparentBackground"),g.background==
+mxConstants.NONE||null==g.background);null!=t&&(t.style.marginBottom="16px");b=new CustomDialog(this,d,mxUtils.bind(this,function(){var b=parseInt(l.value)/100||1,d=parseInt(m.value)||0;e(!q.checked,null!=p?p.checked:!1,null!=t?t.checked:!1,b,d)}),null,b,c);this.showDialog(b.container,300,(k?25:0)+(f?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(b,c,e,f,k,n,p,t,y){p=null!=p?p:Editor.defaultIncludeDiagram;var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph,
l="jpeg"==t?220:300,m=document.createElement("h3");mxUtils.write(m,b);m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(m);mxUtils.write(d,mxResources.get("zoom")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.marginRight="16px";q.style.width="60px";q.style.marginLeft="4px";q.style.marginRight="12px";q.value=this.lastExportZoom||"100%";d.appendChild(q);mxUtils.write(d,mxResources.get("borderWidth")+":");var u=document.createElement("input");
-u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.value=this.lastExportBorder||"0";d.appendChild(u);mxUtils.br(d);var v=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,f.isSelectionEmpty()),J=document.createElement("input");J.style.marginTop="16px";J.style.marginRight="8px";J.style.marginLeft="24px";J.setAttribute("disabled","disabled");J.setAttribute("type","checkbox");var C=document.createElement("select");C.style.marginTop="16px";C.style.marginLeft=
-"8px";b=["selectionOnly","diagram","page"];for(m=0;m<b.length;m++)if(!f.isSelectionEmpty()||"selectionOnly"!=b[m]){var K=document.createElement("option");mxUtils.write(K,mxResources.get(b[m]));K.setAttribute("value",b[m]);C.appendChild(K)}y?(mxUtils.write(d,mxResources.get("size")+":"),d.appendChild(C),mxUtils.br(d),l+=26,mxEvent.addListener(C,"change",function(){"selectionOnly"==C.value&&(v.checked=!0)})):n&&(d.appendChild(J),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),l+=30,mxEvent.addListener(v,
-"change",function(){v.checked?J.removeAttribute("disabled"):J.setAttribute("disabled","disabled")}));f.isSelectionEmpty()?y&&(v.style.display="none",v.nextSibling.style.display="none",v.nextSibling.nextSibling.style.display="none",l-=30):(C.value="diagram",J.setAttribute("checked","checked"),J.defaultChecked=!0,mxEvent.addListener(v,"change",function(){C.value=v.checked?"selectionOnly":"diagram"}));var M=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=t),aa=null;Editor.isDarkMode()&&
-(aa=this.addCheckbox(d,mxResources.get("dark"),!0),l+=26);var N=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible),O=document.createElement("input");O.style.marginTop="16px";O.style.marginRight="8px";O.setAttribute("type","checkbox");var U=document.createElement("input");U.style.marginTop="16px";U.style.marginRight="8px";U.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||O.setAttribute("disabled","disabled");c&&(d.appendChild(O),mxUtils.write(d,mxResources.get("embedImages")),
-mxUtils.br(d),d.appendChild(U),mxUtils.write(d,mxResources.get("embedFonts")),mxUtils.br(d),l+=60);var G=null;if("png"==t||"jpeg"==t)G=this.addCheckbox(d,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),l+=30;var I=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),p,null,null,"jpeg"!=t);I.style.marginBottom="16px";var A=document.createElement("select");A.style.maxWidth="260px";A.style.marginLeft="8px";A.style.marginRight="10px";A.className="geBtn";c=document.createElement("option");
-c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));A.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));A.appendChild(c);c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));A.appendChild(c);"svg"==t&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(A),mxUtils.br(d),mxUtils.br(d),l+=50);e=new CustomDialog(this,d,
-mxUtils.bind(this,function(){this.lastExportBorder=u.value;this.lastExportZoom=q.value;k(q.value,M.checked,!v.checked,N.checked,I.checked,O.checked,u.value,J.checked,!1,A.value,null!=G?G.checked:null,null!=aa?aa.checked:null,C.value,U.checked)}),null,e,g);this.showDialog(e.container,340,l,!0,!0,null,null,null,null,!0);q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?q.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,e,g,k){var d=
-document.createElement("div");d.style.whiteSpace="nowrap";var f=this.editor.graph;if(null!=c){var l=document.createElement("h3");mxUtils.write(l,c);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(l)}var m=this.addCheckbox(d,mxResources.get("fit"),!0),q=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible&&g,!g),p=this.addCheckbox(d,e),t=this.addCheckbox(d,mxResources.get("lightbox"),!0),z=this.addEditButton(d,t),D=z.getEditInput(),L=1<f.model.getChildCount(f.model.getRoot()),
-E=this.addCheckbox(d,mxResources.get("layers"),L,!L);E.style.marginLeft=D.style.marginLeft;E.style.marginBottom="12px";E.style.marginTop="8px";mxEvent.addListener(t,"change",function(){t.checked?(L&&E.removeAttribute("disabled"),D.removeAttribute("disabled")):(E.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"));D.checked&&t.checked?z.getEditSelect().removeAttribute("disabled"):z.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,
-function(){b(m.checked,q.checked,p.checked,t.checked,z.getLink(),E.checked)}),null,mxResources.get("embed"),k);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,e,g,k,n,p,t){function d(d){var c=" ",m="";g&&(c=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
-EditorUi.lightboxHost+"/?client=1"+(null!=l?"&page="+l:"")+(k?"&edit=_blank":"")+(n?"&layers=1":"")+"');}})(this);\"",m+="cursor:pointer;");b&&(m+="max-width:100%;");var q="";e&&(q=' width="'+Math.round(f.width)+'" height="'+Math.round(f.height)+'"');p('<img src="'+d+'"'+q+(""!=m?' style="'+m+'"':"")+c+"/>")}var f=this.editor.graph.getGraphBounds(),l=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(b){var c=g?this.getFileData(!0):null;b=
-this.createImageDataUri(b,c,"png");d(b)}),null,null,null,mxUtils.bind(this,function(b){t({message:mxResources.get("unknownError")})}),null,!0,e?2:1,null,c,null,null,Editor.defaultBorder);else if(c=this.getFileData(!0),f.width*f.height<=MAX_AREA&&c.length<=MAX_REQUEST_SIZE){var m="";e&&(m="&w="+Math.round(2*f.width)+"&h="+Math.round(2*f.height));var q=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(g?"1":"0")+m+"&xml="+encodeURIComponent(c));q.send(mxUtils.bind(this,function(){200<=q.getStatus()&&
-299>=q.getStatus()?d("data:image/png;base64,"+q.getText()):t({message:mxResources.get("unknownError")})}))}else t({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(b,c,e,g,k,n,p){var d=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!e),f=d.getElementsByTagName("a");if(null!=f)for(var l=0;l<f.length;l++){var m=f[l].getAttribute("href");null!=m&&"#"==m.charAt(0)&&"_blank"==f[l].getAttribute("target")&&f[l].removeAttribute("target")}g&&
-d.setAttribute("content",this.getFileData(!0));c&&this.editor.graph.addSvgShadow(d);if(e){var q=" ",t="";g&&(q="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+EditorUi.lightboxHost+"/?client=1"+(k?"&edit=_blank":"")+(n?"&layers=1":
-"")+"');}})(this);\"",t+="cursor:pointer;");b&&(t+="max-width:100%;");this.editor.convertImages(d,mxUtils.bind(this,function(b){p('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(b))+'"'+(""!=t?' style="'+t+'"':"")+q+"/>")}))}else t="",g&&(c=this.getSelectedPageIndex(),d.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+
+u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.value=this.lastExportBorder||"0";d.appendChild(u);mxUtils.br(d);var v=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),J=document.createElement("input");J.style.marginTop="16px";J.style.marginRight="8px";J.style.marginLeft="24px";J.setAttribute("disabled","disabled");J.setAttribute("type","checkbox");var C=document.createElement("select");C.style.marginTop="16px";C.style.marginLeft=
+"8px";b=["selectionOnly","diagram","page"];for(m=0;m<b.length;m++)if(!g.isSelectionEmpty()||"selectionOnly"!=b[m]){var K=document.createElement("option");mxUtils.write(K,mxResources.get(b[m]));K.setAttribute("value",b[m]);C.appendChild(K)}y?(mxUtils.write(d,mxResources.get("size")+":"),d.appendChild(C),mxUtils.br(d),l+=26,mxEvent.addListener(C,"change",function(){"selectionOnly"==C.value&&(v.checked=!0)})):n&&(d.appendChild(J),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),l+=30,mxEvent.addListener(v,
+"change",function(){v.checked?J.removeAttribute("disabled"):J.setAttribute("disabled","disabled")}));g.isSelectionEmpty()?y&&(v.style.display="none",v.nextSibling.style.display="none",v.nextSibling.nextSibling.style.display="none",l-=30):(C.value="diagram",J.setAttribute("checked","checked"),J.defaultChecked=!0,mxEvent.addListener(v,"change",function(){C.value=v.checked?"selectionOnly":"diagram"}));var M=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=t),Z=null;Editor.isDarkMode()&&
+(Z=this.addCheckbox(d,mxResources.get("dark"),!0),l+=26);var L=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible),O=document.createElement("input");O.style.marginTop="16px";O.style.marginRight="8px";O.setAttribute("type","checkbox");var U=document.createElement("input");U.style.marginTop="16px";U.style.marginRight="8px";U.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||O.setAttribute("disabled","disabled");c&&(d.appendChild(O),mxUtils.write(d,mxResources.get("embedImages")),
+mxUtils.br(d),d.appendChild(U),mxUtils.write(d,mxResources.get("embedFonts")),mxUtils.br(d),l+=60);var G=null;if("png"==t||"jpeg"==t)G=this.addCheckbox(d,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),l+=30;var I=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),p,null,null,"jpeg"!=t);I.style.marginBottom="16px";var B=document.createElement("select");B.style.maxWidth="260px";B.style.marginLeft="8px";B.style.marginRight="10px";B.className="geBtn";c=document.createElement("option");
+c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));B.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));B.appendChild(c);c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));B.appendChild(c);"svg"==t&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(B),mxUtils.br(d),mxUtils.br(d),l+=50);e=new CustomDialog(this,d,
+mxUtils.bind(this,function(){this.lastExportBorder=u.value;this.lastExportZoom=q.value;k(q.value,M.checked,!v.checked,L.checked,I.checked,O.checked,u.value,J.checked,!1,B.value,null!=G?G.checked:null,null!=Z?Z.checked:null,C.value,U.checked)}),null,e,f);this.showDialog(e.container,340,l,!0,!0,null,null,null,null,!0);q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?q.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,e,f,k){var d=
+document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph;if(null!=c){var l=document.createElement("h3");mxUtils.write(l,c);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(l)}var m=this.addCheckbox(d,mxResources.get("fit"),!0),q=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible&&f,!f),p=this.addCheckbox(d,e),t=this.addCheckbox(d,mxResources.get("lightbox"),!0),z=this.addEditButton(d,t),D=z.getEditInput(),N=1<g.model.getChildCount(g.model.getRoot()),
+E=this.addCheckbox(d,mxResources.get("layers"),N,!N);E.style.marginLeft=D.style.marginLeft;E.style.marginBottom="12px";E.style.marginTop="8px";mxEvent.addListener(t,"change",function(){t.checked?(N&&E.removeAttribute("disabled"),D.removeAttribute("disabled")):(E.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"));D.checked&&t.checked?z.getEditSelect().removeAttribute("disabled"):z.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,
+function(){b(m.checked,q.checked,p.checked,t.checked,z.getLink(),E.checked)}),null,mxResources.get("embed"),k);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,e,f,k,n,p,t){function d(d){var c=" ",m="";f&&(c=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
+EditorUi.lightboxHost+"/?client=1"+(null!=l?"&page="+l:"")+(k?"&edit=_blank":"")+(n?"&layers=1":"")+"');}})(this);\"",m+="cursor:pointer;");b&&(m+="max-width:100%;");var q="";e&&(q=' width="'+Math.round(g.width)+'" height="'+Math.round(g.height)+'"');p('<img src="'+d+'"'+q+(""!=m?' style="'+m+'"':"")+c+"/>")}var g=this.editor.graph.getGraphBounds(),l=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(b){var c=f?this.getFileData(!0):null;b=
+this.createImageDataUri(b,c,"png");d(b)}),null,null,null,mxUtils.bind(this,function(b){t({message:mxResources.get("unknownError")})}),null,!0,e?2:1,null,c,null,null,Editor.defaultBorder);else if(c=this.getFileData(!0),g.width*g.height<=MAX_AREA&&c.length<=MAX_REQUEST_SIZE){var m="";e&&(m="&w="+Math.round(2*g.width)+"&h="+Math.round(2*g.height));var q=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(f?"1":"0")+m+"&xml="+encodeURIComponent(c));q.send(mxUtils.bind(this,function(){200<=q.getStatus()&&
+299>=q.getStatus()?d("data:image/png;base64,"+q.getText()):t({message:mxResources.get("unknownError")})}))}else t({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(b,c,e,f,k,n,p){var d=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!e),g=d.getElementsByTagName("a");if(null!=g)for(var l=0;l<g.length;l++){var m=g[l].getAttribute("href");null!=m&&"#"==m.charAt(0)&&"_blank"==g[l].getAttribute("target")&&g[l].removeAttribute("target")}f&&
+d.setAttribute("content",this.getFileData(!0));c&&this.editor.graph.addSvgShadow(d);if(e){var q=" ",t="";f&&(q="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+EditorUi.lightboxHost+"/?client=1"+(k?"&edit=_blank":"")+(n?"&layers=1":
+"")+"');}})(this);\"",t+="cursor:pointer;");b&&(t+="max-width:100%;");this.editor.convertImages(d,mxUtils.bind(this,function(b){p('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(b))+'"'+(""!=t?' style="'+t+'"':"")+q+"/>")}))}else t="",f&&(c=this.getSelectedPageIndex(),d.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+
EditorUi.lightboxHost+"/?client=1"+(null!=c?"&page="+c:"")+(k?"&edit=_blank":"")+(n?"&layers=1":"")+"');}}})(this);"),t+="cursor:pointer;"),b&&(b=parseInt(d.getAttribute("width")),k=parseInt(d.getAttribute("height")),d.setAttribute("viewBox","-0.5 -0.5 "+b+" "+k),t+="max-width:100%;max-height:"+k+"px;",d.removeAttribute("height")),""!=t&&d.setAttribute("style",t),this.editor.addFontCss(d),this.editor.graph.mathEnabled&&this.editor.addMathCss(d),p(mxUtils.getXml(d))};EditorUi.prototype.timeSince=function(b){b=
Math.floor((new Date-b)/1E3);var d=Math.floor(b/31536E3);if(1<d)return d+" "+mxResources.get("years");d=Math.floor(b/2592E3);if(1<d)return d+" "+mxResources.get("months");d=Math.floor(b/86400);if(1<d)return d+" "+mxResources.get("days");d=Math.floor(b/3600);if(1<d)return d+" "+mxResources.get("hours");d=Math.floor(b/60);return 1<d?d+" "+mxResources.get("minutes"):1==d?d+" "+mxResources.get("minute"):null};EditorUi.prototype.decodeNodeIntoGraph=function(b,c){if(null!=b){var d=null;if("diagram"==b.nodeName)d=
-b;else if("mxfile"==b.nodeName){var e=b.getElementsByTagName("diagram");if(0<e.length){var d=e[0],f=c.getGlobalVariable;c.getGlobalVariable=function(b){return"page"==b?d.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==b?1:f.apply(this,arguments)}}}null!=d&&(b=Editor.parseDiagramNode(d))}e=this.editor.graph;try{this.editor.graph=c,this.editor.setGraphXml(b)}catch(n){}finally{this.editor.graph=e}return b};EditorUi.prototype.getPngFileProperties=function(b){var d=1,c=0;if(null!=
-b){if(b.hasAttribute("scale")){var e=parseFloat(b.getAttribute("scale"));!isNaN(e)&&0<e&&(d=e)}b.hasAttribute("border")&&(e=parseInt(b.getAttribute("border")),!isNaN(e)&&0<e&&(c=e))}return{scale:d,border:c}};EditorUi.prototype.getEmbeddedPng=function(b,c,e,g,k){try{var d=this.editor.graph,f=null!=d.themes&&"darkTheme"==d.defaultThemeName,l=null;if(null!=e&&0<e.length)d=this.createTemporaryGraph(f?d.getDefaultStylesheet():d.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(e).documentElement,
-!0),d),l=e;else if(f||null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(f?d.getDefaultStylesheet():d.getStylesheet()),m=d.getGlobalVariable;d.setBackgroundImage=this.editor.graph.setBackgroundImage;var q=this.pages[0];this.currentPage==q?d.setBackgroundImage(this.editor.graph.backgroundImage):null!=q.viewState&&null!=q.viewState&&d.setBackgroundImage(q.viewState.backgroundImage);d.getGlobalVariable=function(b){return"page"==b?q.getName():"pagenumber"==b?1:m.apply(this,
-arguments)};document.body.appendChild(d.container);d.model.setRoot(q.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(e){try{null==l&&(l=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var f=e.toDataURL("image/png"),f=Editor.writeGraphModelToPng(f,"tEXt","mxfile",encodeURIComponent(l));b(f.substring(f.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(z){null!=c&&c(z)}}),null,null,null,mxUtils.bind(this,function(b){null!=c&&
-c(b)}),null,null,g,null,d.shadowVisible,null,d,k,null,null,null,"diagram",null)}catch(F){null!=c&&c(F)}};EditorUi.prototype.getEmbeddedSvg=function(b,c,e,g,k,n,p,t,y,x,F,H,z){t=null!=t?t:!0;F=null!=F?F:0;p=null!=y?y:c.background;p==mxConstants.NONE&&(p=null);n=c.getSvg(p,x,F,null,null,n,null,null,null,c.shadowVisible||H,null,z,"diagram");(c.shadowVisible||H)&&c.addSvgShadow(n,null,null,0==F);null!=b&&n.setAttribute("content",b);null!=e&&n.setAttribute("resource",e);var d=mxUtils.bind(this,function(b){b=
-(g?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(b);null!=k&&k(b);return b});c.mathEnabled&&this.editor.addMathCss(n);if(null!=k)this.embedFonts(n,mxUtils.bind(this,function(b){t?this.editor.convertImages(b,mxUtils.bind(this,function(b){d(b)})):d(b)}));else return d(n)};EditorUi.prototype.embedFonts=function(b,c){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(b,this.editor.resolvedFontCss),
-this.editor.embedExtFonts(mxUtils.bind(this,function(d){try{null!=d&&this.editor.addFontCss(b,d),c(b)}catch(q){c(b)}}))}catch(l){c(b)}}))};EditorUi.prototype.exportImage=function(b,c,e,g,k,n,p,t,y,x,F,H,z){y=null!=y?y:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(b){this.spinner.stop();try{this.saveCanvas(b,
-k?this.getFileData(!0,null,null,null,e,t):null,y,null==this.pages||0==this.pages.length,F)}catch(E){this.handleError(E)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,e,b||1,c,g,null,null,n,p,x,H,z)}catch(L){this.spinner.stop(),this.handleError(L)}}};EditorUi.prototype.isCorsEnabledForUrl=function(b){return this.editor.isCorsEnabledForUrl(b)};EditorUi.prototype.importXml=function(b,c,e,g,k,n,p){c=null!=c?c:0;e=null!=e?e:0;var d=[];try{var f=
-this.editor.graph;if(null!=b&&0<b.length){f.model.beginUpdate();try{var l=mxUtils.parseXml(b);b={};var m=this.editor.extractGraphModel(l.documentElement,null!=this.pages);if(null!=m&&"mxfile"==m.nodeName&&null!=this.pages){var q=m.getElementsByTagName("diagram");if(1==q.length&&!n){if(m=Editor.parseDiagramNode(q[0]),null!=this.currentPage&&(b[q[0].getAttribute("id")]=this.currentPage.getId(),null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",
-[1]))){var t=q[0].getAttribute("name");null!=t&&""!=t&&this.editor.graph.model.execute(new RenamePage(this,this.currentPage,t))}}else if(0<q.length){n=[];var u=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(b[q[0].getAttribute("id")]=this.pages[0].getId(),m=Editor.parseDiagramNode(q[0]),g=!1,u=1);for(;u<q.length;u++){var L=q[u].getAttribute("id");q[u].removeAttribute("id");var E=this.updatePageRoot(new DiagramPage(q[u]));b[L]=q[u].getAttribute("id");var J=this.pages.length;null==
-E.getName()&&E.setName(mxResources.get("pageWithNumber",[J+1]));f.model.execute(new ChangePage(this,E,E,J,!0));n.push(E)}this.updatePageLinks(b,n)}}if(null!=m&&"mxGraphModel"===m.nodeName&&(d=f.importGraphModel(m,c,e,g),null!=d))for(u=0;u<d.length;u++)this.updatePageLinksForCell(b,d[u]);p&&this.insertHandler(d,null,null,f.defaultVertexStyle,f.defaultEdgeStyle,!1,!0)}finally{f.model.endUpdate()}}}catch(C){if(k)throw C;this.handleError(C)}return d};EditorUi.prototype.updatePageLinks=function(b,c){for(var d=
-0;d<c.length;d++)this.updatePageLinksForCell(b,c[d].root)};EditorUi.prototype.updatePageLinksForCell=function(b,c){var d=document.createElement("div"),e=this.editor.graph,f=e.getLinkForCell(c);null!=f&&e.setLinkForCell(c,this.updatePageLink(b,f));if(e.isHtmlLabel(c)){d.innerHTML=e.sanitizeHtml(e.getLabel(c));for(var g=d.getElementsByTagName("a"),k=!1,p=0;p<g.length;p++)f=g[p].getAttribute("href"),null!=f&&(g[p].setAttribute("href",this.updatePageLink(b,f)),k=!0);k&&e.labelChanged(c,d.innerHTML)}for(p=
-0;p<e.model.getChildCount(c);p++)this.updatePageLinksForCell(b,e.model.getChildAt(c,p))};EditorUi.prototype.updatePageLink=function(b,c){if(Graph.isPageLink(c)){var d=b[c.substring(c.indexOf(",")+1)];c=null!=d?"data:page/id,"+d:null}else if("data:action/json,"==c.substring(0,17))try{var e=JSON.parse(c.substring(17));if(null!=e.actions){for(var f=0;f<e.actions.length;f++){var g=e.actions[f];if(null!=g.open&&Graph.isPageLink(g.open)){var k=g.open.substring(g.open.indexOf(",")+1),d=b[k];null!=d?g.open=
-"data:page/id,"+d:null==this.getPageById(k)&&delete g.open}}c="data:action/json,"+JSON.stringify(e)}}catch(v){}return c};EditorUi.prototype.isRemoteVisioFormat=function(b){return/(\.v(sd|dx))($|\?)/i.test(b)||/(\.vs(s|x))($|\?)/i.test(b)};EditorUi.prototype.importVisio=function(b,c,e,g,k){g=null!=g?g:b.name;e=null!=e?e:mxUtils.bind(this,function(b){this.handleError(b)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var d=this.isRemoteVisioFormat(g);try{var f=
-"UNKNOWN-VISIO",l=g.lastIndexOf(".");if(0<=l&&l<g.length)f=g.substring(l+1).toUpperCase();else{var m=g.lastIndexOf("/");0<=m&&m<g.length&&(g=g.substring(m+1))}EditorUi.logEvent({category:f+"-MS-IMPORT-FILE",action:"filename_"+g,label:d?"remote":"local"})}catch(H){}if(d)if(null==VSD_CONVERT_URL||this.isOffline())e({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{d=new FormData;d.append("file1",b,g);var n=new XMLHttpRequest;
-n.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(g)?"?stencil=1":""));n.responseType="blob";this.addRemoteServiceSecurityCheck(n);null!=k&&n.setRequestHeader("x-convert-custom",k);n.onreadystatechange=mxUtils.bind(this,function(){if(4==n.readyState)if(200<=n.status&&299>=n.status)try{var b=n.response;if("text/xml"==b.type){var d=new FileReader;d.onload=mxUtils.bind(this,function(b){try{c(b.target.result)}catch(L){e({message:mxResources.get("errorLoadingFile")})}});d.readAsText(b)}else this.doImportVisio(b,
-c,e,g)}catch(D){e(D)}else try{""==n.responseType||"text"==n.responseType?e({message:n.responseText}):(d=new FileReader,d.onload=function(){e({message:JSON.parse(d.result).Message})},d.readAsText(n.response))}catch(D){e({})}});n.send(d)}else try{this.doImportVisio(b,c,e,g)}catch(H){e(H)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",
+b;else if("mxfile"==b.nodeName){var e=b.getElementsByTagName("diagram");if(0<e.length){var d=e[0],g=c.getGlobalVariable;c.getGlobalVariable=function(b){return"page"==b?d.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==b?1:g.apply(this,arguments)}}}null!=d&&(b=Editor.parseDiagramNode(d))}e=this.editor.graph;try{this.editor.graph=c,this.editor.setGraphXml(b)}catch(n){}finally{this.editor.graph=e}return b};EditorUi.prototype.getPngFileProperties=function(b){var d=1,c=0;if(null!=
+b){if(b.hasAttribute("scale")){var e=parseFloat(b.getAttribute("scale"));!isNaN(e)&&0<e&&(d=e)}b.hasAttribute("border")&&(e=parseInt(b.getAttribute("border")),!isNaN(e)&&0<e&&(c=e))}return{scale:d,border:c}};EditorUi.prototype.getEmbeddedPng=function(b,c,e,f,k){try{var d=this.editor.graph,g=null!=d.themes&&"darkTheme"==d.defaultThemeName,l=null;if(null!=e&&0<e.length)d=this.createTemporaryGraph(g?d.getDefaultStylesheet():d.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(e).documentElement,
+!0),d),l=e;else if(g||null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(g?d.getDefaultStylesheet():d.getStylesheet()),m=d.getGlobalVariable;d.setBackgroundImage=this.editor.graph.setBackgroundImage;var q=this.pages[0];this.currentPage==q?d.setBackgroundImage(this.editor.graph.backgroundImage):null!=q.viewState&&null!=q.viewState&&d.setBackgroundImage(q.viewState.backgroundImage);d.getGlobalVariable=function(b){return"page"==b?q.getName():"pagenumber"==b?1:m.apply(this,
+arguments)};document.body.appendChild(d.container);d.model.setRoot(q.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(e){try{null==l&&(l=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var g=e.toDataURL("image/png"),g=Editor.writeGraphModelToPng(g,"tEXt","mxfile",encodeURIComponent(l));b(g.substring(g.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(z){null!=c&&c(z)}}),null,null,null,mxUtils.bind(this,function(b){null!=c&&
+c(b)}),null,null,f,null,d.shadowVisible,null,d,k,null,null,null,"diagram",null)}catch(F){null!=c&&c(F)}};EditorUi.prototype.getEmbeddedSvg=function(b,c,e,f,k,n,p,t,y,x,F,H,z){t=null!=t?t:!0;F=null!=F?F:0;p=null!=y?y:c.background;p==mxConstants.NONE&&(p=null);n=c.getSvg(p,x,F,null,null,n,null,null,null,c.shadowVisible||H,null,z,"diagram");(c.shadowVisible||H)&&c.addSvgShadow(n,null,null,0==F);null!=b&&n.setAttribute("content",b);null!=e&&n.setAttribute("resource",e);var d=mxUtils.bind(this,function(b){b=
+(f?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(b);null!=k&&k(b);return b});c.mathEnabled&&this.editor.addMathCss(n);if(null!=k)this.embedFonts(n,mxUtils.bind(this,function(b){t?this.editor.convertImages(b,mxUtils.bind(this,function(b){d(b)})):d(b)}));else return d(n)};EditorUi.prototype.embedFonts=function(b,c){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(b,this.editor.resolvedFontCss),
+this.editor.embedExtFonts(mxUtils.bind(this,function(d){try{null!=d&&this.editor.addFontCss(b,d),c(b)}catch(q){c(b)}}))}catch(l){c(b)}}))};EditorUi.prototype.exportImage=function(b,c,e,f,k,n,p,t,y,x,F,H,z){y=null!=y?y:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(b){this.spinner.stop();try{this.saveCanvas(b,
+k?this.getFileData(!0,null,null,null,e,t):null,y,null==this.pages||0==this.pages.length,F)}catch(E){this.handleError(E)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,e,b||1,c,f,null,null,n,p,x,H,z)}catch(N){this.spinner.stop(),this.handleError(N)}}};EditorUi.prototype.isCorsEnabledForUrl=function(b){return this.editor.isCorsEnabledForUrl(b)};EditorUi.prototype.importXml=function(b,c,e,f,k,n,p){c=null!=c?c:0;e=null!=e?e:0;var d=[];try{var g=
+this.editor.graph;if(null!=b&&0<b.length){g.model.beginUpdate();try{var l=mxUtils.parseXml(b);b={};var m=this.editor.extractGraphModel(l.documentElement,null!=this.pages);if(null!=m&&"mxfile"==m.nodeName&&null!=this.pages){var q=m.getElementsByTagName("diagram");if(1==q.length&&!n){if(m=Editor.parseDiagramNode(q[0]),null!=this.currentPage&&(b[q[0].getAttribute("id")]=this.currentPage.getId(),null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",
+[1]))){var t=q[0].getAttribute("name");null!=t&&""!=t&&this.editor.graph.model.execute(new RenamePage(this,this.currentPage,t))}}else if(0<q.length){n=[];var u=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(b[q[0].getAttribute("id")]=this.pages[0].getId(),m=Editor.parseDiagramNode(q[0]),f=!1,u=1);for(;u<q.length;u++){var N=q[u].getAttribute("id");q[u].removeAttribute("id");var E=this.updatePageRoot(new DiagramPage(q[u]));b[N]=q[u].getAttribute("id");var J=this.pages.length;null==
+E.getName()&&E.setName(mxResources.get("pageWithNumber",[J+1]));g.model.execute(new ChangePage(this,E,E,J,!0));n.push(E)}this.updatePageLinks(b,n)}}if(null!=m&&"mxGraphModel"===m.nodeName&&(d=g.importGraphModel(m,c,e,f),null!=d))for(u=0;u<d.length;u++)this.updatePageLinksForCell(b,d[u]);p&&this.insertHandler(d,null,null,g.defaultVertexStyle,g.defaultEdgeStyle,!1,!0)}finally{g.model.endUpdate()}}}catch(C){if(k)throw C;this.handleError(C)}return d};EditorUi.prototype.updatePageLinks=function(b,c){for(var d=
+0;d<c.length;d++)this.updatePageLinksForCell(b,c[d].root)};EditorUi.prototype.updatePageLinksForCell=function(b,c){var d=document.createElement("div"),e=this.editor.graph,g=e.getLinkForCell(c);null!=g&&e.setLinkForCell(c,this.updatePageLink(b,g));if(e.isHtmlLabel(c)){d.innerHTML=e.sanitizeHtml(e.getLabel(c));for(var f=d.getElementsByTagName("a"),k=!1,p=0;p<f.length;p++)g=f[p].getAttribute("href"),null!=g&&(f[p].setAttribute("href",this.updatePageLink(b,g)),k=!0);k&&e.labelChanged(c,d.innerHTML)}for(p=
+0;p<e.model.getChildCount(c);p++)this.updatePageLinksForCell(b,e.model.getChildAt(c,p))};EditorUi.prototype.updatePageLink=function(b,c){if(Graph.isPageLink(c)){var d=b[c.substring(c.indexOf(",")+1)];c=null!=d?"data:page/id,"+d:null}else if("data:action/json,"==c.substring(0,17))try{var e=JSON.parse(c.substring(17));if(null!=e.actions){for(var g=0;g<e.actions.length;g++){var f=e.actions[g];if(null!=f.open&&Graph.isPageLink(f.open)){var k=f.open.substring(f.open.indexOf(",")+1),d=b[k];null!=d?f.open=
+"data:page/id,"+d:null==this.getPageById(k)&&delete f.open}}c="data:action/json,"+JSON.stringify(e)}}catch(v){}return c};EditorUi.prototype.isRemoteVisioFormat=function(b){return/(\.v(sd|dx))($|\?)/i.test(b)||/(\.vs(s|x))($|\?)/i.test(b)};EditorUi.prototype.importVisio=function(b,c,e,f,k){f=null!=f?f:b.name;e=null!=e?e:mxUtils.bind(this,function(b){this.handleError(b)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var d=this.isRemoteVisioFormat(f);try{var g=
+"UNKNOWN-VISIO",l=f.lastIndexOf(".");if(0<=l&&l<f.length)g=f.substring(l+1).toUpperCase();else{var m=f.lastIndexOf("/");0<=m&&m<f.length&&(f=f.substring(m+1))}EditorUi.logEvent({category:g+"-MS-IMPORT-FILE",action:"filename_"+f,label:d?"remote":"local"})}catch(H){}if(d)if(null==VSD_CONVERT_URL||this.isOffline())e({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{d=new FormData;d.append("file1",b,f);var n=new XMLHttpRequest;
+n.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(f)?"?stencil=1":""));n.responseType="blob";this.addRemoteServiceSecurityCheck(n);null!=k&&n.setRequestHeader("x-convert-custom",k);n.onreadystatechange=mxUtils.bind(this,function(){if(4==n.readyState)if(200<=n.status&&299>=n.status)try{var b=n.response;if("text/xml"==b.type){var d=new FileReader;d.onload=mxUtils.bind(this,function(b){try{c(b.target.result)}catch(N){e({message:mxResources.get("errorLoadingFile")})}});d.readAsText(b)}else this.doImportVisio(b,
+c,e,f)}catch(D){e(D)}else try{""==n.responseType||"text"==n.responseType?e({message:n.responseText}):(d=new FileReader,d.onload=function(){e({message:JSON.parse(d.result).Message})},d.readAsText(n.response))}catch(D){e({})}});n.send(d)}else try{this.doImportVisio(b,c,e,f)}catch(H){e(H)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",
d))};EditorUi.prototype.importGraphML=function(b,c,e){e=null!=e?e:mxUtils.bind(this,function(b){this.handleError(b)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(b,c,e)}catch(m){e(m)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.exportVisio=
function(b){var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams(b)||this.handleError({message:mxResources.get("unknownError")})}catch(l){this.handleError(l)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.convertLucidChart=
-function(b,c,e){var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{var d=JSON.parse(b);c(LucidImporter.importState(d));try{if(EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+b.length}),null!=window.console&&"1"==urlParams.test){var f=[(new Date).toISOString(),"convertLucidChart",d];null!=d.state&&f.push(JSON.parse(d.state));if(null!=d.svgThumbs)for(var g=0;g<d.svgThumbs.length;g++)f.push(Editor.createSvgDataUri(d.svgThumbs[g]));
-null!=d.thumb&&f.push(d.thumb);console.log.apply(console,f)}}catch(v){}}catch(v){null!=window.console&&console.error(v),e(v)}else e({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(d,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",function(){mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",
-function(){mxscript("js/orgchart/mxOrgChartLayout.js",d)})})})}):mxscript("js/extensions.min.js",d))};EditorUi.prototype.generateMermaidImage=function(b,c,e,g){var d=this,f=function(){try{this.loadingMermaid=!1,c=null!=c?c:EditorUi.defaultMermaidConfig,c.securityLevel="strict",c.startOnLoad=!1,mermaid.mermaidAPI.initialize(c),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),b,function(b){try{if(mxClient.IS_IE||mxClient.IS_IE11)b=b.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,
-"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var c=mxUtils.parseXml(b).getElementsByTagName("svg");if(0<c.length){var f=parseFloat(c[0].getAttribute("width")),l=parseFloat(c[0].getAttribute("height"));if(isNaN(f)||isNaN(l))try{var k=c[0].getAttribute("viewBox").split(/\s+/),f=parseFloat(k[2]),l=parseFloat(k[3])}catch(H){f=f||100,l=l||100}e(d.convertDataUri(Editor.createSvgDataUri(b)),f,l)}else g({message:mxResources.get("invalidInput")})}catch(H){g(H)}})}catch(u){g(u)}};
-"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?f():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",f):mxscript("js/extensions.min.js",f))};EditorUi.prototype.generatePlantUmlImage=function(b,c,e,g){function d(b,d,c){c1=b>>2;c2=(b&3)<<4|d>>4;c3=(d&15)<<2|c>>6;c4=c&63;r="";r+=f(c1&63);r+=f(c2&63);r+=f(c3&63);return r+=f(c4&63)}function f(b){if(10>b)return String.fromCharCode(48+b);b-=10;if(26>b)return String.fromCharCode(65+b);b-=26;if(26>b)return String.fromCharCode(97+
+function(b,c,e){var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{var d=JSON.parse(b);c(LucidImporter.importState(d));try{if(EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+b.length}),null!=window.console&&"1"==urlParams.test){var g=[(new Date).toISOString(),"convertLucidChart",d];null!=d.state&&g.push(JSON.parse(d.state));if(null!=d.svgThumbs)for(var f=0;f<d.svgThumbs.length;f++)g.push(Editor.createSvgDataUri(d.svgThumbs[f]));
+null!=d.thumb&&g.push(d.thumb);console.log.apply(console,g)}}catch(v){}}catch(v){null!=window.console&&console.error(v),e(v)}else e({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(d,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",function(){mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",
+function(){mxscript("js/orgchart/mxOrgChartLayout.js",d)})})})}):mxscript("js/extensions.min.js",d))};EditorUi.prototype.generateMermaidImage=function(b,c,e,f){var d=this,g=function(){try{this.loadingMermaid=!1,c=null!=c?c:mxUtils.clone(EditorUi.defaultMermaidConfig),c.securityLevel="strict",c.startOnLoad=!1,Editor.isDarkMode()&&(c.theme="dark"),mermaid.mermaidAPI.initialize(c),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),b,function(b){try{if(mxClient.IS_IE||mxClient.IS_IE11)b=
+b.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var c=mxUtils.parseXml(b).getElementsByTagName("svg");if(0<c.length){var g=parseFloat(c[0].getAttribute("width")),l=parseFloat(c[0].getAttribute("height"));if(isNaN(g)||isNaN(l))try{var k=c[0].getAttribute("viewBox").split(/\s+/),g=parseFloat(k[2]),l=parseFloat(k[3])}catch(H){g=g||100,l=l||100}e(d.convertDataUri(Editor.createSvgDataUri(b)),g,l)}else f({message:mxResources.get("invalidInput")})}catch(H){f(H)}})}catch(u){f(u)}};
+"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?g():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",g):mxscript("js/extensions.min.js",g))};EditorUi.prototype.generatePlantUmlImage=function(b,c,e,f){function d(b,d,c){c1=b>>2;c2=(b&3)<<4|d>>4;c3=(d&15)<<2|c>>6;c4=c&63;r="";r+=g(c1&63);r+=g(c2&63);r+=g(c3&63);return r+=g(c4&63)}function g(b){if(10>b)return String.fromCharCode(48+b);b-=10;if(26>b)return String.fromCharCode(65+b);b-=26;if(26>b)return String.fromCharCode(97+
b);b-=26;return 0==b?"-":1==b?"_":"?"}var l=new XMLHttpRequest;l.open("GET",("txt"==c?PLANT_URL+"/txt/":"png"==c?PLANT_URL+"/png/":PLANT_URL+"/svg/")+function(b){r="";for(i=0;i<b.length;i+=3)r=i+2==b.length?r+d(b.charCodeAt(i),b.charCodeAt(i+1),0):i+1==b.length?r+d(b.charCodeAt(i),0,0):r+d(b.charCodeAt(i),b.charCodeAt(i+1),b.charCodeAt(i+2));return r}(Graph.arrayBufferToString(pako.deflateRaw(b))),!0);"txt"!=c&&(l.responseType="blob");l.onload=function(b){if(200<=this.status&&300>this.status)if("txt"==
-c)e(this.response);else{var d=new FileReader;d.readAsDataURL(this.response);d.onloadend=function(b){var c=new Image;c.onload=function(){try{var b=c.width,f=c.height;if(0==b&&0==f){var l=d.result,k=l.indexOf(","),m=decodeURIComponent(escape(atob(l.substring(k+1)))),n=mxUtils.parseXml(m).getElementsByTagName("svg");0<n.length&&(b=parseFloat(n[0].getAttribute("width")),f=parseFloat(n[0].getAttribute("height")))}e(d.result,b,f)}catch(C){g(C)}};c.src=d.result};d.onerror=function(b){g(b)}}else g(b)};l.onerror=
-function(b){g(b)};l.send()};EditorUi.prototype.insertAsPreText=function(b,c,e){var d=this.editor.graph,f=null;d.getModel().beginUpdate();try{f=d.insertVertex(null,null,"<pre>"+b+"</pre>",c,e,1,1,"text;html=1;align=left;verticalAlign=top;"),d.updateCellSize(f,!0)}finally{d.getModel().endUpdate()}return f};EditorUi.prototype.insertTextAt=function(b,c,e,g,k,n,p,t){n=null!=n?n:!0;p=null!=p?p:!0;if(null!=b)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b))this.parseFile(new Blob([b.replace(/\s+/g,
-" ")],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&200<=b.status&&299>=b.status&&this.editor.graph.setSelectionCells(this.insertTextAt(b.responseText,c,e,!0))}));else if("data:"==b.substring(0,5)||!this.isOffline()&&(k||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(b))){var d=this.editor.graph;if("data:application/pdf;base64,"==b.substring(0,28)){var f=Editor.extractGraphModelFromPdf(b);if(null!=f&&0<f.length)return this.importXml(f,c,e,n,!0,t)}if(Editor.isPngDataUrl(b)&&
-(f=Editor.extractGraphModelFromPng(b),null!=f&&0<f.length))return this.importXml(f,c,e,n,!0,t);if("data:image/svg+xml;"==b.substring(0,19))try{f=null;"data:image/svg+xml;base64,"==b.substring(0,26)?(f=b.substring(b.indexOf(",")+1),f=window.atob&&!mxClient.IS_SF?atob(f):Base64.decode(f,!0)):f=decodeURIComponent(b.substring(b.indexOf(",")+1));var l=this.importXml(f,c,e,n,!0,t);if(0<l.length)return l}catch(z){}this.loadImage(b,mxUtils.bind(this,function(f){if("data:"==b.substring(0,5))this.resizeImage(f,
-b,mxUtils.bind(this,function(b,f,g){d.setSelectionCell(d.insertVertex(null,null,"",d.snap(c),d.snap(e),f,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(b)+";"))}),p,this.maxImageSize);else{var g=Math.min(1,Math.min(this.maxImageSize/f.width,this.maxImageSize/f.height)),l=Math.round(f.width*g);f=Math.round(f.height*g);d.setSelectionCell(d.insertVertex(null,null,"",d.snap(c),d.snap(e),l,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
-b+";"))}}),mxUtils.bind(this,function(){var f=null;d.getModel().beginUpdate();try{f=d.insertVertex(d.getDefaultParent(),null,b,d.snap(c),d.snap(e),1,1,"text;"+(g?"html=1;":"")),d.updateCellSize(f),d.fireEvent(new mxEventObject("textInserted","cells",[f]))}finally{d.getModel().endUpdate()}d.setSelectionCell(f)}))}else{b=Graph.zapGremlins(mxUtils.trim(b));if(this.isCompatibleString(b))return this.importXml(b,c,e,n,null,t);if(0<b.length)if(this.isLucidChartData(b))this.convertLucidChart(b,mxUtils.bind(this,
-function(b){this.editor.graph.setSelectionCells(this.importXml(b,c,e,n,null,t))}),mxUtils.bind(this,function(b){this.handleError(b)}));else{d=this.editor.graph;k=null;d.getModel().beginUpdate();try{k=d.insertVertex(d.getDefaultParent(),null,"",d.snap(c),d.snap(e),1,1,"text;whiteSpace=wrap;"+(g?"html=1;":""));d.fireEvent(new mxEventObject("textInserted","cells",[k]));"<"==b.charAt(0)&&b.indexOf(">")==b.length-1&&(b=mxUtils.htmlEntities(b));b.length>this.maxTextBytes&&(b=b.substring(0,this.maxTextBytes)+
+c)e(this.response);else{var d=new FileReader;d.readAsDataURL(this.response);d.onloadend=function(b){var c=new Image;c.onload=function(){try{var b=c.width,g=c.height;if(0==b&&0==g){var l=d.result,k=l.indexOf(","),m=decodeURIComponent(escape(atob(l.substring(k+1)))),n=mxUtils.parseXml(m).getElementsByTagName("svg");0<n.length&&(b=parseFloat(n[0].getAttribute("width")),g=parseFloat(n[0].getAttribute("height")))}e(d.result,b,g)}catch(C){f(C)}};c.src=d.result};d.onerror=function(b){f(b)}}else f(b)};l.onerror=
+function(b){f(b)};l.send()};EditorUi.prototype.insertAsPreText=function(b,c,e){var d=this.editor.graph,g=null;d.getModel().beginUpdate();try{g=d.insertVertex(null,null,"<pre>"+b+"</pre>",c,e,1,1,"text;html=1;align=left;verticalAlign=top;"),d.updateCellSize(g,!0)}finally{d.getModel().endUpdate()}return g};EditorUi.prototype.insertTextAt=function(b,c,e,f,k,n,p,t){n=null!=n?n:!0;p=null!=p?p:!0;if(null!=b)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b))this.parseFile(new Blob([b.replace(/\s+/g,
+" ")],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&200<=b.status&&299>=b.status&&this.editor.graph.setSelectionCells(this.insertTextAt(b.responseText,c,e,!0))}));else if("data:"==b.substring(0,5)||!this.isOffline()&&(k||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(b))){var d=this.editor.graph;if("data:application/pdf;base64,"==b.substring(0,28)){var g=Editor.extractGraphModelFromPdf(b);if(null!=g&&0<g.length)return this.importXml(g,c,e,n,!0,t)}if(Editor.isPngDataUrl(b)&&
+(g=Editor.extractGraphModelFromPng(b),null!=g&&0<g.length))return this.importXml(g,c,e,n,!0,t);if("data:image/svg+xml;"==b.substring(0,19))try{g=null;"data:image/svg+xml;base64,"==b.substring(0,26)?(g=b.substring(b.indexOf(",")+1),g=window.atob&&!mxClient.IS_SF?atob(g):Base64.decode(g,!0)):g=decodeURIComponent(b.substring(b.indexOf(",")+1));var l=this.importXml(g,c,e,n,!0,t);if(0<l.length)return l}catch(z){}this.loadImage(b,mxUtils.bind(this,function(g){if("data:"==b.substring(0,5))this.resizeImage(g,
+b,mxUtils.bind(this,function(b,g,f){d.setSelectionCell(d.insertVertex(null,null,"",d.snap(c),d.snap(e),g,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(b)+";"))}),p,this.maxImageSize);else{var f=Math.min(1,Math.min(this.maxImageSize/g.width,this.maxImageSize/g.height)),l=Math.round(g.width*f);g=Math.round(g.height*f);d.setSelectionCell(d.insertVertex(null,null,"",d.snap(c),d.snap(e),l,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
+b+";"))}}),mxUtils.bind(this,function(){var g=null;d.getModel().beginUpdate();try{g=d.insertVertex(d.getDefaultParent(),null,b,d.snap(c),d.snap(e),1,1,"text;"+(f?"html=1;":"")),d.updateCellSize(g),d.fireEvent(new mxEventObject("textInserted","cells",[g]))}finally{d.getModel().endUpdate()}d.setSelectionCell(g)}))}else{b=Graph.zapGremlins(mxUtils.trim(b));if(this.isCompatibleString(b))return this.importXml(b,c,e,n,null,t);if(0<b.length)if(this.isLucidChartData(b))this.convertLucidChart(b,mxUtils.bind(this,
+function(b){this.editor.graph.setSelectionCells(this.importXml(b,c,e,n,null,t))}),mxUtils.bind(this,function(b){this.handleError(b)}));else{d=this.editor.graph;k=null;d.getModel().beginUpdate();try{k=d.insertVertex(d.getDefaultParent(),null,"",d.snap(c),d.snap(e),1,1,"text;whiteSpace=wrap;"+(f?"html=1;":""));d.fireEvent(new mxEventObject("textInserted","cells",[k]));"<"==b.charAt(0)&&b.indexOf(">")==b.length-1&&(b=mxUtils.htmlEntities(b));b.length>this.maxTextBytes&&(b=b.substring(0,this.maxTextBytes)+
"...");k.value=b;d.updateCellSize(k);if(0<this.maxTextWidth&&k.geometry.width>this.maxTextWidth){var m=d.getPreferredSizeForCell(k,this.maxTextWidth);k.geometry.width=m.width;k.geometry.height=m.height}Graph.isLink(k.value)&&d.setLinkForCell(k,k.value);k.geometry.width+=d.gridSize;k.geometry.height+=d.gridSize}finally{d.getModel().endUpdate()}return[k]}}return[]};EditorUi.prototype.formatFileSize=function(b){var d=-1;do b/=1024,d++;while(1024<b);return Math.max(b,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[d]};
EditorUi.prototype.convertDataUri=function(b){if("data:"==b.substring(0,5)){var d=b.indexOf(";");0<d&&(b=b.substring(0,d)+b.substring(b.indexOf(",",d+1)))}return b};EditorUi.prototype.isRemoteFileFormat=function(b,c){return/(\"contentType\":\s*\"application\/gliffy\+json\")/.test(b)};EditorUi.prototype.isLucidChartData=function(b){return null!=b&&('{"state":"{\\"Properties\\":'==b.substring(0,26)||'{"Properties":'==b.substring(0,14))};EditorUi.prototype.importLocalFile=function(b,c){if(b&&Graph.fileSupport){if(null==
this.importFileInputElt){var d=document.createElement("input");d.setAttribute("type","file");mxEvent.addListener(d,"change",mxUtils.bind(this,function(){null!=d.files&&(this.importFiles(d.files,null,null,this.maxImageSize),d.type="",d.type="file",d.value="")}));d.style.display="none";document.body.appendChild(d);this.importFileInputElt=d}this.importFileInputElt.click()}else{window.openNew=!1;window.openKey="import";window.listBrowserFiles=mxUtils.bind(this,function(b,d){StorageFile.listFiles(this,
"F",b,d)});window.openBrowserFile=mxUtils.bind(this,function(b,d,c){StorageFile.getFileContent(this,b,d,c)});window.deleteBrowserFile=mxUtils.bind(this,function(b,d,c){StorageFile.deleteFile(this,b,d,c)});if(!c){var e=Editor.useLocalStorage;Editor.useLocalStorage=!b}window.openFile=new OpenFile(mxUtils.bind(this,function(b){this.hideDialog(b)}));window.openFile.setConsumer(mxUtils.bind(this,function(b,d){if(null!=d&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(d)){var c=new Blob([b],{type:"application/octet-stream"});
-this.importVisio(c,mxUtils.bind(this,function(b){this.importXml(b,0,0,!0)}),null,d)}else this.editor.graph.setSelectionCells(this.importXml(b,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,function(){window.openFile=null});if(!c){var f=this.dialog,g=f.close;this.dialog.close=mxUtils.bind(this,function(b){Editor.useLocalStorage=e;g.apply(f,arguments);b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};
-EditorUi.prototype.importZipFile=function(b,c,e){var d=this,f=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(b).then(function(f){if(0==Object.keys(f.files).length)e();else{var g=0,l,k=!1;f.forEach(function(b,d){var f=d.name.toLowerCase();"diagram/diagram.xml"==f?(k=!0,d.async("string").then(function(b){0==b.indexOf("<mxfile ")?c(b):e()})):0==f.indexOf("versions/")&&(f=parseInt(f.substr(9)),f>g&&(g=f,l=d))});0<g?l.async("string").then(function(f){!d.isOffline()&&
-(new XMLHttpRequest).upload&&d.isRemoteFileFormat(f,b.name)?d.parseFile(new Blob([f],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&299>=b.status?c(b.responseText):e())}),b.name):e()}):k||e()}},function(b){e(b)}):e()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.importFile=function(b,c,e,g,k,n,p,t,y,x,F,H){x=null!=x?x:!0;var d=!1,f=null,
-l=mxUtils.bind(this,function(b){var d=null;null!=b&&"<mxlibrary"==b.substring(0,10)?this.loadLibrary(new LocalLibrary(this,b,p)):d=this.importXml(b,e,g,x,null,null!=H?mxEvent.isControlDown(H):null);null!=t&&t(d)});"image"==c.substring(0,5)?(y=!1,"image/png"==c.substring(0,9)&&(c=F?null:this.extractGraphModelFromPng(b),null!=c&&0<c.length&&(f=this.importXml(c,e,g,x,null,null!=H?mxEvent.isControlDown(H):null),y=!0)),y||(c=this.editor.graph,F=b.indexOf(";"),0<F&&(b=b.substring(0,F)+b.substring(b.indexOf(",",
-F+1))),x&&c.isGridEnabled()&&(e=c.snap(e),g=c.snap(g)),f=[c.insertVertex(null,null,"",e,g,k,n,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+b+";")])):/(\.*<graphml )/.test(b)?(d=!0,this.importGraphML(b,l)):null!=y&&null!=p&&(/(\.v(dx|sdx?))($|\?)/i.test(p)||/(\.vs(x|sx?))($|\?)/i.test(p))?(d=!0,this.importVisio(y,l)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,p)?(d=!0,this.parseFile(null!=
-y?y:new Blob([b],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&299>=b.status?l(b.responseText):null!=t&&t(null))}),p)):0==b.indexOf("PK")&&null!=y?(d=!0,this.importZipFile(y,l,mxUtils.bind(this,function(){f=this.insertTextAt(this.validateFileData(b),e,g,!0,null,x);t(f)}))):/(\.v(sd|dx))($|\?)/i.test(p)||/(\.vs(s|x))($|\?)/i.test(p)||(f=this.insertTextAt(this.validateFileData(b),e,g,!0,null,x,null,null!=H?mxEvent.isControlDown(H):null));d||null==
-t||t(f);return f};EditorUi.prototype.importFiles=function(b,c,e,g,k,n,p,t,y,x,F,H,z){g=null!=g?g:this.maxImageSize;x=null!=x?x:this.maxImageBytes;var d=null!=c&&null!=e,f=!0;c=null!=c?c:0;e=null!=e?e:0;var l=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var m=F||this.resampleThreshold,q=0;q<b.length;q++)if("image/"==b[q].type.substring(0,6)&&b[q].size>m){l=!0;break}var u=mxUtils.bind(this,function(){var l=this.editor.graph,m=l.gridSize;k=null!=k?k:mxUtils.bind(this,function(b,c,e,f,g,l,k,m,n){try{return null!=
-b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,b,k)),null):this.importFile(b,c,e,f,g,l,k,m,n,d,H,z)}catch(la){return this.handleError(la),null}});n=null!=n?n:mxUtils.bind(this,function(b){l.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q=b.length,u=q,v=[],C=mxUtils.bind(this,function(b,d){v[b]=d;if(0==--u){this.spinner.stop();if(null!=t)t(v);else{var c=[];l.getModel().beginUpdate();try{for(var e=0;e<v.length;e++){var f=
-v[e]();null!=f&&(c=c.concat(f))}}finally{l.getModel().endUpdate()}}n(c)}}),y=0;y<q;y++)mxUtils.bind(this,function(d){var n=b[d];if(null!=n){var q=new FileReader;q.onload=mxUtils.bind(this,function(b){if(null==p||p(n))if("image/"==n.type.substring(0,6))if("image/svg"==n.type.substring(0,9)){var q=Graph.clipSvgDataUri(b.target.result),t=q.indexOf(","),u=decodeURIComponent(escape(atob(q.substring(t+1)))),v=mxUtils.parseXml(u),u=v.getElementsByTagName("svg");if(0<u.length){var u=u[0],z=H?null:u.getAttribute("content");
-null!=z&&"<"!=z.charAt(0)&&"%"!=z.charAt(0)&&(z=unescape(window.atob?atob(z):Base64.decode(z,!0)));null!=z&&"%"==z.charAt(0)&&(z=decodeURIComponent(z));null==z||"<mxfile "!==z.substring(0,8)&&"<mxGraphModel "!==z.substring(0,14)?C(d,mxUtils.bind(this,function(){try{if(q.substring(0,t+1),null!=v){var b=v.getElementsByTagName("svg");if(0<b.length){var f=b[0],p=f.getAttribute("width"),u=f.getAttribute("height"),p=null!=p&&"%"!=p.charAt(p.length-1)?parseFloat(p):NaN,u=null!=u&&"%"!=u.charAt(u.length-
-1)?parseFloat(u):NaN,x=f.getAttribute("viewBox");if(null==x||0==x.length)f.setAttribute("viewBox","0 0 "+p+" "+u);else if(isNaN(p)||isNaN(u)){var C=x.split(" ");3<C.length&&(p=parseFloat(C[2]),u=parseFloat(C[3]))}q=Editor.createSvgDataUri(mxUtils.getXml(f));var z=Math.min(1,Math.min(g/Math.max(1,p)),g/Math.max(1,u)),N=k(q,n.type,c+d*m,e+d*m,Math.max(1,Math.round(p*z)),Math.max(1,Math.round(u*z)),n.name);if(isNaN(p)||isNaN(u)){var y=new Image;y.onload=mxUtils.bind(this,function(){p=Math.max(1,y.width);
-u=Math.max(1,y.height);N[0].geometry.width=p;N[0].geometry.height=u;f.setAttribute("viewBox","0 0 "+p+" "+u);q=Editor.createSvgDataUri(mxUtils.getXml(f));var b=q.indexOf(";");0<b&&(q=q.substring(0,b)+q.substring(q.indexOf(",",b+1)));l.setCellStyles("image",q,[N[0]])});y.src=Editor.createSvgDataUri(mxUtils.getXml(f))}return N}}}catch(ia){}return null})):C(d,mxUtils.bind(this,function(){return k(z,"text/xml",c+d*m,e+d*m,0,0,n.name)}))}else C(d,mxUtils.bind(this,function(){return null}))}else{u=!1;if("image/png"==
-n.type){var N=H?null:this.extractGraphModelFromPng(b.target.result);if(null!=N&&0<N.length){var y=new Image;y.src=b.target.result;C(d,mxUtils.bind(this,function(){return k(N,"text/xml",c+d*m,e+d*m,y.width,y.height,n.name)}));u=!0}}u||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):
-this.loadImage(b.target.result,mxUtils.bind(this,function(l){this.resizeImage(l,b.target.result,mxUtils.bind(this,function(b,l,q){C(d,mxUtils.bind(this,function(){if(null!=b&&b.length<x){var p=f&&this.isResampleImageSize(n.size,F)?Math.min(1,Math.min(g/l,g/q)):1;return k(b,n.type,c+d*m,e+d*m,Math.round(l*p),Math.round(q*p),n.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),f,g,F,n.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else q=
-b.target.result,k(q,n.type,c+d*m,e+d*m,240,160,n.name,function(b){C(d,function(){return b})},n)});/(\.v(dx|sdx?))($|\?)/i.test(n.name)||/(\.vs(x|sx?))($|\?)/i.test(n.name)?k(null,n.type,c+d*m,e+d*m,240,160,n.name,function(b){C(d,function(){return b})},n):"image"==n.type.substring(0,5)||"application/pdf"==n.type?q.readAsDataURL(n):q.readAsText(n)}})(y)});if(l){l=[];for(q=0;q<b.length;q++)l.push(b[q]);b=l;this.confirmImageResize(function(b){f=b;u()},y)}else u()};EditorUi.prototype.confirmImageResize=
-function(b,c){c=null!=c?c:!1;var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},e=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,f=function(e,f){if(e||c)mxSettings.setResizeImages(e?f:null),mxSettings.save();d();b(f)};null==e||c?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(b){f(b,!0)},function(b){f(b,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+
-'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):f(!1,e)};EditorUi.prototype.parseFile=function(b,c,e){e=null!=e?e:b.name;var d=new FormData;d.append("format","xml");d.append("upfile",b,e);var f=new XMLHttpRequest;f.open("POST",OPEN_URL);f.onreadystatechange=function(){c(f)};f.send(d);try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+b.size})}catch(n){}};EditorUi.prototype.isResampleImageSize=
-function(b,c){c=null!=c?c:this.resampleThreshold;return b>c};EditorUi.prototype.resizeImage=function(b,c,e,g,k,n,p){k=null!=k?k:this.maxImageSize;var d=Math.max(1,b.width),f=Math.max(1,b.height);if(g&&this.isResampleImageSize(null!=p?p:c.length,n))try{var l=Math.max(d/k,f/k);if(1<l){var m=Math.round(d/l),q=Math.round(f/l),t=document.createElement("canvas");t.width=m;t.height=q;t.getContext("2d").drawImage(b,0,0,m,q);var u=t.toDataURL();if(u.length<c.length){var L=document.createElement("canvas");
-L.width=m;L.height=q;var E=L.toDataURL();u!==E&&(c=u,d=m,f=q)}}}catch(J){}e(c,d,f)};EditorUi.prototype.extractGraphModelFromPng=function(b){return Editor.extractGraphModelFromPng(b)};EditorUi.prototype.loadImage=function(b,c,e){try{var d=new Image;d.onload=function(){d.width=0<d.width?d.width:120;d.height=0<d.height?d.height:120;c(d)};null!=e&&(d.onerror=e);d.src=b}catch(m){if(null!=e)e(m);else throw m;}};var g=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=
-mxStencilRegistry.allowEval&&!this.isOfflineApp();this.isSettingsEnabled()&&("1"==urlParams.sketch&&this.doSetSketchMode(null!=mxSettings.settings.sketchMode&&null==urlParams.rough?mxSettings.settings.sketchMode:"0"!=urlParams.rough),this.formatWidth=mxSettings.getFormatWidth());var b=this,c=this.editor.graph;Editor.isDarkMode()&&(c.view.defaultGridColor=mxGraphView.prototype.defaultDarkGridColor);c.cellEditor.editPlantUmlData=function(d,e,f){var g=JSON.parse(f);e=new TextareaDialog(b,mxResources.get("plantUml")+
-":",g.data,function(e){null!=e&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generatePlantUmlImage(e,g.format,function(f,l,k){b.spinner.stop();c.getModel().beginUpdate();try{if("txt"==g.format)c.labelChanged(d,"<pre>"+f+"</pre>"),c.updateCellSize(d,!0);else{c.setCellStyles("image",b.convertDataUri(f),[d]);var m=c.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=l,m.height=k,c.cellsResized([d],[m],!1))}c.setAttributeForCell(d,"plantUmlData",JSON.stringify({data:e,format:g.format}))}finally{c.getModel().endUpdate()}},
-function(d){b.handleError(d)})},null,null,400,220);b.showDialog(e.container,420,300,!0,!0);e.init()};c.cellEditor.editMermaidData=function(d,e,f){var g=JSON.parse(f);e=new TextareaDialog(b,mxResources.get("mermaid")+":",g.data,function(e){null!=e&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generateMermaidImage(e,g.config,function(f,l,k){b.spinner.stop();c.getModel().beginUpdate();try{c.setCellStyles("image",f,[d]);var m=c.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=Math.max(m.width,
-l),m.height=Math.max(m.height,k),c.cellsResized([d],[m],!1));c.setAttributeForCell(d,"mermaidData",JSON.stringify({data:e,config:g.config},null,2))}finally{c.getModel().endUpdate()}},function(d){b.handleError(d)})},null,null,400,220);b.showDialog(e.container,420,300,!0,!0);e.init()};var e=c.cellEditor.startEditing;c.cellEditor.startEditing=function(d,f){try{var g=this.graph.getAttributeForCell(d,"plantUmlData");if(null!=g)this.editPlantUmlData(d,f,g);else if(g=this.graph.getAttributeForCell(d,"mermaidData"),
-null!=g)this.editMermaidData(d,f,g);else{var l=c.getCellStyle(d);"1"==mxUtils.getValue(l,"metaEdit","0")?b.showDataDialog(d):e.apply(this,arguments)}}catch(aa){b.handleError(aa)}};c.getLinkTitle=function(d){return b.getLinkTitle(d)};c.customLinkClicked=function(d){var c=!1;try{b.handleCustomLink(d),c=!0}catch(K){b.handleError(K)}return c};var k=c.parseBackgroundImage;c.parseBackgroundImage=function(b){var d=k.apply(this,arguments);null!=d&&null!=d.src&&Graph.isPageLink(d.src)&&(d={originalSrc:d.src});
+this.importVisio(c,mxUtils.bind(this,function(b){this.importXml(b,0,0,!0)}),null,d)}else this.editor.graph.setSelectionCells(this.importXml(b,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,function(){window.openFile=null});if(!c){var g=this.dialog,f=g.close;this.dialog.close=mxUtils.bind(this,function(b){Editor.useLocalStorage=e;f.apply(g,arguments);b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};
+EditorUi.prototype.importZipFile=function(b,c,e){var d=this,g=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(b).then(function(g){if(0==Object.keys(g.files).length)e();else{var f=0,l,k=!1;g.forEach(function(b,d){var g=d.name.toLowerCase();"diagram/diagram.xml"==g?(k=!0,d.async("string").then(function(b){0==b.indexOf("<mxfile ")?c(b):e()})):0==g.indexOf("versions/")&&(g=parseInt(g.substr(9)),g>f&&(f=g,l=d))});0<f?l.async("string").then(function(g){!d.isOffline()&&
+(new XMLHttpRequest).upload&&d.isRemoteFileFormat(g,b.name)?d.parseFile(new Blob([g],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&299>=b.status?c(b.responseText):e())}),b.name):e()}):k||e()}},function(b){e(b)}):e()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?g():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",g))};EditorUi.prototype.importFile=function(b,c,e,f,k,n,p,t,y,x,F,H){x=null!=x?x:!0;var d=!1,g=null,
+l=mxUtils.bind(this,function(b){var d=null;null!=b&&"<mxlibrary"==b.substring(0,10)?this.loadLibrary(new LocalLibrary(this,b,p)):d=this.importXml(b,e,f,x,null,null!=H?mxEvent.isControlDown(H):null);null!=t&&t(d)});"image"==c.substring(0,5)?(y=!1,"image/png"==c.substring(0,9)&&(c=F?null:this.extractGraphModelFromPng(b),null!=c&&0<c.length&&(g=this.importXml(c,e,f,x,null,null!=H?mxEvent.isControlDown(H):null),y=!0)),y||(c=this.editor.graph,F=b.indexOf(";"),0<F&&(b=b.substring(0,F)+b.substring(b.indexOf(",",
+F+1))),x&&c.isGridEnabled()&&(e=c.snap(e),f=c.snap(f)),g=[c.insertVertex(null,null,"",e,f,k,n,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+b+";")])):/(\.*<graphml )/.test(b)?(d=!0,this.importGraphML(b,l)):null!=y&&null!=p&&(/(\.v(dx|sdx?))($|\?)/i.test(p)||/(\.vs(x|sx?))($|\?)/i.test(p))?(d=!0,this.importVisio(y,l)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,p)?(d=!0,this.parseFile(null!=
+y?y:new Blob([b],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&299>=b.status?l(b.responseText):null!=t&&t(null))}),p)):0==b.indexOf("PK")&&null!=y?(d=!0,this.importZipFile(y,l,mxUtils.bind(this,function(){g=this.insertTextAt(this.validateFileData(b),e,f,!0,null,x);t(g)}))):/(\.v(sd|dx))($|\?)/i.test(p)||/(\.vs(s|x))($|\?)/i.test(p)||(g=this.insertTextAt(this.validateFileData(b),e,f,!0,null,x,null,null!=H?mxEvent.isControlDown(H):null));d||null==
+t||t(g);return g};EditorUi.prototype.importFiles=function(b,c,e,f,k,n,p,t,y,x,F,H,z){f=null!=f?f:this.maxImageSize;x=null!=x?x:this.maxImageBytes;var d=null!=c&&null!=e,g=!0;c=null!=c?c:0;e=null!=e?e:0;var l=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var m=F||this.resampleThreshold,q=0;q<b.length;q++)if("image/"==b[q].type.substring(0,6)&&b[q].size>m){l=!0;break}var u=mxUtils.bind(this,function(){var l=this.editor.graph,m=l.gridSize;k=null!=k?k:mxUtils.bind(this,function(b,c,e,g,f,l,k,m,n){try{return null!=
+b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,b,k)),null):this.importFile(b,c,e,g,f,l,k,m,n,d,H,z)}catch(la){return this.handleError(la),null}});n=null!=n?n:mxUtils.bind(this,function(b){l.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q=b.length,u=q,v=[],C=mxUtils.bind(this,function(b,d){v[b]=d;if(0==--u){this.spinner.stop();if(null!=t)t(v);else{var c=[];l.getModel().beginUpdate();try{for(var e=0;e<v.length;e++){var g=
+v[e]();null!=g&&(c=c.concat(g))}}finally{l.getModel().endUpdate()}}n(c)}}),y=0;y<q;y++)mxUtils.bind(this,function(d){var n=b[d];if(null!=n){var q=new FileReader;q.onload=mxUtils.bind(this,function(b){if(null==p||p(n))if("image/"==n.type.substring(0,6))if("image/svg"==n.type.substring(0,9)){var q=Graph.clipSvgDataUri(b.target.result),t=q.indexOf(","),u=decodeURIComponent(escape(atob(q.substring(t+1)))),v=mxUtils.parseXml(u),u=v.getElementsByTagName("svg");if(0<u.length){var u=u[0],z=H?null:u.getAttribute("content");
+null!=z&&"<"!=z.charAt(0)&&"%"!=z.charAt(0)&&(z=unescape(window.atob?atob(z):Base64.decode(z,!0)));null!=z&&"%"==z.charAt(0)&&(z=decodeURIComponent(z));null==z||"<mxfile "!==z.substring(0,8)&&"<mxGraphModel "!==z.substring(0,14)?C(d,mxUtils.bind(this,function(){try{if(q.substring(0,t+1),null!=v){var b=v.getElementsByTagName("svg");if(0<b.length){var g=b[0],p=g.getAttribute("width"),u=g.getAttribute("height"),p=null!=p&&"%"!=p.charAt(p.length-1)?parseFloat(p):NaN,u=null!=u&&"%"!=u.charAt(u.length-
+1)?parseFloat(u):NaN,x=g.getAttribute("viewBox");if(null==x||0==x.length)g.setAttribute("viewBox","0 0 "+p+" "+u);else if(isNaN(p)||isNaN(u)){var C=x.split(" ");3<C.length&&(p=parseFloat(C[2]),u=parseFloat(C[3]))}q=Editor.createSvgDataUri(mxUtils.getXml(g));var z=Math.min(1,Math.min(f/Math.max(1,p)),f/Math.max(1,u)),L=k(q,n.type,c+d*m,e+d*m,Math.max(1,Math.round(p*z)),Math.max(1,Math.round(u*z)),n.name);if(isNaN(p)||isNaN(u)){var y=new Image;y.onload=mxUtils.bind(this,function(){p=Math.max(1,y.width);
+u=Math.max(1,y.height);L[0].geometry.width=p;L[0].geometry.height=u;g.setAttribute("viewBox","0 0 "+p+" "+u);q=Editor.createSvgDataUri(mxUtils.getXml(g));var b=q.indexOf(";");0<b&&(q=q.substring(0,b)+q.substring(q.indexOf(",",b+1)));l.setCellStyles("image",q,[L[0]])});y.src=Editor.createSvgDataUri(mxUtils.getXml(g))}return L}}}catch(ia){}return null})):C(d,mxUtils.bind(this,function(){return k(z,"text/xml",c+d*m,e+d*m,0,0,n.name)}))}else C(d,mxUtils.bind(this,function(){return null}))}else{u=!1;if("image/png"==
+n.type){var L=H?null:this.extractGraphModelFromPng(b.target.result);if(null!=L&&0<L.length){var y=new Image;y.src=b.target.result;C(d,mxUtils.bind(this,function(){return k(L,"text/xml",c+d*m,e+d*m,y.width,y.height,n.name)}));u=!0}}u||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):
+this.loadImage(b.target.result,mxUtils.bind(this,function(l){this.resizeImage(l,b.target.result,mxUtils.bind(this,function(b,l,q){C(d,mxUtils.bind(this,function(){if(null!=b&&b.length<x){var p=g&&this.isResampleImageSize(n.size,F)?Math.min(1,Math.min(f/l,f/q)):1;return k(b,n.type,c+d*m,e+d*m,Math.round(l*p),Math.round(q*p),n.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),g,f,F,n.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else q=
+b.target.result,k(q,n.type,c+d*m,e+d*m,240,160,n.name,function(b){C(d,function(){return b})},n)});/(\.v(dx|sdx?))($|\?)/i.test(n.name)||/(\.vs(x|sx?))($|\?)/i.test(n.name)?k(null,n.type,c+d*m,e+d*m,240,160,n.name,function(b){C(d,function(){return b})},n):"image"==n.type.substring(0,5)||"application/pdf"==n.type?q.readAsDataURL(n):q.readAsText(n)}})(y)});if(l){l=[];for(q=0;q<b.length;q++)l.push(b[q]);b=l;this.confirmImageResize(function(b){g=b;u()},y)}else u()};EditorUi.prototype.confirmImageResize=
+function(b,c){c=null!=c?c:!1;var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},e=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,g=function(e,g){if(e||c)mxSettings.setResizeImages(e?g:null),mxSettings.save();d();b(g)};null==e||c?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(b){g(b,!0)},function(b){g(b,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+
+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):g(!1,e)};EditorUi.prototype.parseFile=function(b,c,e){e=null!=e?e:b.name;var d=new FormData;d.append("format","xml");d.append("upfile",b,e);var g=new XMLHttpRequest;g.open("POST",OPEN_URL);g.onreadystatechange=function(){c(g)};g.send(d);try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+b.size})}catch(n){}};EditorUi.prototype.isResampleImageSize=
+function(b,c){c=null!=c?c:this.resampleThreshold;return b>c};EditorUi.prototype.resizeImage=function(b,c,e,f,k,n,p){k=null!=k?k:this.maxImageSize;var d=Math.max(1,b.width),g=Math.max(1,b.height);if(f&&this.isResampleImageSize(null!=p?p:c.length,n))try{var l=Math.max(d/k,g/k);if(1<l){var m=Math.round(d/l),q=Math.round(g/l),t=document.createElement("canvas");t.width=m;t.height=q;t.getContext("2d").drawImage(b,0,0,m,q);var u=t.toDataURL();if(u.length<c.length){var N=document.createElement("canvas");
+N.width=m;N.height=q;var E=N.toDataURL();u!==E&&(c=u,d=m,g=q)}}}catch(J){}e(c,d,g)};EditorUi.prototype.extractGraphModelFromPng=function(b){return Editor.extractGraphModelFromPng(b)};EditorUi.prototype.loadImage=function(b,c,e){try{var d=new Image;d.onload=function(){d.width=0<d.width?d.width:120;d.height=0<d.height?d.height:120;c(d)};null!=e&&(d.onerror=e);d.src=b}catch(m){if(null!=e)e(m);else throw m;}};var f=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=
+mxStencilRegistry.allowEval&&!this.isOfflineApp();this.isSettingsEnabled()&&("1"==urlParams.sketch&&this.doSetSketchMode(null!=mxSettings.settings.sketchMode&&null==urlParams.rough?mxSettings.settings.sketchMode:"0"!=urlParams.rough),this.formatWidth=mxSettings.getFormatWidth());var b=this,c=this.editor.graph;Editor.isDarkMode()&&(c.view.defaultGridColor=mxGraphView.prototype.defaultDarkGridColor);c.cellEditor.editPlantUmlData=function(d,e,g){var f=JSON.parse(g);e=new TextareaDialog(b,mxResources.get("plantUml")+
+":",f.data,function(e){null!=e&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generatePlantUmlImage(e,f.format,function(g,l,k){b.spinner.stop();c.getModel().beginUpdate();try{if("txt"==f.format)c.labelChanged(d,"<pre>"+g+"</pre>"),c.updateCellSize(d,!0);else{c.setCellStyles("image",b.convertDataUri(g),[d]);var m=c.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=l,m.height=k,c.cellsResized([d],[m],!1))}c.setAttributeForCell(d,"plantUmlData",JSON.stringify({data:e,format:f.format}))}finally{c.getModel().endUpdate()}},
+function(d){b.handleError(d)})},null,null,400,220);b.showDialog(e.container,420,300,!0,!0);e.init()};c.cellEditor.editMermaidData=function(d,e,g){var f=JSON.parse(g);e=new TextareaDialog(b,mxResources.get("mermaid")+":",f.data,function(e){null!=e&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generateMermaidImage(e,f.config,function(g,l,k){b.spinner.stop();c.getModel().beginUpdate();try{c.setCellStyles("image",g,[d]);var m=c.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=Math.max(m.width,
+l),m.height=Math.max(m.height,k),c.cellsResized([d],[m],!1));c.setAttributeForCell(d,"mermaidData",JSON.stringify({data:e,config:f.config},null,2))}finally{c.getModel().endUpdate()}},function(d){b.handleError(d)})},null,null,400,220);b.showDialog(e.container,420,300,!0,!0);e.init()};var e=c.cellEditor.startEditing;c.cellEditor.startEditing=function(d,g){try{var f=this.graph.getAttributeForCell(d,"plantUmlData");if(null!=f)this.editPlantUmlData(d,g,f);else if(f=this.graph.getAttributeForCell(d,"mermaidData"),
+null!=f)this.editMermaidData(d,g,f);else{var l=c.getCellStyle(d);"1"==mxUtils.getValue(l,"metaEdit","0")?b.showDataDialog(d):e.apply(this,arguments)}}catch(Z){b.handleError(Z)}};c.getLinkTitle=function(d){return b.getLinkTitle(d)};c.customLinkClicked=function(d){var c=!1;try{b.handleCustomLink(d),c=!0}catch(K){b.handleError(K)}return c};var k=c.parseBackgroundImage;c.parseBackgroundImage=function(b){var d=k.apply(this,arguments);null!=d&&null!=d.src&&Graph.isPageLink(d.src)&&(d={originalSrc:d.src});
return d};var m=c.setBackgroundImage;c.setBackgroundImage=function(d){null!=d&&null!=d.originalSrc&&(d=b.createImageForPageLink(d.originalSrc,b.currentPage,this));m.apply(this,arguments)};this.editor.addListener("pageRenamed",mxUtils.bind(this,function(){c.refreshBackgroundImage()}));this.editor.addListener("pageMoved",mxUtils.bind(this,function(){c.refreshBackgroundImage()}));this.editor.addListener("pagesPatched",mxUtils.bind(this,function(b,d){var e=null!=c.backgroundImage?c.backgroundImage.originalSrc:
-null;if(null!=e){var f=e.indexOf(",");if(0<f)for(var e=e.substring(f+1),f=d.getProperty("patches"),g=0;g<f.length;g++)if(null!=f[g][EditorUi.DIFF_UPDATE]&&null!=f[g][EditorUi.DIFF_UPDATE][e]){c.refreshBackgroundImage();break}}}));var n=c.getBackgroundImageObject;c.getBackgroundImageObject=function(d,c){var e=n.apply(this,arguments);if(null!=e&&null!=e.originalSrc)if(!c)e={src:e.originalSrc};else if(c&&null!=this.themes&&"darkTheme"==this.defaultThemeName){var f=this.stylesheet,g=this.shapeForegroundColor,
-l=this.shapeBackgroundColor;this.stylesheet=this.getDefaultStylesheet();this.shapeBackgroundColor="#ffffff";this.shapeForegroundColor="#000000";e=b.createImageForPageLink(e.originalSrc);this.shapeBackgroundColor=l;this.shapeForegroundColor=g;this.stylesheet=f}return e};var p=this.clearDefaultStyle;this.clearDefaultStyle=function(){p.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://www.diagrams.net/doc/faq/predefined-placeholders");
-if(/viewer\.diagrams\.net$/.test(window.location.hostname)||/embed\.diagrams\.net$/.test(window.location.hostname))this.editor.editBlankUrl="https://app.diagrams.net/";var t=b.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1");return t.apply(this,arguments)};var y=c.addClickHandler;c.addClickHandler=function(b,d,e){var f=d;d=function(b,d){if(null==d){var e=mxEvent.getSource(b);"a"==e.nodeName.toLowerCase()&&(d=e.getAttribute("href"))}null!=
-d&&c.isCustomLink(d)&&(mxEvent.isTouchEvent(b)||!mxEvent.isPopupTrigger(b))&&c.customLinkClicked(d)&&mxEvent.consume(b);null!=f&&f(b,d)};y.call(this,b,d,e)};g.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(c.view.canvas.ownerSVGElement,null,!0);if(null!=this.menus){var x=Menus.prototype.addPopupMenuEditItems;this.menus.addPopupMenuEditItems=function(d,c,e){b.editor.graph.isSelectionEmpty()?x.apply(this,arguments):b.menus.addMenuItems(d,"delete - cut copy copyAsImage - duplicate".split(" "),
+null;if(null!=e){var g=e.indexOf(",");if(0<g)for(var e=e.substring(g+1),g=d.getProperty("patches"),f=0;f<g.length;f++)if(null!=g[f][EditorUi.DIFF_UPDATE]&&null!=g[f][EditorUi.DIFF_UPDATE][e]){c.refreshBackgroundImage();break}}}));var n=c.getBackgroundImageObject;c.getBackgroundImageObject=function(d,c){var e=n.apply(this,arguments);if(null!=e&&null!=e.originalSrc)if(!c)e={src:e.originalSrc};else if(c&&null!=this.themes&&"darkTheme"==this.defaultThemeName){var g=this.stylesheet,f=this.shapeForegroundColor,
+l=this.shapeBackgroundColor;this.stylesheet=this.getDefaultStylesheet();this.shapeBackgroundColor="#ffffff";this.shapeForegroundColor="#000000";e=b.createImageForPageLink(e.originalSrc);this.shapeBackgroundColor=l;this.shapeForegroundColor=f;this.stylesheet=g}return e};var p=this.clearDefaultStyle;this.clearDefaultStyle=function(){p.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://www.diagrams.net/doc/faq/predefined-placeholders");
+if(/viewer\.diagrams\.net$/.test(window.location.hostname)||/embed\.diagrams\.net$/.test(window.location.hostname))this.editor.editBlankUrl="https://app.diagrams.net/";var t=b.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1");return t.apply(this,arguments)};var y=c.addClickHandler;c.addClickHandler=function(b,d,e){var g=d;d=function(b,d){if(null==d){var e=mxEvent.getSource(b);"a"==e.nodeName.toLowerCase()&&(d=e.getAttribute("href"))}null!=
+d&&c.isCustomLink(d)&&(mxEvent.isTouchEvent(b)||!mxEvent.isPopupTrigger(b))&&c.customLinkClicked(d)&&mxEvent.consume(b);null!=g&&g(b,d)};y.call(this,b,d,e)};f.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(c.view.canvas.ownerSVGElement,null,!0);if(null!=this.menus){var x=Menus.prototype.addPopupMenuEditItems;this.menus.addPopupMenuEditItems=function(d,c,e){b.editor.graph.isSelectionEmpty()?x.apply(this,arguments):b.menus.addMenuItems(d,"delete - cut copy copyAsImage - duplicate".split(" "),
null,e)}}b.actions.get("print").funct=function(){b.showDialog((new PrintDialog(b)).container,360,null!=b.pages&&1<b.pages.length?450:370,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var F=c.getExportVariables;c.getExportVariables=function(){var d=F.apply(this,arguments),c=b.getCurrentFile();null!=c&&(d.filename=c.getTitle());d.pagecount=null!=b.pages?b.pages.length:1;d.page=null!=b.currentPage?b.currentPage.getName():"";d.pagenumber=null!=b.pages&&null!=b.currentPage?mxUtils.indexOf(b.pages,
-b.currentPage)+1:1;return d};var H=c.getGlobalVariable;c.getGlobalVariable=function(d){var c=b.getCurrentFile();return"filename"==d&&null!=c?c.getTitle():"page"==d&&null!=b.currentPage?b.currentPage.getName():"pagenumber"==d?null!=b.currentPage&&null!=b.pages?mxUtils.indexOf(b.pages,b.currentPage)+1:1:"pagecount"==d?null!=b.pages?b.pages.length:1:H.apply(this,arguments)};var z=c.labelLinkClicked;c.labelLinkClicked=function(b,d,e){var f=d.getAttribute("href");if(null==f||!c.isCustomLink(f)||!mxEvent.isTouchEvent(e)&&
-mxEvent.isPopupTrigger(e))z.apply(this,arguments);else{if(!c.isEnabled()||null!=b&&c.isCellLocked(b.cell))c.customLinkClicked(f),c.getRubberband().reset();mxEvent.consume(e)}};this.editor.getOrCreateFilename=function(){var d=b.defaultFilename,c=b.getCurrentFile();null!=c&&(d=null!=c.getTitle()?c.getTitle():d);return d};var D=this.actions.get("print");D.setEnabled(!mxClient.IS_IOS||!navigator.standalone);D.visible=D.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,
+b.currentPage)+1:1;return d};var H=c.getGlobalVariable;c.getGlobalVariable=function(d){var c=b.getCurrentFile();return"filename"==d&&null!=c?c.getTitle():"page"==d&&null!=b.currentPage?b.currentPage.getName():"pagenumber"==d?null!=b.currentPage&&null!=b.pages?mxUtils.indexOf(b.pages,b.currentPage)+1:1:"pagecount"==d?null!=b.pages?b.pages.length:1:H.apply(this,arguments)};var z=c.labelLinkClicked;c.labelLinkClicked=function(b,d,e){var g=d.getAttribute("href");if(null==g||!c.isCustomLink(g)||!mxEvent.isTouchEvent(e)&&
+mxEvent.isPopupTrigger(e))z.apply(this,arguments);else{if(!c.isEnabled()||null!=b&&c.isCellLocked(b.cell))c.customLinkClicked(g),c.getRubberband().reset();mxEvent.consume(e)}};this.editor.getOrCreateFilename=function(){var d=b.defaultFilename,c=b.getCurrentFile();null!=c&&(d=null!=c.getTitle()?c.getTitle():d);return d};var D=this.actions.get("print");D.setEnabled(!mxClient.IS_IOS||!navigator.standalone);D.visible=D.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,
!0,"findReplace"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,!0,"insertRectangle"),this.keyHandler.bindAction(75,!0,"insertEllipse",!0),this.altShiftActions[83]="synchronize",this.installImagePasteHandler(),this.installNativeClipboardHandler();this.spinner=this.createSpinner(null,null,24);Graph.fileSupport&&c.addListener(mxEvent.EDITING_STARTED,
mxUtils.bind(this,function(b){var d=c.cellEditor.text2,e=null;null!=d&&(mxEvent.addListener(d,"dragleave",function(b){null!=e&&(e.parentNode.removeChild(e),e=null);b.stopPropagation();b.preventDefault()}),mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(b){null==e&&(!mxClient.IS_IE||10<document.documentMode)&&(e=this.highlightElement(d));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(d,"drop",mxUtils.bind(this,function(b){null!=e&&(e.parentNode.removeChild(e),e=null);if(0<
-b.dataTransfer.files.length)this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,function(b,d,e,f,g,l){c.insertImage(b,g,l)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var d=0;d<b.length;d++)b[d]()},mxEvent.isControlDown(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var d=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)?this.loadImage(decodeURIComponent(d),mxUtils.bind(this,function(b){var e=Math.max(1,
-b.width);b=Math.max(1,b.height);var f=this.maxImageSize,f=Math.min(1,Math.min(f/Math.max(1,e)),f/Math.max(1,b));c.insertImage(decodeURIComponent(d),e*f,b*f)})):document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"))}else 0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"));b.stopPropagation();
+b.dataTransfer.files.length)this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,function(b,d,e,g,f,l){c.insertImage(b,f,l)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var d=0;d<b.length;d++)b[d]()},mxEvent.isControlDown(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var d=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)?this.loadImage(decodeURIComponent(d),mxUtils.bind(this,function(b){var e=Math.max(1,
+b.width);b=Math.max(1,b.height);var g=this.maxImageSize,g=Math.min(1,Math.min(g/Math.max(1,e)),g/Math.max(1,b));c.insertImage(decodeURIComponent(d),e*g,b*g)})):document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"))}else 0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"));b.stopPropagation();
b.preventDefault()})))}));this.isSettingsEnabled()&&(D=this.editor.graph.view,D.setUnit(mxSettings.getUnit()),D.addListener("unitChanged",function(b,d){mxSettings.setUnit(d.getProperty("unit"));mxSettings.save()}),this.ruler=!this.canvasSupported||9==document.documentMode||"1"!=urlParams.ruler&&!mxSettings.isRulerOn()||this.editor.isChromelessView()&&!this.editor.editable?null:new mxDualRuler(this,D.unit),this.refresh());if("1"==urlParams.styledev){D=document.getElementById("geFooter");null!=D&&(this.styleInput=
document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this,function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),D.appendChild(this.styleInput),
-this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(b,d){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var L=this.isSelectionAllowed;this.isSelectionAllowed=function(b){return mxEvent.getSource(b)==this.styleInput?!0:L.apply(this,arguments)}}D=document.getElementById("geInfo");
+this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(b,d){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var N=this.isSelectionAllowed;this.isSelectionAllowed=function(b){return mxEvent.getSource(b)==this.styleInput?!0:N.apply(this,arguments)}}D=document.getElementById("geInfo");
null!=D&&D.parentNode.removeChild(D);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var E=null;mxEvent.addListener(c.container,"dragleave",function(b){c.isEnabled()&&(null!=E&&(E.parentNode.removeChild(E),E=null),b.stopPropagation(),b.preventDefault())});mxEvent.addListener(c.container,"dragover",mxUtils.bind(this,function(b){null==E&&(!mxClient.IS_IE||10<document.documentMode)&&(E=this.highlightElement(c.container));null!=this.sidebar&&this.sidebar.hideTooltip();b.stopPropagation();
-b.preventDefault()}));mxEvent.addListener(c.container,"drop",mxUtils.bind(this,function(b){null!=E&&(E.parentNode.removeChild(E),E=null);if(c.isEnabled()){var d=mxUtils.convertPoint(c.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),e=c.view.translate,f=c.view.scale,g=d.x/f-e.x,l=d.y/f-e.y;if(0<b.dataTransfer.files.length)mxEvent.isShiftDown(b)?this.openFiles(b.dataTransfer.files,!0):(mxEvent.isAltDown(b)&&(l=g=null),this.importFiles(b.dataTransfer.files,g,l,this.maxImageSize,null,null,null,
-null,mxEvent.isControlDown(b),null,null,mxEvent.isShiftDown(b),b));else{mxEvent.isAltDown(b)&&(l=g=0);var k=0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")?b.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(b,null!=this.pages);if(null!=d)c.setSelectionCells(this.importXml(d,g,l,!0));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")){var m=b.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=c.sanitizeHtml(m);var n=null,e=d.getElementsByTagName("img");
-null!=e&&1==e.length?(m=e[0].getAttribute("src"),null==m&&(m=e[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(n=!0)):(e=d.getElementsByTagName("a"),null!=e&&1==e.length?m=e[0].getAttribute("href"):(d=d.getElementsByTagName("pre"),null!=d&&1==d.length&&(m=mxUtils.getTextContent(d[0]))));var q=!0,p=mxUtils.bind(this,function(){c.setSelectionCells(this.insertTextAt(m,g,l,!0,n,null,q,mxEvent.isControlDown(b)))});n&&null!=m&&m.length>this.resampleThreshold?this.confirmImageResize(function(b){q=
-b;p()},mxEvent.isControlDown(b)):p()}else null!=k&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)?this.loadImage(decodeURIComponent(k),mxUtils.bind(this,function(b){var d=Math.max(1,b.width);b=Math.max(1,b.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,d)),e/Math.max(1,b));c.setSelectionCell(c.insertVertex(null,null,"",g,l,d*e,b*e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+k+";"))}),mxUtils.bind(this,function(b){c.setSelectionCells(this.insertTextAt(k,
-g,l,!0))})):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&c.setSelectionCells(this.insertTextAt(b.dataTransfer.getData("text/plain"),g,l,!0))}}b.stopPropagation();b.preventDefault()}),!1)}c.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var b=this.editor.graph;b.container.addEventListener("paste",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d))try{for(var c=
-d.clipboardData||d.originalEvent.clipboardData,e=!1,f=0;f<c.types.length;f++)if("text/"===c.types[f].substring(0,5)){e=!0;break}if(!e){var g=c.items;for(index in g){var k=g[index];if("file"===k.kind){if(b.isEditing())this.importFiles([k.getAsFile()],0,0,this.maxImageSize,function(d,c,e,f,g,l){b.insertImage(d,g,l)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var d=0;d<b.length;d++)b[d]()});else{var p=this.editor.graph.getInsertPoint();this.importFiles([k.getAsFile()],
+b.preventDefault()}));mxEvent.addListener(c.container,"drop",mxUtils.bind(this,function(b){null!=E&&(E.parentNode.removeChild(E),E=null);if(c.isEnabled()){var d=mxUtils.convertPoint(c.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),e=c.view.translate,g=c.view.scale,f=d.x/g-e.x,l=d.y/g-e.y;if(0<b.dataTransfer.files.length)mxEvent.isShiftDown(b)?this.openFiles(b.dataTransfer.files,!0):(mxEvent.isAltDown(b)&&(l=f=null),this.importFiles(b.dataTransfer.files,f,l,this.maxImageSize,null,null,null,
+null,mxEvent.isControlDown(b),null,null,mxEvent.isShiftDown(b),b));else{mxEvent.isAltDown(b)&&(l=f=0);var k=0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")?b.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(b,null!=this.pages);if(null!=d)c.setSelectionCells(this.importXml(d,f,l,!0));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")){var m=b.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=c.sanitizeHtml(m);var n=null,e=d.getElementsByTagName("img");
+null!=e&&1==e.length?(m=e[0].getAttribute("src"),null==m&&(m=e[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(n=!0)):(e=d.getElementsByTagName("a"),null!=e&&1==e.length?m=e[0].getAttribute("href"):(d=d.getElementsByTagName("pre"),null!=d&&1==d.length&&(m=mxUtils.getTextContent(d[0]))));var q=!0,p=mxUtils.bind(this,function(){c.setSelectionCells(this.insertTextAt(m,f,l,!0,n,null,q,mxEvent.isControlDown(b)))});n&&null!=m&&m.length>this.resampleThreshold?this.confirmImageResize(function(b){q=
+b;p()},mxEvent.isControlDown(b)):p()}else null!=k&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)?this.loadImage(decodeURIComponent(k),mxUtils.bind(this,function(b){var d=Math.max(1,b.width);b=Math.max(1,b.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,d)),e/Math.max(1,b));c.setSelectionCell(c.insertVertex(null,null,"",f,l,d*e,b*e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+k+";"))}),mxUtils.bind(this,function(b){c.setSelectionCells(this.insertTextAt(k,
+f,l,!0))})):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&c.setSelectionCells(this.insertTextAt(b.dataTransfer.getData("text/plain"),f,l,!0))}}b.stopPropagation();b.preventDefault()}),!1)}c.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var b=this.editor.graph;b.container.addEventListener("paste",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d))try{for(var c=
+d.clipboardData||d.originalEvent.clipboardData,e=!1,g=0;g<c.types.length;g++)if("text/"===c.types[g].substring(0,5)){e=!0;break}if(!e){var f=c.items;for(index in f){var k=f[index];if("file"===k.kind){if(b.isEditing())this.importFiles([k.getAsFile()],0,0,this.maxImageSize,function(d,c,e,g,f,l){b.insertImage(d,f,l)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var d=0;d<b.length;d++)b[d]()});else{var p=this.editor.graph.getInsertPoint();this.importFiles([k.getAsFile()],
p.x,p.y,this.maxImageSize);mxEvent.consume(d)}break}}}}catch(y){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function b(){window.setTimeout(function(){e.innerHTML="&nbsp;";e.focus();document.execCommand("selectAll",!1,null)},0)}var c=this.editor.graph,e=document.createElement("div");e.setAttribute("autocomplete","off");e.setAttribute("autocorrect","off");e.setAttribute("autocapitalize","off");e.setAttribute("spellcheck","false");e.style.textRendering="optimizeSpeed";e.style.fontFamily=
-"monospace";e.style.wordBreak="break-all";e.style.background="transparent";e.style.color="transparent";e.style.position="absolute";e.style.whiteSpace="nowrap";e.style.overflow="hidden";e.style.display="block";e.style.fontSize="1";e.style.zIndex="-1";e.style.resize="none";e.style.outline="none";e.style.width="1px";e.style.height="1px";mxUtils.setOpacity(e,0);e.contentEditable=!0;e.innerHTML="&nbsp;";var g=!1;this.keyHandler.bindControlKey(88,null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,
-null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(b){var d=mxEvent.getSource(b);null==c.container||!c.isEnabled()||c.isMouseDown||c.isEditing()||null!=this.dialog||"INPUT"==d.nodeName||"TEXTAREA"==d.nodeName||224!=b.keyCode&&(mxClient.IS_MAC||17!=b.keyCode)&&(!mxClient.IS_MAC||91!=b.keyCode&&93!=b.keyCode)||g||(e.style.left=c.container.scrollLeft+10+"px",e.style.top=c.container.scrollTop+10+"px",c.container.appendChild(e),g=!0,e.focus(),document.execCommand("selectAll",!1,null))}));
-mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(b){var d=b.keyCode;window.setTimeout(mxUtils.bind(this,function(){!g||224!=d&&17!=d&&91!=d&&93!=d||(g=!1,c.isEditing()||null!=this.dialog||null==c.container||c.container.focus(),e.parentNode.removeChild(e),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(e,"copy",mxUtils.bind(this,function(d){if(c.isEnabled())try{mxClipboard.copy(c),this.copyCells(e),b()}catch(u){this.handleError(u)}}));mxEvent.addListener(e,"cut",
+"monospace";e.style.wordBreak="break-all";e.style.background="transparent";e.style.color="transparent";e.style.position="absolute";e.style.whiteSpace="nowrap";e.style.overflow="hidden";e.style.display="block";e.style.fontSize="1";e.style.zIndex="-1";e.style.resize="none";e.style.outline="none";e.style.width="1px";e.style.height="1px";mxUtils.setOpacity(e,0);e.contentEditable=!0;e.innerHTML="&nbsp;";var f=!1;this.keyHandler.bindControlKey(88,null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,
+null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(b){var d=mxEvent.getSource(b);null==c.container||!c.isEnabled()||c.isMouseDown||c.isEditing()||null!=this.dialog||"INPUT"==d.nodeName||"TEXTAREA"==d.nodeName||224!=b.keyCode&&(mxClient.IS_MAC||17!=b.keyCode)&&(!mxClient.IS_MAC||91!=b.keyCode&&93!=b.keyCode)||f||(e.style.left=c.container.scrollLeft+10+"px",e.style.top=c.container.scrollTop+10+"px",c.container.appendChild(e),f=!0,e.focus(),document.execCommand("selectAll",!1,null))}));
+mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(b){var d=b.keyCode;window.setTimeout(mxUtils.bind(this,function(){!f||224!=d&&17!=d&&91!=d&&93!=d||(f=!1,c.isEditing()||null!=this.dialog||null==c.container||c.container.focus(),e.parentNode.removeChild(e),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(e,"copy",mxUtils.bind(this,function(d){if(c.isEnabled())try{mxClipboard.copy(c),this.copyCells(e),b()}catch(u){this.handleError(u)}}));mxEvent.addListener(e,"cut",
mxUtils.bind(this,function(d){if(c.isEnabled())try{mxClipboard.copy(c),this.copyCells(e,!0),b()}catch(u){this.handleError(u)}}));mxEvent.addListener(e,"paste",mxUtils.bind(this,function(b){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&(e.innerHTML="&nbsp;",e.focus(),null!=b.clipboardData&&this.pasteCells(b,e,!0,!0),mxEvent.isConsumed(b)||window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(b,e,!1,!0)}),0))}),!0);var k=this.isSelectionAllowed;this.isSelectionAllowed=function(b){return mxEvent.getSource(b)==
e?!0:k.apply(this,arguments)}};EditorUi.prototype.setSketchMode=function(b){this.spinner.spin(document.body,mxResources.get("working")+"...")&&window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();this.doSetSketchMode(b);null==urlParams.rough&&(mxSettings.settings.sketchMode=b,mxSettings.save());this.fireEvent(new mxEventObject("sketchModeChanged"))}),0)};EditorUi.prototype.setPagesVisible=function(b){Editor.pagesVisible!=b&&(Editor.pagesVisible=b,mxSettings.settings.pagesVisible=b,mxSettings.save(),
this.fireEvent(new mxEventObject("pagesVisibleChanged")))};EditorUi.prototype.setInlineFullscreen=function(b){Editor.inlineFullscreen!=b&&(Editor.inlineFullscreen=b,this.fireEvent(new mxEventObject("inlineFullscreenChanged")),(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:this.diagramContainer.getBoundingClientRect()}),"*"),window.setTimeout(mxUtils.bind(this,function(){this.refresh();this.actions.get("resetView").funct()}),10))};
@@ -3647,197 +3656,197 @@ mxUtils.bind(this,function(b,c){if("1"!=urlParams["ext-fonts"])mxSettings.setCus
mxSettings.save()}));this.editor.graph.pageFormat=null!=this.editor.graph.defaultPageFormat?this.editor.graph.defaultPageFormat:mxSettings.getPageFormat();this.addListener("pageFormatChanged",mxUtils.bind(this,function(b,c){mxSettings.setPageFormat(this.editor.graph.pageFormat);mxSettings.save()}));this.editor.graph.view.gridColor=mxSettings.getGridColor(Editor.isDarkMode());this.addListener("gridColorChanged",mxUtils.bind(this,function(b,c){mxSettings.setGridColor(this.editor.graph.view.gridColor,
Editor.isDarkMode());mxSettings.save()}));if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(b,c){mxSettings.setAutosave(this.editor.autosave);mxSettings.save()})),this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&(null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes?(this.sidebar.searchShapes(decodeURIComponent(urlParams["search-shapes"])),this.sidebar.showEntries("search")):(this.sidebar.showPalette("search",
mxSettings.settings.search),this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),mxSettings.save())));this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyImage=function(b,c,e){try{null!=navigator.clipboard&&this.spinner.spin(document.body,mxResources.get("exporting"))&&this.editor.exportToCanvas(mxUtils.bind(this,function(b,
-d){try{this.spinner.stop();var e=this.createImageDataUri(b,c,"png"),f=parseInt(d.getAttribute("width")),g=parseInt(d.getAttribute("height"));this.writeImageToClipboard(e,f,g,mxUtils.bind(this,function(b){this.handleError(b)}))}catch(y){this.handleError(y)}}),null,null,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,null,null!=e?e:4,null==this.editor.graph.background||this.editor.graph.background==mxConstants.NONE,null,null,null,10,null,null,!1,null,0<b.length?b:null)}catch(q){this.handleError(q)}};
-EditorUi.prototype.writeImageToClipboard=function(b,c,e,g){var d=this.base64ToBlob(b.substring(b.indexOf(",")+1),"image/png");b=new ClipboardItem({"image/png":d,"text/html":new Blob(['<img src="'+b+'" width="'+c+'" height="'+e+'">'],{type:"text/html"})});navigator.clipboard.write([b])["catch"](g)};EditorUi.prototype.copyCells=function(b,c){var d=this.editor.graph;if(d.isSelectionEmpty())b.innerHTML="";else{var e=mxUtils.sortCells(d.model.getTopmostCells(d.getSelectionCells())),f=mxUtils.getXml(d.encodeCells(e));
-mxUtils.setTextContent(b,encodeURIComponent(f));c?(d.removeCells(e,!1),d.lastPasteXml=null):(d.lastPasteXml=f,d.pasteCounter=0);b.focus();document.execCommand("selectAll",!1,null)}};EditorUi.prototype.copyXml=function(){var b=null;if(Editor.enableNativeCipboard){var c=this.editor.graph;c.isSelectionEmpty()||(b=mxUtils.sortCells(c.getExportableCells(c.model.getTopmostCells(c.getSelectionCells()))),c=mxUtils.getXml(c.encodeCells(b)),navigator.clipboard.writeText(c))}return b};EditorUi.prototype.pasteXml=
-function(b,c,e,g){var d=this.editor.graph,f=null;d.lastPasteXml==b?d.pasteCounter++:(d.lastPasteXml=b,d.pasteCounter=0);var k=d.pasteCounter*d.gridSize;if(e||this.isCompatibleString(b))f=this.importXml(b,k,k),d.setSelectionCells(f);else if(c&&1==d.getSelectionCount()){k=d.getStartEditingCell(d.getSelectionCell(),g);if(/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(b)&&"image"==d.getCurrentCellStyle(k)[mxConstants.STYLE_SHAPE])d.setCellStyles(mxConstants.STYLE_IMAGE,b,[k]);else{d.model.beginUpdate();try{d.labelChanged(k,
-b),Graph.isLink(b)&&d.setLinkForCell(k,b)}finally{d.model.endUpdate()}}d.setSelectionCell(k)}else f=d.getInsertPoint(),d.isMouseInsertPoint()&&(k=0,d.lastPasteXml==b&&0<d.pasteCounter&&d.pasteCounter--),f=this.insertTextAt(b,f.x+k,f.y+k,!0),d.setSelectionCells(f);d.isSelectionEmpty()||(d.scrollCellToVisible(d.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell())));return f};EditorUi.prototype.pasteCells=function(b,c,e,g){if(!mxEvent.isConsumed(b)){var d=
-c,f=!1;if(e&&null!=b.clipboardData&&b.clipboardData.getData){var k=b.clipboardData.getData("text/plain"),l=!1;if(null!=k&&0<k.length&&"%3CmxGraphModel%3E"==k.substring(0,18)){var q=decodeURIComponent(k);this.isCompatibleString(q)&&(l=!0,k=q)}l=l?null:b.clipboardData.getData("text/html");null!=l&&0<l.length?(d=this.parseHtmlData(l),f="text/plain"!=d.getAttribute("data-type")):null!=k&&0<k.length&&(d=document.createElement("div"),mxUtils.setTextContent(d,l))}k=d.getElementsByTagName("span");if(null!=
-k&&0<k.length&&"application/vnd.lucid.chart.objects"===k[0].getAttribute("data-lucid-type"))e=k[0].getAttribute("data-lucid-content"),null!=e&&0<e.length&&(this.convertLucidChart(e,mxUtils.bind(this,function(b){var d=this.editor.graph;d.lastPasteXml==b?d.pasteCounter++:(d.lastPasteXml=b,d.pasteCounter=0);var c=d.pasteCounter*d.gridSize;d.setSelectionCells(this.importXml(b,c,c));d.scrollCellToVisible(d.getSelectionCell())}),mxUtils.bind(this,function(b){this.handleError(b)})),mxEvent.consume(b));else{f=
-f?d.innerHTML:mxUtils.trim(null==d.innerText?mxUtils.getTextContent(d):d.innerText);l=!1;try{var p=f.lastIndexOf("%3E");0<=p&&p<f.length-3&&(f=f.substring(0,p+3))}catch(H){}try{k=d.getElementsByTagName("span"),q=null!=k&&0<k.length?mxUtils.trim(decodeURIComponent(k[0].textContent)):decodeURIComponent(f),this.isCompatibleString(q)&&(l=!0,f=q)}catch(H){}try{if(null!=f&&0<f.length){this.pasteXml(f,g,l,b);try{mxEvent.consume(b)}catch(H){}}else if(!e){var t=this.editor.graph;t.lastPasteXml=null;t.pasteCounter=
+d){try{this.spinner.stop();var e=this.createImageDataUri(b,c,"png"),g=parseInt(d.getAttribute("width")),f=parseInt(d.getAttribute("height"));this.writeImageToClipboard(e,g,f,mxUtils.bind(this,function(b){this.handleError(b)}))}catch(y){this.handleError(y)}}),null,null,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,null,null!=e?e:4,null==this.editor.graph.background||this.editor.graph.background==mxConstants.NONE,null,null,null,10,null,null,!1,null,0<b.length?b:null)}catch(q){this.handleError(q)}};
+EditorUi.prototype.writeImageToClipboard=function(b,c,e,f){var d=this.base64ToBlob(b.substring(b.indexOf(",")+1),"image/png");b=new ClipboardItem({"image/png":d,"text/html":new Blob(['<img src="'+b+'" width="'+c+'" height="'+e+'">'],{type:"text/html"})});navigator.clipboard.write([b])["catch"](f)};EditorUi.prototype.copyCells=function(b,c){var d=this.editor.graph;if(d.isSelectionEmpty())b.innerHTML="";else{var e=mxUtils.sortCells(d.model.getTopmostCells(d.getSelectionCells())),g=mxUtils.getXml(d.encodeCells(e));
+mxUtils.setTextContent(b,encodeURIComponent(g));c?(d.removeCells(e,!1),d.lastPasteXml=null):(d.lastPasteXml=g,d.pasteCounter=0);b.focus();document.execCommand("selectAll",!1,null)}};EditorUi.prototype.copyXml=function(){var b=null;if(Editor.enableNativeCipboard){var c=this.editor.graph;c.isSelectionEmpty()||(b=mxUtils.sortCells(c.getExportableCells(c.model.getTopmostCells(c.getSelectionCells()))),c=mxUtils.getXml(c.encodeCells(b)),navigator.clipboard.writeText(c))}return b};EditorUi.prototype.pasteXml=
+function(b,c,e,f){var d=this.editor.graph,g=null;d.lastPasteXml==b?d.pasteCounter++:(d.lastPasteXml=b,d.pasteCounter=0);var k=d.pasteCounter*d.gridSize;if(e||this.isCompatibleString(b))g=this.importXml(b,k,k),d.setSelectionCells(g);else if(c&&1==d.getSelectionCount()){k=d.getStartEditingCell(d.getSelectionCell(),f);if(/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(b)&&"image"==d.getCurrentCellStyle(k)[mxConstants.STYLE_SHAPE])d.setCellStyles(mxConstants.STYLE_IMAGE,b,[k]);else{d.model.beginUpdate();try{d.labelChanged(k,
+b),Graph.isLink(b)&&d.setLinkForCell(k,b)}finally{d.model.endUpdate()}}d.setSelectionCell(k)}else g=d.getInsertPoint(),d.isMouseInsertPoint()&&(k=0,d.lastPasteXml==b&&0<d.pasteCounter&&d.pasteCounter--),g=this.insertTextAt(b,g.x+k,g.y+k,!0),d.setSelectionCells(g);d.isSelectionEmpty()||(d.scrollCellToVisible(d.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell())));return g};EditorUi.prototype.pasteCells=function(b,c,e,f){if(!mxEvent.isConsumed(b)){var d=
+c,g=!1;if(e&&null!=b.clipboardData&&b.clipboardData.getData){var k=b.clipboardData.getData("text/plain"),l=!1;if(null!=k&&0<k.length&&"%3CmxGraphModel%3E"==k.substring(0,18)){var p=decodeURIComponent(k);this.isCompatibleString(p)&&(l=!0,k=p)}l=l?null:b.clipboardData.getData("text/html");null!=l&&0<l.length?(d=this.parseHtmlData(l),g="text/plain"!=d.getAttribute("data-type")):null!=k&&0<k.length&&(d=document.createElement("div"),mxUtils.setTextContent(d,l))}k=d.getElementsByTagName("span");if(null!=
+k&&0<k.length&&"application/vnd.lucid.chart.objects"===k[0].getAttribute("data-lucid-type"))e=k[0].getAttribute("data-lucid-content"),null!=e&&0<e.length&&(this.convertLucidChart(e,mxUtils.bind(this,function(b){var d=this.editor.graph;d.lastPasteXml==b?d.pasteCounter++:(d.lastPasteXml=b,d.pasteCounter=0);var c=d.pasteCounter*d.gridSize;d.setSelectionCells(this.importXml(b,c,c));d.scrollCellToVisible(d.getSelectionCell())}),mxUtils.bind(this,function(b){this.handleError(b)})),mxEvent.consume(b));else{g=
+g?d.innerHTML:mxUtils.trim(null==d.innerText?mxUtils.getTextContent(d):d.innerText);l=!1;try{var q=g.lastIndexOf("%3E");0<=q&&q<g.length-3&&(g=g.substring(0,q+3))}catch(H){}try{k=d.getElementsByTagName("span"),p=null!=k&&0<k.length?mxUtils.trim(decodeURIComponent(k[0].textContent)):decodeURIComponent(g),this.isCompatibleString(p)&&(l=!0,g=p)}catch(H){}try{if(null!=g&&0<g.length){this.pasteXml(g,f,l,b);try{mxEvent.consume(b)}catch(H){}}else if(!e){var t=this.editor.graph;t.lastPasteXml=null;t.pasteCounter=
0}}catch(H){this.handleError(H)}}}c.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(b){if(Graph.fileSupport)for(var d=null,c=0;c<b.length;c++)mxEvent.addListener(b[c],"dragleave",function(b){null!=d&&(d.parentNode.removeChild(d),d=null);b.stopPropagation();b.preventDefault()}),mxEvent.addListener(b[c],"dragover",mxUtils.bind(this,function(b){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==d&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(d=
this.highlightElement());b.stopPropagation();b.preventDefault()})),mxEvent.addListener(b[c],"drop",mxUtils.bind(this,function(b){null!=d&&(d.parentNode.removeChild(d),d=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<b.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(b)&&!mxEvent.isShiftDown(b)):this.openFiles(b.dataTransfer.files,!0);else{var c=this.extractGraphModelFromEvent(b);
if(null==c){var e=null!=b.dataTransfer?b.dataTransfer:b.clipboardData;null!=e&&(10==document.documentMode||11==document.documentMode?c=e.getData("Text"):(c=null,c=0<=mxUtils.indexOf(e.types,"text/uri-list")?b.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(e.types,"text/html")?e.getData("text/html"):null,null!=c&&0<c.length?(e=document.createElement("div"),e.innerHTML=this.editor.graph.sanitizeHtml(c),e=e.getElementsByTagName("img"),0<e.length&&(c=e[0].getAttribute("src"))):0<=mxUtils.indexOf(e.types,
"text/plain")&&(c=e.getData("text/plain"))),null!=c&&(Editor.isPngDataUrl(c)?(c=Editor.extractGraphModelFromPng(c),null!=c&&0<c.length&&this.openLocalFile(c,null,!0)):!this.isOffline()&&this.isRemoteFileFormat(c)?(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(c))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()&&this.openLocalFile(b.getText(),null,!0)})):/^https?:\/\//.test(c)&&(null==this.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(c):
-window.openWindow((mxClient.IS_CHROMEAPP?EditorUi.drawHost+"/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(c)))))}else this.openLocalFile(c,null,!0)}b.stopPropagation();b.preventDefault()}))};EditorUi.prototype.highlightElement=function(b){var d=0,c=0,e,g;if(null==b){g=document.body;var k=document.documentElement;e=(g.clientWidth||k.clientWidth)-3;g=Math.max(g.clientHeight||0,k.clientHeight)-3}else d=b.offsetTop,c=b.offsetLeft,e=b.clientWidth,g=b.clientHeight;k=document.createElement("div");
-k.style.zIndex=mxPopupMenu.prototype.zIndex+2;k.style.border="3px dotted rgb(254, 137, 12)";k.style.pointerEvents="none";k.style.position="absolute";k.style.top=d+"px";k.style.left=c+"px";k.style.width=Math.max(0,e-3)+"px";k.style.height=Math.max(0,g-3)+"px";null!=b&&b.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(k):document.body.appendChild(k);return k};EditorUi.prototype.stringToCells=function(b){b=mxUtils.parseXml(b);var d=this.editor.extractGraphModel(b.documentElement);
-b=[];if(null!=d){var c=new mxCodec(d.ownerDocument),e=new mxGraphModel;c.decode(d,e);d=e.getChildAt(e.getRoot(),0);for(c=0;c<e.getChildCount(d);c++)b.push(e.getChildAt(d,c))}return b};EditorUi.prototype.openFileHandle=function(b,c,e,g,k){if(null!=c&&0<c.length){!this.useCanvasForExport&&/(\.png)$/i.test(c)?c=c.substring(0,c.length-4)+".drawio":/(\.pdf)$/i.test(c)&&(c=c.substring(0,c.length-4)+".drawio");var d=mxUtils.bind(this,function(b){c=0<=c.lastIndexOf(".")?c.substring(0,c.lastIndexOf("."))+
-".drawio":c+".drawio";if("<mxlibrary"==b.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,g);try{this.loadLibrary(new LocalLibrary(this,b,c))}catch(y){this.handleError(y,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(b,c,g)});if(/(\.v(dx|sdx?))($|\?)/i.test(c)||/(\.vs(x|sx?))($|\?)/i.test(c))this.importVisio(e,mxUtils.bind(this,function(b){this.spinner.stop();d(b)}));else if(/(\.*<graphml )/.test(b))this.importGraphML(b,
+window.openWindow((mxClient.IS_CHROMEAPP?EditorUi.drawHost+"/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(c)))))}else this.openLocalFile(c,null,!0)}b.stopPropagation();b.preventDefault()}))};EditorUi.prototype.highlightElement=function(b){var d=0,c=0,e,f;if(null==b){f=document.body;var k=document.documentElement;e=(f.clientWidth||k.clientWidth)-3;f=Math.max(f.clientHeight||0,k.clientHeight)-3}else d=b.offsetTop,c=b.offsetLeft,e=b.clientWidth,f=b.clientHeight;k=document.createElement("div");
+k.style.zIndex=mxPopupMenu.prototype.zIndex+2;k.style.border="3px dotted rgb(254, 137, 12)";k.style.pointerEvents="none";k.style.position="absolute";k.style.top=d+"px";k.style.left=c+"px";k.style.width=Math.max(0,e-3)+"px";k.style.height=Math.max(0,f-3)+"px";null!=b&&b.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(k):document.body.appendChild(k);return k};EditorUi.prototype.stringToCells=function(b){b=mxUtils.parseXml(b);var d=this.editor.extractGraphModel(b.documentElement);
+b=[];if(null!=d){var c=new mxCodec(d.ownerDocument),e=new mxGraphModel;c.decode(d,e);d=e.getChildAt(e.getRoot(),0);for(c=0;c<e.getChildCount(d);c++)b.push(e.getChildAt(d,c))}return b};EditorUi.prototype.openFileHandle=function(b,c,e,f,k){if(null!=c&&0<c.length){!this.useCanvasForExport&&/(\.png)$/i.test(c)?c=c.substring(0,c.length-4)+".drawio":/(\.pdf)$/i.test(c)&&(c=c.substring(0,c.length-4)+".drawio");var d=mxUtils.bind(this,function(b){c=0<=c.lastIndexOf(".")?c.substring(0,c.lastIndexOf("."))+
+".drawio":c+".drawio";if("<mxlibrary"==b.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,f);try{this.loadLibrary(new LocalLibrary(this,b,c))}catch(y){this.handleError(y,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(b,c,f)});if(/(\.v(dx|sdx?))($|\?)/i.test(c)||/(\.vs(x|sx?))($|\?)/i.test(c))this.importVisio(e,mxUtils.bind(this,function(b){this.spinner.stop();d(b)}));else if(/(\.*<graphml )/.test(b))this.importGraphML(b,
mxUtils.bind(this,function(b){this.spinner.stop();d(b)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,c))this.parseFile(e,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?d(b.responseText):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(b))/(\.json)$/i.test(c)&&(c=c.substring(0,
-c.length-5)+".drawio"),this.convertLucidChart(b,mxUtils.bind(this,function(b){this.spinner.stop();this.openLocalFile(b,c,g)}),mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}));else if("<mxlibrary"==b.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,g);try{this.loadLibrary(new LocalLibrary(this,b,e.name))}catch(v){this.handleError(v,mxResources.get("errorLoadingFile"))}}else if(0==
-b.indexOf("PK"))this.importZipFile(e,mxUtils.bind(this,function(b){this.spinner.stop();d(b)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(b,c,g)}));else{if("image/png"==e.type.substring(0,9))b=this.extractGraphModelFromPng(b);else if("application/pdf"==e.type){var f=Editor.extractGraphModelFromPdf(b);null!=f&&(k=null,g=!0,b=f)}this.spinner.stop();this.openLocalFile(b,c,g,k,null!=k?e:null)}}};EditorUi.prototype.openFiles=function(b,c){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var d=
-0;d<b.length;d++)mxUtils.bind(this,function(b){var d=new FileReader;d.onload=mxUtils.bind(this,function(d){try{this.openFileHandle(d.target.result,b.name,b,c)}catch(u){this.handleError(u)}});d.onerror=mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b);window.openFile=null});"image"!==b.type.substring(0,5)&&"application/pdf"!==b.type||"image/svg"===b.type.substring(0,9)?d.readAsText(b):d.readAsDataURL(b)})(b[d])};EditorUi.prototype.openLocalFile=function(b,c,e,g,k){var d=this.getCurrentFile(),
-f=mxUtils.bind(this,function(){window.openFile=null;if(null==c&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var d=mxUtils.parseXml(b);null!=d&&(this.editor.setGraphXml(d.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,b,c||this.defaultFilename,e,g,k))});if(null!=b&&0<b.length)null==d||!d.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=g)?f():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=g)&&null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),
-null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(b,c),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):f()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var b={};if(null!=this.pages)for(var c=
-0;c<this.pages.length;c++)this.updatePageRoot(this.pages[c]),this.addBasenamesForCell(this.pages[c].root,b);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),b);var c=[],e;for(e in b)c.push(e);return c};EditorUi.prototype.addBasenamesForCell=function(b,c){function d(b){if(null!=b){var d=b.lastIndexOf(".");0<d&&(b=b.substring(d+1,b.length));null==c[b]&&(c[b]=!0)}}var e=this.editor.graph,f=e.getCellStyle(b);d(mxStencilRegistry.getBasenameForStencil(f[mxConstants.STYLE_SHAPE]));e.model.isEdge(b)&&
-(d(mxMarker.getPackageForType(f[mxConstants.STYLE_STARTARROW])),d(mxMarker.getPackageForType(f[mxConstants.STYLE_ENDARROW])));for(var f=e.model.getChildCount(b),g=0;g<f;g++)this.addBasenamesForCell(e.model.getChildAt(b,g),c)};EditorUi.prototype.setGraphEnabled=function(b){this.diagramContainer.style.visibility=b?"":"hidden";this.formatContainer.style.visibility=b?"":"hidden";this.sidebarFooterContainer.style.display=b?"":"none";this.sidebarContainer.style.display=b?"":"none";this.hsplit.style.display=
+c.length-5)+".drawio"),this.convertLucidChart(b,mxUtils.bind(this,function(b){this.spinner.stop();this.openLocalFile(b,c,f)}),mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}));else if("<mxlibrary"==b.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,f);try{this.loadLibrary(new LocalLibrary(this,b,e.name))}catch(v){this.handleError(v,mxResources.get("errorLoadingFile"))}}else if(0==
+b.indexOf("PK"))this.importZipFile(e,mxUtils.bind(this,function(b){this.spinner.stop();d(b)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(b,c,f)}));else{if("image/png"==e.type.substring(0,9))b=this.extractGraphModelFromPng(b);else if("application/pdf"==e.type){var g=Editor.extractGraphModelFromPdf(b);null!=g&&(k=null,f=!0,b=g)}this.spinner.stop();this.openLocalFile(b,c,f,k,null!=k?e:null)}}};EditorUi.prototype.openFiles=function(b,c){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var d=
+0;d<b.length;d++)mxUtils.bind(this,function(b){var d=new FileReader;d.onload=mxUtils.bind(this,function(d){try{this.openFileHandle(d.target.result,b.name,b,c)}catch(u){this.handleError(u)}});d.onerror=mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b);window.openFile=null});"image"!==b.type.substring(0,5)&&"application/pdf"!==b.type||"image/svg"===b.type.substring(0,9)?d.readAsText(b):d.readAsDataURL(b)})(b[d])};EditorUi.prototype.openLocalFile=function(b,c,e,f,k){var d=this.getCurrentFile(),
+g=mxUtils.bind(this,function(){window.openFile=null;if(null==c&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var d=mxUtils.parseXml(b);null!=d&&(this.editor.setGraphXml(d.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,b,c||this.defaultFilename,e,f,k))});if(null!=b&&0<b.length)null==d||!d.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=f)?g():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=f)&&null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),
+null,g,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(b,c),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,g,mxResources.get("cancel"),mxResources.get("discardChanges")):g()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var b={};if(null!=this.pages)for(var c=
+0;c<this.pages.length;c++)this.updatePageRoot(this.pages[c]),this.addBasenamesForCell(this.pages[c].root,b);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),b);var c=[],e;for(e in b)c.push(e);return c};EditorUi.prototype.addBasenamesForCell=function(b,c){function d(b){if(null!=b){var d=b.lastIndexOf(".");0<d&&(b=b.substring(d+1,b.length));null==c[b]&&(c[b]=!0)}}var e=this.editor.graph,g=e.getCellStyle(b);d(mxStencilRegistry.getBasenameForStencil(g[mxConstants.STYLE_SHAPE]));e.model.isEdge(b)&&
+(d(mxMarker.getPackageForType(g[mxConstants.STYLE_STARTARROW])),d(mxMarker.getPackageForType(g[mxConstants.STYLE_ENDARROW])));for(var g=e.model.getChildCount(b),f=0;f<g;f++)this.addBasenamesForCell(e.model.getChildAt(b,f),c)};EditorUi.prototype.setGraphEnabled=function(b){this.diagramContainer.style.visibility=b?"":"hidden";this.formatContainer.style.visibility=b?"":"hidden";this.sidebarFooterContainer.style.display=b?"":"none";this.sidebarContainer.style.display=b?"":"none";this.hsplit.style.display=
b?"":"none";this.editor.graph.setEnabled(b);null!=this.ruler&&(this.ruler.hRuler.container.style.visibility=b?"":"hidden",this.ruler.vRuler.container.style.visibility=b?"":"hidden");null!=this.tabContainer&&(this.tabContainer.style.visibility=b?"":"hidden");b||(null!=this.actions.outlineWindow&&this.actions.outlineWindow.window.setVisible(!1),null!=this.actions.layersWindow&&this.actions.layersWindow.window.setVisible(!1),null!=this.menus.tagsWindow&&this.menus.tagsWindow.window.setVisible(!1),null!=
-this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1),null!=this.menus.findReplaceWindow&&this.menus.findReplaceWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);if((window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))){var b=!1;this.installMessageHandler(mxUtils.bind(this,function(d,c,e,g){b||(b=!0,this.spinner.stop(),this.addEmbedButtons(),this.setGraphEnabled(!0));
-if(null==d||0==d.length)d=this.emptyDiagramXml;this.setCurrentFile(new EmbedFile(this,d,{}));this.mode=App.MODE_EMBED;this.setFileData(d);if(g)try{var f=this.editor.graph;f.setGridEnabled(!1);f.pageVisible=!1;var k=f.model.cells,l;for(l in k){var m=k[l];null!=m&&null!=m.style&&(m.style+=";sketch=1;"+(-1==m.style.indexOf("fontFamily=")||-1<m.style.indexOf("fontFamily=Helvetica;")?"fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;":
+this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1),null!=this.menus.findReplaceWindow&&this.menus.findReplaceWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);if((window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))){var b=!1;this.installMessageHandler(mxUtils.bind(this,function(d,c,e,f){b||(b=!0,this.spinner.stop(),this.addEmbedButtons(),this.setGraphEnabled(!0));
+if(null==d||0==d.length)d=this.emptyDiagramXml;this.setCurrentFile(new EmbedFile(this,d,{}));this.mode=App.MODE_EMBED;this.setFileData(d);if(f)try{var g=this.editor.graph;g.setGridEnabled(!1);g.pageVisible=!1;var k=g.model.cells,l;for(l in k){var m=k[l];null!=m&&null!=m.style&&(m.style+=";sketch=1;"+(-1==m.style.indexOf("fontFamily=")||-1<m.style.indexOf("fontFamily=Helvetica;")?"fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;":
""))}}catch(x){console.log(x)}this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog();this.chromelessResize&&this.chromelessResize();this.editor.undoManager.clear();this.editor.modified=null!=e?e:!1;this.updateUi();window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))}};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?
this.actions.get("layers").funct():this.actions.layersWindow.window.setVisible(!0))};EditorUi.prototype.getPublicUrl=function(b,c){null!=b?b.getPublicUrl(c):c(null)};EditorUi.prototype.createLoadMessage=function(b){var d=this.editor.graph;return{event:b,pageVisible:d.pageVisible,translate:d.view.translate,bounds:d.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:d.view.scale,page:d.view.getBackgroundPageBounds()}};EditorUi.prototype.sendEmbeddedSvgExport=function(b){var d=this.editor.graph;
d.isEditing()&&d.stopEditing(!d.isInvokesStopCellEditing());var c=window.opener||window.parent;if(this.editor.modified){var e=d.background;if(null==e||e==mxConstants.NONE)e=this.embedExportBackground;this.getEmbeddedSvg(this.getFileData(!0,null,null,null,null,null,null,null,null,!1),d,null,!0,mxUtils.bind(this,function(d){c.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=b?!b:!0,data:Editor.createSvgDataUri(d)}),"*")}),null,null,!0,e,1,this.embedExportBorder)}else b||
-c.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");b||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,d.model.clear(),this.editor.undoManager.clear(),this.setBackgroundImage(null),this.editor.modified=!1,this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(b){var d=null,c=!1,e=!1,g=null,k=mxUtils.bind(this,function(b,d){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&
-this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE,k);mxEvent.addListener(window,"message",mxUtils.bind(this,function(f){if(f.source==(window.opener||window.parent)){var k=f.data,l=null,m=mxUtils.bind(this,function(b){if(null!=b&&"function"===typeof b.charAt&&"<"!=b.charAt(0))try{Editor.isPngDataUrl(b)?b=Editor.extractGraphModelFromPng(b):"data:image/svg+xml;base64,"==b.substring(0,26)?b=atob(b.substring(26)):
+c.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");b||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,d.model.clear(),this.editor.undoManager.clear(),this.setBackgroundImage(null),this.editor.modified=!1,this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(b){var d=null,c=!1,e=!1,f=null,k=mxUtils.bind(this,function(b,d){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&
+this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE,k);mxEvent.addListener(window,"message",mxUtils.bind(this,function(g){if(g.source==(window.opener||window.parent)){var k=g.data,l=null,m=mxUtils.bind(this,function(b){if(null!=b&&"function"===typeof b.charAt&&"<"!=b.charAt(0))try{Editor.isPngDataUrl(b)?b=Editor.extractGraphModelFromPng(b):"data:image/svg+xml;base64,"==b.substring(0,26)?b=atob(b.substring(26)):
"data:image/svg+xml;utf8,"==b.substring(0,24)&&(b=b.substring(24)),null!=b&&("%"==b.charAt(0)?b=decodeURIComponent(b):"<"!=b.charAt(0)&&(b=Graph.decompress(b)))}catch(ra){}return b});if("json"==urlParams.proto){var n=!1;try{k=JSON.parse(k)}catch(ka){k=null}try{if(null==k)return;if("dialog"==k.action){this.showError(null!=k.titleKey?mxResources.get(k.titleKey):k.title,null!=k.messageKey?mxResources.get(k.messageKey):k.message,null!=k.buttonKey?mxResources.get(k.buttonKey):k.button);null!=k.modified&&
(this.editor.modified=k.modified);return}if("layout"==k.action){this.executeLayoutList(k.layouts);return}if("prompt"==k.action){this.spinner.stop();var q=new FilenameDialog(this,k.defaultValue||"",null!=k.okKey?mxResources.get(k.okKey):k.ok,function(b){null!=b?p.postMessage(JSON.stringify({event:"prompt",value:b,message:k}),"*"):p.postMessage(JSON.stringify({event:"prompt-cancel",message:k}),"*")},null!=k.titleKey?mxResources.get(k.titleKey):k.title);this.showDialog(q.container,300,80,!0,!1);q.init();
return}if("draft"==k.action){var t=m(k.xml);this.spinner.stop();q=new DraftDialog(this,mxResources.get("draftFound",[k.name||this.defaultFilename]),t,mxUtils.bind(this,function(){this.hideDialog();p.postMessage(JSON.stringify({event:"draft",result:"edit",message:k}),"*")}),mxUtils.bind(this,function(){this.hideDialog();p.postMessage(JSON.stringify({event:"draft",result:"discard",message:k}),"*")}),k.editKey?mxResources.get(k.editKey):null,k.discardKey?mxResources.get(k.discardKey):null,k.ignore?mxUtils.bind(this,
function(){this.hideDialog();p.postMessage(JSON.stringify({event:"draft",result:"ignore",message:k}),"*")}):null);this.showDialog(q.container,640,480,!0,!1,mxUtils.bind(this,function(b){b&&this.actions.get("exit").funct()}));try{q.init()}catch(ka){p.postMessage(JSON.stringify({event:"draft",error:ka.toString(),message:k}),"*")}return}if("template"==k.action){this.spinner.stop();var u=1==k.enableRecent,v=1==k.enableSearch,C=1==k.enableCustomTemp;if("1"==urlParams.newTempDlg&&!k.templatesOnly&&null!=
k.callback){var y=this.getCurrentUser(),M=new TemplatesDialog(this,function(b,d,c){b=b||this.emptyDiagramXml;p.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:d,tempUrl:c.url,libs:c.libs,builtIn:null!=c.info&&null!=c.info.custContentId,message:k}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=y?y.id:null,u?mxUtils.bind(this,function(b,d,c){this.remoteInvoke("getRecentDiagrams",[c],null,b,d)}):null,v?mxUtils.bind(this,function(b,
-d,c,e){this.remoteInvoke("searchDiagrams",[b,e],null,d,c)}):null,mxUtils.bind(this,function(b,d,c){this.remoteInvoke("getFileContent",[b.url],null,d,c)}),null,C?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},0)})}):null,!1,!1,!0,!0);this.showDialog(M.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}q=new NewDialog(this,!1,k.templatesOnly?!1:null!=k.callback,mxUtils.bind(this,function(d,c,e,g){d=d||this.emptyDiagramXml;null!=
-k.callback?p.postMessage(JSON.stringify({event:"template",xml:d,blank:d==this.emptyDiagramXml,name:c,tempUrl:e,libs:g,builtIn:!0,message:k}),"*"):(b(d,f,d!=this.emptyDiagramXml,k.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,u?mxUtils.bind(this,function(b){this.remoteInvoke("getRecentDiagrams",[null],null,b,function(){b(null,"Network Error!")})}):null,v?mxUtils.bind(this,function(b,d){this.remoteInvoke("searchDiagrams",[b,null],null,d,function(){d(null,
-"Network Error!")})}):null,mxUtils.bind(this,function(b,d,c){p.postMessage(JSON.stringify({event:"template",docUrl:b,info:d,name:c}),"*")}),null,null,C?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},0)})}):null,1==k.withoutType);this.showDialog(q.container,620,460,!0,!1,mxUtils.bind(this,function(b){this.sidebar.hideTooltip();b&&this.actions.get("exit").funct()}));q.init();return}if("textContent"==k.action){var aa=this.getDiagramTextContent();p.postMessage(JSON.stringify({event:"textContent",
-data:aa,message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):null!=k.message&&this.editor.setStatus(mxUtils.htmlEntities(k.message));null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var N=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body,N):this.spinner.stop();return}if("exit"==k.action){this.actions.get("exit").funct();
+d,c,e){this.remoteInvoke("searchDiagrams",[b,e],null,d,c)}):null,mxUtils.bind(this,function(b,d,c){this.remoteInvoke("getFileContent",[b.url],null,d,c)}),null,C?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},0)})}):null,!1,!1,!0,!0);this.showDialog(M.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}q=new NewDialog(this,!1,k.templatesOnly?!1:null!=k.callback,mxUtils.bind(this,function(d,c,e,f){d=d||this.emptyDiagramXml;null!=
+k.callback?p.postMessage(JSON.stringify({event:"template",xml:d,blank:d==this.emptyDiagramXml,name:c,tempUrl:e,libs:f,builtIn:!0,message:k}),"*"):(b(d,g,d!=this.emptyDiagramXml,k.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,u?mxUtils.bind(this,function(b){this.remoteInvoke("getRecentDiagrams",[null],null,b,function(){b(null,"Network Error!")})}):null,v?mxUtils.bind(this,function(b,d){this.remoteInvoke("searchDiagrams",[b,null],null,d,function(){d(null,
+"Network Error!")})}):null,mxUtils.bind(this,function(b,d,c){p.postMessage(JSON.stringify({event:"template",docUrl:b,info:d,name:c}),"*")}),null,null,C?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},0)})}):null,1==k.withoutType);this.showDialog(q.container,620,460,!0,!1,mxUtils.bind(this,function(b){this.sidebar.hideTooltip();b&&this.actions.get("exit").funct()}));q.init();return}if("textContent"==k.action){var Z=this.getDiagramTextContent();p.postMessage(JSON.stringify({event:"textContent",
+data:Z,message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):null!=k.message&&this.editor.setStatus(mxUtils.htmlEntities(k.message));null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var L=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body,L):this.spinner.stop();return}if("exit"==k.action){this.actions.get("exit").funct();
return}if("viewport"==k.action){null!=k.viewport&&(this.embedViewport=k.viewport);return}if("snapshot"==k.action){this.sendEmbeddedSvgExport(!0);return}if("export"==k.action){if("png"==k.format||"xmlpng"==k.format){if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var O=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var U=this.editor.graph,G=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();
-var d=this.createLoadMessage("export");d.format=k.format;d.message=k;d.data=b;d.xml=O;p.postMessage(JSON.stringify(d),"*")}),I=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==k.format&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(O)));U!=this.editor.graph&&U.container.parentNode.removeChild(U.container);G(b)}),A=k.pageId||(null!=this.pages?k.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var Y=mxUtils.bind(this,
-function(){if(null!=this.pages&&this.currentPage.getId()!=A){var b=U.getGlobalVariable;U=this.createTemporaryGraph(U.getStylesheet());for(var d,c=0;c<this.pages.length;c++)if(this.pages[c].getId()==A){d=this.updatePageRoot(this.pages[c]);break}null==d&&(d=this.currentPage);U.getGlobalVariable=function(c){return"page"==c?d.getName():"pagenumber"==c?1:b.apply(this,arguments)};document.body.appendChild(U.container);U.model.setRoot(d.root)}if(null!=k.layerIds){for(var e=U.model,f=e.getChildCells(e.getRoot()),
-g={},c=0;c<k.layerIds.length;c++)g[k.layerIds[c]]=!0;for(c=0;c<f.length;c++)e.setVisible(f[c],g[f[c].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){I(b.toDataURL("image/png"))}),k.width,null,k.background,mxUtils.bind(this,function(){I(null)}),null,null,k.scale,k.transparent,k.shadow,null,U,k.border,null,k.grid,k.keepTheme)});null!=k.xml&&0<k.xml.length?(c=!0,this.setFileData(O),c=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(Y)},0):Y()):
-Y()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=A?"&pageId="+A:"")+(null!=k.layerIds&&0<k.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(O))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?G("data:image/png;base64,"+b.getText()):I(null)}),mxUtils.bind(this,function(){I(null)}))}}else Y=mxUtils.bind(this,function(){var b=
+var d=this.createLoadMessage("export");d.format=k.format;d.message=k;d.data=b;d.xml=O;p.postMessage(JSON.stringify(d),"*")}),I=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==k.format&&(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(O)));U!=this.editor.graph&&U.container.parentNode.removeChild(U.container);G(b)}),B=k.pageId||(null!=this.pages?k.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var ca=mxUtils.bind(this,
+function(){if(null!=this.pages&&this.currentPage.getId()!=B){var b=U.getGlobalVariable;U=this.createTemporaryGraph(U.getStylesheet());for(var d,c=0;c<this.pages.length;c++)if(this.pages[c].getId()==B){d=this.updatePageRoot(this.pages[c]);break}null==d&&(d=this.currentPage);U.getGlobalVariable=function(c){return"page"==c?d.getName():"pagenumber"==c?1:b.apply(this,arguments)};document.body.appendChild(U.container);U.model.setRoot(d.root)}if(null!=k.layerIds){for(var e=U.model,g=e.getChildCells(e.getRoot()),
+f={},c=0;c<k.layerIds.length;c++)f[k.layerIds[c]]=!0;for(c=0;c<g.length;c++)e.setVisible(g[c],f[g[c].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){I(b.toDataURL("image/png"))}),k.width,null,k.background,mxUtils.bind(this,function(){I(null)}),null,null,k.scale,k.transparent,k.shadow,null,U,k.border,null,k.grid,k.keepTheme)});null!=k.xml&&0<k.xml.length?(c=!0,this.setFileData(O),c=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(ca)},0):ca()):
+ca()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=B?"&pageId="+B:"")+(null!=k.layerIds&&0<k.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(O))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?G("data:image/png;base64,"+b.getText()):I(null)}),mxUtils.bind(this,function(){I(null)}))}}else ca=mxUtils.bind(this,function(){var b=
this.createLoadMessage("export");b.message=k;if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var d=this.getXmlFileData();b.xml=mxUtils.getXml(d);b.data=this.getFileData(null,null,!0,null,null,null,d);b.format=k.format}else if("html"==k.format)d=this.editor.getGraphXml(),b.data=this.getHtml(d,this.editor.graph),b.xml=mxUtils.getXml(d),b.format=k.format;else{mxSvgCanvas2D.prototype.foAltText=null;d=null!=k.background?k.background:this.editor.graph.background;
d==mxConstants.NONE&&(d=null);b.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);b.format="svg";var c=mxUtils.bind(this,function(d){this.editor.graph.setEnabled(!0);this.spinner.stop();b.data=Editor.createSvgDataUri(d);p.postMessage(JSON.stringify(b),"*")});if("xmlsvg"==k.format)(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))&&this.getEmbeddedSvg(b.xml,this.editor.graph,null,!0,c,null,null,k.embedImages,d,k.scale,
k.border,k.shadow,k.keepTheme);else if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))this.editor.graph.setEnabled(!1),d=this.editor.graph.getSvg(d,k.scale,k.border,null,null,null,null,null,null,this.editor.graph.shadowVisible||k.shadow,null,k.keepTheme),(this.editor.graph.shadowVisible||k.shadow)&&this.editor.graph.addSvgShadow(d),this.embedFonts(d,mxUtils.bind(this,function(b){k.embedImages||null==k.embedImages?this.editor.convertImages(b,
-mxUtils.bind(this,function(b){c(mxUtils.getXml(b))})):c(mxUtils.getXml(b))}));return}p.postMessage(JSON.stringify(b),"*")}),null!=k.xml&&0<k.xml.length?(c=!0,this.setFileData(k.xml),c=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(Y)},0):Y()):Y();return}if("load"==k.action){n=k.toSketch;e=1==k.autosave;this.hideDialog();null!=k.modified&&null==urlParams.modified&&(urlParams.modified=k.modified);null!=k.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=
+mxUtils.bind(this,function(b){c(mxUtils.getXml(b))})):c(mxUtils.getXml(b))}));return}p.postMessage(JSON.stringify(b),"*")}),null!=k.xml&&0<k.xml.length?(c=!0,this.setFileData(k.xml),c=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(ca)},0):ca()):ca();return}if("load"==k.action){n=k.toSketch;e=1==k.autosave;this.hideDialog();null!=k.modified&&null==urlParams.modified&&(urlParams.modified=k.modified);null!=k.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=
k.saveAndExit);null!=k.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=k.noSaveBtn);if(null!=k.rough){var S=Editor.sketchMode;this.doSetSketchMode(k.rough);S!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=k.dark&&(S=Editor.darkMode,this.doSetDarkMode(k.dark),S!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));null!=k.border&&(this.embedExportBorder=k.border);null!=k.background&&(this.embedExportBackground=k.background);null!=k.viewport&&
(this.embedViewport=k.viewport);this.embedExitPoint=null;if(null!=k.rect){var Q=this.embedExportBorder;this.diagramContainer.style.border="2px solid #295fcc";this.diagramContainer.style.top=k.rect.top+"px";this.diagramContainer.style.left=k.rect.left+"px";this.diagramContainer.style.height=k.rect.height+"px";this.diagramContainer.style.width=k.rect.width+"px";this.diagramContainer.style.bottom="";this.diagramContainer.style.right="";l=mxUtils.bind(this,function(){var b=this.editor.graph,d=b.maxFitScale;
b.maxFitScale=k.maxFitScale;b.fit(2*Q);b.maxFitScale=d;b.container.scrollTop-=2*Q;b.container.scrollLeft-=2*Q;this.fireEvent(new mxEventObject("editInlineStart","data",[k]))})}null!=k.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=k.noExitBtn);null!=k.title&&null!=this.buttonContainer&&(t=document.createElement("span"),mxUtils.write(t,k.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(t),this.embedFilenameSpan=
t);try{k.libs&&this.sidebar.showEntries(k.libs)}catch(ka){}k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):null!=k.descriptor?k.descriptor:k.xml}else{if("merge"==k.action){var V=this.getCurrentFile();null!=V&&(t=m(k.xml),null!=t&&""!=t&&V.mergeFile(new LocalFile(this,t),function(){p.postMessage(JSON.stringify({event:"merge",message:k}),"*")},function(b){p.postMessage(JSON.stringify({event:"merge",message:k,error:b}),"*")}))}else"remoteInvokeReady"==k.action?this.handleRemoteInvokeReady(p):
-"remoteInvoke"==k.action?this.handleRemoteInvoke(k,f.origin):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):p.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}catch(ka){this.handleError(ka)}}var oa=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),fa=mxUtils.bind(this,function(f,k){c=!0;try{b(f,k,null,n)}catch(ja){this.handleError(ja)}c=
-!1;null!=urlParams.modified&&this.editor.setStatus("");g=oa();e&&null==d&&(d=mxUtils.bind(this,function(b,d){var e=oa();if(e!=g&&!c){var f=this.createLoadMessage("autosave");f.xml=e;(window.opener||window.parent).postMessage(JSON.stringify(f),"*")}g=e}),this.editor.graph.model.addListener(mxEvent.CHANGE,d),this.editor.graph.addListener("gridSizeChanged",d),this.editor.graph.addListener("shadowVisibleChanged",d),this.addListener("pageFormatChanged",d),this.addListener("pageScaleChanged",d),this.addListener("backgroundColorChanged",
-d),this.addListener("backgroundImageChanged",d),this.addListener("foldingEnabledChanged",d),this.addListener("mathEnabledChanged",d),this.addListener("gridEnabledChanged",d),this.addListener("guidesEnabledChanged",d),this.addListener("pageViewChanged",d));if("1"==urlParams.returnbounds||"json"==urlParams.proto){var m=this.createLoadMessage("load");m.xml=f;p.postMessage(JSON.stringify(m),"*")}null!=l&&l()});null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,
-34)?(m="0M8R4KGxGuE"==k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+1)),function(b){fa(b,f)},mxUtils.bind(this,function(b){this.handleError(b)}),m)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFile(new Blob([k],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,
-13)&&fa(b.responseText,f)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k,mxUtils.bind(this,function(b){fa(b)}),mxUtils.bind(this,function(b){this.handleError(b)})):null==k||"object"!==typeof k||null==k.format||null==k.data&&null==k.url?(k=m(k),fa(k,f)):this.loadDescriptor(k,mxUtils.bind(this,function(b){fa(oa(),f)}),mxUtils.bind(this,function(b){this.handleError(b,mxResources.get("errorLoadingFile"))}))}}));var p=window.opener||window.parent,k="json"==
+"remoteInvoke"==k.action?this.handleRemoteInvoke(k,g.origin):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):p.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}catch(ka){this.handleError(ka)}}var oa=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),fa=mxUtils.bind(this,function(g,k){c=!0;try{b(g,k,null,n)}catch(ja){this.handleError(ja)}c=
+!1;null!=urlParams.modified&&this.editor.setStatus("");f=oa();e&&null==d&&(d=mxUtils.bind(this,function(b,d){var e=oa();if(e!=f&&!c){var g=this.createLoadMessage("autosave");g.xml=e;(window.opener||window.parent).postMessage(JSON.stringify(g),"*")}f=e}),this.editor.graph.model.addListener(mxEvent.CHANGE,d),this.editor.graph.addListener("gridSizeChanged",d),this.editor.graph.addListener("shadowVisibleChanged",d),this.addListener("pageFormatChanged",d),this.addListener("pageScaleChanged",d),this.addListener("backgroundColorChanged",
+d),this.addListener("backgroundImageChanged",d),this.addListener("foldingEnabledChanged",d),this.addListener("mathEnabledChanged",d),this.addListener("gridEnabledChanged",d),this.addListener("guidesEnabledChanged",d),this.addListener("pageViewChanged",d));if("1"==urlParams.returnbounds||"json"==urlParams.proto){var m=this.createLoadMessage("load");m.xml=g;p.postMessage(JSON.stringify(m),"*")}null!=l&&l()});null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,
+34)?(m="0M8R4KGxGuE"==k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+1)),function(b){fa(b,g)},mxUtils.bind(this,function(b){this.handleError(b)}),m)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFile(new Blob([k],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,
+13)&&fa(b.responseText,g)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k,mxUtils.bind(this,function(b){fa(b)}),mxUtils.bind(this,function(b){this.handleError(b)})):null==k||"object"!==typeof k||null==k.format||null==k.data&&null==k.url?(k=m(k),fa(k,g)):this.loadDescriptor(k,mxUtils.bind(this,function(b){fa(oa(),g)}),mxUtils.bind(this,function(b){this.handleError(b,mxResources.get("errorLoadingFile"))}))}}));var p=window.opener||window.parent,k="json"==
urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";p.postMessage(k,"*");if("json"==urlParams.proto){var t=this.editor.graph.openLink;this.editor.graph.openLink=function(b,d,c){t.apply(this,arguments);p.postMessage(JSON.stringify({event:"openLink",href:b,target:d,allowOpener:c}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var b=document.createElement("div");b.style.display="inline-block";b.style.position="absolute";b.style.paddingTop=
-"atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";b.style.paddingLeft="8px";b.style.paddingBottom="2px";var c=document.createElement("button");c.className="geBigButton";var e=c;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var g="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(c,g);c.setAttribute("title",g);mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));b.appendChild(c)}}else mxUtils.write(c,
+"atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";b.style.paddingLeft="8px";b.style.paddingBottom="2px";var c=document.createElement("button");c.className="geBigButton";var e=c;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var f="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(c,f);c.setAttribute("title",f);mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));b.appendChild(c)}}else mxUtils.write(c,
mxResources.get("save")),c.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),b.appendChild(c),"1"==urlParams.saveAndExit&&(c=document.createElement("a"),mxUtils.write(c,mxResources.get("saveAndExit")),c.setAttribute("title",mxResources.get("saveAndExit")),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),
b.appendChild(c),e=c);"1"!=urlParams.noExitBtn&&(c=document.createElement("a"),e="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(c,e),c.setAttribute("title",e),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),b.appendChild(c),e=c);e.style.marginRight="20px";this.toolbar.container.appendChild(b);this.toolbar.staticElements.push(b);b.style.right=
"atlas"==uiTheme||"1"==urlParams.atlas?"42px":"52px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(b){this.importCsv(b)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};
-EditorUi.prototype.executeLayoutList=function(b,c){for(var d=this.editor.graph,e=d.getSelectionCells(),f=0;f<b.length;f++){var g=new window[b[f].layout](d);if(null!=b[f].config)for(var k in b[f].config)g[k]=b[f].config[k];this.executeLayout(function(){g.execute(d.getDefaultParent(),0==e.length?null:e)},f==b.length-1,c)}};EditorUi.prototype.importCsv=function(b,c){try{var d=b.split("\n"),e=[],f=[],g=[],k={};if(0<d.length){var p={},t=null,x=null,F=null,H=null,z=null,D=null,L="whiteSpace=wrap;html=1;",
-E=null,J=null,C="",K="auto",M="auto",aa=null,N=null,O=40,U=40,G=100,I=0,A=this.editor.graph;A.getGraphBounds();for(var Y=function(){null!=c?c(pa):(A.setSelectionCells(pa),A.scrollCellToVisible(A.getSelectionCell()))},S=A.getFreeInsertPoint(),Q=S.x,V=S.y,S=V,oa=null,fa="auto",J=null,ka=[],ra=null,la=null,ja=0;ja<d.length&&"#"==d[ja].charAt(0);){b=d[ja];for(ja++;ja<d.length&&"\\"==b.charAt(b.length-1)&&"#"==d[ja].charAt(0);)b=b.substring(0,b.length-1)+mxUtils.trim(d[ja].substring(1)),ja++;if("#"!=b.charAt(1)){var ba=
-b.indexOf(":");if(0<ba){var ca=mxUtils.trim(b.substring(1,ba)),R=mxUtils.trim(b.substring(ba+1));"label"==ca?oa=A.sanitizeHtml(R):"labelname"==ca&&0<R.length&&"-"!=R?z=R:"labels"==ca&&0<R.length&&"-"!=R?D=JSON.parse(R):"style"==ca?x=R:"parentstyle"==ca?L=R:"stylename"==ca&&0<R.length&&"-"!=R?H=R:"styles"==ca&&0<R.length&&"-"!=R?F=JSON.parse(R):"vars"==ca&&0<R.length&&"-"!=R?t=JSON.parse(R):"identity"==ca&&0<R.length&&"-"!=R?E=R:"parent"==ca&&0<R.length&&"-"!=R?J=R:"namespace"==ca&&0<R.length&&"-"!=
-R?C=R:"width"==ca?K=R:"height"==ca?M=R:"left"==ca&&0<R.length?aa=R:"top"==ca&&0<R.length?N=R:"ignore"==ca?la=R.split(","):"connect"==ca?ka.push(JSON.parse(R)):"link"==ca?ra=R:"padding"==ca?I=parseFloat(R):"edgespacing"==ca?O=parseFloat(R):"nodespacing"==ca?U=parseFloat(R):"levelspacing"==ca?G=parseFloat(R):"layout"==ca&&(fa=R)}}}if(null==d[ja])throw Error(mxResources.get("invalidOrMissingFile"));for(var sa=this.editor.csvToArray(d[ja]),ca=ba=null,R=[],W=0;W<sa.length;W++)E==sa[W]&&(ba=W),J==sa[W]&&
-(ca=W),R.push(mxUtils.trim(sa[W]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==oa&&(oa="%"+R[0]+"%");if(null!=ka)for(var X=0;X<ka.length;X++)null==p[ka[X].to]&&(p[ka[X].to]={});E=[];for(W=ja+1;W<d.length;W++){var ma=this.editor.csvToArray(d[W]);if(null==ma){var qa=40<d[W].length?d[W].substring(0,40)+"...":d[W];throw Error(qa+" ("+W+"):\n"+mxResources.get("containsValidationErrors"));}0<ma.length&&E.push(ma)}A.model.beginUpdate();try{for(W=0;W<E.length;W++){var ma=E[W],T=
-null,ia=null!=ba?C+ma[ba]:null;null!=ia&&(T=A.model.getCell(ia));var d=null!=T,da=new mxCell(oa,new mxGeometry(Q,S,0,0),x||"whiteSpace=wrap;html=1;");da.vertex=!0;da.id=ia;for(var na=0;na<ma.length;na++)A.setAttributeForCell(da,R[na],ma[na]);if(null!=z&&null!=D){var ha=D[da.getAttribute(z)];null!=ha&&A.labelChanged(da,ha)}if(null!=H&&null!=F){var ua=F[da.getAttribute(H)];null!=ua&&(da.style=ua)}A.setAttributeForCell(da,"placeholders","1");da.style=A.replacePlaceholders(da,da.style,t);d?(A.model.setValue(T,
-da.value),A.model.setStyle(T,da.style),0>mxUtils.indexOf(g,T)&&g.push(T),A.fireEvent(new mxEventObject("cellsInserted","cells",[T]))):A.fireEvent(new mxEventObject("cellsInserted","cells",[da]));T=da;if(!d)for(X=0;X<ka.length;X++)p[ka[X].to][T.getAttribute(ka[X].to)]=T;null!=ra&&"link"!=ra&&(A.setLinkForCell(T,T.getAttribute(ra)),A.setAttributeForCell(T,ra,null));var P=this.editor.graph.getPreferredSizeForCell(T),J=null!=ca?A.model.getCell(C+ma[ca]):null;if(T.vertex){qa=null!=J?0:Q;ja=null!=J?0:V;
-null!=aa&&null!=T.getAttribute(aa)&&(T.geometry.x=qa+parseFloat(T.getAttribute(aa)));null!=N&&null!=T.getAttribute(N)&&(T.geometry.y=ja+parseFloat(T.getAttribute(N)));var ea="@"==K.charAt(0)?T.getAttribute(K.substring(1)):null;T.geometry.width=null!=ea&&"auto"!=ea?parseFloat(T.getAttribute(K.substring(1))):"auto"==K||"auto"==ea?P.width+I:parseFloat(K);var ta="@"==M.charAt(0)?T.getAttribute(M.substring(1)):null;T.geometry.height=null!=ta&&"auto"!=ta?parseFloat(ta):"auto"==M||"auto"==ta?P.height+I:
-parseFloat(M);S+=T.geometry.height+U}d?(null==k[ia]&&(k[ia]=[]),k[ia].push(T)):(e.push(T),null!=J?(J.style=A.replacePlaceholders(J,L,t),A.addCell(T,J),f.push(J)):g.push(A.addCell(T)))}for(W=0;W<f.length;W++)ea="@"==K.charAt(0)?f[W].getAttribute(K.substring(1)):null,ta="@"==M.charAt(0)?f[W].getAttribute(M.substring(1)):null,"auto"!=K&&"auto"!=ea||"auto"!=M&&"auto"!=ta||A.updateGroupBounds([f[W]],I,!0);for(var ya=g.slice(),pa=g.slice(),X=0;X<ka.length;X++)for(var xa=ka[X],W=0;W<e.length;W++){var T=
-e[W],za=mxUtils.bind(this,function(b,d,c){var e=d.getAttribute(c.from);if(null!=e&&""!=e)for(var e=e.split(","),f=0;f<e.length;f++){var g=p[c.to][e[f]];if(null!=g){var k=c.label;null!=c.fromlabel&&(k=(d.getAttribute(c.fromlabel)||"")+(k||""));null!=c.sourcelabel&&(k=A.replacePlaceholders(d,c.sourcelabel,t)+(k||""));null!=c.tolabel&&(k=(k||"")+(g.getAttribute(c.tolabel)||""));null!=c.targetlabel&&(k=(k||"")+A.replacePlaceholders(g,c.targetlabel,t));var l="target"==c.placeholders==!c.invert?g:b,l=null!=
-c.style?A.replacePlaceholders(l,c.style,t):A.createCurrentEdgeStyle(),k=A.insertEdge(null,null,k||"",c.invert?g:b,c.invert?b:g,l);if(null!=c.labels)for(l=0;l<c.labels.length;l++){var m=c.labels[l],n=new mxCell(m.label||l,new mxGeometry(null!=m.x?m.x:0,null!=m.y?m.y:0,0,0),"resizable=0;html=1;");n.vertex=!0;n.connectable=!1;n.geometry.relative=!0;null!=m.placeholders&&(n.value=A.replacePlaceholders("target"==m.placeholders==!c.invert?g:b,n.value,t));if(null!=m.dx||null!=m.dy)n.geometry.offset=new mxPoint(null!=
-m.dx?m.dx:0,null!=m.dy?m.dy:0);k.insert(n)}pa.push(k);mxUtils.remove(c.invert?b:g,ya)}}});za(T,T,xa);if(null!=k[T.id])for(na=0;na<k[T.id].length;na++)za(T,k[T.id][na],xa)}if(null!=la)for(W=0;W<e.length;W++)for(T=e[W],na=0;na<la.length;na++)A.setAttributeForCell(T,mxUtils.trim(la[na]),null);if(0<g.length){var Ba=new mxParallelEdgeLayout(A);Ba.spacing=O;Ba.checkOverlap=!0;var Ea=function(){0<Ba.spacing&&Ba.execute(A.getDefaultParent());for(var b=0;b<g.length;b++){var d=A.getCellGeometry(g[b]);d.x=Math.round(A.snap(d.x));
-d.y=Math.round(A.snap(d.y));"auto"==K&&(d.width=Math.round(A.snap(d.width)));"auto"==M&&(d.height=Math.round(A.snap(d.height)))}};if("["==fa.charAt(0)){var Ja=Y;A.view.validate();this.executeLayoutList(JSON.parse(fa),function(){Ea();Ja()});Y=null}else if("circle"==fa){var Aa=new mxCircleLayout(A);Aa.disableEdgeStyle=!1;Aa.resetEdges=!1;var Ka=Aa.isVertexIgnored;Aa.isVertexIgnored=function(b){return Ka.apply(this,arguments)||0>mxUtils.indexOf(g,b)};this.executeLayout(function(){Aa.execute(A.getDefaultParent());
-Ea()},!0,Y);Y=null}else if("horizontaltree"==fa||"verticaltree"==fa||"auto"==fa&&pa.length==2*g.length-1&&1==ya.length){A.view.validate();var Ca=new mxCompactTreeLayout(A,"horizontaltree"==fa);Ca.levelDistance=U;Ca.edgeRouting=!1;Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(A.getDefaultParent(),0<ya.length?ya[0]:null)},!0,Y);Y=null}else if("horizontalflow"==fa||"verticalflow"==fa||"auto"==fa&&1==ya.length){A.view.validate();var wa=new mxHierarchicalLayout(A,"horizontalflow"==fa?mxConstants.DIRECTION_WEST:
-mxConstants.DIRECTION_NORTH);wa.intraCellSpacing=U;wa.parallelEdgeSpacing=O;wa.interRankCellSpacing=G;wa.disableEdgeStyle=!1;this.executeLayout(function(){wa.execute(A.getDefaultParent(),pa);A.moveCells(pa,Q,V)},!0,Y);Y=null}else if("organic"==fa||"auto"==fa&&pa.length>g.length){A.view.validate();var Z=new mxFastOrganicLayout(A);Z.forceConstant=3*U;Z.disableEdgeStyle=!1;Z.resetEdges=!1;var Fa=Z.isVertexIgnored;Z.isVertexIgnored=function(b){return Fa.apply(this,arguments)||0>mxUtils.indexOf(g,b)};
-this.executeLayout(function(){Z.execute(A.getDefaultParent());Ea()},!0,Y);Y=null}}this.hideDialog()}finally{A.model.endUpdate()}null!=Y&&Y()}}catch(Na){this.handleError(Na)}};EditorUi.prototype.getSearch=function(b){var d="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=b&&0<window.location.search.length){var c="?",e;for(e in urlParams)0>mxUtils.indexOf(b,e)&&null!=urlParams[e]&&(d+=c+e+"="+urlParams[e],c="&")}else d=window.location.search;return d};EditorUi.prototype.getUrl=function(b){b=
-null!=b?b:window.location.pathname;var d=0<b.indexOf("?")?1:0;if("1"==urlParams.offline)b+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),e;for(e in urlParams)0>mxUtils.indexOf(c,e)&&(b=0==d?b+"?":b+"&",null!=urlParams[e]&&(b+=e+"="+urlParams[e],d++))}return b};EditorUi.prototype.showLinkDialog=function(b,c,e,g,k){b=new LinkDialog(this,b,c,e,!0,g,k);this.showDialog(b.container,560,130,!0,!0);b.init()};EditorUi.prototype.getServiceCount=
-function(b){var d=1;null==this.drive&&"function"!==typeof window.DriveClient||d++;null==this.dropbox&&"function"!==typeof window.DropboxClient||d++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||d++;null!=this.gitHub&&d++;null!=this.gitLab&&d++;null!=this.notion&&d++;b&&isLocalStorage&&"1"==urlParams.browser&&d++;return d};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var b=this.getCurrentFile(),c=null!=b||"1"==urlParams.embed&&this.editor.graph.isEnabled();
+EditorUi.prototype.executeLayoutList=function(b,c){for(var d=this.editor.graph,e=d.getSelectionCells(),g=0;g<b.length;g++){var f=new window[b[g].layout](d);if(null!=b[g].config)for(var k in b[g].config)f[k]=b[g].config[k];this.executeLayout(function(){f.execute(d.getDefaultParent(),0==e.length?null:e)},g==b.length-1,c)}};EditorUi.prototype.importCsv=function(b,c){try{var d=b.split("\n"),e=[],g=[],f=[],k={};if(0<d.length){var p={},t=null,x=null,F=null,H=null,z=null,D=null,N="whiteSpace=wrap;html=1;",
+E=null,J=null,C="",K="auto",M="auto",Z=null,L=null,O=40,U=40,G=100,I=0,B=this.editor.graph;B.getGraphBounds();for(var ca=function(){null!=c?c(pa):(B.setSelectionCells(pa),B.scrollCellToVisible(B.getSelectionCell()))},S=B.getFreeInsertPoint(),Q=S.x,V=S.y,S=V,oa=null,fa="auto",J=null,ka=[],ra=null,la=null,ja=0;ja<d.length&&"#"==d[ja].charAt(0);){b=d[ja];for(ja++;ja<d.length&&"\\"==b.charAt(b.length-1)&&"#"==d[ja].charAt(0);)b=b.substring(0,b.length-1)+mxUtils.trim(d[ja].substring(1)),ja++;if("#"!=b.charAt(1)){var aa=
+b.indexOf(":");if(0<aa){var ba=mxUtils.trim(b.substring(1,aa)),R=mxUtils.trim(b.substring(aa+1));"label"==ba?oa=B.sanitizeHtml(R):"labelname"==ba&&0<R.length&&"-"!=R?z=R:"labels"==ba&&0<R.length&&"-"!=R?D=JSON.parse(R):"style"==ba?x=R:"parentstyle"==ba?N=R:"stylename"==ba&&0<R.length&&"-"!=R?H=R:"styles"==ba&&0<R.length&&"-"!=R?F=JSON.parse(R):"vars"==ba&&0<R.length&&"-"!=R?t=JSON.parse(R):"identity"==ba&&0<R.length&&"-"!=R?E=R:"parent"==ba&&0<R.length&&"-"!=R?J=R:"namespace"==ba&&0<R.length&&"-"!=
+R?C=R:"width"==ba?K=R:"height"==ba?M=R:"left"==ba&&0<R.length?Z=R:"top"==ba&&0<R.length?L=R:"ignore"==ba?la=R.split(","):"connect"==ba?ka.push(JSON.parse(R)):"link"==ba?ra=R:"padding"==ba?I=parseFloat(R):"edgespacing"==ba?O=parseFloat(R):"nodespacing"==ba?U=parseFloat(R):"levelspacing"==ba?G=parseFloat(R):"layout"==ba&&(fa=R)}}}if(null==d[ja])throw Error(mxResources.get("invalidOrMissingFile"));for(var sa=this.editor.csvToArray(d[ja]),ba=aa=null,R=[],W=0;W<sa.length;W++)E==sa[W]&&(aa=W),J==sa[W]&&
+(ba=W),R.push(mxUtils.trim(sa[W]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==oa&&(oa="%"+R[0]+"%");if(null!=ka)for(var X=0;X<ka.length;X++)null==p[ka[X].to]&&(p[ka[X].to]={});E=[];for(W=ja+1;W<d.length;W++){var ma=this.editor.csvToArray(d[W]);if(null==ma){var qa=40<d[W].length?d[W].substring(0,40)+"...":d[W];throw Error(qa+" ("+W+"):\n"+mxResources.get("containsValidationErrors"));}0<ma.length&&E.push(ma)}B.model.beginUpdate();try{for(W=0;W<E.length;W++){var ma=E[W],T=
+null,ia=null!=aa?C+ma[aa]:null;null!=ia&&(T=B.model.getCell(ia));var d=null!=T,da=new mxCell(oa,new mxGeometry(Q,S,0,0),x||"whiteSpace=wrap;html=1;");da.vertex=!0;da.id=ia;for(var na=0;na<ma.length;na++)B.setAttributeForCell(da,R[na],ma[na]);if(null!=z&&null!=D){var ha=D[da.getAttribute(z)];null!=ha&&B.labelChanged(da,ha)}if(null!=H&&null!=F){var ua=F[da.getAttribute(H)];null!=ua&&(da.style=ua)}B.setAttributeForCell(da,"placeholders","1");da.style=B.replacePlaceholders(da,da.style,t);d?(B.model.setValue(T,
+da.value),B.model.setStyle(T,da.style),0>mxUtils.indexOf(f,T)&&f.push(T),B.fireEvent(new mxEventObject("cellsInserted","cells",[T]))):B.fireEvent(new mxEventObject("cellsInserted","cells",[da]));T=da;if(!d)for(X=0;X<ka.length;X++)p[ka[X].to][T.getAttribute(ka[X].to)]=T;null!=ra&&"link"!=ra&&(B.setLinkForCell(T,T.getAttribute(ra)),B.setAttributeForCell(T,ra,null));var P=this.editor.graph.getPreferredSizeForCell(T),J=null!=ba?B.model.getCell(C+ma[ba]):null;if(T.vertex){qa=null!=J?0:Q;ja=null!=J?0:V;
+null!=Z&&null!=T.getAttribute(Z)&&(T.geometry.x=qa+parseFloat(T.getAttribute(Z)));null!=L&&null!=T.getAttribute(L)&&(T.geometry.y=ja+parseFloat(T.getAttribute(L)));var ea="@"==K.charAt(0)?T.getAttribute(K.substring(1)):null;T.geometry.width=null!=ea&&"auto"!=ea?parseFloat(T.getAttribute(K.substring(1))):"auto"==K||"auto"==ea?P.width+I:parseFloat(K);var ta="@"==M.charAt(0)?T.getAttribute(M.substring(1)):null;T.geometry.height=null!=ta&&"auto"!=ta?parseFloat(ta):"auto"==M||"auto"==ta?P.height+I:parseFloat(M);
+S+=T.geometry.height+U}d?(null==k[ia]&&(k[ia]=[]),k[ia].push(T)):(e.push(T),null!=J?(J.style=B.replacePlaceholders(J,N,t),B.addCell(T,J),g.push(J)):f.push(B.addCell(T)))}for(W=0;W<g.length;W++)ea="@"==K.charAt(0)?g[W].getAttribute(K.substring(1)):null,ta="@"==M.charAt(0)?g[W].getAttribute(M.substring(1)):null,"auto"!=K&&"auto"!=ea||"auto"!=M&&"auto"!=ta||B.updateGroupBounds([g[W]],I,!0);for(var ya=f.slice(),pa=f.slice(),X=0;X<ka.length;X++)for(var xa=ka[X],W=0;W<e.length;W++){var T=e[W],za=mxUtils.bind(this,
+function(b,c,d){var e=c.getAttribute(d.from);if(null!=e&&""!=e)for(var e=e.split(","),g=0;g<e.length;g++){var f=p[d.to][e[g]];if(null!=f){var k=d.label;null!=d.fromlabel&&(k=(c.getAttribute(d.fromlabel)||"")+(k||""));null!=d.sourcelabel&&(k=B.replacePlaceholders(c,d.sourcelabel,t)+(k||""));null!=d.tolabel&&(k=(k||"")+(f.getAttribute(d.tolabel)||""));null!=d.targetlabel&&(k=(k||"")+B.replacePlaceholders(f,d.targetlabel,t));var l="target"==d.placeholders==!d.invert?f:b,l=null!=d.style?B.replacePlaceholders(l,
+d.style,t):B.createCurrentEdgeStyle(),k=B.insertEdge(null,null,k||"",d.invert?f:b,d.invert?b:f,l);if(null!=d.labels)for(l=0;l<d.labels.length;l++){var m=d.labels[l],n=new mxCell(m.label||l,new mxGeometry(null!=m.x?m.x:0,null!=m.y?m.y:0,0,0),"resizable=0;html=1;");n.vertex=!0;n.connectable=!1;n.geometry.relative=!0;null!=m.placeholders&&(n.value=B.replacePlaceholders("target"==m.placeholders==!d.invert?f:b,n.value,t));if(null!=m.dx||null!=m.dy)n.geometry.offset=new mxPoint(null!=m.dx?m.dx:0,null!=
+m.dy?m.dy:0);k.insert(n)}pa.push(k);mxUtils.remove(d.invert?b:f,ya)}}});za(T,T,xa);if(null!=k[T.id])for(na=0;na<k[T.id].length;na++)za(T,k[T.id][na],xa)}if(null!=la)for(W=0;W<e.length;W++)for(T=e[W],na=0;na<la.length;na++)B.setAttributeForCell(T,mxUtils.trim(la[na]),null);if(0<f.length){var Ba=new mxParallelEdgeLayout(B);Ba.spacing=O;Ba.checkOverlap=!0;var Ea=function(){0<Ba.spacing&&Ba.execute(B.getDefaultParent());for(var b=0;b<f.length;b++){var d=B.getCellGeometry(f[b]);d.x=Math.round(B.snap(d.x));
+d.y=Math.round(B.snap(d.y));"auto"==K&&(d.width=Math.round(B.snap(d.width)));"auto"==M&&(d.height=Math.round(B.snap(d.height)))}};if("["==fa.charAt(0)){var Ja=ca;B.view.validate();this.executeLayoutList(JSON.parse(fa),function(){Ea();Ja()});ca=null}else if("circle"==fa){var Aa=new mxCircleLayout(B);Aa.disableEdgeStyle=!1;Aa.resetEdges=!1;var Ka=Aa.isVertexIgnored;Aa.isVertexIgnored=function(b){return Ka.apply(this,arguments)||0>mxUtils.indexOf(f,b)};this.executeLayout(function(){Aa.execute(B.getDefaultParent());
+Ea()},!0,ca);ca=null}else if("horizontaltree"==fa||"verticaltree"==fa||"auto"==fa&&pa.length==2*f.length-1&&1==ya.length){B.view.validate();var Ca=new mxCompactTreeLayout(B,"horizontaltree"==fa);Ca.levelDistance=U;Ca.edgeRouting=!1;Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(B.getDefaultParent(),0<ya.length?ya[0]:null)},!0,ca);ca=null}else if("horizontalflow"==fa||"verticalflow"==fa||"auto"==fa&&1==ya.length){B.view.validate();var wa=new mxHierarchicalLayout(B,"horizontalflow"==fa?mxConstants.DIRECTION_WEST:
+mxConstants.DIRECTION_NORTH);wa.intraCellSpacing=U;wa.parallelEdgeSpacing=O;wa.interRankCellSpacing=G;wa.disableEdgeStyle=!1;this.executeLayout(function(){wa.execute(B.getDefaultParent(),pa);B.moveCells(pa,Q,V)},!0,ca);ca=null}else if("organic"==fa||"auto"==fa&&pa.length>f.length){B.view.validate();var Y=new mxFastOrganicLayout(B);Y.forceConstant=3*U;Y.disableEdgeStyle=!1;Y.resetEdges=!1;var Fa=Y.isVertexIgnored;Y.isVertexIgnored=function(b){return Fa.apply(this,arguments)||0>mxUtils.indexOf(f,b)};
+this.executeLayout(function(){Y.execute(B.getDefaultParent());Ea()},!0,ca);ca=null}}this.hideDialog()}finally{B.model.endUpdate()}null!=ca&&ca()}}catch(Na){this.handleError(Na)}};EditorUi.prototype.getSearch=function(b){var d="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=b&&0<window.location.search.length){var c="?",e;for(e in urlParams)0>mxUtils.indexOf(b,e)&&null!=urlParams[e]&&(d+=c+e+"="+urlParams[e],c="&")}else d=window.location.search;return d};EditorUi.prototype.getUrl=function(b){b=
+null!=b?b:window.location.pathname;var d=0<b.indexOf("?")?1:0;if("1"==urlParams.offline)b+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),e;for(e in urlParams)0>mxUtils.indexOf(c,e)&&(b=0==d?b+"?":b+"&",null!=urlParams[e]&&(b+=e+"="+urlParams[e],d++))}return b};EditorUi.prototype.showLinkDialog=function(b,c,e,f,k){b=new LinkDialog(this,b,c,e,!0,f,k);this.showDialog(b.container,560,130,!0,!0);b.init()};EditorUi.prototype.getServiceCount=
+function(b){var c=1;null==this.drive&&"function"!==typeof window.DriveClient||c++;null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||c++;null!=this.gitHub&&c++;null!=this.gitLab&&c++;null!=this.notion&&c++;b&&isLocalStorage&&"1"==urlParams.browser&&c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var b=this.getCurrentFile(),c=null!=b||"1"==urlParams.embed&&this.editor.graph.isEnabled();
this.menus.get("viewPanels").setEnabled(c);this.menus.get("viewZoom").setEnabled(c);var e=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==b||b.isRestricted());this.actions.get("makeCopy").setEnabled(!e);this.actions.get("print").setEnabled(!e);this.menus.get("exportAs").setEnabled(!e);this.menus.get("embed").setEnabled(!e);e="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(e);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(e),
this.menus.get("newLibrary").setEnabled(e));b="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=b&&b.isEditable();this.actions.get("image").setEnabled(c);this.actions.get("zoomIn").setEnabled(c);this.actions.get("zoomOut").setEnabled(c);this.actions.get("resetView").setEnabled(c);this.actions.get("undo").setEnabled(this.canUndo()&&b);this.actions.get("redo").setEnabled(this.canRedo()&&b);this.menus.get("edit").setEnabled(c);this.menus.get("view").setEnabled(c);this.menus.get("importFrom").setEnabled(b);
this.menus.get("arrange").setEnabled(b);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(b),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(b));this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var b=this.getCurrentFile();
-return null!=b&&b.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var p=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){p.apply(this,arguments);var b=this.editor.graph,c=this.getCurrentFile(),e=this.isDiagramActive(),g=b.getEditableCells(b.getSelectionCells());this.actions.get("pageSetup").setEnabled(e);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(e);this.actions.get("editData").setEnabled(0<
-g.length||b.isSelectionEmpty());this.actions.get("shadowVisible").setEnabled(e);this.actions.get("connectionArrows").setEnabled(e);this.actions.get("connectionPoints").setEnabled(e);this.actions.get("copyStyle").setEnabled(e&&!b.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(e&&0<g.length);this.actions.get("editGeometry").setEnabled(0<g.length&&b.getModel().isVertex(g[0]));this.actions.get("createShape").setEnabled(e);this.actions.get("createRevision").setEnabled(e);this.actions.get("moveToFolder").setEnabled(null!=
-c);this.actions.get("makeCopy").setEnabled(null!=c&&!c.isRestricted());this.actions.get("editDiagram").setEnabled(e&&(null==c||!c.isRestricted()));this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=
-c&&c.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());c=this.actions.get("findReplace");c.setEnabled("hidden"!=this.diagramContainer.style.visibility);c.label=mxResources.get("find")+(b.isEnabled()?"/"+mxResources.get("replace"):"")+"...";b=b.view.getState(b.getSelectionCell());this.actions.get("editShape").setEnabled(e&&null!=b&&null!=b.shape&&null!=b.shape.stencil)};var t=EditorUi.prototype.destroy;
-EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);t.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(b,c,e,g,k,n,p,t){var d=b.editor.graph;if("xml"==e)b.hideDialog(),b.saveData(c,"xml",mxUtils.getXml(b.editor.getGraphXml()),"text/xml");else if("svg"==e)b.hideDialog(),b.saveData(c,"svg",mxUtils.getXml(d.getSvg(g,
-k,n)),"image/svg+xml");else{var f=b.getFileData(!0,null,null,null,null,!0),l=d.getGraphBounds(),m=Math.floor(l.width*k/d.view.scale),q=Math.floor(l.height*k/d.view.scale);if(f.length<=MAX_REQUEST_SIZE&&m*q<MAX_AREA)if(b.hideDialog(),"png"!=e&&"jpg"!=e&&"jpeg"!=e||!b.isExportToCanvas()){var u={globalVars:d.getExportVariables()};t&&(u.grid={size:d.gridSize,steps:d.view.gridSteps,color:d.view.gridColor});b.saveRequest(c,e,function(b,c){return new mxXmlRequest(EXPORT_URL,"format="+e+"&base64="+(c||"0")+
-(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(u))+(0<p?"&dpi="+p:"")+"&bg="+(null!=g?g:"none")+"&w="+m+"&h="+q+"&border="+n+"&xml="+encodeURIComponent(f))})}else"png"==e?b.exportImage(k,null==g||"none"==g,!0,!1,!1,n,!0,!1,null,t,p):b.exportImage(k,!1,!0,!1,!1,n,!0,!1,"jpeg",t);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var b=this.editor.graph,c="";if(null!=
-this.pages)for(var e=0;e<this.pages.length;e++){var g=b;this.currentPage!=this.pages[e]&&(g=this.createTemporaryGraph(b.getStylesheet()),this.updatePageRoot(this.pages[e]),g.model.setRoot(this.pages[e].root));c+=this.pages[e].getName()+" "+g.getIndexableText()+" "}else c=b.getIndexableText();this.editor.graph.setEnabled(!0);return c};EditorUi.prototype.showRemotelyStoredLibrary=function(b){var c={},d=document.createElement("div");d.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,
-mxUtils.htmlEntities(b));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(e);var g=document.createElement("div");g.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";g.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var k={};try{var p=mxSettings.getCustomLibraries();for(b=0;b<p.length;b++){var t=p[b];if("R"==t.substring(0,1)){var y=JSON.parse(decodeURIComponent(t.substring(1)));k[y[0]]=
-{id:y[0],title:y[1],downloadUrl:y[2]}}}}catch(x){}this.remoteInvoke("getCustomLibraries",null,null,function(b){g.innerHTML="";if(0==b.length)g.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var d=0;d<b.length;d++){var e=b[d];k[e.id]&&(c[e.id]=e);var f=this.addCheckbox(g,e.title,k[e.id]);(function(b,d){mxEvent.addListener(d,"change",function(){this.checked?c[b.id]=b:delete c[b.id]})})(e,f)}},mxUtils.bind(this,
-function(b){g.innerHTML="";var c=document.createElement("div");c.style.padding="8px";c.style.textAlign="center";mxUtils.write(c,mxResources.get("error")+": ");mxUtils.write(c,null!=b&&null!=b.message?b.message:mxResources.get("unknownError"));g.appendChild(c)}));d.appendChild(g);d=new CustomDialog(this,d,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var b=0,d;for(d in c)null==k[d]&&(b++,mxUtils.bind(this,function(c){this.remoteInvoke("getFileContent",[c.downloadUrl],
-null,mxUtils.bind(this,function(d){b--;0==b&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,d,c))}catch(D){this.handleError(D,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){b--;0==b&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(c[d]));for(d in k)c[d]||this.closeLibrary(new RemoteLibrary(this,null,k[d]));0==b&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(d.container,
-340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(b){this.remoteWin=b;for(var c=0;c<this.remoteInvokeQueue.length;c++)b.postMessage(this.remoteInvokeQueue[c],
-"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(b){var c=b.msgMarkers,d=this.remoteInvokeCallbacks[c.callbackId];if(null==d)throw Error("No callback for "+(null!=c?c.callbackId:"null"));b.error?d.error&&d.error(b.error.errResp):d.callback&&d.callback.apply(this,b.resp);this.remoteInvokeCallbacks[c.callbackId]=null};EditorUi.prototype.remoteInvoke=function(b,c,e,g,k){var d=!0,f=window.setTimeout(mxUtils.bind(this,function(){d=!1;k({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),
-this.timeout),l=mxUtils.bind(this,function(){window.clearTimeout(f);d&&g.apply(this,arguments)}),m=mxUtils.bind(this,function(){window.clearTimeout(f);d&&k.apply(this,arguments)});e=e||{};e.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:l,error:m});b=JSON.stringify({event:"remoteInvoke",funtionName:b,functionArgs:c,msgMarkers:e});null!=this.remoteWin?this.remoteWin.postMessage(b,"*"):this.remoteInvokeQueue.push(b)};EditorUi.prototype.handleRemoteInvoke=function(b,
-c){var d=mxUtils.bind(this,function(c,d){var e={event:"remoteInvokeResponse",msgMarkers:b.msgMarkers};null!=d?e.error={errResp:d}:null!=c&&(e.resp=c);this.remoteWin.postMessage(JSON.stringify(e),"*")});try{var e=b.funtionName,f=this.remoteInvokableFns[e];if(null!=f&&"function"===typeof this[e]){if(f.allowedDomains){for(var g=!1,k=0;k<f.allowedDomains.length;k++)if(c=="https://"+f.allowedDomains[k]){g=!0;break}if(!g){d(null,"Invalid Call: "+e+" is not allowed.");return}}var p=b.functionArgs;Array.isArray(p)||
-(p=[]);if(f.isAsync)p.push(function(){d(Array.prototype.slice.apply(arguments))}),p.push(function(b){d(null,b||"Unkown Error")}),this[e].apply(this,p);else{var t=this[e].apply(this,p);d([t])}}else d(null,"Invalid Call: "+e+" is not found.")}catch(x){d(null,"Invalid Call: An error occurred, "+x.message)}};EditorUi.prototype.openDatabase=function(b,c){if(null==this.database){var d=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=d)try{var e=d.open("database",2);e.onupgradeneeded=
-function(b){try{var d=e.result;1>b.oldVersion&&d.createObjectStore("objects",{keyPath:"key"});2>b.oldVersion&&(d.createObjectStore("files",{keyPath:"title"}),d.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(u){null!=c&&c(u)}};e.onsuccess=mxUtils.bind(this,function(c){var d=e.result;this.database=d;EditorUi.migrateStorageFiles&&(StorageFile.migrate(d),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||
-(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(b){if(!b||"1"==urlParams.forceMigration){var c=document.createElement("iframe");c.style.display="none";c.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(c);var d=!0,e=!1,f,g=0,k=mxUtils.bind(this,function(){e=!0;this.setDatabaseItem(".drawioMigrated3",!0);c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",
-funtionName:"setMigratedFlag"}),"*")}),l=mxUtils.bind(this,function(){g++;m()}),m=mxUtils.bind(this,function(){try{if(g>=f.length)k();else{var b=f[g];StorageFile.getFileContent(this,b,mxUtils.bind(this,function(d){null==d||".scratchpad"==b&&d==this.emptyLibraryXml?c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[b]}),"*"):l()}),l)}}catch(C){console.log(C)}}),n=mxUtils.bind(this,function(b){try{this.setDatabaseItem(null,[{title:b.title,
-size:b.data.length,lastModified:Date.now(),type:b.isLib?"L":"F"},{title:b.title,data:b.data}],l,l,["filesInfo","files"])}catch(C){console.log(C)}});b=mxUtils.bind(this,function(b){try{if(b.source==c.contentWindow){var g={};try{g=JSON.parse(b.data)}catch(K){}"init"==g.event?(c.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=g.event||e||
-(d?null!=g.resp&&0<g.resp.length&&null!=g.resp[0]?(f=g.resp[0],d=!1,m()):k():null!=g.resp&&0<g.resp.length&&null!=g.resp[0]?n(g.resp[0]):l())}}catch(K){console.log(K)}});window.addEventListener("message",b)}})));b(d);d.onversionchange=function(){d.close()}});e.onerror=c;e.onblocked=function(){}}catch(m){null!=c&&c(m)}else null!=c&&c()}else b(this.database)};EditorUi.prototype.setDatabaseItem=function(b,c,e,g,k){this.openDatabase(mxUtils.bind(this,function(d){try{k=k||"objects";Array.isArray(k)||(k=
-[k],b=[b],c=[c]);var f=d.transaction(k,"readwrite");f.oncomplete=e;f.onerror=g;for(d=0;d<k.length;d++)f.objectStore(k[d]).put(null!=b&&null!=b[d]?{key:b[d],data:c[d]}:c[d])}catch(v){null!=g&&g(v)}}),g)};EditorUi.prototype.removeDatabaseItem=function(b,c,e,g){this.openDatabase(mxUtils.bind(this,function(d){g=g||"objects";Array.isArray(g)||(g=[g],b=[b]);d=d.transaction(g,"readwrite");d.oncomplete=c;d.onerror=e;for(var f=0;f<g.length;f++)d.objectStore(g[f])["delete"](b[f])}),e)};EditorUi.prototype.getDatabaseItem=
-function(b,c,e,g){this.openDatabase(mxUtils.bind(this,function(d){try{g=g||"objects";var f=d.transaction([g],"readonly").objectStore(g).get(b);f.onsuccess=function(){c(f.result)};f.onerror=e}catch(u){null!=e&&e(u)}}),e)};EditorUi.prototype.getDatabaseItems=function(b,c,e){this.openDatabase(mxUtils.bind(this,function(d){try{e=e||"objects";var f=d.transaction([e],"readonly").objectStore(e).openCursor(IDBKeyRange.lowerBound(0)),g=[];f.onsuccess=function(c){null==c.target.result?b(g):(g.push(c.target.result.value),
-c.target.result["continue"]())};f.onerror=c}catch(u){null!=c&&c(u)}}),c)};EditorUi.prototype.getDatabaseItemKeys=function(b,c,e){this.openDatabase(mxUtils.bind(this,function(d){try{e=e||"objects";var f=d.transaction([e],"readonly").objectStore(e).getAllKeys();f.onsuccess=function(){b(f.result)};f.onerror=c}catch(n){null!=c&&c(n)}}),c)};EditorUi.prototype.commentsSupported=function(){var b=this.getCurrentFile();return null!=b?b.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var b=
-this.getCurrentFile();return null!=b?b.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var b=this.getCurrentFile();return null!=b?b.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(b,c){var d=this.getCurrentFile();null!=d?d.getComments(b,c):b([])};EditorUi.prototype.addComment=function(b,c,e){var d=this.getCurrentFile();null!=d?d.addComment(b,c,e):c(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var b=this.getCurrentFile();return null!=b?
-b.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var b=this.getCurrentFile();return null!=b?b.canComment():!0};EditorUi.prototype.newComment=function(b,c){var d=this.getCurrentFile();return null!=d?d.newComment(b,c):new DrawioComment(this,null,b,Date.now(),Date.now(),!1,c)};EditorUi.prototype.isRevisionHistorySupported=function(){var b=this.getCurrentFile();return null!=b&&b.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(b,c){var d=this.getCurrentFile();null!=
-d&&d.getRevisions?d.getRevisions(b,c):c({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var b=this.getCurrentFile();return null!=b&&(b.constructor==DriveFile&&b.isEditable()||b.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(b){b.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(b,c,e,g,k,p,t,v){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");
-return this.editor.loadUrl(b,c,e,g,k,p,t,v)};EditorUi.prototype.loadFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(b)};EditorUi.prototype.createSvgDataUri=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(b)};EditorUi.prototype.embedCssFonts=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(b,c)};EditorUi.prototype.embedExtFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");
-return this.editor.embedExtFonts(b)};EditorUi.prototype.exportToCanvas=function(b,c,e,g,k,p,t,v,y,x,F,H,z,D,L,E){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(b,c,e,g,k,p,t,v,y,x,F,H,z,D,L,E)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(b,c,e,g){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");
-return this.editor.convertImages(b,c,e,g)};EditorUi.prototype.convertImageToDataUri=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(b,c)};EditorUi.prototype.base64Encode=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(b)};EditorUi.prototype.updateCRC=function(b,c,e,g){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(b,c,e,g)};EditorUi.prototype.crc32=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");
-return Editor.crc32(b)};EditorUi.prototype.writeGraphModelToPng=function(b,c,e,g,k){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(b,c,e,g,k)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var b=[],c=0;c<localStorage.length;c++){var e=localStorage.key(c),g=localStorage.getItem(e);if(0<e.length&&(".scratchpad"==e||"."!=e.charAt(0))&&0<g.length){var k=
-"<mxfile "===g.substring(0,8)||"<?xml"===g.substring(0,5)||"\x3c!--[if IE]>"===g.substring(0,12),g="<mxlibrary>"===g.substring(0,11);(k||g)&&b.push(e)}}return b};EditorUi.prototype.getLocalStorageFile=function(b){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var c=localStorage.getItem(b);return{title:b,data:c,isLib:"<mxlibrary>"===c.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
-var CommentsWindow=function(b,c,e,k,g,p){function t(){for(var b=H.getElementsByTagName("div"),c=0,d=0;d<b.length;d++)"none"!=b[d].style.display&&b[d].parentNode==H&&c++;z.style.display=0==c?"block":"none"}function d(b,c,d,e){function f(){c.removeChild(l);c.removeChild(m);k.style.display="block";g.style.display="block"}y={div:c,comment:b,saveCallback:d,deleteOnCancel:e};var g=c.querySelector(".geCommentTxt"),k=c.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className=
+return null!=b&&b.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var p=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){p.apply(this,arguments);var b=this.editor.graph,c=this.getCurrentFile(),e=this.getSelectionState(),f=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(f);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(f);this.actions.get("editData").setEnabled(b.isEnabled());
+this.actions.get("shadowVisible").setEnabled(f);this.actions.get("connectionArrows").setEnabled(f);this.actions.get("connectionPoints").setEnabled(f);this.actions.get("copyStyle").setEnabled(f&&!b.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(f&&0<e.cells.length);this.actions.get("editGeometry").setEnabled(0<e.vertices.length);this.actions.get("createShape").setEnabled(f);this.actions.get("createRevision").setEnabled(f);this.actions.get("moveToFolder").setEnabled(null!=c);this.actions.get("makeCopy").setEnabled(null!=
+c&&!c.isRestricted());this.actions.get("editDiagram").setEnabled(f&&(null==c||!c.isRestricted()));this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=c&&c.isRenamable()||"1"==
+urlParams.embed);this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());c=this.actions.get("findReplace");c.setEnabled("hidden"!=this.diagramContainer.style.visibility);c.label=mxResources.get("find")+(b.isEnabled()?"/"+mxResources.get("replace"):"")+"...";b=b.view.getState(b.getSelectionCell());this.actions.get("editShape").setEnabled(f&&null!=b&&null!=b.shape&&null!=b.shape.stencil)};var t=EditorUi.prototype.destroy;EditorUi.prototype.destroy=
+function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);t.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(b,c,e,f,k,n,p,t){var d=b.editor.graph;if("xml"==e)b.hideDialog(),b.saveData(c,"xml",mxUtils.getXml(b.editor.getGraphXml()),"text/xml");else if("svg"==e)b.hideDialog(),b.saveData(c,"svg",mxUtils.getXml(d.getSvg(f,k,n)),"image/svg+xml");
+else{var g=b.getFileData(!0,null,null,null,null,!0),l=d.getGraphBounds(),m=Math.floor(l.width*k/d.view.scale),q=Math.floor(l.height*k/d.view.scale);if(g.length<=MAX_REQUEST_SIZE&&m*q<MAX_AREA)if(b.hideDialog(),"png"!=e&&"jpg"!=e&&"jpeg"!=e||!b.isExportToCanvas()){var u={globalVars:d.getExportVariables()};t&&(u.grid={size:d.gridSize,steps:d.view.gridSteps,color:d.view.gridColor});b.saveRequest(c,e,function(b,c){return new mxXmlRequest(EXPORT_URL,"format="+e+"&base64="+(c||"0")+(null!=b?"&filename="+
+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(u))+(0<p?"&dpi="+p:"")+"&bg="+(null!=f?f:"none")+"&w="+m+"&h="+q+"&border="+n+"&xml="+encodeURIComponent(g))})}else"png"==e?b.exportImage(k,null==f||"none"==f,!0,!1,!1,n,!0,!1,null,t,p):b.exportImage(k,!1,!0,!1,!1,n,!0,!1,"jpeg",t);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var b=this.editor.graph,c="";if(null!=this.pages)for(var e=
+0;e<this.pages.length;e++){var f=b;this.currentPage!=this.pages[e]&&(f=this.createTemporaryGraph(b.getStylesheet()),this.updatePageRoot(this.pages[e]),f.model.setRoot(this.pages[e].root));c+=this.pages[e].getName()+" "+f.getIndexableText()+" "}else c=b.getIndexableText();this.editor.graph.setEnabled(!0);return c};EditorUi.prototype.showRemotelyStoredLibrary=function(b){var c={},d=document.createElement("div");d.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxUtils.htmlEntities(b));
+e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(e);var f=document.createElement("div");f.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";f.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var k={};try{var p=mxSettings.getCustomLibraries();for(b=0;b<p.length;b++){var t=p[b];if("R"==t.substring(0,1)){var y=JSON.parse(decodeURIComponent(t.substring(1)));k[y[0]]={id:y[0],title:y[1],downloadUrl:y[2]}}}}catch(x){}this.remoteInvoke("getCustomLibraries",
+null,null,function(b){f.innerHTML="";if(0==b.length)f.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var d=0;d<b.length;d++){var e=b[d];k[e.id]&&(c[e.id]=e);var g=this.addCheckbox(f,e.title,k[e.id]);(function(b,d){mxEvent.addListener(d,"change",function(){this.checked?c[b.id]=b:delete c[b.id]})})(e,g)}},mxUtils.bind(this,function(b){f.innerHTML="";var c=document.createElement("div");c.style.padding="8px";
+c.style.textAlign="center";mxUtils.write(c,mxResources.get("error")+": ");mxUtils.write(c,null!=b&&null!=b.message?b.message:mxResources.get("unknownError"));f.appendChild(c)}));d.appendChild(f);d=new CustomDialog(this,d,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var b=0,d;for(d in c)null==k[d]&&(b++,mxUtils.bind(this,function(c){this.remoteInvoke("getFileContent",[c.downloadUrl],null,mxUtils.bind(this,function(d){b--;0==b&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,
+d,c))}catch(D){this.handleError(D,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){b--;0==b&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(c[d]));for(d in k)c[d]||this.closeLibrary(new RemoteLibrary(this,null,k[d]));0==b&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(d.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},
+getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(b){this.remoteWin=b;for(var c=0;c<this.remoteInvokeQueue.length;c++)b.postMessage(this.remoteInvokeQueue[c],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=
+function(b){var c=b.msgMarkers,d=this.remoteInvokeCallbacks[c.callbackId];if(null==d)throw Error("No callback for "+(null!=c?c.callbackId:"null"));b.error?d.error&&d.error(b.error.errResp):d.callback&&d.callback.apply(this,b.resp);this.remoteInvokeCallbacks[c.callbackId]=null};EditorUi.prototype.remoteInvoke=function(b,c,e,f,k){var d=!0,g=window.setTimeout(mxUtils.bind(this,function(){d=!1;k({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),l=mxUtils.bind(this,function(){window.clearTimeout(g);
+d&&f.apply(this,arguments)}),m=mxUtils.bind(this,function(){window.clearTimeout(g);d&&k.apply(this,arguments)});e=e||{};e.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:l,error:m});b=JSON.stringify({event:"remoteInvoke",funtionName:b,functionArgs:c,msgMarkers:e});null!=this.remoteWin?this.remoteWin.postMessage(b,"*"):this.remoteInvokeQueue.push(b)};EditorUi.prototype.handleRemoteInvoke=function(b,c){var d=mxUtils.bind(this,function(c,d){var e={event:"remoteInvokeResponse",
+msgMarkers:b.msgMarkers};null!=d?e.error={errResp:d}:null!=c&&(e.resp=c);this.remoteWin.postMessage(JSON.stringify(e),"*")});try{var e=b.funtionName,g=this.remoteInvokableFns[e];if(null!=g&&"function"===typeof this[e]){if(g.allowedDomains){for(var f=!1,k=0;k<g.allowedDomains.length;k++)if(c=="https://"+g.allowedDomains[k]){f=!0;break}if(!f){d(null,"Invalid Call: "+e+" is not allowed.");return}}var p=b.functionArgs;Array.isArray(p)||(p=[]);if(g.isAsync)p.push(function(){d(Array.prototype.slice.apply(arguments))}),
+p.push(function(b){d(null,b||"Unkown Error")}),this[e].apply(this,p);else{var t=this[e].apply(this,p);d([t])}}else d(null,"Invalid Call: "+e+" is not found.")}catch(x){d(null,"Invalid Call: An error occurred, "+x.message)}};EditorUi.prototype.openDatabase=function(b,c){if(null==this.database){var d=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=d)try{var e=d.open("database",2);e.onupgradeneeded=function(b){try{var d=e.result;1>b.oldVersion&&d.createObjectStore("objects",{keyPath:"key"});
+2>b.oldVersion&&(d.createObjectStore("files",{keyPath:"title"}),d.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(u){null!=c&&c(u)}};e.onsuccess=mxUtils.bind(this,function(c){var d=e.result;this.database=d;EditorUi.migrateStorageFiles&&(StorageFile.migrate(d),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(b){if(!b||
+"1"==urlParams.forceMigration){var c=document.createElement("iframe");c.style.display="none";c.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(c);var d=!0,e=!1,g,f=0,k=mxUtils.bind(this,function(){e=!0;this.setDatabaseItem(".drawioMigrated3",!0);c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),l=mxUtils.bind(this,function(){f++;m()}),m=mxUtils.bind(this,function(){try{if(f>=
+g.length)k();else{var b=g[f];StorageFile.getFileContent(this,b,mxUtils.bind(this,function(d){null==d||".scratchpad"==b&&d==this.emptyLibraryXml?c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[b]}),"*"):l()}),l)}}catch(C){console.log(C)}}),p=mxUtils.bind(this,function(b){try{this.setDatabaseItem(null,[{title:b.title,size:b.data.length,lastModified:Date.now(),type:b.isLib?"L":"F"},{title:b.title,data:b.data}],l,l,["filesInfo","files"])}catch(C){console.log(C)}});
+b=mxUtils.bind(this,function(b){try{if(b.source==c.contentWindow){var f={};try{f=JSON.parse(b.data)}catch(K){}"init"==f.event?(c.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=f.event||e||(d?null!=f.resp&&0<f.resp.length&&null!=f.resp[0]?(g=f.resp[0],d=!1,m()):k():null!=f.resp&&0<f.resp.length&&null!=f.resp[0]?p(f.resp[0]):l())}}catch(K){console.log(K)}});
+window.addEventListener("message",b)}})));b(d);d.onversionchange=function(){d.close()}});e.onerror=c;e.onblocked=function(){}}catch(m){null!=c&&c(m)}else null!=c&&c()}else b(this.database)};EditorUi.prototype.setDatabaseItem=function(b,c,e,f,k){this.openDatabase(mxUtils.bind(this,function(d){try{k=k||"objects";Array.isArray(k)||(k=[k],b=[b],c=[c]);var g=d.transaction(k,"readwrite");g.oncomplete=e;g.onerror=f;for(d=0;d<k.length;d++)g.objectStore(k[d]).put(null!=b&&null!=b[d]?{key:b[d],data:c[d]}:c[d])}catch(v){null!=
+f&&f(v)}}),f)};EditorUi.prototype.removeDatabaseItem=function(b,c,e,f){this.openDatabase(mxUtils.bind(this,function(d){f=f||"objects";Array.isArray(f)||(f=[f],b=[b]);d=d.transaction(f,"readwrite");d.oncomplete=c;d.onerror=e;for(var g=0;g<f.length;g++)d.objectStore(f[g])["delete"](b[g])}),e)};EditorUi.prototype.getDatabaseItem=function(b,c,e,f){this.openDatabase(mxUtils.bind(this,function(d){try{f=f||"objects";var g=d.transaction([f],"readonly").objectStore(f).get(b);g.onsuccess=function(){c(g.result)};
+g.onerror=e}catch(u){null!=e&&e(u)}}),e)};EditorUi.prototype.getDatabaseItems=function(b,c,e){this.openDatabase(mxUtils.bind(this,function(d){try{e=e||"objects";var g=d.transaction([e],"readonly").objectStore(e).openCursor(IDBKeyRange.lowerBound(0)),f=[];g.onsuccess=function(c){null==c.target.result?b(f):(f.push(c.target.result.value),c.target.result["continue"]())};g.onerror=c}catch(u){null!=c&&c(u)}}),c)};EditorUi.prototype.getDatabaseItemKeys=function(b,c,e){this.openDatabase(mxUtils.bind(this,
+function(d){try{e=e||"objects";var g=d.transaction([e],"readonly").objectStore(e).getAllKeys();g.onsuccess=function(){b(g.result)};g.onerror=c}catch(n){null!=c&&c(n)}}),c)};EditorUi.prototype.commentsSupported=function(){var b=this.getCurrentFile();return null!=b?b.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var b=this.getCurrentFile();return null!=b?b.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var b=this.getCurrentFile();return null!=
+b?b.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(b,c){var d=this.getCurrentFile();null!=d?d.getComments(b,c):b([])};EditorUi.prototype.addComment=function(b,c,e){var d=this.getCurrentFile();null!=d?d.addComment(b,c,e):c(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var b=this.getCurrentFile();return null!=b?b.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var b=this.getCurrentFile();return null!=b?b.canComment():!0};EditorUi.prototype.newComment=
+function(b,c){var d=this.getCurrentFile();return null!=d?d.newComment(b,c):new DrawioComment(this,null,b,Date.now(),Date.now(),!1,c)};EditorUi.prototype.isRevisionHistorySupported=function(){var b=this.getCurrentFile();return null!=b&&b.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(b,c){var d=this.getCurrentFile();null!=d&&d.getRevisions?d.getRevisions(b,c):c({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var b=this.getCurrentFile();
+return null!=b&&(b.constructor==DriveFile&&b.isEditable()||b.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(b){b.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(b,c,e,f,k,p,t,v){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(b,c,e,f,k,p,t,v)};EditorUi.prototype.loadFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");
+return this.editor.loadFonts(b)};EditorUi.prototype.createSvgDataUri=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(b)};EditorUi.prototype.embedCssFonts=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(b,c)};EditorUi.prototype.embedExtFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(b)};EditorUi.prototype.exportToCanvas=function(b,
+c,e,f,k,p,t,v,y,x,F,H,z,D,N,E){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(b,c,e,f,k,p,t,v,y,x,F,H,z,D,N,E)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(b,c,e,f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(b,c,e,f)};EditorUi.prototype.convertImageToDataUri=
+function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(b,c)};EditorUi.prototype.base64Encode=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(b)};EditorUi.prototype.updateCRC=function(b,c,e,f){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(b,c,e,f)};EditorUi.prototype.crc32=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(b)};
+EditorUi.prototype.writeGraphModelToPng=function(b,c,e,f,k){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(b,c,e,f,k)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var b=[],c=0;c<localStorage.length;c++){var e=localStorage.key(c),f=localStorage.getItem(e);if(0<e.length&&(".scratchpad"==e||"."!=e.charAt(0))&&0<f.length){var k="<mxfile "===
+f.substring(0,8)||"<?xml"===f.substring(0,5)||"\x3c!--[if IE]>"===f.substring(0,12),f="<mxlibrary>"===f.substring(0,11);(k||f)&&b.push(e)}}return b};EditorUi.prototype.getLocalStorageFile=function(b){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var c=localStorage.getItem(b);return{title:b,data:c,isLib:"<mxlibrary>"===c.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
+var CommentsWindow=function(b,c,e,k,f,p){function t(){for(var b=H.getElementsByTagName("div"),c=0,d=0;d<b.length;d++)"none"!=b[d].style.display&&b[d].parentNode==H&&c++;z.style.display=0==c?"block":"none"}function d(b,c,d,e){function f(){c.removeChild(l);c.removeChild(m);k.style.display="block";g.style.display="block"}y={div:c,comment:b,saveCallback:d,deleteOnCancel:e};var g=c.querySelector(".geCommentTxt"),k=c.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className=
"geCommentEditTxtArea";l.style.minHeight=g.offsetHeight+"px";l.value=b.content;c.insertBefore(l,g);var m=document.createElement("div");m.className="geCommentEditBtns";var p=mxUtils.button(mxResources.get("cancel"),function(){e?(c.parentNode.removeChild(c),t()):f();y=null});p.className="geCommentEditBtn";m.appendChild(p);var n=mxUtils.button(mxResources.get("save"),function(){g.innerHTML="";b.content=l.value;mxUtils.write(g,b.content);f();d(b);y=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this,
-function(b){mxEvent.isConsumed(b)||((mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b))&&13==b.keyCode?(n.click(),mxEvent.consume(b)):27==b.keyCode&&(p.click(),mxEvent.consume(b)))}));n.focus();n.className="geCommentEditBtn gePrimaryBtn";m.appendChild(n);c.insertBefore(m,g);k.style.display="none";g.style.display="none";l.focus()}function f(c,d){d.innerHTML="";var e=new Date(c.modifiedDate),f=b.timeSince(e);null==f&&(f=mxResources.get("lessThanAMinute"));mxUtils.write(d,mxResources.get("timeAgo",
-[f],"{1} ago"));d.setAttribute("title",e.toLocaleDateString()+" "+e.toLocaleTimeString())}function l(b){var c=document.createElement("img");c.className="geCommentBusyImg";c.src=IMAGE_PATH+"/spin.gif";b.appendChild(c);b.busyImg=c}function q(b){b.style.border="1px solid red";b.removeChild(b.busyImg)}function m(b){b.style.border="";b.removeChild(b.busyImg)}function n(c,e,g,k,p){function C(b,d,e){var f=document.createElement("li");f.className="geCommentAction";var g=document.createElement("a");g.className=
-"geCommentActionLnk";mxUtils.write(g,b);f.appendChild(g);mxEvent.addListener(g,"click",function(b){d(b,c);b.preventDefault();mxEvent.consume(b)});M.appendChild(f);e&&(f.style.display="none")}function x(){function b(c){d.push(e);if(null!=c.replies)for(var f=0;f<c.replies.length;f++)e=e.nextSibling,b(c.replies[f])}var d=[],e=O;b(c);return{pdiv:e,replies:d}}function N(e,f,g,p,t){function u(){l(N);c.addReply(C,function(b){C.id=b;c.replies.push(C);m(N);g&&g()},function(c){z();q(N);b.handleError(c,null,
-null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},p,t)}function z(){d(C,N,function(b){u()},!0)}var v=x().pdiv,C=b.newComment(e,b.getCurrentUser());C.pCommentId=c.id;null==c.replies&&(c.replies=[]);var N=n(C,c.replies,v,k+1);f?z():u()}if(p||!c.isResolved){z.style.display="none";var O=document.createElement("div");O.className="geCommentContainer";O.setAttribute("data-commentId",c.id);O.style.marginLeft=20*k+5+"px";c.isResolved&&!Editor.isDarkMode()&&(O.style.backgroundColor="ghostWhite");
-var D=document.createElement("div");D.className="geCommentHeader";var K=document.createElement("img");K.className="geCommentUserImg";K.src=c.user.pictureUrl||Editor.userImage;D.appendChild(K);K=document.createElement("div");K.className="geCommentHeaderTxt";D.appendChild(K);var U=document.createElement("div");U.className="geCommentUsername";mxUtils.write(U,c.user.displayName||"");K.appendChild(U);U=document.createElement("div");U.className="geCommentDate";U.setAttribute("data-commentId",c.id);f(c,
-U);K.appendChild(U);O.appendChild(D);D=document.createElement("div");D.className="geCommentTxt";mxUtils.write(D,c.content||"");O.appendChild(D);c.isLocked&&(O.style.opacity="0.5");D=document.createElement("div");D.className="geCommentActions";var M=document.createElement("ul");M.className="geCommentActionsList";D.appendChild(M);u||c.isLocked||0!=k&&!v||C(mxResources.get("reply"),function(){N("",!0)},c.isResolved);K=b.getCurrentUser();null==K||K.id!=c.user.id||u||c.isLocked||(C(mxResources.get("edit"),
+function(b){mxEvent.isConsumed(b)||((mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b))&&13==b.keyCode?(n.click(),mxEvent.consume(b)):27==b.keyCode&&(p.click(),mxEvent.consume(b)))}));n.focus();n.className="geCommentEditBtn gePrimaryBtn";m.appendChild(n);c.insertBefore(m,g);k.style.display="none";g.style.display="none";l.focus()}function g(c,d){d.innerHTML="";var e=new Date(c.modifiedDate),f=b.timeSince(e);null==f&&(f=mxResources.get("lessThanAMinute"));mxUtils.write(d,mxResources.get("timeAgo",
+[f],"{1} ago"));d.setAttribute("title",e.toLocaleDateString()+" "+e.toLocaleTimeString())}function l(b){var c=document.createElement("img");c.className="geCommentBusyImg";c.src=IMAGE_PATH+"/spin.gif";b.appendChild(c);b.busyImg=c}function q(b){b.style.border="1px solid red";b.removeChild(b.busyImg)}function m(b){b.style.border="";b.removeChild(b.busyImg)}function n(c,e,f,k,p){function C(b,d,e){var f=document.createElement("li");f.className="geCommentAction";var g=document.createElement("a");g.className=
+"geCommentActionLnk";mxUtils.write(g,b);f.appendChild(g);mxEvent.addListener(g,"click",function(b){d(b,c);b.preventDefault();mxEvent.consume(b)});M.appendChild(f);e&&(f.style.display="none")}function x(){function b(c){d.push(e);if(null!=c.replies)for(var f=0;f<c.replies.length;f++)e=e.nextSibling,b(c.replies[f])}var d=[],e=O;b(c);return{pdiv:e,replies:d}}function L(e,f,g,p,t){function u(){l(L);c.addReply(C,function(b){C.id=b;c.replies.push(C);m(L);g&&g()},function(c){v();q(L);b.handleError(c,null,
+null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},p,t)}function v(){d(C,L,function(b){u()},!0)}var z=x().pdiv,C=b.newComment(e,b.getCurrentUser());C.pCommentId=c.id;null==c.replies&&(c.replies=[]);var L=n(C,c.replies,z,k+1);f?v():u()}if(p||!c.isResolved){z.style.display="none";var O=document.createElement("div");O.className="geCommentContainer";O.setAttribute("data-commentId",c.id);O.style.marginLeft=20*k+5+"px";c.isResolved&&!Editor.isDarkMode()&&(O.style.backgroundColor="ghostWhite");
+var D=document.createElement("div");D.className="geCommentHeader";var K=document.createElement("img");K.className="geCommentUserImg";K.src=c.user.pictureUrl||Editor.userImage;D.appendChild(K);K=document.createElement("div");K.className="geCommentHeaderTxt";D.appendChild(K);var U=document.createElement("div");U.className="geCommentUsername";mxUtils.write(U,c.user.displayName||"");K.appendChild(U);U=document.createElement("div");U.className="geCommentDate";U.setAttribute("data-commentId",c.id);g(c,
+U);K.appendChild(U);O.appendChild(D);D=document.createElement("div");D.className="geCommentTxt";mxUtils.write(D,c.content||"");O.appendChild(D);c.isLocked&&(O.style.opacity="0.5");D=document.createElement("div");D.className="geCommentActions";var M=document.createElement("ul");M.className="geCommentActionsList";D.appendChild(M);u||c.isLocked||0!=k&&!v||C(mxResources.get("reply"),function(){L("",!0)},c.isResolved);K=b.getCurrentUser();null==K||K.id!=c.user.id||u||c.isLocked||(C(mxResources.get("edit"),
function(){function e(){d(c,O,function(){l(O);c.editComment(c.content,function(){m(O)},function(c){q(O);e();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}e()},c.isResolved),C(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){l(O);c.deleteComment(function(b){if(!0===b){b=O.querySelector(".geCommentTxt");b.innerHTML="";mxUtils.write(b,mxResources.get("msgDeleted"));var d=O.querySelectorAll(".geCommentAction");for(b=
0;b<d.length;b++)d[b].parentNode.removeChild(d[b]);m(O);O.style.opacity="0.5"}else{d=x(c).replies;for(b=0;b<d.length;b++)H.removeChild(d[b]);for(b=0;b<e.length;b++)if(e[b]==c){e.splice(b,1);break}z.style.display=0==H.getElementsByTagName("div").length?"block":"none"}},function(c){q(O);b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},c.isResolved));u||c.isLocked||0!=k||C(c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(b){function d(){var d=
-b.target;d.innerHTML="";c.isResolved=!c.isResolved;mxUtils.write(d,c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var e=c.isResolved?"none":"",f=x(c).replies,g=Editor.isDarkMode()?"transparent":c.isResolved?"ghostWhite":"white",k=0;k<f.length;k++){f[k].style.backgroundColor=g;for(var l=f[k].querySelectorAll(".geCommentAction"),m=0;m<l.length;m++)l[m]!=d.parentNode&&(l[m].style.display=e);E||(f[k].style.display="none")}t()}c.isResolved?N(mxResources.get("reOpened")+": ",!0,
-d,!1,!0):N(mxResources.get("markedAsResolved"),!1,d,!0)});O.appendChild(D);null!=g?H.insertBefore(O,g.nextSibling):H.appendChild(O);for(g=0;null!=c.replies&&g<c.replies.length;g++)D=c.replies[g],D.isResolved=c.isResolved,n(D,c.replies,null,k+1,p);null!=y&&(y.comment.id==c.id?(p=c.content,c.content=y.comment.content,d(c,O,y.saveCallback,y.deleteOnCancel),c.content=p):null==y.comment.id&&y.comment.pCommentId==c.id&&(H.appendChild(y.div),d(y.comment,y.div,y.saveCallback,y.deleteOnCancel)));return O}}
+b.target;d.innerHTML="";c.isResolved=!c.isResolved;mxUtils.write(d,c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var e=c.isResolved?"none":"",f=x(c).replies,g=Editor.isDarkMode()?"transparent":c.isResolved?"ghostWhite":"white",k=0;k<f.length;k++){f[k].style.backgroundColor=g;for(var l=f[k].querySelectorAll(".geCommentAction"),m=0;m<l.length;m++)l[m]!=d.parentNode&&(l[m].style.display=e);E||(f[k].style.display="none")}t()}c.isResolved?L(mxResources.get("reOpened")+": ",!0,
+d,!1,!0):L(mxResources.get("markedAsResolved"),!1,d,!0)});O.appendChild(D);null!=f?H.insertBefore(O,f.nextSibling):H.appendChild(O);for(f=0;null!=c.replies&&f<c.replies.length;f++)D=c.replies[f],D.isResolved=c.isResolved,n(D,c.replies,null,k+1,p);null!=y&&(y.comment.id==c.id?(p=c.content,c.content=y.comment.content,d(c,O,y.saveCallback,y.deleteOnCancel),c.content=p):null==y.comment.id&&y.comment.pCommentId==c.id&&(H.appendChild(y.div),d(y.comment,y.div,y.saveCallback,y.deleteOnCancel)));return O}}
var u=!b.canComment(),v=b.canReplyToReplies(),y=null,x=document.createElement("div");x.className="geCommentsWin";x.style.background=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";var F=EditorUi.compactUi?"26px":"30px",H=document.createElement("div");H.className="geCommentsList";H.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";H.style.bottom=parseInt(F)+7+"px";x.appendChild(H);var z=document.createElement("span");z.style.cssText="display:none;padding-top:10px;text-align:center;";
-mxUtils.write(z,mxResources.get("noCommentsFound"));var D=document.createElement("div");D.className="geToolbarContainer geCommentsToolbar";D.style.height=F;D.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";D.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";F=document.createElement("a");F.className="geButton";if(!u){var L=F.cloneNode();L.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';L.setAttribute("title",mxResources.get("create")+
-"...");mxEvent.addListener(L,"click",function(c){function e(){d(f,g,function(c){l(g);b.addComment(c,function(b){c.id=b;J.push(c);m(g)},function(c){q(g);e();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var f=b.newComment("",b.getCurrentUser()),g=n(f,J,null,0);e();c.preventDefault();mxEvent.consume(c)});D.appendChild(L)}L=F.cloneNode();L.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';L.setAttribute("title",mxResources.get("showResolved"));
-var E=!1;Editor.isDarkMode()&&(L.style.filter="invert(100%)");mxEvent.addListener(L,"click",function(b){this.className=(E=!E)?"geButton geCheckedBtn":"geButton";C();b.preventDefault();mxEvent.consume(b)});D.appendChild(L);b.commentsRefreshNeeded()&&(L=F.cloneNode(),L.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',L.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(L.style.filter="invert(100%)"),mxEvent.addListener(L,"click",function(b){C();
-b.preventDefault();mxEvent.consume(b)}),D.appendChild(L));b.commentsSaveNeeded()&&(F=F.cloneNode(),F.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',F.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&(F.style.filter="invert(100%)"),mxEvent.addListener(F,"click",function(b){p();b.preventDefault();mxEvent.consume(b)}),D.appendChild(F));x.appendChild(D);var J=[],C=mxUtils.bind(this,function(){this.hasError=!1;if(null!=y)try{y.div=y.div.cloneNode(!0);
-var c=y.div.querySelector(".geCommentEditTxtArea"),e=y.div.querySelector(".geCommentEditBtns");y.comment.content=c.value;c.parentNode.removeChild(c);e.parentNode.removeChild(e)}catch(N){b.handleError(N)}H.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";v=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(b){function c(b){if(null!=b){b.sort(function(b,c){return new Date(b.modifiedDate)-
+mxUtils.write(z,mxResources.get("noCommentsFound"));var D=document.createElement("div");D.className="geToolbarContainer geCommentsToolbar";D.style.height=F;D.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";D.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";F=document.createElement("a");F.className="geButton";if(!u){var N=F.cloneNode();N.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';N.setAttribute("title",mxResources.get("create")+
+"...");mxEvent.addListener(N,"click",function(c){function e(){d(f,g,function(c){l(g);b.addComment(c,function(b){c.id=b;J.push(c);m(g)},function(c){q(g);e();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var f=b.newComment("",b.getCurrentUser()),g=n(f,J,null,0);e();c.preventDefault();mxEvent.consume(c)});D.appendChild(N)}N=F.cloneNode();N.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';N.setAttribute("title",mxResources.get("showResolved"));
+var E=!1;Editor.isDarkMode()&&(N.style.filter="invert(100%)");mxEvent.addListener(N,"click",function(b){this.className=(E=!E)?"geButton geCheckedBtn":"geButton";C();b.preventDefault();mxEvent.consume(b)});D.appendChild(N);b.commentsRefreshNeeded()&&(N=F.cloneNode(),N.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',N.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(N.style.filter="invert(100%)"),mxEvent.addListener(N,"click",function(b){C();
+b.preventDefault();mxEvent.consume(b)}),D.appendChild(N));b.commentsSaveNeeded()&&(F=F.cloneNode(),F.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',F.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&(F.style.filter="invert(100%)"),mxEvent.addListener(F,"click",function(b){p();b.preventDefault();mxEvent.consume(b)}),D.appendChild(F));x.appendChild(D);var J=[],C=mxUtils.bind(this,function(){this.hasError=!1;if(null!=y)try{y.div=y.div.cloneNode(!0);
+var c=y.div.querySelector(".geCommentEditTxtArea"),e=y.div.querySelector(".geCommentEditBtns");y.comment.content=c.value;c.parentNode.removeChild(c);e.parentNode.removeChild(e)}catch(L){b.handleError(L)}H.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";v=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(b){function c(b){if(null!=b){b.sort(function(b,c){return new Date(b.modifiedDate)-
new Date(c.modifiedDate)});for(var d=0;d<b.length;d++)c(b[d].replies)}}b.sort(function(b,c){return new Date(b.modifiedDate)-new Date(c.modifiedDate)});H.innerHTML="";H.appendChild(z);z.style.display="block";J=b;for(b=0;b<J.length;b++)c(J[b].replies),n(J[b],J,null,0,E);null!=y&&null==y.comment.id&&null==y.comment.pCommentId&&(H.appendChild(y.div),d(y.comment,y.div,y.saveCallback,y.deleteOnCancel))},mxUtils.bind(this,function(b){H.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(b&&b.message?
-": "+b.message:""));this.hasError=!0})):H.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});C();this.refreshComments=C;D=mxUtils.bind(this,function(){function b(c){var e=d[c.id];if(null!=e)for(f(c,e),e=0;null!=c.replies&&e<c.replies.length;e++)b(c.replies[e])}if(this.window.isVisible()){for(var c=H.querySelectorAll(".geCommentDate"),d={},e=0;e<c.length;e++){var g=c[e];d[g.getAttribute("data-commentId")]=g}for(e=0;e<J.length;e++)b(J[e])}});setInterval(D,6E4);this.refreshCommentsTime=D;this.window=
-new mxWindow(mxResources.get("comments"),x,c,e,k,g,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(b,c){var d=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;b=Math.max(0,Math.min(b,(window.innerWidth||
+": "+b.message:""));this.hasError=!0})):H.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});C();this.refreshComments=C;D=mxUtils.bind(this,function(){function b(c){var e=d[c.id];if(null!=e)for(g(c,e),e=0;null!=c.replies&&e<c.replies.length;e++)b(c.replies[e])}if(this.window.isVisible()){for(var c=H.querySelectorAll(".geCommentDate"),d={},e=0;e<c.length;e++){var f=c[e];d[f.getAttribute("data-commentId")]=f}for(e=0;e<J.length;e++)b(J[e])}});setInterval(D,6E4);this.refreshCommentsTime=D;this.window=
+new mxWindow(mxResources.get("comments"),x,c,e,k,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(b,c){var d=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;b=Math.max(0,Math.min(b,(window.innerWidth||
document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));c=Math.max(0,Math.min(c,d-this.table.clientHeight-48));this.getX()==b&&this.getY()==c||mxWindow.prototype.setLocation.apply(this,arguments)};var K=mxUtils.bind(this,function(){var b=this.window.getX(),c=this.window.getY();this.window.setLocation(b,c)});mxEvent.addListener(window,"resize",K);this.destroy=function(){mxEvent.removeListener(window,"resize",K);this.window.destroy()}},ConfirmDialog=function(b,c,e,
-k,g,p,t,d,f,l,q){var m=document.createElement("div");m.style.textAlign="center";q=null!=q?q:44;var n=document.createElement("div");n.style.padding="6px";n.style.overflow="auto";n.style.maxHeight=q+"px";n.style.lineHeight="1.2em";mxUtils.write(n,c);m.appendChild(n);null!=l&&(n=document.createElement("div"),n.style.padding="6px 0 6px 0",c=document.createElement("img"),c.setAttribute("src",l),n.appendChild(c),m.appendChild(n));l=document.createElement("div");l.style.textAlign="center";l.style.whiteSpace=
-"nowrap";var u=document.createElement("input");u.setAttribute("type","checkbox");p=mxUtils.button(p||mxResources.get("cancel"),function(){b.hideDialog();null!=k&&k(u.checked)});p.className="geBtn";null!=d&&(p.innerHTML=d+"<br>"+p.innerHTML,p.style.paddingBottom="8px",p.style.paddingTop="8px",p.style.height="auto",p.style.width="40%");b.editor.cancelFirst&&l.appendChild(p);var v=mxUtils.button(g||mxResources.get("ok"),function(){b.hideDialog();null!=e&&e(u.checked)});l.appendChild(v);null!=t?(v.innerHTML=
-t+"<br>"+v.innerHTML+"<br>",v.style.paddingBottom="8px",v.style.paddingTop="8px",v.style.height="auto",v.className="geBtn",v.style.width="40%"):v.className="geBtn gePrimaryBtn";b.editor.cancelFirst||l.appendChild(p);m.appendChild(l);f?(l.style.marginTop="10px",n=document.createElement("p"),n.style.marginTop="20px",n.style.marginBottom="0px",n.appendChild(u),g=document.createElement("span"),mxUtils.write(g," "+mxResources.get("rememberThisSetting")),n.appendChild(g),m.appendChild(n),mxEvent.addListener(g,
+k,f,p,t,d,g,l,q){var m=document.createElement("div");m.style.textAlign="center";q=null!=q?q:44;var n=document.createElement("div");n.style.padding="6px";n.style.overflow="auto";n.style.maxHeight=q+"px";n.style.lineHeight="1.2em";mxUtils.write(n,c);m.appendChild(n);null!=l&&(n=document.createElement("div"),n.style.padding="6px 0 6px 0",c=document.createElement("img"),c.setAttribute("src",l),n.appendChild(c),m.appendChild(n));l=document.createElement("div");l.style.textAlign="center";l.style.whiteSpace=
+"nowrap";var u=document.createElement("input");u.setAttribute("type","checkbox");p=mxUtils.button(p||mxResources.get("cancel"),function(){b.hideDialog();null!=k&&k(u.checked)});p.className="geBtn";null!=d&&(p.innerHTML=d+"<br>"+p.innerHTML,p.style.paddingBottom="8px",p.style.paddingTop="8px",p.style.height="auto",p.style.width="40%");b.editor.cancelFirst&&l.appendChild(p);var v=mxUtils.button(f||mxResources.get("ok"),function(){b.hideDialog();null!=e&&e(u.checked)});l.appendChild(v);null!=t?(v.innerHTML=
+t+"<br>"+v.innerHTML+"<br>",v.style.paddingBottom="8px",v.style.paddingTop="8px",v.style.height="auto",v.className="geBtn",v.style.width="40%"):v.className="geBtn gePrimaryBtn";b.editor.cancelFirst||l.appendChild(p);m.appendChild(l);g?(l.style.marginTop="10px",n=document.createElement("p"),n.style.marginTop="20px",n.style.marginBottom="0px",n.appendChild(u),f=document.createElement("span"),mxUtils.write(f," "+mxResources.get("rememberThisSetting")),n.appendChild(f),m.appendChild(n),mxEvent.addListener(f,
"click",function(b){u.checked=!u.checked;mxEvent.consume(b)})):l.style.marginTop="12px";this.init=function(){v.focus()};this.container=m};function DiagramPage(b,c){this.node=b;null!=c?this.node.setAttribute("id",c):null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};
DiagramPage.prototype.setName=function(b){null==b?this.node.removeAttribute("name"):this.node.setAttribute("name",b)};function RenamePage(b,c,e){this.ui=b;this.page=c;this.previous=this.name=e}RenamePage.prototype.execute=function(){var b=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=b;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};
function MovePage(b,c,e){this.ui=b;this.oldIndex=c;this.newIndex=e}MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var b=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=b;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};
function SelectPage(b,c,e){this.ui=b;this.previousPage=this.page=c;this.neverShown=!0;null!=c&&(this.neverShown=null==c.viewState,this.ui.updatePageRoot(c),null!=e&&(c.viewState=e,this.neverShown=!1))}
SelectPage.prototype.execute=function(){var b=mxUtils.indexOf(this.ui.pages,this.previousPage);if(null!=this.page&&0<=b){var b=this.ui.currentPage,c=this.ui.editor,e=c.graph,k=Graph.compressNode(c.getGraphXml(!0));mxUtils.setTextContent(b.node,k);b.viewState=e.getViewState();b.root=e.model.root;null!=b.model&&b.model.rootChanged(b.root);e.view.clear(b.root,!0);e.clearSelection();this.ui.currentPage=this.previousPage;this.previousPage=b;b=this.ui.currentPage;e.model.prefix=Editor.guid()+"-";e.model.rootChanged(b.root);
e.setViewState(b.viewState);e.gridEnabled=e.gridEnabled&&(!this.ui.editor.isChromelessView()||"1"==urlParams.grid);c.updateGraphComponents();e.view.validate();e.blockMathRender=!0;e.sizeDidChange();e.blockMathRender=!1;this.neverShown&&(this.neverShown=!1,e.selectUnlockedLayer());c.graph.fireEvent(new mxEventObject(mxEvent.ROOT));c.fireEvent(new mxEventObject("pageSelected","change",this))}};
-function ChangePage(b,c,e,k,g){SelectPage.call(this,b,e);this.relatedPage=c;this.index=k;this.previousIndex=null;this.noSelect=g}mxUtils.extend(ChangePage,SelectPage);
+function ChangePage(b,c,e,k,f){SelectPage.call(this,b,e);this.relatedPage=c;this.index=k;this.previousIndex=null;this.noSelect=f}mxUtils.extend(ChangePage,SelectPage);
ChangePage.prototype.execute=function(){this.ui.editor.fireEvent(new mxEventObject("beforePageChange","change",this));this.previousIndex=this.index;if(null==this.index){var b=mxUtils.indexOf(this.ui.pages,this.relatedPage);this.ui.pages.splice(b,1);this.index=b}else this.ui.pages.splice(this.index,0,this.relatedPage),this.index=null;this.noSelect||SelectPage.prototype.execute.apply(this,arguments)};EditorUi.prototype.tabContainerHeight=38;EditorUi.prototype.getSelectedPageIndex=function(){return this.getPageIndex(this.currentPage)};
EditorUi.prototype.getPageIndex=function(b){var c=null;if(null!=this.pages&&null!=b)for(var e=0;e<this.pages.length;e++)if(this.pages[e]==b){c=e;break}return c};EditorUi.prototype.getPageById=function(b){if(null!=this.pages)for(var c=0;c<this.pages.length;c++)if(this.pages[c].getId()==b)return this.pages[c];return null};
-EditorUi.prototype.createImageForPageLink=function(b,c,e){var k=b.indexOf(","),g=null;0<k&&(k=this.getPageById(b.substring(k+1)),null!=k&&k!=c&&(g=this.getImageForPage(k,c,e),g.originalSrc=b));null==g&&(g={originalSrc:b});return g};
-EditorUi.prototype.getImageForPage=function(b,c,e){e=null!=e?e:this.editor.graph;var k=e.getGlobalVariable,g=this.createTemporaryGraph(e.getStylesheet());g.defaultPageBackgroundColor=e.defaultPageBackgroundColor;g.shapeBackgroundColor=e.shapeBackgroundColor;g.shapeForegroundColor=e.shapeForegroundColor;var p=this.getPageIndex(null!=c?c:this.currentPage);g.getGlobalVariable=function(b){return"pagenumber"==b?p+1:"page"==b&&null!=c?c.getName():k.apply(this,arguments)};document.body.appendChild(g.container);
-this.updatePageRoot(b);g.model.setRoot(b.root);b=g.getSvg(null,null,null,null,null,null,null,null,null,null,null,!0);e=g.getGraphBounds();document.body.removeChild(g.container);return new mxImage(Editor.createSvgDataUri(mxUtils.getXml(b)),e.width,e.height,e.x,e.y)};
+EditorUi.prototype.createImageForPageLink=function(b,c,e){var k=b.indexOf(","),f=null;0<k&&(k=this.getPageById(b.substring(k+1)),null!=k&&k!=c&&(f=this.getImageForPage(k,c,e),f.originalSrc=b));null==f&&(f={originalSrc:b});return f};
+EditorUi.prototype.getImageForPage=function(b,c,e){e=null!=e?e:this.editor.graph;var k=e.getGlobalVariable,f=this.createTemporaryGraph(e.getStylesheet());f.defaultPageBackgroundColor=e.defaultPageBackgroundColor;f.shapeBackgroundColor=e.shapeBackgroundColor;f.shapeForegroundColor=e.shapeForegroundColor;var p=this.getPageIndex(null!=c?c:this.currentPage);f.getGlobalVariable=function(b){return"pagenumber"==b?p+1:"page"==b&&null!=c?c.getName():k.apply(this,arguments)};document.body.appendChild(f.container);
+this.updatePageRoot(b);f.model.setRoot(b.root);b=f.getSvg(null,null,null,null,null,null,null,null,null,null,null,!0);e=f.getGraphBounds();document.body.removeChild(f.container);return new mxImage(Editor.createSvgDataUri(mxUtils.getXml(b)),e.width,e.height,e.x,e.y)};
EditorUi.prototype.initPages=function(){if(!this.editor.graph.standalone){this.actions.addAction("previousPage",mxUtils.bind(this,function(){this.selectNextPage(!1)}));this.actions.addAction("nextPage",mxUtils.bind(this,function(){this.selectNextPage(!0)}));this.isPagesEnabled()&&(this.keyHandler.bindAction(33,!0,"previousPage",!0),this.keyHandler.bindAction(34,!0,"nextPage",!0));var b=this.editor.graph,c=b.view.validateBackground;b.view.validateBackground=mxUtils.bind(this,function(){if(null!=this.tabContainer){var e=
this.tabContainer.style.height;this.tabContainer.style.height=null==this.fileNode||null==this.pages||1==this.pages.length&&"0"==urlParams.pages?"0px":this.tabContainerHeight+"px";e!=this.tabContainer.style.height&&this.refresh(!1)}c.apply(b.view,arguments)});var e=null,k=mxUtils.bind(this,function(){this.updateTabContainer();var c=this.currentPage;null!=c&&c!=e&&(null==c.viewState||null==c.viewState.scrollLeft?(this.resetScrollbars(),b.isLightboxView()&&this.lightboxFit(),null!=this.chromelessResize&&
(b.container.scrollLeft=0,b.container.scrollTop=0,this.chromelessResize())):(b.container.scrollLeft=b.view.translate.x*b.view.scale+c.viewState.scrollLeft,b.container.scrollTop=b.view.translate.y*b.view.scale+c.viewState.scrollTop),e=c);null!=this.actions.layersWindow&&this.actions.layersWindow.refreshLayers();"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?1!=MathJax.Hub.queue.pending||null==this.editor||this.editor.graph.mathEnabled||MathJax.Hub.Queue(mxUtils.bind(this,function(){null!=
this.editor&&this.editor.graph.refresh()})):"undefined"===typeof Editor.MathJaxClear||null!=this.editor&&this.editor.graph.mathEnabled||Editor.MathJaxClear()});this.editor.graph.model.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(b,c){for(var e=c.getProperty("edit").changes,d=0;d<e.length;d++)if(e[d]instanceof SelectPage||e[d]instanceof RenamePage||e[d]instanceof MovePage||e[d]instanceof mxRootChange){k();break}}));null!=this.toolbar&&this.editor.addListener("pageSelected",this.toolbar.updateZoom)}};
EditorUi.prototype.restoreViewState=function(b,c,e){b=null!=b?this.getPageById(b.getId()):null;var k=this.editor.graph;null!=b&&null!=this.currentPage&&null!=this.pages&&(b!=this.currentPage?this.selectPage(b,!0,c):(k.setViewState(c),this.editor.updateGraphComponents(),k.view.revalidate(),k.sizeDidChange()),k.container.scrollLeft=k.view.translate.x*k.view.scale+c.scrollLeft,k.container.scrollTop=k.view.translate.y*k.view.scale+c.scrollTop,k.restoreSelection(e))};
-Graph.prototype.createViewState=function(b){var c=b.getAttribute("page"),e=parseFloat(b.getAttribute("pageScale")),k=parseFloat(b.getAttribute("pageWidth")),g=parseFloat(b.getAttribute("pageHeight")),p=b.getAttribute("background"),t=this.parseBackgroundImage(b.getAttribute("backgroundImage")),d=b.getAttribute("extFonts");if(d)try{d=d.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}})}catch(f){console.log("ExtFonts format error: "+f.message)}return{gridEnabled:"0"!=b.getAttribute("grid"),
-gridSize:parseFloat(b.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=b.getAttribute("guides"),foldingEnabled:"0"!=b.getAttribute("fold"),shadowVisible:"1"==b.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=c?"0"!=c:this.defaultPageVisible,background:null!=p&&0<p.length?p:null,backgroundImage:t,pageScale:isNaN(e)?mxGraph.prototype.pageScale:e,pageFormat:isNaN(k)||isNaN(g)?"undefined"===typeof mxSettings||null!=this.defaultPageFormat?mxGraph.prototype.pageFormat:
-mxSettings.getPageFormat():new mxRectangle(0,0,k,g),tooltips:"0"!=b.getAttribute("tooltips"),connect:"0"!=b.getAttribute("connect"),arrows:"0"!=b.getAttribute("arrows"),mathEnabled:"1"==b.getAttribute("math"),selectionCells:null,defaultParent:null,scrollbars:this.defaultScrollbars,scale:1,hiddenTags:[],extFonts:d||[]}};
+Graph.prototype.createViewState=function(b){var c=b.getAttribute("page"),e=parseFloat(b.getAttribute("pageScale")),k=parseFloat(b.getAttribute("pageWidth")),f=parseFloat(b.getAttribute("pageHeight")),p=b.getAttribute("background"),t=this.parseBackgroundImage(b.getAttribute("backgroundImage")),d=b.getAttribute("extFonts");if(d)try{d=d.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}})}catch(g){console.log("ExtFonts format error: "+g.message)}return{gridEnabled:"0"!=b.getAttribute("grid"),
+gridSize:parseFloat(b.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=b.getAttribute("guides"),foldingEnabled:"0"!=b.getAttribute("fold"),shadowVisible:"1"==b.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=c?"0"!=c:this.defaultPageVisible,background:null!=p&&0<p.length?p:null,backgroundImage:t,pageScale:isNaN(e)?mxGraph.prototype.pageScale:e,pageFormat:isNaN(k)||isNaN(f)?"undefined"===typeof mxSettings||null!=this.defaultPageFormat?mxGraph.prototype.pageFormat:
+mxSettings.getPageFormat():new mxRectangle(0,0,k,f),tooltips:"0"!=b.getAttribute("tooltips"),connect:"0"!=b.getAttribute("connect"),arrows:"0"!=b.getAttribute("arrows"),mathEnabled:"1"==b.getAttribute("math"),selectionCells:null,defaultParent:null,scrollbars:this.defaultScrollbars,scale:1,hiddenTags:[],extFonts:d||[]}};
Graph.prototype.saveViewState=function(b,c,e,k){e||(c.setAttribute("grid",null==b||b.gridEnabled?"1":"0"),c.setAttribute("gridSize",null!=b?b.gridSize:mxGraph.prototype.gridSize),c.setAttribute("guides",null==b||b.guidesEnabled?"1":"0"),c.setAttribute("tooltips",null==b||b.tooltips?"1":"0"),c.setAttribute("connect",null==b||b.connect?"1":"0"),c.setAttribute("arrows",null==b||b.arrows?"1":"0"),c.setAttribute("page",null==b&&this.defaultPageVisible||null!=b&&b.pageVisible?"1":"0"),c.setAttribute("fold",
null==b||b.foldingEnabled?"1":"0"));c.setAttribute("pageScale",null!=b&&null!=b.pageScale?b.pageScale:mxGraph.prototype.pageScale);e=null!=b?b.pageFormat:"undefined"===typeof mxSettings||null!=this.defaultPageFormat?mxGraph.prototype.pageFormat:mxSettings.getPageFormat();null!=e&&(c.setAttribute("pageWidth",e.width),c.setAttribute("pageHeight",e.height));null!=b&&(null!=b.background&&c.setAttribute("background",b.background),k=this.getBackgroundImageObject(b.backgroundImage,k),null!=k&&c.setAttribute("backgroundImage",
JSON.stringify(k)));c.setAttribute("math",null!=b&&b.mathEnabled?"1":"0");c.setAttribute("shadow",null!=b&&b.shadowVisible?"1":"0");null!=b&&null!=b.extFonts&&0<b.extFonts.length&&c.setAttribute("extFonts",b.extFonts.map(function(b){return b.name+"^"+b.url}).join("|"))};
Graph.prototype.getViewState=function(){return{defaultParent:this.defaultParent,currentRoot:this.view.currentRoot,gridEnabled:this.gridEnabled,gridSize:this.gridSize,guidesEnabled:this.graphHandler.guidesEnabled,foldingEnabled:this.foldingEnabled,shadowVisible:this.shadowVisible,scrollbars:this.scrollbars,pageVisible:this.pageVisible,background:this.background,backgroundImage:this.backgroundImage,pageScale:this.pageScale,pageFormat:this.pageFormat,tooltips:this.tooltipHandler.isEnabled(),connect:this.connectionHandler.isEnabled(),
arrows:this.connectionArrowsEnabled,scale:this.view.scale,scrollLeft:this.container.scrollLeft-this.view.translate.x*this.view.scale,scrollTop:this.container.scrollTop-this.view.translate.y*this.view.scale,translate:this.view.translate.clone(),lastPasteXml:this.lastPasteXml,pasteCounter:this.pasteCounter,mathEnabled:this.mathEnabled,hiddenTags:this.hiddenTags,extFonts:this.extFonts}};
Graph.prototype.setViewState=function(b,c){if(null!=b){this.lastPasteXml=b.lastPasteXml;this.pasteCounter=b.pasteCounter||0;this.mathEnabled=b.mathEnabled;this.gridEnabled=b.gridEnabled;this.gridSize=b.gridSize;this.graphHandler.guidesEnabled=b.guidesEnabled;this.foldingEnabled=b.foldingEnabled;this.setShadowVisible(b.shadowVisible,!1);this.scrollbars=b.scrollbars;this.pageVisible=!this.isViewer()&&b.pageVisible;this.background=b.background;this.pageScale=b.pageScale;this.pageFormat=b.pageFormat;
-this.view.currentRoot=b.currentRoot;this.defaultParent=b.defaultParent;this.connectionArrowsEnabled=b.arrows;this.setTooltips(b.tooltips);this.setConnectable(b.connect);this.setBackgroundImage(b.backgroundImage);this.hiddenTags=b.hiddenTags;var e=this.extFonts;this.extFonts=b.extFonts||[];if(c&&null!=e)for(var k=0;k<e.length;k++){var g=document.getElementById("extFont_"+e[k].name);null!=g&&g.parentNode.removeChild(g)}for(k=0;k<this.extFonts.length;k++)this.addExtFont(this.extFonts[k].name,this.extFonts[k].url,
+this.view.currentRoot=b.currentRoot;this.defaultParent=b.defaultParent;this.connectionArrowsEnabled=b.arrows;this.setTooltips(b.tooltips);this.setConnectable(b.connect);this.setBackgroundImage(b.backgroundImage);this.hiddenTags=b.hiddenTags;var e=this.extFonts;this.extFonts=b.extFonts||[];if(c&&null!=e)for(var k=0;k<e.length;k++){var f=document.getElementById("extFont_"+e[k].name);null!=f&&f.parentNode.removeChild(f)}for(k=0;k<this.extFonts.length;k++)this.addExtFont(this.extFonts[k].name,this.extFonts[k].url,
!0);this.view.scale=null!=b.scale?b.scale:1;null==this.view.currentRoot||this.model.contains(this.view.currentRoot)||(this.view.currentRoot=null);null==this.defaultParent||this.model.contains(this.defaultParent)||(this.setDefaultParent(null),this.selectUnlockedLayer());null!=b.translate&&(this.view.translate=b.translate)}else this.view.currentRoot=null,this.view.scale=1,this.gridEnabled=this.defaultGridEnabled,this.gridSize=mxGraph.prototype.gridSize,this.pageScale=mxGraph.prototype.pageScale,this.pageFormat=
"undefined"===typeof mxSettings||null!=this.defaultPageFormat?mxGraph.prototype.pageFormat:mxSettings.getPageFormat(),this.pageVisible=this.defaultPageVisible,this.backgroundImage=this.background=null,this.scrollbars=this.defaultScrollbars,this.foldingEnabled=this.graphHandler.guidesEnabled=!0,this.setShadowVisible(!1,!1),this.defaultParent=null,this.setTooltips(!0),this.setConnectable(!0),this.lastPasteXml=null,this.pasteCounter=0,this.mathEnabled=this.defaultMathEnabled,this.connectionArrowsEnabled=
!0,this.hiddenTags=[],this.extFonts=[];this.preferPageSize=this.pageBreaksVisible=this.pageVisible;this.fireEvent(new mxEventObject("viewStateChanged","state",b))};
-Graph.prototype.addExtFont=function(b,c,e){if(b&&c){"1"!=urlParams["ext-fonts"]&&(Graph.recentCustomFonts[b.toLowerCase()]={name:b,url:c});var k="extFont_"+b;if(null==document.getElementById(k))if(0==c.indexOf(Editor.GOOGLE_FONTS))mxClient.link("stylesheet",c,null,k);else{document.getElementsByTagName("head");var g=document.createElement("style");g.appendChild(document.createTextNode('@font-face {\n\tfont-family: "'+b+'";\n\tsrc: url("'+c+'");\n}'));g.setAttribute("id",k);document.getElementsByTagName("head")[0].appendChild(g)}if(!e){null==
-this.extFonts&&(this.extFonts=[]);e=this.extFonts;k=!0;for(g=0;g<e.length;g++)if(e[g].name==b){k=!1;break}k&&this.extFonts.push({name:b,url:c})}}};
+Graph.prototype.addExtFont=function(b,c,e){if(b&&c){"1"!=urlParams["ext-fonts"]&&(Graph.recentCustomFonts[b.toLowerCase()]={name:b,url:c});var k="extFont_"+b;if(null==document.getElementById(k))if(0==c.indexOf(Editor.GOOGLE_FONTS))mxClient.link("stylesheet",c,null,k);else{document.getElementsByTagName("head");var f=document.createElement("style");f.appendChild(document.createTextNode('@font-face {\n\tfont-family: "'+b+'";\n\tsrc: url("'+c+'");\n}'));f.setAttribute("id",k);document.getElementsByTagName("head")[0].appendChild(f)}if(!e){null==
+this.extFonts&&(this.extFonts=[]);e=this.extFonts;k=!0;for(f=0;f<e.length;f++)if(e[f].name==b){k=!1;break}k&&this.extFonts.push({name:b,url:c})}}};
EditorUi.prototype.updatePageRoot=function(b,c){if(null==b.root){var e=this.editor.extractGraphModel(b.node,null,c),k=Editor.extractParserError(e);if(k)throw Error(k);null!=e?(b.graphModelNode=e,b.viewState=this.editor.graph.createViewState(e),k=new mxCodec(e.ownerDocument),b.root=k.decode(e).root):b.root=this.editor.graph.model.createRoot()}else if(null==b.viewState){if(null==b.graphModelNode){e=this.editor.extractGraphModel(b.node);if(k=Editor.extractParserError(e))throw Error(k);null!=e&&(b.graphModelNode=
e)}null!=b.graphModelNode&&(b.viewState=this.editor.graph.createViewState(b.graphModelNode))}return b};
-EditorUi.prototype.selectPage=function(b,c,e){try{if(b!=this.currentPage){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c=null!=c?c:!1;this.editor.graph.isMouseDown=!1;this.editor.graph.reset();var k=this.editor.graph.model.createUndoableEdit();k.ignoreEdit=!0;var g=new SelectPage(this,b,e);g.execute();k.add(g);k.notify();this.editor.graph.tooltipHandler.hide();c||this.editor.graph.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",k))}}catch(p){this.handleError(p)}};
+EditorUi.prototype.selectPage=function(b,c,e){try{if(b!=this.currentPage){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c=null!=c?c:!1;this.editor.graph.isMouseDown=!1;this.editor.graph.reset();var k=this.editor.graph.model.createUndoableEdit();k.ignoreEdit=!0;var f=new SelectPage(this,b,e);f.execute();k.add(f);k.notify();this.editor.graph.tooltipHandler.hide();c||this.editor.graph.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",k))}}catch(p){this.handleError(p)}};
EditorUi.prototype.selectNextPage=function(b){var c=this.currentPage;null!=c&&null!=this.pages&&(c=mxUtils.indexOf(this.pages,c),b?this.selectPage(this.pages[mxUtils.mod(c+1,this.pages.length)]):b||this.selectPage(this.pages[mxUtils.mod(c-1,this.pages.length)]))};
EditorUi.prototype.insertPage=function(b,c){if(this.editor.graph.isEnabled()){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b=null!=b?b:this.createPage(null,this.createPageId());c=null!=c?c:this.pages.length;var e=new ChangePage(this,b,b,c);this.editor.graph.model.execute(e)}return b};EditorUi.prototype.createPageId=function(){var b;do b=Editor.guid();while(null!=this.getPageById(b));return b};
EditorUi.prototype.createPage=function(b,c){var e=new DiagramPage(this.fileNode.ownerDocument.createElement("diagram"),c);e.setName(null!=b?b:this.createPageName());return e};EditorUi.prototype.createPageName=function(){for(var b={},c=0;c<this.pages.length;c++){var e=this.pages[c].getName();null!=e&&0<e.length&&(b[e]=e)}c=this.pages.length;do e=mxResources.get("pageWithNumber",[++c]);while(null!=b[e]);return e};
-EditorUi.prototype.removePage=function(b){try{var c=this.editor.graph,e=mxUtils.indexOf(this.pages,b);if(c.isEnabled()&&0<=e){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c.model.beginUpdate();try{var k=this.currentPage;k==b&&1<this.pages.length?(e==this.pages.length-1?e--:e++,k=this.pages[e]):1>=this.pages.length&&(k=this.insertPage(),c.model.execute(new RenamePage(this,k,mxResources.get("pageWithNumber",[1]))));c.model.execute(new ChangePage(this,b,k))}finally{c.model.endUpdate()}}}catch(g){this.handleError(g)}return b};
-EditorUi.prototype.duplicatePage=function(b,c){var e=null;try{var k=this.editor.graph;if(k.isEnabled()){k.isEditing()&&k.stopEditing();var g=b.node.cloneNode(!1);g.removeAttribute("id");var p={},t=k.createCellLookup([k.model.root]),e=new DiagramPage(g);e.root=k.cloneCell(k.model.root,null,p);e.viewState=k.getViewState();e.viewState.scale=1;e.viewState.scrollLeft=null;e.viewState.scrollTop=null;e.viewState.currentRoot=null;e.viewState.defaultParent=null;e.setName(c);e=this.insertPage(e,mxUtils.indexOf(this.pages,
+EditorUi.prototype.removePage=function(b){try{var c=this.editor.graph,e=mxUtils.indexOf(this.pages,b);if(c.isEnabled()&&0<=e){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);c.model.beginUpdate();try{var k=this.currentPage;k==b&&1<this.pages.length?(e==this.pages.length-1?e--:e++,k=this.pages[e]):1>=this.pages.length&&(k=this.insertPage(),c.model.execute(new RenamePage(this,k,mxResources.get("pageWithNumber",[1]))));c.model.execute(new ChangePage(this,b,k))}finally{c.model.endUpdate()}}}catch(f){this.handleError(f)}return b};
+EditorUi.prototype.duplicatePage=function(b,c){var e=null;try{var k=this.editor.graph;if(k.isEnabled()){k.isEditing()&&k.stopEditing();var f=b.node.cloneNode(!1);f.removeAttribute("id");var p={},t=k.createCellLookup([k.model.root]),e=new DiagramPage(f);e.root=k.cloneCell(k.model.root,null,p);e.viewState=k.getViewState();e.viewState.scale=1;e.viewState.scrollLeft=null;e.viewState.scrollTop=null;e.viewState.currentRoot=null;e.viewState.defaultParent=null;e.setName(c);e=this.insertPage(e,mxUtils.indexOf(this.pages,
b)+1);k.updateCustomLinks(k.createCellMapping(p,t),[e.root])}}catch(d){this.handleError(d)}return e};EditorUi.prototype.renamePage=function(b){if(this.editor.graph.isEnabled()){var c=new FilenameDialog(this,b.getName(),mxResources.get("rename"),mxUtils.bind(this,function(c){null!=c&&0<c.length&&this.editor.graph.model.execute(new RenamePage(this,b,c))}),mxResources.get("rename"));this.showDialog(c.container,300,80,!0,!0);c.init()}return b};
EditorUi.prototype.movePage=function(b,c){this.editor.graph.model.execute(new MovePage(this,b,c))};EditorUi.prototype.createTabContainer=function(){var b=document.createElement("div");b.className="geTabContainer";b.style.position="absolute";b.style.whiteSpace="nowrap";b.style.overflow="hidden";b.style.height="0px";return b};
EditorUi.prototype.updateTabContainer=function(){if(null!=this.tabContainer&&null!=this.pages){var b=this.editor.graph,c=document.createElement("div");c.style.position="relative";c.style.display="inline-block";c.style.verticalAlign="top";c.style.height=this.tabContainer.style.height;c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.fontSize="13px";c.style.marginLeft="30px";for(var e=this.editor.isChromelessView()?29:59,k=Math.min(140,Math.max(20,(this.tabContainer.clientWidth-e)/this.pages.length)+
-1),g=null,p=0;p<this.pages.length;p++)mxUtils.bind(this,function(d,e){this.pages[d]==this.currentPage?(e.className="geActivePage",e.style.backgroundColor=Editor.isDarkMode()?Editor.darkColor:"#fff"):e.className="geInactivePage";e.setAttribute("draggable","true");mxEvent.addListener(e,"dragstart",mxUtils.bind(this,function(c){b.isEnabled()?(mxClient.IS_FF&&c.dataTransfer.setData("Text","<diagram/>"),g=d):mxEvent.consume(c)}));mxEvent.addListener(e,"dragend",mxUtils.bind(this,function(b){g=null;b.stopPropagation();
-b.preventDefault()}));mxEvent.addListener(e,"dragover",mxUtils.bind(this,function(b){null!=g&&(b.dataTransfer.dropEffect="move");b.stopPropagation();b.preventDefault()}));mxEvent.addListener(e,"drop",mxUtils.bind(this,function(b){null!=g&&d!=g&&this.movePage(g,d);b.stopPropagation();b.preventDefault()}));c.appendChild(e)})(p,this.createTabForPage(this.pages[p],k,this.pages[p]!=this.currentPage,p+1));this.tabContainer.innerHTML="";this.tabContainer.appendChild(c);k=this.createPageMenuTab();this.tabContainer.appendChild(k);
+1),f=null,p=0;p<this.pages.length;p++)mxUtils.bind(this,function(d,e){this.pages[d]==this.currentPage?(e.className="geActivePage",e.style.backgroundColor=Editor.isDarkMode()?Editor.darkColor:"#fff"):e.className="geInactivePage";e.setAttribute("draggable","true");mxEvent.addListener(e,"dragstart",mxUtils.bind(this,function(c){b.isEnabled()?(mxClient.IS_FF&&c.dataTransfer.setData("Text","<diagram/>"),f=d):mxEvent.consume(c)}));mxEvent.addListener(e,"dragend",mxUtils.bind(this,function(b){f=null;b.stopPropagation();
+b.preventDefault()}));mxEvent.addListener(e,"dragover",mxUtils.bind(this,function(b){null!=f&&(b.dataTransfer.dropEffect="move");b.stopPropagation();b.preventDefault()}));mxEvent.addListener(e,"drop",mxUtils.bind(this,function(b){null!=f&&d!=f&&this.movePage(f,d);b.stopPropagation();b.preventDefault()}));c.appendChild(e)})(p,this.createTabForPage(this.pages[p],k,this.pages[p]!=this.currentPage,p+1));this.tabContainer.innerHTML="";this.tabContainer.appendChild(c);k=this.createPageMenuTab();this.tabContainer.appendChild(k);
k=null;this.isPageInsertTabVisible()&&(k=this.createPageInsertTab(),this.tabContainer.appendChild(k));if(c.clientWidth>this.tabContainer.clientWidth-e){null!=k&&(k.style.position="absolute",k.style.right="0px",c.style.marginRight="30px");var t=this.createControlTab(4,"&nbsp;&#10094;&nbsp;");t.style.position="absolute";t.style.right=this.editor.chromeless?"29px":"55px";t.style.fontSize="13pt";this.tabContainer.appendChild(t);var d=this.createControlTab(4,"&nbsp;&#10095;");d.style.position="absolute";
-d.style.right=this.editor.chromeless?"0px":"29px";d.style.fontSize="13pt";this.tabContainer.appendChild(d);var f=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));c.style.width=f+"px";mxEvent.addListener(t,"click",mxUtils.bind(this,function(b){c.scrollLeft-=Math.max(20,f-20);mxUtils.setOpacity(t,0<c.scrollLeft?100:50);mxUtils.setOpacity(d,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(b)}));mxUtils.setOpacity(t,0<c.scrollLeft?100:50);mxUtils.setOpacity(d,
-c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){c.scrollLeft+=Math.max(20,f-20);mxUtils.setOpacity(t,0<c.scrollLeft?100:50);mxUtils.setOpacity(d,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(b)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()};
+d.style.right=this.editor.chromeless?"0px":"29px";d.style.fontSize="13pt";this.tabContainer.appendChild(d);var g=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));c.style.width=g+"px";mxEvent.addListener(t,"click",mxUtils.bind(this,function(b){c.scrollLeft-=Math.max(20,g-20);mxUtils.setOpacity(t,0<c.scrollLeft?100:50);mxUtils.setOpacity(d,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(b)}));mxUtils.setOpacity(t,0<c.scrollLeft?100:50);mxUtils.setOpacity(d,
+c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.addListener(d,"click",mxUtils.bind(this,function(b){c.scrollLeft+=Math.max(20,g-20);mxUtils.setOpacity(t,0<c.scrollLeft?100:50);mxUtils.setOpacity(d,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(b)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()};
EditorUi.prototype.createTab=function(b){var c=document.createElement("div");c.style.display="inline-block";c.style.whiteSpace="nowrap";c.style.boxSizing="border-box";c.style.position="relative";c.style.overflow="hidden";c.style.textAlign="center";c.style.marginLeft="-1px";c.style.height=this.tabContainer.clientHeight+"px";c.style.padding="12px 4px 8px 4px";c.style.border=Editor.isDarkMode()?"1px solid #505759":"1px solid #e8eaed";c.style.borderTopStyle="none";c.style.borderBottomStyle="none";c.style.backgroundColor=
this.tabContainer.style.backgroundColor;c.style.cursor="move";c.style.color="gray";b&&(mxEvent.addListener(c,"mouseenter",mxUtils.bind(this,function(b){this.editor.graph.isMouseDown||(c.style.backgroundColor=Editor.isDarkMode()?"black":"#e8eaed",mxEvent.consume(b))})),mxEvent.addListener(c,"mouseleave",mxUtils.bind(this,function(b){c.style.backgroundColor=this.tabContainer.style.backgroundColor;mxEvent.consume(b)})));return c};
EditorUi.prototype.createControlTab=function(b,c,e){e=this.createTab(null!=e?e:!0);e.style.lineHeight=this.tabContainerHeight+"px";e.style.paddingTop=b+"px";e.style.cursor="pointer";e.style.width="30px";e.innerHTML=c;null!=e.firstChild&&null!=e.firstChild.style&&mxUtils.setOpacity(e.firstChild,40);return e};
@@ -3846,31 +3855,31 @@ var c=new mxPopupMenu(mxUtils.bind(this,function(b,c){for(var d=0;d<this.pages.l
null,mxUtils.bind(this,function(){this.insertPage()}),c);var e=this.currentPage;null!=e&&(b.addSeparator(c),d=e.getName(),b.addItem(mxResources.get("removeIt",[d]),null,mxUtils.bind(this,function(){this.removePage(e)}),c),b.addItem(mxResources.get("renameIt",[d]),null,mxUtils.bind(this,function(){this.renamePage(e,e.getName())}),c),b.addSeparator(c),b.addItem(mxResources.get("duplicateIt",[d]),null,mxUtils.bind(this,function(){this.duplicatePage(e,mxResources.get("copyOf",[e.getName()]))}),c))}}));
c.div.className+=" geMenubarMenu";c.smartSeparators=!0;c.showDisabled=!0;c.autoExpand=!0;c.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(c,arguments);c.destroy()});var e=mxEvent.getClientX(b),p=mxEvent.getClientY(b);c.popup(e,p,null,b);this.setCurrentMenu(c);mxEvent.consume(b)}));return b};
EditorUi.prototype.createPageInsertTab=function(){var b=this.createControlTab(4,'<div class="geSprite geSprite-plus"></div>');b.setAttribute("title",mxResources.get("insertPage"));mxEvent.addListener(b,"click",mxUtils.bind(this,function(b){this.insertPage();mxEvent.consume(b)}));var c=b.getElementsByTagName("div")[0];c.style.display="inline-block";c.style.width="21px";c.style.height="21px";return b};
-EditorUi.prototype.createTabForPage=function(b,c,e,k){e=this.createTab(e);var g=b.getName()||mxResources.get("untitled"),p=b.getId();e.setAttribute("title",g+(null!=p?" ("+p+")":"")+" ["+k+"]");mxUtils.write(e,g);e.style.maxWidth=c+"px";e.style.width=c+"px";this.addTabListeners(b,e);42<c&&(e.style.textOverflow="ellipsis");return e};
-EditorUi.prototype.addTabListeners=function(b,c){mxEvent.disableContextMenu(c);var e=this.editor.graph;mxEvent.addListener(c,"dblclick",mxUtils.bind(this,function(c){this.renamePage(b);mxEvent.consume(c)}));var k=!1,g=!1;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(c){k=null!=this.currentMenu;g=b==this.currentPage;e.isMouseDown||g||this.selectPage(b)}),null,mxUtils.bind(this,function(p){if(e.isEnabled()&&!e.isMouseDown&&(mxEvent.isTouchEvent(p)&&g||mxEvent.isPopupTrigger(p))){e.popupMenuHandler.hideMenu();
-this.hideCurrentMenu();if(!mxEvent.isTouchEvent(p)||!k){var t=new mxPopupMenu(this.createPageMenu(b));t.div.className+=" geMenubarMenu";t.smartSeparators=!0;t.showDisabled=!0;t.autoExpand=!0;t.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(t,arguments);this.resetCurrentMenu();t.destroy()});var d=mxEvent.getClientX(p),f=mxEvent.getClientY(p);t.popup(d,f,null,p);this.setCurrentMenu(t,c)}mxEvent.consume(p)}}))};
-EditorUi.prototype.getLinkForPage=function(b,c,e){if(!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp){var k=this.getCurrentFile();if(null!=k&&k.constructor!=LocalFile&&"draw.io"==this.getServiceName()){var g=this.getSearch("create title mode url drive splash state clibs ui viewbox hide-pages".split(" ")),g=g+((0==g.length?"?":"&")+"page-id="+b.getId());null!=c&&(g+="&"+c.join("&"));return(e&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?
-EditorUi.drawHost:"https://"+window.location.host)+"/"+g+"#"+k.getHash()}}return null};
-EditorUi.prototype.createPageMenu=function(b,c){return mxUtils.bind(this,function(e,k){var g=this.editor.graph;e.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,b)+1)}),k);e.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(b)}),k);e.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(b,c)}),k);null!=this.getLinkForPage(b)&&(e.addSeparator(k),e.addItem(mxResources.get("link"),
-null,mxUtils.bind(this,function(){this.showPublishLinkDialog(mxResources.get("url"),!0,null,null,mxUtils.bind(this,function(c,e,d,f,k,q){c=this.createUrlParameters(c,e,d,f,k,q);d||c.push("hide-pages=1");g.isSelectionEmpty()||(d=g.getBoundingBox(g.getSelectionCells()),e=g.view.translate,k=g.view.scale,d.width/=k,d.height/=k,d.x=d.x/k-e.x,d.y=d.y/k-e.y,c.push("viewbox="+encodeURIComponent(JSON.stringify({x:Math.round(d.x),y:Math.round(d.y),width:Math.round(d.width),height:Math.round(d.height),border:100}))));
-f=new EmbedDialog(this,this.getLinkForPage(b,c,f));this.showDialog(f.container,450,240,!0,!0);f.init()}))})));e.addSeparator(k);e.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(b,mxResources.get("copyOf",[b.getName()]))}),k);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"draw.io"!=this.getServiceName()||(e.addSeparator(k),e.addItem(mxResources.get("openInNewWindow"),null,mxUtils.bind(this,function(){this.editor.editAsNew(this.getFileData(!0,null,null,null,
+EditorUi.prototype.createTabForPage=function(b,c,e,k){e=this.createTab(e);var f=b.getName()||mxResources.get("untitled"),p=b.getId();e.setAttribute("title",f+(null!=p?" ("+p+")":"")+" ["+k+"]");mxUtils.write(e,f);e.style.maxWidth=c+"px";e.style.width=c+"px";this.addTabListeners(b,e);42<c&&(e.style.textOverflow="ellipsis");return e};
+EditorUi.prototype.addTabListeners=function(b,c){mxEvent.disableContextMenu(c);var e=this.editor.graph;mxEvent.addListener(c,"dblclick",mxUtils.bind(this,function(c){this.renamePage(b);mxEvent.consume(c)}));var k=!1,f=!1;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(c){k=null!=this.currentMenu;f=b==this.currentPage;e.isMouseDown||f||this.selectPage(b)}),null,mxUtils.bind(this,function(p){if(e.isEnabled()&&!e.isMouseDown&&(mxEvent.isTouchEvent(p)&&f||mxEvent.isPopupTrigger(p))){e.popupMenuHandler.hideMenu();
+this.hideCurrentMenu();if(!mxEvent.isTouchEvent(p)||!k){var t=new mxPopupMenu(this.createPageMenu(b));t.div.className+=" geMenubarMenu";t.smartSeparators=!0;t.showDisabled=!0;t.autoExpand=!0;t.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(t,arguments);this.resetCurrentMenu();t.destroy()});var d=mxEvent.getClientX(p),g=mxEvent.getClientY(p);t.popup(d,g,null,p);this.setCurrentMenu(t,c)}mxEvent.consume(p)}}))};
+EditorUi.prototype.getLinkForPage=function(b,c,e){if(!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp){var k=this.getCurrentFile();if(null!=k&&k.constructor!=LocalFile&&"draw.io"==this.getServiceName()){var f=this.getSearch("create title mode url drive splash state clibs ui viewbox hide-pages".split(" ")),f=f+((0==f.length?"?":"&")+"page-id="+b.getId());null!=c&&(f+="&"+c.join("&"));return(e&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?
+EditorUi.drawHost:"https://"+window.location.host)+"/"+f+"#"+k.getHash()}}return null};
+EditorUi.prototype.createPageMenu=function(b,c){return mxUtils.bind(this,function(e,k){var f=this.editor.graph;e.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,b)+1)}),k);e.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(b)}),k);e.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(b,c)}),k);null!=this.getLinkForPage(b)&&(e.addSeparator(k),e.addItem(mxResources.get("link"),
+null,mxUtils.bind(this,function(){this.showPublishLinkDialog(mxResources.get("url"),!0,null,null,mxUtils.bind(this,function(c,e,d,g,k,q){c=this.createUrlParameters(c,e,d,g,k,q);d||c.push("hide-pages=1");f.isSelectionEmpty()||(d=f.getBoundingBox(f.getSelectionCells()),e=f.view.translate,k=f.view.scale,d.width/=k,d.height/=k,d.x=d.x/k-e.x,d.y=d.y/k-e.y,c.push("viewbox="+encodeURIComponent(JSON.stringify({x:Math.round(d.x),y:Math.round(d.y),width:Math.round(d.width),height:Math.round(d.height),border:100}))));
+g=new EmbedDialog(this,this.getLinkForPage(b,c,g));this.showDialog(g.container,450,240,!0,!0);g.init()}))})));e.addSeparator(k);e.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(b,mxResources.get("copyOf",[b.getName()]))}),k);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"draw.io"!=this.getServiceName()||(e.addSeparator(k),e.addItem(mxResources.get("openInNewWindow"),null,mxUtils.bind(this,function(){this.editor.editAsNew(this.getFileData(!0,null,null,null,
!0,!0))}),k))})};(function(){var b=EditorUi.prototype.refresh;EditorUi.prototype.refresh=function(c){b.apply(this,arguments);this.updateTabContainer()}})();(function(){mxCodecRegistry.getCodec(ChangePageSetup).exclude.push("page")})();(function(){var b=new mxObjectCodec(new MovePage,["ui"]);b.beforeDecode=function(b,e,k){k.ui=b.ui;return e};b.afterDecode=function(b,e,k){b=k.oldIndex;k.oldIndex=k.newIndex;k.newIndex=b;return k};mxCodecRegistry.register(b)})();
(function(){var b=new mxObjectCodec(new RenamePage,["ui","page"]);b.beforeDecode=function(b,e,k){k.ui=b.ui;return e};b.afterDecode=function(b,e,k){b=k.previous;k.previous=k.name;k.name=b;return k};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),c="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");b.afterEncode=function(b,k,g){g.setAttribute("relatedPage",k.relatedPage.getId());null==k.index&&(g.setAttribute("name",k.relatedPage.getName()),null!=k.relatedPage.viewState&&g.setAttribute("viewState",JSON.stringify(k.relatedPage.viewState,function(b,e){return 0>mxUtils.indexOf(c,
-b)?e:void 0})),null!=k.relatedPage.root&&b.encodeCell(k.relatedPage.root,g));return g};b.beforeDecode=function(b,c,g){g.ui=b.ui;g.relatedPage=g.ui.getPageById(c.getAttribute("relatedPage"));if(null==g.relatedPage){var e=c.ownerDocument.createElement("diagram");e.setAttribute("id",c.getAttribute("relatedPage"));e.setAttribute("name",c.getAttribute("name"));g.relatedPage=new DiagramPage(e);e=c.getAttribute("viewState");null!=e&&(g.relatedPage.viewState=JSON.parse(e),c.removeAttribute("viewState"));
-c=c.cloneNode(!0);e=c.firstChild;if(null!=e)for(g.relatedPage.root=b.decodeCell(e,!1),g=e.nextSibling,e.parentNode.removeChild(e),e=g;null!=e;){g=e.nextSibling;if(e.nodeType==mxConstants.NODETYPE_ELEMENT){var k=e.getAttribute("id");null==b.lookup(k)&&b.decodeCell(e)}e.parentNode.removeChild(e);e=g}}return c};b.afterDecode=function(b,c,g){g.index=g.previousIndex;return g};mxCodecRegistry.register(b)})();(function(){EditorUi.prototype.altShiftActions[68]="selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(c,e,p,t,d){e=null!=e?e:!1;null==p&&(p=this.getFoldableCells(this.getSelectionCells(),c));this.stopEditing();this.model.beginUpdate();try{for(var f=p.slice(),g=0;g<p.length;g++)"1"==mxUtils.getValue(this.getCurrentCellStyle(p[g]),"treeFolding","0")&&this.foldTreeCell(c,p[g]);p=f;p=b.apply(this,arguments)}finally{this.model.endUpdate()}return p};Graph.prototype.foldTreeCell=
-function(b,c){this.model.beginUpdate();try{var e=[];this.traverse(c,!0,mxUtils.bind(this,function(b,f){var d=null!=f&&this.isTreeEdge(f);d&&e.push(f);b==c||null!=f&&!d||e.push(b);return(null==f||d)&&(b==c||!this.model.isCollapsed(b))}));this.model.setCollapsed(c,b);for(var g=0;g<e.length;g++)this.model.setVisible(e[g],!b)}finally{this.model.endUpdate()}};Graph.prototype.isTreeEdge=function(b){return!this.isEdgeIgnored(b)};Graph.prototype.getTreeEdges=function(b,c,e,t,d,f){return this.model.filterCells(this.getEdges(b,
-c,e,t,d,f),mxUtils.bind(this,function(b){return this.isTreeEdge(b)}))};Graph.prototype.getIncomingTreeEdges=function(b,c){return this.getTreeEdges(b,c,!0,!1,!1)};Graph.prototype.getOutgoingTreeEdges=function(b,c){return this.getTreeEdges(b,c,!1,!0,!1)};var c=EditorUi.prototype.init;EditorUi.prototype.init=function(){c.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(b){return y.isVertex(b)&&e(b)}function c(b){var c=
+(function(){var b=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),c="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");b.afterEncode=function(b,k,f){f.setAttribute("relatedPage",k.relatedPage.getId());null==k.index&&(f.setAttribute("name",k.relatedPage.getName()),null!=k.relatedPage.viewState&&f.setAttribute("viewState",JSON.stringify(k.relatedPage.viewState,function(b,e){return 0>mxUtils.indexOf(c,
+b)?e:void 0})),null!=k.relatedPage.root&&b.encodeCell(k.relatedPage.root,f));return f};b.beforeDecode=function(b,c,f){f.ui=b.ui;f.relatedPage=f.ui.getPageById(c.getAttribute("relatedPage"));if(null==f.relatedPage){var e=c.ownerDocument.createElement("diagram");e.setAttribute("id",c.getAttribute("relatedPage"));e.setAttribute("name",c.getAttribute("name"));f.relatedPage=new DiagramPage(e);e=c.getAttribute("viewState");null!=e&&(f.relatedPage.viewState=JSON.parse(e),c.removeAttribute("viewState"));
+c=c.cloneNode(!0);e=c.firstChild;if(null!=e)for(f.relatedPage.root=b.decodeCell(e,!1),f=e.nextSibling,e.parentNode.removeChild(e),e=f;null!=e;){f=e.nextSibling;if(e.nodeType==mxConstants.NODETYPE_ELEMENT){var k=e.getAttribute("id");null==b.lookup(k)&&b.decodeCell(e)}e.parentNode.removeChild(e);e=f}}return c};b.afterDecode=function(b,c,f){f.index=f.previousIndex;return f};mxCodecRegistry.register(b)})();(function(){EditorUi.prototype.altShiftActions[68]="selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(c,e,p,t,d){e=null!=e?e:!1;null==p&&(p=this.getFoldableCells(this.getSelectionCells(),c));this.stopEditing();this.model.beginUpdate();try{for(var f=p.slice(),k=0;k<p.length;k++)"1"==mxUtils.getValue(this.getCurrentCellStyle(p[k]),"treeFolding","0")&&this.foldTreeCell(c,p[k]);p=f;p=b.apply(this,arguments)}finally{this.model.endUpdate()}return p};Graph.prototype.foldTreeCell=
+function(b,c){this.model.beginUpdate();try{var e=[];this.traverse(c,!0,mxUtils.bind(this,function(b,f){var d=null!=f&&this.isTreeEdge(f);d&&e.push(f);b==c||null!=f&&!d||e.push(b);return(null==f||d)&&(b==c||!this.model.isCollapsed(b))}));this.model.setCollapsed(c,b);for(var f=0;f<e.length;f++)this.model.setVisible(e[f],!b)}finally{this.model.endUpdate()}};Graph.prototype.isTreeEdge=function(b){return!this.isEdgeIgnored(b)};Graph.prototype.getTreeEdges=function(b,c,e,t,d,g){return this.model.filterCells(this.getEdges(b,
+c,e,t,d,g),mxUtils.bind(this,function(b){return this.isTreeEdge(b)}))};Graph.prototype.getIncomingTreeEdges=function(b,c){return this.getTreeEdges(b,c,!0,!1,!1)};Graph.prototype.getOutgoingTreeEdges=function(b,c){return this.getTreeEdges(b,c,!1,!0,!1)};var c=EditorUi.prototype.init;EditorUi.prototype.init=function(){c.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(b){return y.isVertex(b)&&e(b)}function c(b){var c=
!1;null!=b&&(c="1"==v.getCurrentCellStyle(b).treeMoving);return c}function e(b){var c=!1;null!=b&&(b=y.getParent(b),c=v.view.getState(b),c="tree"==(null!=c?c.style:v.getCellStyle(b)).containerType);return c}function t(b){var c=!1;null!=b&&(b=y.getParent(b),c=v.view.getState(b),v.view.getState(b),c=null!=(null!=c?c.style:v.getCellStyle(b)).childLayout);return c}function d(b){b=v.view.getState(b);if(null!=b){var c=v.getIncomingTreeEdges(b.cell);if(0<c.length&&(c=v.view.getState(c[0]),null!=c&&(c=c.absolutePoints,
-null!=c&&0<c.length&&(c=c[c.length-1],null!=c)))){if(c.y==b.y&&Math.abs(c.x-b.getCenterX())<b.width/2)return mxConstants.DIRECTION_SOUTH;if(c.y==b.y+b.height&&Math.abs(c.x-b.getCenterX())<b.width/2)return mxConstants.DIRECTION_NORTH;if(c.x>b.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function f(b,c){c=null!=c?c:!0;v.model.beginUpdate();try{var e=v.model.getParent(b),f=v.getIncomingTreeEdges(b),g=v.cloneCells([f[0],b]);v.model.setTerminal(g[0],v.model.getTerminal(f[0],
-!0),!0);var k=d(b),l=e.geometry;k==mxConstants.DIRECTION_SOUTH||k==mxConstants.DIRECTION_NORTH?g[1].geometry.x+=c?b.geometry.width+10:-g[1].geometry.width-10:g[1].geometry.y+=c?b.geometry.height+10:-g[1].geometry.height-10;v.view.currentRoot!=e&&(g[1].geometry.x-=l.x,g[1].geometry.y-=l.y);var m=v.view.getState(b),n=v.view.scale;if(null!=m){var p=mxRectangle.fromRectangle(m);k==mxConstants.DIRECTION_SOUTH||k==mxConstants.DIRECTION_NORTH?p.x+=(c?b.geometry.width+10:-g[1].geometry.width-10)*n:p.y+=(c?
-b.geometry.height+10:-g[1].geometry.height-10)*n;var q=v.getOutgoingTreeEdges(v.model.getTerminal(f[0],!0));if(null!=q){for(var t=k==mxConstants.DIRECTION_SOUTH||k==mxConstants.DIRECTION_NORTH,u=l=f=0;u<q.length;u++){var z=v.model.getTerminal(q[u],!1);if(k==d(z)){var C=v.view.getState(z);z!=b&&null!=C&&(t&&c!=C.getCenterX()<m.getCenterX()||!t&&c!=C.getCenterY()<m.getCenterY())&&mxUtils.intersects(p,C)&&(f=10+Math.max(f,(Math.min(p.x+p.width,C.x+C.width)-Math.max(p.x,C.x))/n),l=10+Math.max(l,(Math.min(p.y+
-p.height,C.y+C.height)-Math.max(p.y,C.y))/n))}}t?l=0:f=0;for(u=0;u<q.length;u++)if(z=v.model.getTerminal(q[u],!1),k==d(z)&&(C=v.view.getState(z),z!=b&&null!=C&&(t&&c!=C.getCenterX()<m.getCenterX()||!t&&c!=C.getCenterY()<m.getCenterY()))){var x=[];v.traverse(C.cell,!0,function(b,c){var d=null!=c&&v.isTreeEdge(c);d&&x.push(c);(null==c||d)&&x.push(b);return null==c||d});v.moveCells(x,(c?1:-1)*f,(c?1:-1)*l)}}}return v.addCells(g,e)}finally{v.model.endUpdate()}}function l(b){v.model.beginUpdate();try{var c=
-d(b),e=v.getIncomingTreeEdges(b),f=v.cloneCells([e[0],b]);v.model.setTerminal(e[0],f[1],!1);v.model.setTerminal(f[0],f[1],!0);v.model.setTerminal(f[0],b,!1);var g=v.model.getParent(b),k=g.geometry,l=[];v.view.currentRoot!=g&&(f[1].geometry.x-=k.x,f[1].geometry.y-=k.y);v.traverse(b,!0,function(b,c){var d=null!=c&&v.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});var m=b.geometry.width+40,n=b.geometry.height+40;c==mxConstants.DIRECTION_SOUTH?m=0:c==mxConstants.DIRECTION_NORTH?
-(m=0,n=-n):c==mxConstants.DIRECTION_WEST?(m=-m,n=0):c==mxConstants.DIRECTION_EAST&&(n=0);v.moveCells(l,m,n);return v.addCells(f,g)}finally{v.model.endUpdate()}}function q(b,c){v.model.beginUpdate();try{var e=v.model.getParent(b),f=v.getIncomingTreeEdges(b),g=d(b);0==f.length&&(f=[v.createEdge(e,null,"",null,null,v.createCurrentEdgeStyle())],g=c);var k=v.cloneCells([f[0],b]);v.model.setTerminal(k[0],b,!0);if(null==v.model.getTerminal(k[0],!1)){v.model.setTerminal(k[0],k[1],!1);var l=v.getCellStyle(k[1]).newEdgeStyle;
-if(null!=l)try{var m=JSON.parse(l),n;for(n in m)v.setCellStyles(n,m[n],[k[0]]),"edgeStyle"==n&&"elbowEdgeStyle"==m[n]&&v.setCellStyles("elbow",g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[k[0]])}catch(la){}}var f=v.getOutgoingTreeEdges(b),p=e.geometry,l=[];v.view.currentRoot==e&&(p=new mxRectangle);for(m=0;m<f.length;m++){var q=v.model.getTerminal(f[m],!1);null!=q&&l.push(q)}var t=v.view.getBounds(l),u=v.view.translate,z=v.view.scale;g==mxConstants.DIRECTION_SOUTH?
-(k[1].geometry.x=null==t?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(t.x+t.width)/z-u.x-p.x+10,k[1].geometry.y+=k[1].geometry.height-p.y+40):g==mxConstants.DIRECTION_NORTH?(k[1].geometry.x=null==t?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(t.x+t.width)/z-u.x+-p.x+10,k[1].geometry.y-=k[1].geometry.height+p.y+40):(k[1].geometry.x=g==mxConstants.DIRECTION_WEST?k[1].geometry.x-(k[1].geometry.width+p.x+40):k[1].geometry.x+(k[1].geometry.width-p.x+40),k[1].geometry.y=null==t?b.geometry.y+
-(b.geometry.height-k[1].geometry.height)/2:(t.y+t.height)/z-u.y+-p.y+10);return v.addCells(k,e)}finally{v.model.endUpdate()}}function m(b,c,d){b=v.getOutgoingTreeEdges(b);d=v.view.getState(d);var e=[];if(null!=d&&null!=b){for(var f=0;f<b.length;f++){var g=v.view.getState(v.model.getTerminal(b[f],!1));null!=g&&(!c&&Math.min(g.x+g.width,d.x+d.width)>=Math.max(g.x,d.x)||c&&Math.min(g.y+g.height,d.y+d.height)>=Math.max(g.y,d.y))&&e.push(g)}e.sort(function(b,d){return c?b.x+b.width-d.x-d.width:b.y+b.height-
+null!=c&&0<c.length&&(c=c[c.length-1],null!=c)))){if(c.y==b.y&&Math.abs(c.x-b.getCenterX())<b.width/2)return mxConstants.DIRECTION_SOUTH;if(c.y==b.y+b.height&&Math.abs(c.x-b.getCenterX())<b.width/2)return mxConstants.DIRECTION_NORTH;if(c.x>b.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function g(b,c){c=null!=c?c:!0;v.model.beginUpdate();try{var e=v.model.getParent(b),f=v.getIncomingTreeEdges(b),g=v.cloneCells([f[0],b]);v.model.setTerminal(g[0],v.model.getTerminal(f[0],
+!0),!0);var k=d(b),l=e.geometry;k==mxConstants.DIRECTION_SOUTH||k==mxConstants.DIRECTION_NORTH?g[1].geometry.x+=c?b.geometry.width+10:-g[1].geometry.width-10:g[1].geometry.y+=c?b.geometry.height+10:-g[1].geometry.height-10;v.view.currentRoot!=e&&(g[1].geometry.x-=l.x,g[1].geometry.y-=l.y);var m=v.view.getState(b),p=v.view.scale;if(null!=m){var n=mxRectangle.fromRectangle(m);k==mxConstants.DIRECTION_SOUTH||k==mxConstants.DIRECTION_NORTH?n.x+=(c?b.geometry.width+10:-g[1].geometry.width-10)*p:n.y+=(c?
+b.geometry.height+10:-g[1].geometry.height-10)*p;var q=v.getOutgoingTreeEdges(v.model.getTerminal(f[0],!0));if(null!=q){for(var t=k==mxConstants.DIRECTION_SOUTH||k==mxConstants.DIRECTION_NORTH,u=l=f=0;u<q.length;u++){var z=v.model.getTerminal(q[u],!1);if(k==d(z)){var C=v.view.getState(z);z!=b&&null!=C&&(t&&c!=C.getCenterX()<m.getCenterX()||!t&&c!=C.getCenterY()<m.getCenterY())&&mxUtils.intersects(n,C)&&(f=10+Math.max(f,(Math.min(n.x+n.width,C.x+C.width)-Math.max(n.x,C.x))/p),l=10+Math.max(l,(Math.min(n.y+
+n.height,C.y+C.height)-Math.max(n.y,C.y))/p))}}t?l=0:f=0;for(u=0;u<q.length;u++)if(z=v.model.getTerminal(q[u],!1),k==d(z)&&(C=v.view.getState(z),z!=b&&null!=C&&(t&&c!=C.getCenterX()<m.getCenterX()||!t&&c!=C.getCenterY()<m.getCenterY()))){var x=[];v.traverse(C.cell,!0,function(b,c){var d=null!=c&&v.isTreeEdge(c);d&&x.push(c);(null==c||d)&&x.push(b);return null==c||d});v.moveCells(x,(c?1:-1)*f,(c?1:-1)*l)}}}return v.addCells(g,e)}finally{v.model.endUpdate()}}function l(b){v.model.beginUpdate();try{var c=
+d(b),e=v.getIncomingTreeEdges(b),f=v.cloneCells([e[0],b]);v.model.setTerminal(e[0],f[1],!1);v.model.setTerminal(f[0],f[1],!0);v.model.setTerminal(f[0],b,!1);var g=v.model.getParent(b),k=g.geometry,l=[];v.view.currentRoot!=g&&(f[1].geometry.x-=k.x,f[1].geometry.y-=k.y);v.traverse(b,!0,function(b,c){var d=null!=c&&v.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});var m=b.geometry.width+40,p=b.geometry.height+40;c==mxConstants.DIRECTION_SOUTH?m=0:c==mxConstants.DIRECTION_NORTH?
+(m=0,p=-p):c==mxConstants.DIRECTION_WEST?(m=-m,p=0):c==mxConstants.DIRECTION_EAST&&(p=0);v.moveCells(l,m,p);return v.addCells(f,g)}finally{v.model.endUpdate()}}function q(b,c){v.model.beginUpdate();try{var e=v.model.getParent(b),f=v.getIncomingTreeEdges(b),g=d(b);0==f.length&&(f=[v.createEdge(e,null,"",null,null,v.createCurrentEdgeStyle())],g=c);var k=v.cloneCells([f[0],b]);v.model.setTerminal(k[0],b,!0);if(null==v.model.getTerminal(k[0],!1)){v.model.setTerminal(k[0],k[1],!1);var l=v.getCellStyle(k[1]).newEdgeStyle;
+if(null!=l)try{var m=JSON.parse(l),p;for(p in m)v.setCellStyles(p,m[p],[k[0]]),"edgeStyle"==p&&"elbowEdgeStyle"==m[p]&&v.setCellStyles("elbow",g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[k[0]])}catch(la){}}var f=v.getOutgoingTreeEdges(b),n=e.geometry,l=[];v.view.currentRoot==e&&(n=new mxRectangle);for(m=0;m<f.length;m++){var q=v.model.getTerminal(f[m],!1);null!=q&&l.push(q)}var t=v.view.getBounds(l),u=v.view.translate,z=v.view.scale;g==mxConstants.DIRECTION_SOUTH?
+(k[1].geometry.x=null==t?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(t.x+t.width)/z-u.x-n.x+10,k[1].geometry.y+=k[1].geometry.height-n.y+40):g==mxConstants.DIRECTION_NORTH?(k[1].geometry.x=null==t?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(t.x+t.width)/z-u.x+-n.x+10,k[1].geometry.y-=k[1].geometry.height+n.y+40):(k[1].geometry.x=g==mxConstants.DIRECTION_WEST?k[1].geometry.x-(k[1].geometry.width+n.x+40):k[1].geometry.x+(k[1].geometry.width-n.x+40),k[1].geometry.y=null==t?b.geometry.y+
+(b.geometry.height-k[1].geometry.height)/2:(t.y+t.height)/z-u.y+-n.y+10);return v.addCells(k,e)}finally{v.model.endUpdate()}}function m(b,c,d){b=v.getOutgoingTreeEdges(b);d=v.view.getState(d);var e=[];if(null!=d&&null!=b){for(var f=0;f<b.length;f++){var g=v.view.getState(v.model.getTerminal(b[f],!1));null!=g&&(!c&&Math.min(g.x+g.width,d.x+d.width)>=Math.max(g.x,d.x)||c&&Math.min(g.y+g.height,d.y+d.height)>=Math.max(g.y,d.y))&&e.push(g)}e.sort(function(b,d){return c?b.x+b.width-d.x-d.width:b.y+b.height-
d.y-d.height})}return e}function n(b,c){var e=d(b),f=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST;(e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST)==f&&e!=c?u.actions.get("selectParent").funct():e==c?(f=v.getOutgoingTreeEdges(b),null!=f&&0<f.length&&v.setSelectionCell(v.model.getTerminal(f[0],!1))):(e=v.getIncomingTreeEdges(b),null!=e&&0<e.length&&(f=m(v.model.getTerminal(e[0],!0),f,b),e=v.view.getState(b),null!=e&&(e=mxUtils.indexOf(f,e),0<=e&&(e+=c==mxConstants.DIRECTION_NORTH||
c==mxConstants.DIRECTION_WEST?-1:1,0<=e&&e<=f.length-1&&v.setSelectionCell(f[e].cell)))))}var u=this,v=u.editor.graph,y=v.getModel(),x=u.menus.createPopupMenu;u.menus.createPopupMenu=function(c,d,e){x.apply(this,arguments);if(1==v.getSelectionCount()){d=v.getSelectionCell();var f=v.getOutgoingTreeEdges(d);c.addSeparator();0<f.length&&(b(v.getSelectionCell())&&this.addMenuItems(c,["selectChildren"],null,e),this.addMenuItems(c,["selectDescendants"],null,e));b(v.getSelectionCell())?(c.addSeparator(),
0<v.getIncomingTreeEdges(d).length&&this.addMenuItems(c,["selectSiblings","selectParent"],null,e)):0<v.model.getEdgeCount(d)&&this.addMenuItems(c,["selectConnections"],null,e)}};u.actions.addAction("selectChildren",function(){if(v.isEnabled()&&1==v.getSelectionCount()){var b=v.getSelectionCell(),b=v.getOutgoingTreeEdges(b);if(null!=b){for(var c=[],d=0;d<b.length;d++)c.push(v.model.getTerminal(b[d],!1));v.setSelectionCells(c)}}},null,null,"Alt+Shift+X");u.actions.addAction("selectSiblings",function(){if(v.isEnabled()&&
@@ -3878,30 +3887,30 @@ c==mxConstants.DIRECTION_WEST?-1:1,0<=e&&e<=f.length-1&&v.setSelectionCell(f[e].
!0))}},null,null,"Alt+Shift+P");u.actions.addAction("selectDescendants",function(b,c){var d=v.getSelectionCell();if(v.isEnabled()&&v.model.isVertex(d)){if(null!=c&&mxEvent.isAltDown(c))v.setSelectionCells(v.model.getTreeEdges(d,null==c||!mxEvent.isShiftDown(c),null==c||!mxEvent.isControlDown(c)));else{var e=[];v.traverse(d,!0,function(b,d){var f=null!=d&&v.isTreeEdge(d);f&&e.push(d);null!=d&&!f||null!=c&&mxEvent.isShiftDown(c)||e.push(b);return null==d||f})}v.setSelectionCells(e)}},null,null,"Alt+Shift+D");
var F=v.removeCells;v.removeCells=function(c,d){d=null!=d?d:!0;null==c&&(c=this.getDeletableCells(this.getSelectionCells()));d&&(c=this.getDeletableCells(this.addAllEdges(c)));for(var f=[],g=0;g<c.length;g++){var k=c[g];y.isEdge(k)&&e(k)&&(f.push(k),k=y.getTerminal(k,!1));if(b(k)){var l=[];v.traverse(k,!0,function(b,c){var d=null!=c&&v.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});0<l.length&&(f=f.concat(l),k=v.getIncomingTreeEdges(c[g]),c=c.concat(k))}else null!=k&&f.push(c[g])}c=
f;return F.apply(this,arguments)};u.hoverIcons.getStateAt=function(c,d,e){return b(c.cell)?null:this.graph.view.getState(this.graph.getCellAt(d,e))};var H=v.duplicateCells;v.duplicateCells=function(c,d){c=null!=c?c:this.getSelectionCells();for(var e=c.slice(0),f=0;f<e.length;f++){var g=v.view.getState(e[f]);if(null!=g&&b(g.cell))for(var k=v.getIncomingTreeEdges(g.cell),g=0;g<k.length;g++)mxUtils.remove(k[g],c)}this.model.beginUpdate();try{var l=H.call(this,c,d);if(l.length==c.length)for(f=0;f<c.length;f++)if(b(c[f])){var m=
-v.getIncomingTreeEdges(l[f]),k=v.getIncomingTreeEdges(c[f]);if(0==m.length&&0<k.length){var n=this.cloneCell(k[0]);this.addEdge(n,v.getDefaultParent(),this.model.getTerminal(k[0],!0),l[f])}}}finally{this.model.endUpdate()}return l};var z=v.moveCells;v.moveCells=function(c,d,e,f,g,k,l){var m=null;this.model.beginUpdate();try{var n=g,p=this.getCurrentCellStyle(g);if(null!=c&&b(g)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q=0;q<c.length;q++)if(b(c[q])||v.model.isEdge(c[q])&&null==v.model.getTerminal(c[q],
-!0)){g=v.model.getParent(c[q]);break}if(null!=n&&g!=n&&null!=this.view.getState(c[0])){var t=v.getIncomingTreeEdges(c[0]);if(0<t.length){var u=v.view.getState(v.model.getTerminal(t[0],!0));if(null!=u){var C=v.view.getState(n);null!=C&&(d=(C.getCenterX()-u.getCenterX())/v.view.scale,e=(C.getCenterY()-u.getCenterY())/v.view.scale)}}}}m=z.apply(this,arguments);if(null!=m&&null!=c&&m.length==c.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(n)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[q],
-!0))&&this.model.setTerminal(m[q],n,!0);else if(b(c[q])&&(t=v.getIncomingTreeEdges(c[q]),0<t.length))if(!f)b(n)&&0>mxUtils.indexOf(c,this.model.getTerminal(t[0],!0))&&this.model.setTerminal(t[0],n,!0);else if(0==v.getIncomingTreeEdges(m[q]).length){p=n;if(null==p||p==v.model.getParent(c[q]))p=v.model.getTerminal(t[0],!0);f=this.cloneCell(t[0]);this.addEdge(f,v.getDefaultParent(),p,m[q])}}finally{this.model.endUpdate()}return m};if(null!=u.sidebar){var D=u.sidebar.dropAndConnect;u.sidebar.dropAndConnect=
-function(c,d,e,f){var g=v.model,k=null;g.beginUpdate();try{if(k=D.apply(this,arguments),b(c))for(var l=0;l<k.length;l++)if(g.isEdge(k[l])&&null==g.getTerminal(k[l],!0)){g.setTerminal(k[l],c,!0);var m=v.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return k}}var L={88:u.actions.get("selectChildren"),84:u.actions.get("selectSubtree"),80:u.actions.get("selectParent"),83:u.actions.get("selectSiblings")},E=u.onKeyDown;u.onKeyDown=function(c){try{if(v.isEnabled()&&
-!v.isEditing()&&b(v.getSelectionCell())&&1==v.getSelectionCount()){var d=null;0<v.getIncomingTreeEdges(v.getSelectionCell()).length&&(9==c.which?d=mxEvent.isShiftDown(c)?l(v.getSelectionCell()):q(v.getSelectionCell()):13==c.which&&(d=f(v.getSelectionCell(),!mxEvent.isShiftDown(c))));if(null!=d&&0<d.length)1==d.length&&v.model.isEdge(d[0])?v.setSelectionCell(v.model.getTerminal(d[0],!1)):v.setSelectionCell(d[d.length-1]),null!=u.hoverIcons&&u.hoverIcons.update(v.view.getState(v.getSelectionCell())),
-v.startEditingAtCell(v.getSelectionCell()),mxEvent.consume(c);else if(mxEvent.isAltDown(c)&&mxEvent.isShiftDown(c)){var e=L[c.keyCode];null!=e&&(e.funct(c),mxEvent.consume(c))}else 37==c.keyCode?(n(v.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(c)):38==c.keyCode?(n(v.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(c)):39==c.keyCode?(n(v.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(c)):40==c.keyCode&&(n(v.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
-mxEvent.consume(c))}}catch(G){u.handleError(G)}mxEvent.isConsumed(c)||E.apply(this,arguments)};var J=v.connectVertex;v.connectVertex=function(c,e,g,k,m,n,p){var t=v.getIncomingTreeEdges(c);if(b(c)){var u=d(c),z=u==mxConstants.DIRECTION_EAST||u==mxConstants.DIRECTION_WEST,C=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST;return u==e||0==t.length?q(c,e):z==C?l(c):f(c,e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_WEST)}return J.apply(this,arguments)};v.getSubtree=function(d){var e=
+v.getIncomingTreeEdges(l[f]),k=v.getIncomingTreeEdges(c[f]);if(0==m.length&&0<k.length){var p=this.cloneCell(k[0]);this.addEdge(p,v.getDefaultParent(),this.model.getTerminal(k[0],!0),l[f])}}}finally{this.model.endUpdate()}return l};var z=v.moveCells;v.moveCells=function(c,d,e,f,g,k,l){var m=null;this.model.beginUpdate();try{var p=g,n=this.getCurrentCellStyle(g);if(null!=c&&b(g)&&"1"==mxUtils.getValue(n,"treeFolding","0")){for(var q=0;q<c.length;q++)if(b(c[q])||v.model.isEdge(c[q])&&null==v.model.getTerminal(c[q],
+!0)){g=v.model.getParent(c[q]);break}if(null!=p&&g!=p&&null!=this.view.getState(c[0])){var t=v.getIncomingTreeEdges(c[0]);if(0<t.length){var u=v.view.getState(v.model.getTerminal(t[0],!0));if(null!=u){var C=v.view.getState(p);null!=C&&(d=(C.getCenterX()-u.getCenterX())/v.view.scale,e=(C.getCenterY()-u.getCenterY())/v.view.scale)}}}}m=z.apply(this,arguments);if(null!=m&&null!=c&&m.length==c.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(p)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[q],
+!0))&&this.model.setTerminal(m[q],p,!0);else if(b(c[q])&&(t=v.getIncomingTreeEdges(c[q]),0<t.length))if(!f)b(p)&&0>mxUtils.indexOf(c,this.model.getTerminal(t[0],!0))&&this.model.setTerminal(t[0],p,!0);else if(0==v.getIncomingTreeEdges(m[q]).length){n=p;if(null==n||n==v.model.getParent(c[q]))n=v.model.getTerminal(t[0],!0);f=this.cloneCell(t[0]);this.addEdge(f,v.getDefaultParent(),n,m[q])}}finally{this.model.endUpdate()}return m};if(null!=u.sidebar){var D=u.sidebar.dropAndConnect;u.sidebar.dropAndConnect=
+function(c,d,e,f){var g=v.model,k=null;g.beginUpdate();try{if(k=D.apply(this,arguments),b(c))for(var l=0;l<k.length;l++)if(g.isEdge(k[l])&&null==g.getTerminal(k[l],!0)){g.setTerminal(k[l],c,!0);var m=v.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return k}}var N={88:u.actions.get("selectChildren"),84:u.actions.get("selectSubtree"),80:u.actions.get("selectParent"),83:u.actions.get("selectSiblings")},E=u.onKeyDown;u.onKeyDown=function(c){try{if(v.isEnabled()&&
+!v.isEditing()&&b(v.getSelectionCell())&&1==v.getSelectionCount()){var d=null;0<v.getIncomingTreeEdges(v.getSelectionCell()).length&&(9==c.which?d=mxEvent.isShiftDown(c)?l(v.getSelectionCell()):q(v.getSelectionCell()):13==c.which&&(d=g(v.getSelectionCell(),!mxEvent.isShiftDown(c))));if(null!=d&&0<d.length)1==d.length&&v.model.isEdge(d[0])?v.setSelectionCell(v.model.getTerminal(d[0],!1)):v.setSelectionCell(d[d.length-1]),null!=u.hoverIcons&&u.hoverIcons.update(v.view.getState(v.getSelectionCell())),
+v.startEditingAtCell(v.getSelectionCell()),mxEvent.consume(c);else if(mxEvent.isAltDown(c)&&mxEvent.isShiftDown(c)){var e=N[c.keyCode];null!=e&&(e.funct(c),mxEvent.consume(c))}else 37==c.keyCode?(n(v.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(c)):38==c.keyCode?(n(v.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(c)):39==c.keyCode?(n(v.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(c)):40==c.keyCode&&(n(v.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
+mxEvent.consume(c))}}catch(G){u.handleError(G)}mxEvent.isConsumed(c)||E.apply(this,arguments)};var J=v.connectVertex;v.connectVertex=function(c,e,f,k,m,p,n){var t=v.getIncomingTreeEdges(c);if(b(c)){var u=d(c),z=u==mxConstants.DIRECTION_EAST||u==mxConstants.DIRECTION_WEST,C=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST;return u==e||0==t.length?q(c,e):z==C?l(c):g(c,e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_WEST)}return J.apply(this,arguments)};v.getSubtree=function(d){var e=
[d];!c(d)&&!b(d)||t(d)||v.traverse(d,!0,function(b,c){var d=null!=c&&v.isTreeEdge(c);d&&0>mxUtils.indexOf(e,c)&&e.push(c);(null==c||d)&&0>mxUtils.indexOf(e,b)&&e.push(b);return null==c||d});return e};var C=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){C.apply(this,arguments);(c(this.state.cell)||b(this.state.cell))&&!t(this.state.cell)&&0<this.graph.getOutgoingTreeEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title",
"Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height="24px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(b){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(b);
this.graph.isMouseDown=!0;u.hoverIcons.reset();mxEvent.consume(b)})))};var K=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){K.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var M=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){M.apply(this,
-arguments);null!=this.moveHandle&&(this.moveHandle.style.display=b?"":"none")};var aa=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(b,c){aa.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var e=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var b=e.apply(this,arguments),c=this.graph;return b.concat([this.addEntry("tree container",
+arguments);null!=this.moveHandle&&(this.moveHandle.style.display=b?"":"none")};var Z=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(b,c){Z.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var e=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var b=e.apply(this,arguments),c=this.graph;return b.concat([this.addEntry("tree container",
function(){var b=new mxCell("Tree Container",new mxGeometry(0,0,400,320),"swimlane;startSize=20;horizontal=1;containerType=tree;");b.vertex=!0;var c=new mxCell("Parent",new mxGeometry(140,60,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');c.vertex=!0;var d=new mxCell("Child",new mxGeometry(140,140,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');
d.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");e.geometry.relative=!0;e.edge=!0;c.insertEdge(e,!0);d.insertEdge(e,!1);b.insert(e);b.insert(c);b.insert(d);return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree mindmap mindmaps central idea branch topic",function(){var b=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;startSize=20;horizontal=1;containerType=tree;");
b.vertex=!0;var c=new mxCell("Central Idea",new mxGeometry(160,60,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');c.vertex=!0;var d=new mxCell("Topic",new mxGeometry(320,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
-d.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");e.geometry.relative=!0;e.edge=!0;c.insertEdge(e,!0);d.insertEdge(e,!1);var g=new mxCell("Branch",new mxGeometry(320,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
-g.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");k.geometry.relative=!0;k.edge=!0;c.insertEdge(k,!0);g.insertEdge(k,!1);var m=new mxCell("Topic",new mxGeometry(20,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
+d.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");e.geometry.relative=!0;e.edge=!0;c.insertEdge(e,!0);d.insertEdge(e,!1);var f=new mxCell("Branch",new mxGeometry(320,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
+f.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");k.geometry.relative=!0;k.edge=!0;c.insertEdge(k,!0);f.insertEdge(k,!1);var m=new mxCell("Topic",new mxGeometry(20,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
m.vertex=!0;var n=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");n.geometry.relative=!0;n.edge=!0;c.insertEdge(n,!0);m.insertEdge(n,!1);var u=new mxCell("Branch",new mxGeometry(20,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
-u.vertex=!0;var v=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");v.geometry.relative=!0;v.edge=!0;c.insertEdge(v,!0);u.insertEdge(v,!1);b.insert(e);b.insert(k);b.insert(n);b.insert(v);b.insert(c);b.insert(d);b.insert(g);b.insert(m);b.insert(u);return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var b=new mxCell("Central Idea",
+u.vertex=!0;var v=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");v.geometry.relative=!0;v.edge=!0;c.insertEdge(v,!0);u.insertEdge(v,!1);b.insert(e);b.insert(k);b.insert(n);b.insert(v);b.insert(c);b.insert(d);b.insert(f);b.insert(m);b.insert(u);return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var b=new mxCell("Central Idea",
new mxGeometry(0,0,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};treeFolding=1;treeMoving=1;');b.vertex=!0;return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree mindmap mindmaps branch",function(){var b=new mxCell("Branch",new mxGeometry(0,0,80,20),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");c.geometry.setTerminalPoint(new mxPoint(-40,40),!0);c.geometry.relative=!0;c.edge=!0;b.insertEdge(c,!1);return sb.createVertexTemplateFromCells([b,c],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree mindmap mindmaps sub topic",function(){var b=new mxCell("Sub Topic",new mxGeometry(0,0,72,26),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");c.geometry.setTerminalPoint(new mxPoint(-40,40),!0);c.geometry.relative=!0;c.edge=!0;b.insertEdge(c,!1);return sb.createVertexTemplateFromCells([b,c],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree orgchart organization division",function(){var b=new mxCell("Orgchart",new mxGeometry(0,0,280,220),'swimlane;startSize=20;horizontal=1;containerType=tree;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');
b.vertex=!0;var e=new mxCell("Organization",new mxGeometry(80,40,120,60),'whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');c.setAttributeForCell(e,"treeRoot","1");e.vertex=!0;var d=new mxCell("Division",new mxGeometry(20,140,100,60),'whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');
-d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");f.geometry.relative=!0;f.edge=!0;e.insertEdge(f,!0);d.insertEdge(f,!1);var g=new mxCell("Division",new mxGeometry(160,140,100,60),'whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');g.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
-k.geometry.relative=!0;k.edge=!0;e.insertEdge(k,!0);g.insertEdge(k,!1);b.insert(f);b.insert(k);b.insert(e);b.insert(d);b.insert(g);return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree root",function(){var b=new mxCell("Organization",new mxGeometry(0,0,120,60),'whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');c.setAttributeForCell(b,"treeRoot",
+d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");f.geometry.relative=!0;f.edge=!0;e.insertEdge(f,!0);d.insertEdge(f,!1);var k=new mxCell("Division",new mxGeometry(160,140,100,60),'whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');k.vertex=!0;var q=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
+q.geometry.relative=!0;q.edge=!0;e.insertEdge(q,!0);k.insertEdge(q,!1);b.insert(f);b.insert(q);b.insert(e);b.insert(d);b.insert(k);return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree root",function(){var b=new mxCell("Organization",new mxGeometry(0,0,120,60),'whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');c.setAttributeForCell(b,"treeRoot",
"1");b.vertex=!0;return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree division",function(){var b=new mxCell("Division",new mxGeometry(20,40,100,60),'whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
c.geometry.setTerminalPoint(new mxPoint(0,0),!0);c.geometry.relative=!0;c.edge=!0;b.insertEdge(c,!1);return sb.createVertexTemplateFromCells([b,c],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree sub sections",function(){var b=new mxCell("Sub Section",new mxGeometry(0,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;");b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");
c.geometry.setTerminalPoint(new mxPoint(110,-40),!0);c.geometry.relative=!0;c.edge=!0;b.insertEdge(c,!1);var d=new mxCell("Sub Section",new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;");d.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");e.geometry.setTerminalPoint(new mxPoint(110,-40),!0);e.geometry.relative=
@@ -3918,12 +3927,12 @@ c=Math.max(0,Math.min(c,d-e.clientHeight-2));this.getX()==b&&this.getY()==c||mxW
mxWindow.prototype.closeImage=Graph.createSvgImage(18,10,'<path d="M 5 1 L 13 9 M 13 1 L 5 9" stroke="#C0C0C0" stroke-width="2"/>').src;mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="none"/>').src;mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="none"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke-width="2" style="stroke-opacity:0.4" stroke="#ffffff"/><path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');
mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR="#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR="#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity=
"0.4";Graph.prototype.svgShadowSize="0.6";Graph.prototype.svgShadowBlur="1.2";Format.inactiveTabBackgroundColor="#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50;HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight="1"==urlParams.sketch?1:46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert="1"!=urlParams.sketch&&!mxClient.IS_IOS&&!mxClient.IS_ANDROID;
-EditorUi.prototype.setDarkMode=function(b){this.spinner.spin(document.body,mxResources.get("working")+"...")&&window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();this.doSetDarkMode(b);null==urlParams.dark&&(mxSettings.settings.darkMode=b,mxSettings.save());this.fireEvent(new mxEventObject("darkModeChanged"))}),0)};var g=document.createElement("link");g.setAttribute("rel","stylesheet");g.setAttribute("href",STYLE_PATH+"/dark.css");g.setAttribute("charset","UTF-8");g.setAttribute("type",
+EditorUi.prototype.setDarkMode=function(b){this.spinner.spin(document.body,mxResources.get("working")+"...")&&window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();this.doSetDarkMode(b);null==urlParams.dark&&(mxSettings.settings.darkMode=b,mxSettings.save());this.fireEvent(new mxEventObject("darkModeChanged"))}),0)};var f=document.createElement("link");f.setAttribute("rel","stylesheet");f.setAttribute("href",STYLE_PATH+"/dark.css");f.setAttribute("charset","UTF-8");f.setAttribute("type",
"text/css");EditorUi.prototype.doSetDarkMode=function(b){if(Editor.darkMode!=b){var c=this.editor.graph;Editor.darkMode=b;this.spinner.opts.color=Editor.isDarkMode()?"#c0c0c0":"#000";this.setGridColor(Editor.isDarkMode()?c.view.defaultDarkGridColor:c.view.defaultGridColor);c.defaultPageBackgroundColor="1"==urlParams.embedInline?"transparent":Editor.isDarkMode()?Editor.darkColor:"#ffffff";c.defaultPageBorderColor=Editor.isDarkMode()?"#505759":"#ffffff";c.shapeBackgroundColor=Editor.isDarkMode()?Editor.darkColor:
"#ffffff";c.shapeForegroundColor=Editor.isDarkMode()?Editor.lightColor:"#000000";c.defaultThemeName=Editor.isDarkMode()?"darkTheme":"default-style2";c.graphHandler.previewColor=Editor.isDarkMode()?"#cccccc":"black";document.body.style.backgroundColor="1"==urlParams.embedInline?"transparent":Editor.isDarkMode()?Editor.darkColor:"#ffffff";c.loadStylesheet();null!=this.actions.layersWindow&&(b=this.actions.layersWindow.window.isVisible(),this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.destroy(),
this.actions.layersWindow=null,b&&window.setTimeout(this.actions.get("layers").funct,0));null!=this.menus.commentsWindow&&(this.menus.commentsWindow.window.setVisible(!1),this.menus.commentsWindow.destroy(),this.menus.commentsWindow=null);null!=this.ruler&&this.ruler.updateStyle();Graph.prototype.defaultPageBackgroundColor=c.defaultPageBackgroundColor;Graph.prototype.defaultPageBorderColor=c.defaultPageBorderColor;Graph.prototype.shapeBackgroundColor=c.shapeBackgroundColor;Graph.prototype.shapeForegroundColor=
c.shapeForegroundColor;Graph.prototype.defaultThemeName=c.defaultThemeName;StyleFormatPanel.prototype.defaultStrokeColor=Editor.isDarkMode()?"#cccccc":"black";BaseFormatPanel.prototype.buttonBackgroundColor=Editor.isDarkMode()?Editor.darkColor:"white";Format.inactiveTabBackgroundColor=Editor.isDarkMode()?"black":"#f0f0f0";Dialog.backdropColor=Editor.isDarkMode()?Editor.darkColor:"white";mxConstants.DROP_TARGET_COLOR=Editor.isDarkMode()?"#00ff00":"#0000FF";Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?
-Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;p.innerHTML=Editor.createMinimalCss();Editor.darkMode?null==g.parentNode&&document.getElementsByTagName("head")[0].appendChild(g):null!=g.parentNode&&g.parentNode.removeChild(g)}};Editor.createMinimalCss=function(){return"* { -webkit-font-smoothing: antialiased; }html body td.mxWindowTitle > div > img { padding: 8px 4px; }"+(Editor.isDarkMode()?
+Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;p.innerHTML=Editor.createMinimalCss();Editor.darkMode?null==f.parentNode&&document.getElementsByTagName("head")[0].appendChild(f):null!=f.parentNode&&f.parentNode.removeChild(f)}};Editor.createMinimalCss=function(){return"* { -webkit-font-smoothing: antialiased; }html body td.mxWindowTitle > div > img { padding: 8px 4px; }"+(Editor.isDarkMode()?
"html body td.mxWindowTitle > div > img { margin: -4px; }html body .geToolbarContainer .geMenuItem, html body .geToolbarContainer .geToolbarButton, html body .geMenubarContainer .geMenuItem .geMenuItem, html body .geMenubarContainer a.geMenuItem,html body .geMenubarContainer .geToolbarButton { filter: invert(1); }html body div.geToolbarContainer a.geInverted { filter: none; }html body .geMenubarContainer .geMenuItem .geMenuItem, html body .geMenubarContainer a.geMenuItem { color: #353535; }html > body > div > .geToolbarContainer { border: 1px solid #c0c0c0 !important; box-shadow: none !important; }html > body.geEditor > div > a.geItem { background-color: #2a2a2a; color: #cccccc; border-color: #505759; }html body .geTabContainer, html body .geTabContainer div, html body .geMenubarContainer { border-color: #505759 !important; }html body .mxCellEditor { color: #f0f0f0; }":
"html body div.geToolbarContainer a.geInverted { filter: invert(1); }html body.geEditor .geTabContainer div { border-color: #e5e5e5 !important; }")+'html > body > div > a.geItem { background-color: #ffffff; color: #707070; border-top: 1px solid lightgray; border-left: 1px solid lightgray; }html body .geMenubarContainer { border-bottom:1px solid lightgray;background-color:#ffffff; }html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }html body table.mxWindow td.mxWindowPane div.mxWindowPane *:not(svg *) { font-size:9pt; }table.mxWindow * :not(svg *) { font-size:13px; }html body .mxWindow { z-index: 3; }html body div.diagramContainer button, html body button.geBtn { font-size:14px; font-weight:700; border-radius: 5px; }html body button.geBtn:active { opacity: 0.6; }html body a.geMenuItem { opacity: 0.75; cursor: pointer; user-select: none; }html body a.geMenuItem[disabled] { opacity: 0.2; }html body a.geMenuItem[disabled]:active { opacity: 0.2; }html body div.geActivePage { opacity: 0.7; }html body a.geMenuItem:active { opacity: 0.2; }html body .geToolbarButton { opacity: 0.3; }html body .geToolbarButton:active { opacity: 0.15; }html body .geStatus:active { opacity: 0.5; }html body .geStatus { padding-top:3px !important; }html body .geMenubarContainer .geStatus { margin-top: 0px !important; }html table.mxPopupMenu tr.mxPopupMenuItemHover:active { opacity: 0.7; }html body .geDialog input, html body .geToolbarContainer input, html body .mxWindow input {padding: 2px; display: inline-block; }html body .mxWindow input[type="checkbox"] {padding: 0px; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: '+
(Editor.isDarkMode()?Editor.darkColor:"#fff")+" !important; border: none !important; }.mxWindow button, .geDialog select, .mxWindow select { display:inline-block; }html body .mxWindow .geColorBtn, html body .geDialog .geColorBtn { background: none; }html body div.diagramContainer button, html body .mxWindow button, html body .geDialog button { min-width: 0px; border-radius: 5px; color: "+(Editor.isDarkMode()?"#cccccc":"#353535")+" !important; border-style: solid; border-width: 1px; border-color: rgb(216, 216, 216); }html body div.diagramContainer button:hover, html body .mxWindow button:hover, html body .geDialog button:hover { border-color: rgb(177, 177, 177); }html body div.diagramContainer button:active, html body .mxWindow button:active, html body .geDialog button:active { opacity: 0.6; }div.diagramContainer button.geBtn, .mxWindow button.geBtn, .geDialog button.geBtn { min-width:72px; font-weight: 600; background: none; }div.diagramContainer button.gePrimaryBtn, .mxWindow button.gePrimaryBtn, .geDialog button.gePrimaryBtn, html body .gePrimaryBtn { background: #29b6f2; color: #fff !important; border: none; box-shadow: none; }html body .gePrimaryBtn:hover { background: #29b6f2; border: none; box-shadow: inherit; }html body button.gePrimaryBtn:hover { background: #29b6f2; border: none; }.geBtn button { min-width:72px !important; }div.geToolbarContainer a.geButton { margin:0px; padding: 0 2px 4px 2px; } html body div.geToolbarContainer a.geColorBtn { margin: 2px; } html body .mxWindow td.mxWindowPane input, html body .mxWindow td.mxWindowPane select, html body .mxWindow td.mxWindowPane textarea, html body .mxWindow td.mxWindowPane radio { padding: 0px; box-sizing: border-box; }.geDialog, .mxWindow td.mxWindowPane *, div.geSprite, td.mxWindowTitle, .geDiagramContainer { box-sizing:content-box; }.mxWindow div button.geStyleButton { box-sizing: border-box; }table.mxWindow td.mxWindowPane button.geColorBtn { padding:0px; box-sizing: border-box; }td.mxWindowPane .geSidebarContainer button { padding:2px; box-sizing: border-box; }html body .geMenuItem { font-size:14px; text-decoration: none; font-weight: normal; padding: 6px 10px 6px 10px; border: none; border-radius: 5px; color: #353535; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }.geTabContainer { border-bottom:1px solid lightgray; border-top:1px solid lightgray; background: "+
@@ -3932,8 +3941,8 @@ Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMo
(Editor.isDarkMode()?Editor.darkColor:"rgb(249, 249, 249)")+" !important; color: #A0A0A0 !important; } html div.geActivePage { background: "+(Editor.isDarkMode()?Editor.darkColor:"#fff")+" !important; "+(Editor.isDarkMode()?"":"color: #353535 !important; } ")+"html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.4) !important; } html body div.mxPopupMenu { border-radius:5px; border:1px solid #c0c0c0; padding:5px 0 5px 0; box-shadow: 0px 4px 17px -4px rgba(96,96,96,1); } html table.mxPopupMenu td.mxPopupMenuItem { color: "+
(Editor.isDarkMode()?"#cccccc":"#353535")+"; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: "+(Editor.isDarkMode()?"#000000":"#29b6f2")+"; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: "+(Editor.isDarkMode()?"#cccccc":"#ffffff")+" !important; }html tr.mxPopupMenuItem, html td.mxPopupMenuItem { transition-property: none !important; }html table.mxPopupMenu hr { height: 2px; background-color: rgba(0,0,0,.07); margin: 5px 0; }html body td.mxWindowTitle { padding-right: 14px; }html td.mxWindowTitle div { top: 0px !important; }"+
(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"")+("1"==urlParams.sketch?"a.geStatus > div { overflow: hidden; text-overflow: ellipsis; max-width: 100%; }":"")};var p=document.createElement("style");p.type="text/css";p.innerHTML=Editor.createMinimalCss();document.getElementsByTagName("head")[0].appendChild(p);Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var t=EditorUi.prototype.updateTabContainer;
-EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="1"==urlParams.sketch?"0px":this.tabContainerHeight+"px");t.apply(this,arguments)};var d=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){d.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var f=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(b,
-c){null!=c.shortcut&&900>e&&!mxClient.IS_IOS?b.firstChild.nextSibling.setAttribute("title",c.shortcut):f.apply(this,arguments)};var l=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){l.apply(this,arguments);if(null!=this.userElement){var b=this.userElement;b.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+b.style.display;b.className="geToolbarButton";b.innerHTML="";b.style.backgroundImage="url("+Editor.userImage+")";b.style.backgroundPosition="center center";
+EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="1"==urlParams.sketch?"0px":this.tabContainerHeight+"px");t.apply(this,arguments)};var d=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){d.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var g=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(b,
+c){null!=c.shortcut&&900>e&&!mxClient.IS_IOS?b.firstChild.nextSibling.setAttribute("title",c.shortcut):g.apply(this,arguments)};var l=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){l.apply(this,arguments);if(null!=this.userElement){var b=this.userElement;b.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+b.style.display;b.className="geToolbarButton";b.innerHTML="";b.style.backgroundImage="url("+Editor.userImage+")";b.style.backgroundPosition="center center";
b.style.backgroundRepeat="no-repeat";b.style.backgroundSize="24px 24px";b.style.height="24px";b.style.width="24px";b.style.cssFloat="right";b.setAttribute("title",mxResources.get("changeUser"));"none"!=b.style.display&&(b.style.display="inline-block")}};var q=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){q.apply(this,arguments);if(null!=this.shareButton){var b=this.shareButton;b.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";
b.className="geToolbarButton";b.innerHTML="";b.style.backgroundImage="url("+Editor.shareImage+")";b.style.backgroundPosition="center center";b.style.backgroundRepeat="no-repeat";b.style.backgroundSize="24px 24px";b.style.height="24px";b.style.width="24px";"1"==urlParams.sketch&&(this.shareButton.style.display="none")}null!=this.buttonContainer&&(this.buttonContainer.style.marginTop="-2px",this.buttonContainer.style.paddingTop="4px")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer&&
"1"!=urlParams.embedInline){var b=document.createElement("div");b.style.display="inline-block";b.style.position="relative";b.style.marginTop="6px";b.style.marginRight="4px";var c=document.createElement("a");c.className="geMenuItem gePrimaryBtn";c.style.marginLeft="8px";c.style.padding="6px";if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var d="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(c,d);c.setAttribute("title",d);mxEvent.addListener(c,
@@ -3982,7 +3991,7 @@ m.embedViewport.y+m.embedViewport.height-c))+"px"}};this.keyHandler.bindAction(7
p);m.statusContainer=m.createStatusContainer();m.statusContainer.style.position="relative";m.statusContainer.style.maxWidth="";m.statusContainer.style.marginTop="7px";m.statusContainer.style.marginLeft="6px";m.statusContainer.style.color="gray";m.statusContainer.style.cursor="default";var u=m.hideCurrentMenu;m.hideCurrentMenu=function(){u.apply(this,arguments);this.editor.graph.popupMenuHandler.hideMenu()};var v=m.descriptorChanged;m.descriptorChanged=function(){v.apply(this,arguments);var b=m.getCurrentFile();
if(null!=b&&null!=b.getTitle()){var c=b.getMode();"google"==c?c="googleDrive":"github"==c?c="gitHub":"gitlab"==c?c="gitLab":"onedrive"==c&&(c="oneDrive");c=mxResources.get(c);p.setAttribute("title",b.getTitle()+(null!=c?" ("+c+")":""))}else p.removeAttribute("title")};m.setStatusText(m.editor.getStatus());p.appendChild(m.statusContainer);m.buttonContainer=document.createElement("div");m.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";
p.appendChild(m.buttonContainer);m.menubarContainer=m.buttonContainer;m.tabContainer=document.createElement("div");m.tabContainer.className="geTabContainer";m.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";var l=m.diagramContainer.parentNode,x=document.createElement("div");x.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";m.diagramContainer.style.top="1"==urlParams.sketch?
-"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){x.style.top="20px";m.titlebar=document.createElement("div");m.titlebar.style.cssText="position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var y=document.createElement("div");y.style.cssText="max-width: calc(100% - 100px);text-overflow: ellipsis;user-select:none;height:20px;margin: 2px 10px;font-size: 12px;white-space: nowrap;overflow: hidden;";m.titlebar.appendChild(y);l.appendChild(m.titlebar)}var A=
+"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){x.style.top="20px";m.titlebar=document.createElement("div");m.titlebar.style.cssText="position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var y=document.createElement("div");y.style.cssText="max-width: calc(100% - 100px);text-overflow: ellipsis;user-select:none;height:20px;margin: 2px 10px;font-size: 12px;white-space: nowrap;overflow: hidden;";m.titlebar.appendChild(y);l.appendChild(m.titlebar)}var B=
m.menus.get("viewZoom"),F="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,S="1"==urlParams.sketch?document.createElement("div"):null,Q="1"==urlParams.sketch?document.createElement("div"):null,V="1"==urlParams.sketch?document.createElement("div"):null,y=mxUtils.bind(this,function(){null!=this.sidebar&&(this.sidebar.graph.stylesheet.styles=mxUtils.clone(n.stylesheet.styles),this.sidebar.container.innerHTML="",this.sidebar.palettes={},this.sidebar.init(),"1"==urlParams.sketch&&(this.scratchpad=
null,this.toggleScratchpad()));n.refresh();n.view.validateBackground()});m.addListener("darkModeChanged",y);m.addListener("sketchModeChanged",y);var oa=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)V.style.left="10px",V.style.top="10px",Q.style.left="10px",Q.style.top="60px",S.style.top="10px",S.style.right="12px",S.style.left="",m.diagramContainer.setAttribute("data-bounds",m.diagramContainer.style.top+" "+m.diagramContainer.style.left+" "+m.diagramContainer.style.width+" "+m.diagramContainer.style.height),
m.diagramContainer.style.top="0px",m.diagramContainer.style.left="0px",m.diagramContainer.style.bottom="0px",m.diagramContainer.style.right="0px",m.diagramContainer.style.width="",m.diagramContainer.style.height="";else{var b=m.diagramContainer.getAttribute("data-bounds");if(null!=b){m.diagramContainer.style.background="transparent";m.diagramContainer.removeAttribute("data-bounds");var c=n.getGraphBounds(),b=b.split(" ");m.diagramContainer.style.top=b[0];m.diagramContainer.style.left=b[1];m.diagramContainer.style.width=
@@ -3996,23 +4005,23 @@ if(null!=m.hoverIcons){var ka=m.hoverIcons.update;m.hoverIcons.update=function()
"function"===typeof m.statusContainer.firstChild.getAttribute&&null==m.statusContainer.firstChild.getAttribute("class")){var b=null!=m.statusContainer.firstChild&&"function"===typeof m.statusContainer.firstChild.getAttribute?m.statusContainer.firstChild.getAttribute("title"):m.editor.getStatus();ja(b);var c=m.getCurrentFile(),c=null!=c?c.savingStatusKey:DrawioFile.prototype.savingStatusKey;b==mxResources.get(c)+"..."?(m.statusContainer.innerHTML='<img title="'+mxUtils.htmlEntities(mxResources.get(c))+
'..."src="'+Editor.tailSpin+'">',m.statusContainer.style.display="inline-block",la=!0):6<m.buttonContainer.clientWidth&&(m.statusContainer.style.display="none",la=!1)}else m.statusContainer.style.display="inline-block",ja(null),la=!0;p.style.visibility=12<p.clientWidth?"":"hidden"}))):m.editor.addListener("statusChanged",mxUtils.bind(this,function(){p.style.visibility=16<p.clientWidth?"":"hidden"}));P=d("diagram",null,Editor.menuImage);P.style.boxShadow="none";P.style.padding="6px";P.style.margin=
"0px";V.appendChild(P);mxEvent.disableContextMenu(P);mxEvent.addGestureListeners(P,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&this.appIconClicked(b)}),null,null);m.statusContainer.style.position="";m.statusContainer.style.display="none";m.statusContainer.style.margin="0px";m.statusContainer.style.padding="6px 0px";m.statusContainer.style.maxWidth=Math.min(e-240,280)+"px";m.statusContainer.style.display=
-"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.buttonContainer.style.display="inline-block";var ba=document.createElement("a");ba.style.padding="0px";ba.style.boxShadow="none";ba.className="geMenuItem";ba.style.display="inline-block";ba.style.width="40px";ba.style.height="12px";ba.style.marginBottom="-2px";ba.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";ba.style.backgroundPosition=
-"top center";ba.style.backgroundRepeat="no-repeat";ba.setAttribute("title","Minimize");var ca=!1,R=mxUtils.bind(this,function(){Q.innerHTML="";if(!ca){var b=function(b,d,e){b=f("",b.funct,null,d,b,e);b.style.width="40px";b.style.opacity="0.7";return c(b,null,"pointer")},c=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";Q.appendChild(b);mxUtils.br(Q);return b};c(m.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
+"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.buttonContainer.style.display="inline-block";var aa=document.createElement("a");aa.style.padding="0px";aa.style.boxShadow="none";aa.className="geMenuItem";aa.style.display="inline-block";aa.style.width="40px";aa.style.height="12px";aa.style.marginBottom="-2px";aa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";aa.style.backgroundPosition=
+"top center";aa.style.backgroundRepeat="no-repeat";aa.setAttribute("title","Minimize");var ba=!1,R=mxUtils.bind(this,function(){Q.innerHTML="";if(!ba){var b=function(b,d,e){b=f("",b.funct,null,d,b,e);b.style.width="40px";b.style.opacity="0.7";return c(b,null,"pointer")},c=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";Q.appendChild(b);mxUtils.br(Q);return b};c(m.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
60,30,"Text",mxResources.get("text"),!0,!1,null,!0,!0),mxResources.get("text")+" ("+Editor.ctrlKey+"+Shift+X)");c(m.sidebar.createVertexTemplate("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;fontColor=#000000;darkOpacity=0.05;fillColor=#FFF9B2;strokeColor=none;fillStyle=solid;direction=west;gradientDirection=north;gradientColor=#FFF2A1;shadow=1;size=20;pointerEvents=1;",140,160,"",mxResources.get("note"),!0,!1,null,!0),mxResources.get("note"));c(m.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",
160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");c(m.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var b=new mxCell("",new mxGeometry(0,0,n.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,0),!1);
b.geometry.points=[];b.geometry.relative=!0;b.edge=!0;c(m.sidebar.createEdgeTemplateFromCells([b],b.geometry.width,b.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));b=b.clone();b.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";b.geometry.width=n.defaultEdgeLength+20;b.geometry.setTerminalPoint(new mxPoint(0,20),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,20),!1);b=c(m.sidebar.createEdgeTemplateFromCells([b],
-b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var e=m.actions.get("toggleShapes");b(e,mxResources.get("shapes")+" ("+e.shortcut+")",F);P=d("table",null,Editor.tableImage);P.style.boxShadow="none";P.style.opacity="0.7";P.style.padding="6px";
-P.style.margin="0px";P.style.width="37px";c(P,null,"pointer");b(m.actions.get("insertTemplate"),mxResources.get("template"),Editor.templateImage)}"1"!=urlParams.embedInline&&Q.appendChild(ba)});mxEvent.addListener(ba,"click",mxUtils.bind(this,function(){ca?(mxUtils.setPrefixedStyle(Q.style,"transform","translate(0, -50%)"),Q.style.padding="8px 6px 4px",Q.style.top="50%",Q.style.bottom="",Q.style.height="",ba.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",ba.style.width="40px",
-ba.style.height="12px",ba.setAttribute("title","Minimize"),ca=!1,R()):(Q.innerHTML="",Q.appendChild(ba),mxUtils.setPrefixedStyle(Q.style,"transform","translate(0, 0)"),Q.style.top="",Q.style.bottom="12px",Q.style.padding="0px",Q.style.height="24px",ba.style.height="24px",ba.style.backgroundImage="url("+Editor.plusImage+")",ba.setAttribute("title",mxResources.get("insert")),ba.style.width="24px",ca=!0)}));R();m.addListener("darkModeChanged",R);m.addListener("sketchModeChanged",R)}else m.editor.addListener("statusChanged",
-mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=A){var y=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},sa=m.actions.get("zoomIn"),W=m.actions.get("zoomOut"),X=m.actions.get("resetView"),ma=m.actions.get("fullscreen");m.actions.get("toggleDarkMode");var qa=m.actions.get("undo"),T=m.actions.get("redo"),ia=f("",qa.funct,null,mxResources.get("undo")+" ("+qa.shortcut+
-")",qa,Editor.undoImage),da=f("",T.funct,null,mxResources.get("redo")+" ("+T.shortcut+")",T,Editor.redoImage),na=f("",ma.funct,null,mxResources.get("fullscreen"),ma,Editor.fullscreenImage);if(null!=S){A=function(){ea.style.display=null!=m.pages&&("1"==urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};na.parentNode.removeChild(na);var ha=m.actions.get("delete"),ua=f("",ha.funct,null,mxResources.get("delete"),ha,Editor.trashImage);ua.style.opacity="0.1";V.appendChild(ua);
+b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var e=m.actions.get("toggleShapes");b(e,mxResources.get("shapes")+" ("+e.shortcut+")",F);P=d("table",null,Editor.calendarImage);P.style.boxShadow="none";P.style.opacity="0.7";P.style.padding="6px";
+P.style.margin="0px";P.style.width="37px";c(P,null,"pointer");b(m.actions.get("insertTemplate"),mxResources.get("template"),Editor.addImage)}"1"!=urlParams.embedInline&&Q.appendChild(aa)});mxEvent.addListener(aa,"click",mxUtils.bind(this,function(){ba?(mxUtils.setPrefixedStyle(Q.style,"transform","translate(0, -50%)"),Q.style.padding="8px 6px 4px",Q.style.top="50%",Q.style.bottom="",Q.style.height="",aa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",aa.style.width="40px",aa.style.height=
+"12px",aa.setAttribute("title","Minimize"),ba=!1,R()):(Q.innerHTML="",Q.appendChild(aa),mxUtils.setPrefixedStyle(Q.style,"transform","translate(0, 0)"),Q.style.top="",Q.style.bottom="12px",Q.style.padding="0px",Q.style.height="24px",aa.style.height="24px",aa.style.backgroundImage="url("+Editor.plusImage+")",aa.setAttribute("title",mxResources.get("insert")),aa.style.width="24px",ba=!0)}));R();m.addListener("darkModeChanged",R);m.addListener("sketchModeChanged",R)}else m.editor.addListener("statusChanged",
+mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=B){var y=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},sa=m.actions.get("zoomIn"),W=m.actions.get("zoomOut"),X=m.actions.get("resetView"),ma=m.actions.get("fullscreen");m.actions.get("toggleDarkMode");var qa=m.actions.get("undo"),T=m.actions.get("redo"),ia=f("",qa.funct,null,mxResources.get("undo")+" ("+qa.shortcut+
+")",qa,Editor.undoImage),da=f("",T.funct,null,mxResources.get("redo")+" ("+T.shortcut+")",T,Editor.redoImage),na=f("",ma.funct,null,mxResources.get("fullscreen"),ma,Editor.fullscreenImage);if(null!=S){B=function(){ea.style.display=null!=m.pages&&("1"==urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};na.parentNode.removeChild(na);var ha=m.actions.get("delete"),ua=f("",ha.funct,null,mxResources.get("delete"),ha,Editor.trashImage);ua.style.opacity="0.1";V.appendChild(ua);
ha.addListener("stateChanged",function(){ua.style.opacity=ha.enabled?"":"0.1"});X=function(){ia.style.display=0<m.editor.undoManager.history.length||n.isEditing()?"inline-block":"none";da.style.display=ia.style.display;ia.style.opacity=qa.enabled?"":"0.1";da.style.opacity=T.enabled?"":"0.1"};V.appendChild(ia);V.appendChild(da);qa.addListener("stateChanged",X);T.addListener("stateChanged",X);X();null!=urlParams.layers&&(X=m.actions.get("layers"),X=f("",X.funct,null,mxResources.get("layers"),X,Editor.layersImage),
X.style.opacity="0.4",S.appendChild(X));null!=urlParams.tags&&(X=m.actions.get("tags"),X=f("",X.funct,null,mxResources.get("tags"),X,Editor.tagsImage),X.style.opacity="0.4",S.appendChild(X));X=m.actions.get("outline");X=f("",X.funct,null,mxResources.get("outline"),X,Editor.outlineImage);S.appendChild(X);X=f("",W.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",W,Editor.zoomOutImage);S.appendChild(X);var P=document.createElement("div");P.innerHTML="100%";P.setAttribute("title",
mxResources.get("fitWindow")+"/"+mxResources.get("resetView")+" (Enter)");P.style.display="inline-block";P.style.cursor="pointer";P.style.textAlign="center";P.style.whiteSpace="nowrap";P.style.paddingRight="10px";P.style.textDecoration="none";P.style.verticalAlign="top";P.style.padding="6px 0";P.style.fontSize="14px";P.style.width="40px";P.style.opacity="0.4";S.appendChild(P);mxEvent.addListener(P,"click",y);y=f("",sa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",sa,
Editor.zoomInImage);S.appendChild(y);"1"==urlParams.embedInline&&(S.appendChild(na),y=m.actions.get("exit"),S.appendChild(f("",y.funct,null,mxResources.get("exit"),y,Editor.closeImage)));var ea=this.createPageMenuTab(!1);ea.style.display="none";ea.style.position="";ea.style.marginLeft="";ea.style.top="";ea.style.left="";ea.style.height="100%";ea.style.lineHeight="";ea.style.borderStyle="none";ea.style.padding="3px 0";ea.style.margin="0px";ea.style.background="";ea.style.border="";ea.style.boxShadow=
-"none";ea.style.verticalAlign="top";ea.firstChild.style.height="100%";ea.firstChild.style.opacity="0.6";ea.firstChild.style.margin="0px";S.appendChild(ea);m.addListener("fileDescriptorChanged",A);m.addListener("pagesVisibleChanged",A);A();m.tabContainer.style.visibility="hidden";p.style.cssText="position:absolute;right:14px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px 0px 6px 6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";
+"none";ea.style.verticalAlign="top";ea.firstChild.style.height="100%";ea.firstChild.style.opacity="0.6";ea.firstChild.style.margin="0px";S.appendChild(ea);m.addListener("fileDescriptorChanged",B);m.addListener("pagesVisibleChanged",B);B();m.tabContainer.style.visibility="hidden";p.style.cssText="position:absolute;right:14px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px 0px 6px 6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";
V.style.cssText="position:absolute;left:10px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";S.style.cssText="position:absolute;right:14px;bottom:14px;height:28px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px;white-space:nowrap;user-select:none;";x.appendChild(V);x.appendChild(S);Q.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
-x.appendChild(Q);window.setTimeout(function(){mxUtils.setPrefixedStyle(Q.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var ta=f("",y,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",X,Editor.zoomFitImage);p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;text-align:left;white-space:nowrap;";this.tabContainer.style.right="70px";P=t.addMenu("100%",A.funct);P.setAttribute("title",mxResources.get("zoom")+
+x.appendChild(Q);window.setTimeout(function(){mxUtils.setPrefixedStyle(Q.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var ta=f("",y,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",X,Editor.zoomFitImage);p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;text-align:left;white-space:nowrap;";this.tabContainer.style.right="70px";P=t.addMenu("100%",B.funct);P.setAttribute("title",mxResources.get("zoom")+
" (Alt+Mousewheel)");P.style.whiteSpace="nowrap";P.style.paddingRight="10px";P.style.textDecoration="none";P.style.textDecoration="none";P.style.overflow="hidden";P.style.visibility="hidden";P.style.textAlign="center";P.style.cursor="pointer";P.style.height=parseInt(m.tabContainerHeight)-1+"px";P.style.lineHeight=parseInt(m.tabContainerHeight)+1+"px";P.style.position="absolute";P.style.display="block";P.style.fontSize="12px";P.style.width="59px";P.style.right="0px";P.style.bottom="0px";P.style.backgroundImage=
"url("+mxWindow.prototype.minimizeImage+")";P.style.backgroundPosition="right 6px center";P.style.backgroundRepeat="no-repeat";x.appendChild(P)}(function(b){var c=mxUtils.bind(this,function(){b.innerHTML=Math.round(100*m.editor.graph.view.scale)+"%"});m.editor.graph.view.addListener(mxEvent.EVENT_SCALE,c);m.editor.addListener("resetGraphView",c);m.editor.addListener("pageSelected",c)})(P);var ya=m.setGraphEnabled;m.setGraphEnabled=function(){ya.apply(this,arguments);null!=this.tabContainer&&(P.style.visibility=
this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility&&null==S?this.tabContainerHeight+"px":"0px")}}x.appendChild(p);x.appendChild(m.diagramContainer);l.appendChild(x);m.updateTabContainer();null==S&&x.appendChild(m.tabContainer);var pa=null;k();mxEvent.addListener(window,"resize",function(){k();null!=m.sidebarWindow&&m.sidebarWindow.window.fit();null!=m.formatWindow&&m.formatWindow.window.fit();null!=m.actions.outlineWindow&&m.actions.outlineWindow.window.fit();
@@ -4020,7 +4029,7 @@ null!=m.actions.layersWindow&&m.actions.layersWindow.window.fit();null!=m.menus.
mxEvent.getClientY(b)),m.sendEmbeddedSvgExport())});l=document.createElement("div");l.style.position="absolute";l.style.width="10px";l.style.height="10px";l.style.borderRadius="5px";l.style.border="1px solid gray";l.style.background="#ffffff";l.style.cursor="row-resize";m.diagramContainer.parentNode.appendChild(l);m.bottomResizer=l;var xa=null,za=null,Ba=null,Ea=null;mxEvent.addGestureListeners(l,function(b){Ea=parseInt(m.diagramContainer.style.height);za=mxEvent.getClientY(b);n.popupMenuHandler.hideMenu();
mxEvent.consume(b)});l=l.cloneNode(!1);l.style.cursor="col-resize";m.diagramContainer.parentNode.appendChild(l);m.rightResizer=l;mxEvent.addGestureListeners(l,function(b){Ba=parseInt(m.diagramContainer.style.width);xa=mxEvent.getClientX(b);n.popupMenuHandler.hideMenu();mxEvent.consume(b)});mxEvent.addGestureListeners(document.body,null,function(b){var c=!1;null!=xa&&(m.diagramContainer.style.width=Math.max(20,Ba+mxEvent.getClientX(b)-xa)+"px",c=!0);null!=za&&(m.diagramContainer.style.height=Math.max(20,
Ea+mxEvent.getClientY(b)-za)+"px",c=!0);c&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:m.diagramContainer.getBoundingClientRect()}),"*"),oa(),m.refresh())},function(b){null==xa&&null==za||mxEvent.consume(b);za=xa=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility="hidden";V.style.visibility="hidden";S.style.visibility=
-"hidden";Q.style.display="none"}"1"==urlParams.prefetchFonts&&m.editor.loadFonts()}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,c,e,k,g,p,t){this.file=b;this.id=c;this.content=e;this.modifiedDate=k;this.createdDate=g;this.isResolved=p;this.user=t;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,c,e,k,g){c()};DrawioComment.prototype.editComment=function(b,c,e){c()};DrawioComment.prototype.deleteComment=function(b,c){b()};DrawioUser=function(b,c,e,k,g){this.id=b;this.email=c;this.displayName=e;this.pictureUrl=k;this.locale=g};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbringForward=Bring Forward\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncontainer=Container\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\ndraftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyData=Copy Data\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedFonts=Embed Fonts\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified.\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngetNotionChromeExtension=Get the Notion Chrome Extension\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteData=Paste Data\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradial=Radial\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendBackward=Send Backward\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save.\nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found\nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occurred during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\nreplaceWith=Replace with\nreplaceAll=Replace All\nconfASkipDiagModified=Skipped "{1}" as it was modified after initial import\nreplFind=Replace/Find\nmatchesRepl={1} matches replaced\ndraftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.\nibm=IBM\nlinkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.\nlinkToDiagram=Link to Diagram\nchangedBy=Changed By\nlastModifiedOn=Last modified on\nsearchResults=Search Results\nshowAllTemps=Show all templates\nnotionToken=Notion Token\nselectDB=Select Database\nnoDBs=No Databases\ndiagramEdited={1} diagram "{2}" edited\nconfDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?\nconfDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?\nowner=Owner\nrepository=Repository\nbranch=Branch\nmeters=Meters\nteamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)\ncontactOwner=Contact Owner\nviewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.\nwebsite=Website\ncheck4Updates=Check for updates\nattWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...\nconfPartialPageList=We couldn\'t fetch all pages due to an error in Confluence. Continuing using {1} pages only.\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="default"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="default"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="default"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="default"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="default"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
+"hidden";Q.style.display="none"}"1"==urlParams.prefetchFonts&&m.editor.loadFonts()}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,c,e,k,f,p,t){this.file=b;this.id=c;this.content=e;this.modifiedDate=k;this.createdDate=f;this.isResolved=p;this.user=t;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,c,e,k,f){c()};DrawioComment.prototype.editComment=function(b,c,e){c()};DrawioComment.prototype.deleteComment=function(b,c){b()};DrawioUser=function(b,c,e,k,f){this.id=b;this.email=c;this.displayName=e;this.pictureUrl=k;this.locale=f};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbringForward=Bring Forward\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncontainer=Container\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\ndraftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyData=Copy Data\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedFonts=Embed Fonts\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified.\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngetNotionChromeExtension=Get the Notion Chrome Extension\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteData=Paste Data\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradial=Radial\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendBackward=Send Backward\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save.\nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found\nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occurred during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\nreplaceWith=Replace with\nreplaceAll=Replace All\nconfASkipDiagModified=Skipped "{1}" as it was modified after initial import\nreplFind=Replace/Find\nmatchesRepl={1} matches replaced\ndraftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.\nibm=IBM\nlinkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.\nlinkToDiagram=Link to Diagram\nchangedBy=Changed By\nlastModifiedOn=Last modified on\nsearchResults=Search Results\nshowAllTemps=Show all templates\nnotionToken=Notion Token\nselectDB=Select Database\nnoDBs=No Databases\ndiagramEdited={1} diagram "{2}" edited\nconfDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?\nconfDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?\nowner=Owner\nrepository=Repository\nbranch=Branch\nmeters=Meters\nteamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)\ncontactOwner=Contact Owner\nviewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.\nwebsite=Website\ncheck4Updates=Check for updates\nattWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...\nconfPartialPageList=We couldn\'t fetch all pages due to an error in Confluence. Continuing using {1} pages only.\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="default"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="default"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="default"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="default"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="default"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
Graph.prototype.defaultThemes.darkTheme=Graph.prototype.defaultThemes["default-style2"];GraphViewer=function(b,c,e){this.init(b,c,e)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://app.diagrams.net/";GraphViewer.prototype.imageBaseUrl="https://viewer.diagrams.net/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?24:26;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!1;GraphViewer.prototype.autoCrop=!1;
GraphViewer.prototype.autoOrigin=!0;GraphViewer.prototype.center=!1;GraphViewer.prototype.forceCenter=!1;GraphViewer.prototype.allowZoomIn=!1;GraphViewer.prototype.allowZoomOut=!0;GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;GraphViewer.prototype.responsive=!1;
GraphViewer.prototype.init=function(b,c,e){this.graphConfig=null!=e?e:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.autoCrop=null!=this.graphConfig["auto-crop"]?this.graphConfig["auto-crop"]:this.autoCrop;this.autoOrigin=null!=this.graphConfig["auto-origin"]?this.graphConfig["auto-origin"]:this.autoOrigin;this.allowZoomOut=null!=this.graphConfig["allow-zoom-out"]?this.graphConfig["allow-zoom-out"]:this.allowZoomOut;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?
@@ -4029,53 +4038,53 @@ this.graphConfig["allow-zoom-in"]:this.allowZoomIn;this.forceCenter=null!=this.g
this.responsive)&&!this.zoomEnabled&&!mxClient.NO_FO&&!mxClient.IS_SF;this.pageId=this.graphConfig.pageId;this.editor=null;"inline"==this.graphConfig["toolbar-position"]&&(this.minHeight+=this.toolbarHeight);if(null!=c&&(this.xmlDocument=c.ownerDocument,this.xmlNode=c,this.xml=mxUtils.getXml(c),null!=b)){var k=mxUtils.bind(this,function(){this.graph=new Graph(b);this.graph.enableFlowAnimation=!0;this.graph.defaultPageBackgroundColor="transparent";this.graph.transparentBackground=!1;if(this.responsive&&
this.graph.dialect==mxConstants.DIALECT_SVG){var e=this.graph.view.getDrawPane().ownerSVGElement;this.graph.view.getCanvas();null!=this.graphConfig.border?e.style.padding=this.graphConfig.border+"px":""==b.style.padding&&(e.style.padding="8px");e.style.boxSizing="border-box";e.style.overflow="visible";this.graph.fit=function(){};this.graph.sizeDidChange=function(){var b=this.view.graphBounds,c=this.view.translate;e.setAttribute("viewBox",b.x+c.x-this.panDx+" "+(b.y+c.y-this.panDy)+" "+(b.width+1)+
" "+(b.height+1));this.container.style.backgroundColor=e.style.backgroundColor;this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",b))}}this.graphConfig.move&&(this.graph.isMoveCellsEvent=function(b){return!0});this.lightboxClickEnabled&&(b.style.cursor="pointer");this.editor=new Editor(!0,null,null,this.graph);this.editor.editBlankUrl=this.editBlankUrl;this.graph.lightbox=!0;this.graph.centerZoom=!1;this.graph.autoExtend=!1;this.graph.autoScroll=!1;this.graph.setEnabled(!1);1==this.graphConfig["toolbar-nohide"]&&
-(this.editor.defaultGraphOverflow="visible");this.xmlNode=this.editor.extractGraphModel(this.xmlNode,!0);this.xmlNode!=c&&(this.xml=mxUtils.getXml(this.xmlNode),this.xmlDocument=this.xmlNode.ownerDocument);var d=this;this.graph.getImageFromBundles=function(b){return d.getImageUrl(b)};mxClient.IS_SVG&&this.graph.addSvgShadow(this.graph.view.canvas.ownerSVGElement,null,!0);if("mxfile"==this.xmlNode.nodeName){var f=this.xmlNode.getElementsByTagName("diagram");if(0<f.length){if(null!=this.pageId)for(var g=
-0;g<f.length;g++)if(this.pageId==f[g].getAttribute("id")){this.currentPage=g;break}var k=this.graph.getGlobalVariable,d=this;this.graph.getGlobalVariable=function(b){var c=f[d.currentPage];return"page"==b?c.getAttribute("name")||"Page-"+(d.currentPage+1):"pagenumber"==b?d.currentPage+1:"pagecount"==b?f.length:k.apply(this,arguments)}}}this.diagrams=[];var m=null;this.selectPage=function(b){this.handlingResize||(this.currentPage=mxUtils.mod(b,this.diagrams.length),this.updateGraphXml(Editor.parseDiagramNode(this.diagrams[this.currentPage])))};
-this.selectPageById=function(b){b=this.getIndexById(b);var c=0<=b;c&&this.selectPage(b);return c};var g=mxUtils.bind(this,function(){if(null==this.xmlNode||"mxfile"!=this.xmlNode.nodeName)this.diagrams=[];this.xmlNode!=m&&(this.diagrams=this.xmlNode.getElementsByTagName("diagram"),m=this.xmlNode)}),n=this.graph.setBackgroundImage;this.graph.setBackgroundImage=function(b){if(null!=b&&Graph.isPageLink(b.src)){var c=b.src,e=c.indexOf(",");0<e&&(e=d.getIndexById(c.substring(e+1)),0<=e&&(b=d.getImageForGraphModel(Editor.parseDiagramNode(d.diagrams[e])),
-b.originalSrc=c))}n.apply(this,arguments)};var p=this.graph.getGraphBounds;this.graph.getGraphBounds=function(b){var c=p.apply(this,arguments);b=this.backgroundImage;if(null!=b){var d=this.view.translate,e=this.view.scale,c=mxRectangle.fromRectangle(c);c.add(new mxRectangle((d.x+b.x)*e,(d.y+b.y)*e,b.width*e,b.height*e))}return c};this.addListener("xmlNodeChanged",g);g();urlParams.page=d.currentPage;g=null;this.graph.getModel().beginUpdate();try{urlParams.nav=0!=this.graphConfig.nav?"1":"0",this.editor.setGraphXml(this.xmlNode),
-this.graph.view.scale=this.graphConfig.zoom||1,g=this.setLayersVisible(),this.responsive||(this.graph.border=null!=this.graphConfig.border?this.graphConfig.border:8)}finally{this.graph.getModel().endUpdate()}this.responsive||(this.graph.panningHandler.isForcePanningEvent=function(b){return!mxEvent.isPopupTrigger(b.getEvent())&&"auto"==this.graph.container.style.overflow},this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.panningHandler.ignoreCell=!0,this.graph.panningHandler.usePopupTrigger=
+(this.editor.defaultGraphOverflow="visible");this.xmlNode=this.editor.extractGraphModel(this.xmlNode,!0);this.xmlNode!=c&&(this.xml=mxUtils.getXml(this.xmlNode),this.xmlDocument=this.xmlNode.ownerDocument);var d=this;this.graph.getImageFromBundles=function(b){return d.getImageUrl(b)};mxClient.IS_SVG&&this.graph.addSvgShadow(this.graph.view.canvas.ownerSVGElement,null,!0);if("mxfile"==this.xmlNode.nodeName){var f=this.xmlNode.getElementsByTagName("diagram");if(0<f.length){if(null!=this.pageId)for(var k=
+0;k<f.length;k++)if(this.pageId==f[k].getAttribute("id")){this.currentPage=k;break}var p=this.graph.getGlobalVariable,d=this;this.graph.getGlobalVariable=function(b){var c=f[d.currentPage];return"page"==b?c.getAttribute("name")||"Page-"+(d.currentPage+1):"pagenumber"==b?d.currentPage+1:"pagecount"==b?f.length:p.apply(this,arguments)}}}this.diagrams=[];var m=null;this.selectPage=function(b){this.handlingResize||(this.currentPage=mxUtils.mod(b,this.diagrams.length),this.updateGraphXml(Editor.parseDiagramNode(this.diagrams[this.currentPage])))};
+this.selectPageById=function(b){b=this.getIndexById(b);var c=0<=b;c&&this.selectPage(b);return c};var k=mxUtils.bind(this,function(){if(null==this.xmlNode||"mxfile"!=this.xmlNode.nodeName)this.diagrams=[];this.xmlNode!=m&&(this.diagrams=this.xmlNode.getElementsByTagName("diagram"),m=this.xmlNode)}),n=this.graph.setBackgroundImage;this.graph.setBackgroundImage=function(b){if(null!=b&&Graph.isPageLink(b.src)){var c=b.src,e=c.indexOf(",");0<e&&(e=d.getIndexById(c.substring(e+1)),0<=e&&(b=d.getImageForGraphModel(Editor.parseDiagramNode(d.diagrams[e])),
+b.originalSrc=c))}n.apply(this,arguments)};var u=this.graph.getGraphBounds;this.graph.getGraphBounds=function(b){var c=u.apply(this,arguments);b=this.backgroundImage;if(null!=b){var d=this.view.translate,e=this.view.scale,c=mxRectangle.fromRectangle(c);c.add(new mxRectangle((d.x+b.x)*e,(d.y+b.y)*e,b.width*e,b.height*e))}return c};this.addListener("xmlNodeChanged",k);k();urlParams.page=d.currentPage;k=null;this.graph.getModel().beginUpdate();try{urlParams.nav=0!=this.graphConfig.nav?"1":"0",this.editor.setGraphXml(this.xmlNode),
+this.graph.view.scale=this.graphConfig.zoom||1,k=this.setLayersVisible(),this.responsive||(this.graph.border=null!=this.graphConfig.border?this.graphConfig.border:8)}finally{this.graph.getModel().endUpdate()}this.responsive||(this.graph.panningHandler.isForcePanningEvent=function(b){return!mxEvent.isPopupTrigger(b.getEvent())&&"auto"==this.graph.container.style.overflow},this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.panningHandler.ignoreCell=!0,this.graph.panningHandler.usePopupTrigger=
!1,this.graph.panningHandler.pinchEnabled=!1);this.graph.setPanning(!1);null!=this.graphConfig.toolbar?this.addToolbar():null!=this.graphConfig.title&&this.showTitleAsTooltip&&b.setAttribute("title",this.graphConfig.title);this.responsive||this.addSizeHandler();!this.showLayers(this.graph)||this.forceCenter||this.layersEnabled&&!this.autoCrop||this.crop();this.addClickHandler(this.graph);this.graph.setTooltips(0!=this.graphConfig.tooltips);this.graph.initialViewState={translate:this.graph.view.translate.clone(),
-scale:this.graph.view.scale};null!=g&&this.setLayersVisible(g);this.graph.customLinkClicked=function(b){if(Graph.isPageLink(b)){var c=b.indexOf(",");d.selectPageById(b.substring(c+1))||alert(mxResources.get("pageNotFound")||"Page not found")}else this.handleCustomLink(b);return!0};var v=this.graph.foldTreeCell;this.graph.foldTreeCell=mxUtils.bind(this,function(){this.treeCellFolded=!0;return v.apply(this.graph,arguments)});this.fireEvent(new mxEventObject("render"))});e=window.MutationObserver||window.WebKitMutationObserver||
-window.MozMutationObserver;if(this.checkVisibleState&&0==b.offsetWidth&&"undefined"!==typeof e){var g=this.getObservableParent(b),p=new e(mxUtils.bind(this,function(c){0<b.offsetWidth&&(p.disconnect(),k())}));p.observe(g,{attributes:!0})}else k()}};GraphViewer.prototype.getObservableParent=function(b){for(b=b.parentNode;b!=document.body&&null!=b.parentNode&&"none"!==mxUtils.getCurrentStyle(b).display;)b=b.parentNode;return b};
+scale:this.graph.view.scale};null!=k&&this.setLayersVisible(k);this.graph.customLinkClicked=function(b){if(Graph.isPageLink(b)){var c=b.indexOf(",");d.selectPageById(b.substring(c+1))||alert(mxResources.get("pageNotFound")||"Page not found")}else this.handleCustomLink(b);return!0};var v=this.graph.foldTreeCell;this.graph.foldTreeCell=mxUtils.bind(this,function(){this.treeCellFolded=!0;return v.apply(this.graph,arguments)});this.fireEvent(new mxEventObject("render"))});e=window.MutationObserver||window.WebKitMutationObserver||
+window.MozMutationObserver;if(this.checkVisibleState&&0==b.offsetWidth&&"undefined"!==typeof e){var f=this.getObservableParent(b),p=new e(mxUtils.bind(this,function(c){0<b.offsetWidth&&(p.disconnect(),k())}));p.observe(f,{attributes:!0})}else k()}};GraphViewer.prototype.getObservableParent=function(b){for(b=b.parentNode;b!=document.body&&null!=b.parentNode&&"none"!==mxUtils.getCurrentStyle(b).display;)b=b.parentNode;return b};
GraphViewer.prototype.getImageUrl=function(b){null!=b&&"http://"!=b.substring(0,7)&&"https://"!=b.substring(0,8)&&"data:image"!=b.substring(0,10)&&("/"==b.charAt(0)&&(b=b.substring(1,b.length)),b=this.imageBaseUrl+b);return b};
GraphViewer.prototype.getImageForGraphModel=function(b){var c=Graph.createOffscreenGraph(this.graph.getStylesheet());c.getGlobalVariable=this.graph.getGlobalVariable;document.body.appendChild(c.container);b=(new mxCodec(b.ownerDocument)).decode(b).root;c.model.setRoot(b);b=c.getSvg();var e=c.getGraphBounds();document.body.removeChild(c.container);return new mxImage(Editor.createSvgDataUri(mxUtils.getXml(b)),e.width,e.height,e.x,e.y)};
GraphViewer.prototype.getIndexById=function(b){if(null!=this.diagrams)for(var c=0;c<this.diagrams.length;c++)if(this.diagrams[c].getAttribute("id")==b)return c;return-1};GraphViewer.prototype.setXmlNode=function(b){b=this.editor.extractGraphModel(b,!0);this.xmlDocument=b.ownerDocument;this.xml=mxUtils.getXml(b);this.xmlNode=b;this.updateGraphXml(b);this.fireEvent(new mxEventObject("xmlNodeChanged"))};
GraphViewer.prototype.setFileNode=function(b){null==this.xmlNode&&(this.xmlDocument=b.ownerDocument,this.xml=mxUtils.getXml(b),this.xmlNode=b);this.setGraphXml(b)};GraphViewer.prototype.updateGraphXml=function(b){this.setGraphXml(b);this.fireEvent(new mxEventObject("graphChanged"))};
-GraphViewer.prototype.setLayersVisible=function(b){var c=!0;if(!this.autoOrigin){var e=[],k=this.graph.getModel();k.beginUpdate();try{for(var g=0;g<k.getChildCount(k.root);g++){var p=k.getChildAt(k.root,g),c=c&&k.isVisible(p);e.push(k.isVisible(p));k.setVisible(p,null!=b?b[g]:!0)}}finally{k.endUpdate()}}return c?null:e};
+GraphViewer.prototype.setLayersVisible=function(b){var c=!0;if(!this.autoOrigin){var e=[],k=this.graph.getModel();k.beginUpdate();try{for(var f=0;f<k.getChildCount(k.root);f++){var p=k.getChildAt(k.root,f),c=c&&k.isVisible(p);e.push(k.isVisible(p));k.setVisible(p,null!=b?b[f]:!0)}}finally{k.endUpdate()}}return c?null:e};
GraphViewer.prototype.setGraphXml=function(b){if(null!=this.graph){this.graph.view.translate=new mxPoint;this.graph.view.scale=1;var c=null;this.graph.getModel().beginUpdate();try{this.graph.getModel().clear(),this.editor.setGraphXml(b),c=this.setLayersVisible(!0)}finally{this.graph.getModel().endUpdate()}this.responsive||(this.widthIsEmpty?(this.graph.container.style.width="",this.graph.container.style.height=""):this.graph.container.style.width=this.initialWidth,this.positionGraph());this.graph.initialViewState=
{translate:this.graph.view.translate.clone(),scale:this.graph.view.scale};c&&this.setLayersVisible(c)}};
GraphViewer.prototype.addSizeHandler=function(){var b=this.graph.container,c=this.graph.getGraphBounds(),e=!1;b.style.overflow=1!=this.graphConfig["toolbar-nohide"]?"hidden":"visible";var k=mxUtils.bind(this,function(){if(!e){e=!0;var c=this.graph.getGraphBounds();b.style.overflow=1!=this.graphConfig["toolbar-nohide"]?c.width+2*this.graph.border>b.offsetWidth-2?"auto":"hidden":"visible";if(null!=this.toolbar&&1!=this.graphConfig["toolbar-nohide"]){var c=b.getBoundingClientRect(),f=mxUtils.getScrollOrigin(document.body),
f="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-f.x,top:-f.y},c={left:c.left-f.left,top:c.top-f.top,bottom:c.bottom-f.top,right:c.right-f.left};this.toolbar.style.left=c.left+"px";"bottom"==this.graphConfig["toolbar-position"]?this.toolbar.style.top=c.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(this.toolbar.style.width=Math.max(this.minToolbarWidth,b.offsetWidth)+"px",this.toolbar.style.top=c.top+1+"px"):this.toolbar.style.top=c.top+"px"}else null!=
-this.toolbar&&(this.toolbar.style.width=Math.max(this.minToolbarWidth,b.offsetWidth)+"px");this.treeCellFolded&&(this.treeCellFolded=!1,this.positionGraph(this.graph.view.translate),this.graph.initialViewState.translate=this.graph.view.translate.clone());e=!1}}),g=null;this.handlingResize=!1;this.fitGraph=mxUtils.bind(this,function(c){var d=b.offsetWidth;d==g||this.handlingResize||(this.handlingResize=!0,"auto"==b.style.overflow&&(b.style.overflow="hidden"),this.graph.maxFitScale=null!=c?c:this.graphConfig.zoom||
-(this.allowZoomIn?null:1),this.graph.fit(null,null,null,null,null,!0),(this.center||0==this.graphConfig.resize&&""!=b.style.height)&&this.graph.center(),this.graph.maxFitScale=null,0==this.graphConfig.resize&&""!=b.style.height||this.updateContainerHeight(b,Math.max(this.minHeight,this.graph.getGraphBounds().height+2*this.graph.border+1)),this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale},g=d,window.setTimeout(mxUtils.bind(this,function(){this.handlingResize=
+this.toolbar&&(this.toolbar.style.width=Math.max(this.minToolbarWidth,b.offsetWidth)+"px");this.treeCellFolded&&(this.treeCellFolded=!1,this.positionGraph(this.graph.view.translate),this.graph.initialViewState.translate=this.graph.view.translate.clone());e=!1}}),f=null;this.handlingResize=!1;this.fitGraph=mxUtils.bind(this,function(c){var d=b.offsetWidth;d==f||this.handlingResize||(this.handlingResize=!0,"auto"==b.style.overflow&&(b.style.overflow="hidden"),this.graph.maxFitScale=null!=c?c:this.graphConfig.zoom||
+(this.allowZoomIn?null:1),this.graph.fit(null,null,null,null,null,!0),(this.center||0==this.graphConfig.resize&&""!=b.style.height)&&this.graph.center(),this.graph.maxFitScale=null,0==this.graphConfig.resize&&""!=b.style.height||this.updateContainerHeight(b,Math.max(this.minHeight,this.graph.getGraphBounds().height+2*this.graph.border+1)),this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale},f=d,window.setTimeout(mxUtils.bind(this,function(){this.handlingResize=
!1}),0))});GraphViewer.useResizeSensor&&(9>=document.documentMode?(mxEvent.addListener(window,"resize",k),this.graph.addListener("size",k)):new ResizeSensor(this.graph.container,k));if(this.graphConfig.resize||(this.zoomEnabled||!this.autoFit)&&0!=this.graphConfig.resize)this.graph.minimumContainerSize=new mxRectangle(0,0,this.minWidth,this.minHeight),this.graph.resizeContainer=!0;else if(!this.widthIsEmpty||""!=b.style.height&&this.autoFit||this.updateContainerWidth(b,c.width+2*this.graph.border),
-0==this.graphConfig.resize&&""!=b.style.height||this.updateContainerHeight(b,Math.max(this.minHeight,c.height+2*this.graph.border+1)),!this.zoomEnabled&&this.autoFit){var p=g=null,k=mxUtils.bind(this,function(){window.clearTimeout(p);this.handlingResize||(p=window.setTimeout(mxUtils.bind(this,this.fitGraph),100))});GraphViewer.useResizeSensor&&(9>=document.documentMode?mxEvent.addListener(window,"resize",k):new ResizeSensor(this.graph.container,k))}else 9>=document.documentMode||this.graph.addListener("size",
+0==this.graphConfig.resize&&""!=b.style.height||this.updateContainerHeight(b,Math.max(this.minHeight,c.height+2*this.graph.border+1)),!this.zoomEnabled&&this.autoFit){var p=f=null,k=mxUtils.bind(this,function(){window.clearTimeout(p);this.handlingResize||(p=window.setTimeout(mxUtils.bind(this,this.fitGraph),100))});GraphViewer.useResizeSensor&&(9>=document.documentMode?mxEvent.addListener(window,"resize",k):new ResizeSensor(this.graph.container,k))}else 9>=document.documentMode||this.graph.addListener("size",
k);var t=mxUtils.bind(this,function(d){var e=b.style.minWidth;this.widthIsEmpty&&(b.style.minWidth="100%");var k=null!=this.graphConfig["max-height"]?this.graphConfig["max-height"]:""!=b.style.height&&this.autoFit?b.offsetHeight:void 0;0<b.offsetWidth&&null==d&&this.allowZoomOut&&(this.allowZoomIn||c.width+2*this.graph.border>b.offsetWidth||c.height+2*this.graph.border>k)?(d=null,null!=k&&c.height+2*this.graph.border>k-2&&(d=(k-2*this.graph.border-2)/c.height),this.fitGraph(d)):this.widthIsEmpty||
-null!=d||0!=this.graphConfig.resize||""==b.style.height?(d=null!=d?d:new mxPoint,this.graph.view.setTranslate(Math.floor(this.graph.border-c.x/this.graph.view.scale)+d.x,Math.floor(this.graph.border-c.y/this.graph.view.scale)+d.y),g=b.offsetWidth):this.graph.center((!this.widthIsEmpty||c.width<this.minWidth)&&1!=this.graphConfig.resize);b.style.minWidth=e});8==document.documentMode?window.setTimeout(t,0):t();this.positionGraph=function(b){c=this.graph.getGraphBounds();g=null;t(b)}};
+null!=d||0!=this.graphConfig.resize||""==b.style.height?(d=null!=d?d:new mxPoint,this.graph.view.setTranslate(Math.floor(this.graph.border-c.x/this.graph.view.scale)+d.x,Math.floor(this.graph.border-c.y/this.graph.view.scale)+d.y),f=b.offsetWidth):this.graph.center((!this.widthIsEmpty||c.width<this.minWidth)&&1!=this.graphConfig.resize);b.style.minWidth=e});8==document.documentMode?window.setTimeout(t,0):t();this.positionGraph=function(b){c=this.graph.getGraphBounds();f=null;t(b)}};
GraphViewer.prototype.crop=function(){var b=this.graph,c=b.getGraphBounds(),e=b.border,k=b.view.scale;b.view.setTranslate(null!=c.x?Math.floor(b.view.translate.x-c.x/k+e):e,null!=c.y?Math.floor(b.view.translate.y-c.y/k+e):e)};GraphViewer.prototype.updateContainerWidth=function(b,c){b.style.width=c+"px"};GraphViewer.prototype.updateContainerHeight=function(b,c){if(this.forceCenter||this.zoomEnabled||!this.autoFit||"BackCompat"==document.compatMode||8==document.documentMode)b.style.height=c+"px"};
-GraphViewer.prototype.showLayers=function(b,c){var e=this.graphConfig.layers,e=null!=e&&0<e.length?e.split(" "):[],k=this.graphConfig.layerIds,g=null!=k&&0<k.length,p=!1;if(0<e.length||g||null!=c){var t=null!=c?c.getModel():null,p=b.getModel();p.beginUpdate();try{var d=p.getChildCount(p.root);if(null==t){var t=!1,f={};if(g)for(var l=0;l<k.length;l++){var q=p.getCell(k[l]);null!=q&&(t=!0,f[q.id]=!0)}else for(l=0;l<e.length;l++)q=p.getChildAt(p.root,parseInt(e[l])),null!=q&&(t=!0,f[q.id]=!0);for(l=
-0;t&&l<d;l++)q=p.getChildAt(p.root,l),p.setVisible(q,f[q.id]||!1)}else for(l=0;l<d;l++)p.setVisible(p.getChildAt(p.root,l),t.isVisible(t.getChildAt(t.root,l)))}finally{p.endUpdate()}p=!0}return p};
+GraphViewer.prototype.showLayers=function(b,c){var e=this.graphConfig.layers,e=null!=e&&0<e.length?e.split(" "):[],k=this.graphConfig.layerIds,f=null!=k&&0<k.length,p=!1;if(0<e.length||f||null!=c){var t=null!=c?c.getModel():null,p=b.getModel();p.beginUpdate();try{var d=p.getChildCount(p.root);if(null==t){var t=!1,g={};if(f)for(var l=0;l<k.length;l++){var q=p.getCell(k[l]);null!=q&&(t=!0,g[q.id]=!0)}else for(l=0;l<e.length;l++)q=p.getChildAt(p.root,parseInt(e[l])),null!=q&&(t=!0,g[q.id]=!0);for(l=
+0;t&&l<d;l++)q=p.getChildAt(p.root,l),p.setVisible(q,g[q.id]||!1)}else for(l=0;l<d;l++)p.setVisible(p.getChildAt(p.root,l),t.isVisible(t.getChildAt(t.root,l)))}finally{p.endUpdate()}p=!0}return p};
GraphViewer.prototype.addToolbar=function(){function b(b,c,d,f){var g=document.createElement("div");g.style.borderRight="1px solid #d0d0d0";g.style.padding="3px 6px 3px 6px";mxEvent.addListener(g,"click",b);null!=d&&g.setAttribute("title",d);g.style.display="inline-block";b=document.createElement("img");b.setAttribute("border","0");b.setAttribute("src",c);b.style.width="18px";null==f||f?(mxEvent.addListener(g,"mouseenter",function(){g.style.backgroundColor="#ddd"}),mxEvent.addListener(g,"mouseleave",
function(){g.style.backgroundColor="#eee"}),mxUtils.setOpacity(b,60),g.style.cursor="pointer"):mxUtils.setOpacity(g,30);g.appendChild(b);e.appendChild(g);q++;return g}var c=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?c.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(c.style.marginTop=this.toolbarHeight+"px");var e=c.ownerDocument.createElement("div");e.style.position="absolute";e.style.overflow="hidden";e.style.boxSizing="border-box";
-e.style.whiteSpace="nowrap";e.style.textAlign="left";e.style.zIndex=this.toolbarZIndex;e.style.backgroundColor="#eee";e.style.height=this.toolbarHeight+"px";this.toolbar=e;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(e.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(e,30);var k=null,g=null,p=mxUtils.bind(this,function(b){null!=k&&(window.clearTimeout(k),fadeThead=null);null!=g&&(window.clearTimeout(g),fadeThead2=null);k=window.setTimeout(mxUtils.bind(this,
-function(){mxUtils.setOpacity(e,0);k=null;g=window.setTimeout(mxUtils.bind(this,function(){e.style.display="none";g=null}),100)}),b||200)}),t=mxUtils.bind(this,function(b){null!=k&&(window.clearTimeout(k),fadeThead=null);null!=g&&(window.clearTimeout(g),fadeThead2=null);e.style.display="";mxUtils.setOpacity(e,b||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||(t(30),p())}));mxEvent.addListener(e,mxClient.IS_POINTER?
-"pointermove":"mousemove",function(b){mxEvent.consume(b)});mxEvent.addListener(e,"mouseenter",mxUtils.bind(this,function(b){t(100)}));mxEvent.addListener(e,"mousemove",mxUtils.bind(this,function(b){t(100);mxEvent.consume(b)}));mxEvent.addListener(e,"mouseleave",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||t(30)}));var d=this.graph,f=d.getTolerance();d.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,c){this.startX=c.getGraphX();this.startY=c.getGraphY();
-this.scrollLeft=d.container.scrollLeft;this.scrollTop=d.container.scrollTop},mouseMove:function(b,c){},mouseUp:function(b,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-d.container.scrollLeft)<f&&Math.abs(this.scrollTop-d.container.scrollTop)<f&&Math.abs(this.startX-c.getGraphX())<f&&Math.abs(this.startY-c.getGraphY())<f&&(0<parseFloat(e.style.opacity||0)?p():t(30))}})}for(var l=this.toolbarItems,q=0,m=null,n=null,u=null,v=null,y=0;y<l.length;y++){var x=l[y];if("pages"==x){v=c.ownerDocument.createElement("div");
+e.style.whiteSpace="nowrap";e.style.textAlign="left";e.style.zIndex=this.toolbarZIndex;e.style.backgroundColor="#eee";e.style.height=this.toolbarHeight+"px";this.toolbar=e;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(e.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(e,30);var k=null,f=null,p=mxUtils.bind(this,function(b){null!=k&&(window.clearTimeout(k),fadeThead=null);null!=f&&(window.clearTimeout(f),fadeThead2=null);k=window.setTimeout(mxUtils.bind(this,
+function(){mxUtils.setOpacity(e,0);k=null;f=window.setTimeout(mxUtils.bind(this,function(){e.style.display="none";f=null}),100)}),b||200)}),t=mxUtils.bind(this,function(b){null!=k&&(window.clearTimeout(k),fadeThead=null);null!=f&&(window.clearTimeout(f),fadeThead2=null);e.style.display="";mxUtils.setOpacity(e,b||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||(t(30),p())}));mxEvent.addListener(e,mxClient.IS_POINTER?
+"pointermove":"mousemove",function(b){mxEvent.consume(b)});mxEvent.addListener(e,"mouseenter",mxUtils.bind(this,function(b){t(100)}));mxEvent.addListener(e,"mousemove",mxUtils.bind(this,function(b){t(100);mxEvent.consume(b)}));mxEvent.addListener(e,"mouseleave",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||t(30)}));var d=this.graph,g=d.getTolerance();d.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,c){this.startX=c.getGraphX();this.startY=c.getGraphY();
+this.scrollLeft=d.container.scrollLeft;this.scrollTop=d.container.scrollTop},mouseMove:function(b,c){},mouseUp:function(b,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-d.container.scrollLeft)<g&&Math.abs(this.scrollTop-d.container.scrollTop)<g&&Math.abs(this.startX-c.getGraphX())<g&&Math.abs(this.startY-c.getGraphY())<g&&(0<parseFloat(e.style.opacity||0)?p():t(30))}})}for(var l=this.toolbarItems,q=0,m=null,n=null,u=null,v=null,y=0;y<l.length;y++){var x=l[y];if("pages"==x){v=c.ownerDocument.createElement("div");
v.style.cssText="display:inline-block;position:relative;top:5px;padding:0 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;;cursor:default;";mxUtils.setOpacity(v,70);var F=b(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");F.style.borderRightStyle="none";F.style.paddingLeft="0px";F.style.paddingRight="0px";e.appendChild(v);var H=b(mxUtils.bind(this,function(){this.selectPage(this.currentPage+
1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");H.style.paddingLeft="0px";H.style.paddingRight="0px";x=mxUtils.bind(this,function(){v.innerHTML="";mxUtils.write(v,this.currentPage+1+" / "+this.diagrams.length);v.style.display=1<this.diagrams.length?"inline-block":"none";F.style.display=v.style.display;H.style.display=v.style.display});this.addListener("graphChanged",x);x()}else if("zoom"==x)this.zoomEnabled&&(b(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage,
mxResources.get("zoomOut")||"Zoom Out"),b(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),b(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==x){if(this.layersEnabled){var z=this.graph.getModel(),D=b(mxUtils.bind(this,function(b){if(null!=m)m.parentNode.removeChild(m),
m=null;else{m=this.graph.createLayersDialog(mxUtils.bind(this,function(){if(this.autoCrop)this.crop();else if(this.autoOrigin){var b=this.graph.getGraphBounds(),c=this.graph.view;0>b.x||0>b.y?(this.crop(),this.graph.originalViewState=this.graph.initialViewState,this.graph.initialViewState={translate:c.translate.clone(),scale:c.scale}):null!=this.graph.originalViewState&&0<b.x/c.scale+this.graph.originalViewState.translate.x-c.translate.x&&0<b.y/c.scale+this.graph.originalViewState.translate.y-c.translate.y&&
(c.setTranslate(this.graph.originalViewState.translate.x,this.graph.originalViewState.translate.y),this.graph.originalViewState=null,this.graph.initialViewState={translate:c.translate.clone(),scale:c.scale})}}));mxEvent.addListener(m,"mouseleave",function(){m.parentNode.removeChild(m);m=null});b=D.getBoundingClientRect();m.style.width="140px";m.style.padding="2px 0px 2px 0px";m.style.border="1px solid #d0d0d0";m.style.backgroundColor="#eee";m.style.fontFamily=Editor.defaultHtmlFont;m.style.fontSize=
-"11px";m.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(m,80);var c=mxUtils.getDocumentScrollOrigin(document);m.style.left=c.x+b.left-1+"px";m.style.top=c.y+b.bottom-2+"px";document.body.appendChild(m)}}),Editor.layersImage,mxResources.get("layers")||"Layers");z.addListener(mxEvent.CHANGE,function(){D.style.display=1<z.getChildCount(z.root)?"inline-block":"none"});D.style.display=1<z.getChildCount(z.root)?"inline-block":"none"}}else if("tags"==x){if(this.tagsEnabled){var L=b(mxUtils.bind(this,
-function(b){null==n&&(n=this.graph.createTagsDialog(mxUtils.bind(this,function(){return!0})),n.div.getElementsByTagName("div")[0].style.position="",n.div.style.maxHeight="160px",n.div.style.maxWidth="120px",n.div.style.padding="2px",n.div.style.overflow="auto",n.div.style.height="auto",n.div.style.position="fixed",n.div.style.fontFamily=Editor.defaultHtmlFont,n.div.style.fontSize="11px",n.div.style.backgroundColor="#eee",n.div.style.color="#000",n.div.style.border="1px solid #d0d0d0",n.div.style.zIndex=
-this.toolbarZIndex+1,mxUtils.setOpacity(n.div,80));if(null!=u)u.parentNode.removeChild(u),u=null;else{u=n.div;mxEvent.addListener(u,"mouseleave",function(){u.parentNode.removeChild(u);u=null});b=L.getBoundingClientRect();var c=mxUtils.getDocumentScrollOrigin(document);u.style.left=c.x+b.left-1+"px";u.style.top=c.y+b.bottom-2+"px";document.body.appendChild(u);n.refresh()}}),Editor.tagsImage,mxResources.get("tags")||"Tags");z.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){L.style.display=0<
-this.graph.getAllTags().length?"inline-block":"none"}));L.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}}else"lightbox"==x?this.lightboxEnabled&&b(mxUtils.bind(this,function(){this.showLightbox()}),Editor.fullscreenImage,mxResources.get("fullscreen")||"Fullscreen"):null!=this.graphConfig["toolbar-buttons"]&&(x=this.graphConfig["toolbar-buttons"][x],null!=x&&(x.elem=b(null==x.enabled||x.enabled?x.handler:function(){},x.image,x.title,x.enabled)))}null!=this.graph.minimumContainerSize&&
-(this.graph.minimumContainerSize.width=34*q);null!=this.graphConfig.title&&(l=c.ownerDocument.createElement("div"),l.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",l.setAttribute("title",this.graphConfig.title),mxUtils.write(l,this.graphConfig.title),mxUtils.setOpacity(l,70),e.appendChild(l),this.filename=l);this.minToolbarWidth=34*q;var E=c.style.border,J=mxUtils.bind(this,function(){e.style.width=
-"inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,c.offsetWidth)+"px";e.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var b=c.getBoundingClientRect(),d=mxUtils.getScrollOrigin(document.body),d="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-d.x,top:-d.y},b={left:b.left-d.left,top:b.top-d.top,bottom:b.bottom-d.top,right:b.right-d.left};e.style.left=b.left+"px";"bottom"==this.graphConfig["toolbar-position"]?
-e.style.top=b.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(e.style.marginTop=-this.toolbarHeight+"px",e.style.top=b.top+1+"px"):e.style.top=b.top+"px";"1px solid transparent"==E&&(c.style.border="1px solid #d0d0d0");document.body.appendChild(e);var f=mxUtils.bind(this,function(){null!=e.parentNode&&e.parentNode.removeChild(e);null!=m&&(m.parentNode.removeChild(m),m=null);c.style.border=E});mxEvent.addListener(document,"mousemove",function(b){for(b=mxEvent.getSource(b);null!=b;){if(b==
-c||b==e||b==m)return;b=b.parentNode}f()});mxEvent.addListener(document.body,"mouseleave",function(b){f()})}else e.style.top=-this.toolbarHeight+"px",c.appendChild(e)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(c,"mouseenter",J):J();this.responsive&&"undefined"!==typeof ResizeObserver&&(new ResizeObserver(function(){null!=e.parentNode&&J()})).observe(c)};
+"11px";m.style.overflowY="auto";m.style.maxHeight=this.graph.container.clientHeight-this.toolbarHeight-10+"px";m.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(m,80);var c=mxUtils.getDocumentScrollOrigin(document);m.style.left=c.x+b.left-1+"px";m.style.top=c.y+b.bottom-2+"px";document.body.appendChild(m)}}),Editor.layersImage,mxResources.get("layers")||"Layers");z.addListener(mxEvent.CHANGE,function(){D.style.display=1<z.getChildCount(z.root)?"inline-block":"none"});D.style.display=1<z.getChildCount(z.root)?
+"inline-block":"none"}}else if("tags"==x){if(this.tagsEnabled){var N=b(mxUtils.bind(this,function(b){null==n&&(n=this.graph.createTagsDialog(mxUtils.bind(this,function(){return!0})),n.div.getElementsByTagName("div")[0].style.position="",n.div.style.maxHeight="160px",n.div.style.maxWidth="120px",n.div.style.padding="2px",n.div.style.overflow="auto",n.div.style.height="auto",n.div.style.position="fixed",n.div.style.fontFamily=Editor.defaultHtmlFont,n.div.style.fontSize="11px",n.div.style.backgroundColor=
+"#eee",n.div.style.color="#000",n.div.style.border="1px solid #d0d0d0",n.div.style.zIndex=this.toolbarZIndex+1,mxUtils.setOpacity(n.div,80));if(null!=u)u.parentNode.removeChild(u),u=null;else{u=n.div;mxEvent.addListener(u,"mouseleave",function(){u.parentNode.removeChild(u);u=null});b=N.getBoundingClientRect();var c=mxUtils.getDocumentScrollOrigin(document);u.style.left=c.x+b.left-1+"px";u.style.top=c.y+b.bottom-2+"px";document.body.appendChild(u);n.refresh()}}),Editor.tagsImage,mxResources.get("tags")||
+"Tags");z.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){N.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}));N.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}}else"lightbox"==x?this.lightboxEnabled&&b(mxUtils.bind(this,function(){this.showLightbox()}),Editor.fullscreenImage,mxResources.get("fullscreen")||"Fullscreen"):null!=this.graphConfig["toolbar-buttons"]&&(x=this.graphConfig["toolbar-buttons"][x],null!=x&&(x.elem=b(null==x.enabled||x.enabled?
+x.handler:function(){},x.image,x.title,x.enabled)))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*q);null!=this.graphConfig.title&&(l=c.ownerDocument.createElement("div"),l.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",l.setAttribute("title",this.graphConfig.title),mxUtils.write(l,this.graphConfig.title),mxUtils.setOpacity(l,70),e.appendChild(l),this.filename=
+l);this.minToolbarWidth=34*q;var E=c.style.border,J=mxUtils.bind(this,function(){e.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,c.offsetWidth)+"px";e.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var b=c.getBoundingClientRect(),d=mxUtils.getScrollOrigin(document.body),d="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-d.x,top:-d.y},b={left:b.left-d.left,top:b.top-d.top,bottom:b.bottom-
+d.top,right:b.right-d.left};e.style.left=b.left+"px";"bottom"==this.graphConfig["toolbar-position"]?e.style.top=b.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(e.style.marginTop=-this.toolbarHeight+"px",e.style.top=b.top+1+"px"):e.style.top=b.top+"px";"1px solid transparent"==E&&(c.style.border="1px solid #d0d0d0");document.body.appendChild(e);var f=mxUtils.bind(this,function(){null!=e.parentNode&&e.parentNode.removeChild(e);null!=m&&(m.parentNode.removeChild(m),m=null);c.style.border=
+E});mxEvent.addListener(document,"mousemove",function(b){for(b=mxEvent.getSource(b);null!=b;){if(b==c||b==e||b==m)return;b=b.parentNode}f()});mxEvent.addListener(document.body,"mouseleave",function(b){f()})}else e.style.top=-this.toolbarHeight+"px",c.appendChild(e)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(c,"mouseenter",J):J();this.responsive&&"undefined"!==typeof ResizeObserver&&(new ResizeObserver(function(){null!=e.parentNode&&J()})).observe(c)};
GraphViewer.prototype.disableButton=function(b){var c=this.graphConfig["toolbar-buttons"][b];null!=c&&(mxUtils.setOpacity(c.elem,30),mxEvent.removeListener(c.elem,"click",c.handler),mxEvent.addListener(c.elem,"mouseenter",function(){c.elem.style.backgroundColor="#eee"}))};
-GraphViewer.prototype.addClickHandler=function(b,c){b.linkPolicy=this.graphConfig.target||b.linkPolicy;b.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(e,k){if(null==k)for(var g=mxEvent.getSource(e);g!=b.container&&null!=g&&null==k;)"a"==g.nodeName.toLowerCase()&&(k=g.getAttribute("href")),g=g.parentNode;null!=c?null==k||b.isCustomLink(k)?mxEvent.consume(e):b.isExternalProtocol(k)||b.isBlankLink(k)||window.setTimeout(function(){c.destroy()},0):null!=k&&null==c&&b.isCustomLink(k)&&
+GraphViewer.prototype.addClickHandler=function(b,c){b.linkPolicy=this.graphConfig.target||b.linkPolicy;b.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(e,k){if(null==k)for(var f=mxEvent.getSource(e);f!=b.container&&null!=f&&null==k;)"a"==f.nodeName.toLowerCase()&&(k=f.getAttribute("href")),f=f.parentNode;null!=c?null==k||b.isCustomLink(k)?mxEvent.consume(e):b.isExternalProtocol(k)||b.isBlankLink(k)||window.setTimeout(function(){c.destroy()},0):null!=k&&null==c&&b.isCustomLink(k)&&
(mxEvent.isTouchEvent(e)||!mxEvent.isPopupTrigger(e))&&b.customLinkClicked(k)&&(mxUtils.clearSelection(),mxEvent.consume(e))}),mxUtils.bind(this,function(b){null!=c||!this.lightboxClickEnabled||mxEvent.isTouchEvent(b)&&0!=this.toolbarItems.length||this.showLightbox()}))};
GraphViewer.prototype.showLightbox=function(b,c,e){if("open"==this.graphConfig.lightbox||window.self!==window.top)if(null==this.lightboxWindow||this.lightboxWindow.closed){b=null!=b?b:null!=this.graphConfig.editable?this.graphConfig.editable:!0;e={client:1,target:null!=e?e:"blank"};b&&(e.edit=this.graphConfig.edit||"_blank");if(null!=c?c:1)e.close=1;this.layersEnabled&&(e.layers=1);this.tagsEnabled&&(e.tags={});null!=this.graphConfig&&0!=this.graphConfig.nav&&(e.nav=1);null!=this.graphConfig&&null!=
this.graphConfig.highlight&&(e.highlight=this.graphConfig.highlight.substring(1));null!=this.currentPage&&0<this.currentPage&&(e.page=this.currentPage);"undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)?null==this.lightboxWindow&&mxEvent.addListener(window,"message",mxUtils.bind(this,function(b){"ready"==b.data&&b.source==this.lightboxWindow&&this.lightboxWindow.postMessage(this.xml,"*")})):e.data=encodeURIComponent(this.xml);"1"==urlParams.dev&&(e.dev=
@@ -4083,19 +4092,19 @@ this.graphConfig.highlight&&(e.highlight=this.graphConfig.highlight.substring(1)
GraphViewer.prototype.showLocalLightbox=function(){mxUtils.getDocumentScrollOrigin(document);var b=document.createElement("div");b.style.cssText="position:fixed;top:0;left:0;bottom:0;right:0;";b.style.zIndex=this.lightboxZIndex;b.style.backgroundColor="#000000";mxUtils.setOpacity(b,70);document.body.appendChild(b);var c=document.createElement("img");c.setAttribute("border","0");c.setAttribute("src",Editor.closeBlackImage);c.style.cssText="position:fixed;top:32px;right:32px;";c.style.cursor="pointer";
mxEvent.addListener(c,"click",function(){k.destroy()});urlParams.pages="1";urlParams.page=this.currentPage;urlParams["page-id"]=this.graphConfig.pageId;urlParams["layer-ids"]=null!=this.graphConfig.layerIds&&0<this.graphConfig.layerIds.length?this.graphConfig.layerIds.join(" "):null;urlParams.nav=0!=this.graphConfig.nav?"1":"0";urlParams.layers=this.layersEnabled?"1":"0";this.tagsEnabled&&(urlParams.tags="{}");if(null==document.documentMode||10<=document.documentMode)Editor.prototype.editButtonLink=
this.graphConfig.edit,Editor.prototype.editButtonFunc=this.graphConfig.editFunc;EditorUi.prototype.updateActionStates=function(){};EditorUi.prototype.addBeforeUnloadListener=function(){};EditorUi.prototype.addChromelessClickHandler=function(){};var e=Graph.prototype.shadowId;Graph.prototype.shadowId="lightboxDropShadow";var k=new EditorUi(new Editor(!0),document.createElement("div"),!0);k.editor.editBlankUrl=this.editBlankUrl;k.editor.graph.shadowId="lightboxDropShadow";Graph.prototype.shadowId=e;
-k.refresh=function(){};var g=mxUtils.bind(this,function(b){27==b.keyCode&&k.destroy()}),p=k.destroy;k.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",g);document.body.removeChild(b);document.body.removeChild(c);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled=!0;p.apply(this,arguments)};var t=k.editor.graph,d=t.container;d.style.overflow="hidden";this.lightboxChrome?(d.style.border="1px solid #c0c0c0",d.style.margin="40px",mxEvent.addListener(document.documentElement,
-"keydown",g)):(b.style.display="none",c.style.display="none");var f=this;t.getImageFromBundles=function(b){return f.getImageUrl(b)};var l=k.createTemporaryGraph;k.createTemporaryGraph=function(){var b=l.apply(this,arguments);b.getImageFromBundles=function(b){return f.getImageUrl(b)};return b};this.graphConfig.move&&(t.isMoveCellsEvent=function(b){return!0});mxUtils.setPrefixedStyle(d.style,"border-radius","4px");d.style.position="fixed";GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow=
+k.refresh=function(){};var f=mxUtils.bind(this,function(b){27==b.keyCode&&k.destroy()}),p=k.destroy;k.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",f);document.body.removeChild(b);document.body.removeChild(c);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled=!0;p.apply(this,arguments)};var t=k.editor.graph,d=t.container;d.style.overflow="hidden";this.lightboxChrome?(d.style.border="1px solid #c0c0c0",d.style.margin="40px",mxEvent.addListener(document.documentElement,
+"keydown",f)):(b.style.display="none",c.style.display="none");var g=this;t.getImageFromBundles=function(b){return g.getImageUrl(b)};var l=k.createTemporaryGraph;k.createTemporaryGraph=function(){var b=l.apply(this,arguments);b.getImageFromBundles=function(b){return g.getImageUrl(b)};return b};this.graphConfig.move&&(t.isMoveCellsEvent=function(b){return!0});mxUtils.setPrefixedStyle(d.style,"border-radius","4px");d.style.position="fixed";GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow=
"hidden";mxClient.IS_SF||mxClient.IS_EDGE||(mxUtils.setPrefixedStyle(d.style,"transform","rotateY(90deg)"),mxUtils.setPrefixedStyle(d.style,"transition","all .25s ease-in-out"));this.addClickHandler(t,k);window.setTimeout(mxUtils.bind(this,function(){d.style.outline="none";d.style.zIndex=this.lightboxZIndex;c.style.zIndex=this.lightboxZIndex;document.body.appendChild(d);document.body.appendChild(c);k.setFileData(this.xml);mxUtils.setPrefixedStyle(d.style,"transform","rotateY(0deg)");k.chromelessToolbar.style.bottom=
"60px";k.chromelessToolbar.style.zIndex=this.lightboxZIndex;document.body.appendChild(k.chromelessToolbar);k.getEditBlankXml=mxUtils.bind(this,function(){return this.xml});k.lightboxFit();k.chromelessResize();this.showLayers(t,this.graph);mxEvent.addListener(b,"click",function(){k.destroy()})}),0);return k};
GraphViewer.prototype.updateTitle=function(b){b=b||"";this.showTitleAsTooltip&&null!=this.graph&&null!=this.graph.container&&this.graph.container.setAttribute("title",b);null!=this.filename&&(this.filename.innerHTML="",mxUtils.write(this.filename,b),this.filename.setAttribute("title",b))};
GraphViewer.processElements=function(b){mxUtils.forEach(GraphViewer.getElementsByClassName(b||"mxgraph"),function(b){try{b.innerHTML="",GraphViewer.createViewerForElement(b)}catch(e){b.innerHTML=e.message,null!=window.console&&console.error(e)}})};
-GraphViewer.getElementsByClassName=function(b){if(document.getElementsByClassName){var c=document.getElementsByClassName(b);b=[];for(var e=0;e<c.length;e++)b.push(c[e]);return b}for(var k=document.getElementsByTagName("*"),c=[],e=0;e<k.length;e++){var g=k[e].className;null!=g&&0<g.length&&(g=g.split(" "),0<=mxUtils.indexOf(g,b)&&c.push(k[e]))}return c};
-GraphViewer.createViewerForElement=function(b,c){var e=b.getAttribute("data-mxgraph");if(null!=e){var k=JSON.parse(e),g=function(e){e=mxUtils.parseXml(e);e=new GraphViewer(b,e.documentElement,k);null!=c&&c(e)};null!=k.url?GraphViewer.getUrl(k.url,function(b){g(b)}):g(k.xml)}};
+GraphViewer.getElementsByClassName=function(b){if(document.getElementsByClassName){var c=document.getElementsByClassName(b);b=[];for(var e=0;e<c.length;e++)b.push(c[e]);return b}for(var k=document.getElementsByTagName("*"),c=[],e=0;e<k.length;e++){var f=k[e].className;null!=f&&0<f.length&&(f=f.split(" "),0<=mxUtils.indexOf(f,b)&&c.push(k[e]))}return c};
+GraphViewer.createViewerForElement=function(b,c){var e=b.getAttribute("data-mxgraph");if(null!=e){var k=JSON.parse(e),f=function(e){e=mxUtils.parseXml(e);e=new GraphViewer(b,e.documentElement,k);null!=c&&c(e)};null!=k.url?GraphViewer.getUrl(k.url,function(b){f(b)}):f(k.xml)}};
GraphViewer.initCss=function(){try{var b=document.createElement("style");b.type="text/css";b.innerHTML="div.mxTooltip {\n-webkit-box-shadow: 3px 3px 12px #C0C0C0;\n-moz-box-shadow: 3px 3px 12px #C0C0C0;\nbox-shadow: 3px 3px 12px #C0C0C0;\nbackground: #FFFFCC;\nborder-style: solid;\nborder-width: 1px;\nborder-color: black;\nfont-family: Arial;\nfont-size: 8pt;\nposition: absolute;\ncursor: default;\npadding: 4px;\ncolor: black;}\ntd.mxPopupMenuIcon div {\nwidth:16px;\nheight:16px;}\nhtml div.mxPopupMenu {\n-webkit-box-shadow:2px 2px 3px #d5d5d5;\n-moz-box-shadow:2px 2px 3px #d5d5d5;\nbox-shadow:2px 2px 3px #d5d5d5;\n_filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=2, OffY=2, Color='#d0d0d0',Positive='true');\nbackground:white;\nposition:absolute;\nborder:3px solid #e7e7e7;\npadding:3px;}\nhtml table.mxPopupMenu {\nborder-collapse:collapse;\nmargin:0px;}\nhtml td.mxPopupMenuItem {\npadding:7px 30px 7px 30px;\nfont-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;\nfont-size:10pt;}\nhtml td.mxPopupMenuIcon {\nbackground-color:white;\npadding:0px;}\ntd.mxPopupMenuIcon .geIcon {\npadding:2px;\npadding-bottom:4px;\nmargin:2px;\nborder:1px solid transparent;\nopacity:0.5;\n_width:26px;\n_height:26px;}\ntd.mxPopupMenuIcon .geIcon:hover {\nborder:1px solid gray;\nborder-radius:2px;\nopacity:1;}\nhtml tr.mxPopupMenuItemHover {\nbackground-color: #eeeeee;\ncolor: black;}\ntable.mxPopupMenu hr {\ncolor:#cccccc;\nbackground-color:#cccccc;\nborder:none;\nheight:1px;}\ntable.mxPopupMenu tr {\tfont-size:4pt;}\n.geDialog { font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;\nfont-size:10pt;\nborder:none;\nmargin:0px;}\n.geDialog {\tposition:absolute;\tbackground:white;\toverflow:hidden;\tpadding:30px;\tborder:1px solid #acacac;\t-webkit-box-shadow:0px 0px 2px 2px #d5d5d5;\t-moz-box-shadow:0px 0px 2px 2px #d5d5d5;\tbox-shadow:0px 0px 2px 2px #d5d5d5;\t_filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=2, OffY=2, Color='#d5d5d5', Positive='true');\tz-index: 2;}.geDialogClose {\tposition:absolute;\twidth:9px;\theight:9px;\topacity:0.5;\tcursor:pointer;\t_filter:alpha(opacity=50);}.geDialogClose:hover {\topacity:1;}.geDialogTitle {\tbox-sizing:border-box;\twhite-space:nowrap;\tbackground:rgb(229, 229, 229);\tborder-bottom:1px solid rgb(192, 192, 192);\tfont-size:15px;\tfont-weight:bold;\ttext-align:center;\tcolor:rgb(35, 86, 149);}.geDialogFooter {\tbackground:whiteSmoke;\twhite-space:nowrap;\ttext-align:right;\tbox-sizing:border-box;\tborder-top:1px solid #e5e5e5;\tcolor:darkGray;}\n.geBtn {\tbackground-color: #f5f5f5;\tborder-radius: 2px;\tborder: 1px solid #d8d8d8;\tcolor: #333;\tcursor: default;\tfont-size: 11px;\tfont-weight: bold;\theight: 29px;\tline-height: 27px;\tmargin: 0 0 0 8px;\tmin-width: 72px;\toutline: 0;\tpadding: 0 8px;\tcursor: pointer;}.geBtn:hover, .geBtn:focus {\t-webkit-box-shadow: 0px 1px 1px rgba(0,0,0,0.1);\t-moz-box-shadow: 0px 1px 1px rgba(0,0,0,0.1);\tbox-shadow: 0px 1px 1px rgba(0,0,0,0.1);\tborder: 1px solid #c6c6c6;\tbackground-color: #f8f8f8;\tbackground-image: linear-gradient(#f8f8f8 0px,#f1f1f1 100%);\tcolor: #111;}.geBtn:disabled {\topacity: .5;}.gePrimaryBtn {\tbackground-color: #4d90fe;\tbackground-image: linear-gradient(#4d90fe 0px,#4787ed 100%);\tborder: 1px solid #3079ed;\tcolor: #fff;}.gePrimaryBtn:hover, .gePrimaryBtn:focus {\tbackground-color: #357ae8;\tbackground-image: linear-gradient(#4d90fe 0px,#357ae8 100%);\tborder: 1px solid #2f5bb7;\tcolor: #fff;}.gePrimaryBtn:disabled {\topacity: .5;}";document.getElementsByTagName("head")[0].appendChild(b)}catch(c){}};
GraphViewer.cachedUrls={};GraphViewer.getUrl=function(b,c,e){if(null!=GraphViewer.cachedUrls[b])c(GraphViewer.cachedUrls[b]);else{var k=null!=navigator.userAgent&&0<navigator.userAgent.indexOf("MSIE 9")?new XDomainRequest:new XMLHttpRequest;k.open("GET",b);k.onload=function(){c(null!=k.getText?k.getText():k.responseText)};k.onerror=e;k.send()}};GraphViewer.resizeSensorEnabled=!0;GraphViewer.useResizeSensor=!0;
-(function(){var b=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(b){return window.setTimeout(b,20)},c=function(e,k){function g(){this.q=[];this.add=function(b){this.q.push(b)};var b,c;this.call=function(){b=0;for(c=this.q.length;b<c;b++)this.q[b].call()}}function p(b,c){return b.currentStyle?b.currentStyle[c]:window.getComputedStyle?window.getComputedStyle(b,null).getPropertyValue(c):b.style[c]}function t(c,d){if(!c.resizedAttached)c.resizedAttached=
-new g,c.resizedAttached.add(d);else if(c.resizedAttached){c.resizedAttached.add(d);return}c.resizeSensor=document.createElement("div");c.resizeSensor.className="resize-sensor";c.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";c.resizeSensor.innerHTML='<div class="resize-sensor-expand" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s;"></div></div><div class="resize-sensor-shrink" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s; width: 200%; height: 200%"></div></div>';
-c.appendChild(c.resizeSensor);"static"==p(c,"position")&&(c.style.position="relative");var e=c.resizeSensor.childNodes[0],f=e.childNodes[0],k=c.resizeSensor.childNodes[1],l=function(){f.style.width="100000px";f.style.height="100000px";e.scrollLeft=1E5;e.scrollTop=1E5;k.scrollLeft=1E5;k.scrollTop=1E5};l();var m=!1,n=function(){c.resizedAttached&&(m&&(c.resizedAttached.call(),m=!1),b(n))};b(n);var q,t,L,E,J=function(){if((L=c.offsetWidth)!=q||(E=c.offsetHeight)!=t)m=!0,q=L,t=E;l()},C=function(b,c,d){b.attachEvent?
-b.attachEvent("on"+c,d):b.addEventListener(c,d)};C(e,"scroll",J);C(k,"scroll",J)}var d=function(){GraphViewer.resizeSensorEnabled&&k()},f=Object.prototype.toString.call(e),l="[object Array]"===f||"[object NodeList]"===f||"[object HTMLCollection]"===f||"undefined"!==typeof jQuery&&e instanceof jQuery||"undefined"!==typeof Elements&&e instanceof Elements;if(l)for(var f=0,q=e.length;f<q;f++)t(e[f],d);else t(e,d);this.detach=function(){if(l)for(var b=0,d=e.length;b<d;b++)c.detach(e[b]);else c.detach(e)}};
+(function(){var b=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(b){return window.setTimeout(b,20)},c=function(e,k){function f(){this.q=[];this.add=function(b){this.q.push(b)};var b,c;this.call=function(){b=0;for(c=this.q.length;b<c;b++)this.q[b].call()}}function p(b,c){return b.currentStyle?b.currentStyle[c]:window.getComputedStyle?window.getComputedStyle(b,null).getPropertyValue(c):b.style[c]}function t(c,d){if(!c.resizedAttached)c.resizedAttached=
+new f,c.resizedAttached.add(d);else if(c.resizedAttached){c.resizedAttached.add(d);return}c.resizeSensor=document.createElement("div");c.resizeSensor.className="resize-sensor";c.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";c.resizeSensor.innerHTML='<div class="resize-sensor-expand" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s;"></div></div><div class="resize-sensor-shrink" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s; width: 200%; height: 200%"></div></div>';
+c.appendChild(c.resizeSensor);"static"==p(c,"position")&&(c.style.position="relative");var e=c.resizeSensor.childNodes[0],g=e.childNodes[0],k=c.resizeSensor.childNodes[1],l=function(){g.style.width="100000px";g.style.height="100000px";e.scrollLeft=1E5;e.scrollTop=1E5;k.scrollLeft=1E5;k.scrollTop=1E5};l();var m=!1,n=function(){c.resizedAttached&&(m&&(c.resizedAttached.call(),m=!1),b(n))};b(n);var q,t,N,E,J=function(){if((N=c.offsetWidth)!=q||(E=c.offsetHeight)!=t)m=!0,q=N,t=E;l()},C=function(b,c,d){b.attachEvent?
+b.attachEvent("on"+c,d):b.addEventListener(c,d)};C(e,"scroll",J);C(k,"scroll",J)}var d=function(){GraphViewer.resizeSensorEnabled&&k()},g=Object.prototype.toString.call(e),l="[object Array]"===g||"[object NodeList]"===g||"[object HTMLCollection]"===g||"undefined"!==typeof jQuery&&e instanceof jQuery||"undefined"!==typeof Elements&&e instanceof Elements;if(l)for(var g=0,q=e.length;g<q;g++)t(e[g],d);else t(e,d);this.detach=function(){if(l)for(var b=0,d=e.length;b<d;b++)c.detach(e[b]);else c.detach(e)}};
c.detach=function(b){b.resizeSensor&&(b.removeChild(b.resizeSensor),delete b.resizeSensor,delete b.resizedAttached)};window.ResizeSensor=c})();
(function(){Editor.initMath();GraphViewer.initCss();if(null!=window.onDrawioViewerLoad)window.onDrawioViewerLoad();else GraphViewer.processElements()})();
diff --git a/src/main/webapp/mxgraph/mxClient.js b/src/main/webapp/mxgraph/mxClient.js
index bb44affa..7de19ebe 100644
--- a/src/main/webapp/mxgraph/mxClient.js
+++ b/src/main/webapp/mxgraph/mxClient.js
@@ -1,4 +1,4 @@
-var mxClient={VERSION:"15.9.6",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
+var mxClient={VERSION:"16.0.0",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform),IS_WEBVIEW:/((iPhone|iPod|iPad).*AppleWebKit(?!.*Version)|; wv)/i.test(navigator.userAgent),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&
0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!==document.createElementNS("http://www.w3.org/2000/svg","foreignObject").toString()||0<=navigator.userAgent.indexOf("Opera/"),
@@ -38,79 +38,79 @@ return a},remove:function(a,b){var c=null;if("object"==typeof b)for(var d=mxUtil
if(c&&b.childNodes&&0<b.childNodes.length)for(e=0;e<b.childNodes.length;e++)d.appendChild(mxUtils.importNodeImplementation(a,b.childNodes[e],c));return d;case 3:case 4:case 8:return a.createTextNode(null!=b.nodeValue?b.nodeValue:b.value)}},createXmlDocument:function(){var a=null;document.implementation&&document.implementation.createDocument?a=document.implementation.createDocument("","",null):"ActiveXObject"in window&&(a=mxUtils.createMsXmlDocument());return a},createMsXmlDocument:function(){var a=
new ActiveXObject("Microsoft.XMLDOM");a.async=!1;a.validateOnParse=!1;a.resolveExternals=!1;return a},parseXml:function(){return window.DOMParser?function(a){return(new DOMParser).parseFromString(a,"text/xml")}:function(a){var b=mxUtils.createMsXmlDocument();b.loadXML(a);return b}}(),clearSelection:function(){return document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&
window.getSelection().removeAllRanges()}:function(){}}(),removeWhitespace:function(a,b){for(var c=b?a.previousSibling:a.nextSibling;null!=c&&c.nodeType==mxConstants.NODETYPE_TEXT;){var d=b?c.previousSibling:c.nextSibling,e=mxUtils.getTextContent(c);0==mxUtils.trim(e).length&&c.parentNode.removeChild(c);c=d}},htmlEntities:function(a,b){a=String(a||"");a=a.replace(/&/g,"&amp;");a=a.replace(/"/g,"&quot;");a=a.replace(/\'/g,"&#39;");a=a.replace(/</g,"&lt;");a=a.replace(/>/g,"&gt;");if(null==b||b)a=a.replace(/\n/g,
-"&#xa;");return a},getXml:function(a,b){var c="";mxClient.IS_IE||mxClient.IS_IE11?c=mxUtils.getPrettyXml(a,"","",""):null!=window.XMLSerializer?c=(new XMLSerializer).serializeToString(a):null!=a.xml&&(c=a.xml.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n"));return c=c.replace(/\n/g,b||"&#xa;")},getPrettyXml:function(a,b,c,d,e){var f=[];if(null!=a)if(b=null!=b?b:" ",c=null!=c?c:"",d=null!=d?d:"\n",null!=a.namespaceURI&&a.namespaceURI!=e&&(e=a.namespaceURI,null==a.getAttribute("xmlns")&&
-a.setAttribute("xmlns",a.namespaceURI)),a.nodeType==mxConstants.NODETYPE_DOCUMENT)f.push(mxUtils.getPrettyXml(a.documentElement,b,c,d,e));else if(a.nodeType==mxConstants.NODETYPE_DOCUMENT_FRAGMENT){var g=a.firstChild;if(null!=g)for(;null!=g;)f.push(mxUtils.getPrettyXml(g,b,c,d,e)),g=g.nextSibling}else if(a.nodeType==mxConstants.NODETYPE_COMMENT)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+"\x3c!--"+a+"--\x3e"+d);else if(a.nodeType==mxConstants.NODETYPE_TEXT)a=mxUtils.trim(mxUtils.getTextContent(a)),
-0<a.length&&f.push(c+mxUtils.htmlEntities(a,!1)+d);else if(a.nodeType==mxConstants.NODETYPE_CDATA)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+"<![CDATA["+a+"]]"+d);else{f.push(c+"<"+a.nodeName);g=a.attributes;if(null!=g)for(var k=0;k<g.length;k++){var l=mxUtils.htmlEntities(g[k].value);f.push(" "+g[k].nodeName+'="'+l+'"')}g=a.firstChild;if(null!=g){for(f.push(">"+d);null!=g;)f.push(mxUtils.getPrettyXml(g,b,c+b,d,e)),g=g.nextSibling;f.push(c+"</"+a.nodeName+">"+d)}else f.push(" />"+d)}return f.join("")},
-extractTextWithWhitespace:function(a){function b(a){if(1!=a.length||"BR"!=a[0].nodeName&&"\n"!=a[0].innerHTML)for(var e=0;e<a.length;e++){var g=a[e];"BR"==g.nodeName||"\n"==g.innerHTML||(1==a.length||0==e)&&"DIV"==g.nodeName&&"<br>"==g.innerHTML.toLowerCase()?d.push("\n"):(3===g.nodeType||4===g.nodeType?0<g.nodeValue.length&&d.push(g.nodeValue):8!==g.nodeType&&0<g.childNodes.length&&b(g.childNodes),e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n"))}}var c="BLOCKQUOTE DIV H1 H2 H3 H4 H5 H6 OL P PRE TABLE UL".split(" "),
-d=[];b(a);return d.join("")},replaceTrailingNewlines:function(a,b){for(var c="";0<a.length&&"\n"==a.charAt(a.length-1);)a=a.substring(0,a.length-1),c+=b;return a+c},getTextContent:function(a){return mxClient.IS_IE&&void 0!==a.innerText?a.innerText:null!=a?a[void 0===a.textContent?"text":"textContent"]:""},setTextContent:function(a,b){void 0!==a.innerText?a.innerText=b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:
-""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName),b.push('="'),b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:
-function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c=null,d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");
-mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,
-b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement;try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},
-fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null,"GET",!1);a.send();return a},get:function(a,b,c,d,e,f,g){a=new mxXmlRequest(a,null,"GET");var k=a.setRequestHeaders;g&&(a.setRequestHeaders=
-function(a,b){k.apply(this,arguments);for(var c in g)a.setRequestHeader(c,g[c])});null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},
-loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,
-e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(null!=a[c]&&null==b[c]||null==a[c]&&null!=b[c]||null!=a[c]&&null!=b[c]&&(a[c].x!=b[c].x||a[c].y!=b[c].y))return!1;return!0},equalEntries:function(a,b){var c=0;if(null==a&&null!=b||null!=a&&null==
-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),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<=
-d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;
-b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|=(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,
-mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=
-b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+
-d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},intersectsPoints:function(a,b){for(var c=0;c<b.length-1;c++)if(mxUtils.rectangleIntersectsSegment(a,b[c],b[c+1]))return!0;return!1},rectangleIntersectsSegment:function(a,
-b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+
-g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,
-mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();
-null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:
-document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a);null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+
-(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;
-e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,
-b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;b=document.createElement("img");b.setAttribute("src",a);b.setAttribute("border","0");return b},
-sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>
-a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=
-a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},hex2rgb:function(a){if(null!=a&&7==a.length&&"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16);a=parseInt(a.substring(5,7),16);a="rgb("+b+", "+c+", "+a+")"}return a},
-hex2rgba:function(a){if(null!=a&&7<=a.length&&"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16),d=parseInt(a.substring(5,7),16),e=1;7<a.length&&(e=parseInt(a.substring(7,9),16)/255);a="rgba("+b+", "+c+", "+d+", "+e+")"}return a},rgba2hex:function(a){return(rgb=a&&a.match?a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i):a)&&4===rgb.length?"#"+("0"+parseInt(rgb[1],10).toString(16)).slice(-2)+("0"+parseInt(rgb[2],10).toString(16)).slice(-2)+
-("0"+parseInt(rgb[3],10).toString(16)).slice(-2):a},setCssText:function(a,b){if(null!=a&&null!=b)for(var c=b.split(";"),d=0;d<c.length;d++){var e=c[d].split(":");1<e.length&&(e[0]=mxUtils.trim(e[0].replace(/-([a-z])/gi,function(a,b){return b.toUpperCase()})),a[e[0]]=mxUtils.trim(e[1]))}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):
-0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,
-b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,b){var c=-.5,d=-.5;a==mxConstants.ALIGN_LEFT?c=0:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_TOP?
-d=0:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d,e){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var f=document.createElement("div");f.style.fontFamily=c;f.style.fontSize=Math.round(b)+"px";f.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";null!=e&&((e&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(f.style.fontWeight="bold"),(e&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(f.style.fontStyle=
-"italic"),b=[],(e&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&b.push("underline"),(e&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&b.push("line-through"),0<b.length&&(f.style.textDecoration=b.join(" ")));f.style.position="absolute";f.style.visibility="hidden";f.style.display="inline-block";f.style.zoom="1";null!=d?(f.style.width=d+"px",f.style.whiteSpace="normal"):f.style.whiteSpace="nowrap";f.innerHTML=a;document.body.appendChild(f);a=new mxRectangle(0,0,f.offsetWidth,
-f.offsetHeight);document.body.removeChild(f);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),
-f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=n,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=
-c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=
-null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)d+=g[c].outerHTML;
-d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+k+"px;top:"+l+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));d=document.getElementsByTagName("link");
-for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;for(d=null;null!=f;)g=f.cloneNode(!0),f==
-a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+k+","+l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,500):a()},popup:function(a,b){if(b){var c=
-document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;");c.appendChild(d);c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+
-"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",d||mxUtils.errorImage);f.setAttribute("valign",
-"bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),c=document.createElement("button"),mxClient.IS_IE?
-c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=
-l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",
-RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,
-NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00",OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",
-CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,
-HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,DEFAULT_TEXT_DIRECTION:"",LINE_HEIGHT:1.2,WORD_WRAP:"normal",ABSOLUTE_LINE_HEIGHT:!1,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,
-ARROW_SPACING:0,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,827,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,827),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_PORT_CONSTRAINT_ROTATION:"portConstraintRotation",STYLE_SOURCE_PORT_CONSTRAINT:"sourcePortConstraint",
-STYLE_TARGET_PORT_CONSTRAINT:"targetPortConstraint",STYLE_OPACITY:"opacity",STYLE_FILL_OPACITY:"fillOpacity",STYLE_STROKE_OPACITY:"strokeOpacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_TEXT_DIRECTION:"textDirection",STYLE_OVERFLOW:"overflow",STYLE_BLOCK_SPACING:"blockSpacing",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_DX:"exitDx",STYLE_EXIT_DY:"exitDy",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_DX:"entryDx",
-STYLE_ENTRY_DY:"entryDy",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_POINTER_EVENTS:"pointerEvents",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_MARGIN:"margin",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_WIDTH:"labelWidth",
-STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",
-STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",
-STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_FIX_DASH:"fixDash",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_ABSOLUTE_ARCSIZE:"absoluteArcSize",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",
-STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ANCHOR_POINT_DIRECTION:"anchorPointDirection",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",
-STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",
-STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",
-ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",
-TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",
-PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_HEXAGON:"hexagonPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments.length;b+=2)null!=arguments[b+1]&&(this.properties[arguments[b]]=arguments[b+1])}mxEventObject.prototype.name=null;mxEventObject.prototype.properties=null;mxEventObject.prototype.consumed=!1;mxEventObject.prototype.getName=function(){return this.name};
-mxEventObject.prototype.getProperties=function(){return this.properties};mxEventObject.prototype.getProperty=function(a){return this.properties[a]};mxEventObject.prototype.isConsumed=function(){return this.consumed};mxEventObject.prototype.consume=function(){this.consumed=!0};function mxMouseEvent(a,b){this.evt=a;this.sourceState=this.state=b}mxMouseEvent.prototype.consumed=!1;mxMouseEvent.prototype.evt=null;mxMouseEvent.prototype.graphX=null;mxMouseEvent.prototype.graphY=null;
-mxMouseEvent.prototype.state=null;mxMouseEvent.prototype.sourceState=null;mxMouseEvent.prototype.getEvent=function(){return this.evt};mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)};mxMouseEvent.prototype.isSource=function(a){return null!=a?mxUtils.isAncestorNode(a.node,this.getSource()):!1};mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())};mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())};
-mxMouseEvent.prototype.getGraphX=function(){return this.graphX};mxMouseEvent.prototype.getGraphY=function(){return this.graphY};mxMouseEvent.prototype.getState=function(){return this.state};mxMouseEvent.prototype.getCell=function(){var a=this.getState();return null!=a?a.cell:null};mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())};mxMouseEvent.prototype.isConsumed=function(){return this.consumed};
+"&#xa;");return a},decodeHtml:function(a){var b=document.createElement("textarea");b.innerHTML=a;return b.value},getXml:function(a,b){var c="";mxClient.IS_IE||mxClient.IS_IE11?c=mxUtils.getPrettyXml(a,"","",""):null!=window.XMLSerializer?c=(new XMLSerializer).serializeToString(a):null!=a.xml&&(c=a.xml.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n"));return c=c.replace(/\n/g,b||"&#xa;")},getPrettyXml:function(a,b,c,d,e){var f=[];if(null!=a)if(b=null!=b?b:" ",c=null!=c?c:"",
+d=null!=d?d:"\n",null!=a.namespaceURI&&a.namespaceURI!=e&&(e=a.namespaceURI,null==a.getAttribute("xmlns")&&a.setAttribute("xmlns",a.namespaceURI)),a.nodeType==mxConstants.NODETYPE_DOCUMENT)f.push(mxUtils.getPrettyXml(a.documentElement,b,c,d,e));else if(a.nodeType==mxConstants.NODETYPE_DOCUMENT_FRAGMENT){var g=a.firstChild;if(null!=g)for(;null!=g;)f.push(mxUtils.getPrettyXml(g,b,c,d,e)),g=g.nextSibling}else if(a.nodeType==mxConstants.NODETYPE_COMMENT)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+
+"\x3c!--"+a+"--\x3e"+d);else if(a.nodeType==mxConstants.NODETYPE_TEXT)a=mxUtils.trim(mxUtils.getTextContent(a)),0<a.length&&f.push(c+mxUtils.htmlEntities(a,!1)+d);else if(a.nodeType==mxConstants.NODETYPE_CDATA)a=mxUtils.getTextContent(a),0<a.length&&f.push(c+"<![CDATA["+a+"]]"+d);else{f.push(c+"<"+a.nodeName);g=a.attributes;if(null!=g)for(var k=0;k<g.length;k++){var l=mxUtils.htmlEntities(g[k].value);f.push(" "+g[k].nodeName+'="'+l+'"')}g=a.firstChild;if(null!=g){for(f.push(">"+d);null!=g;)f.push(mxUtils.getPrettyXml(g,
+b,c+b,d,e)),g=g.nextSibling;f.push(c+"</"+a.nodeName+">"+d)}else f.push(" />"+d)}return f.join("")},extractTextWithWhitespace:function(a){function b(a){if(1!=a.length||"BR"!=a[0].nodeName&&"\n"!=a[0].innerHTML)for(var e=0;e<a.length;e++){var g=a[e];"BR"==g.nodeName||"\n"==g.innerHTML||(1==a.length||0==e)&&"DIV"==g.nodeName&&"<br>"==g.innerHTML.toLowerCase()?d.push("\n"):(3===g.nodeType||4===g.nodeType?0<g.nodeValue.length&&d.push(g.nodeValue):8!==g.nodeType&&0<g.childNodes.length&&b(g.childNodes),
+e<a.length-1&&0<=mxUtils.indexOf(c,a[e+1].nodeName)&&d.push("\n"))}}var c="BLOCKQUOTE DIV H1 H2 H3 H4 H5 H6 OL P PRE TABLE UL".split(" "),d=[];b(a);return d.join("")},replaceTrailingNewlines:function(a,b){for(var c="";0<a.length&&"\n"==a.charAt(a.length-1);)a=a.substring(0,a.length-1),c+=b;return a+c},getTextContent:function(a){return mxClient.IS_IE&&void 0!==a.innerText?a.innerText:null!=a?a[void 0===a.textContent?"text":"textContent"]:""},setTextContent:function(a,b){void 0!==a.innerText?a.innerText=
+b:a[void 0===a.textContent?"text":"textContent"]=b},getInnerHtml:function(){return mxClient.IS_IE?function(a){return null!=a?a.innerHTML:""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),getOuterHtml:function(){return mxClient.IS_IE?function(a){if(null!=a){if(null!=a.outerHTML)return a.outerHTML;var b=[];b.push("<"+a.nodeName);var c=a.attributes;if(null!=c)for(var d=0;d<c.length;d++){var e=c[d].value;null!=e&&0<e.length&&(b.push(" "),b.push(c[d].nodeName),b.push('="'),
+b.push(e),b.push('"'))}0==a.innerHTML.length?b.push("/>"):(b.push(">"),b.push(a.innerHTML),b.push("</"+a.nodeName+">"));return b.join("")}return""}:function(a){return null!=a?(new XMLSerializer).serializeToString(a):""}}(),write:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&a.appendChild(c);return c},writeln:function(a,b){var c=a.ownerDocument.createTextNode(b);null!=a&&(a.appendChild(c),a.appendChild(document.createElement("br")));return c},br:function(a,b){b=b||1;for(var c=null,
+d=0;d<b;d++)null!=a&&(c=a.ownerDocument.createElement("br"),a.appendChild(c));return c},button:function(a,b,c){c=null!=c?c:document;c=c.createElement("button");mxUtils.write(c,a);mxEvent.addListener(c,"click",function(a){b(a)});return c},para:function(a,b){var c=document.createElement("p");mxUtils.write(c,b);null!=a&&a.appendChild(c);return c},addTransparentBackgroundFilter:function(a){a.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},
+linkAction:function(a,b,c,d,e){return mxUtils.link(a,b,function(){c.execute(d)},e)},linkInvoke:function(a,b,c,d,e,f){return mxUtils.link(a,b,function(){c[d](e)},f)},link:function(a,b,c,d){var e=document.createElement("span");e.style.color="blue";e.style.textDecoration="underline";e.style.cursor="pointer";null!=d&&(e.style.paddingLeft=d+"px");mxEvent.addListener(e,"click",c);mxUtils.write(e,b);null!=a&&a.appendChild(e);return e},getDocumentSize:function(){var a=document.body,b=document.documentElement;
+try{return new mxRectangle(0,0,a.clientWidth||b.clientWidth,Math.max(a.clientHeight||0,b.clientHeight))}catch(c){return new mxRectangle}},fit:function(a){var b=mxUtils.getDocumentSize(),c=parseInt(a.offsetLeft),d=parseInt(a.offsetWidth),e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),f=e.x,e=e.y,g=f+b.width;c+d>g&&(a.style.left=Math.max(f,g-d)+"px");c=parseInt(a.offsetTop);d=parseInt(a.offsetHeight);b=e+b.height;c+d>b&&(a.style.top=Math.max(e,b-d)+"px")},load:function(a){a=new mxXmlRequest(a,null,
+"GET",!1);a.send();return a},get:function(a,b,c,d,e,f,g){a=new mxXmlRequest(a,null,"GET");var k=a.setRequestHeaders;g&&(a.setRequestHeaders=function(a,b){k.apply(this,arguments);for(var c in g)a.setRequestHeader(c,g[c])});null!=d&&a.setBinary(d);a.send(b,c,e,f);return a},getAll:function(a,b,c){for(var d=a.length,e=[],f=0,g=function(){0==f&&null!=c&&c();f++},k=0;k<a.length;k++)(function(a,c){mxUtils.get(a,function(a){var f=a.getStatus();200>f||299<f?g():(e[c]=a,d--,0==d&&b(e))},g)})(a[k],k);0==d&&
+b(e)},post:function(a,b,c,d){return(new mxXmlRequest(a,b)).send(c,d)},submit:function(a,b,c,d){return(new mxXmlRequest(a,b)).simulate(c,d)},loadInto:function(a,b,c){mxClient.IS_IE?b.onreadystatechange=function(){4==b.readyState&&c()}:b.addEventListener("load",c,!1);b.load(a)},getValue:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c);return a},getNumber:function(a,b,c){a=null!=a?a[b]:null;null==a&&(a=c||0);return Number(a)},getColor:function(a,b,c){a=null!=a?a[b]:null;null==a?a=c:a==mxConstants.NONE&&
+(a=null);return a},clone:function(a,b,c){c=null!=c?c:!1;var d=null;if(null!=a&&"function"==typeof a.constructor){var d=new a.constructor,e;for(e in a)e!=mxObjectIdentity.FIELD_NAME&&(null==b||0>mxUtils.indexOf(b,e))&&(d[e]=c||"object"!=typeof a[e]?a[e]:mxUtils.clone(a[e]))}return d},equalPoints:function(a,b){if(null==a&&null!=b||null!=a&&null==b||null!=a&&null!=b&&a.length!=b.length)return!1;if(null!=a&&null!=b)for(var c=0;c<a.length;c++)if(null!=a[c]&&null==b[c]||null==a[c]&&null!=b[c]||null!=a[c]&&
+null!=b[c]&&(a[c].x!=b[c].x||a[c].y!=b[c].y))return!1;return!0},equalEntries:function(a,b){var c=0;if(null==a&&null!=b||null!=a&&null==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),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<=d.indexOf(mxConstants.DIRECTION_SOUTH))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 1:b|=mxConstants.DIRECTION_MASK_WEST;break;case 2:b|=mxConstants.DIRECTION_MASK_NORTH;break;case 3:b|=mxConstants.DIRECTION_MASK_EAST}if(0<=d.indexOf(mxConstants.DIRECTION_EAST))switch(a){case 0:b|=mxConstants.DIRECTION_MASK_EAST;break;case 1:b|=mxConstants.DIRECTION_MASK_SOUTH;break;case 2:b|=
+mxConstants.DIRECTION_MASK_WEST;break;case 3:b|=mxConstants.DIRECTION_MASK_NORTH}return b},reversePortConstraints:function(a){var b;b=(a&mxConstants.DIRECTION_MASK_WEST)<<3;b|=(a&mxConstants.DIRECTION_MASK_NORTH)<<1;b|=(a&mxConstants.DIRECTION_MASK_SOUTH)>>1;return b|=(a&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(a,b,c){var d=-1;if(0<a.absolutePoints.length)for(var e=a.absolutePoints[0],f=null,g=1;g<a.absolutePoints.length;g++){var k=a.absolutePoints[g],e=mxUtils.ptSegDistSq(e.x,
+e.y,k.x,k.y,b,c);if(null==f||e<f)f=e,d=g-1;e=k}return d},getDirectedBounds:function(a,b,c,d,e){var f=mxUtils.getValue(c,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);d=null!=d?d:mxUtils.getValue(c,mxConstants.STYLE_FLIPH,!1);e=null!=e?e:mxUtils.getValue(c,mxConstants.STYLE_FLIPV,!1);b.x=Math.round(Math.max(0,Math.min(a.width,b.x)));b.y=Math.round(Math.max(0,Math.min(a.height,b.y)));b.width=Math.round(Math.max(0,Math.min(a.width,b.width)));b.height=Math.round(Math.max(0,Math.min(a.height,
+b.height)));if(e&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||d&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.x,b.x=b.width,b.width=c;if(d&&(f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH)||e&&(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST))c=b.y,b.y=b.height,b.height=c;d=mxRectangle.fromRectangle(b);f==mxConstants.DIRECTION_SOUTH?(d.y=b.x,d.x=b.height,d.width=b.y,d.height=b.width):f==mxConstants.DIRECTION_WEST?(d.y=b.height,
+d.x=b.width,d.width=b.x,d.height=b.y):f==mxConstants.DIRECTION_NORTH&&(d.y=b.width,d.x=b.y,d.width=b.height,d.height=b.x);return new mxRectangle(a.x+d.x,a.y+d.y,a.width-d.width-d.x,a.height-d.height-d.y)},getPerimeterPoint:function(a,b,c){for(var d=null,e=0;e<a.length-1;e++){var f=mxUtils.intersection(a[e].x,a[e].y,a[e+1].x,a[e+1].y,b.x,b.y,c.x,c.y);if(null!=f){var g=c.x-f.x,k=c.y-f.y,f={p:f,distSq:k*k+g*g};null!=f&&(null==d||d.distSq>f.distSq)&&(d=f)}}return null!=d?d.p:null},intersectsPoints:function(a,
+b){for(var c=0;c<b.length-1;c++)if(mxUtils.rectangleIntersectsSegment(a,b[c],b[c+1]))return!0;return!1},rectangleIntersectsSegment:function(a,b,c){var d=a.y,e=a.x,f=d+a.height,g=e+a.width;a=b.x;var k=c.x;b.x>c.x&&(a=c.x,k=b.x);k>g&&(k=g);a<e&&(a=e);if(a>k)return!1;var e=b.y,g=c.y,l=c.x-b.x;1E-7<Math.abs(l)&&(c=(c.y-b.y)/l,b=b.y-c*b.x,e=c*a+b,g=c*k+b);e>g&&(b=g,g=e,e=b);g>f&&(g=f);e<d&&(e=d);return e>g?!1:!0},contains:function(a,b,c){return a.x<=b&&a.x+a.width>=b&&a.y<=c&&a.y+a.height>=c},intersects:function(a,
+b){var c=a.width,d=a.height,e=b.width,f=b.height;if(0>=e||0>=f||0>=c||0>=d)return!1;var g=a.x,k=a.y,l=b.x,m=b.y,e=e+l,f=f+m,c=c+g,d=d+k;return(e<l||e>g)&&(f<m||f>k)&&(c<g||c>l)&&(d<k||d>m)},intersectsHotspot:function(a,b,c,d,e,f){d=null!=d?d:1;e=null!=e?e:0;f=null!=f?f:0;if(0<d){var g=a.getCenterX(),k=a.getCenterY(),l=a.width,m=a.height,n=mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE)*a.view.scale;0<n&&(mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,!0)?(k=a.y+n/2,m=n):(g=a.x+n/2,l=
+n));l=Math.max(e,l*d);m=Math.max(e,m*d);0<f&&(l=Math.min(l,f),m=Math.min(m,f));d=new mxRectangle(g-l/2,k-m/2,l,m);g=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);0!=g&&(e=Math.cos(-g),f=Math.sin(-g),g=new mxPoint(a.getCenterX(),a.getCenterY()),a=mxUtils.getRotatedPoint(new mxPoint(b,c),e,f,g),b=a.x,c=a.y);return mxUtils.contains(d,b,c)}return!0},getOffset:function(a,b){for(var c=0,d=0,e=!1,f=a,g=document.body,k=document.documentElement;null!=f&&f!=g&&f!=k&&!e;){var l=
+mxUtils.getCurrentStyle(f);null!=l&&(e=e||"fixed"==l.position);f=f.parentNode}b||e||(e=mxUtils.getDocumentScrollOrigin(a.ownerDocument),c+=e.x,d+=e.y);e=a.getBoundingClientRect();null!=e&&(c+=e.left,d+=e.top);return new mxPoint(c,d)},getDocumentScrollOrigin:function(a){a=a.defaultView||a.parentWindow;return new mxPoint(null!=a&&void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,null!=a&&void 0!==window.pageYOffset?window.pageYOffset:
+(document.documentElement||document.body.parentNode||document.body).scrollTop)},getScrollOrigin:function(a,b,c){b=null!=b?b:!1;c=null!=c?c:!0;for(var d=null!=a?a.ownerDocument:document,e=d.body,f=d.documentElement,g=new mxPoint,k=!1;null!=a&&a!=e&&a!=f;){isNaN(a.scrollLeft)||isNaN(a.scrollTop)||(g.x+=a.scrollLeft,g.y+=a.scrollTop);var l=mxUtils.getCurrentStyle(a);null!=l&&(k=k||"fixed"==l.position);a=b?a.parentNode:null}!k&&c&&(a=mxUtils.getDocumentScrollOrigin(d),g.x+=a.x,g.y+=a.y);return g},convertPoint:function(a,
+b,c){var d=mxUtils.getScrollOrigin(a,!1);a=mxUtils.getOffset(a);a.x-=d.x;a.y-=d.y;return new mxPoint(b-a.x,c-a.y)},ltrim:function(a,b){return null!=a?a.replace(new RegExp("^["+(b||"\\s")+"]+","g"),""):null},rtrim:function(a,b){return null!=a?a.replace(new RegExp("["+(b||"\\s")+"]+$","g"),""):null},trim:function(a,b){return mxUtils.ltrim(mxUtils.rtrim(a,b),b)},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)&&("string"!=typeof a||0>a.toLowerCase().indexOf("0x"))},isInteger:function(a){return String(parseInt(a))===
+String(a)},mod:function(a,b){return(a%b+b)%b},intersection:function(a,b,c,d,e,f,g,k){var l=(k-f)*(c-a)-(g-e)*(d-b);g=((g-e)*(b-f)-(k-f)*(a-e))/l;e=((c-a)*(b-f)-(d-b)*(a-e))/l;return 0<=g&&1>=g&&0<=e&&1>=e?new mxPoint(a+g*(c-a),b+g*(d-b)):null},ptSegDistSq:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;0>=e*c+f*d?c=0:(e=c-e,f=d-f,a=e*c+f*d,c=0>=a?0:a*a/(c*c+d*d));e=e*e+f*f-c;0>e&&(e=0);return e},ptLineDist:function(a,b,c,d,e,f){return Math.abs((d-b)*e-(c-a)*f+c*b-d*a)/Math.sqrt((d-b)*(d-b)+(c-a)*(c-a))},
+relativeCcw:function(a,b,c,d,e,f){c-=a;d-=b;e-=a;f-=b;a=e*d-f*c;0==a&&(a=e*c+f*d,0<a&&(a=(e-c)*c+(f-d)*d,0>a&&(a=0)));return 0>a?-1:0<a?1:0},animateChanges:function(a,b){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(a,b,c){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(a,b,c,d,e,f){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(a,b){mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?a.style.filter=100<=b?
+"":"alpha(opacity="+b+")":a.style.opacity=b/100},createImage:function(a){var b;b=document.createElement("img");b.setAttribute("src",a);b.setAttribute("border","0");return b},sortCells:function(a,b){b=null!=b?b:!0;var c=new mxDictionary;a.sort(function(a,e){var d=c.get(a);null==d&&(d=mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR),c.put(a,d));var g=c.get(e);null==g&&(g=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),c.put(e,g));d=mxCellPath.compare(d,g);return 0==d?0:0<d==b?1:-1});return a},
+getStylename:function(a){return null!=a&&(a=a.split(";")[0],0>a.indexOf("="))?a:""},getStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0>a[c].indexOf("=")&&b.push(a[c])}return b},indexOfStylename:function(a,b){if(null!=a&&null!=b)for(var c=a.split(";"),d=0,e=0;e<c.length;e++){if(c[e]==b)return d;d+=c[e].length+1}return-1},addStylename:function(a,b){0>mxUtils.indexOfStylename(a,b)&&(null==a?a="":0<a.length&&";"!=a.charAt(a.length-1)&&(a+=";"),a+=b);return a},removeStylename:function(a,
+b){var c=[];if(null!=a)for(var d=a.split(";"),e=0;e<d.length;e++)d[e]!=b&&c.push(d[e]);return c.join(";")},removeAllStylenames:function(a){var b=[];if(null!=a){a=a.split(";");for(var c=0;c<a.length;c++)0<=a[c].indexOf("=")&&b.push(a[c])}return b.join(";")},setCellStyles:function(a,b,c,d){if(null!=b&&0<b.length){a.beginUpdate();try{for(var e=0;e<b.length;e++)if(null!=b[e]){var f=mxUtils.setStyle(a.getStyle(b[e]),c,d);a.setStyle(b[e],f)}}finally{a.endUpdate()}}},hex2rgb:function(a){if(null!=a&&7==a.length&&
+"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16);a=parseInt(a.substring(5,7),16);a="rgb("+b+", "+c+", "+a+")"}return a},hex2rgba:function(a){if(null!=a&&7<=a.length&&"#"==a.charAt(0)){var b=parseInt(a.substring(1,3),16),c=parseInt(a.substring(3,5),16),d=parseInt(a.substring(5,7),16),e=1;7<a.length&&(e=parseInt(a.substring(7,9),16)/255);a="rgba("+b+", "+c+", "+d+", "+e+")"}return a},rgba2hex:function(a){return(rgb=a&&a.match?a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i):
+a)&&4===rgb.length?"#"+("0"+parseInt(rgb[1],10).toString(16)).slice(-2)+("0"+parseInt(rgb[2],10).toString(16)).slice(-2)+("0"+parseInt(rgb[3],10).toString(16)).slice(-2):a},setCssText:function(a,b){if(null!=a&&null!=b)for(var c=b.split(";"),d=0;d<c.length;d++){var e=c[d].split(":");1<e.length&&(e[0]=mxUtils.trim(e[0].replace(/-([a-z])/gi,function(a,b){return b.toUpperCase()})),a[e[0]]=mxUtils.trim(e[1]))}},setStyle:function(a,b,c){var d=null!=c&&("undefined"==typeof c.length||0<c.length);if(null==
+a||0==a.length)d&&(a=b+"="+c+";");else if(a.substring(0,b.length+1)==b+"="){var e=a.indexOf(";");a=d?b+"="+c+(0>e?";":a.substring(e)):0>e||e==a.length-1?"":a.substring(e+1)}else{var f=a.indexOf(";"+b+"=");0>f?d&&(d=";"==a.charAt(a.length-1)?"":";",a=a+d+b+"="+c+";"):(e=a.indexOf(";",f+1),a=d?a.substring(0,f+1)+b+"="+c+(0>e?";":a.substring(e)):a.substring(0,f)+(0>e?";":a.substring(e)))}return a},setCellStyleFlags:function(a,b,c,d,e){if(null!=b&&0<b.length){a.beginUpdate();try{for(var f=0;f<b.length;f++)if(null!=
+b[f]){var g=mxUtils.setStyleFlag(a.getStyle(b[f]),c,d,e);a.setStyle(b[f],g)}}finally{a.endUpdate()}}},setStyleFlag:function(a,b,c,d){if(null==a||0==a.length)a=d||null==d?b+"="+c:b+"=0";else{var e=a.indexOf(b+"=");if(0>e)e=";"==a.charAt(a.length-1)?"":";",a=d||null==d?a+e+b+"="+c:a+e+b+"=0";else{var f=a.indexOf(";",e),g;g=0>f?a.substring(e+b.length+1):a.substring(e+b.length+1,f);g=null==d?parseInt(g)^c:d?parseInt(g)|c:parseInt(g)&~c;a=a.substring(0,e)+b+"="+g+(0<=f?a.substring(f):"")}}return a},getAlignmentAsPoint:function(a,
+b){var c=-.5,d=-.5;a==mxConstants.ALIGN_LEFT?c=0:a==mxConstants.ALIGN_RIGHT&&(c=-1);b==mxConstants.ALIGN_TOP?d=0:b==mxConstants.ALIGN_BOTTOM&&(d=-1);return new mxPoint(c,d)},getSizeForString:function(a,b,c,d,e){b=null!=b?b:mxConstants.DEFAULT_FONTSIZE;c=null!=c?c:mxConstants.DEFAULT_FONTFAMILY;var f=document.createElement("div");f.style.fontFamily=c;f.style.fontSize=Math.round(b)+"px";f.style.lineHeight=Math.round(b*mxConstants.LINE_HEIGHT)+"px";null!=e&&((e&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&
+(f.style.fontWeight="bold"),(e&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(f.style.fontStyle="italic"),b=[],(e&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&b.push("underline"),(e&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&b.push("line-through"),0<b.length&&(f.style.textDecoration=b.join(" ")));f.style.position="absolute";f.style.visibility="hidden";f.style.display="inline-block";f.style.zoom="1";null!=d?(f.style.width=d+"px",f.style.whiteSpace="normal"):f.style.whiteSpace=
+"nowrap";f.innerHTML=a;document.body.appendChild(f);a=new mxRectangle(0,0,f.offsetWidth,f.offsetHeight);document.body.removeChild(f);return a},getViewXml:function(a,b,c,d,e){d=null!=d?d:0;e=null!=e?e:0;b=null!=b?b:1;null==c&&(c=[a.getModel().getRoot()]);var f=a.getView(),g=null,k=f.isEventsEnabled();f.setEventsEnabled(!1);var l=f.drawPane,m=f.overlayPane;a.dialect==mxConstants.DIALECT_SVG?(f.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),f.canvas.appendChild(f.drawPane),f.overlayPane=document.createElementNS(mxConstants.NS_SVG,
+"g")):(f.drawPane=f.drawPane.cloneNode(!1),f.canvas.appendChild(f.drawPane),f.overlayPane=f.overlayPane.cloneNode(!1));f.canvas.appendChild(f.overlayPane);var n=f.getTranslate();f.translate=new mxPoint(d,e);b=new mxTemporaryCellStates(a.getView(),b,c);try{g=(new mxCodec).encode(a.getView())}finally{b.destroy(),f.translate=n,f.canvas.removeChild(f.drawPane),f.canvas.removeChild(f.overlayPane),f.drawPane=l,f.overlayPane=m,f.setEventsEnabled(k)}return g},getScaleForPageCount:function(a,b,c,d){if(1>a)return 1;
+c=null!=c?c:mxConstants.PAGE_FORMAT_A4_PORTRAIT;d=null!=d?d:0;var e=c.width-2*d;c=c.height-2*d;d=b.getGraphBounds().clone();b=b.getView().getScale();d.width/=b;d.height/=b;b=d.width;var f=Math.sqrt(a);d=Math.sqrt(b/d.height/(e/c));c=f*d;d=f/d;if(1>c&&d>a){var g=d/a;d=a;c/=g}1>d&&c>a&&(g=c/a,c=a,d/=g);g=Math.ceil(c)*Math.ceil(d);for(f=0;g>a;){var g=Math.floor(c)/c,k=Math.floor(d)/d;1==g&&(g=Math.floor(c-1)/c);1==k&&(k=Math.floor(d-1)/d);g=g>k?g:k;c*=g;d*=g;g=Math.ceil(c)*Math.ceil(d);f++;if(10<f)break}return e*
+c/b*.99999},show:function(a,b,c,d,e,f){c=null!=c?c:0;d=null!=d?d:0;null==b?b=window.open().document:b.open();9==document.documentMode&&b.writeln('\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9"><![endif]--\x3e');var g=a.getGraphBounds(),k=Math.ceil(c-g.x),l=Math.ceil(d-g.y);null==e&&(e=Math.ceil(g.width+c)+Math.ceil(Math.ceil(g.x)-g.x));null==f&&(f=Math.ceil(g.height+d)+Math.ceil(Math.ceil(g.y)-g.y));if(mxClient.IS_IE||11==document.documentMode){d="<html><head>";g=document.getElementsByTagName("base");
+for(c=0;c<g.length;c++)d+=g[c].outerHTML;d+="<style>";for(c=0;c<document.styleSheets.length;c++)try{d+=document.styleSheets[c].cssText}catch(m){}d=d+'</style></head><body style="margin:0px;">'+('<div style="position:absolute;overflow:hidden;width:'+e+"px;height:"+f+'px;"><div style="position:relative;left:'+k+"px;top:"+l+'px;">')+a.container.innerHTML;b.writeln(d+"</div></div></body><html>");b.close()}else{b.writeln("<html><head>");g=document.getElementsByTagName("base");for(c=0;c<g.length;c++)b.writeln(mxUtils.getOuterHtml(g[c]));
+d=document.getElementsByTagName("link");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));d=document.getElementsByTagName("style");for(c=0;c<d.length;c++)b.writeln(mxUtils.getOuterHtml(d[c]));b.writeln('</head><body style="margin:0px;"></body></html>');b.close();c=b.createElement("div");c.position="absolute";c.overflow="hidden";c.style.width=e+"px";c.style.height=f+"px";e=b.createElement("div");e.style.position="absolute";e.style.left=k+"px";e.style.top=l+"px";f=a.container.firstChild;
+for(d=null;null!=f;)g=f.cloneNode(!0),f==a.view.drawPane.ownerSVGElement?(c.appendChild(g),d=g):e.appendChild(g),f=f.nextSibling;b.body.appendChild(c);null!=e.firstChild&&b.body.appendChild(e);null!=d&&(d.style.minWidth="",d.style.minHeight="",d.firstChild.setAttribute("transform","translate("+k+","+l+")"))}mxUtils.removeCursors(b.body);return b},printScreen:function(a){var b=window.open();a.getGraphBounds();mxUtils.show(a,b.document);a=function(){b.focus();b.print();b.close()};mxClient.IS_GC?b.setTimeout(a,
+500):a()},popup:function(a,b){if(b){var c=document.createElement("div");c.style.overflow="scroll";c.style.width="636px";c.style.height="460px";var d=document.createElement("pre");d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;");c.appendChild(d);c=new mxWindow("Popup Window",c,document.body.clientWidth/2-320,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)/2-240,640,480,!1,!0);c.setClosable(!0);c.setVisible(!0)}else mxClient.IS_NS?(c=
+window.open(),c.document.writeln("<pre>"+mxUtils.htmlEntities(a)+"</pre"),c.document.close()):(c=window.open(),d=c.document.createElement("pre"),d.innerHTML=mxUtils.htmlEntities(a,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),c.document.body.appendChild(d))},alert:function(a){alert(a)},prompt:function(a,b){return prompt(a,null!=b?b:"")},confirm:function(a){return confirm(a)},error:function(a,b,c,d){var e=document.createElement("div");e.style.padding="20px";var f=document.createElement("img");f.setAttribute("src",
+d||mxUtils.errorImage);f.setAttribute("valign","bottom");f.style.verticalAlign="middle";e.appendChild(f);e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));e.appendChild(document.createTextNode(" "));mxUtils.write(e,a);a=document.body.clientWidth;d=document.body.clientHeight||document.documentElement.clientHeight;var g=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,e,(a-b)/2,d/4,b,null,!1,!0);c&&(mxUtils.br(e),b=document.createElement("p"),
+c=document.createElement("button"),mxClient.IS_IE?c.style.cssText="float:right":c.setAttribute("style","float:right"),mxEvent.addListener(c,"click",function(a){g.destroy()}),mxUtils.write(c,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),b.appendChild(c),e.appendChild(b),mxUtils.br(e),g.setClosable(!0));g.setVisible(!0);return g},makeDraggable:function(a,b,c,d,e,f,g,k,l,m){a=new mxDragSource(a,c);a.dragOffset=new mxPoint(null!=e?e:0,null!=f?f:mxConstants.TOOLTIP_VERTICAL_OFFSET);a.autoscroll=
+g;a.setGuidesEnabled(!1);null!=l&&(a.highlightDropTargets=l);null!=m&&(a.getDropTarget=m);a.getGraphForEvent=function(a){return"function"==typeof b?b(a):b};null!=d&&(a.createDragElement=function(){return d.cloneNode(!0)},k&&(a.createPreviewElement=function(a){var b=d.cloneNode(!0),c=parseInt(b.style.width),e=parseInt(b.style.height);b.style.width=Math.round(c*a.view.scale)+"px";b.style.height=Math.round(e*a.view.scale)+"px";return b}));return a}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,
+MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",VML_SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,
+NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",OUTLINE_HIGHLIGHT_COLOR:"#00FF00",OUTLINE_HIGHLIGHT_STROKEWIDTH:5,HIGHLIGHT_STROKEWIDTH:3,HIGHLIGHT_SIZE:2,HIGHLIGHT_OPACITY:100,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_TERMINAL_HANDLE:"pointer",
+CURSOR_BEND_HANDLE:"crosshair",CURSOR_VIRTUAL_BEND_HANDLE:"crosshair",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",
+OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:6,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,DEFAULT_TEXT_DIRECTION:"",LINE_HEIGHT:1.2,WORD_WRAP:"normal",ABSOLUTE_LINE_HEIGHT:!1,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,
+DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:0,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,827,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,827),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_PORT_CONSTRAINT_ROTATION:"portConstraintRotation",
+STYLE_SOURCE_PORT_CONSTRAINT:"sourcePortConstraint",STYLE_TARGET_PORT_CONSTRAINT:"targetPortConstraint",STYLE_OPACITY:"opacity",STYLE_FILL_OPACITY:"fillOpacity",STYLE_STROKE_OPACITY:"strokeOpacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_TEXT_DIRECTION:"textDirection",STYLE_OVERFLOW:"overflow",STYLE_BLOCK_SPACING:"blockSpacing",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_DX:"exitDx",STYLE_EXIT_DY:"exitDy",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",
+STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_DX:"entryDx",STYLE_ENTRY_DY:"entryDy",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_POINTER_EVENTS:"pointerEvents",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_MARGIN:"margin",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",
+STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_WIDTH:"labelWidth",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",
+STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",
+STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_FIX_DASH:"fixDash",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_ABSOLUTE_ARCSIZE:"absoluteArcSize",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",
+STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ANCHOR_POINT_DIRECTION:"anchorPointDirection",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",
+STYLE_ASPECT:"aspect",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BACKGROUND_OUTLINE:"backgroundOutline",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_RESIZE_WIDTH:"resizeWidth",STYLE_RESIZE_HEIGHT:"resizeHeight",STYLE_ROTATABLE:"rotatable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_JETTY_SIZE:"jettySize",STYLE_SOURCE_JETTY_SIZE:"sourceJettySize",STYLE_TARGET_JETTY_SIZE:"targetJettySize",
+STYLE_LOOP:"loopStyle",STYLE_ORTHOGONAL_LOOP:"orthogonalLoop",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_STRIKETHROUGH:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_ARROW_CONNECTOR:"arrowConnector",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",
+SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_CLASSIC_THIN:"classicThin",ARROW_BLOCK:"block",ARROW_BLOCK_THIN:"blockThin",ARROW_OPEN:"open",ARROW_OPEN_THIN:"openThin",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",
+DIRECTION_WEST:"west",DIRECTION_RADIAL:"radial",TEXT_DIRECTION_DEFAULT:"",TEXT_DIRECTION_AUTO:"auto",TEXT_DIRECTION_LTR:"ltr",TEXT_DIRECTION_RTL:"rtl",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",
+EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_HEXAGON:"hexagonPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments.length;b+=2)null!=arguments[b+1]&&(this.properties[arguments[b]]=arguments[b+1])}mxEventObject.prototype.name=null;
+mxEventObject.prototype.properties=null;mxEventObject.prototype.consumed=!1;mxEventObject.prototype.getName=function(){return this.name};mxEventObject.prototype.getProperties=function(){return this.properties};mxEventObject.prototype.getProperty=function(a){return this.properties[a]};mxEventObject.prototype.isConsumed=function(){return this.consumed};mxEventObject.prototype.consume=function(){this.consumed=!0};function mxMouseEvent(a,b){this.evt=a;this.sourceState=this.state=b}
+mxMouseEvent.prototype.consumed=!1;mxMouseEvent.prototype.evt=null;mxMouseEvent.prototype.graphX=null;mxMouseEvent.prototype.graphY=null;mxMouseEvent.prototype.state=null;mxMouseEvent.prototype.sourceState=null;mxMouseEvent.prototype.getEvent=function(){return this.evt};mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)};mxMouseEvent.prototype.isSource=function(a){return null!=a?mxUtils.isAncestorNode(a.node,this.getSource()):!1};mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())};
+mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())};mxMouseEvent.prototype.getGraphX=function(){return this.graphX};mxMouseEvent.prototype.getGraphY=function(){return this.graphY};mxMouseEvent.prototype.getState=function(){return this.state};mxMouseEvent.prototype.getCell=function(){var a=this.getState();return null!=a?a.cell:null};mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())};mxMouseEvent.prototype.isConsumed=function(){return this.consumed};
mxMouseEvent.prototype.consume=function(a){(a=null!=a?a:null!=this.evt.touches||mxEvent.isMouseEvent(this.evt))&&this.evt.preventDefault&&this.evt.preventDefault();mxClient.IS_IE&&(this.evt.returnValue=!0);this.consumed=!0};function mxEventSource(a){this.setEventSource(a)}mxEventSource.prototype.eventListeners=null;mxEventSource.prototype.eventsEnabled=!0;mxEventSource.prototype.eventSource=null;mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled};
mxEventSource.prototype.setEventsEnabled=function(a){this.eventsEnabled=a};mxEventSource.prototype.getEventSource=function(){return this.eventSource};mxEventSource.prototype.setEventSource=function(a){this.eventSource=a};mxEventSource.prototype.addListener=function(a,b){null==this.eventListeners&&(this.eventListeners=[]);this.eventListeners.push(a);this.eventListeners.push(b)};
mxEventSource.prototype.removeListener=function(a){if(null!=this.eventListeners)for(var b=0;b<this.eventListeners.length;)this.eventListeners[b+1]==a?this.eventListeners.splice(b,2):b+=2};
diff --git a/src/main/webapp/resources/dia_ar.txt b/src/main/webapp/resources/dia_ar.txt
index 27103385..f1d17eb5 100644
--- a/src/main/webapp/resources/dia_ar.txt
+++ b/src/main/webapp/resources/dia_ar.txt
@@ -97,7 +97,7 @@ chatWindowTitle=‫دردشة‬
chooseAnOption=‫اختر خيارا‬
chromeApp=‫تطبيق Chrome‬
collaborativeEditingNotice=‫ملاحظات مهمة عن مشاركة التعديل‬
-compare=‫يقارن‬
+compare=‫قارن‬
compressed=‫مضغوط‬
commitMessage=‫أكد علي تسجيل الرسالة‬
configLinkWarn=‫هذة الوصلة تقوم بتغيرات علي draw.io . اضغط علي موافق لو كنت تثق فيمن ارسله اليك‬
diff --git a/src/main/webapp/resources/dia_eu.txt b/src/main/webapp/resources/dia_eu.txt
index 8c19158f..827762b4 100644
--- a/src/main/webapp/resources/dia_eu.txt
+++ b/src/main/webapp/resources/dia_eu.txt
@@ -352,7 +352,7 @@ fullscreen=Pantaila osoa
gap=Tartea
gcp=GCP
general=Orokorra
-getNotionChromeExtension=Eskuratu Notion Chrome gehigarria
+getNotionChromeExtension=Get the Notion Chrome Extension
github=GitHub
gitlab=GitLab
gliffy=Gliffy
@@ -1168,5 +1168,5 @@ contactOwner=Contact Owner
viewerOnlyMsg=Ezin dituzu diagramak editatu plataforma mugikorrean, mesedez erabili mahaigaineko bezeroa edo web arakatzailea.
website=Webgunea
check4Updates=Bilat eguneraketak
-attWriteFailedRetry={1}: Eranskinaren idazketa huts egin du, berriro saiatuko da {2} segundo barru...
-confPartialPageList=Ezin izan ditugu orrialde guztiak eskuratu konfluentzia errore bat dela medio. {1} orrialde soilik erabiliko dira.
+attWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...
+confPartialPageList=We couldn't fetch all pages due to an error in Confluence. Continuing using {1} pages only.
diff --git a/src/main/webapp/service-worker.js b/src/main/webapp/service-worker.js
index aca74f01..fbd1e24b 100644
--- a/src/main/webapp/service-worker.js
+++ b/src/main/webapp/service-worker.js
@@ -1,2 +1,2 @@
-if(!self.define){const e=e=>{"require"!==e&&(e+=".js");let i=Promise.resolve();return r[e]||(i=new Promise((async i=>{if("document"in self){const r=document.createElement("script");r.src=e,document.head.appendChild(r),r.onload=i}else importScripts(e),i()}))),i.then((()=>{if(!r[e])throw new Error(`Module ${e} didn’t register its module`);return r[e]}))},i=(i,r)=>{Promise.all(i.map(e)).then((e=>r(1===e.length?e[0]:e)))},r={require:Promise.resolve(i)};self.define=(i,a,c)=>{r[i]||(r[i]=Promise.resolve().then((()=>{let r={};const s={uri:location.origin+i.slice(1)};return Promise.all(a.map((i=>{switch(i){case"exports":return r;case"module":return s;default:return e(i)}}))).then((e=>{const i=c(...e);return r.default||(r.default=i),r}))})))}}define("./service-worker.js",["./workbox-dfbb910f"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"js/app.min.js",revision:"a14d85ba5cf368b669fa0781a5faa567"},{url:"js/extensions.min.js",revision:"44f4bd1a585836eb684bc07c94238837"},{url:"js/stencils.min.js",revision:"a4363c11e41442d41b1e073606f5566d"},{url:"js/shapes-14-6-5.min.js",revision:"ebce9c260798e9465fa3c3e3c1607d43"},{url:"js/math-print.js",revision:"9d98c920695f6c3395da4b68f723e60a"},{url:"index.html",revision:"9200e0815b5a48cae7db8f54f9604990"},{url:"open.html",revision:"d71816b3b00e769fc6019fcdd6921662"},{url:"styles/grapheditor.css",revision:"748da0cd0a068a52eac70ee2b2c194fe"},{url:"styles/atlas.css",revision:"e8152cda9233d3a3af017422993abfce"},{url:"styles/dark.css",revision:"3179f617dd02efd2cefeb8c06f965880"},{url:"js/croppie/croppie.min.css",revision:"fc297c9002c79c15a132f13ee3ec427e"},{url:"js/dropbox/Dropbox-sdk.min.js",revision:"4b9842892aa37b156db0a8364b7a83b0"},{url:"js/onedrive/OneDrive.js",revision:"505e8280346666f7ee801bc59521fa67"},{url:"js/viewer-static.min.js",revision:"fd098b72535cd6b7c1a78249be35cfd4"},{url:"connect/jira/editor-1-3-3.html",revision:"a2b0e7267a08a838f3cc404eba831ec0"},{url:"connect/jira/viewerPanel-1-3-12.html",revision:"2ce6e99d95113e9ca6b24343cea202e0"},{url:"connect/jira/fullScreenViewer-1-3-3.html",revision:"ba7ece2dfb2833b72f97280d7092f25e"},{url:"connect/jira/viewerPanel.js",revision:"6e9412c359a21b86dc7c5128bf6208d4"},{url:"connect/jira/spinner.gif",revision:"7d857ab9d86123e93d74d48e958fe743"},{url:"connect/jira/editor.js",revision:"01caa325f3ad3f6565e0b4228907fb63"},{url:"connect/jira/fullscreen-viewer-init.js",revision:"197ed5837ed27992688fc424699a9a78"},{url:"connect/jira/fullscreen-viewer.js",revision:"4e0775a6c156a803e777870623ac7c3e"},{url:"plugins/connectJira.js",revision:"4cefa13414e0d406550f3c073923080c"},{url:"plugins/cConf-comments.js",revision:"c787357209cff2986dcca567b599e2ef"},{url:"plugins/cConf-1-4-8.js",revision:"d7577d8f21716423852c343f027c4c27"},{url:"connect/confluence/connectUtils-1-4-8.js",revision:"8f6c85460791915b01d83cd0a793effb"},{url:"connect/new_common/cac.js",revision:"3d8c436c566db645fb1e6e6ba9f69bbc"},{url:"connect/gdrive_common/gac.js",revision:"38f1df3ecc4d78290493f47e62202138"},{url:"connect/onedrive_common/ac.js",revision:"887d3ac605a7bb297067537e7c1f5686"},{url:"connect/confluence/viewer-init.js",revision:"4a60c6c805cab7bc782f1e52f7818d9f"},{url:"connect/confluence/viewer.js",revision:"d025b0929817299fa154f273525aa0ec"},{url:"connect/confluence/viewer-1-4-42.html",revision:"c7b38b3af4eb7a58ab6dc4791216530e"},{url:"connect/confluence/macroEditor-1-4-8.html",revision:"8cd74a2fb60bf2e3e86026d66107cf11"},{url:"connect/confluence/includeDiagram-1-4-8.js",revision:"8b670f4b6ccde55358851da705ae884f"},{url:"connect/confluence/includeDiagram.html",revision:"c03c89622d22227313645900af4e3c3d"},{url:"connect/confluence/macro-editor.js",revision:"e273a48b8e81faac4530bf1a68d75aa0"},{url:"math/MathJax.js",revision:"b2c103388b71bb3d11cbf9aa45fe9b68"},{url:"math/config/TeX-MML-AM_SVG-full.js",revision:"d5cb8ac04050983170ae4af145bc66ff"},{url:"math/jax/output/SVG/fonts/TeX/fontdata.js",revision:"495e5a410955d1b6178870e605890ede"},{url:"math/jax/element/mml/optable/BasicLatin.js",revision:"cac9b2e71382e62270baa55fab07cc13"},{url:"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js",revision:"e3e5e4d5924beed29f0844550b5c8f46"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js",revision:"0767cbad7275b53da128e7e5e1109f7c"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js",revision:"346302a5c5ee00e01c302148c56dbfe3"},{url:"resources/dia.txt",revision:"6ac22c2dd7bf24f2ce4db6ea5cd82470"},{url:"resources/dia_am.txt",revision:"7b87288182abf40af0364ee000959b7b"},{url:"resources/dia_ar.txt",revision:"0ab712083c7e9e5fe881c37250074d4c"},{url:"resources/dia_bg.txt",revision:"c3fe70b41c1c99a3817f45a533f0d3d1"},{url:"resources/dia_bn.txt",revision:"50da78b0b7f2f65bdf25eabae73b3228"},{url:"resources/dia_bs.txt",revision:"568b22ef20ebfe162fce127fa9bcc6b5"},{url:"resources/dia_ca.txt",revision:"a4f3c89b030191d40999805696e6859b"},{url:"resources/dia_cs.txt",revision:"feebdfef9385384c37fbadd1a1a1b6c2"},{url:"resources/dia_da.txt",revision:"163d26afd66826247cf1553314ec70f5"},{url:"resources/dia_de.txt",revision:"9aa8d6e1d10659624519c88a7ad3e042"},{url:"resources/dia_el.txt",revision:"5289ac0ed78737231ca568be2c777d1a"},{url:"resources/dia_eo.txt",revision:"98e0cca265917fe115de548ca2c6d7a4"},{url:"resources/dia_es.txt",revision:"1a590b0b38299487e1267d440ba04350"},{url:"resources/dia_et.txt",revision:"bed7cfc8f949531f762ad86a225c15a2"},{url:"resources/dia_eu.txt",revision:"1d65da41d45cf45dfb81d13f360d7193"},{url:"resources/dia_fa.txt",revision:"21e0279f46bcdd79063c06fcfc7b1120"},{url:"resources/dia_fi.txt",revision:"649cea556e9168919b0492f8565bac8b"},{url:"resources/dia_fil.txt",revision:"a717e0751e11dbb6502acfcc51c1a704"},{url:"resources/dia_fr.txt",revision:"4e6530553659158b0f55cc43ec46cc7e"},{url:"resources/dia_gl.txt",revision:"4fe5a563571d23001fb0dcd28dadcb32"},{url:"resources/dia_gu.txt",revision:"5eef301316f5945a700c13d1d96570ed"},{url:"resources/dia_he.txt",revision:"d13e2c3ec4f6f34948f874eda3d63a55"},{url:"resources/dia_hi.txt",revision:"65a2374e09cee44447e9462f3acb7f6a"},{url:"resources/dia_hr.txt",revision:"21626f14592c1b84ee28b058fcb74194"},{url:"resources/dia_hu.txt",revision:"1698e21cde2ed5f5b599429e5e68a8c4"},{url:"resources/dia_id.txt",revision:"a3af078b5bc5cd36df5368fb2604ed02"},{url:"resources/dia_it.txt",revision:"f3b29c577b79c37687f37c1b0748b9d1"},{url:"resources/dia_ja.txt",revision:"990f1ad82383245f1f9e37678a1c9bab"},{url:"resources/dia_kn.txt",revision:"836030c27dc0bb91a25ebcc722f2df41"},{url:"resources/dia_ko.txt",revision:"4a5032d2cad4be2a1815f7e29238664a"},{url:"resources/dia_lt.txt",revision:"d0a2bbb32c3d7d860c8c0385075407ee"},{url:"resources/dia_lv.txt",revision:"8cdfac8996f69486b99302eb0c01757a"},{url:"resources/dia_ml.txt",revision:"53f0f853779db48abc46023e507cb698"},{url:"resources/dia_mr.txt",revision:"4f3bffbf25b0d07a0946e77a288f40b9"},{url:"resources/dia_ms.txt",revision:"55d9c222689543ab6a091636d12dc92f"},{url:"resources/dia_my.txt",revision:"6ac22c2dd7bf24f2ce4db6ea5cd82470"},{url:"resources/dia_nl.txt",revision:"da45f841b898121c268b02e5cf0c0f5e"},{url:"resources/dia_no.txt",revision:"afa660c88bef1253c9827f857e3c2a99"},{url:"resources/dia_pl.txt",revision:"934cb78df740c1377b724cc68b28b436"},{url:"resources/dia_pt-br.txt",revision:"128c5640c8ea34d4e5296bbb2ef35db3"},{url:"resources/dia_pt.txt",revision:"1d30c678b01d010a0c8a5cf415fa68a0"},{url:"resources/dia_ro.txt",revision:"a90bf597059e90eff0d955d12058df23"},{url:"resources/dia_ru.txt",revision:"b225c1bd151294617e8d600181d9e44e"},{url:"resources/dia_si.txt",revision:"6ac22c2dd7bf24f2ce4db6ea5cd82470"},{url:"resources/dia_sk.txt",revision:"be785304786ae06fe6cdae4c029e5f28"},{url:"resources/dia_sl.txt",revision:"c3748f17f0775bdd539ed69a49acd1e1"},{url:"resources/dia_sr.txt",revision:"611506593ed67893a50c3a9000a12c79"},{url:"resources/dia_sv.txt",revision:"54157da886c9c17d4eb1fe9e3d195368"},{url:"resources/dia_sw.txt",revision:"0cd0148f07578cbac9dc4e2222277266"},{url:"resources/dia_ta.txt",revision:"79cb0ed533e753ae646f055fb75d25fc"},{url:"resources/dia_te.txt",revision:"305740ddcfe539071f9f65d844c13068"},{url:"resources/dia_th.txt",revision:"ffc4698dc2f34eb02bf02f3ac26c5c7e"},{url:"resources/dia_tr.txt",revision:"1092cea9e131780ae817c5c5915be3b6"},{url:"resources/dia_uk.txt",revision:"e1ab64d71b13935ef5ef05c09a8f95d9"},{url:"resources/dia_vi.txt",revision:"a9ead4c2e8460af1b127b7405dba35a3"},{url:"resources/dia_zh-tw.txt",revision:"28d610fd1f35a68bcc8a555fea09dc12"},{url:"resources/dia_zh.txt",revision:"f49748b5eb13dee86003c5f57aa628ff"},{url:"favicon.ico",revision:"fab2d88b37c72d83607527573de45281"},{url:"images/manifest.json",revision:"c6236bde53ed79aaaec60a1aca8ee2ef"},{url:"images/logo.png",revision:"89630b64b911ebe0daa3dfe442087cfa"},{url:"images/drawlogo.svg",revision:"4bf4d14ebcf072d8bd4c5a1c89e88fc6"},{url:"images/drawlogo48.png",revision:"8b13428373aca67b895364d025f42417"},{url:"images/drawlogo-gray.svg",revision:"0aabacbc0873816e1e09e4736ae44c7d"},{url:"images/drawlogo-text-bottom.svg",revision:"f6c438823ab31f290940bd4feb8dd9c2"},{url:"images/default-user.jpg",revision:"2c399696a87c8921f12d2f9e1990cc6e"},{url:"images/logo-flat-small.png",revision:"4b178e59ff499d6dd1894fc498b59877"},{url:"images/apple-touch-icon.png",revision:"73da7989a23ce9a4be565ec65658a239"},{url:"images/favicon-16x16.png",revision:"1a79d5461a5d2bf21f6652e0ac20d6e5"},{url:"images/favicon-32x32.png",revision:"e3b92da2febe70bad5372f6f3474b034"},{url:"images/android-chrome-196x196.png",revision:"f8c045b2d7b1c719fda64edab04c415c"},{url:"images/android-chrome-512x512.png",revision:"959b5fac2453963ff6d60fb85e4b73fd"},{url:"images/delete.png",revision:"5f2350f2fd20f1a229637aed32ed8f29"},{url:"images/droptarget.png",revision:"bbf7f563fb6784de1ce96f329519b043"},{url:"images/help.png",revision:"9266c6c3915bd33c243d80037d37bf61"},{url:"images/download.png",revision:"35418dd7bd48d87502c71b578cc6c37f"},{url:"images/logo-flat.png",revision:"038070ab43aee6e54a791211859fc67b"},{url:"images/google-drive-logo.svg",revision:"5d9f2f5bbc7dcc252730a0072bb23059"},{url:"images/onedrive-logo.svg",revision:"3645b344ec0634c1290dd58d7dc87b97"},{url:"images/dropbox-logo.svg",revision:"e6be408c77cf9c82d41ac64fa854280a"},{url:"images/github-logo.svg",revision:"a1a999b69a275eac0cb918360ac05ae1"},{url:"images/gitlab-logo.svg",revision:"0faea8c818899e58533e153c44b10517"},{url:"images/trello-logo.svg",revision:"006fd0d7d70d7e95dc691674cb12e044"},{url:"images/osa_drive-harddisk.png",revision:"b954e1ae772087c5b4c6ae797e1f9649"},{url:"images/osa_database.png",revision:"c350d9d9b95f37b6cfe798b40ede5fb0"},{url:"images/google-drive-logo-white.svg",revision:"f329d8b1be7778515a85b93fc35d9f26"},{url:"images/dropbox-logo-white.svg",revision:"4ea8299ac3bc31a16f199ee3aec223bf"},{url:"images/onedrive-logo-white.svg",revision:"b3602fa0fc947009cff3f33a581cff4d"},{url:"images/github-logo-white.svg",revision:"537b1127b3ca0f95b45782d1304fb77a"},{url:"images/gitlab-logo-white.svg",revision:"5fede9ac2f394c716b8c23e3fddc3910"},{url:"images/trello-logo-white-orange.svg",revision:"e2a0a52ba3766682f138138d10a75eb5"},{url:"images/logo-confluence.png",revision:"ed1e55d44ae5eba8f999aba2c93e8331"},{url:"images/logo-jira.png",revision:"f8d460555a0d1f87cfd901e940666629"},{url:"images/clear.gif",revision:"db13c778e4382e0b55258d0f811d5d70"},{url:"images/spin.gif",revision:"487cbb40b9ced439aa1ad914e816d773"},{url:"images/checkmark.gif",revision:"ba764ce62f2bf952df5bbc2bb4d381c5"},{url:"images/hs.png",revision:"fefa1a03d92ebad25c88dca94a0b63db"},{url:"images/aui-wait.gif",revision:"5a474bcbd8d2f2826f03d10ea44bf60e"},{url:"mxgraph/css/common.css",revision:"b5b7280ec98671bb6c3847a36bc7ea12"},{url:"mxgraph/images/expanded.gif",revision:"2b67c2c035af1e9a5cc814f0d22074cf"},{url:"mxgraph/images/collapsed.gif",revision:"73cc826da002a3d740ca4ce6ec5c1f4a"},{url:"mxgraph/images/maximize.gif",revision:"5cd13d6925493ab51e876694cc1c2ec2"},{url:"mxgraph/images/minimize.gif",revision:"8957741b9b0f86af9438775f2aadbb54"},{url:"mxgraph/images/close.gif",revision:"8b84669812ac7382984fca35de8da48b"},{url:"mxgraph/images/resize.gif",revision:"a6477612b3567a34033f9cac6184eed3"},{url:"mxgraph/images/separator.gif",revision:"7819742ff106c97da7a801c2372bbbe5"},{url:"mxgraph/images/window.gif",revision:"fd9a21dd4181f98052a202a0a01f18ab"},{url:"mxgraph/images/window-title.gif",revision:"3fb1d6c43246cdf991a11dfe826dfe99"},{url:"mxgraph/images/button.gif",revision:"00759bdc3ad218fa739f584369541809"},{url:"mxgraph/images/point.gif",revision:"83a43717b284902442620f61bc4e9fa6"}],{ignoreURLParametersMatching:[/.*/]})}));
+if(!self.define){const e=e=>{"require"!==e&&(e+=".js");let i=Promise.resolve();return r[e]||(i=new Promise((async i=>{if("document"in self){const r=document.createElement("script");r.src=e,document.head.appendChild(r),r.onload=i}else importScripts(e),i()}))),i.then((()=>{if(!r[e])throw new Error(`Module ${e} didn’t register its module`);return r[e]}))},i=(i,r)=>{Promise.all(i.map(e)).then((e=>r(1===e.length?e[0]:e)))},r={require:Promise.resolve(i)};self.define=(i,a,c)=>{r[i]||(r[i]=Promise.resolve().then((()=>{let r={};const s={uri:location.origin+i.slice(1)};return Promise.all(a.map((i=>{switch(i){case"exports":return r;case"module":return s;default:return e(i)}}))).then((e=>{const i=c(...e);return r.default||(r.default=i),r}))})))}}define("./service-worker.js",["./workbox-dfbb910f"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"js/app.min.js",revision:"953b6bc9958b5f3822bd4274508d8437"},{url:"js/extensions.min.js",revision:"44f4bd1a585836eb684bc07c94238837"},{url:"js/stencils.min.js",revision:"a4363c11e41442d41b1e073606f5566d"},{url:"js/shapes-14-6-5.min.js",revision:"ebce9c260798e9465fa3c3e3c1607d43"},{url:"js/math-print.js",revision:"9d98c920695f6c3395da4b68f723e60a"},{url:"index.html",revision:"9200e0815b5a48cae7db8f54f9604990"},{url:"open.html",revision:"d71816b3b00e769fc6019fcdd6921662"},{url:"styles/grapheditor.css",revision:"748da0cd0a068a52eac70ee2b2c194fe"},{url:"styles/atlas.css",revision:"e8152cda9233d3a3af017422993abfce"},{url:"styles/dark.css",revision:"3179f617dd02efd2cefeb8c06f965880"},{url:"js/croppie/croppie.min.css",revision:"fc297c9002c79c15a132f13ee3ec427e"},{url:"js/dropbox/Dropbox-sdk.min.js",revision:"4b9842892aa37b156db0a8364b7a83b0"},{url:"js/onedrive/OneDrive.js",revision:"505e8280346666f7ee801bc59521fa67"},{url:"js/viewer-static.min.js",revision:"c9678257a127910f35e8bb84e7145019"},{url:"connect/jira/editor-1-3-3.html",revision:"a2b0e7267a08a838f3cc404eba831ec0"},{url:"connect/jira/viewerPanel-1-3-12.html",revision:"2ce6e99d95113e9ca6b24343cea202e0"},{url:"connect/jira/fullScreenViewer-1-3-3.html",revision:"ba7ece2dfb2833b72f97280d7092f25e"},{url:"connect/jira/viewerPanel.js",revision:"6e9412c359a21b86dc7c5128bf6208d4"},{url:"connect/jira/spinner.gif",revision:"7d857ab9d86123e93d74d48e958fe743"},{url:"connect/jira/editor.js",revision:"01caa325f3ad3f6565e0b4228907fb63"},{url:"connect/jira/fullscreen-viewer-init.js",revision:"197ed5837ed27992688fc424699a9a78"},{url:"connect/jira/fullscreen-viewer.js",revision:"4e0775a6c156a803e777870623ac7c3e"},{url:"plugins/connectJira.js",revision:"4cefa13414e0d406550f3c073923080c"},{url:"plugins/cConf-comments.js",revision:"c787357209cff2986dcca567b599e2ef"},{url:"plugins/cConf-1-4-8.js",revision:"d7577d8f21716423852c343f027c4c27"},{url:"connect/confluence/connectUtils-1-4-8.js",revision:"8f6c85460791915b01d83cd0a793effb"},{url:"connect/new_common/cac.js",revision:"3d8c436c566db645fb1e6e6ba9f69bbc"},{url:"connect/gdrive_common/gac.js",revision:"38f1df3ecc4d78290493f47e62202138"},{url:"connect/onedrive_common/ac.js",revision:"887d3ac605a7bb297067537e7c1f5686"},{url:"connect/confluence/viewer-init.js",revision:"4a60c6c805cab7bc782f1e52f7818d9f"},{url:"connect/confluence/viewer.js",revision:"d025b0929817299fa154f273525aa0ec"},{url:"connect/confluence/viewer-1-4-42.html",revision:"c7b38b3af4eb7a58ab6dc4791216530e"},{url:"connect/confluence/macroEditor-1-4-8.html",revision:"8cd74a2fb60bf2e3e86026d66107cf11"},{url:"connect/confluence/includeDiagram-1-4-8.js",revision:"8b670f4b6ccde55358851da705ae884f"},{url:"connect/confluence/includeDiagram.html",revision:"c03c89622d22227313645900af4e3c3d"},{url:"connect/confluence/macro-editor.js",revision:"e273a48b8e81faac4530bf1a68d75aa0"},{url:"math/MathJax.js",revision:"b2c103388b71bb3d11cbf9aa45fe9b68"},{url:"math/config/TeX-MML-AM_SVG-full.js",revision:"d5cb8ac04050983170ae4af145bc66ff"},{url:"math/jax/output/SVG/fonts/TeX/fontdata.js",revision:"495e5a410955d1b6178870e605890ede"},{url:"math/jax/element/mml/optable/BasicLatin.js",revision:"cac9b2e71382e62270baa55fab07cc13"},{url:"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js",revision:"e3e5e4d5924beed29f0844550b5c8f46"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js",revision:"0767cbad7275b53da128e7e5e1109f7c"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js",revision:"346302a5c5ee00e01c302148c56dbfe3"},{url:"resources/dia.txt",revision:"6ac22c2dd7bf24f2ce4db6ea5cd82470"},{url:"resources/dia_am.txt",revision:"7b87288182abf40af0364ee000959b7b"},{url:"resources/dia_ar.txt",revision:"8cb02cb9d3740ac3306b963f060db29f"},{url:"resources/dia_bg.txt",revision:"c3fe70b41c1c99a3817f45a533f0d3d1"},{url:"resources/dia_bn.txt",revision:"50da78b0b7f2f65bdf25eabae73b3228"},{url:"resources/dia_bs.txt",revision:"568b22ef20ebfe162fce127fa9bcc6b5"},{url:"resources/dia_ca.txt",revision:"a4f3c89b030191d40999805696e6859b"},{url:"resources/dia_cs.txt",revision:"feebdfef9385384c37fbadd1a1a1b6c2"},{url:"resources/dia_da.txt",revision:"163d26afd66826247cf1553314ec70f5"},{url:"resources/dia_de.txt",revision:"9aa8d6e1d10659624519c88a7ad3e042"},{url:"resources/dia_el.txt",revision:"5289ac0ed78737231ca568be2c777d1a"},{url:"resources/dia_eo.txt",revision:"98e0cca265917fe115de548ca2c6d7a4"},{url:"resources/dia_es.txt",revision:"1a590b0b38299487e1267d440ba04350"},{url:"resources/dia_et.txt",revision:"bed7cfc8f949531f762ad86a225c15a2"},{url:"resources/dia_eu.txt",revision:"5186a4cce8e53bb454e4d539d1792b4d"},{url:"resources/dia_fa.txt",revision:"21e0279f46bcdd79063c06fcfc7b1120"},{url:"resources/dia_fi.txt",revision:"649cea556e9168919b0492f8565bac8b"},{url:"resources/dia_fil.txt",revision:"a717e0751e11dbb6502acfcc51c1a704"},{url:"resources/dia_fr.txt",revision:"4e6530553659158b0f55cc43ec46cc7e"},{url:"resources/dia_gl.txt",revision:"4fe5a563571d23001fb0dcd28dadcb32"},{url:"resources/dia_gu.txt",revision:"5eef301316f5945a700c13d1d96570ed"},{url:"resources/dia_he.txt",revision:"d13e2c3ec4f6f34948f874eda3d63a55"},{url:"resources/dia_hi.txt",revision:"65a2374e09cee44447e9462f3acb7f6a"},{url:"resources/dia_hr.txt",revision:"21626f14592c1b84ee28b058fcb74194"},{url:"resources/dia_hu.txt",revision:"1698e21cde2ed5f5b599429e5e68a8c4"},{url:"resources/dia_id.txt",revision:"a3af078b5bc5cd36df5368fb2604ed02"},{url:"resources/dia_it.txt",revision:"f3b29c577b79c37687f37c1b0748b9d1"},{url:"resources/dia_ja.txt",revision:"990f1ad82383245f1f9e37678a1c9bab"},{url:"resources/dia_kn.txt",revision:"836030c27dc0bb91a25ebcc722f2df41"},{url:"resources/dia_ko.txt",revision:"4a5032d2cad4be2a1815f7e29238664a"},{url:"resources/dia_lt.txt",revision:"d0a2bbb32c3d7d860c8c0385075407ee"},{url:"resources/dia_lv.txt",revision:"8cdfac8996f69486b99302eb0c01757a"},{url:"resources/dia_ml.txt",revision:"53f0f853779db48abc46023e507cb698"},{url:"resources/dia_mr.txt",revision:"4f3bffbf25b0d07a0946e77a288f40b9"},{url:"resources/dia_ms.txt",revision:"55d9c222689543ab6a091636d12dc92f"},{url:"resources/dia_my.txt",revision:"6ac22c2dd7bf24f2ce4db6ea5cd82470"},{url:"resources/dia_nl.txt",revision:"da45f841b898121c268b02e5cf0c0f5e"},{url:"resources/dia_no.txt",revision:"afa660c88bef1253c9827f857e3c2a99"},{url:"resources/dia_pl.txt",revision:"934cb78df740c1377b724cc68b28b436"},{url:"resources/dia_pt-br.txt",revision:"128c5640c8ea34d4e5296bbb2ef35db3"},{url:"resources/dia_pt.txt",revision:"1d30c678b01d010a0c8a5cf415fa68a0"},{url:"resources/dia_ro.txt",revision:"a90bf597059e90eff0d955d12058df23"},{url:"resources/dia_ru.txt",revision:"b225c1bd151294617e8d600181d9e44e"},{url:"resources/dia_si.txt",revision:"6ac22c2dd7bf24f2ce4db6ea5cd82470"},{url:"resources/dia_sk.txt",revision:"be785304786ae06fe6cdae4c029e5f28"},{url:"resources/dia_sl.txt",revision:"c3748f17f0775bdd539ed69a49acd1e1"},{url:"resources/dia_sr.txt",revision:"611506593ed67893a50c3a9000a12c79"},{url:"resources/dia_sv.txt",revision:"54157da886c9c17d4eb1fe9e3d195368"},{url:"resources/dia_sw.txt",revision:"0cd0148f07578cbac9dc4e2222277266"},{url:"resources/dia_ta.txt",revision:"79cb0ed533e753ae646f055fb75d25fc"},{url:"resources/dia_te.txt",revision:"305740ddcfe539071f9f65d844c13068"},{url:"resources/dia_th.txt",revision:"ffc4698dc2f34eb02bf02f3ac26c5c7e"},{url:"resources/dia_tr.txt",revision:"1092cea9e131780ae817c5c5915be3b6"},{url:"resources/dia_uk.txt",revision:"e1ab64d71b13935ef5ef05c09a8f95d9"},{url:"resources/dia_vi.txt",revision:"a9ead4c2e8460af1b127b7405dba35a3"},{url:"resources/dia_zh-tw.txt",revision:"28d610fd1f35a68bcc8a555fea09dc12"},{url:"resources/dia_zh.txt",revision:"f49748b5eb13dee86003c5f57aa628ff"},{url:"favicon.ico",revision:"fab2d88b37c72d83607527573de45281"},{url:"images/manifest.json",revision:"c6236bde53ed79aaaec60a1aca8ee2ef"},{url:"images/logo.png",revision:"89630b64b911ebe0daa3dfe442087cfa"},{url:"images/drawlogo.svg",revision:"4bf4d14ebcf072d8bd4c5a1c89e88fc6"},{url:"images/drawlogo48.png",revision:"8b13428373aca67b895364d025f42417"},{url:"images/drawlogo-gray.svg",revision:"0aabacbc0873816e1e09e4736ae44c7d"},{url:"images/drawlogo-text-bottom.svg",revision:"f6c438823ab31f290940bd4feb8dd9c2"},{url:"images/default-user.jpg",revision:"2c399696a87c8921f12d2f9e1990cc6e"},{url:"images/logo-flat-small.png",revision:"4b178e59ff499d6dd1894fc498b59877"},{url:"images/apple-touch-icon.png",revision:"73da7989a23ce9a4be565ec65658a239"},{url:"images/favicon-16x16.png",revision:"1a79d5461a5d2bf21f6652e0ac20d6e5"},{url:"images/favicon-32x32.png",revision:"e3b92da2febe70bad5372f6f3474b034"},{url:"images/android-chrome-196x196.png",revision:"f8c045b2d7b1c719fda64edab04c415c"},{url:"images/android-chrome-512x512.png",revision:"959b5fac2453963ff6d60fb85e4b73fd"},{url:"images/delete.png",revision:"5f2350f2fd20f1a229637aed32ed8f29"},{url:"images/droptarget.png",revision:"bbf7f563fb6784de1ce96f329519b043"},{url:"images/help.png",revision:"9266c6c3915bd33c243d80037d37bf61"},{url:"images/download.png",revision:"35418dd7bd48d87502c71b578cc6c37f"},{url:"images/logo-flat.png",revision:"038070ab43aee6e54a791211859fc67b"},{url:"images/google-drive-logo.svg",revision:"5d9f2f5bbc7dcc252730a0072bb23059"},{url:"images/onedrive-logo.svg",revision:"3645b344ec0634c1290dd58d7dc87b97"},{url:"images/dropbox-logo.svg",revision:"e6be408c77cf9c82d41ac64fa854280a"},{url:"images/github-logo.svg",revision:"a1a999b69a275eac0cb918360ac05ae1"},{url:"images/gitlab-logo.svg",revision:"0faea8c818899e58533e153c44b10517"},{url:"images/trello-logo.svg",revision:"006fd0d7d70d7e95dc691674cb12e044"},{url:"images/osa_drive-harddisk.png",revision:"b954e1ae772087c5b4c6ae797e1f9649"},{url:"images/osa_database.png",revision:"c350d9d9b95f37b6cfe798b40ede5fb0"},{url:"images/google-drive-logo-white.svg",revision:"f329d8b1be7778515a85b93fc35d9f26"},{url:"images/dropbox-logo-white.svg",revision:"4ea8299ac3bc31a16f199ee3aec223bf"},{url:"images/onedrive-logo-white.svg",revision:"b3602fa0fc947009cff3f33a581cff4d"},{url:"images/github-logo-white.svg",revision:"537b1127b3ca0f95b45782d1304fb77a"},{url:"images/gitlab-logo-white.svg",revision:"5fede9ac2f394c716b8c23e3fddc3910"},{url:"images/trello-logo-white-orange.svg",revision:"e2a0a52ba3766682f138138d10a75eb5"},{url:"images/logo-confluence.png",revision:"ed1e55d44ae5eba8f999aba2c93e8331"},{url:"images/logo-jira.png",revision:"f8d460555a0d1f87cfd901e940666629"},{url:"images/clear.gif",revision:"db13c778e4382e0b55258d0f811d5d70"},{url:"images/spin.gif",revision:"487cbb40b9ced439aa1ad914e816d773"},{url:"images/checkmark.gif",revision:"ba764ce62f2bf952df5bbc2bb4d381c5"},{url:"images/hs.png",revision:"fefa1a03d92ebad25c88dca94a0b63db"},{url:"images/aui-wait.gif",revision:"5a474bcbd8d2f2826f03d10ea44bf60e"},{url:"mxgraph/css/common.css",revision:"b5b7280ec98671bb6c3847a36bc7ea12"},{url:"mxgraph/images/expanded.gif",revision:"2b67c2c035af1e9a5cc814f0d22074cf"},{url:"mxgraph/images/collapsed.gif",revision:"73cc826da002a3d740ca4ce6ec5c1f4a"},{url:"mxgraph/images/maximize.gif",revision:"5cd13d6925493ab51e876694cc1c2ec2"},{url:"mxgraph/images/minimize.gif",revision:"8957741b9b0f86af9438775f2aadbb54"},{url:"mxgraph/images/close.gif",revision:"8b84669812ac7382984fca35de8da48b"},{url:"mxgraph/images/resize.gif",revision:"a6477612b3567a34033f9cac6184eed3"},{url:"mxgraph/images/separator.gif",revision:"7819742ff106c97da7a801c2372bbbe5"},{url:"mxgraph/images/window.gif",revision:"fd9a21dd4181f98052a202a0a01f18ab"},{url:"mxgraph/images/window-title.gif",revision:"3fb1d6c43246cdf991a11dfe826dfe99"},{url:"mxgraph/images/button.gif",revision:"00759bdc3ad218fa739f584369541809"},{url:"mxgraph/images/point.gif",revision:"83a43717b284902442620f61bc4e9fa6"}],{ignoreURLParametersMatching:[/.*/]})}));
//# sourceMappingURL=service-worker.js.map
diff --git a/src/main/webapp/service-worker.js.map b/src/main/webapp/service-worker.js.map
index e06fadb2..bf7e6393 100644
--- a/src/main/webapp/service-worker.js.map
+++ b/src/main/webapp/service-worker.js.map
@@ -1 +1 @@
-{"version":3,"file":"service-worker.js","sources":["../../../../../../../tmp/b9bf33621170bfff9b97a71782e13f55/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/opt/hostedtoolcache/node/14.18.2/x64/lib/node_modules/workbox-cli/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"js/app.min.js\",\n \"revision\": \"a14d85ba5cf368b669fa0781a5faa567\"\n },\n {\n \"url\": \"js/extensions.min.js\",\n \"revision\": \"44f4bd1a585836eb684bc07c94238837\"\n },\n {\n \"url\": \"js/stencils.min.js\",\n \"revision\": \"a4363c11e41442d41b1e073606f5566d\"\n },\n {\n \"url\": \"js/shapes-14-6-5.min.js\",\n \"revision\": \"ebce9c260798e9465fa3c3e3c1607d43\"\n },\n {\n \"url\": \"js/math-print.js\",\n \"revision\": \"9d98c920695f6c3395da4b68f723e60a\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"9200e0815b5a48cae7db8f54f9604990\"\n },\n {\n \"url\": \"open.html\",\n \"revision\": \"d71816b3b00e769fc6019fcdd6921662\"\n },\n {\n \"url\": \"styles/grapheditor.css\",\n \"revision\": \"748da0cd0a068a52eac70ee2b2c194fe\"\n },\n {\n \"url\": \"styles/atlas.css\",\n \"revision\": \"e8152cda9233d3a3af017422993abfce\"\n },\n {\n \"url\": \"styles/dark.css\",\n \"revision\": \"3179f617dd02efd2cefeb8c06f965880\"\n },\n {\n \"url\": \"js/croppie/croppie.min.css\",\n \"revision\": \"fc297c9002c79c15a132f13ee3ec427e\"\n },\n {\n \"url\": \"js/dropbox/Dropbox-sdk.min.js\",\n \"revision\": \"4b9842892aa37b156db0a8364b7a83b0\"\n },\n {\n \"url\": \"js/onedrive/OneDrive.js\",\n \"revision\": \"505e8280346666f7ee801bc59521fa67\"\n },\n {\n \"url\": \"js/viewer-static.min.js\",\n \"revision\": \"fd098b72535cd6b7c1a78249be35cfd4\"\n },\n {\n \"url\": \"connect/jira/editor-1-3-3.html\",\n \"revision\": \"a2b0e7267a08a838f3cc404eba831ec0\"\n },\n {\n \"url\": \"connect/jira/viewerPanel-1-3-12.html\",\n \"revision\": \"2ce6e99d95113e9ca6b24343cea202e0\"\n },\n {\n \"url\": \"connect/jira/fullScreenViewer-1-3-3.html\",\n \"revision\": \"ba7ece2dfb2833b72f97280d7092f25e\"\n },\n {\n \"url\": \"connect/jira/viewerPanel.js\",\n \"revision\": \"6e9412c359a21b86dc7c5128bf6208d4\"\n },\n {\n \"url\": \"connect/jira/spinner.gif\",\n \"revision\": \"7d857ab9d86123e93d74d48e958fe743\"\n },\n {\n \"url\": \"connect/jira/editor.js\",\n \"revision\": \"01caa325f3ad3f6565e0b4228907fb63\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer-init.js\",\n \"revision\": \"197ed5837ed27992688fc424699a9a78\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer.js\",\n \"revision\": \"4e0775a6c156a803e777870623ac7c3e\"\n },\n {\n \"url\": \"plugins/connectJira.js\",\n \"revision\": \"4cefa13414e0d406550f3c073923080c\"\n },\n {\n \"url\": \"plugins/cConf-comments.js\",\n \"revision\": \"c787357209cff2986dcca567b599e2ef\"\n },\n {\n \"url\": \"plugins/cConf-1-4-8.js\",\n \"revision\": \"d7577d8f21716423852c343f027c4c27\"\n },\n {\n \"url\": \"connect/confluence/connectUtils-1-4-8.js\",\n \"revision\": \"8f6c85460791915b01d83cd0a793effb\"\n },\n {\n \"url\": \"connect/new_common/cac.js\",\n \"revision\": \"3d8c436c566db645fb1e6e6ba9f69bbc\"\n },\n {\n \"url\": \"connect/gdrive_common/gac.js\",\n \"revision\": \"38f1df3ecc4d78290493f47e62202138\"\n },\n {\n \"url\": \"connect/onedrive_common/ac.js\",\n \"revision\": \"887d3ac605a7bb297067537e7c1f5686\"\n },\n {\n \"url\": \"connect/confluence/viewer-init.js\",\n \"revision\": \"4a60c6c805cab7bc782f1e52f7818d9f\"\n },\n {\n \"url\": \"connect/confluence/viewer.js\",\n \"revision\": \"d025b0929817299fa154f273525aa0ec\"\n },\n {\n \"url\": \"connect/confluence/viewer-1-4-42.html\",\n \"revision\": \"c7b38b3af4eb7a58ab6dc4791216530e\"\n },\n {\n \"url\": \"connect/confluence/macroEditor-1-4-8.html\",\n \"revision\": \"8cd74a2fb60bf2e3e86026d66107cf11\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram-1-4-8.js\",\n \"revision\": \"8b670f4b6ccde55358851da705ae884f\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram.html\",\n \"revision\": \"c03c89622d22227313645900af4e3c3d\"\n },\n {\n \"url\": \"connect/confluence/macro-editor.js\",\n \"revision\": \"e273a48b8e81faac4530bf1a68d75aa0\"\n },\n {\n \"url\": \"math/MathJax.js\",\n \"revision\": \"b2c103388b71bb3d11cbf9aa45fe9b68\"\n },\n {\n \"url\": \"math/config/TeX-MML-AM_SVG-full.js\",\n \"revision\": \"d5cb8ac04050983170ae4af145bc66ff\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/fontdata.js\",\n \"revision\": \"495e5a410955d1b6178870e605890ede\"\n },\n {\n \"url\": \"math/jax/element/mml/optable/BasicLatin.js\",\n \"revision\": \"cac9b2e71382e62270baa55fab07cc13\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js\",\n \"revision\": \"e3e5e4d5924beed29f0844550b5c8f46\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js\",\n \"revision\": \"0767cbad7275b53da128e7e5e1109f7c\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js\",\n \"revision\": \"346302a5c5ee00e01c302148c56dbfe3\"\n },\n {\n \"url\": \"resources/dia.txt\",\n \"revision\": \"6ac22c2dd7bf24f2ce4db6ea5cd82470\"\n },\n {\n \"url\": \"resources/dia_am.txt\",\n \"revision\": \"7b87288182abf40af0364ee000959b7b\"\n },\n {\n \"url\": \"resources/dia_ar.txt\",\n \"revision\": \"0ab712083c7e9e5fe881c37250074d4c\"\n },\n {\n \"url\": \"resources/dia_bg.txt\",\n \"revision\": \"c3fe70b41c1c99a3817f45a533f0d3d1\"\n },\n {\n \"url\": \"resources/dia_bn.txt\",\n \"revision\": \"50da78b0b7f2f65bdf25eabae73b3228\"\n },\n {\n \"url\": \"resources/dia_bs.txt\",\n \"revision\": \"568b22ef20ebfe162fce127fa9bcc6b5\"\n },\n {\n \"url\": \"resources/dia_ca.txt\",\n \"revision\": \"a4f3c89b030191d40999805696e6859b\"\n },\n {\n \"url\": \"resources/dia_cs.txt\",\n \"revision\": \"feebdfef9385384c37fbadd1a1a1b6c2\"\n },\n {\n \"url\": \"resources/dia_da.txt\",\n \"revision\": \"163d26afd66826247cf1553314ec70f5\"\n },\n {\n \"url\": \"resources/dia_de.txt\",\n \"revision\": \"9aa8d6e1d10659624519c88a7ad3e042\"\n },\n {\n \"url\": \"resources/dia_el.txt\",\n \"revision\": \"5289ac0ed78737231ca568be2c777d1a\"\n },\n {\n \"url\": \"resources/dia_eo.txt\",\n \"revision\": \"98e0cca265917fe115de548ca2c6d7a4\"\n },\n {\n \"url\": \"resources/dia_es.txt\",\n \"revision\": \"1a590b0b38299487e1267d440ba04350\"\n },\n {\n \"url\": \"resources/dia_et.txt\",\n \"revision\": \"bed7cfc8f949531f762ad86a225c15a2\"\n },\n {\n \"url\": \"resources/dia_eu.txt\",\n \"revision\": \"1d65da41d45cf45dfb81d13f360d7193\"\n },\n {\n \"url\": \"resources/dia_fa.txt\",\n \"revision\": \"21e0279f46bcdd79063c06fcfc7b1120\"\n },\n {\n \"url\": \"resources/dia_fi.txt\",\n \"revision\": \"649cea556e9168919b0492f8565bac8b\"\n },\n {\n \"url\": \"resources/dia_fil.txt\",\n \"revision\": \"a717e0751e11dbb6502acfcc51c1a704\"\n },\n {\n \"url\": \"resources/dia_fr.txt\",\n \"revision\": \"4e6530553659158b0f55cc43ec46cc7e\"\n },\n {\n \"url\": \"resources/dia_gl.txt\",\n \"revision\": \"4fe5a563571d23001fb0dcd28dadcb32\"\n },\n {\n \"url\": \"resources/dia_gu.txt\",\n \"revision\": \"5eef301316f5945a700c13d1d96570ed\"\n },\n {\n \"url\": \"resources/dia_he.txt\",\n \"revision\": \"d13e2c3ec4f6f34948f874eda3d63a55\"\n },\n {\n \"url\": \"resources/dia_hi.txt\",\n \"revision\": \"65a2374e09cee44447e9462f3acb7f6a\"\n },\n {\n \"url\": \"resources/dia_hr.txt\",\n \"revision\": \"21626f14592c1b84ee28b058fcb74194\"\n },\n {\n \"url\": \"resources/dia_hu.txt\",\n \"revision\": \"1698e21cde2ed5f5b599429e5e68a8c4\"\n },\n {\n \"url\": \"resources/dia_id.txt\",\n \"revision\": \"a3af078b5bc5cd36df5368fb2604ed02\"\n },\n {\n \"url\": \"resources/dia_it.txt\",\n \"revision\": \"f3b29c577b79c37687f37c1b0748b9d1\"\n },\n {\n \"url\": \"resources/dia_ja.txt\",\n \"revision\": \"990f1ad82383245f1f9e37678a1c9bab\"\n },\n {\n \"url\": \"resources/dia_kn.txt\",\n \"revision\": \"836030c27dc0bb91a25ebcc722f2df41\"\n },\n {\n \"url\": \"resources/dia_ko.txt\",\n \"revision\": \"4a5032d2cad4be2a1815f7e29238664a\"\n },\n {\n \"url\": \"resources/dia_lt.txt\",\n \"revision\": \"d0a2bbb32c3d7d860c8c0385075407ee\"\n },\n {\n \"url\": \"resources/dia_lv.txt\",\n \"revision\": \"8cdfac8996f69486b99302eb0c01757a\"\n },\n {\n \"url\": \"resources/dia_ml.txt\",\n \"revision\": \"53f0f853779db48abc46023e507cb698\"\n },\n {\n \"url\": \"resources/dia_mr.txt\",\n \"revision\": \"4f3bffbf25b0d07a0946e77a288f40b9\"\n },\n {\n \"url\": \"resources/dia_ms.txt\",\n \"revision\": \"55d9c222689543ab6a091636d12dc92f\"\n },\n {\n \"url\": \"resources/dia_my.txt\",\n \"revision\": \"6ac22c2dd7bf24f2ce4db6ea5cd82470\"\n },\n {\n \"url\": \"resources/dia_nl.txt\",\n \"revision\": \"da45f841b898121c268b02e5cf0c0f5e\"\n },\n {\n \"url\": \"resources/dia_no.txt\",\n \"revision\": \"afa660c88bef1253c9827f857e3c2a99\"\n },\n {\n \"url\": \"resources/dia_pl.txt\",\n \"revision\": \"934cb78df740c1377b724cc68b28b436\"\n },\n {\n \"url\": \"resources/dia_pt-br.txt\",\n \"revision\": \"128c5640c8ea34d4e5296bbb2ef35db3\"\n },\n {\n \"url\": \"resources/dia_pt.txt\",\n \"revision\": \"1d30c678b01d010a0c8a5cf415fa68a0\"\n },\n {\n \"url\": \"resources/dia_ro.txt\",\n \"revision\": \"a90bf597059e90eff0d955d12058df23\"\n },\n {\n \"url\": \"resources/dia_ru.txt\",\n \"revision\": \"b225c1bd151294617e8d600181d9e44e\"\n },\n {\n \"url\": \"resources/dia_si.txt\",\n \"revision\": \"6ac22c2dd7bf24f2ce4db6ea5cd82470\"\n },\n {\n \"url\": \"resources/dia_sk.txt\",\n \"revision\": \"be785304786ae06fe6cdae4c029e5f28\"\n },\n {\n \"url\": \"resources/dia_sl.txt\",\n \"revision\": \"c3748f17f0775bdd539ed69a49acd1e1\"\n },\n {\n \"url\": \"resources/dia_sr.txt\",\n \"revision\": \"611506593ed67893a50c3a9000a12c79\"\n },\n {\n \"url\": \"resources/dia_sv.txt\",\n \"revision\": \"54157da886c9c17d4eb1fe9e3d195368\"\n },\n {\n \"url\": \"resources/dia_sw.txt\",\n \"revision\": \"0cd0148f07578cbac9dc4e2222277266\"\n },\n {\n \"url\": \"resources/dia_ta.txt\",\n \"revision\": \"79cb0ed533e753ae646f055fb75d25fc\"\n },\n {\n \"url\": \"resources/dia_te.txt\",\n \"revision\": \"305740ddcfe539071f9f65d844c13068\"\n },\n {\n \"url\": \"resources/dia_th.txt\",\n \"revision\": \"ffc4698dc2f34eb02bf02f3ac26c5c7e\"\n },\n {\n \"url\": \"resources/dia_tr.txt\",\n \"revision\": \"1092cea9e131780ae817c5c5915be3b6\"\n },\n {\n \"url\": \"resources/dia_uk.txt\",\n \"revision\": \"e1ab64d71b13935ef5ef05c09a8f95d9\"\n },\n {\n \"url\": \"resources/dia_vi.txt\",\n \"revision\": \"a9ead4c2e8460af1b127b7405dba35a3\"\n },\n {\n \"url\": \"resources/dia_zh-tw.txt\",\n \"revision\": \"28d610fd1f35a68bcc8a555fea09dc12\"\n },\n {\n \"url\": \"resources/dia_zh.txt\",\n \"revision\": \"f49748b5eb13dee86003c5f57aa628ff\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"fab2d88b37c72d83607527573de45281\"\n },\n {\n \"url\": \"images/manifest.json\",\n \"revision\": \"c6236bde53ed79aaaec60a1aca8ee2ef\"\n },\n {\n \"url\": \"images/logo.png\",\n \"revision\": \"89630b64b911ebe0daa3dfe442087cfa\"\n },\n {\n \"url\": \"images/drawlogo.svg\",\n \"revision\": \"4bf4d14ebcf072d8bd4c5a1c89e88fc6\"\n },\n {\n \"url\": \"images/drawlogo48.png\",\n \"revision\": \"8b13428373aca67b895364d025f42417\"\n },\n {\n \"url\": \"images/drawlogo-gray.svg\",\n \"revision\": \"0aabacbc0873816e1e09e4736ae44c7d\"\n },\n {\n \"url\": \"images/drawlogo-text-bottom.svg\",\n \"revision\": \"f6c438823ab31f290940bd4feb8dd9c2\"\n },\n {\n \"url\": \"images/default-user.jpg\",\n \"revision\": \"2c399696a87c8921f12d2f9e1990cc6e\"\n },\n {\n \"url\": \"images/logo-flat-small.png\",\n \"revision\": \"4b178e59ff499d6dd1894fc498b59877\"\n },\n {\n \"url\": \"images/apple-touch-icon.png\",\n \"revision\": \"73da7989a23ce9a4be565ec65658a239\"\n },\n {\n \"url\": \"images/favicon-16x16.png\",\n \"revision\": \"1a79d5461a5d2bf21f6652e0ac20d6e5\"\n },\n {\n \"url\": \"images/favicon-32x32.png\",\n \"revision\": \"e3b92da2febe70bad5372f6f3474b034\"\n },\n {\n \"url\": \"images/android-chrome-196x196.png\",\n \"revision\": \"f8c045b2d7b1c719fda64edab04c415c\"\n },\n {\n \"url\": \"images/android-chrome-512x512.png\",\n \"revision\": \"959b5fac2453963ff6d60fb85e4b73fd\"\n },\n {\n \"url\": \"images/delete.png\",\n \"revision\": \"5f2350f2fd20f1a229637aed32ed8f29\"\n },\n {\n \"url\": \"images/droptarget.png\",\n \"revision\": \"bbf7f563fb6784de1ce96f329519b043\"\n },\n {\n \"url\": \"images/help.png\",\n \"revision\": \"9266c6c3915bd33c243d80037d37bf61\"\n },\n {\n \"url\": \"images/download.png\",\n \"revision\": \"35418dd7bd48d87502c71b578cc6c37f\"\n },\n {\n \"url\": \"images/logo-flat.png\",\n \"revision\": \"038070ab43aee6e54a791211859fc67b\"\n },\n {\n \"url\": \"images/google-drive-logo.svg\",\n \"revision\": \"5d9f2f5bbc7dcc252730a0072bb23059\"\n },\n {\n \"url\": \"images/onedrive-logo.svg\",\n \"revision\": \"3645b344ec0634c1290dd58d7dc87b97\"\n },\n {\n \"url\": \"images/dropbox-logo.svg\",\n \"revision\": \"e6be408c77cf9c82d41ac64fa854280a\"\n },\n {\n \"url\": \"images/github-logo.svg\",\n \"revision\": \"a1a999b69a275eac0cb918360ac05ae1\"\n },\n {\n \"url\": \"images/gitlab-logo.svg\",\n \"revision\": \"0faea8c818899e58533e153c44b10517\"\n },\n {\n \"url\": \"images/trello-logo.svg\",\n \"revision\": \"006fd0d7d70d7e95dc691674cb12e044\"\n },\n {\n \"url\": \"images/osa_drive-harddisk.png\",\n \"revision\": \"b954e1ae772087c5b4c6ae797e1f9649\"\n },\n {\n \"url\": \"images/osa_database.png\",\n \"revision\": \"c350d9d9b95f37b6cfe798b40ede5fb0\"\n },\n {\n \"url\": \"images/google-drive-logo-white.svg\",\n \"revision\": \"f329d8b1be7778515a85b93fc35d9f26\"\n },\n {\n \"url\": \"images/dropbox-logo-white.svg\",\n \"revision\": \"4ea8299ac3bc31a16f199ee3aec223bf\"\n },\n {\n \"url\": \"images/onedrive-logo-white.svg\",\n \"revision\": \"b3602fa0fc947009cff3f33a581cff4d\"\n },\n {\n \"url\": \"images/github-logo-white.svg\",\n \"revision\": \"537b1127b3ca0f95b45782d1304fb77a\"\n },\n {\n \"url\": \"images/gitlab-logo-white.svg\",\n \"revision\": \"5fede9ac2f394c716b8c23e3fddc3910\"\n },\n {\n \"url\": \"images/trello-logo-white-orange.svg\",\n \"revision\": \"e2a0a52ba3766682f138138d10a75eb5\"\n },\n {\n \"url\": \"images/logo-confluence.png\",\n \"revision\": \"ed1e55d44ae5eba8f999aba2c93e8331\"\n },\n {\n \"url\": \"images/logo-jira.png\",\n \"revision\": \"f8d460555a0d1f87cfd901e940666629\"\n },\n {\n \"url\": \"images/clear.gif\",\n \"revision\": \"db13c778e4382e0b55258d0f811d5d70\"\n },\n {\n \"url\": \"images/spin.gif\",\n \"revision\": \"487cbb40b9ced439aa1ad914e816d773\"\n },\n {\n \"url\": \"images/checkmark.gif\",\n \"revision\": \"ba764ce62f2bf952df5bbc2bb4d381c5\"\n },\n {\n \"url\": \"images/hs.png\",\n \"revision\": \"fefa1a03d92ebad25c88dca94a0b63db\"\n },\n {\n \"url\": \"images/aui-wait.gif\",\n \"revision\": \"5a474bcbd8d2f2826f03d10ea44bf60e\"\n },\n {\n \"url\": \"mxgraph/css/common.css\",\n \"revision\": \"b5b7280ec98671bb6c3847a36bc7ea12\"\n },\n {\n \"url\": \"mxgraph/images/expanded.gif\",\n \"revision\": \"2b67c2c035af1e9a5cc814f0d22074cf\"\n },\n {\n \"url\": \"mxgraph/images/collapsed.gif\",\n \"revision\": \"73cc826da002a3d740ca4ce6ec5c1f4a\"\n },\n {\n \"url\": \"mxgraph/images/maximize.gif\",\n \"revision\": \"5cd13d6925493ab51e876694cc1c2ec2\"\n },\n {\n \"url\": \"mxgraph/images/minimize.gif\",\n \"revision\": \"8957741b9b0f86af9438775f2aadbb54\"\n },\n {\n \"url\": \"mxgraph/images/close.gif\",\n \"revision\": \"8b84669812ac7382984fca35de8da48b\"\n },\n {\n \"url\": \"mxgraph/images/resize.gif\",\n \"revision\": \"a6477612b3567a34033f9cac6184eed3\"\n },\n {\n \"url\": \"mxgraph/images/separator.gif\",\n \"revision\": \"7819742ff106c97da7a801c2372bbbe5\"\n },\n {\n \"url\": \"mxgraph/images/window.gif\",\n \"revision\": \"fd9a21dd4181f98052a202a0a01f18ab\"\n },\n {\n \"url\": \"mxgraph/images/window-title.gif\",\n \"revision\": \"3fb1d6c43246cdf991a11dfe826dfe99\"\n },\n {\n \"url\": \"mxgraph/images/button.gif\",\n \"revision\": \"00759bdc3ad218fa739f584369541809\"\n },\n {\n \"url\": \"mxgraph/images/point.gif\",\n \"revision\": \"83a43717b284902442620f61bc4e9fa6\"\n }\n], {\n \"ignoreURLParametersMatching\": [/.*/]\n});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting"],"mappings":"szBAmBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,oCAY2B,CAClC,KACS,yBACK,oCAEd,KACS,gCACK,oCAEd,KACS,8BACK,oCAEd,KACS,mCACK,oCAEd,KACS,4BACK,oCAEd,KACS,sBACK,oCAEd,KACS,qBACK,oCAEd,KACS,kCACK,oCAEd,KACS,4BACK,oCAEd,KACS,2BACK,oCAEd,KACS,sCACK,oCAEd,KACS,yCACK,oCAEd,KACS,mCACK,oCAEd,KACS,mCACK,oCAEd,KACS,0CACK,oCAEd,KACS,gDACK,oCAEd,KACS,oDACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kDACK,oCAEd,KACS,6CACK,oCAEd,KACS,kCACK,oCAEd,KACS,qCACK,oCAEd,KACS,kCACK,oCAEd,KACS,oDACK,oCAEd,KACS,qCACK,oCAEd,KACS,wCACK,oCAEd,KACS,yCACK,oCAEd,KACS,6CACK,oCAEd,KACS,wCACK,oCAEd,KACS,iDACK,oCAEd,KACS,qDACK,oCAEd,KACS,sDACK,oCAEd,KACS,kDACK,oCAEd,KACS,8CACK,oCAEd,KACS,2BACK,oCAEd,KACS,8CACK,oCAEd,KACS,qDACK,oCAEd,KACS,sDACK,oCAEd,KACS,+DACK,oCAEd,KACS,2EACK,oCAEd,KACS,wEACK,oCAEd,KACS,6BACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,iCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,mCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,mCACK,oCAEd,KACS,gCACK,oCAEd,KACS,uBACK,oCAEd,KACS,gCACK,oCAEd,KACS,2BACK,oCAEd,KACS,+BACK,oCAEd,KACS,iCACK,oCAEd,KACS,oCACK,oCAEd,KACS,2CACK,oCAEd,KACS,mCACK,oCAEd,KACS,sCACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,oCACK,oCAEd,KACS,6CACK,oCAEd,KACS,6CACK,oCAEd,KACS,6BACK,oCAEd,KACS,iCACK,oCAEd,KACS,2BACK,oCAEd,KACS,+BACK,oCAEd,KACS,gCACK,oCAEd,KACS,wCACK,oCAEd,KACS,oCACK,oCAEd,KACS,mCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kCACK,oCAEd,KACS,yCACK,oCAEd,KACS,mCACK,oCAEd,KACS,8CACK,oCAEd,KACS,yCACK,oCAEd,KACS,0CACK,oCAEd,KACS,wCACK,oCAEd,KACS,wCACK,oCAEd,KACS,+CACK,oCAEd,KACS,sCACK,oCAEd,KACS,gCACK,oCAEd,KACS,4BACK,oCAEd,KACS,2BACK,oCAEd,KACS,gCACK,oCAEd,KACS,yBACK,oCAEd,KACS,+BACK,oCAEd,KACS,kCACK,oCAEd,KACS,uCACK,oCAEd,KACS,wCACK,oCAEd,KACS,uCACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,qCACK,oCAEd,KACS,wCACK,oCAEd,KACS,qCACK,oCAEd,KACS,2CACK,oCAEd,KACS,qCACK,oCAEd,KACS,oCACK,qCAEb,6BAC8B,CAAC"} \ No newline at end of file
+{"version":3,"file":"service-worker.js","sources":["../../../../../../../tmp/af04eaf76617cc5c9b8e97e26eef551b/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/opt/hostedtoolcache/node/14.18.2/x64/lib/node_modules/workbox-cli/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"js/app.min.js\",\n \"revision\": \"953b6bc9958b5f3822bd4274508d8437\"\n },\n {\n \"url\": \"js/extensions.min.js\",\n \"revision\": \"44f4bd1a585836eb684bc07c94238837\"\n },\n {\n \"url\": \"js/stencils.min.js\",\n \"revision\": \"a4363c11e41442d41b1e073606f5566d\"\n },\n {\n \"url\": \"js/shapes-14-6-5.min.js\",\n \"revision\": \"ebce9c260798e9465fa3c3e3c1607d43\"\n },\n {\n \"url\": \"js/math-print.js\",\n \"revision\": \"9d98c920695f6c3395da4b68f723e60a\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"9200e0815b5a48cae7db8f54f9604990\"\n },\n {\n \"url\": \"open.html\",\n \"revision\": \"d71816b3b00e769fc6019fcdd6921662\"\n },\n {\n \"url\": \"styles/grapheditor.css\",\n \"revision\": \"748da0cd0a068a52eac70ee2b2c194fe\"\n },\n {\n \"url\": \"styles/atlas.css\",\n \"revision\": \"e8152cda9233d3a3af017422993abfce\"\n },\n {\n \"url\": \"styles/dark.css\",\n \"revision\": \"3179f617dd02efd2cefeb8c06f965880\"\n },\n {\n \"url\": \"js/croppie/croppie.min.css\",\n \"revision\": \"fc297c9002c79c15a132f13ee3ec427e\"\n },\n {\n \"url\": \"js/dropbox/Dropbox-sdk.min.js\",\n \"revision\": \"4b9842892aa37b156db0a8364b7a83b0\"\n },\n {\n \"url\": \"js/onedrive/OneDrive.js\",\n \"revision\": \"505e8280346666f7ee801bc59521fa67\"\n },\n {\n \"url\": \"js/viewer-static.min.js\",\n \"revision\": \"c9678257a127910f35e8bb84e7145019\"\n },\n {\n \"url\": \"connect/jira/editor-1-3-3.html\",\n \"revision\": \"a2b0e7267a08a838f3cc404eba831ec0\"\n },\n {\n \"url\": \"connect/jira/viewerPanel-1-3-12.html\",\n \"revision\": \"2ce6e99d95113e9ca6b24343cea202e0\"\n },\n {\n \"url\": \"connect/jira/fullScreenViewer-1-3-3.html\",\n \"revision\": \"ba7ece2dfb2833b72f97280d7092f25e\"\n },\n {\n \"url\": \"connect/jira/viewerPanel.js\",\n \"revision\": \"6e9412c359a21b86dc7c5128bf6208d4\"\n },\n {\n \"url\": \"connect/jira/spinner.gif\",\n \"revision\": \"7d857ab9d86123e93d74d48e958fe743\"\n },\n {\n \"url\": \"connect/jira/editor.js\",\n \"revision\": \"01caa325f3ad3f6565e0b4228907fb63\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer-init.js\",\n \"revision\": \"197ed5837ed27992688fc424699a9a78\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer.js\",\n \"revision\": \"4e0775a6c156a803e777870623ac7c3e\"\n },\n {\n \"url\": \"plugins/connectJira.js\",\n \"revision\": \"4cefa13414e0d406550f3c073923080c\"\n },\n {\n \"url\": \"plugins/cConf-comments.js\",\n \"revision\": \"c787357209cff2986dcca567b599e2ef\"\n },\n {\n \"url\": \"plugins/cConf-1-4-8.js\",\n \"revision\": \"d7577d8f21716423852c343f027c4c27\"\n },\n {\n \"url\": \"connect/confluence/connectUtils-1-4-8.js\",\n \"revision\": \"8f6c85460791915b01d83cd0a793effb\"\n },\n {\n \"url\": \"connect/new_common/cac.js\",\n \"revision\": \"3d8c436c566db645fb1e6e6ba9f69bbc\"\n },\n {\n \"url\": \"connect/gdrive_common/gac.js\",\n \"revision\": \"38f1df3ecc4d78290493f47e62202138\"\n },\n {\n \"url\": \"connect/onedrive_common/ac.js\",\n \"revision\": \"887d3ac605a7bb297067537e7c1f5686\"\n },\n {\n \"url\": \"connect/confluence/viewer-init.js\",\n \"revision\": \"4a60c6c805cab7bc782f1e52f7818d9f\"\n },\n {\n \"url\": \"connect/confluence/viewer.js\",\n \"revision\": \"d025b0929817299fa154f273525aa0ec\"\n },\n {\n \"url\": \"connect/confluence/viewer-1-4-42.html\",\n \"revision\": \"c7b38b3af4eb7a58ab6dc4791216530e\"\n },\n {\n \"url\": \"connect/confluence/macroEditor-1-4-8.html\",\n \"revision\": \"8cd74a2fb60bf2e3e86026d66107cf11\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram-1-4-8.js\",\n \"revision\": \"8b670f4b6ccde55358851da705ae884f\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram.html\",\n \"revision\": \"c03c89622d22227313645900af4e3c3d\"\n },\n {\n \"url\": \"connect/confluence/macro-editor.js\",\n \"revision\": \"e273a48b8e81faac4530bf1a68d75aa0\"\n },\n {\n \"url\": \"math/MathJax.js\",\n \"revision\": \"b2c103388b71bb3d11cbf9aa45fe9b68\"\n },\n {\n \"url\": \"math/config/TeX-MML-AM_SVG-full.js\",\n \"revision\": \"d5cb8ac04050983170ae4af145bc66ff\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/fontdata.js\",\n \"revision\": \"495e5a410955d1b6178870e605890ede\"\n },\n {\n \"url\": \"math/jax/element/mml/optable/BasicLatin.js\",\n \"revision\": \"cac9b2e71382e62270baa55fab07cc13\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js\",\n \"revision\": \"e3e5e4d5924beed29f0844550b5c8f46\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js\",\n \"revision\": \"0767cbad7275b53da128e7e5e1109f7c\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js\",\n \"revision\": \"346302a5c5ee00e01c302148c56dbfe3\"\n },\n {\n \"url\": \"resources/dia.txt\",\n \"revision\": \"6ac22c2dd7bf24f2ce4db6ea5cd82470\"\n },\n {\n \"url\": \"resources/dia_am.txt\",\n \"revision\": \"7b87288182abf40af0364ee000959b7b\"\n },\n {\n \"url\": \"resources/dia_ar.txt\",\n \"revision\": \"8cb02cb9d3740ac3306b963f060db29f\"\n },\n {\n \"url\": \"resources/dia_bg.txt\",\n \"revision\": \"c3fe70b41c1c99a3817f45a533f0d3d1\"\n },\n {\n \"url\": \"resources/dia_bn.txt\",\n \"revision\": \"50da78b0b7f2f65bdf25eabae73b3228\"\n },\n {\n \"url\": \"resources/dia_bs.txt\",\n \"revision\": \"568b22ef20ebfe162fce127fa9bcc6b5\"\n },\n {\n \"url\": \"resources/dia_ca.txt\",\n \"revision\": \"a4f3c89b030191d40999805696e6859b\"\n },\n {\n \"url\": \"resources/dia_cs.txt\",\n \"revision\": \"feebdfef9385384c37fbadd1a1a1b6c2\"\n },\n {\n \"url\": \"resources/dia_da.txt\",\n \"revision\": \"163d26afd66826247cf1553314ec70f5\"\n },\n {\n \"url\": \"resources/dia_de.txt\",\n \"revision\": \"9aa8d6e1d10659624519c88a7ad3e042\"\n },\n {\n \"url\": \"resources/dia_el.txt\",\n \"revision\": \"5289ac0ed78737231ca568be2c777d1a\"\n },\n {\n \"url\": \"resources/dia_eo.txt\",\n \"revision\": \"98e0cca265917fe115de548ca2c6d7a4\"\n },\n {\n \"url\": \"resources/dia_es.txt\",\n \"revision\": \"1a590b0b38299487e1267d440ba04350\"\n },\n {\n \"url\": \"resources/dia_et.txt\",\n \"revision\": \"bed7cfc8f949531f762ad86a225c15a2\"\n },\n {\n \"url\": \"resources/dia_eu.txt\",\n \"revision\": \"5186a4cce8e53bb454e4d539d1792b4d\"\n },\n {\n \"url\": \"resources/dia_fa.txt\",\n \"revision\": \"21e0279f46bcdd79063c06fcfc7b1120\"\n },\n {\n \"url\": \"resources/dia_fi.txt\",\n \"revision\": \"649cea556e9168919b0492f8565bac8b\"\n },\n {\n \"url\": \"resources/dia_fil.txt\",\n \"revision\": \"a717e0751e11dbb6502acfcc51c1a704\"\n },\n {\n \"url\": \"resources/dia_fr.txt\",\n \"revision\": \"4e6530553659158b0f55cc43ec46cc7e\"\n },\n {\n \"url\": \"resources/dia_gl.txt\",\n \"revision\": \"4fe5a563571d23001fb0dcd28dadcb32\"\n },\n {\n \"url\": \"resources/dia_gu.txt\",\n \"revision\": \"5eef301316f5945a700c13d1d96570ed\"\n },\n {\n \"url\": \"resources/dia_he.txt\",\n \"revision\": \"d13e2c3ec4f6f34948f874eda3d63a55\"\n },\n {\n \"url\": \"resources/dia_hi.txt\",\n \"revision\": \"65a2374e09cee44447e9462f3acb7f6a\"\n },\n {\n \"url\": \"resources/dia_hr.txt\",\n \"revision\": \"21626f14592c1b84ee28b058fcb74194\"\n },\n {\n \"url\": \"resources/dia_hu.txt\",\n \"revision\": \"1698e21cde2ed5f5b599429e5e68a8c4\"\n },\n {\n \"url\": \"resources/dia_id.txt\",\n \"revision\": \"a3af078b5bc5cd36df5368fb2604ed02\"\n },\n {\n \"url\": \"resources/dia_it.txt\",\n \"revision\": \"f3b29c577b79c37687f37c1b0748b9d1\"\n },\n {\n \"url\": \"resources/dia_ja.txt\",\n \"revision\": \"990f1ad82383245f1f9e37678a1c9bab\"\n },\n {\n \"url\": \"resources/dia_kn.txt\",\n \"revision\": \"836030c27dc0bb91a25ebcc722f2df41\"\n },\n {\n \"url\": \"resources/dia_ko.txt\",\n \"revision\": \"4a5032d2cad4be2a1815f7e29238664a\"\n },\n {\n \"url\": \"resources/dia_lt.txt\",\n \"revision\": \"d0a2bbb32c3d7d860c8c0385075407ee\"\n },\n {\n \"url\": \"resources/dia_lv.txt\",\n \"revision\": \"8cdfac8996f69486b99302eb0c01757a\"\n },\n {\n \"url\": \"resources/dia_ml.txt\",\n \"revision\": \"53f0f853779db48abc46023e507cb698\"\n },\n {\n \"url\": \"resources/dia_mr.txt\",\n \"revision\": \"4f3bffbf25b0d07a0946e77a288f40b9\"\n },\n {\n \"url\": \"resources/dia_ms.txt\",\n \"revision\": \"55d9c222689543ab6a091636d12dc92f\"\n },\n {\n \"url\": \"resources/dia_my.txt\",\n \"revision\": \"6ac22c2dd7bf24f2ce4db6ea5cd82470\"\n },\n {\n \"url\": \"resources/dia_nl.txt\",\n \"revision\": \"da45f841b898121c268b02e5cf0c0f5e\"\n },\n {\n \"url\": \"resources/dia_no.txt\",\n \"revision\": \"afa660c88bef1253c9827f857e3c2a99\"\n },\n {\n \"url\": \"resources/dia_pl.txt\",\n \"revision\": \"934cb78df740c1377b724cc68b28b436\"\n },\n {\n \"url\": \"resources/dia_pt-br.txt\",\n \"revision\": \"128c5640c8ea34d4e5296bbb2ef35db3\"\n },\n {\n \"url\": \"resources/dia_pt.txt\",\n \"revision\": \"1d30c678b01d010a0c8a5cf415fa68a0\"\n },\n {\n \"url\": \"resources/dia_ro.txt\",\n \"revision\": \"a90bf597059e90eff0d955d12058df23\"\n },\n {\n \"url\": \"resources/dia_ru.txt\",\n \"revision\": \"b225c1bd151294617e8d600181d9e44e\"\n },\n {\n \"url\": \"resources/dia_si.txt\",\n \"revision\": \"6ac22c2dd7bf24f2ce4db6ea5cd82470\"\n },\n {\n \"url\": \"resources/dia_sk.txt\",\n \"revision\": \"be785304786ae06fe6cdae4c029e5f28\"\n },\n {\n \"url\": \"resources/dia_sl.txt\",\n \"revision\": \"c3748f17f0775bdd539ed69a49acd1e1\"\n },\n {\n \"url\": \"resources/dia_sr.txt\",\n \"revision\": \"611506593ed67893a50c3a9000a12c79\"\n },\n {\n \"url\": \"resources/dia_sv.txt\",\n \"revision\": \"54157da886c9c17d4eb1fe9e3d195368\"\n },\n {\n \"url\": \"resources/dia_sw.txt\",\n \"revision\": \"0cd0148f07578cbac9dc4e2222277266\"\n },\n {\n \"url\": \"resources/dia_ta.txt\",\n \"revision\": \"79cb0ed533e753ae646f055fb75d25fc\"\n },\n {\n \"url\": \"resources/dia_te.txt\",\n \"revision\": \"305740ddcfe539071f9f65d844c13068\"\n },\n {\n \"url\": \"resources/dia_th.txt\",\n \"revision\": \"ffc4698dc2f34eb02bf02f3ac26c5c7e\"\n },\n {\n \"url\": \"resources/dia_tr.txt\",\n \"revision\": \"1092cea9e131780ae817c5c5915be3b6\"\n },\n {\n \"url\": \"resources/dia_uk.txt\",\n \"revision\": \"e1ab64d71b13935ef5ef05c09a8f95d9\"\n },\n {\n \"url\": \"resources/dia_vi.txt\",\n \"revision\": \"a9ead4c2e8460af1b127b7405dba35a3\"\n },\n {\n \"url\": \"resources/dia_zh-tw.txt\",\n \"revision\": \"28d610fd1f35a68bcc8a555fea09dc12\"\n },\n {\n \"url\": \"resources/dia_zh.txt\",\n \"revision\": \"f49748b5eb13dee86003c5f57aa628ff\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"fab2d88b37c72d83607527573de45281\"\n },\n {\n \"url\": \"images/manifest.json\",\n \"revision\": \"c6236bde53ed79aaaec60a1aca8ee2ef\"\n },\n {\n \"url\": \"images/logo.png\",\n \"revision\": \"89630b64b911ebe0daa3dfe442087cfa\"\n },\n {\n \"url\": \"images/drawlogo.svg\",\n \"revision\": \"4bf4d14ebcf072d8bd4c5a1c89e88fc6\"\n },\n {\n \"url\": \"images/drawlogo48.png\",\n \"revision\": \"8b13428373aca67b895364d025f42417\"\n },\n {\n \"url\": \"images/drawlogo-gray.svg\",\n \"revision\": \"0aabacbc0873816e1e09e4736ae44c7d\"\n },\n {\n \"url\": \"images/drawlogo-text-bottom.svg\",\n \"revision\": \"f6c438823ab31f290940bd4feb8dd9c2\"\n },\n {\n \"url\": \"images/default-user.jpg\",\n \"revision\": \"2c399696a87c8921f12d2f9e1990cc6e\"\n },\n {\n \"url\": \"images/logo-flat-small.png\",\n \"revision\": \"4b178e59ff499d6dd1894fc498b59877\"\n },\n {\n \"url\": \"images/apple-touch-icon.png\",\n \"revision\": \"73da7989a23ce9a4be565ec65658a239\"\n },\n {\n \"url\": \"images/favicon-16x16.png\",\n \"revision\": \"1a79d5461a5d2bf21f6652e0ac20d6e5\"\n },\n {\n \"url\": \"images/favicon-32x32.png\",\n \"revision\": \"e3b92da2febe70bad5372f6f3474b034\"\n },\n {\n \"url\": \"images/android-chrome-196x196.png\",\n \"revision\": \"f8c045b2d7b1c719fda64edab04c415c\"\n },\n {\n \"url\": \"images/android-chrome-512x512.png\",\n \"revision\": \"959b5fac2453963ff6d60fb85e4b73fd\"\n },\n {\n \"url\": \"images/delete.png\",\n \"revision\": \"5f2350f2fd20f1a229637aed32ed8f29\"\n },\n {\n \"url\": \"images/droptarget.png\",\n \"revision\": \"bbf7f563fb6784de1ce96f329519b043\"\n },\n {\n \"url\": \"images/help.png\",\n \"revision\": \"9266c6c3915bd33c243d80037d37bf61\"\n },\n {\n \"url\": \"images/download.png\",\n \"revision\": \"35418dd7bd48d87502c71b578cc6c37f\"\n },\n {\n \"url\": \"images/logo-flat.png\",\n \"revision\": \"038070ab43aee6e54a791211859fc67b\"\n },\n {\n \"url\": \"images/google-drive-logo.svg\",\n \"revision\": \"5d9f2f5bbc7dcc252730a0072bb23059\"\n },\n {\n \"url\": \"images/onedrive-logo.svg\",\n \"revision\": \"3645b344ec0634c1290dd58d7dc87b97\"\n },\n {\n \"url\": \"images/dropbox-logo.svg\",\n \"revision\": \"e6be408c77cf9c82d41ac64fa854280a\"\n },\n {\n \"url\": \"images/github-logo.svg\",\n \"revision\": \"a1a999b69a275eac0cb918360ac05ae1\"\n },\n {\n \"url\": \"images/gitlab-logo.svg\",\n \"revision\": \"0faea8c818899e58533e153c44b10517\"\n },\n {\n \"url\": \"images/trello-logo.svg\",\n \"revision\": \"006fd0d7d70d7e95dc691674cb12e044\"\n },\n {\n \"url\": \"images/osa_drive-harddisk.png\",\n \"revision\": \"b954e1ae772087c5b4c6ae797e1f9649\"\n },\n {\n \"url\": \"images/osa_database.png\",\n \"revision\": \"c350d9d9b95f37b6cfe798b40ede5fb0\"\n },\n {\n \"url\": \"images/google-drive-logo-white.svg\",\n \"revision\": \"f329d8b1be7778515a85b93fc35d9f26\"\n },\n {\n \"url\": \"images/dropbox-logo-white.svg\",\n \"revision\": \"4ea8299ac3bc31a16f199ee3aec223bf\"\n },\n {\n \"url\": \"images/onedrive-logo-white.svg\",\n \"revision\": \"b3602fa0fc947009cff3f33a581cff4d\"\n },\n {\n \"url\": \"images/github-logo-white.svg\",\n \"revision\": \"537b1127b3ca0f95b45782d1304fb77a\"\n },\n {\n \"url\": \"images/gitlab-logo-white.svg\",\n \"revision\": \"5fede9ac2f394c716b8c23e3fddc3910\"\n },\n {\n \"url\": \"images/trello-logo-white-orange.svg\",\n \"revision\": \"e2a0a52ba3766682f138138d10a75eb5\"\n },\n {\n \"url\": \"images/logo-confluence.png\",\n \"revision\": \"ed1e55d44ae5eba8f999aba2c93e8331\"\n },\n {\n \"url\": \"images/logo-jira.png\",\n \"revision\": \"f8d460555a0d1f87cfd901e940666629\"\n },\n {\n \"url\": \"images/clear.gif\",\n \"revision\": \"db13c778e4382e0b55258d0f811d5d70\"\n },\n {\n \"url\": \"images/spin.gif\",\n \"revision\": \"487cbb40b9ced439aa1ad914e816d773\"\n },\n {\n \"url\": \"images/checkmark.gif\",\n \"revision\": \"ba764ce62f2bf952df5bbc2bb4d381c5\"\n },\n {\n \"url\": \"images/hs.png\",\n \"revision\": \"fefa1a03d92ebad25c88dca94a0b63db\"\n },\n {\n \"url\": \"images/aui-wait.gif\",\n \"revision\": \"5a474bcbd8d2f2826f03d10ea44bf60e\"\n },\n {\n \"url\": \"mxgraph/css/common.css\",\n \"revision\": \"b5b7280ec98671bb6c3847a36bc7ea12\"\n },\n {\n \"url\": \"mxgraph/images/expanded.gif\",\n \"revision\": \"2b67c2c035af1e9a5cc814f0d22074cf\"\n },\n {\n \"url\": \"mxgraph/images/collapsed.gif\",\n \"revision\": \"73cc826da002a3d740ca4ce6ec5c1f4a\"\n },\n {\n \"url\": \"mxgraph/images/maximize.gif\",\n \"revision\": \"5cd13d6925493ab51e876694cc1c2ec2\"\n },\n {\n \"url\": \"mxgraph/images/minimize.gif\",\n \"revision\": \"8957741b9b0f86af9438775f2aadbb54\"\n },\n {\n \"url\": \"mxgraph/images/close.gif\",\n \"revision\": \"8b84669812ac7382984fca35de8da48b\"\n },\n {\n \"url\": \"mxgraph/images/resize.gif\",\n \"revision\": \"a6477612b3567a34033f9cac6184eed3\"\n },\n {\n \"url\": \"mxgraph/images/separator.gif\",\n \"revision\": \"7819742ff106c97da7a801c2372bbbe5\"\n },\n {\n \"url\": \"mxgraph/images/window.gif\",\n \"revision\": \"fd9a21dd4181f98052a202a0a01f18ab\"\n },\n {\n \"url\": \"mxgraph/images/window-title.gif\",\n \"revision\": \"3fb1d6c43246cdf991a11dfe826dfe99\"\n },\n {\n \"url\": \"mxgraph/images/button.gif\",\n \"revision\": \"00759bdc3ad218fa739f584369541809\"\n },\n {\n \"url\": \"mxgraph/images/point.gif\",\n \"revision\": \"83a43717b284902442620f61bc4e9fa6\"\n }\n], {\n \"ignoreURLParametersMatching\": [/.*/]\n});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting"],"mappings":"szBAmBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,oCAY2B,CAClC,KACS,yBACK,oCAEd,KACS,gCACK,oCAEd,KACS,8BACK,oCAEd,KACS,mCACK,oCAEd,KACS,4BACK,oCAEd,KACS,sBACK,oCAEd,KACS,qBACK,oCAEd,KACS,kCACK,oCAEd,KACS,4BACK,oCAEd,KACS,2BACK,oCAEd,KACS,sCACK,oCAEd,KACS,yCACK,oCAEd,KACS,mCACK,oCAEd,KACS,mCACK,oCAEd,KACS,0CACK,oCAEd,KACS,gDACK,oCAEd,KACS,oDACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kDACK,oCAEd,KACS,6CACK,oCAEd,KACS,kCACK,oCAEd,KACS,qCACK,oCAEd,KACS,kCACK,oCAEd,KACS,oDACK,oCAEd,KACS,qCACK,oCAEd,KACS,wCACK,oCAEd,KACS,yCACK,oCAEd,KACS,6CACK,oCAEd,KACS,wCACK,oCAEd,KACS,iDACK,oCAEd,KACS,qDACK,oCAEd,KACS,sDACK,oCAEd,KACS,kDACK,oCAEd,KACS,8CACK,oCAEd,KACS,2BACK,oCAEd,KACS,8CACK,oCAEd,KACS,qDACK,oCAEd,KACS,sDACK,oCAEd,KACS,+DACK,oCAEd,KACS,2EACK,oCAEd,KACS,wEACK,oCAEd,KACS,6BACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,iCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,mCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,mCACK,oCAEd,KACS,gCACK,oCAEd,KACS,uBACK,oCAEd,KACS,gCACK,oCAEd,KACS,2BACK,oCAEd,KACS,+BACK,oCAEd,KACS,iCACK,oCAEd,KACS,oCACK,oCAEd,KACS,2CACK,oCAEd,KACS,mCACK,oCAEd,KACS,sCACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,oCACK,oCAEd,KACS,6CACK,oCAEd,KACS,6CACK,oCAEd,KACS,6BACK,oCAEd,KACS,iCACK,oCAEd,KACS,2BACK,oCAEd,KACS,+BACK,oCAEd,KACS,gCACK,oCAEd,KACS,wCACK,oCAEd,KACS,oCACK,oCAEd,KACS,mCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kCACK,oCAEd,KACS,yCACK,oCAEd,KACS,mCACK,oCAEd,KACS,8CACK,oCAEd,KACS,yCACK,oCAEd,KACS,0CACK,oCAEd,KACS,wCACK,oCAEd,KACS,wCACK,oCAEd,KACS,+CACK,oCAEd,KACS,sCACK,oCAEd,KACS,gCACK,oCAEd,KACS,4BACK,oCAEd,KACS,2BACK,oCAEd,KACS,gCACK,oCAEd,KACS,yBACK,oCAEd,KACS,+BACK,oCAEd,KACS,kCACK,oCAEd,KACS,uCACK,oCAEd,KACS,wCACK,oCAEd,KACS,uCACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,qCACK,oCAEd,KACS,wCACK,oCAEd,KACS,qCACK,oCAEd,KACS,2CACK,oCAEd,KACS,qCACK,oCAEd,KACS,oCACK,qCAEb,6BAC8B,CAAC"} \ No newline at end of file
diff --git a/src/main/webapp/shortcuts.svg b/src/main/webapp/shortcuts.svg
index d2a343bd..5cb181f7 100644
--- a/src/main/webapp/shortcuts.svg
+++ b/src/main/webapp/shortcuts.svg
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than diagrams.net -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1428px" height="1133px" viewBox="-0.5 -0.5 1428 1133" content="&lt;mxfile modified=&quot;2021-09-30T08:44:42.828Z&quot; host=&quot;test.draw.io&quot; agent=&quot;5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36&quot; etag=&quot;LJVkCTrHS6Jjb6AVaj6A&quot; version=&quot;@DRAWIO-VERSION@&quot; type=&quot;device&quot;&gt;&lt;diagram name=&quot;Page-1&quot; id=&quot;150dc974-5404-6732-309c-fd6db42db779&quot;&gt;7Z1bd+K40oZ/Tdaauegs2/LxkmNCD4d0IEl3br5ljGOcAGYbEyC//pN8AiwRMrtRuTcoq2cSjLFN1eOy6pVUukK16fomtOfjTjByJ1eKNFpfofqVosjINPAvsmWTbLFkOdnghf4o2SRtN/T9Dzf9ZLZ16Y/cRbot2RQFwSTy5/sbnWA2c51ob5sdhsFqf7eXYDLa2zC3PXfvMsiGvmNPXGq3J38UjdOtuqZu37h1fW+cnVrWreSdoe28eWGwnKUnvFJQI/5J3p7a2cHSEy/G9ihY7WxCjStUC4MgSv6armvuhBh3327NA+/mFx66s+grH9Cfhlr38cNd1iOn/2Z2vm3q6BtS06t7tydLN/si8eVGm8xG+Mrn5E9/Ghuz+u6GkY9N2LaH7uQuWPiRH8zw+8MgioIp3mFC3qjm9qkFkyCMD4Ve4p+dY1Qmvkc+GwVzvNVezBMnv/hrF193NT5lJdsqZVvw3yM7sq9QJXmpNBfv3pVSXU/xN67d3XaV501VHT6tl86H5Nu395JTD97baIRGGw11Ntq7M3XeO6+VVadmfYymjt+6HUfDG+2jNxsv7CctvOt/D0a396ueb77jT6H2zPloT63N88Zc9wZvWhsl+7X8KrKf7iW7LvmdwfPKrbU8++Zx/qyMpbt+a92dVVW8j2I/PaIfU0vF21atesXrvP4g/+HzPk+cWXc+VFSr9dpYdvot/D3ubqvj0Y3nOeh+M1SiCf7Ua+d14nenvzb4aFP7ab0obHvDV9ztDB6W3cGD1+2rcvdhte70K+vRa2fZqY/q3Y266voVqf36oLTqPzz8Wuvg1616Y+N8kH0eyDapW6ugVt1Z9gZdpT1o4e3fX8nvXv1H1H79obYHD1HHV7VuTZLx33i/5gd+ve76+PXrj49W/SHC59c6j7/WnZsVOR/e78eyW3/UB4OG1n59w/s01r820rIzcKJOX/3o9aVl96NFjou9I63br7827UEHn3OyaA8a+LMtD+8ndaYd/P3wsT7weese2Ya/C7Yaed/H1654m/ZrZeO+SevOprIm33H0mnyH7Dz4nGRfhK8fH6fhdfA+8Tlem+m5fpBrkro3Hfx9HfydHqR4++ANn/Mtis/jV/A1Vj7cqfTRfvU0Yp9u/fsivsb4vR/4+yXH7Qx+xdfe7Uv42h7ia+74yefsmhRfb2KLH/j4Tmxj8p1ie/TVFT7ehmxz/db73evq3UHPszuP3E7kX5UOA2lkIHeYu97ZlIaFGzeYulG4wbuk76qGdK0Z1vYnOcAmi9SmlmxYbQOkol6bKNk63omOO5vtNDB7+em2sQn/kYYndqhCx2NSHFhIiIiDwmrsR25/bjvk3RV+UuFt4wgHA1SX8Z8v/mSyE4Sa8Q/evojC4M3N3pkFMxLdXoJZtLNz8nMaQ8uStGdaVUWUZfOIvGtXJP2+UdVLMapB48rNqNqFGFVD5rVlUSHiqInl3zexfikmlgw4bo1LMaqhwBnVvBCj6pIKZ1TrUoyqm3AxVf5C1nceVkU6HKqZ9HH2VjUkGdCqyqVYFQFmA/Kl5FiGDpgOyJeSZBnWVxurp3haXUqWZWYMgrB6KYmVqQPmAPKlZFamBZgEyJeSWlmKVpbOIl9KpiXLCmCYVS4l1ZIl86sZ7CnMeim5lixpgClsZsULMKvy1WzrBLH1Ynq0LAtQGbiYLi1L+2o74BRWPddsS9VL7H09226solVL7Ck8214tysaQvVpn261VtCpot9bZ9mtRVoXs10LnmmxRVoXs10LnmmtRcRVyCAY611SLamdBDshC55ppFa0K2geLzjXToqwK2QeLLiXTAu2DRZeSaYH2waJLya1A+2DRpeRWoH2w6FJyK9A+2K/MFDsLq1rKV3OrE8RV9VJyK1ANW72U3Er+ci/WKax6KbmVrAG2V9VLya1kE1BdUS8lt8rH7YBY9VJyK0WT9nuxvtrQOkWT4FJSLSQDitjqpaRaigmZFFxKqoVUwMFt2rmmWtQoLMjmq3auqRZlVcjmq3auqRZlVcjmq3auqVbRqqDNV+1cUy3KqiU2X7VzzbwoI0M2tLRzzbyKVgVNCrRzTbUoq4I2X8811TKVMpuv55pqUVaFbL7q55pqUVaFbL7q55pqFa0K2nzN+tDP36rF5usXbXyC1qt+rokXZWPI1qt+rolX0aqgrVf9XDMtyqqQrVf9bDMt2SzTrGebalFmBY0B55prUWaFfWCda7JFm1WTr6Wdn6/OKjhBW8s419yLNjJkmmCca/JFmRU0p83m3F6AWSEFGONcEy7arJBqoXEpGRerioMh8bLqpWRcrDmb/Kx6rhlX0aqs+cX8rHquCRdlVWTttWCVL9r4FC3Yc82+KBszKo7wI/dck6+iVXXdLCv3Ms819yraGHSevHmuqRdlVcgZ3ea5Zl6UVSGrD5jnmnhRVrWMvSgLWPfRvJQsDHTWvHkpWRjorHnzUrIw0Fnz5qVkYSVWLjcvJQsDnUNvXkoWBlsK2rqUxAu0FLR1KYkXbDl461IyL9jFC6xLSb1gl9qwzjXboroSSxQOrXNNvigjgyqH1rlmX7RZIUUu61zTL9qskIqsda4ZF23WgngIGWnPNQGjjGxBVt7Pp0ZegF2/XCX+BLjK0rnmYLRddUAdRs4GNJy/XeWvx9eTGJZOw/7qj/2X6Eqp/t2YRW5I2Rl/M3wFVXviezO8ZeK+kJfkK/uOPamkm6OAWHyBHeDPvHa8T13dbrlPvwfZFODPvkyCFX459kcjF3+8GgaRHdnD+JzEnfPAn0XxF9Wq+B/+6jXpWrvS8AXV8Gt5+xr/I7uH2GMz7E3bj33j2oto5S6iT7xJtvfTrymfxLXqvmc1/VhBCpwq7j1pM+/suj2rzPp7bqfTxNTZEjmIIg3s4SHHs2+Rnfsp3SQA+beAmPuDuGR6pBwcIHSKuw9Ikw7Agg++fCjK0Yo2cHzQuXotCvEu1QSTmnJVSUnJHickpOxsJgClfzYWjoAJGiYNXdPZcr4ex15DQ832/D1kaB0iRaaak9ASHEBzYO73WZu0MgUXVGhJJSXkQXABzAWSjT/nYUOrQCkX13nkIJYVjAAzkhVpLQMKmZawZBAC/iTn+h+xb6UthgNyjfVv6mnkibyr69NWg8xQJ+ST+JiW07ruCm9o+9hfeMcZaUgG4dSOIndEtttDd7IQgeCTQCCdAovsI7m0QaeqCmtqzGnufFoMTHmohq79hj8fqxfN1mxEvmKMSZx4CDrKocOkpWKF33OBVjT7kR0SDhojP8IuyOIE/h28kATVnbhOEj+Sgwk+QPnIX8NED1r67BOf7OAh/M/V/0j+UqMikz9PTwCtbQ4Cz5vET5BgMiKPjgh70SEBYrYfIAaEBQEIcIAoahSQ4YIWOnNYHnADI5wkTQ8Byh8ACpJB0aAFzf5y7oYLJ/Tn2PnN/nKY/S34+CP4YAgWeV2q0/NBy5nbvnXRwcpfr1KNQgerou1rU/TQIKugXsm82KAlzcok6yUTXABzwZAvZG6PDYUWLrOoUA9tkX6Ae58hT0CFgfzqi2FAkFACCSwhgmMcoGXMtFdr20qoCAagGWCKEWDxgBYvUyYyJFpX+agZwQY0GybdYOQYH2ihMmGhMK4qSSoFDMAwsLSGXC06PQy0Zpk0FGoT33kTzod2PmvkA6sb/DTOpzXI7KaXurGOlIaEu9B994Ol6OLkLSxphXER+f25y4PGGEt5Gh4YwmPGw13ytQQAwABoxjFpiSMPtNCY91FEQa47+0SDFlzAclGY0wHLBS0y5nHCJ8P0F4KKUqigZnIAQoEY8mMGRWWyTS+6xLcCDGAwNHStHhl1za2Zmc2AZpHxGLvOXWzVh5HninYmOB8sBULllXQiWqHM2xU7TQqpj+0sYgU0C1+ZoaFye4owRllmsSLdt+oSHwgqgKlgKROIW4SgNcpEluoEywUJE6ux64oRtdzlqWxlyXxBIPVY+1LnhgStVKZdGIKJMpnQJAYFiFtbkpYshftLdb8q72UWjM4LfjAw9Mq080pAUSoUhnpk2SiOUNCiZVKuKcswE38o0jRFRAyJKYEQXTo29F7WuRFyaIxkYUiEAKMMMJBxrInJLXSotIQpOsNLRMGQmJPCeQ2SUhk6ZRoKbvHhhP+B/W8wlpPiePPTomRjNhJOh3Y6Ytzy/JxOy4375ejEjV8GA/qxwtAciTg0OjJvFt4KHqB5sKxrrSweDsqO3wUHwByYWcchjOcPlqLMIoEgAJwAvTxhST1UZxKfkFSa/Ku7nM7t0d8CCmAoLMUsTYJWD5WWlL4JJEpEQgdtIxysIykJz0M/Iaxja6Xy40Cj9cOaPXu3yei25yCY4l+tGT5KbykG0vMev6Kj4tAFhq6g8BrGpDGkRCd03RmLBOmvju2IZwQ0EcyBC5rCiwhaXsxjw2PqK/wnpiQQpQLhWVBlVleDxu1JwZiPndFwG4T+B/6+gocSeTAYg1750UBrjnc2eVRkTAjvg3pfZ82m4tdqZCiMoRuPfM9GrLhTbHkSDZKBLAIHWBwQQ1HgFwxo2bHlzYKQ+N8L8W4ZFYuxPRcwgMPAHpTADwdadRR9kiX4nTkYgZ/XaVnx3n0J3cVYOB7a8awBCfwcT0uJ9+7CjadK+q6Y9gTu/eNDEbixoNNyYtMnJDz5s5GYAgfPAhmGAOl/WkRM/H9ne6IBAO195uADfr6n5cLE94NVkBIgdAFwBHRIVUhnaITLRRR3HiR9CML9sO4/3rXIDwZaItzpRxIggILwhQEn/ECg1cIUBNGrXAIJrHEm/HzPGJGYzExKyrE5wWyWlMqwycwFyZnEtZakv5xkNIqz3Tlety59H58YHxglqz2mQxsdxnH/JquiJpPitofITpkfITvZKN8xvRDy8QKeYbCcjVzy9WSaPja0O6tTKp85nob7BO5Xs1s9q8ImMeozKtmYsF3/Z9t+z/+0KkSZNFGFUd2fkiQBG3UxJ/5B9Rd/TSxdTd+oj/C9eIUqyUulOScLlNX8x2rvfiX9c+MFFfzT7T+MGw8e+dMk/3uueB38qzboausXsqH2WO08Nn7GgnTxH/lErWd17hZkz8rP+/5g0qn86A1/PZMjNu+/3zeaD25Te9y8Nv7x6pUf992bu/t+BZmVqv698bR4ePO8yBq3b+rD0WSsDebGvVa/+6hWGv+oeq+lPDg/xqPw5vkf7NvmrCKjqvVDG/9n1fBfMYD226OPt2+a9c735mvbfJw8jFbYv1Xvdj18wr9/LbxJfGnV7/cPWiN8++55HrEi+XeQrFNgZGj4+bF9gmRrY2dU5eX796IKI6icYvl0nTF4bffmj6M2iSKWRG55EqbJ/ey8rfyFux8Rsp3pG/20z6EpfqKQIzOfMl+NEFzCAaOMlpJNN97znHQCzxmM4WYk9qLKFaniTRQiqe7bk8CLY7xE5rLG7/VC3yNL3Nausmrf8ea8m+lnp32pHswr5e96UGME9NN4kFZ4ClMMeDvif7tJd4oBpGZWayovuaweLX/GrTa/Qcs+BSB6AghoILSjXQD8eDi4bkdHcADNAWM9JxNo/Rbj6KzUO8EDMA9fKLbMLy4cnJWaF8ASPEDz8IUay/yAoKWh2AWOqFxTBgpHF5Y2uYFAjxdrygIAYACQJh2Zp8wPgE8W7WjbGzckcwzECBKQ7gJLLSh7rOV8DG4k0MpeTkJvGaULzAsUykGhkFUydCd+ZJi0ctgYxcNLOm5kxz0DggdgHkzzqOzEjwdah8wjRTMIp3Yy6mwmSumCc6Gw+oL4gUDrj2lgeEy+gSLd7B5XkABIAllB+MiSX/zAYAiR+Psmi0R23NlS4ACNw9Eck18FZZOxPMcwEOOPwCFgrcpiIV5eP7RW8HZd+XQswEsYj0hb+CN3aIeCik+o4KE+qKp2RH1QuM1mNmkhch+SdPYqkav/3pbWluIFv+xdaCQ/csUgZ3B2DP1Ir4aicmPn8HoeApM/CxNN2l9/llFdiWOMYRTdE3z8WXyQgjo7fDBGVfHD48D6HumTJw8p2dBlgQYsGoXFgSDRsGjhs+4vYvsqUujOJ3F9FTIucjuWPg4poxD7UZH+Sn9Hdui50eLv3TGU+DTxAErSv+Isw9hiGViCMb55kSxZVBOYwkqVea1NaNH6aWu2wFdPWEjnYiQ8kQ3RmNC2iJc1dUf5E0r66yhHokggPEhZhzoMSLT+ep9Epc/AWfn4yrK34xEf8btiofUSeCk2jBm5NzeR1mKKtFnYWc7SGBTDQdrHhJGXfaLckSgtUAI0hUU0GckUP2hoLTefCJKWGEsbzkE2ZkDgAYwHoxolkrg9gw6PLRWu/8T1PHIlUm1O/VSNs7jFhaPLnwgcoHEwJHQkdeaHw6HVT6rPAgNoDND+FDU6Q+GHAS29Jt07WVCoCBqgadD10migldbbYELyiBgKAQIoCCZiFbFnOt/4fecrEq2lFhoINwIBaAQK66PRYwd5xQIlOxeNg5iaCI6BpZfUTlQywYvG4JfAABgDUqfs83VT+WFwcOJ69nAQaQM4DoxiZfwAODpj/acAABoACx3pm+CHw0FR8R+BATAGpGrdkfqV/Dg4qioKHuB50CAJoIXExsIRTgd3umkdmT/CD4FDImI6fSDpbqzHQ60EFrBYyArdKpB59TUqEi0g9u14qTOx7B3/yURU75JyrKARr6H/GLEDIAgGQBmIlzf7VDLgyACtID7MRoFgADoOIO1YwUN+DDDkw2TUmh+Pw66EYbASjwZwJI4vg8UPCVpKbOUDpMf2bDRxk+GNIze8ykbBToPlQjw9oDEx0bGSiLkwvIfJCYrjYwApTPIaJsm6qQIGWBgKfZGM0lf8YgYtN96FxDICAmAICj2RjOSSHwSMmpguaU9KfyVFzxZiPg00D3GXJCQDtNqYMdD2Z8s1PkDHdgQH4BywFk7iRwEtOCbz8/C2QVzDSLgf1v0Wo9whP/fTKmPu/nucWtozT8zRBWcg7obUSmobKLTemCPRmEz8+WI77ylPI/pkOhTJNUUpxHKAYfRT5nnf6RFhDGi0Zw5xvFRJ9ShBADABWZ8kTJCgxchmEJIKEdL9cjh0w2Eytz8JE/msyZswWIqeS3A2WD2XCq+Z+opCq5JJ77Vw+0G3n6LDWpYLk2MtVh1UGWZdHkVhiI42KRCTBIZxPBlGEAFMBGJqDGBMMLRHf+aMBQjgIBgMkQEMA1p9TELDTrUNJ/6MwAIWC5k1IQaOC1qR7ATxkKd0z6Q1iVNMssmevYuRUPwrbiDpC40KfnnGJ0v29ONokQx+SMjYTT0EF8BcILpLO6+UcXouaN3yOQhEMVN4t7MaEgqvcIBobVKstVAuAOwmAz8CGNLjMlzg7y08D91YZC3ZpgC1FREtQObViwUP5fCg6UfX6QLD4+Aka0FHSXQUV3ErEY6jE7AFJOVAgjcdG0wNBsmhJX0EIyUzUljsrUxGDq3oI9goiQ2TIU6B0XCwDmQWMu7IFN4H0QEOzgWSzX0GmJjw4oKxJg+Di3qwEsNm4MlQraNJCzd1G9EqZt8Jg52+jrT/I+kNk/6aR2I8Nn+Fqzh8hqVzqBYnJlRa4ixAQKZsYQwk0sDAX1WsSlACEhpdSlY2TF5I0JrnvbvwP6jIkCCR9KILNspiw2RIG9kCsadng9ZBKTaSOZ4S2SoeH+A85MfYixW8OkZVhvA5iZc72l9tS3AAzgHRLSAbErTKmTcu78SToQwCWOoEP/+zJnq7736wXAgCSiIAyfQ0HZnXkp6KSsuT3WSohPB+Kd7XIKfoqEflyHuBwCcIcJGbdIOBgMQNgYPKY0O4Htr1BmucFD/X09Ji4e6vCwTAESisTsVoDHADQqN1xeKgBwEEOBCFBapAgWCMpNwH4lEAAQ6EZe0NbmAIBvyAoKXE2sS1iaRcd1/sJRnZICXfXnDBO3WQvtBu5NZjrdEiYmPkC/eX5n5m25Gf+xnKoRslRxWxoHwYEHPcPS8YGMvTBPONcH9p7tcZfc/83E9riHfYCK7wf2n+J01ESAIYOuLDfb93f5VPyK7cNPCvfxq/xLrnn2cM6WvSPY9fkss8SRJhoD1CWAMQDFZx6ZPgwZih3eu1BQklkGDKaokgMAYzNtqN2qDV6woY4GFQszuzDBh0Wm1sV6oNERbKIMEqMSroDJWx0n2sCBDKAGG/naDKDFGJHwm0vPjYajwJDsp4NKhlgkCri/1WvVGtbDOKWq/bxS0HwUb5bUhgNhjS4+BXuyEeF+UkloVeiGxAEwwLtPJY79UeOo2uCAx/QGAAhoFWof5xN8PADkdEihxjmznLiHc9wCl2MTny/ywb0j4binEaNhRT2mNDZpWZxQTRcGhytudv4WHQjctaNtFBisiiNjb+r+mv4+Kid4FY8Iq/cq0UWpnsBZQ1Xrq1QTcz0+IMYgbMl54hAbnSiDjPkE7VoKCIkI+Nf+I2Ptqgm5pZiaiJ77wJPD7F4wTtCWpuhHGEBZMbCqw+blFWEvBZYanoX8Ig66eh4WHhhr3ha9JSmNhDd5J8tDd3SWFhn/xv5NteaE8X1zM3ur6+Ts4x8Wdvya7jKJrjE1Zi7aJpz+fXux+It6KHZCdFI7tpZJPG2hVvXGRt2evFu7c91cAOPTf9mv83nNizNEJtIdZ3LJwSvkNsGJBlgEcpIgUg2Rzv5BAKzUJTMg1JK7Cgsvk/xbNDkdTrLAvYPj8YWjZSrhEjDZH//VK6+OUOHoeCx9F5Np1kxWVpNXbF2ljcnytqARLVYIyX4dfqZEy5SSvVS0mFaqmFQ0qztxQNUN4PFR19gQSFl2JhMGbgJJlHUrL+LjGogIBzywIxhk99XgmMW8ph0r3i+zUl7wQOnJ8OxayD4KB+2tC0uNFAd43nC22muUdcz8ceEc0qXvTEHZF522kzVaDCWb/KPvJJHTCF22wck1Y068GSGFSRnM8EirP262kmXRXruxVmZX6hNDWvRoNJi5YKyI3+J/k6zTmlLZUDco31byoXVVJR0LViaKauSLpp6Vph3JzBnJVJ+18+if8PipJ5Va+X+KGAffstdJ1luPDj4oBesrKqFKa74YtBsQXTj3fcyKaP4mCruaE7uqopVxXqGAXstgqCfBoFYet1GtqDPW+nCABKNq9yu3guI7RrrJpt1imcTMuNB2/y2BcH70Fym9nLKFikRv6X4X/ntvrqDXmS+GuZ12jnp+ALk87SWJMbsnvw91xBT2+RRbzdBeMUDi+MO2RWz+QWUQ/Jc+lQsyz1apBIGIu4Utdd4f+3/dl2ofvKfD4h3yiWg/v2ix36VIwtHnDhJIfLl0Ync2ixcS8qsGp0fs0xsNLi28G7+QIDq0o3ZPgF1oP1Z36CxNf/3QQHouNdVbVj66xwE8EsWgTL+t0FGeWTwdLI+bFwsAaNqD1TPguaZJY2Osei5a+UjBtBRvlkqPmwTRgaDi7nl7W2HwQV5VNhMEaE82PioFTW3qZte71rbcFI6YzooB2uFmNgX1oANU73M07qgozyyUDGsQVCVaBeGItWBau280a8RSShWDqvuxM3EuVv/gBuDGmvB79Mbr6oNQp2/hB2mHX1wGg5WJ37XqBRPhqFWs1lhhVGZZ2shD+7q1bgAo6LbpSlqCLpkKKaLSK53/cvWCmbFXYFP358HFRZb/HRBBClA2Ei+fizhhccB4XWBlkvTrBRNhs6Ko+No7KrCCB/BiQWoKqWF6Q9jIUIHX8CFZZiHldGeDFyUHnNGGnm7dOqYKV8VnSprL5eJNFya8pKU5BRPhkWUyPjxQItoe534tXysCGqgJUPhywpGmwue1A0zQD5JbD4A7DQQB8ghwabFvtdQpsefS3ogKfD2lfOFUBWZIZYKmoxgBeDU1XGU4NXVQ4kMxTQeBEj4XVYrxtH17vkxwAtdKYrGQkIQCH4wrBifhDQiuZNMutVQAALAXsEMT/H05rlw8wTri/D9axhwvwcTwuR7YBUz2g+zCbxH2mSkK5w2vZnovYnNBK6pB9LCPgBQquP9eV8gh0m2gbwICDQ1gAtNmZDM6U+/sOJ4nLh5GOiUBs4CoYE20KglcXr6+uVj8+MEcgr9y3yB0abVOESXEBzwRyzm1V5OD0VtLQ4WIazHIJ7YmASLyyJFNEhFpVqpF2x8hfi8QHOBmtp7GxhypOzkRVP2GGjQ2xhx1VC7sKAmCgJGYIDWA5Ya2Rze3IotLpYDeNCL8nSI80wIMuNZJ0RLhkck7xDZhUJOIDhsLI1KfceIDIvOGjZEX/piT2PS4KTZQawZchUREEBKAUmgkwyFVp3bKzndhwJBAOlMaBDKlEKLUE21rHmJCToUrzPGjTLz/u0DpnNQRfuL6UZoLAWqeMIAK0zNn3yAGjeu/NJPLNcEABLAGtkIz//MyaHZ+V3s9wgjQSSmKpXTtrInpjHDwnGYMaJa5NnwpO9SQ1a6J8aBMEk8sXjApoNWVIYzQVD54UGrTtWsnqkwvXQrmeNZuUWFRBjhOIkiIsRO/Guzbq/cPLVbZM1QQQSwEhkZUz3kOAVDRCtMDpT0mzwsVlcm/wVvBA+4lHPZIpEME+XmSrsYZPJFGn1/6nt9PpJ6X8BUAKQEf9QAKG9cs3m1UmGRefjYPI1L68ZK8yo/KCilUkKg/1VI1djP3L7cRUsVF+FNnHqOJqSFTPlAhdkgcj45yBEB+7cExhWlgvLkZuIvlkRa4R5tt/v2ZXW+s7VrrpypOgJ28ryKaxMq2n7E8V+Xon5pXBLKllFdf3owt68Vs5CiFba9sl43OZUggxwMnR1b/1FRr7NjwzGRON4GojUT1ZFSquB2qRekgCDa4tazstIfNYhx1qf4jQo0GpcOhtEsFAGC/vrxsRBAo6G6UvlY/Ndi342UO+hZ85vGv3hNxYiFAmLsT0nf/pT23N3fBuPDbwLFn6chaH6MIiiYIp3iJfuJMM+vLgJuGPdl/jnIB/2Yh4vQl5/8dek4ViNT1nJtkrZFvz3iDCLKslLpRkvI19dT0lmeHfbVZ43VXX4tF46H5Jv395LTj14b6MRGm001Nlo787Uee+8VladmvUxmjp+63YcDW+0j95svLCftPCu/z0Y3d6ver75jj+F2jPnoz21Ns8bc90bvGltlOzX8qvIfrqX7Lrkd16fV26t5dk3j/NnZSzd9Vvr3m1Vxfsozz+/f9hP1pJsa7828Pme588/R7Uh8qzWa8Xr1Cqbrl9Z92otskTubXU8uvG8Z3zUYb+ybtV/eYNaZd2tVZRWY+V1Bj+8Tr/aadVbSqv+lr2HP022NST83ybeD3+241d1fAUfo9vv77byYLX87vR5+stv3TzPhzcr/Lqz6T21lOfXlt/+UM02wtb7UIm/TtKgVnULt5K2JVrM4oo9iG5RK4x08L9Y2p66B/SnodZ9/HCX9cjpv5mdb5s6+oZUWni4UvRJFhz2bgb9P8sge+NbsnASWf4K22i9fRP/5ZHfI9/2Qnu6uC4czslviO0n0ItkGqQwxHbTf3vamRtlJ8QGSc6ZvHNwc+GOH9mLcZ64Bcto4s/cdHRwunEncytE/kkhKoSJCw9GjXxtrmJIyN/I4s90ja05H1+v3OEk8ILF9Si0V36A6OxRrmjVSh7EU0VDo4P9/n4788PpB9UpngDSfmapWNcG/QBAjIXDsm3/gn38MgwIFvl7N8R4nWDkkj3+Hw==&lt;/diagram&gt;&lt;/mxfile&gt;"><defs><clipPath id="mx-clip-25-144-112-26-0"><rect x="25" y="144" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-176-112-26-0"><rect x="25" y="176" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-208-112-26-0"><rect x="25" y="208" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-241-227-35-0"><rect x="25" y="241" width="227" height="35"/></clipPath><clipPath id="mx-clip-25-273-112-26-0"><rect x="25" y="273" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-305-112-26-0"><rect x="25" y="305" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-337-112-26-0"><rect x="25" y="337" width="112" height="26"/></clipPath><clipPath id="mx-clip-202-237-10-20-0"><rect x="202" y="237" width="10" height="20"/></clipPath><clipPath id="mx-clip-132-144-192-26-0"><rect x="132" y="144" width="192" height="26"/></clipPath><clipPath id="mx-clip-132-176-195-26-0"><rect x="132" y="176" width="195" height="26"/></clipPath><clipPath id="mx-clip-132-208-192-26-0"><rect x="132" y="208" width="192" height="26"/></clipPath><clipPath id="mx-clip-226-241-109-26-0"><rect x="226" y="241" width="109" height="26"/></clipPath><clipPath id="mx-clip-132-273-192-26-0"><rect x="132" y="273" width="192" height="26"/></clipPath><clipPath id="mx-clip-132-305-192-26-0"><rect x="132" y="305" width="192" height="26"/></clipPath><clipPath id="mx-clip-132-337-211-26-0"><rect x="132" y="337" width="211" height="26"/></clipPath><clipPath id="mx-clip-385-112-82-26-0"><rect x="385" y="112" width="82" height="26"/></clipPath><clipPath id="mx-clip-385-144-92-26-0"><rect x="385" y="144" width="92" height="26"/></clipPath><clipPath id="mx-clip-385-176-82-26-0"><rect x="385" y="176" width="82" height="26"/></clipPath><clipPath id="mx-clip-385-208-92-26-0"><rect x="385" y="208" width="92" height="26"/></clipPath><clipPath id="mx-clip-385-241-82-26-0"><rect x="385" y="241" width="82" height="26"/></clipPath><clipPath id="mx-clip-385-273-92-26-0"><rect x="385" y="273" width="92" height="26"/></clipPath><clipPath id="mx-clip-385-305-108-26-0"><rect x="385" y="305" width="108" height="26"/></clipPath><clipPath id="mx-clip-385-337-102-26-0"><rect x="385" y="337" width="102" height="26"/></clipPath><clipPath id="mx-clip-506-112-147-26-0"><rect x="506" y="112" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-144-147-26-0"><rect x="506" y="144" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-176-147-26-0"><rect x="506" y="176" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-208-147-26-0"><rect x="506" y="208" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-240-102-26-0"><rect x="506" y="240" width="102" height="26"/></clipPath><clipPath id="mx-clip-506-273-138-26-0"><rect x="506" y="273" width="138" height="26"/></clipPath><clipPath id="mx-clip-506-305-137-26-0"><rect x="506" y="305" width="137" height="26"/></clipPath><clipPath id="mx-clip-506-337-128-26-0"><rect x="506" y="337" width="128" height="26"/></clipPath><clipPath id="mx-clip-378-432-158-26-0"><rect x="378" y="432" width="158" height="26"/></clipPath><clipPath id="mx-clip-378-496-122-26-0"><rect x="378" y="496" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-528-122-26-0"><rect x="378" y="528" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-561-122-26-0"><rect x="378" y="561" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-593-152-26-0"><rect x="378" y="593" width="152" height="26"/></clipPath><clipPath id="mx-clip-378-625-122-26-0"><rect x="378" y="625" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-658-93-26-0"><rect x="378" y="658" width="93" height="26"/></clipPath><clipPath id="mx-clip-378-690-122-26-0"><rect x="378" y="690" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-722-122-26-0"><rect x="378" y="722" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-754-122-26-0"><rect x="378" y="754" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-787-122-26-0"><rect x="378" y="787" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-819-122-26-0"><rect x="378" y="819" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-851-122-26-0"><rect x="378" y="851" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-915-122-26-0"><rect x="378" y="915" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-948-122-26-0"><rect x="378" y="948" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-883-122-26-0"><rect x="378" y="883" width="122" height="26"/></clipPath><clipPath id="mx-clip-548-432-117-26-0"><rect x="548" y="432" width="117" height="26"/></clipPath><clipPath id="mx-clip-548-496-144-26-0"><rect x="548" y="496" width="144" height="26"/></clipPath><clipPath id="mx-clip-548-529-142-26-0"><rect x="548" y="529" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-561-142-26-0"><rect x="548" y="561" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-593-122-26-0"><rect x="548" y="593" width="122" height="26"/></clipPath><clipPath id="mx-clip-548-625-142-26-0"><rect x="548" y="625" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-658-142-26-0"><rect x="548" y="658" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-690-142-26-0"><rect x="548" y="690" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-722-142-26-0"><rect x="548" y="722" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-754-142-26-0"><rect x="548" y="754" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-787-142-26-0"><rect x="548" y="787" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-819-142-26-0"><rect x="548" y="819" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-851-142-26-0"><rect x="548" y="851" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-883-142-26-0"><rect x="548" y="883" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-915-142-26-0"><rect x="548" y="915" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-948-142-26-0"><rect x="548" y="948" width="142" height="26"/></clipPath><clipPath id="mx-clip-405-1068-239-20-0"><rect x="405" y="1068" width="239" height="20"/></clipPath><clipPath id="mx-clip-405-1105-258-20-0"><rect x="405" y="1105" width="258" height="20"/></clipPath><clipPath id="mx-clip-745-112-92-26-0"><rect x="745" y="112" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-144-92-26-0"><rect x="745" y="144" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-176-72-26-0"><rect x="745" y="176" width="72" height="26"/></clipPath><clipPath id="mx-clip-745-208-92-26-0"><rect x="745" y="208" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-240-92-26-0"><rect x="745" y="240" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-273-72-26-0"><rect x="745" y="273" width="72" height="26"/></clipPath><clipPath id="mx-clip-745-337-72-26-0"><rect x="745" y="337" width="72" height="26"/></clipPath><clipPath id="mx-clip-854-112-162-26-0"><rect x="854" y="112" width="162" height="26"/></clipPath><clipPath id="mx-clip-854-144-162-26-0"><rect x="854" y="144" width="162" height="26"/></clipPath><clipPath id="mx-clip-854-176-162-26-0"><rect x="854" y="176" width="162" height="26"/></clipPath><clipPath id="mx-clip-854-208-162-26-0"><rect x="854" y="208" width="162" height="26"/></clipPath><clipPath id="mx-clip-854-241-162-26-0"><rect x="854" y="241" width="162" height="26"/></clipPath><clipPath id="mx-clip-854-273-152-26-0"><rect x="854" y="273" width="152" height="26"/></clipPath><clipPath id="mx-clip-854-337-85-26-0"><rect x="854" y="337" width="85" height="26"/></clipPath><clipPath id="mx-clip-745-432-222-26-0"><rect x="745" y="432" width="222" height="26"/></clipPath><clipPath id="mx-clip-745-464-232-26-0"><rect x="745" y="464" width="232" height="26"/></clipPath><clipPath id="mx-clip-745-496-222-26-0"><rect x="745" y="496" width="222" height="26"/></clipPath><clipPath id="mx-clip-745-529-222-26-0"><rect x="745" y="529" width="222" height="26"/></clipPath><clipPath id="mx-clip-745-561-222-26-0"><rect x="745" y="561" width="222" height="26"/></clipPath><clipPath id="mx-clip-1005-432-408-26-0"><rect x="1005" y="432" width="408" height="26"/></clipPath><clipPath id="mx-clip-1005-464-408-26-0"><rect x="1005" y="464" width="408" height="26"/></clipPath><clipPath id="mx-clip-1005-496-262-26-0"><rect x="1005" y="496" width="262" height="26"/></clipPath><clipPath id="mx-clip-1005-528-262-26-0"><rect x="1005" y="528" width="262" height="26"/></clipPath><clipPath id="mx-clip-1005-561-298-26-0"><rect x="1005" y="561" width="298" height="26"/></clipPath><clipPath id="mx-clip-745-657-82-26-0"><rect x="745" y="657" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-690-82-26-0"><rect x="745" y="690" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-722-82-26-0"><rect x="745" y="722" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-754-82-26-0"><rect x="745" y="754" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-819-82-27-0"><rect x="745" y="819" width="82" height="27"/></clipPath><clipPath id="mx-clip-745-851-82-26-0"><rect x="745" y="851" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-883-82-26-0"><rect x="745" y="883" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-916-82-26-0"><rect x="745" y="916" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-948-82-26-0"><rect x="745" y="948" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-980-82-26-0"><rect x="745" y="980" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1012-82-26-0"><rect x="745" y="1012" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1045-82-26-0"><rect x="745" y="1045" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1077-82-26-0"><rect x="745" y="1077" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1109-98-26-0"><rect x="745" y="1109" width="98" height="26"/></clipPath><clipPath id="mx-clip-845-690-132-26-0"><rect x="845" y="690" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-658-132-26-0"><rect x="845" y="658" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-722-132-26-0"><rect x="845" y="722" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-754-132-26-0"><rect x="845" y="754" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-818-195-28-0"><rect x="845" y="818" width="195" height="28"/></clipPath><clipPath id="mx-clip-845-851-132-26-0"><rect x="845" y="851" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-883-132-26-0"><rect x="845" y="883" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-916-132-26-0"><rect x="845" y="916" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-948-132-26-0"><rect x="845" y="948" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-980-132-26-0"><rect x="845" y="980" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-1013-132-26-0"><rect x="845" y="1013" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-1045-206-26-0"><rect x="845" y="1045" width="206" height="26"/></clipPath><clipPath id="mx-clip-845-1077-132-26-0"><rect x="845" y="1077" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-1109-208-26-0"><rect x="845" y="1109" width="208" height="26"/></clipPath><clipPath id="mx-clip-1105-893-102-26-0"><rect x="1105" y="893" width="102" height="26"/></clipPath><clipPath id="mx-clip-1105-926-102-26-0"><rect x="1105" y="926" width="102" height="26"/></clipPath><clipPath id="mx-clip-1105-958-102-26-0"><rect x="1105" y="958" width="102" height="26"/></clipPath><clipPath id="mx-clip-1105-990-102-26-0"><rect x="1105" y="990" width="102" height="26"/></clipPath><clipPath id="mx-clip-1215-893-132-26-0"><rect x="1215" y="893" width="132" height="26"/></clipPath><clipPath id="mx-clip-1215-926-188-26-0"><rect x="1215" y="926" width="188" height="26"/></clipPath><clipPath id="mx-clip-1215-958-112-26-0"><rect x="1215" y="958" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-990-112-26-0"><rect x="1215" y="990" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-112-112-26-0"><rect x="1105" y="112" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-144-112-26-0"><rect x="1105" y="144" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-176-112-26-0"><rect x="1105" y="176" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-208-112-26-0"><rect x="1105" y="208" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-241-112-26-0"><rect x="1105" y="241" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-273-112-26-0"><rect x="1105" y="273" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-305-112-26-0"><rect x="1105" y="305" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-337-132-26-0"><rect x="1105" y="337" width="132" height="26"/></clipPath><clipPath id="mx-clip-1245-112-141-26-0"><rect x="1245" y="112" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-144-170-26-0"><rect x="1245" y="144" width="170" height="26"/></clipPath><clipPath id="mx-clip-1245-176-177-26-0"><rect x="1245" y="176" width="177" height="26"/></clipPath><clipPath id="mx-clip-1245-208-168-26-0"><rect x="1245" y="208" width="168" height="26"/></clipPath><clipPath id="mx-clip-1245-241-141-26-0"><rect x="1245" y="241" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-273-141-26-0"><rect x="1245" y="273" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-305-122-26-0"><rect x="1245" y="305" width="122" height="26"/></clipPath><clipPath id="mx-clip-1245-337-132-26-0"><rect x="1245" y="337" width="132" height="26"/></clipPath><clipPath id="mx-clip-1105-657-92-26-0"><rect x="1105" y="657" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-690-92-26-0"><rect x="1105" y="690" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-722-92-26-0"><rect x="1105" y="722" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-754-92-26-0"><rect x="1105" y="754" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-787-92-26-0"><rect x="1105" y="787" width="92" height="26"/></clipPath><clipPath id="mx-clip-1215-657-112-26-0"><rect x="1215" y="657" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-690-112-26-0"><rect x="1215" y="690" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-722-112-26-0"><rect x="1215" y="722" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-754-112-26-0"><rect x="1215" y="754" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-787-112-26-0"><rect x="1215" y="787" width="112" height="26"/></clipPath><clipPath id="mx-clip-1084-76-165-26-0"><rect x="1084" y="76" width="165" height="26"/></clipPath><clipPath id="mx-clip-725-76-165-26-0"><rect x="725" y="76" width="165" height="26"/></clipPath><clipPath id="mx-clip-369-76-165-26-0"><rect x="369" y="76" width="165" height="26"/></clipPath><clipPath id="mx-clip-5-76-165-26-0"><rect x="5" y="76" width="165" height="26"/></clipPath><clipPath id="mx-clip-4-397-165-26-0"><rect x="4" y="397" width="165" height="26"/></clipPath><clipPath id="mx-clip-365-397-165-26-0"><rect x="365" y="397" width="165" height="26"/></clipPath><clipPath id="mx-clip-725-397-165-26-0"><rect x="725" y="397" width="165" height="26"/></clipPath><clipPath id="mx-clip-1085-621-165-26-0"><rect x="1085" y="621" width="165" height="26"/></clipPath><clipPath id="mx-clip-725-621-165-26-0"><rect x="725" y="621" width="165" height="26"/></clipPath><clipPath id="mx-clip-191-1-273-52-0"><rect x="191" y="1" width="273" height="52"/></clipPath><clipPath id="mx-clip-165-1109-142-26-0"><rect x="165" y="1109" width="142" height="26"/></clipPath><clipPath id="mx-clip-25-1109-132-26-0"><rect x="25" y="1109" width="132" height="26"/></clipPath><clipPath id="mx-clip-745-305-72-26-0"><rect x="745" y="305" width="72" height="26"/></clipPath><clipPath id="mx-clip-854-305-152-26-0"><rect x="854" y="305" width="152" height="26"/></clipPath><clipPath id="mx-clip-378-464-142-26-0"><rect x="378" y="464" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-464-115-26-0"><rect x="548" y="464" width="115" height="26"/></clipPath><clipPath id="mx-clip-845-787-132-26-0"><rect x="845" y="787" width="132" height="26"/></clipPath><clipPath id="mx-clip-745-786-82-26-0"><rect x="745" y="786" width="82" height="26"/></clipPath><clipPath id="mx-clip-132-112-192-26-0"><rect x="132" y="112" width="192" height="26"/></clipPath><clipPath id="mx-clip-25-112-112-26-0"><rect x="25" y="112" width="112" height="26"/></clipPath><clipPath id="mx-clip-130-781-10-20-0"><rect x="130" y="781" width="10" height="20"/></clipPath><clipPath id="mx-clip-100-140-10-20-0"><rect x="100" y="140" width="10" height="20"/></clipPath><clipPath id="mx-clip-25-432-132-26-0"><rect x="25" y="432" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-464-132-26-0"><rect x="25" y="464" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-496-132-26-0"><rect x="25" y="496" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-529-132-26-0"><rect x="25" y="529" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-561-132-26-0"><rect x="25" y="561" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-593-132-26-0"><rect x="25" y="593" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-625-132-26-0"><rect x="25" y="625" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-657-132-26-0"><rect x="25" y="657" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-690-132-26-0"><rect x="25" y="690" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-722-132-26-0"><rect x="25" y="722" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-754-132-26-0"><rect x="25" y="754" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-787-132-26-0"><rect x="25" y="787" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-819-132-26-0"><rect x="25" y="819" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-851-132-26-0"><rect x="25" y="851" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-883-132-26-0"><rect x="25" y="883" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-915-132-26-0"><rect x="25" y="915" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-948-132-26-0"><rect x="25" y="948" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-980-132-26-0"><rect x="25" y="980" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-1013-132-26-0"><rect x="25" y="1013" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-1045-132-26-0"><rect x="25" y="1045" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-1077-132-26-0"><rect x="25" y="1077" width="132" height="26"/></clipPath><clipPath id="mx-clip-165-432-142-26-0"><rect x="165" y="432" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-464-142-26-0"><rect x="165" y="464" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-496-142-26-0"><rect x="165" y="496" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-529-142-26-0"><rect x="165" y="529" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-561-142-26-0"><rect x="165" y="561" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-593-142-26-0"><rect x="165" y="593" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-625-142-26-0"><rect x="165" y="625" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-658-142-26-0"><rect x="165" y="658" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-690-179-26-0"><rect x="165" y="690" width="179" height="26"/></clipPath><clipPath id="mx-clip-165-722-151-26-0"><rect x="165" y="722" width="151" height="26"/></clipPath><clipPath id="mx-clip-165-754-142-26-0"><rect x="165" y="754" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-948-173-26-0"><rect x="165" y="948" width="173" height="26"/></clipPath><clipPath id="mx-clip-165-819-142-26-0"><rect x="165" y="819" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-851-142-26-0"><rect x="165" y="851" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-883-142-26-0"><rect x="165" y="883" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-916-142-26-0"><rect x="165" y="916" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-980-142-26-0"><rect x="165" y="980" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-787-142-26-0"><rect x="165" y="787" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-1013-168-26-0"><rect x="165" y="1013" width="168" height="26"/></clipPath><clipPath id="mx-clip-165-1045-142-26-0"><rect x="165" y="1045" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-1077-148-26-0"><rect x="165" y="1077" width="148" height="26"/></clipPath><clipPath id="mx-clip-485-18-448-26-0"><rect x="485" y="18" width="448" height="26"/></clipPath><clipPath id="mx-clip-1105-819-92-26-0"><rect x="1105" y="819" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-852-92-26-0"><rect x="1105" y="852" width="92" height="26"/></clipPath><clipPath id="mx-clip-1215-819-112-26-0"><rect x="1215" y="819" width="112" height="26"/></clipPath><clipPath id="mx-clip-1216-852-112-26-0"><rect x="1216" y="852" width="112" height="26"/></clipPath></defs><g><image x="377.08" y="1066.5" width="24.83" height="24.83" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSI+PHBhdGggc3Ryb2tlPSIjMjliNmYyIiBmaWxsPSIjMjliNmYyIiBkPSJNMTUuNTUgNS41NUwxMSAxdjMuMDdDNy4wNiA0LjU2IDQgNy45MiA0IDEyczMuMDUgNy40NCA3IDcuOTN2LTIuMDJjLTIuODQtLjQ4LTUtMi45NC01LTUuOTFzMi4xNi01LjQzIDUtNS45MVYxMGw0LjU1LTQuNDV6TTE5LjkzIDExYy0uMTctMS4zOS0uNzItMi43My0xLjYyLTMuODlsLTEuNDIgMS40MmMuNTQuNzUuODggMS42IDEuMDIgMi40N2gyLjAyek0xMyAxNy45djIuMDJjMS4zOS0uMTcgMi43NC0uNzEgMy45LTEuNjFsLTEuNDQtMS40NGMtLjc1LjU0LTEuNTkuODktMi40NiAxLjAzem0zLjg5LTIuNDJsMS40MiAxLjQxYy45LTEuMTYgMS40NS0yLjUgMS42Mi0zLjg5aC0yLjAyYy0uMTQuODctLjQ4IDEuNzItMS4wMiAyLjQ4eiIvPjwvc3ZnPg==" preserveAspectRatio="none"/><rect x="7" y="425" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="457" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="521" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="489" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="554" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="586" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="650" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="618" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="683" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="715" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="747" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="779" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="812" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="844" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="876" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="908" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="1102" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="1070" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="1038" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="1005" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="973" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="941" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="425" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="521" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="554" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="586" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="650" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="618" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="489" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="457" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="683" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="715" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="747" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="779" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="812" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="844" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="876" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="908" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="941" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="105" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="137" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="169" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="201" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="233" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="298" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="266" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="330" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="105" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="137" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="169" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="201" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="233" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="266" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="298" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="330" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="105" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="137" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="169" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="201" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="233" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="266" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="298" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="330" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="330" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="298" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="266" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="233" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="201" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="169" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="137" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="105" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="425" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="457" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="489" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="521" width="700" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="554" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="650" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="683" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="747" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="715" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="779" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="812" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="844" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="876" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="908" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="941" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="1005" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="973" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="1038" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="1070" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="1102" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="650" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="683" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="715" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="747" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="779" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="886" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="918" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="951" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="983" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="21" y="139" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-144-112-26-0)" font-size="12px"><text x="26.5" y="156.5">(Shift+)Enter</text></g><rect x="21" y="171" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-176-112-26-0)" font-size="12px"><text x="26.5" y="188.5">Enter / Tab</text></g><rect x="21" y="203" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-208-112-26-0)" font-size="12px"><text x="26.5" y="220.5">Enter / F2</text></g><rect x="21" y="235.5" width="235" height="34.5" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-241-227-35-0)" font-size="12px"><text x="26.5" y="253">Ctrl+Enter / Shift+Tab / F2 / Esc</text></g><rect x="21" y="268" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-273-112-26-0)" font-size="12px"><text x="26.5" y="285.5">Ctrl+B / I</text></g><rect x="21" y="300" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-305-112-26-0)" font-size="12px"><text x="26.5" y="317.5">Ctrl+U</text></g><rect x="21" y="332" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-337-112-26-0)" font-size="12px"><text x="26.5" y="349.5">Ctrl+. / ,</text></g><rect x="202" y="235.5" width="10" height="16" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-202-237-10-20-0)" font-size="10px"><text x="203.5" y="247">1</text></g><rect x="128" y="139" width="200" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-132-144-192-26-0)" font-size="12px"><text x="133.5" y="156.5">New Line in Formatted Labels</text></g><rect x="128" y="171" width="203" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-132-176-195-26-0)" font-size="12px"><text x="133.5" y="188.5">Line Break/Tab/Indent in Labels</text></g><rect x="128" y="203" width="200" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-132-208-192-26-0)" font-size="12px"><text x="133.5" y="220.5">Start Editing Label of Selected Cell</text></g><rect x="222" y="235.5" width="117" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-226-241-109-26-0)" font-size="12px"><text x="227.5" y="253">Stop Editing</text></g><rect x="128" y="268" width="200" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-132-273-192-26-0)" font-size="12px"><text x="133.5" y="285.5">Toggle Bold/Italic on Selected Text</text></g><rect x="128" y="300" width="200" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-132-305-192-26-0)" font-size="12px"><text x="133.5" y="317.5">Toggle Underline on Selected Text</text></g><rect x="128" y="332" width="219" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-132-337-211-26-0)" font-size="12px"><text x="133.5" y="349.5">Superscript/Subscript on Selected Text</text></g><rect x="381" y="107" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-112-82-26-0)" font-size="12px"><text x="386.5" y="124.5">(Shift+)Tab</text></g><rect x="381" y="139" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-144-92-26-0)" font-size="12px"><text x="386.5" y="156.5">Alt+Tab</text></g><rect x="381" y="171" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-176-82-26-0)" font-size="12px"><text x="386.5" y="188.5">Shift+Drag</text></g><rect x="381" y="203" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-208-92-26-0)" font-size="12px"><text x="386.5" y="220.5">Alt+Drag</text></g><rect x="381" y="235.5" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-241-82-26-0)" font-size="12px"><text x="386.5" y="253">Ctrl+(Shift+)A</text></g><rect x="381" y="268" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-273-92-26-0)" font-size="12px"><text x="386.5" y="285.5">Ctrl+Shift+I / E</text></g><rect x="381" y="300" width="116" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-305-108-26-0)" font-size="12px"><text x="386.5" y="317.5">Ctrl / Shift+Select</text></g><rect x="381" y="332" width="110" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-337-102-26-0)" font-size="12px"><text x="386.5" y="349.5">Alt+Click</text></g><rect x="502" y="107" width="155" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-112-147-26-0)" font-size="12px"><text x="507.5" y="124.5">Select Next / Previous</text></g><rect x="502" y="139" width="155" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-144-147-26-0)" font-size="12px"><text x="507.5" y="156.5">Select Parent</text></g><rect x="502" y="171" width="155" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-176-147-26-0)" font-size="12px"><text x="507.5" y="188.5">Toggle to Selection</text></g><rect x="502" y="203" width="155" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-208-147-26-0)" font-size="12px"><text x="507.5" y="220.5">Select intersection</text></g><rect x="502" y="235.5" width="110" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-240-102-26-0)" font-size="12px"><text x="507.5" y="253">Select All / None</text></g><rect x="502" y="268" width="146" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-273-138-26-0)" font-size="12px"><text x="507.5" y="285.5">Select Vertices / Edges</text></g><rect x="502" y="300" width="145" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-305-137-26-0)" font-size="12px"><text x="507.5" y="317.5">Toggle Selection State</text></g><rect x="502" y="332" width="136" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-337-128-26-0)" font-size="12px"><text x="507.5" y="349.5">Select Cell Below</text></g><rect x="374" y="427" width="166" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-432-158-26-0)" font-size="12px"><text x="379.5" y="444.5">Alt+Mouse wheel</text></g><rect x="374" y="491" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-496-122-26-0)" font-size="12px"><text x="379.5" y="508.5">Ctrl+Mouse wheel</text></g><rect x="374" y="523.5" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-528-122-26-0)" font-size="12px"><text x="379.5" y="541">Mouse wheel</text></g><rect x="374" y="556" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-561-122-26-0)" font-size="12px"><text x="379.5" y="573.5">Shift+Mouse wheel</text></g><rect x="374" y="588" width="160" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-593-152-26-0)" font-size="12px"><text x="379.5" y="605.5">Space / Right mouse Drag</text></g><rect x="374" y="620" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-625-122-26-0)" font-size="12px"><text x="379.5" y="637.5">Alt+Ctrl+Shift+Drag</text></g><rect x="374" y="652.5" width="101" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-658-93-26-0)" font-size="12px"><text x="379.5" y="670">Alt+Click</text></g><rect x="374" y="685" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-690-122-26-0)" font-size="12px"><text x="379.5" y="702.5">Shift+Home</text></g><rect x="374" y="717" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-722-122-26-0)" font-size="12px"><text x="379.5" y="734.5">End</text></g><rect x="374" y="749" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-754-122-26-0)" font-size="12px"><text x="379.5" y="766.5">Enter / Home</text></g><rect x="374" y="781.5" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-787-122-26-0)" font-size="12px"><text x="379.5" y="799">Ctrl+Shift+H</text></g><rect x="374" y="814" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-819-122-26-0)" font-size="12px"><text x="379.5" y="831.5">Ctrl+J</text></g><rect x="374" y="846" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-851-122-26-0)" font-size="12px"><text x="379.5" y="863.5">Ctrl+Shift+J</text></g><rect x="374" y="910.5" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-915-122-26-0)" font-size="12px"><text x="379.5" y="928">Ctrl + (Numpad)</text></g><rect x="374" y="943" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-948-122-26-0)" font-size="12px"><text x="379.5" y="960.5">Ctrl - (Numpad)</text></g><rect x="374" y="878" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-883-122-26-0)" font-size="12px"><text x="379.5" y="895.5">Ctrl+0</text></g><rect x="544" y="427" width="125" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-432-117-26-0)" font-size="12px"><text x="549.5" y="444.5">Canvas Zoom In/Out</text></g><rect x="544" y="491" width="152" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-496-144-26-0)" font-size="12px"><text x="549.5" y="508.5">Screen Zoom In/Out (Mac)</text></g><rect x="544" y="523.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-529-142-26-0)" font-size="12px"><text x="549.5" y="541">Canvas Vertical Scroll</text></g><rect x="544" y="556" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-561-142-26-0)" font-size="12px"><text x="549.5" y="573.5">Canvas Horizontal Scroll</text></g><rect x="544" y="588" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-593-122-26-0)" font-size="12px"><text x="549.5" y="605.5">Pan Canvas</text></g><rect x="544" y="620" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-625-142-26-0)" font-size="12px"><text x="549.5" y="637.5">Create / Remove Space</text></g><rect x="544" y="652.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-658-142-26-0)" font-size="12px"><text x="549.5" y="670">Ignore grid / shape</text></g><rect x="544" y="685" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-690-142-26-0)" font-size="12px"><text x="549.5" y="702.5">Home</text></g><rect x="544" y="717" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-722-142-26-0)" font-size="12px"><text x="549.5" y="734.5">Refresh</text></g><rect x="544" y="749" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-754-142-26-0)" font-size="12px"><text x="549.5" y="766.5">Reset View</text></g><rect x="544" y="781.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-787-142-26-0)" font-size="12px"><text x="549.5" y="799">Fit Window</text></g><rect x="544" y="814" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-819-142-26-0)" font-size="12px"><text x="549.5" y="831.5">Fit Page</text></g><rect x="544" y="846" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-851-142-26-0)" font-size="12px"><text x="549.5" y="863.5">Fit Two Pages</text></g><rect x="544" y="878" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-883-142-26-0)" font-size="12px"><text x="549.5" y="895.5">Custom Zoom</text></g><rect x="544" y="910.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-915-142-26-0)" font-size="12px"><text x="549.5" y="928">Zoom In</text></g><rect x="544" y="943" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-948-142-26-0)" font-size="12px"><text x="549.5" y="960.5">Zoom Out</text></g><rect x="405" y="1007" width="248" height="48" rx="7.2" ry="7.2" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-size="12px"><text x="406.5" y="1021.5">Click to connect and clone (ctrl+click to clone,</text><text x="406.5" y="1035.5">shift+click to connect). Drag to connect</text><text x="406.5" y="1049.5">(ctrl+drag to clone).</text></g><image x="381.99" y="1102.5" width="15" height="25" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAZAgMAAACTN5xfAAAACVBMVEX///////8AAACO9MPsAAAAAXRSTlMAQObYZgAAAFRJREFUeF5VyjEKgDAQRNGPRSA38AB6JEWsUkggt9hLGDbdlh5Tp7R5DPzBAEK46OI2UcQhdrGZKB/nA13B9Q5hqwEij+akVi/yFDMJFjL8VlUdw1+gHxbW+YsglAAAAABJRU5ErkJggg=="/><rect x="405" y="1068" width="239" height="20" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-405-1068-239-20-0)" font-size="12px"><text x="406.5" y="1082.5">Click to rotate 90° clockwise. Drag to rotate.</text></g><rect x="405" y="1105" width="258" height="20" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-405-1105-258-20-0)" font-size="12px"><text x="406.5" y="1119.5">Ctrl: Show Dialog, Alt: Origin, Shift: Ignore XML</text></g><rect x="741" y="107" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-112-92-26-0)" font-size="12px"><text x="746.5" y="124.5">Ctrl+Shift+L</text></g><rect x="741" y="139" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-144-92-26-0)" font-size="12px"><text x="746.5" y="156.5">Ctrl+Shift+O</text></g><rect x="741" y="171" width="80" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-176-72-26-0)" font-size="12px"><text x="746.5" y="188.5">Ctrl+M</text></g><rect x="741" y="203" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-208-92-26-0)" font-size="12px"><text x="746.5" y="220.5">Ctrl+Shift+P</text></g><rect x="741" y="235.5" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-240-92-26-0)" font-size="12px"><text x="746.5" y="253">Ctrl+Shift+M</text></g><rect x="741" y="268" width="80" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-273-72-26-0)" font-size="12px"><text x="746.5" y="285.5">Rightclick</text></g><rect x="741" y="332" width="80" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-337-72-26-0)" font-size="12px"><text x="746.5" y="349.5">F1</text></g><rect x="850" y="107" width="170" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-112-162-26-0)" font-size="12px"><text x="855.5" y="124.5">Toggle Layers Window</text></g><rect x="850" y="139" width="170" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-144-162-26-0)" font-size="12px"><text x="855.5" y="156.5">Toggle Outline Window</text></g><rect x="850" y="171" width="170" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-176-162-26-0)" font-size="12px"><text x="855.5" y="188.5">Edit Metadata</text></g><rect x="850" y="203" width="170" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-208-162-26-0)" font-size="12px"><text x="855.5" y="220.5">Toggle Format Panel</text></g><rect x="850" y="235.5" width="170" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-241-162-26-0)" font-size="12px"><text x="855.5" y="253">Edit Vertex Geometry</text></g><rect x="850" y="268" width="160" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-273-152-26-0)" font-size="12px"><text x="855.5" y="285.5">Context Menu</text></g><rect x="850" y="332" width="93" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-337-85-26-0)" font-size="12px"><text x="855.5" y="349.5">About</text></g><rect x="741" y="427" width="230" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-432-222-26-0)" font-size="12px"><text x="746.5" y="444.5">Alt+(Shift+)Drag from sidebar</text></g><rect x="741" y="459" width="240" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-464-232-26-0)" font-size="12px"><text x="746.5" y="476.5">Alt+(Shift / Ctrl)+Click on a sidebar item</text></g><rect x="741" y="491" width="230" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-496-222-26-0)" font-size="12px"><text x="746.5" y="508.5">Shift+Click on a sidebar item</text></g><rect x="741" y="523.5" width="230" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-529-222-26-0)" font-size="12px"><text x="746.5" y="541">Click on a sidebar item</text></g><rect x="741" y="556" width="230" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-561-222-26-0)" font-size="12px"><text x="746.5" y="573.5">Alt / Shift+Connect</text></g><rect x="1001" y="427" width="416" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-432-408-26-0)" font-size="12px"><text x="1006.5" y="444.5">Disable replace, connect on drop (drop targets), Shift ignores current style</text></g><rect x="1001" y="459" width="416" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-464-408-26-0)" font-size="12px"><text x="1006.5" y="476.5">Inserts and connects the selected item (Shift ignores current style)</text></g><rect x="1001" y="491" width="270" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-496-262-26-0)" font-size="12px"><text x="1006.5" y="508.5">Replaces the selected item with the clicked one</text></g><rect x="1001" y="523.5" width="270" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-528-262-26-0)" font-size="12px"><text x="1006.5" y="541">Connects unconnected side of selected edge</text></g><rect x="1001" y="556" width="306" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-561-298-26-0)" font-size="12px"><text x="1006.5" y="573.5">Ignore shape / outline</text></g><rect x="741" y="652.5" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-657-82-26-0)" font-size="12px"><text x="746.5" y="670">Ctrl+S</text></g><rect x="741" y="685" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-690-82-26-0)" font-size="12px"><text x="746.5" y="702.5">Ctrl+Shift+S</text></g><rect x="741" y="717" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-722-82-26-0)" font-size="12px"><text x="746.5" y="734.5">Ctrl+Z</text></g><rect x="741" y="749" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-754-82-26-0)" font-size="12px"><text x="746.5" y="766.5">Alt+Shift+A</text></g><rect x="741" y="813.5" width="90" height="27" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-819-82-27-0)" font-size="12px"><text x="746.5" y="831">Hold Alt</text></g><rect x="741" y="846" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-851-82-26-0)" font-size="12px"><text x="746.5" y="863.5">Ctrl+Shift+G</text></g><rect x="741" y="878" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-883-82-26-0)" font-size="12px"><text x="746.5" y="895.5">Ctrl+P</text></g><rect x="741" y="910.5" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-916-82-26-0)" font-size="12px"><text x="746.5" y="928">Ctrl+Y</text></g><rect x="741" y="943" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-948-82-26-0)" font-size="12px"><text x="746.5" y="960.5">Ctrl+Shift+Z</text></g><rect x="741" y="975" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-980-82-26-0)" font-size="12px"><text x="746.5" y="992.5">Ctrl+Shift+X</text></g><rect x="741" y="1007.5" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1012-82-26-0)" font-size="12px"><text x="746.5" y="1025">Ctrl+K</text></g><rect x="741" y="1040" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1045-82-26-0)" font-size="12px"><text x="746.5" y="1057.5">Ctrl+Shift+K</text></g><rect x="741" y="1072" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1077-82-26-0)" font-size="12px"><text x="746.5" y="1089.5">Esc</text></g><rect x="741" y="1104" width="106" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1109-98-26-0)" font-size="12px"><text x="746.5" y="1121.5">Alt+Drag / Drop</text></g><rect x="841" y="685" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-690-132-26-0)" font-size="12px"><text x="846.5" y="702.5">Save as</text></g><rect x="841" y="652.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-658-132-26-0)" font-size="12px"><text x="846.5" y="670">Save</text></g><rect x="841" y="717" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-722-132-26-0)" font-size="12px"><text x="846.5" y="734.5">Undo</text></g><rect x="841" y="749" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-754-132-26-0)" font-size="12px"><text x="846.5" y="766.5">Connection Arrows</text></g><rect x="841" y="813" width="203" height="28" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-818-195-28-0)" font-size="12px"><text x="846.5" y="830.5">Ignores handles under the mouse</text></g><rect x="841" y="846" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-851-132-26-0)" font-size="12px"><text x="846.5" y="863.5">Toggle grid</text></g><rect x="841" y="878" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-883-132-26-0)" font-size="12px"><text x="846.5" y="895.5">Print</text></g><rect x="841" y="910.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-916-132-26-0)" font-size="12px"><text x="846.5" y="928">Redo (Windows)</text></g><rect x="841" y="943" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-948-132-26-0)" font-size="12px"><text x="846.5" y="960.5">Redo (Linux/Mac)</text></g><rect x="841" y="975" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-980-132-26-0)" font-size="12px"><text x="846.5" y="992.5">Insert Text</text></g><rect x="841" y="1007.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1013-132-26-0)" font-size="12px"><text x="846.5" y="1025">Insert Rectangle</text></g><rect x="841" y="1040" width="214" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1045-206-26-0)" font-size="12px"><text x="846.5" y="1057.5">Insert Ellipse / Toggle Shapes Panel</text></g><rect x="841" y="1072" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1077-132-26-0)" font-size="12px"><text x="846.5" y="1089.5">Cancel Action</text></g><rect x="841" y="1104" width="216" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1109-208-26-0)" font-size="12px"><text x="846.5" y="1121.5">Force Rubberband / Ignore Group</text></g><rect x="1101" y="888" width="110" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-893-102-26-0)" font-size="12px"><text x="1106.5" y="905.5">Drag</text></g><rect x="1101" y="920.5" width="110" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-926-102-26-0)" font-size="12px"><text x="1106.5" y="938">Tap and hold</text></g><rect x="1101" y="953" width="110" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-958-102-26-0)" font-size="12px"><text x="1106.5" y="970.5">Pinch</text></g><rect x="1101" y="985" width="110" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-990-102-26-0)" font-size="12px"><text x="1106.5" y="1002.5">Tap selected cell</text></g><rect x="1211" y="888" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-893-132-26-0)" font-size="12px"><text x="1216.5" y="905.5">Move Cell / Pan Canvas</text></g><rect x="1211" y="921" width="196" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-926-188-26-0)" font-size="12px"><text x="1216.5" y="938.5">Toggle Selection / Rubberband</text></g><rect x="1211" y="953" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-958-112-26-0)" font-size="12px"><text x="1216.5" y="970.5">Zoom</text></g><rect x="1211" y="985" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-990-112-26-0)" font-size="12px"><text x="1216.5" y="1002.5">Context Menu</text></g><rect x="1101" y="107" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-112-112-26-0)" font-size="12px"><text x="1106.5" y="124.5">Cursor</text></g><rect x="1101" y="139" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-144-112-26-0)" font-size="12px"><text x="1106.5" y="156.5">Shift+Cursor</text></g><rect x="1101" y="171" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-176-112-26-0)" font-size="12px"><text x="1106.5" y="188.5">Ctrl+Cursor</text></g><rect x="1101" y="203" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-208-112-26-0)" font-size="12px"><text x="1106.5" y="220.5">Ctrl+Shift+Cursor</text></g><rect x="1101" y="235.5" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-241-112-26-0)" font-size="12px"><text x="1106.5" y="253">Alt+Shift+Cursor</text></g><rect x="1101" y="268" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-273-112-26-0)" font-size="12px"><text x="1106.5" y="285.5">Alt+Cursor</text></g><rect x="1101" y="300" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-305-112-26-0)" font-size="12px"><text x="1106.5" y="317.5">Ctrl+Shift+Pg Up</text></g><rect x="1101" y="332" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-337-132-26-0)" font-size="12px"><text x="1106.5" y="349.5">Ctrl+Shift+Pg Down</text></g><rect x="1241" y="107" width="149" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-112-141-26-0)" font-size="12px"><text x="1246.5" y="124.5">Scroll / Move cell (pt)</text></g><rect x="1241" y="139" width="178" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-144-170-26-0)" font-size="12px"><text x="1246.5" y="156.5">Move cell (grid) or page</text></g><rect x="1241" y="171" width="185" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-176-177-26-0)" font-size="12px"><text x="1246.5" y="188.5">Resize cell (pt) or select page</text></g><rect x="1241" y="203" width="176" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-208-168-26-0)" font-size="12px"><text x="1246.5" y="220.5">Resize cell (grid size)</text></g><rect x="1241" y="235.5" width="149" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-241-141-26-0)" font-size="12px"><text x="1246.5" y="253">Clone and connect</text></g><rect x="1241" y="268" width="149" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-273-141-26-0)" font-size="12px"><text x="1246.5" y="285.5">Scroll Page</text></g><rect x="1241" y="300" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-305-122-26-0)" font-size="12px"><text x="1246.5" y="317.5">Previous Page</text></g><rect x="1241" y="332" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-337-132-26-0)" font-size="12px"><text x="1246.5" y="349.5">Next Page</text></g><rect x="1101" y="652" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-657-92-26-0)" font-size="12px"><text x="1106.5" y="669.5">Ctrl+Shift+R</text></g><rect x="1101" y="685" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-690-92-26-0)" font-size="12px"><text x="1106.5" y="702.5">Ctrl+E</text></g><rect x="1101" y="717" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-722-92-26-0)" font-size="12px"><text x="1106.5" y="734.5">Ctrl+Shift+D</text></g><rect x="1101" y="749" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-754-92-26-0)" font-size="12px"><text x="1106.5" y="766.5">Ctrl+Shift+C</text></g><rect x="1101" y="781.5" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-787-92-26-0)" font-size="12px"><text x="1106.5" y="799">Ctrl+Shift+V</text></g><rect x="1211" y="652" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-657-112-26-0)" font-size="12px"><text x="1216.5" y="669.5">Clear Default Style</text></g><rect x="1211" y="685" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-690-112-26-0)" font-size="12px"><text x="1216.5" y="702.5">Edit Style</text></g><rect x="1211" y="717" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-722-112-26-0)" font-size="12px"><text x="1216.5" y="734.5">Set as Default Style</text></g><rect x="1211" y="749" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-754-112-26-0)" font-size="12px"><text x="1216.5" y="766.5">Copy Style</text></g><rect x="1211" y="781.5" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-787-112-26-0)" font-size="12px"><text x="1216.5" y="799">Paste Style</text></g><rect x="1080" y="71" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1084-76-165-26-0)" font-size="14px"><text x="1085.5" y="90.5">CURSOR / PAGE KEYS</text></g><rect x="721" y="71" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-725-76-165-26-0)" font-size="14px"><text x="726.5" y="90.5">TOOLS</text></g><rect x="365" y="71" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-369-76-165-26-0)" font-size="14px"><text x="370.5" y="90.5">SELECTION</text></g><rect x="1" y="71" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-5-76-165-26-0)" font-size="14px"><text x="6.5" y="90.5">LABELS</text></g><rect x="0" y="392" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-4-397-165-26-0)" font-size="14px"><text x="5.5" y="411.5">CANVAS</text></g><rect x="361" y="392" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-365-397-165-26-0)" font-size="14px"><text x="366.5" y="411.5">VIEW</text></g><rect x="721" y="392" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-725-397-165-26-0)" font-size="14px"><text x="726.5" y="411.5">SIDEBAR / CONNECT</text></g><rect x="1081" y="616" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1085-621-165-26-0)" font-size="14px"><text x="1086.5" y="635.5">STYLES</text></g><rect x="721" y="616" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-725-621-165-26-0)" font-size="14px"><text x="726.5" y="635.5">DOCUMENT</text></g><rect x="187" y="0.5" width="281" height="51.5" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-191-1-273-52-0)" font-size="27px"><text x="192.5" y="38.25">Keyboard Shortcuts</text></g><rect x="161" y="1104" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1109-142-26-0)" font-size="12px"><text x="166.5" y="1121.5">Connect to a Fixed Point</text></g><rect x="21" y="1104" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1109-132-26-0)" font-size="12px"><text x="26.5" y="1121.5">Alt+Connect</text></g><rect x="741" y="300" width="80" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-305-72-26-0)" font-size="12px"><text x="746.5" y="317.5">Ctrl+Click</text></g><rect x="850" y="300" width="160" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-305-152-26-0)" font-size="12px"><text x="855.5" y="317.5">Context Menu</text></g><a xlink:href="https://app.diagrams.net/#Uhttps%3A%2F%2Fapp.diagrams.net%2Fshortcuts.svg" target="_blank"><rect x="1111.67" y="1111" width="132.33" height="18" fill="none" stroke="none" pointer-events="all"/><g fill="#F08705" font-family="Helvetica" text-decoration="underline" font-size="12px"><text x="1113.17" y="1124.5">Open in diagrams.net...</text></g></a><rect x="374" y="459" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-464-142-26-0)" font-size="12px"><text x="379.5" y="476.5">Ctrl+Shift+Mouse wheel</text></g><rect x="544" y="459" width="123" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-464-115-26-0)" font-size="12px"><text x="549.5" y="476.5">Canvas Zoom In/Out</text></g><rect x="841" y="781.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-787-132-26-0)" font-size="12px"><text x="846.5" y="799">Connection Points</text></g><rect x="741" y="781.5" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-786-82-26-0)" font-size="12px"><text x="746.5" y="799">Alt+Shift+P</text></g><rect x="128" y="107" width="200" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-132-112-192-26-0)" font-size="12px"><text x="133.5" y="124.5">Insert text or add an edge label</text></g><rect x="21" y="107" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-112-112-26-0)" font-size="12px"><text x="26.5" y="124.5">Double click</text></g><rect x="130.28" y="780" width="10" height="16" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-130-781-10-20-0)" font-size="10px"><text x="131.78" y="791.5">2</text></g><rect x="1112" y="1077" width="255" height="29" rx="4.35" ry="4.35" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-size="12px"><text x="1113.5" y="1089">Ctrl+Resize for non-recursive group resize</text><text x="1113.5" y="1103">Ctrl+Meta+Resize for centered group resize</text></g><rect x="1105.33" y="1069" width="20" height="10" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-size="10px"><text x="1106.83" y="1080.5">2</text></g><rect x="100" y="139" width="10" height="16" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-100-140-10-20-0)" font-size="10px"><text x="101.5" y="150.5">1</text></g><rect x="1112" y="1038" width="255" height="29" rx="4.35" ry="4.35" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-size="12px"><text x="1113.5" y="1050">Ctrl / Shift+Enter: New Line / Apply in Safari</text><text x="1113.5" y="1064">Ctrl / Shift+Esc: Cancel Editing</text></g><rect x="1105.33" y="1030" width="20" height="10" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-size="10px"><text x="1106.83" y="1041.5">1</text></g><rect x="21" y="427" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-432-132-26-0)" font-size="12px"><text x="26.5" y="444.5">Ctrl+X</text></g><rect x="21" y="459" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-464-132-26-0)" font-size="12px"><text x="26.5" y="476.5">Ctrl+C</text></g><rect x="21" y="491" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-496-132-26-0)" font-size="12px"><text x="26.5" y="508.5">Ctrl+V</text></g><rect x="21" y="523.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-529-132-26-0)" font-size="12px"><text x="26.5" y="541">Ctrl+G</text></g><rect x="21" y="556" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-561-132-26-0)" font-size="12px"><text x="26.5" y="573.5">Ctrl+Shift+U</text></g><rect x="21" y="588" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-593-132-26-0)" font-size="12px"><text x="26.5" y="605.5">Ctrl+L / Alt+Shift+L</text></g><rect x="21" y="620" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-625-132-26-0)" font-size="12px"><text x="26.5" y="637.5">Ctrl+Enter / D</text></g><rect x="21" y="652.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-657-132-26-0)" font-size="12px"><text x="26.5" y="670">Backspace or Delete</text></g><rect x="21" y="685" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-690-132-26-0)" font-size="12px"><text x="26.5" y="702.5">Ctrl / Shift+Delete</text></g><rect x="21" y="717" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-722-132-26-0)" font-size="12px"><text x="26.5" y="734.5">Ctrl+R</text></g><rect x="21" y="749" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-754-132-26-0)" font-size="12px"><text x="26.5" y="766.5">Shift+Resize</text></g><rect x="21" y="781.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-787-132-26-0)" font-size="12px"><text x="26.5" y="799">Ctrl / Meta+Resize</text></g><rect x="21" y="814" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-819-132-26-0)" font-size="12px"><text x="26.5" y="831.5">Ctrl+Home</text></g><rect x="21" y="846" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-851-132-26-0)" font-size="12px"><text x="26.5" y="863.5">Ctrl+End</text></g><rect x="21" y="878" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-883-132-26-0)" font-size="12px"><text x="26.5" y="895.5">Ctrl+Shift+Home</text></g><rect x="21" y="910.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-915-132-26-0)" font-size="12px"><text x="26.5" y="928">Ctrl+Shift+End</text></g><rect x="21" y="943" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-948-132-26-0)" font-size="12px"><text x="26.5" y="960.5">Ctrl+Shift+F / B</text></g><rect x="21" y="975" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-980-132-26-0)" font-size="12px"><text x="26.5" y="992.5">Ctrl+F</text></g><rect x="21" y="1007.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1013-132-26-0)" font-size="12px"><text x="26.5" y="1025">Alt+Shift+C / T</text></g><rect x="21" y="1040" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1045-132-26-0)" font-size="12px"><text x="26.5" y="1057.5">Ctrl+Shift+Y</text></g><rect x="21" y="1072" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1077-132-26-0)" font-size="12px"><text x="26.5" y="1089.5">Ctrl / Shift+Drag</text></g><rect x="161" y="427" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-432-142-26-0)" font-size="12px"><text x="166.5" y="444.5">Cut</text></g><rect x="161" y="459" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-464-142-26-0)" font-size="12px"><text x="166.5" y="476.5">Copy</text></g><rect x="161" y="491" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-496-142-26-0)" font-size="12px"><text x="166.5" y="508.5">Paste</text></g><rect x="161" y="523.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-529-142-26-0)" font-size="12px"><text x="166.5" y="541">Group</text></g><rect x="161" y="556" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-561-142-26-0)" font-size="12px"><text x="166.5" y="573.5">Ungroup</text></g><rect x="161" y="588" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-593-142-26-0)" font-size="12px"><text x="166.5" y="605.5">Lock/Unlock / Edit Link</text></g><rect x="161" y="620" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-625-142-26-0)" font-size="12px"><text x="166.5" y="637.5">Duplicate</text></g><rect x="161" y="652.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-658-142-26-0)" font-size="12px"><text x="166.5" y="670">Delete Selected Cells</text></g><rect x="161" y="685" width="187" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-690-179-26-0)" font-size="12px"><text x="166.5" y="702.5">...with Connections / Labels</text></g><rect x="161" y="717" width="159" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-722-151-26-0)" font-size="12px"><text x="166.5" y="734.5">Turn / Rotate 90° Clockwise</text></g><rect x="161" y="749" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-754-142-26-0)" font-size="12px"><text x="166.5" y="766.5">Maintain Proportions</text></g><rect x="161" y="943" width="181" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-948-173-26-0)" font-size="12px"><text x="166.5" y="960.5">Bring to Front / Send to Back</text></g><rect x="161" y="814" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-819-142-26-0)" font-size="12px"><text x="166.5" y="831.5">Collapse Container</text></g><rect x="161" y="846" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-851-142-26-0)" font-size="12px"><text x="166.5" y="863.5">Expand Container</text></g><rect x="161" y="878" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-883-142-26-0)" font-size="12px"><text x="166.5" y="895.5">Exit Group</text></g><rect x="161" y="910.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-916-142-26-0)" font-size="12px"><text x="166.5" y="928">Enter Group</text></g><rect x="161" y="975" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-980-142-26-0)" font-size="12px"><text x="166.5" y="992.5">Find/Replace</text></g><rect x="161" y="781.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-787-142-26-0)" font-size="12px"><text x="166.5" y="799">Centered / Group Resize</text></g><rect x="161" y="1008" width="176" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1013-168-26-0)" font-size="12px"><text x="166.5" y="1025.5">Clear Waypoints / Edit Tooltip</text></g><rect x="161" y="1040" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1045-142-26-0)" font-size="12px"><text x="166.5" y="1057.5">Autosize</text></g><rect x="161" y="1072" width="156" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1077-148-26-0)" font-size="12px"><text x="166.5" y="1089.5">Clone cell/Disconnect edge</text></g><rect x="481" y="13.25" width="456" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#777777" font-family="Helvetica" clip-path="url(#mx-clip-485-18-448-26-0)" font-size="18px"><text x="486.5" y="36.75">cmd instead of ctrl, option instead of alt for macOS </text></g><rect x="1087" y="812" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="844" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1101" y="814" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-819-92-26-0)" font-size="12px"><text x="1106.5" y="831.5">Alt+Shift+X / B</text></g><rect x="1101" y="846.5" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-852-92-26-0)" font-size="12px"><text x="1106.5" y="864">Alt+Shift+V / E</text></g><rect x="1211" y="814" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-819-112-26-0)" font-size="12px"><text x="1216.5" y="831.5">Copy Size / Data</text></g><rect x="1212" y="846.5" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1216-852-112-26-0)" font-size="12px"><text x="1217.5" y="864">Paste Size / Data</text></g><image x="376.49" y="1012.5" width="26" height="18" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjZweCIgaGVpZ2h0PSIxOHB4IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyNiAxOCI+PHBhdGggZD0ibSAxIDYgTCAxNCA2IEwgMTQgMSBMIDI2IDkgTCAxNCAxOCBMIDE0IDEyIEwgMSAxMiB6IiBzdHJva2U9IiNmZmYiIGZpbGw9IiMyOWI2ZjIiLz48L3N2Zz4=" preserveAspectRatio="none"/><path d="M 42 45.62 C 42 46.18 41.4 46.69 40.97 46.69 L 7.93 46.69 C 7.47 46.69 7 46.18 7 45.76 L 7 12.9 C 7 12.28 7.33 11.75 8.02 11.75 L 41.17 11.78 C 41.67 11.78 41.99 12.23 42 12.82 Z" fill="#f08707" stroke="none" pointer-events="all"/><path d="M 19.94 46.69 L 14.54 38.6 L 27.06 19.97 L 28.5 19.71 L 42 33.48 L 42 45.66 C 42 46.1 41.44 46.75 41 46.69 Z" fill="#db6112" stroke="none" pointer-events="all"/><path d="M 15.13 38.69 C 14.28 38.69 13.88 37.99 13.88 37.42 L 13.88 32.83 C 13.88 32.28 14.3 31.6 14.89 31.6 L 18.5 31.6 L 21.72 26.27 L 21.29 26.27 C 21.04 26.27 20.27 25.77 20.27 25.24 L 20.27 20.34 C 20.27 19.79 20.96 19.09 21.48 19.09 L 27.31 19.09 C 27.84 19.09 28.7 19.39 28.7 20.39 L 28.7 25.1 C 28.7 25.65 28.21 26.27 27.7 26.27 L 27.28 26.27 L 30.51 31.6 L 33.95 31.6 C 34.76 31.6 35.16 32.05 35.16 32.71 L 35.16 37.42 C 35.16 38.14 34.54 38.69 33.93 38.69 L 28.14 38.69 C 27.4 38.69 26.76 38.21 26.76 37.48 L 26.76 32.53 C 26.84 32.03 27.31 31.6 27.87 31.6 L 28.96 31.6 L 25.86 26.27 L 23.19 26.27 L 20.1 31.6 L 21.29 31.6 C 21.81 31.6 22.26 32.1 22.26 32.69 L 22.26 37.71 C 22.26 38.12 21.78 38.69 21.23 38.69 Z" fill="#ffffff" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 29px; margin-left: 48px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(26, 91, 163); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;"><font style="font-size: 20px">diagrams.<font color="#f08707" style="font-size: 20px">net</font></font></div></div></div></foreignObject><text x="48" y="34" fill="#1A5BA3" font-family="Helvetica" font-size="15px" font-weight="bold">diagr...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg> \ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1428px" height="1133px" viewBox="-0.5 -0.5 1428 1133" content="&lt;mxfile modified=&quot;2021-12-15T14:10:08.254Z&quot; host=&quot;app.diagrams.net&quot; agent=&quot;5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36&quot; etag=&quot;997W7K9nr8ns4qmdHWZJ&quot; version=&quot;15.9.6&quot;&gt;&lt;diagram name=&quot;Page-1&quot; id=&quot;150dc974-5404-6732-309c-fd6db42db779&quot;&gt;7Z1bd+K40oZ/Tdaauegs2/LxkmNCD4d0IEl3br5ljGOcAGYbEyC//pN8AiwRMrtRuTcoq2cSjLFx1eOy6pVUukK16fomtOfjTjByJ1eKNFpfofqVosiGrOJfZMsm3SLLVrLFC/1Rsk3abuj7H266Y7Z16Y/cRbot2RQFwSTy5/sbnWA2c51ob5sdhsFqf7eXYDLa2zC3PXfva5ANfceeuNRuT/4oGqdbdU3dvnHr+t44O7Wspxc4tJ03LwyWs/SEVwpqxD/J21M7O1h64sXYHgWrnU2ocYVqYRBEyV/Tdc2dEOvu26154N38i4fuLPrKB/SnodZ9/HCX9cjpv5mdb5s6+obU9Nu925Olm11I/HWjTWYj/M3n5E9/Ghuz+u6GkY9N2LaH7uQuWPiRH8zw+8MgioIp3mFC3qjm9qkFkyCMD4Ve4p+dY1Qmvkc+GwVzvNVezBMnv/hrF3/vanzKSrZVyrbgv0d2ZF+hSvJSaS7evSulup7iK67d3XaV501VHT6tl86H5Nu395JTD97baIRGGw11Ntq7M3XeO6+VVadmfYymjt+6HUfDG+2jNxsv7CctvOt/D0a396ueb77jT6H2zPloT63N88Zc9wZvWhsl+7X8KrKf7iW7LvmdwfPKrbU8++Zx/qyMpbt+a92dVVW8j2I/PaIfU0vF21atesXrvP4g/+HzPk+cWXc+VFSr9dpYdvotfB13t9Xx6MbzHHS/GSrRBH/qtfM68bvTXxt8tKn9tF4Utr3hb9ztDB6W3cGD1+2rcvdhte70K+vRa2fZqY/q3Y266voVqf36oLTqPzz8Wuvg1616Y+N8kH0eyDapW6ugVt1Z9gZdpT1o4e3fX8nvXv1H1H79obYHD1HHV7VuTZLx33i/5gd+ve76+PXrj49W/SHC59c6j7/WnZsVOR/e78eyW3/UB4OG1n59w/s01r820rIzcKJOX/3o9aVl96NFjou9I63br7827UEHn3OyaA8a+LMtD+8ndaYdfH34WB/4vHWPbMPXgq1G3vfxd1e8Tfu1snHfpHVnU1mTaxy9JteQnQefk+yL8PfHx2l4HbxPfI7XZnquH+Q7Sd2bDr5eB1/TgxRvH7zhc75F8Xn8Cv6OlQ93Kn20Xz2N2Kdb/76Iv2P83g98fclxO4Nf8Xfv9iX83R7i79zxk8/ZNSn+voktfuDjO7GNyTXF9uirK3y8Ddnm+q33u9fVu4OeZ3ceuZ3IvyodBtLIQO4wd72zKQ0LN24wdaNwg3dJ31UN6VozrO1PcoAspEumlmxYbQOkol6bKNk63omOO5vtNDB7+em2sQn/kYYndqhCx2NSHFhIiIiDwmrsR25/bjvk3RV+VOFt4wgHA1SX8Z8v/mSyE4Sa8Q/evojC4M3N3pkFMxLdXoJZtLNz8nMaQ8uStGdaVUWUZfOIvGtXJP2+UdVLMapB48rNqNqFGFVD5rVlUSHiqInl3zexfikmlgw4bo1LMaqhwBnVvBCj6pIKZ1TrUoyqm3AxVf5C1nceVkU6HKqyfCFWNSQZ0KrKpVgVAWYD8qXkWIYOmA7Il5JkGdZXG6uneFpdSpZlZgyCsHopiZWpA+YA8qVkVqYFmATIl5JaWYpWls4iX0qmJcsKYJhVLiXVkiXzqxnsKcx6KbmWLGmAKWxmxQswq/LVbOsEsfVierQsC1AZuJguLUv7ajvgFFY912xL1UvsfT3bbqyiVUvsKTzbXi3KxpC9WmfbrVW0Kmi31tn2a1FWhezXQueabFFWhezXQueaa1FxFXIIBjrXVItqZ0EOyELnmmkVrQraB4vONdOirArZB4suJdMC7YNFl5JpgfbBokvJrUD7YNGl5FagfbDoUnIr0D7Yr8wUOwurWspXc6sTxFX1UnIrUA1bvZTcSv5yL9YprHopuZWsAbZX1UvJrWQTUF1RLyW3ysftgFj1UnIrRZP2e7G+2tA6RZPgUlItJAOK2OqlpFqKCZkUXEqqhVTAwW3auaZa1CgsyOardq6pFmVVyOardq6pFmVVyOardq6pVtGqoM1X7VxTLcqqJTZftXPNvCgjQza0tHPNvIpWBU0KtHNNtSirgjZfzzXVMpUym6/nmmpRVoVsvurnmmpRVoVsvurnmmoVrQrafM360M/fqsXm6xdtfILWq36uiRdlY8jWq36uiVfRqqCtV/1cMy3KqpCtV/1sMy3ZLNOsZ5tqUWYFjQHnmmtRZoV9YJ1rskWbVZOvpZ2fr84qOEFbyzjX3Is2MmSaYJxr8kWZFTSnzebcXoBZIQUY41wTLtqskGqhcSkZF6uKgyHxsuqlZFysOZv8rHquGVfRqqz5xfyseq4JF2VVZO21YJUv2vgULdhzzb4oGzMqjvAj91yTr6JVdd0sK/cyzzX3KtoYdJ68ea6pF2VVyBnd5rlmXpRVIasPmOeaeFFWtYy9KAtY99G8lCwMdNa8eSlZGOisefNSsjDQWfPmpWRhJVYuNy8lCwOdQ29eShYGWwraupTEC7QUtHUpiRdsOXjrUjIv2MULrEtJvWCX2rDONduiuhJLFA6tc02+KCODKofWuWZftFkhRS7rXNMv2qyQiqx1rhkXbdaCeAgZac81AaOMbEFW3s+nRl6AXb9cJf4EuMrSueZgtF11QB1GzgY0nL9d5a/H15MYlk7D/uqP/ZfoSqn+3ZhFbkjZGV8Z/gZVe+J7M7xl4r6Ql+SSfceeVNLNUUAsvsAO8GdeO96nrm633KfXQTYF+LMvk2CFX4790cjFH6+GQWRH9jA+J3HnPPBnUXyhWhX/w5dek661Kw1/oRp+LW9f439k9xB7bIa9afuxb1x7Ea3cRfSJN8n2fnqZ8klcq+57VtOPFaTAqeLekzbzzq7bs8qsv+d2Ok1MnS2RgyjSwB4ecjz7Ftm5n9JNApB/C4i5P4hLpkfKwQFCp7j7gDTpACz44MuHohytaAPHB52r16IQ71JNMKkpV5WUlOxxQkLKzmYCUPpnY+EImKBh0tA1nS3n63HsNTTUbM/fQ4bWIVJkqjkJLcEBNAfmfp+1SStTcEGFllRSQh4EF8BcINn4cx42tAqUcnGdRw5iWcEIMCNZkdYyoJBpCUsGIeBPcq7/EftW2mI4IN+x/k09jTyRd3V92mqQGeqEfBIf03Ja113hDW0f+wvvOCMNySCc2lHkjsh2e+hOFiIQfBIIpFNgkX0klzboVFVhTY05zZ1Pi4EpD9XQtd/w52P1otmajcglxpjEiYegoxw6TFoqVvg9F2hFsx/ZIeGgMfIj7IIsTuDfwQtJUN2J6yTxIzmY4AOUj/w1TPSgpc8+8ckOHsL/XP2P5C81KjL58/QE0NrmIPC8SfwECSYj8uiIsBcdEiBm+wFiQFgQgAAHiKJGARkuaKEzh+UBNzDCSdL0EKD8AaAgGRQNWtDsL+duuHBCf46d3+wvh9nfgo8/gg+GYJHXpTo9H7Scue1bFx2s/PUq1Sh0sCravjZFDw2yCuqVzIsNWtKsTLJeMsEFMBcM+ULm9thQaOEyiwr10BbpB7j3GfIEVBjIv30xDAgSSiCBJURwjAO0jJn2am1bCRXBADQDTDECLB7Q4mXKRIZE6yofNSPYgGbDpBuMHOMDLVQmLBTGVSVJpYABGAaW1pCrRaeHgdYsk4ZCbeI7b8L50M5njXxgdYOfxvm0Bpnd9FI31pHSkHAXuu9+sBRdnLyFJa0wLiK/P3d50BhjKU/DA0N4zHi4Sy5LAAAMgGYck5Y48kALjXkfRRTkurNPNGjBBSwXhTkdsFzQImMeJ3wyTH8hqCiFCmomByAUiCE/ZlBUJtv0okt8K8AABkND1+qRUdfcmpnZDGgWGY+x69zFVn0Yea5oZ4LzwVIgVF5JJ6IVyrxdsdOkkPrYziJWQLPwlRkaKrenCGOUZRYr0n2rLvGBoAKYCpYygbhFCFqjTGSpTrBckDCxGruuGFHLXZ7KVpbMFwRSj7UvdW5I0Epl2oUhmCiTCU1iUIC4tSVpyVK4v1T3q/JeZsHovOAHA0OvTDuvBBSlQmGoR5aN4ggFLVom5ZqyDDPxhyJNU0TEkJgSCNGlY0PvZZ0bIYfGSBaGRAgwygADGceamNxCh0pLmKIzvEQUDIk5KZzXICmVoVOmoeAWH074H9j/BmM5KY43Py1KNmYj4XRopyPGLc/P6bTcuF+OTtz4ZTCgHysMzZGIQ6Mj82bhreABmgfLutbK4uGg7PhdcADMgZl1HMJ4/mApyiwSCALACdDLE5bUQ3Um8QlJpcm/usvp3B79LaAAhsJSzNIkaPVQaUnpm0CiRCR00DbCwTqSkvA89BPCOrZWKj8ONFo/rNmzd5uMbnsOgin+1Zrho/SWYiA97/ErOioOXWDoCgqvYUwaQ0p0QtedsUiQ/urYjnhGQBPBHLigKbyIoOXFPDY8pr7Cf2JKAlEqEJ4FVWZ1NWjcnhSM+dgZDbdB6H/g6xU8lMiDwRj0yo8GWnO8s8mjImNCeB/U+zprNhW/ViNDYQzdeOR7NmLFnWLLk2iQDGQROMDigBiKAr9gQMuOLW8WhMT/Xoh3y6hYjO25gAEcBvagBH440Kqj6JMswe/MwQj8vE7LivfuS+guxsLx0I5nDUjg53haSrx3F248VdJ3xbQncO8fH4rAjQWdlhObPiHhyZ+NxBQ4eBbIMARI/9MiYuL/O9sTDQBo7zMHH/DzPS0XJr4frIKUAKELgCOgQ6pCOkMjXC6iuPMg6UMQ7od1//GuRX4w0BLhTj+SAAEUhC8MOOEHAq0WpiCIXuUSSGCNM+Hne8aIxGRmUlKOzQlms6RUhk1mLkjOJK61JP3lJKNRnO3O8bp16fv4xPjAKFntMR3a6DCO+zdZFTWZFLc9RHbK/AjZyUb5jukXIR8v4BkGy9nIJZcn0/Sxod1ZnVL5zPE03Cdwv5rd6lkVNolRn1HJxoTt+j/b9nv+p1UhyqSJKozq/pQkCdioiznxD6q/+Gti6Wr6Rn2E78UrVEleKs05WaCs5j9We/cr6Z8bL6jgn27/Ydx48MifJvnfc8Xr4F+1QVdbv5ANtcdq57HxMxaki//IJ2o9q3O3IHtWft73B5NO5Udv+OuZHLF5//2+0Xxwm9rj5rXxj1ev/Ljv3tzd9yvIrFT1742nxcOb50XWuH1TH44mY20wN+61+t1HtdL4R9V7LeXB+TEehTfP/2DfNmcVGVWtH9r4P6uG/4oBtN8efbx906x3vjdf2+bj5GG0wv6terfr4RP+/WvhTeKvVv1+/6A1wrfvnucRK5J/B8k6BUaGhp8f2ydItjZ2RlVevn8vqjCCyimWT9cZg9d2b/44apMoYknklidhmtzPztvKX7j7ESHbmb7RT/scmuInCjky8ynz1QjBJRwwymgp2XTjPc9JJ/CcwRhuRmIvqlyRKt5EIZLqvj0JvDjGS2Qua/xeL/Q9ssRt7Sqr9h1vzruZfnbal+rBvFL+rgc1RkA/jQdphacwxYC3I/63m3SnGEBqZrWm8pLL6tHyZ9xq8xu07FMAoieAgAZCO9oFwI+Hg+t2dAQH0Bww1nMygdZvMY7OSr0TPADz8IViy/ziwsFZqXkBLMEDNA9fqLHMDwhaGopd4IjKNWWgcHRhaZMbCPR4saYsAAAGAGnSkXnK/AD4ZNGOtr1xQzLHQIwgAekusNSCssdazsfgRgKt7OUk9JZRusC8QKEcFApZJUN34keGSSuHjVE8vKTjRnbcMyB4AObBNI/KTvx4oHXIPFI0g3BqJ6POZqKULjgXCqsviB8ItP6YBobH5AoU6Wb3uIIEQBLICsJHlvziBwZDiMTXmywS2XFnS4EDNA5Hc0x+FZRNxvIcw0CMPwKHgLUqi4V4ef3QWsHbdeXTsQAvYTwibeGP3KEdCio+oYKH+qCq2hH1QeE2m9mkhch9SNLZq0Su/ntbWluKF/yyd6GR/MgVg5zB2TH0I70aisqNncPreQhM/ixMNGl//VlGdSWOMYZRdE/w8WfxQQrq7PDBGFXFD48D63ukT548pGRDlwUasGgUFgeCRMOihc+6v4jtq0ihO5/E9VXIuMjtWPo4pIxC7EdF+iv9Hdmh50aLv3fHUOLTxAMoSf+Kswxji2VgCcb45kWyZFFNYAorVea1NqFF66et2QJ/e8JCOhcj4YlsiMaEtkW8rKk7yp9Q0l9HORJFAuFByjrUYUCi9df7JCp9Bs7Kx98sezse8RG/KxZaL4GXYsOYkXtzE2ktpkibhZ3lLI1BMRykfUwYedknyh2J0gIlQFNYRJORTPGDhtZy84kgaYmxtOEcZGMGBB7AeDCqUSKJ2zPo8NhS4fpPXM8jVyLV5tRP1TiLW1w4uvyJwAEaB0NCR1JnfjgcWv2k+iwwgMYA7U9RozMUfhjQ0mvSvZMFhYqgAZoGXS+NBlppvQ0mJI+IoRAggIJgIlYRe6bzjd93viLRWmqhgXAjEIBGoLA+Gj12kFcsULJz0TiIqYngGFh6Se1EJRO8aAx+CQyAMSB1yj5fN5UfBgcnrmcPB5E2gOPAKFbGD4CjM9Z/CgCgAbDQkb4JfjgcFBX/ERgAY0Cq1h2pX8mPg6OqouABngcNkgBaSGwsHOF0cKeb1pH5I/wQOCQiptMHku7GejzUSmABi4Ws0K0CmVdfoyLRAmLfjpc6E8ve8Z9MRPUuKccKGvEa+o8ROwCCYACUgXh5s08lA44M0Ariw2wUCAag4wDSjhU85McAQz5MRq358TjsShgGK/FoAEfi+DJY/JCgpcRWPkB6bM9GEzcZ3jhyw6tsFOw0WC7E0wMaExMdK4mYC8N7mJygOD4GkMIkr2GSrJsqYICFodAXySh9xS9m0HLjXUgsIyAAhqDQE8lILvlBwKiJ6ZL2pPRXUvRsIebTQPMQd0lCMkCrjRkDbX+2XOMDdGxHcADOAWvhJH4U0IJjMj8PbxvENYyE+2HdbzHKHfJzP60y5u6/x6mlPfPEHF1wBuJuSK2ktoFC6405Eo3JxJ8vtvOe8jSiT6ZDkVxTlEIsBxhGP2We950eEcaARnvmEMdLlVSPEgQAE5D1ScIECVqMbAYhqRAh3S+HQzccJnP7kzCRz5q8CYOl6LkEZ4PVc6nwmqmvKLQqmfReC7cfdPspOqxluTA51mLVQZVh1uVRFIboaJMCMUlgGMeTYQQRwEQgpsYAxgRDe/RnzliAAA6CwRAZwDCg1cckNOxU23DizwgsYLGQWRNi4LigFclOEA95SvdMWpM4xSSb7Nm7GAnFv+IGkr7QqOCXZ3yyZE8/jhbJ4IeEjN3UQ3ABzAWiu7TzShmn54LWLZ+DQBQzhXc7qyGh8AoHiNYmxVoL5QLAbjLwI4AhPS7DBb5u4XnoxiJryTYFqK2IaAEyr14seCiHB00/uk4XGB4HJ1kLOkqio7iKW4lwHJ2ALSApBxK86dhgajBIDi3pIxgpmZHCYm9lMnJoRR/BRklsmAxxCoyGg3Ugs5BxR6bwPogOcHAukGzuM8DEhBcXjDV5GFzUg5UYNgNPhmodTVq4qduIVjH7Thjs9HWk/R9Jb5j01zwS47H5K1zF4TMsnUO1ODGh0hJnAQIyZQtjIJEGBr5UsSpBCUhodClZ2TB5IUFrnvfuwv+gIkOCRNKLLtgoiw2TIW1kC8Seng1aB6XYSOZ4SmSreHyA85AfYy9W8OoYVRnC5yRe7mh/tS3BATgHRLeAbEjQKmfeuLwTT4YyCGCpE/z8z5ro7b77wXIhCCiJACTT03RkXkt6KiotT3aToRLC+6V4X4OcoqMelSPvBQKfIMBFbtINBgISNwQOKo8N4Xpo1xuscVL8XE9Li4W7vy4QAEegsDoVozHADQiN1hWLgx4EEOBAFBaoAgWCMZJyH4hHAQQ4EJa1N7iBIRjwA4KWEmsT1yaSct19sZdkZIOUXL3ggnfqIH2h3citx1qjRcTGyBfuL839zLYjP/czlEM3So4qYkH5MCDmuHteMDCWpwnmG+H+0tyvM/qe+bmf1hDvsBFc4f/S/E+aiJAEMHTEh/t+7/4qn5BduWngX/80fol1zz/PGNLXpHsevyRf8yRJhIH2CGENQDBYxaVPggdjhnav1xYklECCKaslgsAYzNhoN2qDVq8rYICHQc3uzDJg0Gm1sV2pNkRYKIMEq8SooDNUxkr3sSJAKAOE/XaCKjNEJX4k0PLiY6vxJDgo49GglgkCrS72W/VGtbLNKGq9bhe3HAQb5bchgdlgSI+DX+2GeFyUk1gWeiGyAU0wLNDKY71Xe+g0uiIw/AGBARgGWoX6x90MAzscESlyjG3mLCPe9QCn2MXkyP+zbEj7bCjGadhQTGmPDZlVZhYTRMOhydmev4WHQTcua9lEBykii9rY+L+mv46Li94FYsEr/sq1UmhlshdQ1njp1gbdzEyLM4gZMF96hgTkm0bEeYZ0qgYFRYR8bPwTt/HRBt3UzEpETXznTeDxKR4naE9QcyOMIyyY3FBg9XGLspKAzwpLRf8SBlk/DQ0PCzfsDV+TlsLEHrqT5KO9uUsKC/vkfyPf9kJ7urieudH19XVyjok/e0t2HUfRHJ+wEmsXTXs+v979QLwVPSQ7KRrZTSObNNaueOMia8teL9697akGdui56WX+33Biz9IItYVY37FwSvgOsWFAlgEepYgUgGRzvJNDKDQLTck0JK3Agsrm/xTPDkVSr7MsYPv8YGjZSLlGjDRE/vdL6eKXO3gcCh5H59l0khWXpdXYFWtjcX+uqAVIVIMxXoZfq5Mx5SatVC8lFaqlFg4pzd5SNEB5P1R09AUSFF6KhcGYgZNkHknJ+rvEoAICzi0LxBg+9XklMG4ph0n3iu/XlLwTOHB+OhSzDoKD+mlD0+JGA901ni+0meYecT0fe0Q0q3jRE3dE5m2nzVSBCmf9KvvIJ3XAFG6zcUxa0awHS2JQRXI+EyjO2q+nmXRVrO9WmJX5hdLUvBoNJi1aKiA3+p/k6zTnlLZUDsh3rH9TuaiSioKuFUMzdUXSTUvXCuPmDOasTNr/8kn8f1CUzKt6vcQPBezbb6HrLMOFHxcH9JKVVaUw3Q1/GRRbMP14x41s+igOtpobuqOrmnJVoY5RwG6rIMinURC2XqehPdjzdooAoGTzKreL5zJCu8aq2Wadwsm03HjwJo99cfAeJLeZvYyCRWrkfxn+d26rr96QJ4m/lnmNdn4KvjDpLI01uSG7B3/PFfT0FlnE210wTuHwwrhDZvVMbhH1kDyXDjXLUq8GiYSxiCt13RX+f9ufbRe6r8znE3JFsRzct1/s0KdibPGACyc5XL40OplDi417UYFVo/NrjoGVFt8O3s0XGFhVuiHDL7AerD/zEyS+/u8mOBAd76qqHVtnhZsIZtEiWNbvLsgonwyWRs6PhYM1aETtmfJZ0CSztNE5Fi1/pWTcCDLKJ0PNh23C0HBwOb+stf0gqCifCoMxIpwfEwelsvY2bdvrXWsLRkpnRAftcLUYA/vSAqhxup9xUhdklE8GMo4tEKoC9cJYtCpYtZ034i0iCcXSed2duJEof/MHcGNIez34ZXLzRa1RsPOHsMOsqwdGy8Hq3PcCjfLRKNRqLjOsMCrrZCX82V21AhdwXHSjLEUVSYcU1WwRyf2+f8FK2aywK/jx4+OgynqLjyaAKB0IE8nHnzW84DgotDbIenGCjbLZ0FF5bByVXUUA+TMgsQBVtbwg7WEsROj4E6iwFPO4MsKLkYPKa8ZIM2+fVgUr5bOiS2X19SKJlltTVpqCjPLJsJgaGS8WaAl1vxOvlocNUQWsfDhkSdFgc9mDomkGyC+BxR+AhQb6ADk02LTY7xLa9OhrQQc8Hda+cq4AsiIzxFJRiwG8GJyqMp4avKpyIJmhgMaLGAmvw3rdOLreJT8GaKEzXclIQAAKwReGFfODgFY0b5JZrwICWAjYI4j5OZ7WLB9mnnB9Ga5nDRPm53haiGwHpHpG82E2if9Ik4R0hdO2PxO1P6GR0CX9WELADxBafawv5xPsMNE2gAcBgbYGaLExG5op9fEfThSXCycfE4XawFEwJNgWAq0sXl9fr3x8ZoxAXrlvkT8w2qQKl+ACmgvmmN2sysPpqaClxcEynOUQ3BMDk3hhSaSIDrGoVCPtipW/EI8PcDZYS2NnC1OenI2seMIOGx1iCzuuEnIXBsREScgQHMBywFojm9uTQ6HVxWoYF3pJlh5phgFZbiTrjHDJ4JjkHTKrSMABDIeVrUm59wCRecFBy474oif2PC4JTpYZwJYhUxEFBaAUmAgyyVRo3bGxnttxJBAMlMaADqlEKbQE2VjHmpOQoEvxPmvQLD/v0zpkNgdduL+UZoDCWqSOIwC0ztj0yQOgee/OJ/HMckEALAGskY38/M+YHJ6V381ygzQSSGKqXjlpI3tiHj8kGIMZJ65NnglP9iY1aKF/ahAEk8gXjwtoNmRJYTQXDJ0XGrTuWMnqkQrXQ7ueNZqVW1RAjBGKkyAuRuzEuzbr/sLJV7dN1gQRSAAjkZUx3UOCVzRAtMLoTEmzwcdmcW3yV/BC+IhHPZMpEsE8XWaqsIdNJlOk1f+nttPrJ6X/BUAJQEb8QwGE9so1m1cnGRadj4PJ17y8Zqwwo/KDilYmKQz2V41cjf3I7cdVsFB9FdrEqeNoSlbMlAtckAUi45+DEB24c09gWFkuLEduIvpmRawR5tl+v2dXWus7V7vqypGiJ2wry6ewMq2m7U8U+3kl5pfCLalkFdX1owt781o5CyFaadsn43GbUwkywMnQ1b31Fxn5Nj8yGBON42kgUj9ZFSmtBmqTekkCDK4tajkvI/FZhxxrfYrToECrcelsEMFCGSzsrxsTBwk4GqYvlY/Ndy362UC9h545v2n0h99YiFAkLMb2nPzpT23P3fFtPDbwLlj4cRaG6sMgioIp3iFeupMM+/DiJuCOdV/in4N82It5vAh5/cVfk4ZjNT5lJdsqZVvw3yPCLKokL5VmvIx8dT0lmeHdbVd53lTV4dN66XxIvn17Lzn14L2NRmi00VBno707U+e981pZdWrWx2jq+K3bcTS80T56s/HCftLCu/73YHR7v+r55jv+FGrPnI/21No8b8x1b/CmtVGyX8uvIvvpXrLrkt95fV65tZZn3zzOn5WxdNdvrXu3VRXvozz//P5hP1lLsq392sDne54//xzVhsizWq8Vr1OrbLp+Zd2rtcgSubfV8ejG857xUYf9yrpV/+UNapV1t1ZRWo2V1xn88Dr9aqdVbymt+lv2Hv402daQ8H+beD/82Y5f1fE3+Bjdfn+3lQer5Xenz9NffuvmeT68WeHXnU3vqaU8v7b89odqthG23odK/HWSBrWqW7iVtC3RYhZX7EF0i1phpIP/xdL21D2gPw217uOHu6xHTv/N7Hzb1NE3pNLCw5WiT7LgsHcz6P9ZBtkb35KFk8jyV9hG6+2b+C+P/B75thfa08V14XBOfkNsP4FeJNMghSG2m/7b087cKDshNkhyzuSdg5sLd/zIXozzxC1YRhN/5qajg9ONO5lbIfJPClEhTFx4MGrka3MVQ0L+RhZ/pmtszfn4euUOJ4EXLK5Hob3yA0Rnj3JFq1byIJ4qGhod7Pf325kfTj+oTvEEkPYzS8W6NugHAGIsHJZt+xfs45dhQLDI37shxusEI5fs8f8=&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(238, 238, 238);"><defs><clipPath id="mx-clip-25-144-112-26-0"><rect x="25" y="144" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-176-112-26-0"><rect x="25" y="176" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-208-112-26-0"><rect x="25" y="208" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-241-227-35-0"><rect x="25" y="241" width="227" height="35"/></clipPath><clipPath id="mx-clip-25-273-112-26-0"><rect x="25" y="273" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-305-112-26-0"><rect x="25" y="305" width="112" height="26"/></clipPath><clipPath id="mx-clip-25-337-112-26-0"><rect x="25" y="337" width="112" height="26"/></clipPath><clipPath id="mx-clip-202-237-10-20-0"><rect x="202" y="237" width="10" height="20"/></clipPath><clipPath id="mx-clip-132-144-192-26-0"><rect x="132" y="144" width="192" height="26"/></clipPath><clipPath id="mx-clip-132-176-195-26-0"><rect x="132" y="176" width="195" height="26"/></clipPath><clipPath id="mx-clip-132-208-192-26-0"><rect x="132" y="208" width="192" height="26"/></clipPath><clipPath id="mx-clip-226-241-109-26-0"><rect x="226" y="241" width="109" height="26"/></clipPath><clipPath id="mx-clip-132-273-192-26-0"><rect x="132" y="273" width="192" height="26"/></clipPath><clipPath id="mx-clip-132-305-192-26-0"><rect x="132" y="305" width="192" height="26"/></clipPath><clipPath id="mx-clip-132-337-211-26-0"><rect x="132" y="337" width="211" height="26"/></clipPath><clipPath id="mx-clip-385-112-82-26-0"><rect x="385" y="112" width="82" height="26"/></clipPath><clipPath id="mx-clip-385-144-92-26-0"><rect x="385" y="144" width="92" height="26"/></clipPath><clipPath id="mx-clip-385-176-82-26-0"><rect x="385" y="176" width="82" height="26"/></clipPath><clipPath id="mx-clip-385-208-92-26-0"><rect x="385" y="208" width="92" height="26"/></clipPath><clipPath id="mx-clip-385-241-82-26-0"><rect x="385" y="241" width="82" height="26"/></clipPath><clipPath id="mx-clip-385-273-92-26-0"><rect x="385" y="273" width="92" height="26"/></clipPath><clipPath id="mx-clip-385-305-108-26-0"><rect x="385" y="305" width="108" height="26"/></clipPath><clipPath id="mx-clip-385-337-102-26-0"><rect x="385" y="337" width="102" height="26"/></clipPath><clipPath id="mx-clip-506-112-147-26-0"><rect x="506" y="112" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-144-147-26-0"><rect x="506" y="144" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-176-147-26-0"><rect x="506" y="176" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-208-147-26-0"><rect x="506" y="208" width="147" height="26"/></clipPath><clipPath id="mx-clip-506-241-102-26-0"><rect x="506" y="241" width="102" height="26"/></clipPath><clipPath id="mx-clip-506-273-138-26-0"><rect x="506" y="273" width="138" height="26"/></clipPath><clipPath id="mx-clip-506-305-137-26-0"><rect x="506" y="305" width="137" height="26"/></clipPath><clipPath id="mx-clip-506-337-128-26-0"><rect x="506" y="337" width="128" height="26"/></clipPath><clipPath id="mx-clip-378-432-158-26-0"><rect x="378" y="432" width="158" height="26"/></clipPath><clipPath id="mx-clip-378-496-122-26-0"><rect x="378" y="496" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-528-122-26-0"><rect x="378" y="528" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-561-122-26-0"><rect x="378" y="561" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-593-152-26-0"><rect x="378" y="593" width="152" height="26"/></clipPath><clipPath id="mx-clip-378-625-122-26-0"><rect x="378" y="625" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-658-93-26-0"><rect x="378" y="658" width="93" height="26"/></clipPath><clipPath id="mx-clip-378-690-122-26-0"><rect x="378" y="690" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-722-122-26-0"><rect x="378" y="722" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-754-122-26-0"><rect x="378" y="754" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-787-122-26-0"><rect x="378" y="787" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-819-122-26-0"><rect x="378" y="819" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-851-122-26-0"><rect x="378" y="851" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-916-122-26-0"><rect x="378" y="916" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-948-122-26-0"><rect x="378" y="948" width="122" height="26"/></clipPath><clipPath id="mx-clip-378-883-122-26-0"><rect x="378" y="883" width="122" height="26"/></clipPath><clipPath id="mx-clip-548-432-117-26-0"><rect x="548" y="432" width="117" height="26"/></clipPath><clipPath id="mx-clip-548-496-144-26-0"><rect x="548" y="496" width="144" height="26"/></clipPath><clipPath id="mx-clip-548-529-142-26-0"><rect x="548" y="529" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-561-142-26-0"><rect x="548" y="561" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-593-122-26-0"><rect x="548" y="593" width="122" height="26"/></clipPath><clipPath id="mx-clip-548-625-142-26-0"><rect x="548" y="625" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-658-142-26-0"><rect x="548" y="658" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-690-142-26-0"><rect x="548" y="690" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-722-142-26-0"><rect x="548" y="722" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-754-142-26-0"><rect x="548" y="754" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-787-142-26-0"><rect x="548" y="787" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-819-142-26-0"><rect x="548" y="819" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-851-142-26-0"><rect x="548" y="851" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-883-142-26-0"><rect x="548" y="883" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-916-142-26-0"><rect x="548" y="916" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-948-142-26-0"><rect x="548" y="948" width="142" height="26"/></clipPath><clipPath id="mx-clip-405-1068-239-20-0"><rect x="405" y="1068" width="239" height="20"/></clipPath><clipPath id="mx-clip-405-1105-258-20-0"><rect x="405" y="1105" width="258" height="20"/></clipPath><clipPath id="mx-clip-745-112-92-26-0"><rect x="745" y="112" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-144-92-26-0"><rect x="745" y="144" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-176-72-26-0"><rect x="745" y="176" width="72" height="26"/></clipPath><clipPath id="mx-clip-745-208-92-26-0"><rect x="745" y="208" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-241-92-26-0"><rect x="745" y="241" width="92" height="26"/></clipPath><clipPath id="mx-clip-745-273-72-26-0"><rect x="745" y="273" width="72" height="26"/></clipPath><clipPath id="mx-clip-745-337-72-26-0"><rect x="745" y="337" width="72" height="26"/></clipPath><clipPath id="mx-clip-854-112-162-26-0"><rect x="854" y="112" width="162" height="26"/></clipPath><clipPath id="mx-clip-854-144-162-26-0"><rect x="854" y="144" width="162" height="26"/></clipPath><clipPath id="mx-clip-854-176-162-26-0"><rect x="854" y="176" width="162" height="26"/></clipPath><clipPath id="mx-clip-854-208-162-26-0"><rect x="854" y="208" width="162" height="26"/></clipPath><clipPath id="mx-clip-854-241-162-26-0"><rect x="854" y="241" width="162" height="26"/></clipPath><clipPath id="mx-clip-854-273-152-26-0"><rect x="854" y="273" width="152" height="26"/></clipPath><clipPath id="mx-clip-854-337-85-26-0"><rect x="854" y="337" width="85" height="26"/></clipPath><clipPath id="mx-clip-745-432-222-26-0"><rect x="745" y="432" width="222" height="26"/></clipPath><clipPath id="mx-clip-745-464-232-26-0"><rect x="745" y="464" width="232" height="26"/></clipPath><clipPath id="mx-clip-745-496-222-26-0"><rect x="745" y="496" width="222" height="26"/></clipPath><clipPath id="mx-clip-745-529-222-26-0"><rect x="745" y="529" width="222" height="26"/></clipPath><clipPath id="mx-clip-745-561-222-26-0"><rect x="745" y="561" width="222" height="26"/></clipPath><clipPath id="mx-clip-1005-432-408-26-0"><rect x="1005" y="432" width="408" height="26"/></clipPath><clipPath id="mx-clip-1005-464-408-26-0"><rect x="1005" y="464" width="408" height="26"/></clipPath><clipPath id="mx-clip-1005-496-262-26-0"><rect x="1005" y="496" width="262" height="26"/></clipPath><clipPath id="mx-clip-1005-528-262-26-0"><rect x="1005" y="528" width="262" height="26"/></clipPath><clipPath id="mx-clip-1005-561-298-26-0"><rect x="1005" y="561" width="298" height="26"/></clipPath><clipPath id="mx-clip-745-658-82-26-0"><rect x="745" y="658" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-690-82-26-0"><rect x="745" y="690" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-722-82-26-0"><rect x="745" y="722" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-754-82-26-0"><rect x="745" y="754" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-819-82-27-0"><rect x="745" y="819" width="82" height="27"/></clipPath><clipPath id="mx-clip-745-851-82-26-0"><rect x="745" y="851" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-883-82-26-0"><rect x="745" y="883" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-916-82-26-0"><rect x="745" y="916" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-948-82-26-0"><rect x="745" y="948" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-980-82-26-0"><rect x="745" y="980" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1013-82-26-0"><rect x="745" y="1013" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1045-82-26-0"><rect x="745" y="1045" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1077-82-26-0"><rect x="745" y="1077" width="82" height="26"/></clipPath><clipPath id="mx-clip-745-1109-98-26-0"><rect x="745" y="1109" width="98" height="26"/></clipPath><clipPath id="mx-clip-845-690-132-26-0"><rect x="845" y="690" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-658-132-26-0"><rect x="845" y="658" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-722-132-26-0"><rect x="845" y="722" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-754-132-26-0"><rect x="845" y="754" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-818-195-28-0"><rect x="845" y="818" width="195" height="28"/></clipPath><clipPath id="mx-clip-845-851-132-26-0"><rect x="845" y="851" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-883-132-26-0"><rect x="845" y="883" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-916-132-26-0"><rect x="845" y="916" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-948-132-26-0"><rect x="845" y="948" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-980-132-26-0"><rect x="845" y="980" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-1013-132-26-0"><rect x="845" y="1013" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-1045-206-26-0"><rect x="845" y="1045" width="206" height="26"/></clipPath><clipPath id="mx-clip-845-1077-132-26-0"><rect x="845" y="1077" width="132" height="26"/></clipPath><clipPath id="mx-clip-845-1109-208-26-0"><rect x="845" y="1109" width="208" height="26"/></clipPath><clipPath id="mx-clip-1105-893-102-26-0"><rect x="1105" y="893" width="102" height="26"/></clipPath><clipPath id="mx-clip-1105-926-102-26-0"><rect x="1105" y="926" width="102" height="26"/></clipPath><clipPath id="mx-clip-1105-958-102-26-0"><rect x="1105" y="958" width="102" height="26"/></clipPath><clipPath id="mx-clip-1105-990-102-26-0"><rect x="1105" y="990" width="102" height="26"/></clipPath><clipPath id="mx-clip-1215-893-132-26-0"><rect x="1215" y="893" width="132" height="26"/></clipPath><clipPath id="mx-clip-1215-926-188-26-0"><rect x="1215" y="926" width="188" height="26"/></clipPath><clipPath id="mx-clip-1215-958-112-26-0"><rect x="1215" y="958" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-990-112-26-0"><rect x="1215" y="990" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-112-112-26-0"><rect x="1105" y="112" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-144-112-26-0"><rect x="1105" y="144" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-176-112-26-0"><rect x="1105" y="176" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-208-112-26-0"><rect x="1105" y="208" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-241-112-26-0"><rect x="1105" y="241" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-273-112-26-0"><rect x="1105" y="273" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-305-112-26-0"><rect x="1105" y="305" width="112" height="26"/></clipPath><clipPath id="mx-clip-1105-337-132-26-0"><rect x="1105" y="337" width="132" height="26"/></clipPath><clipPath id="mx-clip-1245-112-141-26-0"><rect x="1245" y="112" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-144-170-26-0"><rect x="1245" y="144" width="170" height="26"/></clipPath><clipPath id="mx-clip-1245-176-177-26-0"><rect x="1245" y="176" width="177" height="26"/></clipPath><clipPath id="mx-clip-1245-208-168-26-0"><rect x="1245" y="208" width="168" height="26"/></clipPath><clipPath id="mx-clip-1245-241-141-26-0"><rect x="1245" y="241" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-273-141-26-0"><rect x="1245" y="273" width="141" height="26"/></clipPath><clipPath id="mx-clip-1245-305-122-26-0"><rect x="1245" y="305" width="122" height="26"/></clipPath><clipPath id="mx-clip-1245-337-132-26-0"><rect x="1245" y="337" width="132" height="26"/></clipPath><clipPath id="mx-clip-1105-657-92-26-0"><rect x="1105" y="657" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-690-92-26-0"><rect x="1105" y="690" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-722-92-26-0"><rect x="1105" y="722" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-754-92-26-0"><rect x="1105" y="754" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-787-92-26-0"><rect x="1105" y="787" width="92" height="26"/></clipPath><clipPath id="mx-clip-1215-657-112-26-0"><rect x="1215" y="657" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-690-112-26-0"><rect x="1215" y="690" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-722-112-26-0"><rect x="1215" y="722" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-754-112-26-0"><rect x="1215" y="754" width="112" height="26"/></clipPath><clipPath id="mx-clip-1215-787-112-26-0"><rect x="1215" y="787" width="112" height="26"/></clipPath><clipPath id="mx-clip-1084-76-165-26-0"><rect x="1084" y="76" width="165" height="26"/></clipPath><clipPath id="mx-clip-725-76-165-26-0"><rect x="725" y="76" width="165" height="26"/></clipPath><clipPath id="mx-clip-369-76-165-26-0"><rect x="369" y="76" width="165" height="26"/></clipPath><clipPath id="mx-clip-5-76-165-26-0"><rect x="5" y="76" width="165" height="26"/></clipPath><clipPath id="mx-clip-4-397-165-26-0"><rect x="4" y="397" width="165" height="26"/></clipPath><clipPath id="mx-clip-365-397-165-26-0"><rect x="365" y="397" width="165" height="26"/></clipPath><clipPath id="mx-clip-725-397-165-26-0"><rect x="725" y="397" width="165" height="26"/></clipPath><clipPath id="mx-clip-1085-621-165-26-0"><rect x="1085" y="621" width="165" height="26"/></clipPath><clipPath id="mx-clip-725-621-165-26-0"><rect x="725" y="621" width="165" height="26"/></clipPath><clipPath id="mx-clip-191-1-273-52-0"><rect x="191" y="1" width="273" height="52"/></clipPath><clipPath id="mx-clip-165-1109-142-26-0"><rect x="165" y="1109" width="142" height="26"/></clipPath><clipPath id="mx-clip-25-1109-132-26-0"><rect x="25" y="1109" width="132" height="26"/></clipPath><clipPath id="mx-clip-745-305-72-26-0"><rect x="745" y="305" width="72" height="26"/></clipPath><clipPath id="mx-clip-854-305-152-26-0"><rect x="854" y="305" width="152" height="26"/></clipPath><clipPath id="mx-clip-378-464-142-26-0"><rect x="378" y="464" width="142" height="26"/></clipPath><clipPath id="mx-clip-548-464-115-26-0"><rect x="548" y="464" width="115" height="26"/></clipPath><clipPath id="mx-clip-845-787-132-26-0"><rect x="845" y="787" width="132" height="26"/></clipPath><clipPath id="mx-clip-745-786-82-26-0"><rect x="745" y="786" width="82" height="26"/></clipPath><clipPath id="mx-clip-132-112-192-26-0"><rect x="132" y="112" width="192" height="26"/></clipPath><clipPath id="mx-clip-25-112-112-26-0"><rect x="25" y="112" width="112" height="26"/></clipPath><clipPath id="mx-clip-130-781-10-20-0"><rect x="130" y="781" width="10" height="20"/></clipPath><clipPath id="mx-clip-100-140-10-20-0"><rect x="100" y="140" width="10" height="20"/></clipPath><clipPath id="mx-clip-25-432-132-26-0"><rect x="25" y="432" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-464-132-26-0"><rect x="25" y="464" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-496-132-26-0"><rect x="25" y="496" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-529-132-26-0"><rect x="25" y="529" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-561-132-26-0"><rect x="25" y="561" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-593-132-26-0"><rect x="25" y="593" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-625-132-26-0"><rect x="25" y="625" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-658-132-26-0"><rect x="25" y="658" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-690-132-26-0"><rect x="25" y="690" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-722-132-26-0"><rect x="25" y="722" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-754-132-26-0"><rect x="25" y="754" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-787-132-26-0"><rect x="25" y="787" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-819-132-26-0"><rect x="25" y="819" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-851-132-26-0"><rect x="25" y="851" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-883-132-26-0"><rect x="25" y="883" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-916-132-26-0"><rect x="25" y="916" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-948-132-26-0"><rect x="25" y="948" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-980-132-26-0"><rect x="25" y="980" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-1013-132-26-0"><rect x="25" y="1013" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-1045-132-26-0"><rect x="25" y="1045" width="132" height="26"/></clipPath><clipPath id="mx-clip-25-1077-132-26-0"><rect x="25" y="1077" width="132" height="26"/></clipPath><clipPath id="mx-clip-165-432-142-26-0"><rect x="165" y="432" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-464-142-26-0"><rect x="165" y="464" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-496-142-26-0"><rect x="165" y="496" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-529-142-26-0"><rect x="165" y="529" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-561-142-26-0"><rect x="165" y="561" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-593-142-26-0"><rect x="165" y="593" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-625-142-26-0"><rect x="165" y="625" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-658-142-26-0"><rect x="165" y="658" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-690-179-26-0"><rect x="165" y="690" width="179" height="26"/></clipPath><clipPath id="mx-clip-165-722-151-26-0"><rect x="165" y="722" width="151" height="26"/></clipPath><clipPath id="mx-clip-165-754-142-26-0"><rect x="165" y="754" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-948-173-26-0"><rect x="165" y="948" width="173" height="26"/></clipPath><clipPath id="mx-clip-165-819-142-26-0"><rect x="165" y="819" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-851-142-26-0"><rect x="165" y="851" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-883-142-26-0"><rect x="165" y="883" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-916-142-26-0"><rect x="165" y="916" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-980-142-26-0"><rect x="165" y="980" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-787-142-26-0"><rect x="165" y="787" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-1013-168-26-0"><rect x="165" y="1013" width="168" height="26"/></clipPath><clipPath id="mx-clip-165-1045-142-26-0"><rect x="165" y="1045" width="142" height="26"/></clipPath><clipPath id="mx-clip-165-1077-148-26-0"><rect x="165" y="1077" width="148" height="26"/></clipPath><clipPath id="mx-clip-485-18-448-26-0"><rect x="485" y="18" width="448" height="26"/></clipPath><clipPath id="mx-clip-1105-819-92-26-0"><rect x="1105" y="819" width="92" height="26"/></clipPath><clipPath id="mx-clip-1105-852-92-26-0"><rect x="1105" y="852" width="92" height="26"/></clipPath><clipPath id="mx-clip-1215-819-112-26-0"><rect x="1215" y="819" width="112" height="26"/></clipPath><clipPath id="mx-clip-1216-852-112-26-0"><rect x="1216" y="852" width="112" height="26"/></clipPath><style type="text/css">@import url(https://fonts.googleapis.com/css?family=Architects+Daughter);&#xa;</style></defs><g><image x="377.08" y="1066.5" width="24.83" height="24.83" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHZlcnNpb249IjEuMSI+PHBhdGggc3Ryb2tlPSIjMjliNmYyIiBmaWxsPSIjMjliNmYyIiBkPSJNMTUuNTUgNS41NUwxMSAxdjMuMDdDNy4wNiA0LjU2IDQgNy45MiA0IDEyczMuMDUgNy40NCA3IDcuOTN2LTIuMDJjLTIuODQtLjQ4LTUtMi45NC01LTUuOTFzMi4xNi01LjQzIDUtNS45MVYxMGw0LjU1LTQuNDV6TTE5LjkzIDExYy0uMTctMS4zOS0uNzItMi43My0xLjYyLTMuODlsLTEuNDIgMS40MmMuNTQuNzUuODggMS42IDEuMDIgMi40N2gyLjAyek0xMyAxNy45djIuMDJjMS4zOS0uMTcgMi43NC0uNzEgMy45LTEuNjFsLTEuNDQtMS40NGMtLjc1LjU0LTEuNTkuODktMi40NiAxLjAzem0zLjg5LTIuNDJsMS40MiAxLjQxYy45LTEuMTYgMS40NS0yLjUgMS42Mi0zLjg5aC0yLjAyYy0uMTQuODctLjQ4IDEuNzItMS4wMiAyLjQ4eiIvPjwvc3ZnPg==" preserveAspectRatio="none"/><rect x="7" y="425" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="457" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="521" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="489" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="554" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="586" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="650" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="618" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="683" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="715" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="747" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="779" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="812" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="844" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="876" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="908" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="1102" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="1070" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="1038" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="1005" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="973" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="941" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="425" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="521" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="554" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="586" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="650" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="618" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="489" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="457" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="683" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="715" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="747" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="779" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="812" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="844" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="876" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="908" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="941" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="105" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="137" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="169" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="201" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="233" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="298" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="266" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="367" y="330" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="105" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="137" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="169" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="201" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="233" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="266" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="298" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="7" y="330" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="105" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="137" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="169" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="201" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="233" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="266" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="298" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="330" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="330" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="298" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="266" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="233" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="201" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="169" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="137" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="105" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="425" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="457" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="489" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="521" width="700" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="554" width="700" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="650" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="683" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="747" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="715" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="779" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="812" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="844" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="876" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="908" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="941" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="1005" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="973" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="1038" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="1070" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="727" y="1102" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="650" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="683" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="715" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="747" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="779" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="886" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="918" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="951" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="983" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="21" y="139" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-144-112-26-0)" font-size="12px"><text x="26.5" y="156.5">(Shift+)Enter</text></g><rect x="21" y="171" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-176-112-26-0)" font-size="12px"><text x="26.5" y="188.5">Enter / Tab</text></g><rect x="21" y="203" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-208-112-26-0)" font-size="12px"><text x="26.5" y="220.5">Enter / F2</text></g><rect x="21" y="235.5" width="235" height="34.5" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-241-227-35-0)" font-size="12px"><text x="26.5" y="253">Ctrl+Enter / Shift+Tab / F2 / Esc</text></g><rect x="21" y="268" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-273-112-26-0)" font-size="12px"><text x="26.5" y="285.5">Ctrl+B / I</text></g><rect x="21" y="300" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-305-112-26-0)" font-size="12px"><text x="26.5" y="317.5">Ctrl+U</text></g><rect x="21" y="332" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-337-112-26-0)" font-size="12px"><text x="26.5" y="349.5">Ctrl+. / ,</text></g><rect x="202" y="235.5" width="10" height="16" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-202-237-10-20-0)" font-size="10px"><text x="203.5" y="247">1</text></g><rect x="128" y="139" width="200" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-132-144-192-26-0)" font-size="12px"><text x="133.5" y="156.5">New Line in Formatted Labels</text></g><rect x="128" y="171" width="203" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-132-176-195-26-0)" font-size="12px"><text x="133.5" y="188.5">Line Break/Tab/Indent in Labels</text></g><rect x="128" y="203" width="200" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-132-208-192-26-0)" font-size="12px"><text x="133.5" y="220.5">Start Editing Label of Selected Cell</text></g><rect x="222" y="235.5" width="117" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-226-241-109-26-0)" font-size="12px"><text x="227.5" y="253">Stop Editing</text></g><rect x="128" y="268" width="200" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-132-273-192-26-0)" font-size="12px"><text x="133.5" y="285.5">Toggle Bold/Italic on Selected Text</text></g><rect x="128" y="300" width="200" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-132-305-192-26-0)" font-size="12px"><text x="133.5" y="317.5">Toggle Underline on Selected Text</text></g><rect x="128" y="332" width="219" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-132-337-211-26-0)" font-size="12px"><text x="133.5" y="349.5">Superscript/Subscript on Selected Text</text></g><rect x="381" y="107" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-112-82-26-0)" font-size="12px"><text x="386.5" y="124.5">(Shift+)Tab</text></g><rect x="381" y="139" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-144-92-26-0)" font-size="12px"><text x="386.5" y="156.5">Alt+Tab</text></g><rect x="381" y="171" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-176-82-26-0)" font-size="12px"><text x="386.5" y="188.5">Shift+Drag</text></g><rect x="381" y="203" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-208-92-26-0)" font-size="12px"><text x="386.5" y="220.5">Alt+Drag</text></g><rect x="381" y="235.5" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-241-82-26-0)" font-size="12px"><text x="386.5" y="253">Ctrl+(Shift+)A</text></g><rect x="381" y="268" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-273-92-26-0)" font-size="12px"><text x="386.5" y="285.5">Ctrl+Shift+I / E</text></g><rect x="381" y="300" width="116" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-305-108-26-0)" font-size="12px"><text x="386.5" y="317.5">Ctrl / Shift+Select</text></g><rect x="381" y="332" width="110" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-385-337-102-26-0)" font-size="12px"><text x="386.5" y="349.5">Alt+Click</text></g><rect x="502" y="107" width="155" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-112-147-26-0)" font-size="12px"><text x="507.5" y="124.5">Select Next / Previous</text></g><rect x="502" y="139" width="155" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-144-147-26-0)" font-size="12px"><text x="507.5" y="156.5">Select Parent</text></g><rect x="502" y="171" width="155" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-176-147-26-0)" font-size="12px"><text x="507.5" y="188.5">Toggle to Selection</text></g><rect x="502" y="203" width="155" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-208-147-26-0)" font-size="12px"><text x="507.5" y="220.5">Select intersection</text></g><rect x="502" y="235.5" width="110" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-241-102-26-0)" font-size="12px"><text x="507.5" y="253">Select All / None</text></g><rect x="502" y="268" width="146" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-273-138-26-0)" font-size="12px"><text x="507.5" y="285.5">Select Vertices / Edges</text></g><rect x="502" y="300" width="145" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-305-137-26-0)" font-size="12px"><text x="507.5" y="317.5">Toggle Selection State</text></g><rect x="502" y="332" width="136" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-506-337-128-26-0)" font-size="12px"><text x="507.5" y="349.5">Select Cell Below</text></g><rect x="374" y="427" width="166" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-432-158-26-0)" font-size="12px"><text x="379.5" y="444.5">Alt+Mouse wheel</text></g><rect x="374" y="491" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-496-122-26-0)" font-size="12px"><text x="379.5" y="508.5">Ctrl+Mouse wheel</text></g><rect x="374" y="523.5" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-528-122-26-0)" font-size="12px"><text x="379.5" y="541">Mouse wheel</text></g><rect x="374" y="556" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-561-122-26-0)" font-size="12px"><text x="379.5" y="573.5">Shift+Mouse wheel</text></g><rect x="374" y="588" width="160" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-593-152-26-0)" font-size="12px"><text x="379.5" y="605.5">Space / Right mouse Drag</text></g><rect x="374" y="620" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-625-122-26-0)" font-size="12px"><text x="379.5" y="637.5">Alt+Ctrl+Shift+Drag</text></g><rect x="374" y="652.5" width="101" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-658-93-26-0)" font-size="12px"><text x="379.5" y="670">Alt+Click</text></g><rect x="374" y="685" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-690-122-26-0)" font-size="12px"><text x="379.5" y="702.5">Shift+Home</text></g><rect x="374" y="717" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-722-122-26-0)" font-size="12px"><text x="379.5" y="734.5">End</text></g><rect x="374" y="749" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-754-122-26-0)" font-size="12px"><text x="379.5" y="766.5">Enter / Home</text></g><rect x="374" y="781.5" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-787-122-26-0)" font-size="12px"><text x="379.5" y="799">Ctrl+Shift+H</text></g><rect x="374" y="814" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-819-122-26-0)" font-size="12px"><text x="379.5" y="831.5">Ctrl+J</text></g><rect x="374" y="846" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-851-122-26-0)" font-size="12px"><text x="379.5" y="863.5">Ctrl+Shift+J</text></g><rect x="374" y="910.5" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-916-122-26-0)" font-size="12px"><text x="379.5" y="928">Ctrl + (Numpad)</text></g><rect x="374" y="943" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-948-122-26-0)" font-size="12px"><text x="379.5" y="960.5">Ctrl - (Numpad)</text></g><rect x="374" y="878" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-883-122-26-0)" font-size="12px"><text x="379.5" y="895.5">Ctrl+0</text></g><rect x="544" y="427" width="125" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-432-117-26-0)" font-size="12px"><text x="549.5" y="444.5">Canvas Zoom In/Out</text></g><rect x="544" y="491" width="152" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-496-144-26-0)" font-size="12px"><text x="549.5" y="508.5">Screen Zoom In/Out (Mac)</text></g><rect x="544" y="523.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-529-142-26-0)" font-size="12px"><text x="549.5" y="541">Canvas Vertical Scroll</text></g><rect x="544" y="556" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-561-142-26-0)" font-size="12px"><text x="549.5" y="573.5">Canvas Horizontal Scroll</text></g><rect x="544" y="588" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-593-122-26-0)" font-size="12px"><text x="549.5" y="605.5">Pan Canvas</text></g><rect x="544" y="620" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-625-142-26-0)" font-size="12px"><text x="549.5" y="637.5">Create / Remove Space</text></g><rect x="544" y="652.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-658-142-26-0)" font-size="12px"><text x="549.5" y="670">Ignore grid / shape</text></g><rect x="544" y="685" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-690-142-26-0)" font-size="12px"><text x="549.5" y="702.5">Home</text></g><rect x="544" y="717" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-722-142-26-0)" font-size="12px"><text x="549.5" y="734.5">Refresh</text></g><rect x="544" y="749" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-754-142-26-0)" font-size="12px"><text x="549.5" y="766.5">Reset View</text></g><rect x="544" y="781.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-787-142-26-0)" font-size="12px"><text x="549.5" y="799">Fit Window</text></g><rect x="544" y="814" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-819-142-26-0)" font-size="12px"><text x="549.5" y="831.5">Fit Page</text></g><rect x="544" y="846" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-851-142-26-0)" font-size="12px"><text x="549.5" y="863.5">Fit Two Pages</text></g><rect x="544" y="878" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-883-142-26-0)" font-size="12px"><text x="549.5" y="895.5">Custom Zoom</text></g><rect x="544" y="910.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-916-142-26-0)" font-size="12px"><text x="549.5" y="928">Zoom In</text></g><rect x="544" y="943" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-948-142-26-0)" font-size="12px"><text x="549.5" y="960.5">Zoom Out</text></g><rect x="405" y="1007" width="248" height="48" rx="7.2" ry="7.2" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-size="12px"><text x="406.5" y="1021.5">Click to connect and clone (ctrl+click to clone,</text><text x="406.5" y="1035.5">shift+click to connect). Drag to connect</text><text x="406.5" y="1049.5">(ctrl+drag to clone).</text></g><image x="381.99" y="1102.5" width="15" height="25" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAZAgMAAACTN5xfAAAACVBMVEX///////8AAACO9MPsAAAAAXRSTlMAQObYZgAAAFRJREFUeF5VyjEKgDAQRNGPRSA38AB6JEWsUkggt9hLGDbdlh5Tp7R5DPzBAEK46OI2UcQhdrGZKB/nA13B9Q5hqwEij+akVi/yFDMJFjL8VlUdw1+gHxbW+YsglAAAAABJRU5ErkJggg=="/><rect x="405" y="1068" width="239" height="20" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-405-1068-239-20-0)" font-size="12px"><text x="406.5" y="1082.5">Click to rotate 90° clockwise. Drag to rotate.</text></g><rect x="405" y="1105" width="258" height="20" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-405-1105-258-20-0)" font-size="12px"><text x="406.5" y="1119.5">Ctrl: Show Dialog, Alt: Origin, Shift: Ignore XML</text></g><rect x="741" y="107" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-112-92-26-0)" font-size="12px"><text x="746.5" y="124.5">Ctrl+Shift+L</text></g><rect x="741" y="139" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-144-92-26-0)" font-size="12px"><text x="746.5" y="156.5">Ctrl+Shift+O</text></g><rect x="741" y="171" width="80" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-176-72-26-0)" font-size="12px"><text x="746.5" y="188.5">Ctrl+M</text></g><rect x="741" y="203" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-208-92-26-0)" font-size="12px"><text x="746.5" y="220.5">Ctrl+Shift+P</text></g><rect x="741" y="235.5" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-241-92-26-0)" font-size="12px"><text x="746.5" y="253">Ctrl+Shift+M</text></g><rect x="741" y="268" width="80" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-273-72-26-0)" font-size="12px"><text x="746.5" y="285.5">Rightclick</text></g><rect x="741" y="332" width="80" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-337-72-26-0)" font-size="12px"><text x="746.5" y="349.5">F1</text></g><rect x="850" y="107" width="170" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-112-162-26-0)" font-size="12px"><text x="855.5" y="124.5">Toggle Layers Window</text></g><rect x="850" y="139" width="170" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-144-162-26-0)" font-size="12px"><text x="855.5" y="156.5">Toggle Outline Window</text></g><rect x="850" y="171" width="170" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-176-162-26-0)" font-size="12px"><text x="855.5" y="188.5">Edit Metadata</text></g><rect x="850" y="203" width="170" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-208-162-26-0)" font-size="12px"><text x="855.5" y="220.5">Toggle Format Panel</text></g><rect x="850" y="235.5" width="170" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-241-162-26-0)" font-size="12px"><text x="855.5" y="253">Edit Vertex Geometry</text></g><rect x="850" y="268" width="160" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-273-152-26-0)" font-size="12px"><text x="855.5" y="285.5">Context Menu</text></g><rect x="850" y="332" width="93" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-337-85-26-0)" font-size="12px"><text x="855.5" y="349.5">About</text></g><rect x="741" y="427" width="230" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-432-222-26-0)" font-size="12px"><text x="746.5" y="444.5">Alt+(Shift+)Drag from sidebar</text></g><rect x="741" y="459" width="240" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-464-232-26-0)" font-size="12px"><text x="746.5" y="476.5">Alt+(Shift / Ctrl)+Click on a sidebar item</text></g><rect x="741" y="491" width="230" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-496-222-26-0)" font-size="12px"><text x="746.5" y="508.5">Shift+Click on a sidebar item</text></g><rect x="741" y="523.5" width="230" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-529-222-26-0)" font-size="12px"><text x="746.5" y="541">Click on a sidebar item</text></g><rect x="741" y="556" width="230" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-561-222-26-0)" font-size="12px"><text x="746.5" y="573.5">Alt / Shift+Connect</text></g><rect x="1001" y="427" width="416" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-432-408-26-0)" font-size="12px"><text x="1006.5" y="444.5">Disable replace, connect on drop (drop targets), Shift ignores current style</text></g><rect x="1001" y="459" width="416" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-464-408-26-0)" font-size="12px"><text x="1006.5" y="476.5">Inserts and connects the selected item (Shift ignores current style)</text></g><rect x="1001" y="491" width="270" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-496-262-26-0)" font-size="12px"><text x="1006.5" y="508.5">Replaces the selected item with the clicked one</text></g><rect x="1001" y="523.5" width="270" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-528-262-26-0)" font-size="12px"><text x="1006.5" y="541">Connects unconnected side of selected edge</text></g><rect x="1001" y="556" width="306" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1005-561-298-26-0)" font-size="12px"><text x="1006.5" y="573.5">Ignore shape / outline</text></g><rect x="741" y="652.5" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-658-82-26-0)" font-size="12px"><text x="746.5" y="670">Ctrl+S</text></g><rect x="741" y="685" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-690-82-26-0)" font-size="12px"><text x="746.5" y="702.5">Ctrl+Shift+S</text></g><rect x="741" y="717" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-722-82-26-0)" font-size="12px"><text x="746.5" y="734.5">Ctrl+Z</text></g><rect x="741" y="749" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-754-82-26-0)" font-size="12px"><text x="746.5" y="766.5">Alt+Shift+A</text></g><rect x="741" y="813.5" width="90" height="27" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-819-82-27-0)" font-size="12px"><text x="746.5" y="831">Hold Alt</text></g><rect x="741" y="846" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-851-82-26-0)" font-size="12px"><text x="746.5" y="863.5">Ctrl+Shift+G</text></g><rect x="741" y="878" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-883-82-26-0)" font-size="12px"><text x="746.5" y="895.5">Ctrl+P</text></g><rect x="741" y="910.5" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-916-82-26-0)" font-size="12px"><text x="746.5" y="928">Ctrl+Y</text></g><rect x="741" y="943" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-948-82-26-0)" font-size="12px"><text x="746.5" y="960.5">Ctrl+Shift+Z</text></g><rect x="741" y="975" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-980-82-26-0)" font-size="12px"><text x="746.5" y="992.5">Ctrl+Shift+X</text></g><rect x="741" y="1007.5" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1013-82-26-0)" font-size="12px"><text x="746.5" y="1025">Ctrl+K</text></g><rect x="741" y="1040" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1045-82-26-0)" font-size="12px"><text x="746.5" y="1057.5">Ctrl+Shift+K</text></g><rect x="741" y="1072" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1077-82-26-0)" font-size="12px"><text x="746.5" y="1089.5">Esc</text></g><rect x="741" y="1104" width="106" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-1109-98-26-0)" font-size="12px"><text x="746.5" y="1121.5">Alt+Drag / Drop</text></g><rect x="841" y="685" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-690-132-26-0)" font-size="12px"><text x="846.5" y="702.5">Save as</text></g><rect x="841" y="652.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-658-132-26-0)" font-size="12px"><text x="846.5" y="670">Save</text></g><rect x="841" y="717" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-722-132-26-0)" font-size="12px"><text x="846.5" y="734.5">Undo</text></g><rect x="841" y="749" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-754-132-26-0)" font-size="12px"><text x="846.5" y="766.5">Connection Arrows</text></g><rect x="841" y="813" width="203" height="28" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-818-195-28-0)" font-size="12px"><text x="846.5" y="830.5">Ignores handles under the mouse</text></g><rect x="841" y="846" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-851-132-26-0)" font-size="12px"><text x="846.5" y="863.5">Toggle grid</text></g><rect x="841" y="878" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-883-132-26-0)" font-size="12px"><text x="846.5" y="895.5">Print</text></g><rect x="841" y="910.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-916-132-26-0)" font-size="12px"><text x="846.5" y="928">Redo (Windows)</text></g><rect x="841" y="943" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-948-132-26-0)" font-size="12px"><text x="846.5" y="960.5">Redo (Linux/Mac)</text></g><rect x="841" y="975" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-980-132-26-0)" font-size="12px"><text x="846.5" y="992.5">Insert Text</text></g><rect x="841" y="1007.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1013-132-26-0)" font-size="12px"><text x="846.5" y="1025">Insert Rectangle</text></g><rect x="841" y="1040" width="214" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1045-206-26-0)" font-size="12px"><text x="846.5" y="1057.5">Insert Ellipse / Toggle Shapes Panel</text></g><rect x="841" y="1072" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1077-132-26-0)" font-size="12px"><text x="846.5" y="1089.5">Cancel Action</text></g><rect x="841" y="1104" width="216" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-1109-208-26-0)" font-size="12px"><text x="846.5" y="1121.5">Force Rubberband / Ignore Group</text></g><rect x="1101" y="888" width="110" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-893-102-26-0)" font-size="12px"><text x="1106.5" y="905.5">Drag</text></g><rect x="1101" y="920.5" width="110" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-926-102-26-0)" font-size="12px"><text x="1106.5" y="938">Tap and hold</text></g><rect x="1101" y="953" width="110" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-958-102-26-0)" font-size="12px"><text x="1106.5" y="970.5">Pinch</text></g><rect x="1101" y="985" width="110" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-990-102-26-0)" font-size="12px"><text x="1106.5" y="1002.5">Tap selected cell</text></g><rect x="1211" y="888" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-893-132-26-0)" font-size="12px"><text x="1216.5" y="905.5">Move Cell / Pan Canvas</text></g><rect x="1211" y="921" width="196" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-926-188-26-0)" font-size="12px"><text x="1216.5" y="938.5">Toggle Selection / Rubberband</text></g><rect x="1211" y="953" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-958-112-26-0)" font-size="12px"><text x="1216.5" y="970.5">Zoom</text></g><rect x="1211" y="985" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-990-112-26-0)" font-size="12px"><text x="1216.5" y="1002.5">Context Menu</text></g><rect x="1101" y="107" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-112-112-26-0)" font-size="12px"><text x="1106.5" y="124.5">Cursor</text></g><rect x="1101" y="139" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-144-112-26-0)" font-size="12px"><text x="1106.5" y="156.5">Shift+Cursor</text></g><rect x="1101" y="171" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-176-112-26-0)" font-size="12px"><text x="1106.5" y="188.5">Ctrl+Cursor</text></g><rect x="1101" y="203" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-208-112-26-0)" font-size="12px"><text x="1106.5" y="220.5">Ctrl+Shift+Cursor</text></g><rect x="1101" y="235.5" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-241-112-26-0)" font-size="12px"><text x="1106.5" y="253">Alt+Shift+Cursor</text></g><rect x="1101" y="268" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-273-112-26-0)" font-size="12px"><text x="1106.5" y="285.5">Alt+Cursor</text></g><rect x="1101" y="300" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-305-112-26-0)" font-size="12px"><text x="1106.5" y="317.5">Ctrl+Shift+Pg Up</text></g><rect x="1101" y="332" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-337-132-26-0)" font-size="12px"><text x="1106.5" y="349.5">Ctrl+Shift+Pg Down</text></g><rect x="1241" y="107" width="149" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-112-141-26-0)" font-size="12px"><text x="1246.5" y="124.5">Scroll / Move cell (pt)</text></g><rect x="1241" y="139" width="178" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-144-170-26-0)" font-size="12px"><text x="1246.5" y="156.5">Move cell (grid) or page</text></g><rect x="1241" y="171" width="185" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-176-177-26-0)" font-size="12px"><text x="1246.5" y="188.5">Resize cell (pt) or select page</text></g><rect x="1241" y="203" width="176" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-208-168-26-0)" font-size="12px"><text x="1246.5" y="220.5">Resize cell (grid size)</text></g><rect x="1241" y="235.5" width="149" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-241-141-26-0)" font-size="12px"><text x="1246.5" y="253">Clone and connect</text></g><rect x="1241" y="268" width="149" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-273-141-26-0)" font-size="12px"><text x="1246.5" y="285.5">Scroll Page</text></g><rect x="1241" y="300" width="130" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-305-122-26-0)" font-size="12px"><text x="1246.5" y="317.5">Previous Page</text></g><rect x="1241" y="332" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1245-337-132-26-0)" font-size="12px"><text x="1246.5" y="349.5">Next Page</text></g><rect x="1101" y="652" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-657-92-26-0)" font-size="12px"><text x="1106.5" y="669.5">Ctrl+Shift+R</text></g><rect x="1101" y="685" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-690-92-26-0)" font-size="12px"><text x="1106.5" y="702.5">Ctrl+E</text></g><rect x="1101" y="717" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-722-92-26-0)" font-size="12px"><text x="1106.5" y="734.5">Ctrl+Shift+D</text></g><rect x="1101" y="749" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-754-92-26-0)" font-size="12px"><text x="1106.5" y="766.5">Ctrl+Shift+C</text></g><rect x="1101" y="781.5" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-787-92-26-0)" font-size="12px"><text x="1106.5" y="799">Ctrl+Shift+V</text></g><rect x="1211" y="652" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-657-112-26-0)" font-size="12px"><text x="1216.5" y="669.5">Clear Default Style</text></g><rect x="1211" y="685" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-690-112-26-0)" font-size="12px"><text x="1216.5" y="702.5">Edit Style</text></g><rect x="1211" y="717" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-722-112-26-0)" font-size="12px"><text x="1216.5" y="734.5">Set as Default Style</text></g><rect x="1211" y="749" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-754-112-26-0)" font-size="12px"><text x="1216.5" y="766.5">Copy Style</text></g><rect x="1211" y="781.5" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-787-112-26-0)" font-size="12px"><text x="1216.5" y="799">Paste Style</text></g><rect x="1080" y="71" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1084-76-165-26-0)" font-size="14px"><text x="1085.5" y="90.5">CURSOR / PAGE KEYS</text></g><rect x="721" y="71" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-725-76-165-26-0)" font-size="14px"><text x="726.5" y="90.5">TOOLS</text></g><rect x="365" y="71" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-369-76-165-26-0)" font-size="14px"><text x="370.5" y="90.5">SELECTION</text></g><rect x="1" y="71" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-5-76-165-26-0)" font-size="14px"><text x="6.5" y="90.5">LABELS</text></g><rect x="0" y="392" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-4-397-165-26-0)" font-size="14px"><text x="5.5" y="411.5">CANVAS</text></g><rect x="361" y="392" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-365-397-165-26-0)" font-size="14px"><text x="366.5" y="411.5">VIEW</text></g><rect x="721" y="392" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-725-397-165-26-0)" font-size="14px"><text x="726.5" y="411.5">SIDEBAR / CONNECT</text></g><rect x="1081" y="616" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1085-621-165-26-0)" font-size="14px"><text x="1086.5" y="635.5">STYLES</text></g><rect x="721" y="616" width="173" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-725-621-165-26-0)" font-size="14px"><text x="726.5" y="635.5">DOCUMENT</text></g><rect x="187" y="0.5" width="281" height="51.5" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-191-1-273-52-0)" font-size="27px"><text x="192.5" y="38.25">Keyboard Shortcuts</text></g><rect x="161" y="1104" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1109-142-26-0)" font-size="12px"><text x="166.5" y="1121.5">Connect to a Fixed Point</text></g><rect x="21" y="1104" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1109-132-26-0)" font-size="12px"><text x="26.5" y="1121.5">Alt+Connect</text></g><rect x="741" y="300" width="80" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-305-72-26-0)" font-size="12px"><text x="746.5" y="317.5">Ctrl+Click</text></g><rect x="850" y="300" width="160" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-854-305-152-26-0)" font-size="12px"><text x="855.5" y="317.5">Context Menu</text></g><a xlink:href="https://app.diagrams.net/#Uhttps%3A%2F%2Fapp.diagrams.net%2Fshortcuts.svg" target="_blank"><rect x="1111.67" y="1111" width="132.33" height="18" fill="none" stroke="none" pointer-events="all"/><g fill="#F08705" font-family="Helvetica" text-decoration="underline" font-size="12px"><text x="1113.17" y="1124.5">Open in diagrams.net...</text></g></a><rect x="374" y="459" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-378-464-142-26-0)" font-size="12px"><text x="379.5" y="476.5">Ctrl+Shift+Mouse wheel</text></g><rect x="544" y="459" width="123" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-548-464-115-26-0)" font-size="12px"><text x="549.5" y="476.5">Canvas Zoom In/Out</text></g><rect x="841" y="781.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-845-787-132-26-0)" font-size="12px"><text x="846.5" y="799">Connection Points</text></g><rect x="741" y="781.5" width="90" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-745-786-82-26-0)" font-size="12px"><text x="746.5" y="799">Alt+Shift+P</text></g><rect x="128" y="107" width="200" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-132-112-192-26-0)" font-size="12px"><text x="133.5" y="124.5">Insert text or add an edge label</text></g><rect x="21" y="107" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-112-112-26-0)" font-size="12px"><text x="26.5" y="124.5">Double click</text></g><rect x="130.28" y="780" width="10" height="16" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-130-781-10-20-0)" font-size="10px"><text x="131.78" y="791.5">2</text></g><rect x="1112" y="1077" width="255" height="29" rx="4.35" ry="4.35" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-size="12px"><text x="1113.5" y="1089">Ctrl+Resize for non-recursive group resize</text><text x="1113.5" y="1103">Ctrl+Meta+Resize for centered group resize</text></g><rect x="1105.33" y="1069" width="20" height="10" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-size="10px"><text x="1106.83" y="1080.5">2</text></g><rect x="100" y="139" width="10" height="16" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-100-140-10-20-0)" font-size="10px"><text x="101.5" y="150.5">1</text></g><rect x="1112" y="1038" width="255" height="29" rx="4.35" ry="4.35" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-size="12px"><text x="1113.5" y="1050">Ctrl / Shift+Enter: New Line / Apply in Safari</text><text x="1113.5" y="1064">Ctrl / Shift+Esc: Cancel Editing</text></g><rect x="1105.33" y="1030" width="20" height="10" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-size="10px"><text x="1106.83" y="1041.5">1</text></g><rect x="21" y="427" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-432-132-26-0)" font-size="12px"><text x="26.5" y="444.5">Ctrl+X</text></g><rect x="21" y="459" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-464-132-26-0)" font-size="12px"><text x="26.5" y="476.5">Ctrl+C</text></g><rect x="21" y="491" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-496-132-26-0)" font-size="12px"><text x="26.5" y="508.5">Ctrl+V</text></g><rect x="21" y="523.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-529-132-26-0)" font-size="12px"><text x="26.5" y="541">Ctrl+G</text></g><rect x="21" y="556" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-561-132-26-0)" font-size="12px"><text x="26.5" y="573.5">Ctrl+Shift+U</text></g><rect x="21" y="588" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-593-132-26-0)" font-size="12px"><text x="26.5" y="605.5">Ctrl+L / Alt+Shift+L</text></g><rect x="21" y="620" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-625-132-26-0)" font-size="12px"><text x="26.5" y="637.5">Ctrl+Enter / D</text></g><rect x="21" y="652.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-658-132-26-0)" font-size="12px"><text x="26.5" y="670">Backspace or Delete</text></g><rect x="21" y="685" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-690-132-26-0)" font-size="12px"><text x="26.5" y="702.5">Ctrl / Shift+Delete</text></g><rect x="21" y="717" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-722-132-26-0)" font-size="12px"><text x="26.5" y="734.5">Ctrl+R</text></g><rect x="21" y="749" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-754-132-26-0)" font-size="12px"><text x="26.5" y="766.5">Shift+Resize</text></g><rect x="21" y="781.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-787-132-26-0)" font-size="12px"><text x="26.5" y="799">Ctrl / Meta+Resize</text></g><rect x="21" y="814" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-819-132-26-0)" font-size="12px"><text x="26.5" y="831.5">Ctrl+Home</text></g><rect x="21" y="846" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-851-132-26-0)" font-size="12px"><text x="26.5" y="863.5">Ctrl+End</text></g><rect x="21" y="878" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-883-132-26-0)" font-size="12px"><text x="26.5" y="895.5">Ctrl+Shift+Home</text></g><rect x="21" y="910.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-916-132-26-0)" font-size="12px"><text x="26.5" y="928">Ctrl+Shift+End</text></g><rect x="21" y="943" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-948-132-26-0)" font-size="12px"><text x="26.5" y="960.5">Ctrl+Shift+F / B</text></g><rect x="21" y="975" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-980-132-26-0)" font-size="12px"><text x="26.5" y="992.5">Ctrl+F</text></g><rect x="21" y="1007.5" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1013-132-26-0)" font-size="12px"><text x="26.5" y="1025">Alt+Shift+C / T</text></g><rect x="21" y="1040" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1045-132-26-0)" font-size="12px"><text x="26.5" y="1057.5">Ctrl+Shift+Y</text></g><rect x="21" y="1072" width="140" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-25-1077-132-26-0)" font-size="12px"><text x="26.5" y="1089.5">Ctrl / Shift+Drag</text></g><rect x="161" y="427" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-432-142-26-0)" font-size="12px"><text x="166.5" y="444.5">Cut</text></g><rect x="161" y="459" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-464-142-26-0)" font-size="12px"><text x="166.5" y="476.5">Copy</text></g><rect x="161" y="491" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-496-142-26-0)" font-size="12px"><text x="166.5" y="508.5">Paste</text></g><rect x="161" y="523.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-529-142-26-0)" font-size="12px"><text x="166.5" y="541">Group</text></g><rect x="161" y="556" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-561-142-26-0)" font-size="12px"><text x="166.5" y="573.5">Ungroup</text></g><rect x="161" y="588" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-593-142-26-0)" font-size="12px"><text x="166.5" y="605.5">Lock/Unlock / Edit Link</text></g><rect x="161" y="620" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-625-142-26-0)" font-size="12px"><text x="166.5" y="637.5">Duplicate</text></g><rect x="161" y="652.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-658-142-26-0)" font-size="12px"><text x="166.5" y="670">Delete Selected Cells</text></g><rect x="161" y="685" width="187" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-690-179-26-0)" font-size="12px"><text x="166.5" y="702.5">...with Connections / Labels</text></g><rect x="161" y="717" width="159" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-722-151-26-0)" font-size="12px"><text x="166.5" y="734.5">Turn / Rotate 90° Clockwise</text></g><rect x="161" y="749" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-754-142-26-0)" font-size="12px"><text x="166.5" y="766.5">Maintain Proportions</text></g><rect x="161" y="943" width="181" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-948-173-26-0)" font-size="12px"><text x="166.5" y="960.5">Bring to Front / Send to Back</text></g><rect x="161" y="814" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-819-142-26-0)" font-size="12px"><text x="166.5" y="831.5">Collapse Container</text></g><rect x="161" y="846" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-851-142-26-0)" font-size="12px"><text x="166.5" y="863.5">Expand Container</text></g><rect x="161" y="878" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-883-142-26-0)" font-size="12px"><text x="166.5" y="895.5">Exit Group</text></g><rect x="161" y="910.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-916-142-26-0)" font-size="12px"><text x="166.5" y="928">Enter Group</text></g><rect x="161" y="975" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-980-142-26-0)" font-size="12px"><text x="166.5" y="992.5">Find/Replace</text></g><rect x="161" y="781.5" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-787-142-26-0)" font-size="12px"><text x="166.5" y="799">Centered / Group Resize</text></g><rect x="161" y="1008" width="176" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1013-168-26-0)" font-size="12px"><text x="166.5" y="1025.5">Clear Waypoints / Edit Tooltip</text></g><rect x="161" y="1040" width="150" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1045-142-26-0)" font-size="12px"><text x="166.5" y="1057.5">Autosize</text></g><rect x="161" y="1072" width="156" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-165-1077-148-26-0)" font-size="12px"><text x="166.5" y="1089.5">Clone cell/Disconnect edge</text></g><rect x="481" y="13.25" width="456" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#777777" font-family="Helvetica" clip-path="url(#mx-clip-485-18-448-26-0)" font-size="18px"><text x="486.5" y="36.75">cmd instead of ctrl, option instead of alt for macOS </text></g><rect x="1087" y="812" width="340" height="30" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1087" y="844" width="340" height="31" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="1101" y="814" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-819-92-26-0)" font-size="12px"><text x="1106.5" y="831.5">Alt+Shift+X / B</text></g><rect x="1101" y="846.5" width="100" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" font-weight="bold" clip-path="url(#mx-clip-1105-852-92-26-0)" font-size="12px"><text x="1106.5" y="864">Alt+Shift+V / E</text></g><rect x="1211" y="814" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1215-819-112-26-0)" font-size="12px"><text x="1216.5" y="831.5">Copy Size / Data</text></g><rect x="1212" y="846.5" width="120" height="26" fill="none" stroke="none" pointer-events="all"/><g fill="#333333" font-family="Helvetica" clip-path="url(#mx-clip-1216-852-112-26-0)" font-size="12px"><text x="1217.5" y="864">Paste Size / Data</text></g><image x="376.49" y="1012.5" width="26" height="18" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjZweCIgaGVpZ2h0PSIxOHB4IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyNiAxOCI+PHBhdGggZD0ibSAxIDYgTCAxNCA2IEwgMTQgMSBMIDI2IDkgTCAxNCAxOCBMIDE0IDEyIEwgMSAxMiB6IiBzdHJva2U9IiNmZmYiIGZpbGw9IiMyOWI2ZjIiLz48L3N2Zz4=" preserveAspectRatio="none"/><path d="M 42 45.62 C 42 46.18 41.4 46.69 40.97 46.69 L 7.93 46.69 C 7.47 46.69 7 46.18 7 45.76 L 7 12.9 C 7 12.28 7.33 11.75 8.02 11.75 L 41.17 11.78 C 41.67 11.78 41.99 12.23 42 12.82 Z" fill="#f08707" stroke="none" pointer-events="all"/><path d="M 19.94 46.69 L 14.54 38.6 L 27.06 19.97 L 28.5 19.71 L 42 33.48 L 42 45.66 C 42 46.1 41.44 46.75 41 46.69 Z" fill="#db6112" stroke="none" pointer-events="all"/><path d="M 15.13 38.69 C 14.28 38.69 13.88 37.99 13.88 37.42 L 13.88 32.83 C 13.88 32.28 14.3 31.6 14.89 31.6 L 18.5 31.6 L 21.72 26.27 L 21.29 26.27 C 21.04 26.27 20.27 25.77 20.27 25.24 L 20.27 20.34 C 20.27 19.79 20.96 19.09 21.48 19.09 L 27.31 19.09 C 27.84 19.09 28.7 19.39 28.7 20.39 L 28.7 25.1 C 28.7 25.65 28.21 26.27 27.7 26.27 L 27.28 26.27 L 30.51 31.6 L 33.95 31.6 C 34.76 31.6 35.16 32.05 35.16 32.71 L 35.16 37.42 C 35.16 38.14 34.54 38.69 33.93 38.69 L 28.14 38.69 C 27.4 38.69 26.76 38.21 26.76 37.48 L 26.76 32.53 C 26.84 32.03 27.31 31.6 27.87 31.6 L 28.96 31.6 L 25.86 26.27 L 23.19 26.27 L 20.1 31.6 L 21.29 31.6 C 21.81 31.6 22.26 32.1 22.26 32.69 L 22.26 37.71 C 22.26 38.12 21.78 38.69 21.23 38.69 Z" fill="#ffffff" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 29px; margin-left: 48px;"><div data-drawio-colors="color: #1A5BA3; " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(26, 91, 163); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap;"><font style="font-size: 20px">diagrams.<font color="#f08707" style="font-size: 20px">net</font></font></div></div></div></foreignObject><text x="48" y="34" fill="#1A5BA3" font-family="Helvetica" font-size="15px" font-weight="bold">diagr...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg> \ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws/aws_1.xml b/src/main/webapp/templates/cloud/aws/aws_1.xml
index 0c2ae36a..265bf925 100644
--- a/src/main/webapp/templates/cloud/aws/aws_1.xml
+++ b/src/main/webapp/templates/cloud/aws/aws_1.xml
@@ -1 +1 @@
-<mxfile modified="2021-12-10T12:34:18.606Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="LDh--fqHqFJJrNxDOLfh" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7V1bc5w4Gv01frQLcefR7Usmu/FOdpxJqvbFJYO6W2NABIRvv34lLt0NUtvY4daxOlUOCCGEztGR9En6ODLOosdPKUzWVyRA4ZGuBY9HxvmRruuuabL/eMhTGQI0Ty9DVikOqrBtwDV+RnXEKjTHAcoaESkhIcVJM9AncYx82giDaUoemtGWJGw+NYErJARc+zAUQ3/ggK6rUGB72wt/ILxaV492dae8EME6cvUm2RoG5GEnyLg4Ms5SQmh5FD2eoZCXXl0u5X2Xe65uMpaimHa54fi//9D0n7+f/zq/uPrrf9bVpUv+OAYVPvcwzKs3Po3gM4lZ2DV7tSt4h9Iq//SpLpSHNaboOoE+P39gyB8ZizWNQnYG2OESh+EZCUnKzmMSIx5EYlqByx5ZntdRjnRDK34sPIDZGvEMa/VN1VP5OQzxKmbHPntjlitjcY9SihlWp9UFSnhOMpqSO7ST+rlr28BgV1YpDDDaPrnKXMbeBMerL2hJqyeF8BaFX0mGKSbSJ35pRbgllJKIRWA8pBDHPHJRFgnB/NaLe5ZCVqXukzCESYZvN2+WIj9PM3yP/kJZWUo8VES4Ap3nAj3uBFWIf0IkQjR9YlGqq66jn1jlTXUNdMw65GFLaN2oquV6h8vArqgLq0q02qS/5Rk7qKgmp9312ferb4sfyZd7+vyvz+tnYIVXx4ZIu0Mn2VnxG4dkfRDDbRNDtxwZMWoh3iWG0wMv5HL0Oi1ITkNWv842eq+JSLN/l/yp+7DY5Q6P7jhM0AVQq8gNtrwKjZwtAql2ibzDWl1GyCwpX3SJH3k+BEnhibDGJeE3RI8r3hCfwIfMPAkISW9C4t/1QxnbbDPG1iSMcVwJYdyBCKMrwvRIGB+mA1HFsOxpiWIoovRKlAilcCCumBaYWlY6dE8UWzqzJac4xPSpH7oA22pri2ZPzRdL8aVPdSHLJUI3CR8Z90MZuy0xYPKei60o0yNlQo7YbR7e9sMY3Tbm19d1FGN6ZMya5Bnqiy1gbt1dV3GlR67QNUojklHYU4MkEmYGfV5PoAwQOJOSPA4KDHlZvcFCV5jfnLPF+T5ytIh3WfxaILZA5iXcCxq6IPZAhoYpsYQZQ6FRm9124Lj6ws7rKZaLR+TnFHIT8ggVm9Xqc2vx+1XsDK5QxKc4bqKiXHvhk+kIfDJlNvdRazcQTaunP65ZwBcY3QaQHVzmsV9gpRqK93dDi8K8WdZFORCfDNObnE+i5bXk02fyjf39lCIUs4LJMnZyRtKeVYpds7VTw3B2rp3jFFWlzoiU8lLpSDt2ZVn85sg9Kc9SlJE89dFnvyAZOy2PmrFWWxAGIqIpnTMal4jiQHqXiIp703CvEMwY0RuyvKFrHK964qBjts1/M+g6A3FovsvB0xiGTwyrTBFxAiISegM3APTCQW/b/M6Ig+KQXw0YDmPAAIy2fdr2pueTaA9QHbwZapvPy74nGjotGjrexGZMXbSCfMcBIpxz5RS0GqzOYhJf5I6nGVNLmL7P5qGGBr/j0MCw2ksaHakdd1wOvmwnUUOD32toYBkCBzV3cg6Ki992OVi1FIqAkxAQVe10L8YRvT2vOAf2vbTF5D/XvfPu0jBNV38b7xZngE/ZfxTeZXFflhBtjnInrsbbEO7fjFkZZmJnh3wu/zZlRyt+VA8rrmmKYCSJ0DtPPdM6v3wjT61TQ1tYH4andyVaN/ccnJusgqafuQy3vezYlW6MGpe54lzGFbnF3GSnnSZJyJDqf4aWS6ZlOqb3NiqeOcAAlx+GilGJQz/NtNuew3Cd6QfL4hyGLhDtt1z/Y7rtaU1gy6Rg1PU/umjONz4GHK6wHAs41uRwiNZw82PAYRvC6hNPtvpkVDgM0S5sfQw4XMedIRyiodX+GHBIpu6kA6Bx4RBtjs7HgMO02+NR25ZtDhsXDtH85n4MOFzBGjoHOER7lPcx4BAnSFxr8o6uIVpr6rXvvzse9hzxMMVx4DdMCxMEey0qIFMENoo/5T5s4Na5TTEhXWTTWhxZHAiYU1L5uQE7Y/yw8I2yz+FK6T/lGz85PzabiBgSg8fG3UsTyV+HzRKafBlowJCgZg7lOMUUh4vX+S1tALe1aO7gZ//Mi222vJCOS0xOWQRgJ4/bi3ttoLMAv5gw2gf+EHgDIAVckwCuDwa4OCAtLGsHCFHf9VOw7MrNOdZAcEkdXnVwbMQtuJtGqvY1p++3eJo9sVtwEGbIxpNAsyXlBYYqL3EEU+sX41lc61HF+PICe87utZlWBHPEimCago8vIOt+j1oTOjjiQcEK1eXAJx/IisQwvNiG7oKI4uCU+3nkcRPELfgovC1Oa3iKSgVTWkerOn7sxkvM815gL8xiWKa1sDla266n9pYayF/iRZBkTUeKQkjxPWqkJIOgSu4rZ+xuB1/wu+RtQupkytmO6s4tmEJiptYhMVauK0SFxApmbN71/WTp4FelntPx8zR8WqTQv0P09SFCczwxgKyaoD3Ho5syw5Auq3veYM2QzIfEL+rqIdVWsXF9f/2tgD7WTjTDaSKt7e8c/mINt4TOjW69u4a7glxIEttTw7eJ1RHJcpmhQVRAsrVlMtbWdHyFtTW5B2Jt8aydlA+Oxe2OiQFa9ozuHH41qTkwWBytKd09KMbyro+2/emNB+8sJnorfx0guD8UE5sBgyU7cRSDD4nBruG+yGDnvQz2dJHBQmJzYLBog1EWs/Kq4B/Rcia3E9RDPWUC6nl9gjU9tB1sQDMd1jvddmqPO6qX7LCol7Pv2dujWt4RW17R259jGe9tbQ3BpitJbA6tbQfTnWLhiCw0TaNFm5YcdWWgVcvNvoTmwL4O3pUV+0Zkn62LsvVO/jlae0HyLBnYwVuzYuCY418gtMLmu8e8rifQWUxsDiwULefNjY6Kk01OMkpq9dK6CtmN69RBuoZNM4wHjPcR0hS+88aS6pGQDD/4tBOjGifvfTHDFvzBbPKz5XiZar+Ml1naFccn5LjlWCeaA0zdtYq/jkALfXvReuc0kCMs/J+W/7arTcN/yc6oRY7DQKgE0j3D+xxiNa1VG+rKF1Q3V1+7jgc8bsw8jN3ALPM5e61in/VNgO6xz78+K3Gq9eu2JE/gLHBkS++sSsH6Xv4t549oJf+WQtxxz7niz4j8ETuhui1zxzwuf3SBP38mFEe8YBWF5kYhoAk7tObAIbVGdLg1op7V3kCse++2RgMNdEht4EWikh1kii690UVsZAz7xLQdxwQeeyPXqDv0b143IKZsNVP2hqKR8+f3Z/PBib2754uvP56OzcXirMvC9CZub9uFeHF6cX5x3oRbrxsJ2QZEactWfDN8Af27VZGX1tU+WgRggQYoljgytGpkGltBepkvliIjTm+CF6CZywbREaCyvQZUtiFANdTWUSlOog6/VIU+Ek5tYxhwx9vlK4VKnB87BO9CU0BlaBNDJU4kHYLnoSmgMutl1lNBJc62HIJXovEbKssQvyswKlDiJMEh+CsaAShHa/YoJL2/UYGSfAbzEFwZjVKl2jPQtjMxVqLp+BD8HI1fq9ype3+SjzceggukMWpVc14UaFP3/oDMLCFZBk9SFPG0kizn/wdF2TA8cTGvGfHZTJYBzSdxhnyKaM6vwgAnOONL1bl1KcRVpIyhzpPggTjPIsJPKYqSIkkc+zjAQV7YcnL+h+FSfEpF408pH83PIriK+YdlYYh/5vCEHf3Nr6MYR8WzeRRcntyzQL4YhT/9Z879c2sxYdzJeST0iFIf08r1sZaHIYx8Uj+3jIwzXOemeBxOihv5H1i8dsTegtQFwLJDeX7Oy0fBnPL84jQv8l2XHZ/00lKUpGiNWE1Ii6IsAu9JmCcsQ6jIelFuGsoyfupz6320WwwoZ3+W+QpDHi3m2S95ygLylGfj4tFHCUV5CVhRrsT3IfKLO/w8wQGk5d1FCSQpwQFneYlWiUSRMT8PE1iWIU9kucQ+5ucBylBaxotIWGYYlkWPiyLONjjm0cne7RSv+kQXN1j0tF/i5aovE6c+5ICvlWgt99clkyOmKbOHtbeh9icJoj1MSYKSBCUJo0gCaPe7gSv1Ti3bUQWANZQmyObAlCYoTVCaMIUmGNKPH+7RBGcoTZBtglGaoDRBacIUmmACqZ9+qSa8tE7j1zShowMwpQlKE5QmDG5OsAypO3y5PcEcShM6uldTmqA0QWnC8CZGS2pjlI8dBrMxdnRYpzRBaYLShME1wZFuytjTTzAG0oSuLgCVJihNUJowuCa4bvexQ71ktH9NkH3YQmmC0gSlCVNoAl+v1L2jMNRkJL+/JQoH8Um38RdCs86aJsNrzBVmUm+cSsKVhCsJH0PC217JmCRI1tz3JeDsNCX8m36ba5+444ErEiAe4/8=</diagram></mxfile> \ No newline at end of file
+<mxfile modified="2021-12-10T08:25:51.586Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="Ec5T71gy69d3QndQud4u" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7V1bd9sqGv01eUyW0F2PsZP0dKaZ0znpadealywiY5sTSai65PbrB5BkWwInSqqba9y1UgkhhNibDXzApxNjHj59SmC8viYLFJzo2uLpxLg40XXdci36Hwt5LkKAUYWsErwow7YBN/gFlYFaGZrjBUprETNCggzH9UCfRBHys1oYTBLyWI+2JEH9qTFcISHgxoeBGPoDL7J1GQpsb3vhD4RX6/LRru4UF0JYRS7fJF3DBXncCTIuT4x5QkhWHIVPcxSw0qvKpbjvas/VTcYSFGVtbjj97z9Z8s/fL39dXF7/9T/r+solf5wCs0jmAQZ5+cbnIXwhEQ27oa92De9RUuY/e64K5XGNM3QTQ5+dP1LkT4zZOgsDegbo4RIHwZwEJKHnEYkQCyJRVoJLH1mcV1FOdEPjPxq+gOkasQxr1U3lU9k5DPAqosc+fWOaK2P2gJIMU6zOywsZYTlJs4Tco53UL1zbBga9skrgAqPtk8vMpfRNcLT6gpZZ+aQA3qHgK0lxhon0iV8aEe5IlpGQRqA8zCCOWGReFjHB7NbLB5pCWqbukyCAcYrvNm+WID9PUvyA/kJpUUosVES4BJ3lAj3tBJWIf0IkRFnyTKOUV11HPysrXFUDHbMKedwSWjf0Imy9w2Vgl9SFZSVabdLf8owelFST0+5m/v362+xH/OUhe/nX5/ULsILrU0Ok3aGTbM5/w5CsC2K4TWLoliMjRiXEu8RwOuCFXI7epgXJs4DWr/lG7zURafrvij11Hxa73GHRHYcKugBqGbnGljehkbNFINUukXdYq8sImcbFiy7xE8uHICksEdq4xOyG8GnFGuIz+JiaZwtCktuA+PfdUMY2m4yxNQljHFdCGLcnwuiKMB0SxodJT1QxLHtcohiKKJ0SJUQJ7IkrpgXGlpUW3RPFltZsyTMc4Oy5G7oA22pqi2aPzRdL8aVLdSHLJUK3MRsZd0MZuykxYPSei60o0yFlAobYXR7cdcMY3Tam19d1FGM6ZMya5Cnqii1gat1dV3GlQ65ka5SEJM1gRw2SSJgJ9Hk9gTJA4ExC8mjBMWRl9Q4LHTe/OfPZxT5yNIh3xX8NEBsgsxLuBA1dEHsgQ8OUWMKMvtCozG47cFx/oefVFMvlE/LzDDIT8gAVm9bqC2v2+1XsFK5QyKY4bkNerp3wyXQEPpkym/ugtRuIptXzHzc04AsM7xaQHlzlkc+xUg3Fx7uhvDBvl1VR9sQnw/RG55NoeS349Jl8o38/JQhFtGDSlJ7MSdKxStFrtnZuGM7OtQucoLLUKZESViotaUevLPlvityT8ixBKckTH332OcnoaXFUj7XagtATEU3pnNGwRBQH0rtEVNwbh3tcMCOU3ZLlbbbG0aojDjpm0/w3ga4zEIfmuxw8j2DwTLFKFRFHICLJbuEGgE446G2b3wlxUBzyqwHDYQwYgNG0T9ve+HwS7QGqgzdBbfNZ2XdEQ6dBQ8cb2Yypi1aQ73iBCONcMQWtBquTmMQXueNpxtgSpu+zeaihwe84NDCs5pJGR2rHHZaDr9tJ1NDg9xoaWIbAQc0dnYPi4rddDpYthSLgKAREZTvdiXFEb84rToF9r20x+c9N57y7MkzT1d/Hu9kcsCn7Y+FdGnVlCdGmKHfiarwN4f5NmZViKnZ2wOby7xJ6tGJH1bDiJksQDCUROuepZ1oXV+/kqXVuaDPraHh6X6B1+8DAuU1LaLqZy3Cby45d6caoYZkrzmVckzvMTHbaeRwHFKnuZ2iZZFqmY3rvo+LcAQa4OhoqhgUO3TTTbnMOw3XGHyyLcxi6QLTfcv2P6TanNYEtk4JB1//oojnfOA44XGE5FnCs0eEQreHmccBhG8LqE0+2+mRQOAzRLmwdBxyu404QDtHQah8HHJKpO+kAaFg4RJujcxxwmHZzPGrbss1hw8Ihmt/c44DDFayhU4BDtEd5xwGHOEHiWqN3dA3RWlOtff/d8bCniIcpjgO/4YybIOhrZQIyPLBW/AnzYQO3zm34hDTPpjU7sRgQMM9I6ecG7IzxA+4bZZ/DlcJ/yjd2cnFq1hExmp5cJN6R3j+XIzTtMnCAIUHH7MtBiikOC2/yu6wG0NZyuYOT/TPn22lZIZ0WZX9OIwA7ftpe3GvrnATIfGKoD1wBkAKrSYDVewNWHGByS9mEoei6vgkWWbkZxuoJFqmjqhYOiZjlddO4VD7i9P2WSrMjFguOvQzZOBBotqS8QF/lJY48Kj2ifIoqfSmZXVygz9m9NlHCmz0Q3jQFH1xA1j0elPEtHOWgxQpV5cAmB8iKRDC43IbugoWixTnzw8jixohZ2FFwx08rGHjlgUlWRSs7ZvTGK8zyzjEWZhks05rZDJVt11B7T01jL/EqSLKmIEEBzPADqqUkg6BM7itj5m4HXPCL5G1CqmSK2Yjyzi2YQmKm1iIxWq4rlAmJcWZs3vXjZGnh96Sac/HzJHieJdC/R9nbXfh6f78H+TRBcw5GN2WGG11W97zemhuZj4df1M9Dqq1iI/rx+lsCfaqdaYZTR1rb39n7xRpuCZ0Y3fpwDXcFuZAktqeGbxOrIpLlMkW9qIBk68lorK3o+AZrK3L3xFr+rJ2UD47FzY6JARr2hvYcfjOpKTBYHH0p3T0oxrKuj7b96bUH7yz2eS9/HSC4JxQTmwCDJTtlFIMPicGu4b7KYOejDPZ0kcFCYlNgsGhrOTYLmOCn0HJGtwdUQzpl0mmDoGQ9gDU+hC1sOhMdpjvtdkYPO0qX7Giolo/v2UujWtIBW1LRu55jGR9tPQ3BRitJbAqtZwtTnGLhgCw0TaNBm4YctWWgVcnNvoSmwL4W3owV+wZkn62LsvVB/jlacwHwJBnYwjuyYuCQ41kgtMLmh8ewrifQWUxsCiwULeH1jYWKk3VOUkpq1VK2EtmNq9JeuoZ1s4oHjI8R0hS+q0aT6pCQFD/4vBOjHA/vfTHDFvyvbPKz5XiRareMl1nOFcdH5LjlWGeaA0zdtfhfR6CFvr1ofXBaxxEW2o/Lf9vVxuG/ZCfSLMfBQqgE0j26+xxQ1dckb6grX8BcX+3sOh7wmHHyMHbf0szn9LX4vubbBXrAPvvaq8SJ1a/bkjyBs8CRLZmzSgXrerm1nD+i1ftbAnHLPd6KPwPyR+yE6rbM/fGw/NEF/vwZZzhkBasoNDUKAU3YETUFDqk1n/2t+fSs5oZd3fuwNRpooEVqPS/6lOzYUnTpjC5iI2PYZ6btOCbw6Bu5RtWhf/c6ADFlq56y1xeNnD+/v5iPTuTdv1x+/fF8as5m8zYLzeu4vW/X3+X55cXlRR1uvWokZBv+pC0b/0b3DPr3K56XxtUuWgRggRooljgytCpkals4OpkvliIjTm+CV6CZyobMAaCyvRpUtiFA1ddWTSlOog6/VoWOCaemMQy4w+2qlUIlzo8dgjefMaAytJGhEieSDsHTzxhQmdWy6bGgEmdbDsEL0PANlWWIfvwHBUqcJDgE/0ADAOVo9R6FpPc3KFCSz04eguugQapUcwbadkbGSjQdH4JfoeFrlTt270/yscRDcDk0RK2qz4sCbezeH5CZJSTL3UmCQpZWnObs/wUvG4on5vOaIZvNpBnQfBKlyM9QlrOrcIFjnLIl6cy6FOAyUkpRZ0mwQJynIWGnGQpjniSOfLzAi5zbcnL2h+LCP12isacUj2ZnIVxF7EOuMMA/c3hGj/5m11GEQ/5sFgUXJw80kC1GYU//mTN/2FpEKHdyFgk9ocTHWelqWMuDAIY+qZ5bRMYprnLDH4djfiP7A/lrh/QtSFUANDsZy89F8SiYZyy/OMl5vquyY5NeWoLiBK0RrQkJL0oe+ECCPKYZQjzrvNw0lKbs1GfW+3C3GFBO/yzzFYYsWsSyX/CUBuQJy8blk4/iDOUFYLxcie9D5PM7/DzGC5gVd/MSiBOCF4zlBVoFEjxjfh7EsChDlshyiX3MzhcoRUkRLyRBkWFYFD3mRZxucMzDs73bJt70QS5upOhoX8TrVV8mTl3IAVsr0Vjur0smR0xTZg9rbivtThJEe5iSBCUJShIGkQTQ7HcDV+oNWrajCgCrL02QzYEpTVCaoDRhDE0wpB8b3KMJTl+aINsEozRBaYLShDE0wQRSv/hSTXhtncavaUJLh15KE5QmKE3o3ZxgGVL383J7gtmXJrR0l6Y0QWmC0oT+TYyW1MYoHzv0ZmNs6YBOaYLSBKUJvWuCI92UsaefYPSkCW1d+ilNUJqgNKF3TXDd9mOHaslo95og+yCF0gSlCUoTxtAEtl6pfUehr8lIdn9DFA7iE2rDL4SmnTVNhteQK8yk3jiVhCsJVxI+hIQ3vZJRSZCsue9KwOlpQti39TbXPjHHA9dkgViM/wM=</diagram></mxfile> \ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws/aws_10.xml b/src/main/webapp/templates/cloud/aws/aws_10.xml
index 7c815f75..c1aa22c3 100644
--- a/src/main/webapp/templates/cloud/aws/aws_10.xml
+++ b/src/main/webapp/templates/cloud/aws/aws_10.xml
@@ -1 +1 @@
-<mxfile modified="2021-12-10T12:54:25.078Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="ut3jiWdNxpjWFQfldBfk" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7V1be5s6Fv01eWw+7pfHxE56OpPMdJr2dM55yaeA4tBi5HLJpb/+SAJhQMLGMQacKO2XGIFBaC0tbW1JWyf6bPn8MQarh2vkw/BEU/znE31+ommaYxj4D0l5yVNUxdXylEUc+EXaOuEm+A3ZhUVqFvgwqV2YIhSmwaqe6KEogl5aSwNxjJ7ql92jsP7UFVhALuHGAyGf+j3w04c81dHsdfofMFg8sCerlpufWQJ2cfEmyQPw0VMlSb840WcxQmn+afk8gyEpPVYu+fcuW86WGYthlHb5wo+//wTfnv67ML/9pV+5/zmLHv1fH+ziNo8gzIo3Pvt+gxNmIcr8IuPpCyuNFQqilJaoeY7/4wfOlBMTn5mRo1PNbCQ0j+16gsofkXvUE5rHdj1Bbd5ebTxfbWawksAd1W6vNJ6vVDKI/+vnKEvDIIKzknsKTlzEwA8wJjMUohinRSjCpXf+kC5DfKTij08PQQpvVsAjpfqEKw5Ou0dRWrBf1dhxUfDkrpg9K/J5+bwgNe0UPCXG6SJG2Yo+8hPmv/DsLf546xEwb0GYkhulMfoJWeZONB3/uySMOb8PwrCR6UcYpwGuDGdhsCD3TxF5HCiOQnhP74jfJIgWV/RoritF7kWP8EHyAP3ilUJwB8Nz4P0kGY38xqPxC6UAF25cFBqlHowvHmHOQIVeE4ZglQR3ZTHF0MviJHiEX2CSlyZJ5asKoz1+P/hcSSqqzkeIljCNX/AlTMosPf8KEzJCJXL8tFYFLG6FLDxUJME2i0RQSNGivPm6tuIPRYXdofLi53E1FPpYvopDGN6hp4t1wjkt57L8UZw+oAWKQHiFCK60mH/ANH0piAiyFNWZCyP/jIgqPkQrGOUplwHJds7SJrlMwzy3jPIMk1CtwXhjE0gpiBcw3SRiRZNC3n0jljEMQYrJUW8lBLAUX/1MOFfhgKHUOKA7Wv0WCcpiDxbfWoOLiwy8VC4rVLT1Obru1p+jaQ2u5HdcM6d8xz3IxFrc904mYxwyGarTiUz94c03/e+BAHmxdiDAdqaYfTNlv9ZA1SSgm3DaCqijTAxQSwIqBNTuWkOtiQFqS0D3A9SZGKCuBHQTTlsBddWDWFu7Wty4ZtatMWxzD2Bya/pu9FnzQ3KowiF9ohyyaxzq8AXXHIB06o6key+axay/7WZi75q1ZyNkSEA34bQd0N79R3sCakpA9wKU2ZNTAVRzJKD71VB3YoDKnvlGJd1us/VeQ19nsyl23dVuKUPY/fqb1gOaW3zABg/3Y9RI7nhu1C6n9OHc8br03ooJ0Nl7O7FGnxHqnQF66IpqsNHesqJa9Vu0jJttrfGW08hLS43ftY0x1IayFO982CbGkuwbiH2n5uv4pzMHV/utDt7mSDN2Y1NydEPAhjQixIB29SU7ExsxNKRvT9x/7Oys7X3EUKzmjlFXc5fNxhhKy8spjZIpwhHG7S6JiXmBDTlZYKPraDugE5ssYEq3/p6A9t44t3gFdbfeZTMVY1gxN6RhvrFKb6fKxKbymbJ1FuPkdgV0at69DjO/3ihmqtLV+J4aaJrsTe051Wqg0RhVVerdKc1RX+tnw1VVOSWTrXRHNRzXMeoLuXSjm9Nt7+lg+jBTCt/SkjD4HKT/Z8/Bn/8i98Q8yI/mz8Uj6MELO+hz9NHSOlYM5zBzEPlBC62xaojlcNdaYbChenYjrbH86OC+Z7ncrDq8OfhyM3Ng4uw7bGaqQ8in6UhWEoNgKDl75YpafjCN2ePlVGrlMKzUGxnumZUf/vcjjX98+/1lfnH95W/z+tJBf3zo4g2oE1EUYaBCuupKf0ypi7OL+cW8TiCNEapy3SX94UhZLNjfvJy/lYvdl+CrpmEwI5AVf9HBqCzCN9ni6eoafGxONvjwmk6FEBzBGKq6AZ22+A/t6CiKPTuft5V6G0TV+BGqANoB0GpETDDcUz5kAqv/VbB051BQ8R71TRXpPUGlNiqWaqujo8VPktQlWkK0NHd8tHh/mCHREqJlKObYaAnmJpoSLUGjZWra6FjxQweWxIpiZdSwsnR7dKw0DitbYpXXq4YK2qY+Olr8Sli++/8+0arXLGd8a1AwEY73dL9PrOr+OHd8W1Awc+lrkOIy0hT8VumJZtFIhHcx/rRIy3KoAEkvq6EVk3h+YB3orx6JkuBGfGtFzD/yhUaQQnEkwyJ04VfqrPtg1AEURTJU6I8A+IMDrVtNo98S4Fy61atAG4fyfRh8F+0mu/uQtoBdQdj6lZG4p7QYP+SoneELVGv1vD45bXqo1gZ6DE8HW0gHRUAHrQc63Mz+vP56/n119Zj+/tenh9+qGV5/6DDHhYRLFfquq8LccGMfviy1pvdDEWmoqliC0lQPVZoip29elzAtI1Y3rlAMl+RWqyQjf31aOrjMA+K1BjgrJHYtjY+cQC+FaUbOAj9YBQnhNj6AYVBclOC2k9yCJAZZskQ+rcXLFb1lEHmBH/gZ9Ydn5BdGBj+eXJ2yR5OjJVhEgDwlDH5l4BR/+kbOwyhY0meTS4L84BEngmX+9F9ZkOA/EcLsILGHFfgMYy9IQRqgiDwyDMHSQ+y5+cVBErDc0McFK/pF8gvQ117it0CsAHB2UpKfef4orAkkv0Gc0XyzsgvI02K4iuEDxPZETIuSJj6iMFvhDEGadVpuCkwScuhhc2KNAC2UDP+6zxYBIJdFJPs5U3FCFpNsXDx7cJXCLAeMlivyPAA9+g0vWwU+SPNv0xJYxSjwCc9ztHIkaMa8LFyBvAzJTe7vAy8gxz5MYJxft0RhnmGQF31AizgpccyWp4xgmK9Vjr2qwe5BYLdXfpGJ14dRZanNkQY2vlS1qQzRSEMzjGdveiCaDi71QOqB1IMh9KDpvlDZQtCqIJgi+0A1DyQIohmoUhCkIEhBGEMQyhkn2wWhh/0AxP0v0Zp/qQhSEaQijKEIhmJ1VIQ+VjyIFUHkkpGKIBVBKsIYTgSTzWDa7kUwDqUImlQEqQhSESaiCJYu8CuKew2H8isK44FLRZCKIBVhDEWwTaOrjaAfShEMqQhSEaQiTEQRHLtrr4FNue9fEUShi6QiSEWQijCGIrgsVt12G6GHwUfhCmGTH30881IUJxwayVOwDEE5i7ZangwWD5KtnQkExbWX9bm59wb5d8LN2S3T+Y2gkxTE5URO/WRy+0k31hGLtpMup5bVELUPtZu0IGL0N1xfOTyFm563bfjdshl6A8fycuHc69qm4azqXpGq+BnhliWgO5/foTRFy9a6zTGtZb5huYy+svU6SFb5i94HzyQfHHXITYT7s2cJfdauExg3V7gdhKPufOT7FSzuT2278h78DGJ+8WMRn8ELFCiGZFhnhnkoxvYQtgFuSeN8Wz58LMo1ZE3AOVMfknO8t3v2ADCtQtlOvaqd0hXe8hC2U2YfARfEmPJ9kWt0F9AVB+TOmvId3h1EU8QrgxpCY9sqXRkwtqYI5WJJC+rWCwPKiH5koqxknUll2c2BMdHKTZFSlAsa+qcVb9B+hyAma0qGaaEYcd5YC7WEPsnKLVzCeAEj72VE2jUi/6n8jK1BLSKbt7gvvAck2fZ6tkFSfqMRjG1WVoZG48MTsdX8gxDM5ZvKs8+fJL/24NczvizCcpb4P8fjmV0XMk1xBM2nNaSUqQrfu3uLYbB6AlBtBKFlfeOxVmwLNqg13iB6O/d+TNYFZiYDi5o5AFBik4Hv0J4twW/qkL8iIw19Sjs+Z5yda+5Z5dw8wF3NQqEjEu+SxxoL/9w857Am/WD6M8UGQCj2MczDT37ySH7IGvP8U/2qkFCpjYrVl66NLzh9dc/r/XNN0D8f1qblZxOVBL3h47fty09LOdN1ezd+ttgmb5WfiT6EUhp23dusso2VRyMiP4mlJCI1gpvDiB9BCp9IMNit44v7ktY1zPmlthtpzTNdOTffDWnBKrhdFIAMwl6t3s7bzqlb/Rl57MQWdOQYmf+NqZiQGQRN3s5BSkbdb9IYgqXgvOT18Lz+mYOVj9YkBTK7Ww9mP7S3FHfatOdjoDDaN8l8EYIE434DQew9SK5PgeswhyShkNwmMH4MSGfx8GpuG3U/XCXAz2hM5qN3zF8isERzwYSm4RTbmNv45G4sxj/GuftuWOxTmPy7V6i01Q+dXU0/VSo/2uTILQwDl3hxcEfmDzVZ/DlGHkwSJDjVL8HFrum5Ys5Um+Pv0bumQ7C888HtfRYVFXiA4JNKY/+OCZDR4QfVvsBfGZ1bKpk4LSa2Kqd9GEOAs29Hpio/ZtJm3rYbC9ImmLpNcAATQN9M65G7bWwTp+q8hi9XOOGSKYIU1xHFVTtQ4z85Gm4YipihRRSkPU+1IUOXpmEb7m7iObNVXeW31Xqr4ukVRT9EYN/G6Jhp8hF5hqXkhkGJzygMX/pvzeUA7jZCrmjBj0BHWxVNex2WkIKBhe83OOET+kplkiwelGO2Q1MyQOmtR8p+hLEv01JGZ2W731/5HESrchdP2XQPq5Ss7EegJRFLY0J9d96hn0vmlyzsWTLf1wzbOAsHkT1LayxBEcoe23p3GE7xfnSyAvfgA0Hva8lkRot0CIYxjZiogglW8Ld4H2doWcSf4M9d5+t7hnBMyq7M9r51CdQABG96JdVpdbZdfiRobUViDUARhu13//0bydPthmSl+Ecn6gS64W73kaB1/+fggit7RJPqEamaqjR3ITHGpy4/2CPDxowSNmZ3Qhm6emq2ziyaArkEQzgDLWB9o9zacwHrazhmbeCYJjASB1246gpGZESrQyTn3gzndNMde7m0y3sP82GXK/AT8uS7RPGyCDwpJ7aPb/SFGKTb+xKToSYBqWWgpcn0sHmH5cUz9PJAptfIh+EQsvnuZ/r028Xg+sYT8lm6vM/yCwxBSkMFrzcOn4Ekoy7J9UbiwrVxYzTy5xeK+xbZeh9CmN4uQQQWcPm66GKv6sBMSxHL+GQ1hiaDrEoT863Fs3j0fEsIz3BDHN9GKIV3CA1mWtYFkoX6GC/yDu+A0ThivcPYLbpaX9xqKiJ3xqDRW1SF92fwMTHeIVaGW9dxyzbGx4r3DJgSK01znMaaL5VXwIGR4icxWhIpHindEmwkMixS/MQ+WyLFI2WKtoUbFineQ+VIpHikLHf0dop3wrgSKbo/WqNSCfbYGBQqt3s4kxvcu7kmvRs5r2oKHt+ys9lO3EOvZeZcc4Zq1VxzDt+4D+v6sPjODcdVUmar7qVBd8oirAZ37A7KxlLClbw28qM0euuGLuhXsGdVi4lZkAcoJr6/vkGule1y3YGQ2ze0EEk7j9MW4LeTebxS52dY9SukLd5e+u/ted9g5MUvqxT6NJJZNxK+KTqJtkgdXOvqsxobWmdZIn/XwMUk2jfyuLXOaIFvSuTk7UypdRPVumOgE+8KmJrWmYJowwMXEt8LP3als1vAmxI1+fkAUukmqnRHQCfBhkxTUzpDF01eHLiYOvSljkvrSuCnTM4OfgOpdZPQuqOg0/S9dYYimgUwcDF16OgfmdYdgXtFsN+B1LqJat0x0KmDQ2Rku063xu7BCkLUH7vSWS3gTYmaHfwGUummoXTHQKcODpFDK52qm415Z874dpwgLPyxq5vbAtiE6CiIcC7VbaLqdgx06uACGVzdNJar8YqlQ1f+uLStBHrKZOzgGZDaNgltOwo6dXB5DK5tpqOOb7l16LwfmbqZLYBNiY4dvAFS3aahbsdApw5ujsHVzWJDauMVS4fu+pFpm9MC14TIKAgMKrVtoto2Jp3wYYxIAJHy3Efy1nlgG/3iHw==</diagram></mxfile> \ No newline at end of file
+<mxfile modified="2021-12-10T09:32:55.822Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="REGpU48uEwY1t2TkGC9a" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7V1be5s6Fv01eUw+7pfHxE56OpPMZJr2dM558aeA4tACcrnk0l9/JEAYkLBxjAEnSvslRmAQWktLW1vS1ok6C14+RWD1eINc6J8okvtyos5PFEVRTQn/ISmveYosm3qesow8t0hbJ9x5v2GRWHxxmXoujGsXJgj5ibeqJzooDKGT1NJAFKHn+mUPyK8/dQWWkEm4c4DPpn733OQxT7UUc53+B/SWj/TJsmHnZwJALy7eJH4ELnquJKmXJ+osQijJPwUvM+iT0qPlkn/vquVsmbEIhkmXL/z4+0/w7fm/S/3bX+q1/Z/z8Mn9dWoWt3kCflq88fn3O5ww81HqFhlPXmlprJAXJlmJ6hf4P37gTDrR8ZkZOTpT9EZC89isJ8jsEblHPaF5bNYT5Obt5cbz5WYGKwnMUe32UuP5UiWD+L96gdLE90I4K7kn4cRlBFwPYzJDPopwWohCXHoXj0ng4yMZf3x+9BJ4twIOKdVnXHFw2gMKk4L9skKPi4Ind8XsWZHPwcuS1LQz8BxrZ8sIpavskZ8x/7lnF/jjwiFgLoCfkBslEfoJaeZOFBX/uyKMuXjwfL+R6ScYJR6uDOe+tyT3TxB5HCiOfPiQ3RG/iRcur7OjuSoVuec9wgXxI3SLV/LBPfQvgPOTZDR0G4/GL5QAXLhRUWgZ9WB0+QRzBkrZNb4PVrF3XxZTBJ00ir0n+AXGeWmSVLaqUNrj94MvlaSi6nyCKIBJ9IovoVJmqPlXqJAphY49r1VBluxCFh4rkmDqRSIopGhZ3nxdW/GHosLuUHnx85gaCl0sX8Uh9O/R8+U64SIr57L8UZQ8oiUKgX+NCK5ZMf+ASfJaEBGkCaozF4buORFVfIhWMMxTrjyS7ZylTXLpmn5haOUZKqFKg/HaJpASEC1hsknElPxC8u4bsYygDxJMjnorwYGl+Oot4VyFA5pU44BqKfVbxCiNHFh8aw0uLjLwWrmsUNHW56iqXX+OojS4kt9xzZzyHfcgE21xPzqZtHHIpMlWJzL1hzfb9H8EAuTF2oEA25mi982U/VoDWRGAbsJpK6CWNDFADQEoF1Czaw01JgaoKQDdD1BrYoDaAtBNOG0F1JYPYm3tanHjmlm3xrDNPYDJrai70WfND8GhCofUiXLIrHGowxdsfQDSyTuS7qNoFrX+tpuJvWvWno2QJgDdhNN2QHv3H+0JqC4A3QtQak9OBVDFEoDuV0PtiQEqeuYblXS7zdZ7DX2bzSaZdVe7IQ1h96vvWg+y3OIDOni4H6NGcsczo3Y5pQ/njleF95ZPgM7e24k1+pRQHwzQQ1dUjY72lhXVqN+iZdxsa403rEZeWmr8rm2MJjeUpXjnwzYxhmDfQOw709/GP5U6uNpvdfA2R5ixG5uSoxsC1oQRwQe0qy/ZmtiIoSZ8e/z+Y2dnbe8jhnw1t7S6mtt0NsZQWl5OaRRM4Y4wbndJTMwLrInJAhtdR9sBndhkAV249fcEtPfGucUrqNr1LpsuacOKuSYM841VejtVJjaVTxetMx8nuyugU/PudZj59U4xk6WuxvfUQFNEb2rPqVYDjcbIslTvTimW/FY/G66q0hmZbKVasmbZllZfyKVq3Zxue08HU4eZUvieloTBFy/5P30O/vwXuSfmQX40fykekR280oM+Rx8NpWPFsA4zB5EdtFAaq4ZoDnetFRodqqc3UhrLjw7uexbLzarDm4MvN9MHJs6+w2a6PIR86pZgJTEIhpKzN66oZQfTqD1eTqWWDsNKtZHhnll5+r8fSfTj2+8v88ubL3/rN1cW+uO0izegTkRehIEK6aor/TGlLs8v55fzOoEUSqjKdVfZD0PKYsH+5uX8rVzsvgRf1jWNGoG0+IsORmURvk4XT1fX4GNzssGHt3QquOBwxlDlDei0xX9oR0eSzNnFvK3U2yCqxo+QOdAOgFYjYoJmn7EhE2j9r4KlWoeCivWob6pIHwkquVGxZFMeHS12kqQq0OKipdjjo8X6wzSBFhctTdLHRoszN1EXaHEaLV1RRseKHTowBFYZVloNK0M1R8dKYbAyBVZ5vWqooKmro6PFroRlu/8fE616zbLGtwY5E+FYT/fHxKruj7PHtwU5M5e+egkuI0XCb5WcKEYWifA+wp+WSVkOFSCzy2poRSSeH1gH+qtHoiS4Ed9aEfOPfKERpJAfybAIXfg1c9adanUAy0iGVYAPDqhqNI17g4Nn6T6vAqodysehsV2xu/T+NGkBtYKk8Ssl8U2zYjzN0TnHF8jG6mV9cto0kI1RYDe5sEsc2JUeYL+b/Xnz9eL76vop+f2vz4+/Zd2/Oe0wZ4WEP+X6oqtC23BLH74slaY3Q+JpoiwZnNKUD1WaPCduXmcw/UJaB65RBANyq1Wckr9uVjq4zD3ihQY4KyQWbRbvOIZOApOUnAWut/JiwmF8AH2vuCjGbSG5BUn00jhAblZbg1V2Sy90PNdz08y/nZJfGBn8eHJ1Qh9NjgKwDAF5iu/9SsEZ/vSNnIehF2TPJpd4+cETTgRB/vRfqRfjPyHC7CCxhCX4AiPHS0DioZA80vdB4CD63PxiL/ZobrLHeavsi+QXyF47wG+BaAHg7CQkP/P8Ubjuk/x6UZrlm5adR54WwVUEHyG2D6KsKLPEJ+SnK5whmGU9KzcJxjE5dLB5sEYgK5QU/3pIlx4gl4Uk+zlTcUIakWxcvjhwlcA0BywrV+Q4ADrZN5x05bkgyb+dlcAqQp5LeJ6jlSORZcxJ/RXIy5Dc5OHBczxy7MIYRvl1AfLzDIO86L2siOMSxzQ4owTDfK1y7E0NcA9Cur3y80y2PowkQ26OHNDxoqqNpPFGDpphOXvTA970bqEHQg+EHgyhB013hEwXdlYFQefZB7J+IEHgzSgVgiAEQQjCGIJQziDZLgg9xPfn9794a/iFIghFEIowhiJoktFREfpYwcBXBJ5LRiiCUAShCGM4EXQ6I2m7F0E7lCIoQhGEIghFmIgiGCrHr8jvNRzKr8iN7y0UQSiCUIQxFMHUta42gnooRdCEIghFEIowEUWwzK69BjqFvn9F4IUiEoogFEEowhiKYNPYc9tthB4GH7krfnV29PHcSVAUM2jEz17gg3JWbLU8KSwOJFs1EwiKa6/qc20fNPLvhJmDW6bHCYjKaZjqyeR2g26sAuZtBl1OJKvhZx5qL2hOvOdvuHYy6HG3LG/brrtlK/MGauXl3JnTtS2/aUW9JhXvFuF2xMv2Lb9HSYKC1prM8KpldmG5CL6ycTqIV/mLPngvJB8MdchNuLurp3H2rF2nK26uXjvIRN3VyPYiaNSe2mbjPXgV+PxiRx5uwSvk6INgWGeGOSjC1g9u8RekKV6UDx+Lcg1Z43BOV4fkHOvbnj0CTCtftEodWiVVYq0Kbquk9xEcgY8g28+4QfdetmqA3FmRvsP7gygIfxVPQ1ZMU85m94+tIFxxCLKCWji+lzGiH1Eoq1RnUhlmc9CLt8qSpwvlYoX+acUaq98hiMi6kGHaI0qcd9YeBdAlWVnAAEZLGDqvI9KuEaVPZmdjDWr/mKx9fek8IsG2t7MNkvIbjWB0Y7EyjBkbSoiuvB+EYDbbVJ7ffhb82oNfL/iyEMtZ7P4cj2dmXcgUyeI0n8aQUiZLbF/uPYas6glAuREwlvaEx1pdzdlMVnuH6O3c+9Fph5eaDDTC5QBA8U0Gtvt6HoDfmbP9mowi9Cnt+Jx2fqHY55Vzcw93NQuFDklsShZrLPxz/YLBmvR6s58pNgBcsY9gHirys0PyQ9aJ55/qV/mESm1UrL50bezA6qt7Xu+fK5z++bA2LTtTqCToHRtrbV9+GtK5qpq78bPFNnmv/IzVIZRSM+u+ZZlugjwaEdkJKiURMyO4OUT4CSTwmQRu3Tp2uC9pbU2fXym7kVY/V6UL/cOQFqy8xbIAZBD2KvV23rTO7OrPyCMlJqcjR8n8b0zFmMwOaPJ2DhIyon6XRBAEnPOC18Pz+mcOVj42ExfI7G496P3Q3pDsadOejW9Cad8k86UPYoz7HQSR8yi4PgWuwxySOINkEcPoySOdxcOruanV/XCV4D2jMZmNzDF/DUGA5pzJSsMptjY38cndWIx/tAv7w7DYzWBy79+g0kY/dLYV9Uyq/CiTIzc3lFvsRN49mS3UZPFthBwYx4hzql+C813Tc0mfySbD36N3TfsguHfB4iENiwo8QKBIqbHXxgTIaLGDal/grzSbNyqYOC0mtiqneRhDgLFvR6YqO2bSZt62GwvCJpi6TXAAE0DdTOuRu210w6XqvIYv1zjhiiqCENcRxVU5UOM/ORpuGIqYoWXoJT1PtSFDl7pmavZu4jkzZVVmt8B6r+LpFEU/RNDexuiYrrPRdoal5IZBiVvk+6/9t+ZiAHcbIVdZwY9AR1PmTXsdlpCcgYXvdzjhM/qaySRZGCjGbIempIeShUPKfoSxL92QRmdlu99fuvXCVbnjpmi6h1VKWvYj0JKIpTahvjvr0M8l80vq9yyZH2uGbZT6g8ieoTSWoHBlj26TOwynWD86WW978IGgj7VAMs2KdAiGUY2YqIJxVue3eB9nKChiS7DnbvL1PUM4JkVXZnvfugRqAII3vZLytDrbNjsStLYisQagEMP2u//+jeDpdkOyUvyjE3UC3XC7+0jQuv9zcMEVPaJJ9YhkRZaaO4xo41OXHewRQWJGCRKzO6E0VT7TW2cWTYFcnCGcgRawvlNu7bmA9S0cMzZwTOEYiYMuXLU5IzK81SGCc++Gc6puj71c2ma9h/mwyzX4CVnyXaEoKIJKiont4xt9PgZp8VBiMtQkILkMtDSZHjbrsLx8gU4epPQGudAfQjY//EyffrsYTN94Qj5Lm/VZfoE+SLIwwOvNv2cgTjOX5HozcO7auDEa+YtLyX6PbH3wIUwWAQjBEgZviy72pg7MtBSxjE9WY2g8yKo0Pt9aPItHz7eY8Aw3xNEiRAm8R2gw07IukDTUx3iRd1gHjMIQ6wPGblHl+uJWXeK5MwaN3iJLrD+DjYnxAbHS7LqOG6Y2PlasZ0AXWCmKZTXWfMmsAg6MFDuJ0RBIsUipBmeTkGGRYif2mQIpFimdt+XbsEixHipLIMUiZdijt1OsE8YWSGV7nzUqFWdHjUGhsruHM7nDvZsb0rsR86qm4PEtO5vtxD30WmbGNafJRs01Z7GN+7CuD4Pt3DBcJWW26l4a2S5YhNXgnt5B2lhKuJLXRn6kRm9dUzn9CvqsajFRC/IAxcT21zfItbRdrjsQcvv2FTxpZ3HaAvx2Mo9X6rxd7gfw9mb/3p/3DYZO9LpKoJtFMutGwndFJ972p4NrXX1WY0PrDIPn7xq4mHh7Qh631mkt8E2JnKydKbRuolp3DHRiXQFT0zqdE2144EJie+HHrnRmC3hToiY7H0Ao3USV7gjoxNmQaWpKp6m8yYsDF1OHvtRxaV0J/JTJ2cFvILRuElp3FHSavrdOk3izAAYupg4d/SPTuiNwr3D2OxBaN1GtOwY6dXCIjGzXqcbYPVhOiPpjVzqjBbwpUbOD30Ao3TSU7hjo1MEhcmilk1W9Me/MGt+O44SFP3Z1s1sAmxAdORHOhbpNVN2OgU4dXCCDq5tCczVesXToyh+XtpVAT5mMHTwDQtsmoW1HQacOLo/BtU235PEttw6d9yNTN70FsCnRsYM3QKjbNNTtGOjUwc0xuLoZdEhtvGLp0F0/Mm2zWuCaEBk5gUGFtk1U28akEz6MEAkgUp77RN46D2yjXv4D</diagram></mxfile> \ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws/aws_2.xml b/src/main/webapp/templates/cloud/aws/aws_2.xml
index 1d495373..ae382d5d 100644
--- a/src/main/webapp/templates/cloud/aws/aws_2.xml
+++ b/src/main/webapp/templates/cloud/aws/aws_2.xml
@@ -1 +1 @@
-<mxfile modified="2021-05-17T14:02:00.811Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36" etag="RzE5FP5afHe9LIHeLcT_" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7V1bd9uoFv41eWyWhO6PcZx0Oic50zNJO+vMSxaRsE0jC1WX3H79gC62JbCjTLEkx7hrpRZgCe1v87HZwObEOF8+f05gvLgmAQpPgBY8nxjTEwB0U3PpfyzlpUyxTLNMmCc4qAqtE27wK6oStSo1xwFKGwUzQsIMx81En0QR8rNGGkwS8tQsNiNh86kxnCMu4caHIZ/6Fw6yRZWq29464zeE54vq0S5wyowlrAtXb5IuYECeNpKMixPjPCEkK78tn89RyIRXy6X83eWW3FXFEhRlXX7w6X8/suTHt9c/pxfXf/5tXV+65LdP1V0eYZhXL1xVNnupJUDyLMQROl8JWDsxJjMSZeckJElRxqD/LtlTJ/MEBhit8yISIVYch+FmccehEqTpaZaQB9QqHMB0gYLqQY8oyTCF4wreo/ArSXGGSUTz7kmWkeVGgbMQz1lGRmKaCqsrn9YF0XtPFtkypNd6VfdK0XRQX1fvyx4J07h80Rl+ZvWYxASzu1w80pul1U0omjH7wfJ5zhT/FD6l5mlASHIXEv+BFuDhqWVNK4yeN5IquD4jskRZ8kKL1LmaW7WeqvEA2zm1ypSntTI6VaHFhhrWabBS//nq5msNoV8qJXmHwgClMBIVxofJnlTFsI1hFcVQiiJVUZYogXvSFdNyh6YVU2mLRG3JMxzi7EWSuuiu16QW3RhaXSylLjLJhcxmCN3FzBKVozGe1iQYfXC7xVYaI1FjQobYfR7eS1IY4DpjM3QdpTASFWZB8hRJUxZrXKauq1RFoqpkC5QsSZpBWb1RW19GYO56nMbonMokJI+CAkImqqcFztBNDH2W+0Sl1YKjqRua5pxPptt0o6V3l8WnhWELYyZgKWB42mmr9er6qaWtPzqHjKnxyBgSkPnx93f47emPufXt/8aV99+z6DH4+cns4OBAwRzVciJJtiBzEsHwYp06WWPH2sK6zBVhDasQ7g+UZS+VdGGekSaeKArOmPeSPSFGUZlyidm7FLds4kpBtExrYpurnNpXCVpN1dwFY0ryxEc71FavPbAwmaNshxQriJmgdmpFgkKY4cdmG5De2nTey3kFl/cBPAF2yFjmPqHf5uzbZR75BTlyOYrSf8FcLKR9N6uFK4VKgKe3qcQGQxM74M1Gnj8+JLMba5N9cGYXQ8ObacZxQGObTQeOblmCdtIvGLwFZB4HGE6tdeNsJYbGAWMdBzCuZYsIbFg4TL4/ucUZFQM1wtBz1sFMKYo1AElQil/h/apfL7rxouLW5MRi0DB7NK0sgQ2jIUSzbKtlkVIFwNH8tjBwP5lNjAyBbVSqO4ftrwPJ4WibAhh1Q4Bjja18HPnO5ya/z7ZAuYGf/TMv3LJMSJ9KTM5oAd2On9eZ4wa/sGi3gb8PvHVdCLgmABzsDXC+gytM9QOESHb7dM02XsIGau0Jrpvz79e3k7/iq8fs9fcvi1fdCq+7rINhgz3h+HrLEGrnUPsd2g3a0jI8oXbbAnnp+5JXh9n9t70ku/0d4X1xWWtzIXqYZHWxymDo6hZpemTaOPGgbkVu00ki9H1UonnTR1LZu2/6SEQU1tlvUt3uK6OQjaGz1pyfs4yWnpQvWf1qrSrcjQzQulFb4UopcDcqdG71jv9eDYHIs6NYtjB62r2i5dg9suyuprGB1lmIniFNuogYFAFvz07RI6bNTbnjJLrjIBP6HSpFfheUEt5PZ7XFJQd4pZPhkhPzbIe+/Rg8+rs6oc3OaqcLvX+P/q5qC4jkOxHSxQ1KFI/sh0fSh0KJpcwO2k1HZb8OfbGmSbF0Pyh7WB1NXWdc5MEPzXdCWoxEFJqrcq5sNMVjC9PSG2QA3BUZyB9d7BLIZi/z9QtN+Awz9ARf5HYdzNttmQ5VznXeFCeomjGlvUXCMG/3LeeObuiXIp2ZFZ8xdjDCzoSOxwoF/eIXE8T0svzW6nJifDevxC+lyzF1MLYux+KnYBQ/vYOf7FH1NvzCY7X25ODXnlitGXWgiWYK+zVUO2yhOVpD1elIHbX7ciTcwU/+vs0diilGzRQjsC/4qWilVQeuVaYLhtUpfkg9fYngkkwl2y40z5w6NPN9oyT6MSfe0YySgkL2gaTdWY5mtoyd/vbbiE2dDts/j9bUqU2Yt22dcbn0dX7U+4Xc0oRzkiDpJGJrZ4bhvI9EtvRQH5VEMMnufCb7vZDICOwgs8Oe4OOlka5bfWr/2VhohJ/tvSUx9pUJ+ws7MpkA76Qts24uGRITgWX0SQQd9nofrsNVsJDuF2gB8LSwK07UWFgBcAjflOHYFC38a1qoA9rJYAXP4naPdd3V7+xLZ1QEqxHHxgNNB4ht9BkwRKwvKobVKEPjtTTFMQb2XugqeNVYI+O1VMUFfQYKESuLils13sB4RnMkY7t9xsUTq4uKWjXqwHhGc0mb4w5vtajgVSMOjAfqoBXjMXMt3sHGKczhOku2Yva2Z6SyHd50mIKRzbt0WA2tCGCIQIe0uY9r5AI6LExVqjJYoMO2voxg+GLxflfVWWz0AW93FuPyowv2W6tJ+o8zSW+YbssL7xii0Bz9csg7d+AdDYeArhxijItD+D5BzdCPaYbe9JpLdcQc0OsMvfXOzQ1HwwFdg82ArtFmeuIAntPVfPyY5uNtvc0BHa2Afc3GW+9c83s0DCCI4CEuOFhM7p313sDzzzyUPIY4rvaf5KGkcYBjgw4WQL1+th8L4J2LdY+m/XfdFQ3GtS0a8Hz+H9rOU5zKpQCa55nW9BK8z41gnRnaxDoaN8JDJXo5K3yd9oqb4X0IH3qF7y+wh92VPcYVwgeoqAofcFerrrWCsYyBOTqsjzhK5ugaUqFewTAW5uB7AhU68COEDtTNLl7LfufLee5Q8W4/VLxbHbhaF60DfWodv6CnUhKmb1qpYPwoS2KE7BW6XWNkS2n/disUuSU8BAL0Gu+aXzBzDFBozXUoHhAFx+oZCcAhYXNy/5DHGnmO8Fij8Zy4afBzQc5xQEObQCuMnCla3tsvGrxf3j0SNMz2FlRbFy2g6xcO3k3qHQcclt1a+u6Kjq/oFwze61RHrfnoaLheGw3hjFCvaPAj+Tr4x0dHQ9e89kEb4s1n+wLkQf/d+jbLrNfbL/CPl/Dm+enW6HKGVtMZ9j40Ls4uphdTgUC3ASFELWQD1gn0H+ZFXVq5UrqR1plINQaNtVMej4tuWBKsXyEyvPF7CA2lB6iM9npXSxSMptdWxFvDu5rRMWHlNJDSnT57ICFUvKl8CAdK9w8V8AaHijejD+G46f6hMrU+hzxCqHgj+xAOoB6ms+rzHHchWLwNfghutT7A8toGuqkNDRY/HXUIjrZewGpA5Vh9uhqEUPFzOIfghRuiXbnD24GC0MWH4KTrxbpooeUNbwoKIsTW0+1pDKN6wv2KJGjJ7hWnOfs/KMRDIcXsjDJI63ICaAU0n0Qpm9DLcpYLAxzjlM2p0QsU4qpQWsz3BYQl4jxdEnaZoWVc3BJHPg5wkBenn+XsD4Wm2FCrsaeUj2ZXSziP2OoBGOKfOTyl376xfBThZfFsVgSXF480ES7Lp//M2apaLSJUfXJWCD2jxMcZLNfFaXkYwqVP6ueWhXGK69oUj8Nx8UP2BxavvaRvQWoB0OpkrD7T8lEwz1h9cZIX9a5lh9nTEhQnaIFoY0gKURaJjyTMY1ohVFS9kJuG0pRd+rQtrBEohJLTP7N8jiErFrHql6pKE/KEVePi2UdxhvISsEKuxPch8otf+HmMA5iVvy4kECcEB0zRS7RKJIqK+XkYw1KG7CazGfYxuw5QipKy3JKEZYVhKXpciDhd4ZgvT2sFowq7qWMdlnnwc8ESzqE232z9In6Swghea5Ye8GRgipxj+t7ogHeOKTpQdKDooBc6cJuWt+4IjAPREfV6HUVTPh+Iwg0oPlB8oPigfz4AHh/yagsfSNh4LOYDUegBxQeKDxQf9M8HZr1g7k0+kLGBRMwHokAEig8UHyg+GMJ9YHf1H5j74gNRYALFB4oPFB/0zwe2KfAniscLe/MnikINKD5QfKD4oH8+cOrAH2/bB8a++EAUQEDxgeIDxQf984HrdB0v1OtD5fOB6LwFxQeKDxQf9M8HnieYbxTbB/uabwSA44OD2FQ4xIJnfRU0YKjFY4LAxYq9FXsr9u6HvXWODkSrSXsmcJMncLW98kS0ZU+0F7Zf+laTd4q+FX0PNpnftueAeFOULAKnlwlhh7eu8j6zqHDXJECsxD8=</diagram></mxfile> \ No newline at end of file
+<mxfile modified="2019-10-23T12:38:07.123Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" etag="7DjRCcEjKHe-rOX_W461" version="@DRAWIO-VERSION@" type="device" pages="1"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7V1bd9uoFv41eWyWhO6PcZx0Oic50zNJO+vMSxaRsE0jC1WXxMmvH9DFtgRxlCmW5Bh3rdQCLKH9bT42G9icGOfL1ecExotrEqDwBGjB6sSYngAADNOh/7GU5zJF122rTJknOKjSNgk3+AVViVqVmuMApY2CGSFhhuNmok+iCPlZIw0mCXlqFpuRsPnUGM4Rl3Djw5BP/QsH2WL9Gt4m4zeE54vq0S6o3ngJ68LVm6QLGJCnrSTj4sQ4TwjJym/L1TkKmfRquZS/u3wld12xBEVZlx98+t+PLPnx7eXP6cX1n39b15cu+e1TdZdHGObVC1eVzZ5rCZA8C3GEztcC1k6MyYxE2TkJSVKUMei/S/bUyTyBAUabvIhEiBXHYbhd3HGoBGl6miXkAbUKBzBdoKB60CNKMkzhuIL3KPxKUpxhEtG8e5JlZLlV4CzEc5aRkZimwurKp3VB9N6TRbYM6bVe1b1SNB3U19X7skfCNC5fdIZXrB6TmGB2l4tHerO0uglFM2Y/WK7mTPNP4VNqngaEJHch8R9oAR6eWta0wmi1lVTB9RmRJcqSZ1qkztVct/xN1XqA7ZxWzedpo4xOVWixpYZ1GqzUf76++UZD6JdKSd6hMEApjESF8WGyJ1UxbGNYRTGUokhVlCVK4J50xbTcoWnFVNoiUVvyDIc4e5akLrrrNalFN4ZWF0upi0xyIbMZQncxs0TlaIynNQlGH9xusZXGSNSYkCF2n4f3khQGuM7YDF1HKYxEhVmQPEXSlMUal6nrKlWRqCrZAiVLkmZQVm/U1pcRmLsepzE6pzIJyaOggJCJ6mmBM3QTQ5/lPlFpteBo6oamOeeT6Wu60dK7y+LTwrCFMROwFDA87bTVenX91NI2H51DxtR4ZAwJyPz4+zv89vTH3Pr2f+PK++9Z9Bj8/GR2cHCgYI5qOZEkW5A5iWB4sUmdbLBjbWFT5oqwhlUI9wfKsudKujDPSBNPFAVnzHvJnhCjqEy5xOxdils2caUgWqY1sc11Tu2rBK2mau6CMSV54qMdaqvXHliYzFG2Q4oVxExQO7UiQSHM8GOzDUhvbTrv5byCy/sAngA7ZCxzn9Bvc/btMo/8ghy5HEXpv2AuFtK+m9XClUIlwNPbVGKDoYkd8GYjzx8fktmNjck+OLOLoeHNNOM4oLHNpgNHtyxBO+kXDN4CMo8DDKfWunG2EkPjgLGOAxjXskUENiwcJt+f3OKMioEaYWiVdTBTimINQBKU4hd4v+7Xi268qLg1ObEYNMweTStLYMtoCNEse9WySKkC4Gh+Wxi4n8wmRobGYfjrgHF42aYALt0Q4FVjKB8vvpO5ye+zVyDbwsn+mRfuVyakT6Xsz2gB3Y5Xm8xxg6zb+wBV14WoagJUwd5Q5Xurwu4eLQ7yG5trtnERtjZrT7DcnH+/vp38FV89Zi+/f1m86FZ43WXxChuhCQfFr4x7do6P36HFoC0twxNqsS2Ql74veXWYkn/btbHbSRHeF5e11haih0lWF6t6+a6+jKYbpY0TD+qryG17NoQOi0o0bzo2KiP1TceGiKo6Ozuq231lVLE13tWak2qW0dKT8iWrX21UhbuRAVo3aitcKQXuRoXOrd/x36shELljjotN7XYvZzl2j2y6qwlsoXIWohWkSRcRE3nAG5tT9Ihps1K+Mom+MsiEfodKkd8FpYT30ym94i8DvNLJ8JeJ+bRDH34M7vZdnc12p7TTv92/u31XtQVE8p0I6eIGJYpH9sMj6UOhxFKm7uymF7Ffb7tY06RYtB+UPayOJq0zLvLgh9o7IS1GHArNdTlXNpriMYRp6Q0yAO6aDOSPInYJZLuX+fqFJnyGGXqCz3K7DuaKtkyHKucmb4oTVE1n0t4iYZi3+5ZzRzf0S5HOzIrPGDsYYWdCx12Fgn7xi9lbell+a3U5Mb6bV+KX0uWYOhhbl2Px8yOKn97BT/aoeht+VbBaGHLwC0Os1nQ30ETTeP0aqh32txytoep0pI7aTTkS7uBnZt/mDsUUo2aKEdgX/Pyx0qoD1yrTBcPqFD+knj5HcEmmkm0XmmdOHZr5vlES/ZgT72hGSUEh+0DS1ilHM1vGTn+bYcSmToe9mUdr6tQmzNu2zrhc+jo/6v1CbmnCOUmQdBKxtTPDcN5HIq/0UB+VRDDJ7nwm+72QyAjsILPDht3jpZGu+3Bq/9lYaISf7b0lMfaVCfsL2yWZAO+krYFuLg0SE4Fl9EkEHTZiH67DVbBg7hdoAfC0sCuI01hYAXAI35Sx0hQt/GtaqKPNyWAFz+K2dnXdcu/sS2dUeKkRB64DTQeIbfQZzUOsLyrA1Cjj1rU0xTEG9l7oKrLUWMPWtVTFBX1G8RAriwoqNd6odUZzJGO7fQatE6uLCik16qh1RnNJm+MOb7WoyFIjjloH6ogS4zFzLd7BxinM4TpLXsXsbc9IZTu86TAFI5t36bAaWhHAEFEIaXMf18gFdFiYqlRlsCiEbX0ZwfDF4v2uqrPY6gPe7izG5UcX7KtWk/QfZ5LeMN2WF94xRCE4+uWQd+7AOxoOAV05xBgXh/B9gpqhH9MMvek1l+qIOaDXGXrrnZsbjoYDugaVAV2jyvTEATynq/n4Mc3H23qbAzpaAfuajbfeueb3aBhAEMFDXHCwgNk7672F5595KHkMcVztP8lDSeMAxwYdLIB6/Ww/FsA7F+seTfvvuisajGtbNOD5/D+0nac4lUsBNM8zrekleJ8bwToztIl1NG6Eh0r0clb4Ou0VN8P7ED70Ct9fYA+7K3uMK4QPUFEVPuCuVl1rBWMZA3N0WB9xlMzRNaRCvYJhLMzB9wQqdOBHCB2om128lv3Ol/PcoeLdfqh4tzpwtS5aB/rUOn5BT6UkTN+0UsH4UZbESNhrdLvGwpbS/u1WyHFLeKgD6DXeNb9g5hig0JrrUDwgCo7VMxKAQ8Lm5P4hzxzyHOGZQ+M5DtPg54Kc44CGNoFWGDlTtLy3XzR4v7x7JGiY7S2oti5aQNcvHLyb1DsOOCy7tfTdFR1f0S8YvNepjlrz0dFwvTYawhmhXtHgR/J18I+Pjoauee2DNsSbz/YFyIP+u/Vtllkvt1/gH8/hzerp1uhyVlbTGfY+NC7OLqYXU4FAXwNCiFrIBqwT6D/Mi7q0cqV0I62zj2oMGmunPB4X3bAkWL9CZHjj9xAaSg9QGe31rpYoGE2vrYi3hnc1o2PCymkgpTt99kBCqHhT+RBOe+4fKuANDhVvRh/CWdD9Q2VqfQ55hFDxRvYhnA49TGfV5yHrQrB4G/wQ3Gp9gOW1DXRTGxosfjrqEBxtvYDVgMqx+nQ1CKHi53AOwQs3RLtyh7cDBaGLD8FJ14t10ULLG94UFESIrafb0xhG9YT7FUnQkt0rTnP2f1CIh0KK2RllkNblBNAKaD6JUjahl+UsFwY4ximbU6MXKMRVobSY7wsIS8R5uiTsMkPLuLgljnwc4CAvTj/L2R8KTbGhVmNPKR/NrpZwHrHVAzDEP3N4Sr99Y/kowsvi2awILi8eaSJclk//mbNVtVpEqPrkrBBaocTHGSzXxWl5GMKlT+rnloVxiuvaFI/DcfFD9gcWr72kb0FqAdDqZKw+0/JRMM9YfXGSF/WuZYfZ0xIUJ2iBaGNIClEWiY8kzGNaIVRUvZCbhtKUXfq0LWwQKISS0z+zfI4hKxax6peqShPyhFXjYuWjOEN5CVghV+L7EPnFL/w8xgHMyl8XEogTggOm6CVaJRJFxfw8jGEpQ3aT2Qz7mF0HKEVJWW5JwrLCsBQ9LkScrnHMl6e1glGF3daxDss8+LlgCedNm2+2fhE/SWEErzVLD3gyMEXOMX1vdMA7xxQdKDpQdNALHbhNy1t3BMaB6Ih6vY6iKZ8PROEGFB8oPlB80D8fAI8PefUKH0jYeCzmA1HoAcUHig8UH/TPB2a9YO5NPpCxgUTMB6JABIoPFB8oPhjCfWB39R+Y++IDUWACxQeKDxQf9M8HtinwJ4rHC3vzJ4pCDSg+UHyg+KB/PnDqwB9v2wfGvvhAFEBA8YHiA8UH/fOB63QdL9TrQ+Xzgei8BcUHig8UH/TPB54nmG8U2wf7mm8EgOODg9hUOMSCZ30dNGCoxWOCwMWKvRV7K/buh711jg5Eq0l7JnCTJ3C1vfJEtGVPtBe2X/pWk3eKvhV9DzaZ37bngHhTlCwCp5cJYYe3rvM+s6hw1yRArMQ/</diagram></mxfile> \ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws/aws_3.xml b/src/main/webapp/templates/cloud/aws/aws_3.xml
index 78351a1c..ab408f70 100644
--- a/src/main/webapp/templates/cloud/aws/aws_3.xml
+++ b/src/main/webapp/templates/cloud/aws/aws_3.xml
@@ -1 +1 @@
-<mxfile modified="2021-12-10T12:35:26.851Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="RvFOj8sV6yTMp1gpaxAu" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7Zxbc5s4FMc/jR+bkbjz6Evc7Wy67W7a6aNHBhmrAeQKOU766VcCYXOzjRuH0NpOZoyOhBD6/yQOHJmBPo6e3jO0Wn6kPg4HGvCfBvpkoGma6ZjiS1qeM4vr6pkhYMTPTHBnuCc/sTICZV0THyelgpzSkJNV2ejROMYeL9kQY3RTLragYfmoKxTgmuHeQ2Hd+o34fKms0HJ3GX9hEizVoR3NzjIilBdWZ5IskU83BZN+O9DHjFKebUVPYxzKzsv7Jdtvuid32zCGY95mh6+3Pz9/HQ4/fWDTdyRxAnNs/3gHgWruIwrX6pRVc/lz3geMrmMfy2rAQB9tloTj+xXyZO5GqC5sSx6FIgXFZojmOBwh7yFIdxvTkDKRFdNYlB8tSBhWTD5Klmnlcm8hI0ckxkylV5TEHLPbR3GSiWqAR8MQrRIyT9snLQx7a5aQR/wfTjKCpLXeQarPHjHj+KlgUh32HtMIc/Ysiqhc3VDiKXo1V6U3OxYMR9mWBQwMXRmR4i/Y1r2TSGwolU5QzDZqgg2/3QvDOKRrv6Zd2oFpG8yR+BetGoOBKXLGMnWjmRVDNW2XDbCeknWUDdW0XTbAavWwcnxYbWDBUEuVqgeV44NCA8W/PqJrHgq8xtvZQoISMOQTAUkFzALUTcwvBKpqvoJanlYdL2sV430lt6OnQE6NN2iTGDdyUKzSQ34QqDfmzsTmzJNizlDIZUWc0QecN26g6eJvKolpGk2SbSKmr2FIAlk/p/JwSKVCvEhrFGdC4uAuTU10oFrfdIjt6AT7x7Yov0g//RvAZnn8OvXhazcNX8t8teFrXofvdfheh2+74escH7+a3en4dZzj/hL2hQupkpTxJQ1ojMLbnXVU9qh2Ze6o1Dvt+e+Y82cFKFpzWiYax/5QerfyCCscZ5YpkeeS0ZtCl3us2iE1ErpmHj40ZVnK70YswPxQQeVLyvM/qC7DIeICl7K3fnap3MuTym4rlXtuqdJdxYmi50IBdfna1fxZGnbjWzjPpfGtm6Aie1bjDoJt036dCwisKwd5QadXQxYC44+XxmkpjWP0Spr8zveSZlO3rVSgX1LBi5MqV+C4VLBfUmmXJxVsK5XWL6n0P14Zra0yZi+8R9vSSt5j/iT2lb3H+hOcjzQmXNxLi67D0UqcMv7jUdHPfWlUmoIbqIHyTcG7PBb0ujS50C0dNn+wMN1T3jxcvkzfbu+8OXSxSETPVWelsxB6gdd/oy2Per8uKr/JrWgiOpZX9klthb1eoJ7ZVj2rFxceSy/PUKZ1ZKrQDpZ/nQuVa1/ROgWtsz+8/DW08pmsJVqO6XaPFgTg92DrBdy0fejt9usJWv6wvnDt/zT/LoNlVcEaY2n74kh7YmzFCJYsbtsQWrWYV3WhBygEuu5kTOozTQgnaUBtTjmn0dFImIdlWKqMx7GIHkpW2YkuyJNsRy24JStpDPvRrAdbRdD2Itc+6uWWg17QaIpaZ6Zi0Cu3nZ+p+hqh0dp7wFemXsDUPO3B2Ybw5SzjK+kMsO3qukOEmV0SVo+qXgn7nQmDQOsbYvVocLrwxkoXacyZ2ArkVroO5wtDJDwveyJvqhuGoxXyJoSJijKEYukQ1eEcjaFu1uEsytU7QhtpZDjzubKFMyORbFpCky6c4Wnvd4WqbpdJ1eEbX26deqRtGKGforOaYf2GuLe8wvpGsG7S3u8K1u1i497AWn/WmMMK7km0Eh1fo/YfyslCyJqqLYph9ki8hnJXprtnOom7cxIs0DeYtdNh/neNRdkrxf2i+Ed3FNua3jOK9V/yH67cvj23b+BROL3zKPb8wOl6o9Y7Uru9UYMAOjdmz2Dd93OeOxTNfXR+Mm3nFhinkTkB5hjaF0NmmPV8KyrVL2m+pAEo6zyYmm45ImeYb81oPSS09Wr/FjAmJKnPrhPEBb0WiqS08TyRX1PB2pIm9cVNL6XaNczJ9MT51hzqYGReDNUPmVAzX+gyW+RCdPfYoRJlbvgddLdM10NS+3zcyXOMIjo5vz9rTGyReRq14mOM3Iuh1k/73p93dzNWiWy9OajuNbLVGrQTI1vdOZ5aC6i6jGVBUKeqxtPlvrXDsY6/tWP7ZoCXvrVDJHfvcMkWWO3ehKPf/g8=</diagram></mxfile> \ No newline at end of file
+<mxfile modified="2021-12-10T08:33:52.750Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="PEDmDz1rVSdHI_bx4_ij" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7Zxbc5s4FMc/jR+bkbjz6Evc7Wy67W7a6aNHBhmrAeQKOU766VcCYXOzjRuH0NqOZ4KOhBD6/yQOHJmBPo6e3jO0Wn6kPg4HGvCfBvpkoGnQ0LSB/AL/ObPYljIEjPiq0M5wT35iZQTKuiY+TkoFOaUhJ6uy0aNxjD1esiHG6KZcbEHD8lFXKMA1w72Hwrr1G/H5Ulmh5e4y/sIkWKpDO5qdZUQoL6zOJFkin24KJv12oI8ZpTzbip7GOJSdl/dLtt90T+62YQzHvM0OX29/fv46HH76wKbvSOIE5tj+8Q4C1dxHFK7VKavm8ue8Dxhdxz6W1YCBPtosCcf3K+TJ3I1QXdiWPApFCorNEM1xOELeQ5DuNqYhZSIrprEoP1qQMKyYfJQs08rl3kJGjkiMmUqvKIk5ZreP4iQT1QCPhiFaJWSetk9aGPbWLCGP+D+cZARJa72DVJ89YsbxU8GkOuw9phHm7FkUUbm6ocRT9GquSm92LBiOsi0LGBi6MiLFX7CteyeR2FAqnaCYbdQEG367F4ZxSNd+Tbu0A9M2mCPxFa0ag4EpcsYydaOZFUM1bZcNsJ6SdZQN1bRdNsBq9bByfFhtYMFQS5WqB5Xjg0IDxVcf0TUPBV7j7WwhQQkY8omApAJmAeom5hcCVTVfQS1Pq46XtYrxvpLb0VMgp8YbtEmMGzkoVukhPwjUG3NnYnPmSTFnKOSyIs7oA84bN9B08TeVxDSNJsk2EdPXMCSBrJ9TeTikUiFepDWKMyFxcJemJjpQrW86xHZ0gv1jW5RfpJ/+DWCzPH6d+vC1m4avZb7a8DWvw/c6fK/Dt93wdY6PX83udPw6znF/CfvChVRJyviSBjRG4e3OOip7VLsyd1Tqnfb8d8z5swIUrTktE41jfyi9W3mEFY4zy5TIc8noTaHLPVbtkBoJXTMPH5qyLOV3IxZgfqig8iXl+R9Ul+EQcYFL2Vs/u1Tu5Ullt5XKPbdU6a7iRNFzoYC6fO1q/iwNu/EtnOfS+NZNUJE9q3EHwbZpv84FBNaVg7yg06shC4Hxx0vjtJTGMXolTX7ne0mzqdtWKtAvqeDFSZUrcFwq2C+ptMuTCraVSuuXVPofr4zWVhmzF97jNpagvMf8Sewre4/1JzgfaUy4uJcWXYejlThl/Mejop/70qg0BTdQA+Wbgnd5LOh1aXKhWzps/mBhuqe8ebh8mb7d3nlz6GKRiJ6rzkpnIfQCr/9GWx71fl1UfpNb0UR0LK/sk9oKe71APbOtelYvLjyWXp6hTOvIVKEdLP86FyrXvqJ1Clpnf3j5a2jlM1lLtBzT7R4tCMDvwdYLuGn70Nvt1xO0/GF94dr/af5dBsuqgjXG0vbFkfbE2IoRLFnctiG0ajGv6kIPUAh03cmY1GeaEE7SgNqcck6jo5EwD8uwVBmPYxE9lKyyE12QJ9mOWnBLVtIY9qNZD7aKoO1Frn3Uyy0HvaDRFLXOTMWgV247P1P1NUKjtfeAr0y9gKl52oOzDeHLWcZX0hlg29V1hwgzuySsHlW9EvY7EwaB1jfE6tHgdOGNlS7SmDOxFcitdB3OF4ZIeF72RN5UNwxHK+RNCBMVZQjF0iGqwzkaQ92sw1mUq3eENtLIcOZzZQtnRiLZtIQmXTjD097vClXdLpOqwze+3Dr1SNswQj9FZzXD+g1xb3mF9Y1g3aS93xWs28XGvYG1/qwxhxXck2glOr5G7T+Uk4WQNVVbFMPskXgN5a5Md890EnfnJFigbzBrp8P87xqLsleK+0Xxj+4otjW9ZxTrv+Q/XLl9e27fwKNweudR7PmB0/VGrXekdnujBgF0bsyewbrv5zx3KJr76Pxk2s4tME4jcwLMMbQvhsww6/lWVKpf0nxJA1DWeTA13XJEzjDfmtF6SGjr1f4tYExIUp9dJ4gLei0USWnjeSL/TQVrS5rUFze9lGrXMCfTE+dbc6iDkXkxVD9kQs18octskQvR3WOHSpS54XfQ3TJdD0nt83EnzzGK6OT8/qwxsUXmadSKjzFyL4ZaP+17f97dzVglsvXmoLrXyFZr0E6MbHXneGotoOoylgVBnaoaT5f71g7HOv7Wju2bAV761g6R3L3DJVtgtXsTjn77Pw==</diagram></mxfile> \ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws/aws_4.xml b/src/main/webapp/templates/cloud/aws/aws_4.xml
index 3baf2749..f7373cb9 100644
--- a/src/main/webapp/templates/cloud/aws/aws_4.xml
+++ b/src/main/webapp/templates/cloud/aws/aws_4.xml
@@ -1 +1 @@
-<mxfile modified="2021-05-17T14:04:20.714Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36" etag="ad1Gh_FmHGOqIaLOCdSr" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7ZzZcqM4FIafJpedQhuCS6+ZVKVrUpOZ6suUAgpmgpEH5Cz99CMZ4QV5TWNMV3AuAke79OlHOsK+QoPp+03GZpPvIuTJFXTC9ys0vIIQYMdT/7Tlo7AQjAtDlMWhibQyPMQ/uTE6xjqPQ55vRJRCJDKebRoDkaY8kBs2lmXibTPas0g2S52xiFuGh4AltvVHHMqJsQLXXwX8weNoYor2IC0CpqyMbFqST1go3tZMaHSFBpkQsriavg94ojuv7Jci3XhH6LJiGU/lMQn+Gf28/6fX+/M2G3+Lcy8iA/rfNwDN+OTyo2wyD1UPmFuRyYmIRMqS0craz8Q8DbnO11F3qzh3QsyUESjjv1zKDzOcbC6FMk3kNDGhuWSZ7Onh0WXMeFraxnGSmGx5GlZiKMtaeC4z8bIcFLi0DEQiskVLkOfoPxVi95XpvlzMs4Dv6yDHDLSqXcTlvpjAkK37b60QMxo3XEy5zD5UhIwnTMavm4QxA2q0jGeSqk5gH2sRZiJOZb6W8702qAhmziHgXJMiTzPnsAuMZXx0GkTdzTTqoqhJebfWpJVpwdxJ/OGOv738lUJ4BH+gHfw5VZYgPsiflQY4oBn+aMdfXfy1Rf9AlT/vsP5V06CqZp6LP9Lxt58/cDR/sBX8EXRQyz6T5lz8uR1/+/lDl9O/tbH/zND63dDuH1p89NCSdkiLvUz3D0rL4TRnkhbkdPzt548czZ/bCv6o42ySROBe9qrxCWoCO9BhVxd2tB3YQUvCDno07DTAhc3IHuz4q4s/vx38uRXZowdkrxIfek4T3KGOu5q4K132l+euqnsHPRl2GgxIM7rXeXJr468dnlyKT99u2GlWvo0z89d50mrjrx2eNHsNhw960uw0LkHN8Nd50mrjD7WDv8r2FYPTtrsUNbLuM5u0V5bMTUdcHMRUpLzFINJjQQRe3SD+mksXdS7dlp+WW6KgVOEaetjFLsIepsTfkAjogmuXupg6xPMgIuVDpMy/aLHJco/0YAir7g6Irx3oY0V7kX0l56KHrJxrOG094m2Tahq14m3kGY0732B7T7t2nF/Yr5OoLa5+GCPqI+AgbLzKp88Z4F1jlxBATWYbpSBMy3JrnjIE+tVtFWkI/8uvDFqO/6VPBG1ICbV8QG4VzGOJJ77tULIyq4vyLa8UfuKssprmXDOjc562/DWcIx4MYLWuOHlmUO9wZnXNDPtln+ry5zNpzjQzyvef17aXIZNMWRL2wtW/wd2tNXfEXCZxqhgsX8rX9EUZC2NFXkmm2SQ+i5VJwUow6bvYwriMrMBfJ5v6wHeVPWT5ZDkTX3km40DNQ/bEk3uRxzIWauIMn4SUYroWoZfEkQ6Qer72mbkLVB15tjlTdSXNNAawvDft1UWyfFY09Dl+1/Xo5xM204HT90h/MeKaveX4WlV+rprFdH0eQ56/FAUvgOHZ6JVrbooCE133PgteooXKrLX5efHZN5t18/j71b65V4buOS1w3ta+71B6NiZrX3Xwz7bNLXdxO5kLRJoL1fkdd6dzlwoZP6taFJVrFXxwqWkH4fPOBx+w4OtN2U/VWfpY0E1UBfpPmbqK9NVARGmsnutHkVhBTv2Ndc0sQlXYmGCK/bWwYZypjAqgUr3WsKkcUIDAeNsKYDlsvwevGS+e27fBAlF1W1xtxgpM1zfFKwZVHwvFW3Clnk1raTsDrdCmNVisqixUC4KEKbWDtVlYEzEPH8PlEDQFLXGrC9s2QIssaO/Y9Clk9ZNJvZGDTyNz6JABoF+GzKTo+aOAzGcsiNPo78X+FtUkq5ZTAoJty4CGEcW7VwG9+1tbXW+Y5G96H1gNqJ1pH5PhGJ7GNOkhp0++DNNsFj9GZkCaUlrkWm5dRC/PMdkptVVQn+dpQVGtwG7fQO3QWBO5dShu2yRtxbMQ08dlVzb2mPcsz2kb4HN3i+iD7XH9VWF0nZ5q9WnCCCnV1fwqwpijxpD0tH/WWX3gBp6gBatQ+8WZ3o8HZbjR991Tu3E4o8U4tANPiC7Pp7dnCSonPK1/u9RBenhpWfR8U5j6Ww5+WoCmfShUoml5nT5SNhXDfgMbIzykKvA0etUH9/0vQ2+4GI3w6RPbfdKE7kIMLw43tE+fdsE9SliuRvuBsyyY2MEPPHuNgy2u2E64m0efF2OVL8bqMTdD047lxurXti6I/e5zL+vQSzuzfzC5jfna0R4jjL0T0e4PACJfZ1e3OFx4W4xHO3jG/uU9uNA+GbvtfVeGv0TC83ox3e7k2nHE9ds7uTKRtEU4XXQsaOXvjp4BNPs06xjhdO5ElJ9bPw1rJ0jnUm5/D2i3Ato6PaTOGfVQ3a5+RbZ472/1W7xo9D8=</diagram></mxfile> \ No newline at end of file
+<mxfile modified="2019-07-09T09:32:47.348Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="scjDJZfrP7qzCHfwHRqR" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7ZxZc6M4EIB/TR4nhS4Ejz5nU5WpTW12ax5TilEwG4y8IOeYX7+SET6QLzIGnArOQ6B1q79upBb2FRrM3r6nbD79IQIeX0EneLtCwysIge8D9U9L3o3EgUYSplFgZGvBffSLFxmNdBEFPNvKKIWIZTTfFk5EkvCJ3JKxNBWv29meRLzd6pyF3BLcT1hsS39GgZwaKXD9dcIfPAqnpmkP0jxhxorMZiTZlAXidUOERldokAoh86vZ24DHevaKecnLjfekrjqW8kSeUuCf0a+7f3q9P2/S8bco80IyoP99A9AzvZPvxZB5oGbA3IpUTkUoEhaP1tJ+KhZJwHW9jrpb57kVYq6EQAn/5VK+G3WyhRRKNJWz2KRmkqWyp9Wj25jzpJCNozg21fIkKOVQko30TKbieaUUuJIMRCzS5UiQ5+g/lZKPUQ9s7+QZUSYW6YQfmjHHaF51N+TyUE6AV2pWBsLFjMv0XZVMecxk9LLdF2ZADVf5TFE1Cex9I8NcRInMNmq+0wKVwRgdAs41yes0RoddYCTjk8sg6m6XURd5T4q7jSGtRUvmKvGHO/6q8Vd4xhP4A63w55RZgvgof1YZ4IBm+KMdf7Xx15L/A2X+vOP+r1wGlX1mXfyRjr+K/IGT+YNt8EfQUV/2kTJ18ed2/FXkDzXm/zZ0/xHV+p1qK6oWn6xa0oprsZfp/lHXcrxMTa4FOR1/FfkjJ/PntsEfdZxtkgg8yF45P0FNYAc67GrDjraCHbRc2NGIhl0GuLAZtwc7/mrjz2+FP7fk9ugRt1fKDz2nCe5Qx11d3G0E7Jvlruz3jkYy7DIYkGb8XhfJrY+/ViK5FFffbthl1rGNmvnrImn18ddKJM1ew+GjkTS7jEtQM/x1kbT6+EOt8FfavmJQbbtLUSPrPnOC9cLihZmI1kFMRMI/E4j0VBCB95sg/l5IF3Uh3aqqbfi03HIKyitcQw+72EXYw5T4Wy4CuuDapS6mDvE8iEjxECnqzwdoqjzgejCE5XAHxNcO9LGCO6++VHM+IVbNZzhtPeFtk3IZtcBt5BmNu9hgVftp7rRrz/mF/TqJ2uLqhzGiPgIOwiaqXN1mgHeNXUIANZVttYIwLdo9s8kQ6Je3VaQh/NtfGXw2/Bs+EbQhJdSKAbllME8lnvh2QMmq7FyU73il8ANnleUydVlGFzytahkNv4ZzwoMBrNcVlS2DescrO5dl2C/7lJc/HylTk2UUrztvbC8DJpmSxOyZq3+D2xvLdsRCxlGiGCxeytf0hSkLIgVaQabZJD6JtUjBSjDpu9jCuMiswN8km/rAd5U8YNl0ZYkvPJXRRNkhe+TxncgiGQllOMNHIaWYbWToxVGoE6S21z4zdxPVR55uW6rupDFjAIt7M17dJMvm+UCfojfdj342ZXOdOHsL9Tcjrtlrhq9V5xdqWEz35yHg2XPe8BIYno5euOYmbzDWfe+zyXO49DIbY35aflbWrMfC364O2rNte0WBA6cFzuvG9x2KyMZ046sOfm3b3GLTtpe5iUgyoSa/4646d4mQ0ZPqRd65i4IPrnzaUfi8+uADFny9GfulJkufArqx6kD/MVVXob4aiDCJ1HP9JBJLyKm/se6ZRahKGxNMsb+RNoxSVVEOVKLXGjaVAwoQGO9aAazU9jl4TXn+3L6ZLBFVt/nVdq6JmfqmeMWgHGOheAeu1LNpLWQ10AptWifLVZWFak6QMK12sDYLaywWwUOwUkFT0BK3vLC9BGiRBe0tmz0G7PxkUm/k4GpkDh0yAPTLkBnnM38SkNmcTaIk/Hu5v0VncqtWUAKCXcuAhhHF+1cBvbsb27t+Z5K/6n1gOeHsTPuYDMewGtOkh5w++TJMs3n0EBqFNOVpkWuFdRFtn2Oy19WWQX1aJDlFZwV29wZqj481mS8OxV2bpJ145s70YTWVjT3mPStyegnwufud6L0dcf1dx+g6PTXqao4RUqq7+VUcY4YaQ9LT8Vln/YFbeIILWIXaL870ft4rwXd93z21G4czXOrhMvCEqH0+vQNLUDnlyfm3Sx2kx5eW+cw3ham/4+DnAtC0D4UKNK2o03vCZmLYb2BjhIdUJVajV31w3/8y9AZLbQSPH9jukyb8LsSwdbihffq0D+5RzDKl7XvO0snUTr7n6Us02RGK7Rx38+jzXFfZUlcPmVHNZSw31r+21SL2+8+9rEMvHcz+yeQu5s+O9hhh7FVEuz8AiHydXd3ycOF1qY/L4Bn77UdwoX0ydtP7oQR/iZhn58V0d5BrzxHXpw9ypSK+FMfpolNBw7g20OzTrFMcp3Mrwqxu/2lYq+A6V+72c0C7E9CL84fUqdEfqtv1r8jm7/2tf4wXjf4H</diagram></mxfile> \ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws/aws_5.xml b/src/main/webapp/templates/cloud/aws/aws_5.xml
index 42837014..15872e95 100644
--- a/src/main/webapp/templates/cloud/aws/aws_5.xml
+++ b/src/main/webapp/templates/cloud/aws/aws_5.xml
@@ -1 +1 @@
-<mxfile modified="2021-12-10T12:42:25.748Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="uDs7TNkrEGHCqFs-SaJA" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7V1bd5s4F/01eUwWAnHxo2/p9FvNTKdpp2t9L1kKKLYajKgQuf36kQTYgGTX6WDstKRdiREgibO3tg5HF58509XTO4bS5RWNcHxmW9HTmTM7s23b8S3xR6Y8FykjUCYsGImKJLBJuCYvuEysLstJhLPGhZzSmJO0mRjSJMEhb6Qhxuhj87I7GjdLTdECawnXIYr11K8k4ssiNbD9TfofmCyWVcnAGxVnVqi6uHySbIki+lhLcuZnzpRRyotPq6cpjqXxKrsU911uObuuGMMJ3+eGL/OXj1/G47/es8tzkgULd+p/P7eLXB5QnJcPPP56LRKmMc2jst78uTJGSknClUHdifgvyptaZ644M5VHF7bbSmgf+80EoB/JPJoJ7WO/mQDa2YNW+aBdwVqCdtTI3mqVb9UqKP47E5rzmCR4uqaeJRIXDEVEQDKlMWUiLaGJsN5kyVexOALi4+OScHydolBa9VE0G5F2RxNekh/Y1XFpeJmrIE8qP6+eFrKdXaDHDF4sGM1TVeR7QX/j2Rvx8SaUYN6gmMuMOKP3uKrcme2If5eSMJM7EsetSj9gxoloC+OYLGT+nMriUHkU4zuVo3gSkiw+qKOZY5W1NxURoWyJo/KRRJU5EuZjpVkUuTCbP+CCY8U1cYzSjNyuDcFwmLOMPOBPOCvsJVP1tlA2D/kE+KmWVLaNd5iuMGfP4pLyLHRcyRd5UylVwC+PHzcN33PK1rysNXoYeKXglGKzWOe+aY/iQ9kkX9E8gdY8p5SllCGOpaYijqT0YWm3obG+/cYaVuDeSGhvSmANjdYde1NBukM22nURp9xoAdijzUIL9tlmXa3Nak3TRKoa5xoWb8EyHk/8SWAgXQtgMwt09YdBAKCZSFsah4E6p8YKvy3ldgA0WqxdzDotHMs6EC3sPXiBI+F7loeU8SVd0ATF803qRMhEEq25sbnmA5X4KuN/w5w/l/KEck6b3NKlBLoTD67PVE6u1DWcRJdEPqUqTByNpUMt65biRN2BGK/SSnZshS+jOQvxDgOV7VHkucB8x3VBcZ201U4yMBwjLtjVfCXoHFZvgHUnrP6esI5OC9bRgGLDEQV7wgick8KxctcHHEt47KPhqG4VD4KeaxeULymbnD/KhE1X7oF2Vw5HXp0Ve9zheFaLR0UtNqxaP85/IBoYiGbiz4+JBk9LMIbu+ydx9E4LR2fAsQGP+0Y7cDjg+HM4ntZ7kuMOOP4cjv5J4VgNfA3vu7vfY3+Mq30QB1vzh4HtXUBgAeAKRzjwXb/pHLvQu7C8YOS5LvBtWHljVf7F45ZZ7vC6bd9ped2uM7oIPHuTdzPjwj5axl2543Yw0HQnTYN9aQp6oqmzm6ZuNzQNNJrCnmh6/vc3zr59efk0m199+r97dRnQPyqxqLFUf43ckHDbeFSNcPUw/pmMZvvTyUwjYsme1tDCpfppDS2As8Z4l8SvkxB91R6rAD0sEW2M2xRJjfh88N/7NSMSUO/XPhMey2FW8UhcQ0UlNkzP5CgG2gxvNMdfJQhSH8qRDnnDfiM2xWjLZyU457CJhmnczlI/GopdQNZAzFuHWWqQAePweAdDKmbMdJG/zm95AzZPzXq4ZQ30vO+5nHWjTHReIDIWFwAvfdqcFJ8WfM32U4MeeDug7x5tAIxwWwa47Q7gvp7+c/V58jX98MBf/vd++QLc+MowGUKDRo7wGzvXukTWjAi7MVbQtBW0jLbyDMYCHRjL/+ufF/joJ6P7l/nHr8/ncDKZnjs/NlbTu3ldxzIfz2fzmaFv2NanGDugGN3ieILC+4WqS+tsFywWVm93+LYGjXBVdWRG1US+zqGBb7LT7wErG7aw8vpzCoxI6UP2u1rR74SU01S8ajLNsYDSB+H18O8AlJzecmSgdC9bj+8OQAmrVF7UsYDSXWs9gPt7AtXupFzHPy5UehDBG6BSULVnAngG569XqCp3v4aVP2BVYNVAyveCIyOlv20GA1LGVhUc2/sDppfdIvCTpSipAjkfKMMrmVea5fJvpIwjACUyQoxEXeTSAbWULMMhxzyXZ1FEUpLJQIw4wDEpL8oE7DILmUjybEUjFXJapSpLkoQkIlGuYs+5/CWAEcXLq3lVtDxaoUUi13CgmHzP0YX49EWexwlZqbLlJaQ4eBCJaFWU/j0nmfiTUEEeuU7Lwk+YhYQjTmgii4xjtAppVW5xMclIVRtVHEnVjfKXWkZCV+IpaGUAUR0u6zMrikK5WnJCWK7qXdmOyNIYThleYtEUmDKlSnygcZ7yYqHKQ2E3C2eZPAxFS9ggoIySi193+YIgeVkiq18QVSTkTFZj/hTilOO8AEzZlYYhwqG6I8xTIpdMqLuVBVJGSSRpXqBVIKEqFuZxigobykzu7khI5HGEM8yK61Y0LiqMCtMTZeJsjWO+uqgIJghb51g94Lh3+LCDaCD8Yds3qVMneuB7zT7WMQS/IDREWAA4mCDoIZZBEAZBGAShH0FoLckKPJMiuKZoeDUrpntFMK2+GRRhUIRBEfpXBMeC+yuCfyhFMC3cGhRhUIRBEfpXBGibhszNitDF1FazIpimtg6KMCjCoAj9hxFcx98/jgAPpQimWcSDIgyKMCjCEQKLrjGyaH5rOFhkUR9sHRRhUIRBEY6hCL4X7O8jOAdSBFsf0h8UYVCEQRGOoQhBsP9bQzXzsPMlsnpg8RKFnJY519Ew7km4bfPMLduxtaaV2L4P1NoQ47SSxs5yFdQfJHQfqVAiojYmvKWc09VWLlSEWe9OuGVtRbUaoLFJXZYWD3pHnmQ9tJ3i1KJJ0/aJd6UJO+GNI/oNa/MD3CaLHNu6GNV/oEYpP9AZ5XfgdO7aQstEqB82+IFiJ0kx6HonRTE90DFdIkGZeCDUzxOKUH6DEhQ/ixplN2Fp0E7oVZtms0W0AkdjlOf2yCj9RbnYWfw9/Sx+Xwt/4CuRDllbwUpiSQfvsOJ2JjcGGzuOXzs3I0xkVFAqkev99yarOHOnfk6RsUZ2Mlysmi+2I5ZrWE0bE0sOizrjRwlWN9R1/ZYU6vPne9U+w6RsW6Pa6U317aKTctoD8/3N5N2528QW1ZiqF7ZBBI4hAqG0fTc77Qdu0zd6bT/WrzrYe3ZkAy3fft+0m5rH76n0hQ51Lo4rX3Mg43HIuHb2twfE6o/fiKp53TDYC0BDPpu+1qlFNgwT9f+kHN9Set/Hi6fg58yd/Hovnhla4BW6x+wmqax5NEL6FriAdco1CLleq1pjoGk3DtjBxPCd+zDWGBjR8F5+n461+VqLHrg4s9wp8H89Lq6NeAP2I2EXIjgaXVjbu/GWRI70dx6oM9A+mAbq4wXjFXpRA0l/5yS8v1aV6LpLH0F3dmm/rkt3x441cX+bLv27tH5WUKCTbaJGb+rFRx92WPPy+s/rzgl56UAYvJKQkylw3N/Hx8ySrA8mHv89Rx+OWFNvPv3UPfX8YG7B11FvS3/9q1IPh6yPFxQX2kemnj5u8Ra2kuoAGAjbGzu4ng5Gr+Fgw9wq+HuA4bnaV9gB4xKZXuHQo/NvYVOoLuDQvhzWHunfKNgvGHpc+i1s+9QFGJpQQU/3lfsFQw/MvoV9nbrwJDUw7NGxwdCDim9h66aDgAGdI8uUjkVtxKI9weMdwzgRTmf2a41grEgUqe+TaLv46xOtSbhH8vEXG/OXkbraQ7Du4iD7fT+viaY/sZW8OGRUbui+PvdOPvEVjeRcrPm/</diagram></mxfile> \ No newline at end of file
+<mxfile modified="2021-12-10T08:43:49.255Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="3YXc7wrjnhbOgidYiLGa" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7V1rc5s4G/01+RgPAnHxR9/S7TvNbrdptzPvl4wCiq0GIwoit1+/krgYkOw6WYydhrSTWAIk8ZyjI+nRxWfWbP34IUHx6pIGODwzjeDxzJqfmSZwXIv/ETFPeYw3dvKIZUKC4qZNxBV5xkWkUcRmJMBp40ZGachI3Iz0aRRhnzXiUJLQh+ZttzRs5hqjJVYirnwUqrHfScBWxVuY7ib+D0yWqzJn4IzzK2tU3ly8SbpCAX2oRVmLM2uWUMryT+vHGQ6F8Uq75M9dbLlaFSzBEdvngW+L58/fJpO/PiYX5yT1lvbM/Xlu5qncozArXnjy/YpHzEKaBUW52VNpjJiSiEmD2lP+n+c3M85sfmUmQiPTbkW0w24zAqghkUYzoh12mxGgnTxo5Q/aBaxFKKFG8kYrf6NWQP7fmtKMhSTCs4p6Bo9cJiggHJIZDWnC4yIacetNV2wd8hDgHx9WhOGrGPnCqg+82vC4WxqxgvzALMOF4UWqnDyx+Lx+XIp6NkIPKRwtE5rFMsuPnP7aq9f847UvwLxGIRMJsYTe4bJwZ6bF/10IwkxvSRi2Cn2PE0Z4XZiEZCnSZ1Rkh4pQiG9livxNSLT8JENzyyhKr8siQOkKB8Ur8SIzxM2XFGaR5MLJ4h7nHMvvCUMUp+SmMkSC/SxJyT3+gtPcXiJWrQtF9RBvgB9rUUXd+IDpGrPkid9SXIWWLfgiHiqkCrhF+GFT8R2rqM2rWqWHXqFpqBCbZZX6pj7yD0WVfEH1BEr1nNEkpgliWGgqYkhIHxZ2Gyrr26+sfgnutYD2ugBWU2ntiTPjpDtkpa2yOOVKC8AedRYasM86ayt1VqmaOlLVONeweAuWyWTqTj0N6VoA61mgqj/0PAD1RNpSOTTUOTVWuG0pNz2g0KLqYtZpYRnGgWhh7sELHPC+ZxGkCVvRJY1QuNjETrlMREHFjc09n6jAVxr/B2bsqZAnlDHa5JYqJdCeOrC6UnZyha7hKLgg4i1lZjw0ER1qUbYYR/IJlLAyrmDHVvhSmiU+3mGgoj7yNJeY7bjPy+8TttpJhgSHiHF2NYcEncPqDLDuhNXdE9bxacE6HlBsdETBnjAC66RwLLvrA44FPObRcJSP8hdBT7UbikHKJuXPImLTlDug3ZTDwoF0sfcTlmO0eJSXYsOq6nX+A9HAQDQdf35NNHhagjE036/E0TktHK0BxwY89httwOGA4+twPK1xkmUPOL4OR/ekcCwnvobx7u5x7K9xNQ/SwVb6w8B0RhAYANi8I+y5ttvsHNvQGRmON3ZsG7gmLHtjZfr56xZJ7uh1m67V6nXb1njkOeYm7WbCuX2UhLvqjpveQNOdNPX2pSnoiabWbpra3dDUU2gKe6Lp+d8/WPLj2/OX+eLyy//tywuP/lGKRY2l6jByQ8Jt81E1wtXd+GfCm+3OpnOFiAV7WlMLF/KnNbUAzhrzXQK/Tlz0ZX0sHfSwQLQxb5NHNfzz3n9v17RIQLVd+0pYKKZZ+SsxBRUZ2TB9ImYx0GZ6ozn/KkAQ+lDMdIgH9puxyWdbvkrBOYdNNKp5uw1aXUDTQMap3Ck1aIB2GryDqRM9NqqYX2U3rAGPI1c33CQNlJyfmVhdI010nlt+wm8ATvy4ucg/LVnF6lODuBxWdwkpAFpMDQ2mZgeYXs3+ufw6/R5/umfP//u4egZ2eKlZ2aDYX0zXa1vKut7VLAW7kSavaStoaG3laIwFOjCW+9c/z/DBjcZ3z4vP35/O4XQ6O7d+baxmV+VlrcRispgv5hqh39ZAaFuTEN3gcIr8u6UsS+tqFyzmVm+33qYCDe93qsiMy1V5nUMD32QL3gNWJmxh5fTXwmuRUuffd9Wi94SU1VS8cmXMsYBSZ9RVX+4AlFircmSg1C6z6qwdgOJWKXtRxwJK7T+r3tj3CVS7kbIt97hQqR4BZ4BKQtWe1nc0nb9eoSq7+zWs3AGrHKsGUq7jHRkpdbTpDUhpa5V37N4f0A12c+9OGqOo9NZ8oglei7TiNBN/A2kcDigR7l7EyyL2Ach9YSn2GWaZuIoCEpNUeFt4AIekuCnlsIskRCTJ0jUNpF9pHcskSeSTgASZdCRn4hcHhmcv7mZl1iK0RstIbMhAIfmZoRH/9E1cxxFZy7zFLSQP3PNItM5z/5mRlP+JKCeP2HRl4Eec+IQhRmgksgxDtPZpmW9+M0lJWRqZHYnlg+KX3BNC1/wtaGkAXhwmyjPPs0KZ3D9CkkyWu7QdEbklOE7wCvOqkEhTysh7GmYxy3ed3Od2M3CaiqDPa8IGAWmUjP+6zZYEidsiUfycqDwiS0QxFo8+jhnOcsCkXanvI+zLJ/wsJmL/g3xaWiBOKAkEzXO0ciRkwfwsjFFuQ5HI7S3xiQgHOMVJft+ahnmBUW56Ik2cVjhm61FJME7YOsfqXsW9fYQduPzgL+u+Tp060QPXabaxlsb5BaHGwwLAwQRBdbEMgjAIwiAI/QhCa3+V5+gUwdZ5w8slLt0rgm4rzaAIgyIMitC/IlgG3F8R3EMpgm4X1qAIgyIMitC/IkBTN2WuV4Qu1qnqFUG3TnVQhEERBkXo341gW+7+fgR4KEXQLQkeFGFQhEERjuBYtLWeRf2o4WCeRXWydVCEQREGRTiGIriOt38fwTqQIpjqlP6gCIMiDIpwDEXwvP1HDeXKw873u6qOxQvkM1qkXEdDe8DgtpMwt5yt1lpWYrouAM62ZSWNY+JKqD8J6D5TrkREnjJ4Qxmj661cKAlTHTW4ZW9FuRugceJcGucvekseRTmUY9/kDkjdWYi3hQk74Y3F2w1j8wPsJoss0xiN6z9QoZTrqYxyO+h07joPS0eoX1b4gWInSTFoOydFMdXRMVshTplwINTrCUUou0YRCp94idJrvzBoJ/SqLbPZIlqepTDKsXtklDpQzo8J/0i/8t9XvD/wnYgOWVvBCmKJDt5hxe1MnPI1sSy3dm1OEp5QTqlIbN7fm6z8yq38OUXGatmZ4HwLfH62sNioqjtlWHCYlxk/CLC6oa7ttqRQXT/fq/ZpFmWbCtVOb6lvF42U1Z6Y728l786jI7aoxkwO2AYROIYI+ML23Ryb79nNvtFL27F+1cHcsyEbaPn226bd1Dx+S6VudKhzcVL2NQcyHoeMVWd/u0Os/voNr5rTDYMdDzTks9nXOjXPhmah/p+U4RtK7/oYeHJ+zu3p7zfwTNESr9EdTq6j0ppHI6RrgBGsU65ByGqvao2ButM4YAcLw3ceqlhjYED9O/HlOMbmOyp64OLcsGfA/f24WBnxGuxHwi5EcDweGdub8ZZEjtUxD1QZaB5MA9X5gskaPcuJpL8z4t9dyUJ03aSPoT2/MF/WpNsTy5ja76ZJ/ymsn+YU6OSYqPGbGvio0w4VL6/+vOqckBcWhN4LCTmdAct+P33MNEr7YOLxxznqdERFvcXsS/fUc72FAV9GvS3t9e9KPewnfQxQbGgemXrqvMVbOEqqA2AgbB/sYDsqGL26gzVrq+D7AMOxle+jA9otMr3CoXrn38KhUF3AoXzTqzlWvx6wXzBUv/RbOPapCzAUoYKO2lfuFwzVMfsWznXqoiepgGGOjw2G6lR8C0c3HQQMaB1ZplQsajMW7QUeHxKMI97pTH+vGYw1CQL55RDtLn51obUI90h9/OXG/IWnrvYSSXd+kP2+bFdH01ecF8+DCRWntlfXPog3vqSBWIu1+Bc=</diagram></mxfile> \ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws/aws_6.xml b/src/main/webapp/templates/cloud/aws/aws_6.xml
index f23ad1ff..78d1e15f 100644
--- a/src/main/webapp/templates/cloud/aws/aws_6.xml
+++ b/src/main/webapp/templates/cloud/aws/aws_6.xml
@@ -1 +1 @@
-<mxfile modified="2021-12-10T12:43:07.361Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="w-rmW5fH-ufPmAH--90G" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7Zxfd6I4FMA/jY+dw3/wUbHOzjndnZ5xZ2f3qSeFiNmJhA2xaj/9JhBECFq7q4gztH0glxjCvb97E+7FDkx/uflIQbL4lYQQDwwt3AzMycAwdMswBuJPC7dSYrpmLokoCqWsFMzQK5RCTUpXKIRppSMjBDOUVIUBiWMYsIoMUErW1W5zgqtXTUAEFcEsAFiVfkMhW0ip7gzLE79AFC3kpT3DzU8sQdFZ3km6ACFZ74nM+4HpU0JYfrTc+BAL7RV6yT83PXB2NzEKY3bKB77evz5+HY0+f6LTO5R6ke27/9zprpOP8wLwSt7ybMHHDLlsBukLCrj2DW0UBGTFr5PfCdsW6kkIilmmYnvM//gMfG1g8zO+aH0w7Jqg3narAl1tiTGqgnrbrQr0+vB67fp6fYJ7AqVVGV6rXV/bmyD/M8dkxTCKob+DUePCiIIQcSP5BBPKZTGJufbGC7bEvKXzw/UCMThLQCC0uuaexGVzEjPpDrpRtKXixagcp0QcLzeRcL0PYJ1aHyJKVkl2yU/cIRrPPvHDpwCTVfgEMBMDMUq+w2JyA8Pkv1OB0HiOMK5N+gVShrh3jDCKxPiMiMsB2cJwno3I7wTF0UPWmpianH3TJUKQLmAobwmDZ4jHIPguJhqHe/3n2Q/vwu+KAa5hKjWX8Qfp/QvMMdSyPhiDJEXPO11RGKxoil7gF5jmKhVS1YGkT4mbhJs9kXSoj5AsIaNb3kWeNXQZBmR4uzOtoWBMiNZluNjFgMVepDCLEAdkiIp2w5dezA+kI7/HqT1bceoHEgk3psGCq6F36N6he4ducmjLsU5yaLNlh25YpYUKENv2vtz7cu/LTb7sFqtut3zZVRfn0bcZF/jC7r0T907cO/GRHbbrNTmx2+TE1uWceGgrjgrDCBb4EMoWJCIxwPeldJzpfGeLss8DETbOtP03ZGwroQQrRqoUpwxQNhJZjZKXTDZFYv7ZsDAOix4kgXEu2TuvwOhp4nd3pshyGMfsl5IVDeDRKCfTIHx2EWRHe3p5T6G/o0RQiAETTy+VHM/5Tev0pj1uWu9k0w47ZlqvN+2ZTOvp5zZt9lGuBLDd6yB3P+XIj0JQLg+mbVeXB2e3PJSk5IOW3Oxm939QGvYonQslo1NRwtC03rTnMq3ZiShhF1WO1qOE26N0HKXhyShpHYsSem/ac5nW6phpjd60R01bGOyEJwCnEwuAa9brdE5tAVB3lsZbH7nMmmFoZk/fmegr6qC3R5/j1utQbdFnXYM+DgHd/ik+z29SNv/aUccbk02ltd0R9yNSe7Mx0zPtq1C7yzbu11SW4JXEXDbj8dTJ8vDPlB9F4mi8Cr5zIyhyhf3GcsOhVPuBMsR+kl90d11ddxTwZOdKur6oBTyItP0jSRFDWc3hmTBGloO3igUBFJn7qqe9VfQAaZLf6BxtxDyU/H+2WDRVRp5znZ5UZDjoR+8oDFj1wkBjda+otu3XBYrn1wvU9jyVQ1Hbq3PmkxA+ogQKti5NIT9nTVx+cu/cBFE+UA5TLOK1iin/scbDpvi4s2LnWG3kksI8OOf1ujFvNlXuAm6RpLBIWwxb9T3mAYa9VhkensbwZxqBGL0CYee0BYintsXV8z6IfVc39elPAzGpmKQtil1N6x7FRbpIectihuIINwTdGTfhndgwXB5k07I8430gj33dtNVNw48Kcvb2xBqwYNEaxZ7tdJBiXaW4eNlP2dOCtK39RE/waQTPCV2CfN4tUWzqNYptpwMUG4dicf4Fk4b9MWAAizfWe5Svj3KaW+kpkEa52u64Eyybp+2OHwEF/JKQNuw0GKEXj9LNuYcD5N587iEptP2UZsptC1G7niM7gGirSYgi07iHqJ8Rp33+2kP23yEromWbT1a1fKptN+HltBsBG3Kt/Z70FhbyK+1JjXqQNIbu9dfxhkxtUTH449E/O55Dy55M34mnPTK1sf3T4PmSBO09J1lanUnv+kw2ZF77yHoL6F4pslquElmvT/GwIfMaRRRGgDU96QvN/U4Bwuo5EId8HM7tHIkvrz+Q6OJ1huYd7YFAfPM72jkm6ycs1NraA1OR0SyJvf4z/bDPsvZx913PZeruoQMUq1nW8n8EKGGXkjS9O0j5F4LhlWLtgZLtzcdaEIYtEurV344xPO1EQq3LfWm2IXcqn7nqpH1cARpOVk3onj/O9i8WvBVnI2GOUJjjaiFW70Dyf6hmVsvXDH+b9TuAKxSnWnzRRQmqF2WSN8t/Dpi/KVv+j0Xz/l8=</diagram></mxfile> \ No newline at end of file
+<mxfile modified="2021-12-10T08:57:31.853Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="-59iX6Sfw8oQk7caHs-m" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7Zxfd6I4FMA/jY+dw3/wUbHOzjndnZ5xZ2f3qSeFiNmJhA2xaj/9JhBECFq7q4gztH0glxjCvb97E+7FDkx/uflIQbL4lYQQDwwt3AzMycAwdMswBuJPC7dSYptSElEUSlkpmKFXKIWalK5QCNNKR0YIZiipCgMSxzBgFRmglKyr3eYEV6+agAgqglkAsCr9hkK2kFLdGZYnfoEoWshLe4abn1iCorO8k3QBQrLeE5n3A9OnhLD8aLnxIRbaK/SSf2564OxuYhTG7JQPfL1/ffw6Gn3+RKd3KPUi23f/udNdJx/nBeCVvOXZgo8ZctkM0hcUcO0b2igIyIpfJ78Tti3UkxAUs0zF9pj/8Rn42sDmZ3zR+mDYNUG97VYFutoSY1QF9bZbFej14fXa9fX6BPcESqsyvFa7vrY3Qf5njsmKYRRDfwejxoURBSHiRvIJJpTLYhJz7Y0XbIl5S+eH6wVicJaAQGh1zT2Jy+YkZtIddKNoS8WLUTlOiThebiLheh/AOrU+RJSskuySn7hDNJ594odPASar8AlgJgZilHyHxeQGhsl/pwKh8RxhXJv0C6QMce8YYRSJ8RkRlwOyheE8G5HfCYqjh6w1MTU5+6ZLhCBdwFDeEgbPEI9B8F1MNA73+s+zH96F3xUDXMNUai7jD9L7F5hjqGV9MAZJip53uqIwWNEUvcAvMM1VKqSqA0mfEjcJN3si6VAfIVlCRre8izxr6DIMyPB2Z1pDwZgQrctwsYsBi71IYRYhDsgQFe2GL72YH0hHfo9Te7bi1A8kEm5MgwVXQ+/QvUP3Dt3k0JZjneTQZssO3bBKCxUgtu19uffl3pebfNktVt1u+bKrLs6jbzMu8IXdeyfunbh34iM7bNdrcmK3yYmtyznx0FYcFYYRLPAhlC1IRGKA70vpONP5zhZlnwcibJxp+2/I2FZCCVaMVClOGaBsJLIaJS+ZbIrE/LNhYRwWPUgC41yyd16B0dPE7+5MkeUwjtkvJSsawKNRTqZB+OwiyI729PKeQn9HiaAQAyaeXio5nvOb1ulNe9y03smmHXbMtF5v2jOZ1tPPbdrso1wJYLvXQe5+ypEfhaBcHkzbri4Pzm55KEnJBy252c3u/6A07FE6F0pGp6KEoWm9ac9lWrMTUcIuqhytRwm3R+k4SsOTUdI6FiX03rTnMq3VMdMavWmPmrYw2AlPAE4nFgDXrNfpnNoCoO4sjbc+cpk1w9DMnr4z0VfUQW+PPset16Haos+6Bn0cArr9U3ye36Rs/rWjjjcmm0pruyPuR6T2ZmOmZ9pXoXaXbdyvqSzBK4m5bMbjqZPl4Z8pP4rE0XgVfOdGUOQK+43lhkOp9gNliP0kv+juurruKODJzpV0fVELeBBp+0eSIoaymsMzYYwsB28VCwIoMvdVT3ur6AHSJL/ROdqIeSj5/2yxaKqMPOc6PanIcNCP3lEYsOqFgcbqXlFt268LFM+vF6jteSqHorZX58wnIXxECRRsXZpCfs6auPzk3rkJonygHKZYxGsVU/5jjYdN8XFnxc6x2sglhXlwzut1Y95sqtwF3CJJYZG2GLbqe8wDDHutMjw8jeHPNAIxegXCzmkLEE9ti6vnfRD7rm7q058GYlIxSVsUu5rWPYqLdJHylsUMxRFuCLozbsI7sWG4PMimZXnG+0Ae+7ppq5uGHxXk7O2JNWDBojWKPdvpIMW6SnHxsp+ypwVpW/uJnuDTCJ4TugT5vFui2NRrFNtOByg2DsXi/AsmDftjwAAWb6z3KF8f5TS30lMgjXK13XEnWDZP2x0/Agr4JSFt2GkwQi8epZtzDwfIvfncQ1Jo+ynNlNsWonY9R3YA0VaTEEWmcQ9RPyNO+/y1h+y/Q1ZEyzafrGr5VNtuwstpNwI25Fr7PektLORX2pMa9SBpDN3rr+MNmdqiYvDHo392PIeWPZm+E097ZGpj+6fB8yUJ2ntOsrQ6k971mWzIvPaR9RbQvVJktVwlsl6f4mFD5jWKKIwAa3rSF5r7nQKE1XMgDvk4nNs5El9efyDRxesMzTvaA4H45ne0c0zWT1iotbUHpiKjWRJ7/Wf6YZ9l7ePuu57L1N1DByhWs6zl/whQwi4laXp3kPIvBMMrxdoDJdubj7UgDFsk1Ku/HWN42omEWpf70mxD7lQ+c9VJ+7gCNJysmtA9f5ztXyx4K85GwhyhMMfVQqzegeT/UM2slq8Z/jbrdwBXKE61+KKLElQvyiRvlv8cMH9Ttvwfi+b9vw==</diagram></mxfile> \ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws/aws_7.xml b/src/main/webapp/templates/cloud/aws/aws_7.xml
index 3a319169..527d01a7 100644
--- a/src/main/webapp/templates/cloud/aws/aws_7.xml
+++ b/src/main/webapp/templates/cloud/aws/aws_7.xml
@@ -1 +1 @@
-<mxfile modified="2021-12-10T12:43:41.068Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="1OCgMWJ5PQ3gipuSZxZf" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7Zxbc5s4FIB/jR+TQdz9GOy425nsbtq0k0ePDLJNi5Er5Djpr18JJBsQJqSLDU1JPBl0dEGc8+kcXXBGxmTz/IHA7fpvHKBopGvB88iYjnQdmLo+4h8teBESwzEyyYqEgZAdBQ/hTySEmpDuwgAlhYIU44iG26LQx3GMfFqQQULwvlhsiaPiXbdwhRTBgw8jVfoYBnQtpMAeHzP+QuFqLW7t6k6WsYGysHiSZA0DvM+JjNuRMSEY0+xq8zxBEdee1EtWb3Yi99AxgmLapMLX25/3X29u/v1IZldh4q6sifPjCtim6B19kY+MAqYBkcSErvEKxzC6PUo9gndxgHi7Gksdy9xhvGVCwITfEKUvwpxwRzETrekmErkJhYTecPMwQYxjJGWzMIpEsygOZAm8RXEmyeUnlODvaIIjTNJ+G67Gfw850lxM0Z6qK6G+BO+Ij+oUZNqCOkhWiNaWdLOSXH+5mwhrfEB4gyh5YQUIiiANn4qEQQHq6lBOVGVKgC+5AlscxjTJtXzPBayAGHS6IQgUQ+7KBnYRjNcqWLqVr8Ausj7IVO5hjqKUtjeRZw3k1ZPn/O7kmVY/ydMH8urJcxuTZ/aCPENwc/R5jllP3ri+wrnIMwby2iLP+j3JM61uyLMH8loiz9LaJi9n+18xrTOYti3TniecKU7Ace3qic+hjayvotqRkLe6J/vUjU65p9cqnMs9uQPDbQXGcT8Co1kCyTaNC4DkaANItSDJ6NXAGYJ+xTkHDKatNy1obFq9X6aVu6mDaU8ZzGjs/vuxF6S4f2N8iWWOM2ztvAJS4+1sqx8gjWXAkiDpxXnE6xWAa1+CvGFr5xXyGm9n95U8YNSvnboibzjCqyfPbj4vMnpBHtDKu4qXiZ5yN/8JRjvxaDcb+BPHTDaJ8C54hNRfK7ThHY3CmNlRHsFzCy5xTHOWZb8z3hVvRWAQokLezDBNV8/lTUPCGgrZfTlahDPgLRk2uTrehI1Gu4qhZfrDcgKYrA+EPyFCQ5/xDRcousdJKJpfYErxJlfgJgpXPIPyceBBkfJZrxApjgD+hGJ4AF2mhVb4LWGyzdSxDJ95P7xkDbc8c/O84m9LXMN9Yl4TlAH80ef98VgyuyqW8rn296n2DS/iz+BB//sqHcVVz55soR/Gqy/pYLbqhg9/bvRcC7s8M7FKUzpHQKntj29GOMJ3r3PvREhZ++sGeQhQBezDPw8DqZcnNYmT7hA1Qf8QtU8iakfs7t6CsKsVv8q7WO32iatBKdMu0iJuNyNWFO4drGk0RSRVWCJnJ1UAI15iTsMNmi9gktZtwGkbWJa3Qq3OqXQGKntFZfa3WyzN7p2lq2B5BzeLALYfyR33VjPfFsmnmjUBzh8TyaNM828P5m5L803lKNLunM/x6fnm9CWGGzxt2ReyPHPqsMy3ocp+TG/8x6AapLoPFhdznXZ5omm7+rXVMZ1y+6lyNfSJrYa0TzvEcoZg/cvB+keqwEtRpnhAw23mAeX07gyMAYUxGaHLk8LZLs68VCfTxRPB+rcnMIvK86VUbmcs6mbX0VieYg/blX2Lx2/drmxjMdNDPo2aeMx3J8t+kU2fQ39YXbfpLmmq0otNC7XyN2B0txGE9vkCdsWZzuOD9JAKWuJoil1bHvuwGeVEG1ksZ8JT1/xcqiAop52iAKgp3kZRUE47RQEoNw9K9wflDuYESqrQvFa6v5brIPsYXuVIOzGicjzv1yFFD2xNzLW6ZzQ2YLwSX07rNr1llZtNc+fscp463DlMHYcSYg6uID/mRafrx2qElvS4ur9LU1OjztsUPEWDQceeikKmYSI0Vx7YWlomiuA2CRcHXbF4uyNJ+IQ+oyRTqdbOAHbG5QMEQ40ihvxKb34EG+Bsb8dZ6imXMm6L5/lV/OXwPBgJNDNSBTcnxkDfzCmrHBZQFZMC4FpV5tTOZk71ROgL2mwjSIel+f+J9FKHlwr2ypc4dFdX4LIr2DrjjFM91hnQeg9oHV7y6g4t9WjmuJgx1EWLt/O/o46OCnXHAeAdcrhIdTrfh3Q9x4tvrJWG71q0gCTQNPe69FaarldseV+WSvVAZkJwklzd+D5TRgV/nzEzRCdUThxggNn7o5Lg6HKe0bVKMzrLsRutsOXE7wxfXlGPXfK7j2XUhlco3tErFONyoHZAMxzP5xLt4YTmzzyhUVi0Gp4W/gKLLHn8z2XZ++fHfwBn3P4H</diagram></mxfile> \ No newline at end of file
+<mxfile modified="2021-12-10T09:09:38.317Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="DmPFi1px7CF3OSe82sRG" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7Zxbc5s4FIB/TR6TQdz9GOy425nubtu0k0ePDDKmxcgVcpz0168Ekg0IE9LFhqYkmQQdSSDO+XSObs6VMd08vSNwu/4bByi+0rXg6cqYXem6rhmA/eGS51wCJsDOJSGJAiE7Cu6jn0gINSHdRQFKSwUpxjGNtmWhj5ME+bQkg4TgfbnYCsflp25hiBTBvQ9jVfoQBXQtpMCeHDP+QlG4Fo92dSfP2EBZWLxJuoYB3hdExt2VMSUY0/xq8zRFMdee1Eteb34i99AwghLapsLXu58fv97e/vuezK+j1A2tqfPjGtimaB19lq+MAqYBkcSErnGIExjfHaUewbskQPy+Gksdy3zAeMuEgAm/IUqfhTnhjmImWtNNLHJTCgm95eZhggQnSMrmURyL26IkkCXwFiW5pJCfUoK/oymOMcnabbga/z7kSHMxRXuqroT6UrwjPmpSkCl4Za0LEW0s6eYluf4KDxHWeIfwBlHyzAoQFEMaPZYJgwLU8FBOVGVKgM+FAlscJTQt3PkjF7ACstMZgkDR5a5t0eXmbStYulWswC7yNshU4WWOooy2V5FnjeQ1k+f87uSZ1jDJ00fymslzW5NnDoI8Q3Bz9HmO2UzepLnCucgzRvK6Is/6PckzrX7Is0fyOiLP0romr2D7XzGtM5q2K9OeJ5wpTsBx7fqBz+EeeVtFtSMhr3VP9qkHnXJPL1U4l3tyR4a7CoyTYQRGswKSbRoXAMnRRpAaQZLRq4UzBMOKcw4YTdtsWtDatPqwTCtXU0fTnjKY0dr9D2MtSHH/xuQS0xxnXNp5AaTWy9nWMECayIAlQdLL44iXKwDXvgR549LOC+S1Xs4eKnnAaJ479UXeuIXXTJ7dflxkDII8oFVXFS8TPeVq/iOMd+LVbjfwJ06YbBrjXfAAqb9WaMM7GkcJs6PcgucWXOGEFizLvue8KV5IYBChUt7cME1XL+TNIsJuFLHncrQIZ8BbMWwKdbwp6412HUOr7IvlBDBdHwh/RIRGPuMbLlH8EaeRuP0SU4o3hQK3cRTyDMr7gQdFymetQqTcA/gbiu4BdJkWWuGPhOk2V8cqeuLt8NI13PLMzVPIT0vcwH1q3hCUA/ze5+3xWDK/Kpfyufb3mfYNL+bv4EH/e5j14rp3T7fQj5LwS9aZrabuw98bPTXCLvdMrMqQzhFQavvjyQhH+O514UyElHU/b5CbAHXA3v9zP5J6eVLTJO0PURMMD1H7JKJ2zJ7uLQm7CvlV0cVqd49cDUqZbpEWcbsdsaLw4GDNoikimcJSOTqpAxjxEgsabdBiCdOsbgtOu8CyuhRq9U6lM1I5KCrz3/1iafbvLF0Fyw9wswxg95Hcce8083WRfKZZU+D8MZE8zjX/+mDudjTeVLYi7d75nJweb86eE7jBs459IcszZw7LfB2q7Mv0Jn8MqkGm+2B5MddpVweatqvfWD3TKZefamdDn9hsSPu0QyxnDNa/HKx/ZAq8FGWKBzTcdh5QDu/OwBhQGJMRujoonO+S3Ev1Mlw8Eax/ewLzqLxYSeX2xqJu9h2N5S72uFw5tHj82uXKLiYzA+TTaIjHfHWy6hfZ8Dnyx9l1l+6SZiq92LBQq34CRndbQWifL2DX7Ok83EsPqaAltqbYteWxHzainGpXFsuZ8tQN35cqCapppywAaorfoyyopp2yAFRvDyrPB9UGFgRKqnR7rfJ8rdBA9mN4tT3tRI8q8LxfRxTdszkx1+qe0diC8Vp8Oa3b7JF1bjbLXbDLReZwFzBzHEqIObiCYp8XjW7uqzFa0ePs/kOWmhlN3qbkKVp0OvZWFDINE6G5asfWsjJxDLdptDzoisXbHUmjR/QZpblKtW46sDOpbiAYahQx5Ed6iz3YAGc7HWepu1xKvy3v59fxV8DzYCTQzkg13JzoA0Mzp6xymEDVDAqAa9WZUzubOdUdoS9os40hHafm/yfSSx1eKtgrH+LQXV2By65h64wjTnVbZ0TrLaB1OOTVH1rq1sxxMmOokxZv539HPW0V6o4DwBvkcJnpdLGP6HqBl9/YXVqetegASaBp7k3lVJqu1yx5X5ZKdUNmSnCaXt/6PlNGDX+fMTNEL1ROHWCA+dujkuD4cp7RtSojOsuxW82w5cDvDB9eUbddiquPVdTGIxRv6AjFpBqoHdAOx/O5RHvcofkzd2gUFq2Wu4W/wCJLHv9zWX7+/PgP4Iy7/wA=</diagram></mxfile> \ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws/aws_8.xml b/src/main/webapp/templates/cloud/aws/aws_8.xml
index 31a66dc0..f9fff55e 100644
--- a/src/main/webapp/templates/cloud/aws/aws_8.xml
+++ b/src/main/webapp/templates/cloud/aws/aws_8.xml
@@ -1 +1 @@
-<mxfile modified="2021-12-10T12:52:32.336Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="3uJsH6C2-aHLSVtRTc8W" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7V1bd5s6Fv41eUwWd/Cjb+npTDKn07Sna81LlgKKrRYjCiK3Xz+6INsgOXFSDM6K3C7HbLAk9vdpa7O3JJ+409XDpwLky0ucwPTEsZKHE3d24jiOH/n0D5M8Cslo5ArBokCJENkbwRV6grXQqqUVSmDZuJBgnBKUN4UxzjIYk4YMFAW+b152i9NmrTlYQEVwFYNUlf5ACVkKaeSEG/lfEC2WsmY7GIkzKyAvru+kXIIE32+J3PmJOy0wJuLT6mEKU6Y8qRfxvfMdZ9cNK2BG9vnC9/nTl+/j8d+fi/NTVEYLfxr+PnVEKXcgreobHv+4ooJpiqukbjd5lMrIMcoIV6g/of9pfVPrxKdnpuzozPFbgvZx2BTY6hEroyloH4dNgd0u3m7Vb7cbuCVQjhrFW636ra0G0v/uBFckRRmcrqlnUeGiAAmikExxigsqy3BGtTdZklVKj2z68X6JCLzKQcy0ek+7DZXd4ozU5LcdeVwrnpVKyZOzz6uHBetnZ+C+9M4WBa5yXuVnSn/t2Wv68TpmYF6DlLCCSIF/Qdm4E8el/84ZYSa3KE1bjb6DBUG0L4xTtGDlE8yqA/VRCm95ifROULa44Ecz16pbr6siAeUSJvUt0SYTQNVX1Grh5ILF/A4Kjolr0hTkJbpZK6KAcVWU6A5+haXQF5OqfaHuHuwO4MOWqO4bnyBeQVI80kvqs54biK/UhsoOa8t1v+n2gVv35eVWlw+c+kJQm5rFuuxNb6Qf6g75is5pK51zioscF4BAZlEBAczwQaY101Xff1eNJbjXDNrrGlhNl/XHwTQKDtpl11Ucc5e1nRd7rGd5ffZYf6R0RJhQf6I+xAVZ4gXOQDrfSCcU/CxZ63hzzQVm2HFF/4SEPNakAxXBTZbCLBkzV4fVkMNMSM4Ra7pgJCeQdF8cLaU8fxJ4/AwoiCyt5tROqEpcFTF8Rh+1SaVlLiB55jq31htT1rPIFzAFhFKp6ed1DWNgGRh18LyIo+ccF47qCGqA1eH1MrDecQFr7OwbcYy6xpF/ld4IeNy6oPY+NyV/YYLNyO3bdmPoDm2vxQlR4oYh66a9nTSha0jT4IK7L2msoyCNEzVJ47j24UkTuGYIeZ5F3r4s8g/CIoUmoXTCa5q48lgWIVpaf6s1EHXBGM8w5nnG+PsyJjgqpyM0OL4RR/coxo/IcgcYP3xDmsP2aT3YttWK53rufsOAUtIofKEgcc+HG08Cw6AGg8LBHI4/e2aNjF/wPLDRvsAeWbQwNDjq4HkZx/Ao/ILQaj4w+JF7eL8gNCHmt5HG7zwY8WcPBSbE/DywEq+XgbWHAvb0vz9J8fP709fZ/PLr//zL8wj/dTpScLUVYDew7UoWb0G0nayl6rascDqZKUDU+m6lY8/566SZbLZPGslopqsusqpu8ynJ9XVZVSHaTqq60YGAkKPEFhLfEEnZFAh6R0QBhQsbmi9Y3hlsEtLNuREMA9ah6tw0+0IrXa7PqddJ9G+8h556TTB0OXWLvxQQ/xyxVh488M9UyGzd1BWJY/eYqb7uVXVDGrAFfD7STdFAL/hdsflwXEWnApExvcAO8ofNSfppQdZkPzbo7eAZ6LtH27a1cFsauJ0O4L6a/nP5bfIjv7gjT//6vHyy/fRSM1FJgYbNvtGOQ9sWckuJXjfKipq68iytrgKNsuwOlBX+/c+Tdx9mo19P8y8/Hk+9yWR6ukdCoekOvG5cmY/ns/lMMzTsGlK0408KbmA6AfGvBW9L62wXLLatsOl1Owowvoy0NHEZdTDSaJFRA/fvYcjvASrHk91GDjFebz6BFilfQeq5TvSRkbKjYFioAgUqNQ1voOJ6sQaGSnW0PQOVFipPulJDQaX612qeyUAlnIhwWKjUQIKa0DFQiQdX1QfsFSrp829hpcb2DVZcLzKdNRhW6kNnZLDSYhUN7QPaumdeEf8pc5DJeM4FLuCKlZWXFfubcOVQQBHL1gDaFra6h6/1LGFMIKnYWZCgHJUsHkMPYIrqi0oKOyuCCVFVrnDCI0+rnBeJshglKKl4HqhibxQYWj27msiq2dEKLDK2zAqk6HcFzuin7+w8zNCK180uQeLgjgrBStT+u0Il/ZNhSh62kNKCD7CIEQEE4YxVmaZgFWNZr7gYlUi2hleHcv5F9sZXeuEVvQssFUCbQ1h7ZqIqUPFVYaioeLul7hCrrYB5AZeQdoWCq5IL73Ba5USsJbsTerNgWbLDmPaEDQJcKRV9u60WCLDLMtZ8QVQqqArWjPlDDHMCKwEY1yuOYwBj/o24yhFb1cS/zTWQFxgljOYCLYEEb1hcpTkQOmSF3N6iGLHjBJawENetcCoaDITqEVdxucaxWp1JglHCbnNsO+64dxSxg6Cg92Lf11mnTuxBa/5K4GpiYJ6nC7XYBzMIujmSxiAYg2AMQh8GwVeDRDqb4OvC4nYHayf1NkEN6hmbYGyCsQnD2ATX8va3CeGhbIIaPTY2wdgEYxOGsQmeo8uf621CFxOz9DZBTVMYm2BsgrEJQwQTfDfcP5rgHcoi6FZWGItgLIKxCEN4CYGvjTDqnxwOFmFU067GJhibYGzCEF5CGET7ewnugSyCoyb3jUUwFsFYhCEsQhTt/9wgZyF2v3BXMQjnICa4LnkbDe32obt2ud2xrWhreokThjZfKqKdXtLYdlNCfcGg+4KpJUJ8D9EbTAhe7eSCJMx6I9EdSy3k4oDtTUxBmYsbvUUPrB3KVp+sEO1Op7e1CjvhjROcWVsv22+yyB2NzkbbL0+hVBipjAo7cDr1+ySqoSl1ozozJ4mLLFlMD5OS9GCZqIHxB4w/cBz+ADUHzvAOgasGDcTPIXzG3+j7pwLCjA51Zdmtg0DPBdbYpaPH5twMFbQgMc5nbEOAvT0IeuaWv47RjdC6DAUUuwiIrdHZml39Julr7e9k7fa9d+F+yH1VZf7LUpd99OpgeOoz7AVY3SSAG8JMEMY4r292XlOuzOu1KocimhMOTTR1dr3zDjzZLoamkdWEwlMfKnr1UyU1dgxKU+4LmeGo7+EIYcJ+sQP2ZiO88NgGI3VVx3gFntgI1HZnr8ACXoJf7HdqXvR0/5S73njijMav4y4l7syffBjulhSOFYejL/L6YXO3B3vkDExebyd5rX9T+pXs+bXN1Zn4yaVzSqglZg+lByfzyPNn587ryOyPXWvifxgy/xJoiR9NupXQ9EZs+XuGR2OV1Wn0a2JfqVsvGE/h8NbW7Y2NodyY5WjYqOZY1mwckyVkYUxjMvtmJBCa74uVI8s6MlaqeRoz+L9LJg87+LfNra+JFfRLbDWntTexr0gBwUpz3vB6YF6XNTK9+bQyliUndIa6pWD9EluTmdmX2OMMpI8Ua0Pt46M2WGPTF7mD0Do2cvtqVodHeNtslameg7P4PIzmlvc6Fs8sf2qHH4bFIlPUG2sjJzw61qopok2g4T9X3ZPS9bzolaZ1MrVd/wNFGrL+7OjIPzonQW4f9872Gu0AjPXimgE27ddDoeaGvI8BRRA0obAjNdPRLxRqpuM97BXaBRSjsL2pRThwMt9Xo/PvYTfQLjwY6S8cDRRqaPo9bPbZxdDdmuIyPBRqPPY97OXZhYlyWk+j3tADtxpBfA9LGLroFXZvUNDDArOfslmf+8Sc+EucQHbF/wE=</diagram></mxfile> \ No newline at end of file
+<mxfile modified="2021-12-10T09:19:01.770Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="Xc_3XlKnICz3A04XOjbF" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7V1bd9sqFv41eUyW7pIffUtPZ5I5naY9XWtesohEbFpZqBLK7dcPF2FbAidOKkvOCmlXYhACtL+PzdbegE/c6erhUwHy5SVOYHriWMnDiTs7cRzHcm36h+U8ihzbskKRsyhQUudtMq7QE5QF69wKJbBsFCQYpwTlzcwYZxmMSSMPFAW+bxa7xWmz1RwsoJJxFYNUzf2BErIUuZETbvL/gmixlC3bwUhcWQFZuH6ScgkSfL+V5c5P3GmBMRGfVg9TmDLpSbmI+853XF13rIAZ2eeG7/OnL9/H478/F+enqIwW/jT8feqIWu5AWtUPPP5xRTOmKa6Sut/kUQojxygjXKD+hP6n7U2tE59embLUmeO3MtrpsJlhqylWRzOjnQ6bGXa7ervVvt3u4FaGkmpUb7Xat7Y6SP+7E1yRFGVwuqaeRTMXBUgQhWSKU1zQvAxnVHqTJVmlNGXTj/dLROBVDmIm1Xs6bmjeLc5ITX7bkela8KxWSp6cfV49LNhAOwP3pXe2KHCV8yY/U/prr17Tj9cxA/MapIRVRAr8C8rOnTgu/XfOCDO5RWna6vQdLAiiY2GcogWrn2DWHKhTKbzlNdInQdnigqdmrlX3XtdEAsolTOpHol0mgIqvqMXCyQWL+R0UHBNl0hTkJbpZC6KAcVWU6A5+haWQF8tVx0I9PNgTwIetrHpsfIJ4BUnxSIvUVz03ELdITcXYxNL3m2EfuPVYXm4N+cCpC4Ja1SzWdW9GI/1QD8hXDE5bGZxTXOS4AAQylQoIYIoPMqmZofr+h2oswb1m0F7XwGqGrD8OplFw0CG7buKYh6ztvDhiPcvrc8T6I2UgwoTaE3USF2SJFzgD6XyTO6HgZ8laxpsyF5hhxwX9ExLyWJMOVAQ3WQqzZMxMHdZCDjORc45Y1wUjOYGk+eJoKeX5k8DjV0BBZG01p3ZCVeKqiOEz8qhVKq1zAckz5dxabkxYzyJfwBQQSqWmndc1jIFlYNTB8yKOnnNcOKozqAFWh9fLwHrHBazRs2/EMeoaR34rfRDwuFWgtj43NX9hGZuZ27ftxtQd2l6LE6LGDUPWXXs7aULXkKbBBXdf0lhHQRonapLGqZ1LByVN4Jop5HkWefuyyD8IixSahNIIr2niyrSsQvS0vqs1EXXBGM8w5nnG+PsyJjgqoyM0OL4RR/co5o/IcgeYP3xDmsOOaT3YttXy53ruftOAUtMofKEi8cyHm08Cw6AGg8LBDI4/e2eNjF3wPLDRvsAembcwNDjq4HkZx/Ao7ILQar4w+JF7eLsgNC7mt5HG79wZ8WcvBcbF/DywEq+XgbWHAvb0vz9J8fP709fZ/PLr//zL8wj/dTpScLUVYDew7QoWb0G0Hayl4rascDqZKUDU8m6FY8/5z0kz2GyfNILRTFZdRFXd5luS6+uiqiJrO6jqRgcCQs4SW0h8QyRlSyDoExEFFJ7ZkHzB4s5gE5Buro1gGLABVcem2Q2tcLk+pl4H0b/xEXrqNcFYx9Q3YP05Mq14d+CfqdDYuiUqEq/usVFt2qvqhjTgCfi6o5uigVLwu2Lr3riIToXkx7SAHeQPm4v004KsSX1sENtB95DathZTS4Op0wGmV9N/Lr9NfuQXd+TpX5+XT7afXmpWHSnyZ0tptJPKtrrbkpTXjWaKmrLyLK2sAo2w7A6EFf79z5N3H2ajX0/zLz8eT73JZHq6R3SgObe/bpKYj+ez+Uyj53fND9rJJAU3MJ2A+NeC96V1tQsW23JVrzShHQUYX7pNmriMOpg2tMioXvj3MH/3AJXjyWEj5xGvtwlei5SvIPXcIPrISNlRMCxUgQKVGlM3UHG5WANDpVrNnoFKC5UnTamhoFKNaDVoZKASRkQ4LFSqV0CNzhioxNupagP2CpW0+bewUh31BisuFxmbGgwr9aUzMlhpsYqGtgFt3TuvcPKUOcik0+YCF3DF6srLiv1NuHAooIiFXgDtC9uqwzduljAmkFTsKkhQjkrmdKEJmKK6UElhZ1WwTFSVK5xw99Iq51WiLEYJSioe1KnYLwoMbZ6VJrJpllqBRcb2TIEU/a7AGf30nV2HGVrxtlkRJBJ3NBOsROu/K1TSPxmm5GG7Ii34AIsYEUAQzliTaQpWMZbtisKoRLI3vDmU8xvZL75tC6/oU2ApANodwvozE02Bim/xQkXF+y1lh1hrBcwLuIR0KBRclDzzDqdVTsTGsDshNwuWJUvGdCRsEOBCqeiv22qBACuWse4LotKMqmDdmD/EMCewEoBxueI4BjDmd8RVjtgWJX43l0BeYJQwmgu0BBK8Y3GV5kDIkFVye4tixNIJLGEhyq1wKjoMhOgRF3G5xrFanUmCUcJuc2zbubi3q7ADz5/34tjXaadO9EFrMUrganxgnqdztdgHUwi6BY9GIRiFYBRCHwrBV51EOp3g69zidgcbIfU6QXXqGZ1gdILRCcPoBNfy9tcJ4aF0guo9NjrB6ASjE4bRCZ6ji5/rdUIXq6z0OkENUxidYHSC0QlDOBN8N9zfm+AdSiPotkkYjWA0gtEIQ1gJga/1MOrfHA7mYVTDrkYnGJ1gdMIQVkIYRPtbCe6BNIKjBveNRjAawWiEITRCFO3/3iBXIXa/C1dRCOcgJriueRsN7Vmgu46s3XFGaGt5iROGth3sWl7SOENTQn3BoPuCqSZC/EDQG0wIXu3kgiTM+lTQHVst5OaA7RNJQZmLB71FD6wfyrmdrBLtsaW3tQg74Y0TnFlbP7bfZJE7Gp2Ntn88hVJhpDIq7MDo1B96qLqm1FPnzJoknmXJanpYlKQHy3gNjD1g7IHjsAeoOnCGNwhc1WkgvtvgM/5Gf38qIMzoVFeW3RoI9FpgjV06e2yuzVBBKxLzfMZ29+9tQdArt/znGM0IrclQQHEkgDjnnG3M1Z94vpb+TtZuP3sX5oc8JFXGvyx120evBoanvsNegNVNArgizARhjPH6ZuM15cK8XotyKKI54dBEU1fXO+/Aku1iahpZTSg89aWiVztVUmPHpDTltpCZjvqejhAm7Os3YG86wguPbTJSd3WMV+CJzUBtc/YKLOAl+MW+dOZFS/dPueuNJ85o/DruUuLO/MmH4W5J4VhxOPoirx82T3uwR87A5PV2ktf6N6Vfyd5f21ydie9POqeEWmL2UnpwMo88f3buvI7M/ti1Jv6HIfMvgZb4BqRbCU1vxB41z74aXiury+jXxL5Sj14wlsLhta3bGxtDeTDL0bBRjbGs2TgmS8jcmEZl9s1IICTfFytHlnVkrFTjNGbyf5dMHnbyb6tbX+Mr6JfYakxrb2JfkQKClea64fXAvC5rZHqzaaUvSy7oDHVbwfoltiYysy+xxxlIHynWhtrHR22wxqYvcgehdWzk9tWoDvfwttkqQz0HZ/F5GM0t73Usnln+1A4/DItFpKg31kZOeHSsVUNEG0fDf666J6XredErVetkarv+B/I0ZP3p0ZF/dEaCPD7unZ012gEY6801A5zAr4dCjQ15HwOKIGhCYUdqpKNfKNRIx3s4K7QLKEZh+1CLcOBgvq9659/DaaBdWDDSXjgaKFTX9Hs47LOLqbu1xGV4KFR/7Hs4y7MLFeW03ka9oSdu1YP4HrYwdDEq7N6goMkCs++rWV/7xIz4S5xAVuL/</diagram></mxfile> \ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws/aws_9.xml b/src/main/webapp/templates/cloud/aws/aws_9.xml
index b559e117..7f48043c 100644
--- a/src/main/webapp/templates/cloud/aws/aws_9.xml
+++ b/src/main/webapp/templates/cloud/aws/aws_9.xml
@@ -1 +1 @@
-<mxfile modified="2021-12-10T12:53:52.999Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="nHD-hMrsujXM5dkfLnP9" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7Zxbc5s4FIB/jR+bAcTFPNok7nYm3Xaa7vTRo4CMtcXIK0Qu/fUrgTAXYUJaY9MU25NBR1d0Ph0dSZAZ8HZP7yncbz+SAEUzQwueZuB6Zhi6aRgz8dOC51ximXYuCCkOZKJScId/ICnUpDTFAUpqCRkhEcP7utAncYx8VpNBSsljPdmGRPVa9zBEiuDOh5Eq/YYDtpVS3XbLiL8QDrey6rnh5BE7WCSWd5JsYUAeKyJwMwMeJYTlV7snD0Wi84p+yfOtjsQeGkZRzPpk+Ofmx+d/FotPH+jqHU7moeU5/70ztHlezgOMUnnLsrnsuegDStI4QKIYbQaWj1vM0N0e+iL2kWudy7ZsF/GQzi8jeI+iJfS/h1k2j0SEZsWATfbhSTY4itrkIYUB5ndTxMUk5nUsuWoZxDGisoY9wTFD9OaBJ01ko3wSRXCf4PuszUJCkZ/SBD+gLyjJqRJStdNkPz4gytBTRSQ78T0iO8ToM08iYzmaV1aeSTJtuk4heSwZsQuEtxU8gCaFUHIZHsovVccvpPZepUln0uQrNWk0NWlpo9CkrWhy8e2OC7yIpIGi1KwXs0ZYS/7jzfK0mcVjPBG6MqyGoBl26gJdDYky6oJm2KkL9GbxeqN+vdnAikAJ1YrXGvVrlQbyH1iSlEWcMe8wIWjHgazQ3jYYNpxXOSXpRhGWHS9K5SZ9L653T6GY/a7gY2JeidGyz6r8wHlvjV3zy7UvlLmGERMFMUq+o8pI4t+VQOboCBOUYz5NLSIcikoYEXVCGYrQJiuW3w6Ow9ssdA00eQtt9QQw2R4MQ4+RP7ahDJShrI9hKANTGa4o4A6GDBLKtiQkMYxuSumybqXLNLdEKDnr7n8RY88STZgyUmc5YZCyhfB+StQz2QqL9mfFojgoUpA9inNJJV5Bcq6J7yGm8IaMLgUmJKU+6uogvXDqIA0R67SK0uMS/deJBEURZJyxui94etWCSbXdqjX6qrYYlGNRreFOqu1WLeit2vmpVZtl5Z0AnysJpA9UlvxZCMr5Acz15vwAivlhdSyPOqf8RB4HGPU8/CJvfQnooRt+xRxpE7PdzDq9mQWjYNZUF5r2S/z1yDMQf8Z84q+bP7cvf8XC/cL8Wa5i/1zjBf7UPI52Jv5ktV3bHxOQtR7TLgfkL7re+qTabtX2XlXp5ihsjW293j+zDPelPEPZGnvir5u/3ks/4+T8/eLSz5lUeyrV6uNSLZgcghdU239Vb49LtZrq/E0nJtOJSdHo6bCkce5pNhwnHbQflshhXjssAcOde7rHRjGJNzicGXam+nvKr0Jx9TdheMMVyzDHRolVhn0r58d0fIT/xnkc/5hLV+FRJq5xUkB4K3j5TBKctRpc3xPGyO5FSn0kkKmPwJdGG0z2+Y1u8JNohwKefmxIoh3EUT+45bj5ms2H9mkIBTY3WFr50etbCi2sOnMV1eIZndOTWhxYVEi9E6MVs+eJ0j+GUtMdOaW6Quk5aFt6OrDsN0rbOq6O5l7oDW4Pdacva4VsANaMibW3wVq3VRsFa0D1E7NsuZ+Y0iNTrez2i0zBbxZUkWKd/72HSZZ5lE4j0IzLg2uq4IYhRSFkSMWyn0c5OM88bgVMc25U4q4xX5xKLGOxKdYb+CoEo6O+lXCK8p2zfG+Cr8qTtl2KhCtipI4oaH2o+czkt2zQleRrix380Wax36eQBtfpxcfAn2XTaRqhtXE5nG3d6MTZ7YuzPRjOLU/ovx7hjzARWj2D/bZMx3RfZ789Rwf66o+x36FQUyDUdDHsHbPbivfGfjgrrr5ilG3QNgHOTl2+UrE5MzknI4A7OzhhtPdm2eDOuGWZbbGXA1t9C7J+8jAxe3Zm854fB6+2Cy5vfNXTsczOfoPM36p2dhHxe58c45M6xj+52TH4Cm9s5tRQj8e+8DVFZk93+wjD2G/Z7/C2MA5b5BOx51nKDY6p7ZoXX7kd7um85xTXmuVx7/nN8RXB3X0A15s09s96SNG9RTA6e6gejt0SrkEumjZ5fyOftPcm7+CEj8EhNVqO4aZNsN+Z71dugp2A8u49r9HZcfX87tNeqFiY8uGdiOkxrlMgN583X1G03XkvsH7iSS0eLP/DV/7+Ufl/0sDN/w==</diagram></mxfile> \ No newline at end of file
+<mxfile modified="2021-12-10T09:25:14.001Z" host="localhost" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" etag="acJ2w5STkS57jYte4UiP" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7Zxbc5s4FIB/jR+bAcTFPNok7nYm3Xaa7vTRo4CMtcXIK0Qu/fUrgTAXYUJaY9MU25NBR1d0Ph0dSZAZ8HZP7yncbz+SAEUzQwueZuB6Zhi6aRgz8dOC51zi2FIQUhzIRKXgDv9AUqhJaYoDlNQSMkIihvd1oU/iGPmsJoOUksd6sg2J6rXuYYgUwZ0PI1X6DQdsK6W67ZYRfyEcbmXVc8PJI3awSCzvJNnCgDxWROBmBjxKCMuvdk8eikTnFf2S51sdiT00jKKY9cnwz82Pz/8sFp8+0NU7nMxDy3P+e2do87ycBxil8pZlc9lz0QeUpHGARDHaDCwft5ihuz30Rewj1zqXbdku4iGdX0bwHkVL6H8Ps2weiQjNigGb7MOTbHAUtclDCgPM76aIi0nM61hy1TKIY0RlDXuCY4bozQNPmshG+SSK4D7B91mbhYQiP6UJfkBfUJJTJaRqp8l+fECUoaeKSHbie0R2iNFnnkTGcjSvrDyTZNp0nULyWDJiFwhvK3gATQqh5DI8lF+qjl9I7b1Kk86kyVdq0mhq0tJGoUlb0eTi2x0XeBFJA0WpWS9mjbCW/Meb5Wkzi8d4InRlWA1BM+zUBboaEmXUBc2wUxfozeL1Rv16s4EVgRKqFa816tcqDeQ/sCQpizhj3mFC0I4DWaG9bTBsOK9yStKNIiw7XpTKTfpeXO+eQjH7XcHHxLwSo2WfVfmB894au+aXa18ocw0jJgpilHxHlZHEvyuBzNERJijHfJpaRDgUlTAi6oQyFKFNViy/HRyHt1noGmjyFtrqCWCyPRiGHiN/bEMZKENZH8NQBqYyXFHAHQwZJJRtSUhiGN2U0mXdSpdpbolQctbd/yLGniWaMGWkznLCIGUL4f2UqGeyFRbtz4pFcVCkIHsU55JKvILkXBPfQ0zhDRldCkxISn3U1UF64dRBGiLWaRWlxyX6rxMJiiLIOGN1X/D0qgWTartVa/RVbTEox6Jaw51U261a0Fu181OrNsvKOwE+VxJIH6gs+bMQlPMDmOvN+QEU88PqWB51TvmJPA4w6nn4Rd76EtBDN/yKOdImZruZdXozC0bBrKkuNO2X+OuRZyD+jPnEXzd/bl/+ioX7hfmzXMX+ucYL/Kl5HO1M/Mlqu7Y/JiBrPaZdDshfdL31SbXdqu29qtLNUdga23q9f2YZ7kt5hrI19sRfN3+9l37Gyfn7xaWfM6n2VKrVx6VaMDkEL6i2/6reHpdqNdX5m05MphOTotHTYUnj3NNsOE46aD8skcO8dlgChjv3dI+NYhJvcDgz7Ez195RfheLqb8LwhiuWYY6NEqsM+1bOj+n4CP+N8zj+MZeuwqNMXOOkgPBW8PKZJDhrNbi+J4yR3YuU+kggUx+BL402mOzzG93gJ9EOBTz92JBEO4ijfnDLcfM1mw/t0xAKbG6wtPKj17cUWlh15iqqxTM6pye1OLCokHonRitmzxOlfwylpjtySnWF0nPQtvR0YNlvlLZ1XB3NvdAb3B7qTl/WCtkArBkTa2+DtW6rNgrWgOonZtlyPzGlR6Za2e0XmYLfLKgixTr/ew+TLPMonUagGZcH11TBDUOKQsiQimU/j3JwnnncCpjm3KjEXWO+OJVYxmJTrDfwVQhGR30r4RTlO2f53gRflSdtuxQJV8RIHVHQ+lDzmclv2aArydcWO/ijzWK/TyENrtOLj4E/y6bTNEJr43I427rRibPbF2d7MJxbntB/PcIfYSK0egb7bZmO6b7OfnuODvTVH2O/Q6GmQKjpYtg7ZrcV7439cFZcfcUo26BtApydunylYnNmck5GAHd2cMJo782ywZ1xyzLbYi8HtvoWZP3kYWL27MzmPT8OXm0XXN74qqdjmZ39Bpm/Ve3sIuL3PjnGJ3WMf3KzY/AV3tjMqaEej33ha4rMnu72EYax37Lf4W1hHLbIJ2LPs5QbHFPbNS++cjvc03nPKa41y+Pe85vjK4K7+wCuN2nsn/WQonuLYHT2UD0cuyVcg1w0bfL+Rj5p703ewQkfg0NqtBzDTZtgvzPfr9wEOwHl3Xteo7Pj6vndp71QsTDlwzsR02Ncp0BuPm++omi7815g/cSTWjxY/oev/P2j8v+kgZv/AQ==</diagram></mxfile> \ No newline at end of file