diff --git a/ChangeLog b/ChangeLog
index 6b9b59d7dd9a620ef10067197b6c023d098735d9..7e533231758bcc032356fa3977a45d16183d8392 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+06-NOV-2019: 12.2.1
+
+- Fixes slow paste from clipboard in modern browsers
+- Improves handling of timeouts in Google Drive
+- Fixes event handling on iOS
+- Uses mxGraph 4.0.6 beta 4
+
 04-NOV-2019: 12.2.0
 
 - Fixes Google auth after hibernate on Windows
diff --git a/VERSION b/VERSION
index a17cbe225605eb4ab0395161c3c22e6a03981781..e597143d87cd0e53882d23cc4d7e49854c5f0816 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-12.2.0
\ No newline at end of file
+12.2.1
\ No newline at end of file
diff --git a/etc/mxgraph/mxClient.js b/etc/mxgraph/mxClient.js
index 24bf693f206e6159f7a7eef6710bf440d7cf2fff..329bbe2009e7f52a6f8c67556a726dd6282c2a0e 100644
--- a/etc/mxgraph/mxClient.js
+++ b/etc/mxgraph/mxClient.js
@@ -109,7 +109,7 @@ function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments
 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: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};
+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};
 mxEventSource.prototype.fireEvent=function(a,b){if(null!=this.eventListeners&&this.isEventsEnabled()){null==a&&(a=new mxEventObject);null==b&&(b=this.getEventSource());null==b&&(b=this);for(var c=[b,a],d=0;d<this.eventListeners.length;d+=2){var e=this.eventListeners[d];null!=e&&e!=a.getName()||this.eventListeners[d+1].apply(this,c)}}};
diff --git a/src/main/webapp/cache.manifest b/src/main/webapp/cache.manifest
index 38e389f241cd851b3ebab90296aa274c8f4f74d4..3af01f7b3a28d3b88eecefa1b9f00be1587a947b 100644
--- a/src/main/webapp/cache.manifest
+++ b/src/main/webapp/cache.manifest
@@ -1,7 +1,7 @@
 CACHE MANIFEST
 
 # THIS FILE WAS GENERATED. DO NOT MODIFY!
-# 11/04/2019 12:15 PM
+# 11/06/2019 04:08 PM
 
 app.html
 index.html?offline=1
diff --git a/src/main/webapp/electron.js b/src/main/webapp/electron.js
index ae2a6a1ee0102c688ed092f021198aceab59420c..265d745120a62a49941f9ec02f1b6866acb24ecd 100644
--- a/src/main/webapp/electron.js
+++ b/src/main/webapp/electron.js
@@ -22,7 +22,7 @@ autoUpdater.logger = log
 autoUpdater.logger.transports.file.level = 'info'
 autoUpdater.autoDownload = false
 
-const __DEV__ = process.env.NODE_ENV === 'development'
+const __DEV__ = process.env.DRAWIO_ENV === 'dev'
 		
 let windowsRegistry = []
 let cmdQPressed = false
diff --git a/src/main/webapp/images/draw-search.png b/src/main/webapp/images/draw-search.png
new file mode 100644
index 0000000000000000000000000000000000000000..b8e35a1cdbd08dc4e2d584a33c6d728059d627a8
Binary files /dev/null and b/src/main/webapp/images/draw-search.png differ
diff --git a/src/main/webapp/images/draw-search.svg b/src/main/webapp/images/draw-search.svg
new file mode 100644
index 0000000000000000000000000000000000000000..6545a869bdb51b210fc0033f377a91d456addc63
--- /dev/null
+++ b/src/main/webapp/images/draw-search.svg
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   contentScriptType="text/ecmascript"
+   zoomAndPan="magnify"
+   contentStyleType="text/css"
+   id="Ebene_1"
+   sodipodi:docname="draw-search.svg"
+   style="enable-background:new 0 0 161.6 217.4;"
+   version="1.1"
+   xml:space="preserve"
+   preserveAspectRatio="xMidYMid meet"
+   inkscape:version="1.0beta1 (32d4812, 2019-09-19)"
+   viewBox="0 0 161.6 217.4"
+   x="0px"
+   y="0px">
+    <metadata
+   id="metadata43">   
+        <rdf:RDF>     
+            <cc:Work
+   rdf:about="">       
+                <dc:format>image/svg+xml</dc:format>
+
+        
+                <dc:type
+   rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+
+        
+                <dc:title />
+
+      </cc:Work>
+
+    </rdf:RDF>
+
+  </metadata>
+
+  
+    <defs
+   id="defs41">     </defs>
+
+  
+    <sodipodi:namedview
+   objecttolerance="10"
+   bordercolor="#666666"
+   inkscape:window-height="907"
+   inkscape:zoom="1.979899"
+   gridtolerance="10"
+   id="namedview39"
+   inkscape:current-layer="Ebene_1"
+   inkscape:window-y="23"
+   inkscape:cy="99.37044"
+   inkscape:window-x="0"
+   inkscape:cx="75.627191"
+   showgrid="false"
+   guidetolerance="10"
+   inkscape:document-rotation="0"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1600"
+   inkscape:window-maximized="0"
+   borderopacity="1"
+   pagecolor="#ffffff" />
+
+   
+    <style
+   type="text/css"
+   id="style10">  .st0{fill:#F08705;}  .st1{fill:#DF6C0C;}  .st2{fill:#FFFFFF;}  .st3{fill:#333333;} </style>
+
+   
+    <path
+   inkscape:export-ydpi="85.540001"
+   inkscape:export-xdpi="85.540001"
+   d="m 161.6,154.7 c 0,3.9 -3.2,6.9 -6.9,6.9 H 6.9 C 3,161.6 0,158.4 0,154.7 V 6.9 C 0,3 3.2,0 6.9,0 h 147.8 c          3.9,0 6.9,3.2 6.9,6.9 z"
+   id="path12"
+   inkscape:connector-curvature="0"
+   style="opacity:1;stop-opacity:1"
+   class="st0" />
+
+  
+    <g
+   inkscape:export-ydpi="85.540001"
+   inkscape:export-xdpi="85.540001"
+   style="opacity:1;stop-opacity:1"
+   id="g16"
+   transform="matrix(0.9635324,0,0,0.94557365,5.8931643,8.7952939)">   
+        <path
+   id="path14"
+   d="m 161.6,154.7 c 0,3.9 -3.2,6.9 -6.9,6.9 l -49.21076,0.3777 -73.122742,-72.528914 5.914923,-52.340383 51.338377,-6.602109 71.131782,68.631693 z"
+   inkscape:connector-curvature="0"
+   class="st1"
+   sodipodi:nodetypes="cscccccc" />
+
+    </g>
+
+  
+    <path
+   inkscape:export-ydpi="85.540001"
+   inkscape:export-xdpi="85.540001"
+   d="M 90.214051,72.140274 H 83.831894 L 77.074317,60.876706 c 1.501684,-0.294472 2.627947,-1.619598          2.627947,-3.165578 v -8.502889 c 0,-1.803643 -1.464142,-3.239196 -3.303704,-3.239196 H 65.135932 c -1.839563,0          -3.303705,1.435553 -3.303705,3.239196 v 8.502889 c 0,1.582789 1.126263,2.871106 2.590405,3.165578 l          -6.757577,11.300377 h -6.382156 c -1.839562,0 -3.303704,1.435553 -3.303704,3.239196 v 8.50289 c 0,1.803643          1.464142,3.239196 3.303704,3.239196 h 11.262628 c 1.839563,0 3.303704,-1.435553 3.303704,-3.239196 v -8.50289 c          0,-1.803643 -1.464141,-3.239196 -3.303704,-3.239196 h -1.088721 l 6.682493,-11.189949 h 5.218351 l          6.720035,11.189949 h -1.126263 c -1.839563,0 -3.303704,1.435553 -3.303704,3.239196 v 8.50289 c 0,1.803643          1.464141,3.239196 3.303704,3.239196 h 11.262629 c 1.83956,0 3.3037,-1.435553 3.3037,-3.239196 v -8.50289 c          0,-1.803643 -1.46414,-3.276005 -3.3037,-3.276005 z"
+   id="path18"
+   inkscape:connector-curvature="0"
+   style="opacity:1;stroke-width:0.371738;stop-opacity:1"
+   class="st2" />
+
+      
+    <path
+   inkscape:export-ydpi="85.540001"
+   inkscape:export-xdpi="85.540001"
+   d="M 138.37202,115.60142 110.97493,96.346455 c -2.8415,-2.118522 -5.77649,-2.982891 -8.08132,-2.727428          5.60106,-7.232032 8.63993,-16.326035 7.93359,-25.998099 C 109.24718,46.049246 89.633636,29.784878          67.023942,31.294495 44.414248,32.803 27.365222,51.515109 28.945247,73.084589 30.527579,94.657363          50.138805,110.92063 72.7485,109.41213 c 10.140315,-0.67387 19.154181,-4.81402 25.88054,-11.113419          0.05771,2.212109 1.360736,4.863569 3.95526,7.254059 l 23.79962,23.20571 c 4.06374,3.73714 10.23957,3.66557          13.7297,-0.16296 3.49129,-3.83183 2.70647,-9.67758 -1.7416,-12.9941 M 72.002922,99.197207 C 55.309373,100.30932          40.82832,88.297401 39.66148,72.373271 38.495794,56.44585 51.08405,42.630324 67.776444,41.517116          84.468839,40.401695 98.951046,52.413608 100.11904,68.33994 101.28473,84.266271 88.696471,98.08289          72.002922,99.197207"
+   id="path20"
+   inkscape:connector-curvature="0"
+   style="opacity:1;stroke-width:0.419065;stop-opacity:1"
+   class="st2" />
+
+  </svg>
diff --git a/src/main/webapp/images/drawlogo-color.svg b/src/main/webapp/images/drawlogo-color.svg
new file mode 100644
index 0000000000000000000000000000000000000000..30a5088818a3e41dc86f136cd5a7f0eaf73ee24a
--- /dev/null
+++ b/src/main/webapp/images/drawlogo-color.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xml:space="preserve"
+   style="enable-background:new 0 0 161.6 217.4;"
+   viewBox="0 0 161.6 217.4"
+   y="0px"
+   x="0px"
+   id="Ebene_1"
+   version="1.1"><metadata
+   id="metadata43">
+</metadata>
+<defs
+   id="defs41">
+</defs>
+
+<style
+   id="style10"
+   type="text/css">
+	.st0{fill:#F08705;}
+	.st1{fill:#DF6C0C;}
+	.st2{fill:#FFFFFF;}
+	.st3{fill:#333333;}
+</style>
+
+<path
+   class="st0"
+   d="m 161.6,154.7 c 0,3.9 -3.2,6.9 -6.9,6.9 H 6.9 C 3,161.6 0,158.4 0,154.7 V 6.9 C 0,3 3.2,0 6.9,0 h 147.8 c 3.9,0 6.9,3.2 6.9,6.9 z"
+   id="path12"
+   style="opacity:1;stop-opacity:1" />
+<g
+   id="g16"
+   style="opacity:1;stop-opacity:1">
+		<path
+   class="st1"
+   d="m 161.6,154.7 c 0,3.9 -3.2,6.9 -6.9,6.9 H 55.3 l -32.2,-32.7 20,-32.7 59.4,-73.8 58.9,60.7 z"
+   id="path14" />
+
+	</g>
+<path
+   class="st2"
+   d="m 132.7,90.3 h -17 l -18,-30.6 c 4,-0.8 7,-4.4 7,-8.6 V 28 c 0,-4.9 -3.9,-8.8 -8.8,-8.8 h -30 c -4.9,0 -8.8,3.9 -8.8,8.8 v 23.1 c 0,4.3 3,7.8 6.9,8.6 L 46,90.4 H 29 c -4.9,0 -8.8,3.9 -8.8,8.8 v 23.1 c 0,4.9 3.9,8.8 8.8,8.8 h 30 c 4.9,0 8.8,-3.9 8.8,-8.8 V 99.2 c 0,-4.9 -3.9,-8.8 -8.8,-8.8 H 56.1 L 73.9,60 h 13.9 l 17.9,30.4 h -3 c -4.9,0 -8.8,3.9 -8.8,8.8 v 23.1 c 0,4.9 3.9,8.8 8.8,8.8 h 30 c 4.9,0 8.8,-3.9 8.8,-8.8 V 99.2 c 0,-4.9 -3.9,-8.9 -8.8,-8.9 z"
+   id="path18"
+   style="opacity:1;stop-opacity:1" />
+
+</svg>
diff --git a/src/main/webapp/images/google-drive-connector-atlas.png b/src/main/webapp/images/google-drive-connector-atlas.png
index 93c62a3c40100436fe1c208eec229e02c547b406..09574bc6154668ce8800208f34455a1ec5e81cd9 100644
Binary files a/src/main/webapp/images/google-drive-connector-atlas.png and b/src/main/webapp/images/google-drive-connector-atlas.png differ
diff --git a/src/main/webapp/images/google-drive-connector-atlas.svg b/src/main/webapp/images/google-drive-connector-atlas.svg
new file mode 100644
index 0000000000000000000000000000000000000000..d58593073a115e3b0922d9a83c2a728e93d1ae20
--- /dev/null
+++ b/src/main/webapp/images/google-drive-connector-atlas.svg
@@ -0,0 +1,121 @@
+<?xml version="1.0" standalone="no"?>
+<svg contentScriptType="text/ecmascript" zoomAndPan="magnify" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" baseProfile="full"
+    contentStyleType="text/css" id="svg285" sodipodi:docname="driveconnector.svg" version="1.1" width="210mm"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" preserveAspectRatio="xMidYMid meet"
+    inkscape:version="1.0beta1 (32d4812, 2019-09-19)" viewBox="0 0 210 297" height="297mm" xmlns="http://www.w3.org/2000/svg">
+    <defs id="defs279">
+        <clipPath clipPathUnits="userSpaceOnUse" id="clipPath433">
+            <path d="M 0,144 H 144 V 0 H 0 Z" id="path431" inkscape:connector-curvature="0"/>
+        </clipPath>
+        <clipPath clipPathUnits="userSpaceOnUse" id="clipPath449">
+            <path d="M 0,0 H 144 V 144 H 0 Z" id="path447" inkscape:connector-curvature="0"/>
+        </clipPath>
+        <clipPath clipPathUnits="userSpaceOnUse" id="clipPath457">
+            <path d="M 34.3896,108.648 H 144.05 V 0.0267944 H 34.3896 Z" id="path455" inkscape:connector-curvature="0"/>
+        </clipPath>
+        <clipPath clipPathUnits="userSpaceOnUse" id="clipPath461">
+            <path d="M 34.39,0.027 H 144.05 V 108.648 H 34.39 Z" id="path459" inkscape:connector-curvature="0"/>
+        </clipPath>
+        <clipPath clipPathUnits="userSpaceOnUse" id="clipPath485">
+            <path d="M 0,0 H 144 V 144 H 0 Z" id="path483" inkscape:connector-curvature="0"/>
+        </clipPath>
+    </defs>
+    <sodipodi:namedview bordercolor="#666666" inkscape:window-height="1395" inkscape:zoom="2.8" id="base"
+        inkscape:current-layer="layer1" inkscape:window-y="23" inkscape:cy="474.13703" inkscape:window-x="0"
+        inkscape:cx="274.3506" showgrid="false" inkscape:document-rotation="0" inkscape:pageopacity="0.0"
+        inkscape:object-nodes="true" inkscape:document-units="mm" inkscape:pageshadow="2" inkscape:snap-nodes="true"
+        inkscape:window-width="2234" inkscape:window-maximized="0" borderopacity="1.0" pagecolor="#ffffff"/>
+    <metadata id="metadata282">
+        <rdf:RDF>
+            <cc:Work rdf:about="">
+                <dc:format>image/svg+xml</dc:format>
+                <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+            </cc:Work>
+        </rdf:RDF>
+    </metadata>
+    <g inkscape:groupmode="layer" inkscape:label="Layer 1" id="layer1">
+        <g style="opacity:1;stop-opacity:1;fill:#f08705;fill-opacity:1" id="g427" transform="matrix(0.35277777,0,0,-0.35277777,46.228234,128.83331)">
+            <g style="fill:#f08705;fill-opacity:1" id="g429" clip-path="url(#clipPath433)">
+                <g style="fill:#f08705;fill-opacity:1" id="g435" transform="translate(144,5)">
+                    <path inkscape:connector-curvature="0" d="m 0,0 c 0,-2.762 -2.239,-5 -5,-5 h -134 c -2.762,0 
+                        -5,2.238 -5,5 v 134 c 0,2.762 2.238,5 5,5 H -5 c 2.761,0 5,-2.238 5,-5 z" id="path437" style=
+                        "fill:#f08705;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+                </g>
+            </g>
+        </g>
+        <g style="opacity:1;stop-opacity:1" id="g443" transform="matrix(0.39467541,0,0,-0.40021116,40.194973,128.95978)">
+            <g id="g445" clip-path="url(#clipPath449)">
+                <g id="g451">
+                    <g id="g453"/>
+                    <g id="g473">
+                        <g id="g471" opacity="0.300003" clip-path="url(#clipPath457)">
+                            <g id="g469">
+                                <g id="g467" clip-path="url(#clipPath461)">
+                                    <g id="g465" transform="translate(34.3896,78.1763)">
+                                        <path inkscape:connector-curvature="0" d="m 0.0 0.0 l 1.535 -47.371 l 33.208 
+                                            -31.0 h 67.766 c 5.053 0.0 7.151 1.142 7.151 6.0 c 0.0 5.547 -0.056 47.189 
+                                            -0.056 49.189 L 79.489 5.0 L 54.015 30.0 L 33.16 29.158 L 22.184 24.449 L 
+                                            16.827 12.24 L 5.149 7.415 z" id="path463" style=
+                                            "fill:#DF6C0C;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+                                    </g>
+                                </g>
+                            </g>
+                        </g>
+                    </g>
+                </g>
+            </g>
+        </g>
+        <g style="opacity:1;stop-opacity:1" id="g475" transform="matrix(0.35277777,0,0,-0.35277777,62.073555,104.96561)">
+            <path inkscape:connector-curvature="0" d="m 0,0 -10.563,-18.299 6.157,-10.665 10.562,18.299 z M 
+                26.628,-13.275 16.062,5.03 H 3.749 L 14.315,-13.275 Z M 8.005,-18.299 1.85,-28.964 h 20.367 l 
+                6.156,10.665 z" id="path477" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+        </g>
+        <g style="opacity:1;stop-opacity:1" id="g479" transform="matrix(0.35277777,0,0,-0.35277777,43.336716,124.56217)">
+            <g id="g481" clip-path="url(#clipPath485)">
+                <g id="g487" transform="translate(69.2168,88.5005)">
+                    <path inkscape:connector-curvature="0" d="m 0,0 23.166,-22.5 v -31.834 c 0,0 1.75,-18 -14.166,-18 h 
+                        -32.334 c 0,0 -12.833,-0.666 -12.833,17.667 v 39.333 c 0,0 -1.5,15.334 18.333,15.334 z" id="path489"
+                        style=
+                        "fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"/>
+                </g>
+                <g id="g491" transform="translate(70.3828,86.1665)">
+                    <path inkscape:connector-curvature="0" d="M 0,0 V -19 H 20" id="path493" style=
+                        "fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"/>
+                </g>
+                <g id="g495" transform="translate(52.0498,89.0005)">
+                    <path inkscape:connector-curvature="0" d="M 0,0 V 4.166 C 0,4.166 -1.5,19.5 18.333,19.5 H 35.167 L 
+                        59.333,-4 v -30.834 c 0,0 1.584,-18 -14.166,-18 H 41.75" id="path497" style=
+                        "fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"/>
+                </g>
+                <g id="g499" transform="translate(88.3828,106.1665)">
+                    <path inkscape:connector-curvature="0" d="M 0,0 V -20 H 22" id="path501" style=
+                        "fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"/>
+                </g>
+                <g id="g503" transform="translate(131.9463,30.1675)">
+                    <path inkscape:connector-curvature="0" d="M 0,0 C 0,4.648 -1.884,8.856 -4.931,11.902 L 0,16.833 H 
+                        -12.625 V 4.208 l 4.719,4.718 c 2.285,-2.285 3.698,-5.442 3.698,-8.927 0,-6.972 -5.652,-12.625 
+                        -12.625,-12.625 -3.771,0 -7.155,1.654 -9.469,4.274 l -3.156,-2.783 c 3.085,-3.495 7.598,-5.699 
+                        12.625,-5.699 9.297,0 16.833,7.536 16.833,16.833 z" id="path505" style=
+                        "fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+                </g>
+            </g>
+        </g>
+        <path inkscape:connector-curvature="0" d="m 46.472771,80.676567 c 0,-1.553617 0.08324,-1.986187 
+            0.419994,-2.182622 0.375682,-0.219139 2.99484,-0.244989 24.82334,-0.244989 22.352122,0 24.434178,0.02162 
+            24.770159,0.257254 0.254956,0.178806 0.393835,0.844389 0.455428,2.182623 l 0.08861,1.925369 H 71.751538 
+            46.472771 Z" id="path578" style="fill:#f08705;fill-opacity:1;stroke:none;stroke-width:0.202075"/>
+        <path inkscape:connector-curvature="0" d="m 174.8888,312.04543 0.0745,-12.18496 0.73521,-1.32692 c 
+            0.77754,-1.40333 1.81083,-2.33651 3.36863,-3.04229 0.88532,-0.40111 6.84481,-0.42902 91.60811,-0.42902 
+            86.4344,0 90.71567,0.021 91.82982,0.45102 0.64275,0.24806 1.38142,0.69349 1.6415,0.98984 0.46375,0.52843 
+            0.46324,0.53529 -0.0266,0.35558 -2.85495,-1.04739 -18.77745,-1.21625 -102.16332,-1.08343 -81.43144,0.12971 
+            -83.16894,0.16117 -84.76601,1.53492 -1.30824,1.1253 -1.42301,2.25635 -1.53365,15.11407 -0.0874,10.16237 
+            -0.15318,11.80616 -0.47211,11.80616 -0.32156,0 -0.36067,-1.60965 -0.29605,-12.18497 z" id="path582" style=
+            "fill:#F08705;fill-opacity:1;stroke:none" transform="scale(0.26458333)"/>
+        <path inkscape:connector-curvature="0" d="m 366.30132,306.47964 c -0.059,-2.50499 -0.52226,-6.33544 
+            -0.92996,-7.69012 -0.46311,-1.5388 -0.29848,-1.6474 0.42346,-0.27935 0.50302,0.95321 0.59134,1.54666 
+            0.67071,4.50702 0.0503,1.8751 0.043,3.80701 -0.0162,4.29315 -0.063,0.51716 -0.12437,0.1725 -0.14802,-0.8307 
+            z" id="path600" style="fill:#F08705;fill-opacity:1;stroke: none" transform="scale(0.26458333)"/>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/src/main/webapp/images/onedrive-connector-atlas.png b/src/main/webapp/images/onedrive-connector-atlas.png
new file mode 100644
index 0000000000000000000000000000000000000000..7e3146f97baca9552dbc55a15f9de7f9ba731598
Binary files /dev/null and b/src/main/webapp/images/onedrive-connector-atlas.png differ
diff --git a/src/main/webapp/images/onedrive-connector-atlas.svg b/src/main/webapp/images/onedrive-connector-atlas.svg
new file mode 100644
index 0000000000000000000000000000000000000000..c0ef1fa0bf8e4e6126b6814106cd5d3e3f3f673b
--- /dev/null
+++ b/src/main/webapp/images/onedrive-connector-atlas.svg
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   contentScriptType="text/ecmascript"
+   zoomAndPan="magnify"
+   contentStyleType="text/css"
+   id="svg285"
+   sodipodi:docname="onedrive-connector-atlas.svg"
+   version="1.1"
+   width="210mm"
+   preserveAspectRatio="xMidYMid meet"
+   inkscape:version="1.0beta1 (32d4812, 2019-09-19)"
+   viewBox="0 0 210 297"
+   height="297mm">
+  <defs
+     id="defs279">
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath433">
+      <path
+         id="path431"
+         d="M 0,144 H 144 V 0 H 0 Z"
+         inkscape:connector-curvature="0" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath449">
+      <path
+         id="path447"
+         d="M 0,0 H 144 V 144 H 0 Z"
+         inkscape:connector-curvature="0" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath457">
+      <path
+         id="path455"
+         d="M 34.3896,108.648 H 144.05 V 0.0267944 H 34.3896 Z"
+         inkscape:connector-curvature="0" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath461">
+      <path
+         id="path459"
+         d="M 34.39,0.027 H 144.05 V 108.648 H 34.39 Z"
+         inkscape:connector-curvature="0" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath485">
+      <path
+         id="path483"
+         d="M 0,0 H 144 V 144 H 0 Z"
+         inkscape:connector-curvature="0" />
+    </clipPath>
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     inkscape:window-height="1395"
+     inkscape:zoom="3.959798"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:window-y="23"
+     inkscape:cy="444.76646"
+     inkscape:window-x="61"
+     inkscape:cx="254.72877"
+     showgrid="false"
+     inkscape:document-rotation="0"
+     inkscape:pageopacity="0.0"
+     inkscape:object-nodes="true"
+     inkscape:document-units="mm"
+     inkscape:snap-nodes="true"
+     inkscape:pageshadow="2"
+     inkscape:window-width="2234"
+     pagecolor="#ffffff"
+     borderopacity="1.0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata282">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       style="opacity:1;stop-opacity:1;fill:#f08705;fill-opacity:1"
+       id="g427"
+       transform="matrix(0.35277777,0,0,-0.35277777,46.228234,128.83331)">
+      <g
+         style="fill:#f08705;fill-opacity:1"
+         id="g429"
+         clip-path="url(#clipPath433)">
+        <g
+           style="fill:#f08705;fill-opacity:1"
+           id="g435"
+           transform="translate(144,5)">
+          <path
+             d="m 0,0 c 0,-2.762 -2.239,-5 -5,-5 h -134 c -2.762,0 -5,2.238 -5,5 v 134 c 0,2.762 2.238,5                          5,5 H -5 c 2.761,0 5,-2.238 5,-5 z"
+             id="path437"
+             inkscape:connector-curvature="0"
+             style="fill:#f08705;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+        </g>
+      </g>
+    </g>
+    <g
+       style="opacity:1;stop-opacity:1"
+       id="g443"
+       transform="matrix(0.39467541,0,0,-0.40021116,40.194973,128.95978)">
+      <g
+         id="g445"
+         clip-path="url(#clipPath449)">
+        <g
+           id="g451">
+          <g
+             id="g453" />
+          <g
+             id="g473">
+            <g
+               opacity="0.300003"
+               id="g471"
+               clip-path="url(#clipPath457)">
+              <g
+                 id="g469">
+                <g
+                   id="g467"
+                   clip-path="url(#clipPath461)">
+                  <g
+                     id="g465"
+                     transform="translate(34.3896,78.1763)">
+                    <path
+                       d="m 0.0 0.0 l 1.535 -47.371 l 33.208 -31.0 h 67.766 c 5.053 0.0 7.151                                              1.142 7.151 6.0 c 0.0 5.547 -0.056 47.189 -0.056 49.189 L 79.489 5.0 L                                              54.015 30.0 L 33.16 29.158 L 22.184 24.449 L 16.827 12.24 L 5.149 7.415 z"
+                       id="path463"
+                       inkscape:connector-curvature="0"
+                       style="fill:#DF6C0C;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+                  </g>
+                </g>
+              </g>
+            </g>
+          </g>
+        </g>
+      </g>
+    </g>
+    <g
+       transform="translate(1.0690781,-1.6704345)"
+       id="g171">
+      <path
+         fill="#FFFFFF"
+         d="m 61.50466,116.25924 c -0.972598,-0.26482 -1.51445,-1.10728 -1.516163,-2.35731 -5.48e-4,-0.39965 0.02599,-0.59114 0.117532,-0.84819 0.224401,-0.63009 0.818515,-1.10546 1.6003,-1.28043 0.389012,-0.0871 0.50886,-0.18055 0.50886,-0.39692 0,-0.0679 0.0463,-0.27009 0.102884,-0.44932 0.257075,-0.81423 0.733045,-1.493 1.241646,-1.77067 0.532297,-0.2906 0.80104,-0.35614 1.444952,-0.35237 0.914488,0.005 1.370726,0.22152 2.008844,0.95179 l 0.350943,0.40163 0.314396,-0.11856 c 1.521626,-0.57384 3.038536,0.40298 3.16081,2.03542 l 0.03345,0.44657 0.299643,0.11699 c 0.855734,0.3341 1.257956,1.03568 1.18504,2.06701 -0.04768,0.67445 -0.337064,1.21292 -0.795492,1.48023 l -0.215511,0.12567 -4.789484,0.0101 c -3.680475,0.008 -4.850426,-0.007 -5.052648,-0.0616 z"
+         id="path477"
+         inkscape:connector-curvature="0"
+         style="opacity:1;fill-opacity:1;fill-rule:nonzero;stroke-width:0.054942;stop-opacity:1"
+         stroke="none" />
+      <path
+         fill="#FFFFFF"
+         d="m 57.896521,115.72471 c -0.567793,-0.14705 -1.169426,-0.69353 -1.451547,-1.3185 -0.160034,-0.35451 -0.168534,-0.40665 -0.168534,-1.03382 0,-0.59654 0.01366,-0.69224 0.141057,-0.98844 0.268569,-0.62441 0.783145,-1.07559 1.428784,-1.25275 0.136259,-0.0374 0.264297,-0.0971 0.284528,-0.13262 0.02023,-0.0356 0.0427,-0.22921 0.04994,-0.43036 0.04494,-1.24928 0.797137,-2.35003 1.84745,-2.70354 0.567437,-0.19099 1.280316,-0.14401 1.897508,0.12505 0.195748,0.0853 0.173706,0.10363 0.587596,-0.48777 0.24477,-0.34975 0.739355,-0.78472 1.144199,-1.0063 0.436928,-0.23913 0.89134,-0.3493 1.434757,-0.34785 1.51881,0.004 2.827773,1.03928 3.3118,2.61922 0.154648,0.50481 0.146938,0.64618 -0.03547,0.65035 -0.07961,0.002 -0.307696,0.0496 -0.50687,0.10616 l -0.362133,0.10285 -0.330438,-0.36008 c -0.931677,-1.01526 -2.452187,-1.2347 -3.744775,-0.54045 -0.516397,0.27736 -0.931361,0.67554 -1.244805,1.19446 -0.223458,0.36995 -0.50837,1.06011 -0.50837,1.23146 0,0.12156 -0.09033,0.1823 -0.476085,0.32016 -1.194326,0.42682 -1.891424,1.41252 -1.890942,2.6738 1.58e-4,0.45907 0.10866,1.0208 0.259276,1.34252 0.05678,0.12128 0.08846,0.23661 0.0704,0.25628 -0.04618,0.0503 -1.531912,0.0334 -1.737325,-0.0198 z"
+         id="path478"
+         inkscape:connector-curvature="0"
+         style="opacity:1;fill-opacity:1;fill-rule:nonzero;stroke-width:0.054942;stop-opacity:1"
+         stroke="none" />
+    </g>
+    <g
+       style="opacity:1;stop-opacity:1"
+       id="g479"
+       transform="matrix(0.35277777,0,0,-0.35277777,43.336716,124.56217)">
+      <g
+         id="g481"
+         clip-path="url(#clipPath485)">
+        <g
+           id="g487"
+           transform="translate(69.2168,88.5005)">
+          <path
+             d="m 0,0 23.166,-22.5 v -31.834 c 0,0 1.75,-18 -14.166,-18 h -32.334 c 0,0 -12.833,-0.666                          -12.833,17.667 v 39.333 c 0,0 -1.5,15.334 18.333,15.334 z"
+             id="path489"
+             inkscape:connector-curvature="0"
+             style="fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+        </g>
+        <g
+           id="g491"
+           transform="translate(70.3828,86.1665)">
+          <path
+             d="M 0,0 V -19 H 20"
+             id="path493"
+             inkscape:connector-curvature="0"
+             style="fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+        </g>
+        <g
+           id="g495"
+           transform="translate(52.0498,89.0005)">
+          <path
+             d="M 0,0 V 4.166 C 0,4.166 -1.5,19.5 18.333,19.5 H 35.167 L 59.333,-4 v -30.834 c 0,0                          1.584,-18 -14.166,-18 H 41.75"
+             id="path497"
+             inkscape:connector-curvature="0"
+             style="fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+        </g>
+        <g
+           id="g499"
+           transform="translate(88.3828,106.1665)">
+          <path
+             d="M 0,0 V -20 H 22"
+             id="path501"
+             inkscape:connector-curvature="0"
+             style="fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
+        </g>
+        <g
+           id="g503"
+           transform="translate(131.9463,30.1675)">
+          <path
+             d="M 0,0 C 0,4.648 -1.884,8.856 -4.931,11.902 L 0,16.833 H -12.625 V 4.208 l 4.719,4.718 c                          2.285,-2.285 3.698,-5.442 3.698,-8.927 0,-6.972 -5.652,-12.625 -12.625,-12.625 -3.771,0                          -7.155,1.654 -9.469,4.274 l -3.156,-2.783 c 3.085,-3.495 7.598,-5.699 12.625,-5.699 9.297,0                          16.833,7.536 16.833,16.833 z"
+             id="path505"
+             inkscape:connector-curvature="0"
+             style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+        </g>
+      </g>
+    </g>
+    <path
+       d="m 46.472771,80.676567 c 0,-1.553617 0.08324,-1.986187 0.419994,-2.182622 0.375682,-0.219139              2.99484,-0.244989 24.82334,-0.244989 22.352122,0 24.434178,0.02162 24.770159,0.257254 0.254956,0.178806              0.393835,0.844389 0.455428,2.182623 l 0.08861,1.925369 H 71.751538 46.472771 Z"
+       id="path578"
+       inkscape:connector-curvature="0"
+       style="fill:#f08705;fill-opacity:1;stroke:none;stroke-width:0.202075" />
+    <path
+       d="m 174.8888,312.04543 0.0745,-12.18496 0.73521,-1.32692 c 0.77754,-1.40333 1.81083,-2.33651              3.36863,-3.04229 0.88532,-0.40111 6.84481,-0.42902 91.60811,-0.42902 86.4344,0 90.71567,0.021              91.82982,0.45102 0.64275,0.24806 1.38142,0.69349 1.6415,0.98984 0.46375,0.52843 0.46324,0.53529              -0.0266,0.35558 -2.85495,-1.04739 -18.77745,-1.21625 -102.16332,-1.08343 -81.43144,0.12971 -83.16894,0.16117              -84.76601,1.53492 -1.30824,1.1253 -1.42301,2.25635 -1.53365,15.11407 -0.0874,10.16237 -0.15318,11.80616              -0.47211,11.80616 -0.32156,0 -0.36067,-1.60965 -0.29605,-12.18497 z"
+       id="path582"
+       inkscape:connector-curvature="0"
+       style="fill:#F08705;fill-opacity:1;stroke:none"
+       transform="scale(0.26458333)" />
+    <path
+       d="m 366.30132,306.47964 c -0.059,-2.50499 -0.52226,-6.33544 -0.92996,-7.69012 -0.46311,-1.5388              -0.29848,-1.6474 0.42346,-0.27935 0.50302,0.95321 0.59134,1.54666 0.67071,4.50702 0.0503,1.8751              0.043,3.80701 -0.0162,4.29315 -0.063,0.51716 -0.12437,0.1725 -0.14802,-0.8307 z"
+       id="path600"
+       inkscape:connector-curvature="0"
+       style="fill:#F08705;fill-opacity:1;stroke: none"
+       transform="scale(0.26458333)" />
+  </g>
+</svg>
diff --git a/src/main/webapp/js/app.min.js b/src/main/webapp/js/app.min.js
index 2c2d298ae5faf1e88730ab54380b8df91614e32c..ea6b8aecb89aea6a260970e67521c86ccf1f24f4 100644
--- a/src/main/webapp/js/app.min.js
+++ b/src/main/webapp/js/app.min.js
@@ -251,7 +251,7 @@ function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments
 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: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};
+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};
 mxEventSource.prototype.fireEvent=function(a,b){if(null!=this.eventListeners&&this.isEventsEnabled()){null==a&&(a=new mxEventObject);null==b&&(b=this.getEventSource());null==b&&(b=this);for(var c=[b,a],d=0;d<this.eventListeners.length;d+=2){var e=this.eventListeners[d];null!=e&&e!=a.getName()||this.eventListeners[d+1].apply(this,c)}}};
@@ -3493,36 +3493,35 @@ a,"","Switch 24 port L3 Alternative",!1,null,this.getTagsForStencil("switch","sw
 "Switch_48_port_L2_POE.svg;",1.3*a,.88*a,"","Switch 48 port L2 POE",!1,null,this.getTagsForStencil("switch","switch 48 port l2 poe",b).join(" ")),this.createVertexTemplateEntry(c+"Switch_48_port_L3.svg;",1.3*a,.88*a,"","Switch 48 port L3",!1,null,this.getTagsForStencil("switch","switch 48 port l3",b).join(" ")),this.createVertexTemplateEntry(c+"Switch_48_port_L3_POE.svg;",1.3*a,.88*a,"","Switch 48 port L3 POE",!1,null,this.getTagsForStencil("switch","switch 48 port l3 poe",b).join(" ")),this.createVertexTemplateEntry(c+
 "Switch_52_port_L3.svg;",1.3*a,.88*a,"","Switch 52 port L3",!1,null,this.getTagsForStencil("switch","switch 52 port l3",b).join(" "))];this.addPalette("allied_telesisSwitch","Allied Telesis / Switch",!1,mxUtils.bind(this,function(a){for(var c=0;c<d.length;c++)a.appendChild(d[c](a))}))};Sidebar.prototype.addAlliedTelesisWirelessPalette=function(a,b,e,c){c+="wireless/";var d=[this.createVertexTemplateEntry(c+"Access_Point_Indoor.svg;",.61*a,.91*a,"","Access Point Indoor",!1,null,this.getTagsForStencil("wireless",
 "access point indoor",b).join(" ")),this.createVertexTemplateEntry(c+"Access_Point_Outdoor.svg;",.43*a,1.66*a,"","Access Point Outdoor",!1,null,this.getTagsForStencil("wireless","access point outdoor",b).join(" ")),this.createVertexTemplateEntry(c+"Laptop_Wireless.svg;",.96*a,.79*a,"","Laptop Wireless",!1,null,this.getTagsForStencil("wireless","laptop wireless",b).join(" "))];this.addPalette("allied_telesisWireless","Allied Telesis / Wireless",!1,mxUtils.bind(this,function(a){for(var c=0;c<d.length;c++)a.appendChild(d[c](a))}))}})();(function(){Sidebar.prototype.addAndroidPalette=function(){var a=this,b=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=1;shape=mxgraph.android.",e=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=1;strokeColor=none;shape=",c=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shadow=0;dashed=0;strokeWidth=2;shape=mxgraph.android.",
-d=[this.createVertexTemplateEntry(b+"phone2;fillColor=#ffffff;strokeColor=#c0c0c0;",200,390,"","Phone",null,null,"android phone mobile portrait"),this.createVertexTemplateEntry(b+"phone2;fillColor=#ffffff;strokeColor=#c0c0c0;direction=south;",390,200,"","Phone (landscape)",null,null,"android phone mobile landscape"),this.createVertexTemplateEntry(b+"tab2;fillColor=#ffffff;strokeColor=#c0c0c0;",472,686,"","Tab",null,null,"android tab tablet portrait"),this.createVertexTemplateEntry(b+"tab2;fillColor=#ffffff;strokeColor=#c0c0c0;direction=north;",
-686,472,"","Tab (landscape)",null,null,"android tab tablet landscape"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar;fillColor=#1A1A1A;strokeColor=#c0c0c0;strokeWidth=2;fontColor=#FFFFFF;",185,30,"","Action Bar",null,null,"android action bar dark portrait"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar;fillColor=#E6E6E6;strokeColor=#c0c0c0;strokeWidth=2;",185,30,"","Action Bar (Bright)",
-null,null,"android action bar bright portrait"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar_landscape;fillColor=#1A1A1A;strokeColor=#c0c0c0;strokeWidth=2;fontColor=#FFFFFF;",320,30,"","Action Bar Landscape",null,null,"android action bar landscape dark"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar_landscape;fillColor=#E6E6E6;strokeColor=#c0c0c0;strokeWidth=2;",320,30,"","Action Bar Landscape (Bright)",
-null,null,"android action bar bright landscape"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#666666;align=center;strokeColor=#4D4D4D;fontColor=#ffffff;",105.5,16.88,"Normal","Button (Normal)",null,null,"android button normal"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#666666;align=center;strokeColor=#999999;fontColor=#ffffff;",105.5,16.88,"Focused","Button (Focused)",null,
-null,"android button focused"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#999999;align=center;strokeColor=#666666;fontColor=#ffffff;strokeWidth=2;",105.5,16.88,"Pressed","Button (Pressed)",null,null,"android button pressed"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#333333;align=center;strokeColor=#4D4D4D;fontColor=#666666;",105.5,16.88,"Focused disabled","Button (Focused, Disabled)",
-null,null,"android button focused disabled"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#333333;align=center;strokeColor=#333333;fontColor=#666666;",105.5,16.88,"Disabled","Button (Disabled)",null,null,"android button disabled"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#E6E6E6;align=center;strokeColor=#E6E6E6;fontColor=#333333;",105.5,16.88,"Normal","Button (Normal, Bright)",
-null,null,"android button normal bright"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#E6E6E6;align=center;strokeColor=#B3B3B3;fontColor=#333333;",105.5,16.88,"Focused","Button (Focused, Bright)",null,null,"android button focused bright"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#B3B3B3;align=center;strokeColor=#E6E6E6;fontColor=#333333;strokeWidth=2;",105.5,16.88,"Pressed",
-"Button (Pressed, Bright)",null,null,"android button pressed bright"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#F4F4F4;align=center;strokeColor=#E6E6E6;fontColor=#CCCCCC;",105.5,16.88,"Focused disabled","Button (Focused, Disabled, Bright)",null,null,"android button focused disabled bright"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#F4F4F4;align=center;strokeColor=#F4F4F4;fontColor=#CCCCCC;",
-105.5,16.88,"Disabled","Button (Disabled, Bright)",null,null,"android button disabled bright"),this.addEntry("android checkboxes checkbox",function(){var c=new mxCell("",new mxGeometry(0,0,165,50),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=transparent;strokeColor=#33b5e5;fillColor=#ffffff");c.vertex=!0;var d=new mxCell("Setting 1",new mxGeometry(0,0,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");
-d.vertex=!0;c.insert(d);var b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;resizable=0;");d.vertex=!0;b.insert(d);d=new mxCell("Setting 2",new mxGeometry(0,12.5,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");
-d.vertex=!0;c.insert(d);b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;resizable=0;");d.vertex=!0;b.insert(d);d=new mxCell("Setting 3",new mxGeometry(0,25,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");
-d.vertex=!0;c.insert(d);b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.checkbox;rSize=0;resizable=0;");d.vertex=!0;b.insert(d);d=new mxCell("Setting 4",new mxGeometry(0,37.5,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");
-d.vertex=!0;c.insert(d);b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;resizable=0;");d.vertex=!0;b.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Checkboxes")}),this.addEntry("android radiobuttons radiobutton",
-function(){var c=new mxCell("",new mxGeometry(0,0,165,50),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=transparent;strokeColor=#33b5e5;fillColor=#ffffff;");c.vertex=!0;var d=new mxCell("Option 1",new mxGeometry(0,0,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");d.vertex=!0;c.insert(d);var b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");
-b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=ellipse;resizable=0;html=1;");d.vertex=!0;b.insert(d);d=new mxCell("Option 2",new mxGeometry(0,12.5,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");d.vertex=!0;c.insert(d);b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");
-b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=ellipse;resizable=0;html=1;");d.vertex=!0;b.insert(d);d=new mxCell("Option 3",new mxGeometry(0,25,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");d.vertex=!0;c.insert(d);b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");
-b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"shape=ellipse;strokeColor=inherit;resizable=0;fillColor=#33b5e5;html=1;");d.vertex=!0;b.insert(d);d=new mxCell("Option 4",new mxGeometry(0,37.5,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");d.vertex=!0;c.insert(d);b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");
-b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=ellipse;resizable=0;html=1;");d.vertex=!0;b.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Radiobuttons")}),this.createVertexTemplateEntry(b+"contact_badge_focused;",40,40,"","Contact Badge Focused",null,null,"android contact badge focused"),this.createVertexTemplateEntry(b+"contact_badge_focused;",60,60,"","Contact Badge Focused",
-null,null,"android contact badge focused"),this.createVertexTemplateEntry(b+"contact_badge_normal;",40,40,"","Contact Badge Normal",null,null,"android contact badge normal"),this.createVertexTemplateEntry(b+"contact_badge_normal;",60,60,"","Contact Badge Normal",null,null,"android contact badge normal"),this.createVertexTemplateEntry(b+"contact_badge_pressed;",40,40,"","Contact Badge Pressed",null,null,"android contact badge pressed"),this.createVertexTemplateEntry(b+"contact_badge_pressed;",60,60,
-"","Contact Badge Pressed",null,null,"android contact badge pressed"),this.addEntry("android contextual action bar dark portrait",function(){var c=new mxCell("",new mxGeometry(0,0,185,30),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_action_bar;fillColor=#002E3E;");c.vertex=!0;var d=new mxCell("Action",new mxGeometry(40,0,100,30),"shape=transparent;align=left;fontStyle=1;fontColor=#ffffff;");d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,
-c.geometry.height,"Contextual Action Bar")}),this.addEntry("android contextual action bar bright portrait",function(){var c=new mxCell("",new mxGeometry(0,0,185,30),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_action_bar_white;fillColor=#E6E6E6;");c.vertex=!0;var d=new mxCell("Action",new mxGeometry(40,0,100,30),"shape=transparent;align=left;fontStyle=1;");d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Contextual Action Bar (Bright)")}),
-this.addEntry("android contextual action bar landscape dark",function(){var c=new mxCell("",new mxGeometry(0,0,320,30),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_action_bar_landscape;fillColor=#002E3E;");c.vertex=!0;var d=new mxCell("Action",new mxGeometry(40,0,100,30),"shape=transparent;align=left;fontStyle=1;fontColor=#ffffff;");d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Contextual Action Bar Landscape")}),
-this.addEntry("android contextual action bar landscape bright",function(){var c=new mxCell("",new mxGeometry(0,0,320,30),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_action_bar_landscape_white;fillColor=#E6E6E6;");c.vertex=!0;var d=new mxCell("Action",new mxGeometry(40,0,100,30),"shape=transparent;align=left;fontStyle=1;");d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Contextual Action Bar Landscape (Bright)")}),
-this.addEntry("android contextual split action bar dark",function(){var c=new mxCell("",new mxGeometry(0,0,185,70),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_split_action_bar;fillColor=#002E3E;fontColor=#FFFFFF;");c.vertex=!0;var d=new mxCell("Contextual",new mxGeometry(0,0,185,30),"shape=transparent;fontStyle=1;fontColor=#ffffff;");d.vertex=!0;c.insert(d);d=new mxCell("Action",new mxGeometry(0,40,185,30),"shape=transparent;fontStyle=1;fontColor=#ffffff;");d.vertex=!0;
-c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Contextual Split Action Bar")}),this.addEntry("android contextual split action bar bright",function(){var c=new mxCell("",new mxGeometry(0,0,185,70),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_split_action_bar_white;fillColor=#E6E6E6;");c.vertex=!0;var d=new mxCell("Contextual",new mxGeometry(0,0,185,30),"shape=transparent;fontStyle=1;");d.vertex=!0;c.insert(d);d=new mxCell("Action",
-new mxGeometry(0,40,185,30),"shape=transparent;fontStyle=1;");d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Contextual Split Action Bar (Bright)")}),this.addEntry("android contextual split action bar landscape dark",function(){var c=new mxCell("",new mxGeometry(0,0,320,70),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_split_action_bar_landscape;fillColor=#002E3E;fontColor=#FFFFFF;");c.vertex=!0;var d=new mxCell("Contextual",
-new mxGeometry(0,0,320,30),"shape=transparent;fontStyle=1;fontColor=#ffffff;");d.vertex=!0;c.insert(d);d=new mxCell("Action",new mxGeometry(0,40,320,30),"shape=transparent;fontStyle=1;fontColor=#ffffff;");d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Contextual Split Action Bar Landscape")}),this.addEntry("android contextual split action bar landscape bright",function(){var c=new mxCell("",new mxGeometry(0,0,320,70),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_split_action_bar_landscape_white;fillColor=#E6E6E6;");
-c.vertex=!0;var d=new mxCell("Contextual",new mxGeometry(0,0,320,30),"shape=transparent;fontStyle=1;");d.vertex=!0;c.insert(d);d=new mxCell("Action",new mxGeometry(0,40,320,30),"shape=transparent;fontStyle=1;");d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Contextual Split Action Bar Landscape (Bright)")}),this.createVertexTemplateEntry(b+"indeterminate_progress_bar;strokeColor=#33B5E5;pointerEvents=1",149,5,"","Indeterminate Progress Bar",
-null,null,"android indeterminate progress bar"),this.createVertexTemplateEntry(b+"indeterminateSpinner;",50,50,"","Indeterminate Spinner",null,null,"android indeterminate spinner"),this.createVertexTemplateEntry(b+"keyboard;",185,100,"","Keyboard",null,null,"android keyboard"),this.addEntry("android menu bar",function(){var c=new mxCell("",new mxGeometry(0,0,185,50),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;strokeColor=#888888;fillColor=#444444;");c.vertex=!0;var d=
-new mxCell("Menu Item 1",new mxGeometry(0,0,185,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;align=left;spacingLeft=10;fontSize=8;fontColor=#ffffff;");d.vertex=!0;c.insert(d);d=new mxCell("Menu Item 2",new mxGeometry(0,12.5,185,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;align=left;spacingLeft=10;fontSize=8;fontColor=#ffffff;");
+d=[this.createVertexTemplateEntry(b+"phone2;strokeColor=#c0c0c0;",200,390,"","Phone",null,null,"android phone mobile portrait"),this.createVertexTemplateEntry(b+"phone2;strokeColor=#c0c0c0;direction=south;",390,200,"","Phone (landscape)",null,null,"android phone mobile landscape"),this.createVertexTemplateEntry(b+"tab2;strokeColor=#c0c0c0;",472,686,"","Tab",null,null,"android tab tablet portrait"),this.createVertexTemplateEntry(b+"tab2;strokeColor=#c0c0c0;direction=north;",686,472,"","Tab (landscape)",
+null,null,"android tab tablet landscape"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar;fillColor=#1A1A1A;strokeColor=#c0c0c0;strokeWidth=2;fontColor=#FFFFFF;",185,30,"","Action Bar",null,null,"android action bar dark portrait"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar;fillColor=#E6E6E6;strokeColor=#c0c0c0;strokeWidth=2;",185,30,"","Action Bar (Bright)",null,null,"android action bar bright portrait"),
+this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar_landscape;fillColor=#1A1A1A;strokeColor=#c0c0c0;strokeWidth=2;fontColor=#FFFFFF;",320,30,"","Action Bar Landscape",null,null,"android action bar landscape dark"),this.createVertexTemplateEntry("strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.action_bar_landscape;fillColor=#E6E6E6;strokeColor=#c0c0c0;strokeWidth=2;",320,30,"","Action Bar Landscape (Bright)",null,null,"android action bar bright landscape"),
+this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#666666;align=center;strokeColor=#4D4D4D;fontColor=#ffffff;",105.5,16.88,"Normal","Button (Normal)",null,null,"android button normal"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#666666;align=center;strokeColor=#999999;fontColor=#ffffff;",105.5,16.88,"Focused","Button (Focused)",null,null,"android button focused"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#999999;align=center;strokeColor=#666666;fontColor=#ffffff;strokeWidth=2;",
+105.5,16.88,"Pressed","Button (Pressed)",null,null,"android button pressed"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#333333;align=center;strokeColor=#4D4D4D;fontColor=#666666;",105.5,16.88,"Focused disabled","Button (Focused, Disabled)",null,null,"android button focused disabled"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#333333;align=center;strokeColor=#333333;fontColor=#666666;",
+105.5,16.88,"Disabled","Button (Disabled)",null,null,"android button disabled"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#E6E6E6;align=center;strokeColor=#E6E6E6;fontColor=#333333;",105.5,16.88,"Normal","Button (Normal, Bright)",null,null,"android button normal bright"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#E6E6E6;align=center;strokeColor=#B3B3B3;fontColor=#333333;",
+105.5,16.88,"Focused","Button (Focused, Bright)",null,null,"android button focused bright"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#B3B3B3;align=center;strokeColor=#E6E6E6;fontColor=#333333;strokeWidth=2;",105.5,16.88,"Pressed","Button (Pressed, Bright)",null,null,"android button pressed bright"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#F4F4F4;align=center;strokeColor=#E6E6E6;fontColor=#CCCCCC;",
+105.5,16.88,"Focused disabled","Button (Focused, Disabled, Bright)",null,null,"android button focused disabled bright"),this.createVertexTemplateEntry("rounded=1;html=1;shadow=0;dashed=0;whiteSpace=wrap;fontSize=10;fillColor=#F4F4F4;align=center;strokeColor=#F4F4F4;fontColor=#CCCCCC;",105.5,16.88,"Disabled","Button (Disabled, Bright)",null,null,"android button disabled bright"),this.addEntry("android checkboxes checkbox",function(){var c=new mxCell("",new mxGeometry(0,0,165,50),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=transparent;strokeColor=#33b5e5");
+c.vertex=!0;var d=new mxCell("Setting 1",new mxGeometry(0,0,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");d.vertex=!0;c.insert(d);var b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;resizable=0;");
+d.vertex=!0;b.insert(d);d=new mxCell("Setting 2",new mxGeometry(0,12.5,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");d.vertex=!0;c.insert(d);b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;resizable=0;");
+d.vertex=!0;b.insert(d);d=new mxCell("Setting 3",new mxGeometry(0,25,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");d.vertex=!0;c.insert(d);b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.checkbox;rSize=0;resizable=0;");
+d.vertex=!0;b.insert(d);d=new mxCell("Setting 4",new mxGeometry(0,37.5,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");d.vertex=!0;c.insert(d);b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;resizable=0;");
+d.vertex=!0;b.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Checkboxes")}),this.addEntry("android radiobuttons radiobutton",function(){var c=new mxCell("",new mxGeometry(0,0,165,50),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=transparent;strokeColor=#33b5e5");c.vertex=!0;var d=new mxCell("Option 1",new mxGeometry(0,0,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");
+d.vertex=!0;c.insert(d);var b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=ellipse;resizable=0;html=1;");d.vertex=!0;b.insert(d);d=new mxCell("Option 2",new mxGeometry(0,12.5,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");
+d.vertex=!0;c.insert(d);b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=ellipse;resizable=0;html=1;");d.vertex=!0;b.insert(d);d=new mxCell("Option 3",new mxGeometry(0,25,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");
+d.vertex=!0;c.insert(d);b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"shape=ellipse;strokeColor=inherit;resizable=0;fillColor=#33b5e5;html=1;");d.vertex=!0;b.insert(d);d=new mxCell("Option 4",new mxGeometry(0,37.5,165,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;");
+d.vertex=!0;c.insert(d);b=new mxCell("",new mxGeometry(0,6,0,0),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=transparent;");b.vertex=!0;d.insert(b);d=new mxCell("",new mxGeometry(2.5,-2.5,5,5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;shape=ellipse;resizable=0;html=1;");d.vertex=!0;b.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Radiobuttons")}),this.createVertexTemplateEntry(b+"contact_badge_focused;",40,40,"","Contact Badge Focused",
+null,null,"android contact badge focused"),this.createVertexTemplateEntry(b+"contact_badge_focused;",60,60,"","Contact Badge Focused",null,null,"android contact badge focused"),this.createVertexTemplateEntry(b+"contact_badge_normal;",40,40,"","Contact Badge Normal",null,null,"android contact badge normal"),this.createVertexTemplateEntry(b+"contact_badge_normal;",60,60,"","Contact Badge Normal",null,null,"android contact badge normal"),this.createVertexTemplateEntry(b+"contact_badge_pressed;",40,40,
+"","Contact Badge Pressed",null,null,"android contact badge pressed"),this.createVertexTemplateEntry(b+"contact_badge_pressed;",60,60,"","Contact Badge Pressed",null,null,"android contact badge pressed"),this.addEntry("android contextual action bar dark portrait",function(){var c=new mxCell("",new mxGeometry(0,0,185,30),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_action_bar;fillColor=#002E3E;");c.vertex=!0;var d=new mxCell("Action",new mxGeometry(40,0,100,30),"shape=transparent;align=left;fontStyle=1;fontColor=#ffffff;");
+d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Contextual Action Bar")}),this.addEntry("android contextual action bar bright portrait",function(){var c=new mxCell("",new mxGeometry(0,0,185,30),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_action_bar_white;fillColor=#E6E6E6;");c.vertex=!0;var d=new mxCell("Action",new mxGeometry(40,0,100,30),"shape=transparent;align=left;fontStyle=1;");d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],
+c.geometry.width,c.geometry.height,"Contextual Action Bar (Bright)")}),this.addEntry("android contextual action bar landscape dark",function(){var c=new mxCell("",new mxGeometry(0,0,320,30),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_action_bar_landscape;fillColor=#002E3E;");c.vertex=!0;var d=new mxCell("Action",new mxGeometry(40,0,100,30),"shape=transparent;align=left;fontStyle=1;fontColor=#ffffff;");d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],
+c.geometry.width,c.geometry.height,"Contextual Action Bar Landscape")}),this.addEntry("android contextual action bar landscape bright",function(){var c=new mxCell("",new mxGeometry(0,0,320,30),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_action_bar_landscape_white;fillColor=#E6E6E6;");c.vertex=!0;var d=new mxCell("Action",new mxGeometry(40,0,100,30),"shape=transparent;align=left;fontStyle=1;");d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,
+c.geometry.height,"Contextual Action Bar Landscape (Bright)")}),this.addEntry("android contextual split action bar dark",function(){var c=new mxCell("",new mxGeometry(0,0,185,70),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_split_action_bar;fillColor=#002E3E;fontColor=#FFFFFF;");c.vertex=!0;var d=new mxCell("Contextual",new mxGeometry(0,0,185,30),"shape=transparent;fontStyle=1;fontColor=#ffffff;");d.vertex=!0;c.insert(d);d=new mxCell("Action",new mxGeometry(0,40,185,30),
+"shape=transparent;fontStyle=1;fontColor=#ffffff;");d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Contextual Split Action Bar")}),this.addEntry("android contextual split action bar bright",function(){var c=new mxCell("",new mxGeometry(0,0,185,70),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_split_action_bar_white;fillColor=#E6E6E6;");c.vertex=!0;var d=new mxCell("Contextual",new mxGeometry(0,0,185,30),"shape=transparent;fontStyle=1;");
+d.vertex=!0;c.insert(d);d=new mxCell("Action",new mxGeometry(0,40,185,30),"shape=transparent;fontStyle=1;");d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Contextual Split Action Bar (Bright)")}),this.addEntry("android contextual split action bar landscape dark",function(){var c=new mxCell("",new mxGeometry(0,0,320,70),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_split_action_bar_landscape;fillColor=#002E3E;fontColor=#FFFFFF;");
+c.vertex=!0;var d=new mxCell("Contextual",new mxGeometry(0,0,320,30),"shape=transparent;fontStyle=1;fontColor=#ffffff;");d.vertex=!0;c.insert(d);d=new mxCell("Action",new mxGeometry(0,40,320,30),"shape=transparent;fontStyle=1;fontColor=#ffffff;");d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Contextual Split Action Bar Landscape")}),this.addEntry("android contextual split action bar landscape bright",function(){var c=new mxCell("",new mxGeometry(0,
+0,320,70),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.contextual_split_action_bar_landscape_white;fillColor=#E6E6E6;");c.vertex=!0;var d=new mxCell("Contextual",new mxGeometry(0,0,320,30),"shape=transparent;fontStyle=1;");d.vertex=!0;c.insert(d);d=new mxCell("Action",new mxGeometry(0,40,320,30),"shape=transparent;fontStyle=1;");d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Contextual Split Action Bar Landscape (Bright)")}),
+this.createVertexTemplateEntry(b+"indeterminate_progress_bar;strokeColor=#33B5E5;pointerEvents=1",149,5,"","Indeterminate Progress Bar",null,null,"android indeterminate progress bar"),this.createVertexTemplateEntry(b+"indeterminateSpinner;",50,50,"","Indeterminate Spinner",null,null,"android indeterminate spinner"),this.createVertexTemplateEntry(b+"keyboard;",185,100,"","Keyboard",null,null,"android keyboard"),this.addEntry("android menu bar",function(){var c=new mxCell("",new mxGeometry(0,0,185,
+50),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;strokeColor=#888888;fillColor=#444444;");c.vertex=!0;var d=new mxCell("Menu Item 1",new mxGeometry(0,0,185,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;align=left;spacingLeft=10;fontSize=8;fontColor=#ffffff;");d.vertex=!0;c.insert(d);d=new mxCell("Menu Item 2",new mxGeometry(0,12.5,185,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;align=left;spacingLeft=10;fontSize=8;fontColor=#ffffff;");
 d.vertex=!0;c.insert(d);d=new mxCell("Menu Item 3",new mxGeometry(0,25,185,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;align=left;spacingLeft=10;fontSize=8;fontColor=#ffffff;");d.vertex=!0;c.insert(d);d=new mxCell("Menu Item 4",new mxGeometry(0,37.5,185,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;align=left;spacingLeft=10;fontSize=8;fontColor=#ffffff;");
 d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Menu bar")}),this.addEntry("android menu bar",function(){var c=new mxCell("",new mxGeometry(0,0,185,50),"strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;strokeColor=#eeeeee;fillColor=#ffffff;gradientColor=none;");c.vertex=!0;var d=new mxCell("Menu Item 1",new mxGeometry(0,0,185,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;align=left;spacingLeft=10;fontSize=8;fontColor=#333333;");
 d.vertex=!0;c.insert(d);d=new mxCell("Menu Item 2",new mxGeometry(0,12.5,185,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;align=left;spacingLeft=10;fontSize=8;fontColor=#333333;");d.vertex=!0;c.insert(d);d=new mxCell("Menu Item 3",new mxGeometry(0,25,185,12.5),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;strokeWidth=1;html=1;shadow=0;dashed=0;shape=mxgraph.android.rrect;rSize=0;align=left;spacingLeft=10;fontSize=8;fontColor=#333333;");
@@ -3590,67 +3589,66 @@ this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=open;elbo
 this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ccccff;shape=mxgraph.archimate.motiv;motivType=goal",100,75,"","Goal",null,null,this.getTagsForStencil("mxgraph.archimate","","archimate goal").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ccccff;shape=mxgraph.archimate.motiv;motivType=req",100,75,"","Requirement",null,null,this.getTagsForStencil("mxgraph.archimate","","archimate goal").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ccccff;shape=mxgraph.archimate.motiv;motivType=const",
 100,75,"","Constraint",null,null,this.getTagsForStencil("mxgraph.archimate","","archimate constraint").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ccccff;shape=mxgraph.archimate.motiv;motivType=princ",100,75,"","Principle",null,null,this.getTagsForStencil("mxgraph.archimate","","archimate principle").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffe0e0;shape=mxgraph.archimate.rounded=1",100,75,"","Work Package",
 null,null,this.getTagsForStencil("mxgraph.archimate","","archimate work package").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffe0e0;shape=mxgraph.archimate.representation",100,75,"","Deliverable",null,null,this.getTagsForStencil("mxgraph.archimate","","archimate deliverable").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ff99;shape=mxgraph.archimate.tech;techType=plateau",100,75,"","Plateau",null,
-null,this.getTagsForStencil("mxgraph.archimate","","archimate plateau").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ff99;shape=mxgraph.archimate.gap",100,75,"","Gap",null,null,this.getTagsForStencil("mxgraph.archimate","","archimate gap").join(" "))])}})();(function(){Sidebar.prototype.addArchimate3Palette=function(){this.addArchimate3ApplicationPalette();this.addArchimate3BusinessPalette();this.addArchimate3CompositePalette();this.addArchimate3ImplementationAndMigrationPalette();this.addArchimate3MotivationPalette();this.addArchimate3PhysicalPalette();this.addArchimate3RelationshipsPalette();this.addArchimate3StrategyPalette();this.addArchimate3TechnologyPalette()};Sidebar.prototype.addArchimate3ApplicationPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=comp;archiType=square;",
-150,75,"","Application Component",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer component").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.component;",70,75,"","Component",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer component").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=collab;archiType=square;",
-150,75,"","Application Collaboration",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer collaboration").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.collaboration;",60,35,"","Collaboration",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer collaboration").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=interface;archiType=square;",
-150,75,"","Application Interface",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer component").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.interface;",70,35,"","Interface",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer interface").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=proc;archiType=rounded;",
-150,75,"","Application Process",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer process").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.process;",150,75,"","Process",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer process").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=func;archiType=rounded;",
-150,75,"","Application Function",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer function").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.function;",75,75,"","Function",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer function").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=interaction;archiType=rounded;",
-150,75,"","Application Interaction",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer interaction").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.interaction;",75,75,"","Interaction",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer interaction").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=serv;archiType=rounded",
-150,75,"","Application Service",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer service").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.service;",60,35,"","Service",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer service").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=event;archiType=rounded",
-150,75,"","Application Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.event;",60,35,"","Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.businessObject;overflow=fill",
+null,this.getTagsForStencil("mxgraph.archimate","","archimate plateau").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ff99;shape=mxgraph.archimate.gap",100,75,"","Gap",null,null,this.getTagsForStencil("mxgraph.archimate","","archimate gap").join(" "))])}})();(function(){Sidebar.prototype.addArchimate3Palette=function(){this.addArchimate3ApplicationPalette();this.addArchimate3BusinessPalette();this.addArchimate3CompositePalette();this.addArchimate3ImplementationAndMigrationPalette();this.addArchimate3MotivationPalette();this.addArchimate3PhysicalPalette();this.addArchimate3RelationshipsPalette();this.addArchimate3StrategyPalette();this.addArchimate3TechnologyPalette()};Sidebar.prototype.addArchimate3ApplicationPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.application;appType=comp;archiType=square;",
+150,75,"","Application Component",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer component").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.component;",70,75,"","Component",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer component").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.application;appType=collab;archiType=square;",
+150,75,"","Application Collaboration",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer collaboration").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.collaboration;",60,35,"","Collaboration",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer collaboration").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.application;appType=interface;archiType=square;",
+150,75,"","Application Interface",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer component").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.interface;",70,35,"","Interface",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer interface").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.application;appType=proc;archiType=rounded;",
+150,75,"","Application Process",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer process").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.process;",150,75,"","Process",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer process").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.application;appType=func;archiType=rounded;",
+150,75,"","Application Function",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer function").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.function;",75,75,"","Function",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer function").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.application;appType=interaction;archiType=rounded;",
+150,75,"","Application Interaction",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer interaction").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.interaction;",75,75,"","Interaction",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer interaction").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.application;appType=serv;archiType=rounded",
+150,75,"","Application Service",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer service").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.service;",60,35,"","Service",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer service").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.application;appType=event;archiType=rounded",
+150,75,"","Application Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.event;",60,35,"","Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.businessObject;overflow=fill",
 150,75,'<table cellpadding="0" cellspacing="0" style="font-size:1em;width:100%;height:100%;"><tr style="height:20px;"><td align="center"></td></tr><tr><td align="left" valign="top" style="padding:4px;"></td></tr></table>',"Data Object",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate application layer data object").join(" "))];this.addPalette("archimate3Application","Archimate 3.0 / Application",!1,mxUtils.bind(this,function(b){for(var e=0;e<a.length;e++)b.appendChild(a[e](b))}))};
-Sidebar.prototype.addArchimate3BusinessPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=actor;archiType=square;",150,75,"","Business Actor",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer actor").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.archimate3.actor;",
-50,95,"","Actor",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer actor").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=role;archiType=square;",150,75,"","Business Role",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer role").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.role;",
-85,50,"","Role",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer role").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=collab;archiType=square;",150,75,"","Business Collaboration",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer collaboration").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.collaboration;",
-60,35,"","Collaboration",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer collaboration").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=interface;archiType=square;",150,75,"","Business Interface",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer component").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.interface;",
-70,35,"","Interface",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer interface").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=proc;archiType=rounded;",150,75,"","Business Process",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer process").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.process;",
-150,75,"","Process",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer process").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=func;archiType=rounded;",150,75,"","Business Function",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer function").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.function;",
-75,75,"","Function",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer function").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=interaction;archiType=rounded;",150,75,"","Business Interaction",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer interaction").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.interaction;",
-75,75,"","Interaction",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer interaction").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=serv;archiType=rounded;",150,75,"","Business Service",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer service").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.service;",
-60,35,"","Service",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer service").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=event;archiType=rounded;",150,75,"","Application Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.event;",
-60,35,"","Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.businessObject;overflow=fill;",150,75,'<table cellpadding="0" cellspacing="0" style="font-size:1em;width:100%;height:100%;"><tr style="height:20px;"><td align="center"></td></tr><tr><td align="left" valign="top" style="padding:4px;"></td></tr></table>',
-"Business Object",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer data object").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.contract;",150,75,"","Contract",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer contract").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.product;",
-150,75,"","Product",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer product").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.representation;",150,90,"","Representation",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer representation").join(" "))];this.addPalette("archimate3Business","Archimate 3.0 / Business",!1,mxUtils.bind(this,function(b){for(var e=
-0;e<a.length;e++)b.appendChild(a[e](b))}))};Sidebar.prototype.addArchimate3CompositePalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFB973;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=location;archiType=square;",150,75,"","Location",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate composite element location").join(" ")),this.createVertexTemplateEntry("shape=folder;spacingTop=10;tabWidth=100;tabHeight=25;tabPosition=left;html=1;dashed=1;",
-150,105,"","Group",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate composite element actor").join(" "))];this.addPalette("archimate3Composite","Archimate 3.0 / Composite",!1,mxUtils.bind(this,function(b){for(var e=0;e<a.length;e++)b.appendChild(a[e](b))}))};Sidebar.prototype.addArchimate3ImplementationAndMigrationPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFE0E0;strokeColor=#000000;shape=mxgraph.archimate3.application;archiType=rounded;",
-150,75,"","Work Package",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element work package").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFE0E0;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=event;archiType=rounded;",150,75,"","Implementation Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element implementation event").join(" ")),
-this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFE0E0;strokeColor=#000000;shape=mxgraph.archimate3.event;",60,35,"","Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFE0E0;strokeColor=#000000;shape=mxgraph.archimate3.deliverable;",150,60,"","Deliverable",null,null,this.getTagsForStencil("mxgraph.archimate3",
-"","archimate implementation migration element deliverable").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#E0FFE0;strokeColor=#000000;shape=mxgraph.archimate3.tech;techType=plateau;",150,75,"","Plateau",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element plateau").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#E0FFE0;strokeColor=#000000;shape=mxgraph.archimate3.gap;",
-150,60,"","Gap",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element gap").join(" "))];this.addPalette("archimate3Implementation and Migration","Archimate 3.0 / Implementation and Migration",!1,mxUtils.bind(this,function(b){for(var e=0;e<a.length;e++)b.appendChild(a[e](b))}))};Sidebar.prototype.addArchimate3MotivationPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=role;archiType=oct;",
-150,75,"","Stakeholder",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element stakeholder").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=driver;archiType=oct;",150,75,"","Driver",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element driver").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=assess;archiType=oct;",
-150,75,"","Assesment",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element assessment").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;perimeter=ellipsePerimeter;",150,75,"","Value",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element value").join(" ")),this.createVertexTemplateEntry("shape=cloud;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;",
-150,75,"","Meaning",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element meaning").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=goal;archiType=oct;",150,75,"","Goal",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element goal").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=outcome;archiType=oct;",
-150,75,"","Outcome",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element outcome").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=principle;archiType=oct;",150,75,"","Principle",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element principle").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=requirement;archiType=oct;",
-150,75,"","Requirement",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element requirement").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.requirement;",100,50,"","Requirement",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element requirement").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=constraint;archiType=oct;",
-150,75,"","Constraint",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element constraint").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.constraint;",100,50,"","Constraint",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element constraint").join(" "))];this.addPalette("archimate3Motivation","Archimate 3.0 / Motivation",
-!1,mxUtils.bind(this,function(b){for(var e=0;e<a.length;e++)b.appendChild(a[e](b))}))};Sidebar.prototype.addArchimate3PhysicalPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.tech;techType=facility;",150,75,"","Facility",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate physical element facility").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.tech;techType=equipment;",
-150,75,"","Equipment",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate physical element equipment").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=material;archiType=square;",150,75,"","Material",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate physical element material").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=distribution;archiType=square;",
-150,75,"","Distribution Network",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate physical element distribution").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.distribution;",90,40,"","Distribution Network",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate physical element distribution").join(" "))];this.addPalette("archimate3Physical","Archimate 3.0 / Physical",
-!1,mxUtils.bind(this,function(b){for(var e=0;e<a.length;e++)b.appendChild(a[e](b))}))};Sidebar.prototype.addArchimate3RelationshipsPalette=function(){var a=this,b=[this.createEdgeTemplateEntry("html=1;endArrow=diamondThin;endFill=1;edgeStyle=elbowEdgeStyle;elbow=vertical;endSize=10;",160,0,"","Composition",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship composition").join(" ")),this.createEdgeTemplateEntry("html=1;endArrow=diamondThin;endFill=0;edgeStyle=elbowEdgeStyle;elbow=vertical;endSize=10;",
-160,0,"","Aggregation",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship aggregation").join(" ")),this.createEdgeTemplateEntry("endArrow=block;html=1;endFill=1;startArrow=oval;startFill=1;edgeStyle=elbowEdgeStyle;elbow=vertical;",160,0,"","Assignment",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship assignment").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=block;elbow=vertical;endFill=0;dashed=1;",160,0,"","Realization",
-null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship realization").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=open;elbow=vertical;endFill=1;",160,0,"","Serving",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship serving").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=none;elbow=vertical;dashed=1;startFill=0;dashPattern=1 4;",160,0,"","Access",null,this.getTagsForStencil("mxgraph.archimate3",
-"","archimate relationship access").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=open;elbow=vertical;endFill=0;dashed=1;startArrow=open;startFill=0;dashPattern=1 4;",160,0,"","Access",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship access").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=open;elbow=vertical;endFill=0;dashed=1;dashPattern=1 4;",160,0,"","Access",null,this.getTagsForStencil("mxgraph.archimate3",
-"","archimate relationship access").join(" ")),this.addEntry("uml influence",function(){var b=new mxCell("+/-",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;html=1;endArrow=open;elbow=vertical;endFill=0;dashed=1;dashPattern=6 4;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.setTerminalPoint(new mxPoint(160,0),!1);b.geometry.relative=!0;b.geometry.x=1;b.geometry.y=10;b.edge=!0;return a.createEdgeTemplateFromCells([b],160,0,"Influence")}),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=block;dashed=0;elbow=vertical;endFill=1;",
-160,0,"","Triggering",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship triggering").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=block;dashed=1;elbow=vertical;endFill=1;dashPattern=6 4;",160,0,"","Flow",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship flow").join(" ")),this.createEdgeTemplateEntry("endArrow=block;html=1;endFill=0;edgeStyle=elbowEdgeStyle;elbow=vertical;",160,0,"","Specialization",null,this.getTagsForStencil("mxgraph.archimate3",
-"","archimate relationship specialization").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=none;elbow=vertical;",160,0,"","Association",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship association").join(" ")),this.createVertexTemplateEntry("ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#000000;strokeColor=#000000;",10,10,"","And Junction",null,this.getTagsForStencil("mxgraph.archimate3",
-"","archimate relationship junction").join(" ")),this.createVertexTemplateEntry("ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#ffffff;strokeColor=#000000;",10,10,"","Or Junction",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship junction").join(" "))];this.addPalette("archimate3Relationships","Archimate 3.0 / Relationships",!1,mxUtils.bind(this,function(a){for(var c=0;c<b.length;c++)a.appendChild(b[c](a))}))};Sidebar.prototype.addArchimate3StrategyPalette=
-function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=resource;archiType=square;",150,75,"","Resource",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy resource").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=capability;archiType=rounded;",
-150,75,"","Capability",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy capability").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=course;archiType=rounded;",150,75,"","Course of Action",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy course action").join(" "))];this.addPalette("archimate3Strategy","Archimate 3.0 / Strategy",
-!1,mxUtils.bind(this,function(b){for(var e=0;e<a.length;e++)b.appendChild(a[e](b))}))};Sidebar.prototype.addArchimate3TechnologyPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=node;archiType=square;",150,75,"","Node",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology node").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.node;",
-100,60,"","Node",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology node").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.tech;techType=device;",150,75,"","Device",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology device").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.device;",
-80,65,"","Device",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology device").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=sysSw;archiType=square;",150,75,"","System Software",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology system software").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.tech;techType=sysSw;",
-120,75,"","System Software",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology system software").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=collab;archiType=square;",150,75,"","Technology Collaboration",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology collaboration").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.collaboration;",
-60,35,"","Collaboration",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology collaboration").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=interface;archiType=square;",150,75,"","Technology Interface",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology component").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.interface;",
-70,35,"","Interface",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology interface").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=proc;archiType=rounded;",150,75,"","Technology Process",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology process").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.process;",
-150,75,"","Process",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology process").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=func;archiType=rounded;",150,75,"","Technology Function",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology function").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.function;",
-75,75,"","Function",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology function").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=interaction;archiType=rounded;",150,75,"","Technology Interaction",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology interaction").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.interaction;",
-75,75,"","Interaction",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology interaction").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=serv;archiType=rounded",150,75,"","Technology Service",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology service").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.service;",
-60,35,"","Service",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology service").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=event;archiType=rounded",150,75,"","Technology Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.event;",
-60,35,"","Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=artifact;archiType=square;",150,75,"","Technology Artifact",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology artifact").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.artifact;",
-50,75,"","Artifact",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology artifact").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=netw;archiType=square;",150,75,"","Communication Network",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology communication network").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.commNetw;strokeWidth=6;",
-100,30,"","Communication Network",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology communication network").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.application;appType=path;archiType=square;",150,75,"","Path",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology communication network").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.path;strokeWidth=6;",
-100,30,"","Path",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology path").join(" "))];this.addPalette("archimate3Technology","Archimate 3.0 / Technology",!1,mxUtils.bind(this,function(b){for(var e=0;e<a.length;e++)b.appendChild(a[e](b))}))}})();(function(){Sidebar.prototype.addArrows2Palette=function(){var a=[this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.arrow;dy=0.6;dx=40;notch=0;",100,70,"","Arrow Right",null,null,this.getTagsForStencil("mxgraph.arrows2","arrow","arrow right").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.arrow;dy=0.6;dx=40;flipH=1;notch=0;",100,70,"","Arrow Left",null,null,this.getTagsForStencil("mxgraph.arrows2",
+Sidebar.prototype.addArchimate3BusinessPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.application;appType=actor;archiType=square;",150,75,"","Business Actor",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer actor").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.archimate3.actor;",
+50,95,"","Actor",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer actor").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.application;appType=role;archiType=square;",150,75,"","Business Role",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer role").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.role;",
+85,50,"","Role",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer role").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.application;appType=collab;archiType=square;",150,75,"","Business Collaboration",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer collaboration").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.collaboration;",
+60,35,"","Collaboration",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer collaboration").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.application;appType=interface;archiType=square;",150,75,"","Business Interface",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer component").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.interface;",
+70,35,"","Interface",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer interface").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.application;appType=proc;archiType=rounded;",150,75,"","Business Process",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer process").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.process;",
+150,75,"","Process",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer process").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.application;appType=func;archiType=rounded;",150,75,"","Business Function",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer function").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.function;",
+75,75,"","Function",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer function").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.application;appType=interaction;archiType=rounded;",150,75,"","Business Interaction",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer interaction").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.interaction;",
+75,75,"","Interaction",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer interaction").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.application;appType=serv;archiType=rounded;",150,75,"","Business Service",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer service").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.service;",
+60,35,"","Service",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer service").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.application;appType=event;archiType=rounded;",150,75,"","Application Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.event;",
+60,35,"","Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.businessObject;overflow=fill;",150,75,'<table cellpadding="0" cellspacing="0" style="font-size:1em;width:100%;height:100%;"><tr style="height:20px;"><td align="center"></td></tr><tr><td align="left" valign="top" style="padding:4px;"></td></tr></table>',"Business Object",
+null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer data object").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.contract;",150,75,"","Contract",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer contract").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.product;",150,75,"","Product",
+null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer product").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.representation;",150,90,"","Representation",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate business layer representation").join(" "))];this.addPalette("archimate3Business","Archimate 3.0 / Business",!1,mxUtils.bind(this,function(b){for(var e=0;e<a.length;e++)b.appendChild(a[e](b))}))};
+Sidebar.prototype.addArchimate3CompositePalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFB973;shape=mxgraph.archimate3.application;appType=location;archiType=square;",150,75,"","Location",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate composite element location").join(" ")),this.createVertexTemplateEntry("shape=folder;spacingTop=10;tabWidth=100;tabHeight=25;tabPosition=left;html=1;dashed=1;",150,105,"","Group",null,
+null,this.getTagsForStencil("mxgraph.archimate3","","archimate composite element actor").join(" "))];this.addPalette("archimate3Composite","Archimate 3.0 / Composite",!1,mxUtils.bind(this,function(b){for(var e=0;e<a.length;e++)b.appendChild(a[e](b))}))};Sidebar.prototype.addArchimate3ImplementationAndMigrationPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFE0E0;shape=mxgraph.archimate3.application;archiType=rounded;",150,75,"","Work Package",
+null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element work package").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFE0E0;shape=mxgraph.archimate3.application;appType=event;archiType=rounded;",150,75,"","Implementation Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element implementation event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFE0E0;shape=mxgraph.archimate3.event;",
+60,35,"","Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFE0E0;shape=mxgraph.archimate3.deliverable;",150,60,"","Deliverable",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element deliverable").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#E0FFE0;shape=mxgraph.archimate3.tech;techType=plateau;",
+150,75,"","Plateau",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element plateau").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#E0FFE0;shape=mxgraph.archimate3.gap;",150,60,"","Gap",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation migration element gap").join(" "))];this.addPalette("archimate3Implementation and Migration","Archimate 3.0 / Implementation and Migration",
+!1,mxUtils.bind(this,function(b){for(var e=0;e<a.length;e++)b.appendChild(a[e](b))}))};Sidebar.prototype.addArchimate3MotivationPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;shape=mxgraph.archimate3.application;appType=role;archiType=oct;",150,75,"","Stakeholder",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element stakeholder").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;shape=mxgraph.archimate3.application;appType=driver;archiType=oct;",
+150,75,"","Driver",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element driver").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;shape=mxgraph.archimate3.application;appType=assess;archiType=oct;",150,75,"","Assesment",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element assessment").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;whiteSpace=wrap;fillColor=#CCCCFF;perimeter=ellipsePerimeter;",
+150,75,"","Value",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element value").join(" ")),this.createVertexTemplateEntry("shape=cloud;html=1;whiteSpace=wrap;fillColor=#CCCCFF;",150,75,"","Meaning",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element meaning").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;shape=mxgraph.archimate3.application;appType=goal;archiType=oct;",
+150,75,"","Goal",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element goal").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;shape=mxgraph.archimate3.application;appType=outcome;archiType=oct;",150,75,"","Outcome",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element outcome").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;shape=mxgraph.archimate3.application;appType=principle;archiType=oct;",
+150,75,"","Principle",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element principle").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;shape=mxgraph.archimate3.application;appType=requirement;archiType=oct;",150,75,"","Requirement",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element requirement").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;shape=mxgraph.archimate3.requirement;",
+100,50,"","Requirement",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element requirement").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;shape=mxgraph.archimate3.application;appType=constraint;archiType=oct;",150,75,"","Constraint",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element constraint").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;shape=mxgraph.archimate3.constraint;",
+100,50,"","Constraint",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate implementation motivation element constraint").join(" "))];this.addPalette("archimate3Motivation","Archimate 3.0 / Motivation",!1,mxUtils.bind(this,function(b){for(var e=0;e<a.length;e++)b.appendChild(a[e](b))}))};Sidebar.prototype.addArchimate3PhysicalPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.tech;techType=facility;",
+150,75,"","Facility",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate physical element facility").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.tech;techType=equipment;",150,75,"","Equipment",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate physical element equipment").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.application;appType=material;archiType=square;",
+150,75,"","Material",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate physical element material").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.application;appType=distribution;archiType=square;",150,75,"","Distribution Network",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate physical element distribution").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.distribution;",
+90,40,"","Distribution Network",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate physical element distribution").join(" "))];this.addPalette("archimate3Physical","Archimate 3.0 / Physical",!1,mxUtils.bind(this,function(b){for(var e=0;e<a.length;e++)b.appendChild(a[e](b))}))};Sidebar.prototype.addArchimate3RelationshipsPalette=function(){var a=this,b=[this.createEdgeTemplateEntry("html=1;endArrow=diamondThin;endFill=1;edgeStyle=elbowEdgeStyle;elbow=vertical;endSize=10;",160,0,"",
+"Composition",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship composition").join(" ")),this.createEdgeTemplateEntry("html=1;endArrow=diamondThin;endFill=0;edgeStyle=elbowEdgeStyle;elbow=vertical;endSize=10;",160,0,"","Aggregation",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship aggregation").join(" ")),this.createEdgeTemplateEntry("endArrow=block;html=1;endFill=1;startArrow=oval;startFill=1;edgeStyle=elbowEdgeStyle;elbow=vertical;",160,0,"",
+"Assignment",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship assignment").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=block;elbow=vertical;endFill=0;dashed=1;",160,0,"","Realization",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship realization").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=open;elbow=vertical;endFill=1;",160,0,"","Serving",null,this.getTagsForStencil("mxgraph.archimate3",
+"","archimate relationship serving").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=none;elbow=vertical;dashed=1;startFill=0;dashPattern=1 4;",160,0,"","Access",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship access").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=open;elbow=vertical;endFill=0;dashed=1;startArrow=open;startFill=0;dashPattern=1 4;",160,0,"","Access",null,this.getTagsForStencil("mxgraph.archimate3",
+"","archimate relationship access").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=open;elbow=vertical;endFill=0;dashed=1;dashPattern=1 4;",160,0,"","Access",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship access").join(" ")),this.addEntry("uml influence",function(){var b=new mxCell("+/-",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;html=1;endArrow=open;elbow=vertical;endFill=0;dashed=1;dashPattern=6 4;");b.geometry.setTerminalPoint(new mxPoint(0,
+0),!0);b.geometry.setTerminalPoint(new mxPoint(160,0),!1);b.geometry.relative=!0;b.geometry.x=1;b.geometry.y=10;b.edge=!0;return a.createEdgeTemplateFromCells([b],160,0,"Influence")}),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=block;dashed=0;elbow=vertical;endFill=1;",160,0,"","Triggering",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship triggering").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=block;dashed=1;elbow=vertical;endFill=1;dashPattern=6 4;",
+160,0,"","Flow",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship flow").join(" ")),this.createEdgeTemplateEntry("endArrow=block;html=1;endFill=0;edgeStyle=elbowEdgeStyle;elbow=vertical;",160,0,"","Specialization",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship specialization").join(" ")),this.createEdgeTemplateEntry("edgeStyle=elbowEdgeStyle;html=1;endArrow=none;elbow=vertical;",160,0,"","Association",null,this.getTagsForStencil("mxgraph.archimate3",
+"","archimate relationship association").join(" ")),this.createVertexTemplateEntry("ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#000000",10,10,"","And Junction",null,this.getTagsForStencil("mxgraph.archimate3","","archimate relationship junction").join(" ")),this.createVertexTemplateEntry("ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#ffffff",10,10,"","Or Junction",null,this.getTagsForStencil("mxgraph.archimate3",
+"","archimate relationship junction").join(" "))];this.addPalette("archimate3Relationships","Archimate 3.0 / Relationships",!1,mxUtils.bind(this,function(a){for(var c=0;c<b.length;c++)a.appendChild(b[c](a))}))};Sidebar.prototype.addArchimate3StrategyPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;shape=mxgraph.archimate3.application;appType=resource;archiType=square;",150,75,"","Resource",null,null,this.getTagsForStencil("mxgraph.archimate3",
+"","archimate strategy resource").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;shape=mxgraph.archimate3.application;appType=capability;archiType=rounded;",150,75,"","Capability",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy capability").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;shape=mxgraph.archimate3.application;appType=course;archiType=rounded;",150,
+75,"","Course of Action",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate strategy course action").join(" "))];this.addPalette("archimate3Strategy","Archimate 3.0 / Strategy",!1,mxUtils.bind(this,function(b){for(var e=0;e<a.length;e++)b.appendChild(a[e](b))}))};Sidebar.prototype.addArchimate3TechnologyPalette=function(){var a=[this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.application;appType=node;archiType=square;",
+150,75,"","Node",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology node").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.node;",100,60,"","Node",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology node").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.tech;techType=device;",150,75,"","Device",
+null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology device").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.device;",80,65,"","Device",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology device").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.application;appType=sysSw;archiType=square;",150,
+75,"","System Software",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology system software").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.tech;techType=sysSw;",120,75,"","System Software",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology system software").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.application;appType=collab;archiType=square;",
+150,75,"","Technology Collaboration",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology collaboration").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.collaboration;",60,35,"","Collaboration",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology collaboration").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.application;appType=interface;archiType=square;",
+150,75,"","Technology Interface",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology component").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.interface;",70,35,"","Interface",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology interface").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.application;appType=proc;archiType=rounded;",
+150,75,"","Technology Process",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology process").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.process;",150,75,"","Process",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology process").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.application;appType=func;archiType=rounded;",
+150,75,"","Technology Function",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology function").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.function;",75,75,"","Function",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology function").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.application;appType=interaction;archiType=rounded;",
+150,75,"","Technology Interaction",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology interaction").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.interaction;",75,75,"","Interaction",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology interaction").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.application;appType=serv;archiType=rounded",
+150,75,"","Technology Service",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology service").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.service;",60,35,"","Service",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology service").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.application;appType=event;archiType=rounded",
+150,75,"","Technology Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.event;",60,35,"","Event",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology event").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.application;appType=artifact;archiType=square;",
+150,75,"","Technology Artifact",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology artifact").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.artifact;",50,75,"","Artifact",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology artifact").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.application;appType=netw;archiType=square;",
+150,75,"","Communication Network",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology communication network").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.commNetw;strokeWidth=6;",100,30,"","Communication Network",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology communication network").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.application;appType=path;archiType=square;",
+150,75,"","Path",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology communication network").join(" ")),this.createVertexTemplateEntry("html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.path;strokeWidth=6;",100,30,"","Path",null,null,this.getTagsForStencil("mxgraph.archimate3","","archimate technology path").join(" "))];this.addPalette("archimate3Technology","Archimate 3.0 / Technology",!1,mxUtils.bind(this,function(b){for(var e=0;e<a.length;e++)b.appendChild(a[e](b))}))}})();(function(){Sidebar.prototype.addArrows2Palette=function(){var a=[this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.arrow;dy=0.6;dx=40;notch=0;",100,70,"","Arrow Right",null,null,this.getTagsForStencil("mxgraph.arrows2","arrow","arrow right").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.arrow;dy=0.6;dx=40;flipH=1;notch=0;",100,70,"","Arrow Left",null,null,this.getTagsForStencil("mxgraph.arrows2",
 "arrow","arrow leftt").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.arrow;dy=0.6;dx=40;direction=north;notch=0;",70,100,"","Arrow Up",null,null,this.getTagsForStencil("mxgraph.arrows2","arrow","arrow up").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.arrow;dy=0.6;dx=40;direction=south;notch=0;",70,100,"","Arrow Down",null,null,this.getTagsForStencil("mxgraph.arrows2",
 "arrow","arrow down").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.arrow;dy=0;dx=30;notch=30;",100,60,"","Chevron Arrow",null,null,this.getTagsForStencil("mxgraph.arrows2","arrow","arrow chevron").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.arrow;dy=0.6;dx=40;notch=15;",100,70,"","Notched Arrow",null,null,this.getTagsForStencil("mxgraph.arrows2",
 "arrow","arrow notched").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.arrow;dy=0;dx=10;notch=10;",100,30,"","Notched Signal-In Arrow",null,null,this.getTagsForStencil("mxgraph.arrows2","arrow","arrow notched signal in").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.arrow;dy=0;dx=10;notch=0;",100,30,"","Signal-In Arrow",null,null,this.getTagsForStencil("mxgraph.arrows2",
@@ -3702,7 +3700,7 @@ this.addDataEntry("atlassian button grouped",320,33,"Button (grouped)","7ZZNb4JA
 this.addEntry("atlassian button compact",function(){var b=new mxCell("Compact",new mxGeometry(0,0,86,33),"rounded=1;fillColor=#F1F2F4;align=center;strokeColor=none;html=1;fontColor=#596780;fontSize=12");b.vertex=!0;var c=new mxCell("",new mxGeometry(107,13,6,6),"shape=ellipse;fillColor=#596780;strokeColor=none;html=1");c.vertex=!0;var d=new mxCell("",new mxGeometry(117,13,6,6),"shape=ellipse;fillColor=#596780;strokeColor=none;html=1");d.vertex=!0;var f=new mxCell("",new mxGeometry(127,13,6,6),"shape=ellipse;fillColor=#596780;strokeColor=none;html=1");
 f.vertex=!0;return a.createVertexTemplateFromCells([b,c,d,f],133,33,"Button (compact)")}),this.addDataEntry("atlassian button grouped group",556,33,"Button (grouped)","3Zhdb5swFIZ/DZeNDA4kuRxp003qpEq76LUVDFgxGNlOm+zXz8YmhTofVIM0W6RI+MCxj5/3+NjgwWWxe+Soyn+yBFMPPnhwyRmT5qrYLTGlXgBI4sF7LwiA+nvB6sRdv74LKsRxKfs4BMbhFdEtNpaHhEhjFHJPrZGzbZlg7eN7ME4JpUtGGa9vQgCicKUGiBElWalsazU4VjdjITnb4ObRkpWquziXBW06YqVsdZTWP2v/RX7rwf0mQswl3p2cZW2yU3zErMCS79UjbySRuXkiNCBAjkmWWy8IjQ0J084Onu/I1IWldpwgdAguWVHowD4FceWvgtV0AIjhIprNwZAQrUMYGo8W0/lITKcO029CaCz/GVJ/Chyms5GYhg5Th6bB8mJj0SBEjhL2php69gkSec0aHGPawqe8Kt1lsct0YZsUbL3ZVhPO8VpNKOYNQnBGs65E7eLQjXIIGQLfTe1gOpIOkaPDD5XX4JmzjGMhvloUN80vLAcb6Uct7aLqL6MKAQs16PeGtw66l7jhxdq/OKMlxxRJ8oo73R8T2I7wzIiu7U3uRKDrwdJUYOkkxCGuXjkyc3LkhfFNSpXqQ6QHxanslxwaV7yVkpXOur2ZHBEVWpMye6onZYL7m7TpOlwnie4WY2TRvEfFt7pLTlCZaWucEF0RiFb8XrCtnv3HIn0Q9/w+2keEWR8R9qYFJm6ZbrbhtijRMJrYk3Mz+h0cQaKFI9ET0pX7ypuALgi3vswH2gqiIVZx373eB5eX4D9+hA2Be4QNo3GOTr5/GWeT4cqTVAKPWryMvKerV9gpID50QB3hFA2AyX2pv2VMwVdhct/cbxkTvA4m1Xz/+mR2tPbHqT8="),
 this.addDataEntry("atlassian button grouped group responsive",551,104,"Button (grouped, responsive)","7Vnfj6IwEP5reLwNbYXFx9PTvZdLLrmHeyYySrOFmrbu6v3110JB2S4urj9wjSaYzpRph+9rZ4bikXG2fhLxMv3FE2AemXhkLDhXZStbj4ExD/s08cgPD2NfXx6etvSiotdfxgJy1cUAlwYvMVtBqSkVUm2YVUgl+DP8pYlKtQJ5ZCTTOOGvWvC1kMQyhcQKMaOLXLdnenoQWpGqjG2tlmbIbL0wj/uQ8dnzavkgBMy0qyPxh/4z3ciMM6eMjTnjonCBTNEUTwdmjMKXnZ558at7Ki+rxwKhYN0KTaGyuDwBz0CJjb7l1Q5i4CElfH4KdJFaM0JKXSxLeVGbboHWDYv1+7gTB/fvUhrsLow+g7karZTiuUMBz1UlYyvvAB8Mw8eovs/6+5a6nOdwEGvaB5B60p8V3Mb1TlziD7kM91ApgMWKvkBj+GP4HbTy6yuu/zJwmBZ8lSc1lzcH//AU8NsZfnOqJ8b+uslsZcHncwnKoav2qxODgcPgmGeZeeBLB0iD1y3v0abBzpKJzrdkvkXnWDPhPZu2sYsD3+EXofA82fXxnl1Pu3PD68quUf/77GaCcgu1rUE52LNnjw3K1dgnDcrDDovFkqwN6VKCGzJr0pqMWJrq5dIF72g/3rbs2FiROPi/A3/YDnTXHYX8r4QS7gsl9JVQIn2hdD9UaOckCi9XBqH7KcOJkyW6smMG5J4z3FglpO8b4ACHk54Zvp16CLknG4cnsTfIH5PEyjV8fRVRl5f564Gpt5LIfde+Zph6q4ncV9ZJQs1ep1JqjZmDFEFzp9nXgWOH4ulTMfmDfFBbNvPB8UXXYBA2WCeRW4P5wTu8H068Frcf78rgvPtt7z8="),
-this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.atlassian.checkbox_2;fillColor=#0057D8;strokeColor=none;fontColor=#000000;align=left;verticalAlign=middle;fontStyle=0;fontSize=12;labelPosition=right;verticalLabelPosition=middle;spacingLeft=10",12,12,"Text","Checkbox (on)",null,null,this.getTagsForStencil("mxgraph.atlassian","","atlassian checkbox on").join(" ")),this.createVertexTemplateEntry("rounded=1;fillColor=#F0F2F5;strokeColor=#D8DCE3;fontColor=#000000;align=left;verticalAlign=middle;fontStyle=0;fontSize=12;labelPosition=right;verticalLabelPosition=middle;spacingLeft=10;html=1;shadow=0;dashed=0",
+this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.atlassian.checkbox_2;fillColor=#0057D8;strokeColor=none;align=left;verticalAlign=middle;fontStyle=0;fontSize=12;labelPosition=right;verticalLabelPosition=middle;spacingLeft=10",12,12,"Text","Checkbox (on)",null,null,this.getTagsForStencil("mxgraph.atlassian","","atlassian checkbox on").join(" ")),this.createVertexTemplateEntry("rounded=1;fillColor=#F0F2F5;strokeColor=#D8DCE3;align=left;verticalAlign=middle;fontStyle=0;fontSize=12;labelPosition=right;verticalLabelPosition=middle;spacingLeft=10;html=1;shadow=0;dashed=0",
 12,12,"Text","Checkbox (off)",null,null,this.getTagsForStencil("mxgraph.atlassian","","atlassian checkbox on").join(" ")),this.addDataEntry("atlassian checkbox group",150,173,"Checkbox group","7VfdbpswFH4abisDIWGXLYTepNKkPsDk2AewYmxkOy3Z08+ASTOcTu2yRqtUJCSfX3O+7/iHIM6a7l7htn6QFHgQr4M4U1KacdR0GXAeRIjRIM6DKEL2DaLiFWs4WFGLFQjzloBoDHjCfA+j5hE4EAPUaoksSwA9umhz4M6lZJxnkktlRSGF1d5po+QOZspSCvPIfvZRYTjJLk0vY84qYcccSuPMU4YgipNvy1WK3PeBMtC9WuOgcgXeg2zAqIN1eWbU1M4jcZlqYFXtwhw2COtRro6hL4jZgQPtPICxB+Batwq0lh5sSu4FBeqKPwXRVlugIioSD0lrydM8W8c+Pmh4fBh7rBjB/NapG0Yphxn8aEaPhe+O4y3w71Izw2QfqEakjgk3M/sxsW4xYaLaDPPnYZ+7Ng13heoaU/ns5qRY1wMEFxE7BbgkB0eFE09pj3zWJ90lrC881jPctntiYfB5fwMWg6Xt/Zuu6jeDG2w41pphcUNqILut7H5EftcglKzy9E/r73M0zD/vhSS5Wi8kXi8UHJt+7poZ+OqG/6Ab0uvtDEuvGzZSVFaz5Zjsvs6EK58JIbreRrDyqL+l9H2Mv2sFl8NzQjaxGIH6W7oXH07RxMnCX47LM9ezOL6ck/TMQS2IvWdfcqf1L6mfhwMXsJotk4+jxIovvzOD7be/nV8="),
 this.addDataEntry("atlassian dropdown button",100,53,"Button (dropdown)","tZRNb8IwDIZ/TY5MaQJsu1JWLps0icPOEU3biDSuUpeP/fqlJJRBy8aEdqjkvPYbu4+lEB6Xu4UVVfEGqdSEvxAeWwD0UbmLpdaEUZUSPieMUfcRllzJRocsrYSVBm8xMG/YCN1IryxRYFN7uca9DrKFxqSydUWEzzKldQwarDsbMK5mVqOFtbwQCyz10QIGj1nC+OR5+vhEnS60yo3TtMwwlC3VZ9s1am11JVbK5K+H7DyivRI/v7Qod1cZHKQAYCGhlGj3rmSrUixCBfWcaCFVXgRbYEdF7c95Zz0RdUGAOgyY9wB/gF1nGrZ/QOx4JVHCkvH/cGZDnO/guj/H9xtmzu/HPO5h7uGtC1G1IVolTN6qs1RZuUIFLZcamnbKS+4dv5+530KLD9M6NwR29GHSh8f67KZeslILVBt5dtUQz9D+HZSbqus9Oq4qdB9dbASyrJbY20f3E0MrcsfTM+bLv79yXw=="),
 this.addDataEntry("atlassian dropdown button open",110,200,"Button (dropdown, open)","7ZfLbuIwFIafJsuOHDvmshwC6WYqVdNF1x7iJFZNjGxzm6cfB5u04CSEZtiBhGSfCzbff86BBChe7Z8lWRcvIqU8QIsAxVIIbVerfUw5DyBgaYDmAYTAvAOYtHjDoxesiaSl7pMAbcKW8A21ljdN9EZZs9IH7sxSbMqUVllhgGYZ4zwWXEizL0VpYmZKS/FBL4yFXvFTiij1yRtAhKej8QQYO+EsL42N00y7sDf2tzo1rNLUmixZmf86euch8ELs/anUdN/K4GhyAJ6pWFEtDyZkx1JduAhgOYGCsrxwaY4dIMru8zr1k6hZOKjNgJEH+F3Ij4yL3Q2IDS+I0QRPbuecHV/dnGET5wFcD+f4rmFGaDjmyMPs4VUFWVdLLRkp88o6S5mkS81ExUWJTXXLS+41v27ufWihZlrnCY4d+IF9eNBnN7ImSTnRbEvPPqqJpzv+VTBzq/rsp5NU7vSnC0VElimqPT3qL9FLInxdos4OaFHCeObJIlzgylOQ1DSWTf/SE0QuXa1HvZTqrms88qUJG+o6jKLhhT3yqMVcKMOonR3w2SVRgpNxWxXX2MAFthtHhjd86qElqTKJ7w5Yv3bB14d2E/XTNPluSxzOuP/XDhh7Wv6mW0Z3N6nZ9XP7ENIXEk3voOTEU/LnH1KmRoWHlPeTcgzvIOXUk7LHH7SHksOUDAEeLqXZfj4o2fCvz1H/AA=="),
@@ -3717,16 +3715,16 @@ this.addDataEntry("atlassian inline edit",130,222,"Inline edit","7VnbbpswGH4aLou
 this.addDataEntry("atlassian inline edit",230,60,"Inline edit","vVZNb+MgEP01PtYiEMfJsXE2vXSlSpV2z8gmMSo2FpDG2V+/g8FJ/JHWVbZrKREzMAO892ZEQJKiflK0yn/KjImA/AhIoqQ0blTUCRMiwIhnAdkEGCP4BXh7Y3bWzKKKKlaaKQHYBbxTcWDO86K4VNyc3IQ2J+EndlyIRAqpwCxlCd61Nkq+sZ4zNwVcYzOD4U6W5pX/sQlmZ9tnRGBTwfcljAXbGT/dJgswiVaLeIn8AZkyrL55ycblb/jEZMGMggugI89M7lfEPlPO+D73YR4cRLWz9+fQC2Qw8KiNI0gGCD7L4wA8JQ9lxjKPC1Wph2Vlr30FLFx713wDdGFmnqwet9suxG7Rb39RbD0VTXm5f24w3RA0BBY1Xx//O3A+eTgjF/EZ7CS6H/b5APYB5jqnlR0W9d7WV0iVkkeNQ/Cr6tEaFq7sNLNqDJeNUVtjHiJnwP8mClduGWmW4UUzY404JDEYpTRp7gU9WhA9fvFmjeLEZuGKpYZLy4CWBwvZehIL5EMWUDhCwwgLMw+hYoIa/s46241R43d8kRwOglHdTe13f4i7CeRup5kZMHs+9iSyo+lka8MqwPGYc8NeoRKs7wj0d6vmUo43WRsWVo/HOY7wAo67BnVlnF0qrKUdim5LCy4sMr+YymhJez1xPrU2x8WiXRoULqI7pdMN+KKQ4n+io4e2pFshkW8Q0uJzIV331pxm0MudSDKq84ti+q3FCKo1p2WY5ix9G23erVz6wrqj77YBq24NkuUk3pb3d+H42/Gs/zOW5zdBi2U8rZl+/SUB5uWd57R8/Qz8Cw=="),
 this.addDataEntry("atlassian inline message",150,180,"Inline message","7VfbTuMwEP2avFa5kLY80paiXcFqBVrxiNxk2nhx7GA7tPD1O3bc9OKAQC2IlaiUynPx2D5zZpwEybhcXUhSFVciBxYk50EylkLoZlSuxsBYEIc0D5JJEMchPkE8fcEaWWtYEQlcv2VC3Ex4JKyGRnOWZaAU6hg8gnElVcVoRjQVXDXeSj8x5z2njI0FExJFLjhqR0pLcQ97yrng+oY+m1lRtJZdGCMTRhccxwzm2pnXEYI4SU/7g2HotgpSw+rF41qVO+sFiBK0fEKXp8aauCBLmuvCTUidrgC6KFwUh1pIVCMv2kgbLHHg4OyGNvGg/fnj+sxDsNAlcyCoguRiiUKIQk5UAbkT0FIZ/3K1MFTpEc2IUpTwXlZAdj8Tq7vYwLaVDYQtDNPBZPhaSnaczc9PhcEb08/OnLqkec5gL4XhXorNZhiZAfstFDXMQaVs4G0DXu7Z28CqIhnli0u7/iQ6KO/rCS6Io0G/gwaxz4K17hAWnHgsGAs+R4Fn8M2FL8CFYfppXEg9LoxIORPimwdfgAdR9HlNoe8TgepZnd2DNpGzTNRc//eXbZR0lNZH3bYDD9JfsERFrUAquwfrPgMDqTkALoePhIcalJE0lmH4V1DeOwrucUc1vI67K7Yj4N5xvbUYHxv3oYe7B5/XqJ5rCc3/HWF4Ur9LTafDkW08b+lS0SAenYwP6S5vbW/bfXmnIaWHpM1NaF9OX0vjB2XxtCOLfWawmOFgYQZXNdO0YrDToBofjN66Baa5JVG4O7yFTQmSWouSWICZOT7lj1TbsNyIfKdsbVVuNUc8SZhDBTxH8HGMeUTARC0327IFrjXaVa97N+t9Gx6hd9ZSqf9Qi+YQ9p7Mh9uq5nx/qpzY3bpF3VJbUDRR12iEwngdsqIEkuOcUkh4cZW9ipOIQ25fFGy7l5nrSolfaXP78yoNLZPpeXSetpZbx8Kdl5KO22SrRpYFJvYGC8WsvcTa9+omDjeqa0fp2H9xOEJxxR3FdNJRTVH6/vsdxc0Xu7XtfND/Aw=="),
 this.addEntry("atlassian inline message subtitle",function(){var b=new mxCell("i",new mxGeometry(0,0,20,20),"shape=ellipse;fillColor=#403294;strokeColor=none;fontSize=14;fontStyle=1;align=center;fontColor=#ffffff");b.vertex=!0;var c=new mxCell('<font color="#0057d8">Log in</font> to learn about Confluence',new mxGeometry(0,30,230,33),"rounded=1;arcSize=3;fillColor=#ffffff;strokeColor=#DFE1E5;strokeWidth=1;shadow=1;align=left;html=1;whiteSpace=wrap;spacingLeft=20;spacingRight=20;fontSize=12;");c.vertex=
-!0;var d=new mxCell("Want more information?",new mxGeometry(30,0,200,20),"fillColor=none;strokeColor=none;align=left;html=1;whiteSpace=wrap;fontSize=11;fontColor=#596780");d.vertex=!0;return a.createVertexTemplateFromCells([b,c,d],230,63,"Inline message with subtitle")}),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#DFE1E6;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#42526E",70,20,"DEFAULT","Lozenge (state, subtle)",null,null,this.getTagsForStencil("mxgraph.atlassian",
-"lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#DFE1E6;strokeColor=#DFE1E6;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#42526E",70,20,"DEFAULT","Lozenge (state, bold)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#008364;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#008364",70,20,
-"SUCCESS","Lozenge (success, subtle)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#008364;strokeColor=#008364;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#ffffff",70,20,"SUCCESS","Lozenge (success, bold)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#BA3200;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#BA3200",
-70,20,"REMOVED","Lozenge (problem, subtle)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#BA3200;strokeColor=#BA3200;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#ffffff",70,20,"REMOVED","Lozenge (problem, bold)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#0057D8;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#0057D8",
-100,20,"IN PROGRESS","Lozenge (current, subtle)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#0057D8;strokeColor=#0057D8;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#ffffff",100,20,"IN PROGRESS","Lozenge (current, bold)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#6554C0;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#6554C0",
-50,20,"NEW","Lozenge (new, subtle)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#6554C0;strokeColor=#6554C0;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#ffffff",50,20,"NEW","Lozenge (new, bold)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#FFAB00;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#42526E",
+!0;var d=new mxCell("Want more information?",new mxGeometry(30,0,200,20),"fillColor=none;strokeColor=none;align=left;html=1;whiteSpace=wrap;fontSize=11;fontColor=#596780");d.vertex=!0;return a.createVertexTemplateFromCells([b,c,d],230,63,"Inline message with subtitle")}),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;strokeColor=#DFE1E6;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#42526E",70,20,"DEFAULT","Lozenge (state, subtle)",null,null,this.getTagsForStencil("mxgraph.atlassian",
+"lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#DFE1E6;strokeColor=#DFE1E6;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#42526E",70,20,"DEFAULT","Lozenge (state, bold)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;strokeColor=#008364;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#008364",70,20,"SUCCESS","Lozenge (success, subtle)",
+null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#008364;strokeColor=#008364;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#ffffff",70,20,"SUCCESS","Lozenge (success, bold)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;strokeColor=#BA3200;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#BA3200",
+70,20,"REMOVED","Lozenge (problem, subtle)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#BA3200;strokeColor=#BA3200;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#ffffff",70,20,"REMOVED","Lozenge (problem, bold)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;strokeColor=#0057D8;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#0057D8",
+100,20,"IN PROGRESS","Lozenge (current, subtle)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#0057D8;strokeColor=#0057D8;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#ffffff",100,20,"IN PROGRESS","Lozenge (current, bold)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;strokeColor=#6554C0;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#6554C0",
+50,20,"NEW","Lozenge (new, subtle)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#6554C0;strokeColor=#6554C0;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#ffffff",50,20,"NEW","Lozenge (new, bold)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;strokeColor=#FFAB00;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#42526E",
 60,20,"MOVED","Lozenge (moved, subtle)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.createVertexTemplateEntry("dashed=0;html=1;rounded=1;fillColor=#FFAB00;strokeColor=#FFAB00;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#42526E",60,20,"MOVED","Lozenge (moved, bold)",null,null,this.getTagsForStencil("mxgraph.atlassian","lozenge","atlassian ").join(" ")),this.addEntry("atlassian inline message subtitle",function(){var b=new mxCell("Yeah, progress!",
-new mxGeometry(0,0,120,20),"dashed=0;html=1;rounded=1;fillColor=#172B4D;strokeColor=#172B4D;fontSize=12;align=center;fontStyle=0;strokeWidth=2;fontColor=#ffffff");b.vertex=!0;var c=new mxCell("IN PROGRESS",new mxGeometry(10,30,100,20),"dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#0057D8;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#0057D8");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],120,50,"Lozenge (tooltip)")}),this.addEntry("atlassian inline message subtitle",
-function(){var b=new mxCell("SUCCESS",new mxGeometry(25,0,70,20),"dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#008364;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#008364");b.vertex=!0;var c=new mxCell("Don't stop believin'",new mxGeometry(0,30,120,20),"dashed=0;html=1;rounded=1;fillColor=#172B4D;strokeColor=#172B4D;fontSize=12;align=center;fontStyle=0;strokeWidth=2;fontColor=#ffffff");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],120,50,"Lozenge (tooltip)")}),
-this.addDataEntry("atlassian modal dialog",330,210,"Modal dialog","1VZtb5swEP41fGxlTJN2H9ukrTZp0rROmvbRhSN4NRyzTUj263cHhiSDbpGmTRoSfrmXx+d77hBRsip3j1bVxXvMwETJfZSsLKLvV+VuBcZEUugsStaRlILeSD68oo07raiVhcqf4yB7h60yDfSSSC4Nud4902LDi0GQI0FK4fze9KbLbw0Oigunv5P0lgziq3p3UA4oX7CxpMyUK55R2WxApdB64NPDSDwJINPbGbMZ6akokkksZiMQ2tHgC6Ax19b5bqerDc17bPiywLq2gGoUGWS1ri5p/NS5vnv7ke/9hLlvKfFzZxj9Aj0Ch5AqGpeqrCkqVaOjyR17MfRd47tjnAfFMJhzOAW2Y3iM5GoA1qqKx7wB5tbAlucV+/vgxfi6rNF6VfXAOdpSeY18M/WM3XEBtUX7QtPFJPDa4ldIvevBg1ClXm+11+DGQIJGO9eAu3yNLHlSTbLwJZX/OiadxabKIAu7XBuzQoO2s0vy7uGceYsvcKRZP9zH94tQkU9dQa5jyUk2elPRxkA+FOyRm+geBixUhm04Vdl0gKBdW2gPT7VKWdBSu7I5bZmNZC3ZewvW61SZ23CYx3q8Jutg92qPdqLQoI+AJXi7Zx505oveIkn6PhYF6E0R3GQchMr1gs3oe2h5WoSun/8CJJMvwG2WTcjh2uwI4Zuey5QQi+v1zYSpCiv4BUkppQXsYBBCECPK55AUOSUyVMY5GZe/zfhiJuFJSJYFQ62zhRP4ORLCCR9Qd10X4pEiYO8DwOInHjHPHfgJi2OgZxF7NSF2paqUvwx/zG1g8B/RunizvL4R/wGty79AK20PfwO9+fHPwg8="),
+new mxGeometry(0,0,120,20),"dashed=0;html=1;rounded=1;fillColor=#172B4D;strokeColor=#172B4D;fontSize=12;align=center;fontStyle=0;strokeWidth=2;fontColor=#ffffff");b.vertex=!0;var c=new mxCell("IN PROGRESS",new mxGeometry(10,30,100,20),"dashed=0;html=1;rounded=1;strokeColor=#0057D8;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#0057D8");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],120,50,"Lozenge (tooltip)")}),this.addEntry("atlassian inline message subtitle",function(){var b=
+new mxCell("SUCCESS",new mxGeometry(25,0,70,20),"dashed=0;html=1;rounded=1;strokeColor=#008364;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#008364");b.vertex=!0;var c=new mxCell("Don't stop believin'",new mxGeometry(0,30,120,20),"dashed=0;html=1;rounded=1;fillColor=#172B4D;strokeColor=#172B4D;fontSize=12;align=center;fontStyle=0;strokeWidth=2;fontColor=#ffffff");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],120,50,"Lozenge (tooltip)")}),this.addDataEntry("atlassian modal dialog",
+330,210,"Modal dialog","1VZtb5swEP41fGxlTJN2H9ukrTZp0rROmvbRhSN4NRyzTUj263cHhiSDbpGmTRoSfrmXx+d77hBRsip3j1bVxXvMwETJfZSsLKLvV+VuBcZEUugsStaRlILeSD68oo07raiVhcqf4yB7h60yDfSSSC4Nud4902LDi0GQI0FK4fze9KbLbw0Oigunv5P0lgziq3p3UA4oX7CxpMyUK55R2WxApdB64NPDSDwJINPbGbMZ6akokkksZiMQ2tHgC6Ax19b5bqerDc17bPiywLq2gGoUGWS1ri5p/NS5vnv7ke/9hLlvKfFzZxj9Aj0Ch5AqGpeqrCkqVaOjyR17MfRd47tjnAfFMJhzOAW2Y3iM5GoA1qqKx7wB5tbAlucV+/vgxfi6rNF6VfXAOdpSeY18M/WM3XEBtUX7QtPFJPDa4ldIvevBg1ClXm+11+DGQIJGO9eAu3yNLHlSTbLwJZX/OiadxabKIAu7XBuzQoO2s0vy7uGceYsvcKRZP9zH94tQkU9dQa5jyUk2elPRxkA+FOyRm+geBixUhm04Vdl0gKBdW2gPT7VKWdBSu7I5bZmNZC3ZewvW61SZ23CYx3q8Jutg92qPdqLQoI+AJXi7Zx505oveIkn6PhYF6E0R3GQchMr1gs3oe2h5WoSun/8CJJMvwG2WTcjh2uwI4Zuey5QQi+v1zYSpCiv4BUkppQXsYBBCECPK55AUOSUyVMY5GZe/zfhiJuFJSJYFQ62zhRP4ORLCCR9Qd10X4pEiYO8DwOInHjHPHfgJi2OgZxF7NSF2paqUvwx/zG1g8B/RunizvL4R/wGty79AK20PfwO9+fHPwg8="),
 this.addDataEntry("atlassian detailed modal dialog",330,210,"Modal dialog (detailed)","1Zdfb5swEMA/DY+JwBRIH7v86TZt0rROmvY0uWCCF8Mx2yTpPv3OYNIQ6JouSbVFCth3vvPZP98Bjj/Nt7eSltlHSJhw/LnjTyWAblr5dsqEcIjLE8efOYS4+HfI4gmtV2vdkkpW6GMMSGOwpqJijcQhoUDTN/fYWJpGK0gBXRJX6QfRDA1/VtAqRor/QukNDvCuyu2jsvXyDSqJyoSq7B6oTFqvGFrjuDsZinsBJHw9MGxA2hU5xPfcwQhcrvCiM4bXlEul6x4vlnh/gMoslhndJmPFTiTAqHkxxuuX2vT9u89m3XeQ6g1u/NAcgq9Y48GEEFO8hjQvMSpagsKb2rcyrt9Uup5GaUaNG0hNOBlsduEZT6pkzGhpYa5pxQxbwdbmPjX22loZ/zwvQWpaNI5TkDnVHMzK6D3U01mvG5ArvI16gZcSfrBYq8a5FdJY8zXXnKldIFbDlaqYGj8Fi3ROE8l0jsd/5qFOQlUkLLG9lAsxBQGyHuen9c/smZawYnua2WLuzQN7Iu/qAznziNlkwZcFdgRL2wO7Z+bWP+Mwowls7KxUxq0L7G0yrtldSWMj2GC6muHYNTT8GTHWayY1j6m4sZNpKG1yoYJtn0zQWmSz85ZBzrR8MBB4orNmhO83SexmjC8za0Y8K6SqESx3to/5jg2b8sPp7/fS/yZJemTMwaxpmGUei8l1g2g26WEqoGB/IBTjtjDZDrAhuDsvX+2mkD5FeyyO2XEyvONdg4dOb49GMADDtxspmcCcWrOO7RAgO/sn4HU62qlHXkvazj4KDyBDmiqme4h3qziK+lWP+pQWsakZJ4O3eF+JeXAdRhP3P2cevQbyoIf8Ay9W/xrwXmGuS8jZ8D4D1L4qnZ7EB0TbfDsr0HDgxe0cZXsRLSaL66Gn69ydk3nUeTJGF2HjuZessKQLxwsvACd6Hg6+a5SmmW+X5uV/zEFFYx5DocYCYIXvFd+Xgip1TLohHHLlR8F1l/Nh+TyGVfiCMumOgz470kfXyk5F1+bRrlBegNykR+5tEwRumn7Fcun9Rbk8/Wn4ouffmcrlQT6OgjM8/rD7+AndDN//wv4N"),
 this.addDataEntry("atlassian small modal dialog",410,410,"Modal dialog (small)","7Zndb9owEMD/mmhPrewECH1s+ehLq1brpD5ObnIQq06cOabA/vqdE0MTHFq0kolWQ4rA9vns3O/u/IEXjNLVtWJ5citjEF4w8YKRklJXv9LVCITwfMJjLxh7vk/w8fzpnlZatpKcKcj0IR38qsMLEwuoai7jGCsYPk+KZVFi1IFKeVFwmVXShV4LK53oFOc8pl5wpeQiiyG2pRkXYiSFVKVcMCs/WF9oJZ+h1jKeTuikb3rITD/w30YxTjq4YoLPMywImGnbXOtGyo9RmLBYLu2oTEVWhSktE67hIWeRqViijY04Fnk23wzyAkrziIlLO5iW+WYq9iWtSY0grPZauayyJr4GmYJWaxRZ8lgnlUSPViRIAnye6J1KVlQV823fV2j4w3JrZxg4DK825DKWgsMsZkVScjIGOAhgJjNw2NnKGjZK27G9mnKj49HaxXfB9i8G4ZAcZHT/XaNT0mJ0GxJEgWCav0BDfxsIO8S95DiyT1ZNNeuqONghKWezArTDcTvPg9D2HLQwP8eKOwQ8PwZZNPg0nA6nF22hOSETfxI2wip0CduIuilLY0o6RhqELUiDoAukwy6Q9h2kDyAgMrPQCdTT7louzKuzcoZalq+HjHgpy6IIisI2nEqAk68c4JQGHbjDwHGHR4WrVo3wqcD90tmb9ruI9dCB+2OdG7bfvB4+OFoWV3GfVV9cHW/R/p/a3+IddsF7uD+3LwpQJl0vE5PII2aAL22kl7ldJ7yoZ/8l14lclKk+z5VEnSeUC750ovdJF4n+wvGNOwx4Vc7+1wIX9hPC+6VTvd/rIvQ3B7ka3+9gAtwcNvG1eKGlPdbtOT9vD7KGdgM9tuRGPl3NzUXBOdOC4XGcZedRAtHzk1z99N3kT0g/HA/f8oa24/SOV+yej1MexwJaskHdu8xkBHsCcS8LNIA0HVWFdavwZqd9q9hZc47kYL7rX5u6I/tXJ0sLpY5/bU/5MS4yuu125u3NAZn6037rlcxwPJoEn8pJGvlxXyR9Nk8KyKALT3Lv/G5BHes24f2sU3eAjSNFaH9cC/9ik2EvFj+Attlh3SjVsA+625ue0V4T/Fknl0nUvSgcYQYB8Q83HseB/vGtx4HQ+x1CDztgjsXX/w4q8fpfC38A"),
 this.addDataEntry("atlassian medium modal dialog",616,420,"Modal dialog (medium)","7Vptb5s6FP41+biJlwLpxy4J3aTualIn3Y9XLhjwncHMmCS9v37HxhCCSZpNMN12idSCj185z+PHh5Ms3FW+v+eozD6zGNOFu1m4K86YaO7y/QpTunAsEi/c9cJxLPhbOOGJWlvVWiXiuBCXdHCaDltEa9xYGkMlnqk2ZCKHZa3thfuBs7qIcaxLCaF0xSjjqp2bqA/YK8HZN9yrWYcbe+PJHqwQj+Q/OTCsy/2AKEkLKFCcCF3d62apjxwwQzHb6VkRj/QQsrTLiMCPJYqkYQdulM2hSIq0nWSLuSARond6MsHKdin6IbXXZEO8P+lIZdJevMcsx4I/Q5MdiUXWtPBtv+mWYZJmutuNRsBCVWNIu74HXOBGQzMOkzsCk09bnx3h5X+vWVvxrlKeuoMGdlDuD5Vwl8rrIxYCXFW1o8E6mgGb6tYck23PBNDYVq8WOh03GPa5xwXmiJ5sPxxwZLQX5xj4I+podHhkIJQXxEvTC3dliRFHBZDovB9+ZeW/sqCfXcaUc//FBElgvwjCipd4MVzIaeXoa0XBCmzIhDb2FMJ2xhXisGvbMf7WW9AZaEgnIGMScMmWd17c8rZtmVve9bWRYwp+3OKjCcZ0QM/xhREFmF5RqxzPx8V2AJYkFRaGjHQLvUhZbl4+AEB+S3lLiYIoJhxHkh1gqlgtPWFK/sYCyfcNhC5T2gvcPuZ1dxqv2+6x2/053O4Zbu9E8rdvopEtMw1KrjUCkzMRSsFvQMk3UHrMIBBxrH9hMRAHOaFyKTwMYzlcclxVKMWVAeLZwCm0Qif0RgOn5Xq1cc9ERgNkhzqXkzimeAC5NcIQip4w/cIqovc1b/DqBnwY1HcD61jrQc2/Vmdhj7Bd4CbtMaoy5YKp6GU7Jrta28Tsup2DXYHBrjWpSorkYwqSY9m0gH/OzbuM1RzuEsZzJM5JxCmPqxql4vk+lW8b75GgqKoIKt5HGY6+PbH9P47JTRklrJfnhOZ10PLVMc6e5bRfGpT7SOKGaOp0B4dwvCV4BxJmPcmnj3GCanrl3B/BOW8Ozt2e4lxKkivN/kSaLeegWeeJA8++1lxFaRa4Rq4H5/BuG6nXWhA8weQlv8ZrbzBe69gwLcVsg2KfpFuv7Hlj7LmZhT1mrt32DO4cHWyXpt7DIFyGtyfyMM4mWPTT5oHJpGNcPZOC3q0fLKdC0vNMJF13EiSNlJk7C5JmOj4nRS1GDpKfSdnMueU7Jk2Vf5svs+Mshxj6c2BoJj4fWCpniWOlezIVZ0WZfN22YiTQ/xbaWdT89Wl2MMtON/O0mwI9yTPfqsqmrXrHuMYAbywG6HLX0/LJzCivGJffp7SEkl9cw6S1YDlSQNDnK7feGremiEqgePiZSNO8/yuSHw=="),
@@ -3750,17 +3748,16 @@ this.createVertexTemplateEntry("dashed=0;html=1;fillColor=#F0F2F5;strokeColor=no
 "tag","atlassian ").join(" ")),this.addEntry("atlassian tag removable",function(){var b=new mxCell("Removable tag",new mxGeometry(0,0,100,20),"dashed=0;html=1;fillColor=#F0F2F5;strokeColor=none;align=left;rounded=1;arcSize=10;fontColor=#596780;fontStyle=1;fontSize=11;shadow=0;spacingLeft=3");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,6,6),"html=1;shadow=0;dashed=0;shape=mxgraph.atlassian.x;strokeColor=#596780;strokeWidth=2");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-11,-3);c.vertex=
 !0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Removable tag")}),this.addEntry("atlassian tag removable link",function(){var b=new mxCell("Removable tag link",new mxGeometry(0,0,130,20),"dashed=0;html=1;fillColor=#F0F2F5;strokeColor=none;align=left;rounded=1;arcSize=10;fontColor=#3384FF;fontStyle=1;fontSize=11;shadow=0;spacingLeft=3");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,6,6),"html=1;shadow=0;dashed=0;shape=mxgraph.atlassian.x;strokeColor=#596780;strokeWidth=2");
 c.geometry.relative=!0;c.geometry.offset=new mxPoint(-11,-3);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Removable tag link")}),this.addEntry("atlassian text field",function(){var b=new mxCell('Name<sup><font color="#ff0000">*</font></sup>',new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("Messina Cake",new mxGeometry(0,
-25,290,33),"rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontColor=#000000;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,58,"Text field")}),this.addEntry("atlassian password field",function(){var b=new mxCell('Password<sup><font color="#ff0000">*</font></sup>',new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=
-!0;var c=new mxCell("&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;",new mxGeometry(0,25,290,33),"rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontColor=#000000;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,58,"Password field")}),this.addEntry("atlassian text field",function(){var b=new mxCell("Project name",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");
-b.vertex=!0;var c=new mxCell("Watermelon Squad",new mxGeometry(0,25,290,33),"rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontColor=#000000;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,58,"Compact text field")}),this.addEntry("atlassian text field",function(){var b=new mxCell("Project name",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");
-b.vertex=!0;var c=new mxCell("Watermelon Squad",new mxGeometry(0,25,290,40),"rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontColor=#000000;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,65,"Text field")}),this.addEntry("atlassian text field",function(){var b=new mxCell("Location",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");
-b.vertex=!0;var c=new mxCell("",new mxGeometry(0,25,290,33),"rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontColor=#000000;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,58,"Compact text field")}),this.addEntry("atlassian text field",function(){var b=new mxCell("Location",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");
-b.vertex=!0;var c=new mxCell("",new mxGeometry(0,25,290,40),"rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontColor=#000000;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,65,"Text field")}),this.addEntry("atlassian text field",function(){var b=new mxCell("Details",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=
-!0;var c=new mxCell("eg. ATP, VOSS etc",new mxGeometry(0,25,290,33),"rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontColor=#596780;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,58,"Compact text field")}),this.addEntry("atlassian text field",function(){var b=new mxCell("Details",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");
-b.vertex=!0;var c=new mxCell("eg. ATP, VOSS etc",new mxGeometry(0,25,290,40),"rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontColor=#596780;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,65,"Text field")}),this.addEntry("atlassian text field help",function(){var b=new mxCell("Form label",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");
-b.vertex=!0;var c=new mxCell("Banana bread",new mxGeometry(0,25,290,33),"rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontColor=#596780;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,58,"Text field with placeholder text")}),this.addEntry("atlassian text field tooltip",function(){var b=new mxCell("Selected help",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");
-b.vertex=!0;var c=new mxCell("",new mxGeometry(0,25,290,33),"rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontColor=#000000;fontSize=12");c.vertex=!0;var d=new mxCell("<b>Not great</b><div>The best password is hard to guess. Try again.</div>",new mxGeometry(300,0,180,80),"html=1;rounded=1;fillColor=#ffffff;strokeColor=#DFE1E5;fontSize=12;align=left;fontColor=#000000;shadow=1;arcSize=1;whiteSpace=wrap;verticalAlign=top;spacingLeft=15;spacingRight=15;spacingTop=10");
-d.vertex=!0;return a.createVertexTemplateFromCells([b,c,d],480,80,"Text field with tooltip")}),this.addDataEntry("atlassian text field tooltip",480,80,"Text field with tooltip","pVXbjpswEP0aHndlINDlcZckm0qtVDWV+uyCAauOTW2TS7++Y+wQiEmbKkghnsFnzJwzMwRxvju+S9w2n0VJWBCvgjiXQmi72h1zwlgQIVoG8TKIIgS/IFrfeBr2T1GLJeH6HkBkAXvMOmI9G7EnElwfC8Hhb0NYa/cofWJuT0UZywUTEkwuOHjflJbiJ7lyNnoHGS1DWFaC6y39bQKExsaM1hwMRirtHp/BQRQnWfrhBZ1h7mA/jH13IjU53sy/d7nk34nYES1PsOVAS904DhaWI9QQWjcO5nhDWFm7HqAXNmHhCJ0nN/bI3WLGzOkbzJWh94pXKTpektLlimXhUs1M5iPOgaGqv3wiVYsLyutPvbVMPGUAusiz1/V6Ko/d9N2REvmKoP66UiB6RIGTIzqxiLEg2Ywgcfy4IAtPEOppoBrcmiUgaatulvaVHGmSLHLk0zbI9LdCvo/GeJ7GKcCRip59VsMXn9SzTxKGNd2TSaw5pt35XwSF1xoOf4oXk+OfsmkEUVWKaE+pIYu7xEv8bgK42aBUR5Q5ThqTC/NmeI8pwz+Y8ZSduWthbo1ZBlHKzlMHzGLQK/3Vmcn7ZrqkyDAoN3KldY+hhJU9iFe07iTwJvjzOSIkYYPazV51jVpu2uy32tvr3uV6Fa4Sr4L+NVGH/oX6LsXBGzHGOjRUky0MEOM4wDcJfKYoaYHZq4uuRetNmTC5uL664hr7vhnMMkSPTAsHgDz8cYFmxkX6//MbzMuH1xbo+Lv8Bw=="),
+25,290,33),"rounded=1;arcSize=9;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,58,"Text field")}),this.addEntry("atlassian password field",function(){var b=new mxCell('Password<sup><font color="#ff0000">*</font></sup>',new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;",
+new mxGeometry(0,25,290,33),"rounded=1;arcSize=9;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,58,"Password field")}),this.addEntry("atlassian text field",function(){var b=new mxCell("Project name",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("Watermelon Squad",new mxGeometry(0,
+25,290,33),"rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,58,"Compact text field")}),this.addEntry("atlassian text field",function(){var b=new mxCell("Project name",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("Watermelon Squad",new mxGeometry(0,
+25,290,40),"rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,65,"Text field")}),this.addEntry("atlassian text field",function(){var b=new mxCell("Location",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("",new mxGeometry(0,25,290,33),"rounded=1;arcSize=9;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontSize=12");
+c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,58,"Compact text field")}),this.addEntry("atlassian text field",function(){var b=new mxCell("Location",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("",new mxGeometry(0,25,290,40),"rounded=1;arcSize=9;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,
+c],290,65,"Text field")}),this.addEntry("atlassian text field",function(){var b=new mxCell("Details",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("eg. ATP, VOSS etc",new mxGeometry(0,25,290,33),"rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontColor=#596780;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,
+c],290,58,"Compact text field")}),this.addEntry("atlassian text field",function(){var b=new mxCell("Details",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("eg. ATP, VOSS etc",new mxGeometry(0,25,290,40),"rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontColor=#596780;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,
+c],290,65,"Text field")}),this.addEntry("atlassian text field help",function(){var b=new mxCell("Form label",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("Banana bread",new mxGeometry(0,25,290,33),"rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontColor=#596780;fontSize=12");c.vertex=!0;return a.createVertexTemplateFromCells([b,
+c],290,58,"Text field with placeholder text")}),this.addEntry("atlassian text field tooltip",function(){var b=new mxCell("Selected help",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("",new mxGeometry(0,25,290,33),"rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontSize=12");c.vertex=!0;var d=new mxCell("<b>Not great</b><div>The best password is hard to guess. Try again.</div>",
+new mxGeometry(300,0,180,80),"html=1;rounded=1;strokeColor=#DFE1E5;fontSize=12;align=left;shadow=1;arcSize=1;whiteSpace=wrap;verticalAlign=top;spacingLeft=15;spacingRight=15;spacingTop=10");d.vertex=!0;return a.createVertexTemplateFromCells([b,c,d],480,80,"Text field with tooltip")}),this.addDataEntry("atlassian text field tooltip",480,80,"Text field with tooltip","pVXbjpswEP0aHndlINDlcZckm0qtVDWV+uyCAauOTW2TS7++Y+wQiEmbKkghnsFnzJwzMwRxvju+S9w2n0VJWBCvgjiXQmi72h1zwlgQIVoG8TKIIgS/IFrfeBr2T1GLJeH6HkBkAXvMOmI9G7EnElwfC8Hhb0NYa/cofWJuT0UZywUTEkwuOHjflJbiJ7lyNnoHGS1DWFaC6y39bQKExsaM1hwMRirtHp/BQRQnWfrhBZ1h7mA/jH13IjU53sy/d7nk34nYES1PsOVAS904DhaWI9QQWjcO5nhDWFm7HqAXNmHhCJ0nN/bI3WLGzOkbzJWh94pXKTpektLlimXhUs1M5iPOgaGqv3wiVYsLyutPvbVMPGUAusiz1/V6Ko/d9N2REvmKoP66UiB6RIGTIzqxiLEg2Ywgcfy4IAtPEOppoBrcmiUgaatulvaVHGmSLHLk0zbI9LdCvo/GeJ7GKcCRip59VsMXn9SzTxKGNd2TSaw5pt35XwSF1xoOf4oXk+OfsmkEUVWKaE+pIYu7xEv8bgK42aBUR5Q5ThqTC/NmeI8pwz+Y8ZSduWthbo1ZBlHKzlMHzGLQK/3Vmcn7ZrqkyDAoN3KldY+hhJU9iFe07iTwJvjzOSIkYYPazV51jVpu2uy32tvr3uV6Fa4Sr4L+NVGH/oX6LsXBGzHGOjRUky0MEOM4wDcJfKYoaYHZq4uuRetNmTC5uL664hr7vhnMMkSPTAsHgDz8cYFmxkX6//MbzMuH1xbo+Lv8Bw=="),
 this.addDataEntry("atlassian toggle subtle",30,16,"Subtle toggle","rVRrb8IgFP01fNRQsO673fTTkiX7BcTeCpGWBlDrfv0o4KOvaTKbNOHcJ/ccANGsbDaa1fxT5SAR/UA000rZsCqbDKREBIsc0XdECHY/IusJb+K9uGYaKvtMAgkJRyYPECzBYOxZRkMhpMyUVNpDSpcr+uZqrYzVag8XT6UqF7/S6lDl0BZPHGJ6+y1+2jopjo1AW2gmN+tNcacbUCVYfXYhJ5FbHiJoLMRB7PglaxlszAS8u2beJneLOPw4EfQxEYazul26RFEbmKKgx1fhv6emJ+PTdxPOUdZ5GvAdNwkZ4SbaNEhmxRE6tcYIi/2/lHDbujafJYtO+1mPclUUBuyA8OsUT2mweKwBt6WMh8vJkauTA9iBnBnujx0OHi9U2ezaizVnVjJjBKvmWw7b/UC4l6j0hy7LoSzpS1TpaUL/r4mDt8cnhN+/Tb8="),
 this.addDataEntry("atlassian toggle bold",40,20,"Bold toggle","rVRdb8IgFP01PGooWOez3ebTkiV72DOxt0KkpQHUul8/WrC1aztNtEkTzv3kngMgmuTVRrOSf6gUJKJviCZaKetXeZWAlIhgkSL6igjB7kfkfcIbNV5cMg2FvSeB+IQjkwfwFm8w9iyDIRNSJkoq3UBKl2v64mqtjdVqDxdPoQoXv9bqUKRQF48cYnr7JX7qOjEOjUBbqCY325jCTjegcrD67EJOIrXcRyxCIQ5ix0NWmBEz4/Guzewmd4sw/DgR9DYRhrOyXrpEURqYouAPX1nz3TU9GZ++n3AOss5jj6+4iZZDbi42DZJZcYRerTHCQv9PJdy22uazaNVrP1v1K6gsM2AHhLdT3KXB4rYG3OYyHC4nR6pODmAHUmZ4c+yw9zRC5dWuvlhzZiUzRrBivuWw3Q+E61S6eL4DqeQR3f5TauQUr54i1LIvU/y4TA5275EPv36ufgE="),
 this.addDataEntry("atlassian toggle bold tooltip",280,112,"Bold toggle with tooltip","7ZdNk6IwEIZ/DcexQhBljqPoXGarpnYPe47QQGoCcZM46v76DSSoGBitUrf2sFRp5as75HnpbvCCebl7FWRdfOMpMC9YeMFccK5Mq9zNgTEPI5p6QexhjPTPw8uBWb+ZRWsioFLXGGBj8EnYBszIC2N8W/vYNAsF/NqAVNKsk2rP7LqMMjbnjAvdrXilR2dSCf4BZ4OFKvWpYl83M16pH/R37cCv+4TRvNIdBpmy062xh4PweTKNUGtmN3bdmPsHoWA3yKAZsgBegZegxF4v2dJUFZbD2HBCBdC8sGaWHSLS9POD6ZGoblio/YADB/CXJPW5g8ksmC6GcAq+qVJILQoiEksiRLeQ2NsDh8biBMyjuIwvc5EFWddNbUjXcvABO8OXNddVMIJ+GF0DiwaNXDb+xGXTjglgRNFP6PjqA2b3f+dU39Zh8yc/6mz/FHU98CyToBzgh1NcpUF4WYOT6NVypDozBHEdkymRRfMUIjPTCFXu8jqRjYhiREpKqlFSQPLhCHdUqZ35aaHiW3T7Sqmepzi6i1CTrkzhA2SaODLFVJKVluhylh5KFz5yI8ef4tk4viGPJ1ohEG4mP4h9msnRPTO5NRiHHTV60pnvh4/JZ9PBQspVoaFgtJEgtEBIcf1Xgshr/VRB67GVIFVS1PaUOKr+I6X3roJZhdqqdVqJowdVnMhR6DtsBVW0yuvdqFTcOhwOoLOIWaIlXoZ9+S2O4vkicMmi5nIFqCnShLAXO1zSNGVwQQENdsbICtg7l/ocvDYUBtrB4dvZ/MGxXJNEH/2t2d/kgyuS/e0x2g3RaU+I4p6qim/X/9nRf9ZGnX7xhobPf/X/qvo+cuP/TvLr7vEryhTd04+sPw=="),
@@ -3778,10 +3775,10 @@ this.addEntry("atlassian text field",function(){var b=new mxCell("Your name",new
 this.addEntry("atlassian text field required",function(){var b=new mxCell('Requirements<sup><font color="#ff0000">*</font></sup>',new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("Design, eating, drinking",new mxGeometry(0,25,290,33),"rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontColor=#596780;fontSize=12");c.vertex=
 !0;return a.createVertexTemplateFromCells([b,c],290,58,"Text field with required fields")}),this.addEntry("atlassian disabled text field",function(){var b=new mxCell("Guests",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#B3BAC5;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("Kris Wesley",new mxGeometry(0,25,290,33),"rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontColor=#B3BAC5;fontSize=12");
 c.vertex=!0;return a.createVertexTemplateFromCells([b,c],290,58,"Disabled text field")}),this.addDataEntry("atlassian text field disabled",370,543,"Disabled text field","7Vlbc5s4FP41vOxDBxC+PcbY9KHdncymnT4rcGzUCokVch3vr68EggakOG6MnXZazxh0Owfzfecm2UNx8fBW4DL/m2dAPbT2UCw4l02reIiBUi/0SeahlReGvvp6YfLEbFDP+iUWwOQpAmEj8BXTHTQjsQAsQY1hrUjwz5DKZlElD9Qs2hBKY065UF3GmRpdVlLwLzAYzGWhXmkVqOaGM3lH/tcKgq5vNPqqjynZMtWmsJFmulXmhSiYhcsoHogN1c7Ny4CQ8PAkIPWQQeMt8AKkOKgle5LJ3IASNaD5OZBtbsQMkD6umv62E/0Or2oYhN1oIwvt2wbgSisWGvV9DvX9wHdC3QSUvCKSCwJ6DSVf4Y26f8jh0ImkCgJMGIiqkdNDmKnrVvBdqYkjBaHYoY7oVRuuZ+5BShC1tkwr5WKLGamwJJxVb04xgAGBTnsYsOrXnwGLYd9u9jmRcFfiVE/ulaOoMc0wSTG9MY+UvDyH+oNheNJIPLIENHNYQjQ53xKipyxBDTJcKAamtEZREzjd6mY7pLGqeWphnP63480CtNnUgD4aamT/aoXV72rk+zrVcO9Jr+3uk8V0NvefcfdgBM5bfq/h/ROL80/qdxZAObMQV57LMsjMW2ORmpdeaAwesVFzrj8OB1Q+Q9j2fd1bTSzOlGgUL26SpE9cs+iTwSM82WnP52Jh+1+4cPnfCFxMLS7e6Yj6x+mu4XRB5GD6Ul43s5herj/cHEVbYRHHa7/2jB+FvIU4VViofGqB3LnccZDRsh8BzkH9oU1vBs0jLFyKhLlFwp3EVX5O2EtmyTxZvCjsrdbrYD39wbDX944Rw17gykGXinsLi4gVVKkgpa7zfqMQ1Fn1NUJQ4NuZP8c6n5C6Ci9KLiSuE0xTjJfAS6qrcMnV5Qvjew8lJztL9NM6y8Uqd0coQ1MHm0EwQu3eGaCreC9BFKSq9K7p9d3ppF1zNAIBaH5Nd7IPLT5W9d4VpylUPyvul8gdkX9N3O3ji38BZ1or09e9IPrgaAB+leNSN5UuUlZwZP9ihR7fn8xWcyveREf2JANehuGmIFlG4Vli0JLie6C3+qxE50W0Eg2UncL3g/lOcT+idpH/nMKtjTct58jmPHDFujEot88pDOWc0cMJXPdz1DAr+UmYuJPOfBWv0S/Fcz9B5jjTSbt+ZqYq3RqCUYyhX8RHE4cxhA5jCEcwBvsA4x8dOP9YwatbgWMLcTErsI9Obnf3lDy7mxvQPgjuxw+KrTOubnv9Is6ji/NkiJkENjGuuhShEYixTzpizFKgL66HnirqfxUSjMCs7ywX5ER1v/91V8/1/tn7Bg=="),
-this.addEntry("atlassian error message field",function(){var b=new mxCell("Email",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("shrugg#atlassian.com",new mxGeometry(0,25,300,40),"rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#FFAB00;html=1;strokeWidth=2;fontColor=#000000;fontSize=12");c.vertex=!0;var d=new mxCell("",new mxGeometry(1,.5,20,20),
-"shape=mxgraph.azure.azure_alert;fillColor=#FFAB00;strokeColor=none;html=1");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-30,-10);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b,c],290,58,"Error message field")}),this.addEntry("atlassian error message field",function(){var b=new mxCell("Email",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("shrugg#atlassian.com",
-new mxGeometry(0,25,300,40),"rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontColor=#000000;fontSize=12");c.vertex=!0;var d=new mxCell("",new mxGeometry(1,.5,20,20),"shape=mxgraph.azure.azure_alert;fillColor=#FFAB00;strokeColor=none;html=1");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-30,-10);d.vertex=!0;c.insert(d);d=new mxCell("Please enter a valid address.",new mxGeometry(310,22,200,46),"rounded=1;arcSize=9;fillColor=#ffffff;align=center;strokeColor=#DFE1E5;html=1;strokeWidth=1;fontColor=#000000;fontSize=12;shadow=1");
-d.vertex=!0;return a.createVertexTemplateFromCells([b,c,d],290,58,"Error message field")})];this.addPalette("atlassian","Atlassian",!1,mxUtils.bind(this,function(a){for(var c=0;c<b.length;c++)a.appendChild(b[c](a))}))}})();(function(){Sidebar.prototype.addAWSPalette=function(){this.addAWSAnalyticsPalette();this.addAWSApplicationServicesPalette();this.addAWSComputePalette();this.addAWSDatabasePalette();this.addAWSDeveloperToolsPalette();this.addAWSEnterpriseApplicationsPalette();this.addAWSGameDevelopmentPalette();this.addAWSGeneralPalette();this.addAWSInternetOfThingsPalette();this.addAWSManagementToolsPalette();this.addAWSMobileServicesPalette();this.addAWSNetworkingPalette();this.addAWSOnDemandWorkforcePalette();
+this.addEntry("atlassian error message field",function(){var b=new mxCell("Email",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("shrugg#atlassian.com",new mxGeometry(0,25,300,40),"rounded=1;arcSize=9;align=left;spacingLeft=5;strokeColor=#FFAB00;html=1;strokeWidth=2;fontSize=12");c.vertex=!0;var d=new mxCell("",new mxGeometry(1,.5,20,20),"shape=mxgraph.azure.azure_alert;fillColor=#FFAB00;strokeColor=none;html=1");
+d.geometry.relative=!0;d.geometry.offset=new mxPoint(-30,-10);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b,c],290,58,"Error message field")}),this.addEntry("atlassian error message field",function(){var b=new mxCell("Email",new mxGeometry(0,0,240,20),"fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11");b.vertex=!0;var c=new mxCell("shrugg#atlassian.com",new mxGeometry(0,25,300,40),"rounded=1;arcSize=9;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontSize=12");
+c.vertex=!0;var d=new mxCell("",new mxGeometry(1,.5,20,20),"shape=mxgraph.azure.azure_alert;fillColor=#FFAB00;strokeColor=none;html=1");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-30,-10);d.vertex=!0;c.insert(d);d=new mxCell("Please enter a valid address.",new mxGeometry(310,22,200,46),"rounded=1;arcSize=9;align=center;strokeColor=#DFE1E5;html=1;strokeWidth=1;fontSize=12;shadow=1");d.vertex=!0;return a.createVertexTemplateFromCells([b,c,d],290,58,"Error message field")})];this.addPalette("atlassian",
+"Atlassian",!1,mxUtils.bind(this,function(a){for(var c=0;c<b.length;c++)a.appendChild(b[c](a))}))}})();(function(){Sidebar.prototype.addAWSPalette=function(){this.addAWSAnalyticsPalette();this.addAWSApplicationServicesPalette();this.addAWSComputePalette();this.addAWSDatabasePalette();this.addAWSDeveloperToolsPalette();this.addAWSEnterpriseApplicationsPalette();this.addAWSGameDevelopmentPalette();this.addAWSGeneralPalette();this.addAWSInternetOfThingsPalette();this.addAWSManagementToolsPalette();this.addAWSMobileServicesPalette();this.addAWSNetworkingPalette();this.addAWSOnDemandWorkforcePalette();
 this.addAWSSDKPalette();this.addAWSSecurityAndIdentityPalette();this.addAWSStorageAndContentDeliveryPalette();this.addAWSGroupPalette()};Sidebar.prototype.addAWSAnalyticsPalette=function(){var a="dashed=0;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws2.";this.addPaletteFunctions("aws2Analytics","AWS / Analytics",!1,[this.createVertexTemplateEntry(a+"analytics.data_pipeline;strokeColor=none;",60,72,"","Data Pipeline",null,null,this.getTagsForStencil("mxgraph.aws.analytics","data pipeline","aws group amazon web service analytics").join(" ")),
 this.createVertexTemplateEntry(a+"analytics.elasticsearch;strokeColor=none;",60,72,"","ElasticSearch",null,null,this.getTagsForStencil("mxgraph.aws.analytics","elasticsearch","aws group amazon web service analytics").join(" ")),this.createVertexTemplateEntry(a+"analytics.emr;strokeColor=none;",60,72,"","EMR",null,null,this.getTagsForStencil("mxgraph.aws.analytics","emr","aws group amazon web service analytics").join(" ")),this.createVertexTemplateEntry(a+"compute_and_networking.emr_cluster;strokeColor=none;",
 49,55,"","EMR Cluster",null,null,this.getTagsForStencil("mxgraph.aws.analytics","emr cluster","aws group amazon web service analytics").join(" ")),this.createVertexTemplateEntry(a+"compute_and_networking.emr_engine;strokeColor=none;",74,53,"","EMR Engine",null,null,this.getTagsForStencil("mxgraph.aws.analytics","emr engine","aws group amazon web service analytics").join(" ")),this.createVertexTemplateEntry(a+"compute_and_networking.emr_hdfs_cluster;strokeColor=none;",54,56,"","EMR HDFS Cluster",null,
@@ -3897,14 +3894,14 @@ this.createVertexTemplateEntry(a+"storage_and_content_delivery.s3_bucket_with_ob
 "storage gateway","aws group amazon web service storage content delivery").join(" ")),this.createVertexTemplateEntry(a+"storage_and_content_delivery.storage_gateway_cached_volumn;strokeColor=none;",52,66,"","Storage Gateway Cached Volume",null,null,this.getTagsForStencil("mxgraph.aws.storageAndContentDelivery","storage gateway cached volume","aws group amazon web service storage content delivery").join(" ")),this.createVertexTemplateEntry(a+"storage_and_content_delivery.storage_gateway_non-cached_volumn;strokeColor=none;",
 52,66,"","Storage Gateway Non-Cached Volume",null,null,this.getTagsForStencil("mxgraph.aws.storageAndContentDelivery","storage gateway non cached volume","aws group amazon web service storage content delivery").join(" ")),this.createVertexTemplateEntry(a+"storage_and_content_delivery.storage_gateway_virtual_tape_library;strokeColor=none;",52,66,"","Storage Gateway Virtual Tape Library",null,null,this.getTagsForStencil("mxgraph.aws.storageAndContentDelivery","storage gateway virtual tape library",
 "aws group amazon web service storage content delivery").join(" ")),this.createVertexTemplateEntry(a+"storage_and_content_delivery.ebs_volume;strokeColor=none;",46,66,"","Volume",null,null,this.getTagsForStencil("mxgraph.aws.storageAndContentDelivery","volume","aws group amazon web service storage content delivery").join(" "))])};Sidebar.prototype.addAWSGroupPalette=function(){var a=this,b="dashed=0;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws.groups.";this.addPaletteFunctions("aws2Groups","AWS / Groups",
-!1,[this.createVertexTemplateEntry(b+"auto_scaling_group;fillColor=none;strokeColor=#000000;gradientColor=none;",200,200,"","Auto Scaling Group",null,null,this.getTagsForStencil("mxgraph.aws.groups","auto_scaling_group","aws group amazon web service ").join(" ")),this.createVertexTemplateEntry(b+"availability_zone;strokeColor=#f69721;fillColor=none;gradientColor=none;",200,200,"","Availability Zone",null,null,this.getTagsForStencil("mxgraph.aws.groups","availability_zone","aws group amazon web service ").join(" ")),
-this.addEntry("aws group amazon web service cloud",function(){var e=new mxCell("",new mxGeometry(0,30,200,200),b+"rrect;fillColor=none;strokeColor=#000000;gradientColor=none;");e.vertex=!0;var c=new mxCell("",new mxGeometry(10,0,70,40),b+"aws_cloud_icon;strokeColor=none;fillColor=#F69721;gradientColor=none;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,230,"AWS Cloud")}),this.addEntry("aws group amazon web service corporate data center",function(){var e=new mxCell("",new mxGeometry(0,
-20,200,200),b+"rrect;fillColor=none;strokeColor=#000000;gradientColor=none;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,30,40),b+"corporate_data_center_icon;strokeColor=none;fillColor=#6D6F70;gradientColor=none;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"Corporate Data Center")}),this.addEntry("aws group amazon web service ec2 instance content",function(){var e=new mxCell("",new mxGeometry(0,20,200,200),b+"rrect;fillColor=none;strokeColor=#000000;gradientColor=none;");
-e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,40,40),b+"rrect;strokeColor=none;fillColor=#F69721;gradientColor=none;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"EC2 Instance Contents")}),this.addEntry("aws group amazon web service EC2 Spot Fleet",function(){var e=new mxCell("",new mxGeometry(0,30,200,200),b+"rrect;fillColor=none;strokeColor=#000000;gradientColor=none;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,43,40),b+"ec2_spot_instance;strokeColor=none;gradientColor=none;");
-c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,230,"EC2 Spot Fleet")}),this.addEntry("aws group amazon web service elastic beanstalk container",function(){var e=new mxCell("",new mxGeometry(0,20,200,200),b+"rrect;fillColor=none;strokeColor=#000000;gradientColor=none;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,40,40),b+"elastic_beanstalk_container_icon;strokeColor=none;fillColor=#2A6A35;gradientColor=none;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,
-"Elastic Beanstalk Container")}),this.createVertexTemplateEntry(b+"region;strokeColor=#000000;fillColor=none;gradientColor=none;",200,200,"","Region",null,null,this.getTagsForStencil("mxgraph.aws.groups","region","aws group amazon web service ").join(" ")),this.createVertexTemplateEntry(b+"rrect;fillColor=none;strokeColor=#000000;gradientColor=none;",200,200,"","Security Group",null,null,this.getTagsForStencil("mxgraph.aws.groups","security","aws group amazon web service ").join(" ")),this.createVertexTemplateEntry(b+
-"rrect;fillColor=#F2F2F2;strokeColor=#000000;gradientColor=none;",200,200,"","Server Contents",null,null,this.getTagsForStencil("mxgraph.aws.groups","server content","aws group amazon web service ").join(" ")),this.addEntry("aws group amazon web service virtual private cloud",function(){var e=new mxCell("",new mxGeometry(0,30,200,200),b+"rrect;fillColor=none;strokeColor=#000000;gradientColor=none;");e.vertex=!0;var c=new mxCell("",new mxGeometry(10,0,70,40),b+"virtual_private_cloud_icon;strokeColor=none;fillColor=#282560;gradientColor=none;");
-c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,230,"Virtual Private Cloud")}),this.addEntry("aws group amazon web service virtual private cloud subnet vpc",function(){var e=new mxCell("",new mxGeometry(0,30,200,200),b+"rrect;fillColor=none;strokeColor=#000000;gradientColor=none;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,40,40),b+"vpc_subnet_icon;strokeColor=none;fillColor=#282560;gradientColor=none;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,230,"VPC Subnet")})])}})();(function(){Sidebar.prototype.addAWS3Palette=function(){this.addAWS3AnalyticsPalette();this.addAWS3ApplicationServicesPalette();this.addAWS3ArtificialIntelligencePalette();this.addAWS3BusinessProductivityPalette();this.addAWS3ComputePalette();this.addAWS3ContactCenterPalette();this.addAWS3DatabasePalette();this.addAWS3DesktopAndAppStreamingPalette();this.addAWS3DeveloperToolsPalette();this.addAWS3GameDevelopmentPalette();this.addAWS3GeneralPalette();this.addAWS3GroupsPalette();this.addAWS3InternetOfThingsPalette();
+!1,[this.createVertexTemplateEntry(b+"auto_scaling_group;fillColor=none;gradientColor=none;",200,200,"","Auto Scaling Group",null,null,this.getTagsForStencil("mxgraph.aws.groups","auto_scaling_group","aws group amazon web service ").join(" ")),this.createVertexTemplateEntry(b+"availability_zone;strokeColor=#f69721;fillColor=none;gradientColor=none;",200,200,"","Availability Zone",null,null,this.getTagsForStencil("mxgraph.aws.groups","availability_zone","aws group amazon web service ").join(" ")),
+this.addEntry("aws group amazon web service cloud",function(){var e=new mxCell("",new mxGeometry(0,30,200,200),b+"rrect;fillColor=none;gradientColor=none;");e.vertex=!0;var c=new mxCell("",new mxGeometry(10,0,70,40),b+"aws_cloud_icon;strokeColor=none;fillColor=#F69721;gradientColor=none;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,230,"AWS Cloud")}),this.addEntry("aws group amazon web service corporate data center",function(){var e=new mxCell("",new mxGeometry(0,20,200,200),b+"rrect;fillColor=none;gradientColor=none;");
+e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,30,40),b+"corporate_data_center_icon;strokeColor=none;fillColor=#6D6F70;gradientColor=none;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"Corporate Data Center")}),this.addEntry("aws group amazon web service ec2 instance content",function(){var e=new mxCell("",new mxGeometry(0,20,200,200),b+"rrect;fillColor=none;gradientColor=none;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,40,40),b+"rrect;strokeColor=none;fillColor=#F69721;gradientColor=none;");
+c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"EC2 Instance Contents")}),this.addEntry("aws group amazon web service EC2 Spot Fleet",function(){var e=new mxCell("",new mxGeometry(0,30,200,200),b+"rrect;fillColor=none;gradientColor=none;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,43,40),b+"ec2_spot_instance;strokeColor=none;gradientColor=none;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,230,"EC2 Spot Fleet")}),this.addEntry("aws group amazon web service elastic beanstalk container",
+function(){var e=new mxCell("",new mxGeometry(0,20,200,200),b+"rrect;fillColor=none;gradientColor=none;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,40,40),b+"elastic_beanstalk_container_icon;strokeColor=none;fillColor=#2A6A35;gradientColor=none;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"Elastic Beanstalk Container")}),this.createVertexTemplateEntry(b+"region;fillColor=none;gradientColor=none;",200,200,"","Region",null,null,this.getTagsForStencil("mxgraph.aws.groups",
+"region","aws group amazon web service ").join(" ")),this.createVertexTemplateEntry(b+"rrect;fillColor=none;gradientColor=none;",200,200,"","Security Group",null,null,this.getTagsForStencil("mxgraph.aws.groups","security","aws group amazon web service ").join(" ")),this.createVertexTemplateEntry(b+"rrect;fillColor=#F2F2F2;gradientColor=none;",200,200,"","Server Contents",null,null,this.getTagsForStencil("mxgraph.aws.groups","server content","aws group amazon web service ").join(" ")),this.addEntry("aws group amazon web service virtual private cloud",
+function(){var e=new mxCell("",new mxGeometry(0,30,200,200),b+"rrect;fillColor=none;gradientColor=none;");e.vertex=!0;var c=new mxCell("",new mxGeometry(10,0,70,40),b+"virtual_private_cloud_icon;strokeColor=none;fillColor=#282560;gradientColor=none;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,230,"Virtual Private Cloud")}),this.addEntry("aws group amazon web service virtual private cloud subnet vpc",function(){var e=new mxCell("",new mxGeometry(0,30,200,200),b+"rrect;fillColor=none;gradientColor=none;");
+e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,40,40),b+"vpc_subnet_icon;strokeColor=none;fillColor=#282560;gradientColor=none;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,230,"VPC Subnet")})])}})();(function(){Sidebar.prototype.addAWS3Palette=function(){this.addAWS3AnalyticsPalette();this.addAWS3ApplicationServicesPalette();this.addAWS3ArtificialIntelligencePalette();this.addAWS3BusinessProductivityPalette();this.addAWS3ComputePalette();this.addAWS3ContactCenterPalette();this.addAWS3DatabasePalette();this.addAWS3DesktopAndAppStreamingPalette();this.addAWS3DeveloperToolsPalette();this.addAWS3GameDevelopmentPalette();this.addAWS3GeneralPalette();this.addAWS3GroupsPalette();this.addAWS3InternetOfThingsPalette();
 this.addAWS3ManagementToolsPalette();this.addAWS3MessagingPalette();this.addAWS3MigrationPalette();this.addAWS3MobileServicesPalette();this.addAWS3NetworkAndContentDeliveryPalette();this.addAWS3OnDemandWorkforcePalette();this.addAWS3SDKPalette();this.addAWS3SecurityIdentityAndCompliancePalette();this.addAWS3StoragePalette()};Sidebar.prototype.addAWS3AnalyticsPalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+
 "=mxgraph.aws3.";this.addPaletteFunctions("aws3Analytics","AWS17 / Analytics",!1,[this.createVertexTemplateEntry(a+"athena;fillColor=#F58534;gradientColor=none;",76.5,76.5,"","Athena",null,null,this.getTagsForStencil("mxgraph.aws3","athena","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(a+"cloudsearch;fillColor=#F58534;gradientColor=none;",76.5,93,"","CloudSearch",null,null,this.getTagsForStencil("mxgraph.aws3","cloudsearch cloud search","aws amazon web service analytics").join(" ")),
 this.createVertexTemplateEntry(a+"elasticsearch_service;fillColor=#F58534;gradientColor=none;",67.5,81,"","ElasticSearch Service",null,null,this.getTagsForStencil("mxgraph.aws3","elasticsearch elastic search service","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(a+"emr;fillColor=#F58534;gradientColor=none;",67.5,81,"","EMR",null,null,this.getTagsForStencil("mxgraph.aws3","emr","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(a+"kinesis;fillColor=#F58534;gradientColor=none;",
@@ -3933,7 +3930,7 @@ this.createVertexTemplateEntry(b+"elastic_beanstalk;fillColor=#F58534;gradientCo
 69,72,"","Internet Gateway",null,null,this.getTagsForStencil("mxgraph.aws3","internet gateway","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"flow_logs;fillColor=#F58534;gradientColor=none;",69,72,"","Flow Logs",null,null,this.getTagsForStencil("mxgraph.aws3","flow logs","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"customer_gateway;fillColor=#F58534;gradientColor=none;",69,72,"","Customer Gateway",null,null,this.getTagsForStencil("mxgraph.aws3",
 "customer gateway","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"instance_with_cloudwatch;fillColor=#F58534;gradientColor=none;",60,63,"","Instance with CloudWatch",null,null,this.getTagsForStencil("mxgraph.aws3","instance with cloudwatch","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"elastic_network_adapter;fillColor=#F58534;gradientColor=none;",75,90,"","Elastic Network Adapter",null,null,this.getTagsForStencil("mxgraph.aws3","elastic network adapter",
 "aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"optimized_instance;fillColor=#F58534;gradientColor=none;",60,63,"","Optimized Instance",null,null,this.getTagsForStencil("mxgraph.aws3","optimized instance","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"rescue;fillColor=#F58534;gradientColor=none;",63,66,"","Rescue",null,null,this.getTagsForStencil("mxgraph.aws3","rescue","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+
-"spot_instance;fillColor=#F58534;gradientColor=none;",60,63,"","Spot Instance",null,null,this.getTagsForStencil("mxgraph.aws3","spot instance","aws amazon web service compute").join(" ")),this.addEntry("aws amazon web service computeSpot Fleet",function(){var e=new mxCell("",new mxGeometry(0,30,200,200),"rounded=1;fillColor=none;strokeColor=#000000;gradientColor=none;arcSize=10;dashed=1;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,43,40),b+"spot_instance;fillColor=#F58534;strokeColor=none;gradientColor=none;");
+"spot_instance;fillColor=#F58534;gradientColor=none;",60,63,"","Spot Instance",null,null,this.getTagsForStencil("mxgraph.aws3","spot instance","aws amazon web service compute").join(" ")),this.addEntry("aws amazon web service computeSpot Fleet",function(){var e=new mxCell("",new mxGeometry(0,30,200,200),"rounded=1;fillColor=none;gradientColor=none;arcSize=10;dashed=1;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,43,40),b+"spot_instance;fillColor=#F58534;strokeColor=none;gradientColor=none;");
 c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,230,"Spot Fleet")}),this.createVertexTemplateEntry(b+"ecr;fillColor=#F58534;gradientColor=none;",69,72,"","ECR",null,null,this.getTagsForStencil("mxgraph.aws3","ecr","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"vpn_gateway;fillColor=#F58534;gradientColor=none;",69,72,"","VPN Gateway",null,null,this.getTagsForStencil("mxgraph.aws3","vpn gateway virtual private network","aws amazon web service compute").join(" ")),
 this.createVertexTemplateEntry(b+"deployment;fillColor=#F58534;gradientColor=none;",55.5,73.5,"","Deployment",null,null,this.getTagsForStencil("mxgraph.aws3","deployment","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"vpn_connection;fillColor=#F58534;gradientColor=none;",58.5,48,"","VPN Connection",null,null,this.getTagsForStencil("mxgraph.aws3","vpn connection virtual private network","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"vpc_peering;fillColor=#F58534;gradientColor=none;",
 69,72,"","VPC Peering",null,null,this.getTagsForStencil("mxgraph.aws3","vpc peering virtual private cloud","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"application;fillColor=#F58534;gradientColor=none;",34.5,64.5,"","Application",null,null,this.getTagsForStencil("mxgraph.aws3","application","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"ec2_compute_container;fillColor=#F58534;gradientColor=none;",60,34.5,"","EC2 Compute Container",
@@ -3972,115 +3969,114 @@ null,null,this.getTagsForStencil("mxgraph.aws3","forums","aws amazon web service
 this.createVertexTemplateEntry(a+"disk;fillColor=#7D7C7C;gradientColor=none;",61.5,64.5,"","Disk",null,null,this.getTagsForStencil("mxgraph.aws3","disk","aws amazon web service general").join(" ")),this.createVertexTemplateEntry(a+"generic_database;fillColor=#7D7C7C;gradientColor=none;",49.5,64.5,"","Generic Database",null,null,this.getTagsForStencil("mxgraph.aws3","generic database","aws amazon web service general").join(" ")),this.createVertexTemplateEntry(a+"internet;fillColor=#D2D3D3;gradientColor=none;",
 79.5,79.5,"","Internet",null,null,this.getTagsForStencil("mxgraph.aws3","internet","aws amazon web service general").join(" ")),this.createVertexTemplateEntry(a+"internet_2;fillColor=#D2D3D3;gradientColor=none;",79.5,54,"","Internet",null,null,this.getTagsForStencil("mxgraph.aws3","internet","aws amazon web service general").join(" ")),this.createVertexTemplateEntry(a+"internet_3;fillColor=#D2D3D3;gradientColor=none;",79.5,54,"","Internet",null,null,this.getTagsForStencil("mxgraph.aws3","internet",
 "aws amazon web service general").join(" ")),this.createVertexTemplateEntry(a+"office_building;fillColor=#7D7C7C;gradientColor=none;",33,79.5,"","Office Building",null,null,this.getTagsForStencil("mxgraph.aws3","office building","aws amazon web service general").join(" ")),this.createVertexTemplateEntry(a+"saml_token;fillColor=#D2D3D3;gradientColor=none;",69,72,"","SAML Token",null,null,this.getTagsForStencil("mxgraph.aws3","saml token","aws amazon web service general").join(" ")),this.createVertexTemplateEntry(a+
-"ssl_padlock;fillColor=#D2D3D3;gradientColor=none;",63,78,"","SSL Padlock",null,null,this.getTagsForStencil("mxgraph.aws3","ssl padlock","aws amazon web service general").join(" "))])};Sidebar.prototype.addAWS3GroupsPalette=function(){var a=this,b="dashed=0;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Groups","AWS17 / Groups",!1,[this.createVertexTemplateEntry("rounded=1;arcSize=10;dashed=1;strokeColor=#000000;fillColor=none;gradientColor=none;dashPattern=8 3 1 3;strokeWidth=2;",
-199.5,199.5,"","Auto Scaling Group",null,null,this.getTagsForStencil("mxgraph.aws3","auto scaling group","aws group amazon web service group groups").join(" ")),this.createVertexTemplateEntry("rounded=1;arcSize=10;dashed=1;strokeColor=#F59D56;fillColor=none;gradientColor=none;dashPattern=8 4;strokeWidth=2;",199.5,199.5,"","Availability Zone",null,null,this.getTagsForStencil("mxgraph.aws3","availability zone","aws group amazon web service group groups").join(" ")),this.createVertexTemplateEntry("rounded=1;arcSize=10;dashed=1;strokeColor=#000000;fillColor=none;gradientColor=none;dashPattern=1 1;strokeWidth=2;",
+"ssl_padlock;fillColor=#D2D3D3;gradientColor=none;",63,78,"","SSL Padlock",null,null,this.getTagsForStencil("mxgraph.aws3","ssl padlock","aws amazon web service general").join(" "))])};Sidebar.prototype.addAWS3GroupsPalette=function(){var a=this,b="dashed=0;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Groups","AWS17 / Groups",!1,[this.createVertexTemplateEntry("rounded=1;arcSize=10;dashed=1;fillColor=none;gradientColor=none;dashPattern=8 3 1 3;strokeWidth=2;",199.5,
+199.5,"","Auto Scaling Group",null,null,this.getTagsForStencil("mxgraph.aws3","auto scaling group","aws group amazon web service group groups").join(" ")),this.createVertexTemplateEntry("rounded=1;arcSize=10;dashed=1;strokeColor=#F59D56;fillColor=none;gradientColor=none;dashPattern=8 4;strokeWidth=2;",199.5,199.5,"","Availability Zone",null,null,this.getTagsForStencil("mxgraph.aws3","availability zone","aws group amazon web service group groups").join(" ")),this.createVertexTemplateEntry("rounded=1;arcSize=10;dashed=1;fillColor=none;gradientColor=none;dashPattern=1 1;strokeWidth=2;",
 199.5,199.5,"","Region",null,null,this.getTagsForStencil("mxgraph.aws3","region","aws group amazon web service group groups").join(" ")),this.createVertexTemplateEntry("rounded=1;arcSize=10;dashed=1;strokeColor=#ff0000;fillColor=none;gradientColor=none;dashPattern=8 4;strokeWidth=2;",199.5,199.5,"","Security Group",null,null,this.getTagsForStencil("mxgraph.aws3","security group","aws group amazon web service group groups").join(" ")),this.addEntry("aws group amazon web service group groupselastic beanstalk container",
-function(){var e=new mxCell("",new mxGeometry(0,20,200,200),"rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,30,41),b+"elastic_beanstalk;fillColor=#F58536;gradientColor=none;dashed=0;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"Elastic Beanstalk Container")}),this.addEntry("aws group amazon web service group groupsec2 instance container",function(){var e=new mxCell("",new mxGeometry(0,
-20,200,200),"rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,40,41),b+"instance;fillColor=#F58536;gradientColor=none;dashed=0;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"EC2 Instance Container")}),this.addEntry("aws group amazon web service group groupsvpc subnet",function(){var e=new mxCell("",new mxGeometry(0,20,200,200),"rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;");
+function(){var e=new mxCell("",new mxGeometry(0,20,200,200),"rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,30,41),b+"elastic_beanstalk;fillColor=#F58536;gradientColor=none;dashed=0;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"Elastic Beanstalk Container")}),this.addEntry("aws group amazon web service group groupsec2 instance container",function(){var e=new mxCell("",new mxGeometry(0,20,200,
+200),"rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,40,41),b+"instance;fillColor=#F58536;gradientColor=none;dashed=0;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"EC2 Instance Container")}),this.addEntry("aws group amazon web service group groupsvpc subnet",function(){var e=new mxCell("",new mxGeometry(0,20,200,200),"rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;");
 e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,30,35),b+"permissions;fillColor=#D9A741;gradientColor=none;dashed=0;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"VPC Subnet")}),this.createVertexTemplateEntry("rounded=1;arcSize=10;strokeColor=none;fillColor=#DBDBDB;gradientColor=none;",199.5,199.5,"","Server Contents",null,null,this.getTagsForStencil("mxgraph.aws3","server contents","aws group amazon web service group groups").join(" ")),this.addEntry("aws group amazon web service group groupsvirtual private cloud",
-function(){var e=new mxCell("",new mxGeometry(0,20,200,200),"rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,52,36),b+"virtual_private_cloud;fillColor=#F58536;gradientColor=none;dashed=0;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"Virtual Private Cloud")}),this.addEntry("aws group amazon web service group groupscloud",function(){var e=new mxCell("",new mxGeometry(0,20,
-200,200),"rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,52,36),b+"cloud;fillColor=#F58536;gradientColor=none;dashed=0;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"AWS Cloud")}),this.addEntry("aws group amazon web service group groupscorporate data center",function(){var e=new mxCell("",new mxGeometry(0,20,200,200),"rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;");
-e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,30,42),b+"corporate_data_center;fillColor=#7D7C7C;gradientColor=none;dashed=0;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"Corporate Data Center")})])};Sidebar.prototype.addAWS3InternetOfThingsPalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Internet of Things","AWS17 / Internet of Things",
-!1,[this.createVertexTemplateEntry(a+"aws_iot;fillColor=#5294CF;gradientColor=none;",67.5,81,"","AWS IoT",null,null,this.getTagsForStencil("mxgraph.aws3","iot internet of things","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"greengrass;fillColor=#5294CF;gradientColor=none;",76.5,93,"","Greengrass",null,null,this.getTagsForStencil("mxgraph.aws3","greengrass","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+
-"action;fillColor=#5294CF;gradientColor=none;",63,64.5,"","Action",null,null,this.getTagsForStencil("mxgraph.aws3","action","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"actuator;fillColor=#5294CF;gradientColor=none;",76.5,90,"","Actuator",null,null,this.getTagsForStencil("mxgraph.aws3","actuator","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"certificate;fillColor=#5294CF;gradientColor=none;",63,85.5,"",
-"Certificate",null,null,this.getTagsForStencil("mxgraph.aws3","certificate","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"desired_state;fillColor=#5294CF;gradientColor=none;",60,63,"","Desired State",null,null,this.getTagsForStencil("mxgraph.aws3","desired state","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"hardware_board;fillColor=#5294CF;gradientColor=none;",84,100.5,"","Hardware Board",null,null,this.getTagsForStencil("mxgraph.aws3",
-"hardware board","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"http_protocol;fillColor=#5294CF;gradientColor=none;",63,66,"","HTTP Protocol",null,null,this.getTagsForStencil("mxgraph.aws3","http protocol","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"http_2_protocol;fillColor=#5294CF;gradientColor=none;",63,66,"","HTTP/2 Protocol",null,null,this.getTagsForStencil("mxgraph.aws3","http 2 protocol","aws amazon web service iot internet of things").join(" ")),
-this.createVertexTemplateEntry(a+"lambda_function;fillColor=#5294CF;gradientColor=none;",60,63,"","Lambda Function",null,null,this.getTagsForStencil("mxgraph.aws3","lambda function","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"mqtt_protocol;fillColor=#5294CF;gradientColor=none;",63,66,"","MQTT Protocol",null,null,this.getTagsForStencil("mxgraph.aws3","mqtt protocol","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+
-"policy;fillColor=#5294CF;gradientColor=none;",55.5,90,"","Policy",null,null,this.getTagsForStencil("mxgraph.aws3","policy","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"reported_state;fillColor=#5294CF;gradientColor=none;",60,63,"","Reported State",null,null,this.getTagsForStencil("mxgraph.aws3","reported state","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"rule;fillColor=#5294CF;gradientColor=none;",
-49.5,99,"","Rule",null,null,this.getTagsForStencil("mxgraph.aws3","rule","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"sensor;fillColor=#5294CF;gradientColor=none;",76.5,90,"","Sensor",null,null,this.getTagsForStencil("mxgraph.aws3","sensor","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"servo;fillColor=#5294CF;gradientColor=none;",84,60,"","Servo",null,null,this.getTagsForStencil("mxgraph.aws3","servo",
-"aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"shadow;fillColor=#5294CF;gradientColor=none;",85.5,91.5,"","Shadow",null,null,this.getTagsForStencil("mxgraph.aws3","shadow","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"simulator;fillColor=#5294CF;gradientColor=none;",75,78,"","Simulator",null,null,this.getTagsForStencil("mxgraph.aws3","simulator","aws amazon web service iot internet of things").join(" ")),
-this.createVertexTemplateEntry(a+"topic;fillColor=#5294CF;gradientColor=none;",49.5,66,"","Topic",null,null,this.getTagsForStencil("mxgraph.aws3","topic","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"bank;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Bank",null,null,this.getTagsForStencil("mxgraph.aws3","bank","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"bicycle;fillColor=#5294CF;gradientColor=none;",
-79.5,79.5,"","Bicycle",null,null,this.getTagsForStencil("mxgraph.aws3","bicycle","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"camera;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Camera",null,null,this.getTagsForStencil("mxgraph.aws3","camera","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"utility;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Utility",null,null,this.getTagsForStencil("mxgraph.aws3",
-"utility","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"cart;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Cart",null,null,this.getTagsForStencil("mxgraph.aws3","cart","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"car;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Car",null,null,this.getTagsForStencil("mxgraph.aws3","car","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+
-"windfarm;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Windfarm",null,null,this.getTagsForStencil("mxgraph.aws3","windfarm","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"house;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","House",null,null,this.getTagsForStencil("mxgraph.aws3","house","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"generic;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"",
-"Generic",null,null,this.getTagsForStencil("mxgraph.aws3","generic","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"factory;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Factory",null,null,this.getTagsForStencil("mxgraph.aws3","factory","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"coffee_pot;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Coffee Pot",null,null,this.getTagsForStencil("mxgraph.aws3",
-"coffee pot","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"door_lock;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Door Lock",null,null,this.getTagsForStencil("mxgraph.aws3","door lock","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"lightbulb;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Lightbulb",null,null,this.getTagsForStencil("mxgraph.aws3","lightbulb","aws amazon web service iot internet of things").join(" ")),
-this.createVertexTemplateEntry(a+"medical_emergency;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Medical Emergency",null,null,this.getTagsForStencil("mxgraph.aws3","medical emergency","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"police_emergency;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Police Emergency",null,null,this.getTagsForStencil("mxgraph.aws3","police emergency","aws amazon web service iot internet of things").join(" ")),
-this.createVertexTemplateEntry(a+"thermostat;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Thermostat",null,null,this.getTagsForStencil("mxgraph.aws3","thermostat","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"travel;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Travel",null,null,this.getTagsForStencil("mxgraph.aws3","travel","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"echo;fillColor=#205B99;gradientColor=none;",
-40.5,93,"","Echo",null,null,this.getTagsForStencil("mxgraph.aws3","echo","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"alexa_skill;fillColor=#5294CF;gradientColor=none;",60,63,"","Alexa Skill",null,null,this.getTagsForStencil("mxgraph.aws3","alexa skill","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"alexa_smart_home_skill;fillColor=#5294CF;gradientColor=none;",90,70.5,"","Alexa Smart Home Skill",null,null,
-this.getTagsForStencil("mxgraph.aws3","alexa smart home skill","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"alexa_voice_service;fillColor=#5294CF;gradientColor=none;",60,63,"","Alexa Voice Service",null,null,this.getTagsForStencil("mxgraph.aws3","alexa voice service","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"alexa_enabled_device;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Alexa Enabled Device",
-null,null,this.getTagsForStencil("mxgraph.aws3","alexa enabled device","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"fire_tv;fillColor=#5294CF;gradientColor=none;",75,55.5,"","Fire TV",null,null,this.getTagsForStencil("mxgraph.aws3","fire tv","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"fire_tv_stick;fillColor=#5294CF;gradientColor=none;",85.5,33,"","Fire TV Stick",null,null,this.getTagsForStencil("mxgraph.aws3",
-"fire tv stick","aws amazon web service iot internet of things").join(" "))])};Sidebar.prototype.addAWS3ManagementToolsPalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Management Tools","AWS17 / Management Tools",!1,[this.createVertexTemplateEntry(a+"cloudwatch;fillColor=#759C3E;gradientColor=none;",82.5,93,"","CloudWatch",null,null,this.getTagsForStencil("mxgraph.aws3",
-"cloudwatch cloud watch","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"cloudformation;fillColor=#759C3E;gradientColor=none;",76.5,93,"","CloudFormation",null,null,this.getTagsForStencil("mxgraph.aws3","cloudformation cloud formation","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"cloudtrail;fillColor=#759C3E;gradientColor=none;",76.5,93,"","CloudTrail",null,null,this.getTagsForStencil("mxgraph.aws3","cloudtrail cloud trail",
-"aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"config;fillColor=#759C3E;gradientColor=none;",76.5,93,"","Config",null,null,this.getTagsForStencil("mxgraph.aws3","config","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"managed_services;fillColor=#759C3E;gradientColor=none;",76.5,93,"","Managed Services",null,null,this.getTagsForStencil("mxgraph.aws3","managed services","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(a+"opsworks;fillColor=#759C3E;gradientColor=none;",76.5,93,"","OpsWorks",null,null,this.getTagsForStencil("mxgraph.aws3","opsworks ops works","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"service_catalog;fillColor=#759C3E;gradientColor=none;",76.5,93,"","Service Catalog",null,null,this.getTagsForStencil("mxgraph.aws3","service catalog","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"trusted_advisor;fillColor=#759C3E;gradientColor=none;",
-67.5,81,"","Trusted Advisor",null,null,this.getTagsForStencil("mxgraph.aws3","trusted advisor","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"alarm;fillColor=#759C3E;gradientColor=none;",54,66,"","Alarm",null,null,this.getTagsForStencil("mxgraph.aws3","alarm","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"event_time_based;fillColor=#759C3E;gradientColor=none;",63,82.5,"","Event (Time Based)",null,null,this.getTagsForStencil("mxgraph.aws3",
-"event time based","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"event_event_based;fillColor=#759C3E;gradientColor=none;",60,82.5,"","Event (Event Based)",null,null,this.getTagsForStencil("mxgraph.aws3","event based","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"config_rule;fillColor=#759C3E;gradientColor=none;",55.5,72,"","Config Rule",null,null,this.getTagsForStencil("mxgraph.aws3","config rule","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(a+"automation;fillColor=#759C3E;gradientColor=none;",78,81,"","Automation",null,null,this.getTagsForStencil("mxgraph.aws3","automation","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"documents;fillColor=#759C3E;gradientColor=none;",90,100.5,"","Documents",null,null,this.getTagsForStencil("mxgraph.aws3","documents","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"inventory;fillColor=#759C3E;gradientColor=none;",
-90,105,"","Inventory",null,null,this.getTagsForStencil("mxgraph.aws3","inventory","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"maintenance_window;fillColor=#759C3E;gradientColor=none;",75,78,"","Maintenance Window",null,null,this.getTagsForStencil("mxgraph.aws3","maintenance window","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"parameter_store;fillColor=#759C3E;gradientColor=none;",75,102,"","Parameter Store",null,
-null,this.getTagsForStencil("mxgraph.aws3","parameter store","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"patch_manager;fillColor=#759C3E;gradientColor=none;",85.5,90,"","Patch Manager",null,null,this.getTagsForStencil("mxgraph.aws3","patch manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"run_command;fillColor=#759C3E;gradientColor=none;",114,82.5,"","Run Command",null,null,this.getTagsForStencil("mxgraph.aws3",
-"run command","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"state_manager;fillColor=#759C3E;gradientColor=none;",79.5,82.5,"","State Manager",null,null,this.getTagsForStencil("mxgraph.aws3","state manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"ec2_systems_manager;fillColor=#759C3E;gradientColor=none;",79.5,82.5,"","EC2 Systems Manager",null,null,this.getTagsForStencil("mxgraph.aws3","ec2 systems manager","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(a+"stack_aws_cloudformation;fillColor=#759C3E;gradientColor=none;",73.5,58.5,"","Stack AWS CloudFormation",null,null,this.getTagsForStencil("mxgraph.aws3","stack cloudformation cloud formation","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"change_set;fillColor=#759C3E;gradientColor=none;",55.5,64.5,"","Change Set",null,null,this.getTagsForStencil("mxgraph.aws3","change set","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(a+"template;fillColor=#759C3E;gradientColor=none;",55.5,64.5,"","Template",null,null,this.getTagsForStencil("mxgraph.aws3","template","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"apps;fillColor=#759C3E;gradientColor=none;",81,79.5,"","Apps",null,null,this.getTagsForStencil("mxgraph.aws3","apps","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"deployments;fillColor=#759C3E;gradientColor=none;",
-81,76.5,"","Deployments",null,null,this.getTagsForStencil("mxgraph.aws3","deployments","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"instances_2;fillColor=#759C3E;gradientColor=none;",81,81,"","Instances",null,null,this.getTagsForStencil("mxgraph.aws3","instances","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"layers;fillColor=#759C3E;gradientColor=none;",81,79.5,"","Layers",null,null,this.getTagsForStencil("mxgraph.aws3",
-"layers","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"monitoring;fillColor=#759C3E;gradientColor=none;",81,67.5,"","Monitoring",null,null,this.getTagsForStencil("mxgraph.aws3","monitoring","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"permissions;fillColor=#759C3E;gradientColor=none;",67.5,79.5,"","Permissions",null,null,this.getTagsForStencil("mxgraph.aws3","permissions","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(a+"resources;fillColor=#759C3E;gradientColor=none;",67.5,79.5,"","Resources",null,null,this.getTagsForStencil("mxgraph.aws3","resources","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"stack_aws_opsworks;fillColor=#759C3E;gradientColor=none;",79.5,79.5,"","Stack AWS OpsWorks",null,null,this.getTagsForStencil("mxgraph.aws3","stack opsworks ops works","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+
-"checklist;fillColor=#759C3E;gradientColor=none;",55.5,64.5,"","Checklist",null,null,this.getTagsForStencil("mxgraph.aws3","checklist","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"checklist_cost;fillColor=#759C3E;gradientColor=none;",67.5,75,"","Checklist Cost",null,null,this.getTagsForStencil("mxgraph.aws3","checklist cost","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"checklist_fault_tolerance;fillColor=#759C3E;gradientColor=none;",
-57,72,"","Checklist Fault Tolerance",null,null,this.getTagsForStencil("mxgraph.aws3","checklist fault tolerance","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"checklist_performance;fillColor=#759C3E;gradientColor=none;",61.5,73.5,"","Checklist Performance",null,null,this.getTagsForStencil("mxgraph.aws3","checklist performance","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"checklist_security;fillColor=#759C3E;gradientColor=none;",
-54,69,"","Checklist Security",null,null,this.getTagsForStencil("mxgraph.aws3","checklist security","aws amazon web service management tools").join(" "))])};Sidebar.prototype.addAWS3MessagingPalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Messaging","AWS17 / Messaging",!1,[this.createVertexTemplateEntry(a+"pinpoint;fillColor=#AD688B;gradientColor=none;",76.5,
-87,"","Pinpoint",null,null,this.getTagsForStencil("mxgraph.aws3","pinpoint","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"ses;fillColor=#D9A741;gradientColor=none;",79.5,93,"","SES",null,null,this.getTagsForStencil("mxgraph.aws3","ses","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"sns;fillColor=#D9A741;gradientColor=none;",76.5,76.5,"","SNS",null,null,this.getTagsForStencil("mxgraph.aws3","sns","aws amazon web service messaging").join(" ")),
-this.createVertexTemplateEntry(a+"sqs;fillColor=#D9A741;gradientColor=none;",76.5,93,"","SQS",null,null,this.getTagsForStencil("mxgraph.aws3","sqs","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"email;fillColor=#D9A741;gradientColor=none;",81,61.5,"","Email",null,null,this.getTagsForStencil("mxgraph.aws3","email","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"message;fillColor=#D9A741;gradientColor=none;",42,49.5,"","Message",null,
-null,this.getTagsForStencil("mxgraph.aws3","message","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"queue;fillColor=#D9A741;gradientColor=none;",73.5,48,"","Queue",null,null,this.getTagsForStencil("mxgraph.aws3","queue","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"email_notification;fillColor=#D9A741;gradientColor=none;",100.5,63,"","Email Notification",null,null,this.getTagsForStencil("mxgraph.aws3","email notification","aws amazon web service messaging").join(" ")),
-this.createVertexTemplateEntry(a+"http_notification;fillColor=#D9A741;gradientColor=none;",100.5,63,"","HTTP Notification",null,null,this.getTagsForStencil("mxgraph.aws3","http notification","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"topic_2;fillColor=#D9A741;gradientColor=none;",93,58.5,"","Topic",null,null,this.getTagsForStencil("mxgraph.aws3","topic","aws amazon web service messaging").join(" "))])};Sidebar.prototype.addAWS3MigrationPalette=function(){var a=
-"outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Migration","AWS17 / Migration",!1,[this.createVertexTemplateEntry(a+"snowball;fillColor=#E05243;gradientColor=none;",67.5,81,"","Snowball",null,null,this.getTagsForStencil("mxgraph.aws3","snowball","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(a+"server_migration_service;fillColor=#5294CF;gradientColor=none;",
-76.5,93,"","Server Migration Service",null,null,this.getTagsForStencil("mxgraph.aws3","server migration service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(a+"import_export;fillColor=#E05243;gradientColor=none;",64.5,63,"","Import/Export",null,null,this.getTagsForStencil("mxgraph.aws3","Import Export","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(a+"database_migration_service;fillColor=#5294CF;gradientColor=none;",72,81,"","Database Migration Service",
-null,null,this.getTagsForStencil("mxgraph.aws3","database migration service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(a+"database_migration_workflow_job;fillColor=#5294CF;gradientColor=none;pointerEvents=1",46.5,87,"","Database Migration Workflow Job",null,null,this.getTagsForStencil("mxgraph.aws3","database migration workflow job","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(a+"application_discovery_service;fillColor=#5294CF;gradientColor=none;",
-76.5,93,"","Application Discovery Service",null,null,this.getTagsForStencil("mxgraph.aws3","application discovery service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(a+"migration_hub_2;fillColor=#ABABAB;gradientColor=none;pointerEvents=1",114,121.5,"","Migration Hub",null,null,this.getTagsForStencil("mxgraph.aws3","migration hub","aws amazon web service migration").join(" "))])};Sidebar.prototype.addAWS3MobileServicesPalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+
-mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Mobile Services","AWS17 / Mobile Services",!1,[this.createVertexTemplateEntry(a+"api_gateway;fillColor=#D9A741;gradientColor=none;",76.5,93,"","API Gateway",null,null,this.getTagsForStencil("mxgraph.aws3","api gateway","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(a+"cognito;fillColor=#AD688B;gradientColor=none;",76.5,93,"","Cognito",null,null,this.getTagsForStencil("mxgraph.aws3","cognito",
-"aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(a+"mobile_analytics;fillColor=#AD688B;gradientColor=none;",90,93,"","Mobile Analytics",null,null,this.getTagsForStencil("mxgraph.aws3","mobile analytics","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(a+"pinpoint;fillColor=#AD688B;gradientColor=none;",76.5,87,"","Pinpoint",null,null,this.getTagsForStencil("mxgraph.aws3","pinpoint","aws amazon web service mobile services").join(" ")),
-this.createVertexTemplateEntry(a+"device_farm;fillColor=#AD688B;gradientColor=none;",76.5,93,"","Device Farm",null,null,this.getTagsForStencil("mxgraph.aws3","device farm","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(a+"mobile_hub;fillColor=#AD688A;gradientColor=#F58435;gradientDirection=west;pointerEvents=1",75,81,"","Mobile Hub",null,null,this.getTagsForStencil("mxgraph.aws3","mobile hub","aws amazon web service mobile services").join(" "))])};Sidebar.prototype.addAWS3NetworkAndContentDeliveryPalette=
-function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Networking and Content Delivery","AWS17 / Network and Content Delivery",!1,[this.createVertexTemplateEntry(a+"cloudfront;fillColor=#F58536;gradientColor=none;",76.5,93,"","CloudFront",null,null,this.getTagsForStencil("mxgraph.aws3","cloudfront cloud front","aws amazon web service network and content delivery").join(" ")),
-this.createVertexTemplateEntry(a+"route_53;fillColor=#F58536;gradientColor=none;",70.5,85.5,"","Route 53",null,null,this.getTagsForStencil("mxgraph.aws3","route 53","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"vpc;fillColor=#F58536;gradientColor=none;",67.5,81,"","VPC",null,null,this.getTagsForStencil("mxgraph.aws3","vpc virtual private cloud","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"network_access_controllist;fillColor=#F58534;gradientColor=none;",
-69,72,"","Network Access Controllist",null,null,this.getTagsForStencil("mxgraph.aws3","network access controllist","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"elastic_load_balancing;fillColor=#F58536;gradientColor=none;",76.5,93,"","Elastic Load Balancing",null,null,this.getTagsForStencil("mxgraph.aws3","elastic load balancing","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"direct_connect;fillColor=#F58536;gradientColor=none;",
-67.5,81,"","Direct Connect",null,null,this.getTagsForStencil("mxgraph.aws3","direct connect","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"hosted_zone;fillColor=#F58536;gradientColor=none;",63,64.5,"","Hosted Zone",null,null,this.getTagsForStencil("mxgraph.aws3","hosted zone","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"route_table;fillColor=#F58536;gradientColor=none;",75,69,"","Route Table",
-null,null,this.getTagsForStencil("mxgraph.aws3","route table","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"customer_gateway;fillColor=#F58536;gradientColor=none;",69,72,"","Customer Gateway",null,null,this.getTagsForStencil("mxgraph.aws3","customer gateway","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"endpoints;fillColor=#F58536;gradientColor=none;",69,72,"","Endpoints",null,null,this.getTagsForStencil("mxgraph.aws3",
-"endpoints","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"flow_logs;fillColor=#F58536;gradientColor=none;",69,72,"","Flow Logs",null,null,this.getTagsForStencil("mxgraph.aws3","flow logs","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"internet_gateway;fillColor=#F58536;gradientColor=none;",69,72,"","Internet Gateway",null,null,this.getTagsForStencil("mxgraph.aws3","internet gateway","aws amazon web service network and content delivery").join(" ")),
-this.createVertexTemplateEntry(a+"router;fillColor=#F58536;gradientColor=none;",69,72,"","Router",null,null,this.getTagsForStencil("mxgraph.aws3","router","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"vpc_nat_gateway;fillColor=#F58536;gradientColor=none;",69,72,"","VPC NAT Gateway",null,null,this.getTagsForStencil("mxgraph.aws3","vpc nat gateway virtual private cloud","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+
-"vpc_peering;fillColor=#F58536;gradientColor=none;",69,72,"","VPC Peering",null,null,this.getTagsForStencil("mxgraph.aws3","vpc peering virtual private cloud","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"vpn_connection;fillColor=#F58536;gradientColor=none;",58.5,48,"","VPN Connection",null,null,this.getTagsForStencil("mxgraph.aws3","vpn connection","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+
-"vpn_gateway;fillColor=#F58536;gradientColor=none;",69,72,"","VPN Gateway",null,null,this.getTagsForStencil("mxgraph.aws3","vpn gateway","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"classic_load_balancer;fillColor=#F58536;gradientColor=none;",69,72,"","Classic Load Balancer",null,null,this.getTagsForStencil("mxgraph.aws3","classic load balancer","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+
-"elastic_network_adapter;fillColor=#F58536;gradientColor=none;",75,90,"","Elastic Network Adapter",null,null,this.getTagsForStencil("mxgraph.aws3","elastic network adapter","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"elastic_network_interface;fillColor=#F58536;gradientColor=none;",69,72,"","Elastic Network Interface",null,null,this.getTagsForStencil("mxgraph.aws3","elastic network interface","aws amazon web service network and content delivery").join(" ")),
-this.createVertexTemplateEntry(a+"application_load_balancer;fillColor=#F58536;gradientColor=none;",69,72,"","Application Load Balancer",null,null,this.getTagsForStencil("mxgraph.aws3","application load balancer","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"streaming_distribution;fillColor=#F58536;gradientColor=none;",69,72,"","Streaming Distribution",null,null,this.getTagsForStencil("mxgraph.aws3","streaming distribution","aws amazon web service network and content delivery").join(" ")),
-this.createVertexTemplateEntry(a+"download_distribution;fillColor=#F58536;gradientColor=none;",69,72,"","Download Distribution",null,null,this.getTagsForStencil("mxgraph.aws3","download distribution","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"edge_location;fillColor=#F58536;gradientColor=none;",58.5,64.5,"","Edge Location",null,null,this.getTagsForStencil("mxgraph.aws3","edge location","aws amazon web service network and content delivery").join(" "))])};
-Sidebar.prototype.addAWS3OnDemandWorkforcePalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3On Demand Workforce","AWS17 / On-Demand Workforce",!1,[this.createVertexTemplateEntry(a+"mechanical_turk;fillColor=#ACACAC;gradientColor=none;",67.5,81,"","Mechanical Turk",null,null,this.getTagsForStencil("mxgraph.aws3","mechanical turk","aws amazon web service on demand workforce").join(" ")),
-this.createVertexTemplateEntry(a+"human_intelligence_tasks_hit;fillColor=#ACACAC;gradientColor=none;",52.5,55.5,"","Human Intelligence Tasks HIT",null,null,this.getTagsForStencil("mxgraph.aws3","human intelligence tasks hit","aws amazon web service on demand workforce").join(" ")),this.createVertexTemplateEntry(a+"requester;fillColor=#ACACAC;gradientColor=none;",55.5,64.5,"","Requester",null,null,this.getTagsForStencil("mxgraph.aws3","requester","aws amazon web service on demand workforce").join(" ")),
-this.createVertexTemplateEntry(a+"users;fillColor=#ACACAC;gradientColor=none;",66,63,"","Workers",null,null,this.getTagsForStencil("mxgraph.aws3","workers","aws amazon web service on demand workforce").join(" ")),this.createVertexTemplateEntry(a+"assignment_task;fillColor=#ACACAC;gradientColor=none;",46.5,63,"","Assignment/Task",null,null,this.getTagsForStencil("mxgraph.aws3","assignment task","aws amazon web service on demand workforce").join(" "))])};Sidebar.prototype.addAWS3SDKPalette=function(){var a=
-"outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3SDKs","AWS17 / SDK",!1,[this.createVertexTemplateEntry(a+"android;fillColor=#96BF3D;gradientColor=none;",73.5,84,"","Android",null,null,this.getTagsForStencil("mxgraph.aws3","android","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"cli;fillColor=#444444;gradientColor=none;",72,82.5,
-"","CLI",null,null,this.getTagsForStencil("mxgraph.aws3","cli","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"toolkit_for_eclipse;fillColor=#342074;gradientColor=none;",70.5,78,"","Toolkit for Eclipse",null,null,this.getTagsForStencil("mxgraph.aws3","toolkit for eclipse","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"toolkit_for_visual_studio;fillColor=#53B1CB;gradientColor=none;",70.5,78,"",
-"Toolkit for Visual Studio",null,null,this.getTagsForStencil("mxgraph.aws3","toolkit for visual studio","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"toolkit_for_windows_powershell;fillColor=#737373;gradientColor=none;",70.5,78,"","Toolkit for Windows PowerShell",null,null,this.getTagsForStencil("mxgraph.aws3","toolkit for windows powershell","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#CFCFCF;gradientColor=none;",
-73.5,84,"","iOS",null,null,this.getTagsForStencil("mxgraph.aws3","ios","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#AE1F23;gradientColor=none;",73.5,84,"","Ruby",null,null,this.getTagsForStencil("mxgraph.aws3","ruby","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#FFD44F;gradientColor=none;",73.5,84,"","Python (boto)",null,null,this.getTagsForStencil("mxgraph.aws3",
-"python boto","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#5A69A4;gradientColor=none;",73.5,84,"","PHP",null,null,this.getTagsForStencil("mxgraph.aws3","php","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#115193;gradientColor=none;",73.5,84,"",".NET",null,null,this.getTagsForStencil("mxgraph.aws3","dot net dotnet","aws amazon web service sdk software development kit").join(" ")),
-this.createVertexTemplateEntry(a+"android;fillColor=#205E00;gradientColor=none;",73.5,84,"","JavaScript",null,null,this.getTagsForStencil("mxgraph.aws3","js javascript","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#EE472A;gradientColor=none;",73.5,84,"","Java",null,null,this.getTagsForStencil("mxgraph.aws3","java","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#4090D7;gradientColor=none;",
-73.5,84,"","Xamarin",null,null,this.getTagsForStencil("mxgraph.aws3","xamarin","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#8CC64F;gradientColor=none;",73.5,84,"","Node.js",null,null,this.getTagsForStencil("mxgraph.aws3","node js nodejs","aws amazon web service sdk software development kit").join(" "))])};Sidebar.prototype.addAWS3SecurityIdentityAndCompliancePalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+
-mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Security Identity and Compliance","AWS17 / Security Identity and Compliance",!1,[this.createVertexTemplateEntry(a+"inspector;fillColor=#759C3E;gradientColor=none;",67.5,81,"","Inspector",null,null,this.getTagsForStencil("mxgraph.aws3","inspector","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"macie;fillColor=#34BBC9;gradientColor=none;pointerEvents=1",133.5,54,"","Macie",
-null,null,this.getTagsForStencil("mxgraph.aws3","macie","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"artifact;fillColor=#759C3E;gradientColor=none;",75,90,"","Artifact",null,null,this.getTagsForStencil("mxgraph.aws3","artifact","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"certificate_manager;fillColor=#759C3E;gradientColor=none;",76.5,61.5,"","Certificate Manager",null,null,this.getTagsForStencil("mxgraph.aws3",
-"certificate manager","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"cloudhsm;fillColor=#759C3E;gradientColor=none;",73.5,84,"","CloudHSM",null,null,this.getTagsForStencil("mxgraph.aws3","cloudhsm cloud hsm","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"directory_service;fillColor=#759C3E;gradientColor=none;",67.5,81,"","Directory Service",null,null,this.getTagsForStencil("mxgraph.aws3",
-"directory service","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"iam;fillColor=#759C3E;gradientColor=none;",42,81,"","IAM",null,null,this.getTagsForStencil("mxgraph.aws3","iam","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"kms;fillColor=#759C3E;gradientColor=none;",76.5,93,"","KMS",null,null,this.getTagsForStencil("mxgraph.aws3","kms","aws amazon web service security and identity compliance").join(" ")),
-this.createVertexTemplateEntry(a+"shield;fillColor=#759C3E;gradientColor=none;",76.5,70.5,"","Shield",null,null,this.getTagsForStencil("mxgraph.aws3","shield","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"organizations;fillColor=#759C3E;gradientColor=none;",76.5,93,"","Organizations",null,null,this.getTagsForStencil("mxgraph.aws3","organizations","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+
-"waf;fillColor=#759C3E;gradientColor=none;",76.5,93,"","WAF",null,null,this.getTagsForStencil("mxgraph.aws3","waf","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"agent;fillColor=#759C3E;gradientColor=none;",69,72,"","Agent",null,null,this.getTagsForStencil("mxgraph.aws3","agent","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"certificate_manager_2;fillColor=#759C3E;gradientColor=none;",
-73.5,63,"","Certificate Manager",null,null,this.getTagsForStencil("mxgraph.aws3","certificate manager","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"clouddirectory;fillColor=#759C3E;gradientColor=none;",102,109.5,"","CloudDirectory",null,null,this.getTagsForStencil("mxgraph.aws3","cloud directory","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"add_on;fillColor=#759C3E;gradientColor=none;",
-49.5,27,"","Add-On",null,null,this.getTagsForStencil("mxgraph.aws3","add on","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"sts;fillColor=#759C3E;gradientColor=none;",61.5,34.5,"","STS",null,null,this.getTagsForStencil("mxgraph.aws3","sts","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"sts_2;fillColor=#759C3E;gradientColor=none;",46.5,60,"","STS",null,null,this.getTagsForStencil("mxgraph.aws3",
-"sts","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"data_encryption_key;fillColor=#7D7C7C;gradientColor=none;",46.5,60,"","Data Encryption Key",null,null,this.getTagsForStencil("mxgraph.aws3","data encryption key","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"encrypted_data;fillColor=#7D7C7C;gradientColor=none;",43.5,55.5,"","Encrypted Data",null,null,this.getTagsForStencil("mxgraph.aws3",
-"encrypted data","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"long_term_security_credential;fillColor=#ffffff;gradientColor=none;",60,48,"","Long Term Security Credential",null,null,this.getTagsForStencil("mxgraph.aws3","long term security credential","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"mfa_token;fillColor=#7D7C7C;gradientColor=none;",61.5,61.5,"","MFA Token",null,null,this.getTagsForStencil("mxgraph.aws3",
-"mfa token","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"permissions_2;fillColor=#D2D3D3;gradientColor=none;",46.5,63,"","Permissions",null,null,this.getTagsForStencil("mxgraph.aws3","permissions","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"role;fillColor=#759C3E;gradientColor=none;",94.5,79.5,"","Role",null,null,this.getTagsForStencil("mxgraph.aws3","role","aws amazon web service security and identity compliance").join(" ")),
-this.createVertexTemplateEntry(a+"temporary_security_credential;fillColor=#ffffff;gradientColor=none;",67.5,60,"","Temporary Security Credential",null,null,this.getTagsForStencil("mxgraph.aws3","temporary security credential","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"filtering_rule;fillColor=#759C3E;gradientColor=none;",69,72,"","Filtering Rule",null,null,this.getTagsForStencil("mxgraph.aws3","filtering rule","aws amazon web service security and identity compliance").join(" "))])};
-Sidebar.prototype.addAWS3StoragePalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Storage","AWS17 / Storage",!1,[this.createVertexTemplateEntry(a+"s3;fillColor=#E05243;gradientColor=none;",76.5,93,"","S3",null,null,this.getTagsForStencil("mxgraph.aws3","s3","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"glacier;fillColor=#E05243;gradientColor=none;",
-76.5,93,"","Glacier",null,null,this.getTagsForStencil("mxgraph.aws3","glacier","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"storage_gateway;fillColor=#E05243;gradientColor=none;",76.5,93,"","Storage Gateway",null,null,this.getTagsForStencil("mxgraph.aws3","storage gateway","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"efs;fillColor=#E05243;gradientColor=none;",76.5,93,"","EFS",null,null,this.getTagsForStencil("mxgraph.aws3","efs",
-"aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"archive;fillColor=#E05243;gradientColor=none;",57,75,"","Archive",null,null,this.getTagsForStencil("mxgraph.aws3","archive","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"vault;fillColor=#E05243;gradientColor=none;",54,75,"","Vault",null,null,this.getTagsForStencil("mxgraph.aws3","vault","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"bucket;fillColor=#E05243;gradientColor=none;",
-60,61.5,"","Bucket",null,null,this.getTagsForStencil("mxgraph.aws3","bucket","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"bucket_with_objects;fillColor=#E05243;gradientColor=none;",60,61.5,"","Bucket with Objects",null,null,this.getTagsForStencil("mxgraph.aws3","bucket with objects","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"object;fillColor=#E05243;gradientColor=none;",42,45,"","Object",null,null,this.getTagsForStencil("mxgraph.aws3",
-"object","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"virtual_tape_library;fillColor=#E05243;gradientColor=none;",60,73.5,"","Virtual Tape Library",null,null,this.getTagsForStencil("mxgraph.aws3","virtual tape library","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"cached_volume;fillColor=#E05243;gradientColor=none;",60,73.5,"","Cached Volume",null,null,this.getTagsForStencil("mxgraph.aws3","cached volume","aws amazon web service storage").join(" ")),
-this.createVertexTemplateEntry(a+"non_cached_volume;fillColor=#E05243;gradientColor=none;",60,73.5,"","Non-Cached Volume",null,null,this.getTagsForStencil("mxgraph.aws3","non cached volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"snapshot;fillColor=#E05243;gradientColor=none;",60,73.5,"","Snapshot",null,null,this.getTagsForStencil("mxgraph.aws3","snapshot","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"volume;fillColor=#E05243;gradientColor=none;",
-52.5,75,"","Volume",null,null,this.getTagsForStencil("mxgraph.aws3","volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"snowball;fillColor=#E05243;gradientColor=none;",67.5,81,"","Snowball",null,null,this.getTagsForStencil("mxgraph.aws3","snowball","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"efs_share;fillColor=#E05243;gradientColor=none;",69,63,"","EFS Share",null,null,this.getTagsForStencil("mxgraph.aws3","efs share","aws amazon web service storage").join(" ")),
-this.createVertexTemplateEntry(a+"import_export;fillColor=#E05243;gradientColor=none;",64.5,63,"","Import/Export",null,null,this.getTagsForStencil("mxgraph.aws3","import export","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"volume;fillColor=#E05243;gradientColor=none;",52.5,75,"","EBS",null,null,this.getTagsForStencil("mxgraph.aws3","ebs","aws amazon web service storage").join(" "))])}})();(function(){Sidebar.prototype.addAWS3DPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;"+mxConstants.STYLE_STROKEWIDTH+"=1;align=center;outlineConnect=0;dashed=0;outlineConnect=0;shape=mxgraph.aws3d.";this.addPaletteFunctions("aws3d","AWS 3D",!1,[this.createVertexTemplateEntry(a+"ami;aspect=fixed;fillColor=#E8CA45;strokeColor=#FFF215;",92,60,"","AMI",null,null,this.getTagsForStencil("mxgraph.aws3d","ami","aws 3d amazon web service").join(" ")),
+function(){var e=new mxCell("",new mxGeometry(0,20,200,200),"rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,52,36),b+"virtual_private_cloud;fillColor=#F58536;gradientColor=none;dashed=0;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"Virtual Private Cloud")}),this.addEntry("aws group amazon web service group groupscloud",function(){var e=new mxCell("",new mxGeometry(0,20,200,200),"rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;");
+e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,52,36),b+"cloud;fillColor=#F58536;gradientColor=none;dashed=0;");c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"AWS Cloud")}),this.addEntry("aws group amazon web service group groupscorporate data center",function(){var e=new mxCell("",new mxGeometry(0,20,200,200),"rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;");e.vertex=!0;var c=new mxCell("",new mxGeometry(20,0,30,42),b+"corporate_data_center;fillColor=#7D7C7C;gradientColor=none;dashed=0;");
+c.vertex=!0;return a.createVertexTemplateFromCells([e,c],200,220,"Corporate Data Center")})])};Sidebar.prototype.addAWS3InternetOfThingsPalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Internet of Things","AWS17 / Internet of Things",!1,[this.createVertexTemplateEntry(a+"aws_iot;fillColor=#5294CF;gradientColor=none;",67.5,81,"","AWS IoT",null,null,this.getTagsForStencil("mxgraph.aws3",
+"iot internet of things","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"greengrass;fillColor=#5294CF;gradientColor=none;",76.5,93,"","Greengrass",null,null,this.getTagsForStencil("mxgraph.aws3","greengrass","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"action;fillColor=#5294CF;gradientColor=none;",63,64.5,"","Action",null,null,this.getTagsForStencil("mxgraph.aws3","action","aws amazon web service iot internet of things").join(" ")),
+this.createVertexTemplateEntry(a+"actuator;fillColor=#5294CF;gradientColor=none;",76.5,90,"","Actuator",null,null,this.getTagsForStencil("mxgraph.aws3","actuator","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"certificate;fillColor=#5294CF;gradientColor=none;",63,85.5,"","Certificate",null,null,this.getTagsForStencil("mxgraph.aws3","certificate","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"desired_state;fillColor=#5294CF;gradientColor=none;",
+60,63,"","Desired State",null,null,this.getTagsForStencil("mxgraph.aws3","desired state","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"hardware_board;fillColor=#5294CF;gradientColor=none;",84,100.5,"","Hardware Board",null,null,this.getTagsForStencil("mxgraph.aws3","hardware board","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"http_protocol;fillColor=#5294CF;gradientColor=none;",63,66,"","HTTP Protocol",
+null,null,this.getTagsForStencil("mxgraph.aws3","http protocol","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"http_2_protocol;fillColor=#5294CF;gradientColor=none;",63,66,"","HTTP/2 Protocol",null,null,this.getTagsForStencil("mxgraph.aws3","http 2 protocol","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"lambda_function;fillColor=#5294CF;gradientColor=none;",60,63,"","Lambda Function",null,null,this.getTagsForStencil("mxgraph.aws3",
+"lambda function","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"mqtt_protocol;fillColor=#5294CF;gradientColor=none;",63,66,"","MQTT Protocol",null,null,this.getTagsForStencil("mxgraph.aws3","mqtt protocol","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"policy;fillColor=#5294CF;gradientColor=none;",55.5,90,"","Policy",null,null,this.getTagsForStencil("mxgraph.aws3","policy","aws amazon web service iot internet of things").join(" ")),
+this.createVertexTemplateEntry(a+"reported_state;fillColor=#5294CF;gradientColor=none;",60,63,"","Reported State",null,null,this.getTagsForStencil("mxgraph.aws3","reported state","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"rule;fillColor=#5294CF;gradientColor=none;",49.5,99,"","Rule",null,null,this.getTagsForStencil("mxgraph.aws3","rule","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"sensor;fillColor=#5294CF;gradientColor=none;",
+76.5,90,"","Sensor",null,null,this.getTagsForStencil("mxgraph.aws3","sensor","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"servo;fillColor=#5294CF;gradientColor=none;",84,60,"","Servo",null,null,this.getTagsForStencil("mxgraph.aws3","servo","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"shadow;fillColor=#5294CF;gradientColor=none;",85.5,91.5,"","Shadow",null,null,this.getTagsForStencil("mxgraph.aws3","shadow",
+"aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"simulator;fillColor=#5294CF;gradientColor=none;",75,78,"","Simulator",null,null,this.getTagsForStencil("mxgraph.aws3","simulator","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"topic;fillColor=#5294CF;gradientColor=none;",49.5,66,"","Topic",null,null,this.getTagsForStencil("mxgraph.aws3","topic","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+
+"bank;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Bank",null,null,this.getTagsForStencil("mxgraph.aws3","bank","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"bicycle;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Bicycle",null,null,this.getTagsForStencil("mxgraph.aws3","bicycle","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"camera;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Camera",
+null,null,this.getTagsForStencil("mxgraph.aws3","camera","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"utility;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Utility",null,null,this.getTagsForStencil("mxgraph.aws3","utility","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"cart;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Cart",null,null,this.getTagsForStencil("mxgraph.aws3","cart","aws amazon web service iot internet of things").join(" ")),
+this.createVertexTemplateEntry(a+"car;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Car",null,null,this.getTagsForStencil("mxgraph.aws3","car","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"windfarm;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Windfarm",null,null,this.getTagsForStencil("mxgraph.aws3","windfarm","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"house;fillColor=#5294CF;gradientColor=none;",
+79.5,79.5,"","House",null,null,this.getTagsForStencil("mxgraph.aws3","house","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"generic;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Generic",null,null,this.getTagsForStencil("mxgraph.aws3","generic","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"factory;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Factory",null,null,this.getTagsForStencil("mxgraph.aws3",
+"factory","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"coffee_pot;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Coffee Pot",null,null,this.getTagsForStencil("mxgraph.aws3","coffee pot","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"door_lock;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Door Lock",null,null,this.getTagsForStencil("mxgraph.aws3","door lock","aws amazon web service iot internet of things").join(" ")),
+this.createVertexTemplateEntry(a+"lightbulb;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Lightbulb",null,null,this.getTagsForStencil("mxgraph.aws3","lightbulb","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"medical_emergency;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Medical Emergency",null,null,this.getTagsForStencil("mxgraph.aws3","medical emergency","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+
+"police_emergency;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Police Emergency",null,null,this.getTagsForStencil("mxgraph.aws3","police emergency","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"thermostat;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Thermostat",null,null,this.getTagsForStencil("mxgraph.aws3","thermostat","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"travel;fillColor=#5294CF;gradientColor=none;",
+79.5,79.5,"","Travel",null,null,this.getTagsForStencil("mxgraph.aws3","travel","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"echo;fillColor=#205B99;gradientColor=none;",40.5,93,"","Echo",null,null,this.getTagsForStencil("mxgraph.aws3","echo","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"alexa_skill;fillColor=#5294CF;gradientColor=none;",60,63,"","Alexa Skill",null,null,this.getTagsForStencil("mxgraph.aws3",
+"alexa skill","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"alexa_smart_home_skill;fillColor=#5294CF;gradientColor=none;",90,70.5,"","Alexa Smart Home Skill",null,null,this.getTagsForStencil("mxgraph.aws3","alexa smart home skill","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"alexa_voice_service;fillColor=#5294CF;gradientColor=none;",60,63,"","Alexa Voice Service",null,null,this.getTagsForStencil("mxgraph.aws3",
+"alexa voice service","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"alexa_enabled_device;fillColor=#5294CF;gradientColor=none;",79.5,79.5,"","Alexa Enabled Device",null,null,this.getTagsForStencil("mxgraph.aws3","alexa enabled device","aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"fire_tv;fillColor=#5294CF;gradientColor=none;",75,55.5,"","Fire TV",null,null,this.getTagsForStencil("mxgraph.aws3","fire tv",
+"aws amazon web service iot internet of things").join(" ")),this.createVertexTemplateEntry(a+"fire_tv_stick;fillColor=#5294CF;gradientColor=none;",85.5,33,"","Fire TV Stick",null,null,this.getTagsForStencil("mxgraph.aws3","fire tv stick","aws amazon web service iot internet of things").join(" "))])};Sidebar.prototype.addAWS3ManagementToolsPalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";
+this.addPaletteFunctions("aws3Management Tools","AWS17 / Management Tools",!1,[this.createVertexTemplateEntry(a+"cloudwatch;fillColor=#759C3E;gradientColor=none;",82.5,93,"","CloudWatch",null,null,this.getTagsForStencil("mxgraph.aws3","cloudwatch cloud watch","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"cloudformation;fillColor=#759C3E;gradientColor=none;",76.5,93,"","CloudFormation",null,null,this.getTagsForStencil("mxgraph.aws3","cloudformation cloud formation",
+"aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"cloudtrail;fillColor=#759C3E;gradientColor=none;",76.5,93,"","CloudTrail",null,null,this.getTagsForStencil("mxgraph.aws3","cloudtrail cloud trail","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"config;fillColor=#759C3E;gradientColor=none;",76.5,93,"","Config",null,null,this.getTagsForStencil("mxgraph.aws3","config","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+
+"managed_services;fillColor=#759C3E;gradientColor=none;",76.5,93,"","Managed Services",null,null,this.getTagsForStencil("mxgraph.aws3","managed services","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"opsworks;fillColor=#759C3E;gradientColor=none;",76.5,93,"","OpsWorks",null,null,this.getTagsForStencil("mxgraph.aws3","opsworks ops works","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"service_catalog;fillColor=#759C3E;gradientColor=none;",
+76.5,93,"","Service Catalog",null,null,this.getTagsForStencil("mxgraph.aws3","service catalog","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"trusted_advisor;fillColor=#759C3E;gradientColor=none;",67.5,81,"","Trusted Advisor",null,null,this.getTagsForStencil("mxgraph.aws3","trusted advisor","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"alarm;fillColor=#759C3E;gradientColor=none;",54,66,"","Alarm",null,null,this.getTagsForStencil("mxgraph.aws3",
+"alarm","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"event_time_based;fillColor=#759C3E;gradientColor=none;",63,82.5,"","Event (Time Based)",null,null,this.getTagsForStencil("mxgraph.aws3","event time based","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"event_event_based;fillColor=#759C3E;gradientColor=none;",60,82.5,"","Event (Event Based)",null,null,this.getTagsForStencil("mxgraph.aws3","event based","aws amazon web service management tools").join(" ")),
+this.createVertexTemplateEntry(a+"config_rule;fillColor=#759C3E;gradientColor=none;",55.5,72,"","Config Rule",null,null,this.getTagsForStencil("mxgraph.aws3","config rule","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"automation;fillColor=#759C3E;gradientColor=none;",78,81,"","Automation",null,null,this.getTagsForStencil("mxgraph.aws3","automation","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"documents;fillColor=#759C3E;gradientColor=none;",
+90,100.5,"","Documents",null,null,this.getTagsForStencil("mxgraph.aws3","documents","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"inventory;fillColor=#759C3E;gradientColor=none;",90,105,"","Inventory",null,null,this.getTagsForStencil("mxgraph.aws3","inventory","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"maintenance_window;fillColor=#759C3E;gradientColor=none;",75,78,"","Maintenance Window",null,null,this.getTagsForStencil("mxgraph.aws3",
+"maintenance window","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"parameter_store;fillColor=#759C3E;gradientColor=none;",75,102,"","Parameter Store",null,null,this.getTagsForStencil("mxgraph.aws3","parameter store","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"patch_manager;fillColor=#759C3E;gradientColor=none;",85.5,90,"","Patch Manager",null,null,this.getTagsForStencil("mxgraph.aws3","patch manager","aws amazon web service management tools").join(" ")),
+this.createVertexTemplateEntry(a+"run_command;fillColor=#759C3E;gradientColor=none;",114,82.5,"","Run Command",null,null,this.getTagsForStencil("mxgraph.aws3","run command","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"state_manager;fillColor=#759C3E;gradientColor=none;",79.5,82.5,"","State Manager",null,null,this.getTagsForStencil("mxgraph.aws3","state manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"ec2_systems_manager;fillColor=#759C3E;gradientColor=none;",
+79.5,82.5,"","EC2 Systems Manager",null,null,this.getTagsForStencil("mxgraph.aws3","ec2 systems manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"stack_aws_cloudformation;fillColor=#759C3E;gradientColor=none;",73.5,58.5,"","Stack AWS CloudFormation",null,null,this.getTagsForStencil("mxgraph.aws3","stack cloudformation cloud formation","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"change_set;fillColor=#759C3E;gradientColor=none;",
+55.5,64.5,"","Change Set",null,null,this.getTagsForStencil("mxgraph.aws3","change set","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"template;fillColor=#759C3E;gradientColor=none;",55.5,64.5,"","Template",null,null,this.getTagsForStencil("mxgraph.aws3","template","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"apps;fillColor=#759C3E;gradientColor=none;",81,79.5,"","Apps",null,null,this.getTagsForStencil("mxgraph.aws3",
+"apps","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"deployments;fillColor=#759C3E;gradientColor=none;",81,76.5,"","Deployments",null,null,this.getTagsForStencil("mxgraph.aws3","deployments","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"instances_2;fillColor=#759C3E;gradientColor=none;",81,81,"","Instances",null,null,this.getTagsForStencil("mxgraph.aws3","instances","aws amazon web service management tools").join(" ")),
+this.createVertexTemplateEntry(a+"layers;fillColor=#759C3E;gradientColor=none;",81,79.5,"","Layers",null,null,this.getTagsForStencil("mxgraph.aws3","layers","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"monitoring;fillColor=#759C3E;gradientColor=none;",81,67.5,"","Monitoring",null,null,this.getTagsForStencil("mxgraph.aws3","monitoring","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"permissions;fillColor=#759C3E;gradientColor=none;",
+67.5,79.5,"","Permissions",null,null,this.getTagsForStencil("mxgraph.aws3","permissions","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"resources;fillColor=#759C3E;gradientColor=none;",67.5,79.5,"","Resources",null,null,this.getTagsForStencil("mxgraph.aws3","resources","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"stack_aws_opsworks;fillColor=#759C3E;gradientColor=none;",79.5,79.5,"","Stack AWS OpsWorks",null,null,
+this.getTagsForStencil("mxgraph.aws3","stack opsworks ops works","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"checklist;fillColor=#759C3E;gradientColor=none;",55.5,64.5,"","Checklist",null,null,this.getTagsForStencil("mxgraph.aws3","checklist","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"checklist_cost;fillColor=#759C3E;gradientColor=none;",67.5,75,"","Checklist Cost",null,null,this.getTagsForStencil("mxgraph.aws3",
+"checklist cost","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"checklist_fault_tolerance;fillColor=#759C3E;gradientColor=none;",57,72,"","Checklist Fault Tolerance",null,null,this.getTagsForStencil("mxgraph.aws3","checklist fault tolerance","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"checklist_performance;fillColor=#759C3E;gradientColor=none;",61.5,73.5,"","Checklist Performance",null,null,this.getTagsForStencil("mxgraph.aws3",
+"checklist performance","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(a+"checklist_security;fillColor=#759C3E;gradientColor=none;",54,69,"","Checklist Security",null,null,this.getTagsForStencil("mxgraph.aws3","checklist security","aws amazon web service management tools").join(" "))])};Sidebar.prototype.addAWS3MessagingPalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+
+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Messaging","AWS17 / Messaging",!1,[this.createVertexTemplateEntry(a+"pinpoint;fillColor=#AD688B;gradientColor=none;",76.5,87,"","Pinpoint",null,null,this.getTagsForStencil("mxgraph.aws3","pinpoint","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"ses;fillColor=#D9A741;gradientColor=none;",79.5,93,"","SES",null,null,this.getTagsForStencil("mxgraph.aws3","ses","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+
+"sns;fillColor=#D9A741;gradientColor=none;",76.5,76.5,"","SNS",null,null,this.getTagsForStencil("mxgraph.aws3","sns","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"sqs;fillColor=#D9A741;gradientColor=none;",76.5,93,"","SQS",null,null,this.getTagsForStencil("mxgraph.aws3","sqs","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"email;fillColor=#D9A741;gradientColor=none;",81,61.5,"","Email",null,null,this.getTagsForStencil("mxgraph.aws3",
+"email","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"message;fillColor=#D9A741;gradientColor=none;",42,49.5,"","Message",null,null,this.getTagsForStencil("mxgraph.aws3","message","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"queue;fillColor=#D9A741;gradientColor=none;",73.5,48,"","Queue",null,null,this.getTagsForStencil("mxgraph.aws3","queue","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"email_notification;fillColor=#D9A741;gradientColor=none;",
+100.5,63,"","Email Notification",null,null,this.getTagsForStencil("mxgraph.aws3","email notification","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"http_notification;fillColor=#D9A741;gradientColor=none;",100.5,63,"","HTTP Notification",null,null,this.getTagsForStencil("mxgraph.aws3","http notification","aws amazon web service messaging").join(" ")),this.createVertexTemplateEntry(a+"topic_2;fillColor=#D9A741;gradientColor=none;",93,58.5,"","Topic",null,null,this.getTagsForStencil("mxgraph.aws3",
+"topic","aws amazon web service messaging").join(" "))])};Sidebar.prototype.addAWS3MigrationPalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Migration","AWS17 / Migration",!1,[this.createVertexTemplateEntry(a+"snowball;fillColor=#E05243;gradientColor=none;",67.5,81,"","Snowball",null,null,this.getTagsForStencil("mxgraph.aws3","snowball","aws amazon web service migration").join(" ")),
+this.createVertexTemplateEntry(a+"server_migration_service;fillColor=#5294CF;gradientColor=none;",76.5,93,"","Server Migration Service",null,null,this.getTagsForStencil("mxgraph.aws3","server migration service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(a+"import_export;fillColor=#E05243;gradientColor=none;",64.5,63,"","Import/Export",null,null,this.getTagsForStencil("mxgraph.aws3","Import Export","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(a+
+"database_migration_service;fillColor=#5294CF;gradientColor=none;",72,81,"","Database Migration Service",null,null,this.getTagsForStencil("mxgraph.aws3","database migration service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(a+"database_migration_workflow_job;fillColor=#5294CF;gradientColor=none;pointerEvents=1",46.5,87,"","Database Migration Workflow Job",null,null,this.getTagsForStencil("mxgraph.aws3","database migration workflow job","aws amazon web service migration").join(" ")),
+this.createVertexTemplateEntry(a+"application_discovery_service;fillColor=#5294CF;gradientColor=none;",76.5,93,"","Application Discovery Service",null,null,this.getTagsForStencil("mxgraph.aws3","application discovery service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(a+"migration_hub_2;fillColor=#ABABAB;gradientColor=none;pointerEvents=1",114,121.5,"","Migration Hub",null,null,this.getTagsForStencil("mxgraph.aws3","migration hub","aws amazon web service migration").join(" "))])};
+Sidebar.prototype.addAWS3MobileServicesPalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Mobile Services","AWS17 / Mobile Services",!1,[this.createVertexTemplateEntry(a+"api_gateway;fillColor=#D9A741;gradientColor=none;",76.5,93,"","API Gateway",null,null,this.getTagsForStencil("mxgraph.aws3","api gateway","aws amazon web service mobile services").join(" ")),
+this.createVertexTemplateEntry(a+"cognito;fillColor=#AD688B;gradientColor=none;",76.5,93,"","Cognito",null,null,this.getTagsForStencil("mxgraph.aws3","cognito","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(a+"mobile_analytics;fillColor=#AD688B;gradientColor=none;",90,93,"","Mobile Analytics",null,null,this.getTagsForStencil("mxgraph.aws3","mobile analytics","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(a+"pinpoint;fillColor=#AD688B;gradientColor=none;",
+76.5,87,"","Pinpoint",null,null,this.getTagsForStencil("mxgraph.aws3","pinpoint","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(a+"device_farm;fillColor=#AD688B;gradientColor=none;",76.5,93,"","Device Farm",null,null,this.getTagsForStencil("mxgraph.aws3","device farm","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(a+"mobile_hub;fillColor=#AD688A;gradientColor=#F58435;gradientDirection=west;pointerEvents=1",75,81,"","Mobile Hub",
+null,null,this.getTagsForStencil("mxgraph.aws3","mobile hub","aws amazon web service mobile services").join(" "))])};Sidebar.prototype.addAWS3NetworkAndContentDeliveryPalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Networking and Content Delivery","AWS17 / Network and Content Delivery",!1,[this.createVertexTemplateEntry(a+"cloudfront;fillColor=#F58536;gradientColor=none;",
+76.5,93,"","CloudFront",null,null,this.getTagsForStencil("mxgraph.aws3","cloudfront cloud front","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"route_53;fillColor=#F58536;gradientColor=none;",70.5,85.5,"","Route 53",null,null,this.getTagsForStencil("mxgraph.aws3","route 53","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"vpc;fillColor=#F58536;gradientColor=none;",67.5,81,"","VPC",null,null,this.getTagsForStencil("mxgraph.aws3",
+"vpc virtual private cloud","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"network_access_controllist;fillColor=#F58534;gradientColor=none;",69,72,"","Network Access Controllist",null,null,this.getTagsForStencil("mxgraph.aws3","network access controllist","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"elastic_load_balancing;fillColor=#F58536;gradientColor=none;",76.5,93,"","Elastic Load Balancing",
+null,null,this.getTagsForStencil("mxgraph.aws3","elastic load balancing","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"direct_connect;fillColor=#F58536;gradientColor=none;",67.5,81,"","Direct Connect",null,null,this.getTagsForStencil("mxgraph.aws3","direct connect","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"hosted_zone;fillColor=#F58536;gradientColor=none;",63,64.5,"","Hosted Zone",null,
+null,this.getTagsForStencil("mxgraph.aws3","hosted zone","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"route_table;fillColor=#F58536;gradientColor=none;",75,69,"","Route Table",null,null,this.getTagsForStencil("mxgraph.aws3","route table","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"customer_gateway;fillColor=#F58536;gradientColor=none;",69,72,"","Customer Gateway",null,null,this.getTagsForStencil("mxgraph.aws3",
+"customer gateway","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"endpoints;fillColor=#F58536;gradientColor=none;",69,72,"","Endpoints",null,null,this.getTagsForStencil("mxgraph.aws3","endpoints","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"flow_logs;fillColor=#F58536;gradientColor=none;",69,72,"","Flow Logs",null,null,this.getTagsForStencil("mxgraph.aws3","flow logs","aws amazon web service network and content delivery").join(" ")),
+this.createVertexTemplateEntry(a+"internet_gateway;fillColor=#F58536;gradientColor=none;",69,72,"","Internet Gateway",null,null,this.getTagsForStencil("mxgraph.aws3","internet gateway","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"router;fillColor=#F58536;gradientColor=none;",69,72,"","Router",null,null,this.getTagsForStencil("mxgraph.aws3","router","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+
+"vpc_nat_gateway;fillColor=#F58536;gradientColor=none;",69,72,"","VPC NAT Gateway",null,null,this.getTagsForStencil("mxgraph.aws3","vpc nat gateway virtual private cloud","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"vpc_peering;fillColor=#F58536;gradientColor=none;",69,72,"","VPC Peering",null,null,this.getTagsForStencil("mxgraph.aws3","vpc peering virtual private cloud","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+
+"vpn_connection;fillColor=#F58536;gradientColor=none;",58.5,48,"","VPN Connection",null,null,this.getTagsForStencil("mxgraph.aws3","vpn connection","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"vpn_gateway;fillColor=#F58536;gradientColor=none;",69,72,"","VPN Gateway",null,null,this.getTagsForStencil("mxgraph.aws3","vpn gateway","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"classic_load_balancer;fillColor=#F58536;gradientColor=none;",
+69,72,"","Classic Load Balancer",null,null,this.getTagsForStencil("mxgraph.aws3","classic load balancer","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"elastic_network_adapter;fillColor=#F58536;gradientColor=none;",75,90,"","Elastic Network Adapter",null,null,this.getTagsForStencil("mxgraph.aws3","elastic network adapter","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"elastic_network_interface;fillColor=#F58536;gradientColor=none;",
+69,72,"","Elastic Network Interface",null,null,this.getTagsForStencil("mxgraph.aws3","elastic network interface","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"application_load_balancer;fillColor=#F58536;gradientColor=none;",69,72,"","Application Load Balancer",null,null,this.getTagsForStencil("mxgraph.aws3","application load balancer","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"streaming_distribution;fillColor=#F58536;gradientColor=none;",
+69,72,"","Streaming Distribution",null,null,this.getTagsForStencil("mxgraph.aws3","streaming distribution","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"download_distribution;fillColor=#F58536;gradientColor=none;",69,72,"","Download Distribution",null,null,this.getTagsForStencil("mxgraph.aws3","download distribution","aws amazon web service network and content delivery").join(" ")),this.createVertexTemplateEntry(a+"edge_location;fillColor=#F58536;gradientColor=none;",
+58.5,64.5,"","Edge Location",null,null,this.getTagsForStencil("mxgraph.aws3","edge location","aws amazon web service network and content delivery").join(" "))])};Sidebar.prototype.addAWS3OnDemandWorkforcePalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3On Demand Workforce","AWS17 / On-Demand Workforce",!1,[this.createVertexTemplateEntry(a+"mechanical_turk;fillColor=#ACACAC;gradientColor=none;",
+67.5,81,"","Mechanical Turk",null,null,this.getTagsForStencil("mxgraph.aws3","mechanical turk","aws amazon web service on demand workforce").join(" ")),this.createVertexTemplateEntry(a+"human_intelligence_tasks_hit;fillColor=#ACACAC;gradientColor=none;",52.5,55.5,"","Human Intelligence Tasks HIT",null,null,this.getTagsForStencil("mxgraph.aws3","human intelligence tasks hit","aws amazon web service on demand workforce").join(" ")),this.createVertexTemplateEntry(a+"requester;fillColor=#ACACAC;gradientColor=none;",
+55.5,64.5,"","Requester",null,null,this.getTagsForStencil("mxgraph.aws3","requester","aws amazon web service on demand workforce").join(" ")),this.createVertexTemplateEntry(a+"users;fillColor=#ACACAC;gradientColor=none;",66,63,"","Workers",null,null,this.getTagsForStencil("mxgraph.aws3","workers","aws amazon web service on demand workforce").join(" ")),this.createVertexTemplateEntry(a+"assignment_task;fillColor=#ACACAC;gradientColor=none;",46.5,63,"","Assignment/Task",null,null,this.getTagsForStencil("mxgraph.aws3",
+"assignment task","aws amazon web service on demand workforce").join(" "))])};Sidebar.prototype.addAWS3SDKPalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3SDKs","AWS17 / SDK",!1,[this.createVertexTemplateEntry(a+"android;fillColor=#96BF3D;gradientColor=none;",73.5,84,"","Android",null,null,this.getTagsForStencil("mxgraph.aws3","android","aws amazon web service sdk software development kit").join(" ")),
+this.createVertexTemplateEntry(a+"cli;fillColor=#444444;gradientColor=none;",72,82.5,"","CLI",null,null,this.getTagsForStencil("mxgraph.aws3","cli","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"toolkit_for_eclipse;fillColor=#342074;gradientColor=none;",70.5,78,"","Toolkit for Eclipse",null,null,this.getTagsForStencil("mxgraph.aws3","toolkit for eclipse","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+
+"toolkit_for_visual_studio;fillColor=#53B1CB;gradientColor=none;",70.5,78,"","Toolkit for Visual Studio",null,null,this.getTagsForStencil("mxgraph.aws3","toolkit for visual studio","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"toolkit_for_windows_powershell;fillColor=#737373;gradientColor=none;",70.5,78,"","Toolkit for Windows PowerShell",null,null,this.getTagsForStencil("mxgraph.aws3","toolkit for windows powershell","aws amazon web service sdk software development kit").join(" ")),
+this.createVertexTemplateEntry(a+"android;fillColor=#CFCFCF;gradientColor=none;",73.5,84,"","iOS",null,null,this.getTagsForStencil("mxgraph.aws3","ios","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#AE1F23;gradientColor=none;",73.5,84,"","Ruby",null,null,this.getTagsForStencil("mxgraph.aws3","ruby","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#FFD44F;gradientColor=none;",
+73.5,84,"","Python (boto)",null,null,this.getTagsForStencil("mxgraph.aws3","python boto","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#5A69A4;gradientColor=none;",73.5,84,"","PHP",null,null,this.getTagsForStencil("mxgraph.aws3","php","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#115193;gradientColor=none;",73.5,84,"",".NET",null,null,this.getTagsForStencil("mxgraph.aws3",
+"dot net dotnet","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#205E00;gradientColor=none;",73.5,84,"","JavaScript",null,null,this.getTagsForStencil("mxgraph.aws3","js javascript","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#EE472A;gradientColor=none;",73.5,84,"","Java",null,null,this.getTagsForStencil("mxgraph.aws3","java","aws amazon web service sdk software development kit").join(" ")),
+this.createVertexTemplateEntry(a+"android;fillColor=#4090D7;gradientColor=none;",73.5,84,"","Xamarin",null,null,this.getTagsForStencil("mxgraph.aws3","xamarin","aws amazon web service sdk software development kit").join(" ")),this.createVertexTemplateEntry(a+"android;fillColor=#8CC64F;gradientColor=none;",73.5,84,"","Node.js",null,null,this.getTagsForStencil("mxgraph.aws3","node js nodejs","aws amazon web service sdk software development kit").join(" "))])};Sidebar.prototype.addAWS3SecurityIdentityAndCompliancePalette=
+function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Security Identity and Compliance","AWS17 / Security Identity and Compliance",!1,[this.createVertexTemplateEntry(a+"inspector;fillColor=#759C3E;gradientColor=none;",67.5,81,"","Inspector",null,null,this.getTagsForStencil("mxgraph.aws3","inspector","aws amazon web service security and identity compliance").join(" ")),
+this.createVertexTemplateEntry(a+"macie;fillColor=#34BBC9;gradientColor=none;pointerEvents=1",133.5,54,"","Macie",null,null,this.getTagsForStencil("mxgraph.aws3","macie","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"artifact;fillColor=#759C3E;gradientColor=none;",75,90,"","Artifact",null,null,this.getTagsForStencil("mxgraph.aws3","artifact","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+
+"certificate_manager;fillColor=#759C3E;gradientColor=none;",76.5,61.5,"","Certificate Manager",null,null,this.getTagsForStencil("mxgraph.aws3","certificate manager","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"cloudhsm;fillColor=#759C3E;gradientColor=none;",73.5,84,"","CloudHSM",null,null,this.getTagsForStencil("mxgraph.aws3","cloudhsm cloud hsm","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+
+"directory_service;fillColor=#759C3E;gradientColor=none;",67.5,81,"","Directory Service",null,null,this.getTagsForStencil("mxgraph.aws3","directory service","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"iam;fillColor=#759C3E;gradientColor=none;",42,81,"","IAM",null,null,this.getTagsForStencil("mxgraph.aws3","iam","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"kms;fillColor=#759C3E;gradientColor=none;",
+76.5,93,"","KMS",null,null,this.getTagsForStencil("mxgraph.aws3","kms","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"shield;fillColor=#759C3E;gradientColor=none;",76.5,70.5,"","Shield",null,null,this.getTagsForStencil("mxgraph.aws3","shield","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"organizations;fillColor=#759C3E;gradientColor=none;",76.5,93,"","Organizations",null,null,this.getTagsForStencil("mxgraph.aws3",
+"organizations","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"waf;fillColor=#759C3E;gradientColor=none;",76.5,93,"","WAF",null,null,this.getTagsForStencil("mxgraph.aws3","waf","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"agent;fillColor=#759C3E;gradientColor=none;",69,72,"","Agent",null,null,this.getTagsForStencil("mxgraph.aws3","agent","aws amazon web service security and identity compliance").join(" ")),
+this.createVertexTemplateEntry(a+"certificate_manager_2;fillColor=#759C3E;gradientColor=none;",73.5,63,"","Certificate Manager",null,null,this.getTagsForStencil("mxgraph.aws3","certificate manager","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"clouddirectory;fillColor=#759C3E;gradientColor=none;",102,109.5,"","CloudDirectory",null,null,this.getTagsForStencil("mxgraph.aws3","cloud directory","aws amazon web service security and identity compliance").join(" ")),
+this.createVertexTemplateEntry(a+"add_on;fillColor=#759C3E;gradientColor=none;",49.5,27,"","Add-On",null,null,this.getTagsForStencil("mxgraph.aws3","add on","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"sts;fillColor=#759C3E;gradientColor=none;",61.5,34.5,"","STS",null,null,this.getTagsForStencil("mxgraph.aws3","sts","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"sts_2;fillColor=#759C3E;gradientColor=none;",
+46.5,60,"","STS",null,null,this.getTagsForStencil("mxgraph.aws3","sts","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"data_encryption_key;fillColor=#7D7C7C;gradientColor=none;",46.5,60,"","Data Encryption Key",null,null,this.getTagsForStencil("mxgraph.aws3","data encryption key","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"encrypted_data;fillColor=#7D7C7C;gradientColor=none;",43.5,55.5,
+"","Encrypted Data",null,null,this.getTagsForStencil("mxgraph.aws3","encrypted data","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"long_term_security_credential;fillColor=#ffffff;gradientColor=none;",60,48,"","Long Term Security Credential",null,null,this.getTagsForStencil("mxgraph.aws3","long term security credential","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"mfa_token;fillColor=#7D7C7C;gradientColor=none;",
+61.5,61.5,"","MFA Token",null,null,this.getTagsForStencil("mxgraph.aws3","mfa token","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"permissions_2;fillColor=#D2D3D3;gradientColor=none;",46.5,63,"","Permissions",null,null,this.getTagsForStencil("mxgraph.aws3","permissions","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"role;fillColor=#759C3E;gradientColor=none;",94.5,79.5,"","Role",null,
+null,this.getTagsForStencil("mxgraph.aws3","role","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"temporary_security_credential;fillColor=#ffffff;gradientColor=none;",67.5,60,"","Temporary Security Credential",null,null,this.getTagsForStencil("mxgraph.aws3","temporary security credential","aws amazon web service security and identity compliance").join(" ")),this.createVertexTemplateEntry(a+"filtering_rule;fillColor=#759C3E;gradientColor=none;",
+69,72,"","Filtering Rule",null,null,this.getTagsForStencil("mxgraph.aws3","filtering rule","aws amazon web service security and identity compliance").join(" "))])};Sidebar.prototype.addAWS3StoragePalette=function(){var a="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws3.";this.addPaletteFunctions("aws3Storage","AWS17 / Storage",!1,[this.createVertexTemplateEntry(a+"s3;fillColor=#E05243;gradientColor=none;",76.5,93,
+"","S3",null,null,this.getTagsForStencil("mxgraph.aws3","s3","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"glacier;fillColor=#E05243;gradientColor=none;",76.5,93,"","Glacier",null,null,this.getTagsForStencil("mxgraph.aws3","glacier","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"storage_gateway;fillColor=#E05243;gradientColor=none;",76.5,93,"","Storage Gateway",null,null,this.getTagsForStencil("mxgraph.aws3","storage gateway","aws amazon web service storage").join(" ")),
+this.createVertexTemplateEntry(a+"efs;fillColor=#E05243;gradientColor=none;",76.5,93,"","EFS",null,null,this.getTagsForStencil("mxgraph.aws3","efs","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"archive;fillColor=#E05243;gradientColor=none;",57,75,"","Archive",null,null,this.getTagsForStencil("mxgraph.aws3","archive","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"vault;fillColor=#E05243;gradientColor=none;",54,75,"","Vault",null,null,
+this.getTagsForStencil("mxgraph.aws3","vault","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"bucket;fillColor=#E05243;gradientColor=none;",60,61.5,"","Bucket",null,null,this.getTagsForStencil("mxgraph.aws3","bucket","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"bucket_with_objects;fillColor=#E05243;gradientColor=none;",60,61.5,"","Bucket with Objects",null,null,this.getTagsForStencil("mxgraph.aws3","bucket with objects","aws amazon web service storage").join(" ")),
+this.createVertexTemplateEntry(a+"object;fillColor=#E05243;gradientColor=none;",42,45,"","Object",null,null,this.getTagsForStencil("mxgraph.aws3","object","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"virtual_tape_library;fillColor=#E05243;gradientColor=none;",60,73.5,"","Virtual Tape Library",null,null,this.getTagsForStencil("mxgraph.aws3","virtual tape library","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"cached_volume;fillColor=#E05243;gradientColor=none;",
+60,73.5,"","Cached Volume",null,null,this.getTagsForStencil("mxgraph.aws3","cached volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"non_cached_volume;fillColor=#E05243;gradientColor=none;",60,73.5,"","Non-Cached Volume",null,null,this.getTagsForStencil("mxgraph.aws3","non cached volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"snapshot;fillColor=#E05243;gradientColor=none;",60,73.5,"","Snapshot",null,null,this.getTagsForStencil("mxgraph.aws3",
+"snapshot","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"volume;fillColor=#E05243;gradientColor=none;",52.5,75,"","Volume",null,null,this.getTagsForStencil("mxgraph.aws3","volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"snowball;fillColor=#E05243;gradientColor=none;",67.5,81,"","Snowball",null,null,this.getTagsForStencil("mxgraph.aws3","snowball","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"efs_share;fillColor=#E05243;gradientColor=none;",
+69,63,"","EFS Share",null,null,this.getTagsForStencil("mxgraph.aws3","efs share","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"import_export;fillColor=#E05243;gradientColor=none;",64.5,63,"","Import/Export",null,null,this.getTagsForStencil("mxgraph.aws3","import export","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(a+"volume;fillColor=#E05243;gradientColor=none;",52.5,75,"","EBS",null,null,this.getTagsForStencil("mxgraph.aws3","ebs","aws amazon web service storage").join(" "))])}})();(function(){Sidebar.prototype.addAWS3DPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;"+mxConstants.STYLE_STROKEWIDTH+"=1;align=center;outlineConnect=0;dashed=0;outlineConnect=0;shape=mxgraph.aws3d.";this.addPaletteFunctions("aws3d","AWS 3D",!1,[this.createVertexTemplateEntry(a+"ami;aspect=fixed;fillColor=#E8CA45;strokeColor=#FFF215;",92,60,"","AMI",null,null,this.getTagsForStencil("mxgraph.aws3d","ami","aws 3d amazon web service").join(" ")),
 this.createVertexTemplateEntry(a+"ami2;aspect=fixed;fillColor=#FF9900;strokeColor=#ffffff;",74,50,"","AMI",null,null,this.getTagsForStencil("mxgraph.aws3d","ami","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"application;fillColor=#4286c5;strokeColor=#57A2D8;aspect=fixed;",62,68.8,"","Application",null,null,this.getTagsForStencil("mxgraph.aws3d","application","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"application2;fillColor=#86E83A;strokeColor=#B0F373;aspect=fixed;",
 62,53,"","Application",null,null,this.getTagsForStencil("mxgraph.aws3d","application","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"application_server;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",123,124,"","EC2 Instance",null,null,this.getTagsForStencil("mxgraph.aws3d","ec2 instance","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"client;aspect=fixed;strokeColor=none;fillColor=#777777;",60,104,"","Client",null,null,this.getTagsForStencil("mxgraph.aws3d",
 "client","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"cloudfront;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",103.8,100*1.698,"","CloudFront",null,null,this.getTagsForStencil("mxgraph.aws3d","cloudfront","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"file;aspect=fixed;strokeColor=#2d6195;fillColor=#ffffff;",30.8,70.6,"","Content",null,null,this.getTagsForStencil("mxgraph.aws3d","content","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+
-"customerGateway;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",116.7,102.8,"","Customer Gateway",null,null,this.getTagsForStencil("mxgraph.aws3d","customer gateway","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"dataCenter;fillColor=#ffffff;strokeColor=#5E5E5E;aspect=fixed;",123,142,"","Data Center",null,null,this.getTagsForStencil("mxgraph.aws3d","data center","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"dataServer;fillColor=#ffffff;strokeColor=#5E5E5E;aspect=fixed;",
-123,106,"","Data Server",null,null,this.getTagsForStencil("mxgraph.aws3d","data server","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"decider;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",74,50,"","Decider",null,null,this.getTagsForStencil("mxgraph.aws3d","decider","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"dynamoDb;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",181.5,210,"","DynamoDB",null,null,this.getTagsForStencil("mxgraph.aws3d",
+"customerGateway;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",116.7,102.8,"","Customer Gateway",null,null,this.getTagsForStencil("mxgraph.aws3d","customer gateway","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"dataCenter;strokeColor=#5E5E5E;aspect=fixed;",123,142,"","Data Center",null,null,this.getTagsForStencil("mxgraph.aws3d","data center","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"dataServer;strokeColor=#5E5E5E;aspect=fixed;",123,
+106,"","Data Server",null,null,this.getTagsForStencil("mxgraph.aws3d","data server","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"decider;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",74,50,"","Decider",null,null,this.getTagsForStencil("mxgraph.aws3d","decider","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"dynamoDb;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",181.5,210,"","DynamoDB",null,null,this.getTagsForStencil("mxgraph.aws3d",
 "dynamodb db database","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"ebs;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",92,60,"","EBS",null,null,this.getTagsForStencil("mxgraph.aws3d","ebs","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"ebs2;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",92,60,"","EBS",null,null,this.getTagsForStencil("mxgraph.aws3d","ebs","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"elasticBeanstalk;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",
 182,140,"","Elastic Beanstalk",null,null,this.getTagsForStencil("mxgraph.aws3d","elastic beanstalk","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"elasticLoadBalancing;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",92,88.17,"","Elastic Load Balancing",null,null,this.getTagsForStencil("mxgraph.aws3d","elastic load balancing elb","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"elasticMapReduce;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",
 123,133,"","Elastic MapReduce",null,null,this.getTagsForStencil("mxgraph.aws3d","elastic mapreduce","aws 3d amazon web service").join(" ")),this.addEntry("aws 3d amazon web serviceelasticache",function(){var b=new mxCell("",new mxGeometry(70,0,123,124),a+"application_server;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;");b.vertex=!0;var e=new mxCell("",new mxGeometry(0,40,123,124),a+"application_server;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;");e.vertex=!0;var c=new mxCell("",new mxGeometry(140,
-40,123,124),a+"application_server;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;");c.vertex=!0;var d=new mxCell("",new mxGeometry(70,80,123,124),a+"application_server;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;");d.vertex=!0;return sb.createVertexTemplateFromCells([b,e,c,d],264,204,"Elasticache")}),this.createVertexTemplateEntry(a+"email;aspect=fixed;strokeColor=#292929;fillColor=#ffffff;",43,100*.57,"","Email",null,null,this.getTagsForStencil("mxgraph.aws3d","email","aws 3d amazon web service").join(" ")),
-this.createVertexTemplateEntry(a+"email_service;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",151,192,"","Email Service",null,null,this.getTagsForStencil("mxgraph.aws3d","email service","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"file;aspect=fixed;strokeColor=#292929;fillColor=#ffffff;",30.8,70.6,"","File",null,null,this.getTagsForStencil("mxgraph.aws3d","file","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"glacier;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",
+40,123,124),a+"application_server;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;");c.vertex=!0;var d=new mxCell("",new mxGeometry(70,80,123,124),a+"application_server;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;");d.vertex=!0;return sb.createVertexTemplateFromCells([b,e,c,d],264,204,"Elasticache")}),this.createVertexTemplateEntry(a+"email;aspect=fixed;strokeColor=#292929;",43,100*.57,"","Email",null,null,this.getTagsForStencil("mxgraph.aws3d","email","aws 3d amazon web service").join(" ")),
+this.createVertexTemplateEntry(a+"email_service;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",151,192,"","Email Service",null,null,this.getTagsForStencil("mxgraph.aws3d","email service","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"file;aspect=fixed;strokeColor=#292929;",30.8,70.6,"","File",null,null,this.getTagsForStencil("mxgraph.aws3d","file","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"glacier;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",
 181,192,"","Glacier",null,null,this.getTagsForStencil("mxgraph.aws3d","glacier","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"image;strokeColor=none;fillColor=#777777;aspect=fixed;",50,86,"","Image/Video",null,null,this.getTagsForStencil("mxgraph.aws3d","image video","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"internetGateway;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",116.7,102.8,"","Internet Gateway",null,null,this.getTagsForStencil("mxgraph.aws3d",
 "internet gateway","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"lambda;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;",92,109.5,"","Lambda",null,null,this.getTagsForStencil("mxgraph.aws3d","lambda","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"mobile_worker;aspect=fixed;strokeColor=none;fillColor=#777777;",36,90,"","Mobile Worker",null,null,this.getTagsForStencil("mxgraph.aws3d","mobile worker","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+
 "oracleDataCenter;fillColor=#ffffff;strokeColor=#5E5E5E;aspect=fixed;",123,142,"","Oracle Data Center",null,null,this.getTagsForStencil("mxgraph.aws3d","oracle data center","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"oracleDbServer;fillColor=#ffffff;strokeColor=#5E5E5E;aspect=fixed;",123,133,"","Oracle Database Server",null,null,this.getTagsForStencil("mxgraph.aws3d","oracle database server db","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+
@@ -4524,24 +4520,24 @@ null,null,this.getTagsForStencil("mxgraph.azure","tablet","").join(" ")),this.cr
 "vhd_data_disk","").join(" ")),this.createVertexTemplateEntry(a+"virtual_machine;",50,40,"","Virtual Machine",null,null,this.getTagsForStencil("mxgraph.azure","virtual_machine","").join(" ")),this.createVertexTemplateEntry(a+"virtual_machine_feature;pointerEvents=1;",50,45,"","Virtual Machine Feature",null,null,this.getTagsForStencil("mxgraph.azure","virtual_machine_feature","").join(" ")),this.createVertexTemplateEntry(a+"virtual_network;pointerEvents=1;",50,50*.55,"","Virtual Network",null,null,
 this.getTagsForStencil("mxgraph.azure","virtual_network","").join(" ")),this.createVertexTemplateEntry(a+"visual_studio_online;",50,37.5,"","Visual Studio Online",null,null,this.getTagsForStencil("mxgraph.azure","visual_studio_online","").join(" ")),this.createVertexTemplateEntry(a+"wadcfg_diagnostics_file;pointerEvents=1;",47.5,50,"","WADCFG Diagnostics File",null,null,this.getTagsForStencil("mxgraph.azure","wadcfg_diagnostics_file","").join(" ")),this.createVertexTemplateEntry(a+"website_generic;pointerEvents=1;",
 50,42.5,"","Website Generic",null,null,this.getTagsForStencil("mxgraph.azure","website_generic","").join(" ")),this.createVertexTemplateEntry(a+"web_role;",50,40,"","Web Role",null,null,this.getTagsForStencil("mxgraph.azure","web_role","").join(" ")),this.createVertexTemplateEntry(a+"web_roles;",50*1.1,45,"","Web Roles",null,null,this.getTagsForStencil("mxgraph.azure","web_roles","").join(" ")),this.createVertexTemplateEntry(a+"worker_role;",50,40,"","Worker Role",null,null,this.getTagsForStencil("mxgraph.azure",
-"worker_role","").join(" ")),this.createVertexTemplateEntry(a+"worker_roles;",50*1.1,45,"","Worker Roles",null,null,this.getTagsForStencil("mxgraph.azure","worker_roles","").join(" "))])}})();(function(){Sidebar.prototype.addBasicPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shape=mxgraph.basic.";this.addPaletteFunctions("basic",mxResources.get("basic"),!1,[this.createVertexTemplateEntry(a+"rect;fillColor=#ffffff;fillColor2=none;strokeColor=#000000;strokeWidth=1;size=20;indent=5;",120,60,"","Partial Rectangle"),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;top=0;bottom=0;fillColor=none;",
-120,60,"","Partial Rectangle"),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;right=0;top=0;bottom=0;fillColor=none;routingCenterX=-0.5;",120,60,"","Partial Rectangle"),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;bottom=0;right=0;fillColor=none;",120,60,"","Partial Rectangle"),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;top=0;left=0;fillColor=none;",120,60,"","Partial Rectangle"),this.createVertexTemplateEntry(a+
-"4_point_star_2;dx=0.8;",100,100,"","4 Point Star",null,null,this.getTagsForStencil("mxgraph.basic","4_point_star","").join(" ")),this.createVertexTemplateEntry(a+"6_point_star",100,90,"","6 Point Star",null,null,this.getTagsForStencil("mxgraph.basic","6_point_star","").join(" ")),this.createVertexTemplateEntry(a+"8_point_star",100,100,"","8 Point Star",null,null,this.getTagsForStencil("mxgraph.basic","8_point_star","").join(" ")),this.createVertexTemplateEntry(a+"banner",100,50,"","Banner",null,
-null,this.getTagsForStencil("mxgraph.basic","banner","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.cloud_callout",90,60,"","Cloud Callout",null,null,this.getTagsForStencil("mxgraph.basic","cloud_callout","").join(" ")),this.createVertexTemplateEntry(a+"cone",100,100,"","Cone",null,null,this.getTagsForStencil("mxgraph.basic","cone","").join(" ")),this.createVertexTemplateEntry(a+"cone2;dx=0.5;dy=0.9;",100,100,"","Cone (adjustable)",null,null,this.getTagsForStencil("mxgraph.basic",
-"cone","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.document",100,100,"","Document",null,null,this.getTagsForStencil("mxgraph.basic","document","").join(" ")),this.createVertexTemplateEntry(a+"donut;dx=25;",100,100,"","Donut",null,null,this.getTagsForStencil("mxgraph.basic","donut","").join(" ")),this.createVertexTemplateEntry(a+"drop",70,100,"","Drop",null,null,this.getTagsForStencil("mxgraph.basic","drop","").join(" ")),this.createVertexTemplateEntry(a+
-"flash",60,100,"","Flash",null,null,this.getTagsForStencil("mxgraph.basic","flash","").join(" ")),this.createVertexTemplateEntry(a+"half_circle",100,50,"","Half Circle",null,null,this.getTagsForStencil("mxgraph.basic","half_circle"," semicircle").join(" ")),this.createVertexTemplateEntry(a+"heart",100,100,"","Heart",null,null,this.getTagsForStencil("mxgraph.basic","heart","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.isocube;isoAngle=15;",100,100,"","Isometric Cube",
-null,null,this.getTagsForStencil("mxgraph.basic","isometric cube","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.loud_callout",100,60,"","Loud Callout",null,null,this.getTagsForStencil("mxgraph.basic","loud_callout","").join(" ")),this.createVertexTemplateEntry(a+"moon",75,100,"","Moon",null,null,this.getTagsForStencil("mxgraph.basic","moon","").join(" ")),this.createVertexTemplateEntry(a+"no_symbol",100,100,"","No Symbol",null,null,this.getTagsForStencil("mxgraph.basic",
-"no_symbol","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.octagon2;align=center;verticalAlign=middle;dx=15;",100,100,"","Octagon",null,null,this.getTagsForStencil("mxgraph.basic","octagon","").join(" ")),this.createVertexTemplateEntry(a+"orthogonal_triangle",100,70,"","Orthogonal Triangle",null,null,this.getTagsForStencil("mxgraph.basic","orthogonal_triangle","").join(" ")),this.createVertexTemplateEntry(a+"acute_triangle;dx=0.5;",100,70,"","Acute Triangle",
-null,null,this.getTagsForStencil("mxgraph.basic","acute_triangle","").join(" ")),this.createVertexTemplateEntry(a+"obtuse_triangle;dx=0.25;",100,70,"","Obtuse Triangle",null,null,this.getTagsForStencil("mxgraph.basic","obtuse_triangle","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.oval_callout",100,60,"","Oval Callout",null,null,this.getTagsForStencil("mxgraph.basic","oval_callout","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.pentagon",
-100,90,"","Pentagon",null,null,this.getTagsForStencil("mxgraph.basic","pentagon","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.pointed_oval",50,100,"","Pointed Oval",null,null,this.getTagsForStencil("mxgraph.basic","pointed oval","").join(" ")),this.createVertexTemplateEntry(a+"pyramid;dx1=0.4;dx2=0.6;dy1=0.9;dy2=0.8;",100,100,"","Pyramid",null,null,this.getTagsForStencil("mxgraph.basic","pyramid","").join(" ")),this.createVertexTemplateEntry(a+"diag_snip_rect;dx=6;",
-100,60,"","Diagonal Snip Rectangle",null,null,this.getTagsForStencil("mxgraph.basic","diag_snip_rect","").join(" ")),this.createVertexTemplateEntry(a+"diag_round_rect;dx=6;",100,60,"","Diagonal Rounded Rectangle",null,null,this.getTagsForStencil("mxgraph.basic","diag_round_rect","").join(" ")),this.createVertexTemplateEntry(a+"corner_round_rect;dx=6;",100,60,"","Corner Rounded Rectangle",null,null,this.getTagsForStencil("mxgraph.basic","corner_round_rect","").join(" ")),this.createVertexTemplateEntry(a+
-"three_corner_round_rect;dx=6;",100,60,"","Rounded Rectangle (three corners)",null,null,this.getTagsForStencil("mxgraph.basic","three_corner_round_rect","").join(" ")),this.createVertexTemplateEntry(a+"plaque;dx=6;",100,60,"","Plaque",null,null,this.getTagsForStencil("mxgraph.basic","plaque","").join(" ")),this.createVertexTemplateEntry(a+"frame;dx=10;",100,60,"","Frame",null,null,this.getTagsForStencil("mxgraph.basic","frame","").join(" ")),this.createVertexTemplateEntry(a+"rounded_frame;dx=10;",
-100,60,"","Rounded Frame",null,null,this.getTagsForStencil("mxgraph.basic","rounded_frame","").join(" ")),this.createVertexTemplateEntry(a+"plaque_frame;dx=10;",100,60,"","Plaque Frame",null,null,this.getTagsForStencil("mxgraph.basic","plaque_frame","").join(" ")),this.createVertexTemplateEntry(a+"frame_corner;dx=10;",100,60,"","Frame Corner",null,null,this.getTagsForStencil("mxgraph.basic","frame_corner","").join(" ")),this.createVertexTemplateEntry(a+"diag_stripe;dx=10;",100,60,"","Diagonal Stripe",
-null,null,this.getTagsForStencil("mxgraph.basic","diag_stripe","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.rectCallout;dx=30;dy=15;boundedLbl=1;",100,60,"","Rectangular Callout",null,null,this.getTagsForStencil("mxgraph.basic","rectangular_callout","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=30;dy=15;size=5;boundedLbl=1;",100,60,"","Rounded Rectangular Callout",null,null,this.getTagsForStencil("mxgraph.basic",
-"rectangular_callout","").join(" ")),this.createVertexTemplateEntry(a+"layered_rect;dx=10;outlineConnect=0;",100,60,"","Layered Rectangle",null,null,this.getTagsForStencil("mxgraph.basic","layered_rect","").join(" ")),this.createVertexTemplateEntry(a+"smiley",100,100,"","Smiley",null,null,this.getTagsForStencil("mxgraph.basic","smiley","").join(" ")),this.createVertexTemplateEntry(a+"star",100,95,"","Star",null,null,this.getTagsForStencil("mxgraph.basic","star","").join(" ")),this.createVertexTemplateEntry(a+
-"sun",100,100,"","Sun",null,null,this.getTagsForStencil("mxgraph.basic","sun","").join(" ")),this.createVertexTemplateEntry(a+"tick",85,100,"","Tick",null,null,this.getTagsForStencil("mxgraph.basic","tick","").join(" ")),this.createVertexTemplateEntry(a+"wave2;dy=0.3;",100,60,"","Wave",null,null,this.getTagsForStencil("mxgraph.basic","wave","").join(" ")),this.createVertexTemplateEntry("labelPosition=center;verticalLabelPosition=middle;align=center;html=1;shape=mxgraph.basic.button;dx=10;",100,60,
-"Button","Button",null,null,this.getTagsForStencil("mxgraph.basic","button","").join(" ")),this.createVertexTemplateEntry("labelPosition=center;verticalLabelPosition=middle;align=center;html=1;shape=mxgraph.basic.shaded_button;dx=10;fillColor=#E6E6E6;strokeColor=none;",100,60,"Button","Button (shaded)",null,null,this.getTagsForStencil("mxgraph.basic","button","").join(" ")),this.createVertexTemplateEntry(a+"x",100,100,"","X",null,null,this.getTagsForStencil("mxgraph.basic","x","").join(" ")),this.createVertexTemplateEntry(a+
-"pie;startAngle=0.2;endAngle=0.9;",100,100,"","Pie",null,null,this.getTagsForStencil("mxgraph.basic","pie","").join(" ")),this.createVertexTemplateEntry(a+"arc;startAngle=0.3;endAngle=0.1;",100,100,"","Arc",null,null,this.getTagsForStencil("mxgraph.basic","arc","").join(" ")),this.createVertexTemplateEntry(a+"partConcEllipse;startAngle=0.25;endAngle=0.1;arcWidth=0.5;",100,100,"","Partial Concentric Ellipse",null,null,this.getTagsForStencil("mxgraph.basic","partConcEllipse","").join(" "))])}})();(function(){Sidebar.prototype.addBootstrapPalette=function(){var a=this,b=[this.addDataEntry("bootstrap button bar dark",800,40,"Button Bar (Dark)","5ZhRb5swEMc/DY+NDKaEvIZ2fdm0qpH27gUDVg2HjNuQfvod2EnJnGxRWqJUsRQJn332+ffnbBOPJmX7oFhd/ICUS4/eezRRANo8lW3CpfQCIlKP3nlBQPDnBd8OtPp9K6mZ4pU+xiEwDq9MvnBjMYZGr6U1FLrEsO58j86bgqWwwgrBSsqagqe2gi11179s824tk9+4gkbj40TxJUYyz4SUCUhQ/aA06EvnqBU8801LBRWOMl8VQvNFzZbdkCscBW02UK40bw8utjfZlT5wKLlWa+yyEqkuTI+YGCCk4CIvrFtobawx9Xzr+o4OHyy9/SSpQzKBsmbV+jSgQ16Wyl5U/wcPlR6An/XF2hfirfP1w48wD45gPg7y0EH+yKFGzGd5hUlfDunyF/asL11nJCyq/MmSoGQE9O0u9oESs5GUuHWUiMNPV8HKoOxbG7uSZNkpkpyMP/wnfuuwttvw5NZRY4NtqIYfGZvikmnxynfG2ieRnf8RBIa1nfyGkp3pb+LdESDLGq4diberOEr1yFH9l4AubKiaC931zph+/tTNP98fKQGnjhTh55/kF5eA0ZUnYOyovtAYdKPF8lITcKRk23fYjXXtmLnUuda4q1wZcxq5zKcjMd/sm8O7ngIkd+Jl76syj87J3HeYf4ccDT9f9HVRn9LRqGP1/WvfHAHDPwP+AA=="),
+"worker_role","").join(" ")),this.createVertexTemplateEntry(a+"worker_roles;",50*1.1,45,"","Worker Roles",null,null,this.getTagsForStencil("mxgraph.azure","worker_roles","").join(" "))])}})();(function(){Sidebar.prototype.addBasicPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;html=1;shape=mxgraph.basic.";this.addPaletteFunctions("basic",mxResources.get("basic"),!1,[this.createVertexTemplateEntry(a+"rect;fillColor2=none;strokeWidth=1;size=20;indent=5;",120,60,"","Partial Rectangle"),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;top=0;bottom=0;fillColor=none;",120,60,"","Partial Rectangle"),
+this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;right=0;top=0;bottom=0;fillColor=none;routingCenterX=-0.5;",120,60,"","Partial Rectangle"),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;bottom=0;right=0;fillColor=none;",120,60,"","Partial Rectangle"),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;top=0;left=0;fillColor=none;",120,60,"","Partial Rectangle"),this.createVertexTemplateEntry(a+"4_point_star_2;dx=0.8;",
+100,100,"","4 Point Star",null,null,this.getTagsForStencil("mxgraph.basic","4_point_star","").join(" ")),this.createVertexTemplateEntry(a+"6_point_star",100,90,"","6 Point Star",null,null,this.getTagsForStencil("mxgraph.basic","6_point_star","").join(" ")),this.createVertexTemplateEntry(a+"8_point_star",100,100,"","8 Point Star",null,null,this.getTagsForStencil("mxgraph.basic","8_point_star","").join(" ")),this.createVertexTemplateEntry(a+"banner",100,50,"","Banner",null,null,this.getTagsForStencil("mxgraph.basic",
+"banner","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.cloud_callout",90,60,"","Cloud Callout",null,null,this.getTagsForStencil("mxgraph.basic","cloud_callout","").join(" ")),this.createVertexTemplateEntry(a+"cone",100,100,"","Cone",null,null,this.getTagsForStencil("mxgraph.basic","cone","").join(" ")),this.createVertexTemplateEntry(a+"cone2;dx=0.5;dy=0.9;",100,100,"","Cone (adjustable)",null,null,this.getTagsForStencil("mxgraph.basic","cone","").join(" ")),
+this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.document",100,100,"","Document",null,null,this.getTagsForStencil("mxgraph.basic","document","").join(" ")),this.createVertexTemplateEntry(a+"donut;dx=25;",100,100,"","Donut",null,null,this.getTagsForStencil("mxgraph.basic","donut","").join(" ")),this.createVertexTemplateEntry(a+"drop",70,100,"","Drop",null,null,this.getTagsForStencil("mxgraph.basic","drop","").join(" ")),this.createVertexTemplateEntry(a+"flash",60,100,"","Flash",
+null,null,this.getTagsForStencil("mxgraph.basic","flash","").join(" ")),this.createVertexTemplateEntry(a+"half_circle",100,50,"","Half Circle",null,null,this.getTagsForStencil("mxgraph.basic","half_circle"," semicircle").join(" ")),this.createVertexTemplateEntry(a+"heart",100,100,"","Heart",null,null,this.getTagsForStencil("mxgraph.basic","heart","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.isocube;isoAngle=15;",100,100,"","Isometric Cube",null,null,this.getTagsForStencil("mxgraph.basic",
+"isometric cube","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.loud_callout",100,60,"","Loud Callout",null,null,this.getTagsForStencil("mxgraph.basic","loud_callout","").join(" ")),this.createVertexTemplateEntry(a+"moon",75,100,"","Moon",null,null,this.getTagsForStencil("mxgraph.basic","moon","").join(" ")),this.createVertexTemplateEntry(a+"no_symbol",100,100,"","No Symbol",null,null,this.getTagsForStencil("mxgraph.basic","no_symbol","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.octagon2;align=center;verticalAlign=middle;dx=15;",
+100,100,"","Octagon",null,null,this.getTagsForStencil("mxgraph.basic","octagon","").join(" ")),this.createVertexTemplateEntry(a+"orthogonal_triangle",100,70,"","Orthogonal Triangle",null,null,this.getTagsForStencil("mxgraph.basic","orthogonal_triangle","").join(" ")),this.createVertexTemplateEntry(a+"acute_triangle;dx=0.5;",100,70,"","Acute Triangle",null,null,this.getTagsForStencil("mxgraph.basic","acute_triangle","").join(" ")),this.createVertexTemplateEntry(a+"obtuse_triangle;dx=0.25;",100,70,
+"","Obtuse Triangle",null,null,this.getTagsForStencil("mxgraph.basic","obtuse_triangle","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.oval_callout",100,60,"","Oval Callout",null,null,this.getTagsForStencil("mxgraph.basic","oval_callout","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.pentagon",100,90,"","Pentagon",null,null,this.getTagsForStencil("mxgraph.basic","pentagon","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.pointed_oval",
+50,100,"","Pointed Oval",null,null,this.getTagsForStencil("mxgraph.basic","pointed oval","").join(" ")),this.createVertexTemplateEntry(a+"pyramid;dx1=0.4;dx2=0.6;dy1=0.9;dy2=0.8;",100,100,"","Pyramid",null,null,this.getTagsForStencil("mxgraph.basic","pyramid","").join(" ")),this.createVertexTemplateEntry(a+"diag_snip_rect;dx=6;",100,60,"","Diagonal Snip Rectangle",null,null,this.getTagsForStencil("mxgraph.basic","diag_snip_rect","").join(" ")),this.createVertexTemplateEntry(a+"diag_round_rect;dx=6;",
+100,60,"","Diagonal Rounded Rectangle",null,null,this.getTagsForStencil("mxgraph.basic","diag_round_rect","").join(" ")),this.createVertexTemplateEntry(a+"corner_round_rect;dx=6;",100,60,"","Corner Rounded Rectangle",null,null,this.getTagsForStencil("mxgraph.basic","corner_round_rect","").join(" ")),this.createVertexTemplateEntry(a+"three_corner_round_rect;dx=6;",100,60,"","Rounded Rectangle (three corners)",null,null,this.getTagsForStencil("mxgraph.basic","three_corner_round_rect","").join(" ")),
+this.createVertexTemplateEntry(a+"plaque;dx=6;",100,60,"","Plaque",null,null,this.getTagsForStencil("mxgraph.basic","plaque","").join(" ")),this.createVertexTemplateEntry(a+"frame;dx=10;",100,60,"","Frame",null,null,this.getTagsForStencil("mxgraph.basic","frame","").join(" ")),this.createVertexTemplateEntry(a+"rounded_frame;dx=10;",100,60,"","Rounded Frame",null,null,this.getTagsForStencil("mxgraph.basic","rounded_frame","").join(" ")),this.createVertexTemplateEntry(a+"plaque_frame;dx=10;",100,60,
+"","Plaque Frame",null,null,this.getTagsForStencil("mxgraph.basic","plaque_frame","").join(" ")),this.createVertexTemplateEntry(a+"frame_corner;dx=10;",100,60,"","Frame Corner",null,null,this.getTagsForStencil("mxgraph.basic","frame_corner","").join(" ")),this.createVertexTemplateEntry(a+"diag_stripe;dx=10;",100,60,"","Diagonal Stripe",null,null,this.getTagsForStencil("mxgraph.basic","diag_stripe","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.rectCallout;dx=30;dy=15;boundedLbl=1;",
+100,60,"","Rectangular Callout",null,null,this.getTagsForStencil("mxgraph.basic","rectangular_callout","").join(" ")),this.createVertexTemplateEntry("whiteSpace=wrap;html=1;shape=mxgraph.basic.roundRectCallout;dx=30;dy=15;size=5;boundedLbl=1;",100,60,"","Rounded Rectangular Callout",null,null,this.getTagsForStencil("mxgraph.basic","rectangular_callout","").join(" ")),this.createVertexTemplateEntry(a+"layered_rect;dx=10;outlineConnect=0;",100,60,"","Layered Rectangle",null,null,this.getTagsForStencil("mxgraph.basic",
+"layered_rect","").join(" ")),this.createVertexTemplateEntry(a+"smiley",100,100,"","Smiley",null,null,this.getTagsForStencil("mxgraph.basic","smiley","").join(" ")),this.createVertexTemplateEntry(a+"star",100,95,"","Star",null,null,this.getTagsForStencil("mxgraph.basic","star","").join(" ")),this.createVertexTemplateEntry(a+"sun",100,100,"","Sun",null,null,this.getTagsForStencil("mxgraph.basic","sun","").join(" ")),this.createVertexTemplateEntry(a+"tick",85,100,"","Tick",null,null,this.getTagsForStencil("mxgraph.basic",
+"tick","").join(" ")),this.createVertexTemplateEntry(a+"wave2;dy=0.3;",100,60,"","Wave",null,null,this.getTagsForStencil("mxgraph.basic","wave","").join(" ")),this.createVertexTemplateEntry("labelPosition=center;verticalLabelPosition=middle;align=center;html=1;shape=mxgraph.basic.button;dx=10;",100,60,"Button","Button",null,null,this.getTagsForStencil("mxgraph.basic","button","").join(" ")),this.createVertexTemplateEntry("labelPosition=center;verticalLabelPosition=middle;align=center;html=1;shape=mxgraph.basic.shaded_button;dx=10;fillColor=#E6E6E6;strokeColor=none;",
+100,60,"Button","Button (shaded)",null,null,this.getTagsForStencil("mxgraph.basic","button","").join(" ")),this.createVertexTemplateEntry(a+"x",100,100,"","X",null,null,this.getTagsForStencil("mxgraph.basic","x","").join(" ")),this.createVertexTemplateEntry(a+"pie;startAngle=0.2;endAngle=0.9;",100,100,"","Pie",null,null,this.getTagsForStencil("mxgraph.basic","pie","").join(" ")),this.createVertexTemplateEntry(a+"arc;startAngle=0.3;endAngle=0.1;",100,100,"","Arc",null,null,this.getTagsForStencil("mxgraph.basic",
+"arc","").join(" ")),this.createVertexTemplateEntry(a+"partConcEllipse;startAngle=0.25;endAngle=0.1;arcWidth=0.5;",100,100,"","Partial Concentric Ellipse",null,null,this.getTagsForStencil("mxgraph.basic","partConcEllipse","").join(" "))])}})();(function(){Sidebar.prototype.addBootstrapPalette=function(){var a=this,b=[this.addDataEntry("bootstrap button bar dark",800,40,"Button Bar (Dark)","5ZhRb5swEMc/DY+NDKaEvIZ2fdm0qpH27gUDVg2HjNuQfvod2EnJnGxRWqJUsRQJn332+ffnbBOPJmX7oFhd/ICUS4/eezRRANo8lW3CpfQCIlKP3nlBQPDnBd8OtPp9K6mZ4pU+xiEwDq9MvnBjMYZGr6U1FLrEsO58j86bgqWwwgrBSsqagqe2gi11179s824tk9+4gkbj40TxJUYyz4SUCUhQ/aA06EvnqBU8801LBRWOMl8VQvNFzZbdkCscBW02UK40bw8utjfZlT5wKLlWa+yyEqkuTI+YGCCk4CIvrFtobawx9Xzr+o4OHyy9/SSpQzKBsmbV+jSgQ16Wyl5U/wcPlR6An/XF2hfirfP1w48wD45gPg7y0EH+yKFGzGd5hUlfDunyF/asL11nJCyq/MmSoGQE9O0u9oESs5GUuHWUiMNPV8HKoOxbG7uSZNkpkpyMP/wnfuuwttvw5NZRY4NtqIYfGZvikmnxynfG2ieRnf8RBIa1nfyGkp3pb+LdESDLGq4diberOEr1yFH9l4AubKiaC931zph+/tTNP98fKQGnjhTh55/kF5eA0ZUnYOyovtAYdKPF8lITcKRk23fYjXXtmLnUuda4q1wZcxq5zKcjMd/sm8O7ngIkd+Jl76syj87J3HeYf4ccDT9f9HVRn9LRqGP1/WvfHAHDPwP+AA=="),
 this.addDataEntry("bootstrap button bar bright",800,40,"Button Bar (Bright)","5ZdRb5swEMc/DY9FBhNCXkPavmxStUh798IB1gxGxmvIPv0OcBKoSZetpYpUIyT77DP278+dwaFx0TwqVuVfZQLCofcOjZWUuq8VTQxCOD7hiUM3ju8TvB3/4UKv1/WSiiko9TUOfu/wzMQv6C29odYHYQy5LnBZG8+h6zpnidxjg2AjYXUOiWlgT9WOL5qs3Yv7A3dQa6y6Cna4knXKhYilkKqblKZhe7WOWsmfcOwpZYmzrPc517Ct2K6dco+zoM0sFJSG5uJmO5PZ6SPIArQ64JA9T3Tej4hID4TkwLPcuAXGxuq+nZ1cz+iwYuhNk6QWyVgWFSsP/wd0yMtQmUT1d/Cy1APwSVeMfct/t75e8Bbm/hXM50EeWMifQFaI+WNeYdJel3R5gX3VlXYwEuZl9s2QoGQG9M0Y+0CJ1UxKLCwlouDdVTAyKPPWRhOSpATLlZKkXXkL/uBV/MbhYNKwu7DUOGIbquGFvU2BYJo/w2iuKYnM858kx2WdHn5Hyejxd9F4BpmmNWhL4tMurlI9tFT/zmW7bFnWN5r1PjD8vKUdf543UwAuLSmC9z/Jby4Aw08egJGl+lbjomvNd7cagDMF29RhN9dnx8qmDlpjVvlkzGloM1/OxPyYN0fQmdrlruvOnecWU3nOpK6xUC+/r6fsTPCsRJuAVJ8PpC9da+PNeB6Fi3FGstOhRyfUo/+uHjbPf7B9Whv+4P4B"),
 this.addEntry("bootstrap button group vertical",function(){var b=new mxCell("",new mxGeometry(0,0,100,150),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;html=1;whiteSpace=wrap;fillColor=#ffffff;");b.vertex=!0;var c=new mxCell("Edit",new mxGeometry(0,0,100,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;perimeter=none;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.vertex=
 !0;b.insert(c);c=new mxCell("Create",new mxGeometry(0,0,100,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,30);c.vertex=!0;b.insert(c);var d=new mxCell("Delete",new mxGeometry(0,0,100,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;whiteSpace=wrap;resizeWidth=1;");
@@ -4552,95 +4548,94 @@ d.geometry.relative=!0;d.geometry.offset=new mxPoint(0,-30);d.vertex=!0;b.insert
 c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,-40);c.vertex=!0;b.insert(c);c=new mxCell("All Users",new mxGeometry(0,0,160,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;fillColor=#3D8BCD;strokeColor=#3D8BCD;fontColor=#ffffff;spacingLeft=10;align=left;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Button Group (Vertical)")}),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;fillColor=#3D8BCD;strokeColor=#0D5B9D;fontColor=#ffffff;spacingLeft=10;align=left;whiteSpace=wrap;",
 160,40,"All Users","Top Button",null,null,this.getTagsForStencil("mxgraph.bootstrap","topButton","bootstrap top button").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.bottomButton;rSize=5;fillColor=#3D8BCD;strokeColor=#0D5B9D;fontColor=#ffffff;spacingLeft=10;align=left;whiteSpace=wrap;",160,40,"All Users","Bottom Button",null,null,this.getTagsForStencil("mxgraph.bootstrap","bottomButton","bootstrap bottom button").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;fillColor=#3D8BCD;strokeColor=#0D5B9D;fontColor=#ffffff;spacingLeft=10;align=left;whiteSpace=wrap;",
 160,40,"All Users","Right Button",null,null,this.getTagsForStencil("mxgraph.bootstrap","rightButton","bootstrap right button").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;fillColor=#3D8BCD;strokeColor=#0D5B9D;fontColor=#ffffff;spacingLeft=10;align=left;whiteSpace=wrap;",160,40,"All Users","Left Button",null,null,this.getTagsForStencil("mxgraph.bootstrap","leftButton","bootstrap left button").join(" ")),this.addEntry("bootstrap dropdown large",
-function(){var b=new mxCell("Dropdown",new mxGeometry(0,0,140,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;spacingRight=10;fontSize=16;whiteSpace=wrap;fillColor=#ffffff;align=center;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],
-b.geometry.width,b.geometry.height,"Dropdown (Large)")}),this.addEntry("bootstrap dropdown normal",function(){var b=new mxCell("Dropdown",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;spacingRight=10;fontSize=14;whiteSpace=wrap;fillColor=#ffffff;align=center;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;");c.geometry.relative=!0;c.geometry.offset=
-new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Normal)")}),this.addEntry("bootstrap dropdown small",function(){var b=new mxCell("Dropdown",new mxGeometry(0,0,100,22),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;fontSize=12;rSize=5;strokeColor=#dddddd;spacingRight=10;perimeter=none;whiteSpace=wrap;fillColor=#ffffff;align=center;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;");
-c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Small)")}),this.addEntry("bootstrap dropdown tiny",function(){var b=new mxCell("Dropdown",new mxGeometry(0,0,90,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;spacingRight=10;fontSize=10;whiteSpace=wrap;fillColor=#ffffff;align=center;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,
-.5,10,5),"shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Tiny)")}),this.addEntry("bootstrap button group justified large",function(){var b=new mxCell("",new mxGeometry(0,0,240,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;");b.vertex=
-!0;var c=new mxCell("Left",new mxGeometry(0,0,80,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;perimeter=none;fontSize=16;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Middle",new mxGeometry(80,0,80,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontSize=16;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Right",
-new mxGeometry(160,0,80,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;fontSize=16;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Button Group (Justified, Large)")}),this.addEntry("bootstrap button group justified normal",function(){var b=new mxCell("",new mxGeometry(0,0,180,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;");
-b.vertex=!0;var c=new mxCell("Left",new mxGeometry(0,0,60,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Middle",new mxGeometry(60,0,60,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Right",
-new mxGeometry(120,0,60,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Button Group (Justified, Normal)")}),this.addEntry("bootstrap button group justified small",function(){var b=new mxCell("",new mxGeometry(0,0,150,22),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;");
-b.vertex=!0;var c=new mxCell("Left",new mxGeometry(0,0,50,22),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;perimeter=none;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Middle",new mxGeometry(50,0,50,22),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Right",new mxGeometry(100,
-0,50,22),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Button Group (Justified, Small)")}),this.addEntry("bootstrap button group justified tiny",function(){var b=new mxCell("",new mxGeometry(0,0,120,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;");
-b.vertex=!0;var c=new mxCell("Left",new mxGeometry(0,0,40,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;perimeter=none;fontSize=10;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Middle",new mxGeometry(40,0,40,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontSize=10;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Right",
-new mxGeometry(80,0,40,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;fontSize=10;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Button Group (Justified, Tiny)")}),this.addEntry("bootstrap button toolbar",function(){var b=new mxCell("",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;");
-b.vertex=!0;var c=new mxCell("1",new mxGeometry(0,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("2",new mxGeometry(30,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;b.insert(c);var d=new mxCell("3",
-new mxGeometry(60,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontSize=14;whiteSpace=wrap;");d.vertex=!0;b.insert(d);c=new mxCell("4",new mxGeometry(90,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;b.insert(c);d=new mxCell("",new mxGeometry(130,0,90,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;");
-d.vertex=!0;c=new mxCell("5",new mxGeometry(0,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;d.insert(c);c=new mxCell("6",new mxGeometry(30,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;d.insert(c);c=new mxCell("7",new mxGeometry(60,
-0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;d.insert(c);c=new mxCell("8",new mxGeometry(230,0,30,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;fontSize=12;align=center;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;fillColor=#ffffff;");c.vertex=!0;return a.createVertexTemplateFromCells([b,d,c],260,30,"Button Toolbar")}),this.addEntry("bootstrap button group nested",
-function(){var b=new mxCell("",new mxGeometry(0,0,160,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;");b.vertex=!0;var c=new mxCell("1",new mxGeometry(0,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("2",new mxGeometry(30,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontSize=14;whiteSpace=wrap;");
-c.vertex=!0;b.insert(c);c=new mxCell("Dropdown",new mxGeometry(60,0,100,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;fontSize=14;spacingRight=10;whiteSpace=wrap;");c.vertex=!0;b.insert(c);var d=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-15,-2.5);d.vertex=!0;c.insert(d);
-return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Button Group (Nested)")}),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;align=center;fontSize=16;whiteSpace=wrap;",80,40,"Button","Button (Large)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button large").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;align=center;fontSize=14;whiteSpace=wrap;",
-60,30,"Button","Button (Normal)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button normal").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;align=center;fontSize=12;whiteSpace=wrap;",44,22,"Button","Button (Small)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button small").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;align=center;fontSize=10;whiteSpace=wrap;",
-40,20,"Button","Button (Tiny)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button tiny").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#3D8BCD;align=center;strokeColor=#3D8BCD;fontColor=#ffffff;fontSize=16;whiteSpace=wrap;",80,40,"Button","Button (Large)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button large").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#3D8BCD;align=center;strokeColor=#3D8BCD;fontColor=#ffffff;fontSize=14;whiteSpace=wrap;",
-60,30,"Button","Button (Normal)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button normal").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#3D8BCD;align=center;strokeColor=#3D8BCD;fontColor=#ffffff;fontSize=12;whiteSpace=wrap;",44,22,"Button","Button (Small)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button small").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#3D8BCD;align=center;strokeColor=#3D8BCD;fontColor=#ffffff;fontSize=10;whiteSpace=wrap;",
-40,20,"Button","Button (Tiny)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button tiny").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#58B957;align=center;strokeColor=#58B957;fontColor=#ffffff;fontSize=16;whiteSpace=wrap;",80,40,"Button","Button (Large)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button large").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#58B957;align=center;strokeColor=#58B957;fontColor=#ffffff;fontSize=14;whiteSpace=wrap;",
-60,30,"Button","Button (Normal)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button normal").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#58B957;align=center;strokeColor=#58B957;fontColor=#ffffff;fontSize=12;whiteSpace=wrap;",44,22,"Button","Button (Small)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button small").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#58B957;align=center;strokeColor=#58B957;fontColor=#ffffff;fontSize=10;whiteSpace=wrap;",
-40,20,"Button","Button (Tiny)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button tiny").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#55BFE0;align=center;strokeColor=#55BFE0;fontColor=#ffffff;fontSize=16;whiteSpace=wrap;",80,40,"Button","Button (Large)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button large").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#55BFE0;align=center;strokeColor=#55BFE0;fontColor=#ffffff;fontSize=14;whiteSpace=wrap;",
-60,30,"Button","Button (Normal)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button normal").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#55BFE0;align=center;strokeColor=#55BFE0;fontColor=#ffffff;fontSize=12;whiteSpace=wrap;",44,22,"Button","Button (Small)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button small").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#55BFE0;align=center;strokeColor=#55BFE0;fontColor=#ffffff;fontSize=10;whiteSpace=wrap;",
-40,20,"Button","Button (Tiny)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button tiny").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#EFAC43;align=center;strokeColor=#EFAC43;fontColor=#ffffff;fontSize=16;whiteSpace=wrap;",80,40,"Button","Button (Large)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button large").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#EFAC43;align=center;strokeColor=#EFAC43;fontColor=#ffffff;fontSize=14;whiteSpace=wrap;",
-60,30,"Button","Button (Normal)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button normal").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#EFAC43;align=center;strokeColor=#EFAC43;fontColor=#ffffff;fontSize=12;whiteSpace=wrap;",44,22,"Button","Button (Small)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button small").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#EFAC43;align=center;strokeColor=#EFAC43;fontColor=#ffffff;fontSize=10;whiteSpace=wrap;",
-40,20,"Button","Button (Tiny)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button tiny").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#DB524C;align=center;strokeColor=#DB524C;fontColor=#ffffff;fontSize=16;whiteSpace=wrap;",80,40,"Button","Button (Large)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button large").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#DB524C;align=center;strokeColor=#DB524C;fontColor=#ffffff;fontSize=14;whiteSpace=wrap;",
-60,30,"Button","Button (Normal)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button normal").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#DB524C;align=center;strokeColor=#DB524C;fontColor=#ffffff;fontSize=12;whiteSpace=wrap;",44,22,"Button","Button (Small)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button small").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#DB524C;align=center;strokeColor=#DB524C;fontColor=#ffffff;fontSize=10;whiteSpace=wrap;",
-40,20,"Button","Button (Tiny)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button tiny").join(" ")),this.addEntry("bootstrap dropdown small",function(){var b=new mxCell("Primary",new mxGeometry(0,0,100,22),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#3D8BCD;strokeColor=#3D8BCD;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;");
-c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Small)")}),this.addEntry("bootstrap dropdown small",function(){var b=new mxCell("Success",new mxGeometry(0,0,100,22),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#58B957;strokeColor=#58B957;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,
-.5,10,5),"shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Small)")}),this.addEntry("bootstrap dropdown small",function(){var b=new mxCell("Info",new mxGeometry(0,0,100,22),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#55BFE0;strokeColor=#55BFE0;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;");
-b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;whiteSpace=wrap;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Small)")}),this.addEntry("bootstrap dropdown small",function(){var b=new mxCell("Warning",new mxGeometry(0,0,100,22),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#EFAC43;strokeColor=#EFAC43;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;");
-b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;whiteSpace=wrap;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Small)")}),this.addEntry("bootstrap dropdown small",function(){var b=new mxCell("Danger",new mxGeometry(0,0,100,22),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#DB524C;strokeColor=#DB524C;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;");
-b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;whiteSpace=wrap;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Small)")}),this.addEntry("bootstrap dropdown split",function(){var b=new mxCell("Default",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;fillColor=#ffffff;align=center;rSize=5;strokeColor=#dddddd;spacingRight=20;fontSize=14;whiteSpace=wrap;");
+function(){var b=new mxCell("Dropdown",new mxGeometry(0,0,140,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;spacingRight=10;fontSize=16;whiteSpace=wrap;align=center;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,
+"Dropdown (Large)")}),this.addEntry("bootstrap dropdown normal",function(){var b=new mxCell("Dropdown",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;spacingRight=10;fontSize=14;whiteSpace=wrap;align=center;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);
+return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Normal)")}),this.addEntry("bootstrap dropdown small",function(){var b=new mxCell("Dropdown",new mxGeometry(0,0,100,22),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;fontSize=12;rSize=5;strokeColor=#dddddd;spacingRight=10;perimeter=none;whiteSpace=wrap;align=center;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;");
+c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Small)")}),this.addEntry("bootstrap dropdown tiny",function(){var b=new mxCell("Dropdown",new mxGeometry(0,0,90,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;spacingRight=10;fontSize=10;whiteSpace=wrap;align=center;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;");
+c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Tiny)")}),this.addEntry("bootstrap button group justified large",function(){var b=new mxCell("",new mxGeometry(0,0,240,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd");b.vertex=!0;var c=new mxCell("Left",new mxGeometry(0,0,80,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;perimeter=none;fontSize=16;whiteSpace=wrap;");
+c.vertex=!0;b.insert(c);c=new mxCell("Middle",new mxGeometry(80,0,80,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontSize=16;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Right",new mxGeometry(160,0,80,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;fontSize=16;whiteSpace=wrap;");c.vertex=!0;b.insert(c);
+return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Button Group (Justified, Large)")}),this.addEntry("bootstrap button group justified normal",function(){var b=new mxCell("",new mxGeometry(0,0,180,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd");b.vertex=!0;var c=new mxCell("Left",new mxGeometry(0,0,60,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;");
+c.vertex=!0;b.insert(c);c=new mxCell("Middle",new mxGeometry(60,0,60,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Right",new mxGeometry(120,0,60,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;b.insert(c);
+return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Button Group (Justified, Normal)")}),this.addEntry("bootstrap button group justified small",function(){var b=new mxCell("",new mxGeometry(0,0,150,22),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd");b.vertex=!0;var c=new mxCell("Left",new mxGeometry(0,0,50,22),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;perimeter=none;whiteSpace=wrap;");
+c.vertex=!0;b.insert(c);c=new mxCell("Middle",new mxGeometry(50,0,50,22),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Right",new mxGeometry(100,0,50,22),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],
+b.geometry.width,b.geometry.height,"Button Group (Justified, Small)")}),this.addEntry("bootstrap button group justified tiny",function(){var b=new mxCell("",new mxGeometry(0,0,120,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd");b.vertex=!0;var c=new mxCell("Left",new mxGeometry(0,0,40,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;perimeter=none;fontSize=10;whiteSpace=wrap;");
+c.vertex=!0;b.insert(c);c=new mxCell("Middle",new mxGeometry(40,0,40,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontSize=10;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Right",new mxGeometry(80,0,40,20),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;fontSize=10;whiteSpace=wrap;");c.vertex=!0;b.insert(c);
+return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Button Group (Justified, Tiny)")}),this.addEntry("bootstrap button toolbar",function(){var b=new mxCell("",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd");b.vertex=!0;var c=new mxCell("1",new mxGeometry(0,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;");
+c.vertex=!0;b.insert(c);c=new mxCell("2",new mxGeometry(30,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;b.insert(c);var d=new mxCell("3",new mxGeometry(60,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontSize=14;whiteSpace=wrap;");d.vertex=!0;b.insert(d);c=new mxCell("4",
+new mxGeometry(90,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;b.insert(c);d=new mxCell("",new mxGeometry(130,0,90,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd");d.vertex=!0;c=new mxCell("5",new mxGeometry(0,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;");
+c.vertex=!0;d.insert(c);c=new mxCell("6",new mxGeometry(30,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;d.insert(c);c=new mxCell("7",new mxGeometry(60,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;d.insert(c);c=new mxCell("8",
+new mxGeometry(230,0,30,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;fontSize=12;align=center;rSize=5;strokeColor=#dddddd;whiteSpace=wrap");c.vertex=!0;return a.createVertexTemplateFromCells([b,d,c],260,30,"Button Toolbar")}),this.addEntry("bootstrap button group nested",function(){var b=new mxCell("",new mxGeometry(0,0,160,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd");b.vertex=!0;var c=new mxCell("1",new mxGeometry(0,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;");
+c.vertex=!0;b.insert(c);c=new mxCell("2",new mxGeometry(30,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontSize=14;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Dropdown",new mxGeometry(60,0,100,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;fontSize=14;spacingRight=10;whiteSpace=wrap;");c.vertex=
+!0;b.insert(c);var d=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-15,-2.5);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Button Group (Nested)")}),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;align=center;fontSize=16;whiteSpace=wrap;",80,40,
+"Button","Button (Large)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button large").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;align=center;fontSize=14;whiteSpace=wrap;",60,30,"Button","Button (Normal)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button normal").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;align=center;fontSize=12;whiteSpace=wrap;",
+44,22,"Button","Button (Small)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button small").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;align=center;fontSize=10;whiteSpace=wrap;",40,20,"Button","Button (Tiny)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button tiny").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#3D8BCD;align=center;strokeColor=#3D8BCD;fontColor=#ffffff;fontSize=16;whiteSpace=wrap;",
+80,40,"Button","Button (Large)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button large").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#3D8BCD;align=center;strokeColor=#3D8BCD;fontColor=#ffffff;fontSize=14;whiteSpace=wrap;",60,30,"Button","Button (Normal)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button normal").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#3D8BCD;align=center;strokeColor=#3D8BCD;fontColor=#ffffff;fontSize=12;whiteSpace=wrap;",
+44,22,"Button","Button (Small)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button small").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#3D8BCD;align=center;strokeColor=#3D8BCD;fontColor=#ffffff;fontSize=10;whiteSpace=wrap;",40,20,"Button","Button (Tiny)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button tiny").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#58B957;align=center;strokeColor=#58B957;fontColor=#ffffff;fontSize=16;whiteSpace=wrap;",
+80,40,"Button","Button (Large)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button large").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#58B957;align=center;strokeColor=#58B957;fontColor=#ffffff;fontSize=14;whiteSpace=wrap;",60,30,"Button","Button (Normal)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button normal").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#58B957;align=center;strokeColor=#58B957;fontColor=#ffffff;fontSize=12;whiteSpace=wrap;",
+44,22,"Button","Button (Small)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button small").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#58B957;align=center;strokeColor=#58B957;fontColor=#ffffff;fontSize=10;whiteSpace=wrap;",40,20,"Button","Button (Tiny)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button tiny").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#55BFE0;align=center;strokeColor=#55BFE0;fontColor=#ffffff;fontSize=16;whiteSpace=wrap;",
+80,40,"Button","Button (Large)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button large").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#55BFE0;align=center;strokeColor=#55BFE0;fontColor=#ffffff;fontSize=14;whiteSpace=wrap;",60,30,"Button","Button (Normal)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button normal").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#55BFE0;align=center;strokeColor=#55BFE0;fontColor=#ffffff;fontSize=12;whiteSpace=wrap;",
+44,22,"Button","Button (Small)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button small").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#55BFE0;align=center;strokeColor=#55BFE0;fontColor=#ffffff;fontSize=10;whiteSpace=wrap;",40,20,"Button","Button (Tiny)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button tiny").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#EFAC43;align=center;strokeColor=#EFAC43;fontColor=#ffffff;fontSize=16;whiteSpace=wrap;",
+80,40,"Button","Button (Large)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button large").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#EFAC43;align=center;strokeColor=#EFAC43;fontColor=#ffffff;fontSize=14;whiteSpace=wrap;",60,30,"Button","Button (Normal)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button normal").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#EFAC43;align=center;strokeColor=#EFAC43;fontColor=#ffffff;fontSize=12;whiteSpace=wrap;",
+44,22,"Button","Button (Small)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button small").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#EFAC43;align=center;strokeColor=#EFAC43;fontColor=#ffffff;fontSize=10;whiteSpace=wrap;",40,20,"Button","Button (Tiny)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button tiny").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#DB524C;align=center;strokeColor=#DB524C;fontColor=#ffffff;fontSize=16;whiteSpace=wrap;",
+80,40,"Button","Button (Large)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button large").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#DB524C;align=center;strokeColor=#DB524C;fontColor=#ffffff;fontSize=14;whiteSpace=wrap;",60,30,"Button","Button (Normal)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button normal").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#DB524C;align=center;strokeColor=#DB524C;fontColor=#ffffff;fontSize=12;whiteSpace=wrap;",
+44,22,"Button","Button (Small)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button small").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#DB524C;align=center;strokeColor=#DB524C;fontColor=#ffffff;fontSize=10;whiteSpace=wrap;",40,20,"Button","Button (Tiny)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap button tiny").join(" ")),this.addEntry("bootstrap dropdown small",function(){var b=new mxCell("Primary",
+new mxGeometry(0,0,100,22),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#3D8BCD;strokeColor=#3D8BCD;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;strokeColor=none;perimeter=none;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Small)")}),
+this.addEntry("bootstrap dropdown small",function(){var b=new mxCell("Success",new mxGeometry(0,0,100,22),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#58B957;strokeColor=#58B957;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;strokeColor=none;perimeter=none;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],
+b.geometry.width,b.geometry.height,"Dropdown (Small)")}),this.addEntry("bootstrap dropdown small",function(){var b=new mxCell("Info",new mxGeometry(0,0,100,22),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#55BFE0;strokeColor=#55BFE0;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;strokeColor=none;perimeter=none;whiteSpace=wrap;");c.geometry.relative=!0;c.geometry.offset=
+new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Small)")}),this.addEntry("bootstrap dropdown small",function(){var b=new mxCell("Warning",new mxGeometry(0,0,100,22),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#EFAC43;strokeColor=#EFAC43;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;strokeColor=none;perimeter=none;whiteSpace=wrap;");
+c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Small)")}),this.addEntry("bootstrap dropdown small",function(){var b=new mxCell("Danger",new mxGeometry(0,0,100,22),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#DB524C;strokeColor=#DB524C;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,
+.5,10,5),"shape=triangle;direction=south;strokeColor=none;perimeter=none;whiteSpace=wrap;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-20,-2.5);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Small)")}),this.addEntry("bootstrap dropdown split",function(){var b=new mxCell("Default",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;strokeColor=#dddddd;spacingRight=20;fontSize=14;whiteSpace=wrap;");
 b.vertex=!0;var c=new mxCell("",new mxGeometry(1,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;resizeHeight=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);var d=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-20,-2.5);d.vertex=
 !0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Split)")}),this.addEntry("bootstrap dropdown split",function(){var b=new mxCell("Primary",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#3D8BCD;strokeColor=#0D5B9D;spacingRight=20;fontSize=14;fontColor=#ffffff;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;resizeHeight=1;");
-c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);var d=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-20,-2.5);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Split)")}),this.addEntry("bootstrap dropdown split",function(){var b=new mxCell("Success",new mxGeometry(0,0,120,
-30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#58B957;strokeColor=#288927;spacingRight=20;fontSize=14;fontColor=#ffffff;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;resizeHeight=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);var d=new mxCell("",
-new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-20,-2.5);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Split)")}),this.addEntry("bootstrap dropdown split",function(){var b=new mxCell("Info",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#55BFE0;strokeColor=#258FB0;spacingRight=20;fontSize=14;fontColor=#ffffff;whiteSpace=wrap;");
-b.vertex=!0;var c=new mxCell("",new mxGeometry(1,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;resizeHeight=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);var d=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-20,-2.5);d.vertex=
-!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Split)")}),this.addEntry("bootstrap dropdown split",function(){var b=new mxCell("Warning",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#EFAC43;strokeColor=#BF7C13;spacingRight=20;fontSize=14;fontColor=#ffffff;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;resizeHeight=1;");
-c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);var d=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-20,-2.5);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Split)")}),this.addEntry("bootstrap dropdown split",function(){var b=new mxCell("Danger",new mxGeometry(0,0,120,
-30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#DB524C;strokeColor=#AB221C;spacingRight=20;fontSize=14;fontColor=#ffffff;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;resizeHeight=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);var d=new mxCell("",
-new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-20,-2.5);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Split)")}),this.addEntry("bootstrap dropup split",function(){var b=new mxCell("Dropup",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;fillColor=#ffffff;align=center;rSize=5;strokeColor=#dddddd;spacingRight=20;fontSize=14;whiteSpace=wrap;");
+c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);var d=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-20,-2.5);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Split)")}),this.addEntry("bootstrap dropdown split",function(){var b=new mxCell("Success",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#58B957;strokeColor=#288927;spacingRight=20;fontSize=14;fontColor=#ffffff;whiteSpace=wrap;");
+b.vertex=!0;var c=new mxCell("",new mxGeometry(1,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;resizeHeight=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);var d=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-20,-2.5);d.vertex=!0;c.insert(d);
+return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Split)")}),this.addEntry("bootstrap dropdown split",function(){var b=new mxCell("Info",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#55BFE0;strokeColor=#258FB0;spacingRight=20;fontSize=14;fontColor=#ffffff;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;resizeHeight=1;");
+c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);var d=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-20,-2.5);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Split)")}),this.addEntry("bootstrap dropdown split",function(){var b=new mxCell("Warning",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#EFAC43;strokeColor=#BF7C13;spacingRight=20;fontSize=14;fontColor=#ffffff;whiteSpace=wrap;");
+b.vertex=!0;var c=new mxCell("",new mxGeometry(1,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;resizeHeight=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);var d=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-20,-2.5);d.vertex=!0;c.insert(d);
+return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Split)")}),this.addEntry("bootstrap dropdown split",function(){var b=new mxCell("Danger",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#DB524C;strokeColor=#AB221C;spacingRight=20;fontSize=14;fontColor=#ffffff;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;resizeHeight=1;");
+c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);var d=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-20,-2.5);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropdown (Split)")}),this.addEntry("bootstrap dropup split",function(){var b=new mxCell("Dropup",new mxGeometry(0,0,120,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;strokeColor=#dddddd;spacingRight=20;fontSize=14;whiteSpace=wrap;");
 b.vertex=!0;var c=new mxCell("",new mxGeometry(1,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;resizeHeight=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);var d=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=north;fillColor=#000000;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-20,-2.5);d.vertex=
 !0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropup (Split)")}),this.addEntry("bootstrap dropup split",function(){var b=new mxCell("Right dropup",new mxGeometry(0,0,140,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;fillColor=#3D8BCD;strokeColor=#0D5B9D;spacingRight=20;fontSize=14;fontColor=#ffffff;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;perimeter=none;resizeHeight=1;");
 c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);var d=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=north;fillColor=#ffffff;strokeColor=none;perimeter=none;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-20,-2.5);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Dropup (Split)")}),this.addDataEntry("bootstrap dropdown menu",160,90,"Dropdown (Menu)","rVTbbtswDP0aPzaw5TTYaxKv3UMLDOt+QItoS5gsGbKay75+pCQ7bu0CGToHAcw7eQ7prNy350fHO/lsBeis/JqVe2etj2/teQ9aZyxXIiurjLEc/xl7+MBaBGvecQfG3xLAYsCR61eImsrZTtiTiYbeX3QySN9ie1WRlbtecnRBIUdB8F6CSAJaOvJvzw3NtPqFk/QeX1fOwQFb2nGtGoMeB+wQHCrci/pDIfcU7p39DXurrQtFSxEesnT8oEzzQzWSBiuoWG2NT8HFBmUsKRSmncTDmn4TW6WoD2WpBWOdl2g7SeXhBQtQphM2i7qECzgP5w+xDaoE7CPYFry7oMtJCcobPNYR/1xC6hzFQcf7KDdj6JUpfElkLRNXzoibETZw4Z3ipiHtTkym7+1rmL5WWk8Qy8Mz48JYQwk6cAp7hYnqJqTYMlJvAy5pY1f3UZ7iuABj8nKguVdHeJNqCdpU/rtV2NVY+y5dyFD9jg3lhxy2rnvwM3LGMW7iaz3jaxuJYBsEPazz1lgvEVmWD6b/fIHxAN/xXYfn3TWxJC/tBekfeKs0AfYN9BG8OvAhQep2vkALx/wE9XjL40DF5Buhg8OOdgtL6G1Se9tdk/wkoSo/ebKJ/DWbb95m6YK//PMFo3j9rMcFmn71/wI="),
 this.addDataEntry("bootstrap dropdown menu",160,200,"Dropdown (Menu)","7VhRb6MwDP41PK4iQLne47W97WWTTteHe86GgWhpgkK2tvfrzyGhZQXaSgztOi1SJew4tvN9thXVCxfr7Z2iRf4gE+Be+NMLF0pKbb/W2wVw7gU+S7xw6QWBjz8vuO3ZJdWuX1AFQl9yILAHXil/AatZKlkkciPsRql33G3keo3pLYkXzsucogkKPgoJLXNInIA7hbFfbzNzp8kj3qTU+DlRCp4wpblasb/GYmqstZLPsJBcqipGmFTL7BT0iYnsN8tycw9ifKdSaHeYxEZmnDfO3lYL9ZSzTKCOQ6oPru4ryXra5EzDCvXG1wazQ50DApSGbS+YlcoheQdyDVrt0GTDEp07C2IB93NwuaMYOR0trZztjx6owQ/HTjdTYYupFkM1+FoxKjKjnSfMwM6kwaOULybLY9z8arXYEFIYBwUohrlCQ3URUkE3Um8P7FyJTqZWbuLYAaOzUsCpZq/wxlUXtC78L8kwq33sG9cSdfSboA5f+5BpWoJukbO/xkV8Ref5GtpRtqGO6Eyrdbq56mBkYN07BKOgTV/cwR+Zzob3wfTExMJoNMFSHQfozv7omC5H86fJT39TmeHWxVVz6JGe0aWgRIs/Dv2LSY3OD7NOFuNhbeiK5qgU3qXn4lZt/LDD7woL4uOJrufkQKJHYfpbm2khdW5636dfnH8059EYnM/ak5+V9JEjeYHPmXj+7ynvG/KfuRTiMUrh+/nHVU0rFgacfA11gH+VQM/GALp+hn89t678uUX8UcqDtMpjBXhpqq9nKH/m4Uve4/GF4uEPKWve/L/qHw=="),
 this.addDataEntry("bootstrap dropdown menu header",160,150,"Dropdown (Menu, Headers)","7Vffb9sgEP5r/NjIxk6WPS5J25dNmpaHPdP6bKNisDBtkv31OwxO3EBbq2mmtSpSJO64X3wfR3CULuvttaJN9UPmwKP0MkqXSkptZ/V2CZxHJGZ5lK4iQmL8ReTqidWkW40bqkDoMQ7EOjxQfg9Ws1KyyeVG2IVW77hbqHSN5a2SKF20FUUTFGIUctpWkDsBVxpjX29Ls6fJDe6k1TidKAW3WNJCrdkfYzE11lrJO1hKLlWXI827YVYaestE+YuVldlHYmIXUmjnnMyMzDgf+F51A/WUs1KgjkOhD6G+d5KNtKmYhjXqTawNVoc6BwQoDdsnwexUDslrkDVotUOTDct15SwSC3hcgasdxczpaGvlcu96oAYnjp0wU6nHlMdQD75WjIrSaBc5M7AzafBo5b2p8hi3uBseG0IKE6ABxbBWGKhGIUXCSD122LkjOplaeYhjAEZnpYBTzR7gUagQtC79T8mwqn3uC9cSffYL0qfvY8iiaEF75Oy3MYqv7GW+Tu0o21BHdBbdeL65+mTJiefeIZgRn75ZgL8knp/eB1MP12/2gJ8H3WBTBK6Uo0tnSIpzCl06Clq80H473EbTkb18DYXw7w/+axvI0X1E4pt0y8xnVUhd4bWDiT75/af8noXgL/5Dg7X0hiNTJOZM3P33/JrnR+g2/TC8Z+fgfT7+2YKnAJ793wq8Rd4l0LNzAP3VA3oNuGWq30+HBfj9MM01fwPOUTx8GVrz4YfjXw=="),
-this.addEntry("bootstrap input group",function(){var b=new mxCell("Username",new mxGeometry(0,0,250,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;spacingLeft=50;fontSize=14;align=left;fontColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("@",new mxGeometry(0,0,40,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;whiteSpace=wrap;resizeHeight=1;");c.geometry.relative=
-!0;c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Input Group")}),this.addEntry("bootstrap input group",function(){var b=new mxCell("",new mxGeometry(0,0,250,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;spacingLeft=10;fontSize=14;align=left;fontColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell(".00",new mxGeometry(1,0,40,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;whiteSpace=wrap;resizeHeight=1;");
+this.addEntry("bootstrap input group",function(){var b=new mxCell("Username",new mxGeometry(0,0,250,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;spacingLeft=50;fontSize=14;align=left;fontColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("@",new mxGeometry(0,0,40,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;whiteSpace=wrap;resizeHeight=1;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);
+return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Input Group")}),this.addEntry("bootstrap input group",function(){var b=new mxCell("",new mxGeometry(0,0,250,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;spacingLeft=10;fontSize=14;align=left;fontColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell(".00",new mxGeometry(1,0,40,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;whiteSpace=wrap;resizeHeight=1;");
 c.geometry.relative=!0;c.geometry.offset=new mxPoint(-40,0);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Input Group")}),this.addDataEntry("bootstrap input group",250,30,"Input Group","1VTrToMwFH6a/nQpFF5gTOcPTUz2BHUcaGOhpJwN5tN7CnUXx3TR/bGE5Nwv35eWiazql0426tnmYJi4ZyJz1uIoVX0GxrCY65yJBYtjTj+LHy54o8HLG+mgxmsS4jFhK80GRstoaHFngkFhRWMtIibmrZK57UjhpOSyVZAHhTyNj6/60u8ye6UNWiRx5hysaZS5W+l3H5H6aHT2DTJrrBt6iHw45Cm0MUf2Yjg+o5FrXZdPUPi1Ut+ysDWGmlFCujS6rEkxQ8zgnurQKY2wonI+saMJyRZAAIfQXwRyMAUUl2ArQLejkE7nqAKY6Qg2V6BLFdJEsMl21Mt96oEWEgIz0yyJCZaSWxPlcZtvEG39a7a4/y5g7KClko+fyETXwh7/CHvyDeoOjES9hZPyf6EiOaNixvnN74xf5P9wcZpwa2ZCvxeraYx9s7vky72yRdECnlG5H3OKXVIPT+0YfvwSfwA="),
 this.addDataEntry("bootstrap input group",250,30,"Input Group","tVRdb4IwFP01PM4AFbNncXMPW7LE7AdUuNDGQkmpgvv1u6VFceJG9lFC0nO/7zlJPRIX7VrRir3IFIRHHjwSKym1vRVtDEJ4oc9Tj6y8MPTx98LHG96g8/oVVVDqKQmhTThQsQdreatBlbQA66j1UTgH0wWOtwo8sqwZTWWDwEeQ0ppB6gB6KhNftLnZabbFTWqN15lSkOBIS7Xh7yYiMtFayR3EUkjV9SBpd9CTcSEG9qw7JqOiCS/zZ8jMepFpmclSu5rBHDEVPC8RiC6mc491aBjXsMFyJrHBCdHmyAClob1JaGdybK5BFqDVEUManmrmSI0s6T4DnjOXRpyN1hbnp9SzPHhxCo2rRa7U+muVDGnLvday/LFUvvluEKygxpJPPS3BVM7Dbzmff0G5AkE1P8BF+d/oMP93HRIGyW4r24EKZEyFRXem0kjGaXQJ/iyyKcdPeEBzsLimubdNptlN8Co5DnZqf3d/0b2HfQGZZTXoK5VOa4wJh/D8lNrw4Uv7AQ=="),
 this.addDataEntry("bootstrap input group",250,30,"Input Group","tVTtToMwFH2a/nQBOhZ/j+n8oYnJ4gPUcYHGQknbDebTe0vLPoQp8aOEpOd+33OSEpqU7VqxuniSKQhC7whNlJTG3co2ASFIFPCU0BWJogB/Et1f8YadN6iZgspMSYhcwp6JHTjLiwZVsRKcQ5uD8I7ClDjeKiR0qQuWygZBgCBluoDUA/TUNr5sc7vT7BU30QavM6VgiyMt1Ya/24jYRhsl3yCRQqquB027g56MC3Fmz7pjM2q25VX+CJldL7YtM1kZXzOcI2aC5xUC0cV07rEOTcENbLCcTWxwQrR5MkAZaK8S2pk8m2uQJRh1wJCGp6bwpMaO9KAAnhc+jXob0w7nx9STPHjxCo2rRQdq/bVKlrTlzhhZ/ViqwH5XCFagseRDT0s4lfPoW87nX1CuQDDD93BR/jc6zP9dB8VSLgdC0DEhFt2ZyiQdZ9InBLPYpRw+4TOmw8WQ6d42mWk/wbPkONix/c3tRfce9gVklmkwA6GOa4xph/D0mrrw88f2Aw=="),
 this.addDataEntry("bootstrap username large",250,40,"Username (Large)","tVTrboMgGH0af65BafsAtVv3Y0uWNHsAVj+FDMEArXZPvw+ht9Vu3Q1jwvnunKMkNK+7hWENf9QFyITeJjQ3Wruwq7scpEwyIoqEzpMsI/gm2d0Fb9p7ScMMKHdNQhYSNkyuIVieLRjFaggO67YyOrircbx5mtCZ5azQLQKCoGCWQxEBehofX3eVP9PoBU9iHW5HxsAKR5qZpXjzERMf7Yx+hVxLbfoetOgXekoh5ZG97JfPaNhKqOoBSn+8qW9ZauVizXSKmElRKQSyj+ndQx1aLhwssZxPbHFCtEUywDjoLhLamyKbC9A1OLPFkFYUjkdSJ4F0wkFUPKaNo43ZgKt96kEe3ESFhtWiZ2r9tUqetNnaOa1+LBXxzwWCDVgseb+jJb2W8+xLzj+j3IBkTmzgpPxvdBj/uw5r/As/VUBpBefkk35dyyodZjUmkNEkpGw/4OMvfYD17LusxwmetMDB9u1vUnLSfo93JXRZWnBnsu0PMqQkwsPdGsKPr953"),
 this.addDataEntry("bootstrap username normal",250,30,"Username (Normal)","tVTJboMwEP0ajo0MDuo9pE0PrVQp6ge4YQCrBiPbCaRf3/GSpYG0qIsRkmd5s7wniGhW9yvF2upJ5iAiehfRTElp/K3uMxAiSgjPI7qMkoTgGyX3V6Kxi5KWKWjMFEDiATsmtuA9LxpUw2rwAW32IgQqU+N4yziiC12xXHZoEDRypivIg4GR1ubXfWl3mr3iJtrgdaYUbHCkhVrzd5uR2myj5BtkUkjletDcHYwUXIgzf+GORbRsw5vyEQq7XmpbFrIxoWY8R5sJXjZoCJfjwmMduoobWGM5C+xwQvQFMkAZ6K8S6lyBzRXIGozaY0rHc1MFUlNPOqmAl1WA0eBj2tvlEXqSBy9BoXG16ECtv1bJkrbYGiObH0tF7HOFYAUaSz4caImncp58y/n8C8oVCGb4Dj6V/40O83/XYYtf4ZcKNLKBIfnEnams0nFWA4DMUg/ZX9hnrMfpkPWDbzLrYYJnyXGwY/ub24v+J8ehiCwKDWYg3HGVMS3RPP1dffr5z/cD"),
 this.addDataEntry("bootstrap username tiny",250,20,"Username (Tiny)","tVRZbsMgFDwNn42wSS6QpMtHK1WKegAaPxtUDBaQ2Onp+8Bka5w03bAsMbx9xoawWd3dW96IJ1OAIuyWsJk1xve7upuBUiSnsiBsTvKc4kvyuzPWLFppwy1of01A3gesuVpBf/LiwGpeQ29wfqOSQfga25tnhE2d4IVpEVAEBXcCigTQ0gT/uqvCTKNXnMR53I6shSW2NLUL+R48JsHbW/MGM6OMjTVYERdaSqnUwXkZV4ho+FLq6hHKMN44lCyN9ilnFjBXstIIVPSJ5qEKrZAeFpguBLbYIZ4lMsB66M4SGo8Sm/dgavB2gy6tLLxIpE560qkAWYkUloSg3PW42oXu5cFNUmhYLXai1l+rFEibrrw3+sdS0fCcIdiCw5QPW1qyqwjPvyScXeDbguJeruEo/W9EGP+7CCv8BS/Sr42GU+ZpXNd+xmyY1RRAR5M+ZPMJH7CeDbCefZf11MGzkdjYrvzNcfUt3CYwZenAn4i2G2NIR4T7a7V3P7x1PwA="),
-this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#ffffff;strokeColor=#dddddd;fontSize=16;align=left;spacingLeft=10;whiteSpace=wrap;",250,40,"Johnny Boo","Full Name (Large)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap full name large").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#ffffff;strokeColor=#dddddd;fontSize=14;align=left;spacingLeft=8;whiteSpace=wrap;",
-250,30,"Johnny Boo","Full Name (Normal)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap full name normal").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#ffffff;strokeColor=#dddddd;fontSize=10;align=left;spacingLeft=6;whiteSpace=wrap;",250,20,"Johnny Boo","Full Name (Tiny)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap full name tiny").join(" ")),this.addEntry("bootstrap final price large",
-function(){var b=new mxCell("Amount",new mxGeometry(0,0,200,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;fillColor=#ffffff;rSize=5;strokeColor=#dddddd;spacingLeft=10;fontSize=16;align=left;fontColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("UAH",new mxGeometry(1,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;fontSize=16;whiteSpace=wrap;resizeHeight=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-50,
-0);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Final Price (Large)")}),this.addEntry("bootstrap final price normal",function(){var b=new mxCell("Amount",new mxGeometry(0,0,200,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;fillColor=#ffffff;rSize=5;strokeColor=#dddddd;spacingLeft=8;fontSize=14;align=left;fontColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("UAH",new mxGeometry(1,0,40,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;fontSize=14;whiteSpace=wrap;resizeHeight=1;");
-c.geometry.relative=!0;c.geometry.offset=new mxPoint(-40,0);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Final Price (Normal)")}),this.addEntry("bootstrap final price tiny",function(){var b=new mxCell("Amount",new mxGeometry(0,0,200,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;fillColor=#ffffff;rSize=5;strokeColor=#dddddd;spacingLeft=6;fontSize=10;align=left;fontColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("UAH",
-new mxGeometry(1,0,30,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;fontSize=10;whiteSpace=wrap;resizeHeight=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Final Price (Tiny)")}),this.addDataEntry("bootstrap segmented button large",400,40,"Segmented Button (Large)","vZXdTuswDMefhYteUvWDIrjddhgX50hIEw8QVreJTtpUicc2nh6nSUdHu1HERKRKsWM7zv+npEE6r3ZLzRr+T+Ugg/RPkM61Uuhm1W4OUgZJJPIgXQRJEtEXJA8nVuN2NWqYhhqnJCQu4ZXJDTjPCphe8zAM3YrBvfQrHCvqbxEH6cxwlqstGREZOTMccm/QSmPjq11pDxW+0FEM0jTUGtbU06wQUs6VVLqtmhbtIL9eiTebmdkqqNV/6EXl7bDZqkYfGN96eyyOSVHW5JNQ2E1Nw9aiLv+21uLedrrlAmFFfltrSx2Sz6sBGmF3UtHW5eVcgqoA9Z5CtiJH7iJuIqd6xEGUHDun8zHj7PKQ+sGHJh7ROK50gOvZgDaXRmVFm20QVT2dS49qrWoYQXUWSXwKiQZDNR47IeOplJIvKd2dgaRBMhSvcFT+J+RuBuQG0DoeqAWrS+ud5cJeGmE5LIza2M4/35+oHQM2nkEDWlCv0HNNUi8dV+84Ye9fmDBzdk/beETb7JvS+u2flKCuDntf+xet2/066bbvaqiiMIADOIdjTOKVDXgt1dXFn0QrzuUv2i9co+OEHvjsEpfqBPks+jloMj/+ri68//N9Bw=="),
+this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fontSize=16;align=left;spacingLeft=10;whiteSpace=wrap;",250,40,"Johnny Boo","Full Name (Large)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap full name large").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fontSize=14;align=left;spacingLeft=8;whiteSpace=wrap;",250,30,"Johnny Boo","Full Name (Normal)",
+null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap full name normal").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fontSize=10;align=left;spacingLeft=6;whiteSpace=wrap;",250,20,"Johnny Boo","Full Name (Tiny)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap full name tiny").join(" ")),this.addEntry("bootstrap final price large",function(){var b=new mxCell("Amount",new mxGeometry(0,0,
+200,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;spacingLeft=10;fontSize=16;align=left;fontColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("UAH",new mxGeometry(1,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;fontSize=16;whiteSpace=wrap;resizeHeight=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-50,0);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],
+b.geometry.width,b.geometry.height,"Final Price (Large)")}),this.addEntry("bootstrap final price normal",function(){var b=new mxCell("Amount",new mxGeometry(0,0,200,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;spacingLeft=8;fontSize=14;align=left;fontColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("UAH",new mxGeometry(1,0,40,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;fontSize=14;whiteSpace=wrap;resizeHeight=1;");
+c.geometry.relative=!0;c.geometry.offset=new mxPoint(-40,0);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Final Price (Normal)")}),this.addEntry("bootstrap final price tiny",function(){var b=new mxCell("Amount",new mxGeometry(0,0,200,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;spacingLeft=6;fontSize=10;align=left;fontColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("UAH",new mxGeometry(1,
+0,30,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;fontSize=10;whiteSpace=wrap;resizeHeight=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Final Price (Tiny)")}),this.addDataEntry("bootstrap segmented button large",400,40,"Segmented Button (Large)","vZXdTuswDMefhYteUvWDIrjddhgX50hIEw8QVreJTtpUicc2nh6nSUdHu1HERKRKsWM7zv+npEE6r3ZLzRr+T+Ugg/RPkM61Uuhm1W4OUgZJJPIgXQRJEtEXJA8nVuN2NWqYhhqnJCQu4ZXJDTjPCphe8zAM3YrBvfQrHCvqbxEH6cxwlqstGREZOTMccm/QSmPjq11pDxW+0FEM0jTUGtbU06wQUs6VVLqtmhbtIL9eiTebmdkqqNV/6EXl7bDZqkYfGN96eyyOSVHW5JNQ2E1Nw9aiLv+21uLedrrlAmFFfltrSx2Sz6sBGmF3UtHW5eVcgqoA9Z5CtiJH7iJuIqd6xEGUHDun8zHj7PKQ+sGHJh7ROK50gOvZgDaXRmVFm20QVT2dS49qrWoYQXUWSXwKiQZDNR47IeOplJIvKd2dgaRBMhSvcFT+J+RuBuQG0DoeqAWrS+ud5cJeGmE5LIza2M4/35+oHQM2nkEDWlCv0HNNUi8dV+84Ye9fmDBzdk/beETb7JvS+u2flKCuDntf+xet2/066bbvaqiiMIADOIdjTOKVDXgt1dXFn0QrzuUv2i9co+OEHvjsEpfqBPks+jloMj/+ri68//N9Bw=="),
 this.addDataEntry("bootstrap segmented button normal",400,30,"Segmented Button (Normal)","vZXfT4MwEMf/Fh94lADd1OdtOh80MVn8A+o4aGOhpO1++dd7pWVjwiZmi01Iete76/X7SUtApsV2rmjFXmUKIiCPAZkqKY2bFdspCBEkEU8DMguSJMIvSJ5OrMb1alRRBaUZkpC4hDUVK3CeBVC1ZGEYuhVtdsKvMFNgf7M4IBPNaCo3aERopFQzSL2BK5WNL7a5PVT4gUfRBqehUrDEniYZF2IqhVR1VZLVA/1qwb9s5thWMUp+QisqrYfNlqXxgfHI231xVPC8RJ+AzG6qK7rkZf5SW7MH2+mGcQML9NtaG+wQfV4NUAa2JxWtXV7OOcgCjNphyIanhrmIUeRUjxjwnPk04n1UOzvfpx744MQj6sdFOrjeNSh9bVRWtMnKGFkO59KiWsoSelCdRXJ3gogCjSWeGx3joZCSXyHdn2GkQFDD13BU/hJwow64DrMGh1Gclrn1TlJu7wy3GGZarmznP69PVI8OGo+gAsWxV2i5BqlH+tU7Ttj5ByYcO7ulbdyj7fiP0vrt3yTHrvZ73/oHrdn9Nmm2b2rILNNgOnD2xxjEa9zhNZc3V38RrTjXv2f/cI2OE45evitcqhPkR9HloNE8/FxdePvf+w0="),
 this.addDataEntry("bootstrap segmented button tiny",400,20,"Segmented Button (Tiny)","vZXfT8MgEMf/Fh/6aEOL0/dtOh80MVn8A3C9FiItDbBf/vUehc7OdlqzRZIm3HF3HN9PoBGdlbuFZjV/VhnIiN5HdKaVsn5W7mYgZZQSkUV0HqUpwS9KH06sJs0qqZmGyo5JSH3Chsk1eM8SmF7xOI79irF7GVa4LbG/eRLRqeEsU1s0CBoZMxyyYOBK7eLLXeEOFb/hUYzFaaw1rLCnaS6knCmpdFOV5s1Av16KD5c5cVWsVu/Qicqa4bJVZUNgQoI9FMekKCr0ScjdpqZmK1EVT401v3OZWy4sLNHvam2xQ/QFNUBb2J1UtHEFORegSrB6jyFbkVnuI26IV51wEAUPaYEEYcbbxSH1iw9OAqJhXLSH69WANpdG5USbrq1V1XguHaqVqmAA1Y9I6AkiGgyWeGx1TMZCSn+FdPsDIw2SWbGBo/LngLvpgesxa3FYLVhVOO80E+7OCIdhbtTadf79+pBm9NAEBDVogb1CxzVKPTqs3nHCPjww8cTbHW2TAW0nf5Q2bP+iBHZ12Pu6RbRv7Xb7tobKcwO2B+dwjFG8Jj1eC3V18RfRiXP5e/YP1+g4oQOeXuJSnSBPyfmg0fz6ufrw7r/3Ew=="),
-this.addEntry("bootstrap search button large",function(){var b=new mxCell("Search...",new mxGeometry(0,0,200,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;fillColor=#ffffff;rSize=5;strokeColor=#dddddd;align=left;spacingLeft=10;fontSize=16;fontColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Go!",new mxGeometry(1,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;strokeColor=#dddddd;fillColor=none;fontSize=16;whiteSpace=wrap;resizeHeight=1;");
-c.geometry.relative=!0;c.geometry.offset=new mxPoint(-50,0);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Search Button (Large)")}),this.addEntry("bootstrap search button normal",function(){var b=new mxCell("Search...",new mxGeometry(0,0,200,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;fillColor=#ffffff;rSize=5;strokeColor=#dddddd;align=left;spacingLeft=6;fontSize=14;fontColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Go!",
-new mxGeometry(1,0,40,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;strokeColor=#dddddd;fillColor=none;fontSize=14;whiteSpace=wrap;resizeHeight=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-40,0);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Search Button (Normal)")}),this.addEntry("bootstrap search button tiny",function(){var b=new mxCell("Search...",new mxGeometry(0,0,200,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;fillColor=#ffffff;rSize=5;strokeColor=#dddddd;align=left;spacingLeft=3;fontSize=10;fontColor=#dddddd;whiteSpace=wrap;");
+this.addEntry("bootstrap search button large",function(){var b=new mxCell("Search...",new mxGeometry(0,0,200,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;align=left;spacingLeft=10;fontSize=16;fontColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Go!",new mxGeometry(1,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;strokeColor=#dddddd;fillColor=none;fontSize=16;whiteSpace=wrap;resizeHeight=1;");c.geometry.relative=
+!0;c.geometry.offset=new mxPoint(-50,0);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Search Button (Large)")}),this.addEntry("bootstrap search button normal",function(){var b=new mxCell("Search...",new mxGeometry(0,0,200,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;align=left;spacingLeft=6;fontSize=14;fontColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Go!",new mxGeometry(1,0,40,30),
+"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;strokeColor=#dddddd;fillColor=none;fontSize=14;whiteSpace=wrap;resizeHeight=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-40,0);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Search Button (Normal)")}),this.addEntry("bootstrap search button tiny",function(){var b=new mxCell("Search...",new mxGeometry(0,0,200,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;align=left;spacingLeft=3;fontSize=10;fontColor=#dddddd;whiteSpace=wrap;");
 b.vertex=!0;var c=new mxCell("Go!",new mxGeometry(1,0,30,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;rSize=5;strokeColor=#dddddd;fillColor=none;fontSize=10;whiteSpace=wrap;resizeHeight=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-30,0);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Search Button (Tiny)")}),this.addDataEntry("bootstrap dropdown menu",300,300,"Dropdown (Menu)","7Zhtb5swEIB/DR8b8Za3jwnpKq3tNDWdpn104QAvBCPjvO3X7wyGkEFWJEpTqSGKxNlnn33P3cWxZjnr/R0nSfjIPIg061azHM6YyN/WeweiSDN16mnWQjNNHb+a+eVMr5H16gnhEIs2A8x8wJZEG8hbFpsXQjXTwdYfs9u8OxWHSHWHYo2LXBiaNU9D4rEdCjoKHklD8JSAPYnUX+8DubPBC+4nFfg64BxcXNicL+kfqTGU2oKzFTgsYjyzYXnZI3sS4tI4eKJBKHdjyLl9Fgs12BihjBY8irutjAdbfip9CyrNUhZjf8y4CI9zP4BfTk0iGkiVKGub70IqYIlq0tYOV49tyl3ABezPujxrUv6+A7YGwQ+osqOetCw1LD3Hooeg9oairdpImstBOfQIEF8Uw2aeVo1njWABR3BK4kC2zr2Kf1K2yfzj0yiq+FTPnhqtmMVyggQ4xbVCpamVp8xmT50OOKhAHgxzueJHo8GNSotDRATdwslUTa5V5r8ziqsqbd8YwxPrN2ZhvpiD+X4Kogan3EYrXvbrvLpmXJ5w/+D0s6dN8lUTpLRv1LNFkqYuiWaqWbDkOMmzFBZWh0g5k1OKjm3WQqMxxczhpHuODWvMlkC4Gw4Ggw9RLv9T0mTxbBrZVOo4pGj0p/Ko0RaU/WrxMycNZCz9TdK2KAgqLqY9pOyohn8O9Df6Pf/RdEIak56SuBP6SgE4X7XfNRAaU7RrIBQVYdID+vF7n5beALs8LqkFGZ8vDMZ9hMGk9x9tNwR3VZIvfG41xcIoe9rSGPdw4Jr0c+CyeyA3rZG7p7BV+bvihGL0f8Ac/lw5a+h9JG0RuRX2Dyz28D9PTv/+Cv7i4K1ewBs18I8sdRFnBv5pk6b0emC7PPxRL/DrF1zfAMnrvxhfqcxfzq70L05/2gv9+nXYM1sdWA7+K0lIfEV/afTlAbILehSPl+a5evVO/S8="),
 this.addDataEntry("bootstrap dropdown menu",200,252,"Dropdown (Menu)","7Zhtb5swEIB/DR8b8ZYs/ZiQrtLaTlPTaepHFw7w4mBknLf9+p3BISQQjS5hmbY4isTd2Xf2PT4bYTjefH0vSBo/8QCY4dwZjic4l8XTfO0BY4Zt0sBwJoZtm/g37I9HrFZuNVMiIJFtBtjFgCVhCyg0k8UboYbtofbr6K4wZ3LDtDmWc5zkxDKccRaTgK9QMFEISBZDoAW0pKr/fB2plfXecD2ZxMeeEODjxMZiSn+oHn3VWwo+A48zLvIYTpA3ZUmJT5PomUaxWo2lfIc8kXqwNUAZIwQUV1sZD676VWwTqsJSnqA94ULGO9+PEJauCaOR6sJy3XgVUwlT7KZirXD2qNPpAiFhfTTluUrn+x74HKTYYJcVDVTkPO1mgcWMQa8NRVfrSFbIUTl0BxAfNMNmnk6NZ43gFo4UlCSR0o6DSn4yvsjzE1LGKjk181ajlfBEOUhBUJwrVFStMmU3Z2p/wEZv5F6/kCt5tBrSqHsJYETSJey5akqtDv+FU5xVGfvG6u9Fv7G34bc+eBhmIGtwymW04uX+mtepFVcU3AHOMG9tiq9aIGV8q14tijT1CRtpteTpzsmLEibOCTvlSE1pOq5d2xqNJVZumFNqrF9jNgb6HVdZnJpeTBPSEcV30ToAVN0Bx8u26dATkOGB+03n1mqLzP29Y9Ax31nAbbkN/vRddwZm6rLTE7L+ZYYHh/Bm381Zj9wPnR+5fgz+rCS/zbnTtBcGeWtLY9DBdTns5rp0OyA3rJF7oLDU9TsThOLu/wtr+P+q2UEXNXtbI//IkwDfVwv2D1fsl8Z+2wX27XlV4f7EMx9p5tyfF1lGr69aF2dv2Z3At2rwPwOSN1+5mOnCn46u9C9Ov98J/fqXqRc+2/AC/CeSkuSK/uLoh2dAj+Lue2fRvfo59Cc="),
 this.addDataEntry("bootstrap context menu",140,128,"Context Menu","7VfLbsIwEPyaXJHjlEePBVourVSJQ88u2cQWjh05Lo9+fdexeTWgogokQCAh2eNdr3dmEjlRMigWI8NK/qZTkFHyHCUDo7X1o2IxACkjSkQaJcOIUoL/iL4cWI3rVVIyA8oek0B9wozJL/CIByq7lAHgtsBjDeMo6VecpXqOE4KTlFUc0jDBldLFF4vc9dL6xA4qi8OWgQmepJ8JKQdaalNvmmT1zyVao6ewtZLWv+1irvKcCwvjkk1ckTnui1g4OhgLi4Pt11DofQS6AGuWGDIXqeUh4sFTRDiInK/SaM+DrPJAvs7dsImDQOh+cpMGuUOjS2xK1dVYCuZMbO+yqrQCByJ9QuWvkLkmO4gwKXKFY1lDOxqFnBKMwL5hC8q0svv0cvhYfLtzxeSAZAYqjPgI5MfHikj/KWLHYwYks2IGO/vvEzaUeNcCK1Oy9BG/nKCzrALb8MH6XEdZ46FhjaeJFVpdqR9uUveVSCcVvt0UXmnL3ZuAsLsFLswCq61PaoFOwwJjl85RCIRBVlA3Y+DuhMtxQrtzBid0/759rdSUwst08Lq0R4yrJLpLz0B0734Tu4WHsHeOq9hj83UM2DKzKDIl+NxNr9QaN2mBmJzgVobTzSe2D9/+Av8B"),
 this.addDataEntry("bootstrap context menu",140,96,"Context Menu","7VZRb4IwEP41vBooE7fHiZsvW7LEhz13ctDGQknpBPfrd6VVIWhmNk1cIglJ7+td7+77rgEvjPNmrmjJXmUCwgufvDBWUmq7ypsYhPCIzxMvnHmE+Ph65PnIbtDu+iVVUOhTAogNWFPxCRaxQKU3wgFM51jWLPDCacVoIms0fDQSWjFInIE7pfHPm8z0MvrADiqNy5GCJVYyTbkQsRRStYeGafuYQK3kCjo7Sft0k5nMrkxQGpqjrbaQ63MOMgetNuhS80Qz53Fn6fAZ8Iy5sIfIYrSydrYL3ROHC8fdYR7DAY+PS81lcSE2+6wVsgADlnTJi+wFUtNYhAgVPCtwLVqop4GLKUFxbBY6UCoLveBfJn9giqkZ17DAsw1SYxGIKajQ490Re7JA5HcCBU4gBYJqvobe+YdUcyneJMfMxN9Yj/t+gEzTCvRA5F1dJ+l+N9S9kJohn5joNgFXNgFbuc46AuPBCCxMOEMhEAZRQduMgtskXM8kbI8+6yREP39Mt2oKbmU6+vU7IMa/JHocXYDoyfDKAbZMNd4a4iO3q9tdu54RmJC/jwCa+59i6979Z/4G"),
-this.addEntry("bootstrap pagination",function(){var b=new mxCell("",new mxGeometry(0,0,330,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;fillColor=#ffffff;strokeColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("<<",new mxGeometry(0,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;fontColor=#3D8BCD;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("1",new mxGeometry(30,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontColor=#3D8BCD;whiteSpace=wrap;");
+this.addEntry("bootstrap pagination",function(){var b=new mxCell("",new mxGeometry(0,0,330,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;strokeColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("<<",new mxGeometry(0,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;fontColor=#3D8BCD;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("1",new mxGeometry(30,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontColor=#3D8BCD;whiteSpace=wrap;");
 c.vertex=!0;b.insert(c);c=new mxCell("3",new mxGeometry(90,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontColor=#3D8BCD;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("4",new mxGeometry(120,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontColor=#3D8BCD;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("5",
 new mxGeometry(150,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontColor=#3D8BCD;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("6",new mxGeometry(180,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontColor=#3D8BCD;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("7",new mxGeometry(210,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontColor=#3D8BCD;whiteSpace=wrap;");
 c.vertex=!0;b.insert(c);c=new mxCell("8",new mxGeometry(240,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontColor=#3D8BCD;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("9",new mxGeometry(270,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;fontColor=#3D8BCD;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell(">>",
 new mxGeometry(300,0,30,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rightButton;fontColor=#3D8BCD;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("2",new mxGeometry(60,0,30,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=#3D8BCD;fillColor=#3D8BCD;perimeter=none;fontColor=#ffffff;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,
-"Pagination")}),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.roundedButton;fillColor=#ffffff;align=center;strokeColor=#dddddd;fontColor=#3D8BCD;whiteSpace=wrap;",100,30,"Previous","Button (Previous)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap ").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.roundedButton;fillColor=#ffffff;align=center;strokeColor=#dddddd;fontColor=#3D8BCD;whiteSpace=wrap;",60,
-30,"Next","Button (Next)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap ").join(" ")),this.addEntry("bootstrap button older",function(){var b=new mxCell("Older",new mxGeometry(0,0,100,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.roundedButton;fillColor=#ffffff;align=center;strokeColor=#dddddd;fontColor=#dddddd;spacingLeft=10;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(0,.5,16,4),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.arrow;strokeColor=#dddddd;flipH=1;");
-c.geometry.relative=!0;c.geometry.offset=new mxPoint(12,-2);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Button (Older)")}),this.addEntry("bootstrap button newer",function(){var b=new mxCell("Newer",new mxGeometry(0,0,100,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.roundedButton;fillColor=#ffffff;align=center;strokeColor=#dddddd;fontColor=#3D8BCD;spacingRight=10;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,
-.5,16,4),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.arrow;strokeColor=#3D8BCD;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-28,-2);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Button (Newer)")}),this.addDataEntry("bootstrap tabs",460,45,"Tabs","tZZRk5sgEMc/jY/JoCTWPjaxvT70Zjq9fgESN8ocigPkkvTTd1FMTDA3uVaZcQaWXRf+P1YJ6Lo8PilWF88yAxHQrwFdKylN2yuPaxAiiAjPApoGUUTwCaJvd2bDZpbUTEFlHgmI2oA3JvbQWr7LElqjNifhjIUpcWlpGNCVLlgmDzggOMiYLiBzA5yprX95zO1+5hvchTbYnRu2+S1rdNlxIdZSSNW8lu6ahnYmeF6hbYvLBmUdZWV6jqRpNodR8hV6M1nTcEa98D82+xL7h4IbeKnZ1hoOuAK0uY2CMnC8K1Zjcko9ASph1AldDjwzReuxTNqoAnheuKhFqzFhuh3n58iL8thx4g+DoB6IlGu2EahuRH7w6nV0JrJe7Y2R1TtYrtWuZAU3Qt9gOsMYG4ALiN1x7fEICZkGyMID8gxasxz0lCT8QhgJDU2T1Tq1gUiFV/kvpxYl0+EK49jnFcbT8Fp6vDqE45FSCramp3PiA/rctHuAbqCcadagOO4Yeq7/zGTxPpM24OR+DvOlR6hTsg+og6ZAMMPf4OpdQ9Rc/p+S47LOyWc0vko/S67fIHc7Dcajft7FQwch9g7Cl63hWF34HZX5pNU7dbFGExZrlAwUK5moWD95jDwsneJGcVbl1rrKuK0/i5KmWu7tKm8lvyg3JPlAmT2kXPyfJRUO/KOW41TUTfZZ1KUftaaSx3kJ3uh6/6I2wlntLmFu09RXfEGiga/Yx08uDi+X8Va4/l39Lw=="),
+"Pagination")}),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.roundedButton;align=center;strokeColor=#dddddd;fontColor=#3D8BCD;whiteSpace=wrap;",100,30,"Previous","Button (Previous)",null,null,this.getTagsForStencil("mxgraph.bootstrap","","bootstrap ").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.roundedButton;align=center;strokeColor=#dddddd;fontColor=#3D8BCD;whiteSpace=wrap;",60,30,"Next","Button (Next)",null,null,
+this.getTagsForStencil("mxgraph.bootstrap","","bootstrap ").join(" ")),this.addEntry("bootstrap button older",function(){var b=new mxCell("Older",new mxGeometry(0,0,100,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.roundedButton;align=center;strokeColor=#dddddd;fontColor=#dddddd;spacingLeft=10;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(0,.5,16,4),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.arrow;strokeColor=#dddddd;flipH=1;");c.geometry.relative=!0;c.geometry.offset=
+new mxPoint(12,-2);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Button (Older)")}),this.addEntry("bootstrap button newer",function(){var b=new mxCell("Newer",new mxGeometry(0,0,100,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.roundedButton;align=center;strokeColor=#dddddd;fontColor=#3D8BCD;spacingRight=10;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(1,.5,16,4),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.arrow;strokeColor=#3D8BCD;");
+c.geometry.relative=!0;c.geometry.offset=new mxPoint(-28,-2);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Button (Newer)")}),this.addDataEntry("bootstrap tabs",460,45,"Tabs","tZZRk5sgEMc/jY/JoCTWPjaxvT70Zjq9fgESN8ocigPkkvTTd1FMTDA3uVaZcQaWXRf+P1YJ6Lo8PilWF88yAxHQrwFdKylN2yuPaxAiiAjPApoGUUTwCaJvd2bDZpbUTEFlHgmI2oA3JvbQWr7LElqjNifhjIUpcWlpGNCVLlgmDzggOMiYLiBzA5yprX95zO1+5hvchTbYnRu2+S1rdNlxIdZSSNW8lu6ahnYmeF6hbYvLBmUdZWV6jqRpNodR8hV6M1nTcEa98D82+xL7h4IbeKnZ1hoOuAK0uY2CMnC8K1Zjcko9ASph1AldDjwzReuxTNqoAnheuKhFqzFhuh3n58iL8thx4g+DoB6IlGu2EahuRH7w6nV0JrJe7Y2R1TtYrtWuZAU3Qt9gOsMYG4ALiN1x7fEICZkGyMID8gxasxz0lCT8QhgJDU2T1Tq1gUiFV/kvpxYl0+EK49jnFcbT8Fp6vDqE45FSCramp3PiA/rctHuAbqCcadagOO4Yeq7/zGTxPpM24OR+DvOlR6hTsg+og6ZAMMPf4OpdQ9Rc/p+S47LOyWc0vko/S67fIHc7Dcajft7FQwch9g7Cl63hWF34HZX5pNU7dbFGExZrlAwUK5moWD95jDwsneJGcVbl1rrKuK0/i5KmWu7tKm8lvyg3JPlAmT2kXPyfJRUO/KOW41TUTfZZ1KUftaaSx3kJ3uh6/6I2wlntLmFu09RXfEGiga/Yx08uDi+X8Va4/l39Lw=="),
 this.addDataEntry("bootstrap pills",392,45,"Pills","3ZbdbpswFMefhstEgANjlwO27mKVpvUJ3HACVg1Gttske/odg6Ekhipdx80sIdnH5/jj//Mx9khWn+4kbat7UQD3yFePZFII3dfqUwace6HPCo/kXhj6+Hnht4XeoOv1Wyqh0bcEhH3AC+XP0Fu+ixp6o9Jnbo2VrnFpeeCRVFW0EEds+NgoqKqgsA3saY1/fSrNfraPuAulsbqVEva4nJRyVjboscfVgUSDfGC/TUhkwrUUT5AJLrAnb0SDHemBcT6YvJCQPEmz3NhFoyf2Q1euBjxWTMNDS/fGcMR1oM1uF6SG06JkncnqdQeoh5ZndDmyQle9R5T0URWwsrJRu15pn6q+XY6Rr/pjxSKYx0EcHDlT9JGjxqH/gzVPa5G50nnU801iS9CmPlegiq6sAMcGxPZAT1gFvr8OrJ0D6x6UoiWotShdCHsrsfciGnNMIR3WlL+sasRfD1sQxy63IF6HW+RwG1CuRyxxiX3uyuLFt3DBtSAZ7hgmrn/NZPc2kz7gbH8j28ghNCg5BTRAk8CpZi9wMdYcNTv/T8FwWePkGxJfTL9JLkcQh4MC7VAfd3HTQYidg/Blr5lozF0ryv8zi8MVszhMZrLYXymLPznwHF4DCi0ZbUpjTQtmIBjGJFfi2axy8Y0xK/lM/t2kXPzBXAtmfmLRv0m1q9k34TD9R5INm6+v2N59+sj9Aw=="),
 this.addDataEntry("bootstrap breadcrumb",460,30,"Breadcrumb","7ZZdb4IwFIZ/TW8NtH7sGph64ZIl/oIqB2lWKCmd4H79Tm39irqZTI1LhJC0b8+hp+/DSSAsLtqR5lX+plKQhL0SFmuljBsVbQxSEhqIlLCEUBrgQ+jwzGq4Xg0qrqE0lyRQl7Dk8hOc4oTarKQXclNgWUlIWFTnPFUNTgKcpLzOIfUTXKlsfNEu7Fk6MzxBbXDY0RrmWEqkp+LLRvRstNHqA2IllUalVCUuRJmQciMRyrK+vVH3FYI20J495VryRxyBKsDoFYY0IjW5i+j2nRNBDmKR+zTmNV67+WKbuvMMB9620xayIwvH+JKr2+hcrEALrBD2fPvVzI2kSrPnL0teojix+RWfi3IxgcyaEtoymlwYmKJua2lwe8sPagQ43pgXXkqG/kqm9wMYDZIbsYSD1/+FVvfEBz98eFjp+ro7GXoNMn6HdyVwYxq0h9A3GSrLajBHJLd1XQS3dwR3Imaa+y/kkQFvu/Eftt5pwINbAO4/u/chujekt6A7OKKbcMOfeO/eu2H3CnhxuvuPdeH7v7nf"),
-this.addEntry("bootstrap pills vertical",function(){var b=new mxCell("",new mxGeometry(0,0,200,158),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize5=;strokeColor=none;fillColor=#ffffff;");b.vertex=!0;var c=new mxCell("Home",new mxGeometry(0,0,200,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#3D8BCD;fontColor=#ffffff;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);var d=new mxCell("42",
-new mxGeometry(1,.5,25,16),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=8;fillColor=#ffffff;strokeColor=none;fontColor=#3D8BCD;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-33,-8);d.vertex=!0;c.insert(d);c=new mxCell("Profile",new mxGeometry(0,0,200,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;fontColor=#3D8BCD;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=
-!0;c.geometry.offset=new mxPoint(0,32);c.vertex=!0;b.insert(c);c=new mxCell("Messages",new mxGeometry(0,0,200,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;fontColor=#3D8BCD;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,64);c.vertex=!0;b.insert(c);d=new mxCell("24",new mxGeometry(1,.5,25,16),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=8;fillColor=#999999;strokeColor=none;fontColor=#ffffff;whiteSpace=wrap;");
+this.addEntry("bootstrap pills vertical",function(){var b=new mxCell("",new mxGeometry(0,0,200,158),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize5=;strokeColor=none");b.vertex=!0;var c=new mxCell("Home",new mxGeometry(0,0,200,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#3D8BCD;fontColor=#ffffff;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);var d=new mxCell("42",new mxGeometry(1,
+.5,25,16),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=8;strokeColor=none;fontColor=#3D8BCD;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-33,-8);d.vertex=!0;c.insert(d);c=new mxCell("Profile",new mxGeometry(0,0,200,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;fontColor=#3D8BCD;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,
+32);c.vertex=!0;b.insert(c);c=new mxCell("Messages",new mxGeometry(0,0,200,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;fontColor=#3D8BCD;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,64);c.vertex=!0;b.insert(c);d=new mxCell("24",new mxGeometry(1,.5,25,16),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=8;fillColor=#999999;strokeColor=none;fontColor=#ffffff;whiteSpace=wrap;");
 d.geometry.relative=!0;d.geometry.offset=new mxPoint(-33,-8);d.vertex=!0;c.insert(d);c=new mxCell("Disabled Link",new mxGeometry(0,0,200,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;fontColor=#dddddd;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,96);c.vertex=!0;b.insert(c);c=new mxCell("System Settings",new mxGeometry(0,0,200,30),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.bottomRect;fontColor=#3D8BCD;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
 c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,128);c.vertex=!0;b.insert(c);d=new mxCell("1",new mxGeometry(1,.5,25,16),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=8;fillColor=#999999;strokeColor=none;fontColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-33,-8);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],200,158,"Pills (Vertical)")}),this.addDataEntry("bootstrap navbar",720,100,"Navbar","3ZjdjqIwFMefhksJBXX0Vt2dm9lkMz5BBw7QTGlJqaPu028LFUFgcCKwk8WYtKenX79/21OwvG1yehY4jX/xAKjl/bC8reBcFqnktAVKLdchgeXtLNd11N9yf3aUorzUSbEAJu+p4BYVPjA9QGEpDJk8U2OIZaKGtUOWt8liHPCjyjgqE+AshsBkVEmq/ZNTpOdiv6kZZFIlbSHAV0PZiD35oz0WKh0SSreccpH34IVL/dOtSMHfoVIS5I+uDf5BZOQDXiEr2tG9msGDkHDqBJCbzOyfgScgxVm5HEkg48LjyUByYiBRfKnmGCPOCkNU1r3yVAmDtB2v18C7EZgFgzMuENfxMc7ghvXFxJmsQF7nj7EbldBc5Y8xkbBPsa8tR9XRvcjdXuSrFuLzAYDPG8BfCHsfiffNMi4Xa7sOHdCHhnyqA64wX47EfDEl80fX+Ei40Xw63ssG753gqQLKvinzTOEmLHo1GJAzng6u09ShPMmHFuKpP3he2EpBMIvoLbgapTbKAdEaEM6UKeMHPaVNCoKosULF7S5yy89XcFHhbG4N9qLBcdWkaJwEUCxVcK611EbW9P6bEzWosusZWtc6n3n1FngYZiAbypRzuEusVUOsPWDhx7ZtT3Hl6b7a3Oya0o4pibTsFEJ53UQveW7UPeQ5i5oczZXgtu0ob4AdtW6KdHhLiPy3Co3EeYGcHs5tt6QhMF86HjlkY+bHGubkwbiGFX0pMD98lK3qos5uA80ghxlCk90BekWcMLr3CftppH9YWXcSZe94I/9OlwrU8Xr9f94qVPb6baZwr366+Qs="),
 this.addDataEntry("bootstrap navbar form",720,40,"Navbar Form","xZVvb4IwEMY/Td+SUmTTt+LmXmzJEj9BlYM2K5SUKrhPv4PW/3NzmVGMSe+5O3p9fhBIlBTt1PBKvOkUFImeSJQYra1bFW0CShFGZUqiCWGM4p+w5zPZsM/Sihso7SUNzDWsuFqCU5xQ27XygrAFjjUJSTSuBU91gwHFIOW1gNQHmKm6+qLNu7MEczxBbXEZGAMLHGVsZvKzq4hxnUmlEq206XeIsofu193FGv0Be5m0vzDjxwRjoT171F7y55yCLsCaNZY0MrXCVTx6O6gAmQvfNvAar12cb1t3xuHCe/e9j9GJj2PDy/TqZjovD30qdQlHpm4kXdo9N0f95XWPIxxg3AhpYVbxRac0uFHHC2qseNn4FF4Kgf0KYfgDAwOKW7mCg9v/B8zgBMwMuFmIIAhu8aSff6KP2Gx1rmReoqYg61EjFVnmr300CenNaTH6Da7or7j8Fu9a4s6M+oGGsetYuzA+7NdZVoM9gb0d8yL+8Sn/5byQ9r7w7//CXYkgG9FrI8Rw9/1z5fufxy8="),
@@ -4672,26 +4667,26 @@ this.addEntry("bootstrap progress bar",function(){var b=new mxCell("",new mxGeom
 b.geometry.height,"Progress Bar")}),this.addEntry("bootstrap progress bar",function(){var b=new mxCell("",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("60%",new mxGeometry(0,0,500,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;strokeColor=none;fillColor=#55C0E0;fontColor=#FFFFFF;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],
 b.geometry.width,b.geometry.height,"Progress Bar")}),this.addEntry("bootstrap progress bar",function(){var b=new mxCell("",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("60%",new mxGeometry(0,0,500,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;strokeColor=none;fillColor=#F2AE43;fontColor=#FFFFFF;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],
 b.geometry.width,b.geometry.height,"Progress Bar")}),this.addEntry("bootstrap progress bar",function(){var b=new mxCell("",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("60%",new mxGeometry(0,0,500,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;strokeColor=none;fillColor=#DB524C;fontColor=#FFFFFF;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],
-b.geometry.width,b.geometry.height,"Progress Bar")}),this.addEntry("bootstrap progress bar low percentage",function(){var b=new mxCell("0%",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;fontColor=#000000;align=left;spacingLeft=5;whiteSpace=wrap;");b.vertex=!0;return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Progress Bar (Low percentage)")}),this.addEntry("bootstrap progress bar low percentage",
-function(){var b=new mxCell("",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("2%",new mxGeometry(0,0,30,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;strokeColor=none;fillColor=#55C0E0;fontColor=#FFFFFF;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Progress Bar (Low percentage)")}),
-this.addEntry("bootstrap progress bar striped",function(){var b=new mxCell("",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("60%",new mxGeometry(0,0,500,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButtonStriped;fillColor=#59B958;fontColor=#FFFFFF;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,
-"Progress Bar (Striped)")}),this.addEntry("bootstrap progress bar striped",function(){var b=new mxCell("",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("60%",new mxGeometry(0,0,500,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButtonStriped;fillColor=#55BFE0;fontColor=#FFFFFF;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],
-b.geometry.width,b.geometry.height,"Progress Bar (Striped)")}),this.addEntry("bootstrap progress bar striped",function(){var b=new mxCell("",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("60%",new mxGeometry(0,0,500,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButtonStriped;fillColor=#EFAC43;fontColor=#FFFFFF;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],
-b.geometry.width,b.geometry.height,"Progress Bar (Striped)")}),this.addEntry("bootstrap progress bar striped",function(){var b=new mxCell("",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("60%",new mxGeometry(0,0,500,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButtonStriped;fillColor=#DB524C;fontColor=#FFFFFF;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],
-b.geometry.width,b.geometry.height,"Progress Bar (Striped)")}),this.addDataEntry("bootstrap progress bar",800,20,"Progress Bar","vZXNboMwDMefJtcqTUjVHgf9OO3UJ8iKadACQSEddE8/Q7K121q12qBCSPbfdmT/MArhSdFurKzUs0lBE74iPLHGOG8VbQJaE0bzlPAlYYziS9j6SnTaR2klLZTungLmC96kPoBXvFC7ow6CcgW2tZwSHtdKpqZBh6KTylpBGhyMVF1+0e67WSYvOEHt0JxYCztsJbbb/L3LEF22s+YVEqONRaU0JQbiLNf6UyKMZ7PuQb1RuYNtJXdddYNHoha6BuugvTp5L4WxN2AKcPaIKU2eOuUz5tTToQryvQplgRiVtff3X6UnjmgElJex8tGxashcfHDOlH9gu4wFi5L/sGU32U7FSGyj22zDyt2DYs2eVhFH/ex7DE2l/UHkjBIbawPFoJTEIl6I+UMo8QuUxlql2bCQREJX9CGQIvob0lA/HLqn+6ePfbuePgA="),
-this.addDataEntry("bootstrap default media",700,290,"Default Media","7VjLcpswFP0ath5eIc2yxk1WySZfIEsC7lRIVEjY7tf3SsiNHdtNZmq8aMGDka50Hzr3cBZEWdlunzTpmmfFuIiyb1FWaqXMOGq3JRciSmNgUbaK0jTGO0ofL6wmfjXuiObSfMYhHR0GIiwfLUW+LfLR2pudCNbGtFjbKomyZd8QpjY4iXHCSN9wFia40rn97bZ2B1qs8Ri9weFCc4rlLImAWuIGitVx7TyMVt95qYTC2Uoqie7LCoTYm6I0qwr3c3YlzYH9wV9o3zRg+GtHqMu9wXRoC8fi2vDtRWi8KeDyxFXLjd7hlg0w0+zBGL0aDnVjjm2kH+f1b883nHEQoD4Pe3YC+zNnQHwmwkDW124AkbRxwHkQX+Gn25XmBy0RvDITYBkc7kcWHkKbxvEptln899jmJ9iWGuMhmmBcaAyIDwnrBh8C1lyrKC1dAIl/CNwAzHVCWiHIAgcvbuARcGnQ3fpolAuuof+BWTAqEtoZlRBAwVjmg1HVtoopFyTU0FntvRWDkHXgvYG1FbbdlzBY0VlDfEBixl2Gt513HAAboV05xuoOehf70WIxPp1k0GJLfCxpJXURqD9tD+8iVxppBuGIK3zz3D5BKEjPQ4xV+5NVXEC/L60ilmKxLutE/HzHR8c6oER8DWajugssPSB2kk/P5N0xYQ81IztD7OIKxL6btfqkK6ENSXymDxNpd/GfavcfoJ5My+9nLZ+1/GbMvqWYf5nF/JNtSW+o7Q8nXXnBVxpxdlrxL4t8kn8MejaVyifxLPOzzN+O22d0/q64js7j9O3jjV87+rbzCw=="),
+b.geometry.width,b.geometry.height,"Progress Bar")}),this.addEntry("bootstrap progress bar low percentage",function(){var b=new mxCell("0%",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;align=left;spacingLeft=5;whiteSpace=wrap;");b.vertex=!0;return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Progress Bar (Low percentage)")}),this.addEntry("bootstrap progress bar low percentage",function(){var b=
+new mxCell("",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("2%",new mxGeometry(0,0,30,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButton;rSize=5;strokeColor=none;fillColor=#55C0E0;fontColor=#FFFFFF;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Progress Bar (Low percentage)")}),this.addEntry("bootstrap progress bar striped",
+function(){var b=new mxCell("",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("60%",new mxGeometry(0,0,500,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButtonStriped;fillColor=#59B958;fontColor=#FFFFFF;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Progress Bar (Striped)")}),this.addEntry("bootstrap progress bar striped",
+function(){var b=new mxCell("",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("60%",new mxGeometry(0,0,500,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButtonStriped;fillColor=#55BFE0;fontColor=#FFFFFF;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Progress Bar (Striped)")}),this.addEntry("bootstrap progress bar striped",
+function(){var b=new mxCell("",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("60%",new mxGeometry(0,0,500,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButtonStriped;fillColor=#EFAC43;fontColor=#FFFFFF;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Progress Bar (Striped)")}),this.addEntry("bootstrap progress bar striped",
+function(){var b=new mxCell("",new mxGeometry(0,0,800,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("60%",new mxGeometry(0,0,500,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.leftButtonStriped;fillColor=#DB524C;fontColor=#FFFFFF;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Progress Bar (Striped)")}),this.addDataEntry("bootstrap progress bar",
+800,20,"Progress Bar","vZXNboMwDMefJtcqTUjVHgf9OO3UJ8iKadACQSEddE8/Q7K121q12qBCSPbfdmT/MArhSdFurKzUs0lBE74iPLHGOG8VbQJaE0bzlPAlYYziS9j6SnTaR2klLZTungLmC96kPoBXvFC7ow6CcgW2tZwSHtdKpqZBh6KTylpBGhyMVF1+0e67WSYvOEHt0JxYCztsJbbb/L3LEF22s+YVEqONRaU0JQbiLNf6UyKMZ7PuQb1RuYNtJXdddYNHoha6BuugvTp5L4WxN2AKcPaIKU2eOuUz5tTToQryvQplgRiVtff3X6UnjmgElJex8tGxashcfHDOlH9gu4wFi5L/sGU32U7FSGyj22zDyt2DYs2eVhFH/ex7DE2l/UHkjBIbawPFoJTEIl6I+UMo8QuUxlql2bCQREJX9CGQIvob0lA/HLqn+6ePfbuePgA="),this.addDataEntry("bootstrap default media",
+700,290,"Default Media","7VjLcpswFP0ath5eIc2yxk1WySZfIEsC7lRIVEjY7tf3SsiNHdtNZmq8aMGDka50Hzr3cBZEWdlunzTpmmfFuIiyb1FWaqXMOGq3JRciSmNgUbaK0jTGO0ofL6wmfjXuiObSfMYhHR0GIiwfLUW+LfLR2pudCNbGtFjbKomyZd8QpjY4iXHCSN9wFia40rn97bZ2B1qs8Ri9weFCc4rlLImAWuIGitVx7TyMVt95qYTC2Uoqie7LCoTYm6I0qwr3c3YlzYH9wV9o3zRg+GtHqMu9wXRoC8fi2vDtRWi8KeDyxFXLjd7hlg0w0+zBGL0aDnVjjm2kH+f1b883nHEQoD4Pe3YC+zNnQHwmwkDW124AkbRxwHkQX+Gn25XmBy0RvDITYBkc7kcWHkKbxvEptln899jmJ9iWGuMhmmBcaAyIDwnrBh8C1lyrKC1dAIl/CNwAzHVCWiHIAgcvbuARcGnQ3fpolAuuof+BWTAqEtoZlRBAwVjmg1HVtoopFyTU0FntvRWDkHXgvYG1FbbdlzBY0VlDfEBixl2Gt513HAAboV05xuoOehf70WIxPp1k0GJLfCxpJXURqD9tD+8iVxppBuGIK3zz3D5BKEjPQ4xV+5NVXEC/L60ilmKxLutE/HzHR8c6oER8DWajugssPSB2kk/P5N0xYQ81IztD7OIKxL6btfqkK6ENSXymDxNpd/GfavcfoJ5My+9nLZ+1/GbMvqWYf5nF/JNtSW+o7Q8nXXnBVxpxdlrxL4t8kn8MejaVyifxLPOzzN+O22d0/q64js7j9O3jjV87+rbzCw=="),
 this.addDataEntry("bootstrap media list",700,460,"Media List","7Vldc6MgFP01vmYErG0eN2a3T+1LfwEREpmiuIj56K/vBU1rotlmZkMfrMkkwoV7wXMPZ5xrQJJ8/6hpmT0pxmVAfgck0UqZppXvEy5lgEPBArIMMA7hF+A/F0aRGw1LqnlhrnHAjcOWypo3ljjax1FjrcxBttbM5LC3JQrIosooUzvohNBhtMo4azswUtr5+X5jb2i2gtuoDDRnmqewnQWVYlPAhBR2x7X1MFq98kRJBb1loQpwX6yFlEdTgMk6tl9rV4Xp2OfuA/ZdJgx/KWlq197BcmBrb4trw/cXoXGmFpdHrnJu9AGm7AQz2RGMxivjYpOZUxutmv7mw/MTZ2i0UA/DTnqwP3EmqFuJMlFsbp0AWqSZBc6B+CLe7CwcdVIi+dp4wLJ1uG9Y2IUWh2EfWxL+P7ZRD9tEQzxAUxgbGgLCpRCrDC5SrLhWAU5sgAL+ALitYDYTRS0lnUHj2TYcAnYZcK9dtJRLrkX1F1aBqEBoa1RSilSYmrlgqcpzxZQN0u6hrLXzVky0q255ZcSqlnV+3MK2lmVtqAtITTPL8Lx0jlsBidB2O6bWpahm3phyxgybf5FS+as1G1Ve4EuHYijyz6nDKXW6p5cMUCy+AcXuJtW8Mivzgax40tS4l5RnOFoAMw7HLa4o+hJz4kts7yex/RFie84xhPsku4s9ye3DJLdX5+Xh+wR3fllw81ELLkZfg+5NcY9rT5I7csk9Z9lHv8OyaO5JchGaNPfKR1z8jZKL+vWaH/qQO4S6P83t12smzR2j5p6zjAxorrfHXNSvXE2a2zrEJD5NzEBF0Zvo9ss9I9Xaf4DrrVyL+nWbSVtHpa0tq6Jw4MjeqEIL3c93Zm7s5JXaOw=="),
-this.addEntry("bootstrap linked item custom content",function(){var b=new mxCell("",new mxGeometry(0,0,400,240),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;fillColor=#ffffff;strokeColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Donec id elit non mi porta gravida at eget metus.\nMaecenas sed diam eget risus varius blandit.",new mxGeometry(0,0,400,80),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;spacingLeft=10;align=left;fontSize=14;whiteSpace=wrap;verticalAlign=bottom;spacingBottom=10;resizeWidth=1;");
+this.addEntry("bootstrap linked item custom content",function(){var b=new mxCell("",new mxGeometry(0,0,400,240),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Donec id elit non mi porta gravida at eget metus.\nMaecenas sed diam eget risus varius blandit.",new mxGeometry(0,0,400,80),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;perimeter=none;spacingLeft=10;align=left;fontSize=14;whiteSpace=wrap;verticalAlign=bottom;spacingBottom=10;resizeWidth=1;");
 c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,80);c.vertex=!0;b.insert(c);var d=new mxCell("List group item heading",new mxGeometry(0,0,400,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.anchor;spacingLeft=10;align=left;fontSize=18;whiteSpace=wrap;resizeWidth=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);c=new mxCell("Donec id elit non mi porta gravida at eget metus.\nMaecenas sed diam eget risus varius blandit.",new mxGeometry(0,1,400,80),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.bottomButton;rSize=5;spacingLeft=10;align=left;fontSize=14;perimeter=none;whiteSpace=wrap;verticalAlign=bottom;spacingBottom=13;resizeWidth=1;");
 c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,-80);c.vertex=!0;b.insert(c);d=new mxCell("List group item heading",new mxGeometry(0,0,400,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.anchor;spacingLeft=10;align=left;fontSize=18;whiteSpace=wrap;resizeWidth=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);c=new mxCell("Donec id elit non mi porta gravida at eget metus.\nMaecenas sed diam eget risus varius blandit.",new mxGeometry(0,0,400,80),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;fillColor=#3D8BCD;strokeColor=#3D8BCD;fontColor=#ffffff;spacingLeft=10;align=left;fontSize=14;perimeter=none;whiteSpace=wrap;verticalAlign=bottom;spacingBottom=13;resizeWidth=1;");
 c.geometry.relative=!0;c.vertex=!0;b.insert(c);d=new mxCell("List group item heading",new mxGeometry(0,0,400,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.anchor;fontColor=#ffffff;spacingLeft=10;align=left;fontSize=18;whiteSpace=wrap;resizeWidth=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Linked Items (Custom Content)")}),this.addEntry("bootstrap panel",function(){var b=new mxCell("Panel content",new mxGeometry(0,
-0,150,200),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;strokeColor=#E0F0D6;fillColor=#ffffff;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,0,150,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;strokeColor=none;fillColor=#E0F0D6;fontColor=#59B958;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],
-b.geometry.width,b.geometry.height,"Panel")}),this.addEntry("bootstrap panel",function(){var b=new mxCell("Panel content",new mxGeometry(0,0,150,200),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;strokeColor=#D9EDF8;fillColor=#ffffff;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,0,150,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;strokeColor=none;fillColor=#D9EDF8;fontColor=#55C0E0;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
-c.geometry.relative=!0;c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Panel")}),this.addEntry("bootstrap panel",function(){var b=new mxCell("Panel content",new mxGeometry(0,0,150,200),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;strokeColor=#FDF8E4;fillColor=#ffffff;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,0,150,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;strokeColor=none;fillColor=#FDF8E4;fontColor=#F2AE43;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
-c.geometry.relative=!0;c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Panel")}),this.addEntry("bootstrap panel",function(){var b=new mxCell("Panel content",new mxGeometry(0,0,150,200),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;strokeColor=#F2DEDF;fillColor=#ffffff;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,0,150,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;strokeColor=none;fillColor=#F2DEDF;fontColor=#DB524C;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
-c.geometry.relative=!0;c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Panel")}),this.addEntry("bootstrap panel",function(){var b=new mxCell("Panel content",new mxGeometry(0,0,150,200),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;strokeColor=#3D8BCD;fillColor=#ffffff;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,0,150,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;strokeColor=none;fillColor=#3D8BCD;fontColor=#ffffff;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
-c.geometry.relative=!0;c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Panel")}),this.addEntry("bootstrap panel footer",function(){var b=new mxCell("Panel content",new mxGeometry(0,0,150,200),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;strokeColor=#E0F0D6;fillColor=#ffffff;fontColor=#f0f0f0;spacingBottom=30;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,1,150,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.bottomButton;rSize=5;strokeColor=none;fillColor=#E0F0D6;fontColor=#59B958;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
-c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,-30);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Panel (Footer)")}),this.addEntry("bootstrap table",function(){var b=new mxCell("",new mxGeometry(0,0,800,280),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,0,800,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;strokeColor=inherit;fillColor=#000000;fillOpacity=3;fontColor=#999999;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
+0,150,200),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;strokeColor=#E0F0D6;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,0,150,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;strokeColor=none;fillColor=#E0F0D6;fontColor=#59B958;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],
+b.geometry.width,b.geometry.height,"Panel")}),this.addEntry("bootstrap panel",function(){var b=new mxCell("Panel content",new mxGeometry(0,0,150,200),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;strokeColor=#D9EDF8;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,0,150,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;strokeColor=none;fillColor=#D9EDF8;fontColor=#55C0E0;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
+c.geometry.relative=!0;c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Panel")}),this.addEntry("bootstrap panel",function(){var b=new mxCell("Panel content",new mxGeometry(0,0,150,200),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;strokeColor=#FDF8E4;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,0,150,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;strokeColor=none;fillColor=#FDF8E4;fontColor=#F2AE43;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
+c.geometry.relative=!0;c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Panel")}),this.addEntry("bootstrap panel",function(){var b=new mxCell("Panel content",new mxGeometry(0,0,150,200),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;strokeColor=#F2DEDF;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,0,150,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;strokeColor=none;fillColor=#F2DEDF;fontColor=#DB524C;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
+c.geometry.relative=!0;c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Panel")}),this.addEntry("bootstrap panel",function(){var b=new mxCell("Panel content",new mxGeometry(0,0,150,200),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;strokeColor=#3D8BCD;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,0,150,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;strokeColor=none;fillColor=#3D8BCD;fontColor=#ffffff;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
+c.geometry.relative=!0;c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Panel")}),this.addEntry("bootstrap panel footer",function(){var b=new mxCell("Panel content",new mxGeometry(0,0,150,200),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;align=center;rSize=5;strokeColor=#E0F0D6;fontColor=#f0f0f0;spacingBottom=30;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,1,150,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.bottomButton;rSize=5;strokeColor=none;fillColor=#E0F0D6;fontColor=#59B958;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
+c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,-30);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Panel (Footer)")}),this.addEntry("bootstrap table",function(){var b=new mxCell("",new mxGeometry(0,0,800,280),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,0,800,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;strokeColor=inherit;fillColor=#000000;fillOpacity=3;fontColor=#999999;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
 c.geometry.relative=!0;c.vertex=!0;b.insert(c);c=new mxCell("Some default panel content here. Nulla vitae elit libero, a pharetra augue. Aenean lacinia bibendum nulla sed consectetur. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nullam id dolor id nibh ultricies vehicula. ",new mxGeometry(0,0,800,80),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
 c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,40);c.vertex=!0;b.insert(c);c=new mxCell("",new mxGeometry(0,0,800,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=inherit;fillColor=#000000;fillOpacity=3;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,120);c.vertex=!0;b.insert(c);var d=new mxCell("#",new mxGeometry(0,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;whiteSpace=wrap;resizeHeight=1;");
 d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("First Name",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(80,0);d.vertex=!0;c.insert(d);d=new mxCell("Last Name",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");
@@ -4699,51 +4694,49 @@ d.geometry.relative=!0;d.geometry.offset=new mxPoint(230,0);d.vertex=!0;c.insert
 d.geometry.relative=!0;d.geometry.offset=new mxPoint(560,0);d.vertex=!0;c.insert(d);d=new mxCell("Boss",new mxGeometry(0,0,100,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,0);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;whiteSpace=wrap;resizeWidth=1;");
 c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,160);c.vertex=!0;b.insert(c);d=new mxCell("1",new mxGeometry(0,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("John",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=
 !0;d.geometry.offset=new mxPoint(80,0);d.vertex=!0;c.insert(d);d=new mxCell("Boo",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(230,0);d.vertex=!0;c.insert(d);d=new mxCell("johnny81",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");
-d.geometry.relative=!0;d.geometry.offset=new mxPoint(380,0);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.checkbox;fillColor=#ffffff;strokeColor=#666666;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(560,-10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=#666666;fillColor=#ffffff;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,-10);d.vertex=!0;c.insert(d);
-c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,200);c.vertex=!0;b.insert(c);d=new mxCell("2",new mxGeometry(0,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("Mary",
-new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(80,0);d.vertex=!0;c.insert(d);d=new mxCell("Brown",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(230,
-0);d.vertex=!0;c.insert(d);d=new mxCell("missmary",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(380,0);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.checkbox;fillColor=#ffffff;strokeColor=#666666;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(560,
--10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.radioButton;fillColor=#ffffff;strokeColor=#666666;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,-10);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.bottomButton;rSize=5;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=
-new mxPoint(0,240);c.vertex=!0;b.insert(c);d=new mxCell("3",new mxGeometry(0,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("James",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(80,
-0);d.vertex=!0;c.insert(d);d=new mxCell("Mooray",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(230,0);d.vertex=!0;c.insert(d);d=new mxCell("jijames",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=
-!0;d.geometry.offset=new mxPoint(380,0);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=3;fillColor=#ffffff;strokeColor=#666666;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(560,-10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;fillColor=#ffffff;strokeColor=#666666;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,-10);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],
-b.geometry.width,b.geometry.height,"Table")}),this.addEntry("bootstrap panel list group",function(){var b=new mxCell("",new mxGeometry(0,0,600,320),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,0,600,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;strokeColor=inherit;fillColor=#000000;fillOpacity=3;fontColor=#999999;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");
-c.geometry.relative=!0;c.vertex=!0;b.insert(c);c=new mxCell("Some default panel content here. Nulla vitae elit libero, a pharetra augue. Aenean lacinia bibendum nulla sed consectetur. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nullam id dolor id nibh ultricies vehicula. ",new mxGeometry(0,0,600,80),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;align=left;spacingLeft=10;whiteSpace=wrap;fontSize=14;whiteSpace=wrap;resizeWidth=1;");
+d.geometry.relative=!0;d.geometry.offset=new mxPoint(380,0);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.checkbox;strokeColor=#666666;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(560,-10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=#666666;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,-10);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,
+0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,200);c.vertex=!0;b.insert(c);d=new mxCell("2",new mxGeometry(0,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("Mary",new mxGeometry(0,
+0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(80,0);d.vertex=!0;c.insert(d);d=new mxCell("Brown",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(230,0);d.vertex=!0;
+c.insert(d);d=new mxCell("missmary",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(380,0);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.checkbox;strokeColor=#666666;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(560,-10);d.vertex=!0;c.insert(d);
+d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.radioButton;strokeColor=#666666;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,-10);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.bottomButton;rSize=5;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,240);c.vertex=!0;b.insert(c);
+d=new mxCell("3",new mxGeometry(0,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("James",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(80,0);d.vertex=!0;c.insert(d);d=new mxCell("Mooray",
+new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(230,0);d.vertex=!0;c.insert(d);d=new mxCell("jijames",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(380,
+0);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=3;strokeColor=#666666;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(560,-10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=#666666;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,-10);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Table")}),
+this.addEntry("bootstrap panel list group",function(){var b=new mxCell("",new mxGeometry(0,0,600,320),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;");b.vertex=!0;var c=new mxCell("Panel title",new mxGeometry(0,0,600,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.topButton;rSize=5;strokeColor=inherit;fillColor=#000000;fillOpacity=3;fontColor=#999999;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;
+c.vertex=!0;b.insert(c);c=new mxCell("Some default panel content here. Nulla vitae elit libero, a pharetra augue. Aenean lacinia bibendum nulla sed consectetur. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nullam id dolor id nibh ultricies vehicula. ",new mxGeometry(0,0,600,80),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;align=left;spacingLeft=10;whiteSpace=wrap;fontSize=14;whiteSpace=wrap;resizeWidth=1;");
 c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,40);c.vertex=!0;b.insert(c);c=new mxCell("Cras justo odio",new mxGeometry(0,0,600,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;spacingLeft=10;fontSize=14;align=left;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,120);c.vertex=!0;b.insert(c);c=new mxCell("Dapibus ac facilisis in",new mxGeometry(0,0,600,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;spacingLeft=10;fontSize=14;align=left;whiteSpace=wrap;resizeWidth=1;");
 c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,160);c.vertex=!0;b.insert(c);c=new mxCell("Morbi leo risus",new mxGeometry(0,0,600,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;spacingLeft=10;fontSize=14;align=left;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,200);c.vertex=!0;b.insert(c);c=new mxCell("Porta ac consectetur ac",new mxGeometry(0,0,600,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;spacingLeft=10;fontSize=14;align=left;whiteSpace=wrap;resizeWidth=1;");
 c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,240);c.vertex=!0;b.insert(c);c=new mxCell("Vestibulum at eros",new mxGeometry(0,1,600,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.bottomButton;rSize=5;spacingLeft=10;fontSize=14;align=left;whiteSpace=wrap;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,-40);c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,
-"Panel (List Group)")}),this.addEntry("bootstrap table",function(){var b=new mxCell("",new mxGeometry(0,0,800,160),"html=1;shadow=0;dashed=0;shape=partialRectangle;top=0;bottom=0;right=0;left=0;strokeColor=#dddddd;fillColor=#ffffff;");b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,800,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;strokeColor=inherit;fillColor=#000000;fillOpacity=3;resizeWidth=1;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);var d=new mxCell("#",new mxGeometry(0,
-0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("First Name",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(80,0);d.vertex=!0;c.insert(d);d=new mxCell("Last Name",
-new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(230,0);d.vertex=!0;c.insert(d);d=new mxCell("Username",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=
-new mxPoint(380,0);d.vertex=!0;c.insert(d);d=new mxCell("Active",new mxGeometry(0,0,100,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(560,0);d.vertex=!0;c.insert(d);d=new mxCell("Boss",new mxGeometry(0,0,100,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");
-d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,0);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,40);c.vertex=!0;b.insert(c);d=new mxCell("1",new mxGeometry(0,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;whiteSpace=wrap;resizeHeight=1;");
-d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("John",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(80,0);d.vertex=!0;c.insert(d);d=new mxCell("Boo",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");
-d.geometry.relative=!0;d.geometry.offset=new mxPoint(230,0);d.vertex=!0;c.insert(d);d=new mxCell("johnny81",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(380,0);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.checkbox;strokeColor=#666666;fillColor=#ffffff;");
-d.geometry.relative=!0;d.geometry.offset=new mxPoint(560,-10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=#666666;html=1;fillColor=#ffffff;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,-10);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,
-80);c.vertex=!0;b.insert(c);d=new mxCell("2",new mxGeometry(0,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("Mary",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(80,0);
-d.vertex=!0;c.insert(d);d=new mxCell("Brown",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(230,0);d.vertex=!0;c.insert(d);d=new mxCell("missmary",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=
-!0;d.geometry.offset=new mxPoint(380,0);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.checkbox;strokeColor=#666666;fillColor=#ffffff;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(560,-10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.radioButton;strokeColor=#666666;fillColor=#ffffff;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,-10);
-d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,120);c.vertex=!0;b.insert(c);d=new mxCell("3",new mxGeometry(0,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);
-d=new mxCell("James",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(80,0);d.vertex=!0;c.insert(d);d=new mxCell("Mooray",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=
-new mxPoint(230,0);d.vertex=!0;c.insert(d);d=new mxCell("jijames",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(380,0);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=3;strokeColor=#666666;fillColor=#ffffff;");d.geometry.relative=!0;d.geometry.offset=
-new mxPoint(560,-10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=#666666;fillColor=#ffffff;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,-10);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Table")}),this.addEntry("bootstrap table",function(){var b=new mxCell("",new mxGeometry(0,0,800,360),"shape=partialRectangle;right=0;left=0;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;");
-b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,800,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;strokeColor=inherit;fillColor=#000000;fillOpacity=3;resizeWidth=1;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);var d=new mxCell("Name",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(50,0);d.vertex=
-!0;c.insert(d);d=new mxCell("Double-Line\nHeader",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(250,0);d.vertex=!0;c.insert(d);d=new mxCell("Rating",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");
-d.geometry.relative=!0;d.geometry.offset=new mxPoint(450,0);d.vertex=!0;c.insert(d);d=new mxCell("Signed Up",new mxGeometry(0,0,100,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(620,0);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;strokeColor=none;fillColor=#000000;");c.geometry.relative=
-!0;c.geometry.offset=new mxPoint(-25,-2.5);c.vertex=!0;d.insert(c);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,40);c.vertex=!0;b.insert(c);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=none;fillColor=#dddddd;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(15,-10);d.vertex=
-!0;c.insert(d);var f=new mxCell("",new mxGeometry(.5,.5,14,12),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.user;strokeColor=none;fillColor=#999999;");f.geometry.relative=!0;f.geometry.offset=new mxPoint(-7,-6);f.vertex=!0;d.insert(f);d=new mxCell("John Boo",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(50,0);d.vertex=
-!0;c.insert(d);d=new mxCell("ok",new mxGeometry(0,.5,30,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=3;strokeColor=none;fillColor=#58B957;fontSize=12;fontStyle=1;fontColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(250,-10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,150,14),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rating;strokeColor=none;fillColor=#EFAC43;emptyFillColor=#dddddd;grade=3;ratingScale=5;ratingStyle=star;");
-d.geometry.relative=!0;d.geometry.offset=new mxPoint(450,-7);d.vertex=!0;c.insert(d);d=new mxCell('<table cellpadding="0" cellspacing="0" style="width:100%;height:100%;"><tr><td align="center" valign="middle" width="50%">15 Sep, 8:56 AM <font color="#dddddd">(2013)</font></td></tr></table>',new mxGeometry(0,0,160,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;overflow=fill;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=
-new mxPoint(620,0);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,80);c.vertex=!0;b.insert(c);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=none;fillColor=#dddddd;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(15,-10);d.vertex=!0;c.insert(d);f=new mxCell("",
-new mxGeometry(.5,.5,14,12),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.user;strokeColor=none;fillColor=#999999;");f.geometry.relative=!0;f.geometry.offset=new mxPoint(-7,-6);f.vertex=!0;d.insert(f);d=new mxCell("Michael Robinson",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(50,0);d.vertex=!0;c.insert(d);d=new mxCell("ok",
-new mxGeometry(0,.5,30,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=3;strokeColor=none;fillColor=#58B957;fontSize=12;fontStyle=1;fontColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(250,-10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,150,14),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rating;strokeColor=none;fillColor=#EFAC43;emptyFillColor=#dddddd;grade=5;ratingScale=5;ratingStyle=star;");d.geometry.relative=!0;d.geometry.offset=
-new mxPoint(450,-7);d.vertex=!0;c.insert(d);d=new mxCell('<table cellpadding="0" cellspacing="0" style="width:100%;height:100%;"><tr><td align="center" valign="middle" width="50%">15 Sep, 7:12 AM <font color="#dddddd">(2013)</font></td></tr></table>',new mxGeometry(0,0,160,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;overflow=fill;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(620,0);d.vertex=
-!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,120);c.vertex=!0;b.insert(c);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=none;fillColor=#dddddd;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(15,-10);d.vertex=!0;c.insert(d);f=new mxCell("",new mxGeometry(.5,.5,
-14,12),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.user;strokeColor=none;fillColor=#999999;");f.geometry.relative=!0;f.geometry.offset=new mxPoint(-7,-6);f.vertex=!0;d.insert(f);d=new mxCell("Alexander Robson",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(50,0);d.vertex=!0;c.insert(d);d=new mxCell("Blocked",new mxGeometry(0,
-.5,70,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=3;strokeColor=none;fillColor=#999999;fontSize=12;fontStyle=1;fontColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(250,-10);d.vertex=!0;c.insert(d);d=new mxCell('<table cellpadding="0" cellspacing="0" style="width:100%;height:100%;"><tr><td align="center" valign="middle" width="50%">15 Sep, 4:32 AM <font color="#dddddd">(2013)</font></td></tr></table>',new mxGeometry(0,0,160,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;overflow=fill;whiteSpace=wrap;resizeHeight=1;");
-d.geometry.relative=!0;d.geometry.offset=new mxPoint(620,0);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,160);c.vertex=!0;b.insert(c);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=none;fillColor=#dddddd;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(15,
--10);d.vertex=!0;c.insert(d);f=new mxCell("",new mxGeometry(.5,.5,14,12),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.user;strokeColor=none;fillColor=#999999;");f.geometry.relative=!0;f.geometry.offset=new mxPoint(-7,-6);f.vertex=!0;d.insert(f);d=new mxCell("Jennifer Pinsker",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(50,
-0);d.vertex=!0;c.insert(d);d=new mxCell("Blocked 24h",new mxGeometry(0,.5,90,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=3;strokeColor=none;fillColor=#999999;fontSize=12;fontStyle=1;fontColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(250,-10);d.vertex=!0;c.insert(d);d=new mxCell('<table cellpadding="0" cellspacing="0" style="width:100%;height:100%;"><tr><td align="center" valign="middle" width="50%">15 Sep, 2:08 AM <font color="#dddddd">(2013)</font></td></tr></table>',
+"Panel (List Group)")}),this.addEntry("bootstrap table",function(){var b=new mxCell("",new mxGeometry(0,0,800,160),"html=1;shadow=0;dashed=0;shape=partialRectangle;top=0;bottom=0;right=0;left=0;strokeColor=#dddddd;");b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,800,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;strokeColor=inherit;fillColor=#000000;fillOpacity=3;resizeWidth=1;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);var d=new mxCell("#",new mxGeometry(0,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;whiteSpace=wrap;resizeHeight=1;");
+d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("First Name",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(80,0);d.vertex=!0;c.insert(d);d=new mxCell("Last Name",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");
+d.geometry.relative=!0;d.geometry.offset=new mxPoint(230,0);d.vertex=!0;c.insert(d);d=new mxCell("Username",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(380,0);d.vertex=!0;c.insert(d);d=new mxCell("Active",new mxGeometry(0,0,100,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");
+d.geometry.relative=!0;d.geometry.offset=new mxPoint(560,0);d.vertex=!0;c.insert(d);d=new mxCell("Boss",new mxGeometry(0,0,100,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,0);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");
+c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,40);c.vertex=!0;b.insert(c);d=new mxCell("1",new mxGeometry(0,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("John",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=
+!0;d.geometry.offset=new mxPoint(80,0);d.vertex=!0;c.insert(d);d=new mxCell("Boo",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(230,0);d.vertex=!0;c.insert(d);d=new mxCell("johnny81",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");
+d.geometry.relative=!0;d.geometry.offset=new mxPoint(380,0);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.checkbox;strokeColor=#666666");d.geometry.relative=!0;d.geometry.offset=new mxPoint(560,-10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=#666666;html=1");d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,-10);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,
+800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,80);c.vertex=!0;b.insert(c);d=new mxCell("2",new mxGeometry(0,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("Mary",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");
+d.geometry.relative=!0;d.geometry.offset=new mxPoint(80,0);d.vertex=!0;c.insert(d);d=new mxCell("Brown",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(230,0);d.vertex=!0;c.insert(d);d=new mxCell("missmary",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");
+d.geometry.relative=!0;d.geometry.offset=new mxPoint(380,0);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.checkbox;strokeColor=#666666");d.geometry.relative=!0;d.geometry.offset=new mxPoint(560,-10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.radioButton;strokeColor=#666666");d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,-10);d.vertex=!0;c.insert(d);
+c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,120);c.vertex=!0;b.insert(c);d=new mxCell("3",new mxGeometry(0,0,50,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("James",
+new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(80,0);d.vertex=!0;c.insert(d);d=new mxCell("Mooray",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(230,
+0);d.vertex=!0;c.insert(d);d=new mxCell("jijames",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(380,0);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=3;strokeColor=#666666");d.geometry.relative=!0;d.geometry.offset=new mxPoint(560,-10);d.vertex=
+!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=#666666;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(700,-10);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Table")}),this.addEntry("bootstrap table",function(){var b=new mxCell("",new mxGeometry(0,0,800,360),"shape=partialRectangle;right=0;left=0;strokeColor=#dddddd;whiteSpace=wrap;");b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,800,
+40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;strokeColor=inherit;fillColor=#000000;fillOpacity=3;resizeWidth=1;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);var d=new mxCell("Name",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(50,0);d.vertex=!0;c.insert(d);d=new mxCell("Double-Line\nHeader",
+new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(250,0);d.vertex=!0;c.insert(d);d=new mxCell("Rating",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=
+new mxPoint(450,0);d.vertex=!0;c.insert(d);d=new mxCell("Signed Up",new mxGeometry(0,0,100,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(620,0);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(1,.5,10,5),"shape=triangle;direction=south;strokeColor=none;fillColor=#000000;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(-25,
+-2.5);c.vertex=!0;d.insert(c);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,40);c.vertex=!0;b.insert(c);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=none;fillColor=#dddddd;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(15,-10);d.vertex=!0;c.insert(d);var f=new mxCell("",new mxGeometry(.5,
+.5,14,12),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.user;strokeColor=none;fillColor=#999999;");f.geometry.relative=!0;f.geometry.offset=new mxPoint(-7,-6);f.vertex=!0;d.insert(f);d=new mxCell("John Boo",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(50,0);d.vertex=!0;c.insert(d);d=new mxCell("ok",new mxGeometry(0,.5,
+30,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=3;strokeColor=none;fillColor=#58B957;fontSize=12;fontStyle=1;fontColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(250,-10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,150,14),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rating;strokeColor=none;fillColor=#EFAC43;emptyFillColor=#dddddd;grade=3;ratingScale=5;ratingStyle=star;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(450,
+-7);d.vertex=!0;c.insert(d);d=new mxCell('<table cellpadding="0" cellspacing="0" style="width:100%;height:100%;"><tr><td align="center" valign="middle" width="50%">15 Sep, 8:56 AM <font color="#dddddd">(2013)</font></td></tr></table>',new mxGeometry(0,0,160,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;overflow=fill;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(620,0);d.vertex=!0;c.insert(d);
+c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,80);c.vertex=!0;b.insert(c);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=none;fillColor=#dddddd;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(15,-10);d.vertex=!0;c.insert(d);f=new mxCell("",new mxGeometry(.5,.5,14,12),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.user;strokeColor=none;fillColor=#999999;");
+f.geometry.relative=!0;f.geometry.offset=new mxPoint(-7,-6);f.vertex=!0;d.insert(f);d=new mxCell("Michael Robinson",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(50,0);d.vertex=!0;c.insert(d);d=new mxCell("ok",new mxGeometry(0,.5,30,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=3;strokeColor=none;fillColor=#58B957;fontSize=12;fontStyle=1;fontColor=#ffffff;whiteSpace=wrap;");
+d.geometry.relative=!0;d.geometry.offset=new mxPoint(250,-10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,150,14),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rating;strokeColor=none;fillColor=#EFAC43;emptyFillColor=#dddddd;grade=5;ratingScale=5;ratingStyle=star;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(450,-7);d.vertex=!0;c.insert(d);d=new mxCell('<table cellpadding="0" cellspacing="0" style="width:100%;height:100%;"><tr><td align="center" valign="middle" width="50%">15 Sep, 7:12 AM <font color="#dddddd">(2013)</font></td></tr></table>',
+new mxGeometry(0,0,160,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;overflow=fill;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(620,0);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,
+120);c.vertex=!0;b.insert(c);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=none;fillColor=#dddddd;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(15,-10);d.vertex=!0;c.insert(d);f=new mxCell("",new mxGeometry(.5,.5,14,12),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.user;strokeColor=none;fillColor=#999999;");f.geometry.relative=!0;f.geometry.offset=new mxPoint(-7,-6);f.vertex=!0;d.insert(f);d=new mxCell("Alexander Robson",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");
+d.geometry.relative=!0;d.geometry.offset=new mxPoint(50,0);d.vertex=!0;c.insert(d);d=new mxCell("Blocked",new mxGeometry(0,.5,70,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=3;strokeColor=none;fillColor=#999999;fontSize=12;fontStyle=1;fontColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(250,-10);d.vertex=!0;c.insert(d);d=new mxCell('<table cellpadding="0" cellspacing="0" style="width:100%;height:100%;"><tr><td align="center" valign="middle" width="50%">15 Sep, 4:32 AM <font color="#dddddd">(2013)</font></td></tr></table>',
+new mxGeometry(0,0,160,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;overflow=fill;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(620,0);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,
+160);c.vertex=!0;b.insert(c);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=none;fillColor=#dddddd;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(15,-10);d.vertex=!0;c.insert(d);f=new mxCell("",new mxGeometry(.5,.5,14,12),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.user;strokeColor=none;fillColor=#999999;");f.geometry.relative=!0;f.geometry.offset=new mxPoint(-7,-6);f.vertex=!0;d.insert(f);d=new mxCell("Jennifer Pinsker",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");
+d.geometry.relative=!0;d.geometry.offset=new mxPoint(50,0);d.vertex=!0;c.insert(d);d=new mxCell("Blocked 24h",new mxGeometry(0,.5,90,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=3;strokeColor=none;fillColor=#999999;fontSize=12;fontStyle=1;fontColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(250,-10);d.vertex=!0;c.insert(d);d=new mxCell('<table cellpadding="0" cellspacing="0" style="width:100%;height:100%;"><tr><td align="center" valign="middle" width="50%">15 Sep, 2:08 AM <font color="#dddddd">(2013)</font></td></tr></table>',
 new mxGeometry(0,0,160,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;overflow=fill;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(620,0);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,40),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,
 200);c.vertex=!0;b.insert(c);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=none;fillColor=#dddddd;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(15,-10);d.vertex=!0;c.insert(d);f=new mxCell("",new mxGeometry(.5,.5,14,12),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.user;strokeColor=none;fillColor=#999999;");f.geometry.relative=!0;f.geometry.offset=new mxPoint(-7,-6);f.vertex=!0;d.insert(f);d=new mxCell("Bob Robson",new mxGeometry(0,0,150,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");
 d.geometry.relative=!0;d.geometry.offset=new mxPoint(50,0);d.vertex=!0;c.insert(d);d=new mxCell("ok",new mxGeometry(0,.5,30,20),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=3;strokeColor=none;fillColor=#58B957;fontSize=12;fontStyle=1;fontColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(250,-10);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,150,14),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rating;strokeColor=none;fillColor=#EFAC43;emptyFillColor=#dddddd;grade=1;ratingScale=5;ratingStyle=star;");
@@ -4787,20 +4780,20 @@ new mxGeometry(0,0,210,50),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rec
 b.insert(c);d=new mxCell("Michael Robinson\n",new mxGeometry(0,0,150,50),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(10,0);d.vertex=!0;c.insert(d);d=new mxCell("",new mxGeometry(0,.5,20,20),"shape=ellipse;strokeColor=none;fillColor=#dddddd;html=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(200,-15);d.vertex=!0;c.insert(d);f=new mxCell("",
 new mxGeometry(.5,.5,14,12),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.user;strokeColor=none;fillColor=#999999;");f.geometry.relative=!0;f.geometry.offset=new mxPoint(-7,-6);f.vertex=!0;d.insert(f);d=new mxCell("Michael Robinson\n",new mxGeometry(0,0,150,50),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(230,0);d.vertex=!0;c.insert(d);d=new mxCell('<table cellpadding="0" cellspacing="0" style="width:100%;height:100%;"><tr><td align="left" valign="middle" width="50%">User Blocked<br/><font color="#dddddd">Blocked for 24 hours</font></td></tr></table>',
 new mxGeometry(0,0,210,50),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;overflow=fill;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(400,0);d.vertex=!0;c.insert(d);d=new mxCell('<table cellpadding="0" cellspacing="0" style="width:100%;height:100%;"><tr><td align="center" valign="middle" width="50%">15 Sep, 7:12 AM <font color="#dddddd">(2013)<br><br></font></td></tr></table>',new mxGeometry(0,
-0,160,50),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;overflow=fill;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(620,0);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Table")}),this.addEntry("bootstrap table",function(){var b=new mxCell("",new mxGeometry(0,0,800,430),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;strokeColor=#dddddd;fillColor=#ffffff;");
+0,160,50),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;align=left;overflow=fill;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(620,0);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Table")}),this.addEntry("bootstrap table",function(){var b=new mxCell("",new mxGeometry(0,0,800,430),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;strokeColor=#dddddd");
 b.vertex=!0;var c=new mxCell("",new mxGeometry(0,0,800,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;strokeColor=inherit;fillColor=#000000;fillOpacity=3;resizeWidth=1;");c.geometry.relative=!0;c.vertex=!0;b.insert(c);var d=new mxCell("Template Name",new mxGeometry(0,0,200,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeHeight=1;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);
 d=new mxCell("Message",new mxGeometry(0,0,200,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(200,0);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,130),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=
 !0;c.geometry.offset=new mxPoint(0,40);c.vertex=!0;b.insert(c);d=new mxCell("Uncompleted Profile",new mxGeometry(0,0,200,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;align=left;spacingLeft=10;whiteSpace=wrap;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("Hello! At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium deleniti atque corrupti quos doloreset quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id estlaborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Name libero tempore, cum soluta nobis est eligendioptio cumque nihil impedit quo.",
-new mxGeometry(0,0,400,130),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;align=left;valign=top;spacingLeft=10;verticalAlign=top;spacingTop=6;whiteSpace=wrap;resizeWidth=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(200,0);d.vertex=!0;c.insert(d);d=new mxCell("Edit",new mxGeometry(1,0,50,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=
-new mxPoint(-140,15);d.vertex=!0;c.insert(d);d=new mxCell("Delete",new mxGeometry(1,0,60,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-80,15);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,100),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;
-c.geometry.offset=new mxPoint(0,170);c.vertex=!0;b.insert(c);d=new mxCell("Spam Suspect",new mxGeometry(0,0,200,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;align=left;spacingLeft=10;whiteSpace=wrap;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("Hello, deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa quiofficia deserunt mollitia animi, id est fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam nobis est eligendi optio cumquenihil impedit quo minus id quod maxime placeat.",
-new mxGeometry(0,0,400,100),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;align=left;valign=top;spacingLeft=10;verticalAlign=top;spacingTop=6;whiteSpace=wrap;resizeWidth=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(200,0);d.vertex=!0;c.insert(d);d=new mxCell("Edit",new mxGeometry(1,0,50,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=
-new mxPoint(-140,15);d.vertex=!0;c.insert(d);d=new mxCell("Delete",new mxGeometry(1,0,60,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-80,15);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,160),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;
-c.geometry.offset=new mxPoint(0,270);c.vertex=!0;b.insert(c);d=new mxCell("Profile Blocked",new mxGeometry(0,0,200,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;align=left;spacingLeft=10;whiteSpace=wrap;");d.vertex=!0;c.insert(d);d=new mxCell("Hello! Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsaquae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sitaspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est,qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et doloremagnam aliquam quaerat voluptarem.",
-new mxGeometry(0,0,400,160),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;align=left;valign=top;spacingLeft=10;verticalAlign=top;spacingTop=6;whiteSpace=wrap;resizeWidth=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(200,0);d.vertex=!0;c.insert(d);d=new mxCell("Edit",new mxGeometry(1,0,50,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=
-new mxPoint(-140,15);d.vertex=!0;c.insert(d);d=new mxCell("Delete",new mxGeometry(1,0,60,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-80,15);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Table")}),this.addEntry("bootstrap table",function(){var b=new mxCell("",new mxGeometry(0,0,800,80),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;strokeColor=#dddddd;fillColor=#fdfdfd;");
-b.vertex=!0;var c=new mxCell("Group Name",new mxGeometry(20,20,500,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;align=left;spacingLeft=10;fontSize=18;fontColor=#999999;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Create Templates Group",new mxGeometry(540,20,240,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#3D8BCD;fontSize=18;fontColor=#ffffff;whiteSpace=wrap;");c.vertex=!0;b.insert(c);
-return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Table")}),this.addDataEntry("bootstrap edit template",800,720,"Edit Template","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"),
+new mxGeometry(0,0,400,130),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;align=left;valign=top;spacingLeft=10;verticalAlign=top;spacingTop=6;whiteSpace=wrap;resizeWidth=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(200,0);d.vertex=!0;c.insert(d);d=new mxCell("Edit",new mxGeometry(1,0,50,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-140,
+15);d.vertex=!0;c.insert(d);d=new mxCell("Delete",new mxGeometry(1,0,60,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-80,15);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,100),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,170);
+c.vertex=!0;b.insert(c);d=new mxCell("Spam Suspect",new mxGeometry(0,0,200,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;align=left;spacingLeft=10;whiteSpace=wrap;");d.geometry.relative=!0;d.vertex=!0;c.insert(d);d=new mxCell("Hello, deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa quiofficia deserunt mollitia animi, id est fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam nobis est eligendi optio cumquenihil impedit quo minus id quod maxime placeat.",
+new mxGeometry(0,0,400,100),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;align=left;valign=top;spacingLeft=10;verticalAlign=top;spacingTop=6;whiteSpace=wrap;resizeWidth=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(200,0);d.vertex=!0;c.insert(d);d=new mxCell("Edit",new mxGeometry(1,0,50,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-140,
+15);d.vertex=!0;c.insert(d);d=new mxCell("Delete",new mxGeometry(1,0,60,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-80,15);d.vertex=!0;c.insert(d);c=new mxCell("",new mxGeometry(0,0,800,160),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;resizeWidth=1;");c.geometry.relative=!0;c.geometry.offset=new mxPoint(0,270);
+c.vertex=!0;b.insert(c);d=new mxCell("Profile Blocked",new mxGeometry(0,0,200,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;align=left;spacingLeft=10;whiteSpace=wrap;");d.vertex=!0;c.insert(d);d=new mxCell("Hello! Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsaquae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sitaspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est,qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et doloremagnam aliquam quaerat voluptarem.",
+new mxGeometry(0,0,400,160),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rect;strokeColor=none;fillColor=none;align=left;valign=top;spacingLeft=10;verticalAlign=top;spacingTop=6;whiteSpace=wrap;resizeWidth=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(200,0);d.vertex=!0;c.insert(d);d=new mxCell("Edit",new mxGeometry(1,0,50,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-140,
+15);d.vertex=!0;c.insert(d);d=new mxCell("Delete",new mxGeometry(1,0,60,30),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(-80,15);d.vertex=!0;c.insert(d);return a.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Table")}),this.addEntry("bootstrap table",function(){var b=new mxCell("",new mxGeometry(0,0,800,80),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.horLines;strokeColor=#dddddd;fillColor=#fdfdfd;");
+b.vertex=!0;var c=new mxCell("Group Name",new mxGeometry(20,20,500,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=#dddddd;align=left;spacingLeft=10;fontSize=18;fontColor=#999999;whiteSpace=wrap;");c.vertex=!0;b.insert(c);c=new mxCell("Create Templates Group",new mxGeometry(540,20,240,40),"html=1;shadow=0;dashed=0;shape=mxgraph.bootstrap.rrect;rSize=5;strokeColor=none;fillColor=#3D8BCD;fontSize=18;fontColor=#ffffff;whiteSpace=wrap;");c.vertex=!0;b.insert(c);return a.createVertexTemplateFromCells([b],
+b.geometry.width,b.geometry.height,"Table")}),this.addDataEntry("bootstrap edit template",800,720,"Edit Template","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"),
 this.addDataEntry("bootstrap business contact",800,270,"Business Contacts","7VnRbtowFP2aSNtDke0kBB4HlD6s1Sox7d0Qh1g4GDlugX39rpNAAw6MiSRlW4MQ8Y3t2Of4+lxfHHeYbB4UXcVPMmTCce8dd6ik1PldshkyIRyCeOi4I4cQBF+HjE88xdlTtKKKLfUlDUje4JWKF5ZbckOqt6IwxDqBYY2w4w7SmIZyDQUEhZCmMQuLAjxZmfrJZm7m0pnCDFINt51Yqke+ZKmppJVcsKEUUmVdu2F2wZOIC1GyR6H5gL0YHVOabU7OMDMV03tgMmFabaHKmoc6zmv0UI4Cihmfx0Uzv7DRNC/P903f8IKbArJq+FwLPlOMOBNhalBkgs00gFQzprOYzRZTubkY06VcQk8DKvh8CUXBIgBhIOiUiWeZcs2lMascnEG6ojO+nD9mtUbYjCWSSz0pxo8vJYZUE7MtFmbHz5uUiMKezdPOppigmr+yg9dVkVe88VlyGAhBu/EVXBVvvwsOO5BRlDJtcb8f9kXLwbOWwxNVi/wtBH37Wvc6UAqWF9RQE/7T1PDPLogKP8susK9jrtkEaDe9rKHr5ijuV7iii+qheOfSO46x3wDJ/lmSf3Bp5gD+9ME1waQ5skkrZHdPkp1V+9/8+rDBOearFLcm5u8wboP6wKL+OTYyWjfXOdWH9BZ6XSHhRohLTPezy5b2Qwn3r1kKJ8KrooF3SEWALlsKpIbgq2cR1GactUf+lO/VAO5RzIKR+0cR0zXg9ivAHbgAOfqEut3P8NsLwOtQF9wE9YN32QF/S8GRU2RBbN4f7lbHue14Sd/2kq5X4SVeDV6y2ytLTMpFU3TtAJ8BLkyV+HMv2eKAOr836PvBEVek4gBytA9er3jnCQzQIYP7Ta1EodvQPoexxeDgJTVnahN9sIRy8SFK59wNey2qEm4+pXJrshS0J0vYzrikTDoeoquVYJ2ZTG5Kicajce/eu2Elwt02pcjOj3yXUDaZT0V1/aF1Xap0P/4y9Ny/QJUqwu+qfEst+5ydB5kstquP89FZf9uHY61IkZ29aHp3tD3qfTSJeC1qkp0poIJtOkpOp9ubkqObPxjtY+hW5MhOIDR3Mio7iKVH/9LJiFQE2zWdjKD49s9ontEr/3H6Cw=="),
 this.addDataEntry("bootstrap experience",800,270,"Experience","7Vpdc6IwFP01PLYTCGh9Vbt9aWc7687sM5UomQbihFh1f/3e8GGFRBdbwH5Apw5ckpCcc8+98YqFJ9H2Tvir8IEHhFn41sITwbnMzqLthDBmOYgGFp5ajoPg33J+HLlrp3fRyhcklnU6OFmHF5+tSWbJDIncsdwQygimNbUtPE5CP+AbuEBwEfhJSIL8Au6sVPtou1RruX6CFSQSTq9DLu5pTBLVSAr+TCaccZEOjYP0gDsLytiBfRGoP7DnsyNCku3RFaamfHl3hEdEih002dBAhlmLG5ShgEJCl2HezcttfpJdL/ddX/GCkxwyM3xYg29GGJlLsC0oYUECJ5LDx3oV+JKkwPpynTQNshDqoXgsZvSvaoHPQjs9wO4zuozBxshCDcb8J8IeeUIl5cosMuzGycqf03h5n7aa2mpmCx7LWb4auy5vjpm3Xe63117W5YBH29VpLGyCMF/SF1J6nInb/ImPnMaKp2J+OZX506+G5QH4YpEQqbnGftq1vMXVvGWPbtP+kLlD2QViHpMK+4UJ6DtwiFF66A5RJt4DyyakkszArKaxgSe/U7N5BxeVyBgi3RNMinYaULTXekCspdU9Bce02gDKFZe3ET5LcO9BeWCImzGFRTroNl5CuiCibdi9N8FeUUQa97Lx7IE5NHYjkZEukYFrkIjbgESGGnn8uQuRFNjPASLwjxrhDZjzbsYjb1ihyjGkrEoM3DPeEn9DVCZwH9AOGMQtxbgbjcAJj1Z+vOvT0CmN2W6HeWj0SfJQS9BXc9Owu9xkIw363yRhPpgeuOSi9c3718pM9qDD1GTbfW5qITcZNuBt5SZbr0j84eIZXFd9pxY86nPUKbXto1cXOcrWyx8fM0k1n5Act8OEpNcNfs4lf+q/I52pDWzQhimONZKJahQSCiKkoH68VNZxQBUFWb0t4Ws1zSrOKD2OhawVERQmSw5Mb0fXPS2JErrGep2p7Go1Ua67wmVur3B5hEbqdbZepnBQscXoVXfMLUaXlJ1enPh8sht8c9np9YnXLaD6NaXfAJaS3CV3gHqZYrIW6dSBKlDEhckqSKn8dPUrR8HT+fS8CbptMTp6NxekqxijTnRkNEUwQ/pPPjnnJG0NwIOrezZDzc1UPGgEHb14MCVzEvUb7bNjUJcpv/DhD5Dya0H5v+3TV0/vhpcmYFfdeuXgk0vM8y4pMb0C8bElhr+5xPTiQ18Gf3cZ3LQXaagMDpev7/xlhB++EvgP"),
 this.addDataEntry("bootstrap skills",800,480,"Skills","7Zpbc6IwFMc/DY/tEAJeHtdbH7ad7Yw70+e0HCRjJE6I1e6n3wSi1Sa1WoV1R+jYIYfcOP+cH+Soh/uz1Z0g8/SBx8A8PPRwX3Auy7PZqg+MeYFPYw8PvCDw1ccLRp9cRcVVf04EZPKQBkHZ4JWwBZSW0pDLN2YMqZypaQ2Qh3t5SmK+VAVfFWKSpxCbgroy1/Vnq4m+l9tndQe5VKe3KRf3NINcV5KCT6HPGRdF1zguDnUloYxt2ZNY/ym7mR0ICatP77Awmdu7Az4DKd5UlSWNZVrW6PilF/wU6CQ1zSJjI3lZnmyavvtLnRiXud2HLfeNgcGLVLaEAotzdSK5+reYx0RC4VgiF/m5nSyEHhT3xJj+0TXwUd4uDmUnjE4yZWOQ6M4YeQb2yHMqKddmUfqul8/JC80m90WtAdIzS3gmx+Zu0KG6BW7d3sy6vY3KJls6otCWcW0TwIikr7AznEtbM+Ijp5nWaT0/I6UZ/aa92wFPkhyktTQ20z5otYTWankgYqpHKaoRvVp+/ax6bUTfisRlSiWMlfK6i6Xq90SVdxvs09wVu9g/i+g3yOBxIzuKKtA9qhyyB8V/tzj2xP8ptHWHEfLxUUF8CotblpeH2UQ9eUAoWP2ToPrS4R+AW1C07A+13KD9dhjuly3cDYOub6nWCh1hGJ7hEdq2ZOPTqtRa+/tFuQXE3njJeAa2clGn143aH6QKHA9AXXYpXpF+bX9XwA00txTEDgGDMwjYuV66teujW9fy8u+UZtNLQ9toMOoMwwtGG2rVyDbk26rp3YDe6oliP3ChnBuOfvRD/B9wrm2r2a2IcwhdLeiCsD7QITsl8cTFxYHu4t/hNs/7WkBnJ0Kat7iT6baRpoa3OGQnJ66FbhjVSDc7FzBmAPMGb0fiDTt2ONXhzc4tNHg7GW8Y1Yg3O81wNXjr1Ig3OxkwJLKB27Fwc2xrqoObnVpo4HY63Dr1wS2w0wzXArcwqg9ugZ0AeCKs2ZkeS7fQsa2pjG7rUGjodk66hVFldFPF95+/lF+2bv865i8="),
@@ -5010,56 +5003,54 @@ null,null,this.getTagsForStencil("mxgraph.flowchart","data store","dfd data flow
 100,50,"","Entity",null,null,this.getTagsForStencil("mxgraph.flowchart","entity","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=cloud;whiteSpace=wrap;html=1;",120,120,"","Object",null,null,this.getTagsForStencil("mxgraph.flowchart","object","dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=ellipse;html=1;dashed=0;whitespace=wrap;perimeter=ellipsePerimeter;",100,50,"","Oval Process",null,null,this.getTagsForStencil("mxgraph.flowchart","oval process",
 "dfd data flow diagram ").join(" ")),this.createVertexTemplateEntry("shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;",60,80,"","Data Store",null,null,this.getTagsForStencil("mxgraph.flowchart","data store","dfd data flow diagram ").join(" ")),this.addEntry("dfd data flow diagram external entity",function(){var a=new mxCell("",new mxGeometry(0,0,100,100),"html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.externalEntity");a.vertex=!0;var b=new mxCell("Id",new mxGeometry(0,0,
 20,20),"autosize=1;part=1;resizable=0;strokeColor=inherit;fillColor=inherit;gradientColor=inherit;");b.geometry.relative=!0;b.geometry.offset=new mxPoint(15,15);b.vertex=!0;a.insert(b);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"External Entity")}),this.createVertexTemplateEntry("html=1;dashed=0;whitespace=wrap;shape=mxgraph.dfd.loop",80,30,"","Loop",null,null,this.getTagsForStencil("mxgraph.flowchart","loop","dfd data flow diagram ").join(" ")),this.createEdgeTemplateEntry("endArrow=classic;html=1;",
-50,50,"","Directional Connector",null,"dfd data flow diagram directional directed")])}})();(function(){Sidebar.prototype.addEipMessageConstructionPalette=function(a){var b=this,e=[this.createEdgeTemplateEntry("edgeStyle=none;html=1;strokeColor=#808080;endArrow=block;endSize=10;dashed=0;verticalAlign=bottom;strokeWidth=2;",160,0,"","Pipe",null,this.getTagsForStencil("mxgraph.eip","","eip enterprise integration pattern message construction pipe").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#c0f5a9;strokeColor=#000000;verticalLabelPosition=bottom;verticalAlign=top;",
-150,90,"","Filter",null,null,this.getTagsForStencil("mxgraph.eip","","eip enterprise integration pattern message construction filter").join(" ")),this.addEntry("eip enterprise integration pattern message construction command message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var d=new mxCell("C",new mxGeometry(16,18,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#FF8080;strokeColor=#000000;fontStyle=1;");
+50,50,"","Directional Connector",null,"dfd data flow diagram directional directed")])}})();(function(){Sidebar.prototype.addEipMessageConstructionPalette=function(a){var b=this,e=[this.createEdgeTemplateEntry("edgeStyle=none;html=1;strokeColor=#808080;endArrow=block;endSize=10;dashed=0;verticalAlign=bottom;strokeWidth=2;",160,0,"","Pipe",null,this.getTagsForStencil("mxgraph.eip","","eip enterprise integration pattern message construction pipe").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;",
+150,90,"","Filter",null,null,this.getTagsForStencil("mxgraph.eip","","eip enterprise integration pattern message construction filter").join(" ")),this.addEntry("eip enterprise integration pattern message construction command message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var d=new mxCell("C",new mxGeometry(16,18,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#FF8080;fontStyle=1;");
 d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;");f.geometry.relative=!0;f.edge=!0;a.insertEdge(f,!1);d.insertEdge(f,!0);return b.createVertexTemplateFromCells([f,a,d],28,30,"Command Message")}),this.addDataEntry("eip enterprise integration pattern message construction correlation identifier",78,30,"Correlation Identifier","5ZZLT8JAEIB/Ta+mDwv1KAicTEw8qMeVDu2GpUO2ixZ/vbPdAVorilExkTZN5rEznf1mtqkXDRfVRItlfo0pKC8aedFQIxonLaohKOWFvky96MoLQ58eLxzv8Qa1118KDYU5JCB0AU9CrcBZnKE0a8UGSDO4ZRW1yTHDQqjRzjrQuCpSsBl90qCS5r4hP1j5LLZakV5qjc9kKLCwkako821gbha0/6uAxNJonMMQFeq6iCjx7b313MnU5OQJyeIKtlW2GJS40lM29ZzJCJ0BY4m7pOpAxjQBXIDRa1qiQQkjn9rZRenUbLtuB5kE5vw+8+gkmCdd5v2/Y35+APMdqUeF03mbDnnHUrVZNYl06I3HF4RwD6ifRMChNygpY+hXvGEe8HXrBGziXaM4pPl5eJMl6H+UxfW2k6XuxXYnB7Un/rw9XeStQRZKZgXJU+IK1ILBDAtzK19sdGL7k4ullem9clnaczCjdu6f9o2HDw3XB9pA9dVOPnPNdgXvKweZ5aZt+8549zr8Ln8LoIap6dLjaX/nHPj1tcnH5QSsN9bN6uubqDcBvdbYBnwMj9CI/n8eZA6I/aPhTDo4B6c8171jzTWpu39Q9z1v/qK+Ag=="),
-this.addEntry("eip enterprise integration pattern message construction document message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var d=new mxCell("D",new mxGeometry(16,18,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#C7A0FF;strokeColor=#000000;fontStyle=1;");d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;");
-f.geometry.relative=!0;f.edge=!0;a.insertEdge(f,!1);d.insertEdge(f,!0);return b.createVertexTemplateFromCells([f,a,d],28,30,"Document Message")}),this.addEntry("eip enterprise integration pattern message construction event message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var d=new mxCell("E",new mxGeometry(16,18,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#83BEFF;strokeColor=#000000;fontStyle=1;");
-d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;");f.geometry.relative=!0;f.edge=!0;a.insertEdge(f,!1);d.insertEdge(f,!0);return b.createVertexTemplateFromCells([f,a,d],28,30,"Event Message")}),this.createVertexTemplateEntry("strokeWidth=3;outlineConnect=0;dashed=0;align=center;fontSize=8;shape=mxgraph.eip.messExp;html=1;verticalLabelPosition=bottom;strokeColor=#000000;verticalAlign=top",
+this.addEntry("eip enterprise integration pattern message construction document message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var d=new mxCell("D",new mxGeometry(16,18,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#C7A0FF;fontStyle=1;");d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;");
+f.geometry.relative=!0;f.edge=!0;a.insertEdge(f,!1);d.insertEdge(f,!0);return b.createVertexTemplateFromCells([f,a,d],28,30,"Document Message")}),this.addEntry("eip enterprise integration pattern message construction event message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var d=new mxCell("E",new mxGeometry(16,18,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#83BEFF;fontStyle=1;");
+d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;");f.geometry.relative=!0;f.edge=!0;a.insertEdge(f,!1);d.insertEdge(f,!0);return b.createVertexTemplateFromCells([f,a,d],28,30,"Event Message")}),this.createVertexTemplateEntry("strokeWidth=3;outlineConnect=0;dashed=0;align=center;fontSize=8;shape=mxgraph.eip.messExp;html=1;verticalLabelPosition=bottom;verticalAlign=top",
 48,48,"","Message Expiration",null,null,this.getTagsForStencil("mxgraph.eip","","eip enterprise integration pattern message construction message expiration").join(" ")),this.addDataEntry("eip enterprise integration pattern message construction message sequence",60,24,"Message Sequence","5VVdb4MgFP01vKtY4+vKZp+WLNnDnpneKSmKQWp1v34gtKWhXfawNPswMbn33A+45xBAmLTTRtK+eRQVcIQfECZSCGWtdiLAOUoiViF8j5Ik0j9KiivReIlGPZXQqa8UJLZgpHwHFrHAoGbugHInRzDpMcJr6Ko7KcVeu69clFsNNarlLjooKbZABBdyqcUxIUUUHSMvrFKNjiS20zN7N2tg7dlVoarhbJBB7GTpoJWFFJU1uNnScNyl0M26AdGCkrNOkcCpYuN5dzpYtz7muVI9Ip29hF6wTg1e5ycD6ITJ9ct9krVhGxw8bycnaBHisij494iShaKsfogoafKtoqSBKHGgSkhoRYdm0cnwTTmrO22XmhjQYqzfRKcc37nRo6G9sSWUykQZ555seVQUGbkkaLR8h35uO/FRwBGkgglduyCuiDO7qDt7ezeUBzXA6kadY5fU8yT4lOFVwHB47v8Sw67gcLJuT3gWEI7/A+FpfiPCtXt6ye2V4z/0Hw=="),
-this.createVertexTemplateEntry("strokeWidth=3;outlineConnect=0;dashed=0;align=center;fontSize=8;shape=mxgraph.eip.retAddr;html=1;verticalLabelPosition=bottom;fillColor=#FFE040;strokeColor=#000000;verticalAlign=top;",78,48,"","Return Address",null,null,this.getTagsForStencil("mxgraph.eip","retAddr","eip enterprise integration pattern message construction return address").join(" "))];this.addPalette("eipMessage Construction","EIP / Message Construction",a||!1,mxUtils.bind(this,function(a){for(var c=
-0;c<e.length;c++)a.appendChild(e[c](a))}))};Sidebar.prototype.addEipMessageRoutingPalette=function(a){var b=[this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.aggregator;",150,90,"","Aggregator",null,null,this.getTagsForStencil("mxgraph.eip","aggregator","eip enterprise integration pattern message routing ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.composed_message_processor;",
-150,90,"","Composed Message Processor",null,null,this.getTagsForStencil("mxgraph.eip","composed_message_processor","eip enterprise integration pattern message routing ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.content_based_router;",150,90,"","Content Based Router",null,null,this.getTagsForStencil("mxgraph.eip","content_based_router",
-"eip enterprise integration pattern message routing ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.dynamic_router;",150,90,"","Dynamic Router",null,null,this.getTagsForStencil("mxgraph.eip","dynamic_router","eip enterprise integration pattern message routing ").join(" ")),this.addDataEntry("eip enterprise integration pattern message routing message broker",
-120,90,"Message Broker","5ZjJboMwEIafxneDWZJjQ9qcesqhZxcGjGpwZJytT1+DnQUpUZEqmYQiIWb+YcbMZySwEUmqw0rSDXsXGXBEXhFJpBDKWNUhAc6Rj8sMkSXyfaxP5L/diXpdFG+ohFoNSfBNwo7yLRjFCI06cis0Soov+CgzxbTgI7LIaMOgLYC1Q3lZ1NpO9YggtZCLWq3L7zZ7pt2G0U1rS0hVGy05TwQXsitO8jz/TNsyZpSrCO4OHbFPCFLB4W6XnWRbXIGoQMmjvsUmBLHJ2Nsm2sYjIzEoC3YqMjMabYxfnAtdCGrDQrwNlEwb6LFPygHQYNpAbcLctumebzhtvhZoGDgDGk0b6O0X1iHf+F/wPX2yLN/Yd8Z3NjLfFOchnTvmSyJnfOe/84WsgLV1a1HrywLq7EVKsb8oPeRMVXq8pXfGdj05pn5btAerEVuZQm/SFZUFqN6v4QCkEjhV5a5f/S+IPPwkjMiIjLwnYRSMyGjA8uYhGIUjMhqwYnkIRtGIjAYsQh6CUeyMkXYvuxRdrLeJ8QM="),
-this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.message_filter;",150,90,"","Message Filter",null,null,this.getTagsForStencil("mxgraph.eip","message_filter","eip enterprise integration pattern message routing ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.process_manager;",
-150,90,"","Process Manager",null,null,this.getTagsForStencil("mxgraph.eip","process_manager","eip enterprise integration pattern message routing ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.recipient_list;",150,90,"","Recipient List",null,null,this.getTagsForStencil("mxgraph.eip","recipient_list","eip enterprise integration pattern message routing ").join(" ")),
-this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.resequencer;",150,90,"","Resequencer",null,null,this.getTagsForStencil("mxgraph.eip","resequencer","eip enterprise integration pattern message routing ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.routing_slip;",
-150,90,"","Routing Slip",null,null,this.getTagsForStencil("mxgraph.eip","routing_slip","eip enterprise integration pattern message routing ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.splitter;",150,90,"","Splitter",null,null,this.getTagsForStencil("mxgraph.eip","splitter","eip enterprise integration pattern message routing ").join(" "))];
-this.addPalette("eipMessage Routing","EIP / Message Routing",a||!1,mxUtils.bind(this,function(a){for(var c=0;c<b.length;c++)a.appendChild(b[c](a))}))};Sidebar.prototype.addEipMessageTransformationPalette=function(a){this.addPaletteFunctions("eipMessage Transformation","EIP / Message Transformation",!1,[this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.claim_check;",
-150,90,"","Claim Check",null,null,this.getTagsForStencil("mxgraph.eip","claim_check","eip enterprise integration pattern message transformation ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.content_enricher;",150,90,"","Content Enricher",null,null,this.getTagsForStencil("mxgraph.eip","content_enricher","eip enterprise integration pattern message transformation ").join(" ")),
-this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.content_filter;",150,90,"","Content Filter",null,null,this.getTagsForStencil("mxgraph.eip","content_filter","eip enterprise integration pattern message transformation ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.envelope_wrapper;",
-150,90,"","Envelope Wrapper",null,null,this.getTagsForStencil("mxgraph.eip","envelope_wrapper","eip enterprise integration pattern message transformation ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.normalizer;",150,90,"","Normalizer",null,null,this.getTagsForStencil("mxgraph.eip","normalizer","eip enterprise integration pattern message transformation ").join(" "))])};
-Sidebar.prototype.addEipMessagingChannelsPalette=function(a){var b=[this.createEdgeTemplateEntry("edgeStyle=none;html=1;strokeColor=#808080;endArrow=block;endSize=10;dashed=0;verticalAlign=bottom;strokeWidth=2;",160,0,"","Point to Point Channel",null,this.getTagsForStencil("mxgraph.eip","","eip enterprise integration pattern messaging channel message point").join(" ")),this.addDataEntry("eip enterprise integration pattern messaging channel message publish subscribe",80,160,"Publish Subscribe Channel",
-"7ZbBbsIwDIafJvfQMMR1FMYJaRKHnbPWayvSGLmBwZ5+bhNKYaAxDTihqlL8O3aS72/VChWXmynpZT7DFIxQE6FiQnR+VG5iMEZEskiFGosoknyL6OVMttdk5VITWHdJQeQL1tqswCteqNzWBKFyhAt4K1KXsxAJNUp1lUPdQHKgTZFZHie8IhALH2jdvPiqq4cc5q7kU417PKxyvaxlgoQ3NwpLAznYnN1+I4W9TwFLcLTlKaGg708nt2FyOK3UlReytmLPgAcBw2kk6nckhCubtgTAps9E+MmhRQteCQR68phXl0dDNkaD1PRVQ1lfbabL3O8B0gwOUDlNGbgDLy+gR2C0K9aHrU4xC6WvWHDHH9R3FRWuKIEw6Qh0u+pF7Pt/Zs9A5iGJ5HLM0Goz2atdd94NJou72uPJ3Mue3VswOPLHPyTX8Ofp4c/1Xp/b2zV42PV/u4a3sovD/YfeT+/+B3wD"),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;strokeColor=#000000;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.channel_adapter;fillColor=#9ddbef;",
-45,90,"","Channel Adapter",null,null,this.getTagsForStencil("mxgraph.eip","channel_adapter","eip enterprise integration pattern messaging channel message ").join(" ")),this.createVertexTemplateEntry("strokeWidth=1;outlineConnect=0;strokeColor=#000000;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.messageChannel;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;",100,20,"","Message Channel",null,null,this.getTagsForStencil("mxgraph.eip","messageChannel","eip enterprise integration pattern messaging channel message ").join(" ")),
-this.createVertexTemplateEntry("strokeWidth=1;outlineConnect=0;strokeColor=#000000;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.dataChannel;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;",100,20,"","Datatype Channel",null,null,this.getTagsForStencil("mxgraph.eip","dataChannel","eip enterprise integration pattern messaging channel message ").join(" ")),this.createVertexTemplateEntry("strokeWidth=1;outlineConnect=0;strokeColor=#000000;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.deadLetterChannel;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;",
-100,20,"","Dead Letter Channel",null,null,this.getTagsForStencil("mxgraph.eip","deadLetterChannel","eip enterprise integration pattern messaging channel message ").join(" ")),this.createVertexTemplateEntry("strokeWidth=1;outlineConnect=0;strokeColor=#000000;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.invalidMessageChannel;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;",100,20,"","Invalid Message Channel",null,null,this.getTagsForStencil("mxgraph.eip","invalidMessageChannel",
-"eip enterprise integration pattern messaging channel message ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;strokeColor=#000000;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.messaging_bridge;verticalLabelPosition=bottom;verticalAlign=top;fillColor=#c0f5a9;",150,90,"","Messaging Bridge",null,null,this.getTagsForStencil("mxgraph.eip","messaging_bridge","eip enterprise integration pattern messaging channel message ").join(" ")),this.addDataEntry("eip enterprise integration pattern messaging channel message message bus",
-120,140,"Message Bus","7ZbPb8IgFMf/Gq6Gwma8rtV5WrLEw84ob4VISwOodX/9oLBq/ZF5MJ5s0+S9L7xX+H5KUkSLqp0b1ogPzUEhOkO0MFq7GFVtAUohgiVHdIoIwf5B5P3KaNaN4oYZqN0tBSQWbJnaQFSiYN1eJcE6o9fwJbkTXiCI5lEptNKmm0Jxd/kRzqyA0DokTMmy9vHKrwX8zFy4ym9wmvnwW9duIX/CKyaho2BNiKu2DFaMQDajCqxlJRSC1XUwJk9LBeOgvbrdTkp7nYOuwJm9n7KPo+PoBt6l3YSC5BAWIEuRuvxpzMa87DsdvPRBsvOytfR/a4GXsEgpqKXezQ5Cfu670Zua9/ZCzd+M0TufLpVerbsSZtxFMXmdpcLjdMDsCNEZ5QkOdw8iLH6Awb+nBDf4rm4gY0AxJ7fDVpd8T6WfWvqOBLdDoglw9nJCzuqNWUEqOoHXr+Imni9Png/geXry7sfv9cnvgefx/vzGT34P4JfhewH06eE/Jk4//s35BQ==")];
-this.addPalette("eipMessaging Channels","EIP / Messaging Channels",a||!1,mxUtils.bind(this,function(a){for(var c=0;c<b.length;c++)a.appendChild(b[c](a))}))};Sidebar.prototype.addEipMessagingEndpointsPalette=function(a){this.addPaletteFunctions("eipMessaging Endpoints","EIP / Messaging Endpoints",!1,[this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;strokeColor=#000000;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.competing_consumers;",
-150,90,"","Competing Consumers",null,null,this.getTagsForStencil("mxgraph.eip","competing_consumers","eip enterprise integration pattern messaging endpoint ").join(" ")),this.createVertexTemplateEntry("dashed=0;outlineConnect=0;strokeWidth=2;strokeColor=#000000;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.durable_subscriber;fillColor=#a0a0a0;",30,35,"","Durable Subscriber",null,null,this.getTagsForStencil("mxgraph.eip","durable_subscriber","eip enterprise integration pattern messaging endpoint ").join(" ")),
-this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;strokeColor=#000000;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.event_driven_consumer;",150,90,"","Event Driven Consumer",null,null,this.getTagsForStencil("mxgraph.eip","event_driven_consumer","eip enterprise integration pattern messaging endpoint ").join(" ")),this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;strokeColor=#000000;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.message_dispatcher;",
-150,90,"","Message Dispatcher",null,null,this.getTagsForStencil("mxgraph.eip","message_dispatcher","eip enterprise integration pattern messaging endpoint ").join(" ")),this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;strokeColor=#000000;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.messaging_gateway;",150,90,"","Messaging Gateway",null,null,this.getTagsForStencil("mxgraph.eip","messaging_gateway","eip enterprise integration pattern messaging endpoint ").join(" ")),
-this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;strokeColor=#000000;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.polling_consumer;",150,90,"","Polling Consumer",null,null,this.getTagsForStencil("mxgraph.eip","polling_consumer","eip enterprise integration pattern messaging endpoint ").join(" ")),this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;strokeColor=#000000;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.selective_consumer;",
-150,90,"","Selective Consumer",null,null,this.getTagsForStencil("mxgraph.eip","selective_consumer","eip enterprise integration pattern messaging endpoint ").join(" ")),this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;strokeColor=#000000;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.service_activator;",150,90,"","Service Activator",null,null,this.getTagsForStencil("mxgraph.eip","service_activator","eip enterprise integration pattern messaging endpoint ").join(" ")),
-this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;strokeColor=#000000;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.transactional_client;",150,90,"","Transactional Client",null,null,this.getTagsForStencil("mxgraph.eip","transactional_client","eip enterprise integration pattern messaging endpoint ").join(" "))])};Sidebar.prototype.addEipMessagingSystemsPalette=function(a){var b=this,e=[this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;shape=mxgraph.eip.content_based_router;verticalLabelPosition=bottom;verticalAlign=top;fillColor=#c0f5a9;strokeColor=#000000;",
-150,90,"","Message Router",null,null,this.getTagsForStencil("mxgraph.eip","content_based_router","eip enterprise integration pattern messaging system ").join(" ")),this.createVertexTemplateEntry("strokeWidth=1;outlineConnect=0;dashed=0;align=center;fontSize=8;shape=mxgraph.eip.messageChannel;html=1;verticalLabelPosition=bottom;strokeColor=#000000;verticalAlign=top;",100,20,"","Message Channel",null,null,this.getTagsForStencil("mxgraph.eip","messageChannel","eip enterprise integration pattern messaging system ").join(" ")),
-this.addEntry("eip enterprise integration pattern messaging system message endpoint",function(){var a=new mxCell("",new mxGeometry(0,0,150,90),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;verticalLabelPosition=bottom;verticalAlign=top;fillColor=#c0f5a9;strokeColor=#000000;");a.vertex=!0;var d=new mxCell("",new mxGeometry(85,25,40,40),"strokeWidth=1;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#ffffff;strokeColor=#000000;");d.vertex=!0;a.insert(d);return b.createVertexTemplateFromCells([a],
-a.geometry.width,a.geometry.height,"Message Endpoint")}),this.addEntry("eip enterprise integration pattern messaging system message endpoint",function(){var a=new mxCell("",new mxGeometry(0,0,150,90),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;verticalLabelPosition=bottom;verticalAlign=top;fillColor=#c0f5a9;strokeColor=#000000;");a.vertex=!0;var d=new mxCell("",new mxGeometry(25,25,40,40),"strokeWidth=1;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#ffffff;strokeColor=#000000;");
-d.vertex=!0;a.insert(d);return b.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Message Endpoint")}),this.addDataEntry("eip enterprise integration pattern messaging system message endpoint",400,90,"Message Endpoint","zVXLbsIwEPwa300eFRwhbbm0UiUOPZtkSSycbOQsr3597cRAIkILKhUkiuSd9fgxs46ZH+XbqRZl9o4JKOa/MD/SiNS08m0ESjGPy4T5z8zzuPmY93omO6izvBQaCrqE4DWEtVAraJAGqGinHFCRxiV8yoQyA3jMnySiysAOwE0glEwL047NjKANsMCCZvLLsocmrDJR2raGmGxWKhWhQl0P7sd8EYqR7VbP0srw+jGZNWiSsVBvYg7qAytJEu2EcyTCvNVh7FZCWBrUbczkYHtWnBpyykwBcyC9M102brO2R9gIyDOQaeZoI4eJqonTA/UotWk4tfuV969VfnBb5Rf1czflvX7lHcELG8auG7Z8CXpsCW5gS/D4B+IvlX3Ql58o+m+VHj5+pV8kafCjpMO7lezT7/pCksLMhaDmuHk5ApPTeta4KpKD+lAkY61xY0++wnhZU4SmPVhgAXvMmTJwvHbYcTSjXDmnT1wZcvv2LqzZmN1Nx6UKVzqGzn/VLCYF6hTgBcdDgxIk193Rr/DGhMe7u851rvZv"),
+this.createVertexTemplateEntry("strokeWidth=3;outlineConnect=0;dashed=0;align=center;fontSize=8;shape=mxgraph.eip.retAddr;html=1;verticalLabelPosition=bottom;fillColor=#FFE040;verticalAlign=top;",78,48,"","Return Address",null,null,this.getTagsForStencil("mxgraph.eip","retAddr","eip enterprise integration pattern message construction return address").join(" "))];this.addPalette("eipMessage Construction","EIP / Message Construction",a||!1,mxUtils.bind(this,function(a){for(var c=0;c<e.length;c++)a.appendChild(e[c](a))}))};
+Sidebar.prototype.addEipMessageRoutingPalette=function(a){var b=[this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.aggregator;",150,90,"","Aggregator",null,null,this.getTagsForStencil("mxgraph.eip","aggregator","eip enterprise integration pattern message routing ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.composed_message_processor;",
+150,90,"","Composed Message Processor",null,null,this.getTagsForStencil("mxgraph.eip","composed_message_processor","eip enterprise integration pattern message routing ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.content_based_router;",150,90,"","Content Based Router",null,null,this.getTagsForStencil("mxgraph.eip","content_based_router","eip enterprise integration pattern message routing ").join(" ")),
+this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.dynamic_router;",150,90,"","Dynamic Router",null,null,this.getTagsForStencil("mxgraph.eip","dynamic_router","eip enterprise integration pattern message routing ").join(" ")),this.addDataEntry("eip enterprise integration pattern message routing message broker",120,90,"Message Broker","5ZjJboMwEIafxneDWZJjQ9qcesqhZxcGjGpwZJytT1+DnQUpUZEqmYQiIWb+YcbMZySwEUmqw0rSDXsXGXBEXhFJpBDKWNUhAc6Rj8sMkSXyfaxP5L/diXpdFG+ohFoNSfBNwo7yLRjFCI06cis0Soov+CgzxbTgI7LIaMOgLYC1Q3lZ1NpO9YggtZCLWq3L7zZ7pt2G0U1rS0hVGy05TwQXsitO8jz/TNsyZpSrCO4OHbFPCFLB4W6XnWRbXIGoQMmjvsUmBLHJ2Nsm2sYjIzEoC3YqMjMabYxfnAtdCGrDQrwNlEwb6LFPygHQYNpAbcLctumebzhtvhZoGDgDGk0b6O0X1iHf+F/wPX2yLN/Yd8Z3NjLfFOchnTvmSyJnfOe/84WsgLV1a1HrywLq7EVKsb8oPeRMVXq8pXfGdj05pn5btAerEVuZQm/SFZUFqN6v4QCkEjhV5a5f/S+IPPwkjMiIjLwnYRSMyGjA8uYhGIUjMhqwYnkIRtGIjAYsQh6CUeyMkXYvuxRdrLeJ8QM="),
+this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.message_filter;",150,90,"","Message Filter",null,null,this.getTagsForStencil("mxgraph.eip","message_filter","eip enterprise integration pattern message routing ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.process_manager;",
+150,90,"","Process Manager",null,null,this.getTagsForStencil("mxgraph.eip","process_manager","eip enterprise integration pattern message routing ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.recipient_list;",150,90,"","Recipient List",null,null,this.getTagsForStencil("mxgraph.eip","recipient_list","eip enterprise integration pattern message routing ").join(" ")),
+this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.resequencer;",150,90,"","Resequencer",null,null,this.getTagsForStencil("mxgraph.eip","resequencer","eip enterprise integration pattern message routing ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.routing_slip;",
+150,90,"","Routing Slip",null,null,this.getTagsForStencil("mxgraph.eip","routing_slip","eip enterprise integration pattern message routing ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.splitter;",150,90,"","Splitter",null,null,this.getTagsForStencil("mxgraph.eip","splitter","eip enterprise integration pattern message routing ").join(" "))];this.addPalette("eipMessage Routing",
+"EIP / Message Routing",a||!1,mxUtils.bind(this,function(a){for(var c=0;c<b.length;c++)a.appendChild(b[c](a))}))};Sidebar.prototype.addEipMessageTransformationPalette=function(a){this.addPaletteFunctions("eipMessage Transformation","EIP / Message Transformation",!1,[this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.claim_check;",150,90,"","Claim Check",null,null,this.getTagsForStencil("mxgraph.eip",
+"claim_check","eip enterprise integration pattern message transformation ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.content_enricher;",150,90,"","Content Enricher",null,null,this.getTagsForStencil("mxgraph.eip","content_enricher","eip enterprise integration pattern message transformation ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.content_filter;",
+150,90,"","Content Filter",null,null,this.getTagsForStencil("mxgraph.eip","content_filter","eip enterprise integration pattern message transformation ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.envelope_wrapper;",150,90,"","Envelope Wrapper",null,null,this.getTagsForStencil("mxgraph.eip","envelope_wrapper","eip enterprise integration pattern message transformation ").join(" ")),
+this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.normalizer;",150,90,"","Normalizer",null,null,this.getTagsForStencil("mxgraph.eip","normalizer","eip enterprise integration pattern message transformation ").join(" "))])};Sidebar.prototype.addEipMessagingChannelsPalette=function(a){var b=[this.createEdgeTemplateEntry("edgeStyle=none;html=1;strokeColor=#808080;endArrow=block;endSize=10;dashed=0;verticalAlign=bottom;strokeWidth=2;",
+160,0,"","Point to Point Channel",null,this.getTagsForStencil("mxgraph.eip","","eip enterprise integration pattern messaging channel message point").join(" ")),this.addDataEntry("eip enterprise integration pattern messaging channel message publish subscribe",80,160,"Publish Subscribe Channel","7ZbBbsIwDIafJvfQMMR1FMYJaRKHnbPWayvSGLmBwZ5+bhNKYaAxDTihqlL8O3aS72/VChWXmynpZT7DFIxQE6FiQnR+VG5iMEZEskiFGosoknyL6OVMttdk5VITWHdJQeQL1tqswCteqNzWBKFyhAt4K1KXsxAJNUp1lUPdQHKgTZFZHie8IhALH2jdvPiqq4cc5q7kU417PKxyvaxlgoQ3NwpLAznYnN1+I4W9TwFLcLTlKaGg708nt2FyOK3UlReytmLPgAcBw2kk6nckhCubtgTAps9E+MmhRQteCQR68phXl0dDNkaD1PRVQ1lfbabL3O8B0gwOUDlNGbgDLy+gR2C0K9aHrU4xC6WvWHDHH9R3FRWuKIEw6Qh0u+pF7Pt/Zs9A5iGJ5HLM0Goz2atdd94NJou72uPJ3Mue3VswOPLHPyTX8Ofp4c/1Xp/b2zV42PV/u4a3sovD/YfeT+/+B3wD"),
+this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.channel_adapter;fillColor=#9ddbef;",45,90,"","Channel Adapter",null,null,this.getTagsForStencil("mxgraph.eip","channel_adapter","eip enterprise integration pattern messaging channel message ").join(" ")),this.createVertexTemplateEntry("strokeWidth=1;outlineConnect=0;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.messageChannel;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;",
+100,20,"","Message Channel",null,null,this.getTagsForStencil("mxgraph.eip","messageChannel","eip enterprise integration pattern messaging channel message ").join(" ")),this.createVertexTemplateEntry("strokeWidth=1;outlineConnect=0;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.dataChannel;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;",100,20,"","Datatype Channel",null,null,this.getTagsForStencil("mxgraph.eip","dataChannel","eip enterprise integration pattern messaging channel message ").join(" ")),
+this.createVertexTemplateEntry("strokeWidth=1;outlineConnect=0;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.deadLetterChannel;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;",100,20,"","Dead Letter Channel",null,null,this.getTagsForStencil("mxgraph.eip","deadLetterChannel","eip enterprise integration pattern messaging channel message ").join(" ")),this.createVertexTemplateEntry("strokeWidth=1;outlineConnect=0;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.invalidMessageChannel;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;",
+100,20,"","Invalid Message Channel",null,null,this.getTagsForStencil("mxgraph.eip","invalidMessageChannel","eip enterprise integration pattern messaging channel message ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.messaging_bridge;verticalLabelPosition=bottom;verticalAlign=top;fillColor=#c0f5a9;",150,90,"","Messaging Bridge",null,null,this.getTagsForStencil("mxgraph.eip","messaging_bridge","eip enterprise integration pattern messaging channel message ").join(" ")),
+this.addDataEntry("eip enterprise integration pattern messaging channel message message bus",120,140,"Message Bus","7ZbPb8IgFMf/Gq6Gwma8rtV5WrLEw84ob4VISwOodX/9oLBq/ZF5MJ5s0+S9L7xX+H5KUkSLqp0b1ogPzUEhOkO0MFq7GFVtAUohgiVHdIoIwf5B5P3KaNaN4oYZqN0tBSQWbJnaQFSiYN1eJcE6o9fwJbkTXiCI5lEptNKmm0Jxd/kRzqyA0DokTMmy9vHKrwX8zFy4ym9wmvnwW9duIX/CKyaho2BNiKu2DFaMQDajCqxlJRSC1XUwJk9LBeOgvbrdTkp7nYOuwJm9n7KPo+PoBt6l3YSC5BAWIEuRuvxpzMa87DsdvPRBsvOytfR/a4GXsEgpqKXezQ5Cfu670Zua9/ZCzd+M0TufLpVerbsSZtxFMXmdpcLjdMDsCNEZ5QkOdw8iLH6Awb+nBDf4rm4gY0AxJ7fDVpd8T6WfWvqOBLdDoglw9nJCzuqNWUEqOoHXr+Imni9Png/geXry7sfv9cnvgefx/vzGT34P4JfhewH06eE/Jk4//s35BQ==")];
+this.addPalette("eipMessaging Channels","EIP / Messaging Channels",a||!1,mxUtils.bind(this,function(a){for(var c=0;c<b.length;c++)a.appendChild(b[c](a))}))};Sidebar.prototype.addEipMessagingEndpointsPalette=function(a){this.addPaletteFunctions("eipMessaging Endpoints","EIP / Messaging Endpoints",!1,[this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.competing_consumers;",
+150,90,"","Competing Consumers",null,null,this.getTagsForStencil("mxgraph.eip","competing_consumers","eip enterprise integration pattern messaging endpoint ").join(" ")),this.createVertexTemplateEntry("dashed=0;outlineConnect=0;strokeWidth=2;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.durable_subscriber;fillColor=#a0a0a0;",30,35,"","Durable Subscriber",null,null,this.getTagsForStencil("mxgraph.eip","durable_subscriber","eip enterprise integration pattern messaging endpoint ").join(" ")),
+this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.event_driven_consumer;",150,90,"","Event Driven Consumer",null,null,this.getTagsForStencil("mxgraph.eip","event_driven_consumer","eip enterprise integration pattern messaging endpoint ").join(" ")),this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.message_dispatcher;",
+150,90,"","Message Dispatcher",null,null,this.getTagsForStencil("mxgraph.eip","message_dispatcher","eip enterprise integration pattern messaging endpoint ").join(" ")),this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.messaging_gateway;",150,90,"","Messaging Gateway",null,null,this.getTagsForStencil("mxgraph.eip","messaging_gateway","eip enterprise integration pattern messaging endpoint ").join(" ")),
+this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.polling_consumer;",150,90,"","Polling Consumer",null,null,this.getTagsForStencil("mxgraph.eip","polling_consumer","eip enterprise integration pattern messaging endpoint ").join(" ")),this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.selective_consumer;",
+150,90,"","Selective Consumer",null,null,this.getTagsForStencil("mxgraph.eip","selective_consumer","eip enterprise integration pattern messaging endpoint ").join(" ")),this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.service_activator;",150,90,"","Service Activator",null,null,this.getTagsForStencil("mxgraph.eip","service_activator","eip enterprise integration pattern messaging endpoint ").join(" ")),
+this.createVertexTemplateEntry("fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.transactional_client;",150,90,"","Transactional Client",null,null,this.getTagsForStencil("mxgraph.eip","transactional_client","eip enterprise integration pattern messaging endpoint ").join(" "))])};Sidebar.prototype.addEipMessagingSystemsPalette=function(a){var b=this,e=[this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;shape=mxgraph.eip.content_based_router;verticalLabelPosition=bottom;verticalAlign=top;fillColor=#c0f5a9;",
+150,90,"","Message Router",null,null,this.getTagsForStencil("mxgraph.eip","content_based_router","eip enterprise integration pattern messaging system ").join(" ")),this.createVertexTemplateEntry("strokeWidth=1;outlineConnect=0;dashed=0;align=center;fontSize=8;shape=mxgraph.eip.messageChannel;html=1;verticalLabelPosition=bottom;verticalAlign=top;",100,20,"","Message Channel",null,null,this.getTagsForStencil("mxgraph.eip","messageChannel","eip enterprise integration pattern messaging system ").join(" ")),
+this.addEntry("eip enterprise integration pattern messaging system message endpoint",function(){var a=new mxCell("",new mxGeometry(0,0,150,90),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;verticalLabelPosition=bottom;verticalAlign=top;fillColor=#c0f5a9;");a.vertex=!0;var d=new mxCell("",new mxGeometry(85,25,40,40),"strokeWidth=1;dashed=0;align=center;fontSize=8;shape=rect;");d.vertex=!0;a.insert(d);return b.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Message Endpoint")}),
+this.addEntry("eip enterprise integration pattern messaging system message endpoint",function(){var a=new mxCell("",new mxGeometry(0,0,150,90),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;verticalLabelPosition=bottom;verticalAlign=top;fillColor=#c0f5a9;");a.vertex=!0;var d=new mxCell("",new mxGeometry(25,25,40,40),"strokeWidth=1;dashed=0;align=center;fontSize=8;shape=rect");d.vertex=!0;a.insert(d);return b.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,"Message Endpoint")}),
+this.addDataEntry("eip enterprise integration pattern messaging system message endpoint",400,90,"Message Endpoint","zVXLbsIwEPwa300eFRwhbbm0UiUOPZtkSSycbOQsr3597cRAIkILKhUkiuSd9fgxs46ZH+XbqRZl9o4JKOa/MD/SiNS08m0ESjGPy4T5z8zzuPmY93omO6izvBQaCrqE4DWEtVAraJAGqGinHFCRxiV8yoQyA3jMnySiysAOwE0glEwL047NjKANsMCCZvLLsocmrDJR2raGmGxWKhWhQl0P7sd8EYqR7VbP0srw+jGZNWiSsVBvYg7qAytJEu2EcyTCvNVh7FZCWBrUbczkYHtWnBpyykwBcyC9M102brO2R9gIyDOQaeZoI4eJqonTA/UotWk4tfuV969VfnBb5Rf1czflvX7lHcELG8auG7Z8CXpsCW5gS/D4B+IvlX3Ql58o+m+VHj5+pV8kafCjpMO7lezT7/pCksLMhaDmuHk5ApPTeta4KpKD+lAkY61xY0++wnhZU4SmPVhgAXvMmTJwvHbYcTSjXDmnT1wZcvv2LqzZmN1Nx6UKVzqGzn/VLCYF6hTgBcdDgxIk193Rr/DGhMe7u851rvZv"),
 this.addDataEntry("eip enterprise integration pattern messaging system message",28,48,"Message","5ZVRb4IwEMc/Da8LghJ9nCg+7cmHbY+NHLRZ6ZGjKu7Tr6VVR5RsiZlbMgjJ3f965d8fJQ3itGpXxGr+hDnIIF4GcUqI2kVVm4KUQRSKPIgXQRSF5gmibKA66qphzQiU/k5D5Bp2TG7BKU5o9EF6AfIS1j5F0hxLVEwuz+qccKtysDOGJoNW6JdP8auNHyY2U/kjEe6NoFDZzpw1/NTIdWXWvxiZsNGEb5CiROpMxNPQ3qfKs8g1N5XIKM6wddlj0OCWNl6aOEkzKsFjGV+S6ho9phVgBZoOZgiBZFrs+rOzxqXladwZsgk85+vM43/BPPlTzMdfM79cZY8Uk6JUJt4Y72AIzQtUei3ebffUQuKstrF5r6gbC7oQUg7jPFb8V/H+gDS0g//yAK2992xH+HVxECXXfe0WfpO78SPY6GvwsixJr+3SsLuO83k7oxuJHhv8Jj74dOrSO/BOfpl3Ucxm4eVmvS/vOPkp3iY9n7FdrXcEfwA="),
-this.addEntry("eip enterprise integration pattern messaging system message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var d=new mxCell("",new mxGeometry(16,18,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#80FF6C;strokeColor=#000000;fontStyle=1;");d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;");
+this.addEntry("eip enterprise integration pattern messaging system message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var d=new mxCell("",new mxGeometry(16,18,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#80FF6C;fontStyle=1;");d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;");
 f.geometry.relative=!0;f.edge=!0;a.insertEdge(f,!1);d.insertEdge(f,!0);return b.createVertexTemplateFromCells([f,a,d],28,30,"Message")}),this.addDataEntry("eip enterprise integration pattern messaging system message",28,48,"Message","vZRNb4MwDIZ/DdeJj25qjyvtetqph23HqBgSLcTIuC3dr19C0naIoU3qNBCS/TqvcR5Qoiyvuw2JRj5jATrK1lGWEyL7qO5y0DpKY1VE2SpK09g+Ufo0UU36atwIAsO/MaTecBB6D17xQssnHQQoKtiGFIklVmiEXl/VJeHeFOA6xjaDTvHrl/jNxXf3LjPFIxEerWDQOGchWnkxSq7t/leJDVsmfIccNVI/RDaP3X2pvKiCpa2kVvEDuykHDFrc0y5IMy+xoAoClmxMqjcGTBvAGphOdgmBFqwOw+6i9Wl1WXeFbIPA+Xvm2c/Mx7sckBJaVcbGOzs7WELLEg1v1Ydzzx0kKRoX2/eqpnWgS6X1NM5zJXyVMB8QQzf5X03QOoaZ3YqwLwmqkjzUbuE3+zd+BDsewyvLxSIew7OVuL/O/cI4yY1Ez4YH7ziFdO7Tv+dt0+v509cGx9Mn"),
-this.addEntry("eip enterprise integration pattern messaging system message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var d=new mxCell("",new mxGeometry(16,18,12,12),"strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;shape=mxgraph.eip.message_1;fillColor=#ff5500;strokeColor=#000000;fontStyle=1;");d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;");
-f.geometry.relative=!0;f.edge=!0;a.insertEdge(f,!1);d.insertEdge(f,!0);return b.createVertexTemplateFromCells([f,a,d],28,30,"Message")}),this.addEntry("eip enterprise integration pattern messaging system message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var d=new mxCell("",new mxGeometry(16,18,12,12),"strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;shape=mxgraph.eip.message_2;fillColor=#00cc00;strokeColor=#000000;fontStyle=1;");
-d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;");f.geometry.relative=!0;f.edge=!0;a.insertEdge(f,!1);d.insertEdge(f,!0);return b.createVertexTemplateFromCells([f,a,d],28,30,"Message")}),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;shape=mxgraph.eip.message_translator;fillColor=#c0f5a9;strokeColor=#000000;verticalLabelPosition=bottom;verticalAlign=top;",
-150,90,"","Message-Translator",null,null,this.getTagsForStencil("mxgraph.eip","message_translator","eip enterprise integration pattern messaging system ").join(" "))];this.addPalette("eipMessaging Systems","EIP / Messaging Systems",a||!1,mxUtils.bind(this,function(a){for(var c=0;c<e.length;c++)a.appendChild(e[c](a))}))};Sidebar.prototype.addEipSystemManagementPalette=function(a){this.addPaletteFunctions("eipSystem Management","EIP / System Management",!1,[this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.channel_purger;fillColor=#c0f5a9;strokeColor=#000000;",
-150,90,"","Channel Purger",null,null,this.getTagsForStencil("mxgraph.eip","channel_purger","eip enterprise integration pattern system management ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.control_bus;fillColor=#c0f5a9;strokeColor=#000000;",60,40,"","Control Bus",null,null,this.getTagsForStencil("mxgraph.eip","control_bus","eip enterprise integration pattern system management ").join(" ")),
-this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.detour;fillColor=#c0f5a9;strokeColor=#000000;",150,90,"","Detour",null,null,this.getTagsForStencil("mxgraph.eip","detour","eip enterprise integration pattern system management ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.message_store;fillColor=#c0f5a9;strokeColor=#000000;",
-150,90,"","Message Store",null,null,this.getTagsForStencil("mxgraph.eip","message_store","eip enterprise integration pattern system management ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.smart_proxy;fillColor=#c0f5a9;strokeColor=#000000;",70,90,"","Smart Proxy",null,null,this.getTagsForStencil("mxgraph.eip","smart_proxy","eip enterprise integration pattern system management ").join(" ")),
-this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.test_message;fillColor=#c0f5a9;strokeColor=#000000;",150,90,"","Test Message",null,null,this.getTagsForStencil("mxgraph.eip","test_message","eip enterprise integration pattern system management ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.wire_tap;fillColor=#c0f5a9;strokeColor=#000000;",
-150,90,"","Wire Tap",null,null,this.getTagsForStencil("mxgraph.eip","wire_tap","eip enterprise integration pattern system management ").join(" "))])}})();(function(){Sidebar.prototype.addElectricalPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;strokeWidth=1;"+mxConstants.STYLE_SHAPE,b=a+"=mxgraph.electrical.abstract.",e="pointerEvents=1;"+a+"=mxgraph.electrical.capacitors.",c="pointerEvents=1;fillColor=#000000;"+a+"=mxgraph.electrical.diodes.",d="pointerEvents=1;"+a+"=mxgraph.electrical.inductors.",f="pointerEvents=1;"+a+"=mxgraph.electrical.miscellaneous.",
+this.addEntry("eip enterprise integration pattern messaging system message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var d=new mxCell("",new mxGeometry(16,18,12,12),"strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;shape=mxgraph.eip.message_1;fillColor=#ff5500;fontStyle=1;");d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;");
+f.geometry.relative=!0;f.edge=!0;a.insertEdge(f,!1);d.insertEdge(f,!0);return b.createVertexTemplateFromCells([f,a,d],28,30,"Message")}),this.addEntry("eip enterprise integration pattern messaging system message",function(){var a=new mxCell("",new mxGeometry(0,0,12,12),"strokeWidth=2;dashed=0;align=center;fontSize=8;shape=ellipse;fillColor=#808080;strokeColor=none;");a.vertex=!0;var d=new mxCell("",new mxGeometry(16,18,12,12),"strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;shape=mxgraph.eip.message_2;fillColor=#00cc00;fontStyle=1;");
+d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;");f.geometry.relative=!0;f.edge=!0;a.insertEdge(f,!1);d.insertEdge(f,!0);return b.createVertexTemplateFromCells([f,a,d],28,30,"Message")}),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;shape=mxgraph.eip.message_translator;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;",
+150,90,"","Message-Translator",null,null,this.getTagsForStencil("mxgraph.eip","message_translator","eip enterprise integration pattern messaging system ").join(" "))];this.addPalette("eipMessaging Systems","EIP / Messaging Systems",a||!1,mxUtils.bind(this,function(a){for(var c=0;c<e.length;c++)a.appendChild(e[c](a))}))};Sidebar.prototype.addEipSystemManagementPalette=function(a){this.addPaletteFunctions("eipSystem Management","EIP / System Management",!1,[this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.channel_purger;fillColor=#c0f5a9",
+150,90,"","Channel Purger",null,null,this.getTagsForStencil("mxgraph.eip","channel_purger","eip enterprise integration pattern system management ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.control_bus;fillColor=#c0f5a9",60,40,"","Control Bus",null,null,this.getTagsForStencil("mxgraph.eip","control_bus","eip enterprise integration pattern system management ").join(" ")),
+this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.detour;fillColor=#c0f5a9",150,90,"","Detour",null,null,this.getTagsForStencil("mxgraph.eip","detour","eip enterprise integration pattern system management ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.message_store;fillColor=#c0f5a9",
+150,90,"","Message Store",null,null,this.getTagsForStencil("mxgraph.eip","message_store","eip enterprise integration pattern system management ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.smart_proxy;fillColor=#c0f5a9",70,90,"","Smart Proxy",null,null,this.getTagsForStencil("mxgraph.eip","smart_proxy","eip enterprise integration pattern system management ").join(" ")),
+this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.test_message;fillColor=#c0f5a9",150,90,"","Test Message",null,null,this.getTagsForStencil("mxgraph.eip","test_message","eip enterprise integration pattern system management ").join(" ")),this.createVertexTemplateEntry("strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.wire_tap;fillColor=#c0f5a9",
+150,90,"","Wire Tap",null,null,this.getTagsForStencil("mxgraph.eip","wire_tap","eip enterprise integration pattern system management ").join(" "))])}})();(function(){Sidebar.prototype.addElectricalPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;shadow=0;dashed=0;align=center;html=1;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;"+mxConstants.STYLE_SHAPE,b=a+"=mxgraph.electrical.abstract.",e="pointerEvents=1;"+a+"=mxgraph.electrical.capacitors.",c="pointerEvents=1;fillColor=#000000;"+a+"=mxgraph.electrical.diodes.",d="pointerEvents=1;"+a+"=mxgraph.electrical.inductors.",f="pointerEvents=1;"+a+"=mxgraph.electrical.miscellaneous.",
 g="pointerEvents=1;"+a+"=mxgraph.electrical.electro-mechanical.",h=a+"=mxgraph.electrical.logic_gates.",k=a+"=mxgraph.electrical.mosfets1.",l=a+"=mxgraph.electrical.transistors.",m=a+"=mxgraph.electrical.opto_electronics.",q="pointerEvents=1;"+a+"=mxgraph.electrical.plc_ladder.",r=a+"=mxgraph.electrical.radio.",n="pointerEvents=1;"+a+"=mxgraph.electrical.resistors.",p="pointerEvents=1;"+a+"=mxgraph.electrical.signal_sources.",u=a+"=mxgraph.electrical.thermionic_devices.",t="pointerEvents=1;"+a+"=mxgraph.electrical.waveforms.",
 y="perimeter=ellipsePerimeter;"+a+"=mxgraph.electrical.instruments.",x=a+"=mxgraph.electrical.iec_logic_gates.",w=a+"=mxgraph.electrical.rot_mech.",v=a+"=mxgraph.electrical.transmission.";this.addPaletteFunctions("electricalLogicGates","Electrical / Logic Gates",!1,[this.createVertexTemplateEntry(h+"logic_gate;operation=and;",100,60,"","AND",null,null,this.getTagsForStencil("mxgraph.electrical.logic_gates","and","electrical logic gate ").join(" ")),this.createVertexTemplateEntry(h+"buffer2;",100,
 60,"","Buffer",null,null,this.getTagsForStencil("mxgraph.electrical.logic_gates","buffer","electrical logic gate ").join(" ")),this.createVertexTemplateEntry(h+"d_type_flip-flop;",100,80,"","D Type Flip-Flop",null,null,this.getTagsForStencil("mxgraph.electrical.logic_gates","d_type_flip-flop","electrical logic gate ").join(" ")),this.createVertexTemplateEntry(h+"d_type_flip-flop_with_clear;",100,90,"","D Type Flip-Flop With Clear",null,null,this.getTagsForStencil("mxgraph.electrical.logic_gates",
@@ -5071,7 +5062,7 @@ this.createVertexTemplateEntry(h+"synchronous_rs_latch;",100,80,"","RS Latch (Sy
 null,null,this.getTagsForStencil("mxgraph.electrical.logic_gates","t_type_flip-flop","electrical logic gate ").join(" ")),this.createVertexTemplateEntry(h+"logic_gate;operation=xor;",100,60,"","XOR",null,null,this.getTagsForStencil("mxgraph.electrical.logic_gates","xor","electrical logic gate ").join(" ")),this.createVertexTemplateEntry(h+"logic_gate;operation=xor;negating=1;",100,60,"","XNOR",null,null,this.getTagsForStencil("mxgraph.electrical.logic_gates","xnor","electrical logic gate ").join(" ")),
 this.createVertexTemplateEntry(x+"and;",60,80,"","AND (IEC)",null,null,this.getTagsForStencil("mxgraph.electrical.iec_logic_gates","and","electrical iec logic gate ").join(" ")),this.createVertexTemplateEntry(x+"nand;",66,80,"","NAND (IEC)",null,null,this.getTagsForStencil("mxgraph.electrical.iec_logic_gates","nand","electrical iec logic gate ").join(" ")),this.createVertexTemplateEntry(x+"or;",60,80,"","OR (IEC)",null,null,this.getTagsForStencil("mxgraph.electrical.iec_logic_gates","or","electrical iec logic gate ").join(" ")),
 this.createVertexTemplateEntry(x+"nor;",66,80,"","NOR (IEC)",null,null,this.getTagsForStencil("mxgraph.electrical.iec_logic_gates","nor","electrical iec logic gate ").join(" ")),this.createVertexTemplateEntry(x+"not;",66,80,"","NOT (IEC)",null,null,this.getTagsForStencil("mxgraph.electrical.iec_logic_gates","xor","electrical iec logic gate ").join(" ")),this.createVertexTemplateEntry(x+"xor;",60,80,"","XOR (IEC)",null,null,this.getTagsForStencil("mxgraph.electrical.iec_logic_gates","xor","electrical iec logic gate ").join(" ")),
-this.createVertexTemplateEntry("shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;strokeWidth=1;shape=mxgraph.electrical.logic_gates.dual_inline_ic;labelNames=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;",100,200,"IC","Dual In-Line IC",null,null,this.getTagsForStencil("mxgraph.electrical.logic_gates","dual inline in line ic integrated circuit","electrical logic gate ").join(" ")),this.createVertexTemplateEntry("shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;strokeWidth=1;shape=mxgraph.electrical.logic_gates.qfp_ic;labelNames=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1;",
+this.createVertexTemplateEntry("shadow=0;dashed=0;align=center;html=1;strokeWidth=1;shape=mxgraph.electrical.logic_gates.dual_inline_ic;labelNames=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;",100,200,"IC","Dual In-Line IC",null,null,this.getTagsForStencil("mxgraph.electrical.logic_gates","dual inline in line ic integrated circuit","electrical logic gate ").join(" ")),this.createVertexTemplateEntry("shadow=0;dashed=0;align=center;html=1;strokeWidth=1;shape=mxgraph.electrical.logic_gates.qfp_ic;labelNames=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1;",
 200,200,"IC","Quad Flat Package IC",null,null,this.getTagsForStencil("mxgraph.electrical.logic_gates","quad flat package qfp ic integrated circuit","electrical logic gate ").join(" "))]);this.addPaletteFunctions("electricalResistors","Electrical / Resistors",!1,[this.createVertexTemplateEntry(n+"resistor_1;",100,20,"","Resistor",null,null,this.getTagsForStencil("mxgraph.electrical.resistors","resistor_1","electrical resistor ").join(" ")),this.createVertexTemplateEntry(n+"resistor_2;",100,20,"","Resistor",
 null,null,this.getTagsForStencil("mxgraph.electrical.resistors","resistor_2","electrical resistor ").join(" ")),this.createVertexTemplateEntry(n+"potentiometer_1;",100,40,"","Potentiometer",null,null,this.getTagsForStencil("mxgraph.electrical.resistors","potentiometer_1","electrical resistor ").join(" ")),this.createVertexTemplateEntry(n+"potentiometer_2;",100,40,"","Potentiometer",null,null,this.getTagsForStencil("mxgraph.electrical.resistors","potentiometer_2","electrical resistor ").join(" ")),
 this.createVertexTemplateEntry(n+"trimmer_pot_1;",100,40,"","Potentiometer (Trimmer)",null,null,this.getTagsForStencil("mxgraph.electrical.resistors","trimmer_pot_1","electrical resistor ").join(" ")),this.createVertexTemplateEntry(n+"trimmer_pot_2;",100,40,"","Potentiometer (Trimmer)",null,null,this.getTagsForStencil("mxgraph.electrical.resistors","trimmer_pot_2","electrical resistor ").join(" ")),this.createVertexTemplateEntry(n+"trimmer_resistor_1;",100,65.5,"","Resistor (Trimmer)",null,null,this.getTagsForStencil("mxgraph.electrical.resistors",
@@ -5092,84 +5083,84 @@ null,null,this.getTagsForStencil("mxgraph.electrical.capacitors","multiple_elect
 "inductor_1","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"variable_inductor;",100,60,"","Variable",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","variable_inductor","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"ferrite_core;",64,4,"","Ferrite Core",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","ferrite_core","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"iron_core;",64,4,"","Iron Core",null,null,
 this.getTagsForStencil("mxgraph.electrical.inductors","iron_core","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"magnetic_core;direction=north;",64,3,"","Magnetic Core",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","magnetic core","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"transformer_1;",64,60,"","Transformer (Iron Core)",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","transformer_1","electrical inductor ").join(" ")),
 this.createVertexTemplateEntry(d+"transformer_2;",64,60,"","Transformer (Iron Core)",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","transformer_2","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"half_inductor;",32,23,"","Half Inductor",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","half inductor","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"transformer;direction=north;",64,64,"","Transformer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors",
-"transformer","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"inductor;",100,42,"","Inductor",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","inductor","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"choke;",100,200,"","Choke",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","choke","electrical inductor ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=top;shadow=0;dashed=0;align=center;fillColor=#000000;strokeColor=#000000;html=1;verticalAlign=bottom;strokeWidth=1;shape=mxgraph.electrical.inductors.variometer;",
+"transformer","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"inductor;",100,42,"","Inductor",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","inductor","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"choke;",100,200,"","Choke",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","choke","electrical inductor ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=top;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=bottom;strokeWidth=1;shape=mxgraph.electrical.inductors.variometer;",
 150,88,"","Variometer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","variometer","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"coaxial_choke;",300,50,"","Coaxial Choke",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","coaxial choke","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"transductor;",200,100,"","Transductor",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","transductor","electrical inductor ").join(" ")),
 this.createVertexTemplateEntry(d+"saturating_transformer;",200,150,"","Saturating Transformer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","saturating_transformer","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"potential_transformer_2;",92,40,"","Potential Transformer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","potential transformer","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"pot_trans_3_windings;",67,96,"",
-"Pot. Trans. 3 Windings",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","potential transformer 3 three windings","electrical inductor ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.signal_sources.current_source;",40,60,"","Transformer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","","electrical inductor ").join(" ")),
-this.createVertexTemplateEntry(d+"adjustable_transformer;",46,60,"","Adjustable Transformer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","adjustable_transformer","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"1_phase_induction_volt_reg;",100,100,"","1-Phase Induction Voltage Regulator",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","1 phase induction voltage regulator monophase","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+
-"triplex_induction_volt_reg;",100,100,"","Triplex Induction Voltage Regulator",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","triplex induction voltage regulator","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"induction_voltage_regulator;",160,210,"","Induction Voltage Regulator",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","induction voltage regulator","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"current_transformer_1;",
-12,75,"","Current Transformer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","current transformer","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"current_transformer_2;",125,175,"","Current Transformer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","current transformer","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"current_transformer_3;",75,10,"","Current Transformer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors",
-"current transformer","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"potential_transformer;",100,50,"","Potential Transformer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","potential transformer","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"outdoor_metering_device;",100,100,"","Outdoor Metering Device",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","outdoor metering device","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+
+"Pot. Trans. 3 Windings",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","potential transformer 3 three windings","electrical inductor ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.signal_sources.current_source;",40,60,"","Transformer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+
+"adjustable_transformer;",46,60,"","Adjustable Transformer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","adjustable_transformer","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"1_phase_induction_volt_reg;",100,100,"","1-Phase Induction Voltage Regulator",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","1 phase induction voltage regulator monophase","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"triplex_induction_volt_reg;",
+100,100,"","Triplex Induction Voltage Regulator",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","triplex induction voltage regulator","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"induction_voltage_regulator;",160,210,"","Induction Voltage Regulator",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","induction voltage regulator","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"current_transformer_1;",12,75,"","Current Transformer",
+null,null,this.getTagsForStencil("mxgraph.electrical.inductors","current transformer","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"current_transformer_2;",125,175,"","Current Transformer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","current transformer","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"current_transformer_3;",75,10,"","Current Transformer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","current transformer",
+"electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"potential_transformer;",100,50,"","Potential Transformer",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","potential transformer","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+"outdoor_metering_device;",100,100,"","Outdoor Metering Device",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","outdoor metering device","electrical inductor ").join(" ")),this.createVertexTemplateEntry(d+
 "linear_coupler;",80,20,"","Linear Coupler",null,null,this.getTagsForStencil("mxgraph.electrical.inductors","linear coupler","electrical inductor ").join(" "))]);this.addPaletteFunctions("electricalSwitchesRelays","Electrical / Switches and Relays",!1,[this.createVertexTemplateEntry(g+"2-way_switch;",75,26,"","SPDT",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","2-way switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"push_switch_nc;",75,10,
 "","Pushbutton NC",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","push switch nc","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"push_switch_no;",75,19,"","Pushbutton NO",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","push switch no","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"simple_switch;",75,19,"","SPST",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","simple switch",
 "electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"switch_disconnector;",75,19,"","Switch Disconnector",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","switch disconnector","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"fuse;",75,16,"","Fuse",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","fuse","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"liquid_level_actuated;",75,28,"",
 "Liquid Level Actuated",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","liquid level actuated","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"liquid_level_actuated_2;",75,32,"","Liquid Level Actuated",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","liquid level actuated","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"gas_flow_actuated;",75,32,"","Gas Flow Actuated",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical",
 "gas flow actuated","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"flow_actuated;",75,31,"","Flow Actuated",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","flow actuated","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"pressure_actuated;",75,31,"","Pressure Actuated",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","pressure actuated","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+
 "temperature_actuated;",75,31,"","Temperature Actuated",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","temperature actuated","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"safety_interlock;",75,37,"","Safety Interlock",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","safety interlock","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"temperature_switch;",75,18,"","Temperature Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical",
-"temperature switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=top;shadow=0;dashed=0;align=center;fillColor=#ffffff;strokeColor=#000000;html=1;verticalAlign=bottom;strokeWidth=1;shape=mxgraph.electrical.electro-mechanical.thermostat;fontColor=#000000;fontSize=10;",75,7,"tº","Thermostat",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","thermostat","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"limit_switch;",
-75,16,"","Limit Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","limit switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"circuit_breaker;",75,20,"","Circuit Breaker",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","circuit breaker","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"selector_switch;",75,66,"","Selector Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical",
-"selector_switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"shorting_selector;",60,66,"","Shorting Selector",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","shorting selector","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"proximity_limit_switch;",75,55,"","Proximity Limit Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","proximity limit switch","electrical switch relay ").join(" ")),
-this.createVertexTemplateEntry(g+"inertia_switch;",75,19,"","Inertia Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","inertia switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"pushbutton_break;",75,54,"","Pushbutton Break",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","pushbutton break","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"manual_switch;",75,18,"","Manual Switch",null,null,
-this.getTagsForStencil("mxgraph.electrical.electro-mechanical","manual switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"make_contact;",75,16,"","Make Contact",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","make contact","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"break_contact;",75,10,"","Break Contact",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","break contact","electrical switch relay ").join(" ")),
-this.createVertexTemplateEntry(g+"two_way_contact;",75,30,"","Two Way Contact",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","two way contact","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"passing_make_contact;",75,23,"","Passing Make-Contact",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","passing make contact","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"stay_put;",75,7,"","Stay Put",null,
-null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","stay put","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"dpst;",75,26,"","DPST",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","dpst","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"spring_return;",75,10,"","Spring Return",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","spring return","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+
-"spring_return_2;",75,19,"","Spring Return",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","spring return","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"limit_switch_no;",75,24,"","Limit Switch NO",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","limit switch no normally open","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"limit_switch_nc;",75,13,"","Limit Switch NC",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical",
-"limit switch nc normally closed","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"dpdt2;",58,62,"","DPDT",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","dpdt","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"2_position_switch;",75,70,"","2-Position Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","2 position switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"3_position_switch;",
-60,60,"","3-Position Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","3 position switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"4_position_switch;",75,70,"","4-Position Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","4 position switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"pushbutton_make;",75,53,"","Pushbutton Make",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical",
-"pushbutton make","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"pushbutton_2_circuit;",75,73,"","Pushbutton 2-Circuit",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","pushbutton 2 circuit","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"time_delay_make;",75,31,"","Time Delay Make",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","time delay make","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+
-"time_delay_break;",75,32,"","Time Delay Break",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","time delay break","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"time_delay_make_2;",75,36,"","Time Delay Make",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","time delay make","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"time_delay_break_2;",75,30,"","Time Delay Break",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical",
-"time delay break","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"isolator;",75,20,"","Isolator",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","isolator","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"changeover_contact;",75,20,"","Changeover Contact",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","changeover contact","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"reed_switch;",
-75,20,"","Reed Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","reed switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"relay_coil;",70,35,"","Relay Coil",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","relay coil","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"relay;",100,50,"","Relay",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","relay","electrical switch relay ").join(" ")),
-this.createVertexTemplateEntry(g+"relay_contacts;",30,24,"","Relay Contacts",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","relay contacts","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"resonator;",100,50,"","Resonator",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","resonator","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"pilot_light;",100,100,"","Pilot Light",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical",
-"pilot light","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"relay_coil_2;",100,70,"","Relay Coil",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","relay coil","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"mercury_switch;",80,80,"","Mercury Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","mercury switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"mercury_switch_2;",
-50,90,"","Mercury Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","mercury switch","electrical switch relay ").join(" "))]);this.addPaletteFunctions("electricalDiodes","Electrical / Diodes",!1,[this.createVertexTemplateEntry(c+"diode;",100,60,"","PN Diode",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","diode","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"gunn_diode;",100,60,"","Gunn Diode",null,null,this.getTagsForStencil("mxgraph.electrical.diodes",
-"gunn_diode","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"schottky_diode;",100,60,"","Schottky Diode",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","schottky_diode","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"zener_diode_2;",100,60,"","Breakdown",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","zener_diode_2","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"tunnel_diode;",100,60,"","Tunnel Diode 1",null,null,this.getTagsForStencil("mxgraph.electrical.diodes",
-"tunnel_diode","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"tunnel_diode_2;",100,80,"","Tunnel Diode 2",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","tunnel_diode_2","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"field_effect_diode;",100,60,"","Field Effect Diode",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","field_effect_diode","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"varactor_-_varicap;",100,60,"","Varactor - Varicap",
-null,null,this.getTagsForStencil("mxgraph.electrical.diodes","varactor_-_varicap","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"zener_diode_1;",100,60,"","Zener Diode 1",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","zener_diode_1","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"zener_diode_3;",100,60,"","Zener Diode 2",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","zener_diode_3","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+
-"four_layer_diode;",100,80,"","Four Layer Diode",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","four_layer_diode","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"transorb_1;",100,60,"","Transorb 1",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","transorb_1","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"transorb_2;",100,60,"","Transorb 2",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","transorb_2","electrical diode ").join(" "))]);
-this.addPaletteFunctions("electricalSources","Electrical / Sources",!1,[this.createVertexTemplateEntry(p+"ac_source;",60,60,"","AC",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","ac_source","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"current_source;",40,60,"","Current",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","current_source","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"dc_source_1;",70,75,
-"","DC",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","dc_source_1","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"dc_source_2;",60,60,"","DC",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","dc_source_2","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"dc_source_3;",60,60,"","DC",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","dc_source_3","electrical signal source ").join(" ")),
-this.createVertexTemplateEntry(p+"dependent_source_1;",60,60,"","Dependent",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","dependent_source_1","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"dependent_source_2;",60,60,"","Dependent",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","dependent_source_2","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"dependent_source_3;",60,60,"","Dependent",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources",
-"dependent_source_3","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"noise_source;",60,60,"","Noise",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","noise_source","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"ideal_source;",60,60,"","Ideal Source",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","ideal source","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"explosive_squib",60,
-60,"","Explosive Squib",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","explosive squib","electrical ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.monocell_battery;",100,60,"","Accumulator / Monocell Battery",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","accumulator monocell battery single cell",
-"electrical ").join(" ")),this.createVertexTemplateEntry(f+"batteryStack;",100,60,"","Battery Stack",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","battery stack","electrical signal source ").join(" ")),this.createVertexTemplateEntry("pointerEvents=1;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.multicell_battery_tapped;",100,70,"","Multicell Battery Tapped",
-null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","accumulator multicell battery tapped multi multiple cell","electrical ").join(" "))]);this.addPaletteFunctions("electricalTransistors","Electrical / Transistors",!1,[this.createVertexTemplateEntry(l+"npn_transistor_1;",95,100,"","BJT (NPN)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","npn_transistor_1","electrical transistor ").join(" ")),this.createVertexTemplateEntry(l+"pnp_transistor_1;",95,100,"","BJT (PNP)",
-null,null,this.getTagsForStencil("mxgraph.electrical.transistors","pnp_transistor_1","electrical transistor ").join(" ")),this.createVertexTemplateEntry(l+"n-channel_jfet_1;",95,100,"","N Channel JFET",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","n-channel_jfet_1","electrical transistor ").join(" ")),this.createVertexTemplateEntry(l+"p-channel_jfet_1;",95,100,"","P Channel JFET",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","p-channel_jfet_1","electrical transistor ").join(" ")),
-this.createVertexTemplateEntry(k+"n-channel_mosfet_1;",95,100,"","MOSFET (N)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","n-channel_mosfet_1","electrical transistor ").join(" ")),this.createVertexTemplateEntry(k+"p-channel_mosfet_1;",95,100,"","MOSFET (P)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","p-channel_mosfet_1","electrical transistor ").join(" ")),this.createVertexTemplateEntry(k+"mosfet_ic_n;",95,100,"","NMOS",null,null,this.getTagsForStencil("mxgraph.electrical.transistors",
-"mosfet_ic_n","electrical transistor ").join(" ")),this.createVertexTemplateEntry(k+"mosfet_ic_p;",95,100,"","PMOS",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","mosfet_ic_p","electrical transistor ").join(" ")),this.createVertexTemplateEntry(k+"mosfet_n_no_bulk;",95,100,"","MOSFET No Bulk (N)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","mosfet_n_no_bulk","electrical transistor ").join(" ")),this.createVertexTemplateEntry(k+"mosfet_p_no_bulk;",95,100,"",
-"MOSFET No Bulk (P)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","mosfet_p_no_bulk","electrical transistor ").join(" ")),this.createVertexTemplateEntry(k+"dual_gate_mosfet_n;",95,100,"","Dual Gate MOSFET (N)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","dual_gate_mosfet_n","electrical transistor ").join(" ")),this.createVertexTemplateEntry(k+"dual_gate_mosfet_p;",95,100,"","Dual Gate MOSFET (P)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors",
-"dual_gate_mosfet_p","electrical transistor ").join(" ")),this.createVertexTemplateEntry(l+"nmos;pointerEvents=1;",60,100,"","NMOS",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","nmos","electrical transistor ").join(" ")),this.createVertexTemplateEntry(l+"pmos;pointerEvents=1;",60,100,"","PMOS",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","pmos","electrical transistor ").join(" "))]);this.addPaletteFunctions("electricalInstruments","Electrical / Instruments",
-!1,[this.createVertexTemplateEntry("verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=50;",90,90,"A","Ammeter",null,null,this.getTagsForStencil("mxgraph.electrical.instruments","ampermeter ammeter","electrical instrument ").join(" ")),this.createVertexTemplateEntry(y+"galvanometer;",90,90,"","Galvanometer",null,null,this.getTagsForStencil("mxgraph.electrical.instruments","galvanometer","electrical instrument ").join(" ")),
-this.createVertexTemplateEntry(y+"oscilloscope;",90,90,"","Oscilloscope",null,null,this.getTagsForStencil("mxgraph.electrical.instruments","oscilloscope","electrical instrument ").join(" ")),this.createVertexTemplateEntry(y+"signal_generator;",90,90,"","Signal Generator",null,null,this.getTagsForStencil("mxgraph.electrical.instruments","signal_generator","electrical instrument ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=50;",
-90,90,"V","Voltmeter",null,null,this.getTagsForStencil("mxgraph.electrical.instruments","ampermeter ammeter","electrical instrument ").join(" "))]);this.addPaletteFunctions("electricalMisc","Electrical / Misc",!1,[this.createVertexTemplateEntry(r+"aerial_-_antenna_1;",80,100,"","Antenna",null,null,this.getTagsForStencil("mxgraph.electrical.radio","aerial_-_antenna_1","electrical radio audio ").join(" ")),this.createVertexTemplateEntry(r+"aerial_-_antenna_2;",79,100,"","Antenna",null,null,this.getTagsForStencil("mxgraph.electrical.radio",
-"aerial_-_antenna_2","electrical radio audio ").join(" ")),this.createVertexTemplateEntry(r+"loop_antenna;",64.8,69.78,"","Loop Antenna",null,null,this.getTagsForStencil("mxgraph.electrical.radio","loop_antenna","electrical radio audio ").join(" ")),this.createVertexTemplateEntry(f+"loop_antenna",100,100,"","Loop Antenna",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","loop antenna","electrical ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=35;",
-60,60,"M","Electrical Motor",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","motor_1","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE+"=mxgraph.electrical.electro-mechanical.motor_2;html=1;shadow=0;dashed=0;fillColor=#ffffff;align=center;fontSize=30;strokeColor=#000000;strokeWidth=1;",100,60,"","Motor Armature",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","motor_2","electrical switch relay ").join(" ")),
-this.createVertexTemplateEntry(f+"co-ax;",40,60,"","Co-Ax",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","co-ax","electrical ").join(" ")),this.createVertexTemplateEntry(f+"crystal_1;",100,40,"","Crystal",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","crystal_1","electrical ").join(" ")),this.createVertexTemplateEntry(f+"fuse_1;",100,20,"","Fuse (IEC)",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","fuse_1","electrical ").join(" ")),
-this.createVertexTemplateEntry(f+"fuse_2;",100,20,"","Fuse (IEEE)",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","fuse_2","electrical ").join(" ")),this.createVertexTemplateEntry(f+"fuse_3;",100,12,"","Fuse (obsolete)",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","fuse_3","electrical ").join(" ")),this.createVertexTemplateEntry(f+"fuse_4;",100,32,"","Fuse (IEEE)",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","fuse_4","electrical ").join(" ")),
-this.createVertexTemplateEntry(f+"light_bulb;",60,50,"","Light Bulb",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","light_bulb","electrical ").join(" ")),this.createVertexTemplateEntry(f+"illuminating_bulb;",60,50,"","Illuminating Bulb",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","illuminating_bulb","electrical ").join(" ")),this.createVertexTemplateEntry(f+"light_bulb;",60,50,"","Pilot Light",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous",
-"light_bulb","electrical ").join(" ")),this.createVertexTemplateEntry(f+"neon_lamp_2;",60,50,"","Neon Lamp",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","neon_lamp_2","electrical ").join(" ")),this.createVertexTemplateEntry(f+"flourescent_lamp",80,30,"","Flourescent Lamp",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","flourescent lamp","electrical ").join(" ")),this.createVertexTemplateEntry(m+"lamp",50,100,"","Lamp",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources",
-"lamp","electrical optical ").join(" ")),this.createVertexTemplateEntry(f+"thermocouple;",80,81,"","Thermocouple",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","thermocouple","electrical ").join(" ")),this.createVertexTemplateEntry(b+"amplifier;",90,100,"","Amplifier",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","amplifier","electrical ").join(" ")),this.createVertexTemplateEntry(b+"controlled_amplifier;",100,90,"","Controlled Amplifier",null,null,this.getTagsForStencil("mxgraph.electrical.abstract",
-"controlled_amplifier","electrical ").join(" ")),this.createVertexTemplateEntry(b+"dac;",70,46,"","DAC",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","dac","electrical ").join(" ")),this.createVertexTemplateEntry("shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;strokeWidth=1;shape=mxgraph.electrical.abstract.mux2;",80,120,"Mux","Mux",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","mux","electrical ").join(" ")),this.createVertexTemplateEntry("shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;strokeWidth=1;shape=mxgraph.electrical.abstract.mux2;operation=demux;",
+"temperature switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=top;shadow=0;dashed=0;align=center;html=1;verticalAlign=bottom;strokeWidth=1;shape=mxgraph.electrical.electro-mechanical.thermostat;fontSize=10;",75,7,"tº","Thermostat",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","thermostat","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"limit_switch;",75,16,"","Limit Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical",
+"limit switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"circuit_breaker;",75,20,"","Circuit Breaker",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","circuit breaker","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"selector_switch;",75,66,"","Selector Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","selector_switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+
+"shorting_selector;",60,66,"","Shorting Selector",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","shorting selector","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"proximity_limit_switch;",75,55,"","Proximity Limit Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","proximity limit switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"inertia_switch;",75,19,"","Inertia Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical",
+"inertia switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"pushbutton_break;",75,54,"","Pushbutton Break",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","pushbutton break","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"manual_switch;",75,18,"","Manual Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","manual switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+
+"make_contact;",75,16,"","Make Contact",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","make contact","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"break_contact;",75,10,"","Break Contact",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","break contact","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"two_way_contact;",75,30,"","Two Way Contact",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical",
+"two way contact","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"passing_make_contact;",75,23,"","Passing Make-Contact",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","passing make contact","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"stay_put;",75,7,"","Stay Put",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","stay put","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+
+"dpst;",75,26,"","DPST",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","dpst","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"spring_return;",75,10,"","Spring Return",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","spring return","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"spring_return_2;",75,19,"","Spring Return",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","spring return",
+"electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"limit_switch_no;",75,24,"","Limit Switch NO",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","limit switch no normally open","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"limit_switch_nc;",75,13,"","Limit Switch NC",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","limit switch nc normally closed","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+
+"dpdt2;",58,62,"","DPDT",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","dpdt","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"2_position_switch;",75,70,"","2-Position Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","2 position switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"3_position_switch;",60,60,"","3-Position Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical",
+"3 position switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"4_position_switch;",75,70,"","4-Position Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","4 position switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"pushbutton_make;",75,53,"","Pushbutton Make",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","pushbutton make","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+
+"pushbutton_2_circuit;",75,73,"","Pushbutton 2-Circuit",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","pushbutton 2 circuit","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"time_delay_make;",75,31,"","Time Delay Make",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","time delay make","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"time_delay_break;",75,32,"","Time Delay Break",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical",
+"time delay break","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"time_delay_make_2;",75,36,"","Time Delay Make",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","time delay make","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"time_delay_break_2;",75,30,"","Time Delay Break",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","time delay break","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+
+"isolator;",75,20,"","Isolator",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","isolator","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"changeover_contact;",75,20,"","Changeover Contact",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","changeover contact","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"reed_switch;",75,20,"","Reed Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical",
+"reed switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"relay_coil;",70,35,"","Relay Coil",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","relay coil","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"relay;",100,50,"","Relay",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","relay","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"relay_contacts;",30,24,"","Relay Contacts",
+null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","relay contacts","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"resonator;",100,50,"","Resonator",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","resonator","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"pilot_light;",100,100,"","Pilot Light",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","pilot light","electrical switch relay ").join(" ")),
+this.createVertexTemplateEntry(g+"relay_coil_2;",100,70,"","Relay Coil",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","relay coil","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"mercury_switch;",80,80,"","Mercury Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","mercury switch","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(g+"mercury_switch_2;",50,90,"","Mercury Switch",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical",
+"mercury switch","electrical switch relay ").join(" "))]);this.addPaletteFunctions("electricalDiodes","Electrical / Diodes",!1,[this.createVertexTemplateEntry(c+"diode;",100,60,"","PN Diode",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","diode","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"gunn_diode;",100,60,"","Gunn Diode",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","gunn_diode","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+
+"schottky_diode;",100,60,"","Schottky Diode",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","schottky_diode","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"zener_diode_2;",100,60,"","Breakdown",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","zener_diode_2","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"tunnel_diode;",100,60,"","Tunnel Diode 1",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","tunnel_diode","electrical diode ").join(" ")),
+this.createVertexTemplateEntry(c+"tunnel_diode_2;",100,80,"","Tunnel Diode 2",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","tunnel_diode_2","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"field_effect_diode;",100,60,"","Field Effect Diode",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","field_effect_diode","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"varactor_-_varicap;",100,60,"","Varactor - Varicap",null,null,this.getTagsForStencil("mxgraph.electrical.diodes",
+"varactor_-_varicap","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"zener_diode_1;",100,60,"","Zener Diode 1",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","zener_diode_1","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"zener_diode_3;",100,60,"","Zener Diode 2",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","zener_diode_3","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"four_layer_diode;",100,80,"","Four Layer Diode",
+null,null,this.getTagsForStencil("mxgraph.electrical.diodes","four_layer_diode","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"transorb_1;",100,60,"","Transorb 1",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","transorb_1","electrical diode ").join(" ")),this.createVertexTemplateEntry(c+"transorb_2;",100,60,"","Transorb 2",null,null,this.getTagsForStencil("mxgraph.electrical.diodes","transorb_2","electrical diode ").join(" "))]);this.addPaletteFunctions("electricalSources",
+"Electrical / Sources",!1,[this.createVertexTemplateEntry(p+"ac_source;",60,60,"","AC",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","ac_source","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"current_source;",40,60,"","Current",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","current_source","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"dc_source_1;",70,75,"","DC",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources",
+"dc_source_1","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"dc_source_2;",60,60,"","DC",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","dc_source_2","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"dc_source_3;",60,60,"","DC",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","dc_source_3","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"dependent_source_1;",60,60,"","Dependent",null,
+null,this.getTagsForStencil("mxgraph.electrical.signal_sources","dependent_source_1","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"dependent_source_2;",60,60,"","Dependent",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","dependent_source_2","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"dependent_source_3;",60,60,"","Dependent",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","dependent_source_3","electrical signal source ").join(" ")),
+this.createVertexTemplateEntry(p+"noise_source;",60,60,"","Noise",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","noise_source","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"ideal_source;",60,60,"","Ideal Source",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","ideal source","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"explosive_squib",60,60,"","Explosive Squib",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources",
+"explosive squib","electrical ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.monocell_battery;",100,60,"","Accumulator / Monocell Battery",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","accumulator monocell battery single cell","electrical ").join(" ")),this.createVertexTemplateEntry(f+"batteryStack;",100,60,"","Battery Stack",
+null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","battery stack","electrical signal source ").join(" ")),this.createVertexTemplateEntry("pointerEvents=1;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.multicell_battery_tapped;",100,70,"","Multicell Battery Tapped",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","accumulator multicell battery tapped multi multiple cell",
+"electrical ").join(" "))]);this.addPaletteFunctions("electricalTransistors","Electrical / Transistors",!1,[this.createVertexTemplateEntry(l+"npn_transistor_1;",95,100,"","BJT (NPN)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","npn_transistor_1","electrical transistor ").join(" ")),this.createVertexTemplateEntry(l+"pnp_transistor_1;",95,100,"","BJT (PNP)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","pnp_transistor_1","electrical transistor ").join(" ")),
+this.createVertexTemplateEntry(l+"n-channel_jfet_1;",95,100,"","N Channel JFET",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","n-channel_jfet_1","electrical transistor ").join(" ")),this.createVertexTemplateEntry(l+"p-channel_jfet_1;",95,100,"","P Channel JFET",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","p-channel_jfet_1","electrical transistor ").join(" ")),this.createVertexTemplateEntry(k+"n-channel_mosfet_1;",95,100,"","MOSFET (N)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors",
+"n-channel_mosfet_1","electrical transistor ").join(" ")),this.createVertexTemplateEntry(k+"p-channel_mosfet_1;",95,100,"","MOSFET (P)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","p-channel_mosfet_1","electrical transistor ").join(" ")),this.createVertexTemplateEntry(k+"mosfet_ic_n;",95,100,"","NMOS",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","mosfet_ic_n","electrical transistor ").join(" ")),this.createVertexTemplateEntry(k+"mosfet_ic_p;",95,100,"","PMOS",
+null,null,this.getTagsForStencil("mxgraph.electrical.transistors","mosfet_ic_p","electrical transistor ").join(" ")),this.createVertexTemplateEntry(k+"mosfet_n_no_bulk;",95,100,"","MOSFET No Bulk (N)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","mosfet_n_no_bulk","electrical transistor ").join(" ")),this.createVertexTemplateEntry(k+"mosfet_p_no_bulk;",95,100,"","MOSFET No Bulk (P)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","mosfet_p_no_bulk","electrical transistor ").join(" ")),
+this.createVertexTemplateEntry(k+"dual_gate_mosfet_n;",95,100,"","Dual Gate MOSFET (N)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","dual_gate_mosfet_n","electrical transistor ").join(" ")),this.createVertexTemplateEntry(k+"dual_gate_mosfet_p;",95,100,"","Dual Gate MOSFET (P)",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","dual_gate_mosfet_p","electrical transistor ").join(" ")),this.createVertexTemplateEntry(l+"nmos;pointerEvents=1;",60,100,"","NMOS",null,
+null,this.getTagsForStencil("mxgraph.electrical.transistors","nmos","electrical transistor ").join(" ")),this.createVertexTemplateEntry(l+"pmos;pointerEvents=1;",60,100,"","PMOS",null,null,this.getTagsForStencil("mxgraph.electrical.transistors","pmos","electrical transistor ").join(" "))]);this.addPaletteFunctions("electricalInstruments","Electrical / Instruments",!1,[this.createVertexTemplateEntry("verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=50;",
+90,90,"A","Ammeter",null,null,this.getTagsForStencil("mxgraph.electrical.instruments","ampermeter ammeter","electrical instrument ").join(" ")),this.createVertexTemplateEntry(y+"galvanometer;",90,90,"","Galvanometer",null,null,this.getTagsForStencil("mxgraph.electrical.instruments","galvanometer","electrical instrument ").join(" ")),this.createVertexTemplateEntry(y+"oscilloscope;",90,90,"","Oscilloscope",null,null,this.getTagsForStencil("mxgraph.electrical.instruments","oscilloscope","electrical instrument ").join(" ")),
+this.createVertexTemplateEntry(y+"signal_generator;",90,90,"","Signal Generator",null,null,this.getTagsForStencil("mxgraph.electrical.instruments","signal_generator","electrical instrument ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=50;",90,90,"V","Voltmeter",null,null,this.getTagsForStencil("mxgraph.electrical.instruments","ampermeter ammeter","electrical instrument ").join(" "))]);
+this.addPaletteFunctions("electricalMisc","Electrical / Misc",!1,[this.createVertexTemplateEntry(r+"aerial_-_antenna_1;",80,100,"","Antenna",null,null,this.getTagsForStencil("mxgraph.electrical.radio","aerial_-_antenna_1","electrical radio audio ").join(" ")),this.createVertexTemplateEntry(r+"aerial_-_antenna_2;",79,100,"","Antenna",null,null,this.getTagsForStencil("mxgraph.electrical.radio","aerial_-_antenna_2","electrical radio audio ").join(" ")),this.createVertexTemplateEntry(r+"loop_antenna;",
+64.8,69.78,"","Loop Antenna",null,null,this.getTagsForStencil("mxgraph.electrical.radio","loop_antenna","electrical radio audio ").join(" ")),this.createVertexTemplateEntry(f+"loop_antenna",100,100,"","Loop Antenna",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","loop antenna","electrical ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=35;",
+60,60,"M","Electrical Motor",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","motor_1","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE+"=mxgraph.electrical.electro-mechanical.motor_2;html=1;shadow=0;dashed=0;align=center;fontSize=30;strokeWidth=1;",100,60,"","Motor Armature",null,null,this.getTagsForStencil("mxgraph.electrical.electro-mechanical","motor_2","electrical switch relay ").join(" ")),this.createVertexTemplateEntry(f+
+"co-ax;",40,60,"","Co-Ax",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","co-ax","electrical ").join(" ")),this.createVertexTemplateEntry(f+"crystal_1;",100,40,"","Crystal",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","crystal_1","electrical ").join(" ")),this.createVertexTemplateEntry(f+"fuse_1;",100,20,"","Fuse (IEC)",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","fuse_1","electrical ").join(" ")),this.createVertexTemplateEntry(f+
+"fuse_2;",100,20,"","Fuse (IEEE)",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","fuse_2","electrical ").join(" ")),this.createVertexTemplateEntry(f+"fuse_3;",100,12,"","Fuse (obsolete)",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","fuse_3","electrical ").join(" ")),this.createVertexTemplateEntry(f+"fuse_4;",100,32,"","Fuse (IEEE)",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","fuse_4","electrical ").join(" ")),this.createVertexTemplateEntry(f+
+"light_bulb;",60,50,"","Light Bulb",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","light_bulb","electrical ").join(" ")),this.createVertexTemplateEntry(f+"illuminating_bulb;",60,50,"","Illuminating Bulb",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","illuminating_bulb","electrical ").join(" ")),this.createVertexTemplateEntry(f+"light_bulb;",60,50,"","Pilot Light",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","light_bulb","electrical ").join(" ")),
+this.createVertexTemplateEntry(f+"neon_lamp_2;",60,50,"","Neon Lamp",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","neon_lamp_2","electrical ").join(" ")),this.createVertexTemplateEntry(f+"flourescent_lamp",80,30,"","Flourescent Lamp",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","flourescent lamp","electrical ").join(" ")),this.createVertexTemplateEntry(m+"lamp",50,100,"","Lamp",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","lamp",
+"electrical optical ").join(" ")),this.createVertexTemplateEntry(f+"thermocouple;",80,81,"","Thermocouple",null,null,this.getTagsForStencil("mxgraph.electrical.miscellaneous","thermocouple","electrical ").join(" ")),this.createVertexTemplateEntry(b+"amplifier;",90,100,"","Amplifier",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","amplifier","electrical ").join(" ")),this.createVertexTemplateEntry(b+"controlled_amplifier;",100,90,"","Controlled Amplifier",null,null,this.getTagsForStencil("mxgraph.electrical.abstract",
+"controlled_amplifier","electrical ").join(" ")),this.createVertexTemplateEntry(b+"dac;",70,46,"","DAC",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","dac","electrical ").join(" ")),this.createVertexTemplateEntry("shadow=0;dashed=0;align=center;html=1;strokeWidth=1;shape=mxgraph.electrical.abstract.mux2;",80,120,"Mux","Mux",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","mux","electrical ").join(" ")),this.createVertexTemplateEntry("shadow=0;dashed=0;align=center;html=1;strokeWidth=1;shape=mxgraph.electrical.abstract.mux2;operation=demux;",
 80,120,"Demux","Demux",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","mux","electrical ").join(" ")),this.createVertexTemplateEntry(b+"operational_amp_1;",98,90,"","Operational Amp",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","operational_amp_1","electrical ").join(" ")),this.createVertexTemplateEntry(b+"operational_amp_2;",98,90,"","Operational Amp",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","operational_amp_2","electrical ").join(" ")),this.createVertexTemplateEntry(b+
 "ota_1;",100,90,"","OTA",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","ota_1","electrical ").join(" ")),this.createVertexTemplateEntry(b+"ota_2;",100,90,"","OTA",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","ota_2","electrical ").join(" ")),this.createVertexTemplateEntry(b+"ota_3;",100,90,"","OTA",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","ota_3","electrical ").join(" ")),this.createVertexTemplateEntry(b+"quantizer;",52,46,"","Quantizer",null,
-null,this.getTagsForStencil("mxgraph.electrical.abstract","quantizer","electrical ").join(" ")),this.createVertexTemplateEntry(b+"delta;",50,50,"","Delta",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","delta","electrical ").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE+"=mxgraph.electrical.abstract.function;html=1;shadow=0;dashed=0;fillColor=#ffffff;align=center;strokeColor=#000000;strokeWidth=1;fontSize=24",50,50,"fn","Function",null,null,this.getTagsForStencil("mxgraph.electrical.abstract",
-"function","electrical ").join(" ")),this.createVertexTemplateEntry(b+"integrator;",50,50,"","Integrator",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","integrator","electrical ").join(" ")),this.createVertexTemplateEntry(b+"multiplier;",50,50,"","Multiplier",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","multiplier","electrical ").join(" ")),this.createVertexTemplateEntry(b+"sum;",50,50,"","Sum",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","sum",
-"electrical ").join(" ")),this.createVertexTemplateEntry(b+"summation_point;",50,50,"","Summation Point",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","summation_point","electrical ").join(" ")),this.createVertexTemplateEntry(b+"filter;",52,46,"","Filter",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","filter","electrical ").join(" ")),this.createVertexTemplateEntry(a+"=mxgraph.electrical.logic_gates.bandpass_filter;",52,46,"","Bandpass Filter",null,null,this.getTagsForStencil("mxgraph.electrical.logic_gates",
+null,this.getTagsForStencil("mxgraph.electrical.abstract","quantizer","electrical ").join(" ")),this.createVertexTemplateEntry(b+"delta;",50,50,"","Delta",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","delta","electrical ").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE+"=mxgraph.electrical.abstract.function;html=1;shadow=0;dashed=0;align=center;strokeWidth=1;fontSize=24",50,50,"fn","Function",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","function",
+"electrical ").join(" ")),this.createVertexTemplateEntry(b+"integrator;",50,50,"","Integrator",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","integrator","electrical ").join(" ")),this.createVertexTemplateEntry(b+"multiplier;",50,50,"","Multiplier",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","multiplier","electrical ").join(" ")),this.createVertexTemplateEntry(b+"sum;",50,50,"","Sum",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","sum","electrical ").join(" ")),
+this.createVertexTemplateEntry(b+"summation_point;",50,50,"","Summation Point",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","summation_point","electrical ").join(" ")),this.createVertexTemplateEntry(b+"filter;",52,46,"","Filter",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","filter","electrical ").join(" ")),this.createVertexTemplateEntry(a+"=mxgraph.electrical.logic_gates.bandpass_filter;",52,46,"","Bandpass Filter",null,null,this.getTagsForStencil("mxgraph.electrical.logic_gates",
 "bandpass_filter","").join(" ")),this.createVertexTemplateEntry(a+"=mxgraph.electrical.logic_gates.highpass_filter;",52,46,"","Highpass Filter",null,null,this.getTagsForStencil("mxgraph.electrical.logic_gates","highpass_filter","").join(" ")),this.createVertexTemplateEntry(a+"=mxgraph.electrical.logic_gates.lowpass_filter;",52,46,"","Lowpass Filter",null,null,this.getTagsForStencil("mxgraph.electrical.logic_gates","lowpass_filter","").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE+
-"=mxgraph.electrical.abstract.thermistor_with_independent_integral_heater;html=1;shadow=0;dashed=0;fillColor=#ffffff;strokeColor=#000000;strokeWidth=1;align=center;overflow=fill;fontSize=12;",100,94.25,'<table cellpadding="0" cellspacing="0" style="width:100%;height:100%;"><tr height="45%"><td align="center">\\temp\\</td></tr><tr height="55%"><td></td></tr></table>',"Thermistor With Independent Integral Heater",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","thermistor_with_independent_integral_heater",
-"electrical ").join(" ")),this.createVertexTemplateEntry(b+"voltage_regulator;",70,58,"","Voltage Regulator",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","voltage_regulator","electrical ").join(" ")),this.createVertexTemplateEntry(p+"vdd;fontSize=24;",60,40,"V<sub>dd</sub>","Vdd",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","vdd","electrical signal source ").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=top;"+mxConstants.STYLE_VERTICAL_ALIGN+
-"=bottom;"+mxConstants.STYLE_SHAPE+"=mxgraph.electrical.signal_sources.vss2;shadow=0;dashed=0;fillColor=#ffffff;align=center;strokeColor=#000000;strokeWidth=1;fontSize=24;html=1;",60,40,"V<sub>ss</sub>","Vss",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","vss2","electrical signal source ").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=top;"+mxConstants.STYLE_VERTICAL_ALIGN+"=bottom;"+mxConstants.STYLE_SHAPE+"=mxgraph.electrical.signal_sources.current_flow;shadow=0;dashed=0;fillColor=#ffffff;align=center;strokeColor=#000000;strokeWidth=1;fontSize=10;html=1;",
-70,10,"5 mA","Current Flow",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","current_flow","electrical signal source ").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_LABEL_POSITION+"=right;"+mxConstants.STYLE_ALIGN+"=left;"+mxConstants.STYLE_SHAPE+"=mxgraph.electrical.signal_sources.voltage;shadow=0;dashed=0;fillColor=#ffffff;strokeColor=#000000;strokeWidth=1;fontSize=10;html=1;",10,70,"1.2 V","Voltage",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources",
-"voltage","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"equipotential;",90,90,"","Equipotential",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","equipotential","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"protective_earth;",25,20,"","Equipotential",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","protective_earth","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"signal_ground;",
-45,30,"","Ground",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","signal_ground","electrical signal source ").join(" ")),this.createVertexTemplateEntry(f+"chassis;",65,32,"","Chassis",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","chassis","electrical ").join(" ")),this.createVertexTemplateEntry(f+"circuit_breaker;",100,13,"","Circuit Breaker",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","circuit breaker","electrical ").join(" ")),
-this.createVertexTemplateEntry(f+"generic_component",60,60,"","Generic Component",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","generic component","electrical ").join(" ")),this.createVertexTemplateEntry(f+"permanent_magnet",20,70,"","Permanent Magnet",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","permanent magnet","electrical ").join(" ")),this.createVertexTemplateEntry(f+"thermal_element",100,32,"","Thermal Element",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources",
-"thermal element","electrical ").join(" ")),this.createVertexTemplateEntry(f+"igniter_plug",72,39,"","Igniter Plug",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","igniter plug","electrical ").join(" ")),this.createVertexTemplateEntry("shape=mxgraph.arrows2.arrow;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=top;strokeWidth=1;dy=0;dx=10;notch=0;",100,30,"","Pickup Head",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources",
-"pickup head","electrical ").join(" ")),this.createVertexTemplateEntry(f+"squib_ignitor",100,100,"","Squib Ignitor",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","squib ignitor","electrical ").join(" ")),this.createVertexTemplateEntry(f+"transducer",70,60,"","Transducer",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","transducer","electrical ").join(" ")),this.createVertexTemplateEntry(f+"transducer_2",80,100,"","Transducer",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources",
-"transducer","electrical ").join(" ")),this.createVertexTemplateEntry(f+"thermopile",80,82,"","Thermopile",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","thermopile","electrical ").join(" ")),this.createVertexTemplateEntry(f+"indicator",60,60,"","Indicator",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","indicator","electrical ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.surge_protector;",
-70,20,"","Surge Protector",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","surge protector","electrical ").join(" ")),this.createVertexTemplateEntry(f+"surge_protector_2;",70,24,"","Surge Protector",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","surge protector","electrical ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=top;strokeWidth=1;shape=rect;",130,50,
-"","Material",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","material","electrical ").join(" ")),this.createVertexTemplateEntry(f+"sensing_link_squib",130,40,"","Sensing Link Squib",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","sensing link squib","electrical ").join(" ")),this.createVertexTemplateEntry(f+"delay_element",100,100,"","Delay Element",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","delay_element","electrical ").join(" ")),
-this.createVertexTemplateEntry(r+"buzzer",80,50,"","Buzzer",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","buzzer","electrical radio audio ").join(" ")),this.createVertexTemplateEntry(f+"adapter",100,40,"","Adapter",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","adapter","electrical radio audio ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=top;strokeWidth=1;shape=ellipse;perimeter=ellipsePerimeter;",
-15,15,"","Circuit Terminal",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","circuit terminal","electrical radio audio ").join(" ")),this.createEdgeTemplateEntry("endArrow=open;html=1;strokeColor=#000000;strokeWidth=1;endFill=0;endSize=20;",100,0,"","M/F Contact",null,this.getTagsForStencil("mxgraph.electrical.signal_sources","","mf contact").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.mf_contact_2",
+"=mxgraph.electrical.abstract.thermistor_with_independent_integral_heater;html=1;shadow=0;dashed=0;strokeWidth=1;align=center;overflow=fill;fontSize=12;",100,94.25,'<table cellpadding="0" cellspacing="0" style="width:100%;height:100%;"><tr height="45%"><td align="center">\\temp\\</td></tr><tr height="55%"><td></td></tr></table>',"Thermistor With Independent Integral Heater",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","thermistor_with_independent_integral_heater","electrical ").join(" ")),
+this.createVertexTemplateEntry(b+"voltage_regulator;",70,58,"","Voltage Regulator",null,null,this.getTagsForStencil("mxgraph.electrical.abstract","voltage_regulator","electrical ").join(" ")),this.createVertexTemplateEntry(p+"vdd;fontSize=24;",60,40,"V<sub>dd</sub>","Vdd",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","vdd","electrical signal source ").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=top;"+mxConstants.STYLE_VERTICAL_ALIGN+
+"=bottom;"+mxConstants.STYLE_SHAPE+"=mxgraph.electrical.signal_sources.vss2;shadow=0;dashed=0;align=center;strokeWidth=1;fontSize=24;html=1;",60,40,"V<sub>ss</sub>","Vss",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","vss2","electrical signal source ").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=top;"+mxConstants.STYLE_VERTICAL_ALIGN+"=bottom;"+mxConstants.STYLE_SHAPE+"=mxgraph.electrical.signal_sources.current_flow;shadow=0;dashed=0;align=center;strokeWidth=1;fontSize=10;html=1;",
+70,10,"5 mA","Current Flow",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","current_flow","electrical signal source ").join(" ")),this.createVertexTemplateEntry(mxConstants.STYLE_LABEL_POSITION+"=right;"+mxConstants.STYLE_ALIGN+"=left;"+mxConstants.STYLE_SHAPE+"=mxgraph.electrical.signal_sources.voltage;shadow=0;dashed=0;strokeWidth=1;fontSize=10;html=1;",10,70,"1.2 V","Voltage",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","voltage","electrical signal source ").join(" ")),
+this.createVertexTemplateEntry(p+"equipotential;",90,90,"","Equipotential",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","equipotential","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"protective_earth;",25,20,"","Equipotential",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","protective_earth","electrical signal source ").join(" ")),this.createVertexTemplateEntry(p+"signal_ground;",45,30,"","Ground",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources",
+"signal_ground","electrical signal source ").join(" ")),this.createVertexTemplateEntry(f+"chassis;",65,32,"","Chassis",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","chassis","electrical ").join(" ")),this.createVertexTemplateEntry(f+"circuit_breaker;",100,13,"","Circuit Breaker",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","circuit breaker","electrical ").join(" ")),this.createVertexTemplateEntry(f+"generic_component",60,60,"","Generic Component",null,
+null,this.getTagsForStencil("mxgraph.electrical.signal_sources","generic component","electrical ").join(" ")),this.createVertexTemplateEntry(f+"permanent_magnet",20,70,"","Permanent Magnet",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","permanent magnet","electrical ").join(" ")),this.createVertexTemplateEntry(f+"thermal_element",100,32,"","Thermal Element",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","thermal element","electrical ").join(" ")),this.createVertexTemplateEntry(f+
+"igniter_plug",72,39,"","Igniter Plug",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","igniter plug","electrical ").join(" ")),this.createVertexTemplateEntry("shape=mxgraph.arrows2.arrow;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;dy=0;dx=10;notch=0;",100,30,"","Pickup Head",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","pickup head","electrical ").join(" ")),this.createVertexTemplateEntry(f+"squib_ignitor",
+100,100,"","Squib Ignitor",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","squib ignitor","electrical ").join(" ")),this.createVertexTemplateEntry(f+"transducer",70,60,"","Transducer",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","transducer","electrical ").join(" ")),this.createVertexTemplateEntry(f+"transducer_2",80,100,"","Transducer",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","transducer","electrical ").join(" ")),this.createVertexTemplateEntry(f+
+"thermopile",80,82,"","Thermopile",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","thermopile","electrical ").join(" ")),this.createVertexTemplateEntry(f+"indicator",60,60,"","Indicator",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","indicator","electrical ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.surge_protector;",
+70,20,"","Surge Protector",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","surge protector","electrical ").join(" ")),this.createVertexTemplateEntry(f+"surge_protector_2;",70,24,"","Surge Protector",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","surge protector","electrical ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=rect;",130,50,"","Material",null,
+null,this.getTagsForStencil("mxgraph.electrical.signal_sources","material","electrical ").join(" ")),this.createVertexTemplateEntry(f+"sensing_link_squib",130,40,"","Sensing Link Squib",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","sensing link squib","electrical ").join(" ")),this.createVertexTemplateEntry(f+"delay_element",100,100,"","Delay Element",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","delay_element","electrical ").join(" ")),this.createVertexTemplateEntry(r+
+"buzzer",80,50,"","Buzzer",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","buzzer","electrical radio audio ").join(" ")),this.createVertexTemplateEntry(f+"adapter",100,40,"","Adapter",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","adapter","electrical radio audio ").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=ellipse;perimeter=ellipsePerimeter;",15,15,
+"","Circuit Terminal",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","circuit terminal","electrical radio audio ").join(" ")),this.createEdgeTemplateEntry("endArrow=open;html=1;strokeWidth=1;endFill=0;endSize=20;",100,0,"","M/F Contact",null,this.getTagsForStencil("mxgraph.electrical.signal_sources","","mf contact").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.mf_contact_2",
 100,10,"","MF Contact 2",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","mf contact","electrical radio audio ").join(" ")),this.createVertexTemplateEntry(f+"terminal_board",75,150,"","Terminal Board",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","terminal board","electrical radio audio ").join(" ")),this.createVertexTemplateEntry(f+"cable_termination",100,50,"","Cable Termination",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","cable termination",
 "electrical radio audio ").join(" ")),this.createVertexTemplateEntry(f+"2_conductor_jack",100,50,"","2-Conductor Jack",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","2 conductor jack two","electrical radio audio ").join(" ")),this.createVertexTemplateEntry(f+"3_conductor_jack",100,50,"","3-Conductor Jack",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","3 conductor jack three","electrical radio audio ").join(" ")),this.createVertexTemplateEntry(f+"2_conductor_plug",
 53,24,"","2-Conductor Plug",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","2 conductor plug two","electrical radio audio ").join(" ")),this.createVertexTemplateEntry(f+"3_conductor_plug",53,24,"","3 Conductor Plug",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources","3 conductor plug","electrical radio audio ").join(" ")),this.createVertexTemplateEntry(f+"normalled_jacks",230,65,"","Normalled Jacks",null,null,this.getTagsForStencil("mxgraph.electrical.signal_sources",
@@ -5198,24 +5189,24 @@ null,this.getTagsForStencil("mxgraph.electrical.thermionic_devices","tetrode","e
 "electrical thermionic thermo device vacuum tube ").join(" "))]);this.addPaletteFunctions("electricalWaveforms","Electrical / Waveforms",!1,[this.createVertexTemplateEntry(t+"pulse_1;",90,90,"","Pulse",null,null,this.getTagsForStencil("mxgraph.electrical.waveforms","pulse_1","electrical waveform signal ").join(" ")),this.createVertexTemplateEntry(t+"pulse_2;",90,90,"","Pulse",null,null,this.getTagsForStencil("mxgraph.electrical.waveforms","pulse_2","electrical waveform signal ").join(" ")),this.createVertexTemplateEntry(t+
 "sawtooth;",90,40,"","Sawtooth",null,null,this.getTagsForStencil("mxgraph.electrical.waveforms","sawtooth","electrical waveform signal ").join(" ")),this.createVertexTemplateEntry(t+"sine_wave;",90,66.18,"","Sine Wave",null,null,this.getTagsForStencil("mxgraph.electrical.waveforms","sine_wave","electrical waveform signal ").join(" ")),this.createVertexTemplateEntry(t+"slow_square_wave;",90,80,"","Chopped Square Wave",null,null,this.getTagsForStencil("mxgraph.electrical.waveforms","slow_square_wave",
 "electrical waveform signal ").join(" ")),this.createVertexTemplateEntry(t+"square_wave;",90,80,"","square_wave",null,null,this.getTagsForStencil("mxgraph.electrical.waveforms","square_wave","electrical waveform signal ").join(" ")),this.createVertexTemplateEntry(t+"step_1;",90,90,"","Step",null,null,this.getTagsForStencil("mxgraph.electrical.waveforms","step_1","electrical waveform signal ").join(" ")),this.createVertexTemplateEntry(t+"step_2;",90,90,"","Step",null,null,this.getTagsForStencil("mxgraph.electrical.waveforms",
-"step_2","electrical waveform signal ").join(" "))]);this.addPaletteFunctions("electricalRotMech","Electrical / Rotating Equipment & Mechanical Functions",!1,[this.createVertexTemplateEntry("verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;fontSize=32;fontColor=#000000;perimeter=ellipsePerimeter;",100,100,"M","Rotating Machine",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","rotating machine","electrical rotating equipment mechanical function functions").join(" ")),
+"step_2","electrical waveform signal ").join(" "))]);this.addPaletteFunctions("electricalRotMech","Electrical / Rotating Equipment & Mechanical Functions",!1,[this.createVertexTemplateEntry("verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;fontSize=32;perimeter=ellipsePerimeter;",100,100,"M","Rotating Machine",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","rotating machine","electrical rotating equipment mechanical function functions").join(" ")),
 this.createVertexTemplateEntry(w+"armature;pointerEvents=1;",100,100,"","Armature",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","armature","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+"field;pointerEvents=1;",90,15,"","Field",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","field","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(f+"permanent_magnet;pointerEvents=1;",
 20,70,"","Permanent Magnet",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","permanent magnet","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+"winding_connection;",100,100,"","Winding Connection",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","winding connection","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+"synchro;",80,100,"","Synchro",null,null,
-this.getTagsForStencil("mxgraph.electrical.rot_mech","synchro","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=top;strokeWidth=1;shape=trapezoid;perimeter=none;",75,25,"","Brake",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","brake","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+
-"gearing;pointerEvents=1;",100,64,"","Gearing",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","gearing","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+"verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.rot_mech.rotation;",69,54,"","Rotation",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","rotation","electrical rotating equipment mechanical function functions").join(" ")),
+this.getTagsForStencil("mxgraph.electrical.rot_mech","synchro","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=trapezoid;perimeter=none;",75,25,"","Brake",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","brake","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+"gearing;pointerEvents=1;",
+100,64,"","Gearing",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","gearing","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+"verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.rot_mech.rotation;",69,54,"","Rotation",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","rotation","electrical rotating equipment mechanical function functions").join(" ")),
 this.createVertexTemplateEntry(w+"clutch;pointerEvents=1;",100,20,"","Clutch",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","clutch","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+"clutch_2;pointerEvents=1;",90,60,"","Clutch",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","clutch","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+"delayed_action;pointerEvents=1;",
 72,50,"","Delayed Action",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","delayed action","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+"manual_control;pointerEvents=1;",50,50,"","Manual Control",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","manual control","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+"blocking_device;pointerEvents=1;",100,15,
 "","Blocking Device",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","blocking device","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+"latching_device;pointerEvents=1;",100,22,"","Latching Device",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","latching device","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+"mechanical_interlock;pointerEvents=1;",100,
 30,"","Mechanical Interlock",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","mechanical interlock","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+"automatic_return;pointerEvents=1;",100,12,"","Automatic Return",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","automatic_return","electrical rotating equipment mechanical function functions").join(" ")),this.createVertexTemplateEntry(w+"detent;pointerEvents=1;",
 100,8,"","Detent",null,null,this.getTagsForStencil("mxgraph.electrical.rot_mech","detent","electrical rotating equipment mechanical function functions").join(" "))]);var z=[this.createVertexTemplateEntry(v+"bus_width;pointerEvents=1;",130,156,"","Bus Width",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","bus width","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"line_concentrator;",130,130,"","Line Concentrator",null,null,this.getTagsForStencil("mxgraph.electrical.transmission",
 "line concentrator","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"cable_group;pointerEvents=1;",130,130,"","Cable Group",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","cable group","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"overground_enclosure;",130,136,"","Overground Enclosure",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","overground enclosure","electrical transmission paths bus buses").join(" ")),
-this.createVertexTemplateEntry(v+"optical_fiber;",130,80,"","Optical Fiber",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","optical fiber","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=ellipse;",10,10,"","Terminal",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","terminal","electrical transmission paths bus buses").join(" ")),
-this.createVertexTemplateEntry(v+"terminal_3_phase;pointerEvents=1;",43,10,"","Terminal 3 Phase",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","Terminal 3 Phase","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;strokeColor=#000000;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;fontColor=#000000;fontSize=50;fontStyle=1;perimeter=ellipsePerimeter;",130,130,
-"T","Terminal",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","terminal","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"line_cable;",130,60,"","Line/Cable",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","line cable","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"anticreepage_device;pointerEvents=1;",130,88,"","Anticreepage Device",null,null,this.getTagsForStencil("mxgraph.electrical.transmission",
-"anticreepage device","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"testPoint;",60,130,"","Test Point",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","test point","electrical transmission paths bus buses").join(" ")),this.createEdgeTemplateEntry("endArrow=none;html=1;strokeColor=#000000;strokeWidth=1;",100,0,"","Transmission Path",null,this.getTagsForStencil("mxgraph.electrical.signal_sources","","transmission path").join(" ")),this.createEdgeTemplateEntry("endArrow=classicThin;html=1;strokeColor=#000000;strokeWidth=1;endSize=20;",
-100,0,"","Direction of Flow",null,this.getTagsForStencil("mxgraph.electrical.signal_sources","","direction flow").join(" ")),this.createVertexTemplateEntry(v+"straightBus;",90,130,"","Straight Bus",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","straight bus","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.bendArrow;dy=15;dx=38;notch=0;arrowHead=55;rounded=0;strokeColor=#000000;strokeWidth=1;fillColor=#FFFFFF;",
-130,130,"","Elbow Bus",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","elbow bus","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.bendArrow;dy=15;dx=38;notch=0;arrowHead=55;rounded=0;strokeColor=#000000;strokeWidth=1;fillColor=#FFFFFF;flipH=1;",130,130,"","Elbow Bus",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","elbow bus","electrical transmission paths bus buses").join(" ")),
-this.createVertexTemplateEntry(v+"2_line_bus;",130,25,"","2-Line Bus",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","2 two line bus","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"3_line_bus;",130,30,"","3-Line Bus",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","3 three line bus","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"4_line_bus;",130,75,"","4-Line Bus",null,null,this.getTagsForStencil("mxgraph.electrical.transmission",
+this.createVertexTemplateEntry(v+"optical_fiber;",130,80,"","Optical Fiber",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","optical fiber","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=ellipse;",10,10,"","Terminal",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","terminal","electrical transmission paths bus buses").join(" ")),
+this.createVertexTemplateEntry(v+"terminal_3_phase;pointerEvents=1;",43,10,"","Terminal 3 Phase",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","Terminal 3 Phase","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry("verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;fontSize=50;fontStyle=1;perimeter=ellipsePerimeter;",130,130,"T","Terminal",null,null,this.getTagsForStencil("mxgraph.electrical.transmission",
+"terminal","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"line_cable;",130,60,"","Line/Cable",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","line cable","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"anticreepage_device;pointerEvents=1;",130,88,"","Anticreepage Device",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","anticreepage device","electrical transmission paths bus buses").join(" ")),
+this.createVertexTemplateEntry(v+"testPoint;",60,130,"","Test Point",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","test point","electrical transmission paths bus buses").join(" ")),this.createEdgeTemplateEntry("endArrow=none;html=1;strokeWidth=1;",100,0,"","Transmission Path",null,this.getTagsForStencil("mxgraph.electrical.signal_sources","","transmission path").join(" ")),this.createEdgeTemplateEntry("endArrow=classicThin;html=1;strokeWidth=1;endSize=20;",100,0,"","Direction of Flow",
+null,this.getTagsForStencil("mxgraph.electrical.signal_sources","","direction flow").join(" ")),this.createVertexTemplateEntry(v+"straightBus;",90,130,"","Straight Bus",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","straight bus","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.bendArrow;dy=15;dx=38;notch=0;arrowHead=55;rounded=0;strokeWidth=1",130,130,"","Elbow Bus",
+null,null,this.getTagsForStencil("mxgraph.electrical.transmission","elbow bus","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry("html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.bendArrow;dy=15;dx=38;notch=0;arrowHead=55;rounded=0;strokeWidth=1;flipH=1;",130,130,"","Elbow Bus",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","elbow bus","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+
+"2_line_bus;",130,25,"","2-Line Bus",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","2 two line bus","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"3_line_bus;",130,30,"","3-Line Bus",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","3 three line bus","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"4_line_bus;",130,75,"","4-Line Bus",null,null,this.getTagsForStencil("mxgraph.electrical.transmission",
 "3 three line bus","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"8_line_bus;",130,180,"","8-Line Bus",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","3 three line bus","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"twoLineBusElbow;notch=25;",120,120,"","2-Line Bus Elbow",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","2 two line bus elbow","electrical transmission paths bus buses").join(" ")),
 this.createVertexTemplateEntry(v+"threeLineBusElbow;notch=30;",120,120,"","3-Line Bus Elbow",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","3 two line bus elbow","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+"fourLineBusElbow;notch=75;",120,120,"","4-Line Bus Elbow",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","4 two line bus elbow","electrical transmission paths bus buses").join(" ")),this.createVertexTemplateEntry(v+
 "eightLineBusElbow;notch=180;",200,200,"","8-Line Bus Elbow",null,null,this.getTagsForStencil("mxgraph.electrical.transmission","8 two line bus elbow","electrical transmission paths bus buses").join(" "))];this.addPalette("electricalTransmission","Electrical / Transmission Paths",!1,mxUtils.bind(this,function(a){for(var c=0;c<z.length;c++)a.appendChild(z[c](a))}))}})();(function(){Sidebar.prototype.addErPalette=function(){var a=this,b=new mxCell("Row",new mxGeometry(0,0,40,26),"text;strokeColor=none;fillColor=none;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;");b.vertex=!0;var e=[this.addEntry("er entity relation table",function(){var c=new mxCell("Table",new mxGeometry(0,0,160,110),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;fontSize=14;");
@@ -5231,19 +5222,18 @@ c.vertex=!0;var d=a.cloneCell(b,"PK");d.connectable=!1;d.style="shape=partialRec
 c.vertex=!0;var d=a.cloneCell(b,"");d.connectable=!1;d.style="shape=partialRectangle;top=0;left=0;bottom=0;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;fontSize=12;";d.geometry.width=30;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Row 6")}),this.addEntry("er entity relation table row",function(){var c=new mxCell("uniqueId",new mxGeometry(0,0,90,26),"shape=partialRectangle;top=0;left=0;right=0;bottom=0;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontSize=12;");
 c.vertex=!0;var d=a.cloneCell(b,"");d.connectable=!1;d.style="shape=partialRectangle;top=0;left=0;bottom=0;right=0;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;fontSize=12;";d.geometry.width=30;c.insert(d);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Row 7")}),this.addEntry("er entity relation table row divider hline line separator",function(){var c=new mxCell("",new mxGeometry(0,
 0,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;");c.vertex=!0;return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Divider")}),this.addEntry("er entity relation table row spacer space gap separator",function(){var c=new mxCell("",new mxGeometry(0,0,20,14),"text;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=4;spacingRight=4;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;");
-c.vertex=!0;return a.createVertexTemplateFromCells([c.clone()],c.geometry.width,c.geometry.height,"Spacer")}),this.createVertexTemplateEntry("text;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;strokeColor=#000000;fillColor=#e0e0e0;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=14;",80,26,"Title","Title",null,null,"er entity relation table title label"),this.addEntry("er entity relation table",function(){var c=new mxCell("Entity",new mxGeometry(0,0,160,120),
-"swimlane;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;fillColor=#008cff;fontColor=#FFFFFF;rounded=1;fontSize=14;fontStyle=0;strokeWidth=2;resizeParent=0;resizeLast=1;shadow=0;dashed=0;align=center;");c.vertex=!0;var b=new mxCell("+Attribute1\n+Attribute2\n+Attribute3",new mxGeometry(0,30,160,90),"align=left;strokeColor=none;fillColor=none;spacingLeft=4;fontSize=12;verticalAlign=top;resizable=0;rotatable=0;part=1;");b.vertex=!0;c.insert(b);return a.createVertexTemplateFromCells([c],
-c.geometry.width,c.geometry.height,"Entity 2")}),this.createVertexTemplateEntry("ellipse;shape=doubleEllipse;margin=10;strokeWidth=2;fontSize=14;whiteSpace=wrap;html=1;align=center;",100,100,"Attribute","Attribute",null,null,"er entity relation attribute"),this.createVertexTemplateEntry("ellipse;shape=cloud;strokeWidth=2;fontSize=14;whiteSpace=wrap;html=1;align=center;",100,100,"Cloud","Cloud",null,null,"er entity relation cloud"),this.createVertexTemplateEntry("strokeWidth=2;rounded=1;arcSize=10;whiteSpace=wrap;html=1;align=center;fontSize=14;",
-100,100,"Entity","Entity 3",null,null,"er entity relation "),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;align=center;fontSize=14;",100,100,"Entity","Entity 4",null,null,"er entity relation "),this.createVertexTemplateEntry("shape=ext;strokeWidth=2;margin=10;double=1;whiteSpace=wrap;html=1;align=center;fontSize=14;",100,100,"Entity","Entity 5",null,null,"er entity relation "),this.createVertexTemplateEntry("shape=rhombus;strokeWidth=2;fontSize=17;perimeter=rhombusPerimeter;whiteSpace=wrap;html=1;align=center;fontSize=14;",
-100,100,"Has","Has",null,null,"er entity relation has"),this.createVertexTemplateEntry("shape=rhombus;double=1;strokeWidth=2;fontSize=17;perimeter=rhombusPerimeter;whiteSpace=wrap;html=1;align=center;fontSize=14;",100,100,"Has","Has",null,null,"er entity relation has"),this.addEntry("er entity relation hierarchy",function(){var c=new mxCell("",new mxGeometry(0,0,100,100),"rounded=1;absoluteArcSize=1;html=1;strokeWidth=2;arcSize=10;fontSize=14;");c.vertex=!0;var b=new mxCell("main",new mxGeometry(0,
-0,50,100),"html=1;strokeWidth=2;shape=mxgraph.er.anchor;fontSize=14;whiteSpace=wrap;");b.vertex=!0;c.insert(b);b=new mxCell("sub",new mxGeometry(50,5,45,90),"rounded=1;absoluteArcSize=1;html=1;strokeWidth=2;arcSize=10;fontSize=14;whiteSpace=wrap;points=[];strokeColor=inherit;fillColor=inherit;");b.vertex=!0;c.insert(b);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Hierarchy")}),this.createVertexTemplateEntry("shape=note;strokeWidth=2;fontSize=14;size=20;whiteSpace=wrap;html=1;",
-100,100,"Note","Note",null,null,"er entity relation note"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;endFill=1;",100,100,"","0 to Many Optional",null,"er entity relation zero many optional"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;",100,100,"","1 to Many",null,"er entity relation one many"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;",
-100,100,"","1 Mandatory",null,"er entity relation one mandatory"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERmandOne;",100,100,"","1 to 1",null,"er entity relation one"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERone;endFill=1;",100,100,"","1",null,"er entity relation one"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToOne;endFill=1;",
-100,100,"","0 to 1",null,"er entity relation zero one"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERmany;",100,100,"","Many",null,"er entity relation many"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERmany;startArrow=ERmany;",100,100,"","Many to Many",null,"er entity relation many"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERzeroToOne;",
-100,100,"","1 Optional to Many Optional",null,"er entity relation one optional many"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERmandOne;",100,100,"","1 Mandatory to Many Optional",null,"er entity relation one mandatory many optional"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToOne;startArrow=ERmandOne;",100,100,"","1 Mandatory to 1 Optional",null,"er entity relation one mandatory optional"),
-this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;startArrow=ERmandOne;",100,100,"","1 Mandatory to Many Mandatory",null,"er entity relation one mandatory many"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;startArrow=ERzeroToOne;",100,100,"","1 Optional to Many Mandatory",null,"er entity relation one optional mandatory many"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;startArrow=ERoneToMany;",
-100,100,"","Many Mandatory to Many Mandatory",null,"er entity relation mandatory many"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;startArrow=ERzeroToMany;",100,100,"","Many Optional to Many Mandatory",null,"er entity relation mandatory many optional"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;endFill=1;startArrow=ERzeroToMany;",100,100,"","Many Optional to Many Optional",null,
-"er entity relation many optional")];this.addPaletteFunctions("er",mxResources.get("entityRelation"),!1,e)}})();(function(){Sidebar.prototype.addFloorplanPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;shape=mxgraph.floorplan.",b=[this.createVertexTemplateEntry(a+"wall;fillColor=#000000;",100,10,"","Wall (Horizontal)",null,null,this.getTagsForStencil("mxgraph.floorplan","wall","floorplan ").join(" ")),this.createVertexTemplateEntry(a+"wall;fillColor=#000000;direction=south;",10,100,"","Wall (Vertical)",null,null,this.getTagsForStencil("mxgraph.floorplan",
+c.vertex=!0;return a.createVertexTemplateFromCells([c.clone()],c.geometry.width,c.geometry.height,"Spacer")}),this.createVertexTemplateEntry("text;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;fillColor=#e0e0e0;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=14;",80,26,"Title","Title",null,null,"er entity relation table title label"),this.addEntry("er entity relation table",function(){var c=new mxCell("Entity",new mxGeometry(0,0,160,120),"swimlane;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;fillColor=#008cff;fontColor=#FFFFFF;rounded=1;fontSize=14;fontStyle=0;strokeWidth=2;resizeParent=0;resizeLast=1;shadow=0;dashed=0;align=center;");
+c.vertex=!0;var b=new mxCell("+Attribute1\n+Attribute2\n+Attribute3",new mxGeometry(0,30,160,90),"align=left;strokeColor=none;fillColor=none;spacingLeft=4;fontSize=12;verticalAlign=top;resizable=0;rotatable=0;part=1;");b.vertex=!0;c.insert(b);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Entity 2")}),this.createVertexTemplateEntry("ellipse;shape=doubleEllipse;margin=10;strokeWidth=2;fontSize=14;whiteSpace=wrap;html=1;align=center;",100,100,"Attribute","Attribute",
+null,null,"er entity relation attribute"),this.createVertexTemplateEntry("ellipse;shape=cloud;strokeWidth=2;fontSize=14;whiteSpace=wrap;html=1;align=center;",100,100,"Cloud","Cloud",null,null,"er entity relation cloud"),this.createVertexTemplateEntry("strokeWidth=2;rounded=1;arcSize=10;whiteSpace=wrap;html=1;align=center;fontSize=14;",100,100,"Entity","Entity 3",null,null,"er entity relation "),this.createVertexTemplateEntry("strokeWidth=2;whiteSpace=wrap;html=1;align=center;fontSize=14;",100,100,
+"Entity","Entity 4",null,null,"er entity relation "),this.createVertexTemplateEntry("shape=ext;strokeWidth=2;margin=10;double=1;whiteSpace=wrap;html=1;align=center;fontSize=14;",100,100,"Entity","Entity 5",null,null,"er entity relation "),this.createVertexTemplateEntry("shape=rhombus;strokeWidth=2;fontSize=17;perimeter=rhombusPerimeter;whiteSpace=wrap;html=1;align=center;fontSize=14;",100,100,"Has","Has",null,null,"er entity relation has"),this.createVertexTemplateEntry("shape=rhombus;double=1;strokeWidth=2;fontSize=17;perimeter=rhombusPerimeter;whiteSpace=wrap;html=1;align=center;fontSize=14;",
+100,100,"Has","Has",null,null,"er entity relation has"),this.addEntry("er entity relation hierarchy",function(){var c=new mxCell("",new mxGeometry(0,0,100,100),"rounded=1;absoluteArcSize=1;html=1;strokeWidth=2;arcSize=10;fontSize=14;");c.vertex=!0;var b=new mxCell("main",new mxGeometry(0,0,50,100),"html=1;strokeWidth=2;shape=mxgraph.er.anchor;fontSize=14;whiteSpace=wrap;");b.vertex=!0;c.insert(b);b=new mxCell("sub",new mxGeometry(50,5,45,90),"rounded=1;absoluteArcSize=1;html=1;strokeWidth=2;arcSize=10;fontSize=14;whiteSpace=wrap;points=[];strokeColor=inherit;fillColor=inherit;");
+b.vertex=!0;c.insert(b);return a.createVertexTemplateFromCells([c],c.geometry.width,c.geometry.height,"Hierarchy")}),this.createVertexTemplateEntry("shape=note;strokeWidth=2;fontSize=14;size=20;whiteSpace=wrap;html=1;",100,100,"Note","Note",null,null,"er entity relation note"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;endFill=1;",100,100,"","0 to Many Optional",null,"er entity relation zero many optional"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;",
+100,100,"","1 to Many",null,"er entity relation one many"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;",100,100,"","1 Mandatory",null,"er entity relation one mandatory"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERmandOne;",100,100,"","1 to 1",null,"er entity relation one"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERone;endFill=1;",
+100,100,"","1",null,"er entity relation one"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToOne;endFill=1;",100,100,"","0 to 1",null,"er entity relation zero one"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERmany;",100,100,"","Many",null,"er entity relation many"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERmany;startArrow=ERmany;",100,100,"","Many to Many",
+null,"er entity relation many"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERzeroToOne;",100,100,"","1 Optional to Many Optional",null,"er entity relation one optional many"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERmandOne;",100,100,"","1 Mandatory to Many Optional",null,"er entity relation one mandatory many optional"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToOne;startArrow=ERmandOne;",
+100,100,"","1 Mandatory to 1 Optional",null,"er entity relation one mandatory optional"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;startArrow=ERmandOne;",100,100,"","1 Mandatory to Many Mandatory",null,"er entity relation one mandatory many"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;startArrow=ERzeroToOne;",100,100,"","1 Optional to Many Mandatory",null,"er entity relation one optional mandatory many"),
+this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;startArrow=ERoneToMany;",100,100,"","Many Mandatory to Many Mandatory",null,"er entity relation mandatory many"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;startArrow=ERzeroToMany;",100,100,"","Many Optional to Many Mandatory",null,"er entity relation mandatory many optional"),this.createEdgeTemplateEntry("edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;endFill=1;startArrow=ERzeroToMany;",
+100,100,"","Many Optional to Many Optional",null,"er entity relation many optional")];this.addPaletteFunctions("er",mxResources.get("entityRelation"),!1,e)}})();(function(){Sidebar.prototype.addFloorplanPalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;shape=mxgraph.floorplan.",b=[this.createVertexTemplateEntry(a+"wall;fillColor=#000000;",100,10,"","Wall (Horizontal)",null,null,this.getTagsForStencil("mxgraph.floorplan","wall","floorplan ").join(" ")),this.createVertexTemplateEntry(a+"wall;fillColor=#000000;direction=south;",10,100,"","Wall (Vertical)",null,null,this.getTagsForStencil("mxgraph.floorplan",
 "wall","floorplan ").join(" ")),this.createVertexTemplateEntry(a+"wallCorner;fillColor=#000000;",100,100,"","Wall (Corner NW)",null,null,this.getTagsForStencil("mxgraph.floorplan","wallCorner","floorplan ").join(" ")),this.createVertexTemplateEntry(a+"wallCorner;fillColor=#000000;direction=south;",100,100,"","Wall (Corner NE)",null,null,this.getTagsForStencil("mxgraph.floorplan","wallCorner","floorplan ").join(" ")),this.createVertexTemplateEntry(a+"wallCorner;fillColor=#000000;direction=west",100,
 100,"","Wall (Corner SE)",null,null,this.getTagsForStencil("mxgraph.floorplan","wallCorner","floorplan ").join(" ")),this.createVertexTemplateEntry(a+"wallCorner;fillColor=#000000;direction=north",100,100,"","Wall (Corner SW)",null,null,this.getTagsForStencil("mxgraph.floorplan","wallCorner","floorplan ").join(" ")),this.createVertexTemplateEntry(a+"wallU;fillColor=#000000;",100,100,"","Wall (U)",null,null,this.getTagsForStencil("mxgraph.floorplan","wallU","floorplan ").join(" ")),this.createVertexTemplateEntry(a+
 "room;fillColor=#000000;",100,100,"","Room",null,null,this.getTagsForStencil("mxgraph.floorplan","room","floorplan ").join(" ")),this.createVertexTemplateEntry("shape=dimension;whiteSpace=wrap;html=1;align=center;points=[];verticalAlign=bottom;spacingBottom=-5;labelBackgroundColor=#ffffff",100,40,"Label","Horizontal Dimension",null,null,"horizontal dimension measure distance unit"),this.createVertexTemplateEntry("shape=dimension;direction=west;whiteSpace=wrap;html=1;align=center;points=[];verticalAlign=top;spacingTop=-8;labelBackgroundColor=#ffffff",
@@ -7839,10 +7829,10 @@ RemoteLibrary.prototype.saveAs=function(a,c,b){};RemoteLibrary.prototype.updateF
  mxClient.IS_IOS || */
 var StorageDialog=function(a,c,b){function d(p,d,t,e,A,k){function g(){mxEvent.addListener(x,"click",null!=k?k:function(){t!=App.MODE_GOOGLE||a.isDriveDomain()?t==App.MODE_GOOGLE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(t,n.checked);c()})):t==App.MODE_ONEDRIVE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.oneDrive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(t,n.checked);
 c()})):(a.setMode(t,n.checked),c()):window.location.hostname=DriveClient.prototype.newAppHostname})}++q>b&&(mxUtils.br(f),q=0);var x=document.createElement("a");x.style.overflow="hidden";x.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";x.className="geBaseButton";x.style.boxSizing="border-box";x.style.fontSize="11px";x.style.position="relative";x.style.margin="4px";x.style.marginTop="2px";x.style.padding="8px 10px 12px 10px";x.style.width="88px";x.style.height=StorageDialog.extended?"50px":
-"100px";x.style.whiteSpace="nowrap";x.setAttribute("title",d);mxClient.IS_QUIRKS&&(x.style.cssFloat="left",x.style.zoom="1");var u=document.createElement("div");u.style.textOverflow="ellipsis";u.style.overflow="hidden";if(null!=p){var B=document.createElement("img");B.setAttribute("src",p);B.setAttribute("border","0");B.setAttribute("align","absmiddle");B.style.width=StorageDialog.extended?"24px":"60px";B.style.height=StorageDialog.extended?"24px":"60px";B.style.paddingBottom=StorageDialog.extended?
-"4px":"6px";x.appendChild(B)}else u.style.paddingTop="5px",u.style.whiteSpace="normal",mxClient.IS_IOS?(x.style.padding="0px 10px 20px 10px",x.style.top="6px"):mxClient.IS_FF&&(u.style.paddingTop="0px",u.style.marginTop="-2px");StorageDialog.extended&&(x.style.paddingTop="4px",x.style.marginBottom="0px",u.display="inline-block",2==b&&(B.style.width="38px",B.style.height="38px",x.style.width="80px",x.style.height="68px"));x.appendChild(u);mxUtils.write(u,d);if(null!=A)for(p=0;p<A.length;p++)mxUtils.br(u),
-mxUtils.write(u,A[p]);if(null!=e&&null==a[e]){B.style.visibility="hidden";mxUtils.setOpacity(u,10);var v=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});v.spin(x);var E=window.setTimeout(function(){null==a[e]&&(v.stop(),x.style.display="none")},3E4);a.addListener("clientLoaded",mxUtils.bind(this,function(b,c){null!=a[e]&&c.getProperty("client")==a[e]&&(window.clearTimeout(E),mxUtils.setOpacity(u,
-100),B.style.visibility="",v.stop(),g(),"drive"==e&&null!=l.parentNode&&l.parentNode.removeChild(l))}))}else g();f.appendChild(x)}b=null!=b?b:2;var g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace="nowrap";g.style.paddingTop="0px";g.style.paddingBottom="20px";var e=a.addLanguageMenu(g,!0);null!=e&&(e.style.bottom=parseInt("28px")-3+"px");if(!a.isOffline()&&1<a.getServiceCount()){e=document.createElement("a");e.setAttribute("href","https://about.draw.io/support/");e.setAttribute("title",
+"100px";x.style.whiteSpace="nowrap";x.setAttribute("title",d);mxClient.IS_QUIRKS&&(x.style.cssFloat="left",x.style.zoom="1");var B=document.createElement("div");B.style.textOverflow="ellipsis";B.style.overflow="hidden";if(null!=p){var u=document.createElement("img");u.setAttribute("src",p);u.setAttribute("border","0");u.setAttribute("align","absmiddle");u.style.width=StorageDialog.extended?"24px":"60px";u.style.height=StorageDialog.extended?"24px":"60px";u.style.paddingBottom=StorageDialog.extended?
+"4px":"6px";x.appendChild(u)}else B.style.paddingTop="5px",B.style.whiteSpace="normal",mxClient.IS_IOS?(x.style.padding="0px 10px 20px 10px",x.style.top="6px"):mxClient.IS_FF&&(B.style.paddingTop="0px",B.style.marginTop="-2px");StorageDialog.extended&&(x.style.paddingTop="4px",x.style.marginBottom="0px",B.display="inline-block",2==b&&(u.style.width="38px",u.style.height="38px",x.style.width="80px",x.style.height="68px"));x.appendChild(B);mxUtils.write(B,d);if(null!=A)for(p=0;p<A.length;p++)mxUtils.br(B),
+mxUtils.write(B,A[p]);if(null!=e&&null==a[e]){u.style.visibility="hidden";mxUtils.setOpacity(B,10);var v=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});v.spin(x);var E=window.setTimeout(function(){null==a[e]&&(v.stop(),x.style.display="none")},3E4);a.addListener("clientLoaded",mxUtils.bind(this,function(b,c){null!=a[e]&&c.getProperty("client")==a[e]&&(window.clearTimeout(E),mxUtils.setOpacity(B,
+100),u.style.visibility="",v.stop(),g(),"drive"==e&&null!=l.parentNode&&l.parentNode.removeChild(l))}))}else g();f.appendChild(x)}b=null!=b?b:2;var g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace="nowrap";g.style.paddingTop="0px";g.style.paddingBottom="20px";var e=a.addLanguageMenu(g,!0);null!=e&&(e.style.bottom=parseInt("28px")-3+"px");if(!a.isOffline()&&1<a.getServiceCount()){e=document.createElement("a");e.setAttribute("href","https://about.draw.io/support/");e.setAttribute("title",
 mxResources.get("help"));e.setAttribute("target","_blank");e.style.position="absolute";e.style.userSelect="none";e.style.textDecoration="none";e.style.cursor="pointer";e.style.fontSize="12px";e.style.bottom="28px";e.style.left="26px";e.style.color="gray";var k=document.createElement("img");mxUtils.setOpacity(k,50);k.style.height="16px";k.style.width="16px";k.setAttribute("border","0");k.setAttribute("valign","bottom");k.setAttribute("src",Editor.helpImage);k.style.marginRight="2px";e.appendChild(k);
 mxUtils.write(e,mxResources.get("help"));g.appendChild(e)}var m=document.createElement("div");m.style.position="absolute";m.style.cursor="pointer";m.style.fontSize="12px";m.style.bottom="28px";m.style.color="gray";m.style.userSelect="none";mxUtils.write(m,mxResources.get("decideLater"));mxUtils.setPrefixedStyle(m.style,"transform","translate(-50%,0)");m.style.left="50%";a.isOfflineApp()&&(m.style.bottom="28px");this.init=function(){if(mxClient.IS_QUIRKS||8==document.documentMode)m.style.marginLeft=
 -Math.round(m.clientWidth/2)+"px"};g.appendChild(m);mxEvent.addListener(m,"click",function(){a.hideDialog();var b=Editor.useLocalStorage;a.createFile(a.defaultFilename,null,null,null,null,null,null,!0);Editor.useLocalStorage=b});e=document.createElement("div");mxClient.IS_QUIRKS&&(e.style.whiteSpace="nowrap",e.style.cssFloat="left");e.style.border="1px solid #d3d3d3";e.style.borderWidth="1px 0px 1px 0px";e.style.padding="12px 0px 12px 0px";var n=document.createElement("input");n.setAttribute("type",
@@ -7905,7 +7895,7 @@ function(){e=!0});mxEvent.addListener(d,"touchstart",function(){e=!0});d.classNa
 q.className="geBtn";a.editor.cancelFirst&&d.appendChild(q);if(!a.isOffline()&&"undefined"!=typeof google&&"undefined"!=typeof google.picker&&window.self===window.top){var f=mxUtils.button(mxResources.get("search"),function(){if(null==a.imageSearchPicker){var b=(new google.picker.PickerBuilder).setLocale(mxLanguage).addView(google.picker.ViewId.IMAGE_SEARCH).enableFeature(google.picker.Feature.NAV_HIDDEN);a.imageSearchPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.imageSearchPicker.setVisible(!0)});
 f.className="geBtn";d.appendChild(f);null!=a.drive&&"1"==urlParams.photos&&(f=mxUtils.button(mxResources.get("googlePlus"),function(){a.spinner.spin(document.body,mxResources.get("authorizing"))&&a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();if(null==a.photoPicker){var b=(new google.picker.PickerBuilder).setAppId(a.drive.appId).setLocale(mxLanguage).setOAuthToken(a.drive.token).addView(google.picker.ViewId.PHOTO_UPLOAD);a.photoPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.photoPicker.setVisible(!0)}))}),
 f.className="geBtn",d.appendChild(f))}f=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();c(""!=g.value?new mxImage(mxUtils.trim(g.value),m.value,n.value):null)});f.className="geBtn gePrimaryBtn";d.appendChild(f);a.editor.cancelFirst||d.appendChild(q);b.appendChild(d);this.container=b},ParseDialog=function(a,c,b){function d(b,c){var f=b.split("\n");if("plantUmlPng"==c||"plantUmlSvg"==c||"plantUmlTxt"==c){if(a.spinner.spin(document.body,mxResources.get("inserting"))){var l=a.editor.graph,
-p="plantUmlTxt"==c?"txt":"plantUmlPng"==c?"png":"svg";a.generatePlantUmlImage(b,p,function(c,f,d){a.spinner.stop();var k=null;l.getModel().beginUpdate();try{k="txt"==p?a.insertAsPreText(c,e.x,e.y):l.insertVertex(null,null,null,e.x,e.y,f,d,"shape=image;noLabel=1;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a.convertDataUri(c)+";"),l.setAttributeForCell(k,"plantUmlData",JSON.stringify({data:b,format:p}))}finally{l.getModel().endUpdate()}null!=k&&(l.setSelectionCell(k),l.scrollCellToVisible(k))},
+p="plantUmlTxt"==c?"txt":"plantUmlPng"==c?"png":"svg";a.generatePlantUmlImage(b,p,function(c,f,d){a.spinner.stop();var t=null;l.getModel().beginUpdate();try{t="txt"==p?a.insertAsPreText(c,e.x,e.y):l.insertVertex(null,null,null,e.x,e.y,f,d,"shape=image;noLabel=1;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a.convertDataUri(c)+";"),l.setAttributeForCell(t,"plantUmlData",JSON.stringify({data:b,format:p}))}finally{l.getModel().endUpdate()}null!=t&&(l.setSelectionCell(t),l.scrollCellToVisible(t))},
 function(b){a.handleError(b)})}}else if("table"==c){for(var d=null,k=[],x=0,g=0;g<f.length;g++){var u=mxUtils.trim(f[g]);if("create table"==u.substring(0,12).toLowerCase())u=mxUtils.trim(u.substring(12)),"("==u.charAt(u.length-1)&&(u=u.substring(0,u.lastIndexOf(" "))),d=new mxCell(u,new mxGeometry(x,0,160,26),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;"),
 d.vertex=!0,k.push(d),u=a.editor.graph.getPreferredSizeForCell(E),null!=u&&(d.geometry.width=u.width+10);else if(null!=d&&")"==u.charAt(0))x+=d.geometry.width+40,d=null;else if("("!=u&&null!=d&&(u=u.substring(0,","==u.charAt(u.length-1)?u.length-1:u.length),"primary key"!=u.substring(0,11).toLowerCase())){var A=u.toLowerCase().indexOf("primary key"),u=u.replace(/primary key/i,""),E=new mxCell(u,new mxGeometry(0,0,90,26),"shape=partialRectangle;top=0;left=0;right=0;bottom=0;align=left;verticalAlign=top;spacingTop=-2;fillColor=none;spacingLeft=34;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;");
 E.vertex=!0;u=sb.cloneCell(E,0<A?"PK":"");u.connectable=!1;u.style="shape=partialRectangle;top=0;left=0;bottom=0;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;";u.geometry.width=30;u.geometry.height=26;E.insert(u);u=a.editor.graph.getPreferredSizeForCell(E);null!=u&&d.geometry.width<u.width+10&&(d.geometry.width=Math.min(220,u.width+10));d.insert(E);d.geometry.height+=26}}0<k.length&&(l=a.editor.graph,
@@ -7921,11 +7911,11 @@ try{u=a.editor.graph.importCells(l.getModel().getChildren(l.getDefaultParent()),
 n=document.createElement("option");n.setAttribute("value","diagram");mxUtils.write(n,mxResources.get("diagram"));"plantUml"!=b&&m.appendChild(n);n=document.createElement("option");n.setAttribute("value","plantUmlSvg");mxUtils.write(n,mxResources.get("plantUml")+" ("+mxResources.get("formatSvg")+")");"plantUml"==b&&n.setAttribute("selected","selected");var q=document.createElement("option");q.setAttribute("value","plantUmlPng");mxUtils.write(q,mxResources.get("plantUml")+" ("+mxResources.get("formatPng")+
 ")");var f=document.createElement("option");f.setAttribute("value","plantUmlTxt");mxUtils.write(f,mxResources.get("plantUml")+" ("+mxResources.get("text")+")");EditorUi.enablePlantUml&&Graph.fileSupport&&!a.isOffline()&&"plantUml"==b&&(m.appendChild(n),m.appendChild(q),m.appendChild(f));var l=g();k.value=l;c.appendChild(k);this.init=function(){k.focus()};Graph.fileSupport&&(k.addEventListener("dragover",function(a){a.stopPropagation();a.preventDefault()},!1),k.addEventListener("drop",function(a){a.stopPropagation();
 a.preventDefault();if(0<a.dataTransfer.files.length){a=a.dataTransfer.files[0];var b=new FileReader;b.onload=function(a){k.value=a.target.result};b.readAsText(a)}},!1));c.appendChild(m);mxEvent.addListener(m,"change",function(){var a=g();if(0==k.value.length||k.value==l)l=a,k.value=l});b=mxUtils.button(mxResources.get("close"),function(){k.value==l?a.hideDialog():a.confirm(mxResources.get("areYouSure"),function(){a.hideDialog()})});b.className="geBtn";a.editor.cancelFirst&&c.appendChild(b);n=mxUtils.button(mxResources.get("insert"),
-function(){a.hideDialog();d(k.value,m.value)});c.appendChild(n);n.className="geBtn gePrimaryBtn";a.editor.cancelFirst||c.appendChild(b);this.container=c},NewDialog=function(a,c,b,d,g,e,k,m,n,q,f,l,p,u,v,t,z){function y(){var a=!0;if(null!=U)for(;J<U.length&&(a||0!=mxUtils.mod(J,30));)a=U[J++],B(a.url,a.libs,a.title,a.tooltip?a.tooltip:a.title,a.select,a.imgUrl,a.info,a.onClick,a.preview,a.noImg,a.clibs),a=!1}function C(){if(V)b||a.hideDialog(),u(V,ba,H.value);else if(d)b||a.hideDialog(),d(ga,H.value);
-else{var c=H.value;null!=c&&0<c.length&&a.pickFolder(a.mode,function(b){a.createFile(c,ga,null!=aa&&0<aa.length?aa:null,null,function(){a.hideDialog()},null,b,null,null!=ha&&0<ha.length?ha:null)},a.mode!=App.MODE_GOOGLE||null==a.stateArg||null==a.stateArg.folderId)}}function x(a,b,c,f,l,d){null!=ca&&(ca.style.backgroundColor="transparent",ca.style.border="1px solid transparent");G.removeAttribute("disabled");ga=b;aa=c;ha=d;ca=a;V=f;ba=l;ca.style.backgroundColor=m;ca.style.border=n}function B(b,c,
-f,l,d,p,e,k,t,A,g){var u=document.createElement("div");u.className="geTemplate";u.style.height=X+"px";u.style.width=ea+"px";null!=l&&0<l.length&&u.setAttribute("title",l);if(null!=p)u.style.backgroundImage="url("+p+")",u.style.backgroundSize="contain",u.style.backgroundPosition="center center",u.style.backgroundRepeat="no-repeat",mxEvent.addListener(u,"click",function(a){x(u,null,null,b,e,g)}),mxEvent.addListener(u,"dblclick",function(a){C()});else if(!A&&null!=b&&0<b.length){f=t||TEMPLATE_PATH+"/"+
+function(){a.hideDialog();d(k.value,m.value)});c.appendChild(n);n.className="geBtn gePrimaryBtn";a.editor.cancelFirst||c.appendChild(b);this.container=c},NewDialog=function(a,c,b,d,g,e,k,m,n,q,f,l,p,u,v,t,z){function y(){var a=!0;if(null!=U)for(;J<U.length&&(a||0!=mxUtils.mod(J,30));)a=U[J++],B(a.url,a.libs,a.title,a.tooltip?a.tooltip:a.title,a.select,a.imgUrl,a.info,a.onClick,a.preview,a.noImg,a.clibs),a=!1}function C(){if(V)b||a.hideDialog(),u(V,ba,H.value);else if(d)b||a.hideDialog(),d(ha,H.value);
+else{var c=H.value;null!=c&&0<c.length&&a.pickFolder(a.mode,function(b){a.createFile(c,ha,null!=aa&&0<aa.length?aa:null,null,function(){a.hideDialog()},null,b,null,null!=ga&&0<ga.length?ga:null)},a.mode!=App.MODE_GOOGLE||null==a.stateArg||null==a.stateArg.folderId)}}function x(a,b,c,f,l,d){null!=ca&&(ca.style.backgroundColor="transparent",ca.style.border="1px solid transparent");G.removeAttribute("disabled");ha=b;aa=c;ga=d;ca=a;V=f;ba=l;ca.style.backgroundColor=m;ca.style.border=n}function B(b,c,
+f,l,d,p,e,t,k,A,g){var u=document.createElement("div");u.className="geTemplate";u.style.height=X+"px";u.style.width=ea+"px";null!=l&&0<l.length&&u.setAttribute("title",l);if(null!=p)u.style.backgroundImage="url("+p+")",u.style.backgroundSize="contain",u.style.backgroundPosition="center center",u.style.backgroundRepeat="no-repeat",mxEvent.addListener(u,"click",function(a){x(u,null,null,b,e,g)}),mxEvent.addListener(u,"dblclick",function(a){C()});else if(!A&&null!=b&&0<b.length){f=k||TEMPLATE_PATH+"/"+
 b.substring(0,b.length-4)+".png";u.style.backgroundImage="url("+f+")";u.style.backgroundPosition="center center";u.style.backgroundRepeat="no-repeat";var B=!1;mxEvent.addListener(u,"click",function(f){G.setAttribute("disabled","disabled");u.style.backgroundColor="transparent";u.style.border="1px solid transparent";f=b;f=/^https?:\/\//.test(f)&&!a.editor.isCorsEnabledForUrl(f)?PROXY_URL+"?url="+encodeURIComponent(f):TEMPLATE_PATH+"/"+f;I.spin(R);mxUtils.get(f,mxUtils.bind(this,function(a){I.stop();
-200<=a.getStatus()&&299>=a.getStatus()&&(x(u,a.getText(),c,null,null,g),B&&C())}))});mxEvent.addListener(u,"dblclick",function(a){B=!0})}else u.innerHTML='<table width="100%" height="100%" style="line-height:1em;word-break: break-all;"><tr><td align="center" valign="middle">'+mxResources.get(f,null,f)+"</td></tr></table>",d&&x(u),null!=k?mxEvent.addListener(u,"click",k):(mxEvent.addListener(u,"click",function(a){x(u,null,null,b,e)}),mxEvent.addListener(u,"dblclick",function(a){C()}));R.appendChild(u)}
+200<=a.getStatus()&&299>=a.getStatus()&&(x(u,a.getText(),c,null,null,g),B&&C())}))});mxEvent.addListener(u,"dblclick",function(a){B=!0})}else u.innerHTML='<table width="100%" height="100%" style="line-height:1em;word-break: break-all;"><tr><td align="center" valign="middle">'+mxResources.get(f,null,f)+"</td></tr></table>",d&&x(u),null!=t?mxEvent.addListener(u,"click",t):(mxEvent.addListener(u,"click",function(a){x(u,null,null,b,e)}),mxEvent.addListener(u,"dblclick",function(a){C()}));R.appendChild(u)}
 function F(){S&&(S=!1,mxEvent.addListener(R,"scroll",function(a){R.scrollTop+R.clientHeight>=R.scrollHeight&&(y(),mxEvent.consume(a))}));var a=null;if(0<da){var b=document.createElement("div");b.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(b,mxResources.get("custom"));Z.appendChild(b);for(var c in M){var f=document.createElement("div"),b=c,l=M[c];18<b.length&&(b=b.substring(0,18)+"&hellip;");f.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;";
 f.setAttribute("title",b+" ("+l.length+")");mxUtils.write(f,f.getAttribute("title"));null!=q&&(f.style.padding=q);Z.appendChild(f);(function(b,c){mxEvent.addListener(f,"click",function(){a!=c&&(a.style.backgroundColor="",a=c,a.style.backgroundColor=k,R.scrollTop=0,R.innerHTML="",J=0,U=M[b],Q=null,y())})})(c,f)}b=document.createElement("div");b.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(b,"draw.io");Z.appendChild(b)}for(c in P)f=document.createElement("div"),
 b=mxResources.get(c),l=P[c],null==b&&(b=c.substring(0,1).toUpperCase()+c.substring(1)),18<b.length&&(b=b.substring(0,18)+"&hellip;"),f.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;",f.setAttribute("title",b+" ("+l.length+")"),mxUtils.write(f,f.getAttribute("title")),null!=q&&(f.style.padding=q),Z.appendChild(f),null==a&&0<l.length&&(a=f,a.style.backgroundColor=k,U=l),function(b,c){mxEvent.addListener(f,"click",
@@ -7936,7 +7926,7 @@ a.mode==App.MODE_GITLAB&&null!=a.gitLab?D=a.gitLab.extension:a.mode==App.MODE_TR
 H,a.editor.fileExtensions),D.style.marginTop="12px",E.appendChild(D)));var E=!1,J=0,I=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}),G=mxUtils.button(t||mxResources.get("create"),function(){G.setAttribute("disabled","disabled");C();G.removeAttribute("disabled")});G.className="geBtn gePrimaryBtn";if(l||p){var K=[],Q=null,N=null,Y=null,T=function(a){G.setAttribute("disabled","disabled");for(var b=0;b<K.length;b++)K[b].className=
 b==a?"geBtn gePrimaryBtn":"geBtn"},E=!0;t=document.createElement("div");t.style.whiteSpace="nowrap";t.style.height="30px";A.appendChild(t);D=mxUtils.button(mxResources.get("Templates",null,"Templates"),function(){Z.style.display="";R.style.left="160px";T(0);R.scrollTop=0;R.innerHTML="";J=0;Q!=U&&(U=Q,P=N,da=Y,Z.innerHTML="",F(),Q=null)});K.push(D);t.appendChild(D);var L=function(a){Z.style.display="none";R.style.left="30px";T(a?-1:1);null==Q&&(Q=U);R.scrollTop=0;R.innerHTML="";I.spin(R);var b=function(a,
 b,c){J=0;I.stop();U=a;c=c||{};var f=0,l;for(l in c)f+=c[l].length;if(b)R.innerHTML=b;else if(0==a.length&&0==f)R.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found"));else if(R.innerHTML="",0<f){Z.style.display="";R.style.left="160px";Z.innerHTML="";da=0;P={"draw.io":a};for(l in c)P[l]=c[l];F()}else y()};a?p(W.value,b):l(b)};l&&(D=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){L()}),t.appendChild(D),K.push(D));if(p){D=document.createElement("span");
-D.style.marginLeft="10px";D.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+":");t.appendChild(D);var W=document.createElement("input");W.style.marginRight="10px";W.style.marginLeft="10px";W.style.width="220px";mxEvent.addListener(W,"keypress",function(a){13==a.keyCode&&L(!0)});t.appendChild(W);D=mxUtils.button(mxResources.get("search"),function(){L(!0)});D.className="geBtn";t.appendChild(D)}T(0)}var aa=null,ha=null,ga=null,ca=null,V=null,ba=null,R=document.createElement("div");R.style.border=
+D.style.marginLeft="10px";D.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+":");t.appendChild(D);var W=document.createElement("input");W.style.marginRight="10px";W.style.marginLeft="10px";W.style.width="220px";mxEvent.addListener(W,"keypress",function(a){13==a.keyCode&&L(!0)});t.appendChild(W);D=mxUtils.button(mxResources.get("search"),function(){L(!0)});D.className="geBtn";t.appendChild(D)}T(0)}var aa=null,ga=null,ha=null,ca=null,V=null,ba=null,R=document.createElement("div");R.style.border=
 "1px solid #d3d3d3";R.style.position="absolute";R.style.left="160px";R.style.right="34px";E=(b?72:40)+(E?30:0);R.style.top=E+"px";R.style.bottom="68px";R.style.margin="6px 0 0 -1px";R.style.padding="6px";R.style.overflow="auto";var Z=document.createElement("div");Z.style.cssText="position:absolute;left:30px;width:128px;top:"+E+"px;bottom:68px;margin-top:6px;overflow:auto;border:1px solid #d3d3d3;";var X=140,ea=140,P={},M={},da=0,S=!0;P.basic=[{title:"blankDiagram",select:!0}];var U=P.basic;if(!c){var ja=
 function(){mxUtils.get(O,function(a){if(!ka){ka=!0;a=a.getXml().documentElement.firstChild;for(var b={};null!=a;){if("undefined"!==typeof a.getAttribute)if("clibs"==a.nodeName){for(var c=a.getAttribute("name"),f=a.getElementsByTagName("add"),l=[],d=0;d<f.length;d++)l.push(encodeURIComponent(mxUtils.getTextContent(f[d])));null!=c&&0<l.length&&(b[c]=l.join(";"))}else c=a.getAttribute("url"),null!=c&&(f=a.getAttribute("section"),null==f&&(f=c.indexOf("/"),f=c.substring(0,f)),c=P[f],null==c&&(c=[],P[f]=
 c),f=a.getAttribute("clibs"),null!=b[f]&&(f=b[f]),c.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),preview:a.getAttribute("preview"),clibs:f}));a=a.nextSibling}I.stop();F()}})};A.appendChild(Z);A.appendChild(R);var ka=!1,O=f;/^https?:\/\//.test(O)&&!a.editor.isCorsEnabledForUrl(O)&&(O=PROXY_URL+"?url="+encodeURIComponent(O));I.spin(R);null!=z?z(function(a,b){M=a;Y=da=b;ja()},ja):ja();N=P}mxEvent.addListener(H,"keypress",function(b){a.dialog.container.firstChild==
@@ -7961,10 +7951,10 @@ var PopupDialog=function(a,c,b,d,g){g=null!=g?g:!0;var e=document.createElement(
 null,!0)});m.className="geBtn gePrimaryBtn";m.style.width=k.style.width;e.appendChild(m);mxUtils.br(e);mxUtils.br(e);mxUtils.write(e,mxResources.get("allowPopups"));this.container=e},ImageDialog=function(a,c,b,d,g,e){e=null!=e?e:!0;var k=a.editor.graph,m=document.createElement("div");mxUtils.write(m,c);c=document.createElement("div");c.className="geTitle";c.style.backgroundColor="transparent";c.style.borderColor="transparent";c.style.whiteSpace="nowrap";c.style.textOverflow="clip";c.style.cursor=
 "default";mxClient.IS_VML||(c.style.paddingRight="20px");var n=document.createElement("input");n.setAttribute("value",b);n.setAttribute("type","text");n.setAttribute("spellcheck","false");n.setAttribute("autocorrect","off");n.setAttribute("autocomplete","off");n.setAttribute("autocapitalize","off");n.style.marginTop="6px";n.style.width=(Graph.fileSupport?420:340)+(mxClient.IS_QUIRKS?20:-20)+"px";n.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";n.style.backgroundRepeat="no-repeat";
 n.style.backgroundPosition="100% 50%";n.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=mxClient.IS_VML?"inline":"inline-block";b.style.top=(mxClient.IS_VML?0:3)+"px";b.style.background="url('"+a.editor.transparentImage+"')";mxEvent.addListener(b,"click",function(){n.value="";n.focus()});c.appendChild(n);c.appendChild(b);
-m.appendChild(c);var q=function(b,c,f,l){var p="data:"==b.substring(0,5);!a.isOffline()||p&&"undefined"===typeof chrome?0<b.length&&a.spinner.spin(document.body,mxResources.get("inserting"))?a.loadImage(b,function(p){a.spinner.stop();a.hideDialog();var k=!1===l?1:null!=c&&null!=f?Math.max(c/p.width,f/p.height):Math.min(1,Math.min(520/p.width,520/p.height));e&&(b=a.convertDataUri(b));d(b,Math.round(Number(p.width)*k),Math.round(Number(p.height)*k))},function(){a.spinner.stop();d(null);a.showError(mxResources.get("error"),
+m.appendChild(c);var q=function(b,c,f,l){var p="data:"==b.substring(0,5);!a.isOffline()||p&&"undefined"===typeof chrome?0<b.length&&a.spinner.spin(document.body,mxResources.get("inserting"))?a.loadImage(b,function(p){a.spinner.stop();a.hideDialog();var t=!1===l?1:null!=c&&null!=f?Math.max(c/p.width,f/p.height):Math.min(1,Math.min(520/p.width,520/p.height));e&&(b=a.convertDataUri(b));d(b,Math.round(Number(p.width)*t),Math.round(Number(p.height)*t))},function(){a.spinner.stop();d(null);a.showError(mxResources.get("error"),
 mxResources.get("fileNotFound"),mxResources.get("ok"))}):(a.hideDialog(),d(b)):(b=a.convertDataUri(b),c=null==c?120:c,f=null==f?100:f,a.hideDialog(),d(b,c,f))},f=function(b,c){if(null!=b){var f=g?null:k.getModel().getGeometry(k.getSelectionCell());null!=f?q(b,f.width,f.height,c):q(b,null,null,c)}else a.hideDialog(),d(null)};this.init=function(){n.focus();if(Graph.fileSupport){n.setAttribute("placeholder",mxResources.get("dragImagesHere"));var b=m.parentNode,c=null;mxEvent.addListener(b,"dragleave",
-function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(f){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=a.highlightElement(b));f.stopPropagation();f.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(b){null!=c&&(c.parentNode.removeChild(c),c=null);if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxImageSize,function(a,b,c,l,d,p,e,k){f(a,
-k)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()},!mxEvent.isControlDown(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var l=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)($|\?)/i.test(l)&&f(decodeURIComponent(l))}b.stopPropagation();b.preventDefault()}),!1)}};b=document.createElement("div");b.style.marginTop=mxClient.IS_QUIRKS?"22px":"14px";b.style.textAlign="center";c=mxUtils.button(mxResources.get("cancel"),
+function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(f){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=a.highlightElement(b));f.stopPropagation();f.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(b){null!=c&&(c.parentNode.removeChild(c),c=null);if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxImageSize,function(a,b,c,l,d,p,e,t){f(a,
+t)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()},!mxEvent.isControlDown(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var l=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)($|\?)/i.test(l)&&f(decodeURIComponent(l))}b.stopPropagation();b.preventDefault()}),!1)}};b=document.createElement("div");b.style.marginTop=mxClient.IS_QUIRKS?"22px":"14px";b.style.textAlign="center";c=mxUtils.button(mxResources.get("cancel"),
 function(){a.spinner.stop();a.hideDialog()});c.className="geBtn";a.editor.cancelFirst&&b.appendChild(c);ImageDialog.filePicked=function(a){a.action==google.picker.Action.PICKED&&null!=a.docs[0].thumbnails&&(a=a.docs[0].thumbnails[a.docs[0].thumbnails.length-1],null!=a&&(n.value=a.url));n.focus()};if(Graph.fileSupport){if(null==a.imgDlgFileInputElt){var l=document.createElement("input");l.setAttribute("multiple","multiple");l.setAttribute("type","file");mxEvent.addListener(l,"change",function(b){null!=
 l.files&&(a.importFiles(l.files,0,0,a.maxImageSize,function(a,b,c,l,d,p){f(a)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()},!0),l.type="",l.type="file",l.value="")});l.style.display="none";document.body.appendChild(l);a.imgDlgFileInputElt=l}var p=mxUtils.button(mxResources.get("open"),function(){a.imgDlgFileInputElt.click()});p.className="geBtn";b.appendChild(p)}document.createElement("canvas").getContext&&"data:image/"==n.value.substring(0,
 11)&&"data:image/svg"!=n.value.substring(0,14)&&(p=mxUtils.button(mxResources.get("crop"),function(){var b=new CropImageDialog(a,n.value,function(a){n.value=a});a.showDialog(b.container,200,200,!0,!0);b.init()}),p.className="geBtn",b.appendChild(p));"undefined"!=typeof google&&"undefined"!=typeof google.picker&&window.self===window.top&&(p=mxUtils.button(mxResources.get("search"),function(){if(null==a.imageSearchPicker){var b=(new google.picker.PickerBuilder).setLocale(mxLanguage).addView(google.picker.ViewId.IMAGE_SEARCH).enableFeature(google.picker.Feature.NAV_HIDDEN);
@@ -8003,9 +7993,9 @@ C.setAttribute("title",mxResources.get("zoomIn"));C.style.outline="none";C.style
 a.replaceFileData(y);a.hideDialog()},function(b){a.spinner.stop();a.editor.setStatus("");a.handleError(b,null!=b?mxResources.get("errorSavingFile"):null)})})});D.className="geBtn";D.setAttribute("disabled","disabled");var H=document.createElement("select");H.setAttribute("disabled","disabled");H.style.maxWidth="80px";H.style.position="relative";H.style.top="-2px";H.style.verticalAlign="bottom";H.style.marginRight="6px";H.style.display="none";var J=null;mxEvent.addListener(H,"change",function(a){null!=
 J&&(J(a),mxEvent.consume(a))});var I=mxUtils.button(mxResources.get("edit"),function(){null!=z&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(z.documentElement)),a.openLink(a.getUrl(),null,!0))});I.className="geBtn";I.setAttribute("disabled","disabled");null!=b&&(I.style.display="none");var G=mxUtils.button(mxResources.get("show"),function(){null!=t&&a.openLink(t.getUrl(H.selectedIndex))});G.className="geBtn gePrimaryBtn";G.setAttribute("disabled",
 "disabled");null!=b&&(G.style.display="none",D.className="geBtn gePrimaryBtn");g=document.createElement("div");g.style.position="absolute";g.style.top="482px";g.style.width="640px";g.style.textAlign="right";var K=document.createElement("div");K.className="geToolbarContainer";K.style.backgroundColor="transparent";K.style.padding="2px";K.style.border="none";K.style.left="199px";K.style.top="442px";var Q=null;if(null!=c&&0<c.length){k.style.cursor="move";var N=document.createElement("table");N.style.border=
-"1px solid lightGray";N.style.borderCollapse="collapse";N.style.borderSpacing="0px";N.style.width="100%";var Y=document.createElement("tbody"),T=(new Date).toDateString();null!=a.currentPage&&null!=a.pages&&(n=mxUtils.indexOf(a.pages,a.currentPage));for(var L=c.length-1;0<=L;L--){var W=function(b){var l=new Date(b.modifiedDate),d=null;if(0<=l.getTime()){var e=function(c){p.stop();var e=mxUtils.parseXml(c),g=a.editor.extractGraphModel(e.documentElement,!0);if(null!=g){var t=function(a){null!=a&&(a=
-v(mxUtils.parseXml(Graph.decompress(mxUtils.getTextContent(a))).documentElement));return a},v=function(a){var b=a.getAttribute("background");if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";k.style.backgroundColor=b;(new mxCodec(a.ownerDocument)).decode(a,m.getModel());m.maxFitScale=1;m.fit(8);m.center();return a};H.style.display="none";H.innerHTML="";z=e;y=c;q=parseSelectFunction=null;f=0;if("mxfile"==g.nodeName){e=g.getElementsByTagName("diagram");q=[];for(c=0;c<e.length;c++)q.push(e[c]);f=Math.min(n,
-q.length-1);0<q.length&&t(q[f]);if(1<q.length)for(H.removeAttribute("disabled"),H.style.display="",c=0;c<q.length;c++)e=document.createElement("option"),mxUtils.write(e,q[c].getAttribute("name")||mxResources.get("pageWithNumber",[c+1])),e.setAttribute("value",c),c==f&&e.setAttribute("selected","selected"),H.appendChild(e);J=function(){try{var b=parseInt(H.value);f=n=b;t(q[b])}catch(M){H.value=n,a.handleError(M)}}}else v(g);c=b.lastModifyingUserName;null!=c&&20<c.length&&(c=c.substring(0,20)+"...");
+"1px solid lightGray";N.style.borderCollapse="collapse";N.style.borderSpacing="0px";N.style.width="100%";var Y=document.createElement("tbody"),T=(new Date).toDateString();null!=a.currentPage&&null!=a.pages&&(n=mxUtils.indexOf(a.pages,a.currentPage));for(var L=c.length-1;0<=L;L--){var W=function(b){var l=new Date(b.modifiedDate),d=null;if(0<=l.getTime()){var e=function(c){p.stop();var e=mxUtils.parseXml(c),t=a.editor.extractGraphModel(e.documentElement,!0);if(null!=t){var g=function(a){null!=a&&(a=
+v(mxUtils.parseXml(Graph.decompress(mxUtils.getTextContent(a))).documentElement));return a},v=function(a){var b=a.getAttribute("background");if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";k.style.backgroundColor=b;(new mxCodec(a.ownerDocument)).decode(a,m.getModel());m.maxFitScale=1;m.fit(8);m.center();return a};H.style.display="none";H.innerHTML="";z=e;y=c;q=parseSelectFunction=null;f=0;if("mxfile"==t.nodeName){e=t.getElementsByTagName("diagram");q=[];for(c=0;c<e.length;c++)q.push(e[c]);f=Math.min(n,
+q.length-1);0<q.length&&g(q[f]);if(1<q.length)for(H.removeAttribute("disabled"),H.style.display="",c=0;c<q.length;c++)e=document.createElement("option"),mxUtils.write(e,q[c].getAttribute("name")||mxResources.get("pageWithNumber",[c+1])),e.setAttribute("value",c),c==f&&e.setAttribute("selected","selected"),H.appendChild(e);J=function(){try{var b=parseInt(H.value);f=n=b;g(q[b])}catch(M){H.value=n,a.handleError(M)}}}else v(t);c=b.lastModifyingUserName;null!=c&&20<c.length&&(c=c.substring(0,20)+"...");
 A.innerHTML="";mxUtils.write(A,(null!=c?c+" ":"")+l.toLocaleDateString()+" "+l.toLocaleTimeString());A.setAttribute("title",d.getAttribute("title"));C.removeAttribute("disabled");x.removeAttribute("disabled");B.removeAttribute("disabled");F.removeAttribute("disabled");null!=u&&u.isRestricted()||(a.editor.graph.isEnabled()&&D.removeAttribute("disabled"),E.removeAttribute("disabled"),G.removeAttribute("disabled"),I.removeAttribute("disabled"));mxUtils.setOpacity(C,60);mxUtils.setOpacity(x,60);mxUtils.setOpacity(B,
 60);mxUtils.setOpacity(F,60)}else H.style.display="none",H.innerHTML="",A.innerHTML="",mxUtils.write(A,mxResources.get("errorLoadingFile"))},d=document.createElement("tr");d.style.borderBottom="1px solid lightGray";d.style.fontSize="12px";d.style.cursor="pointer";var g=document.createElement("td");g.style.padding="6px";g.style.whiteSpace="nowrap";b==c[c.length-1]?mxUtils.write(g,mxResources.get("current")):l.toDateString()===T?mxUtils.write(g,l.toLocaleTimeString()):mxUtils.write(g,l.toLocaleDateString()+
 " "+l.toLocaleTimeString());d.appendChild(g);d.setAttribute("title",l.toLocaleDateString()+" "+l.toLocaleTimeString()+(null!=b.fileSize?" "+a.formatFileSize(parseInt(b.fileSize)):"")+(null!=b.lastModifyingUserName?" "+b.lastModifyingUserName:""));mxEvent.addListener(d,"click",function(a){t!=b&&(p.stop(),null!=v&&(v.style.backgroundColor=""),t=b,v=d,v.style.backgroundColor="#ebf2f9",y=z=null,A.removeAttribute("title"),A.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+"..."),k.style.backgroundColor=
@@ -8043,10 +8033,10 @@ b){var c=window.innerHeight||document.body.clientHeight||document.documentElemen
 m.src=IMAGE_PATH+"/trello-logo-white.svg");a=document.createElement("p");mxUtils.write(a,mxResources.get("authorizeThisAppIn",[k]));var n=document.createElement("input");n.setAttribute("type","checkbox");k=mxUtils.button(mxResources.get("authorize"),function(){d(n.checked)});k.insertBefore(m,k.firstChild);k.style.marginTop="6px";k.className="geBigButton";k.style.fontSize="18px";k.style.padding="14px";g.appendChild(e);g.appendChild(a);g.appendChild(k);b&&(b=document.createElement("p"),b.style.marginTop=
 "20px",b.appendChild(n),e=document.createElement("span"),mxUtils.write(e," "+mxResources.get("rememberMe")),b.appendChild(e),g.appendChild(b),n.checked=!0,n.defaultChecked=!0,mxEvent.addListener(e,"click",function(a){n.checked=!n.checked;mxEvent.consume(a)}));this.container=g},MoreShapesDialog=function(a,c,b){b=null!=b?b:a.sidebar.entries;var d=document.createElement("div"),g=[];if(null!=a.sidebar.customEntries)for(var e=0;e<a.sidebar.customEntries.length;e++){for(var k=a.sidebar.customEntries[e],
 m={title:a.getResource(k.title),entries:[]},n=0;n<k.entries.length;n++){var q=k.entries[n];m.entries.push({id:q.id,title:a.getResource(q.title),desc:a.getResource(q.desc),image:q.preview})}g.push(m)}for(e=0;e<b.length;e++)if(null==a.sidebar.enabledLibraries)g.push(b[e]);else{m={title:b[e].title,entries:[]};for(n=0;n<b[e].entries.length;n++)0<=mxUtils.indexOf(a.sidebar.enabledLibraries,b[e].entries[n].id)&&m.entries.push(b[e].entries[n]);0<m.entries.length&&g.push(m)}b=g;if(c){n=mxUtils.bind(this,
-function(b){for(var c=0;c<b.length;c++)(function(b){var d=v.cloneNode(!1);d.style.fontWeight="bold";d.style.backgroundColor="dark"==uiTheme?"#505759":"#e5e5e5";d.style.padding="6px 0px 6px 20px";mxUtils.write(d,b.title);f.appendChild(d);for(var e=0;e<b.entries.length;e++)(function(b){var d=v.cloneNode(!1);d.style.cursor="pointer";d.style.padding="4px 0px 4px 20px";d.style.whiteSpace="nowrap";d.style.overflow="hidden";d.style.textOverflow="ellipsis";d.setAttribute("title",b.title+" ("+b.id+")");var k=
-document.createElement("input");k.setAttribute("type","checkbox");k.checked=a.sidebar.isEntryVisible(b.id);k.defaultChecked=k.checked;d.appendChild(k);mxUtils.write(d," "+b.title);f.appendChild(d);var g=function(a){if(null==a||"INPUT"!=mxEvent.getSource(a).nodeName){l.style.textAlign="center";l.style.padding="0px";l.style.color="";l.innerHTML="";if(null!=b.desc){var c=document.createElement("pre");c.style.boxSizing="border-box";c.style.fontFamily="inherit";c.style.margin="20px";c.style.right="0px";
-c.style.textAlign="left";mxUtils.write(c,b.desc);l.appendChild(c)}null!=b.imageCallback?b.imageCallback(l):null!=b.image?l.innerHTML+='<img border="0" src="'+b.image+'"/>':null==b.desc&&(l.style.padding="20px",l.style.color="rgb(179, 179, 179)",mxUtils.write(l,mxResources.get("noPreview")));null!=p&&(p.style.backgroundColor="");p=d;p.style.backgroundColor="dark"==uiTheme?"#505759":"#ebf2f9";null!=a&&mxEvent.consume(a)}};mxEvent.addListener(d,"click",g);mxEvent.addListener(d,"dblclick",function(a){k.checked=
-!k.checked;mxEvent.consume(a)});u.push(function(){return k.checked?b.id:null});0==c&&0==e&&g()})(b.entries[e])})(b[c])});e=document.createElement("div");e.className="geDialogTitle";mxUtils.write(e,mxResources.get("shapes"));e.style.position="absolute";e.style.top="0px";e.style.left="0px";e.style.lineHeight="40px";e.style.height="40px";e.style.right="0px";mxClient.IS_QUIRKS&&(e.style.width="718px");var f=document.createElement("div"),l=document.createElement("div");f.style.position="absolute";f.style.top=
+function(b){for(var c=0;c<b.length;c++)(function(b){var d=v.cloneNode(!1);d.style.fontWeight="bold";d.style.backgroundColor="dark"==uiTheme?"#505759":"#e5e5e5";d.style.padding="6px 0px 6px 20px";mxUtils.write(d,b.title);f.appendChild(d);for(var e=0;e<b.entries.length;e++)(function(b){var d=v.cloneNode(!1);d.style.cursor="pointer";d.style.padding="4px 0px 4px 20px";d.style.whiteSpace="nowrap";d.style.overflow="hidden";d.style.textOverflow="ellipsis";d.setAttribute("title",b.title+" ("+b.id+")");var t=
+document.createElement("input");t.setAttribute("type","checkbox");t.checked=a.sidebar.isEntryVisible(b.id);t.defaultChecked=t.checked;d.appendChild(t);mxUtils.write(d," "+b.title);f.appendChild(d);var k=function(a){if(null==a||"INPUT"!=mxEvent.getSource(a).nodeName){l.style.textAlign="center";l.style.padding="0px";l.style.color="";l.innerHTML="";if(null!=b.desc){var c=document.createElement("pre");c.style.boxSizing="border-box";c.style.fontFamily="inherit";c.style.margin="20px";c.style.right="0px";
+c.style.textAlign="left";mxUtils.write(c,b.desc);l.appendChild(c)}null!=b.imageCallback?b.imageCallback(l):null!=b.image?l.innerHTML+='<img border="0" src="'+b.image+'"/>':null==b.desc&&(l.style.padding="20px",l.style.color="rgb(179, 179, 179)",mxUtils.write(l,mxResources.get("noPreview")));null!=p&&(p.style.backgroundColor="");p=d;p.style.backgroundColor="dark"==uiTheme?"#505759":"#ebf2f9";null!=a&&mxEvent.consume(a)}};mxEvent.addListener(d,"click",k);mxEvent.addListener(d,"dblclick",function(a){t.checked=
+!t.checked;mxEvent.consume(a)});u.push(function(){return t.checked?b.id:null});0==c&&0==e&&k()})(b.entries[e])})(b[c])});e=document.createElement("div");e.className="geDialogTitle";mxUtils.write(e,mxResources.get("shapes"));e.style.position="absolute";e.style.top="0px";e.style.left="0px";e.style.lineHeight="40px";e.style.height="40px";e.style.right="0px";mxClient.IS_QUIRKS&&(e.style.width="718px");var f=document.createElement("div"),l=document.createElement("div");f.style.position="absolute";f.style.top=
 "40px";f.style.left="0px";f.style.width="202px";f.style.bottom="60px";f.style.overflow="auto";mxClient.IS_QUIRKS&&(f.style.height="437px",f.style.marginTop="1px");l.style.position="absolute";l.style.left="202px";l.style.right="0px";l.style.top="40px";l.style.bottom="60px";l.style.overflow="auto";l.style.borderLeft="1px solid rgb(211, 211, 211)";l.style.textAlign="center";mxClient.IS_QUIRKS&&(l.style.width=parseInt(e.style.width)-202+"px",l.style.height=f.style.height,l.style.marginTop=f.style.marginTop);
 var p=null,u=[],v=document.createElement("div");v.style.position="relative";v.style.left="0px";v.style.right="0px";n(b);d.style.padding="30px";d.appendChild(e);d.appendChild(f);d.appendChild(l);b=document.createElement("div");b.className="geDialogFooter";b.style.position="absolute";b.style.paddingRight="16px";b.style.color="gray";b.style.left="0px";b.style.right="0px";b.style.bottom="0px";b.style.height="60px";b.style.lineHeight="52px";mxClient.IS_QUIRKS&&(b.style.width=e.style.width,b.style.paddingTop=
 "12px");var t=document.createElement("input");t.setAttribute("type","checkbox");if(isLocalStorage||mxClient.IS_CHROMEAPP)e=document.createElement("span"),e.style.paddingRight="20px",e.appendChild(t),mxUtils.write(e," "+mxResources.get("rememberThisSetting")),t.checked=!0,t.defaultChecked=!0,mxEvent.addListener(e,"click",function(a){mxEvent.getSource(a)!=t&&(t.checked=!t.checked,mxEvent.consume(a))}),mxClient.IS_QUIRKS&&(e.style.position="relative",e.style.top="-6px"),b.appendChild(e);e=mxUtils.button(mxResources.get("cancel"),
@@ -8092,7 +8082,7 @@ null!=C&&(C(),C=null,mxEvent.consume(a))};mxEvent.addListener(u,"mousedown",c);m
 k,g,t){null!=t&&(/(\.vsdx)($|\?)/i.test(t.name)||/(\.vssx)($|\?)/i.test(t.name))?a.importVisio(t,mxUtils.bind(this,function(a){m(a,f,l,d,p,e,k,"fixed",mxEvent.isAltDown(b)?null:k.substring(0,k.lastIndexOf(".")).replace(/_/g," "))})):null!=t&&!a.isOffline()&&(new XMLHttpRequest).upload&&a.isRemoteFileFormat(c,t.name)?a.parseFile(t,mxUtils.bind(this,function(c){4==c.readyState&&(a.spinner.stop(),200<=c.status&&299>=c.status&&(m(c.responseText,f,l,d,p,e,k,"fixed",mxEvent.isAltDown(b)?null:k.substring(0,
 k.lastIndexOf(".")).replace(/_/g," ")),u.scrollTop=u.scrollHeight))})):(m(c,f,l,d,p,e,k,"fixed",mxEvent.isAltDown(b)?null:k.substring(0,k.lastIndexOf(".")).replace(/_/g," ")),u.scrollTop=u.scrollHeight)}};mxEvent.addListener(u,"dragover",n);mxEvent.addListener(u,"drop",q);mxEvent.addListener(v,"dragover",n);mxEvent.addListener(v,"drop",q);b.appendChild(u);d=document.createElement("div");d.style.textAlign="right";d.style.marginTop="20px";c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});
 c.setAttribute("id","btnCancel");c.className="geBtn";a.editor.cancelFirst&&d.appendChild(c);l=mxUtils.button(mxResources.get("export"),function(){var b=a.createLibraryDataFromImages(f),c=p.value;/(\.xml)$/i.test(c)||(c+=".xml");a.isLocalFileSave()?a.saveLocalFile(b,c,"text/xml",null,null,!0):(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(c)+"&format=xml&xml="+encodeURIComponent(b))).simulate(document,"_blank")});l.setAttribute("id","btnDownload");l.className="geBtn";d.appendChild(l);if(Graph.fileSupport){if(null==
-a.libDlgFileInputElt){var A=document.createElement("input");A.setAttribute("multiple","multiple");A.setAttribute("type","file");mxEvent.addListener(A,"change",function(b){B=!1;a.importFiles(A.files,0,0,a.maxImageSize,function(a,c,f,l,d,p,e,k,g){null!=A.files&&(F(b)(a,c,f,l,d,p,e,k,g),A.type="",A.type="file",A.value="")});u.scrollTop=u.scrollHeight});A.style.display="none";document.body.appendChild(A);a.libDlgFileInputElt=A}l=mxUtils.button(mxResources.get("import"),function(){null!=C&&(C(),C=null);
+a.libDlgFileInputElt){var A=document.createElement("input");A.setAttribute("multiple","multiple");A.setAttribute("type","file");mxEvent.addListener(A,"change",function(b){B=!1;a.importFiles(A.files,0,0,a.maxImageSize,function(a,c,f,l,d,p,e,k,t){null!=A.files&&(F(b)(a,c,f,l,d,p,e,k,t),A.type="",A.type="file",A.value="")});u.scrollTop=u.scrollHeight});A.style.display="none";document.body.appendChild(A);a.libDlgFileInputElt=A}l=mxUtils.button(mxResources.get("import"),function(){null!=C&&(C(),C=null);
 a.libDlgFileInputElt.click()});l.setAttribute("id","btnAddImage");l.className="geBtn";d.appendChild(l)}l=mxUtils.button(mxResources.get("addImageUrl"),function(){null!=C&&(C(),C=null);a.showImageDialog(mxResources.get("addImageUrl"),"",function(a,b,c){B=!1;if(null!=a){if("data:image/"==a.substring(0,11)){var f=a.indexOf(",");0<f&&(a=a.substring(0,f)+";base64,"+a.substring(f+1))}m(a,null,0,0,b,c);u.scrollTop=u.scrollHeight}})});l.setAttribute("id","btnAddImageUrl");l.className="geBtn";d.appendChild(l);
 this.saveBtnClickHandler=function(b,c,f,l){a.saveLibrary(b,c,f,l)};l=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(){null!=C&&(C(),C=null);this.saveBtnClickHandler(p.value,f,g,e)}));l.setAttribute("id","btnSave");l.className="geBtn gePrimaryBtn";d.appendChild(l);a.editor.cancelFirst||d.appendChild(c);b.appendChild(d);this.container=b},EditShapeDialog=function(a,c,b,d,g){d=null!=d?d:300;g=null!=g?g:120;var e,k,m=document.createElement("table"),n=document.createElement("tbody");
 m.style.cellPadding="4px";e=document.createElement("tr");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";mxUtils.write(k,b);e.appendChild(k);n.appendChild(e);e=document.createElement("tr");k=document.createElement("td");var q=document.createElement("textarea");q.style.outline="none";q.style.resize="none";q.style.width=d-200+"px";q.style.height=g+"px";this.textarea=q;this.init=function(){q.focus();q.scrollTop=0};k.appendChild(q);e.appendChild(k);k=document.createElement("td");
@@ -8119,12 +8109,12 @@ a[d]));x=document.createElement("div");x.className="geTempDlgDiagramTileImg geTe
 m=document.createElement("img");m.src="/images/icon-search.svg";m.className="geTempDlgDiagramPreviewBtn";m.setAttribute("title",mxResources.get("preview"));E.appendChild(m);(function(a,b){mxEvent.addListener(E,"click",function(){H!=b&&(f(),u(b,"geTempDlgDiagramTileActive",a))});mxEvent.addListener(E,"dblclick",v);mxEvent.addListener(m,"click",function(){p(a)})})(a[d],E);T.appendChild(E)}}}function y(a,b){ca.innerHTML="";u();for(var c=!b&&5<a.length?5:a.length,f=0;f<c;f++){var l=a[f];l.isCategory=
 !0;var d=document.createElement("div"),p=mxResources.get(l.title);null==p&&(p=l.title.substring(0,1).toUpperCase()+l.title.substring(1));d.className="geTempDlgNewDiagramCatItem";d.setAttribute("title",p);p=mxUtils.htmlEntities(p);15<p.length&&(p=p.substring(0,15)+"&hellip;");null==H&&(V.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),t(),u(d,"geTempDlgNewDiagramCatItemActive",l));var e=document.createElement("div");e.className="geTempDlgNewDiagramCatItemImg";var k=document.createElement("img");
 k.src=NEW_DIAGRAM_CATS_PATH+"/"+l.img;e.appendChild(k);d.appendChild(e);e=document.createElement("div");e.className="geTempDlgNewDiagramCatItemLbl";e.innerHTML=p;d.appendChild(e);ca.appendChild(d);(function(a,b){mxEvent.addListener(d,"click",function(){H!=b&&(V.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),t(),u(b,"geTempDlgNewDiagramCatItemActive",a))});mxEvent.addListener(d,"dblclick",v)})(l,d)}Y.style.display=5>a.length?"none":""}function C(a){var b=F.querySelector(".geTemplatesList"),
-c;for(c in a){var f=document.createElement("div"),l=mxResources.get(c),d=a[c];null==l&&(l=c.substring(0,1).toUpperCase()+c.substring(1));f.className="geTemplateCatLink";f.setAttribute("title",l+" ("+d.length+")");l=mxUtils.htmlEntities(l);15<l.length&&(l=l.substring(0,15)+"&hellip;");f.innerHTML=l+" ("+d.length+")";b.appendChild(f);(function(b,c,l){mxEvent.addListener(f,"click",function(){D!=l&&(null!=D?(D.style.fontWeight="normal",D.style.textDecoration="none"):(ga.style.display="none",ha.style.minHeight=
+c;for(c in a){var f=document.createElement("div"),l=mxResources.get(c),d=a[c];null==l&&(l=c.substring(0,1).toUpperCase()+c.substring(1));f.className="geTemplateCatLink";f.setAttribute("title",l+" ("+d.length+")");l=mxUtils.htmlEntities(l);15<l.length&&(l=l.substring(0,15)+"&hellip;");f.innerHTML=l+" ("+d.length+")";b.appendChild(f);(function(b,c,l){mxEvent.addListener(f,"click",function(){D!=l&&(null!=D?(D.style.fontWeight="normal",D.style.textDecoration="none"):(ha.style.display="none",ga.style.minHeight=
 "100%"),D=l,D.style.fontWeight="bold",D.style.textDecoration="underline",aa.scrollTop=0,A&&(E=!0),L.innerHTML=c,W.style.display="none",z(a[b],!0))})})(c,l,f)}}function x(a){k&&(aa.scrollTop=0,T.innerHTML="",ba.spin(T),E=!1,A=!0,L.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag",null,"Recent Diagrams")),N=null,k(M,a?null:e))}function B(a){f();aa.scrollTop=0;T.innerHTML="";ba.spin(T);E=!1;A=!0;da=null;L.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults",null,"Search Results"))+
-' "'+mxUtils.htmlEntities(a)+'"';m(a,M,G?null:e);N=a}d=null!=d?d:TEMPLATE_PATH+"/index.xml";g=null!=g?g:NEW_DIAGRAM_CATS_PATH+"/index.xml";var F=this.container,A=!1,E=!1,D=null,H=null,J=null,I=!1,G=!0,K=!1,Q=[],N,Y=F.querySelector(".geTempDlgShowAllBtn"),T=F.querySelector(".geTempDlgDiagramsTiles"),L=F.querySelector(".geTempDlgDiagramsListTitle"),W=F.querySelector(".geTempDlgDiagramsListBtns"),aa=F.querySelector(".geTempDlgContent"),ha=F.querySelector(".geTempDlgDiagramsList"),ga=F.querySelector(".geTempDlgNewDiagramCat"),
-ca=F.querySelector(".geTempDlgNewDiagramCatList"),V=F.querySelector(".geTempDlgCreateBtn"),ba=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(F.querySelector(".geTempDlgNewDiagramlbl"),"click",function(){f();ga.style.display="";ha.style.minHeight="calc(100% - 280px)";x(G)});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){l(this,"geTempDlgAllDiagramsBtnImg",
+' "'+mxUtils.htmlEntities(a)+'"';m(a,M,G?null:e);N=a}d=null!=d?d:TEMPLATE_PATH+"/index.xml";g=null!=g?g:NEW_DIAGRAM_CATS_PATH+"/index.xml";var F=this.container,A=!1,E=!1,D=null,H=null,J=null,I=!1,G=!0,K=!1,Q=[],N,Y=F.querySelector(".geTempDlgShowAllBtn"),T=F.querySelector(".geTempDlgDiagramsTiles"),L=F.querySelector(".geTempDlgDiagramsListTitle"),W=F.querySelector(".geTempDlgDiagramsListBtns"),aa=F.querySelector(".geTempDlgContent"),ga=F.querySelector(".geTempDlgDiagramsList"),ha=F.querySelector(".geTempDlgNewDiagramCat"),
+ca=F.querySelector(".geTempDlgNewDiagramCatList"),V=F.querySelector(".geTempDlgCreateBtn"),ba=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(F.querySelector(".geTempDlgNewDiagramlbl"),"click",function(){f();ha.style.display="";ga.style.minHeight="calc(100% - 280px)";x(G)});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){l(this,"geTempDlgAllDiagramsBtnImg",
 "all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(G=!0,null==N?x(G):B(N))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){l(this,"geTempDlgMyDiagramsBtnImg","my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(G=!1,null==N?x(G):B(N))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){l(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg",
-"tiles",!1)&&(K=!0,z(Q,!1,K))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){l(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(K=!1,z(Q,!1,K))});mxEvent.addListener(Y,"click",function(){I?(ga.style.height="280px",ca.style.height="190px",Y.innerHTML=mxUtils.htmlEntities(mxResources.get("showAll",null,"+ Show all")),y(ea)):(ga.style.height="440px",ca.style.height="355px",Y.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess",
+"tiles",!1)&&(K=!0,z(Q,!1,K))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){l(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(K=!1,z(Q,!1,K))});mxEvent.addListener(Y,"click",function(){I?(ha.style.height="280px",ca.style.height="190px",Y.innerHTML=mxUtils.htmlEntities(mxResources.get("showAll",null,"+ Show all")),y(ea)):(ha.style.height="440px",ca.style.height="355px",Y.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess",
 null,"- Show less")),y(ea,!0));I=!I});var R=!1,Z=!1,X={},ea=[],P=1;mxUtils.get(d,function(a){if(!R){R=!0;for(a=a.getXml().documentElement.firstChild;null!=a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var c=b.indexOf("/"),b=b.substring(0,c),c=X[b];null==c&&(P++,c=[],X[b]=c);c.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),clibs:a.getAttribute("clibs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),imgUrl:a.getAttribute("imgUrl")})}}a=
 a.nextSibling}C(X)}});mxUtils.get(g,function(a){if(!Z){Z=!0;for(a=a.getXml().documentElement.firstChild;null!=a;)"undefined"!==typeof a.getAttribute&&null!=a.getAttribute("title")&&ea.push({img:a.getAttribute("img"),libs:a.getAttribute("libs"),clibs:a.getAttribute("clibs"),title:a.getAttribute("title")}),a=a.nextSibling;y(ea)}});var M=function(a,b){W.style.display="";ba.stop();A=!1;E?E=!1:b?T.innerHTML=b:0==a.length?T.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):
 z(a,!1,K)};x(G);var da=null;m&&mxEvent.addListener(F.querySelector(".geTempDlgSearchBox"),"keyup",function(a){var b=this;null!=da&&clearTimeout(da);13==a.keyCode?B(b.value):da=setTimeout(function(){B(b.value)},500)});mxEvent.addListener(V,"click",v);mxEvent.addListener(F.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(a){v(!0)});mxEvent.addListener(F.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=b&&b();a.hideDialog(!0)})};
@@ -8184,75 +8174,76 @@ null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useFor
 AuthorInit:function(){MathJax.Hub.Config(b||{jax:["input/TeX","input/MathML","input/AsciiMath","output/HTML-CSS"],extensions:["tex2jax.js","mml2jax.js","asciimath2jax.js"],"HTML-CSS":{imageFont:null},TeX:{extensions:["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}});MathJax.Hub.Register.StartupHook("Begin",function(){for(var a=0;a<Editor.mathJaxQueue.length;a++)Editor.doMathJaxRender(Editor.mathJaxQueue[a])})}};
 Editor.MathJaxRender=function(a){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(a):Editor.mathJaxQueue.push(a)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var c=Editor.prototype.init;Editor.prototype.init=function(){c.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,mxUtils.bind(this,function(a,b){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)}))};var f=document.getElementsByTagName("script");
 if(null!=f&&0<f.length){var l=document.createElement("script");l.type="text/javascript";l.src=a;f[0].parentNode.appendChild(l)}};Editor.prototype.csvToArray=function(a){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(a))return null;var b=[];a.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,
-function(a,c,f,l){void 0!==c?b.push(c.replace(/\\'/g,"'")):void 0!==f?b.push(f.replace(/\\"/g,'"')):void 0!==l&&b.push(l);return""});/,\s*$/.test(a)&&b.push("");return b};Editor.prototype.isCorsEnabledForUrl=function(a){null!=urlParams.cors&&null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(a)||"https://raw.githubusercontent.com/"===a.substring(0,34)||"https://cdn.rawgit.com/"===a.substring(0,23)||"https://rawgit.com/"===
-a.substring(0,19)||/^https?:\/\/[^\/]*\.blob.core.windows.net\//.test(a)||/^https?:\/\/[^\/]*\.iconfinder.com\//.test(a)||/^https?:\/\/[^\/]*\.draw\.io\/proxy/.test(a)||/^https?:\/\/[^\/]*\.github\.io\//.test(a)};Editor.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(f){if(null!=f){var l="http://"==f.substring(0,7)||"https://"==f.substring(0,8);l&&!navigator.onLine?f=EditorUi.prototype.svgBrokenImage.src:!l||f.substring(0,
-a.baseUrl.length)==a.baseUrl||EditorUi.prototype.crossOriginImages&&c.isCorsEnabledForUrl(f)?"chrome-extension://"==f.substring(0,19)||mxClient.IS_CHROMEAPP||(f=b.apply(this,arguments)):f=PROXY_URL+"?url="+encodeURIComponent(f)}return f};return a};Editor.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};Editor.prototype.convertImageToDataUri=function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),
-function(){b(EditorUi.prototype.svgBrokenImage.src)});else{var c=new Image;EditorUi.prototype.crossOriginImages&&(c.crossOrigin="anonymous");c.onload=function(){var a=document.createElement("canvas"),f=a.getContext("2d");a.height=c.height;a.width=c.width;f.drawImage(c,0,0);try{b(a.toDataURL())}catch(I){b(EditorUi.prototype.svgBrokenImage.src)}};c.onerror=function(){b(EditorUi.prototype.svgBrokenImage.src)};c.src=a}};Editor.prototype.convertImages=function(a,b,c,f){null==f&&(f=this.createImageUrlConverter());
-var l=0,d=c||{};c=mxUtils.bind(this,function(c,p){for(var e=a.getElementsByTagName(c),k=0;k<e.length;k++)mxUtils.bind(this,function(c){var e=f.convert(c.getAttribute(p));if(null!=e&&"data:"!=e.substring(0,5)){var k=d[e];null==k?(l++,this.convertImageToDataUri(e,function(f){null!=f&&(d[e]=f,c.setAttribute(p,f));l--;0==l&&b(a)})):c.setAttribute(p,k)}else null!=e&&c.setAttribute(p,e)})(e[k])});c("image","xlink:href");c("img","src");0==l&&b(a)};Editor.prototype.base64Encode=function(a){for(var b="",c=
-0,f=a.length,l,d,p;c<f;){l=a.charCodeAt(c++)&255;if(c==f){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((l&3)<<4);b+="==";break}d=a.charCodeAt(c++);if(c==f){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((l&3)<<4|(d&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&
-15)<<2);b+="=";break}p=a.charCodeAt(c++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((l&3)<<4|(d&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&15)<<2|(p&192)>>6);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(p&63)}return b};Editor.prototype.loadUrl=function(a,b,c,f,l,d){try{var p=f||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||
-/(\.gif)($|\?)/i.test(a);l=null!=l?l:!0;var e=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var f=a.getText();if(p){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var f=Array(a.length),l=0;l<a.length;l++)f[l]=String.fromCharCode(a[l]);f=f.join("")}d=null!=d?d:"data:image/png;base64,";f=d+this.base64Encode(f)}b(f)}}else null!=
-c&&c({code:App.ERROR_UNKNOWN},a)}),function(){null!=c&&c({code:App.ERROR_UNKNOWN})},p,this.timeout,function(){l&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:e})})});e()}catch(Q){null!=c&&c(Q)}};Editor.prototype.loadFonts=function(a){if(null!=this.fontCss&&null==this.resolvedFontCss){var b=function(a){return a.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")},c=this.fontCss.split("url("),f=0,l={},d=mxUtils.bind(this,function(){if(0==f){for(var d=[c[0]],p=1;p<c.length;p++){var e=
-c[p].indexOf(")");d.push('url("');d.push(l[b(c[p].substring(0,e))]);d.push('"'+c[p].substring(e))}this.resolvedFontCss=d.join("");a()}});if(0<c.length)for(var p=1;p<c.length;p++){var e=c[p].indexOf(")"),k=null,g=c[p].indexOf("format(",e);0<g&&(k=b(c[p].substring(g+7,c[p].indexOf(")",g))));mxUtils.bind(this,function(a){if(null==l[a]){l[a]=a;f++;var b="application/x-font-ttf";if("svg"==k||/(\.svg)($|\?)/i.test(a))b="image/svg+xml";else if("otf"==k||"embedded-opentype"==k||/(\.otf)($|\?)/i.test(a))b=
-"application/x-font-opentype";else if("woff"==k||/(\.woff)($|\?)/i.test(a))b="application/font-woff";else if("woff2"==k||/(\.woff2)($|\?)/i.test(a))b="application/font-woff2";else if("eot"==k||/(\.eot)($|\?)/i.test(a))b="application/vnd.ms-fontobject";else if("sfnt"==k||/(\.sfnt)($|\?)/i.test(a))b="application/font-sfnt";var c=a;/^https?:\/\//.test(c)&&!this.isCorsEnabledForUrl(c)&&(c=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(c,mxUtils.bind(this,function(b){l[a]=b;f--;d()}),mxUtils.bind(this,
-function(a){f--;d()}),!0,null,"data:"+b+";charset=utf-8;base64,")}})(b(c[p].substring(0,e)),k)}}else a()};Editor.prototype.convertMath=function(a,b,c,f){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this,function(){f()}))}),0)):f()};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||!this.graph.mathEnabled&&this.useCanvasForExport};Editor.prototype.exportToCanvas=
-function(a,b,c,f,l,d,p,e,k,g,t,x,u,B){d=null!=d?d:!0;x=null!=x?x:this.graph;u=null!=u?u:0;var A=k?null:x.background;A==mxConstants.NONE&&(A=null);null==A&&(A=f);null==A&&0==k&&(A=this.graph.defaultPageBackgroundColor);this.convertImages(x.getSvg(A,null,null,B,null,null!=p?p:!0,null,null,null,g),mxUtils.bind(this,function(c){var f=new Image;f.onload=mxUtils.bind(this,function(){try{var p=document.createElement("canvas"),k=parseInt(c.getAttribute("width")),g=parseInt(c.getAttribute("height"));e=null!=
-e?e:1;null!=b&&(e=d?Math.min(1,Math.min(3*b/(4*g),b/k)):b/k);k=Math.ceil(e*k)+2*u;g=Math.ceil(e*g)+2*u;p.setAttribute("width",k);p.setAttribute("height",g);var t=p.getContext("2d");null!=A&&(t.beginPath(),t.rect(0,0,k,g),t.fillStyle=A,t.fill());t.scale(e,e);mxClient.IS_SF?window.setTimeout(function(){t.drawImage(f,u/e,u/e);a(p)},0):(t.drawImage(f,u/e,u/e),a(p))}catch(X){null!=l&&l(X)}});f.onerror=function(a){null!=l&&l(a)};try{g&&this.graph.addSvgShadow(c);var p=mxUtils.bind(this,function(){if(null!=
-this.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(x,c,!0,mxUtils.bind(this,function(){f.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(p)}catch(V){null!=l&&l(V)}}),c,t)};Editor.prototype.writeGraphModelToPng=function(a,b,c,f,l){function d(a,b){var c=k;k+=b;return a.substring(c,k)}function p(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<
-8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function e(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var k=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=l&&l();else if(d(a,4),"IHDR"!=d(a,4))null!=l&&l();else{d(a,17);l=a.substring(0,k);do{var g=p(a);if("IDAT"==d(a,4)){l=a.substring(0,k-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+f;f=4294967295;
-f=EditorUi.prototype.updateCRC(f,b,0,4);f=EditorUi.prototype.updateCRC(f,c,0,c.length);l+=e(c.length)+b+c+e(f^4294967295);l+=a.substring(k-8,a.length);break}l+=a.substring(k-8,k-4+g);d(a,g);d(a,4)}while(g);return"data:image/png;base64,"+(window.btoa?btoa(l):Base64.encode(l,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://desk.draw.io/support/solutions/articles/16000091426";var g=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,b){g.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);
-mxSettings.save()};var e=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){e.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,b){var c=null;null!=a.editor.graph.getModel().getParent(b)?c=b.getId():null!=a.currentPage&&(c=a.currentPage.getId());return c});if(null!=window.StyleFormatPanel){var k=Format.prototype.init;Format.prototype.init=function(){k.apply(this,arguments);
-this.editorUi.editor.addListener("fileLoaded",this.update)};var m=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?m.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var n=DiagramFormatPanel.prototype.addView;
-DiagramFormatPanel.prototype.addView=function(a){a=n.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var b=this.editorUi,c=b.editor.graph,f=this.createOption(mxResources.get("shadow"),function(){return c.shadowVisible},function(a){var f=new ChangePageSetup(b);f.ignoreColor=!0;f.ignoreImage=!0;f.shadowVisible=a;c.model.execute(f)},{install:function(a){this.listener=function(){a(c.shadowVisible)};b.addListener("shadowVisibleChanged",this.listener)},
-destroy:function(){b.removeListener(this.listener)}});Editor.shadowOptionEnabled||(f.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(f,60));a.appendChild(f)}return a};var q=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=q.apply(this,arguments);var b=this.editorUi,c=b.editor.graph;if(c.isEnabled()){var f=b.getCurrentFile();if(null!=f&&f.isAutosaveOptional()){var l=this.createOption(mxResources.get("autosave"),function(){return b.editor.autosave},
-function(a){b.editor.setAutosave(a);b.editor.autosave&&f.isModified()&&f.fileChanged()},{install:function(a){this.listener=function(){a(b.editor.autosave)};b.editor.addListener("autosaveChanged",this.listener)},destroy:function(){b.editor.removeListener(this.listener)}});a.appendChild(l)}}if(this.isMathOptionVisible()&&c.isEnabled()&&"undefined"!==typeof MathJax){l=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return c.mathEnabled},function(a){b.actions.get("mathematicalTypesetting").funct()},
-{install:function(a){this.listener=function(){a(c.mathEnabled)};b.addListener("mathEnabledChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}});l.style.paddingTop="5px";a.appendChild(l);var d=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875");d.style.position="relative";d.style.marginLeft="6px";d.style.top="2px";l.appendChild(d)}return a};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=[{name:"size",dispName:"Size",type:"float",defVal:.3,min:0,max:1}];mxCellRenderer.defaultShapes.internalStorage.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",
-type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"dx",dispName:"Left Line",type:"float",min:0,defVal:20},{name:"dy",dispName:"Top Line",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.cube.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0},{name:"darkOpacity2",dispName:"Dark Opacity 2",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.step.prototype.customProperties=
-[{name:"size",dispName:"Notch Size",type:"float",min:0,defVal:20},{name:"fixedSize",dispName:"Fixed Size",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.trapezoid.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.tape.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.4}];mxCellRenderer.defaultShapes.note.prototype.customProperties=
-[{name:"size",dispName:"Fold Size",type:"float",min:0,defVal:30},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.card.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Cutoff Size",type:"float",min:0,defVal:30}];mxCellRenderer.defaultShapes.callout.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
-{name:"base",dispName:"Callout Width",type:"float",min:0,defVal:20},{name:"size",dispName:"Callout Length",type:"float",min:0,defVal:30},{name:"position",dispName:"Callout Position",type:"float",min:0,max:1,defVal:.5},{name:"position2",dispName:"Callout Tip Position",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.folder.prototype.customProperties=[{name:"tabWidth",dispName:"Tab Width",type:"float"},{name:"tabHeight",dispName:"Tab Height",type:"float"},{name:"tabPosition",dispName:"Tap Position",
-type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"right",dispName:"Right"}]}];mxCellRenderer.defaultShapes.swimlane.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"startSize",dispName:"Header Size",type:"float"},{name:"horizontal",dispName:"Horizontal",type:"bool",defVal:!0},{name:"separatorColor",dispName:"Separator Color",type:"color",defVal:null}];mxCellRenderer.defaultShapes.doubleEllipse.prototype.customProperties=[{name:"margin",dispName:"Indent",
-type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.ext.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"double",dispName:"Double",type:"bool",defVal:!1},{name:"margin",dispName:"Indent",type:"float",min:0,defVal:0}];mxCellRenderer.defaultShapes.curlyBracket.prototype.customProperties=[{name:"rounded",dispName:"Rounded",type:"bool",defVal:!0},{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.image.prototype.customProperties=
-[{name:"imageAspect",dispName:"Fixed Image Aspect",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.label.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",type:"bool",defVal:!0},{name:"imageAlign",dispName:"Image Align",type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"center",dispName:"Center"},{val:"right",dispName:"Right"}],defVal:"left"},{name:"imageVerticalAlign",dispName:"Image Vertical Align",type:"enum",enumList:[{val:"top",dispName:"Top"},{val:"middle",
-dispName:"Middle"},{val:"bottom",dispName:"Bottom"}],defVal:"middle"},{name:"imageWidth",dispName:"Image Width",type:"float",min:0,defVal:24},{name:"imageHeight",dispName:"Image Height",type:"float",min:0,defVal:24},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:12},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.dataStorage.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.1}];mxCellRenderer.defaultShapes.manualInput.prototype.customProperties=
-[{name:"size",dispName:"Size",type:"float",min:0,defVal:30},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.loopLimit.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.offPageConnector.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:38},{name:"arcSize",dispName:"Arc Size",type:"float",
-min:0,defVal:20}];mxCellRenderer.defaultShapes.display.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.singleArrow.prototype.customProperties=[{name:"arrowWidth",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.3},{name:"arrowSize",dispName:"Arrowhead Length",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.doubleArrow.prototype.customProperties=[{name:"arrowWidth",dispName:"Arrow Width",type:"float",
-min:0,max:1,defVal:.3},{name:"arrowSize",dispName:"Arrowhead Length",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.cross.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.corner.prototype.customProperties=[{name:"dx",dispName:"Width1",type:"float",min:0,defVal:20},{name:"dy",dispName:"Width2",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.tee.prototype.customProperties=[{name:"dx",dispName:"Width1",
-type:"float",min:0,defVal:20},{name:"dy",dispName:"Width2",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.umlLifeline.prototype.customProperties=[{name:"participant",dispName:"Participant",type:"enum",defVal:"none",enumList:[{val:"none",dispName:"Default"},{val:"umlActor",dispName:"Actor"},{val:"umlBoundary",dispName:"Boundary"},{val:"umlEntity",dispName:"Entity"},{val:"umlControl",dispName:"Control"}]},{name:"size",dispName:"Height",type:"float",defVal:40,min:0}];mxCellRenderer.defaultShapes.umlFrame.prototype.customProperties=
-[{name:"width",dispName:"Title Width",type:"float",defVal:60,min:0},{name:"height",dispName:"Title Height",type:"float",defVal:30,min:0}];StyleFormatPanel.prototype.defaultColorSchemes=[[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",font:"#333333"},{fill:"#dae8fc",stroke:"#6c8ebf"},{fill:"#d5e8d4",stroke:"#82b366"},{fill:"#ffe6cc",stroke:"#d79b00"},{fill:"#fff2cc",stroke:"#d6b656"},{fill:"#f8cecc",stroke:"#b85450"},{fill:"#e1d5e7",stroke:"#9673a6"}],[{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:"#aa00ff",stroke:"#7700CC",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:"#ffffff"},{fill:"#f0a30a",stroke:"#BD7000",font:"#ffffff"},{fill:"#e3c800",
-stroke:"#B09500",font:"#ffffff"},{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(a,b,c){if(null!=b){var f=function(a){if(null!=a)if(c)for(var f=0;f<a.length;f++)b[a[f].name]=a[f];else for(var l in b){for(var d=!1,f=0;f<a.length;f++)if(a[f].name==l&&a[f].type==b[l].type){d=!0;break}d||delete b[l]}},l=this.editorUi.editor.graph.view.getState(a);null!=l&&
-null!=l.shape&&(l.shape.commonCustomPropAdded||(l.shape.commonCustomPropAdded=!0,l.shape.customProperties=l.shape.customProperties||[],l.cell.vertex?Array.prototype.push.apply(l.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(l.shape.customProperties,Editor.commonEdgeProperties)),f(l.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{f(JSON.parse(a))}catch(I){}}};var f=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=
-this.format.createSelectionState();"image"==a.style.shape||a.containsLabel||this.container.appendChild(this.addStyles(this.createPanel()));f.apply(this,arguments);if(Editor.enableCustomProperties){for(var b={},c=a.vertices,l=a.edges,d=0;d<c.length;d++)this.findCommonProperties(c[d],b,0==d);for(d=0;d<l.length;d++)this.findCommonProperties(l[d],b,0==c.length&&0==d);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),
-b,a))}};var l=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var b=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("copyStyle").funct()}));b.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");b.style.marginBottom="2px";b.style.width="100px";b.style.marginRight="2px";a.appendChild(b);b=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,
-function(a){this.editorUi.actions.get("pasteStyle").funct()}));b.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")");b.style.marginBottom="2px";b.style.width="100px";a.appendChild(b);mxUtils.br(a);return l.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,b,c){function f(a,b,c,f){x.getModel().beginUpdate();try{var l=[],d=[];if(null!=c.index){for(var p=[],e=c.parentRow.nextSibling;e&&
-e.getAttribute("data-pName")==a;)p.push(e.getAttribute("data-pValue")),e=e.nextSibling;c.index<p.length?null!=f?p.splice(f,1):p[c.index]=b:p.push(b);null!=c.size&&p.length>c.size&&(p=p.slice(0,c.size));b=p.join(",");null!=c.countProperty&&(x.setCellStyles(c.countProperty,p.length,x.getSelectionCells()),l.push(c.countProperty),d.push(p.length))}x.setCellStyles(a,b,x.getSelectionCells());l.push(a);d.push(b);if(null!=c.dependentProps)for(a=0;a<c.dependentProps.length;a++){var k=c.dependentPropsDefVal[a],
-g=c.dependentPropsVals[a];if(g.length>b)g=g.slice(0,b);else for(var u=g.length;u<b;u++)g.push(k);g=g.join(",");x.setCellStyles(c.dependentProps[a],g,x.getSelectionCells());l.push(c.dependentProps[a]);d.push(g)}if("function"==typeof c.onChange)c.onChange(x,b);t.editorUi.fireEvent(new mxEventObject("styleChanged","keys",l,"values",d,"cells",x.getSelectionCells()))}finally{x.getModel().endUpdate()}}function l(b,c,f){var l=mxUtils.getOffset(a,!0),d=mxUtils.getOffset(b,!0);c.style.position="absolute";
-c.style.left=d.x-l.x+"px";c.style.top=d.y-l.y+"px";c.style.width=b.offsetWidth+"px";c.style.height=b.offsetHeight-(f?4:0)+"px";c.style.zIndex=5}function d(a,b,c){var l=document.createElement("div");l.style.width="32px";l.style.height="4px";l.style.margin="2px";l.style.border="1px solid black";l.style.background=b&&"none"!=b?b:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(t,function(d){this.editorUi.pickColor(b,function(b){l.style.background="none"==b?"url('"+Dialog.prototype.noColorImage+
-"')":b;f(a,b,c)});mxEvent.consume(d)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(l);return btn}function p(a,b,c,l,d,p,e){null!=b&&(b=b.split(","),u.push({name:a,values:b,type:c,defVal:l,countProperty:d,parentRow:p,isDeletable:!0,flipBkg:e}));btn=mxUtils.button("+",mxUtils.bind(t,function(b){for(var k=p,t=0;null!=k.nextSibling;)if(k.nextSibling.getAttribute("data-pName")==a)k=k.nextSibling,t++;else break;var x={type:c,parentRow:p,index:t,isDeletable:!0,
-defVal:l,countProperty:d},t=g(a,"",x,0==t%2,e);f(a,l,x);k.parentNode.insertBefore(t,k.nextSibling);mxEvent.consume(b)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function e(a,b,c,f,l,d,p){if(0<l){var e=Array(l);b=null!=b?b.split(","):[];for(var k=0;k<l;k++)e[k]=null!=b[k]?b[k]:null!=f?f:"";u.push({name:a,values:e,type:c,defVal:f,parentRow:d,flipBkg:p,size:l})}return document.createElement("div")}function k(a,b,c){var l=document.createElement("input");l.type=
-"checkbox";l.checked="1"==b;mxEvent.addListener(l,"change",function(){f(a,l.checked?"1":"0",c)});return l}function g(b,c,g,x,u){var n=g.dispName,B=g.type,v=document.createElement("tr");v.className="gePropRow"+(u?"Dark":"")+(x?"Alt":"")+" gePropNonHeaderRow";v.setAttribute("data-pName",b);v.setAttribute("data-pValue",c);x=!1;null!=g.index&&(v.setAttribute("data-index",g.index),n=(null!=n?n:"")+"["+g.index+"]",x=!0);var A=document.createElement("td");A.className="gePropRowCell";A.innerHTML=mxUtils.htmlEntities(mxResources.get(n,
-null,n));x&&(A.style.textAlign="right");v.appendChild(A);A=document.createElement("td");A.className="gePropRowCell";if("color"==B)A.appendChild(d(b,c,g));else if("bool"==B||"boolean"==B)A.appendChild(k(b,c,g));else if("enum"==B){var m=g.enumList;for(u=0;u<m.length;u++)if(n=m[u],n.val==c){A.innerHTML=mxUtils.htmlEntities(mxResources.get(n.dispName,null,n.dispName));break}mxEvent.addListener(A,"click",mxUtils.bind(t,function(){var d=document.createElement("select");l(A,d);for(var p=0;p<m.length;p++){var e=
-m[p],k=document.createElement("option");k.value=mxUtils.htmlEntities(e.val);k.innerHTML=mxUtils.htmlEntities(mxResources.get(e.dispName,null,e.dispName));d.appendChild(k)}d.value=c;a.appendChild(d);mxEvent.addListener(d,"change",function(){var a=mxUtils.htmlEntities(d.value);f(b,a,g)});d.focus();mxEvent.addListener(d,"blur",function(){a.removeChild(d)})}))}else"dynamicArr"==B?A.appendChild(p(b,c,g.subType,g.subDefVal,g.countProperty,v,u)):"staticArr"==B?A.appendChild(e(b,c,g.subType,g.subDefVal,g.size,
-v,u)):(A.innerHTML=c,mxEvent.addListener(A,"click",mxUtils.bind(t,function(){function d(){var a=p.value,a=0==a.length&&"string"!=B?0:a;g.allowAuto&&("auto"==a.trim().toLowerCase()?(a="auto",B="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=g.min&&a<g.min?a=g.min:null!=g.max&&a>g.max&&(a=g.max);a=mxUtils.htmlEntities(("int"==B?parseInt(a):a)+"");f(b,a,g)}var p=document.createElement("input");l(A,p,!0);p.value=c;p.className="gePropEditor";"int"!=B&&"float"!=B||g.allowAuto||(p.type="number",p.step=
-"int"==B?"1":"any",null!=g.min&&(p.min=parseFloat(g.min)),null!=g.max&&(p.max=parseFloat(g.max)));a.appendChild(p);mxEvent.addListener(p,"keypress",function(a){13==a.keyCode&&d()});p.focus();mxEvent.addListener(p,"blur",function(){d()})})));g.isDeletable&&(u=mxUtils.button("-",mxUtils.bind(t,function(a){f(b,"",g,g.index);mxEvent.consume(a)})),u.style.height="16px",u.style.width="25px",u.style["float"]="right",u.className="geColorBtn",A.appendChild(u));v.appendChild(A);return v}var t=this,x=this.editorUi.editor.graph,
-u=[];a.style.position="relative";a.style.padding="0";var B=document.createElement("table");B.style.whiteSpace="nowrap";B.style.width="100%";var n=document.createElement("tr");n.className="gePropHeader";var v=document.createElement("th");v.className="gePropHeaderCell";var A=document.createElement("img");A.src=Sidebar.prototype.expandedImage;v.appendChild(A);mxUtils.write(v,mxResources.get("property"));n.style.cursor="pointer";var m=function(){var b=B.querySelectorAll(".gePropNonHeaderRow"),c;if(t.editorUi.propertiesCollapsed){A.src=
-Sidebar.prototype.collapsedImage;c="none";for(var f=a.childNodes.length-1;0<=f;f--)try{var l=a.childNodes[f],d=l.nodeName.toUpperCase();"INPUT"!=d&&"SELECT"!=d||a.removeChild(l)}catch(O){}}else A.src=Sidebar.prototype.expandedImage,c="";for(f=0;f<b.length;f++)b[f].style.display=c};mxEvent.addListener(n,"click",function(){t.editorUi.propertiesCollapsed=!t.editorUi.propertiesCollapsed;m()});n.appendChild(v);v=document.createElement("th");v.className="gePropHeaderCell";v.innerHTML=mxResources.get("value");
-n.appendChild(v);B.appendChild(n);var y=!1,z=!1,C;for(C in b)if(n=b[C],"function"!=typeof n.isVisible||n.isVisible(c,this)){var q=null!=c.style[C]?mxUtils.htmlEntities(c.style[C]+""):n.defVal;if("separator"==n.type)z=!z;else{if("staticArr"==n.type)n.size=parseInt(c.style[n.sizeProperty]||b[n.sizeProperty].defVal)||0;else if(null!=n.dependentProps){for(var F=n.dependentProps,E=[],D=[],v=0;v<F.length;v++){var M=c.style[F[v]];D.push(b[F[v]].subDefVal);E.push(null!=M?M.split(","):[])}n.dependentPropsDefVal=
-D;n.dependentPropsVals=E}B.appendChild(g(C,q,n,y,z));y=!y}}for(v=0;v<u.length;v++)for(n=u[v],b=n.parentRow,c=0;c<n.values.length;c++)C=g(n.name,n.values[c],{type:n.type,parentRow:n.parentRow,isDeletable:n.isDeletable,index:c,defVal:n.defVal,countProperty:n.countProperty,size:n.size},0==c%2,n.flipBkg),b.parentNode.insertBefore(C,b.nextSibling),b=C;a.appendChild(B);m();return a};StyleFormatPanel.prototype.addStyles=function(a){function b(a){function b(a){var b=mxUtils.button("",function(b){f.getModel().beginUpdate();
-try{var c=f.getSelectionCells();for(b=0;b<c.length;b++){for(var l=f.getModel().getStyle(c[b]),p=0;p<d.length;p++)l=mxUtils.removeStylename(l,d[p]);var e=f.getModel().isVertex(c[b])?f.defaultVertexStyle:f.defaultEdgeStyle;null!=a?(l=mxUtils.setStyle(l,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(e,mxConstants.STYLE_GRADIENTCOLOR,null)),l=""==a.fill?mxUtils.setStyle(l,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(l,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,
-null)),l=""==a.stroke?mxUtils.setStyle(l,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(l,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(e,mxConstants.STYLE_STROKECOLOR,null)),f.getModel().isVertex(c[b])&&(l=mxUtils.setStyle(l,mxConstants.STYLE_FONTCOLOR,a.font||mxUtils.getValue(e,mxConstants.STYLE_FONTCOLOR,null)))):(l=mxUtils.setStyle(l,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,"#ffffff")),l=mxUtils.setStyle(l,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(e,
-mxConstants.STYLE_STROKECOLOR,"#000000")),l=mxUtils.setStyle(l,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(e,mxConstants.STYLE_GRADIENTCOLOR,null)),f.getModel().isVertex(c[b])&&(l=mxUtils.setStyle(l,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(e,mxConstants.STYLE_FONTCOLOR,null))));f.getModel().setStyle(c[b],l)}}finally{f.getModel().endUpdate()}});b.className="geStyleButton";b.style.width="36px";b.style.height="30px";b.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&
-(mxClient.IS_QUIRKS||10>document.documentMode)?b.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":b.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE?b.style.background="url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor=""==a.fill?mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"):a.fill||mxUtils.getValue(f.defaultVertexStyle,
-mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"),b.style.border=a.stroke==mxConstants.NONE?"1px solid transparent":""==a.stroke?"1px solid "+mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"):"1px solid "+(a.stroke||mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"));else{var c=mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),p=mxUtils.getValue(f.defaultVertexStyle,
-mxConstants.STYLE_STROKECOLOR,"#000000");b.style.backgroundColor=c;b.style.border="1px solid "+p}l.appendChild(b)}l.innerHTML="";for(var c=0;c<a.length;c++)0<c&&0==mxUtils.mod(c,4)&&mxUtils.br(l),b(a[c])}function c(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var f=this.editorUi.editor.graph,l=document.createElement("div");l.style.whiteSpace="nowrap";l.style.paddingLeft="24px";l.style.paddingRight="20px";
-a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(l);var d="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(" ");null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var p=document.createElement("div");p.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";
+function(a,c,f,l){void 0!==c?b.push(c.replace(/\\'/g,"'")):void 0!==f?b.push(f.replace(/\\"/g,'"')):void 0!==l&&b.push(l);return""});/,\s*$/.test(a)&&b.push("");return b};Editor.prototype.isCorsEnabledForUrl=function(a){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)return!0;null!=urlParams.cors&&null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(a)||"https://raw.githubusercontent.com/"===a.substring(0,34)||
+"https://cdn.rawgit.com/"===a.substring(0,23)||"https://rawgit.com/"===a.substring(0,19)||/^https?:\/\/[^\/]*\.blob.core.windows.net\//.test(a)||/^https?:\/\/[^\/]*\.iconfinder.com\//.test(a)||/^https?:\/\/[^\/]*\.draw\.io\/proxy/.test(a)||/^https?:\/\/[^\/]*\.github\.io\//.test(a)};Editor.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(f){if(null!=f){var l="http://"==f.substring(0,7)||"https://"==f.substring(0,8);l&&
+!navigator.onLine?f=EditorUi.prototype.svgBrokenImage.src:!l||f.substring(0,a.baseUrl.length)==a.baseUrl||EditorUi.prototype.crossOriginImages&&c.isCorsEnabledForUrl(f)?"chrome-extension://"==f.substring(0,19)||mxClient.IS_CHROMEAPP||(f=b.apply(this,arguments)):f=PROXY_URL+"?url="+encodeURIComponent(f)}return f};return a};Editor.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};Editor.prototype.convertImageToDataUri=function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,
+mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(EditorUi.prototype.svgBrokenImage.src)});else{var c=new Image;EditorUi.prototype.crossOriginImages&&(c.crossOrigin="anonymous");c.onload=function(){var a=document.createElement("canvas"),f=a.getContext("2d");a.height=c.height;a.width=c.width;f.drawImage(c,0,0);try{b(a.toDataURL())}catch(I){b(EditorUi.prototype.svgBrokenImage.src)}};c.onerror=function(){b(EditorUi.prototype.svgBrokenImage.src)};c.src=a}};Editor.prototype.convertImages=
+function(a,b,c,f){null==f&&(f=this.createImageUrlConverter());var l=0,d=c||{};c=mxUtils.bind(this,function(c,p){for(var e=a.getElementsByTagName(c),k=0;k<e.length;k++)mxUtils.bind(this,function(c){var e=f.convert(c.getAttribute(p));if(null!=e&&"data:"!=e.substring(0,5)){var k=d[e];null==k?(l++,this.convertImageToDataUri(e,function(f){null!=f&&(d[e]=f,c.setAttribute(p,f));l--;0==l&&b(a)})):c.setAttribute(p,k)}else null!=e&&c.setAttribute(p,e)})(e[k])});c("image","xlink:href");c("img","src");0==l&&
+b(a)};Editor.prototype.base64Encode=function(a){for(var b="",c=0,f=a.length,l,d,p;c<f;){l=a.charCodeAt(c++)&255;if(c==f){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((l&3)<<4);b+="==";break}d=a.charCodeAt(c++);if(c==f){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((l&3)<<
+4|(d&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&15)<<2);b+="=";break}p=a.charCodeAt(c++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((l&3)<<4|(d&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&15)<<2|(p&192)>>6);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(p&63)}return b};
+Editor.prototype.loadUrl=function(a,b,c,f,l,d){try{var p=f||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);l=null!=l?l:!0;var e=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var f=a.getText();if(p){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var f=Array(a.length),
+l=0;l<a.length;l++)f[l]=String.fromCharCode(a[l]);f=f.join("")}d=null!=d?d:"data:image/png;base64,";f=d+this.base64Encode(f)}b(f)}}else null!=c&&c({code:App.ERROR_UNKNOWN},a)}),function(){null!=c&&c({code:App.ERROR_UNKNOWN})},p,this.timeout,function(){l&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:e})})});e()}catch(Q){null!=c&&c(Q)}};Editor.prototype.loadFonts=function(a){if(null!=this.fontCss&&null==this.resolvedFontCss){var b=function(a){return a.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$",
+"g"),"")},c=this.fontCss.split("url("),f=0,l={},d=mxUtils.bind(this,function(){if(0==f){for(var d=[c[0]],p=1;p<c.length;p++){var e=c[p].indexOf(")");d.push('url("');d.push(l[b(c[p].substring(0,e))]);d.push('"'+c[p].substring(e))}this.resolvedFontCss=d.join("");a()}});if(0<c.length)for(var p=1;p<c.length;p++){var e=c[p].indexOf(")"),k=null,g=c[p].indexOf("format(",e);0<g&&(k=b(c[p].substring(g+7,c[p].indexOf(")",g))));mxUtils.bind(this,function(a){if(null==l[a]){l[a]=a;f++;var b="application/x-font-ttf";
+if("svg"==k||/(\.svg)($|\?)/i.test(a))b="image/svg+xml";else if("otf"==k||"embedded-opentype"==k||/(\.otf)($|\?)/i.test(a))b="application/x-font-opentype";else if("woff"==k||/(\.woff)($|\?)/i.test(a))b="application/font-woff";else if("woff2"==k||/(\.woff2)($|\?)/i.test(a))b="application/font-woff2";else if("eot"==k||/(\.eot)($|\?)/i.test(a))b="application/vnd.ms-fontobject";else if("sfnt"==k||/(\.sfnt)($|\?)/i.test(a))b="application/font-sfnt";var c=a;/^https?:\/\//.test(c)&&!this.isCorsEnabledForUrl(c)&&
+(c=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(c,mxUtils.bind(this,function(b){l[a]=b;f--;d()}),mxUtils.bind(this,function(a){f--;d()}),!0,null,"data:"+b+";charset=utf-8;base64,")}})(b(c[p].substring(0,e)),k)}}else a()};Editor.prototype.convertMath=function(a,b,c,f){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this,function(){f()}))}),0)):f()};Editor.prototype.isExportToCanvas=
+function(){return mxClient.IS_CHROMEAPP||!this.graph.mathEnabled&&this.useCanvasForExport};Editor.prototype.exportToCanvas=function(a,b,c,f,l,d,p,e,k,g,t,x,u,B){d=null!=d?d:!0;x=null!=x?x:this.graph;u=null!=u?u:0;var A=k?null:x.background;A==mxConstants.NONE&&(A=null);null==A&&(A=f);null==A&&0==k&&(A=this.graph.defaultPageBackgroundColor);this.convertImages(x.getSvg(A,null,null,B,null,null!=p?p:!0,null,null,null,g),mxUtils.bind(this,function(c){var f=new Image;f.onload=mxUtils.bind(this,function(){try{var p=
+document.createElement("canvas"),k=parseInt(c.getAttribute("width")),g=parseInt(c.getAttribute("height"));e=null!=e?e:1;null!=b&&(e=d?Math.min(1,Math.min(3*b/(4*g),b/k)):b/k);k=Math.ceil(e*k)+2*u;g=Math.ceil(e*g)+2*u;p.setAttribute("width",k);p.setAttribute("height",g);var t=p.getContext("2d");null!=A&&(t.beginPath(),t.rect(0,0,k,g),t.fillStyle=A,t.fill());t.scale(e,e);mxClient.IS_SF?window.setTimeout(function(){t.drawImage(f,u/e,u/e);a(p)},0):(t.drawImage(f,u/e,u/e),a(p))}catch(X){null!=l&&l(X)}});
+f.onerror=function(a){null!=l&&l(a)};try{g&&this.graph.addSvgShadow(c);var p=mxUtils.bind(this,function(){if(null!=this.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(x,c,!0,mxUtils.bind(this,function(){f.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(p)}catch(V){null!=l&&l(V)}}),c,t)};Editor.prototype.writeGraphModelToPng=function(a,b,c,f,
+l){function d(a,b){var c=k;k+=b;return a.substring(c,k)}function p(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function e(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var k=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=l&&l();else if(d(a,4),"IHDR"!=d(a,4))null!=l&&l();else{d(a,17);l=a.substring(0,k);do{var g=p(a);
+if("IDAT"==d(a,4)){l=a.substring(0,k-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+f;f=4294967295;f=EditorUi.prototype.updateCRC(f,b,0,4);f=EditorUi.prototype.updateCRC(f,c,0,c.length);l+=e(c.length)+b+c+e(f^4294967295);l+=a.substring(k-8,a.length);break}l+=a.substring(k-8,k-4+g);d(a,g);d(a,4)}while(g);return"data:image/png;base64,"+(window.btoa?btoa(l):Base64.encode(l,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://desk.draw.io/support/solutions/articles/16000091426";
+var g=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,b){g.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var e=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){e.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,b){var c=null;null!=a.editor.graph.getModel().getParent(b)?c=b.getId():null!=a.currentPage&&
+(c=a.currentPage.getId());return c});if(null!=window.StyleFormatPanel){var k=Format.prototype.init;Format.prototype.init=function(){k.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var m=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?m.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();
+return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var n=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(a){a=n.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var b=this.editorUi,c=b.editor.graph,f=this.createOption(mxResources.get("shadow"),function(){return c.shadowVisible},function(a){var f=new ChangePageSetup(b);f.ignoreColor=!0;f.ignoreImage=
+!0;f.shadowVisible=a;c.model.execute(f)},{install:function(a){this.listener=function(){a(c.shadowVisible)};b.addListener("shadowVisibleChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}});Editor.shadowOptionEnabled||(f.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(f,60));a.appendChild(f)}return a};var q=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=q.apply(this,arguments);var b=this.editorUi,
+c=b.editor.graph;if(c.isEnabled()){var f=b.getCurrentFile();if(null!=f&&f.isAutosaveOptional()){var l=this.createOption(mxResources.get("autosave"),function(){return b.editor.autosave},function(a){b.editor.setAutosave(a);b.editor.autosave&&f.isModified()&&f.fileChanged()},{install:function(a){this.listener=function(){a(b.editor.autosave)};b.editor.addListener("autosaveChanged",this.listener)},destroy:function(){b.editor.removeListener(this.listener)}});a.appendChild(l)}}if(this.isMathOptionVisible()&&
+c.isEnabled()&&"undefined"!==typeof MathJax){l=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return c.mathEnabled},function(a){b.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(c.mathEnabled)};b.addListener("mathEnabledChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}});l.style.paddingTop="5px";a.appendChild(l);var d=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875");
+d.style.position="relative";d.style.marginLeft="6px";d.style.top="2px";l.appendChild(d)}return a};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=
+[{name:"size",dispName:"Size",type:"float",defVal:.3,min:0,max:1}];mxCellRenderer.defaultShapes.internalStorage.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"dx",dispName:"Left Line",type:"float",min:0,defVal:20},{name:"dy",dispName:"Top Line",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.cube.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"darkOpacity",dispName:"Dark Opacity",
+type:"float",min:-1,max:1,defVal:0},{name:"darkOpacity2",dispName:"Dark Opacity 2",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.step.prototype.customProperties=[{name:"size",dispName:"Notch Size",type:"float",min:0,defVal:20},{name:"fixedSize",dispName:"Fixed Size",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.trapezoid.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.tape.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.4}];mxCellRenderer.defaultShapes.note.prototype.customProperties=[{name:"size",dispName:"Fold Size",type:"float",min:0,defVal:30},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.card.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
+{name:"size",dispName:"Cutoff Size",type:"float",min:0,defVal:30}];mxCellRenderer.defaultShapes.callout.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"base",dispName:"Callout Width",type:"float",min:0,defVal:20},{name:"size",dispName:"Callout Length",type:"float",min:0,defVal:30},{name:"position",dispName:"Callout Position",type:"float",min:0,max:1,defVal:.5},{name:"position2",dispName:"Callout Tip Position",type:"float",
+min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.folder.prototype.customProperties=[{name:"tabWidth",dispName:"Tab Width",type:"float"},{name:"tabHeight",dispName:"Tab Height",type:"float"},{name:"tabPosition",dispName:"Tap Position",type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"right",dispName:"Right"}]}];mxCellRenderer.defaultShapes.swimlane.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"startSize",dispName:"Header Size",type:"float"},
+{name:"horizontal",dispName:"Horizontal",type:"bool",defVal:!0},{name:"separatorColor",dispName:"Separator Color",type:"color",defVal:null}];mxCellRenderer.defaultShapes.doubleEllipse.prototype.customProperties=[{name:"margin",dispName:"Indent",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.ext.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"double",dispName:"Double",type:"bool",defVal:!1},{name:"margin",dispName:"Indent",type:"float",
+min:0,defVal:0}];mxCellRenderer.defaultShapes.curlyBracket.prototype.customProperties=[{name:"rounded",dispName:"Rounded",type:"bool",defVal:!0},{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.image.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.label.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",type:"bool",defVal:!0},{name:"imageAlign",
+dispName:"Image Align",type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"center",dispName:"Center"},{val:"right",dispName:"Right"}],defVal:"left"},{name:"imageVerticalAlign",dispName:"Image Vertical Align",type:"enum",enumList:[{val:"top",dispName:"Top"},{val:"middle",dispName:"Middle"},{val:"bottom",dispName:"Bottom"}],defVal:"middle"},{name:"imageWidth",dispName:"Image Width",type:"float",min:0,defVal:24},{name:"imageHeight",dispName:"Image Height",type:"float",min:0,defVal:24},{name:"arcSize",
+dispName:"Arc Size",type:"float",min:0,defVal:12},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.dataStorage.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.1}];mxCellRenderer.defaultShapes.manualInput.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:30},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.loopLimit.prototype.customProperties=
+[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.offPageConnector.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:38},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.display.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.singleArrow.prototype.customProperties=
+[{name:"arrowWidth",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.3},{name:"arrowSize",dispName:"Arrowhead Length",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.doubleArrow.prototype.customProperties=[{name:"arrowWidth",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.3},{name:"arrowSize",dispName:"Arrowhead Length",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.cross.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,
+max:1,defVal:.2}];mxCellRenderer.defaultShapes.corner.prototype.customProperties=[{name:"dx",dispName:"Width1",type:"float",min:0,defVal:20},{name:"dy",dispName:"Width2",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.tee.prototype.customProperties=[{name:"dx",dispName:"Width1",type:"float",min:0,defVal:20},{name:"dy",dispName:"Width2",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.umlLifeline.prototype.customProperties=[{name:"participant",dispName:"Participant",type:"enum",
+defVal:"none",enumList:[{val:"none",dispName:"Default"},{val:"umlActor",dispName:"Actor"},{val:"umlBoundary",dispName:"Boundary"},{val:"umlEntity",dispName:"Entity"},{val:"umlControl",dispName:"Control"}]},{name:"size",dispName:"Height",type:"float",defVal:40,min:0}];mxCellRenderer.defaultShapes.umlFrame.prototype.customProperties=[{name:"width",dispName:"Title Width",type:"float",defVal:60,min:0},{name:"height",dispName:"Title Height",type:"float",defVal:30,min:0}];StyleFormatPanel.prototype.defaultColorSchemes=
+[[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",font:"#333333"},{fill:"#dae8fc",stroke:"#6c8ebf"},{fill:"#d5e8d4",stroke:"#82b366"},{fill:"#ffe6cc",stroke:"#d79b00"},{fill:"#fff2cc",stroke:"#d6b656"},{fill:"#f8cecc",stroke:"#b85450"},{fill:"#e1d5e7",stroke:"#9673a6"}],[{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:"#aa00ff",stroke:"#7700CC",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:"#ffffff"},{fill:"#f0a30a",stroke:"#BD7000",font:"#ffffff"},{fill:"#e3c800",stroke:"#B09500",font:"#ffffff"},{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(a,b,c){if(null!=b){var f=function(a){if(null!=a)if(c)for(var f=0;f<a.length;f++)b[a[f].name]=a[f];else for(var l in b){for(var d=!1,f=0;f<a.length;f++)if(a[f].name==l&&a[f].type==b[l].type){d=!0;break}d||delete b[l]}},l=this.editorUi.editor.graph.view.getState(a);null!=l&&null!=l.shape&&(l.shape.commonCustomPropAdded||(l.shape.commonCustomPropAdded=!0,l.shape.customProperties=l.shape.customProperties||[],l.cell.vertex?Array.prototype.push.apply(l.shape.customProperties,
+Editor.commonVertexProperties):Array.prototype.push.apply(l.shape.customProperties,Editor.commonEdgeProperties)),f(l.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{f(JSON.parse(a))}catch(I){}}};var f=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"==a.style.shape||a.containsLabel||this.container.appendChild(this.addStyles(this.createPanel()));f.apply(this,arguments);if(Editor.enableCustomProperties){for(var b=
+{},c=a.vertices,l=a.edges,d=0;d<c.length;d++)this.findCommonProperties(c[d],b,0==d);for(d=0;d<l.length;d++)this.findCommonProperties(l[d],b,0==c.length&&0==d);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var l=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var b=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("copyStyle").funct()}));
+b.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");b.style.marginBottom="2px";b.style.width="100px";b.style.marginRight="2px";a.appendChild(b);b=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("pasteStyle").funct()}));b.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")");b.style.marginBottom="2px";b.style.width="100px";a.appendChild(b);
+mxUtils.br(a);return l.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,b,c){function f(a,b,c,f){x.getModel().beginUpdate();try{var l=[],d=[];if(null!=c.index){for(var p=[],e=c.parentRow.nextSibling;e&&e.getAttribute("data-pName")==a;)p.push(e.getAttribute("data-pValue")),e=e.nextSibling;c.index<p.length?null!=f?p.splice(f,1):p[c.index]=b:p.push(b);null!=c.size&&p.length>c.size&&(p=p.slice(0,c.size));b=p.join(",");null!=c.countProperty&&
+(x.setCellStyles(c.countProperty,p.length,x.getSelectionCells()),l.push(c.countProperty),d.push(p.length))}x.setCellStyles(a,b,x.getSelectionCells());l.push(a);d.push(b);if(null!=c.dependentProps)for(a=0;a<c.dependentProps.length;a++){var k=c.dependentPropsDefVal[a],g=c.dependentPropsVals[a];if(g.length>b)g=g.slice(0,b);else for(var u=g.length;u<b;u++)g.push(k);g=g.join(",");x.setCellStyles(c.dependentProps[a],g,x.getSelectionCells());l.push(c.dependentProps[a]);d.push(g)}if("function"==typeof c.onChange)c.onChange(x,
+b);t.editorUi.fireEvent(new mxEventObject("styleChanged","keys",l,"values",d,"cells",x.getSelectionCells()))}finally{x.getModel().endUpdate()}}function l(b,c,f){var l=mxUtils.getOffset(a,!0),d=mxUtils.getOffset(b,!0);c.style.position="absolute";c.style.left=d.x-l.x+"px";c.style.top=d.y-l.y+"px";c.style.width=b.offsetWidth+"px";c.style.height=b.offsetHeight-(f?4:0)+"px";c.style.zIndex=5}function d(a,b,c){var l=document.createElement("div");l.style.width="32px";l.style.height="4px";l.style.margin="2px";
+l.style.border="1px solid black";l.style.background=b&&"none"!=b?b:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(t,function(d){this.editorUi.pickColor(b,function(b){l.style.background="none"==b?"url('"+Dialog.prototype.noColorImage+"')":b;f(a,b,c)});mxEvent.consume(d)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(l);return btn}function p(a,b,c,l,d,p,e){null!=b&&(b=b.split(","),u.push({name:a,values:b,type:c,defVal:l,countProperty:d,
+parentRow:p,isDeletable:!0,flipBkg:e}));btn=mxUtils.button("+",mxUtils.bind(t,function(b){for(var k=p,t=0;null!=k.nextSibling;)if(k.nextSibling.getAttribute("data-pName")==a)k=k.nextSibling,t++;else break;var x={type:c,parentRow:p,index:t,isDeletable:!0,defVal:l,countProperty:d},t=g(a,"",x,0==t%2,e);f(a,l,x);k.parentNode.insertBefore(t,k.nextSibling);mxEvent.consume(b)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function e(a,b,c,f,l,d,p){if(0<l){var e=Array(l);
+b=null!=b?b.split(","):[];for(var k=0;k<l;k++)e[k]=null!=b[k]?b[k]:null!=f?f:"";u.push({name:a,values:e,type:c,defVal:f,parentRow:d,flipBkg:p,size:l})}return document.createElement("div")}function k(a,b,c){var l=document.createElement("input");l.type="checkbox";l.checked="1"==b;mxEvent.addListener(l,"change",function(){f(a,l.checked?"1":"0",c)});return l}function g(b,c,g,x,u){var n=g.dispName,B=g.type,v=document.createElement("tr");v.className="gePropRow"+(u?"Dark":"")+(x?"Alt":"")+" gePropNonHeaderRow";
+v.setAttribute("data-pName",b);v.setAttribute("data-pValue",c);x=!1;null!=g.index&&(v.setAttribute("data-index",g.index),n=(null!=n?n:"")+"["+g.index+"]",x=!0);var A=document.createElement("td");A.className="gePropRowCell";A.innerHTML=mxUtils.htmlEntities(mxResources.get(n,null,n));x&&(A.style.textAlign="right");v.appendChild(A);A=document.createElement("td");A.className="gePropRowCell";if("color"==B)A.appendChild(d(b,c,g));else if("bool"==B||"boolean"==B)A.appendChild(k(b,c,g));else if("enum"==B){var m=
+g.enumList;for(u=0;u<m.length;u++)if(n=m[u],n.val==c){A.innerHTML=mxUtils.htmlEntities(mxResources.get(n.dispName,null,n.dispName));break}mxEvent.addListener(A,"click",mxUtils.bind(t,function(){var d=document.createElement("select");l(A,d);for(var p=0;p<m.length;p++){var e=m[p],k=document.createElement("option");k.value=mxUtils.htmlEntities(e.val);k.innerHTML=mxUtils.htmlEntities(mxResources.get(e.dispName,null,e.dispName));d.appendChild(k)}d.value=c;a.appendChild(d);mxEvent.addListener(d,"change",
+function(){var a=mxUtils.htmlEntities(d.value);f(b,a,g)});d.focus();mxEvent.addListener(d,"blur",function(){a.removeChild(d)})}))}else"dynamicArr"==B?A.appendChild(p(b,c,g.subType,g.subDefVal,g.countProperty,v,u)):"staticArr"==B?A.appendChild(e(b,c,g.subType,g.subDefVal,g.size,v,u)):(A.innerHTML=c,mxEvent.addListener(A,"click",mxUtils.bind(t,function(){function d(){var a=p.value,a=0==a.length&&"string"!=B?0:a;g.allowAuto&&("auto"==a.trim().toLowerCase()?(a="auto",B="string"):(a=parseFloat(a),a=isNaN(a)?
+0:a));null!=g.min&&a<g.min?a=g.min:null!=g.max&&a>g.max&&(a=g.max);a=mxUtils.htmlEntities(("int"==B?parseInt(a):a)+"");f(b,a,g)}var p=document.createElement("input");l(A,p,!0);p.value=c;p.className="gePropEditor";"int"!=B&&"float"!=B||g.allowAuto||(p.type="number",p.step="int"==B?"1":"any",null!=g.min&&(p.min=parseFloat(g.min)),null!=g.max&&(p.max=parseFloat(g.max)));a.appendChild(p);mxEvent.addListener(p,"keypress",function(a){13==a.keyCode&&d()});p.focus();mxEvent.addListener(p,"blur",function(){d()})})));
+g.isDeletable&&(u=mxUtils.button("-",mxUtils.bind(t,function(a){f(b,"",g,g.index);mxEvent.consume(a)})),u.style.height="16px",u.style.width="25px",u.style["float"]="right",u.className="geColorBtn",A.appendChild(u));v.appendChild(A);return v}var t=this,x=this.editorUi.editor.graph,u=[];a.style.position="relative";a.style.padding="0";var B=document.createElement("table");B.style.whiteSpace="nowrap";B.style.width="100%";var n=document.createElement("tr");n.className="gePropHeader";var v=document.createElement("th");
+v.className="gePropHeaderCell";var A=document.createElement("img");A.src=Sidebar.prototype.expandedImage;v.appendChild(A);mxUtils.write(v,mxResources.get("property"));n.style.cursor="pointer";var m=function(){var b=B.querySelectorAll(".gePropNonHeaderRow"),c;if(t.editorUi.propertiesCollapsed){A.src=Sidebar.prototype.collapsedImage;c="none";for(var f=a.childNodes.length-1;0<=f;f--)try{var l=a.childNodes[f],d=l.nodeName.toUpperCase();"INPUT"!=d&&"SELECT"!=d||a.removeChild(l)}catch(O){}}else A.src=Sidebar.prototype.expandedImage,
+c="";for(f=0;f<b.length;f++)b[f].style.display=c};mxEvent.addListener(n,"click",function(){t.editorUi.propertiesCollapsed=!t.editorUi.propertiesCollapsed;m()});n.appendChild(v);v=document.createElement("th");v.className="gePropHeaderCell";v.innerHTML=mxResources.get("value");n.appendChild(v);B.appendChild(n);var y=!1,z=!1,q;for(q in b)if(n=b[q],"function"!=typeof n.isVisible||n.isVisible(c,this)){var C=null!=c.style[q]?mxUtils.htmlEntities(c.style[q]+""):n.defVal;if("separator"==n.type)z=!z;else{if("staticArr"==
+n.type)n.size=parseInt(c.style[n.sizeProperty]||b[n.sizeProperty].defVal)||0;else if(null!=n.dependentProps){for(var F=n.dependentProps,E=[],D=[],v=0;v<F.length;v++){var M=c.style[F[v]];D.push(b[F[v]].subDefVal);E.push(null!=M?M.split(","):[])}n.dependentPropsDefVal=D;n.dependentPropsVals=E}B.appendChild(g(q,C,n,y,z));y=!y}}for(v=0;v<u.length;v++)for(n=u[v],b=n.parentRow,c=0;c<n.values.length;c++)q=g(n.name,n.values[c],{type:n.type,parentRow:n.parentRow,isDeletable:n.isDeletable,index:c,defVal:n.defVal,
+countProperty:n.countProperty,size:n.size},0==c%2,n.flipBkg),b.parentNode.insertBefore(q,b.nextSibling),b=q;a.appendChild(B);m();return a};StyleFormatPanel.prototype.addStyles=function(a){function b(a){function b(a){var b=mxUtils.button("",function(b){f.getModel().beginUpdate();try{var c=f.getSelectionCells();for(b=0;b<c.length;b++){for(var l=f.getModel().getStyle(c[b]),p=0;p<d.length;p++)l=mxUtils.removeStylename(l,d[p]);var e=f.getModel().isVertex(c[b])?f.defaultVertexStyle:f.defaultEdgeStyle;null!=
+a?(l=mxUtils.setStyle(l,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(e,mxConstants.STYLE_GRADIENTCOLOR,null)),l=""==a.fill?mxUtils.setStyle(l,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(l,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,null)),l=""==a.stroke?mxUtils.setStyle(l,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(l,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(e,mxConstants.STYLE_STROKECOLOR,null)),f.getModel().isVertex(c[b])&&
+(l=mxUtils.setStyle(l,mxConstants.STYLE_FONTCOLOR,a.font||mxUtils.getValue(e,mxConstants.STYLE_FONTCOLOR,null)))):(l=mxUtils.setStyle(l,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,"#ffffff")),l=mxUtils.setStyle(l,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(e,mxConstants.STYLE_STROKECOLOR,"#000000")),l=mxUtils.setStyle(l,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(e,mxConstants.STYLE_GRADIENTCOLOR,null)),f.getModel().isVertex(c[b])&&(l=mxUtils.setStyle(l,mxConstants.STYLE_FONTCOLOR,
+mxUtils.getValue(e,mxConstants.STYLE_FONTCOLOR,null))));f.getModel().setStyle(c[b],l)}}finally{f.getModel().endUpdate()}});b.className="geStyleButton";b.style.width="36px";b.style.height="30px";b.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?b.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":b.style.backgroundImage="linear-gradient("+a.fill+
+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE?b.style.background="url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor=""==a.fill?mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"):a.fill||mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"),b.style.border=a.stroke==mxConstants.NONE?"1px solid transparent":""==a.stroke?"1px solid "+mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,
+"dark"!=uiTheme?"#2a2a2a":"#ffffff"):"1px solid "+(a.stroke||mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"));else{var c=mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),p=mxUtils.getValue(f.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");b.style.backgroundColor=c;b.style.border="1px solid "+p}l.appendChild(b)}l.innerHTML="";for(var c=0;c<a.length;c++)0<c&&0==mxUtils.mod(c,4)&&mxUtils.br(l),b(a[c])}function c(a){mxEvent.addListener(a,
+"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var f=this.editorUi.editor.graph,l=document.createElement("div");l.style.whiteSpace="nowrap";l.style.paddingLeft="24px";l.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(l);var d="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(" ");
+null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var p=document.createElement("div");p.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;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(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length);b(this.defaultColorSchemes[this.editorUi.currentScheme])}));var e=document.createElement("div");e.style.cssText="position:absolute;left:202px;top:8px;bottom:8px;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&&(a.appendChild(p),a.appendChild(e));mxEvent.addListener(e,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length);b(this.defaultColorSchemes[this.editorUi.currentScheme])}));c(p);c(e);b(this.defaultColorSchemes[this.editorUi.currentScheme]);return a};StyleFormatPanel.prototype.addEditOps=function(a){var b=this.format.getSelectionState(),c=null;1==this.editorUi.editor.graph.getSelectionCount()&&
 (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="202px",c.style.marginBottom="2px",a.appendChild(c));var f=this.editorUi.editor.graph,l=f.view.getState(f.getSelectionCell());1==f.getSelectionCount()&&null!=l&&null!=l.shape&&null!=l.shape.stencil?(b=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,
@@ -8290,12 +8281,12 @@ a)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this
 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.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.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(a){var b=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?b="mxgraph.er":"sysML"==a.substring(0,5)&&(b="mxgraph.sysml"));return b};var C=mxMarker.createMarker;mxMarker.createMarker=function(a,b,c,f,l,d,p,e,k,g){if(null!=c&&null==mxMarker.markers[c]){var t=this.getPackageForType(c);null!=t&&mxStencilRegistry.getStencil(t)}return C.apply(this,arguments)};PrintDialog.prototype.create=
-function(a,b){function c(){n.value=Math.max(1,Math.min(e,Math.max(parseInt(n.value),parseInt(u.value))));u.value=Math.max(1,Math.min(e,Math.min(parseInt(n.value),parseInt(u.value))))}function f(b){function c(b,c,d){var p=b.useCssTransforms,e=b.currentTranslate,g=b.currentScale,k=b.view.translate,t=b.view.scale;b.useCssTransforms&&(b.useCssTransforms=!1,b.currentTranslate=new mxPoint(0,0),b.currentScale=1,b.view.translate=new mxPoint(0,0),b.view.scale=1);var x=b.getGraphBounds(),u=0,n=0,B=ja.get(),
-v=1/b.pageScale,A=y.checked;if(A)var v=parseInt(S.value),z=parseInt(U.value),v=Math.min(B.height*z/(x.height/b.view.scale),B.width*v/(x.width/b.view.scale));else v=parseInt(m.value)/(100*b.pageScale),isNaN(v)&&(f=1/b.pageScale,m.value="100 %");B=mxRectangle.fromRectangle(B);B.width=Math.ceil(B.width*f);B.height=Math.ceil(B.height*f);v*=f;!A&&b.pageVisible?(x=b.getPageLayout(),u-=x.x*B.width,n-=x.y*B.height):A=!0;if(null==c){c=PrintDialog.createPrintPreview(b,v,B,0,u,n,A);c.pageSelector=!1;c.mathEnabled=
-!1;u=a.getCurrentFile();null!=u&&(c.title=u.getTitle());var C=c.writeHead;c.writeHead=function(b){C.apply(this,arguments);null!=a.editor.fontCss&&(b.writeln('<style type="text/css">'),b.writeln(a.editor.fontCss),b.writeln("</style>"))};if("undefined"!==typeof MathJax){var q=c.renderPage;c.renderPage=function(a,b,c,f,l,d){var p=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var e=q.apply(this,arguments);mxClient.NO_FO=p;this.graph.mathEnabled?
-this.mathEnabled=this.mathEnabled||!0:e.className="geDisableMathJax";return e}}u=null;null!=l.themes&&"darkTheme"==l.defaultThemeName&&(u=l.stylesheet,l.stylesheet=l.getDefaultStylesheet(),l.refresh());c.open(null,null,d,!0);null!=u&&(l.stylesheet=u,l.refresh())}else{B=b.background;if(null==B||""==B||B==mxConstants.NONE)B="#ffffff";c.backgroundColor=B;c.autoOrigin=A;c.appendGraph(b,v,u,n,d,!0)}p&&(b.useCssTransforms=p,b.currentTranslate=e,b.currentScale=g,b.view.translate=k,b.view.scale=t);return c}
+function(a,b){function c(){n.value=Math.max(1,Math.min(e,Math.max(parseInt(n.value),parseInt(u.value))));u.value=Math.max(1,Math.min(e,Math.min(parseInt(n.value),parseInt(u.value))))}function f(b){function c(b,c,d){var p=b.useCssTransforms,e=b.currentTranslate,g=b.currentScale,k=b.view.translate,t=b.view.scale;b.useCssTransforms&&(b.useCssTransforms=!1,b.currentTranslate=new mxPoint(0,0),b.currentScale=1,b.view.translate=new mxPoint(0,0),b.view.scale=1);var x=b.getGraphBounds(),u=0,B=0,n=ja.get(),
+v=1/b.pageScale,A=y.checked;if(A)var v=parseInt(S.value),z=parseInt(U.value),v=Math.min(n.height*z/(x.height/b.view.scale),n.width*v/(x.width/b.view.scale));else v=parseInt(m.value)/(100*b.pageScale),isNaN(v)&&(f=1/b.pageScale,m.value="100 %");n=mxRectangle.fromRectangle(n);n.width=Math.ceil(n.width*f);n.height=Math.ceil(n.height*f);v*=f;!A&&b.pageVisible?(x=b.getPageLayout(),u-=x.x*n.width,B-=x.y*n.height):A=!0;if(null==c){c=PrintDialog.createPrintPreview(b,v,n,0,u,B,A);c.pageSelector=!1;c.mathEnabled=
+!1;u=a.getCurrentFile();null!=u&&(c.title=u.getTitle());var q=c.writeHead;c.writeHead=function(b){q.apply(this,arguments);null!=a.editor.fontCss&&(b.writeln('<style type="text/css">'),b.writeln(a.editor.fontCss),b.writeln("</style>"))};if("undefined"!==typeof MathJax){var C=c.renderPage;c.renderPage=function(a,b,c,f,l,d){var p=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var e=C.apply(this,arguments);mxClient.NO_FO=p;this.graph.mathEnabled?
+this.mathEnabled=this.mathEnabled||!0:e.className="geDisableMathJax";return e}}u=null;null!=l.themes&&"darkTheme"==l.defaultThemeName&&(u=l.stylesheet,l.stylesheet=l.getDefaultStylesheet(),l.refresh());c.open(null,null,d,!0);null!=u&&(l.stylesheet=u,l.refresh())}else{n=b.background;if(null==n||""==n||n==mxConstants.NONE)n="#ffffff";c.backgroundColor=n;c.autoOrigin=A;c.appendGraph(b,v,u,B,d,!0)}p&&(b.useCssTransforms=p,b.currentTranslate=e,b.currentScale=g,b.view.translate=k,b.view.scale=t);return c}
 var f=parseInt(ka.value)/100;isNaN(f)&&(f=1,ka.value="100 %");var f=.75*f,d=u.value,p=n.value,e=!t.checked,g=null;e&&(e=d==k&&p==k);if(!e&&null!=a.pages&&a.pages.length){var x=0,e=a.pages.length-1;t.checked||(x=parseInt(d)-1,e=parseInt(p)-1);for(var B=x;B<=e;B++){var v=a.pages[B],d=v==a.currentPage?l:null;if(null==d){var d=a.createTemporaryGraph(l.getStylesheet()),p=!0,x=!1,A=null,z=null;null==v.viewState&&null==v.root&&a.updatePageRoot(v);null!=v.viewState&&(p=v.viewState.pageVisible,x=v.viewState.mathEnabled,
-A=v.viewState.background,z=v.viewState.backgroundImage);d.background=A;d.backgroundImage=null!=z?new mxImage(z.src,z.width,z.height):null;d.pageVisible=p;d.mathEnabled=x;var C=d.getGlobalVariable;d.getGlobalVariable=function(b){return"page"==b?v.getName():"pagenumber"==b?B+1:"pagecount"==b?null!=a.pages?a.pages.length:1:C.apply(this,arguments)};document.body.appendChild(d.container);a.updatePageRoot(v);d.model.setRoot(v.root)}g=c(d,g,B!=e);d!=l&&d.container.parentNode.removeChild(d.container)}}else g=
+A=v.viewState.background,z=v.viewState.backgroundImage);d.background=A;d.backgroundImage=null!=z?new mxImage(z.src,z.width,z.height):null;d.pageVisible=p;d.mathEnabled=x;var q=d.getGlobalVariable;d.getGlobalVariable=function(b){return"page"==b?v.getName():"pagenumber"==b?B+1:"pagecount"==b?null!=a.pages?a.pages.length:1:q.apply(this,arguments)};document.body.appendChild(d.container);a.updatePageRoot(v);d.model.setRoot(v.root)}g=c(d,g,B!=e);d!=l&&d.container.parentNode.removeChild(d.container)}}else g=
 c(l);null==g?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(g.mathEnabled&&(e=g.wnd.document,e.writeln('<script type="text/x-mathjax-config">'),e.writeln("MathJax.Hub.Config({"),e.writeln("showMathMenu: false,"),e.writeln('messageStyle: "none",'),e.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),e.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),e.writeln('"HTML-CSS": {'),e.writeln("imageFont: null"),e.writeln("},"),e.writeln("TeX: {"),
 e.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),e.writeln("},"),e.writeln("tex2jax: {"),e.writeln('\tignoreClass: "geDisableMathJax"'),e.writeln("},"),e.writeln("asciimath2jax: {"),e.writeln('\tignoreClass: "geDisableMathJax"'),e.writeln("}"),e.writeln("});"),b&&(e.writeln("MathJax.Hub.Queue(function () {"),e.writeln("window.print();"),e.writeln("});")),e.writeln("\x3c/script>"),e.writeln('<script type="text/javascript" src="'+DRAW_MATH_URL+'/MathJax.js">\x3c/script>')),
 g.closeDocument(),!g.mathEnabled&&b&&PrintDialog.printPreview(g))}var l=a.editor.graph,d=document.createElement("div"),p=document.createElement("h3");p.style.width="100%";p.style.textAlign="center";p.style.marginTop="0px";mxUtils.write(p,b||mxResources.get("print"));d.appendChild(p);var e=1,k=1,g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var t=document.createElement("input");t.style.cssText="margin-right:8px;margin-bottom:8px;";
@@ -8303,15 +8294,15 @@ t.setAttribute("value","all");t.setAttribute("type","radio");t.setAttribute("nam
 u.setAttribute("value","1");u.setAttribute("type","number");u.setAttribute("min","1");u.style.width="50px";g.appendChild(u);p=document.createElement("span");mxUtils.write(p,mxResources.get("to"));g.appendChild(p);var n=u.cloneNode(!0);g.appendChild(n);mxEvent.addListener(u,"focus",function(){x.checked=!0});mxEvent.addListener(n,"focus",function(){x.checked=!0});mxEvent.addListener(u,"change",c);mxEvent.addListener(n,"change",c);if(null!=a.pages&&(e=a.pages.length,null!=a.currentPage))for(p=0;p<a.pages.length;p++)if(a.currentPage==
 a.pages[p]){k=p+1;u.value=k;n.value=k;break}u.setAttribute("max",e);n.setAttribute("max",e);1<e&&d.appendChild(g);var B=document.createElement("div");B.style.marginBottom="10px";var v=document.createElement("input");v.style.marginRight="8px";v.setAttribute("value","adjust");v.setAttribute("type","radio");v.setAttribute("name","printZoom");B.appendChild(v);p=document.createElement("span");mxUtils.write(p,mxResources.get("adjustTo"));B.appendChild(p);var m=document.createElement("input");m.style.cssText=
 "margin:0 8px 0 8px;";m.setAttribute("value","100 %");m.style.width="50px";B.appendChild(m);mxEvent.addListener(m,"focus",function(){v.checked=!0});d.appendChild(B);var g=g.cloneNode(!1),y=v.cloneNode(!0);y.setAttribute("value","fit");v.setAttribute("checked","checked");p=document.createElement("div");p.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";p.appendChild(y);g.appendChild(p);B=document.createElement("table");B.style.display="inline-block";var A=document.createElement("tbody"),
-z=document.createElement("tr"),C=z.cloneNode(!0),q=document.createElement("td"),F=q.cloneNode(!0),E=q.cloneNode(!0),P=q.cloneNode(!0),M=q.cloneNode(!0),da=q.cloneNode(!0);q.style.textAlign="right";P.style.textAlign="right";mxUtils.write(q,mxResources.get("fitTo"));var S=document.createElement("input");S.style.cssText="margin:0 8px 0 8px;";S.setAttribute("value","1");S.setAttribute("min","1");S.setAttribute("type","number");S.style.width="40px";F.appendChild(S);p=document.createElement("span");mxUtils.write(p,
-mxResources.get("fitToSheetsAcross"));E.appendChild(p);mxUtils.write(P,mxResources.get("fitToBy"));var U=S.cloneNode(!0);M.appendChild(U);mxEvent.addListener(S,"focus",function(){y.checked=!0});mxEvent.addListener(U,"focus",function(){y.checked=!0});p=document.createElement("span");mxUtils.write(p,mxResources.get("fitToSheetsDown"));da.appendChild(p);z.appendChild(q);z.appendChild(F);z.appendChild(E);C.appendChild(P);C.appendChild(M);C.appendChild(da);A.appendChild(z);A.appendChild(C);B.appendChild(A);
+z=document.createElement("tr"),q=z.cloneNode(!0),C=document.createElement("td"),F=C.cloneNode(!0),E=C.cloneNode(!0),P=C.cloneNode(!0),M=C.cloneNode(!0),da=C.cloneNode(!0);C.style.textAlign="right";P.style.textAlign="right";mxUtils.write(C,mxResources.get("fitTo"));var S=document.createElement("input");S.style.cssText="margin:0 8px 0 8px;";S.setAttribute("value","1");S.setAttribute("min","1");S.setAttribute("type","number");S.style.width="40px";F.appendChild(S);p=document.createElement("span");mxUtils.write(p,
+mxResources.get("fitToSheetsAcross"));E.appendChild(p);mxUtils.write(P,mxResources.get("fitToBy"));var U=S.cloneNode(!0);M.appendChild(U);mxEvent.addListener(S,"focus",function(){y.checked=!0});mxEvent.addListener(U,"focus",function(){y.checked=!0});p=document.createElement("span");mxUtils.write(p,mxResources.get("fitToSheetsDown"));da.appendChild(p);z.appendChild(C);z.appendChild(F);z.appendChild(E);q.appendChild(P);q.appendChild(M);q.appendChild(da);A.appendChild(z);A.appendChild(q);B.appendChild(A);
 g.appendChild(B);d.appendChild(g);g=document.createElement("div");p=document.createElement("div");p.style.fontWeight="bold";p.style.marginBottom="12px";mxUtils.write(p,mxResources.get("paperSize"));g.appendChild(p);p=document.createElement("div");p.style.marginBottom="12px";var ja=PageSetupDialog.addPageFormatPanel(p,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);g.appendChild(p);p=document.createElement("span");mxUtils.write(p,mxResources.get("pageScale"));g.appendChild(p);
 var ka=document.createElement("input");ka.style.cssText="margin:0 8px 0 8px;";ka.setAttribute("value","100 %");ka.style.width="60px";g.appendChild(ka);d.appendChild(g);p=document.createElement("div");p.style.cssText="text-align:right;margin:48px 0 0 0;";g=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});g.className="geBtn";a.editor.cancelFirst&&p.appendChild(g);a.isOffline()||(B=mxUtils.button(mxResources.get("help"),function(){l.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),
 B.className="geBtn",p.appendChild(B));PrintDialog.previewEnabled&&(B=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();f(!1)}),B.className="geBtn",p.appendChild(B));B=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();f(!0)});B.className="geBtn gePrimaryBtn";p.appendChild(B);a.editor.cancelFirst||p.appendChild(g);d.appendChild(p);this.container=d};var x=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==
 this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),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)):(x.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 B=document.createElement("canvas"),F=new Image;F.onload=function(){try{B.getContext("2d").drawImage(F,0,0);var a=B.toDataURL("image/png");Editor.prototype.useCanvasForExport=
 null!=a&&6<a.length}catch(E){}};F.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(A){}})();
-(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,b,d){d.ui=a.ui;return b};a.afterDecode=function(a,b,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="12.2.0";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";
+(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,b,d){d.ui=a.ui;return b};a.afterDecode=function(a,b,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="12.2.1";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";
 EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":"https://rt.draw.io/cache";Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.logError=function(a,b,c,d,e){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,
 c,d,e);else if(EditorUi.enableLogging)try{if(a!=EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var f=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",l=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";e=null!=e?e:Error(a);(new Image).src=l+"/log?severity="+f+"&v="+encodeURIComponent(EditorUi.VERSION)+
 "&msg=clientError:"+encodeURIComponent(a)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=d?":colno:"+encodeURIComponent(d):"")+(null!=e&&null!=e.stack?"&stack="+encodeURIComponent(e.stack):"")}}catch(y){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var b=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=b+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=
@@ -8390,10 +8381,10 @@ g.translate(-c.x,-c.y)}e.appendChild(this.sidebar.createVertexTemplateFromCells(
 mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b=m.getSelectionCells(),c=m.view.getBounds(b),f=m.view.scale;c.x/=f;c.y/=f;c.width/=f;c.height/=f;c.x-=m.view.translate.x;c.y-=m.view.translate.y;H(b,c)}mxEvent.consume(a)});mxEvent.addGestureListeners(e,function(){},mxUtils.bind(this,function(a){m.isMouseDown&&null!=m.panningManager&&null!=m.graphHandler.shape&&(m.graphHandler.shape.node.style.visibility="hidden",e.style.backgroundColor="#f1f3f4",e.style.cursor="copy",m.panningManager.stop(),
 m.autoScroll=!1,null!=m.graphHandler.guide&&m.graphHandler.guide.setVisible(!1),null!=m.graphHandler.hint&&(m.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){m.isMouseDown&&null!=m.panningManager&&null!=m.graphHandler&&(e.style.backgroundColor="",e.style.cursor="default",this.sidebar.showTooltips=!0,m.panningManager.stop(),m.graphHandler.reset(),m.isMouseDown=!1,m.autoScroll=!0,J(a),mxEvent.consume(a))}));mxEvent.addListener(e,"mouseleave",mxUtils.bind(this,
 function(a){m.isMouseDown&&null!=m.graphHandler.shape&&(m.graphHandler.shape.node.style.visibility="visible",e.style.backgroundColor="",e.style.cursor="",m.autoScroll=!0,null!=m.graphHandler.guide&&m.graphHandler.guide.setVisible(!0),null!=m.graphHandler.hint&&(m.graphHandler.hint.style.visibility="visible"))}));Graph.fileSupport&&(mxEvent.addListener(e,"dragover",mxUtils.bind(this,function(a){e.style.backgroundColor="#f1f3f4";a.dataTransfer.dropEffect="copy";e.style.cursor="copy";this.sidebar.hideTooltip();
-a.stopPropagation();a.preventDefault()})),mxEvent.addListener(e,"drop",mxUtils.bind(this,function(a){e.style.cursor="";e.style.backgroundColor="";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(c,f,p,g,k,t,x,n,u){if(null!=c&&"image/"==f.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,k,t),c)],c[0].vertex=!0,H(c,new mxRectangle(0,
-0,k,t),a,mxEvent.isAltDown(a)?null:x.substring(0,x.lastIndexOf(".")).replace(/_/g," ")),null!=d&&null!=d.parentNode&&0<b.length&&(d.parentNode.removeChild(d),d=null);else{var m=!1,B=mxUtils.bind(this,function(c,f){if(null!=c&&"text/xml"==f){var p=mxUtils.parseXml(c);if("mxlibrary"==p.documentElement.nodeName)try{var g=JSON.parse(mxUtils.getTextContent(p.documentElement));l(g,e);b=b.concat(g);D(a);this.spinner.stop();m=!0}catch(P){}else if("mxfile"==p.documentElement.nodeName)try{for(var k=p.documentElement.getElementsByTagName("diagram"),
-p=0;p<k.length;p++){var t=this.stringToCells(Editor.getDiagramNodeXml(k[p])),x=this.editor.graph.getBoundingBoxFromGeometry(t);H(t,new mxRectangle(0,0,x.width,x.height),a)}m=!0}catch(P){null!=window.console&&console.log("error in drop handler:",P)}}m||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=d&&null!=d.parentNode&&0<b.length&&(d.parentNode.removeChild(d),d=null)});null!=u&&null!=x&&(/(\.v(dx|sdx?))($|\?)/i.test(x)||/(\.vs(x|sx?))($|\?)/i.test(x))?
-this.importVisio(u,function(a){B(a,"text/xml")},null,x):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,x)&&null!=u?this.parseFile(u,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?B(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):B(c,f)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(e,"dragleave",
+a.stopPropagation();a.preventDefault()})),mxEvent.addListener(e,"drop",mxUtils.bind(this,function(a){e.style.cursor="";e.style.backgroundColor="";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(c,f,p,g,k,t,x,n,m){if(null!=c&&"image/"==f.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,k,t),c)],c[0].vertex=!0,H(c,new mxRectangle(0,
+0,k,t),a,mxEvent.isAltDown(a)?null:x.substring(0,x.lastIndexOf(".")).replace(/_/g," ")),null!=d&&null!=d.parentNode&&0<b.length&&(d.parentNode.removeChild(d),d=null);else{var u=!1,B=mxUtils.bind(this,function(c,f){if(null!=c&&"text/xml"==f){var p=mxUtils.parseXml(c);if("mxlibrary"==p.documentElement.nodeName)try{var g=JSON.parse(mxUtils.getTextContent(p.documentElement));l(g,e);b=b.concat(g);D(a);this.spinner.stop();u=!0}catch(P){}else if("mxfile"==p.documentElement.nodeName)try{for(var k=p.documentElement.getElementsByTagName("diagram"),
+p=0;p<k.length;p++){var t=this.stringToCells(Editor.getDiagramNodeXml(k[p])),x=this.editor.graph.getBoundingBoxFromGeometry(t);H(t,new mxRectangle(0,0,x.width,x.height),a)}u=!0}catch(P){null!=window.console&&console.log("error in drop handler:",P)}}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=d&&null!=d.parentNode&&0<b.length&&(d.parentNode.removeChild(d),d=null)});null!=m&&null!=x&&(/(\.v(dx|sdx?))($|\?)/i.test(x)||/(\.vs(x|sx?))($|\?)/i.test(x))?
+this.importVisio(m,function(a){B(a,"text/xml")},null,x):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,x)&&null!=m?this.parseFile(m,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?B(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):B(c,f)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(e,"dragleave",
 function(a){e.style.cursor="";e.style.backgroundColor="";a.stopPropagation();a.preventDefault()}));k=k.cloneNode(!1);k.setAttribute("src",Editor.editImage);k.setAttribute("title",mxResources.get("edit"));g.insertBefore(k,g.firstChild);mxEvent.addListener(k,"click",q);mxEvent.addListener(e,"dblclick",function(a){mxEvent.getSource(a)==e&&q(a)});c=k.cloneNode(!1);c.setAttribute("src",Editor.plusImage);c.setAttribute("title",mxResources.get("add"));g.insertBefore(c,g.firstChild);mxEvent.addListener(c,
 "click",J);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(c=document.createElement("span"),c.setAttribute("title",mxResources.get("help")),c.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(c,"?"),mxEvent.addGestureListeners(c,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),g.insertBefore(c,g.firstChild))}p.appendChild(g);p.style.paddingRight=18*g.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=
 function(a,b){for(var c=0;c<a.length;c++){var f=a[c],d=f.data;if(null!=d){var d=this.convertDataUri(d),l="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==f.aspect&&(l+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(l+"image="+d,f.w,f.h,"",f.title||"",!1,!1,!0))}else null!=f.xml&&(d=this.stringToCells(Graph.decompress(f.xml)),0<d.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(d,f.w,f.h,f.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=
@@ -8479,18 +8470,18 @@ a?e.getName():"pagenumber"==a?1:l.apply(this,arguments)};document.body.appendChi
 function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)}catch(y){null!=b&&b(y)}};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,d,e,g,k){k=b.background;k==mxConstants.NONE&&(k=null);g=b.getSvg(k,null,null,null,null,g);b.shadowVisible&&b.addSvgShadow(g);null!=a&&g.setAttribute("content",a);null!=c&&g.setAttribute("resource",c);if(null!=e)this.convertImages(g,mxUtils.bind(this,function(a){e((d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
 mxUtils.getXml(a))}));else return(d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(g)};EditorUi.prototype.exportImage=function(a,b,c,d,e,g,k,n,m,x,B){m=null!=m?m:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var f=this.editor.graph.isSelectionEmpty();c=null!=c?c:f;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,
 function(a){this.spinner.stop();try{this.saveCanvas(a,e?this.getFileData(!0,null,null,null,c,n):null,m,null==this.pages||0==this.pages.length,B)}catch(E){"Invalid image"==E.message?this.downloadFile(m):this.handleError(E)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,d,null,null,g,k,x)}catch(A){this.spinner.stop(),this.handleError(A)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var b=
-function(a){return a.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")},c=this.editor.fontCss.split("url("),d=0,f={},e=mxUtils.bind(this,function(){if(0==d){for(var l=[c[0]],e=1;e<c.length;e++){var g=c[e].indexOf(")");l.push('url("');l.push(f[b(c[e].substring(0,g))]);l.push('"'+c[e].substring(g))}this.editor.resolvedFontCss=l.join("");a()}});if(0<c.length)for(var g=1;g<c.length;g++){var k=c[g].indexOf(")"),n=null,m=c[g].indexOf("format(",k);0<m&&(n=b(c[g].substring(m+7,c[g].indexOf(")",
-m))));mxUtils.bind(this,function(a){if(null==f[a]){f[a]=a;d++;var b="application/x-font-ttf";if("svg"==n||/(\.svg)($|\?)/i.test(a))b="image/svg+xml";else if("otf"==n||"embedded-opentype"==n||/(\.otf)($|\?)/i.test(a))b="application/x-font-opentype";else if("woff"==n||/(\.woff)($|\?)/i.test(a))b="application/font-woff";else if("woff2"==n||/(\.woff2)($|\?)/i.test(a))b="application/font-woff2";else if("eot"==n||/(\.eot)($|\?)/i.test(a))b="application/vnd.ms-fontobject";else if("sfnt"==n||/(\.sfnt)($|\?)/i.test(a))b=
+function(a){return a.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")},c=this.editor.fontCss.split("url("),d=0,f={},e=mxUtils.bind(this,function(){if(0==d){for(var l=[c[0]],e=1;e<c.length;e++){var g=c[e].indexOf(")");l.push('url("');l.push(f[b(c[e].substring(0,g))]);l.push('"'+c[e].substring(g))}this.editor.resolvedFontCss=l.join("");a()}});if(0<c.length)for(var g=1;g<c.length;g++){var k=c[g].indexOf(")"),n=null,x=c[g].indexOf("format(",k);0<x&&(n=b(c[g].substring(x+7,c[g].indexOf(")",
+x))));mxUtils.bind(this,function(a){if(null==f[a]){f[a]=a;d++;var b="application/x-font-ttf";if("svg"==n||/(\.svg)($|\?)/i.test(a))b="image/svg+xml";else if("otf"==n||"embedded-opentype"==n||/(\.otf)($|\?)/i.test(a))b="application/x-font-opentype";else if("woff"==n||/(\.woff)($|\?)/i.test(a))b="application/font-woff";else if("woff2"==n||/(\.woff2)($|\?)/i.test(a))b="application/font-woff2";else if("eot"==n||/(\.eot)($|\?)/i.test(a))b="application/vnd.ms-fontobject";else if("sfnt"==n||/(\.sfnt)($|\?)/i.test(a))b=
 "application/font-sfnt";var c=a;/^https?:\/\//.test(c)&&!this.editor.isCorsEnabledForUrl(c)&&(c=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(c,mxUtils.bind(this,function(b){f[a]=b;d--;e()}),mxUtils.bind(this,function(a){d--;e()}),!0,null,"data:"+b+";charset=utf-8;base64,")}})(b(c[g].substring(0,k)),n)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,d,e,g,k,n,m,x,B,q,A,E,D){try{g=null!=g?g:!0;k=null!=k?k:!0;q=null!=q?q:this.editor.graph;A=null!=A?A:0;var f=m?null:q.background;
-f==mxConstants.NONE&&(f=null);null==f&&(f=d);null==f&&0==m&&(f="#ffffff");this.convertImages(q.getSvg(null,null,null,E,null,k,null,null,null,x),mxUtils.bind(this,function(c){var d=new Image;d.onload=mxUtils.bind(this,function(){try{var l=function(){mxClient.IS_SF?window.setTimeout(function(){x.drawImage(d,A/n,A/n);a(k)},0):(x.drawImage(d,A/n,A/n),a(k))},k=document.createElement("canvas"),p=parseInt(c.getAttribute("width")),m=parseInt(c.getAttribute("height"));n=null!=n?n:1;null!=b&&(n=g?Math.min(1,
-Math.min(3*b/(4*m),b/p)):b/p);p=Math.ceil(n*p)+2*A;m=Math.ceil(n*m)+2*A;k.setAttribute("width",p);k.setAttribute("height",m);var x=k.getContext("2d");null!=f&&(x.beginPath(),x.rect(0,0,p,m),x.fillStyle=f,x.fill());x.scale(n,n);if(D){var t=q.view,B=btoa(unescape(encodeURIComponent(t.createSvgGrid(t.gridColor)))),B="data:image/svg+xml;base64,"+B,u=q.gridSize*t.gridSteps*n,v=q.getGraphBounds(),y=v.x*n,z=v.y*n,C=new Image;C.src=B;C.onload=function(){for(var a=-Math.round(u-mxUtils.mod(t.translate.x*n-
-y,u)),b=-Math.round(u-mxUtils.mod(t.translate.y*n-z,u));a<p;a+=u)for(var c=b;c<m;c+=u)x.drawImage(C,a/n,c/n);l()}}else l()}catch(ba){null!=e&&e(ba)}});d.onerror=function(a){null!=e&&e(a)};try{x&&this.editor.graph.addSvgShadow(c);var l=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(q,c,!0,mxUtils.bind(this,
+f==mxConstants.NONE&&(f=null);null==f&&(f=d);null==f&&0==m&&(f="#ffffff");this.convertImages(q.getSvg(null,null,null,E,null,k,null,null,null,x),mxUtils.bind(this,function(c){var d=new Image;d.onload=mxUtils.bind(this,function(){try{var l=function(){mxClient.IS_SF?window.setTimeout(function(){x.drawImage(d,A/n,A/n);a(k)},0):(x.drawImage(d,A/n,A/n),a(k))},k=document.createElement("canvas"),p=parseInt(c.getAttribute("width")),t=parseInt(c.getAttribute("height"));n=null!=n?n:1;null!=b&&(n=g?Math.min(1,
+Math.min(3*b/(4*t),b/p)):b/p);p=Math.ceil(n*p)+2*A;t=Math.ceil(n*t)+2*A;k.setAttribute("width",p);k.setAttribute("height",t);var x=k.getContext("2d");null!=f&&(x.beginPath(),x.rect(0,0,p,t),x.fillStyle=f,x.fill());x.scale(n,n);if(D){var m=q.view,B=btoa(unescape(encodeURIComponent(m.createSvgGrid(m.gridColor)))),B="data:image/svg+xml;base64,"+B,u=q.gridSize*m.gridSteps*n,v=q.getGraphBounds(),y=v.x*n,F=v.y*n,z=new Image;z.src=B;z.onload=function(){for(var a=-Math.round(u-mxUtils.mod(m.translate.x*n-
+y,u)),b=-Math.round(u-mxUtils.mod(m.translate.y*n-F,u));a<p;a+=u)for(var c=b;c<t;c+=u)x.drawImage(z,a/n,c/n);l()}}else l()}catch(ba){null!=e&&e(ba)}});d.onerror=function(a){null!=e&&e(a)};try{x&&this.editor.graph.addSvgShadow(c);var l=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(q,c,!0,mxUtils.bind(this,
 function(){d.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(l)}catch(K){null!=e&&e(K)}}),c,B)}catch(J){null!=e&&e(J)}};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var f="http://"==d.substring(0,7)||"https://"==d.substring(0,8);f&&!navigator.onLine?d=c.svgBrokenImage.src:!f||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.editor.isCorsEnabledForUrl(d)?"chrome-extension://"==
 d.substring(0,19)||mxClient.IS_CHROMEAPP||(d=b.apply(this,arguments)):d=PROXY_URL+"?url="+encodeURIComponent(d)}return d};return a};EditorUi.prototype.convertImages=function(a,b,c,d){null==d&&(d=this.createImageUrlConverter());var f=0,l=c||{};c=mxUtils.bind(this,function(c,e){for(var g=a.getElementsByTagName(c),k=0;k<g.length;k++)mxUtils.bind(this,function(c){try{if(null!=c){var g=d.convert(c.getAttribute(e));if(null!=g&&"data:"!=g.substring(0,5)){var k=l[g];null==k?(f++,this.convertImageToDataUri(g,
 function(d){null!=d&&(l[g]=d,c.setAttribute(e,d));f--;0==f&&b(a)})):c.setAttribute(e,k)}else null!=g&&c.setAttribute(e,g)}}catch(E){}})(g[k])});c("image","xlink:href");c("img","src");0==f&&b(a)};EditorUi.prototype.loadUrl=function(a,b,c,d,e,g,k){try{var f=!k&&(d||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a));e=null!=e?e:!0;var l=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var d=a.getText();
 if(f){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var d=Array(a.length),l=0;l<a.length;l++)d[l]=String.fromCharCode(a[l]);d=d.join("")}g=null!=g?g:"data:image/png;base64,";d=g+this.base64Encode(d)}b(d)}}else null!=c&&c({message:mxResources.get("error")+" "+a.getStatus()},a)}),function(a){null!=c&&c({message:mxResources.get("error")+" "+a.getStatus()})},f,this.timeout,function(){e&&
 null!=c&&c({code:App.ERROR_TIMEOUT,retry:l})})});l()}catch(x){null!=c&&c(x)}};EditorUi.prototype.isCorsEnabledForUrl=function(a){return this.editor.isCorsEnabledForUrl(a)};EditorUi.prototype.convertImageToDataUri=function(a,b){try{var c=!0,d=window.setTimeout(mxUtils.bind(this,function(){c=!1;b(this.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){window.clearTimeout(d);c&&b(this.createSvgDataUri(a.getText()))}),function(){window.clearTimeout(d);
-c&&b(this.svgBrokenImage.src)});else{var f=new Image,l=this;this.crossOriginImages&&(f.crossOrigin="anonymous");f.onload=function(){window.clearTimeout(d);if(c)try{var a=document.createElement("canvas"),e=a.getContext("2d");a.height=f.height;a.width=f.width;e.drawImage(f,0,0);b(a.toDataURL())}catch(C){b(l.svgBrokenImage.src)}};f.onerror=function(){window.clearTimeout(d);c&&b(l.svgBrokenImage.src)};f.src=a}}catch(z){b(this.svgBrokenImage.src)}};EditorUi.prototype.importXml=function(a,b,c,d,e){b=null!=
+c&&b(this.svgBrokenImage.src)});else{var f=new Image,e=this;this.crossOriginImages&&(f.crossOrigin="anonymous");f.onload=function(){window.clearTimeout(d);if(c)try{var a=document.createElement("canvas"),l=a.getContext("2d");a.height=f.height;a.width=f.width;l.drawImage(f,0,0);b(a.toDataURL())}catch(C){b(e.svgBrokenImage.src)}};f.onerror=function(){window.clearTimeout(d);c&&b(e.svgBrokenImage.src)};f.src=a}}catch(z){b(this.svgBrokenImage.src)}};EditorUi.prototype.importXml=function(a,b,c,d,e){b=null!=
 b?b:0;c=null!=c?c:0;var f=[];try{var l=this.editor.graph;if(null!=a&&0<a.length){l.model.beginUpdate();try{var g=mxUtils.parseXml(a),k=this.editor.extractGraphModel(g.documentElement,null!=this.pages);if(null!=k&&"mxfile"==k.nodeName&&null!=this.pages){var p=k.getElementsByTagName("diagram");if(1==p.length)k=Editor.parseDiagramNode(p[0]);else if(1<p.length){a={};var g=[],n=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(k=Editor.parseDiagramNode(p[0]),d=!1,n=1);for(;n<p.length;n++){var m=
 p[n].getAttribute("id");p[n].removeAttribute("id");var u=this.updatePageRoot(new DiagramPage(p[n]));a[m]=p[n].getAttribute("id");var q=this.pages.length;null==u.getName()&&u.setName(mxResources.get("pageWithNumber",[q+1]));l.model.execute(new ChangePage(this,u,u,q,!0));g.push(u)}this.updatePageLinks(a,g)}}null!=k&&"mxGraphModel"===k.nodeName&&(f=l.importGraphModel(k,b,c,d))}finally{l.model.endUpdate()}}}catch(D){if(e)throw D;this.handleError(D)}return f};EditorUi.prototype.updatePageLinks=function(a,
 b){for(var c=0;c<b.length;c++)this.updatePageLinksForCell(a,b[c].root)};EditorUi.prototype.updatePageLinksForCell=function(a,b){var c=document.createElement("div"),d=this.editor.graph,f=d.getLinkForCell(b);null!=f&&d.setLinkForCell(b,this.updatePageLink(a,f));if(d.isHtmlLabel(b)){c.innerHTML=d.getLabel(b);for(var e=c.getElementsByTagName("a"),l=!1,g=0;g<e.length;g++)f=e[g].getAttribute("href"),null!=f&&(e[g].setAttribute("href",this.updatePageLink(a,f)),l=!0);l&&d.labelChanged(b,c.innerHTML)}for(g=
@@ -8524,15 +8515,15 @@ p,mxUtils.bind(this,function(){l=this.insertTextAt(this.validateFileData(a),c,d,
 6)&&a[u].size>t){p=!0;break}var v=mxUtils.bind(this,function(){var p=this.editor.graph,m=p.gridSize;e=null!=e?e:mxUtils.bind(this,function(a,b,c,d,e,l,g,k,p){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,g)),null):this.importFile(a,b,c,d,e,l,g,k,p,f,q)});g=null!=g?g:mxUtils.bind(this,function(a){p.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var t=a.length,u=t,A=[],v=mxUtils.bind(this,function(a,
 b){A[a]=b;if(0==--u){this.spinner.stop();if(null!=n)n(A);else{var c=[];p.getModel().beginUpdate();try{for(var d=0;d<A.length;d++){var f=A[d]();null!=f&&(c=c.concat(f))}}finally{p.getModel().endUpdate()}}g(c)}}),F=0;F<t;F++)mxUtils.bind(this,function(f){var g=a[f];if(null!=g){var n=new FileReader;n.onload=mxUtils.bind(this,function(a){if(null==k||k(g))if("image/"==g.type.substring(0,6))if("image/svg"==g.type.substring(0,9)){var n=a.target.result,t=n.indexOf(","),u=decodeURIComponent(escape(atob(n.substring(t+
 1)))),A=mxUtils.parseXml(u),u=A.getElementsByTagName("svg");if(0<u.length){var u=u[0],F=q?null:u.getAttribute("content");null!=F&&"<"!=F.charAt(0)&&"%"!=F.charAt(0)&&(F=unescape(window.atob?atob(F):Base64.decode(F,!0)));null!=F&&"%"==F.charAt(0)&&(F=decodeURIComponent(F));null==F||"<mxfile "!==F.substring(0,8)&&"<mxGraphModel "!==F.substring(0,14)?v(f,mxUtils.bind(this,function(){try{if(n.substring(0,t+1),null!=A){var a=A.getElementsByTagName("svg");if(0<a.length){var l=a[0],k=l.getAttribute("width"),
-x=l.getAttribute("height"),k=null!=k&&"%"!=k.charAt(k.length-1)?parseFloat(k):NaN,x=null!=x&&"%"!=x.charAt(x.length-1)?parseFloat(x):NaN,B=l.getAttribute("viewBox");if(null==B||0==B.length)l.setAttribute("viewBox","0 0 "+k+" "+x);else if(isNaN(k)||isNaN(x)){var u=B.split(" ");3<u.length&&(k=parseFloat(u[2]),x=parseFloat(u[3]))}n=this.createSvgDataUri(mxUtils.getXml(l));var q=Math.min(1,Math.min(d/Math.max(1,k)),d/Math.max(1,x)),v=e(n,g.type,b+f*m,c+f*m,Math.max(1,Math.round(k*q)),Math.max(1,Math.round(x*
-q)),g.name);if(isNaN(k)||isNaN(x)){var F=new Image;F.onload=mxUtils.bind(this,function(){k=Math.max(1,F.width);x=Math.max(1,F.height);v[0].geometry.width=k;v[0].geometry.height=x;l.setAttribute("viewBox","0 0 "+k+" "+x);n=this.createSvgDataUri(mxUtils.getXml(l));var a=n.indexOf(";");0<a&&(n=n.substring(0,a)+n.substring(n.indexOf(",",a+1)));p.setCellStyles("image",n,[v[0]])});F.src=this.createSvgDataUri(mxUtils.getXml(l))}return v}}}catch(fa){}return null})):v(f,mxUtils.bind(this,function(){return e(F,
-"text/xml",b+f*m,c+f*m,0,0,g.name)}))}else v(f,mxUtils.bind(this,function(){return null}))}else{u=!1;if("image/png"==g.type){var y=q?null:this.extractGraphModelFromPng(a.target.result);if(null!=y&&0<y.length){var z=new Image;z.src=a.target.result;v(f,mxUtils.bind(this,function(){return e(y,"text/xml",b+f*m,c+f*m,z.width,z.height,g.name)}));u=!0}}u||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),
+x=l.getAttribute("height"),k=null!=k&&"%"!=k.charAt(k.length-1)?parseFloat(k):NaN,x=null!=x&&"%"!=x.charAt(x.length-1)?parseFloat(x):NaN,B=l.getAttribute("viewBox");if(null==B||0==B.length)l.setAttribute("viewBox","0 0 "+k+" "+x);else if(isNaN(k)||isNaN(x)){var q=B.split(" ");3<q.length&&(k=parseFloat(q[2]),x=parseFloat(q[3]))}n=this.createSvgDataUri(mxUtils.getXml(l));var u=Math.min(1,Math.min(d/Math.max(1,k)),d/Math.max(1,x)),v=e(n,g.type,b+f*m,c+f*m,Math.max(1,Math.round(k*u)),Math.max(1,Math.round(x*
+u)),g.name);if(isNaN(k)||isNaN(x)){var F=new Image;F.onload=mxUtils.bind(this,function(){k=Math.max(1,F.width);x=Math.max(1,F.height);v[0].geometry.width=k;v[0].geometry.height=x;l.setAttribute("viewBox","0 0 "+k+" "+x);n=this.createSvgDataUri(mxUtils.getXml(l));var a=n.indexOf(";");0<a&&(n=n.substring(0,a)+n.substring(n.indexOf(",",a+1)));p.setCellStyles("image",n,[v[0]])});F.src=this.createSvgDataUri(mxUtils.getXml(l))}return v}}}catch(fa){}return null})):v(f,mxUtils.bind(this,function(){return e(F,
+"text/xml",b+f*m,c+f*m,0,0,g.name)}))}else v(f,mxUtils.bind(this,function(){return null}))}else{u=!1;if("image/png"==g.type){var z=q?null:this.extractGraphModelFromPng(a.target.result);if(null!=z&&0<z.length){var y=new Image;y.src=a.target.result;v(f,mxUtils.bind(this,function(){return e(z,"text/xml",b+f*m,c+f*m,y.width,y.height,g.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(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,a.target.result,mxUtils.bind(this,function(k,p,n){v(f,mxUtils.bind(this,function(){if(null!=k&&k.length<x){var t=l&&this.isResampleImage(a.target.result,B)?Math.min(1,Math.min(d/p,d/n)):1;return e(k,g.type,b+f*m,c+f*m,Math.round(p*t),Math.round(n*t),g.name)}this.handleError({message:mxResources.get("imageTooBig")});
 return null}))}),l,d,B)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else e(a.target.result,g.type,b+f*m,c+f*m,240,160,g.name,function(a){v(f,function(){return a})},g)});/(\.v(dx|sdx?))($|\?)/i.test(g.name)||/(\.vs(x|sx?))($|\?)/i.test(g.name)?e(null,g.type,b+f*m,c+f*m,240,160,g.name,function(a){v(f,function(){return a})},g):"image"==g.type.substring(0,5)?n.readAsDataURL(g):n.readAsText(g)}})(F)});if(p){p=[];for(u=0;u<a.length;u++)p.push(a[u]);
 a=p;this.confirmImageResize(function(a){l=a;v()},m)}else v()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,f=function(d,f){if(d||b)mxSettings.setResizeImages(d?f:null),mxSettings.save();c();a(f)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){f(a,!0)},function(a){f(a,
 !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,d)};EditorUi.prototype.parseFile=function(a,b,c){c=null!=c?c:a.name;var d=new FormData;d.append("format","xml");d.append("upfile",a,c);var f=new XMLHttpRequest;f.open("POST",OPEN_URL);f.onreadystatechange=function(){b(f)};
 f.send(d);try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+a.size})}catch(t){}};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,c,d,e,g){e=null!=e?e:this.maxImageSize;var f=Math.max(1,a.width),l=Math.max(1,a.height);if(d&&this.isResampleImage(b,g))try{var k=Math.max(f/e,l/e);if(1<k){var p=Math.round(f/k),n=Math.round(l/k),m=document.createElement("canvas");m.width=p;m.height=n;m.getContext("2d").drawImage(a,
-0,0,p,n);var t=m.toDataURL();if(t.length<b.length){var u=document.createElement("canvas");u.width=p;u.height=n;var q=u.toDataURL();t!==q&&(b=t,f=p,l=n)}}}catch(H){}c(b,f,l)};EditorUi.prototype.crcTable=[];for(var d=0;256>d;d++)for(var g=d,e=0;8>e;e++)g=1==(g&1)?3988292384^g>>>1:g>>>1,EditorUi.prototype.crcTable[d]=g;EditorUi.prototype.updateCRC=function(a,b,c,d){for(var f=0;f<d;f++)a=EditorUi.prototype.crcTable[(a^b.charCodeAt(c+f))&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=
+0,0,p,n);var t=m.toDataURL();if(t.length<b.length){var q=document.createElement("canvas");q.width=p;q.height=n;var u=q.toDataURL();t!==u&&(b=t,f=p,l=n)}}}catch(H){}c(b,f,l)};EditorUi.prototype.crcTable=[];for(var d=0;256>d;d++)for(var g=d,e=0;8>e;e++)g=1==(g&1)?3988292384^g>>>1:g>>>1,EditorUi.prototype.crcTable[d]=g;EditorUi.prototype.updateCRC=function(a,b,c,d){for(var f=0;f<d;f++)a=EditorUi.prototype.crcTable[(a^b.charCodeAt(c+f))&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=
 this.crcTable||this.createCrcTable();for(var b=-1,c=0;c<a.length;c++)b=b>>>8^this.crcTable[(b^a.charCodeAt(c))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,c,d,e){function f(a,b){var c=k;k+=b;return a.substring(c,k)}function l(a){a=f(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function g(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,
 !0);var k=0;if(f(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(f(a,4),"IHDR"!=f(a,4))null!=e&&e();else{f(a,17);e=a.substring(0,k);do{var p=l(a);if("IDAT"==f(a,4)){e=a.substring(0,k-8);"pHYs"==b&&"dpi"==c?(c=Math.round(d/.0254),c=g(c)+g(c)+String.fromCharCode(1)):c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+d;d=4294967295;d=this.updateCRC(d,b,0,4);d=this.updateCRC(d,c,0,c.length);e+=g(c.length)+b+c+g(d^4294967295);e+=a.substring(k-8,
 a.length);break}e+=a.substring(k-8,k-4+p);f(a,p);f(a,4)}while(p);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){return Editor.extractGraphModelFromPng(a)};EditorUi.prototype.loadImage=function(a,b,c){try{var d=new Image;d.onload=function(){b(d)};null!=c&&(d.onerror=c);d.src=a}catch(v){if(null!=c)c(v);else throw v;}};var k=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&
@@ -8558,25 +8549,26 @@ a;m()},mxEvent.isControlDown(a)):m()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg
 e,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"),e,g,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();this.editUpdateListener=mxUtils.bind(this,function(a,b){var c=b.getProperty("edit");null!=c&&this.updateEditReferences(c)});this.editor.undoManager.addListener(mxEvent.BEFORE_UNDO,this.editUpdateListener);this.editor.undoManager.addListener(mxEvent.BEFORE_REDO,this.editUpdateListener);"1"==
 urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var a=this.editor.graph;a.container.addEventListener("paste",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b))try{for(var c=b.clipboardData||b.originalEvent.clipboardData,d=!1,f=0;f<c.types.length;f++)if("text/"===c.types[f].substring(0,5)){d=!0;break}if(!d){var e=c.items;for(index in e){var g=e[index];if("file"===g.kind){if(a.isEditing())this.importFiles([g.getAsFile()],
 0,0,this.maxImageSize,function(b,c,d,f,e,g){a.insertImage(b,e,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var l=this.editor.graph.getInsertPoint();this.importFiles([g.getAsFile()],l.x,l.y,this.maxImageSize);mxEvent.consume(b)}break}}}}catch(C){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function a(){window.setTimeout(function(){c.innerHTML="&nbsp;";c.focus();document.execCommand("selectAll",!1,null)},
-0)}var b=this.editor.graph,c=document.createElement("div");c.setAttribute("autocomplete","off");c.setAttribute("autocorrect","off");c.setAttribute("autocapitalize","off");c.setAttribute("spellcheck","false");c.style.textRendering="optimizeSpeed";c.style.position="absolute";c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.display="block";c.style.fontSize="0px";c.contentEditable=!0;mxUtils.setOpacity(c,0);c.style.width="1px";c.style.height="1px";c.innerHTML="&nbsp;";var d=!1;this.keyHandler.bindControlKey(88,
-null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var f=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==f.nodeName||"TEXTAREA"==f.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||d||(c.style.left=b.container.scrollLeft+10+"px",c.style.top=b.container.scrollTop+10+"px",b.container.appendChild(c),
-d=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){c.focus();document.execCommand("selectAll",!1,null)},0):(c.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var f=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!d||224!=f&&17!=f&&91!=f||(d=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),c.parentNode.removeChild(c),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(c,
-"copy",mxUtils.bind(this,function(d){if(b.isEnabled())try{mxClipboard.copy(b),this.copyCells(c),a()}catch(z){this.handleError(z)}}));mxEvent.addListener(c,"cut",mxUtils.bind(this,function(d){if(b.isEnabled())try{mxClipboard.copy(b),this.copyCells(c,!0),a()}catch(z){this.handleError(z)}}));mxEvent.addListener(c,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&((new Date).getTime(),c.innerHTML="&nbsp;",c.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,
-c);c.innerHTML="&nbsp;"}),0))}),!0);var e=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==c?!0:e.apply(this,arguments)}};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this,arguments);if("data:page/id,"==a.substring(0,13)){var c=a.indexOf(",");0<c&&(b=this.getPageById(a.substring(c+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"==a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=
-function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(a)};EditorUi.prototype.isSettingsEnabled=function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings=function(){if(this.isSettingsEnabled()){ColorDialog.recentColors=mxSettings.getRecentColors();
-if(isLocalStorage)try{window.addEventListener("storage",mxUtils.bind(this,function(a){a.key==mxSettings.key&&(mxSettings.load(),ColorDialog.recentColors=mxSettings.getRecentColors(),this.menus.customFonts=mxSettings.getCustomFonts())}),!1)}catch(f){}this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]));this.menus.customFonts=mxSettings.getCustomFonts();this.addListener("customFontsChanged",mxUtils.bind(this,function(a,b){mxSettings.setCustomFonts(this.menus.customFonts);
-mxSettings.save()}));this.editor.graph.connectionHandler.setCreateTarget(mxSettings.isCreateTarget());this.fireEvent(new mxEventObject("copyConnectChanged"));this.addListener("copyConnectChanged",mxUtils.bind(this,function(a,b){mxSettings.setCreateTarget(this.editor.graph.connectionHandler.isCreateTarget());mxSettings.save()}));this.editor.graph.pageFormat=mxSettings.getPageFormat();this.addListener("pageFormatChanged",mxUtils.bind(this,function(a,b){mxSettings.setPageFormat(this.editor.graph.pageFormat);
-mxSettings.save()}));this.editor.graph.view.gridColor=mxSettings.getGridColor("dark"==uiTheme);this.addListener("gridColorChanged",mxUtils.bind(this,function(a,b){console.log("gridColorChanged",this.editor.graph.view.gridColor);mxSettings.setGridColor(this.editor.graph.view.gridColor,"dark"==uiTheme);mxSettings.save()}));if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(a,b){mxSettings.setAutosave(this.editor.autosave);mxSettings.save()})),
-this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&this.sidebar.showPalette("search",mxSettings.settings.search);this.editor.chromeless&&!this.editor.editable||null==this.sidebar||!(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.copyCells=function(a,b){var c=this.editor.graph;if(c.isSelectionEmpty())a.innerHTML=
-"";else{var d=mxUtils.sortCells(c.model.getTopmostCells(c.getSelectionCells())),f=mxUtils.getXml(this.editor.graph.encodeCells(d));mxUtils.setTextContent(a,encodeURIComponent(f));b?(c.removeCells(d,!1),c.lastPasteXml=null):(c.lastPasteXml=f,c.pasteCounter=0);a.focus();document.execCommand("selectAll",!1,null)}};EditorUi.prototype.pasteCells=function(a,b){if(!mxEvent.isConsumed(a)){var c=b.getElementsByTagName("span");if(null!=c&&0<c.length&&"application/vnd.lucid.chart.objects"===c[0].getAttribute("data-lucid-type")){var d=
-c[0].getAttribute("data-lucid-content");null!=d&&0<d.length&&(this.convertLucidChart(d,mxUtils.bind(this,function(a){var b=this.editor.graph;b.setSelectionCells(this.importXml(a,0,0));b.scrollCellToVisible(b.getSelectionCell())}),mxUtils.bind(this,function(a){this.handleError(a)})),mxEvent.consume(a))}else{var d=this.editor.graph,f=mxUtils.trim(mxClient.IS_QUIRKS||8==document.documentMode?mxUtils.getTextContent(b):b.textContent),e=!1;try{var g=f.lastIndexOf("%3E");0<=g&&g<f.length-3&&(f=f.substring(0,
-g+3))}catch(C){}try{var c=b.getElementsByTagName("span"),l=null!=c&&0<c.length?mxUtils.trim(decodeURIComponent(c[0].textContent)):decodeURIComponent(f);this.isCompatibleString(l)&&(e=!0,f=l)}catch(C){}d.lastPasteXml==f?d.pasteCounter++:(d.lastPasteXml=f,d.pasteCounter=0);c=d.pasteCounter*d.gridSize;if(null!=f&&0<f.length&&(e||this.isCompatibleString(f)?d.setSelectionCells(this.importXml(f,c,c)):(e=d.getInsertPoint(),d.isMouseInsertPoint()&&(c=0,d.lastPasteXml==f&&0<d.pasteCounter&&d.pasteCounter--),
-d.setSelectionCells(this.insertTextAt(f,e.x+c,e.y+c,!0))),!d.isSelectionEmpty())){d.scrollCellToVisible(d.getSelectionCell());null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell()));try{mxEvent.consume(a)}catch(C){}}}}};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b=null,c=0;c<a.length;c++)mxEvent.addListener(a[c],"dragleave",function(a){null!=b&&(b.parentNode.removeChild(b),b=null);a.stopPropagation();a.preventDefault()}),mxEvent.addListener(a[c],
-"dragover",mxUtils.bind(this,function(a){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==b&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(b=this.highlightElement());a.stopPropagation();a.preventDefault()})),mxEvent.addListener(a[c],"drop",mxUtils.bind(this,function(a){null!=b&&(b.parentNode.removeChild(b),b=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<a.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(a.dataTransfer.files,
-0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(a)&&!mxEvent.isShiftDown(a)):this.openFiles(a.dataTransfer.files,!0);else{var c=this.extractGraphModelFromEvent(a);if(null==c){var d=null!=a.dataTransfer?a.dataTransfer:a.clipboardData;null!=d&&(10==document.documentMode||11==document.documentMode?c=d.getData("Text"):(c=null,c=0<=mxUtils.indexOf(d.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(d.types,"text/html")?d.getData("text/html"):null,null!=
-c&&0<c.length?(d=document.createElement("div"),d.innerHTML=c,d=d.getElementsByTagName("img"),0<d.length&&(c=d[0].getAttribute("src"))):0<=mxUtils.indexOf(d.types,"text/plain")&&(c=d.getData("text/plain"))),null!=c&&("data:image/png;base64,"==c.substring(0,22)?(c=this.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(a){200<=
-a.getStatus()&&299>=a.getStatus()&&this.openLocalFile(a.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)}a.stopPropagation();a.preventDefault()}))};EditorUi.prototype.highlightElement=function(a){var b=0,c=0,d,f;if(null==a){f=document.body;var e=
-document.documentElement;d=(f.clientWidth||e.clientWidth)-3;f=Math.max(f.clientHeight||0,e.clientHeight)-3}else b=a.offsetTop,c=a.offsetLeft,d=a.clientWidth,f=a.clientHeight;e=document.createElement("div");e.style.zIndex=mxPopupMenu.prototype.zIndex+2;e.style.border="3px dotted rgb(254, 137, 12)";e.style.pointerEvents="none";e.style.position="absolute";e.style.top=b+"px";e.style.left=c+"px";e.style.width=Math.max(0,d-3)+"px";e.style.height=Math.max(0,f-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?
+0)}var b=this.editor.graph,c=document.createElement("div");c.setAttribute("autocomplete","off");c.setAttribute("autocorrect","off");c.setAttribute("autocapitalize","off");c.setAttribute("spellcheck","false");c.style.textRendering="optimizeSpeed";c.style.background="transparent";c.style.color="transparent";c.style.position="absolute";c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.display="block";c.style.fontSize="1";c.style.zIndex="-1";c.style.resize="none";c.style.outline="none";c.style.width=
+"1px";c.style.height="1px";mxUtils.setOpacity(c,0);c.contentEditable=!0;c.innerHTML="&nbsp;";var d=!1;this.keyHandler.bindControlKey(88,null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var f=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==f.nodeName||"TEXTAREA"==f.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&
+91==a.keyCode)||d||(c.style.left=b.container.scrollLeft+10+"px",c.style.top=b.container.scrollTop+10+"px",b.container.appendChild(c),d=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){c.focus();document.execCommand("selectAll",!1,null)},0):(c.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var f=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!d||224!=f&&17!=f&&91!=f||(d=!1,b.isEditing()||null!=this.dialog||null==
+b.container||b.container.focus(),c.parentNode.removeChild(c),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(c,"copy",mxUtils.bind(this,function(d){if(b.isEnabled())try{mxClipboard.copy(b),this.copyCells(c),a()}catch(z){this.handleError(z)}}));mxEvent.addListener(c,"cut",mxUtils.bind(this,function(d){if(b.isEnabled())try{mxClipboard.copy(b),this.copyCells(c,!0),a()}catch(z){this.handleError(z)}}));mxEvent.addListener(c,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&
+!b.isCellLocked(b.getDefaultParent())&&((new Date).getTime(),c.innerHTML="&nbsp;",c.focus(),null!=a.clipboardData&&this.pasteCells(a,c,!0),mxEvent.isConsumed(a)||window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,c,!1)}),0))}),!0);var e=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==c?!0:e.apply(this,arguments)}};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this,arguments);if("data:page/id,"==a.substring(0,
+13)){var c=a.indexOf(",");0<c&&(b=this.getPageById(a.substring(c+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"==a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(a)};EditorUi.prototype.isSettingsEnabled=
+function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings=function(){if(this.isSettingsEnabled()){ColorDialog.recentColors=mxSettings.getRecentColors();if(isLocalStorage)try{window.addEventListener("storage",mxUtils.bind(this,function(a){a.key==mxSettings.key&&(mxSettings.load(),ColorDialog.recentColors=mxSettings.getRecentColors(),this.menus.customFonts=mxSettings.getCustomFonts())}),!1)}catch(f){}this.fireEvent(new mxEventObject("styleChanged",
+"keys",[],"values",[],"cells",[]));this.menus.customFonts=mxSettings.getCustomFonts();this.addListener("customFontsChanged",mxUtils.bind(this,function(a,b){mxSettings.setCustomFonts(this.menus.customFonts);mxSettings.save()}));this.editor.graph.connectionHandler.setCreateTarget(mxSettings.isCreateTarget());this.fireEvent(new mxEventObject("copyConnectChanged"));this.addListener("copyConnectChanged",mxUtils.bind(this,function(a,b){mxSettings.setCreateTarget(this.editor.graph.connectionHandler.isCreateTarget());
+mxSettings.save()}));this.editor.graph.pageFormat=mxSettings.getPageFormat();this.addListener("pageFormatChanged",mxUtils.bind(this,function(a,b){mxSettings.setPageFormat(this.editor.graph.pageFormat);mxSettings.save()}));this.editor.graph.view.gridColor=mxSettings.getGridColor("dark"==uiTheme);this.addListener("gridColorChanged",mxUtils.bind(this,function(a,b){console.log("gridColorChanged",this.editor.graph.view.gridColor);mxSettings.setGridColor(this.editor.graph.view.gridColor,"dark"==uiTheme);
+mxSettings.save()}));if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(a,b){mxSettings.setAutosave(this.editor.autosave);mxSettings.save()})),this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&this.sidebar.showPalette("search",mxSettings.settings.search);this.editor.chromeless&&!this.editor.editable||null==this.sidebar||!(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.copyCells=function(a,b){var c=this.editor.graph;if(c.isSelectionEmpty())a.innerHTML="";else{var d=mxUtils.sortCells(c.model.getTopmostCells(c.getSelectionCells())),f=mxUtils.getXml(this.editor.graph.encodeCells(d));mxUtils.setTextContent(a,encodeURIComponent(f));b?(c.removeCells(d,!1),c.lastPasteXml=null):(c.lastPasteXml=f,c.pasteCounter=0);a.focus();
+document.execCommand("selectAll",!1,null)}};EditorUi.prototype.pasteCells=function(a,b,c){if(!mxEvent.isConsumed(a)){var d=b;c&&null!=a.clipboardData&&(d=document.createElement("div"),d.innerHTML=a.clipboardData.getData("text/html"));var f=d.getElementsByTagName("span");if(null!=f&&0<f.length&&"application/vnd.lucid.chart.objects"===f[0].getAttribute("data-lucid-type")){var e=f[0].getAttribute("data-lucid-content");null!=e&&0<e.length&&(this.convertLucidChart(e,mxUtils.bind(this,function(a){var b=
+this.editor.graph;b.lastPasteXml==a?b.pasteCounter++:(b.lastPasteXml=a,b.pasteCounter=0);var c=b.pasteCounter*b.gridSize;b.setSelectionCells(this.importXml(a,c,c));b.scrollCellToVisible(b.getSelectionCell())}),mxUtils.bind(this,function(a){this.handleError(a)})),mxEvent.consume(a))}else{var e=mxUtils.trim(mxClient.IS_QUIRKS||8==document.documentMode?mxUtils.getTextContent(d):d.textContent),g=!1;try{var l=e.lastIndexOf("%3E");0<=l&&l<e.length-3&&(e=e.substring(0,l+3))}catch(B){}try{var f=d.getElementsByTagName("span"),
+k=null!=f&&0<f.length?mxUtils.trim(decodeURIComponent(f[0].textContent)):decodeURIComponent(e);this.isCompatibleString(k)&&(g=!0,e=k)}catch(B){}if(null!=e&&0<e.length){var p=this.editor.graph;p.lastPasteXml==e?p.pasteCounter++:(p.lastPasteXml=e,p.pasteCounter=0);c=p.pasteCounter*p.gridSize;g||this.isCompatibleString(e)?p.setSelectionCells(this.importXml(e,c,c)):(g=p.getInsertPoint(),p.isMouseInsertPoint()&&(c=0,p.lastPasteXml==e&&0<p.pasteCounter&&p.pasteCounter--),p.setSelectionCells(this.insertTextAt(e,
+g.x+c,g.y+c,!0)));if(!p.isSelectionEmpty()){p.scrollCellToVisible(p.getSelectionCell());null!=this.hoverIcons&&this.hoverIcons.update(p.view.getState(p.getSelectionCell()));try{mxEvent.consume(a)}catch(B){}}}else c||(p.lastPasteXml=null,p.pasteCounter=0)}}b.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b=null,c=0;c<a.length;c++)mxEvent.addListener(a[c],"dragleave",function(a){null!=b&&(b.parentNode.removeChild(b),b=null);a.stopPropagation();a.preventDefault()}),
+mxEvent.addListener(a[c],"dragover",mxUtils.bind(this,function(a){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==b&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(b=this.highlightElement());a.stopPropagation();a.preventDefault()})),mxEvent.addListener(a[c],"drop",mxUtils.bind(this,function(a){null!=b&&(b.parentNode.removeChild(b),b=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<a.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?
+this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(a)&&!mxEvent.isShiftDown(a)):this.openFiles(a.dataTransfer.files,!0);else{var c=this.extractGraphModelFromEvent(a);if(null==c){var d=null!=a.dataTransfer?a.dataTransfer:a.clipboardData;null!=d&&(10==document.documentMode||11==document.documentMode?c=d.getData("Text"):(c=null,c=0<=mxUtils.indexOf(d.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(d.types,"text/html")?
+d.getData("text/html"):null,null!=c&&0<c.length?(d=document.createElement("div"),d.innerHTML=c,d=d.getElementsByTagName("img"),0<d.length&&(c=d[0].getAttribute("src"))):0<=mxUtils.indexOf(d.types,"text/plain")&&(c=d.getData("text/plain"))),null!=c&&("data:image/png;base64,"==c.substring(0,22)?(c=this.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(a){200<=a.getStatus()&&299>=a.getStatus()&&this.openLocalFile(a.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)}a.stopPropagation();a.preventDefault()}))};EditorUi.prototype.highlightElement=function(a){var b=0,c=0,d,f;if(null==a){f=document.body;
+var e=document.documentElement;d=(f.clientWidth||e.clientWidth)-3;f=Math.max(f.clientHeight||0,e.clientHeight)-3}else b=a.offsetTop,c=a.offsetLeft,d=a.clientWidth,f=a.clientHeight;e=document.createElement("div");e.style.zIndex=mxPopupMenu.prototype.zIndex+2;e.style.border="3px dotted rgb(254, 137, 12)";e.style.pointerEvents="none";e.style.position="absolute";e.style.top=b+"px";e.style.left=c+"px";e.style.width=Math.max(0,d-3)+"px";e.style.height=Math.max(0,f-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?
 this.editor.graph.container.appendChild(e):document.body.appendChild(e);return e};EditorUi.prototype.stringToCells=function(a){a=mxUtils.parseXml(a);var b=this.editor.extractGraphModel(a.documentElement);a=[];if(null!=b){var c=new mxCodec(b.ownerDocument),d=new mxGraphModel;c.decode(b,d);b=d.getChildAt(d.getRoot(),0);for(c=0;c<d.getChildCount(b);c++)a.push(d.getChildAt(b,c))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var c=
 0;c<a.length;c++)mxUtils.bind(this,function(a){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{var d=c.target.result,f=a.name;if(null!=f&&0<f.length){!this.useCanvasForExport&&/(\.png)$/i.test(f)&&(f=f.substring(0,f.length-4)+".drawio");var e=mxUtils.bind(this,function(a){f=0<=f.lastIndexOf(".")?f.substring(0,f.lastIndexOf("."))+".drawio":f+".drawio";if("<mxlibrary"==a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,
 b);try{this.loadLibrary(new LocalLibrary(this,a,f))}catch(B){this.handleError(B,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,f,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(f)||/(\.vs(x|sx?))($|\?)/i.test(f))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();e(a)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(a){this.spinner.stop();e(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,
@@ -8616,18 +8608,18 @@ a.style.paddingTop="atlas"==uiTheme?"2px":"0px";a.style.paddingLeft="8px";a.styl
 " ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),a.appendChild(b),"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geBigButton geBigStandardButton",b.style.marginLeft="6px",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b)));b=document.createElement("a");
 mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.className="geBigButton geBigStandardButton";b.style.marginLeft="6px";b.style.marginRight="20px";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()}));a.appendChild(b);this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=
 new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://about.draw.io/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(a,b){for(var c=this.editor.graph,d=c.getSelectionCells(),f=0;f<a.length;f++){var e=new window[a[f].layout](c);
-if(null!=a[f].config)for(var k in a[f].config)e[k]=a[f].config[k];this.executeLayout(function(){e.execute(c.getDefaultParent(),0==d.length?null:d)},f==a.length-1,b)}};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[],f=[],e={};if(0<c.length){var k={},g=null,l=null,n=null,m=null,q=null,A=null,E=null,D=null,H="",J="auto",I="auto",G=null,K=null,Q=40,N=40,Y=100,T=0,L=this.editor.graph;L.getGraphBounds();for(var W=function(){null!=b?b(la):(L.setSelectionCells(la),L.scrollCellToVisible(L.getSelectionCell()))},
-aa=L.getFreeInsertPoint(),ha=aa.x,ga=aa.y,aa=ga,ca=null,V="auto",D=null,ba=[],R=null,Z=null,X=0;X<c.length&&"#"==c[X].charAt(0);){a=c[X];for(X++;X<c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[X].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[X].substring(1)),X++;if("#"!=a.charAt(1)){var ea=a.indexOf(":");if(0<ea){var P=mxUtils.trim(a.substring(1,ea)),M=mxUtils.trim(a.substring(ea+1));"label"==P?ca=L.sanitizeHtml(M):"labelname"==P&&0<M.length&&"-"!=M?m=M:"labels"==P&&0<M.length&&"-"!=M?q=JSON.parse(M):
-"style"==P?g=M:"parentstyle"==P?A=M:"stylename"==P&&0<M.length&&"-"!=M?n=M:"styles"==P&&0<M.length&&"-"!=M?l=JSON.parse(M):"identity"==P&&0<M.length&&"-"!=M?E=M:"parent"==P&&0<M.length&&"-"!=M?D=M:"namespace"==P&&0<M.length&&"-"!=M?H=M:"width"==P?J=M:"height"==P?I=M:"left"==P&&0<M.length?G=M:"top"==P&&0<M.length?K=M:"ignore"==P?Z=M.split(","):"connect"==P?ba.push(JSON.parse(M)):"link"==P?R=M:"padding"==P?T=parseFloat(M):"edgespacing"==P?Q=parseFloat(M):"nodespacing"==P?N=parseFloat(M):"levelspacing"==
-P?Y=parseFloat(M):"layout"==P&&(V=M)}}}if(null==c[X])throw Error(mxResources.get("invalidOrMissingFile"));var da=this.editor.csvToArray(c[X]),P=ea=null;if(null!=E||null!=D)for(var S=0;S<da.length;S++)E==da[S]&&(ea=S),D==da[S]&&(P=S);null==ca&&(ca="%"+da[0]+"%");if(null!=ba)for(var U=0;U<ba.length;U++)null==k[ba[U].to]&&(k[ba[U].to]={});L.model.beginUpdate();try{for(S=X+1;S<c.length;S++){var ja=this.editor.csvToArray(c[S]);if(null==ja){var ka=40<c[S].length?c[S].substring(0,40)+"...":c[S];throw Error(S+
-" ("+ka+") "+mxResources.get("containsValidationErrors"));}if(ja.length==da.length){var O=null,ma=null!=ea?H+ja[ea]:null;null!=ma&&(O=L.model.getCell(ma));var E=null!=O,fa=new mxCell(ca,new mxGeometry(ha,aa,0,0),g||"whiteSpace=wrap;html=1;");fa.vertex=!0;fa.id=ma;for(var ia=0;ia<ja.length;ia++)L.setAttributeForCell(fa,da[ia],ja[ia]);if(null!=m&&null!=q){var ua=q[fa.getAttribute(m)];null!=ua&&L.labelChanged(fa,ua)}if(null!=n&&null!=l){var va=l[fa.getAttribute(n)];null!=va&&(fa.style=va)}L.setAttributeForCell(fa,
-"placeholders","1");fa.style=L.replacePlaceholders(fa,fa.style);E&&(L.model.setGeometry(O,fa.geometry),L.model.setStyle(O,fa.style),0>mxUtils.indexOf(f,O)&&f.push(O));O=fa;if(!E)for(U=0;U<ba.length;U++)k[ba[U].to][O.getAttribute(ba[U].to)]=O;null!=R&&"link"!=R&&(L.setLinkForCell(O,O.getAttribute(R)),L.setAttributeForCell(O,R,null));L.fireEvent(new mxEventObject("cellsInserted","cells",[O]));var wa=this.editor.graph.getPreferredSizeForCell(O);O.vertex&&(null!=G&&null!=O.getAttribute(G)&&(O.geometry.x=
-ha+parseFloat(O.getAttribute(G))),null!=K&&null!=O.getAttribute(K)&&(O.geometry.y=ga+parseFloat(O.getAttribute(K))),"@"==J.charAt(0)&&null!=O.getAttribute(J.substring(1))?O.geometry.width=parseFloat(O.getAttribute(J.substring(1))):O.geometry.width="auto"==J?wa.width+T:parseFloat(J),"@"==I.charAt(0)&&null!=O.getAttribute(I.substring(1))?O.geometry.height=parseFloat(O.getAttribute(I.substring(1))):O.geometry.height="auto"==I?wa.height+T:parseFloat(I),aa+=O.geometry.height+N);E?(null==e[ma]&&(e[ma]=
-[]),e[ma].push(O)):(D=null!=P?L.model.getCell(H+ja[P]):null,d.push(O),null!=D?(D.style=L.replacePlaceholders(D,A),L.addCell(O,D)):f.push(L.addCell(O)))}}for(var na=f.slice(),la=f.slice(),U=0;U<ba.length;U++)for(var xa=ba[U],S=0;S<f.length;S++){var O=f[S],ya=mxUtils.bind(this,function(a,b,c){var d=b.getAttribute(c.from);if(null!=d){L.setAttributeForCell(b,c.from,null);for(var d=d.split(","),f=0;f<d.length;f++){var e=k[c.to][d[f]];if(null!=e){var g=c.label;null!=c.fromlabel&&(g=(b.getAttribute(c.fromlabel)||
-"")+(g||""));null!=c.tolabel&&(g=(g||"")+(e.getAttribute(c.tolabel)||""));la.push(L.insertEdge(null,null,g||"",c.invert?e:a,c.invert?a:e,c.style||L.createCurrentEdgeStyle()));mxUtils.remove(c.invert?a:e,na)}}}});ya(O,O,xa);if(null!=e[O.id])for(ia=0;ia<e[O.id].length;ia++)ya(O,e[O.id][ia],xa)}if(null!=Z)for(S=0;S<d.length;S++)for(O=d[S],ia=0;ia<Z.length;ia++)L.setAttributeForCell(O,mxUtils.trim(Z[ia]),null);if(0<f.length){var oa=new mxParallelEdgeLayout(L);oa.spacing=Q;var ta=function(){0<oa.spacing&&
+if(null!=a[f].config)for(var g in a[f].config)e[g]=a[f].config[g];this.executeLayout(function(){e.execute(c.getDefaultParent(),0==d.length?null:d)},f==a.length-1,b)}};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[],f=[],e={};if(0<c.length){var g={},k=null,l=null,n=null,m=null,q=null,A=null,E=null,D=null,H="",J="auto",I="auto",G=null,K=null,Q=40,N=40,Y=100,T=0,L=this.editor.graph;L.getGraphBounds();for(var W=function(){null!=b?b(la):(L.setSelectionCells(la),L.scrollCellToVisible(L.getSelectionCell()))},
+aa=L.getFreeInsertPoint(),ga=aa.x,ha=aa.y,aa=ha,ca=null,V="auto",D=null,ba=[],R=null,Z=null,X=0;X<c.length&&"#"==c[X].charAt(0);){a=c[X];for(X++;X<c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[X].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[X].substring(1)),X++;if("#"!=a.charAt(1)){var ea=a.indexOf(":");if(0<ea){var P=mxUtils.trim(a.substring(1,ea)),M=mxUtils.trim(a.substring(ea+1));"label"==P?ca=L.sanitizeHtml(M):"labelname"==P&&0<M.length&&"-"!=M?m=M:"labels"==P&&0<M.length&&"-"!=M?q=JSON.parse(M):
+"style"==P?k=M:"parentstyle"==P?A=M:"stylename"==P&&0<M.length&&"-"!=M?n=M:"styles"==P&&0<M.length&&"-"!=M?l=JSON.parse(M):"identity"==P&&0<M.length&&"-"!=M?E=M:"parent"==P&&0<M.length&&"-"!=M?D=M:"namespace"==P&&0<M.length&&"-"!=M?H=M:"width"==P?J=M:"height"==P?I=M:"left"==P&&0<M.length?G=M:"top"==P&&0<M.length?K=M:"ignore"==P?Z=M.split(","):"connect"==P?ba.push(JSON.parse(M)):"link"==P?R=M:"padding"==P?T=parseFloat(M):"edgespacing"==P?Q=parseFloat(M):"nodespacing"==P?N=parseFloat(M):"levelspacing"==
+P?Y=parseFloat(M):"layout"==P&&(V=M)}}}if(null==c[X])throw Error(mxResources.get("invalidOrMissingFile"));var da=this.editor.csvToArray(c[X]),P=ea=null;if(null!=E||null!=D)for(var S=0;S<da.length;S++)E==da[S]&&(ea=S),D==da[S]&&(P=S);null==ca&&(ca="%"+da[0]+"%");if(null!=ba)for(var U=0;U<ba.length;U++)null==g[ba[U].to]&&(g[ba[U].to]={});L.model.beginUpdate();try{for(S=X+1;S<c.length;S++){var ja=this.editor.csvToArray(c[S]);if(null==ja){var ka=40<c[S].length?c[S].substring(0,40)+"...":c[S];throw Error(S+
+" ("+ka+") "+mxResources.get("containsValidationErrors"));}if(ja.length==da.length){var O=null,ma=null!=ea?H+ja[ea]:null;null!=ma&&(O=L.model.getCell(ma));var E=null!=O,fa=new mxCell(ca,new mxGeometry(ga,aa,0,0),k||"whiteSpace=wrap;html=1;");fa.vertex=!0;fa.id=ma;for(var ia=0;ia<ja.length;ia++)L.setAttributeForCell(fa,da[ia],ja[ia]);if(null!=m&&null!=q){var ua=q[fa.getAttribute(m)];null!=ua&&L.labelChanged(fa,ua)}if(null!=n&&null!=l){var va=l[fa.getAttribute(n)];null!=va&&(fa.style=va)}L.setAttributeForCell(fa,
+"placeholders","1");fa.style=L.replacePlaceholders(fa,fa.style);E&&(L.model.setGeometry(O,fa.geometry),L.model.setStyle(O,fa.style),0>mxUtils.indexOf(f,O)&&f.push(O));O=fa;if(!E)for(U=0;U<ba.length;U++)g[ba[U].to][O.getAttribute(ba[U].to)]=O;null!=R&&"link"!=R&&(L.setLinkForCell(O,O.getAttribute(R)),L.setAttributeForCell(O,R,null));L.fireEvent(new mxEventObject("cellsInserted","cells",[O]));var wa=this.editor.graph.getPreferredSizeForCell(O);O.vertex&&(null!=G&&null!=O.getAttribute(G)&&(O.geometry.x=
+ga+parseFloat(O.getAttribute(G))),null!=K&&null!=O.getAttribute(K)&&(O.geometry.y=ha+parseFloat(O.getAttribute(K))),"@"==J.charAt(0)&&null!=O.getAttribute(J.substring(1))?O.geometry.width=parseFloat(O.getAttribute(J.substring(1))):O.geometry.width="auto"==J?wa.width+T:parseFloat(J),"@"==I.charAt(0)&&null!=O.getAttribute(I.substring(1))?O.geometry.height=parseFloat(O.getAttribute(I.substring(1))):O.geometry.height="auto"==I?wa.height+T:parseFloat(I),aa+=O.geometry.height+N);E?(null==e[ma]&&(e[ma]=
+[]),e[ma].push(O)):(D=null!=P?L.model.getCell(H+ja[P]):null,d.push(O),null!=D?(D.style=L.replacePlaceholders(D,A),L.addCell(O,D)):f.push(L.addCell(O)))}}for(var na=f.slice(),la=f.slice(),U=0;U<ba.length;U++)for(var xa=ba[U],S=0;S<f.length;S++){var O=f[S],ya=mxUtils.bind(this,function(a,b,c){var d=b.getAttribute(c.from);if(null!=d){L.setAttributeForCell(b,c.from,null);for(var d=d.split(","),f=0;f<d.length;f++){var e=g[c.to][d[f]];if(null!=e){var k=c.label;null!=c.fromlabel&&(k=(b.getAttribute(c.fromlabel)||
+"")+(k||""));null!=c.tolabel&&(k=(k||"")+(e.getAttribute(c.tolabel)||""));la.push(L.insertEdge(null,null,k||"",c.invert?e:a,c.invert?a:e,c.style||L.createCurrentEdgeStyle()));mxUtils.remove(c.invert?a:e,na)}}}});ya(O,O,xa);if(null!=e[O.id])for(ia=0;ia<e[O.id].length;ia++)ya(O,e[O.id][ia],xa)}if(null!=Z)for(S=0;S<d.length;S++)for(O=d[S],ia=0;ia<Z.length;ia++)L.setAttributeForCell(O,mxUtils.trim(Z[ia]),null);if(0<f.length){var oa=new mxParallelEdgeLayout(L);oa.spacing=Q;var ta=function(){0<oa.spacing&&
 oa.execute(L.getDefaultParent());for(var a=0;a<f.length;a++){var b=L.getCellGeometry(f[a]);b.x=Math.round(L.snap(b.x));b.y=Math.round(L.snap(b.y));"auto"==J&&(b.width=Math.round(L.snap(b.width)));"auto"==I&&(b.height=Math.round(L.snap(b.height)))}};if("["==V.charAt(0)){var za=W;L.view.validate();this.executeLayoutList(JSON.parse(V),function(){ta();za()});W=null}else if("circle"==V){var ra=new mxCircleLayout(L);ra.resetEdges=!1;var Aa=ra.isVertexIgnored;ra.isVertexIgnored=function(a){return Aa.apply(this,
 arguments)||0>mxUtils.indexOf(f,a)};this.executeLayout(function(){ra.execute(L.getDefaultParent());ta()},!0,W);W=null}else if("horizontaltree"==V||"verticaltree"==V||"auto"==V&&la.length==2*f.length-1&&1==na.length){L.view.validate();var sa=new mxCompactTreeLayout(L,"horizontaltree"==V);sa.levelDistance=N;sa.edgeRouting=!1;sa.resetEdges=!1;this.executeLayout(function(){sa.execute(L.getDefaultParent(),0<na.length?na[0]:null)},!0,W);W=null}else if("horizontalflow"==V||"verticalflow"==V||"auto"==V&&
-1==na.length){L.view.validate();var pa=new mxHierarchicalLayout(L,"horizontalflow"==V?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);pa.intraCellSpacing=N;pa.parallelEdgeSpacing=Q;pa.interRankCellSpacing=Y;pa.disableEdgeStyle=!1;this.executeLayout(function(){pa.execute(L.getDefaultParent(),la);L.moveCells(la,ha,ga)},!0,W);W=null}else if("organic"==V||"auto"==V&&la.length>f.length){L.view.validate();var qa=new mxFastOrganicLayout(L);qa.forceConstant=3*N;qa.resetEdges=!1;var Ba=qa.isVertexIgnored;
+1==na.length){L.view.validate();var pa=new mxHierarchicalLayout(L,"horizontalflow"==V?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);pa.intraCellSpacing=N;pa.parallelEdgeSpacing=Q;pa.interRankCellSpacing=Y;pa.disableEdgeStyle=!1;this.executeLayout(function(){pa.execute(L.getDefaultParent(),la);L.moveCells(la,ga,ha)},!0,W);W=null}else if("organic"==V||"auto"==V&&la.length>f.length){L.view.validate();var qa=new mxFastOrganicLayout(L);qa.forceConstant=3*N;qa.resetEdges=!1;var Ba=qa.isVertexIgnored;
 qa.isVertexIgnored=function(a){return Ba.apply(this,arguments)||0>mxUtils.indexOf(f,a)};oa=new mxParallelEdgeLayout(L);oa.spacing=Q;this.executeLayout(function(){qa.execute(L.getDefaultParent());ta()},!0,W);W=null}}this.hideDialog()}finally{L.model.endUpdate()}null!=W&&W()}}catch(Ca){this.handleError(Ca)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var c="?",d;for(d in urlParams)0>mxUtils.indexOf(a,d)&&
 null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b=window.location.search;return b};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),d;for(d in urlParams)0>mxUtils.indexOf(c,d)&&(a=0==b?a+"?":a+"&",null!=urlParams[d]&&(a+=d+"="+urlParams[d],b++))}return a};EditorUi.prototype.showLinkDialog=
 function(a,b,c){a=new LinkDialog(this,a,b,c,!0);this.showDialog(a.container,560,130,!0,!0);a.init()};var m=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=m.apply(this,arguments),c=this.editor.graph,d=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(c.container)&&c.pageVisible&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width-
@@ -8651,10 +8643,10 @@ a.getFileData(!0,null,null,null,null,!0),n=f.getGraphBounds(),p=Math.floor(n.wid
 k:"")+"&bg="+(null!=d?d:"none")+"&w="+p+"&h="+m+"&border="+g+"&xml="+encodeURIComponent(l))})}else"png"==c?a.exportImage(e,null==d||"none"==d,!0,!1,!1,g,!0,!1,null,null,k):a.exportImage(e,!1,!0,!1,!1,g,!0,!1,"jpeg");else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var c=a.changes[b];if(null!=c&&c.constructor==mxChildChange&&null!=c.child){var d=c.child;if(null!=d.source&&null!=d.source.id){var f=this.getFutureCellForEdit(c.model,
 a,d.source.id);f!=d.source&&(d.source=f)}null!=d.target&&null!=d.target.id&&(c=this.getFutureCellForEdit(c.model,a,d.target.id),c!=d.target&&(d.target=c))}}};EditorUi.prototype.getFutureCellForEdit=function(a,b,c){var d=a.getCell(c);if(null==d)for(var f=b.changes.length-1;0<=f;f--){var e=b.changes[f];if(e.constructor==mxChildChange&&null!=e.child&&e.child.id==c){a.contains(e.previous)&&(d=e.child);break}}return d};EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);
 var a=this.editor.graph,b="";if(null!=this.pages)for(var c=0;c<this.pages.length;c++){var d=a;this.currentPage!=this.pages[c]&&(d=this.createTemporaryGraph(a.getStylesheet()),d.model.setRoot(this.pages[c].root));b+=this.pages[c].getName()+" "+d.getIndexableText()+" "}else b=a.getIndexableText();this.editor.graph.setEnabled(!0);return b};EditorUi.prototype.showRemotelyStoredLibrary=function(a){var b={},c=document.createElement("div");c.style.whiteSpace="nowrap";var d=document.createElement("h3");mxUtils.write(d,
-mxUtils.htmlEntities(a));d.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(d);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="/images/spin.gif"></div>';var e={};try{var g=mxSettings.getCustomLibraries();for(a=0;a<g.length;a++){var k=g[a];if("R"==k.substring(0,1)){var n=JSON.parse(decodeURIComponent(k.substring(1)));e[n[0]]={id:n[0],
-title:n[1],downloadUrl:n[2]}}}}catch(x){}this.remoteInvoke("getCustomLibraries",null,null,function(a){f.innerHTML="";if(0==a.length)f.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var c=0;c<a.length;c++){var d=a[c];e[d.id]&&(b[d.id]=d);var g=this.addCheckbox(f,d.title,e[d.id]);(function(a,c){mxEvent.addListener(c,"change",function(){this.checked?b[a.id]=a:delete b[a.id]})})(d,g)}},mxUtils.bind(this,function(a){f.innerHTML=
-"";var b=document.createElement("div");b.style.padding="8px";b.style.textAlign="center";mxUtils.write(b,mxResources.get("error")+": ");mxUtils.write(b,null!=a&&null!=a.message?a.message:mxResources.get("unknownError"));f.appendChild(b)}));c.appendChild(f);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var a=0,c;for(c in b)null==e[c]&&(a++,mxUtils.bind(this,function(b){this.remoteInvoke("getFileContent",[b.downloadUrl],null,mxUtils.bind(this,
-function(c){a--;0==a&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,c,b))}catch(E){this.handleError(E,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){a--;0==a&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(b[c]));for(c in e)b[c]||this.closeLibrary(new RemoteLibrary(this,null,e[c]));0==a&&this.spinner.stop()}),null,null,"https://desk.draw.io/support/solutions/articles/16000092763");this.showDialog(c.container,340,375,!0,!0,
+mxUtils.htmlEntities(a));d.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(d);var e=document.createElement("div");e.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";e.innerHTML='<div style="text-align:center;padding:8px;"><img src="/images/spin.gif"></div>';var f={};try{var g=mxSettings.getCustomLibraries();for(a=0;a<g.length;a++){var k=g[a];if("R"==k.substring(0,1)){var n=JSON.parse(decodeURIComponent(k.substring(1)));f[n[0]]={id:n[0],
+title:n[1],downloadUrl:n[2]}}}}catch(x){}this.remoteInvoke("getCustomLibraries",null,null,function(a){e.innerHTML="";if(0==a.length)e.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var c=0;c<a.length;c++){var d=a[c];f[d.id]&&(b[d.id]=d);var g=this.addCheckbox(e,d.title,f[d.id]);(function(a,c){mxEvent.addListener(c,"change",function(){this.checked?b[a.id]=a:delete b[a.id]})})(d,g)}},mxUtils.bind(this,function(a){e.innerHTML=
+"";var b=document.createElement("div");b.style.padding="8px";b.style.textAlign="center";mxUtils.write(b,mxResources.get("error")+": ");mxUtils.write(b,null!=a&&null!=a.message?a.message:mxResources.get("unknownError"));e.appendChild(b)}));c.appendChild(e);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var a=0,c;for(c in b)null==f[c]&&(a++,mxUtils.bind(this,function(b){this.remoteInvoke("getFileContent",[b.downloadUrl],null,mxUtils.bind(this,
+function(c){a--;0==a&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,c,b))}catch(E){this.handleError(E,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){a--;0==a&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(b[c]));for(c in f)b[c]||this.closeLibrary(new RemoteLibrary(this,null,f[c]));0==a&&this.spinner.stop()}),null,null,"https://desk.draw.io/support/solutions/articles/16000092763");this.showDialog(c.container,340,375,!0,!0,
 null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(a){this.remoteWin=a;for(var b=0;b<this.remoteInvokeQueue.length;b++)a.postMessage(this.remoteInvokeQueue[b],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(a){var b=a.msgMarkers,c=this.remoteInvokeCallbacks[b.callbackId];a.error?
 c.error&&c.error(a.error.errResp):c.callback&&c.callback.apply(this,a.resp);this.remoteInvokeCallbacks[b.callbackId]=null};EditorUi.prototype.remoteInvoke=function(a,b,c,d,e){var f=!0,g=window.setTimeout(mxUtils.bind(this,function(){f=!1;e({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),k=mxUtils.bind(this,function(){window.clearTimeout(g);f&&d.apply(this,arguments)});c=c||{};c.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:k,error:e});
 a=JSON.stringify({event:"remoteInvoke",funtionName:a,functionArgs:b,msgMarkers:c});null!=this.remoteWin?this.remoteWin.postMessage(a,"*"):this.remoteInvokeQueue.push(a)};EditorUi.prototype.handleRemoteInvoke=function(a){var b=mxUtils.bind(this,function(b,c){var d={event:"remoteInvokeResponse",msgMarkers:a.msgMarkers};null!=c?d.error={errResp:c}:null!=b&&(d.resp=b);this.remoteWin.postMessage(JSON.stringify(d),"*")});try{var c=a.funtionName,d=this.remoteInvokableFns[c];if(null!=d&&"function"===typeof this[c]){var e=
@@ -8663,8 +8655,8 @@ this.getCurrentFile();return null!=a?a.commentsRefreshNeeded():!0};EditorUi.prot
 a.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var a=this.getCurrentFile();return null!=a?a.canComment():!0};EditorUi.prototype.newComment=function(a,b){var c=this.getCurrentFile();return null!=c?c.newComment(a,b):new DrawioComment(this,null,a,Date.now(),Date.now(),!1,b)};EditorUi.prototype.isRevisionHistorySupported=function(){var a=this.getCurrentFile();return null!=a&&a.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(a,b){var c=this.getCurrentFile();null!=
 c&&c.getRevisions?c.getRevisions(a,b):b({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var a=this.getCurrentFile();return null!=a&&(a.constructor==DriveFile&&a.isEditable()||a.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(a){a.setRequestHeader("Content-Language","da, mi, en, de-DE")}})();
 var CommentsWindow=function(a,c,b,d,g,e){function k(){for(var a=C.getElementsByTagName("div"),b=0,c=0;c<a.length;c++)"none"!=a[c].style.display&&a[c].parentNode==C&&b++;x.style.display=0==b?"block":"none"}function m(a,b,c,d){function e(){b.removeChild(l);b.removeChild(n);g.style.display="block";f.style.display="block"}t={div:b,comment:a,saveCallback:c,deleteOnCancel:d};var f=b.querySelector(".geCommentTxt"),g=b.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className=
-"geCommentEditTxtArea";l.style.minHeight=f.offsetHeight+"px";l.value=a.content;b.insertBefore(l,f);var n=document.createElement("div");n.className="geCommentEditBtns";var m=mxUtils.button(mxResources.get("cancel"),function(){d?(b.parentNode.removeChild(b),k()):e();t=null});m.className="geCommentEditBtn";n.appendChild(m);var p=mxUtils.button(mxResources.get("save"),function(){f.innerHTML="";a.content=l.value;mxUtils.write(f,a.content);e();c(a);t=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this,
-function(a){mxEvent.isConsumed(a)||((mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a))&&13==a.keyCode?(p.click(),mxEvent.consume(a)):27==a.keyCode&&(m.click(),mxEvent.consume(a)))}));p.focus();p.className="geCommentEditBtn gePrimaryBtn";n.appendChild(p);b.insertBefore(n,f);g.style.display="none";f.style.display="none";l.focus()}function n(b,c){c.innerHTML="";var d=new Date(b.modifiedDate),e=a.timeSince(d);null==e&&(e=mxResources.get("lessThanAMinute"));mxUtils.write(c,mxResources.get("timeAgo",
+"geCommentEditTxtArea";l.style.minHeight=f.offsetHeight+"px";l.value=a.content;b.insertBefore(l,f);var n=document.createElement("div");n.className="geCommentEditBtns";var p=mxUtils.button(mxResources.get("cancel"),function(){d?(b.parentNode.removeChild(b),k()):e();t=null});p.className="geCommentEditBtn";n.appendChild(p);var m=mxUtils.button(mxResources.get("save"),function(){f.innerHTML="";a.content=l.value;mxUtils.write(f,a.content);e();c(a);t=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this,
+function(a){mxEvent.isConsumed(a)||((mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a))&&13==a.keyCode?(m.click(),mxEvent.consume(a)):27==a.keyCode&&(p.click(),mxEvent.consume(a)))}));m.focus();m.className="geCommentEditBtn gePrimaryBtn";n.appendChild(m);b.insertBefore(n,f);g.style.display="none";f.style.display="none";l.focus()}function n(b,c){c.innerHTML="";var d=new Date(b.modifiedDate),e=a.timeSince(d);null==e&&(e=mxResources.get("lessThanAMinute"));mxUtils.write(c,mxResources.get("timeAgo",
 [e],"{1} ago"));c.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString())}function q(a){var b=document.createElement("img");b.className="geCommentBusyImg";b.src=IMAGE_PATH+"/spin.gif";a.appendChild(b);a.busyImg=b}function f(a){a.style.border="1px solid red";a.removeChild(a.busyImg)}function l(a){a.style.border="";a.removeChild(a.busyImg)}function p(b,c,d,e,g){function B(a,c,d){var e=document.createElement("li");e.className="geCommentAction";var f=document.createElement("a");f.className=
 "geCommentActionLnk";mxUtils.write(f,a);e.appendChild(f);mxEvent.addListener(f,"click",function(a){c(a,b);a.preventDefault();mxEvent.consume(a)});J.appendChild(e);d&&(e.style.display="none")}function F(){function a(b){c.push(d);if(null!=b.replies)for(var e=0;e<b.replies.length;e++)d=d.nextSibling,a(b.replies[e])}var c=[],d=y;a(b);return{pdiv:d,replies:c}}function G(c,d,g,k,n){function x(){q(A);b.addReply(u,function(a){u.id=a;b.replies.push(u);l(A);g&&g()},function(b){t();f(A);a.handleError(b,null,
 null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},k,n)}function t(){m(u,A,function(a){x()},!0)}var B=F().pdiv,u=a.newComment(c,a.getCurrentUser());u.pCommentId=b.id;null==b.replies&&(b.replies=[]);var A=p(u,b.replies,B,e+1);d?t():x()}if(g||!b.isResolved){x.style.display="none";var y=document.createElement("div");y.className="geCommentContainer";y.setAttribute("data-commentId",b.id);y.style.marginLeft=20*e+5+"px";b.isResolved&&"dark"!=uiTheme&&(y.style.backgroundColor="ghostWhite");
@@ -8846,23 +8838,24 @@ DriveClient.prototype.getXmlFile=function(a,c,b,d,g){try{var e=a.downloadUrl+"&a
 1));if(null!=q&&0<q.length)d=q;else try{var q=d.substring(n+1),f=!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(q):atob(q),l=this.ui.editor.extractGraphModel(mxUtils.parseXml(f).documentElement,!0);null==l||0<l.getElementsByTagName("parsererror").length?k=!0:d=f}catch(p){k=!0}}}else"data:image/png;base64,PG14ZmlsZS"==d.substring(0,32)&&(f=d.substring(22),d=window.atob&&!mxClient.IS_SF?atob(f):Base64.decode(f));Graph.fileSupport&&(new XMLHttpRequest).upload&&this.ui.isRemoteFileFormat(d,
 e)?this.ui.parseFile(new Blob([d],{type:"application/octet-stream"}),mxUtils.bind(this,function(d){try{4==d.readyState&&(200<=d.status&&299>=d.status?c(new LocalFile(this.ui,d.responseText,a.title+this.extension,!0)):null!=b&&b({message:mxResources.get("errorLoadingFile")}))}catch(u){if(null!=b)b(u);else throw u;}}),a.title):c(k?new LocalFile(this.ui,d,a.title,!0):new DriveFile(this.ui,d,a))}}catch(p){if(null!=b)b(p);else throw p;}}),b,null!=a.mimeType&&"image/"==a.mimeType.substring(0,6)&&"image/svg"!=
 a.mimeType.substring(0,9)||/\.png$/i.test(a.title)||/\.jpe?g$/i.test(a.title))}catch(k){if(null!=b)b(k);else throw k;}};
-DriveClient.prototype.saveFile=function(a,c,b,d,g,e,k,m){try{a.saveLevel=1;var n=mxUtils.bind(this,function(b){a.saveLevel=null;if(null!=d)d(b);else throw b;try{if(!a.isConflict(b)){var c="error_"+(a.getErrorMessage(b)||"unknown");null!=b&&null!=b.error&&null!=b.error.code&&(c+="-code_"+b.error.code);EditorUi.logEvent({category:"ERROR-SAVE-FILE-"+a.getHash()+"-rev_"+a.desc.headRevisionId+"-mod_"+a.desc.modifiedDate+"-size_"+a.getSize()+"-mime_"+a.desc.mimeType+(this.ui.editor.autosave?"":"-nosave")+
-(a.isAutosave()?"":"-noauto")+(a.changeListenerEnabled?"":"-nolisten")+(a.inConflictState?"-conflict":"")+(a.invalidChecksum?"-invalid":""),action:c,label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")})}}catch(x){}}),q=mxUtils.bind(this,function(b){n(b);try{EditorUi.logError(b.message,null,null,b),EditorUi.sendReport("Critical error in DriveClient.saveFile "+(new Date).toISOString()+":\n\nBrowser="+navigator.userAgent+"\nFile="+a.desc.id+"."+a.desc.headRevisionId+
-"\nUser="+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")+"\nMessage="+b.message+"\n\nStack:\n"+b.stack)}catch(C){}});if(a.isEditable()&&null!=a.desc){var f=(new Date).getTime(),l=a.desc.etag,p=a.desc.modifiedDate,u=a.desc.headRevisionId,v=this.ui.useCanvasForExport&&/(\.png)$/i.test(a.getTitle());g=null!=g?g:"1"==urlParams.ignoremime;e=null!=e?e:!1;var t=mxUtils.bind(this,function(d,g,x){try{a.saveLevel=3;var t=null,F=!1,A={mimeType:a.desc.mimeType,title:a.getTitle()};
-this.isGoogleRealtimeMimeType(a.desc.mimeType)?(A.mimeType=this.xmlMimeType,t=a.desc,F=c=!0):"application/octet-stream"==A.mimeType&&(A.mimeType=this.xmlMimeType);a.constructor==DriveFile&&(null==m&&(m=[]),null==a.getChannelId()&&m.push({key:"channel",value:Editor.guid(32)}),null==a.getChannelKey()&&m.push({key:"key",value:Editor.guid(32)}),m.push({key:"secret",value:Editor.guid(32)}));x||(null!=d||e||(d=this.placeholderThumbnail,g=this.placeholderMimeType),null!=d&&null!=g&&(A.thumbnail={image:d,
-mimeType:g}));var z=a.getData(),y=mxUtils.bind(this,function(d){try{a.saveDelay=(new Date).getTime()-f;var e=(new Date(d.modifiedDate)).getTime()-(new Date(p)).getTime();if(0>=e||l==d.etag||c&&u==d.headRevisionId){var g=[];0>=e&&g.push("invalid modified time");l==d.etag&&g.push("stale etag");c&&u==d.headRevisionId&&g.push("stale revision");var k=g.join(", ");n({message:mxResources.get("errorSavingFile")+": "+k},d);try{EditorUi.sendReport("Critical: Error saving to Google Drive "+(new Date).toISOString()+
-":\n\nBrowser="+navigator.userAgent+"\nFile="+a.desc.id+" "+a.desc.mimeType+"\nUser="+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")+"\nErrors="+k+"\nOld="+u+" "+p+" etag-hash="+this.ui.hashValue(l)+"\nNew="+d.headRevisionId+" "+d.modifiedDate+" etag-hash="+this.ui.hashValue(d.etag)),EditorUi.logError("Critical: Error saving to Google Drive "+a.desc.id,null,"from-"+u+"."+p+"-"+this.ui.hashValue(l)+"-to-"+d.headRevisionId+"."+d.modifiedDate+"-"+this.ui.hashValue(d.etag)+
-(0<k.length?"-errors-"+k:""),"user-"+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync"))}catch(Q){}}else{a.saveLevel=null;b(d,z);if(null!=t){this.executeRequest({url:"/files/"+t.id+"/revisions/"+t.headRevisionId+"?supportsTeamDrives=true"},mxUtils.bind(this,mxUtils.bind(this,function(a){a.pinned=!0;this.executeRequest({url:"/files/"+t.id+"/revisions/"+t.headRevisionId,method:"PUT",params:a})})));try{EditorUi.logEvent({category:a.convertedFrom+"-CONVERT-FILE-"+
-a.getHash(),action:"from_"+t.id+"."+t.headRevisionId+"-to_"+a.desc.id+"."+a.desc.headRevisionId,label:null!=this.user?"user_"+this.user.id:"nouser"+(null!=a.sync?"-client_"+a.sync.clientId:"nosync")})}catch(Q){}}try{EditorUi.logEvent({category:"SUCCESS-SAVE-FILE-"+a.getHash()+"-rev0_"+u+"-mod0_"+p,action:"rev-"+d.headRevisionId+"-mod_"+d.modifiedDate+"-size_"+a.getSize()+"-mime_"+a.desc.mimeType+(this.ui.editor.autosave?"":"-nosave")+(a.isAutosave()?"":"-noauto")+(a.changeListenerEnabled?"":"-nolisten")+
-(a.inConflictState?"-conflict":"")+(a.invalidChecksum?"-invalid":""),label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")})}catch(Q){}}}catch(Q){q(Q)}}),C=mxUtils.bind(this,function(b,e){a.saveLevel=4;try{null!=m&&(A.properties=m);var f=k||a.constructor!=DriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:a.getCurrentEtag(),g=0,l=mxUtils.bind(this,function(d){a.saveLevel=5;try{var k=a.desc.mimeType!=this.xmlMimeType&&a.desc.mimeType!=
-this.mimeType&&a.desc.mimeType!=this.libraryMimeType,l=!0,m=window.setTimeout(mxUtils.bind(this,function(){l=!1;n({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),4*this.ui.timeout);this.executeRequest(this.createUploadRequest(a.getId(),A,b,c||d||k,e,d?null:f,F),mxUtils.bind(this,function(a){window.clearTimeout(m);l&&y(a)}),mxUtils.bind(this,function(b){window.clearTimeout(m);if(l){a.saveLevel=6;try{a.isConflict(b)?this.executeRequest({url:"/files/"+a.getId()+"?supportsTeamDrives=true&fields="+
+DriveClient.prototype.saveFile=function(a,c,b,d,g,e,k,m){try{a.saveLevel=1;var n=mxUtils.bind(this,function(b){a.saveLevel=11;if(null!=d)d(b);else throw b;try{if(!a.isConflict(b)){var c="error_"+(a.getErrorMessage(b)||"unknown");null!=b&&null!=b.error&&null!=b.error.code&&(c+="-code_"+b.error.code);EditorUi.logEvent({category:"ERROR-SAVE-FILE-"+a.getHash()+"-rev_"+a.desc.headRevisionId+"-mod_"+a.desc.modifiedDate+"-size_"+a.getSize()+"-mime_"+a.desc.mimeType+(this.ui.editor.autosave?"":"-nosave")+
+(a.isAutosave()?"":"-noauto")+(a.changeListenerEnabled?"":"-nolisten")+(a.inConflictState?"-conflict":"")+(a.invalidChecksum?"-invalid":""),action:c,label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")})}}catch(x){}}),q=mxUtils.bind(this,function(b){n(b);a.saveLevel=12;try{EditorUi.logError(b.message,null,null,b),EditorUi.sendReport("Critical error in DriveClient.saveFile "+(new Date).toISOString()+":\n\nBrowser="+navigator.userAgent+"\nFile="+
+a.desc.id+"."+a.desc.headRevisionId+"\nUser="+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")+"\nMessage="+b.message+"\n\nStack:\n"+b.stack)}catch(C){}});if(a.isEditable()&&null!=a.desc){var f=(new Date).getTime(),l=a.desc.etag,p=a.desc.modifiedDate,u=a.desc.headRevisionId,v=this.ui.useCanvasForExport&&/(\.png)$/i.test(a.getTitle());g=null!=g?g:"1"==urlParams.ignoremime;e=null!=e?e:!1;var t=mxUtils.bind(this,function(d,g,x){try{a.saveLevel=3;var t=null,
+F=!1,A={mimeType:a.desc.mimeType,title:a.getTitle()};this.isGoogleRealtimeMimeType(a.desc.mimeType)?(A.mimeType=this.xmlMimeType,t=a.desc,F=c=!0):"application/octet-stream"==A.mimeType&&(A.mimeType=this.xmlMimeType);a.constructor==DriveFile&&(null==m&&(m=[]),null==a.getChannelId()&&m.push({key:"channel",value:Editor.guid(32)}),null==a.getChannelKey()&&m.push({key:"key",value:Editor.guid(32)}),m.push({key:"secret",value:Editor.guid(32)}));x||(null!=d||e||(d=this.placeholderThumbnail,g=this.placeholderMimeType),
+null!=d&&null!=g&&(A.thumbnail={image:d,mimeType:g}));var z=a.getData(),y=mxUtils.bind(this,function(d){try{a.saveDelay=(new Date).getTime()-f;var e=(new Date(d.modifiedDate)).getTime()-(new Date(p)).getTime();if(0>=e||l==d.etag||c&&u==d.headRevisionId){var g=[];0>=e&&g.push("invalid modified time");l==d.etag&&g.push("stale etag");c&&u==d.headRevisionId&&g.push("stale revision");var k=g.join(", ");n({message:mxResources.get("errorSavingFile")+": "+k},d);try{EditorUi.sendReport("Critical: Error saving to Google Drive "+
+(new Date).toISOString()+":\n\nBrowser="+navigator.userAgent+"\nFile="+a.desc.id+" "+a.desc.mimeType+"\nUser="+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")+"\nErrors="+k+"\nOld="+u+" "+p+" etag-hash="+this.ui.hashValue(l)+"\nNew="+d.headRevisionId+" "+d.modifiedDate+" etag-hash="+this.ui.hashValue(d.etag)),EditorUi.logError("Critical: Error saving to Google Drive "+a.desc.id,null,"from-"+u+"."+p+"-"+this.ui.hashValue(l)+"-to-"+d.headRevisionId+"."+d.modifiedDate+
+"-"+this.ui.hashValue(d.etag)+(0<k.length?"-errors-"+k:""),"user-"+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync"))}catch(Q){}}else{a.saveLevel=null;b(d,z);if(null!=t){this.executeRequest({url:"/files/"+t.id+"/revisions/"+t.headRevisionId+"?supportsTeamDrives=true"},mxUtils.bind(this,mxUtils.bind(this,function(a){a.pinned=!0;this.executeRequest({url:"/files/"+t.id+"/revisions/"+t.headRevisionId,method:"PUT",params:a})})));try{EditorUi.logEvent({category:a.convertedFrom+
+"-CONVERT-FILE-"+a.getHash(),action:"from_"+t.id+"."+t.headRevisionId+"-to_"+a.desc.id+"."+a.desc.headRevisionId,label:null!=this.user?"user_"+this.user.id:"nouser"+(null!=a.sync?"-client_"+a.sync.clientId:"nosync")})}catch(Q){}}try{EditorUi.logEvent({category:"SUCCESS-SAVE-FILE-"+a.getHash()+"-rev0_"+u+"-mod0_"+p,action:"rev-"+d.headRevisionId+"-mod_"+d.modifiedDate+"-size_"+a.getSize()+"-mime_"+a.desc.mimeType+(this.ui.editor.autosave?"":"-nosave")+(a.isAutosave()?"":"-noauto")+(a.changeListenerEnabled?
+"":"-nolisten")+(a.inConflictState?"-conflict":"")+(a.invalidChecksum?"-invalid":""),label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")})}catch(Q){}}}catch(Q){q(Q)}}),C=mxUtils.bind(this,function(b,e){a.saveLevel=4;try{null!=m&&(A.properties=m);var f=k||a.constructor!=DriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:a.getCurrentEtag(),g=0,l=mxUtils.bind(this,function(d){a.saveLevel=5;try{var k=a.desc.mimeType!=this.xmlMimeType&&
+a.desc.mimeType!=this.mimeType&&a.desc.mimeType!=this.libraryMimeType,l=!0,m=window.setTimeout(mxUtils.bind(this,function(){l=!1;n({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),3*this.ui.timeout);this.executeRequest(this.createUploadRequest(a.getId(),A,b,c||d||k,e,d?null:f,F),mxUtils.bind(this,function(a){window.clearTimeout(m);l&&y(a)}),mxUtils.bind(this,function(b){window.clearTimeout(m);if(l){a.saveLevel=6;try{a.isConflict(b)?this.executeRequest({url:"/files/"+a.getId()+"?supportsTeamDrives=true&fields="+
 this.catchupFields},mxUtils.bind(this,function(c){a.saveLevel=7;try{if(null!=c&&c.etag==f)if(g<this.maxRetries)g++,window.setTimeout(p,2*g*this.coolOff*(1+.1*(Math.random()-.5)));else{p(!0);try{EditorUi.logError("Warning: Stale Etag Overwrite "+a.getHash(),null,a.desc.id+"."+a.desc.headRevisionId,(null!=this.user?"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync"))}catch(ca){}}else"1"==urlParams.test&&c.headRevisionId==u&&EditorUi.debug("DriveClient: Remote Etag Changed",
-"local",f,"remote",c.etag,"rev",a.desc.headRevisionId,"response",[c],"file",[a]),n(b,c)}catch(ca){q(ca)}}),mxUtils.bind(this,function(){n(b)})):n(b)}catch(ga){q(ga)}}}))}catch(ha){q(ha)}}),p=mxUtils.bind(this,function(b){a.saveLevel=9;b?l(b):this.executeRequest({url:"/files/"+a.getId()+"?supportsTeamDrives=true&fields="+this.catchupFields},mxUtils.bind(this,function(c){try{null!=c&&c.headRevisionId==u?("1"==urlParams.test&&f!=c.etag&&EditorUi.debug("DriveClient: Preflight Etag Update","from",f,"to",
-c.etag,"rev",a.desc.headRevisionId,"response",[c],"file",[a]),f=c.etag,l(b)):n({error:{code:412}},c)}catch(W){q(W)}}),mxUtils.bind(this,function(a){n(a)}))});if(v&&null==d){a.saveLevel=8;var x=new Image;x.onload=mxUtils.bind(this,function(){try{var a=this.thumbnailWidth/x.width,b=document.createElement("canvas");b.width=this.thumbnailWidth;b.height=Math.floor(x.height*a);b.getContext("2d").drawImage(x,0,0,b.width,b.height);var c=b.toDataURL(),c=c.substring(c.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,
-"_");A.thumbnail={image:c,mimeType:"image/png"};p(!1)}catch(aa){p(!1)}});x.src="data:image/png;base64,"+b}else p(!1)}catch(T){q(T)}});v?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){C(a,!0)}),n,this.ui.getCurrentFile()!=a?z:null):C(z,!1)}catch(J){q(J)}}),z=mxUtils.bind(this,function(){try{if(a.saveLevel=2,e||v||a.constructor==DriveLibrary||!this.enableThumbnails||"0"==urlParams.thumb||null!=a.desc.mimeType&&"application/vnd.jgraph.mxfile"!=a.desc.mimeType.substring(0,29)||!this.ui.getThumbnail(this.thumbnailWidth,
-mxUtils.bind(this,function(b){try{var c=a.thumbTime=null;try{null!=b&&(c=b.toDataURL("image/png")),null!=c&&(c=c.length>this.maxThumbnailSize?null:c.substring(c.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_"))}catch(x){c=null}t(c,"image/png")}catch(x){q(x)}})))a.thumbTime=null,t(null,null,a.constructor!=DriveLibrary)}catch(y){q(y)}});g||!c?z():(a.saveLevel=10,this.verifyMimeType(a.getId(),z,!0,n))}else this.ui.editor.graph.reset(),n({message:mxResources.get("readOnly")})}catch(y){q(y)}};
-DriveClient.prototype.verifyMimeType=function(a,c,b,d){null==this.lastMimeCheck&&(this.lastMimeCheck=0);var g=(new Date).getTime();b||g-this.lastMimeCheck>this.mimeTypeCheckCoolOff?(this.lastMimeCheck=g,this.checkingMimeType||(this.checkingMimeType=!0,this.executeRequest({url:"/files/"+a+"?supportsTeamDrives=true&fields=mimeType"},mxUtils.bind(this,function(b){this.checkingMimeType=!1;null!=b&&"application/vnd.jgraph.mxfile.realtime"==b.mimeType?this.redirectToNewApp(d,a):null!=c&&c()}),mxUtils.bind(this,
-function(a){this.checkingMimeType=!1;null!=d&&d(a)})))):null!=c&&c()};
+"local",f,"remote",c.etag,"rev",a.desc.headRevisionId,"response",[c],"file",[a]),n(b,c)}catch(ca){q(ca)}}),mxUtils.bind(this,function(){n(b)})):n(b)}catch(ha){q(ha)}}}))}catch(ga){q(ga)}}),p=mxUtils.bind(this,function(b){a.saveLevel=9;if(b)l(b);else{var c=!0,d=window.setTimeout(mxUtils.bind(this,function(){c=!1;n({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),3*this.ui.timeout);this.executeRequest({url:"/files/"+a.getId()+"?supportsTeamDrives=true&fields="+this.catchupFields},mxUtils.bind(this,
+function(e){window.clearTimeout(d);if(c){a.saveLevel=13;try{null!=e&&e.headRevisionId==u?("1"==urlParams.test&&f!=e.etag&&EditorUi.debug("DriveClient: Preflight Etag Update","from",f,"to",e.etag,"rev",a.desc.headRevisionId,"response",[e],"file",[a]),f=e.etag,l(b)):n({error:{code:412}},e)}catch(ga){q(ga)}}}),mxUtils.bind(this,function(a){window.clearTimeout(d);c&&n(a)}))}});if(v&&null==d){a.saveLevel=8;var t=new Image;t.onload=mxUtils.bind(this,function(){try{var a=this.thumbnailWidth/t.width,b=document.createElement("canvas");
+b.width=this.thumbnailWidth;b.height=Math.floor(t.height*a);b.getContext("2d").drawImage(t,0,0,b.width,b.height);var c=b.toDataURL(),c=c.substring(c.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_");A.thumbnail={image:c,mimeType:"image/png"};p(!1)}catch(aa){p(!1)}});t.src="data:image/png;base64,"+b}else p(!1)}catch(T){q(T)}});v?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){C(a,!0)}),n,this.ui.getCurrentFile()!=a?z:null):C(z,!1)}catch(J){q(J)}}),z=mxUtils.bind(this,function(){try{if(a.saveLevel=
+2,e||v||a.constructor==DriveLibrary||!this.enableThumbnails||"0"==urlParams.thumb||null!=a.desc.mimeType&&"application/vnd.jgraph.mxfile"!=a.desc.mimeType.substring(0,29)||!this.ui.getThumbnail(this.thumbnailWidth,mxUtils.bind(this,function(b){try{var c=a.thumbTime=null;try{null!=b&&(c=b.toDataURL("image/png")),null!=c&&(c=c.length>this.maxThumbnailSize?null:c.substring(c.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_"))}catch(x){c=null}t(c,"image/png")}catch(x){q(x)}})))a.thumbTime=null,t(null,
+null,a.constructor!=DriveLibrary)}catch(y){q(y)}});g||!c?z():(a.saveLevel=10,this.verifyMimeType(a.getId(),z,!0,n))}else this.ui.editor.graph.reset(),n({message:mxResources.get("readOnly")})}catch(y){q(y)}};
+DriveClient.prototype.verifyMimeType=function(a,c,b,d){null==this.lastMimeCheck&&(this.lastMimeCheck=0);var g=(new Date).getTime();if(b||g-this.lastMimeCheck>this.mimeTypeCheckCoolOff)if(this.lastMimeCheck=g,this.checkingMimeType)null!=c&&c();else{var e=this.checkingMimeType=!0,k=window.setTimeout(mxUtils.bind(this,function(){this.checkingMimeType=e=!1;null!=d&&d({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),3*this.ui.timeout);this.executeRequest({url:"/files/"+a+"?supportsTeamDrives=true&fields=mimeType"},
+mxUtils.bind(this,function(b){window.clearTimeout(k);e&&(this.checkingMimeType=!1,null!=b&&"application/vnd.jgraph.mxfile.realtime"==b.mimeType?this.redirectToNewApp(d,a):null!=c&&c())}),mxUtils.bind(this,function(a){window.clearTimeout(k);e&&(this.checkingMimeType=!1,null!=d&&d(a))}))}else null!=c&&c()};
 DriveClient.prototype.redirectToNewApp=function(a,c){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var b=window.location.protocol+"//"+this.newAppHostname+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#G"+c,d=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==b?window.location.reload():window.location.href=b});null!=a?this.ui.confirm(mxResources.get("redirectToNewApp"),d,mxUtils.bind(this,function(){this.redirectDialogShowing=
 !1;null!=a&&a()})):this.ui.alert(mxResources.get("redirectToNewApp"),d)}};DriveClient.prototype.insertFile=function(a,c,b,d,g,e,k){e=null!=e?e:this.xmlMimeType;a={mimeType:e,title:a};null!=b&&(a.parents=[{kind:"drive#fileLink",id:b}]);this.executeRequest(this.createUploadRequest(null,a,c,!1,k),mxUtils.bind(this,function(a){e==this.libraryMimeType?d(new DriveLibrary(this.ui,c,a)):0==a?null!=g&&g({message:mxResources.get("errorSavingFile")}):d(new DriveFile(this.ui,c,a))}),g)};
 DriveClient.prototype.createUploadRequest=function(a,c,b,d,g,e,k){g=null!=g?g:!1;var m={"Content-Type":'multipart/mixed; boundary="-------314159265358979323846"'};null!=e&&(m["If-Match"]=e);a={fullUrl:"https://content.googleapis.com/upload/drive/v2/files"+(null!=a?"/"+a:"")+"?uploadType=multipart&supportsTeamDrives=true&fields="+this.allFields,method:null!=a?"PUT":"POST",headers:m,params:"\r\n---------314159265358979323846\r\nContent-Type: application/json\r\n\r\n"+JSON.stringify(c)+"\r\n---------314159265358979323846\r\nContent-Type: application/octect-stream\r\nContent-Transfer-Encoding: base64\r\n\r\n"+
@@ -8953,9 +8946,9 @@ OneDriveClient.prototype.insertFile=function(a,c,b,d,g,e){this.isValidFilename(a
 mxResources.get("oneDriveInvalidDeviceName")})};
 OneDriveClient.prototype.checkExists=function(a,c,b,d){var g="/me/drive/root";null!=a&&(g=this.getItemURL(a,!0));this.executeRequest(this.baseUrl+g+"/children/"+encodeURIComponent(c),mxUtils.bind(this,function(a){404==a.getStatus()?d(!0):b?(this.ui.spinner.stop(),this.ui.confirm(mxResources.get("replaceIt",[c]),function(){d(!0)},function(){d(!1)})):(this.ui.spinner.stop(),this.ui.showError(mxResources.get("error"),mxResources.get("fileExists"),mxResources.get("ok"),function(){d(!1)}))}),function(a){d(!1)},
 !0)};OneDriveClient.prototype.saveFile=function(a,c,b,d){try{var g=a.getData(),e=mxUtils.bind(this,function(e){var k=this.getItemURL(a.getId());this.writeFile(k+"/content/",e,"PUT",null,mxUtils.bind(this,function(a){c(a,g)}),b,d)});this.ui.useCanvasForExport&&/(\.png)$/i.test(a.meta.name)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){e(this.ui.base64ToBlob(a,"image/png"))}),b,this.ui.getCurrentFile()!=a?g:null):e(g)}catch(k){b(k)}};
-OneDriveClient.prototype.writeFile=function(a,c,b,d,g,e,k){try{if(null!=a&&null!=c){var m=mxUtils.bind(this,function(n){try{var q=!0,f=window.setTimeout(mxUtils.bind(this,function(){q=!1;e({code:App.ERROR_TIMEOUT,retry:m})}),this.ui.timeout),l=new mxXmlRequest(a,c,b);l.setRequestHeaders=mxUtils.bind(this,function(a,b){a.setRequestHeader("Content-Type",d||" ");a.setRequestHeader("Authorization","Bearer "+this.token);null!=k&&a.setRequestHeader("If-Match",k)});l.send(mxUtils.bind(this,function(a){window.clearTimeout(f);
-q&&(200<=a.getStatus()&&299>=a.getStatus()?(null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0),g(JSON.parse(a.getText()))):n||401!==a.getStatus()?e(this.parseRequestText(a),a):this.authenticate(function(){m(!0)},e,n))}),mxUtils.bind(this,function(a){window.clearTimeout(f);q&&e(this.parseRequestText(a))}))}catch(p){e(p)}});null==this.token||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(function(){m(!0)},e):m(!1)}else e({message:mxResources.get("unknownError")})}catch(n){e(n)}};
-OneDriveClient.prototype.parseRequestText=function(a){var c={message:mxResources.get("unknownError")};try{c=JSON.parse(a.getText())}catch(b){}return c};OneDriveClient.prototype.pickLibrary=function(a){this.pickFile(function(c){a(c)})};
+OneDriveClient.prototype.writeFile=function(a,c,b,d,g,e,k){try{if(null!=a&&null!=c)if(4E6<=c.length)e({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(c.length)+" / 4 MB)"});else{var m=mxUtils.bind(this,function(n){try{var q=!0,f=window.setTimeout(mxUtils.bind(this,function(){q=!1;e({code:App.ERROR_TIMEOUT,retry:m})}),this.ui.timeout),l=new mxXmlRequest(a,c,b);l.setRequestHeaders=mxUtils.bind(this,function(a,b){a.setRequestHeader("Content-Type",d||" ");a.setRequestHeader("Authorization",
+"Bearer "+this.token);null!=k&&a.setRequestHeader("If-Match",k)});l.send(mxUtils.bind(this,function(a){window.clearTimeout(f);q&&(200<=a.getStatus()&&299>=a.getStatus()?(null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0),g(JSON.parse(a.getText()))):n||401!==a.getStatus()?e(this.parseRequestText(a),a):this.authenticate(function(){m(!0)},e,n))}),mxUtils.bind(this,function(a){window.clearTimeout(f);q&&e(this.parseRequestText(a))}))}catch(p){e(p)}});null==this.token||6E4>this.tokenExpiresOn-
+Date.now()?this.authenticate(function(){m(!0)},e):m(!1)}else e({message:mxResources.get("unknownError")})}catch(n){e(n)}};OneDriveClient.prototype.parseRequestText=function(a){var c={message:mxResources.get("unknownError")};try{c=JSON.parse(a.getText())}catch(b){}return c};OneDriveClient.prototype.pickLibrary=function(a){this.pickFile(function(c){a(c)})};
 OneDriveClient.prototype.pickFolder=function(a,c){var b=mxUtils.bind(this,function(b){var c=mxUtils.bind(this,function(){OneDrive.save({clientId:this.clientId,action:"query",openInNewWindow:!0,advanced:{endpointHint:mxClient.IS_IE11?null:this.endpointHint,redirectUri:this.pickerRedirectUri,queryParameters:"select=id,name,parentReference",accessToken:this.token,isConsumerAccount:!1},success:mxUtils.bind(this,function(b){a(b);mxClient.IS_IE11&&(this.token=b.accessToken)}),cancel:mxUtils.bind(this,function(){}),
 error:mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),a)})})});b?c():this.ui.confirm(mxResources.get("useRootFolder"),mxUtils.bind(this,function(){a({value:[{id:"root",name:"root",parentReference:{driveId:"me"}}]})}),c,mxResources.get("yes"),mxResources.get("noPickFolder")+"...",!0);null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0)});null==this.token||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(mxUtils.bind(this,function(){b(!1)}),this.emptyFn):b(c)};
 OneDriveClient.prototype.pickFile=function(a){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("W"+encodeURIComponent(a))});var c=mxUtils.bind(this,function(){OneDrive.open({clientId:this.clientId,action:"query",multiSelect:!1,advanced:{endpointHint:mxClient.IS_IE11?null:this.endpointHint,redirectUri:this.pickerRedirectUri,queryParameters:"select=id,name,parentReference",accessToken:this.token,isConsumerAccount:!1},success:mxUtils.bind(this,function(b){null!=b&&null!=b.value&&0<b.value.length&&
@@ -8993,8 +8986,8 @@ GitHubClient.prototype.showGitHubDialog=function(a,c){var b=null,d=null,g=null,e
 mxUtils.bind(this,function(a,b,c){var d=document.createElement("a");d.setAttribute("href","javascript:void(0);");d.setAttribute("title",a);mxUtils.write(d,a);mxEvent.addListener(d,"click",b);null!=c&&(a=q.cloneNode(),a.style.padding=c,a.appendChild(d),d=a);return d}),p=mxUtils.bind(this,function(a){var c=document.createElement("div");c.style.marginBottom="8px";c.appendChild(l(b+"/"+d,mxUtils.bind(this,function(){e=null;C()})));a||(mxUtils.write(c," / "),c.appendChild(l(decodeURIComponent(g),mxUtils.bind(this,
 function(){e=null;y()}))));if(null!=e&&0<e.length){var f=e.split("/");for(a=0;a<f.length;a++)(function(a){mxUtils.write(c," / ");c.appendChild(l(f[a],mxUtils.bind(this,function(){e=f.slice(0,a+1).join("/");z()})))})(a)}n.appendChild(c)}),u=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(e=g=d=b=null,C()):this.ui.hideDialog()}))}),v=null,t=null,z=mxUtils.bind(this,function(k){null==k&&(n.innerHTML="",k=1);var m=new mxXmlRequest(this.baseUrl+
 "/repos/"+b+"/"+d+"/contents/"+e+"?ref="+encodeURIComponent(g)+"&per_page=100&page="+k,null,"GET");this.ui.spinner.spin(n,mxResources.get("loading"));f.okButton.removeAttribute("disabled");null!=t&&(mxEvent.removeListener(n,"scroll",t),t=null);null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);");mxUtils.write(v,mxResources.get("more")+"...");var x=mxUtils.bind(this,function(){z(k+1)});mxEvent.addListener(v,
-"click",x);this.executeRequest(m,mxUtils.bind(this,function(f){this.ui.spinner.stop();1==k&&(p(),n.appendChild(l("../ [Up]",mxUtils.bind(this,function(){if(""==e)e=null,C();else{var a=e.split("/");e=a.slice(0,a.length-1).join("/");z()}}),"4px")));var m=JSON.parse(f.getText());if(null==m||0==m.length)mxUtils.write(n,mxResources.get("noFiles"));else{var x=!0,t=0;f=mxUtils.bind(this,function(f){for(var k=0;k<m.length;k++)mxUtils.bind(this,function(k,m){if(f==("dir"==k.type)){var p=q.cloneNode();p.style.backgroundColor=
-x?"#eeeeee":"";x=!x;var B=document.createElement("img");B.src=IMAGE_PATH+"/"+("dir"==k.type?"folder.png":"file.png");B.setAttribute("align","absmiddle");B.style.marginRight="4px";B.style.marginTop="-4px";B.width=20;p.appendChild(B);p.appendChild(l(k.name+("dir"==k.type?"/":""),mxUtils.bind(this,function(){"dir"==k.type?(e=k.path,z()):a&&"file"==k.type&&(this.ui.hideDialog(),c(b+"/"+d+"/"+encodeURIComponent(g)+"/"+k.path))})));n.appendChild(p);t++}})(m[k],k)});f(!0);a&&f(!1)}}),u,!0)}),y=mxUtils.bind(this,
+"click",x);this.executeRequest(m,mxUtils.bind(this,function(f){this.ui.spinner.stop();1==k&&(p(),n.appendChild(l("../ [Up]",mxUtils.bind(this,function(){if(""==e)e=null,C();else{var a=e.split("/");e=a.slice(0,a.length-1).join("/");z()}}),"4px")));var m=JSON.parse(f.getText());if(null==m||0==m.length)mxUtils.write(n,mxResources.get("noFiles"));else{var t=!0,x=0;f=mxUtils.bind(this,function(f){for(var k=0;k<m.length;k++)mxUtils.bind(this,function(k,m){if(f==("dir"==k.type)){var p=q.cloneNode();p.style.backgroundColor=
+t?"#eeeeee":"";t=!t;var B=document.createElement("img");B.src=IMAGE_PATH+"/"+("dir"==k.type?"folder.png":"file.png");B.setAttribute("align","absmiddle");B.style.marginRight="4px";B.style.marginTop="-4px";B.width=20;p.appendChild(B);p.appendChild(l(k.name+("dir"==k.type?"/":""),mxUtils.bind(this,function(){"dir"==k.type?(e=k.path,z()):a&&"file"==k.type&&(this.ui.hideDialog(),c(b+"/"+d+"/"+encodeURIComponent(g)+"/"+k.path))})));n.appendChild(p);x++}})(m[k],k)});f(!0);a&&f(!1)}}),u,!0)}),y=mxUtils.bind(this,
 function(a){null==a&&(n.innerHTML="",a=1);var c=new mxXmlRequest(this.baseUrl+"/repos/"+b+"/"+d+"/branches?per_page=100&page="+a,null,"GET");f.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(n,mxResources.get("loading"));null!=t&&(mxEvent.removeListener(n,"scroll",t),t=null);null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);");mxUtils.write(v,mxResources.get("more")+"...");var k=
 mxUtils.bind(this,function(){y(a+1)});mxEvent.addListener(v,"click",k);this.executeRequest(c,mxUtils.bind(this,function(b){this.ui.spinner.stop();1==a&&(p(!0),n.appendChild(l("../ [Up]",mxUtils.bind(this,function(){e=null;C()}),"4px")));b=JSON.parse(b.getText());if(null==b||0==b.length)mxUtils.write(n,mxResources.get("noFiles"));else{for(var c=0;c<b.length;c++)mxUtils.bind(this,function(a,b){var c=q.cloneNode();c.style.backgroundColor=0==b%2?"#eeeeee":"";c.appendChild(l(a.name,mxUtils.bind(this,function(){g=
 a.name;e="";z()})));n.appendChild(c)})(b[c],c);100==b.length&&(n.appendChild(v),t=function(){n.scrollTop>=n.scrollHeight-n.offsetHeight&&k()},mxEvent.addListener(n,"scroll",t))}}),u)}),C=mxUtils.bind(this,function(a){null==a&&(n.innerHTML="",a=1);var c=new mxXmlRequest(this.baseUrl+"/user/repos?per_page=100&page="+a,null,"GET");f.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(n,mxResources.get("loading"));null!=t&&mxEvent.removeListener(n,"scroll",t);null!=v&&null!=v.parentNode&&
@@ -9025,8 +9018,8 @@ null!=q&&q(b)}))});a()}),l=null,p=null,u=mxUtils.bind(this,function(e){null==e&&
 this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(m));for(var t=0;t<g.length;t++)mxUtils.bind(this,function(d){m.appendChild(n(d.name,mxUtils.bind(this,function(){a?(b=d.id,f()):(this.ui.hideDialog(),c(d.id))})))})(g[t]);100==g.length&&(m.appendChild(l),p=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&k()},mxEvent.addListener(m,"scroll",p))}}),mxUtils.bind(this,function(a){401==a.status?this.authenticate(v,q,!0):null!=q&&q({message:a.responseText})}))});v()});u()};
 TrelloClient.prototype.isAuthorized=function(){try{return null!=localStorage.trello_token}catch(a){}return!1};TrelloClient.prototype.logout=function(){localStorage.removeItem("trello_token");Trello.deauthorize()};GitLabFile=function(a,c,b){GitHubFile.call(this,a,c,b);this.peer=this.ui.gitLab};mxUtils.extend(GitLabFile,GitHubFile);GitLabFile.prototype.getId=function(){return this.meta.org+"/"+(null!=this.meta.repo?encodeURIComponent(this.meta.repo)+"/"+(null!=this.meta.ref?this.meta.ref+(null!=this.meta.path?"/"+this.meta.path:""):""):"")};GitLabFile.prototype.getHash=function(){return encodeURIComponent("A"+this.getId())};GitLabFile.prototype.isConflict=function(a){return null!=a&&400==a.status};
 GitLabFile.prototype.getMode=function(){return App.MODE_GITLAB};GitLabFile.prototype.getDescriptorEtag=function(a){return a.last_commit_id};GitLabFile.prototype.setDescriptorEtag=function(a,c){a.last_commit_id=c};GitLabLibrary=function(a,c,b){GitLabFile.call(this,a,c,b)};mxUtils.extend(GitLabLibrary,GitLabFile);GitLabLibrary.prototype.doSave=function(a,c,b){this.saveFile(a,!1,c,b)};GitLabLibrary.prototype.open=function(){};GitLabClient=function(a){GitHubClient.call(this,a,"gitlabauth")};mxUtils.extend(GitLabClient,GitHubClient);GitLabClient.prototype.clientId=DRAWIO_GITLAB_ID;GitLabClient.prototype.scope="api%20read_repository%20write_repository";GitLabClient.prototype.baseUrl=DRAWIO_GITLAB_URL+"/api/v4";
-GitLabClient.prototype.authenticate=function(a,c){if(null==window.onGitLabCallback){var b=mxUtils.bind(this,function(){var d=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(g,e){var k=encodeURIComponent(window.location.origin+"/gitlab.html");null!=window.open(DRAWIO_GITLAB_URL+"/oauth/authorize?client_id="+this.clientId+"&scope="+this.scope+"&redirect_uri="+k+"&response_type=token&state=123","gitlabauth")?window.onGitLabCallback=mxUtils.bind(this,function(k,n){d?(window.onGitLabCallback=
-null,d=!1,null==k?c({message:mxResources.get("accessDenied"),retry:b}):(null!=e&&e(),this.token=k,this.setUser(null),g&&this.setPersistentToken(this.token),a())):null!=n&&n.close()}):c({message:mxResources.get("serviceUnavailableOrBlocked"),retry:b})}),mxUtils.bind(this,function(){d&&(window.onGitLabCallback=null,d=!1,c({message:mxResources.get("accessDenied"),retry:b}))}))});b()}else c({code:App.ERROR_BUSY})};
+GitLabClient.prototype.authenticate=function(a,c){if(null==window.onGitLabCallback){var b=mxUtils.bind(this,function(){var d=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(g,e){var k=window.location.href,k=k.substring(0,k.lastIndexOf("/")),k=encodeURIComponent(k+"/gitlab.html");null!=window.open(DRAWIO_GITLAB_URL+"/oauth/authorize?client_id="+this.clientId+"&scope="+this.scope+"&redirect_uri="+k+"&response_type=token&state=123","gitlabauth")?window.onGitLabCallback=mxUtils.bind(this,
+function(k,n){d?(window.onGitLabCallback=null,d=!1,null==k?c({message:mxResources.get("accessDenied"),retry:b}):(null!=e&&e(),this.token=k,this.setUser(null),g&&this.setPersistentToken(this.token),a())):null!=n&&n.close()}):c({message:mxResources.get("serviceUnavailableOrBlocked"),retry:b})}),mxUtils.bind(this,function(){d&&(window.onGitLabCallback=null,d=!1,c({message:mxResources.get("accessDenied"),retry:b}))}))});b()}else c({code:App.ERROR_BUSY})};
 GitLabClient.prototype.executeRequest=function(a,c,b,d){var g=mxUtils.bind(this,function(k){var m=!0,n=window.setTimeout(mxUtils.bind(this,function(){m=!1;b({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.ui.timeout),q=this.token;a.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization","Bearer "+q);a.setRequestHeader("PRIVATE_TOKEN",q);a.setRequestHeader("Content-Type","application/json")};a.send(mxUtils.bind(this,function(){window.clearTimeout(n);if(m)if(200<=a.getStatus()&&
 299>=a.getStatus()||d&&404==a.getStatus())c(a);else if(401===a.getStatus())k?b({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){e(!0)},b)})}):this.authenticate(function(){g(!0)},b);else if(403===a.getStatus()){var f=!1;try{var l=JSON.parse(a.getText());null!=l&&null!=l.errors&&0<l.errors.length&&(f="too_large"==l.errors[0].code)}catch(p){}b({message:mxResources.get(f?"drawingTooLarge":"forbidden")})}else 404===a.getStatus()?b({message:this.getErrorMessage(a,
 mxResources.get("fileNotFound"))}):400===a.getStatus()?b({status:400}):b({status:a.getStatus(),message:this.getErrorMessage(a,mxResources.get("error")+" "+a.getStatus())})}),b)}),e=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){e(!0)},b,a):g(a)});null==this.token?this.authenticate(function(){e(!0)},b):e(!1)};
diff --git a/src/main/webapp/js/diagramly/DriveClient.js b/src/main/webapp/js/diagramly/DriveClient.js
index 1057e787de3767935f4d38af2fecff12c7d1ef2b..aae4e32c4b5ea2edb38da8b4dc835cae83769f3a 100644
--- a/src/main/webapp/js/diagramly/DriveClient.js
+++ b/src/main/webapp/js/diagramly/DriveClient.js
@@ -1175,7 +1175,7 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 		
 		var error = mxUtils.bind(this, function(e)
 		{
-			file.saveLevel = null;
+			file.saveLevel = 11;
 			
 			if (errFn != null)
 			{
@@ -1219,6 +1219,7 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 		var criticalError = mxUtils.bind(this, function(e)
 		{
 			error(e);
+			file.saveLevel = 12;
 	
 			try
 			{
@@ -1481,12 +1482,12 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 										file.desc.mimeType != this.libraryMimeType;
 									var acceptResponse = true;
 									
-									// Allow for re-auth flow with 4x timeout
+									// Allow for re-auth flow with 3x timeout
 									var timeoutThread = window.setTimeout(mxUtils.bind(this, function()
 									{
 										acceptResponse = false;
 										error({code: App.ERROR_TIMEOUT, message: mxResources.get('timeout')});
-									}), 4 * this.ui.timeout);
+									}), 3 * this.ui.timeout);
 									
 									this.executeRequest(this.createUploadRequest(file.getId(), meta,
 										data, revision || realOverwrite || unknown, binary,
@@ -1602,40 +1603,61 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 								}
 								else
 								{
+									var acceptResponse = true;
+									
+									// Allow for re-auth flow with 3x timeout
+									var timeoutThread = window.setTimeout(mxUtils.bind(this, function()
+									{
+										acceptResponse = false;
+										error({code: App.ERROR_TIMEOUT, message: mxResources.get('timeout')});
+									}), 3 * this.ui.timeout);
+									
 									this.executeRequest({
 										url: '/files/' + file.getId() + '?supportsTeamDrives=true&fields=' + this.catchupFields
-									}, 
+									},
 									mxUtils.bind(this, function(desc2)
 									{
-										try
+										window.clearTimeout(timeoutThread);
+										
+										if (acceptResponse)
 										{
-											// Checks head revision ID and updates etag or returns conflict
-											if (desc2 != null && desc2.headRevisionId == head0)
+											file.saveLevel = 13;
+											
+											try
 											{
-												if (urlParams['test'] == '1' && etag != desc2.etag)
+												// Checks head revision ID and updates etag or returns conflict
+												if (desc2 != null && desc2.headRevisionId == head0)
 												{
-													EditorUi.debug('DriveClient: Preflight Etag Update',
-														'from', etag, 'to', desc2.etag,
-														'rev', file.desc.headRevisionId,
-														'response', [desc2], 'file', [file]);
+													if (urlParams['test'] == '1' && etag != desc2.etag)
+													{
+														EditorUi.debug('DriveClient: Preflight Etag Update',
+															'from', etag, 'to', desc2.etag,
+															'rev', file.desc.headRevisionId,
+															'response', [desc2], 'file', [file]);
+													}
+													
+													etag = desc2.etag;
+													doExecuteSave(realOverwrite);
+												}
+												else
+												{
+													error({error: {code: 412}}, desc2);
 												}
-												
-												etag = desc2.etag;
-												doExecuteSave(realOverwrite);
 											}
-											else
+											catch (e)
 											{
-												error({error: {code: 412}}, desc2);
+												criticalError(e);
 											}
 										}
-										catch (e)
-										{
-											criticalError(e);
-										}
 									}), mxUtils.bind(this, function(err)
 									{
 										// Simulated 
-										error(err);
+										window.clearTimeout(timeoutThread);
+										
+										if (acceptResponse)
+										{
+											error(err);
+										}
 									}));
 								}
 							});
@@ -1820,30 +1842,58 @@ DriveClient.prototype.verifyMimeType = function(fileId, fn, force, error)
 		{
 			this.checkingMimeType = true;
 			
-			this.executeRequest({
-				url: '/files/' + fileId + '?supportsTeamDrives=true&fields=mimeType'
-			}, mxUtils.bind(this, function(resp)
+			var acceptResponse = true;
+			
+			// Allow for re-auth flow with 3x timeout
+			var timeoutThread = window.setTimeout(mxUtils.bind(this, function()
 			{
+				acceptResponse = false;
 				this.checkingMimeType = false;
 				
-				if (resp != null && resp.mimeType == 'application/vnd.jgraph.mxfile.realtime')
+				if (error != null)
 				{
-					this.redirectToNewApp(error, fileId);
+					error({code: App.ERROR_TIMEOUT, message: mxResources.get('timeout')});
 				}
-				else if (fn != null)
+			}), 3 * this.ui.timeout);
+			
+			this.executeRequest({
+				url: '/files/' + fileId + '?supportsTeamDrives=true&fields=mimeType'
+			}, mxUtils.bind(this, function(resp)
+			{
+				window.clearTimeout(timeoutThread);
+				
+				if (acceptResponse)
 				{
-					fn();
+					this.checkingMimeType = false;
+					
+					if (resp != null && resp.mimeType == 'application/vnd.jgraph.mxfile.realtime')
+					{
+						this.redirectToNewApp(error, fileId);
+					}
+					else if (fn != null)
+					{
+						fn();
+					}
 				}
 			}), mxUtils.bind(this, function(err)
 			{
-				this.checkingMimeType = false;
+				window.clearTimeout(timeoutThread);
 				
-				if (error != null)
+				if (acceptResponse)
 				{
-					error(err);
+					this.checkingMimeType = false;
+					
+					if (error != null)
+					{
+						error(err);
+					}
 				}
 			}));
 		}
+		else if (fn != null)
+		{
+			fn();
+		}
 	}
 	else if (fn != null)
 	{
diff --git a/src/main/webapp/js/diagramly/Editor.js b/src/main/webapp/js/diagramly/Editor.js
index 512a3df33b10d134be9c2aab461d5a4591bcf922..5da9f3f796ad540e8cb2eed06bfb9150952c6c55 100644
--- a/src/main/webapp/js/diagramly/Editor.js
+++ b/src/main/webapp/js/diagramly/Editor.js
@@ -1190,6 +1190,13 @@
 	 */
 	Editor.prototype.isCorsEnabledForUrl = function(url)
 	{
+		//Disable proxy for electron since it doesn't exist (it is served locally) and it works with most of the sites
+		//The same with Chrome App, never use proxy
+		if (mxClient.IS_CHROMEAPP || EditorUi.isElectronApp)
+		{
+			return true;
+		}
+		
 		if (urlParams['cors'] != null && this.corsRegExp == null)
 		{
 			this.corsRegExp = new RegExp(decodeURIComponent(urlParams['cors']));
diff --git a/src/main/webapp/js/diagramly/EditorUi.js b/src/main/webapp/js/diagramly/EditorUi.js
index 77306b3c5543f57f4a35d6523769b7f9f1f4757a..bffdfe83881240a232fa398c7fd16ea34a79fb02 100644
--- a/src/main/webapp/js/diagramly/EditorUi.js
+++ b/src/main/webapp/js/diagramly/EditorUi.js
@@ -9595,15 +9595,20 @@
 		textInput.setAttribute('autocapitalize', 'off');
 		textInput.setAttribute('spellcheck', 'false');
 		textInput.style.textRendering = 'optimizeSpeed';
+		textInput.style.background = 'transparent';
+		textInput.style.color = 'transparent';
 		textInput.style.position = 'absolute';
 		textInput.style.whiteSpace = 'nowrap';
 		textInput.style.overflow = 'hidden';
 		textInput.style.display = 'block';
-		textInput.style.fontSize = '0px';
-		textInput.contentEditable = true;
-		mxUtils.setOpacity(textInput, 0);
+		textInput.style.fontSize = '1';
+		textInput.style.zIndex = '-1';
+		textInput.style.resize = 'none';
+		textInput.style.outline = 'none';
 		textInput.style.width = '1px';
 		textInput.style.height = '1px';
+		mxUtils.setOpacity(textInput, 0);
+		textInput.contentEditable = true;
 		textInput.innerHTML = '&nbsp;';
 
 		var restoreFocus = false;
@@ -9737,11 +9742,18 @@
 				textInput.innerHTML = '&nbsp;';
 				textInput.focus();
 				
-				window.setTimeout(mxUtils.bind(this, function()
+				if (evt.clipboardData != null)
 				{
-					this.pasteCells(evt, textInput);
-					textInput.innerHTML = '&nbsp;';
-				}), 0);
+					this.pasteCells(evt, textInput, true);
+				}
+
+				if (!mxEvent.isConsumed(evt))
+				{
+					window.setTimeout(mxUtils.bind(this, function()
+					{
+						this.pasteCells(evt, textInput, false);
+					}), 0);
+				}
 			}
 		}), true);
 		
@@ -9960,14 +9972,8 @@
 		
 		if (!graph.isSelectionEmpty())
 		{
-			var cells = mxUtils.sortCells(graph.model.getTopmostCells(graph.getSelectionCells()));
-			
-			// LATER: Add span with XML in data attribute
-			// var span = document.createElement('span');
-			// span.setAttribute('data-jgraph-type', 'application/vnd.jgraph.xml');
-			// span.setAttribute('data-jgraph-content', mxUtils.getXml(graph.encodeCells(clones)));
-			
 			// Fixes cross-platform clipboard UTF8 issues by encoding as URI
+			var cells = mxUtils.sortCells(graph.model.getTopmostCells(graph.getSelectionCells()));
 			var xml = mxUtils.getXml(this.editor.graph.encodeCells(cells));
 			mxUtils.setTextContent(elt, encodeURIComponent(xml));
 			
@@ -9995,10 +10001,20 @@
 	/**
 	 * Creates the format panel and adds overrides.
 	 */
-	EditorUi.prototype.pasteCells = function(evt, elt)
+	EditorUi.prototype.pasteCells = function(evt, realElt, useEvent)
 	{
 		if (!mxEvent.isConsumed(evt))
 		{
+			var elt = realElt;
+			
+			if (useEvent && evt.clipboardData != null)
+			{
+				// Creates a dummy element and parses the HTML to get
+				// consistent behaviour for system paste HTML into elt
+				elt = document.createElement('div');
+				elt.innerHTML = evt.clipboardData.getData('text/html');
+			}
+			
 			var spans = elt.getElementsByTagName('span');
 		
 			if (spans != null && spans.length > 0 && spans[0].getAttribute('data-lucid-type') ===
@@ -10011,7 +10027,19 @@
 					this.convertLucidChart(content, mxUtils.bind(this, function(xml)
 					{
 						var graph = this.editor.graph;
-						graph.setSelectionCells(this.importXml(xml, 0, 0));
+						
+						if (graph.lastPasteXml == xml)
+						{
+							graph.pasteCounter++;
+						}
+						else
+						{
+							graph.lastPasteXml = xml;
+							graph.pasteCounter = 0;
+						}
+						
+						var dx = graph.pasteCounter * graph.gridSize;
+						graph.setSelectionCells(this.importXml(xml, dx, dx));
 						graph.scrollCellToVisible(graph.getSelectionCell());
 					}), mxUtils.bind(this, function(e)
 					{
@@ -10023,11 +10051,10 @@
 			}
 			else
 			{
-				var graph = this.editor.graph;
 				var xml = mxUtils.trim((mxClient.IS_QUIRKS || document.documentMode == 8) ?
 					mxUtils.getTextContent(elt) : elt.textContent);
 				var compat = false;
-	
+				
 				// Workaround for junk after XML in VM
 				try
 				{
@@ -10061,21 +10088,23 @@
 				{
 					// ignore
 				}
-				
-				if (graph.lastPasteXml == xml)
-				{
-					graph.pasteCounter++;
-				}
-				else
-				{
-					graph.lastPasteXml = xml;
-					graph.pasteCounter = 0;
-				}
-				
-				var dx = graph.pasteCounter * graph.gridSize;
-				
+
 				if (xml != null && xml.length > 0)
 				{
+					var graph = this.editor.graph;
+					
+					if (graph.lastPasteXml == xml)
+					{
+						graph.pasteCounter++;
+					}
+					else
+					{
+						graph.lastPasteXml = xml;
+						graph.pasteCounter = 0;
+					}
+
+					var dx = graph.pasteCounter * graph.gridSize;
+										
 					if (compat || this.isCompatibleString(xml))
 					{
 						graph.setSelectionCells(this.importXml(xml, dx, dx));
@@ -10117,8 +10146,15 @@
 						}
 					}
 				}
+				else if (!useEvent)
+				{
+					graph.lastPasteXml = null;
+					graph.pasteCounter = 0;
+				}
 			}
 		}
+		
+		realElt.innerHTML = '&nbsp;';
 	};
 
 	/**
diff --git a/src/main/webapp/js/diagramly/Extensions.js b/src/main/webapp/js/diagramly/Extensions.js
index 42d0846d70423e1e048ed31cdb25e7dab2dd9d47..c13d6a7ed3be84721fb7f6a18ee7d5d20fc46a19 100644
--- a/src/main/webapp/js/diagramly/Extensions.js
+++ b/src/main/webapp/js/diagramly/Extensions.js
@@ -3128,7 +3128,7 @@ LucidImporter = {};
 	{
 		var s = '';
 		
-		if (style != null && style != '' && !style.endsWith(';'))
+		if (style != null && style != '' && style.charAt(style.length - 1) != ';')
 		{
 			s = ';';
 		}
diff --git a/src/main/webapp/js/diagramly/GitLabClient.js b/src/main/webapp/js/diagramly/GitLabClient.js
index e2f17265dc5f41220ecdba849655d9c9ce01cf86..563d39e3fd76e173db6136f686c3b6ae51f9b94a 100644
--- a/src/main/webapp/js/diagramly/GitLabClient.js
+++ b/src/main/webapp/js/diagramly/GitLabClient.js
@@ -39,7 +39,9 @@ GitLabClient.prototype.authenticate = function(success, error)
 			this.ui.showAuthDialog(this, true, mxUtils.bind(this, function(remember, authSuccess)
 			{
 				var state = '123';
-				var redirectUri = encodeURIComponent(window.location.origin + '/gitlab.html');
+				var href = window.location.href;
+				var dir = href.substring(0, href.lastIndexOf('/'));
+				var redirectUri = encodeURIComponent(dir + '/gitlab.html');
 				var win = window.open(DRAWIO_GITLAB_URL + '/oauth/authorize?client_id=' +
 					this.clientId + '&scope=' + this.scope + '&redirect_uri=' + redirectUri +
 					'&response_type=token&state=' + state, 'gitlabauth');
diff --git a/src/main/webapp/js/diagramly/OneDriveClient.js b/src/main/webapp/js/diagramly/OneDriveClient.js
index 4c43e54396f2202286c3cebfb6fcfdf55eaa322f..da808bb0add3ad86cfdde52090f52c583322a876 100644
--- a/src/main/webapp/js/diagramly/OneDriveClient.js
+++ b/src/main/webapp/js/diagramly/OneDriveClient.js
@@ -895,6 +895,15 @@ OneDriveClient.prototype.writeFile = function(url, data, method, contentType, su
 	{
 		if (url != null && data != null)
 		{
+			//OneDrive has a limit on PUT API of 4MB, larger files needs to use the upload session method
+			if (data.length >= 4000000 /*4MB*/)
+			{
+				error({message: mxResources.get('drawingTooLarge') + ' (' +
+					this.ui.formatFileSize(data.length) + ' / 4 MB)'});
+				
+				return;
+			}
+			
 			var doExecute = mxUtils.bind(this, function(failOnAuth)
 			{
 				try
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS.js
index 96d48796a4353ea6a1e02c7db0be59d03f373a9a..189ef93d0265c47766308de0341ed21bd76b8215 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS.js
@@ -682,14 +682,14 @@
 		
 		this.addPaletteFunctions('aws2Groups', 'AWS / Groups', false,
 		[
-			this.createVertexTemplateEntry(s + 'auto_scaling_group;fillColor=none;strokeColor=#000000;gradientColor=none;', 
+			this.createVertexTemplateEntry(s + 'auto_scaling_group;fillColor=none;gradientColor=none;', 
 					200, 200, '', 'Auto Scaling Group', null, null, this.getTagsForStencil(gn, 'auto_scaling_group', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'availability_zone;strokeColor=#f69721;fillColor=none;gradientColor=none;', 
 					200, 200, '', 'Availability Zone', null, null, this.getTagsForStencil(gn, 'availability_zone', dt).join(' ')),
 					
 			this.addEntry(dt + 'cloud', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;');
+				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;gradientColor=none;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(10, 0, 70, 40), s + 'aws_cloud_icon;strokeColor=none;fillColor=#F69721;gradientColor=none;');
 				bg2.vertex = true;
@@ -699,7 +699,7 @@
 									
 			this.addEntry(dt + 'corporate data center', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), s + 'rrect;fillColor=none;gradientColor=none;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 30, 40), s + 'corporate_data_center_icon;strokeColor=none;fillColor=#6D6F70;gradientColor=none;');
 				bg2.vertex = true;
@@ -709,7 +709,7 @@
 													
 			this.addEntry(dt + 'ec2 instance content', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), s + 'rrect;fillColor=none;gradientColor=none;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 40, 40), s + 'rrect;strokeColor=none;fillColor=#F69721;gradientColor=none;');
 				bg2.vertex = true;
@@ -719,7 +719,7 @@
 															
 			this.addEntry(dt + 'EC2 Spot Fleet', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;');
+				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;gradientColor=none;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 43, 40), s + 'ec2_spot_instance;strokeColor=none;gradientColor=none;');
 				bg2.vertex = true;
@@ -729,7 +729,7 @@
 
 			this.addEntry(dt + 'elastic beanstalk container', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), s + 'rrect;fillColor=none;gradientColor=none;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 40, 40), s + 'elastic_beanstalk_container_icon;strokeColor=none;fillColor=#2A6A35;gradientColor=none;');
 				bg2.vertex = true;
@@ -737,16 +737,16 @@
 			   	return sb.createVertexTemplateFromCells([bg1, bg2], 200, 220, 'Elastic Beanstalk Container');
 			}),
 																	
-			this.createVertexTemplateEntry(s + 'region;strokeColor=#000000;fillColor=none;gradientColor=none;', 
+			this.createVertexTemplateEntry(s + 'region;fillColor=none;gradientColor=none;', 
 					200, 200, '', 'Region', null, null, this.getTagsForStencil(gn, 'region', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;', 
+			this.createVertexTemplateEntry(s + 'rrect;fillColor=none;gradientColor=none;', 
 					200, 200, '', 'Security Group', null, null, this.getTagsForStencil(gn, 'security', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'rrect;fillColor=#F2F2F2;strokeColor=#000000;gradientColor=none;', 
+			this.createVertexTemplateEntry(s + 'rrect;fillColor=#F2F2F2;gradientColor=none;', 
 					200, 200, '', 'Server Contents', null, null, this.getTagsForStencil(gn, 'server content', dt).join(' ')),
 
 			this.addEntry(dt + 'virtual private cloud', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;');
+				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;gradientColor=none;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(10, 0, 70, 40), s + 'virtual_private_cloud_icon;strokeColor=none;fillColor=#282560;gradientColor=none;');
 				bg2.vertex = true;
@@ -756,7 +756,7 @@
 										
 			this.addEntry(dt + 'virtual private cloud subnet vpc', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;');
+				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;gradientColor=none;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 40, 40), s + 'vpc_subnet_icon;strokeColor=none;fillColor=#282560;gradientColor=none;');
 				bg2.vertex = true;
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS3.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS3.js
index 16329c6ef0aa419e4f63669368475b2879d4cd41..951e3ef0e159398c339025f04b94bdfa1984024a 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS3.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS3.js
@@ -207,7 +207,7 @@
 					 
 			 this.addEntry(dt + 'Spot Fleet', function()
              {
-				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), 'rounded=1;fillColor=none;strokeColor=#000000;gradientColor=none;arcSize=10;dashed=1;');
+				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), 'rounded=1;fillColor=none;gradientColor=none;arcSize=10;dashed=1;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 43, 40), n + 'spot_instance;fillColor=#F58534;strokeColor=none;gradientColor=none;');
 				bg2.vertex = true;
@@ -466,18 +466,18 @@
 		
 		this.addPaletteFunctions('aws3Groups', 'AWS17 / Groups', false,
 		[
-			 this.createVertexTemplateEntry('rounded=1;arcSize=10;dashed=1;strokeColor=#000000;fillColor=none;gradientColor=none;dashPattern=8 3 1 3;strokeWidth=2;',
+			 this.createVertexTemplateEntry('rounded=1;arcSize=10;dashed=1;fillColor=none;gradientColor=none;dashPattern=8 3 1 3;strokeWidth=2;',
 					 s * 133, s * 133, '', 'Auto Scaling Group', null, null, this.getTagsForStencil(gn, 'auto scaling group', dt).join(' ')),
 			 this.createVertexTemplateEntry('rounded=1;arcSize=10;dashed=1;strokeColor=#F59D56;fillColor=none;gradientColor=none;dashPattern=8 4;strokeWidth=2;',
 					 s * 133, s * 133, '', 'Availability Zone', null, null, this.getTagsForStencil(gn, 'availability zone', dt).join(' ')),
-			 this.createVertexTemplateEntry('rounded=1;arcSize=10;dashed=1;strokeColor=#000000;fillColor=none;gradientColor=none;dashPattern=1 1;strokeWidth=2;',
+			 this.createVertexTemplateEntry('rounded=1;arcSize=10;dashed=1;fillColor=none;gradientColor=none;dashPattern=1 1;strokeWidth=2;',
 					 s * 133, s * 133, '', 'Region', null, null, this.getTagsForStencil(gn, 'region', dt).join(' ')),
 			 this.createVertexTemplateEntry('rounded=1;arcSize=10;dashed=1;strokeColor=#ff0000;fillColor=none;gradientColor=none;dashPattern=8 4;strokeWidth=2;',
 					 s * 133, s * 133, '', 'Security Group', null, null, this.getTagsForStencil(gn, 'security group', dt).join(' ')),
 					 
 				 this.addEntry(dt + 'elastic beanstalk container', function()
 			 {
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 30, 41), n + 'elastic_beanstalk;fillColor=#F58536;gradientColor=none;dashed=0;');
 				bg2.vertex = true;
@@ -487,7 +487,7 @@
 			 
 				 this.addEntry(dt + 'ec2 instance container', function()
 			 {
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 40, 41), n + 'instance;fillColor=#F58536;gradientColor=none;dashed=0;');
 				bg2.vertex = true;
@@ -497,7 +497,7 @@
 	
 				 this.addEntry(dt + 'vpc subnet', function()
 			 {
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 30, 35), n + 'permissions;fillColor=#D9A741;gradientColor=none;dashed=0;');
 				bg2.vertex = true;
@@ -510,7 +510,7 @@
 			 
 			 this.addEntry(dt + 'virtual private cloud', function()
 			 {
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 52, 36), n + 'virtual_private_cloud;fillColor=#F58536;gradientColor=none;dashed=0;');
 				bg2.vertex = true;
@@ -520,7 +520,7 @@
 	
 			 this.addEntry(dt + 'cloud', function()
 			 {
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 52, 36), n + 'cloud;fillColor=#F58536;gradientColor=none;dashed=0;');
 				bg2.vertex = true;
@@ -530,7 +530,7 @@
 			 
 			 this.addEntry(dt + 'corporate data center', function()
 			 {
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 30, 42), n + 'corporate_data_center;fillColor=#7D7C7C;gradientColor=none;dashed=0;');
 				bg2.vertex = true;
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS3D.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS3D.js
index 767e33b7c032a7d9644f54155c6af53972a32859..aeee61f5e0a028e0d22ef1cd477515206dcc87f5 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS3D.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS3D.js
@@ -29,9 +29,9 @@
 					w * 0.308, h * 0.706, '', 'Content', null, null, this.getTagsForStencil(gn, 'content', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'customerGateway;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;', 
 					w * 1.167, h * 1.028, '', 'Customer Gateway', null, null, this.getTagsForStencil(gn, 'customer gateway', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'dataCenter;fillColor=#ffffff;strokeColor=#5E5E5E;aspect=fixed;', 
+			this.createVertexTemplateEntry(s + 'dataCenter;strokeColor=#5E5E5E;aspect=fixed;', 
 					w * 1.23, h * 1.42, '', 'Data Center', null, null, this.getTagsForStencil(gn, 'data center', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'dataServer;fillColor=#ffffff;strokeColor=#5E5E5E;aspect=fixed;', 
+			this.createVertexTemplateEntry(s + 'dataServer;strokeColor=#5E5E5E;aspect=fixed;', 
 					w * 1.23, h * 1.06, '', 'Data Server', null, null, this.getTagsForStencil(gn, 'data server', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'decider;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;', 
 					w * 0.74, h * 0.5, '', 'Decider', null, null, this.getTagsForStencil(gn, 'decider', dt).join(' ')),
@@ -62,11 +62,11 @@
 		   		return sb.createVertexTemplateFromCells([bg1, bg2, bg3, bg4], 264, 204, 'Elasticache');
 			}),
 	
-			this.createVertexTemplateEntry(s + 'email;aspect=fixed;strokeColor=#292929;fillColor=#ffffff;', 
+			this.createVertexTemplateEntry(s + 'email;aspect=fixed;strokeColor=#292929;', 
 					w * 0.43, h * 0.57, '', 'Email', null, null, this.getTagsForStencil(gn, 'email', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'email_service;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;', 
 					w * 1.51, h * 1.92, '', 'Email Service', null, null, this.getTagsForStencil(gn, 'email service', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'file;aspect=fixed;strokeColor=#292929;fillColor=#ffffff;', 
+			this.createVertexTemplateEntry(s + 'file;aspect=fixed;strokeColor=#292929;', 
 					w * 0.308, h * 0.706, '', 'File', null, null, this.getTagsForStencil(gn, 'file', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'glacier;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;', 
 					w * 1.81, h * 1.92, '', 'Glacier', null, null, this.getTagsForStencil(gn, 'glacier', dt).join(' ')),
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-Android.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-Android.js
index 2a8c8fd4c236be83806a2e4c2621ea6dfe0b02a3..372257ac1c6f9c9c117a17c191a4f4c2435aad18 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-Android.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-Android.js
@@ -22,13 +22,13 @@
 
 		var fns =
 		[
-			this.createVertexTemplateEntry(s2 + 'phone2;fillColor=#ffffff;strokeColor=#c0c0c0;', 
+			this.createVertexTemplateEntry(s2 + 'phone2;strokeColor=#c0c0c0;', 
 					200, 390, '', 'Phone', null, null, dt + 'phone mobile portrait'),
-			this.createVertexTemplateEntry(s2 + 'phone2;fillColor=#ffffff;strokeColor=#c0c0c0;direction=south;', 
+			this.createVertexTemplateEntry(s2 + 'phone2;strokeColor=#c0c0c0;direction=south;', 
 					390, 200, '', 'Phone (landscape)', null, null, dt + 'phone mobile landscape'),
-			this.createVertexTemplateEntry(s2 + 'tab2;fillColor=#ffffff;strokeColor=#c0c0c0;', 
+			this.createVertexTemplateEntry(s2 + 'tab2;strokeColor=#c0c0c0;', 
 					472, 686, '', 'Tab', null, null, dt + 'tab tablet portrait'),
-			this.createVertexTemplateEntry(s2 + 'tab2;fillColor=#ffffff;strokeColor=#c0c0c0;direction=north;', 
+			this.createVertexTemplateEntry(s2 + 'tab2;strokeColor=#c0c0c0;direction=north;', 
 					686, 472, '', 'Tab (landscape)', null, null, dt + 'tab tablet landscape'),
 			this.createVertexTemplateEntry(s + 'action_bar;fillColor=#1A1A1A;strokeColor=#c0c0c0;strokeWidth=2;fontColor=#FFFFFF;', 
 					185, 30, '', 'Action Bar', null, null, dt + 'action bar dark portrait'),
@@ -61,7 +61,7 @@
 					
 			this.addEntry(dt + 'checkboxes checkbox', function()
 			{
-			   	var bg = new mxCell('', new mxGeometry(0, 0, 165, 50), s7 + 'transparent;strokeColor=#33b5e5;fillColor=#ffffff');
+			   	var bg = new mxCell('', new mxGeometry(0, 0, 165, 50), s7 + 'transparent;strokeColor=#33b5e5');
 			   	bg.vertex = true;
 			   	var button1 = new mxCell('Setting 1', new mxGeometry(0, 0, 165, 12.5), inh + 'shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;');
 			   	button1.vertex = true;
@@ -105,7 +105,7 @@
 				
 			this.addEntry(dt + 'radiobuttons radiobutton', function()
 			{
-			   	var bg = new mxCell('', new mxGeometry(0, 0, 165, 50), s7 + 'transparent;strokeColor=#33b5e5;fillColor=#ffffff;');
+			   	var bg = new mxCell('', new mxGeometry(0, 0, 165, 50), s7 + 'transparent;strokeColor=#33b5e5');
 			   	bg.vertex = true;
 			   	var button1 = new mxCell('Option 1', new mxGeometry(0, 0, 165, 12.5), inh + 'shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;');
 			   	button1.vertex = true;
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-ArchiMate3.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-ArchiMate3.js
index 458fb4ba690b1a22a0ca388088599fbbf927f18a..393d6954201f435e7aba4758212ea28aeb433957 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-ArchiMate3.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-ArchiMate3.js
@@ -16,7 +16,7 @@
 	
 	Sidebar.prototype.addArchimate3ApplicationPalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -76,8 +76,8 @@
 
 	Sidebar.prototype.addArchimate3BusinessPalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.';
-		var am3 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.';
+		var am3 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -147,7 +147,7 @@
 
 	Sidebar.prototype.addArchimate3CompositePalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFB973;strokeColor=#000000;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFB973;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -176,8 +176,8 @@
 	
 	Sidebar.prototype.addArchimate3ImplementationAndMigrationPalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFE0E0;strokeColor=#000000;shape=mxgraph.archimate3.';
-		var am3 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#E0FFE0;strokeColor=#000000;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFE0E0;shape=mxgraph.archimate3.';
+		var am3 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#E0FFE0;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -214,7 +214,7 @@
 	
 	Sidebar.prototype.addArchimate3MotivationPalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -232,9 +232,9 @@
 					w * 150, h * 75, '', 'Driver', null, null, this.getTagsForStencil(gn, '', dt + 'driver').join(' ')),
 			this.createVertexTemplateEntry(am2 + 'application;appType=assess;archiType=oct;', 
 					w * 150, h * 75, '', 'Assesment', null, null, this.getTagsForStencil(gn, '', dt + 'assessment').join(' ')),
-			this.createVertexTemplateEntry('shape=ellipse;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;perimeter=ellipsePerimeter;', 
+			this.createVertexTemplateEntry('shape=ellipse;html=1;whiteSpace=wrap;fillColor=#CCCCFF;perimeter=ellipsePerimeter;', 
 					w * 150, h * 75, '', 'Value', null, null, this.getTagsForStencil(gn, '', dt + 'value').join(' ')),
-			this.createVertexTemplateEntry('shape=cloud;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;', 
+			this.createVertexTemplateEntry('shape=cloud;html=1;whiteSpace=wrap;fillColor=#CCCCFF;', 
 					w * 150, h * 75, '', 'Meaning', null, null, this.getTagsForStencil(gn, '', dt + 'meaning').join(' ')),
 			this.createVertexTemplateEntry(am2 + 'application;appType=goal;archiType=oct;', 
 					w * 150, h * 75, '', 'Goal', null, null, this.getTagsForStencil(gn, '', dt + 'goal').join(' ')),
@@ -263,7 +263,7 @@
 	
 	Sidebar.prototype.addArchimate3PhysicalPalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -346,9 +346,9 @@
 					w * 160, 0, '', 'Specialization', null, this.getTagsForStencil(gn, '', dt + 'specialization').join(' ')),
 			this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;html=1;endArrow=none;elbow=vertical;',
 					w * 160, 0, '', 'Association', null, this.getTagsForStencil(gn, '', dt + 'association').join(' ')),
-			this.createVertexTemplateEntry('ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#000000;strokeColor=#000000;', 
+			this.createVertexTemplateEntry('ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#000000', 
 					10, 10, '', 'And Junction', null, this.getTagsForStencil(gn, '', dt + 'junction').join(' ')),
-			this.createVertexTemplateEntry('ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#ffffff;strokeColor=#000000;', 
+			this.createVertexTemplateEntry('ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#ffffff', 
 					10, 10, '', 'Or Junction', null, this.getTagsForStencil(gn, '', dt + 'junction').join(' '))
 		];
 			
@@ -363,7 +363,7 @@
 	
 	Sidebar.prototype.addArchimate3StrategyPalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -394,7 +394,7 @@
 	
 	Sidebar.prototype.addArchimate3TechnologyPalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -468,10 +468,4 @@
 					}
 		}));
 	};
-	
-	
-	
-	
-	
-	
 })();
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-Atlassian.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-Atlassian.js
index 7aab2b0d037941f355c118278a5a35bd5dfb99ae..4acebde8a351e3f71661c6157f5896e2b7d7fdeb 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-Atlassian.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-Atlassian.js
@@ -273,9 +273,9 @@
 			this.addDataEntry(dt + 'button grouped group responsive', 551, 104, 'Button (grouped, responsive)',
 				'7Vnfj6IwEP5reLwNbYXFx9PTvZdLLrmHeyYySrOFmrbu6v3110JB2S4urj9wjSaYzpRph+9rZ4bikXG2fhLxMv3FE2AemXhkLDhXZStbj4ExD/s08cgPD2NfXx6etvSiotdfxgJy1cUAlwYvMVtBqSkVUm2YVUgl+DP8pYlKtQJ5ZCTTOOGvWvC1kMQyhcQKMaOLXLdnenoQWpGqjG2tlmbIbL0wj/uQ8dnzavkgBMy0qyPxh/4z3ciMM6eMjTnjonCBTNEUTwdmjMKXnZ558at7Ki+rxwKhYN0KTaGyuDwBz0CJjb7l1Q5i4CElfH4KdJFaM0JKXSxLeVGbboHWDYv1+7gTB/fvUhrsLow+g7karZTiuUMBz1UlYyvvAB8Mw8eovs/6+5a6nOdwEGvaB5B60p8V3Mb1TlziD7kM91ApgMWKvkBj+GP4HbTy6yuu/zJwmBZ8lSc1lzcH//AU8NsZfnOqJ8b+uslsZcHncwnKoav2qxODgcPgmGeZeeBLB0iD1y3v0abBzpKJzrdkvkXnWDPhPZu2sYsD3+EXofA82fXxnl1Pu3PD68quUf/77GaCcgu1rUE52LNnjw3K1dgnDcrDDovFkqwN6VKCGzJr0pqMWJrq5dIF72g/3rbs2FiROPi/A3/YDnTXHYX8r4QS7gsl9JVQIn2hdD9UaOckCi9XBqH7KcOJkyW6smMG5J4z3FglpO8b4ACHk54Zvp16CLknG4cnsTfIH5PEyjV8fRVRl5f564Gpt5LIfde+Zph6q4ncV9ZJQs1ep1JqjZmDFEFzp9nXgWOH4ulTMfmDfFBbNvPB8UXXYBA2WCeRW4P5wTu8H068Frcf78rgvPtt7z8='),
 			
-			this.createVertexTemplateEntry(s + 'checkbox_2;fillColor=#0057D8;strokeColor=none;fontColor=#000000;align=left;verticalAlign=middle;fontStyle=0;fontSize=12;labelPosition=right;verticalLabelPosition=middle;spacingLeft=10', 
+			this.createVertexTemplateEntry(s + 'checkbox_2;fillColor=#0057D8;strokeColor=none;align=left;verticalAlign=middle;fontStyle=0;fontSize=12;labelPosition=right;verticalLabelPosition=middle;spacingLeft=10', 
 					12, 12, 'Text', 'Checkbox (on)', null, null, this.getTagsForStencil(gn, '', dt + 'checkbox on').join(' ')),
-			this.createVertexTemplateEntry('rounded=1;fillColor=#F0F2F5;strokeColor=#D8DCE3;fontColor=#000000;align=left;verticalAlign=middle;fontStyle=0;fontSize=12;labelPosition=right;verticalLabelPosition=middle;spacingLeft=10;html=1;shadow=0;dashed=0', 
+			this.createVertexTemplateEntry('rounded=1;fillColor=#F0F2F5;strokeColor=#D8DCE3;align=left;verticalAlign=middle;fontStyle=0;fontSize=12;labelPosition=right;verticalLabelPosition=middle;spacingLeft=10;html=1;shadow=0;dashed=0', 
 					12, 12, 'Text', 'Checkbox (off)', null, null, this.getTagsForStencil(gn, '', dt + 'checkbox on').join(' ')),
 			this.addDataEntry(dt + 'checkbox group', 150, 173, 'Checkbox group',
 				'7VfdbpswFH4abisDIWGXLYTepNKkPsDk2AewYmxkOy3Z08+ASTOcTu2yRqtUJCSfX3O+7/iHIM6a7l7htn6QFHgQr4M4U1KacdR0GXAeRIjRIM6DKEL2DaLiFWs4WFGLFQjzloBoDHjCfA+j5hE4EAPUaoksSwA9umhz4M6lZJxnkktlRSGF1d5po+QOZspSCvPIfvZRYTjJLk0vY84qYcccSuPMU4YgipNvy1WK3PeBMtC9WuOgcgXeg2zAqIN1eWbU1M4jcZlqYFXtwhw2COtRro6hL4jZgQPtPICxB+Batwq0lh5sSu4FBeqKPwXRVlugIioSD0lrydM8W8c+Pmh4fBh7rBjB/NapG0Yphxn8aEaPhe+O4y3w71Izw2QfqEakjgk3M/sxsW4xYaLaDPPnYZ+7Ng13heoaU/ns5qRY1wMEFxE7BbgkB0eFE09pj3zWJ90lrC881jPctntiYfB5fwMWg6Xt/Zuu6jeDG2w41pphcUNqILut7H5EftcglKzy9E/r73M0zD/vhSS5Wi8kXi8UHJt+7poZ+OqG/6Ab0uvtDEuvGzZSVFaz5Zjsvs6EK58JIbreRrDyqL+l9H2Mv2sFl8NzQjaxGIH6W7oXH07RxMnCX47LM9ezOL6ck/TMQS2IvWdfcqf1L6mfhwMXsJotk4+jxIovvzOD7be/nV8='),
@@ -314,27 +314,27 @@
 			   	item2.vertex = true;
 		   		return sb.createVertexTemplateFromCells([icon1, item1, item2], 230, 63, 'Inline message with subtitle');
 			}),
-			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#DFE1E6;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#42526E',
+			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;strokeColor=#DFE1E6;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#42526E',
 				 70, 20, 'DEFAULT', 'Lozenge (state, subtle)', null, null, this.getTagsForStencil(gn, 'lozenge', dt).join(' ')),
 			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;fillColor=#DFE1E6;strokeColor=#DFE1E6;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#42526E',
 				 70, 20, 'DEFAULT', 'Lozenge (state, bold)', null, null, this.getTagsForStencil(gn, 'lozenge', dt).join(' ')),
-			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#008364;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#008364',
+			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;strokeColor=#008364;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#008364',
 				 70, 20, 'SUCCESS', 'Lozenge (success, subtle)', null, null, this.getTagsForStencil(gn, 'lozenge', dt).join(' ')),
 			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;fillColor=#008364;strokeColor=#008364;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#ffffff',
 				 70, 20, 'SUCCESS', 'Lozenge (success, bold)', null, null, this.getTagsForStencil(gn, 'lozenge', dt).join(' ')),
-			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#BA3200;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#BA3200',
+			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;strokeColor=#BA3200;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#BA3200',
 				 70, 20, 'REMOVED', 'Lozenge (problem, subtle)', null, null, this.getTagsForStencil(gn, 'lozenge', dt).join(' ')),
 			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;fillColor=#BA3200;strokeColor=#BA3200;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#ffffff',
 				 70, 20, 'REMOVED', 'Lozenge (problem, bold)', null, null, this.getTagsForStencil(gn, 'lozenge', dt).join(' ')),
-			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#0057D8;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#0057D8',
+			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;strokeColor=#0057D8;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#0057D8',
 				 100, 20, 'IN PROGRESS', 'Lozenge (current, subtle)', null, null, this.getTagsForStencil(gn, 'lozenge', dt).join(' ')),
 			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;fillColor=#0057D8;strokeColor=#0057D8;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#ffffff',
 				 100, 20, 'IN PROGRESS', 'Lozenge (current, bold)', null, null, this.getTagsForStencil(gn, 'lozenge', dt).join(' ')),
-			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#6554C0;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#6554C0',
+			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;strokeColor=#6554C0;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#6554C0',
 				 50, 20, 'NEW', 'Lozenge (new, subtle)', null, null, this.getTagsForStencil(gn, 'lozenge', dt).join(' ')),
 			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;fillColor=#6554C0;strokeColor=#6554C0;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#ffffff',
 				 50, 20, 'NEW', 'Lozenge (new, bold)', null, null, this.getTagsForStencil(gn, 'lozenge', dt).join(' ')),
-			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#FFAB00;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#42526E',
+			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;strokeColor=#FFAB00;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#42526E',
 				 60, 20, 'MOVED', 'Lozenge (moved, subtle)', null, null, this.getTagsForStencil(gn, 'lozenge', dt).join(' ')),
 			this.createVertexTemplateEntry('dashed=0;html=1;rounded=1;fillColor=#FFAB00;strokeColor=#FFAB00;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#42526E',
 				 60, 20, 'MOVED', 'Lozenge (moved, bold)', null, null, this.getTagsForStencil(gn, 'lozenge', dt).join(' ')),
@@ -342,13 +342,13 @@
 	   		{
 			   	var item1 = new mxCell('Yeah, progress!', new mxGeometry(0, 0, 120, 20), 'dashed=0;html=1;rounded=1;fillColor=#172B4D;strokeColor=#172B4D;fontSize=12;align=center;fontStyle=0;strokeWidth=2;fontColor=#ffffff');
 			   	item1.vertex = true;
-			   	var item2 = new mxCell('IN PROGRESS', new mxGeometry(10, 30, 100, 20), 'dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#0057D8;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#0057D8');
+			   	var item2 = new mxCell('IN PROGRESS', new mxGeometry(10, 30, 100, 20), 'dashed=0;html=1;rounded=1;strokeColor=#0057D8;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#0057D8');
 			   	item2.vertex = true;
 		   		return sb.createVertexTemplateFromCells([item1, item2], 120, 50, 'Lozenge (tooltip)');
 			}),
 			this.addEntry(dt + 'inline message subtitle', function()
 	   		{
-			   	var item1 = new mxCell('SUCCESS', new mxGeometry(25, 0, 70, 20), 'dashed=0;html=1;rounded=1;fillColor=#FFFFFF;strokeColor=#008364;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#008364');
+			   	var item1 = new mxCell('SUCCESS', new mxGeometry(25, 0, 70, 20), 'dashed=0;html=1;rounded=1;strokeColor=#008364;fontSize=12;align=center;fontStyle=1;strokeWidth=2;fontColor=#008364');
 			   	item1.vertex = true;
 			   	var item2 = new mxCell("Don't stop believin'", new mxGeometry(0, 30, 120, 20), 'dashed=0;html=1;rounded=1;fillColor=#172B4D;strokeColor=#172B4D;fontSize=12;align=center;fontStyle=0;strokeWidth=2;fontColor=#ffffff');
 			   	item2.vertex = true;
@@ -425,7 +425,7 @@
 	   		{
 			   	var item1 = new mxCell('Name<sup><font color="#ff0000">*</font></sup>', new mxGeometry(0, 0, 240, 20), 'fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11');
 			   	item1.vertex = true;
-			   	var item2 = new mxCell('Messina Cake', new mxGeometry(0, 25, 290, 33), 'rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontColor=#000000;fontSize=12');
+			   	var item2 = new mxCell('Messina Cake', new mxGeometry(0, 25, 290, 33), 'rounded=1;arcSize=9;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontSize=12');
 			   	item2.vertex = true;
 		   		return sb.createVertexTemplateFromCells([item1, item2], 290, 58, 'Text field');
 			}),
@@ -433,7 +433,7 @@
 	   		{
 			   	var item1 = new mxCell('Password<sup><font color="#ff0000">*</font></sup>', new mxGeometry(0, 0, 240, 20), 'fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11');
 			   	item1.vertex = true;
-			   	var item2 = new mxCell('&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;', new mxGeometry(0, 25, 290, 33), 'rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontColor=#000000;fontSize=12');
+			   	var item2 = new mxCell('&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;', new mxGeometry(0, 25, 290, 33), 'rounded=1;arcSize=9;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontSize=12');
 			   	item2.vertex = true;
 		   		return sb.createVertexTemplateFromCells([item1, item2], 290, 58, 'Password field');
 			}),
@@ -441,7 +441,7 @@
 	   		{
 			   	var item1 = new mxCell('Project name', new mxGeometry(0, 0, 240, 20), 'fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11');
 			   	item1.vertex = true;
-			   	var item2 = new mxCell('Watermelon Squad', new mxGeometry(0, 25, 290, 33), 'rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontColor=#000000;fontSize=12');
+			   	var item2 = new mxCell('Watermelon Squad', new mxGeometry(0, 25, 290, 33), 'rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontSize=12');
 			   	item2.vertex = true;
 		   		return sb.createVertexTemplateFromCells([item1, item2], 290, 58, 'Compact text field');
 			}),
@@ -449,7 +449,7 @@
 	   		{
 			   	var item1 = new mxCell('Project name', new mxGeometry(0, 0, 240, 20), 'fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11');
 			   	item1.vertex = true;
-			   	var item2 = new mxCell('Watermelon Squad', new mxGeometry(0, 25, 290, 40), 'rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontColor=#000000;fontSize=12');
+			   	var item2 = new mxCell('Watermelon Squad', new mxGeometry(0, 25, 290, 40), 'rounded=1;arcSize=9;fillColor=#F7F8F9;align=left;spacingLeft=5;strokeColor=#DEE1E6;html=1;strokeWidth=2;fontSize=12');
 			   	item2.vertex = true;
 		   		return sb.createVertexTemplateFromCells([item1, item2], 290, 65, 'Text field');
 			}),
@@ -457,7 +457,7 @@
 	   		{
 			   	var item1 = new mxCell('Location', new mxGeometry(0, 0, 240, 20), 'fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11');
 			   	item1.vertex = true;
-			   	var item2 = new mxCell('', new mxGeometry(0, 25, 290, 33), 'rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontColor=#000000;fontSize=12');
+			   	var item2 = new mxCell('', new mxGeometry(0, 25, 290, 33), 'rounded=1;arcSize=9;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontSize=12');
 			   	item2.vertex = true;
 		   		return sb.createVertexTemplateFromCells([item1, item2], 290, 58, 'Compact text field');
 			}),
@@ -465,7 +465,7 @@
 	   		{
 			   	var item1 = new mxCell('Location', new mxGeometry(0, 0, 240, 20), 'fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11');
 			   	item1.vertex = true;
-			   	var item2 = new mxCell('', new mxGeometry(0, 25, 290, 40), 'rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontColor=#000000;fontSize=12');
+			   	var item2 = new mxCell('', new mxGeometry(0, 25, 290, 40), 'rounded=1;arcSize=9;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontSize=12');
 			   	item2.vertex = true;
 		   		return sb.createVertexTemplateFromCells([item1, item2], 290, 65, 'Text field');
 			}),
@@ -497,10 +497,10 @@
 	   		{
 			   	var item1 = new mxCell('Selected help', new mxGeometry(0, 0, 240, 20), 'fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11');
 			   	item1.vertex = true;
-			   	var item2 = new mxCell('', new mxGeometry(0, 25, 290, 33), 'rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontColor=#000000;fontSize=12');
+			   	var item2 = new mxCell('', new mxGeometry(0, 25, 290, 33), 'rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontSize=12');
 			   	item2.vertex = true;
 			   	var item3 = new mxCell('<b>Not great</b><div>The best password is hard to guess. Try again.</div>', new mxGeometry(300, 0, 180, 80), 
-			   			'html=1;rounded=1;fillColor=#ffffff;strokeColor=#DFE1E5;fontSize=12;align=left;fontColor=#000000;shadow=1;arcSize=1;whiteSpace=wrap;verticalAlign=top;spacingLeft=15;spacingRight=15;spacingTop=10');
+			   			'html=1;rounded=1;strokeColor=#DFE1E5;fontSize=12;align=left;shadow=1;arcSize=1;whiteSpace=wrap;verticalAlign=top;spacingLeft=15;spacingRight=15;spacingTop=10');
 			   	item3.vertex = true;
 		   		return sb.createVertexTemplateFromCells([item1, item2, item3], 480, 80, 'Text field with tooltip');
 			}),
@@ -567,7 +567,7 @@
 	   		{
 			   	var item1 = new mxCell('Email', new mxGeometry(0, 0, 240, 20), 'fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11');
 			   	item1.vertex = true;
-			   	var item2 = new mxCell('shrugg#atlassian.com', new mxGeometry(0, 25, 300, 40), 'rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#FFAB00;html=1;strokeWidth=2;fontColor=#000000;fontSize=12');
+			   	var item2 = new mxCell('shrugg#atlassian.com', new mxGeometry(0, 25, 300, 40), 'rounded=1;arcSize=9;align=left;spacingLeft=5;strokeColor=#FFAB00;html=1;strokeWidth=2;fontSize=12');
 			   	item2.vertex = true;
 			   	var item3 = new mxCell('', new mxGeometry(1, 0.5, 20, 20), 'shape=mxgraph.azure.azure_alert;fillColor=#FFAB00;strokeColor=none;html=1');
 			   	item3.geometry.relative = true;
@@ -580,14 +580,14 @@
 	   		{
 			   	var item1 = new mxCell('Email', new mxGeometry(0, 0, 240, 20), 'fillColor=none;strokeColor=none;html=1;fontSize=11;fontStyle=0;align=left;fontColor=#596780;fontStyle=1;fontSize=11');
 			   	item1.vertex = true;
-			   	var item2 = new mxCell('shrugg#atlassian.com', new mxGeometry(0, 25, 300, 40), 'rounded=1;arcSize=9;fillColor=#ffffff;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontColor=#000000;fontSize=12');
+			   	var item2 = new mxCell('shrugg#atlassian.com', new mxGeometry(0, 25, 300, 40), 'rounded=1;arcSize=9;align=left;spacingLeft=5;strokeColor=#4C9AFF;html=1;strokeWidth=2;fontSize=12');
 			   	item2.vertex = true;
 			   	var item3 = new mxCell('', new mxGeometry(1, 0.5, 20, 20), 'shape=mxgraph.azure.azure_alert;fillColor=#FFAB00;strokeColor=none;html=1');
 			   	item3.geometry.relative = true;
 			   	item3.geometry.offset = new mxPoint(-30, -10);
 			   	item3.vertex = true;
 			   	item2.insert(item3);
-			   	var item4 = new mxCell('Please enter a valid address.', new mxGeometry(310, 22, 200, 46), 'rounded=1;arcSize=9;fillColor=#ffffff;align=center;strokeColor=#DFE1E5;html=1;strokeWidth=1;fontColor=#000000;fontSize=12;shadow=1');
+			   	var item4 = new mxCell('Please enter a valid address.', new mxGeometry(310, 22, 200, 46), 'rounded=1;arcSize=9;align=center;strokeColor=#DFE1E5;html=1;strokeWidth=1;fontSize=12;shadow=1');
 			   	item4.vertex = true;
 		   		return sb.createVertexTemplateFromCells([item1, item2, item4], 290, 58, 'Error message field');
 			})
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-Basic.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-Basic.js
index af1ee6ee4e5a93137a9a479e9a3152272ed1b930..4ef63f2a712fb9453feef06af03304479acb4126 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-Basic.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-Basic.js
@@ -12,7 +12,7 @@
 		
 		this.addPaletteFunctions('basic', mxResources.get('basic'), false,
 		[
-			this.createVertexTemplateEntry(s2 + 'rect;fillColor=#ffffff;fillColor2=none;strokeColor=#000000;strokeWidth=1;size=20;indent=5;', 120, 60, '', 'Partial Rectangle'),
+			this.createVertexTemplateEntry(s2 + 'rect;fillColor2=none;strokeWidth=1;size=20;indent=5;', 120, 60, '', 'Partial Rectangle'),
 			this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;top=0;bottom=0;fillColor=none;', 120, 60, '', 'Partial Rectangle'),
 			this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;right=0;top=0;bottom=0;fillColor=none;routingCenterX=-0.5;', 120, 60, '', 'Partial Rectangle'),
 			this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;bottom=0;right=0;fillColor=none;', 120, 60, '', 'Partial Rectangle'),
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-Bootstrap.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-Bootstrap.js
index a3a30c80ec75142251a31153b0d8402075e6172a..e745d76cb2e52fe43893efaba9ba22501df1f45f 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-Bootstrap.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-Bootstrap.js
@@ -91,7 +91,7 @@
 
 		   	this.addEntry(dt + 'dropdown large', function()
 	   		{
-			   	var bg = new mxCell('Dropdown', new mxGeometry(0, 0, 140, 40), s + 'rrect;rSize=5;strokeColor=#dddddd;spacingRight=10;fontSize=16;whiteSpace=wrap;fillColor=#ffffff;align=center;');
+			   	var bg = new mxCell('Dropdown', new mxGeometry(0, 0, 140, 40), s + 'rrect;rSize=5;strokeColor=#dddddd;spacingRight=10;fontSize=16;whiteSpace=wrap;align=center;');
 			   	bg.vertex = true;
 			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;');
 			   	marker1.geometry.relative = true;
@@ -104,7 +104,7 @@
 		    
 		   	this.addEntry(dt + 'dropdown normal', function()
 	   		{
-			   	var bg = new mxCell('Dropdown', new mxGeometry(0, 0, 120, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;spacingRight=10;fontSize=14;whiteSpace=wrap;fillColor=#ffffff;align=center;');
+			   	var bg = new mxCell('Dropdown', new mxGeometry(0, 0, 120, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;spacingRight=10;fontSize=14;whiteSpace=wrap;align=center;');
 			   	bg.vertex = true;
 			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;');
 			   	marker1.geometry.relative = true;
@@ -117,7 +117,7 @@
 		    
 		   	this.addEntry(dt + 'dropdown small', function()
 	   		{
-			   	var bg = new mxCell('Dropdown', new mxGeometry(0, 0, 100, 22), s + 'rrect;fontSize=12;rSize=5;strokeColor=#dddddd;spacingRight=10;perimeter=none;whiteSpace=wrap;fillColor=#ffffff;align=center;');
+			   	var bg = new mxCell('Dropdown', new mxGeometry(0, 0, 100, 22), s + 'rrect;fontSize=12;rSize=5;strokeColor=#dddddd;spacingRight=10;perimeter=none;whiteSpace=wrap;align=center;');
 			   	bg.vertex = true;
 			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;');
 			   	marker1.geometry.relative = true;
@@ -130,7 +130,7 @@
 		    
 		   	this.addEntry(dt + 'dropdown tiny', function()
 	   		{
-			   	var bg = new mxCell('Dropdown', new mxGeometry(0, 0, 90, 20), s + 'rrect;rSize=5;strokeColor=#dddddd;spacingRight=10;fontSize=10;whiteSpace=wrap;fillColor=#ffffff;align=center;');
+			   	var bg = new mxCell('Dropdown', new mxGeometry(0, 0, 90, 20), s + 'rrect;rSize=5;strokeColor=#dddddd;spacingRight=10;fontSize=10;whiteSpace=wrap;align=center;');
 			   	bg.vertex = true;
 			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;fillColor=#000000;strokeColor=none;perimeter=none;');
 			   	marker1.geometry.relative = true;
@@ -143,7 +143,7 @@
 			
 			this.addEntry(dt + 'button group justified large', function()
 	   		{
-			   	var bg = new mxCell('', new mxGeometry(0, 0, 240, 40), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;');
+			   	var bg = new mxCell('', new mxGeometry(0, 0, 240, 40), s + 'rrect;rSize=5;strokeColor=#dddddd');
 			   	bg.vertex = true;
 			   	var button1 = new mxCell('Left', new mxGeometry(0, 0, 80, 40), inh + s + 'leftButton;rSize=5;perimeter=none;fontSize=16;whiteSpace=wrap;');
 			   	button1.vertex = true;
@@ -160,7 +160,7 @@
 		    
 		   	this.addEntry(dt + 'button group justified normal', function()
 	   		{
-			   	var bg = new mxCell('', new mxGeometry(0, 0, 180, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;');
+			   	var bg = new mxCell('', new mxGeometry(0, 0, 180, 30), s + 'rrect;rSize=5;strokeColor=#dddddd');
 			   	bg.vertex = true;
 			   	var button1 = new mxCell('Left', new mxGeometry(0, 0, 60, 30), inh + s + 'leftButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;');
 			   	button1.vertex = true;
@@ -177,7 +177,7 @@
 		    
 		   	this.addEntry(dt + 'button group justified small', function()
 	   		{
-			   	var bg = new mxCell('', new mxGeometry(0, 0, 150, 22), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;');
+			   	var bg = new mxCell('', new mxGeometry(0, 0, 150, 22), s + 'rrect;rSize=5;strokeColor=#dddddd');
 			   	bg.vertex = true;
 			   	var button1 = new mxCell('Left', new mxGeometry(0, 0, 50, 22), inh + s + 'leftButton;rSize=5;perimeter=none;whiteSpace=wrap;');
 			   	button1.vertex = true;
@@ -194,7 +194,7 @@
 		    
 		   	this.addEntry(dt + 'button group justified tiny', function()
 	   		{
-			   	var bg = new mxCell('', new mxGeometry(0, 0, 120, 20), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;');
+			   	var bg = new mxCell('', new mxGeometry(0, 0, 120, 20), s + 'rrect;rSize=5;strokeColor=#dddddd');
 			   	bg.vertex = true;
 			   	var button1 = new mxCell('Left', new mxGeometry(0, 0, 40, 20), inh + s + 'leftButton;rSize=5;perimeter=none;fontSize=10;whiteSpace=wrap;');
 			   	button1.vertex = true;
@@ -211,7 +211,7 @@
 					
 			this.addEntry(dt + 'button toolbar', function()
 	   		{
-			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 120, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;');
+			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 120, 30), s + 'rrect;rSize=5;strokeColor=#dddddd');
 			   	bg1.vertex = true;
 			   	var button1 = new mxCell('1', new mxGeometry(0, 0, 30, 30), inh + s + 'leftButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;');
 			   	button1.vertex = true;
@@ -225,7 +225,7 @@
 			   	var button4 = new mxCell('4', new mxGeometry(90, 0, 30, 30), inh + s + 'rightButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;');
 			   	button4.vertex = true;
 			   	bg1.insert(button4);
-			   	var bg2 = new mxCell('', new mxGeometry(130, 0, 90, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;');
+			   	var bg2 = new mxCell('', new mxGeometry(130, 0, 90, 30), s + 'rrect;rSize=5;strokeColor=#dddddd');
 			   	bg2.vertex = true;
 			   	var button1 = new mxCell('5', new mxGeometry(0, 0, 30, 30), inh + s + 'leftButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;');
 			   	button1.vertex = true;
@@ -236,7 +236,7 @@
 			   	var button4 = new mxCell('7', new mxGeometry(60, 0, 30, 30), inh + s + 'rightButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;');
 			   	button4.vertex = true;
 			   	bg2.insert(button4);
-			   	var bg3 = new mxCell('8', new mxGeometry(230, 0, 30, 30), s + 'rrect;fontSize=12;align=center;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;fillColor=#ffffff;');
+			   	var bg3 = new mxCell('8', new mxGeometry(230, 0, 30, 30), s + 'rrect;fontSize=12;align=center;rSize=5;strokeColor=#dddddd;whiteSpace=wrap');
 			   	bg3.vertex = true;
 
 			   	return sb.createVertexTemplateFromCells([bg1, bg2, bg3], 260, 30, 'Button Toolbar');
@@ -244,7 +244,7 @@
 				
 			this.addEntry(dt + 'button group nested', function()
 	   		{
-			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 160, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;');
+			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 160, 30), s + 'rrect;rSize=5;strokeColor=#dddddd');
 			   	bg1.vertex = true;
 			   	var button1 = new mxCell('1', new mxGeometry(0, 0, 30, 30), inh + s + 'leftButton;rSize=5;perimeter=none;fontSize=14;whiteSpace=wrap;');
 			   	button1.vertex = true;
@@ -264,13 +264,13 @@
 			   	return sb.createVertexTemplateFromCells([bg1], bg1.geometry.width, bg1.geometry.height, 'Button Group (Nested)');
 			}),				
 				
-		   	this.createVertexTemplateEntry(s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;align=center;fontSize=16;whiteSpace=wrap;', 
+		   	this.createVertexTemplateEntry(s + 'rrect;rSize=5;strokeColor=#dddddd;align=center;fontSize=16;whiteSpace=wrap;', 
 		   			80, 40, 'Button', 'Button (Large)', null, null, this.getTagsForStencil(gn, '', dt + 'button large').join(' ')),
-			this.createVertexTemplateEntry(s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;align=center;fontSize=14;whiteSpace=wrap;', 
+			this.createVertexTemplateEntry(s + 'rrect;rSize=5;strokeColor=#dddddd;align=center;fontSize=14;whiteSpace=wrap;', 
 					60, 30, 'Button', 'Button (Normal)', null, null, this.getTagsForStencil(gn, '', dt + 'button normal').join(' ')),
-			this.createVertexTemplateEntry(s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;align=center;fontSize=12;whiteSpace=wrap;', 
+			this.createVertexTemplateEntry(s + 'rrect;rSize=5;strokeColor=#dddddd;align=center;fontSize=12;whiteSpace=wrap;', 
 					44, 22, 'Button', 'Button (Small)', null, null, this.getTagsForStencil(gn, '', dt + 'button small').join(' ')),
-			this.createVertexTemplateEntry(s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;align=center;fontSize=10;whiteSpace=wrap;', 
+			this.createVertexTemplateEntry(s + 'rrect;rSize=5;strokeColor=#dddddd;align=center;fontSize=10;whiteSpace=wrap;', 
 					40, 20, 'Button', 'Button (Tiny)', null, null, this.getTagsForStencil(gn, '', dt + 'button tiny').join(' ')),
 		   	
 			this.createVertexTemplateEntry(s + 'rrect;rSize=5;fillColor=#3D8BCD;align=center;strokeColor=#3D8BCD;fontColor=#ffffff;fontSize=16;whiteSpace=wrap;', 
@@ -322,7 +322,7 @@
 	   		{
 			   	var bg = new mxCell('Primary', new mxGeometry(0, 0, 100, 22), s + 'rrect;align=center;rSize=5;fillColor=#3D8BCD;strokeColor=#3D8BCD;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;');
 			   	bg.vertex = true;
-			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;');
+			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;strokeColor=none;perimeter=none;');
 			   	marker1.geometry.relative = true;
 			   	marker1.geometry.offset = new mxPoint(-20, -2.5);
 			   	marker1.vertex = true;
@@ -335,7 +335,7 @@
 	   		{
 			   	var bg = new mxCell('Success', new mxGeometry(0, 0, 100, 22), s + 'rrect;align=center;rSize=5;fillColor=#58B957;strokeColor=#58B957;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;');
 			   	bg.vertex = true;
-			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;');
+			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;strokeColor=none;perimeter=none;');
 			   	marker1.geometry.relative = true;
 			   	marker1.geometry.offset = new mxPoint(-20, -2.5);
 			   	marker1.vertex = true;
@@ -348,7 +348,7 @@
 	   		{
 			   	var bg = new mxCell('Info', new mxGeometry(0, 0, 100, 22), s + 'rrect;align=center;rSize=5;fillColor=#55BFE0;strokeColor=#55BFE0;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;');
 			   	bg.vertex = true;
-			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;whiteSpace=wrap;');
+			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;strokeColor=none;perimeter=none;whiteSpace=wrap;');
 			   	marker1.geometry.relative = true;
 			   	marker1.geometry.offset = new mxPoint(-20, -2.5);
 			   	marker1.vertex = true;
@@ -361,7 +361,7 @@
 	   		{
 			   	var bg = new mxCell('Warning', new mxGeometry(0, 0, 100, 22), s + 'rrect;align=center;rSize=5;fillColor=#EFAC43;strokeColor=#EFAC43;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;');
 			   	bg.vertex = true;
-			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;whiteSpace=wrap;');
+			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;strokeColor=none;perimeter=none;whiteSpace=wrap;');
 			   	marker1.geometry.relative = true;
 			   	marker1.geometry.offset = new mxPoint(-20, -2.5);
 			   	marker1.vertex = true;
@@ -373,7 +373,7 @@
 	   		{
 			   	var bg = new mxCell('Danger', new mxGeometry(0, 0, 100, 22), s + 'rrect;align=center;rSize=5;fillColor=#DB524C;strokeColor=#DB524C;fontColor=#ffffff;spacingRight=10;whiteSpace=wrap;');
 			   	bg.vertex = true;
-			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;whiteSpace=wrap;');
+			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;strokeColor=none;perimeter=none;whiteSpace=wrap;');
 			   	marker1.geometry.relative = true;
 			   	marker1.geometry.offset = new mxPoint(-20, -2.5);
 			   	marker1.vertex = true;
@@ -384,7 +384,7 @@
 
 			this.addEntry(dt + 'dropdown split', function()
 	   		{
-			   	var bg = new mxCell('Default', new mxGeometry(0, 0, 120, 30), s + 'rrect;fillColor=#ffffff;align=center;rSize=5;strokeColor=#dddddd;spacingRight=20;fontSize=14;whiteSpace=wrap;');
+			   	var bg = new mxCell('Default', new mxGeometry(0, 0, 120, 30), s + 'rrect;align=center;rSize=5;strokeColor=#dddddd;spacingRight=20;fontSize=14;whiteSpace=wrap;');
 			   	bg.vertex = true;
 			   	var button1 = new mxCell('', new mxGeometry(1, 0, 30, 30), inh + s + 'rightButton;rSize=5;perimeter=none;resizeHeight=1;');
 			   	button1.geometry.relative = true;
@@ -409,7 +409,7 @@
 			   	button1.geometry.offset = new mxPoint(-30, 0);
 			   	button1.vertex = true;
 			   	bg.insert(button1);
-			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;');
+			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;strokeColor=none;perimeter=none;');
 			   	marker1.geometry.relative = true;
 			   	marker1.geometry.offset = new mxPoint(-20, -2.5);
 			   	marker1.vertex = true;
@@ -427,7 +427,7 @@
 			   	button1.geometry.offset = new mxPoint(-30, 0);
 			   	button1.vertex = true;
 			   	bg.insert(button1);
-			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;');
+			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;strokeColor=none;perimeter=none;');
 			   	marker1.geometry.relative = true;
 			   	marker1.geometry.offset = new mxPoint(-20, -2.5);
 			   	marker1.vertex = true;
@@ -445,7 +445,7 @@
 			   	button1.geometry.offset = new mxPoint(-30, 0);
 			   	button1.vertex = true;
 			   	bg.insert(button1);
-			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;');
+			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;strokeColor=none;perimeter=none;');
 			   	marker1.geometry.relative = true;
 			   	marker1.geometry.offset = new mxPoint(-20, -2.5);
 			   	marker1.vertex = true;
@@ -463,7 +463,7 @@
 			   	button1.geometry.offset = new mxPoint(-30, 0);
 			   	button1.vertex = true;
 			   	bg.insert(button1);
-			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;');
+			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;strokeColor=none;perimeter=none;');
 			   	marker1.geometry.relative = true;
 			   	marker1.geometry.offset = new mxPoint(-20, -2.5);
 			   	marker1.vertex = true;
@@ -481,7 +481,7 @@
 			   	button1.geometry.offset = new mxPoint(-30, 0);
 			   	button1.vertex = true;
 			   	bg.insert(button1);
-			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;fillColor=#ffffff;strokeColor=none;perimeter=none;');
+			   	var marker1 = new mxCell('', new mxGeometry(1, 0.5, 10, 5), 'shape=triangle;direction=south;strokeColor=none;perimeter=none;');
 			   	marker1.geometry.relative = true;
 			   	marker1.geometry.offset = new mxPoint(-20, -2.5);
 			   	marker1.vertex = true;
@@ -492,7 +492,7 @@
 		    
 		   	this.addEntry(dt + 'dropup split', function()
 	   		{
-			   	var bg = new mxCell('Dropup', new mxGeometry(0, 0, 120, 30), s + 'rrect;fillColor=#ffffff;align=center;rSize=5;strokeColor=#dddddd;spacingRight=20;fontSize=14;whiteSpace=wrap;');
+			   	var bg = new mxCell('Dropup', new mxGeometry(0, 0, 120, 30), s + 'rrect;align=center;rSize=5;strokeColor=#dddddd;spacingRight=20;fontSize=14;whiteSpace=wrap;');
 			   	bg.vertex = true;
 			   	var button1 = new mxCell('', new mxGeometry(1, 0, 30, 30), inh + s + 'rightButton;rSize=5;perimeter=none;resizeHeight=1;');
 			   	button1.geometry.relative = true;
@@ -535,7 +535,7 @@
 			
 		   	this.addEntry(dt + 'input group', function()
 	   		{
-			   	var bg = new mxCell('Username', new mxGeometry(0, 0, 250, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;spacingLeft=50;fontSize=14;align=left;fontColor=#dddddd;whiteSpace=wrap;');
+			   	var bg = new mxCell('Username', new mxGeometry(0, 0, 250, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;spacingLeft=50;fontSize=14;align=left;fontColor=#dddddd;whiteSpace=wrap;');
 			   	bg.vertex = true;
 			   	var bg2 = new mxCell('@', new mxGeometry(0, 0, 40, 30), s + 'leftButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;whiteSpace=wrap;resizeHeight=1;');
 			   	bg2.geometry.relative = true;
@@ -547,7 +547,7 @@
 	
 		   	this.addEntry(dt + 'input group', function()
 	   		{
-			   	var bg = new mxCell('', new mxGeometry(0, 0, 250, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;spacingLeft=10;fontSize=14;align=left;fontColor=#dddddd;whiteSpace=wrap;');
+			   	var bg = new mxCell('', new mxGeometry(0, 0, 250, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;spacingLeft=10;fontSize=14;align=left;fontColor=#dddddd;whiteSpace=wrap;');
 			   	bg.vertex = true;
 			   	var bg2 = new mxCell('.00', new mxGeometry(1, 0, 40, 30), s + 'rightButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;whiteSpace=wrap;resizeHeight=1;');
 			   	bg2.geometry.relative = true;
@@ -570,16 +570,16 @@
 			this.addDataEntry(dt + 'username tiny', 250, 20, 'Username (Tiny)',
 				'tVRZbsMgFDwNn42wSS6QpMtHK1WKegAaPxtUDBaQ2Onp+8Bka5w03bAsMbx9xoawWd3dW96IJ1OAIuyWsJk1xve7upuBUiSnsiBsTvKc4kvyuzPWLFppwy1of01A3gesuVpBf/LiwGpeQ29wfqOSQfga25tnhE2d4IVpEVAEBXcCigTQ0gT/uqvCTKNXnMR53I6shSW2NLUL+R48JsHbW/MGM6OMjTVYERdaSqnUwXkZV4ho+FLq6hHKMN44lCyN9ilnFjBXstIIVPSJ5qEKrZAeFpguBLbYIZ4lMsB66M4SGo8Sm/dgavB2gy6tLLxIpE560qkAWYkUloSg3PW42oXu5cFNUmhYLXai1l+rFEibrrw3+sdS0fCcIdiCw5QPW1qyqwjPvyScXeDbguJeruEo/W9EGP+7CCv8BS/Sr42GU+ZpXNd+xmyY1RRAR5M+ZPMJH7CeDbCefZf11MGzkdjYrvzNcfUt3CYwZenAn4i2G2NIR4T7a7V3P7x1PwA='),
 			
-		   	this.createVertexTemplateEntry(s + 'rrect;rSize=5;fillColor=#ffffff;strokeColor=#dddddd;fontSize=16;align=left;spacingLeft=10;whiteSpace=wrap;', 
+		   	this.createVertexTemplateEntry(s + 'rrect;rSize=5;strokeColor=#dddddd;fontSize=16;align=left;spacingLeft=10;whiteSpace=wrap;', 
 		   			250, 40, 'Johnny Boo', 'Full Name (Large)', null, null, this.getTagsForStencil(gn, '', dt + 'full name large').join(' ')),
-		   	this.createVertexTemplateEntry(s + 'rrect;rSize=5;fillColor=#ffffff;strokeColor=#dddddd;fontSize=14;align=left;spacingLeft=8;whiteSpace=wrap;', 
+		   	this.createVertexTemplateEntry(s + 'rrect;rSize=5;strokeColor=#dddddd;fontSize=14;align=left;spacingLeft=8;whiteSpace=wrap;', 
 		   			250, 30, 'Johnny Boo', 'Full Name (Normal)', null, null, this.getTagsForStencil(gn, '', dt + 'full name normal').join(' ')),
-		   	this.createVertexTemplateEntry(s + 'rrect;rSize=5;fillColor=#ffffff;strokeColor=#dddddd;fontSize=10;align=left;spacingLeft=6;whiteSpace=wrap;', 
+		   	this.createVertexTemplateEntry(s + 'rrect;rSize=5;strokeColor=#dddddd;fontSize=10;align=left;spacingLeft=6;whiteSpace=wrap;', 
 		   			250, 20, 'Johnny Boo', 'Full Name (Tiny)', null, null, this.getTagsForStencil(gn, '', dt + 'full name tiny').join(' ')),
 			
 		   	this.addEntry(dt + 'final price large', function()
 	   		{
-			   	var bg = new mxCell('Amount', new mxGeometry(0, 0, 200, 40), s + 'rrect;fillColor=#ffffff;rSize=5;strokeColor=#dddddd;spacingLeft=10;fontSize=16;align=left;fontColor=#dddddd;whiteSpace=wrap;');
+			   	var bg = new mxCell('Amount', new mxGeometry(0, 0, 200, 40), s + 'rrect;rSize=5;strokeColor=#dddddd;spacingLeft=10;fontSize=16;align=left;fontColor=#dddddd;whiteSpace=wrap;');
 			   	bg.vertex = true;
 			   	var bg1 = new mxCell('UAH', new mxGeometry(1, 0, 50, 40), s + 'rightButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;fontSize=16;whiteSpace=wrap;resizeHeight=1;');
 			   	bg1.geometry.relative = true;
@@ -592,7 +592,7 @@
 			    
 		   	this.addEntry(dt + 'final price normal', function()
 	   		{
-			   	var bg = new mxCell('Amount', new mxGeometry(0, 0, 200, 30), s + 'rrect;fillColor=#ffffff;rSize=5;strokeColor=#dddddd;spacingLeft=8;fontSize=14;align=left;fontColor=#dddddd;whiteSpace=wrap;');
+			   	var bg = new mxCell('Amount', new mxGeometry(0, 0, 200, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;spacingLeft=8;fontSize=14;align=left;fontColor=#dddddd;whiteSpace=wrap;');
 			   	bg.vertex = true;
 			   	var bg1 = new mxCell('UAH', new mxGeometry(1, 0, 40, 30), s + 'rightButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;fontSize=14;whiteSpace=wrap;resizeHeight=1;');
 			   	bg1.geometry.relative = true;
@@ -605,7 +605,7 @@
 		    
 		   	this.addEntry(dt + 'final price tiny', function()
 	   		{
-			   	var bg = new mxCell('Amount', new mxGeometry(0, 0, 200, 20), s + 'rrect;fillColor=#ffffff;rSize=5;strokeColor=#dddddd;spacingLeft=6;fontSize=10;align=left;fontColor=#dddddd;whiteSpace=wrap;');
+			   	var bg = new mxCell('Amount', new mxGeometry(0, 0, 200, 20), s + 'rrect;rSize=5;strokeColor=#dddddd;spacingLeft=6;fontSize=10;align=left;fontColor=#dddddd;whiteSpace=wrap;');
 			   	bg.vertex = true;
 			   	var bg1 = new mxCell('UAH', new mxGeometry(1, 0, 30, 20), s + 'rightButton;rSize=5;strokeColor=#dddddd;fillColor=#f0f0f0;fontSize=10;whiteSpace=wrap;resizeHeight=1;');
 			   	bg1.geometry.relative = true;
@@ -624,7 +624,7 @@
 	
 		   	this.addEntry(dt + 'search button large', function()
 	   		{
-			   	var bg = new mxCell('Search...', new mxGeometry(0, 0, 200, 40), s + 'rrect;fillColor=#ffffff;rSize=5;strokeColor=#dddddd;align=left;spacingLeft=10;fontSize=16;fontColor=#dddddd;whiteSpace=wrap;');
+			   	var bg = new mxCell('Search...', new mxGeometry(0, 0, 200, 40), s + 'rrect;rSize=5;strokeColor=#dddddd;align=left;spacingLeft=10;fontSize=16;fontColor=#dddddd;whiteSpace=wrap;');
 			   	bg.vertex = true;
 			   	var bg1 = new mxCell('Go!', new mxGeometry(1, 0, 50, 40), s + 'rightButton;rSize=5;strokeColor=#dddddd;fillColor=none;fontSize=16;whiteSpace=wrap;resizeHeight=1;');
 			   	bg1.geometry.relative = true;
@@ -637,7 +637,7 @@
 	
 		   	this.addEntry(dt + 'search button normal', function()
 	   		{
-			   	var bg = new mxCell('Search...', new mxGeometry(0, 0, 200, 30), s + 'rrect;fillColor=#ffffff;rSize=5;strokeColor=#dddddd;align=left;spacingLeft=6;fontSize=14;fontColor=#dddddd;whiteSpace=wrap;');
+			   	var bg = new mxCell('Search...', new mxGeometry(0, 0, 200, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;align=left;spacingLeft=6;fontSize=14;fontColor=#dddddd;whiteSpace=wrap;');
 			   	bg.vertex = true;
 			   	var bg1 = new mxCell('Go!', new mxGeometry(1, 0, 40, 30), s + 'rightButton;rSize=5;strokeColor=#dddddd;fillColor=none;fontSize=14;whiteSpace=wrap;resizeHeight=1;');
 			   	bg1.geometry.relative = true;
@@ -650,7 +650,7 @@
 	
 		   	this.addEntry(dt + 'search button tiny', function()
 	   		{
-			   	var bg = new mxCell('Search...', new mxGeometry(0, 0, 200, 20), s + 'rrect;fillColor=#ffffff;rSize=5;strokeColor=#dddddd;align=left;spacingLeft=3;fontSize=10;fontColor=#dddddd;whiteSpace=wrap;');
+			   	var bg = new mxCell('Search...', new mxGeometry(0, 0, 200, 20), s + 'rrect;rSize=5;strokeColor=#dddddd;align=left;spacingLeft=3;fontSize=10;fontColor=#dddddd;whiteSpace=wrap;');
 			   	bg.vertex = true;
 			   	var bg1 = new mxCell('Go!', new mxGeometry(1, 0, 30, 20), s + 'rightButton;rSize=5;strokeColor=#dddddd;fillColor=none;fontSize=10;whiteSpace=wrap;resizeHeight=1;');
 			   	bg1.geometry.relative = true;
@@ -671,7 +671,7 @@
 				
 			this.addEntry(dt + 'pagination', function()
 	   		{
-			   	var bg = new mxCell('', new mxGeometry(0, 0, 330, 30), s + 'rrect;fillColor=#ffffff;strokeColor=#dddddd;whiteSpace=wrap;');
+			   	var bg = new mxCell('', new mxGeometry(0, 0, 330, 30), s + 'rrect;strokeColor=#dddddd;whiteSpace=wrap;');
 			   	bg.vertex = true;
 			   	var bg2 = new mxCell('<<', new mxGeometry(0, 0, 30, 30), inh + s + 'leftButton;fontColor=#3D8BCD;whiteSpace=wrap;');
 			   	bg2.vertex = true;
@@ -710,14 +710,14 @@
 			   	return sb.createVertexTemplateFromCells([bg], bg.geometry.width, bg.geometry.height, 'Pagination');
 			}),				
 				
-		   	this.createVertexTemplateEntry(s + 'roundedButton;fillColor=#ffffff;align=center;strokeColor=#dddddd;fontColor=#3D8BCD;whiteSpace=wrap;', 
+		   	this.createVertexTemplateEntry(s + 'roundedButton;align=center;strokeColor=#dddddd;fontColor=#3D8BCD;whiteSpace=wrap;', 
 		   			100, 30, 'Previous', 'Button (Previous)', null, null, this.getTagsForStencil(gn, '', dt + '').join(' ')),
-		   	this.createVertexTemplateEntry(s + 'roundedButton;fillColor=#ffffff;align=center;strokeColor=#dddddd;fontColor=#3D8BCD;whiteSpace=wrap;', 
+		   	this.createVertexTemplateEntry(s + 'roundedButton;align=center;strokeColor=#dddddd;fontColor=#3D8BCD;whiteSpace=wrap;', 
 		   			60, 30, 'Next', 'Button (Next)', null, null, this.getTagsForStencil(gn, '', dt + '').join(' ')),
 
 		   	this.addEntry(dt + 'button older', function()
 	   		{
-			   	var bg = new mxCell('Older', new mxGeometry(0, 0, 100, 30), s + 'roundedButton;fillColor=#ffffff;align=center;strokeColor=#dddddd;fontColor=#dddddd;spacingLeft=10;whiteSpace=wrap;');
+			   	var bg = new mxCell('Older', new mxGeometry(0, 0, 100, 30), s + 'roundedButton;align=center;strokeColor=#dddddd;fontColor=#dddddd;spacingLeft=10;whiteSpace=wrap;');
 			   	bg.vertex = true;
 			   	var bg2 = new mxCell('', new mxGeometry(0, 0.5, 16, 4), s + 'arrow;strokeColor=#dddddd;flipH=1;');
 			   	bg2.geometry.relative = true;
@@ -730,7 +730,7 @@
 	
 		   	this.addEntry(dt + 'button newer', function()
 	   		{
-			   	var bg = new mxCell('Newer', new mxGeometry(0, 0, 100, 30), s + 'roundedButton;fillColor=#ffffff;align=center;strokeColor=#dddddd;fontColor=#3D8BCD;spacingRight=10;whiteSpace=wrap;');
+			   	var bg = new mxCell('Newer', new mxGeometry(0, 0, 100, 30), s + 'roundedButton;align=center;strokeColor=#dddddd;fontColor=#3D8BCD;spacingRight=10;whiteSpace=wrap;');
 			   	bg.vertex = true;
 			   	var bg2 = new mxCell('', new mxGeometry(1, 0.5, 16, 4), s + 'arrow;strokeColor=#3D8BCD;');
 			   	bg2.geometry.relative = true;
@@ -749,13 +749,13 @@
 				
 			this.addEntry(dt + 'pills vertical', function()
 	   		{
-			   	var bg = new mxCell('', new mxGeometry(0, 0, 200, 158), s + 'rrect;rSize5=;strokeColor=none;fillColor=#ffffff;');
+			   	var bg = new mxCell('', new mxGeometry(0, 0, 200, 158), s + 'rrect;rSize5=;strokeColor=none');
 			   	bg.vertex = true;
 			   	var bg1 = new mxCell('Home', new mxGeometry(0, 0, 200, 30), s + 'rrect;rSize=5;strokeColor=none;fillColor=#3D8BCD;fontColor=#ffffff;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;');
 			   	bg1.geometry.relative = true;
 			   	bg1.vertex = true;
 			   	bg.insert(bg1);
-			   	var notif1 = new mxCell('42', new mxGeometry(1, 0.5, 25, 16), s + 'rrect;rSize=8;fillColor=#ffffff;strokeColor=none;fontColor=#3D8BCD;whiteSpace=wrap;');
+			   	var notif1 = new mxCell('42', new mxGeometry(1, 0.5, 25, 16), s + 'rrect;rSize=8;strokeColor=none;fontColor=#3D8BCD;whiteSpace=wrap;');
 			   	notif1.geometry.relative = true;
 			   	notif1.geometry.offset = new mxPoint(-33, -8);
 			   	notif1.vertex = true;
@@ -982,7 +982,7 @@
 	
 		   	this.addEntry(dt + 'progress bar low percentage', function()
 		   	{
-			   	var bg1 = new mxCell('0%', new mxGeometry(0, 0, 800, 20), s + 'rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;fontColor=#000000;align=left;spacingLeft=5;whiteSpace=wrap;');
+			   	var bg1 = new mxCell('0%', new mxGeometry(0, 0, 800, 20), s + 'rrect;rSize=5;strokeColor=none;fillColor=#f6f6f6;align=left;spacingLeft=5;whiteSpace=wrap;');
 			   	bg1.vertex = true;
 			    
 			   	return sb.createVertexTemplateFromCells([bg1], bg1.geometry.width, bg1.geometry.height, 'Progress Bar (Low percentage)');
@@ -1051,7 +1051,7 @@
 				
 			this.addEntry(dt + 'linked item custom content', function()
 		   	{
-			   	var bg = new mxCell('', new mxGeometry(0, 0, 400, 240), s + 'rrect;rSize=5;fillColor=#ffffff;strokeColor=#dddddd;whiteSpace=wrap;');
+			   	var bg = new mxCell('', new mxGeometry(0, 0, 400, 240), s + 'rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;');
 			   	bg.vertex = true;
 			   	var button2 = new mxCell('Donec id elit non mi porta gravida at eget metus.\nMaecenas sed diam eget risus varius blandit.', new mxGeometry(0, 0, 400, 80), 
 			   			inh + s + 'rect;perimeter=none;spacingLeft=10;align=left;fontSize=14;whiteSpace=wrap;verticalAlign=bottom;spacingBottom=10;resizeWidth=1;');
@@ -1088,7 +1088,7 @@
 				
 		   	this.addEntry(dt + 'panel', function()
 		   	{
-			   	var bg1 = new mxCell('Panel content', new mxGeometry(0, 0, 150, 200), s + 'rrect;align=center;rSize=5;strokeColor=#E0F0D6;fillColor=#ffffff;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;');
+			   	var bg1 = new mxCell('Panel content', new mxGeometry(0, 0, 150, 200), s + 'rrect;align=center;rSize=5;strokeColor=#E0F0D6;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;');
 			   	bg1.vertex = true;
 			   	var bg2 = new mxCell('Panel title', new mxGeometry(0, 0, 150, 30), s + 'topButton;rSize=5;strokeColor=none;fillColor=#E0F0D6;fontColor=#59B958;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;');
 			   	bg2.geometry.relative = true;
@@ -1100,7 +1100,7 @@
 	
 		   	this.addEntry(dt + 'panel', function()
 		   	{
-			   	var bg1 = new mxCell('Panel content', new mxGeometry(0, 0, 150, 200), s + 'rrect;align=center;rSize=5;strokeColor=#D9EDF8;fillColor=#ffffff;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;');
+			   	var bg1 = new mxCell('Panel content', new mxGeometry(0, 0, 150, 200), s + 'rrect;align=center;rSize=5;strokeColor=#D9EDF8;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;');
 			   	bg1.vertex = true;
 			   	var bg2 = new mxCell('Panel title', new mxGeometry(0, 0, 150, 30), s + 'topButton;rSize=5;strokeColor=none;fillColor=#D9EDF8;fontColor=#55C0E0;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;');
 			   	bg2.geometry.relative = true;
@@ -1112,7 +1112,7 @@
 	
 		   	this.addEntry(dt + 'panel', function()
 		   	{
-			   	var bg1 = new mxCell('Panel content', new mxGeometry(0, 0, 150, 200), s + 'rrect;align=center;rSize=5;strokeColor=#FDF8E4;fillColor=#ffffff;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;');
+			   	var bg1 = new mxCell('Panel content', new mxGeometry(0, 0, 150, 200), s + 'rrect;align=center;rSize=5;strokeColor=#FDF8E4;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;');
 			   	bg1.vertex = true;
 			   	var bg2 = new mxCell('Panel title', new mxGeometry(0, 0, 150, 30), s + 'topButton;rSize=5;strokeColor=none;fillColor=#FDF8E4;fontColor=#F2AE43;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;');
 			   	bg2.geometry.relative = true;
@@ -1124,7 +1124,7 @@
 	
 		   	this.addEntry(dt + 'panel', function()
 		   	{
-			   	var bg1 = new mxCell('Panel content', new mxGeometry(0, 0, 150, 200), s + 'rrect;align=center;rSize=5;strokeColor=#F2DEDF;fillColor=#ffffff;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;');
+			   	var bg1 = new mxCell('Panel content', new mxGeometry(0, 0, 150, 200), s + 'rrect;align=center;rSize=5;strokeColor=#F2DEDF;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;');
 			   	bg1.vertex = true;
 			   	var bg2 = new mxCell('Panel title', new mxGeometry(0, 0, 150, 30), s + 'topButton;rSize=5;strokeColor=none;fillColor=#F2DEDF;fontColor=#DB524C;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;');
 			   	bg2.geometry.relative = true;
@@ -1136,7 +1136,7 @@
 			   	
 		   	this.addEntry(dt + 'panel', function()
 		   	{
-			   	var bg1 = new mxCell('Panel content', new mxGeometry(0, 0, 150, 200), s + 'rrect;align=center;rSize=5;strokeColor=#3D8BCD;fillColor=#ffffff;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;');
+			   	var bg1 = new mxCell('Panel content', new mxGeometry(0, 0, 150, 200), s + 'rrect;align=center;rSize=5;strokeColor=#3D8BCD;fontColor=#f0f0f0;spacingTop=30;whiteSpace=wrap;');
 			   	bg1.vertex = true;
 			   	var bg2 = new mxCell('Panel title', new mxGeometry(0, 0, 150, 30), s + 'topButton;rSize=5;strokeColor=none;fillColor=#3D8BCD;fontColor=#ffffff;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;');
 			   	bg2.geometry.relative = true;
@@ -1148,7 +1148,7 @@
 			
 		   	this.addEntry(dt + 'panel footer', function()
 		   	{
-			   	var bg1 = new mxCell('Panel content', new mxGeometry(0, 0, 150, 200), s + 'rrect;align=center;rSize=5;strokeColor=#E0F0D6;fillColor=#ffffff;fontColor=#f0f0f0;spacingBottom=30;whiteSpace=wrap;');
+			   	var bg1 = new mxCell('Panel content', new mxGeometry(0, 0, 150, 200), s + 'rrect;align=center;rSize=5;strokeColor=#E0F0D6;fontColor=#f0f0f0;spacingBottom=30;whiteSpace=wrap;');
 			   	bg1.vertex = true;
 			   	var bg2 = new mxCell('Panel title', new mxGeometry(0, 1, 150, 30), s + 'bottomButton;rSize=5;strokeColor=none;fillColor=#E0F0D6;fontColor=#59B958;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;');
 			   	bg2.geometry.relative = true;
@@ -1161,7 +1161,7 @@
 				
 		   	this.addEntry(dt + 'table', function()
 		   	{
-			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 800, 280), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;');
+			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 800, 280), s + 'rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;');
 			   	bg1.vertex = true;
 			   	var bg2 = new mxCell('Panel title', new mxGeometry(0, 0, 800, 40), s + 'topButton;rSize=5;strokeColor=inherit;fillColor=#000000;fillOpacity=3;fontColor=#999999;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;');
 			   	bg2.geometry.relative = true;
@@ -1233,12 +1233,12 @@
 			   	bg14.geometry.offset = new mxPoint(380, 0);
 			   	bg14.vertex = true;
 			   	bg10.insert(bg14);
-			   	var notif1 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'checkbox;fillColor=#ffffff;strokeColor=#666666;');
+			   	var notif1 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'checkbox;strokeColor=#666666;');
 			   	notif1.geometry.relative = true;
 			   	notif1.geometry.offset = new mxPoint(560, -10);
 			   	notif1.vertex = true;
 			   	bg10.insert(notif1);
-			   	var notif2 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), 'shape=ellipse;strokeColor=#666666;fillColor=#ffffff;html=1;');
+			   	var notif2 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), 'shape=ellipse;strokeColor=#666666;html=1;');
 			   	notif2.geometry.relative = true;
 			   	notif2.geometry.offset = new mxPoint(700, -10);
 			   	notif2.vertex = true;
@@ -1267,12 +1267,12 @@
 			   	bg21.geometry.offset = new mxPoint(380, 0);
 			   	bg21.vertex = true;
 			   	bg17.insert(bg21);
-			   	var notif3 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'checkbox;fillColor=#ffffff;strokeColor=#666666;');
+			   	var notif3 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'checkbox;strokeColor=#666666;');
 			   	notif3.geometry.relative = true;
 			   	notif3.geometry.offset = new mxPoint(560, -10);
 			   	notif3.vertex = true;
 			   	bg17.insert(notif3);
-			   	var notif4 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'radioButton;fillColor=#ffffff;strokeColor=#666666;');
+			   	var notif4 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'radioButton;strokeColor=#666666;');
 			   	notif4.geometry.relative = true;
 			   	notif4.geometry.offset = new mxPoint(700, -10);
 			   	notif4.vertex = true;
@@ -1301,12 +1301,12 @@
 			   	bg28.geometry.offset = new mxPoint(380, 0);
 			   	bg28.vertex = true;
 			   	bg24.insert(bg28);
-			   	var notif5 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'rrect;rSize=3;fillColor=#ffffff;strokeColor=#666666;');
+			   	var notif5 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'rrect;rSize=3;strokeColor=#666666;');
 			   	notif5.geometry.relative = true;
 			   	notif5.geometry.offset = new mxPoint(560, -10);
 			   	notif5.vertex = true;
 			   	bg24.insert(notif5);
-			   	var notif6 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), 'shape=ellipse;fillColor=#ffffff;strokeColor=#666666;html=1;');
+			   	var notif6 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), 'shape=ellipse;strokeColor=#666666;html=1;');
 			   	notif6.geometry.relative = true;
 			   	notif6.geometry.offset = new mxPoint(700, -10);
 			   	notif6.vertex = true;
@@ -1317,7 +1317,7 @@
 				
 			this.addEntry(dt + 'panel list group', function()
 		   	{
-			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 600, 320), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;');
+			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 600, 320), s + 'rrect;rSize=5;strokeColor=#dddddd;');
 			   	bg1.vertex = true;
 			   	var bg2 = new mxCell('Panel title', new mxGeometry(0, 0, 600, 40), s + 'topButton;rSize=5;strokeColor=inherit;fillColor=#000000;fillOpacity=3;fontColor=#999999;fontSize=14;fontStyle=1;align=left;spacingLeft=10;whiteSpace=wrap;resizeWidth=1;');
 			   	bg2.geometry.relative = true;
@@ -1362,7 +1362,7 @@
 				
 			this.addEntry(dt + 'table', function()
 		   	{
-			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 800, 160), 'html=1;shadow=0;dashed=0;shape=partialRectangle;top=0;bottom=0;right=0;left=0;strokeColor=#dddddd;fillColor=#ffffff;');
+			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 800, 160), 'html=1;shadow=0;dashed=0;shape=partialRectangle;top=0;bottom=0;right=0;left=0;strokeColor=#dddddd;');
 			   	bg1.vertex = true;
 			   	var bg2 = new mxCell('', new mxGeometry(0, 0, 800, 40), s + 'horLines;strokeColor=inherit;fillColor=#000000;fillOpacity=3;resizeWidth=1;');
 			   	bg2.geometry.relative = true;
@@ -1421,12 +1421,12 @@
 			   	bg13.geometry.offset = new mxPoint(380, 0);
 			   	bg13.vertex = true;
 			   	bg9.insert(bg13);
-			   	var notif1 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'checkbox;strokeColor=#666666;fillColor=#ffffff;');
+			   	var notif1 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'checkbox;strokeColor=#666666');
 			   	notif1.geometry.relative = true;
 			   	notif1.geometry.offset = new mxPoint(560, -10);
 			   	notif1.vertex = true;
 			   	bg9.insert(notif1);
-			   	var notif2 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), 'shape=ellipse;strokeColor=#666666;html=1;fillColor=#ffffff;');
+			   	var notif2 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), 'shape=ellipse;strokeColor=#666666;html=1');
 			   	notif2.geometry.relative = true;
 			   	notif2.geometry.offset = new mxPoint(700, -10);
 			   	notif2.vertex = true;
@@ -1455,12 +1455,12 @@
 			   	bg20.geometry.offset = new mxPoint(380, 0);
 			   	bg20.vertex = true;
 			   	bg16.insert(bg20);
-			   	var notif3 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'checkbox;strokeColor=#666666;fillColor=#ffffff;');
+			   	var notif3 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'checkbox;strokeColor=#666666');
 			   	notif3.geometry.relative = true;
 			   	notif3.geometry.offset = new mxPoint(560, -10);
 			   	notif3.vertex = true;
 			   	bg16.insert(notif3);
-			   	var notif4 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'radioButton;strokeColor=#666666;fillColor=#ffffff;');
+			   	var notif4 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'radioButton;strokeColor=#666666');
 			   	notif4.geometry.relative = true;
 			   	notif4.geometry.offset = new mxPoint(700, -10);
 			   	notif4.vertex = true;
@@ -1489,12 +1489,12 @@
 			   	bg27.geometry.offset = new mxPoint(380, 0);
 			   	bg27.vertex = true;
 			   	bg23.insert(bg27);
-			   	var notif5 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'rrect;rSize=3;strokeColor=#666666;fillColor=#ffffff;');
+			   	var notif5 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), s + 'rrect;rSize=3;strokeColor=#666666');
 			   	notif5.geometry.relative = true;
 			   	notif5.geometry.offset = new mxPoint(560, -10);
 			   	notif5.vertex = true;
 			   	bg23.insert(notif5);
-			   	var notif6 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), 'shape=ellipse;strokeColor=#666666;fillColor=#ffffff;html=1;');
+			   	var notif6 = new mxCell('', new mxGeometry(0, 0.5, 20, 20), 'shape=ellipse;strokeColor=#666666;html=1;');
 			   	notif6.geometry.relative = true;
 			   	notif6.geometry.offset = new mxPoint(700, -10);
 			   	notif6.vertex = true;
@@ -1505,7 +1505,7 @@
 				
 			this.addEntry(dt + 'table', function()
 		   	{
-			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 800, 360), 'shape=partialRectangle;right=0;left=0;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;');
+			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 800, 360), 'shape=partialRectangle;right=0;left=0;strokeColor=#dddddd;whiteSpace=wrap;');
 			   	bg1.vertex = true;
 			   	var bg2 = new mxCell('', new mxGeometry(0, 0, 800, 40), s + 'horLines;strokeColor=inherit;fillColor=#000000;fillOpacity=3;resizeWidth=1;');
 			   	bg2.geometry.relative = true;
@@ -2094,7 +2094,7 @@
 				
 			this.addEntry(dt + 'table', function()
 		   	{
-			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 800, 430), s + 'horLines;strokeColor=#dddddd;fillColor=#ffffff;');
+			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 800, 430), s + 'horLines;strokeColor=#dddddd');
 			   	bg1.vertex = true;
 			   	var bg2 = new mxCell('', new mxGeometry(0, 0, 800, 40), s + 'horLines;strokeColor=inherit;fillColor=#000000;fillOpacity=3;resizeWidth=1;');
 			   	bg2.geometry.relative = true;
@@ -2128,12 +2128,12 @@
 			   	bg7.geometry.offset = new mxPoint(200, 0);
 			   	bg7.vertex = true;
 			   	bg5.insert(bg7);
-			   	var notif1 = new mxCell('Edit', new mxGeometry(1, 0, 50, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;');
+			   	var notif1 = new mxCell('Edit', new mxGeometry(1, 0, 50, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;');
 			   	notif1.geometry.relative = true;
 			   	notif1.geometry.offset = new mxPoint(-140, 15);
 			   	notif1.vertex = true;
 			   	bg5.insert(notif1);
-			   	var notif2 = new mxCell('Delete', new mxGeometry(1, 0, 60, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;');
+			   	var notif2 = new mxCell('Delete', new mxGeometry(1, 0, 60, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;');
 			   	notif2.geometry.relative = true;
 			   	notif2.geometry.offset = new mxPoint(-80, 15);
 			   	notif2.vertex = true;
@@ -2156,12 +2156,12 @@
 			   	bg10.geometry.offset = new mxPoint(200, 0);
 			   	bg10.vertex = true;
 			   	bg8.insert(bg10);
-			   	var notif3 = new mxCell('Edit', new mxGeometry(1, 0, 50, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;');
+			   	var notif3 = new mxCell('Edit', new mxGeometry(1, 0, 50, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;');
 			   	notif3.geometry.relative = true;
 			   	notif3.geometry.offset = new mxPoint(-140, 15);
 			   	notif3.vertex = true;
 			   	bg8.insert(notif3);
-			   	var notif4 = new mxCell('Delete', new mxGeometry(1, 0, 60, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;');
+			   	var notif4 = new mxCell('Delete', new mxGeometry(1, 0, 60, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;');
 			   	notif4.geometry.relative = true;
 			   	notif4.geometry.offset = new mxPoint(-80, 15);
 			   	notif4.vertex = true;
@@ -2186,12 +2186,12 @@
 			   	bg13.geometry.offset = new mxPoint(200, 0);
 			   	bg13.vertex = true;
 			   	bg11.insert(bg13);
-			   	var notif1 = new mxCell('Edit', new mxGeometry(1, 0, 50, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;');
+			   	var notif1 = new mxCell('Edit', new mxGeometry(1, 0, 50, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;');
 			   	notif1.geometry.relative = true;
 			   	notif1.geometry.offset = new mxPoint(-140, 15);
 			   	notif1.vertex = true;
 			   	bg11.insert(notif1);
-			   	var notif2 = new mxCell('Delete', new mxGeometry(1, 0, 60, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;whiteSpace=wrap;');
+			   	var notif2 = new mxCell('Delete', new mxGeometry(1, 0, 60, 30), s + 'rrect;rSize=5;strokeColor=#dddddd;whiteSpace=wrap;');
 			   	notif2.geometry.relative = true;
 			   	notif2.geometry.offset = new mxPoint(-80, 15);
 			   	notif2.vertex = true;
@@ -2204,7 +2204,7 @@
 		   	{
 			   	var bg1 = new mxCell('', new mxGeometry(0, 0, 800, 80), s + 'horLines;strokeColor=#dddddd;fillColor=#fdfdfd;');
 			   	bg1.vertex = true;
-			   	var bg2 = new mxCell('Group Name', new mxGeometry(20, 20, 500, 40), s + 'rrect;rSize=5;strokeColor=#dddddd;fillColor=#ffffff;align=left;spacingLeft=10;fontSize=18;fontColor=#999999;whiteSpace=wrap;');
+			   	var bg2 = new mxCell('Group Name', new mxGeometry(20, 20, 500, 40), s + 'rrect;rSize=5;strokeColor=#dddddd;align=left;spacingLeft=10;fontSize=18;fontColor=#999999;whiteSpace=wrap;');
 			   	bg2.vertex = true;
 			   	bg1.insert(bg2);
 			   	var bg3 = new mxCell('Create Templates Group', new mxGeometry(540, 20, 240, 40), s + 'rrect;rSize=5;strokeColor=none;fillColor=#3D8BCD;fontSize=18;fontColor=#ffffff;whiteSpace=wrap;');
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-EIP.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-EIP.js
index 2b39068ea700e785ad8e9d999f9a1e179531cf40..b8262cd7865cd19d60f6988d6f3ec08d4815e59b 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-EIP.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-EIP.js
@@ -13,13 +13,13 @@
 		var fns = [
 			this.createEdgeTemplateEntry('edgeStyle=none;html=1;strokeColor=#808080;endArrow=block;endSize=10;dashed=0;verticalAlign=bottom;strokeWidth=2;', 
 					160, 0, '', 'Pipe', null, this.getTagsForStencil(gn, '', dt + 'pipe').join(' ')),
-		    this.createVertexTemplateEntry(s + 'rect;fillColor=#c0f5a9;strokeColor=#000000;verticalLabelPosition=bottom;verticalAlign=top;', 
+		    this.createVertexTemplateEntry(s + 'rect;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;', 
 		    		150, 90, '', 'Filter', null, null, this.getTagsForStencil(gn, '', dt + 'filter').join(' ')),
 			this.addEntry(dt + 'command message', function()
 			{
 				var bg1 = new mxCell('', new mxGeometry(0, 0, 12, 12), s + 'ellipse;fillColor=#808080;strokeColor=none;');
 				bg1.vertex = true;
-				var bg2 = new mxCell('C', new mxGeometry(16, 18, 12, 12), s + 'rect;fillColor=#FF8080;strokeColor=#000000;fontStyle=1;');
+				var bg2 = new mxCell('C', new mxGeometry(16, 18, 12, 12), s + 'rect;fillColor=#FF8080;fontStyle=1;');
 				bg2.vertex = true;
 				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;');
 		    	edge1.geometry.relative = true;
@@ -36,7 +36,7 @@
 			{
 				var bg1 = new mxCell('', new mxGeometry(0, 0, 12, 12), s + 'ellipse;fillColor=#808080;strokeColor=none;');
 				bg1.vertex = true;
-				var bg2 = new mxCell('D', new mxGeometry(16, 18, 12, 12), s + 'rect;fillColor=#C7A0FF;strokeColor=#000000;fontStyle=1;');
+				var bg2 = new mxCell('D', new mxGeometry(16, 18, 12, 12), s + 'rect;fillColor=#C7A0FF;fontStyle=1;');
 				bg2.vertex = true;
 				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;');
 		    	edge1.geometry.relative = true;
@@ -50,7 +50,7 @@
 			{
 				var bg1 = new mxCell('', new mxGeometry(0, 0, 12, 12), s + 'ellipse;fillColor=#808080;strokeColor=none;');
 				bg1.vertex = true;
-				var bg2 = new mxCell('E', new mxGeometry(16, 18, 12, 12), s + 'rect;fillColor=#83BEFF;strokeColor=#000000;fontStyle=1;');
+				var bg2 = new mxCell('E', new mxGeometry(16, 18, 12, 12), s + 'rect;fillColor=#83BEFF;fontStyle=1;');
 				bg2.vertex = true;
 				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;');
 		    	edge1.geometry.relative = true;
@@ -60,11 +60,11 @@
 			    
 			   	return sb.createVertexTemplateFromCells([edge1, bg1, bg2], 28, 30, 'Event Message');
 			}),
-		    this.createVertexTemplateEntry(s3 + 'messExp;html=1;verticalLabelPosition=bottom;strokeColor=#000000;verticalAlign=top', 
+		    this.createVertexTemplateEntry(s3 + 'messExp;html=1;verticalLabelPosition=bottom;verticalAlign=top', 
 		    		48, 48, '', 'Message Expiration', null, null, this.getTagsForStencil(gn, '', dt + 'message expiration').join(' ')),
 			this.addDataEntry(dt + 'message sequence', 60, 24, 'Message Sequence',
 				'5VVdb4MgFP01vKtY4+vKZp+WLNnDnpneKSmKQWp1v34gtKWhXfawNPswMbn33A+45xBAmLTTRtK+eRQVcIQfECZSCGWtdiLAOUoiViF8j5Ik0j9KiivReIlGPZXQqa8UJLZgpHwHFrHAoGbugHInRzDpMcJr6Ko7KcVeu69clFsNNarlLjooKbZABBdyqcUxIUUUHSMvrFKNjiS20zN7N2tg7dlVoarhbJBB7GTpoJWFFJU1uNnScNyl0M26AdGCkrNOkcCpYuN5dzpYtz7muVI9Ip29hF6wTg1e5ycD6ITJ9ct9krVhGxw8bycnaBHisij494iShaKsfogoafKtoqSBKHGgSkhoRYdm0cnwTTmrO22XmhjQYqzfRKcc37nRo6G9sSWUykQZ555seVQUGbkkaLR8h35uO/FRwBGkgglduyCuiDO7qDt7ezeUBzXA6kadY5fU8yT4lOFVwHB47v8Sw67gcLJuT3gWEI7/A+FpfiPCtXt6ye2V4z/0Hw=='),
-		    this.createVertexTemplateEntry(s3 + 'retAddr;html=1;verticalLabelPosition=bottom;fillColor=#FFE040;strokeColor=#000000;verticalAlign=top;', 
+		    this.createVertexTemplateEntry(s3 + 'retAddr;html=1;verticalLabelPosition=bottom;fillColor=#FFE040;verticalAlign=top;', 
 		    		78, 48, '', 'Return Address', null, null, this.getTagsForStencil(gn, 'retAddr', dt + 'return address').join(' '))
 		];
 		  
@@ -79,8 +79,8 @@
 
 	Sidebar.prototype.addEipMessageRoutingPalette = function(expand)
 	{
-		var s = "strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#fffbc0;strokeColor=#000000;";
-		var s2 = "strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.";
+		var s = "strokeWidth=2;dashed=0;align=center;fontSize=8;shape=rect;fillColor=#fffbc0;";
+		var s2 = "strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.";
 		var s3 = "edgeStyle=none;endArrow=none;dashed=0;html=1;strokeWidth=2;";
 		var gn = 'mxgraph.eip';
 		var dt = 'eip enterprise integration pattern message routing ';
@@ -122,7 +122,7 @@
 
 	Sidebar.prototype.addEipMessageTransformationPalette = function(expand)
 	{
-		var s = "strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;strokeColor=#000000;shape=mxgraph.eip.";
+		var s = "strokeWidth=2;outlineConnect=0;dashed=0;align=center;fontSize=8;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.";
 		var gn = 'mxgraph.eip';
 		var dt = 'eip enterprise integration pattern message transformation ';
 
@@ -144,8 +144,8 @@
 	Sidebar.prototype.addEipMessagingChannelsPalette = function(expand)
 	{
 		var s = "strokeWidth=2;dashed=0;align=center;fontSize=8;html=1;shape=";
-		var s2 = "strokeWidth=2;outlineConnect=0;strokeColor=#000000;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.";
-		var s3 = "strokeWidth=1;outlineConnect=0;strokeColor=#000000;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.";
+		var s2 = "strokeWidth=2;outlineConnect=0;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.";
+		var s3 = "strokeWidth=1;outlineConnect=0;dashed=0;align=center;html=1;fontSize=8;shape=mxgraph.eip.";
 		var gn = 'mxgraph.eip';
 		var dt = 'eip enterprise integration pattern messaging channel message ';
 		var sb = this;
@@ -182,7 +182,7 @@
 
 	Sidebar.prototype.addEipMessagingEndpointsPalette = function(expand)
 	{
-		var s = "dashed=0;outlineConnect=0;strokeWidth=2;strokeColor=#000000;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.";
+		var s = "dashed=0;outlineConnect=0;strokeWidth=2;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.";
 		var s2 = 'fillColor=#c0f5a9;' + s;
 		var gn = 'mxgraph.eip';
 		var dt = 'eip enterprise integration pattern messaging endpoint ';
@@ -221,17 +221,17 @@
 		var sb = this;
 		
 		var fns = [
-			this.createVertexTemplateEntry(s2 + 'content_based_router;verticalLabelPosition=bottom;verticalAlign=top;fillColor=#c0f5a9;strokeColor=#000000;', 
+			this.createVertexTemplateEntry(s2 + 'content_based_router;verticalLabelPosition=bottom;verticalAlign=top;fillColor=#c0f5a9;', 
 					150, 90, '', 'Message Router', null, null, this.getTagsForStencil(gn, 'content_based_router', dt + '').join(' ')),
 
-		    this.createVertexTemplateEntry(s4 + 'messageChannel;html=1;verticalLabelPosition=bottom;strokeColor=#000000;verticalAlign=top;', 
+		    this.createVertexTemplateEntry(s4 + 'messageChannel;html=1;verticalLabelPosition=bottom;verticalAlign=top;', 
 		    		100, 20, '', 'Message Channel', null, null, this.getTagsForStencil(gn, 'messageChannel', dt + '').join(' ')),
 		    
 			this.addEntry(dt + 'message endpoint', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 0, 150, 90), s + 'rect;verticalLabelPosition=bottom;verticalAlign=top;fillColor=#c0f5a9;strokeColor=#000000;');
+				var bg1 = new mxCell('', new mxGeometry(0, 0, 150, 90), s + 'rect;verticalLabelPosition=bottom;verticalAlign=top;fillColor=#c0f5a9;');
 				bg1.vertex = true;
-				var bg2 = new mxCell('', new mxGeometry(85, 25, 40, 40), s3 + 'rect;fillColor=#ffffff;strokeColor=#000000;');
+				var bg2 = new mxCell('', new mxGeometry(85, 25, 40, 40), s3 + 'rect;');
 				bg2.vertex = true;
 				bg1.insert(bg2);
 			    
@@ -240,9 +240,9 @@
 			    
 			this.addEntry(dt + 'message endpoint', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 0, 150, 90), s + 'rect;verticalLabelPosition=bottom;verticalAlign=top;fillColor=#c0f5a9;strokeColor=#000000;');
+				var bg1 = new mxCell('', new mxGeometry(0, 0, 150, 90), s + 'rect;verticalLabelPosition=bottom;verticalAlign=top;fillColor=#c0f5a9;');
 				bg1.vertex = true;
-				var bg2 = new mxCell('', new mxGeometry(25, 25, 40, 40), s3 + 'rect;fillColor=#ffffff;strokeColor=#000000;');
+				var bg2 = new mxCell('', new mxGeometry(25, 25, 40, 40), s3 + 'rect');
 				bg2.vertex = true;
 				bg1.insert(bg2);
 			    
@@ -257,7 +257,7 @@
 			{
 				var bg1 = new mxCell('', new mxGeometry(0, 0, 12, 12), s + 'ellipse;fillColor=#808080;strokeColor=none;');
 				bg1.vertex = true;
-				var bg2 = new mxCell('', new mxGeometry(16, 18, 12, 12), s + 'rect;fillColor=#80FF6C;strokeColor=#000000;fontStyle=1;');
+				var bg2 = new mxCell('', new mxGeometry(16, 18, 12, 12), s + 'rect;fillColor=#80FF6C;fontStyle=1;');
 				bg2.vertex = true;
 				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;');
 		    	edge1.geometry.relative = true;
@@ -275,7 +275,7 @@
 			{
 				var bg1 = new mxCell('', new mxGeometry(0, 0, 12, 12), s + 'ellipse;fillColor=#808080;strokeColor=none;');
 				bg1.vertex = true;
-				var bg2 = new mxCell('', new mxGeometry(16, 18, 12, 12), s2 + 'message_1;fillColor=#ff5500;strokeColor=#000000;fontStyle=1;');
+				var bg2 = new mxCell('', new mxGeometry(16, 18, 12, 12), s2 + 'message_1;fillColor=#ff5500;fontStyle=1;');
 				bg2.vertex = true;
 				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;');
 		    	edge1.geometry.relative = true;
@@ -290,7 +290,7 @@
 			{
 				var bg1 = new mxCell('', new mxGeometry(0, 0, 12, 12), s + 'ellipse;fillColor=#808080;strokeColor=none;');
 				bg1.vertex = true;
-				var bg2 = new mxCell('', new mxGeometry(16, 18, 12, 12), s2 + 'message_2;fillColor=#00cc00;strokeColor=#000000;fontStyle=1;');
+				var bg2 = new mxCell('', new mxGeometry(16, 18, 12, 12), s2 + 'message_2;fillColor=#00cc00;fontStyle=1;');
 				bg2.vertex = true;
 				var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;endArrow=none;dashed=0;html=1;strokeColor=#808080;strokeWidth=2;');
 		    	edge1.geometry.relative = true;
@@ -301,7 +301,7 @@
 			   	return sb.createVertexTemplateFromCells([edge1, bg1, bg2], 28, 30, 'Message');
 			}),
 	
-		    this.createVertexTemplateEntry(s2 + 'message_translator;fillColor=#c0f5a9;strokeColor=#000000;verticalLabelPosition=bottom;verticalAlign=top;', 
+		    this.createVertexTemplateEntry(s2 + 'message_translator;fillColor=#c0f5a9;verticalLabelPosition=bottom;verticalAlign=top;', 
 		    		150, 90, '', 'Message-Translator', null, null, this.getTagsForStencil(gn, 'message_translator', dt + '').join(' '))
 		];
 		
@@ -322,19 +322,19 @@
 		
 		this.addPaletteFunctions('eipSystem Management', 'EIP / System Management', false,
 		[
-		    this.createVertexTemplateEntry(s2 + 'channel_purger;fillColor=#c0f5a9;strokeColor=#000000;', 
+		    this.createVertexTemplateEntry(s2 + 'channel_purger;fillColor=#c0f5a9', 
 		    		150, 90, '', 'Channel Purger', null, null, this.getTagsForStencil(gn, 'channel_purger', dt + '').join(' ')),
-		    this.createVertexTemplateEntry(s2 + 'control_bus;fillColor=#c0f5a9;strokeColor=#000000;', 
+		    this.createVertexTemplateEntry(s2 + 'control_bus;fillColor=#c0f5a9', 
 		    		60, 40, '', 'Control Bus', null, null, this.getTagsForStencil(gn, 'control_bus', dt + '').join(' ')),
-		    this.createVertexTemplateEntry(s2 + 'detour;fillColor=#c0f5a9;strokeColor=#000000;', 
+		    this.createVertexTemplateEntry(s2 + 'detour;fillColor=#c0f5a9', 
 		    		150, 90, '', 'Detour', null, null, this.getTagsForStencil(gn, 'detour', dt + '').join(' ')),
-		    this.createVertexTemplateEntry(s2 + 'message_store;fillColor=#c0f5a9;strokeColor=#000000;', 
+		    this.createVertexTemplateEntry(s2 + 'message_store;fillColor=#c0f5a9', 
 		    		150, 90, '', 'Message Store', null, null, this.getTagsForStencil(gn, 'message_store', dt + '').join(' ')),
-		    this.createVertexTemplateEntry(s2 + 'smart_proxy;fillColor=#c0f5a9;strokeColor=#000000;', 
+		    this.createVertexTemplateEntry(s2 + 'smart_proxy;fillColor=#c0f5a9', 
 		    		70, 90, '', 'Smart Proxy', null, null, this.getTagsForStencil(gn, 'smart_proxy', dt + '').join(' ')),
-		    this.createVertexTemplateEntry(s2 + 'test_message;fillColor=#c0f5a9;strokeColor=#000000;', 
+		    this.createVertexTemplateEntry(s2 + 'test_message;fillColor=#c0f5a9', 
 		    		150, 90, '', 'Test Message', null, null, this.getTagsForStencil(gn, 'test_message', dt + '').join(' ')),
-		    this.createVertexTemplateEntry(s2 + 'wire_tap;fillColor=#c0f5a9;strokeColor=#000000;', 
+		    this.createVertexTemplateEntry(s2 + 'wire_tap;fillColor=#c0f5a9', 
 		    		150, 90, '', 'Wire Tap', null, null, this.getTagsForStencil(gn, 'wire_tap', dt + '').join(' '))
 		]);
 	};
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-ER.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-ER.js
index a65d40621dc5c687343699a179e6e71d0839bd98..61d49d913ea3969ad7e36198581b4a043e3c7ecc 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-ER.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-ER.js
@@ -142,7 +142,7 @@
 				
 				return sb.createVertexTemplateFromCells([cell.clone()], cell.geometry.width, cell.geometry.height, 'Spacer');
 			}),
-			this.createVertexTemplateEntry('text;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;strokeColor=#000000;fillColor=#e0e0e0;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=14;',
+			this.createVertexTemplateEntry('text;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;fillColor=#e0e0e0;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=14;',
 				80, 26, 'Title', 'Title', null, null, 'er entity relation table title label'),
 	   		this.addEntry(dt + 'table', function()
 			{
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-Electrical.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-Electrical.js
index 1471cde98b3316623fa6c2caa9f6b71edfd2a684..6d9e72466859ff3b1b8de617325fb1dea4870e0a 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-Electrical.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-Electrical.js
@@ -3,7 +3,7 @@
 	// Adds electrical stencils
 	Sidebar.prototype.addElectricalPalette = function()
 	{
-		var s = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;strokeWidth=1;' + mxConstants.STYLE_SHAPE;
+		var s = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;shadow=0;dashed=0;align=center;html=1;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;' + mxConstants.STYLE_SHAPE;
 		var mea = s + '=mxgraph.electrical.abstract.';
 		var mec = 'pointerEvents=1;' + s + '=mxgraph.electrical.capacitors.';
 		var med = 'pointerEvents=1;fillColor=#000000;' + s + '=mxgraph.electrical.diodes.';
@@ -92,10 +92,10 @@
 			this.createVertexTemplateEntry(meiecl + 'not;', 66, 80, '', 'NOT (IEC)', null, null, this.getTagsForStencil(gnmeiecl, 'xor', dtmeiecl).join(' ')),
 			this.createVertexTemplateEntry(meiecl + 'xor;', 60, 80, '', 'XOR (IEC)', null, null, this.getTagsForStencil(gnmeiecl, 'xor', dtmeiecl).join(' ')),
 			this.createVertexTemplateEntry(
-					'shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;strokeWidth=1;shape=mxgraph.electrical.logic_gates.dual_inline_ic;labelNames=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;', 
+					'shadow=0;dashed=0;align=center;html=1;strokeWidth=1;shape=mxgraph.electrical.logic_gates.dual_inline_ic;labelNames=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;', 
 					100, 200, 'IC', 'Dual In-Line IC', null, null, this.getTagsForStencil(gnmel, 'dual inline in line ic integrated circuit', dtmel).join(' ')),
 			this.createVertexTemplateEntry(
-					'shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;strokeWidth=1;shape=mxgraph.electrical.logic_gates.qfp_ic;' + 
+					'shadow=0;dashed=0;align=center;html=1;strokeWidth=1;shape=mxgraph.electrical.logic_gates.qfp_ic;' + 
 					'labelNames=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1;', 
 					200, 200, 'IC', 'Quad Flat Package IC', null, null, this.getTagsForStencil(gnmel, 'quad flat package qfp ic integrated circuit', dtmel).join(' '))
 		]);
@@ -210,7 +210,7 @@
 					100, 42, '', 'Inductor', null, null, this.getTagsForStencil(gnmei, 'inductor', dtmei).join(' ')),
 			this.createVertexTemplateEntry(mei + 'choke;', 
 					100, 200, '', 'Choke', null, null, this.getTagsForStencil(gnmei, 'choke', dtmei).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=top;shadow=0;dashed=0;align=center;fillColor=#000000;strokeColor=#000000;html=1;verticalAlign=bottom;strokeWidth=1;shape=mxgraph.electrical.inductors.variometer;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=top;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=bottom;strokeWidth=1;shape=mxgraph.electrical.inductors.variometer;', 
 					150, 88, '', 'Variometer', null, null, this.getTagsForStencil(gnmei, 'variometer', dtmei).join(' ')),
 			this.createVertexTemplateEntry(mei + 'coaxial_choke;', 
 					300, 50, '', 'Coaxial Choke', null, null, this.getTagsForStencil(gnmei, 'coaxial choke', dtmei).join(' ')),
@@ -222,7 +222,7 @@
 					92, 40, '', 'Potential Transformer', null, null, this.getTagsForStencil(gnmei, 'potential transformer', dtmei).join(' ')),
 			this.createVertexTemplateEntry(mei + 'pot_trans_3_windings;', 
 					67, 96, '', 'Pot. Trans. 3 Windings', null, null, this.getTagsForStencil(gnmei, 'potential transformer 3 three windings', dtmei).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.signal_sources.current_source;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.signal_sources.current_source;', 
 					40, 60, '', 'Transformer', null, null, this.getTagsForStencil(gnmei, '', dtmei).join(' ')),
 			this.createVertexTemplateEntry(mei + 'adjustable_transformer;', 
 					46, 60, '', 'Adjustable Transformer', null, null, this.getTagsForStencil(gnmei, 'adjustable_transformer', dtmei).join(' ')),
@@ -276,7 +276,7 @@
 					75, 37, '', 'Safety Interlock', null, null, this.getTagsForStencil(gnmeem, 'safety interlock', dtmeem).join(' ')),
 			this.createVertexTemplateEntry(meem + 'temperature_switch;', 
 					75, 18, '', 'Temperature Switch', null, null, this.getTagsForStencil(gnmeem, 'temperature switch', dtmeem).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=top;shadow=0;dashed=0;align=center;fillColor=#ffffff;strokeColor=#000000;html=1;verticalAlign=bottom;strokeWidth=1;shape=mxgraph.electrical.electro-mechanical.thermostat;fontColor=#000000;fontSize=10;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=top;shadow=0;dashed=0;align=center;html=1;verticalAlign=bottom;strokeWidth=1;shape=mxgraph.electrical.electro-mechanical.thermostat;fontSize=10;', 
 					75, 7, 'tº', 'Thermostat', null, null, this.getTagsForStencil(gnmeem, 'thermostat', dtmeem).join(' ')),
 			this.createVertexTemplateEntry(meem + 'limit_switch;', 
 					75, 16, '', 'Limit Switch', null, null, this.getTagsForStencil(gnmeem, 'limit switch', dtmeem).join(' ')),
@@ -412,11 +412,11 @@
 					60, 60, '', 'Ideal Source', null, null, this.getTagsForStencil(gnmess, 'ideal source', dtmess).join(' ')),
 			this.createVertexTemplateEntry(mess + 'explosive_squib', 
 					60, 60, '', 'Explosive Squib', null, null, this.getTagsForStencil(gnmess, 'explosive squib', dtmem).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.monocell_battery;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.monocell_battery;', 
 					100, 60, '', 'Accumulator / Monocell Battery', null, null, this.getTagsForStencil(gnmess, 'accumulator monocell battery single cell', dtmem).join(' ')),
 			this.createVertexTemplateEntry(mem + 'batteryStack;', 
 					100, 60, '', 'Battery Stack', null, null, this.getTagsForStencil(gnmess, 'battery stack', dtmess).join(' ')),
-			this.createVertexTemplateEntry('pointerEvents=1;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.multicell_battery_tapped;', 
+			this.createVertexTemplateEntry('pointerEvents=1;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.multicell_battery_tapped;', 
 					100, 70, '', 'Multicell Battery Tapped', null, null, this.getTagsForStencil(gnmess, 'accumulator multicell battery tapped multi multiple cell', dtmem).join(' '))
 		]);
 		
@@ -454,7 +454,7 @@
 
 		this.addPaletteFunctions('electrical\Instruments', 'Electrical / Instruments', false,
 		[
-			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=50;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=50;', 
 					90, 90, 'A', 'Ammeter', null, null, this.getTagsForStencil(gnmein, 'ampermeter ammeter', dtmein).join(' ')),
 			this.createVertexTemplateEntry(mein + 'galvanometer;', 
 					90, 90, '', 'Galvanometer', null, null, this.getTagsForStencil(gnmein, 'galvanometer', dtmein).join(' ')),
@@ -462,7 +462,7 @@
 					90, 90, '', 'Oscilloscope', null, null, this.getTagsForStencil(gnmein, 'oscilloscope', dtmein).join(' ')),
 			this.createVertexTemplateEntry(mein + 'signal_generator;', 
 					90, 90, '', 'Signal Generator', null, null, this.getTagsForStencil(gnmein, 'signal_generator', dtmein).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=50;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=50;', 
 					90, 90, 'V', 'Voltmeter', null, null, this.getTagsForStencil(gnmein, 'ampermeter ammeter', dtmein).join(' '))
 		]);
 
@@ -476,9 +476,9 @@
 					64.8, 69.78, '', 'Loop Antenna', null, null, this.getTagsForStencil(gnmer, 'loop_antenna', dtmer).join(' ')),
 			this.createVertexTemplateEntry(mem + 'loop_antenna', 
 					100, 100, '', 'Loop Antenna', null, null, this.getTagsForStencil(gnmess, 'loop antenna', dtmem).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=35;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=35;', 
 					60, 60, 'M', 'Electrical Motor', null, null, this.getTagsForStencil(gnmeem, 'motor_1', dtmeem).join(' ')),
-			this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE + '=mxgraph.electrical.electro-mechanical.motor_2;html=1;shadow=0;dashed=0;fillColor=#ffffff;align=center;fontSize=30;strokeColor=#000000;strokeWidth=1;', 
+			this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE + '=mxgraph.electrical.electro-mechanical.motor_2;html=1;shadow=0;dashed=0;align=center;fontSize=30;strokeWidth=1;', 
 					100, 60, '', 'Motor Armature', null, null, this.getTagsForStencil(gnmeem, 'motor_2', dtmeem).join(' ')),
 			this.createVertexTemplateEntry(mem + 'co-ax;', 
 					40, 60, '', 'Co-Ax', null, null, this.getTagsForStencil(gnmem, 'co-ax', dtmem).join(' ')),
@@ -513,10 +513,10 @@
 			this.createVertexTemplateEntry(mea + 'dac;', 
 					70, 46, '', 'DAC', null, null, this.getTagsForStencil(gnmea, 'dac', dtmea).join(' ')),
 			this.createVertexTemplateEntry(
-					'shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;strokeWidth=1;shape=mxgraph.electrical.abstract.mux2;',
+					'shadow=0;dashed=0;align=center;html=1;strokeWidth=1;shape=mxgraph.electrical.abstract.mux2;',
 					80, 120, 'Mux', 'Mux', null, null, this.getTagsForStencil(gnmea, 'mux', dtmea).join(' ')),
 			this.createVertexTemplateEntry(
-					'shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;strokeWidth=1;shape=mxgraph.electrical.abstract.mux2;operation=demux;',
+					'shadow=0;dashed=0;align=center;html=1;strokeWidth=1;shape=mxgraph.electrical.abstract.mux2;operation=demux;',
 					80, 120, 'Demux', 'Demux', null, null, this.getTagsForStencil(gnmea, 'mux', dtmea).join(' ')),
 			this.createVertexTemplateEntry(mea + 'operational_amp_1;', 
 					98, 90, '', 'Operational Amp', null, null, this.getTagsForStencil(gnmea, 'operational_amp_1', dtmea).join(' ')),
@@ -532,7 +532,7 @@
 					52, 46, '', 'Quantizer', null, null, this.getTagsForStencil(gnmea, 'quantizer', dtmea).join(' ')),
 			this.createVertexTemplateEntry(mea + 'delta;', 
 					50, 50, '', 'Delta', null, null, this.getTagsForStencil(gnmea, 'delta', dtmea).join(' ')),
-			this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE + '=mxgraph.electrical.abstract.function;html=1;shadow=0;dashed=0;fillColor=#ffffff;align=center;strokeColor=#000000;strokeWidth=1;fontSize=24', 
+			this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE + '=mxgraph.electrical.abstract.function;html=1;shadow=0;dashed=0;align=center;strokeWidth=1;fontSize=24', 
 					50, 50, 'fn', 'Function', null, null, this.getTagsForStencil(gnmea, 'function', dtmea).join(' ')),
 			this.createVertexTemplateEntry(mea + 'integrator;', 
 					50, 50, '', 'Integrator', null, null, this.getTagsForStencil(gnmea, 'integrator', dtmea).join(' ')),
@@ -550,7 +550,7 @@
 					52, 46, '', 'Highpass Filter', null, null, this.getTagsForStencil('mxgraph.electrical.logic_gates', 'highpass_filter', '').join(' ')),
 			this.createVertexTemplateEntry(s + '=mxgraph.electrical.logic_gates.lowpass_filter;', 
 					52, 46, '', 'Lowpass Filter', null, null, this.getTagsForStencil('mxgraph.electrical.logic_gates', 'lowpass_filter', '').join(' ')),
-			this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE + '=mxgraph.electrical.abstract.thermistor_with_independent_integral_heater;html=1;shadow=0;dashed=0;fillColor=#ffffff;strokeColor=#000000;strokeWidth=1;align=center;overflow=fill;fontSize=12;', 
+			this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE + '=mxgraph.electrical.abstract.thermistor_with_independent_integral_heater;html=1;shadow=0;dashed=0;strokeWidth=1;align=center;overflow=fill;fontSize=12;', 
 					100, 94.25, 
 					'<table cellpadding="0" cellspacing="0" style="width:100%;height:100%;">' +
 					'<tr height="45%">' +
@@ -566,13 +566,13 @@
 			this.createVertexTemplateEntry(mess + 'vdd;fontSize=24;', 
 					60, 40, 
 					'V<sub>dd</sub>', 'Vdd', null, null, this.getTagsForStencil(gnmess, 'vdd', dtmess).join(' ')),
-			this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=top;' + mxConstants.STYLE_VERTICAL_ALIGN + '=bottom;' + mxConstants.STYLE_SHAPE + '=mxgraph.electrical.signal_sources.vss2;shadow=0;dashed=0;fillColor=#ffffff;align=center;strokeColor=#000000;strokeWidth=1;fontSize=24;html=1;', 
+			this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=top;' + mxConstants.STYLE_VERTICAL_ALIGN + '=bottom;' + mxConstants.STYLE_SHAPE + '=mxgraph.electrical.signal_sources.vss2;shadow=0;dashed=0;align=center;strokeWidth=1;fontSize=24;html=1;', 
 					60, 40, 
 					'V<sub>ss</sub>', 'Vss', null, null, this.getTagsForStencil(gnmess, 'vss2', dtmess).join(' ')),
-			this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=top;' + mxConstants.STYLE_VERTICAL_ALIGN + '=bottom;' + mxConstants.STYLE_SHAPE + '=mxgraph.electrical.signal_sources.current_flow;shadow=0;dashed=0;fillColor=#ffffff;align=center;strokeColor=#000000;strokeWidth=1;fontSize=10;html=1;', 
+			this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=top;' + mxConstants.STYLE_VERTICAL_ALIGN + '=bottom;' + mxConstants.STYLE_SHAPE + '=mxgraph.electrical.signal_sources.current_flow;shadow=0;dashed=0;align=center;strokeWidth=1;fontSize=10;html=1;', 
 					70, 10, 
 					'5 mA',	'Current Flow', null, null, this.getTagsForStencil(gnmess, 'current_flow', dtmess).join(' ')),
-			this.createVertexTemplateEntry(mxConstants.STYLE_LABEL_POSITION + '=right;' + mxConstants.STYLE_ALIGN + '=left;' + mxConstants.STYLE_SHAPE + '=mxgraph.electrical.signal_sources.voltage;shadow=0;dashed=0;fillColor=#ffffff;strokeColor=#000000;strokeWidth=1;fontSize=10;html=1;', 
+			this.createVertexTemplateEntry(mxConstants.STYLE_LABEL_POSITION + '=right;' + mxConstants.STYLE_ALIGN + '=left;' + mxConstants.STYLE_SHAPE + '=mxgraph.electrical.signal_sources.voltage;shadow=0;dashed=0;strokeWidth=1;fontSize=10;html=1;', 
 					10, 70, 
 					'1.2 V', 'Voltage', null, null, this.getTagsForStencil(gnmess, 'voltage', dtmess).join(' ')),
 			this.createVertexTemplateEntry(mess + 'equipotential;', 
@@ -593,7 +593,7 @@
 					100, 32, '', 'Thermal Element', null, null, this.getTagsForStencil(gnmess, 'thermal element', dtmem).join(' ')),
 			this.createVertexTemplateEntry(mem + 'igniter_plug', 
 					72, 39, '', 'Igniter Plug', null, null, this.getTagsForStencil(gnmess, 'igniter plug', dtmem).join(' ')),
-			this.createVertexTemplateEntry('shape=mxgraph.arrows2.arrow;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=top;strokeWidth=1;dy=0;dx=10;notch=0;', 
+			this.createVertexTemplateEntry('shape=mxgraph.arrows2.arrow;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;dy=0;dx=10;notch=0;', 
 					100, 30, '', 'Pickup Head', null, null, this.getTagsForStencil(gnmess, 'pickup head', dtmem).join(' ')),
 			this.createVertexTemplateEntry(mem + 'squib_ignitor', 
 					100, 100, '', 'Squib Ignitor', null, null, this.getTagsForStencil(gnmess, 'squib ignitor', dtmem).join(' ')),
@@ -609,7 +609,7 @@
 					70, 20, '', 'Surge Protector', null, null, this.getTagsForStencil(gnmess, 'surge protector', dtmem).join(' ')),
 			this.createVertexTemplateEntry(mem + 'surge_protector_2;', 
 					70, 24, '', 'Surge Protector', null, null, this.getTagsForStencil(gnmess, 'surge protector', dtmem).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=top;strokeWidth=1;shape=rect;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=rect;', 
 					130, 50, '', 'Material', null, null, this.getTagsForStencil(gnmess, 'material', dtmem).join(' ')),
 			this.createVertexTemplateEntry(mem + 'sensing_link_squib', 
 					130, 40, '', 'Sensing Link Squib', null, null, this.getTagsForStencil(gnmess, 'sensing link squib', dtmem).join(' ')),
@@ -619,11 +619,11 @@
 					80, 50, '', 'Buzzer', null, null, this.getTagsForStencil(gnmess, 'buzzer', dtmer).join(' ')),
 			this.createVertexTemplateEntry(mem + 'adapter', 
 					100, 40, '', 'Adapter', null, null, this.getTagsForStencil(gnmess, 'adapter', dtmer).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=top;strokeWidth=1;shape=ellipse;perimeter=ellipsePerimeter;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=ellipse;perimeter=ellipsePerimeter;', 
 					15, 15, '', 'Circuit Terminal', null, null, this.getTagsForStencil(gnmess, 'circuit terminal', dtmer).join(' ')),
-			this.createEdgeTemplateEntry('endArrow=open;html=1;strokeColor=#000000;strokeWidth=1;endFill=0;endSize=20;',
+			this.createEdgeTemplateEntry('endArrow=open;html=1;strokeWidth=1;endFill=0;endSize=20;',
 					100, 0, '', 'M/F Contact', null, this.getTagsForStencil(gnmess, '', 'mf contact').join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.mf_contact_2', 
+			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.mf_contact_2', 
 					100, 10, '', 'MF Contact 2', null, null, this.getTagsForStencil(gnmess, 'mf contact', dtmer).join(' ')),
 			this.createVertexTemplateEntry(mem + 'terminal_board', 
 					75, 150, '', 'Terminal Board', null, null, this.getTagsForStencil(gnmess, 'terminal board', dtmer).join(' ')),
@@ -785,7 +785,7 @@
 		
 		this.addPaletteFunctions('electrical\RotMech', 'Electrical / Rotating Equipment & Mechanical Functions', false,
 		[
-			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;fontSize=32;fontColor=#000000;perimeter=ellipsePerimeter;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;fontSize=32;perimeter=ellipsePerimeter;', 
 					100, 100, 'M', 'Rotating Machine', null, null, this.getTagsForStencil(gnmerm, 'rotating machine', dtmerm).join(' ')),
 			this.createVertexTemplateEntry(merm + 'armature;pointerEvents=1;', 
 					100, 100, '', 'Armature', null, null, this.getTagsForStencil(gnmerm, 'armature', dtmerm).join(' ')),
@@ -797,7 +797,7 @@
 					100, 100, '', 'Winding Connection', null, null, this.getTagsForStencil(gnmerm, 'winding connection', dtmerm).join(' ')),
 			this.createVertexTemplateEntry(merm + 'synchro;', 
 					80, 100, '', 'Synchro', null, null, this.getTagsForStencil(gnmerm, 'synchro', dtmerm).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=top;strokeWidth=1;shape=trapezoid;perimeter=none;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=trapezoid;perimeter=none;', 
 					75, 25, '', 'Brake', null, null, this.getTagsForStencil(gnmerm, 'brake', dtmerm).join(' ')),
 			this.createVertexTemplateEntry(merm + 'gearing;pointerEvents=1;', 
 					100, 64, '', 'Gearing', null, null, this.getTagsForStencil(gnmerm, 'gearing', dtmerm).join(' ')),
@@ -837,11 +837,11 @@
 					130, 136, '', 'Overground Enclosure', null, null, this.getTagsForStencil(gnmetr, 'overground enclosure', dtmetr).join(' ')),
 			this.createVertexTemplateEntry(metr + 'optical_fiber;', 
 					130, 80, '', 'Optical Fiber', null, null, this.getTagsForStencil(gnmetr, 'optical fiber', dtmetr).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=ellipse;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=ellipse;', 
 					10, 10, '', 'Terminal', null, null, this.getTagsForStencil(gnmetr, 'terminal', dtmetr).join(' ')),
 			this.createVertexTemplateEntry(metr + 'terminal_3_phase;pointerEvents=1;', 
 					43, 10, '', 'Terminal 3 Phase', null, null, this.getTagsForStencil(gnmetr, 'Terminal 3 Phase', dtmetr).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;strokeColor=#000000;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;fontColor=#000000;fontSize=50;fontStyle=1;perimeter=ellipsePerimeter;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;fontSize=50;fontStyle=1;perimeter=ellipsePerimeter;', 
 					130, 130, 'T', 'Terminal', null, null, this.getTagsForStencil(gnmetr, 'terminal', dtmetr).join(' ')),
 			this.createVertexTemplateEntry(metr + 'line_cable;', 
 					130, 60, '', 'Line/Cable', null, null, this.getTagsForStencil(gnmetr, 'line cable', dtmetr).join(' ')),
@@ -849,15 +849,15 @@
 					130, 88, '', 'Anticreepage Device', null, null, this.getTagsForStencil(gnmetr, 'anticreepage device', dtmetr).join(' ')),
 			this.createVertexTemplateEntry(metr + 'testPoint;', 
 					60, 130, '', 'Test Point', null, null, this.getTagsForStencil(gnmetr, 'test point', dtmetr).join(' ')),
-			this.createEdgeTemplateEntry('endArrow=none;html=1;strokeColor=#000000;strokeWidth=1;',
+			this.createEdgeTemplateEntry('endArrow=none;html=1;strokeWidth=1;',
 					100, 0, '', 'Transmission Path', null, this.getTagsForStencil(gnmess, '', 'transmission path').join(' ')),
-			this.createEdgeTemplateEntry('endArrow=classicThin;html=1;strokeColor=#000000;strokeWidth=1;endSize=20;',
+			this.createEdgeTemplateEntry('endArrow=classicThin;html=1;strokeWidth=1;endSize=20;',
 					100, 0, '', 'Direction of Flow', null, this.getTagsForStencil(gnmess, '', 'direction flow').join(' ')),
 			this.createVertexTemplateEntry(metr + 'straightBus;', 
 					90, 130, '', 'Straight Bus', null, null, this.getTagsForStencil(gnmetr, 'straight bus', dtmetr).join(' ')),
-			this.createVertexTemplateEntry('html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.bendArrow;dy=15;dx=38;notch=0;arrowHead=55;rounded=0;strokeColor=#000000;strokeWidth=1;fillColor=#FFFFFF;', 
+			this.createVertexTemplateEntry('html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.bendArrow;dy=15;dx=38;notch=0;arrowHead=55;rounded=0;strokeWidth=1', 
 					130, 130, '', 'Elbow Bus', null, null, this.getTagsForStencil(gnmetr, 'elbow bus', dtmetr).join(' ')),
-			this.createVertexTemplateEntry('html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.bendArrow;dy=15;dx=38;notch=0;arrowHead=55;rounded=0;strokeColor=#000000;strokeWidth=1;fillColor=#FFFFFF;flipH=1;', 
+			this.createVertexTemplateEntry('html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.bendArrow;dy=15;dx=38;notch=0;arrowHead=55;rounded=0;strokeWidth=1;flipH=1;', 
 					130, 130, '', 'Elbow Bus', null, null, this.getTagsForStencil(gnmetr, 'elbow bus', dtmetr).join(' ')),
 			this.createVertexTemplateEntry(metr + '2_line_bus;', 
 					130, 25, '', '2-Line Bus', null, null, this.getTagsForStencil(gnmetr, '2 two line bus', dtmetr).join(' ')),
diff --git a/src/main/webapp/js/extensions.min.js b/src/main/webapp/js/extensions.min.js
index 104ec4fba204764c8e4899c8180d645c72700c47..d8deeb9e16fa69a4be24393c9935cb7dd353afb7 100644
--- a/src/main/webapp/js/extensions.min.js
+++ b/src/main/webapp/js/extensions.min.js
@@ -1,7 +1,7 @@
 LucidImporter={};
 (function(){function c(a){var b=null!=a.Text?a.Text:null!=a.Value?a.Value:a.Lane_0;null==b&&null!=a.State?null!=a.State.t&&(b=a.State):null==b&&null!=a.Note?null!=a.Note.t&&(b=a.Note):null==b&&null!=a.Title?null!=a.Title.t&&(b=a.Title):null!=a.t&&(b=a);null==b&&null!=a.TextAreas&&null!=a.TextAreas.Text&&null!=a.TextAreas.Text.Value&&null!=a.TextAreas.Text.Value.t&&(b=a.TextAreas.Text.Value);if(null!=b){if(null!=b.t)return b.t=b.t.replace(/</g,"&lt;"),b.t=b.t.replace(/>/g,"&gt;"),b.t;if(null!=b.Value&&
 null!=b.Value.t)return b.Value.t=b.Value.t.replace(/</g,"&lt;"),b.Value.t=b.Value.t.replace(/>/g,"&gt;"),b.Value.t}return""}function n(a){return null!=a.Action?a.Action:a}function l(a){if(null!=a.Text){if(null!=a.Text.m)return a.Text.m}else if(null!=a.TextAreas){if(null!=a.TextAreas.Text&&null!=a.TextAreas.Text.Value&&null!=a.TextAreas.Text.Value.m)return a.TextAreas.Text.Value.m}else if(null!=a.m)return a.m;return null}function k(c){return b(c)+a(c)+d(c)+h(c)+p(c)+y(c)+z(c)+x(c)+C(c)+F(c)}function f(a,
-b,d,h){var p="";null==a||""==a||a.endsWith(";")||(p=";");return p+=e(mxConstants.STYLE_FONTSIZE,a,b,d,h)+e(mxConstants.STYLE_FONTCOLOR,a,b,d,h)+e(mxConstants.STYLE_FONTSTYLE,a,b,d,h)+e(mxConstants.STYLE_ALIGN,a,b,d,h)+e(mxConstants.STYLE_SPACING_LEFT,a,b,d,h)+e(mxConstants.STYLE_SPACING_RIGHT,a,b,d,h)+e(mxConstants.STYLE_SPACING_TOP,a,b,d,h)+e(mxConstants.STYLE_SPACING_BOTTOM,a,b,d,h)+e(mxConstants.STYLE_SPACING,a,b,d,h)+e(mxConstants.STYLE_VERTICAL_ALIGN,a,b,d,h)+e(mxConstants.STYLE_STROKECOLOR,
+b,d,h){var p="";null!=a&&""!=a&&";"!=a.charAt(a.length-1)&&(p=";");return p+=e(mxConstants.STYLE_FONTSIZE,a,b,d,h)+e(mxConstants.STYLE_FONTCOLOR,a,b,d,h)+e(mxConstants.STYLE_FONTSTYLE,a,b,d,h)+e(mxConstants.STYLE_ALIGN,a,b,d,h)+e(mxConstants.STYLE_SPACING_LEFT,a,b,d,h)+e(mxConstants.STYLE_SPACING_RIGHT,a,b,d,h)+e(mxConstants.STYLE_SPACING_TOP,a,b,d,h)+e(mxConstants.STYLE_SPACING_BOTTOM,a,b,d,h)+e(mxConstants.STYLE_SPACING,a,b,d,h)+e(mxConstants.STYLE_VERTICAL_ALIGN,a,b,d,h)+e(mxConstants.STYLE_STROKECOLOR,
 a,b,d,h)+e(mxConstants.STYLE_OPACITY,a,b,d,h)+e(mxConstants.STYLE_ROUNDED,a,b,d,h)+e(mxConstants.STYLE_ROTATION,a,b,d,h)+e(mxConstants.STYLE_FLIPH,a,b,d,h)+e(mxConstants.STYLE_FLIPV,a,b,d,h)+e(mxConstants.STYLE_SHADOW,a,b,d,h)+e(mxConstants.STYLE_FILLCOLOR,a,b,d,h)+e(mxConstants.STYLE_DASHED,a,b,d,h)+e(mxConstants.STYLE_STROKEWIDTH,a,b,d,h)+e(mxConstants.STYLE_IMAGE,a,b,d,h)}function e(c,e,f,k,g){a:{if(null!=e&&null!=c){if(e.includes(";"+c+"=")){e=!0;break a}if(e.substring(0,c.length+1)==c+"="){e=
 !0;break a}}e=!1}if(!e)switch(c){case mxConstants.STYLE_FONTSIZE:return b(f);case mxConstants.STYLE_FONTCOLOR:return a(f);case mxConstants.STYLE_FONTSTYLE:return d(f);case mxConstants.STYLE_ALIGN:return h(f);case mxConstants.STYLE_SPACING_LEFT:return p(f);case mxConstants.STYLE_SPACING_RIGHT:return y(f);case mxConstants.STYLE_SPACING_TOP:return z(f);case mxConstants.STYLE_SPACING_BOTTOM:return x(f);case mxConstants.STYLE_SPACING:return C(f);case mxConstants.STYLE_VERTICAL_ALIGN:return F(f);case mxConstants.STYLE_STROKECOLOR:return A(f,
 k);case mxConstants.STYLE_OPACITY:return B(f,k,g);case mxConstants.STYLE_ROUNDED:return k=!g.edge&&null!=f.Rounding&&0<f.Rounding?"rounded=1;absoluteArcSize=1;arcSize="+.6*f.Rounding+";":"",k;case mxConstants.STYLE_ROTATION:a:{if(null!=f.Rotation&&(c=mxUtils.toDegree(parseFloat(f.Rotation)),"AdvancedSwimLaneBlockRotated"==k.Class?(c+=90,g.geometry.rotate90()):0<=mxUtils.indexOf(pb,k.Class)?(c-=90,g.geometry.rotate90(),g.geometry.rotate90(),g.geometry.rotate90()):0<=mxUtils.indexOf(Yb,k.Class)&&(c+=
diff --git a/src/main/webapp/js/viewer.min.js b/src/main/webapp/js/viewer.min.js
index ffd7c53d42611c03bada113abff320ac395b8f82..9c416de967db177c43cb537893e61ff0d1237f39 100644
--- a/src/main/webapp/js/viewer.min.js
+++ b/src/main/webapp/js/viewer.min.js
@@ -217,7 +217,7 @@ function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments
 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: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};
+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};
 mxEventSource.prototype.fireEvent=function(a,b){if(null!=this.eventListeners&&this.isEventsEnabled()){null==a&&(a=new mxEventObject);null==b&&(b=this.getEventSource());null==b&&(b=this);for(var c=[b,a],d=0;d<this.eventListeners.length;d+=2){var e=this.eventListeners[d];null!=e&&e!=a.getName()||this.eventListeners[d+1].apply(this,c)}}};
@@ -1984,7 +1984,7 @@ x.style.color=.5>.213*this.rgb[0]+.715*this.rgb[1]+.072*this.rgb[2]?"#FFF":"#000
 this.rgb[1]=b;var e=null===c?this.rgb[2]:this.rgb[2]=c,f=Math.min(Math.min(a,b),e);c=Math.max(Math.max(a,b),e);var g=c-f;0===g?a=[null,0,c]:(a=a===f?3+(e-b)/g:b===f?5+(a-e)/g:1+(b-a)/g,a=[6===a?0:a,g/c,c]);null!==a[0]&&(this.hsv[0]=a[0]);0!==a[2]&&(this.hsv[1]=a[1]);this.hsv[2]=a[2];this.exportColor(d)};this.fromString=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=jscolor.fetchElement(this.valueElement),x=jscolor.fetchElement(this.styleElement),
 y=!1,A=!1,z=1,v=2,B=4,C=8;u&&(q=function(){r.fromString(u.value,z);p()},jscolor.addEvent(u,"keyup",q),jscolor.addEvent(u,"input",q),jscolor.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:jscolor.requireImage("hs.png");break;case 1:jscolor.requireImage("hv.png")}this.importColor()}};jscolor.install();
-Editor=function(a,b,f,d,k){mxEventSource.call(this);this.chromeless=null!=a?a:this.chromeless;this.initStencilRegistry();this.graph=d||this.createGraph(b,f);this.editable=null!=k?k:!a;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(a){this.status=a;this.fireEvent(new mxEventObject("statusChanged"))};this.getStatus=
+Editor=function(a,b,f,d,l){mxEventSource.call(this);this.chromeless=null!=a?a:this.chromeless;this.initStencilRegistry();this.graph=d||this.createGraph(b,f);this.editable=null!=l?l:!a;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(a){this.status=a;this.fireEvent(new mxEventObject("statusChanged"))};this.getStatus=
 function(){return this.status};this.graphChangeListener=function(a,b){var d=null!=b?b.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 a=window;null!=a.opener&&"undefined"!==typeof a.opener.Editor&&!isNaN(a.opener.Editor.pageCounter)&&a.opener!=a;)a=a.opener;null!=a&&(a.Editor.pageCounter++,Editor.pageCounter=a.Editor.pageCounter)}catch(b){}})();Editor.useLocalStorage="undefined"!=typeof Storage&&mxClient.IS_IOS;
 Editor.helpImage=mxClient.IS_SVG?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTExIDE4aDJ2LTJoLTJ2MnptMS0xNkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTIuMjEgMC00IDEuNzktNCA0aDJjMC0xLjEuOS0yIDItMnMyIC45IDIgMmMwIDItMyAxLjc1LTMgNWgyYzAtMi4yNSAzLTIuNSAzLTUgMC0yLjIxLTEuNzktNC00LTR6Ii8+PC9zdmc+":IMAGE_PATH+
@@ -2021,13 +2021,13 @@ 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,f){b.undoableEditHappened(f.getProperty("edit"))};var f=mxUtils.bind(this,function(a,b){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,f);a.getView().addListener(mxEvent.UNDO,f);f=function(b,f){var d=a.getSelectionCellsForChanges(f.getProperty("edit").changes);a.getModel();for(var k=[],v=0;v<d.length;v++)null!=a.view.getState(d[v])&&k.push(d[v]);a.setSelectionCells(k)};
+Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(a,f){b.undoableEditHappened(f.getProperty("edit"))};var f=mxUtils.bind(this,function(a,b){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,f);a.getView().addListener(mxEvent.UNDO,f);f=function(b,f){var d=a.getSelectionCellsForChanges(f.getProperty("edit").changes);a.getModel();for(var l=[],v=0;v<d.length;v++)null!=a.view.getState(d[v])&&l.push(d[v]);a.setSelectionCells(l)};
 b.addListener(mxEvent.UNDO,f);b.addListener(mxEvent.REDO,f);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,f,d,k,m,p,v,y,B,c){var e=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(e=80);f+=e;d+=e;var g=f,u=d,n=mxUtils.getDocumentSize(),l=n.height,z=Math.max(1,Math.round((n.width-f-64)/2)),A=Math.max(1,Math.round((l-d-a.footerHeight)/3));mxClient.IS_QUIRKS||(b.style.maxHeight="100%");f=null!=document.body?Math.min(f,document.body.scrollWidth-64):f;d=Math.min(d,l-64);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=l+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));n=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=n.x+"px";this.bg.style.top=n.y+"px";z+=n.x;A+=n.y;k&&document.body.appendChild(this.bg);var q=a.createDiv(y?"geTransDialog":"geDialog");k=this.getPosition(z,A,f,d);z=k.x;A=k.y;q.style.width=
+function Dialog(a,b,f,d,l,m,p,v,y,B,c){var e=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(e=80);f+=e;d+=e;var k=f,t=d,n=mxUtils.getDocumentSize(),g=n.height,z=Math.max(1,Math.round((n.width-f-64)/2)),A=Math.max(1,Math.round((g-d-a.footerHeight)/3));mxClient.IS_QUIRKS||(b.style.maxHeight="100%");f=null!=document.body?Math.min(f,document.body.scrollWidth-64):f;d=Math.min(d,g-64);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=g+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));n=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=n.x+"px";this.bg.style.top=n.y+"px";z+=n.x;A+=n.y;l&&document.body.appendChild(this.bg);var q=a.createDiv(y?"geTransDialog":"geDialog");l=this.getPosition(z,A,f,d);z=l.x;A=l.y;q.style.width=
 f+"px";q.style.height=d+"px";q.style.left=z+"px";q.style.top=A+"px";q.style.zIndex=this.zIndex;q.appendChild(b);document.body.appendChild(q);!v&&b.clientHeight>q.clientHeight-64&&(b.style.overflowY="auto");m&&(m=document.createElement("img"),m.setAttribute("src",Dialog.prototype.closeImage),m.setAttribute("title",mxResources.get("close")),m.className="geDialogClose",m.style.top=A+14+"px",m.style.left=z+f+38-e+"px",m.style.zIndex=this.zIndex,mxEvent.addListener(m,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),
-document.body.appendChild(m),this.dialogImg=m,c||mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(c){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=B){var c=B();null!=c&&(g=f=c.w,u=d=c.h)}c=mxUtils.getDocumentSize();l=c.height;this.bg.style.height=l+"px";z=Math.max(1,Math.round((c.width-f-64)/2));A=Math.max(1,Math.round((l-d-a.footerHeight)/3));f=null!=document.body?Math.min(g,document.body.scrollWidth-64):g;d=Math.min(u,l-64);c=this.getPosition(z,
+document.body.appendChild(m),this.dialogImg=m,c||mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(c){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=B){var c=B();null!=c&&(k=f=c.w,t=d=c.h)}c=mxUtils.getDocumentSize();g=c.height;this.bg.style.height=g+"px";z=Math.max(1,Math.round((c.width-f-64)/2));A=Math.max(1,Math.round((g-d-a.footerHeight)/3));f=null!=document.body?Math.min(k,document.body.scrollWidth-64):k;d=Math.min(t,g-64);c=this.getPosition(z,
 A,f,d);z=c.x;A=c.y;q.style.left=z+"px";q.style.top=A+"px";q.style.width=f+"px";q.style.height=d+"px";!v&&b.clientHeight>q.clientHeight-64&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=A+14+"px",this.dialogImg.style.left=z+f+38-e+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=p;this.container=q;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1;
 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";
@@ -2037,33 +2037,33 @@ Dialog.prototype.lockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoA
 "/locked.png";
 Dialog.prototype.unlockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAMAAABhq6zVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzdDMDZCN0QxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzdDMDZCN0UxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozN0MwNkI3QjE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozN0MwNkI3QzE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkKMpVwAAAAYUExURZmZmbKysr+/v6ysrOXl5czMzLGxsf///zHN5lwAAAAIdFJOU/////////8A3oO9WQAAADxJREFUeNpUzFESACAEBNBVsfe/cZJU+8Mzs8CIABCidtfGOndnYsT40HDSiCcbPdoJo10o9aI677cpwACRoAF3dFNlswAAAABJRU5ErkJggg==":IMAGE_PATH+
 "/unlocked.png";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,f,d,k,m,p,v,y,B,c){y=null!=y?y:!0;var e=document.createElement("div");e.style.textAlign="center";if(null!=b){var g=document.createElement("div");g.style.padding="0px";g.style.margin="0px";g.style.fontSize="18px";g.style.paddingBottom="16px";g.style.marginBottom="10px";g.style.borderBottom="1px solid #c0c0c0";g.style.color="gray";g.style.whiteSpace="nowrap";g.style.textOverflow="ellipsis";g.style.overflow="hidden";mxUtils.write(g,b);g.setAttribute("title",b);e.appendChild(g)}b=
-document.createElement("div");b.style.lineHeight="1.2em";b.style.padding="6px";b.innerHTML=f;e.appendChild(b);f=document.createElement("div");f.style.marginTop="12px";f.style.textAlign="center";null!=m&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();m()}),b.className="geBtn",f.appendChild(b),f.style.textAlign="center");null!=B&&(B=mxUtils.button(B,function(){null!=c&&c()}),B.className="geBtn",f.appendChild(B));var u=mxUtils.button(d,function(){y&&a.hideDialog();null!=k&&k()});
-u.className="geBtn";f.appendChild(u);null!=p&&(d=mxUtils.button(p,function(){y&&a.hideDialog();null!=v&&v()}),d.className="geBtn gePrimaryBtn",f.appendChild(d));this.init=function(){u.focus()};e.appendChild(f);this.container=e},PrintDialog=function(a,b){this.create(a,b)};
-PrintDialog.prototype.create=function(a){function b(a){var b=v.checked||B.checked,d=parseInt(e.value)/100;isNaN(d)&&(d=1,e.value="100%");var d=.75*d,g=f.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,u=1/f.pageScale;if(b){var q=v.checked?1:parseInt(c.value);isNaN(q)||(u=mxUtils.getScaleForPageCount(q,f,g))}f.getGraphBounds();var k=q=0,g=mxRectangle.fromRectangle(g);g.width=Math.ceil(g.width*d);g.height=Math.ceil(g.height*d);u*=d;!b&&f.pageVisible?(d=f.getPageLayout(),q-=d.x*g.width,k-=d.y*g.height):
-b=!0;b=PrintDialog.createPrintPreview(f,u,g,0,q,k,b);b.open();a&&PrintDialog.printPreview(b)}var f=a.editor.graph,d,k,m=document.createElement("table");m.style.width="100%";m.style.height="100%";var p=document.createElement("tbody");d=document.createElement("tr");var v=document.createElement("input");v.setAttribute("type","checkbox");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";k.appendChild(v);var y=document.createElement("span");mxUtils.write(y," "+mxResources.get("fitPage"));
-k.appendChild(y);mxEvent.addListener(y,"click",function(a){v.checked=!v.checked;B.checked=!v.checked;mxEvent.consume(a)});mxEvent.addListener(v,"change",function(){B.checked=!v.checked});d.appendChild(k);p.appendChild(d);d=d.cloneNode(!1);var B=document.createElement("input");B.setAttribute("type","checkbox");k=document.createElement("td");k.style.fontSize="10pt";k.appendChild(B);y=document.createElement("span");mxUtils.write(y," "+mxResources.get("posterPrint")+":");k.appendChild(y);mxEvent.addListener(y,
-"click",function(a){B.checked=!B.checked;v.checked=!B.checked;mxEvent.consume(a)});d.appendChild(k);var c=document.createElement("input");c.setAttribute("value","1");c.setAttribute("type","number");c.setAttribute("min","1");c.setAttribute("size","4");c.setAttribute("disabled","disabled");c.style.width="50px";k=document.createElement("td");k.style.fontSize="10pt";k.appendChild(c);mxUtils.write(k," "+mxResources.get("pages")+" (max)");d.appendChild(k);p.appendChild(d);mxEvent.addListener(B,"change",
-function(){B.checked?c.removeAttribute("disabled"):c.setAttribute("disabled","disabled");v.checked=!B.checked});d=d.cloneNode(!1);k=document.createElement("td");mxUtils.write(k,mxResources.get("pageScale")+":");d.appendChild(k);k=document.createElement("td");var e=document.createElement("input");e.setAttribute("value","100 %");e.setAttribute("size","5");e.style.width="50px";k.appendChild(e);d.appendChild(k);p.appendChild(d);d=document.createElement("tr");k=document.createElement("td");k.colSpan=2;
-k.style.paddingTop="20px";k.setAttribute("align","right");y=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});y.className="geBtn";a.editor.cancelFirst&&k.appendChild(y);if(PrintDialog.previewEnabled){var g=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});g.className="geBtn";k.appendChild(g)}g=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});g.className="geBtn gePrimaryBtn";k.appendChild(g);a.editor.cancelFirst||
-k.appendChild(y);d.appendChild(k);p.appendChild(d);m.appendChild(p);this.container=m};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(f){}};
-PrintDialog.createPrintPreview=function(a,b,f,d,k,m,p){b=new mxPrintPreview(a,b,f,d,k,m);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=p;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var v=b.writeHead;b.writeHead=function(a){v.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};
+var ErrorDialog=function(a,b,f,d,l,m,p,v,y,B,c){y=null!=y?y:!0;var e=document.createElement("div");e.style.textAlign="center";if(null!=b){var k=document.createElement("div");k.style.padding="0px";k.style.margin="0px";k.style.fontSize="18px";k.style.paddingBottom="16px";k.style.marginBottom="10px";k.style.borderBottom="1px solid #c0c0c0";k.style.color="gray";k.style.whiteSpace="nowrap";k.style.textOverflow="ellipsis";k.style.overflow="hidden";mxUtils.write(k,b);k.setAttribute("title",b);e.appendChild(k)}b=
+document.createElement("div");b.style.lineHeight="1.2em";b.style.padding="6px";b.innerHTML=f;e.appendChild(b);f=document.createElement("div");f.style.marginTop="12px";f.style.textAlign="center";null!=m&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();m()}),b.className="geBtn",f.appendChild(b),f.style.textAlign="center");null!=B&&(B=mxUtils.button(B,function(){null!=c&&c()}),B.className="geBtn",f.appendChild(B));var t=mxUtils.button(d,function(){y&&a.hideDialog();null!=l&&l()});
+t.className="geBtn";f.appendChild(t);null!=p&&(d=mxUtils.button(p,function(){y&&a.hideDialog();null!=v&&v()}),d.className="geBtn gePrimaryBtn",f.appendChild(d));this.init=function(){t.focus()};e.appendChild(f);this.container=e},PrintDialog=function(a,b){this.create(a,b)};
+PrintDialog.prototype.create=function(a){function b(a){var b=v.checked||B.checked,d=parseInt(e.value)/100;isNaN(d)&&(d=1,e.value="100%");var d=.75*d,k=f.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,t=1/f.pageScale;if(b){var q=v.checked?1:parseInt(c.value);isNaN(q)||(t=mxUtils.getScaleForPageCount(q,f,k))}f.getGraphBounds();var l=q=0,k=mxRectangle.fromRectangle(k);k.width=Math.ceil(k.width*d);k.height=Math.ceil(k.height*d);t*=d;!b&&f.pageVisible?(d=f.getPageLayout(),q-=d.x*k.width,l-=d.y*k.height):
+b=!0;b=PrintDialog.createPrintPreview(f,t,k,0,q,l,b);b.open();a&&PrintDialog.printPreview(b)}var f=a.editor.graph,d,l,m=document.createElement("table");m.style.width="100%";m.style.height="100%";var p=document.createElement("tbody");d=document.createElement("tr");var v=document.createElement("input");v.setAttribute("type","checkbox");l=document.createElement("td");l.setAttribute("colspan","2");l.style.fontSize="10pt";l.appendChild(v);var y=document.createElement("span");mxUtils.write(y," "+mxResources.get("fitPage"));
+l.appendChild(y);mxEvent.addListener(y,"click",function(a){v.checked=!v.checked;B.checked=!v.checked;mxEvent.consume(a)});mxEvent.addListener(v,"change",function(){B.checked=!v.checked});d.appendChild(l);p.appendChild(d);d=d.cloneNode(!1);var B=document.createElement("input");B.setAttribute("type","checkbox");l=document.createElement("td");l.style.fontSize="10pt";l.appendChild(B);y=document.createElement("span");mxUtils.write(y," "+mxResources.get("posterPrint")+":");l.appendChild(y);mxEvent.addListener(y,
+"click",function(a){B.checked=!B.checked;v.checked=!B.checked;mxEvent.consume(a)});d.appendChild(l);var c=document.createElement("input");c.setAttribute("value","1");c.setAttribute("type","number");c.setAttribute("min","1");c.setAttribute("size","4");c.setAttribute("disabled","disabled");c.style.width="50px";l=document.createElement("td");l.style.fontSize="10pt";l.appendChild(c);mxUtils.write(l," "+mxResources.get("pages")+" (max)");d.appendChild(l);p.appendChild(d);mxEvent.addListener(B,"change",
+function(){B.checked?c.removeAttribute("disabled"):c.setAttribute("disabled","disabled");v.checked=!B.checked});d=d.cloneNode(!1);l=document.createElement("td");mxUtils.write(l,mxResources.get("pageScale")+":");d.appendChild(l);l=document.createElement("td");var e=document.createElement("input");e.setAttribute("value","100 %");e.setAttribute("size","5");e.style.width="50px";l.appendChild(e);d.appendChild(l);p.appendChild(d);d=document.createElement("tr");l=document.createElement("td");l.colSpan=2;
+l.style.paddingTop="20px";l.setAttribute("align","right");y=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});y.className="geBtn";a.editor.cancelFirst&&l.appendChild(y);if(PrintDialog.previewEnabled){var k=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});k.className="geBtn";l.appendChild(k)}k=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});k.className="geBtn gePrimaryBtn";l.appendChild(k);a.editor.cancelFirst||
+l.appendChild(y);d.appendChild(l);p.appendChild(d);m.appendChild(p);this.container=m};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(f){}};
+PrintDialog.createPrintPreview=function(a,b,f,d,l,m,p){b=new mxPrintPreview(a,b,f,d,l,m);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=p;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var v=b.writeHead;b.writeHead=function(a){v.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==c||c==mxConstants.NONE?(B.style.backgroundColor="",B.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(B.style.backgroundColor=c,B.style.backgroundImage="")}function f(){null==u?(g.removeAttribute("title"),g.style.fontSize="",g.innerHTML=mxResources.get("change")+"..."):(g.setAttribute("title",u.src),g.style.fontSize="11px",g.innerHTML=u.src.substring(0,42)+"...")}var d=a.editor.graph,k,m,p=document.createElement("table");p.style.width=
-"100%";p.style.height="100%";var v=document.createElement("tbody");k=document.createElement("tr");m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("paperSize")+":");k.appendChild(m);m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";var y=PageSetupDialog.addPageFormatPanel(m,"pagesetupdialog",d.pageFormat);k.appendChild(m);v.appendChild(k);k=document.createElement("tr");m=document.createElement("td");
-mxUtils.write(m,mxResources.get("background")+":");k.appendChild(m);m=document.createElement("td");m.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var B=document.createElement("button");B.style.width="18px";B.style.height="18px";B.style.marginRight="20px";B.style.backgroundPosition="center center";B.style.backgroundRepeat="no-repeat";var c=d.background;b();mxEvent.addListener(B,"click",function(e){a.pickColor(c||"none",function(a){c=a;b()});mxEvent.consume(e)});
-m.appendChild(B);mxUtils.write(m,mxResources.get("gridSize")+":");var e=document.createElement("input");e.setAttribute("type","number");e.setAttribute("min","0");e.style.width="40px";e.style.marginLeft="6px";e.value=d.getGridSize();m.appendChild(e);mxEvent.addListener(e,"change",function(){var a=parseInt(e.value);e.value=Math.max(1,isNaN(a)?d.getGridSize():a)});k.appendChild(m);v.appendChild(k);k=document.createElement("tr");m=document.createElement("td");mxUtils.write(m,mxResources.get("image")+
-":");k.appendChild(m);m=document.createElement("td");var g=document.createElement("a");g.style.textDecoration="underline";g.style.cursor="pointer";g.style.color="#a0a0a0";var u=d.backgroundImage;mxEvent.addListener(g,"click",function(c){a.showBackgroundImageDialog(function(a){u=a;f()});mxEvent.consume(c)});f();m.appendChild(g);k.appendChild(m);v.appendChild(k);k=document.createElement("tr");m=document.createElement("td");m.colSpan=2;m.style.paddingTop="16px";m.setAttribute("align","right");var n=
-mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});n.className="geBtn";a.editor.cancelFirst&&m.appendChild(n);var l=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();d.gridSize!==e.value&&d.setGridSize(parseInt(e.value));var b=new ChangePageSetup(a,c,u,y.get());b.ignoreColor=d.background==c;b.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=u?u.src:null);d.pageFormat.width==b.previousFormat.width&&d.pageFormat.height==b.previousFormat.height&&
-b.ignoreColor&&b.ignoreImage||d.model.execute(b)});l.className="geBtn gePrimaryBtn";m.appendChild(l);a.editor.cancelFirst||m.appendChild(n);k.appendChild(m);v.appendChild(k);p.appendChild(v);this.container=p};
-PageSetupDialog.addPageFormatPanel=function(a,b,f,d){function k(a,b,d){if(d||e!=document.activeElement&&g!=document.activeElement){a=!1;for(b=0;b<n.length;b++)d=n[b],q?"custom"==d.key&&(v.value=d.key,q=!1):null!=d.format&&("a4"==d.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==d.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==d.format.width&&
-f.height==d.format.height?(v.value=d.key,m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0,p.removeAttribute("checked"),p.defaultChecked=!1,p.checked=!1,a=!0):f.width==d.format.height&&f.height==d.format.width&&(v.value=d.key,m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1,p.setAttribute("checked","checked"),p.defaultChecked=!0,a=p.checked=!0));a?(y.style.display="",c.style.display="none"):(e.value=f.width/100,g.value=f.height/100,m.setAttribute("checked","checked"),
+var PageSetupDialog=function(a){function b(){null==c||c==mxConstants.NONE?(B.style.backgroundColor="",B.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(B.style.backgroundColor=c,B.style.backgroundImage="")}function f(){null==t?(k.removeAttribute("title"),k.style.fontSize="",k.innerHTML=mxResources.get("change")+"..."):(k.setAttribute("title",t.src),k.style.fontSize="11px",k.innerHTML=t.src.substring(0,42)+"...")}var d=a.editor.graph,l,m,p=document.createElement("table");p.style.width=
+"100%";p.style.height="100%";var v=document.createElement("tbody");l=document.createElement("tr");m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("paperSize")+":");l.appendChild(m);m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";var y=PageSetupDialog.addPageFormatPanel(m,"pagesetupdialog",d.pageFormat);l.appendChild(m);v.appendChild(l);l=document.createElement("tr");m=document.createElement("td");
+mxUtils.write(m,mxResources.get("background")+":");l.appendChild(m);m=document.createElement("td");m.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var B=document.createElement("button");B.style.width="18px";B.style.height="18px";B.style.marginRight="20px";B.style.backgroundPosition="center center";B.style.backgroundRepeat="no-repeat";var c=d.background;b();mxEvent.addListener(B,"click",function(e){a.pickColor(c||"none",function(a){c=a;b()});mxEvent.consume(e)});
+m.appendChild(B);mxUtils.write(m,mxResources.get("gridSize")+":");var e=document.createElement("input");e.setAttribute("type","number");e.setAttribute("min","0");e.style.width="40px";e.style.marginLeft="6px";e.value=d.getGridSize();m.appendChild(e);mxEvent.addListener(e,"change",function(){var a=parseInt(e.value);e.value=Math.max(1,isNaN(a)?d.getGridSize():a)});l.appendChild(m);v.appendChild(l);l=document.createElement("tr");m=document.createElement("td");mxUtils.write(m,mxResources.get("image")+
+":");l.appendChild(m);m=document.createElement("td");var k=document.createElement("a");k.style.textDecoration="underline";k.style.cursor="pointer";k.style.color="#a0a0a0";var t=d.backgroundImage;mxEvent.addListener(k,"click",function(c){a.showBackgroundImageDialog(function(a){t=a;f()});mxEvent.consume(c)});f();m.appendChild(k);l.appendChild(m);v.appendChild(l);l=document.createElement("tr");m=document.createElement("td");m.colSpan=2;m.style.paddingTop="16px";m.setAttribute("align","right");var n=
+mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});n.className="geBtn";a.editor.cancelFirst&&m.appendChild(n);var g=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();d.gridSize!==e.value&&d.setGridSize(parseInt(e.value));var b=new ChangePageSetup(a,c,t,y.get());b.ignoreColor=d.background==c;b.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=t?t.src:null);d.pageFormat.width==b.previousFormat.width&&d.pageFormat.height==b.previousFormat.height&&
+b.ignoreColor&&b.ignoreImage||d.model.execute(b)});g.className="geBtn gePrimaryBtn";m.appendChild(g);a.editor.cancelFirst||m.appendChild(n);l.appendChild(m);v.appendChild(l);p.appendChild(v);this.container=p};
+PageSetupDialog.addPageFormatPanel=function(a,b,f,d){function l(a,b,d){if(d||e!=document.activeElement&&k!=document.activeElement){a=!1;for(b=0;b<n.length;b++)d=n[b],q?"custom"==d.key&&(v.value=d.key,q=!1):null!=d.format&&("a4"==d.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==d.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==d.format.width&&
+f.height==d.format.height?(v.value=d.key,m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0,p.removeAttribute("checked"),p.defaultChecked=!1,p.checked=!1,a=!0):f.width==d.format.height&&f.height==d.format.width&&(v.value=d.key,m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1,p.setAttribute("checked","checked"),p.defaultChecked=!0,a=p.checked=!0));a?(y.style.display="",c.style.display="none"):(e.value=f.width/100,k.value=f.height/100,m.setAttribute("checked","checked"),
 v.value="custom",y.style.display="none",c.style.display="")}}b="format-"+b;var m=document.createElement("input");m.setAttribute("name",b);m.setAttribute("type","radio");m.setAttribute("value","portrait");var p=document.createElement("input");p.setAttribute("name",b);p.setAttribute("type","radio");p.setAttribute("value","landscape");var v=document.createElement("select");v.style.marginBottom="8px";v.style.width="202px";var y=document.createElement("div");y.style.marginLeft="4px";y.style.width="210px";
 y.style.height="24px";m.style.marginRight="6px";y.appendChild(m);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));y.appendChild(b);p.style.marginLeft="10px";p.style.marginRight="6px";y.appendChild(p);var B=document.createElement("span");B.style.width="100px";mxUtils.write(B,mxResources.get("landscape"));y.appendChild(B);var c=document.createElement("div");c.style.marginLeft="4px";c.style.width="210px";c.style.height="24px";var e=document.createElement("input");
-e.setAttribute("size","7");e.style.textAlign="right";c.appendChild(e);mxUtils.write(c," in x ");var g=document.createElement("input");g.setAttribute("size","7");g.style.textAlign="right";c.appendChild(g);mxUtils.write(c," in");y.style.display="none";c.style.display="none";for(var u={},n=PageSetupDialog.getFormats(),l=0;l<n.length;l++){var z=n[l];u[z.key]=z;var A=document.createElement("option");A.setAttribute("value",z.key);mxUtils.write(A,z.title);v.appendChild(A)}var q=!1;k();a.appendChild(v);mxUtils.br(a);
-a.appendChild(y);a.appendChild(c);var E=f,x=function(a,b){var l=u[v.value];null!=l.format?(e.value=l.format.width/100,g.value=l.format.height/100,c.style.display="none",y.style.display=""):(y.style.display="none",c.style.display="");l=parseFloat(e.value);if(isNaN(l)||0>=l)e.value=f.width/100;l=parseFloat(g.value);if(isNaN(l)||0>=l)g.value=f.height/100;l=new mxRectangle(0,0,Math.floor(100*parseFloat(e.value)),Math.floor(100*parseFloat(g.value)));"custom"!=v.value&&p.checked&&(l=new mxRectangle(0,0,
-l.height,l.width));b&&q||l.width==E.width&&l.height==E.height||(E=l,null!=d&&d(E))};mxEvent.addListener(b,"click",function(a){m.checked=!0;x(a);mxEvent.consume(a)});mxEvent.addListener(B,"click",function(a){p.checked=!0;x(a);mxEvent.consume(a)});mxEvent.addListener(e,"blur",x);mxEvent.addListener(e,"click",x);mxEvent.addListener(g,"blur",x);mxEvent.addListener(g,"click",x);mxEvent.addListener(p,"change",x);mxEvent.addListener(m,"change",x);mxEvent.addListener(v,"change",function(a){q="custom"==v.value;
-x(a,!0)});x();return{set:function(a){f=a;k(null,null,!0)},get:function(){return E},widthInput:e,heightInput:g}};
+e.setAttribute("size","7");e.style.textAlign="right";c.appendChild(e);mxUtils.write(c," in x ");var k=document.createElement("input");k.setAttribute("size","7");k.style.textAlign="right";c.appendChild(k);mxUtils.write(c," in");y.style.display="none";c.style.display="none";for(var t={},n=PageSetupDialog.getFormats(),g=0;g<n.length;g++){var z=n[g];t[z.key]=z;var A=document.createElement("option");A.setAttribute("value",z.key);mxUtils.write(A,z.title);v.appendChild(A)}var q=!1;l();a.appendChild(v);mxUtils.br(a);
+a.appendChild(y);a.appendChild(c);var F=f,x=function(a,b){var g=t[v.value];null!=g.format?(e.value=g.format.width/100,k.value=g.format.height/100,c.style.display="none",y.style.display=""):(y.style.display="none",c.style.display="");g=parseFloat(e.value);if(isNaN(g)||0>=g)e.value=f.width/100;g=parseFloat(k.value);if(isNaN(g)||0>=g)k.value=f.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(e.value)),Math.floor(100*parseFloat(k.value)));"custom"!=v.value&&p.checked&&(g=new mxRectangle(0,0,
+g.height,g.width));b&&q||g.width==F.width&&g.height==F.height||(F=g,null!=d&&d(F))};mxEvent.addListener(b,"click",function(a){m.checked=!0;x(a);mxEvent.consume(a)});mxEvent.addListener(B,"click",function(a){p.checked=!0;x(a);mxEvent.consume(a)});mxEvent.addListener(e,"blur",x);mxEvent.addListener(e,"click",x);mxEvent.addListener(k,"blur",x);mxEvent.addListener(k,"click",x);mxEvent.addListener(p,"change",x);mxEvent.addListener(m,"change",x);mxEvent.addListener(v,"change",function(a){q="custom"==v.value;
+x(a,!0)});x();return{set:function(a){f=a;l(null,null,!0)},get:function(){return F},widthInput:e,heightInput:k}};
 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,1600,900)},{key:"16-10",title:"16:10 (1920 x 1200)",format:new mxRectangle(0,0,1920,1200)},{key:"4-3",title:"4:3 (1600 x 1200)",format:new mxRectangle(0,0,1600,1200)},{key:"custom",title:mxResources.get("custom"),format:null}]};
@@ -2071,37 +2071,37 @@ format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)",fo
 mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(a.container),d.style.position="absolute",a.container.insertBefore(this.backgroundPageShape.node,d),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(c){a.dblClick(c)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(c){a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(c))}),
 mxUtils.bind(this,function(c){null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide();a.isMouseDown&&!mxEvent.isConsumed(c)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(c))}),mxUtils.bind(this,function(c){a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(c))})))}else this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=b,this.backgroundPageShape.redraw()}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=
 null);this.validateBackgroundStyles()}};mxGraphView.prototype.validateBackgroundStyles=function(){var a=this.graph,b=null==a.background||a.background==mxConstants.NONE?a.defaultPageBackgroundColor:a.background,d=null!=b&&this.gridColor!=b.toLowerCase()?this.gridColor:"#ffffff",c="none",e="";if(a.isGridEnabled()){e=10;mxClient.IS_SVG?(c=unescape(encodeURIComponent(this.createSvgGrid(d))),c=window.btoa?btoa(c):Base64.encode(c,!0),c="url(data:image/svg+xml;base64,"+c+")",e=a.gridSize*this.scale*this.gridSteps):
-c="url("+this.gridImage+")";var g=d=0;null!=a.view.backgroundPageShape&&(g=this.getBackgroundPageBounds(),d=1+g.x,g=1+g.y);e=-Math.round(e-mxUtils.mod(this.translate.x*this.scale-d,e))+"px "+-Math.round(e-mxUtils.mod(this.translate.y*this.scale-g,e))+"px"}d=a.view.canvas;null!=d.ownerSVGElement&&(d=d.ownerSVGElement);null!=a.view.backgroundPageShape?(a.view.backgroundPageShape.node.style.backgroundPosition=e,a.view.backgroundPageShape.node.style.backgroundImage=c,a.view.backgroundPageShape.node.style.backgroundColor=
-b,a.container.className="geDiagramContainer geDiagramBackdrop",d.style.backgroundImage="none",d.style.backgroundColor=""):(a.container.className="geDiagramContainer",d.style.backgroundPosition=e,d.style.backgroundColor=b,d.style.backgroundImage=c)};mxGraphView.prototype.createSvgGrid=function(a){for(var b=this.graph.gridSize*this.scale;b<this.minGridSize;)b*=2;for(var d=this.gridSteps*b,c=[],e=1;e<this.gridSteps;e++){var g=e*b;c.push("M 0 "+g+" L "+d+" "+g+" M "+g+" 0 L "+g+" "+d)}return'<svg width="'+
+c="url("+this.gridImage+")";var k=d=0;null!=a.view.backgroundPageShape&&(k=this.getBackgroundPageBounds(),d=1+k.x,k=1+k.y);e=-Math.round(e-mxUtils.mod(this.translate.x*this.scale-d,e))+"px "+-Math.round(e-mxUtils.mod(this.translate.y*this.scale-k,e))+"px"}d=a.view.canvas;null!=d.ownerSVGElement&&(d=d.ownerSVGElement);null!=a.view.backgroundPageShape?(a.view.backgroundPageShape.node.style.backgroundPosition=e,a.view.backgroundPageShape.node.style.backgroundImage=c,a.view.backgroundPageShape.node.style.backgroundColor=
+b,a.container.className="geDiagramContainer geDiagramBackdrop",d.style.backgroundImage="none",d.style.backgroundColor=""):(a.container.className="geDiagramContainer",d.style.backgroundPosition=e,d.style.backgroundColor=b,d.style.backgroundImage=c)};mxGraphView.prototype.createSvgGrid=function(a){for(var b=this.graph.gridSize*this.scale;b<this.minGridSize;)b*=2;for(var d=this.gridSteps*b,c=[],e=1;e<this.gridSteps;e++){var k=e*b;c.push("M 0 "+k+" L "+d+" "+k+" M "+k+" 0 L "+k+" "+d)}return'<svg width="'+
 d+'" height="'+d+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+d+'" height="'+d+'" patternUnits="userSpaceOnUse"><path d="'+c.join(" ")+'" fill="none" stroke="'+a+'" opacity="0.2" stroke-width="1"/><path d="M '+d+" 0 L 0 0 0 "+d+'" 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,d){a.apply(this,arguments);if(null!=this.shiftPreview1){var f=
-this.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);var c=this.gridSize*this.view.scale*this.view.gridSteps,c=-Math.round(c-mxUtils.mod(this.view.translate.x*this.view.scale+b,c))+"px "+-Math.round(c-mxUtils.mod(this.view.translate.y*this.view.scale+d,c))+"px";f.style.backgroundPosition=c}};mxGraph.prototype.updatePageBreaks=function(a,b,d){var c=this.view.scale,e=this.view.translate,g=this.pageFormat,f=c*this.pageScale,n=this.view.getBackgroundPageBounds();b=n.width;d=n.height;var l=
-new mxRectangle(c*e.x,c*e.y,g.width*f,g.height*f),z=(a=a&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(d/l.height)-1:0,A=a?Math.ceil(b/l.width)-1:0,q=n.x+b,k=n.y+d;null==this.horizontalPageBreaks&&0<z&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<A&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var c=a==this.horizontalPageBreaks?z:A,e=0;e<=c;e++){var b=a==this.horizontalPageBreaks?[new mxPoint(Math.round(n.x),Math.round(n.y+(e+1)*l.height)),
-new mxPoint(Math.round(q),Math.round(n.y+(e+1)*l.height))]:[new mxPoint(Math.round(n.x+(e+1)*l.width),Math.round(n.y)),new mxPoint(Math.round(n.x+(e+1)*l.width),Math.round(k))];null!=a[e]?(a[e].points=b,a[e].redraw()):(b=new mxPolyline(b,this.pageBreakColor),b.dialect=this.dialect,b.isDashed=this.pageBreakDashed,b.pointerEvents=!1,b.init(this.view.backgroundPane),b.redraw(),a[e]=b)}for(e=c;e<a.length;e++)a[e].destroy();a.splice(c,a.length-c)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)};
+this.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);var c=this.gridSize*this.view.scale*this.view.gridSteps,c=-Math.round(c-mxUtils.mod(this.view.translate.x*this.view.scale+b,c))+"px "+-Math.round(c-mxUtils.mod(this.view.translate.y*this.view.scale+d,c))+"px";f.style.backgroundPosition=c}};mxGraph.prototype.updatePageBreaks=function(a,b,d){var c=this.view.scale,e=this.view.translate,k=this.pageFormat,f=c*this.pageScale,n=this.view.getBackgroundPageBounds();b=n.width;d=n.height;var g=
+new mxRectangle(c*e.x,c*e.y,k.width*f,k.height*f),z=(a=a&&Math.min(g.width,g.height)>this.minPageBreakDist)?Math.ceil(d/g.height)-1:0,A=a?Math.ceil(b/g.width)-1:0,q=n.x+b,l=n.y+d;null==this.horizontalPageBreaks&&0<z&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<A&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var c=a==this.horizontalPageBreaks?z:A,e=0;e<=c;e++){var b=a==this.horizontalPageBreaks?[new mxPoint(Math.round(n.x),Math.round(n.y+(e+1)*g.height)),
+new mxPoint(Math.round(q),Math.round(n.y+(e+1)*g.height))]:[new mxPoint(Math.round(n.x+(e+1)*g.width),Math.round(n.y)),new mxPoint(Math.round(n.x+(e+1)*g.width),Math.round(l))];null!=a[e]?(a[e].points=b,a[e].redraw()):(b=new mxPolyline(b,this.pageBreakColor),b.dialect=this.dialect,b.isDashed=this.pageBreakDashed,b.pointerEvents=!1,b.init(this.view.backgroundPane),b.redraw(),a[e]=b)}for(e=c;e<a.length;e++)a[e].destroy();a.splice(c,a.length-c)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)};
 var b=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,d,f){for(var c=0;c<d.length;c++)if(this.graph.getModel().isVertex(d[c])){var e=this.graph.getCellGeometry(d[c]);if(null!=e&&e.relative)return!1}return b.apply(this,arguments)};var f=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=f.apply(this,arguments);a.intersects=mxUtils.bind(this,function(b,d){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,d=0<a.height?a.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,b)/g),f=Math.floor(Math.min(0,
-d)/c);return new mxRectangle(this.scale*(this.translate.x+e*g),this.scale*(this.translate.y+f*c),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/g)-e)*g,this.scale*(Math.ceil(Math.max(1,d+a.height/this.scale)/c)-f)*c)};var d=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){d.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 k=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(a,b,d,c,e,g){var f=k.apply(this,arguments);null==g||g||mxEvent.addListener(f,"mousedown",function(a){mxEvent.consume(a)});return f};var m=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(a){var b=this.graph.getModel(),d=b.getParent(this.graph.getSelectionCell()),c=m.apply(this,arguments),e=b.getParent(c);
+!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,d=0<a.height?a.y/this.scale-this.translate.y:0,c=this.graph.pageFormat,e=this.graph.pageScale,k=c.width*e,c=c.height*e,e=Math.floor(Math.min(0,b)/k),f=Math.floor(Math.min(0,
+d)/c);return new mxRectangle(this.scale*(this.translate.x+e*k),this.scale*(this.translate.y+f*c),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/k)-e)*k,this.scale*(Math.ceil(Math.max(1,d+a.height/this.scale)/c)-f)*c)};var d=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){d.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 l=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(a,b,d,c,e,k){var f=l.apply(this,arguments);null==k||k||mxEvent.addListener(f,"mousedown",function(a){mxEvent.consume(a)});return f};var m=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(a){var b=this.graph.getModel(),d=b.getParent(this.graph.getSelectionCell()),c=m.apply(this,arguments),e=b.getParent(c);
 if(null==d||d!=c&&d!=e)for(;!this.graph.isCellSelected(c)&&!this.graph.isCellSelected(e)&&b.isVertex(e)&&!this.graph.isContainer(e);)c=e,e=this.graph.getModel().getParent(c);return c};var p=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(a,b){var d=p.apply(this,arguments);if(!d)for(var c=this.graph.getModel(),e=c.getParent(a);null!=e;){if(this.graph.isCellSelected(e)&&c.isVertex(e)){d=!0;break}e=c.getParent(e)}return d};mxGraphHandler.prototype.selectDelayed=
 function(a){if(!this.graph.popupMenuHandler.isPopupTrigger(a)){var b=a.getCell();null==b&&(b=this.cell);var d=this.graph.view.getState(b);if(null==d||!a.isSource(d.control))for(var d=this.graph.getModel(),c=d.getParent(b);!this.graph.isCellSelected(c)&&d.isVertex(c);)b=c,c=d.getParent(b);this.graph.selectCellForEvent(b,a.getEvent())}};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(a){a=a.getCell();for(var b=this.graph.getModel(),d=b.getParent(a);b.isVertex(d)&&!this.graph.isContainer(d);)this.graph.isCellSelected(d)&&
 (a=d),d=b.getParent(d);return a}})();EditorUi=function(a,b,f){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=b||document.body;var d=this.editor.graph;d.lightbox=f;d.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,d.isEnabled=function(){return!1},d.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();if(!d.standalone){this.createDivs();this.createUi();this.refresh();var k=mxUtils.bind(this,function(a){null==a&&(a=window.event);return d.isEditing()||null!=a&&this.isSelectionAllowed(a)});this.container==document.body&&(this.menubarContainer.onselectstart=
-k,this.menubarContainer.onmousedown=k,this.toolbarContainer.onselectstart=k,this.toolbarContainer.onmousedown=k,this.diagramContainer.onselectstart=k,this.diagramContainer.onmousedown=k,this.sidebarContainer.onselectstart=k,this.sidebarContainer.onmousedown=k,this.formatContainer.onselectstart=k,this.formatContainer.onmousedown=k,this.footerContainer.onselectstart=k,this.footerContainer.onmousedown=k,null!=this.tabContainer&&(this.tabContainer.onselectstart=k));!this.editor.chromeless||this.editor.editable?
-(b=function(a){if(null!=a){var c=mxEvent.getSource(a);if("A"==c.nodeName)for(;null!=c;){if("geHint"==c.className)return!0;c=c.parentNode}}return k(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",b):this.diagramContainer.oncontextmenu=b):d.panningHandler.usePopupTrigger=!1;d.init(this.diagramContainer);mxClient.IS_SVG&&null!=d.view.getDrawPane()&&(b=d.view.getDrawPane().ownerSVGElement,null!=b&&(b.style.position=
+this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,d.isEnabled=function(){return!1},d.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())});this.actions=new Actions(this);this.menus=this.createMenus();if(!d.standalone){this.createDivs();this.createUi();this.refresh();var l=mxUtils.bind(this,function(a){null==a&&(a=window.event);return d.isEditing()||null!=a&&this.isSelectionAllowed(a)});this.container==document.body&&(this.menubarContainer.onselectstart=
+l,this.menubarContainer.onmousedown=l,this.toolbarContainer.onselectstart=l,this.toolbarContainer.onmousedown=l,this.diagramContainer.onselectstart=l,this.diagramContainer.onmousedown=l,this.sidebarContainer.onselectstart=l,this.sidebarContainer.onmousedown=l,this.formatContainer.onselectstart=l,this.formatContainer.onmousedown=l,this.footerContainer.onselectstart=l,this.footerContainer.onmousedown=l,null!=this.tabContainer&&(this.tabContainer.onselectstart=l));!this.editor.chromeless||this.editor.editable?
+(b=function(a){if(null!=a){var c=mxEvent.getSource(a);if("A"==c.nodeName)for(;null!=c;){if("geHint"==c.className)return!0;c=c.parentNode}}return l(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",b):this.diagramContainer.oncontextmenu=b):d.panningHandler.usePopupTrigger=!1;d.init(this.diagramContainer);mxClient.IS_SVG&&null!=d.view.getDrawPane()&&(b=d.view.getDrawPane().ownerSVGElement,null!=b&&(b.style.position=
 "absolute"));this.hoverIcons=this.createHoverIcons();mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var c=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-c.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-c.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var m=!1,p=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=
 function(a,c){return m||p.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32!=a.which||d.isEditing()?mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0):(m=!0,this.hoverIcons.reset(),d.container.style.cursor="move",d.isEditing()||mxEvent.getSource(a)!=d.container||mxEvent.consume(a))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){d.container.style.cursor="";m=!1});mxEvent.addListener(document,"keyup",
 this.keyupHandler);var v=d.panningHandler.isForcePanningEvent;d.panningHandler.isForcePanningEvent=function(a){return v.apply(this,arguments)||m||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var y=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(a){return y.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 B=!1,c=null,e=null,g=null,u=mxUtils.bind(this,function(){if(null!=this.toolbar&&B!=d.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var l=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=l}a=this.toolbar.fontMenu;l=this.toolbar.sizeMenu;if(null==g)this.toolbar.createTextToolbar();else{for(var f=
-0;f<g.length;f++)this.toolbar.container.appendChild(g[f]);this.toolbar.fontMenu=c;this.toolbar.sizeMenu=e}B=d.cellEditor.isContentEditing();c=a;e=l;g=b}}),n=this,l=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){l.apply(this,arguments);u();if(d.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=d.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&
+mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))};var B=!1,c=null,e=null,k=null,t=mxUtils.bind(this,function(){if(null!=this.toolbar&&B!=d.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var g=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=g}a=this.toolbar.fontMenu;g=this.toolbar.sizeMenu;if(null==k)this.toolbar.createTextToolbar();else{for(var f=
+0;f<k.length;f++)this.toolbar.container.appendChild(k[f]);this.toolbar.fontMenu=c;this.toolbar.sizeMenu=e}B=d.cellEditor.isContentEditing();c=a;e=g;k=b}}),n=this,g=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){g.apply(this,arguments);t();if(d.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=d.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&
 null!=n.toolbar)){var e=c.fontFamily;"'"==e.charAt(0)&&(e=e.substring(1));"'"==e.charAt(e.length-1)&&(e=e.substring(0,e.length-1));n.toolbar.setFontName(e);n.toolbar.setFontSize(parseInt(c.fontSize))}a=!1},0))};mxEvent.addListener(d.cellEditor.textarea,"input",c);mxEvent.addListener(d.cellEditor.textarea,"touchend",c);mxEvent.addListener(d.cellEditor.textarea,"mouseup",c);mxEvent.addListener(d.cellEditor.textarea,"keyup",c);c()}};var z=d.cellEditor.stopEditing;d.cellEditor.stopEditing=function(a,
-c){z.apply(this,arguments);u()};d.container.setAttribute("tabindex","0");d.container.style.cursor="default";if(window.self===window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(K){}var A=d.fireMouseEvent;d.fireMouseEvent=function(a,c,e){a==mxEvent.MOUSE_DOWN&&this.container.focus();A.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,c,e){this.menus.createPopupMenu(a,c,e)}));mxEvent.addGestureListeners(document,
-mxUtils.bind(this,function(a){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};var q="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),E="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){try{var c=d.view.getState(a);if(null!=c){var e=a.clone();e.style="";var b=d.getCellStyle(e);a=[];var e=[],g;for(g in c.style)b[g]!=c.style[g]&&(a.push(c.style[g]),
-e.push(g));for(var l=d.getModel().getStyle(c.cell),f=null!=l?l.split(";"):[],l=0;l<f.length;l++){var t=f[l],n=t.indexOf("=");if(0<=n){g=t.substring(0,n);var C=t.substring(n+1);null!=b[g]&&"none"==C&&(a.push(C),e.push(g))}}d.getModel().isEdge(c.cell)?d.currentEdgeStyle={}:d.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",e,"values",a,"cells",[c.cell]))}}catch(G){this.handleError(G)}};this.clearDefaultStyle=function(){d.currentEdgeStyle=mxUtils.clone(d.defaultEdgeStyle);
-d.currentVertexStyle=mxUtils.clone(d.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var x=["fontFamily","fontSize","fontColor"],F="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),t=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],x,["opacity"],["align"],["html"]];for(a=0;a<t.length;a++)for(b=
-0;b<t[a].length;b++)q.push(t[a][b]);for(a=0;a<E.length;a++)0>mxUtils.indexOf(q,E[a])&&q.push(E[a]);var C=function(a,c){var e=d.getModel();e.beginUpdate();try{if(c)for(var b=e.isEdge(n),g=b?d.currentEdgeStyle:d.currentVertexStyle,b=["fontSize","fontFamily","fontColor"],l=0;l<b.length;l++){var f=g[b[l]];null!=f&&d.setCellStyles(b[l],f,a)}else for(f=0;f<a.length;f++){for(var n=a[f],C=e.getStyle(n),u=null!=C?C.split(";"):[],z=q.slice(),l=0;l<u.length;l++){var k=u[l],A=k.indexOf("=");if(0<=A){var x=k.substring(0,
-A),ca=mxUtils.indexOf(z,x);0<=ca&&z.splice(ca,1);for(var K=0;K<t.length;K++){var m=t[K];if(0<=mxUtils.indexOf(m,x))for(var v=0;v<m.length;v++){var Y=mxUtils.indexOf(z,m[v]);0<=Y&&z.splice(Y,1)}}}}for(var g=(b=e.isEdge(n))?d.currentEdgeStyle:d.currentVertexStyle,p=e.getStyle(n),l=0;l<z.length;l++){var x=z[l],F=g[x];null==F||"shape"==x&&!b||b&&!(0>mxUtils.indexOf(E,x))||(p=mxUtils.setStyle(p,x,F))}e.setStyle(n,p)}}finally{e.endUpdate()}};d.addListener("cellsInserted",function(a,c){C(c.getProperty("cells"))});
-d.addListener("textInserted",function(a,c){C(c.getProperty("cells"),!0)});d.connectionHandler.addListener(mxEvent.CONNECT,function(a,c){var e=[c.getProperty("cell")];c.getProperty("terminalInserted")&&e.push(c.getProperty("terminal"));C(e)});this.addListener("styleChanged",mxUtils.bind(this,function(a,c){var e=c.getProperty("cells"),b=!1,g=!1;if(0<e.length)for(var l=0;l<e.length&&(b=d.getModel().isVertex(e[l])||b,!(g=d.getModel().isEdge(e[l])||g)||!b);l++);else g=b=!0;for(var e=c.getProperty("keys"),
-f=c.getProperty("values"),l=0;l<e.length;l++){var t=0<=mxUtils.indexOf(x,e[l]);if("strokeColor"!=e[l]||null!=f[l]&&"none"!=f[l])if(0<=mxUtils.indexOf(E,e[l]))g||0<=mxUtils.indexOf(F,e[l])?null==f[l]?delete d.currentEdgeStyle[e[l]]:d.currentEdgeStyle[e[l]]=f[l]:b&&0<=mxUtils.indexOf(q,e[l])&&(null==f[l]?delete d.currentVertexStyle[e[l]]:d.currentVertexStyle[e[l]]=f[l]);else if(0<=mxUtils.indexOf(q,e[l])){if(b||t)null==f[l]?delete d.currentVertexStyle[e[l]]:d.currentVertexStyle[e[l]]=f[l];if(g||t||
-0<=mxUtils.indexOf(F,e[l]))null==f[l]?delete d.currentEdgeStyle[e[l]]:d.currentEdgeStyle[e[l]]=f[l]}}null!=this.toolbar&&(this.toolbar.setFontName(d.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(d.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==d.currentEdgeStyle.edgeStyle&&"1"==d.currentEdgeStyle.curved?"geSprite geSprite-curved":
+c){z.apply(this,arguments);t()};d.container.setAttribute("tabindex","0");d.container.style.cursor="default";if(window.self===window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(K){}var A=d.fireMouseEvent;d.fireMouseEvent=function(a,c,e){a==mxEvent.MOUSE_DOWN&&this.container.focus();A.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,c,e){this.menus.createPopupMenu(a,c,e)}));mxEvent.addGestureListeners(document,
+mxUtils.bind(this,function(a){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};var q="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),F="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){try{var c=d.view.getState(a);if(null!=c){var e=a.clone();e.style="";var b=d.getCellStyle(e);a=[];var e=[],k;for(k in c.style)b[k]!=c.style[k]&&(a.push(c.style[k]),
+e.push(k));for(var g=d.getModel().getStyle(c.cell),f=null!=g?g.split(";"):[],g=0;g<f.length;g++){var u=f[g],n=u.indexOf("=");if(0<=n){k=u.substring(0,n);var C=u.substring(n+1);null!=b[k]&&"none"==C&&(a.push(C),e.push(k))}}d.getModel().isEdge(c.cell)?d.currentEdgeStyle={}:d.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",e,"values",a,"cells",[c.cell]))}}catch(G){this.handleError(G)}};this.clearDefaultStyle=function(){d.currentEdgeStyle=mxUtils.clone(d.defaultEdgeStyle);
+d.currentVertexStyle=mxUtils.clone(d.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var x=["fontFamily","fontSize","fontColor"],E="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),u=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],x,["opacity"],["align"],["html"]];for(a=0;a<u.length;a++)for(b=
+0;b<u[a].length;b++)q.push(u[a][b]);for(a=0;a<F.length;a++)0>mxUtils.indexOf(q,F[a])&&q.push(F[a]);var C=function(a,c){var e=d.getModel();e.beginUpdate();try{if(c)for(var b=e.isEdge(n),k=b?d.currentEdgeStyle:d.currentVertexStyle,b=["fontSize","fontFamily","fontColor"],g=0;g<b.length;g++){var f=k[b[g]];null!=f&&d.setCellStyles(b[g],f,a)}else for(f=0;f<a.length;f++){for(var n=a[f],C=e.getStyle(n),t=null!=C?C.split(";"):[],z=q.slice(),g=0;g<t.length;g++){var l=t[g],A=l.indexOf("=");if(0<=A){var x=l.substring(0,
+A),ca=mxUtils.indexOf(z,x);0<=ca&&z.splice(ca,1);for(var K=0;K<u.length;K++){var m=u[K];if(0<=mxUtils.indexOf(m,x))for(var v=0;v<m.length;v++){var Y=mxUtils.indexOf(z,m[v]);0<=Y&&z.splice(Y,1)}}}}for(var k=(b=e.isEdge(n))?d.currentEdgeStyle:d.currentVertexStyle,p=e.getStyle(n),g=0;g<z.length;g++){var x=z[g],E=k[x];null==E||"shape"==x&&!b||b&&!(0>mxUtils.indexOf(F,x))||(p=mxUtils.setStyle(p,x,E))}e.setStyle(n,p)}}finally{e.endUpdate()}};d.addListener("cellsInserted",function(a,c){C(c.getProperty("cells"))});
+d.addListener("textInserted",function(a,c){C(c.getProperty("cells"),!0)});d.connectionHandler.addListener(mxEvent.CONNECT,function(a,c){var e=[c.getProperty("cell")];c.getProperty("terminalInserted")&&e.push(c.getProperty("terminal"));C(e)});this.addListener("styleChanged",mxUtils.bind(this,function(a,c){var e=c.getProperty("cells"),b=!1,k=!1;if(0<e.length)for(var g=0;g<e.length&&(b=d.getModel().isVertex(e[g])||b,!(k=d.getModel().isEdge(e[g])||k)||!b);g++);else k=b=!0;for(var e=c.getProperty("keys"),
+f=c.getProperty("values"),g=0;g<e.length;g++){var u=0<=mxUtils.indexOf(x,e[g]);if("strokeColor"!=e[g]||null!=f[g]&&"none"!=f[g])if(0<=mxUtils.indexOf(F,e[g]))k||0<=mxUtils.indexOf(E,e[g])?null==f[g]?delete d.currentEdgeStyle[e[g]]:d.currentEdgeStyle[e[g]]=f[g]:b&&0<=mxUtils.indexOf(q,e[g])&&(null==f[g]?delete d.currentVertexStyle[e[g]]:d.currentVertexStyle[e[g]]=f[g]);else if(0<=mxUtils.indexOf(q,e[g])){if(b||u)null==f[g]?delete d.currentVertexStyle[e[g]]:d.currentVertexStyle[e[g]]=f[g];if(k||u||
+0<=mxUtils.indexOf(E,e[g]))null==f[g]?delete d.currentEdgeStyle[e[g]]:d.currentEdgeStyle[e[g]]=f[g]}}null!=this.toolbar&&(this.toolbar.setFontName(d.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(d.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==d.currentEdgeStyle.edgeStyle&&"1"==d.currentEdgeStyle.curved?"geSprite geSprite-curved":
 "straight"==d.currentEdgeStyle.edgeStyle||"none"==d.currentEdgeStyle.edgeStyle||null==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):
 "geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==d.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==d.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==d.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",d.currentEdgeStyle.shape,
 d.currentEdgeStyle[mxConstants.STYLE_STARTARROW],mxUtils.getValue(d.currentEdgeStyle,"startFill","1"))),null!=this.toolbar.lineEndMenu&&(this.toolbar.lineEndMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("end",d.currentEdgeStyle.shape,d.currentEdgeStyle[mxConstants.STYLE_ENDARROW],mxUtils.getValue(d.currentEdgeStyle,"endFill","1"))))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var a=d.currentVertexStyle.fontFamily||"Helvetica",c=String(d.currentVertexStyle.fontSize||
@@ -2119,35 +2119,35 @@ a+"openthin":f==mxConstants.ARROW_BLOCK?"1"==d?"geSprite geSprite-"+a+"block":"g
 "geSprite geSprite-"+a+"thindiamondtrans":"openAsync"==f?"geSprite geSprite-"+a+"openasync":"dash"==f?"geSprite geSprite-"+a+"dash":"cross"==f?"geSprite geSprite-"+a+"cross":"async"==f?"1"==d?"geSprite geSprite-"+a+"async":"geSprite geSprite-"+a+"asynctrans":"circle"==f||"circlePlus"==f?"1"==d||"circle"==f?"geSprite geSprite-"+a+"circle":"geSprite geSprite-"+a+"circleplus":"ERone"==f?"geSprite geSprite-"+a+"erone":"ERmandOne"==f?"geSprite geSprite-"+a+"eronetoone":"ERmany"==f?"geSprite geSprite-"+
 a+"ermany":"ERoneToMany"==f?"geSprite geSprite-"+a+"eronetomany":"ERzeroToOne"==f?"geSprite geSprite-"+a+"eroneopt":"ERzeroToMany"==f?"geSprite geSprite-"+a+"ermanyopt":"geSprite geSprite-noarrow"};EditorUi.prototype.createMenus=function(){return null};
 EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,b=this.actions.get("paste"),f=this.actions.get("pasteHere");b.setEnabled(this.editor.graph.cellEditor.isContentEditing()||!mxClipboard.isEmpty()&&a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()));f.setEnabled(b.isEnabled())};
-EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipboard.cut=function(d){d.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):b.apply(this,arguments);a.updatePasteActionStates()};mxClipboard.copy=function(b){var d=null;if(b.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{for(var d=d||b.getSelectionCells(),d=b.getExportableCells(b.model.getTopmostCells(d)),f={},k=b.createCellLookup(d),m=b.cloneCells(d,null,f),c=new mxGraphModel,e=c.getChildAt(c.getRoot(),
-0),g=0;g<m.length;g++)c.add(e,m[g]);b.updateCustomLinks(b.createCellMapping(f,k),m);mxClipboard.insertCount=1;mxClipboard.setCells(m)}a.updatePasteActionStates();return d};var f=mxClipboard.paste;mxClipboard.paste=function(b){var d=null;b.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):d=f.apply(this,arguments);a.updatePasteActionStates();return d};var d=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){d.apply(this,arguments);a.updatePasteActionStates()};
-var k=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(b,d){k.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};EditorUi.prototype.lazyZoomDelay=20;
+EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipboard.cut=function(d){d.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):b.apply(this,arguments);a.updatePasteActionStates()};mxClipboard.copy=function(b){var d=null;if(b.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{for(var d=d||b.getSelectionCells(),d=b.getExportableCells(b.model.getTopmostCells(d)),f={},l=b.createCellLookup(d),m=b.cloneCells(d,null,f),c=new mxGraphModel,e=c.getChildAt(c.getRoot(),
+0),k=0;k<m.length;k++)c.add(e,m[k]);b.updateCustomLinks(b.createCellMapping(f,l),m);mxClipboard.insertCount=1;mxClipboard.setCells(m)}a.updatePasteActionStates();return d};var f=mxClipboard.paste;mxClipboard.paste=function(b){var d=null;b.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):d=f.apply(this,arguments);a.updatePasteActionStates();return d};var d=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){d.apply(this,arguments);a.updatePasteActionStates()};
+var l=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(b,d){l.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};EditorUi.prototype.lazyZoomDelay=20;
 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(),c=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*c.width),this.scale*(this.translate.y+a.y*c.height),this.scale*a.width*c.width,
-this.scale*a.height*c.height)};a.getPreferredPageSize=function(a,c,e){a=this.getPageLayout();c=this.getPageSize();return new mxRectangle(0,0,a.width*c.width,a.height*c.height)};var b=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(c,e,b,d){if(null!=a.container&&!a.isViewer()){b=null!=b?b:0;d=null!=d?d:0;var g=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),l=mxUtils.hasScrollbars(a.container),f=a.view.translate,t=a.view.scale,n=mxRectangle.fromRectangle(g);
-n.x=n.x/t-f.x;n.y=n.y/t-f.y;n.width/=t;n.height/=t;var f=a.container.scrollTop,u=a.container.scrollLeft,C=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)C+=3;var q=a.container.offsetWidth-C,C=a.container.offsetHeight-C;c=c?Math.max(.3,Math.min(e||1,q/n.width)):t;e=(q-c*n.width)/2/c;var z=0==this.lightboxVerticalDivider?0:(C-c*n.height)/this.lightboxVerticalDivider/c;l&&(e=Math.max(e,0),z=Math.max(z,0));if(l||g.width<q||g.height<C)a.view.scaleAndTranslate(c,
-Math.floor(e-n.x),Math.floor(z-n.y)),a.container.scrollTop=f*c/t,a.container.scrollLeft=u*c/t;else if(0!=b||0!=d)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+b/t),Math.floor(g.y+d/t))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var d=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",d);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",d)});this.editor.addListener("resetGraphView",
-mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(c){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(c){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var k=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";
+this.scale*a.height*c.height)};a.getPreferredPageSize=function(a,c,e){a=this.getPageLayout();c=this.getPageSize();return new mxRectangle(0,0,a.width*c.width,a.height*c.height)};var b=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(c,e,b,d){if(null!=a.container&&!a.isViewer()){b=null!=b?b:0;d=null!=d?d:0;var k=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),g=mxUtils.hasScrollbars(a.container),f=a.view.translate,u=a.view.scale,n=mxRectangle.fromRectangle(k);
+n.x=n.x/u-f.x;n.y=n.y/u-f.y;n.width/=u;n.height/=u;var f=a.container.scrollTop,C=a.container.scrollLeft,t=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)t+=3;var q=a.container.offsetWidth-t,t=a.container.offsetHeight-t;c=c?Math.max(.3,Math.min(e||1,q/n.width)):u;e=(q-c*n.width)/2/c;var z=0==this.lightboxVerticalDivider?0:(t-c*n.height)/this.lightboxVerticalDivider/c;g&&(e=Math.max(e,0),z=Math.max(z,0));if(g||k.width<q||k.height<t)a.view.scaleAndTranslate(c,
+Math.floor(e-n.x),Math.floor(z-n.y)),a.container.scrollTop=f*c/u,a.container.scrollLeft=C*c/u;else if(0!=b||0!=d)k=a.view.translate,a.view.setTranslate(Math.floor(k.x+b/u),Math.floor(k.y+d/u))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var d=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",d);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",d)});this.editor.addListener("resetGraphView",
+mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(c){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(c){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var l=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.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left=a.isViewer()?"0":"50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var m=mxUtils.bind(this,function(){var c=
 mxUtils.getCurrentStyle(a.container);a.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=c?parseInt(c["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",m);m();var p=0,m=mxUtils.bind(this,function(a,c,e){p++;var b=document.createElement("span");b.style.paddingLeft="8px";b.style.paddingRight="8px";b.style.cursor="pointer";mxEvent.addListener(b,"click",a);null!=e&&b.setAttribute("title",
-e);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",c);b.appendChild(a);this.chromelessToolbar.appendChild(b);return b});null!=k.backBtn&&m(mxUtils.bind(this,function(a){window.location.href=k.backBtn.url;mxEvent.consume(a)}),Editor.backLargeImage,mxResources.get("back",null,"Back"));var v=m(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),y=document.createElement("div");
+e);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",c);b.appendChild(a);this.chromelessToolbar.appendChild(b);return b});null!=l.backBtn&&m(mxUtils.bind(this,function(a){window.location.href=l.backBtn.url;mxEvent.consume(a)}),Editor.backLargeImage,mxResources.get("back",null,"Back"));var v=m(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),y=document.createElement("div");
 y.style.display="inline-block";y.style.verticalAlign="top";y.style.fontFamily="Helvetica,Arial";y.style.marginTop="8px";y.style.fontSize="14px";y.style.color="#ffffff";this.chromelessToolbar.appendChild(y);var B=m(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage,mxResources.get("nextPage")),c=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(y.innerHTML="",mxUtils.write(y,mxUtils.indexOf(this.pages,
 this.currentPage)+1+" / "+this.pages.length))});v.style.paddingLeft="0px";v.style.paddingRight="4px";B.style.paddingLeft="4px";B.style.paddingRight="0px";var e=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(B.style.display="",v.style.display="",y.style.display="inline-block"):(B.style.display="none",v.style.display="none",y.style.display="none");c()});this.editor.addListener("resetGraphView",e);this.editor.addListener("pageSelected",c);m(mxUtils.bind(this,
 function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");m(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");m(mxUtils.bind(this,function(c){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(c)}),Editor.actualSizeLargeImage,
-mxResources.get("fit"));var g=null,u=null,n=mxUtils.bind(this,function(a){null!=g&&(window.clearTimeout(g),fadeThead=null);null!=u&&(window.clearTimeout(u),fadeThead2=null);g=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);g=null;u=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";u=null}),600)}),a||200)}),l=mxUtils.bind(this,function(a){null!=g&&(window.clearTimeout(g),fadeThead=null);null!=u&&(window.clearTimeout(u),
+mxResources.get("fit"));var k=null,t=null,n=mxUtils.bind(this,function(a){null!=k&&(window.clearTimeout(k),fadeThead=null);null!=t&&(window.clearTimeout(t),fadeThead2=null);k=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);k=null;t=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";t=null}),600)}),a||200)}),g=mxUtils.bind(this,function(a){null!=k&&(window.clearTimeout(k),fadeThead=null);null!=t&&(window.clearTimeout(t),
 fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var z=m(mxUtils.bind(this,function(c){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=
 null}));var e=z.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=e.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+
 this.chromelessToolbar.offsetHeight+4+"px";e=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=e.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(c)}),Editor.layersLargeImage,mxResources.get("layers")),A=a.getModel();A.addListener(mxEvent.CHANGE,function(){z.style.display=1<A.getChildCount(A.root)?"":"none"})}this.addChromelessToolbarItems(m);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||m(mxUtils.bind(this,function(c){null!=
-this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(c)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(e=0;e<this.lightboxToolbarActions.length;e++){var q=this.lightboxToolbarActions[e];m(q.fn,q.icon,q.tooltip)}null!=k.refreshBtn&&m(mxUtils.bind(this,function(a){k.refreshBtn.url?window.location.href=k.refreshBtn.url:
-window.location.reload();mxEvent.consume(a)}),Editor.refreshLargeImage,mxResources.get("refresh",null,"Refresh"));null!=k.fullscreenBtn&&window.self!==window.top&&m(mxUtils.bind(this,function(c){k.fullscreenBtn.url?a.openLink(k.fullscreenBtn.url):a.openLink(window.location.href);mxEvent.consume(c)}),Editor.fullscreenLargeImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(k.closeBtn&&window.self===window.top||a.lightbox&&("1"==urlParams.close||this.container!=document.body))&&m(mxUtils.bind(this,
-function(a){"1"==urlParams.close||k.closeBtn?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";a.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||
-l(30),n())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?n():l(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?n():l(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
-l(30)}));var E=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(c,e){this.startX=e.getGraphX();this.startY=e.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,c){},mouseUp:function(c,e){mxEvent.isTouchEvent(e.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<E&&Math.abs(this.scrollTop-a.container.scrollTop)<E&&Math.abs(this.startX-e.getGraphX())<E&&Math.abs(this.startY-e.getGraphY())<
-E&&(0<parseFloat(f.chromelessToolbar.style.opacity||0)?n():l(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var x=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),c=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*c.width;this.translate.y=a.y-(this.y0||0)*c.height}x.apply(this,arguments)};if(!a.isViewer()){var F=a.sizeDidChange;a.sizeDidChange=
-function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var c=this.getPageLayout(),e=this.getPagePadding(),b=this.getPageSize(),d=Math.ceil(2*e.x+c.width*b.width),g=Math.ceil(2*e.y+c.height*b.height),l=a.minimumGraphSize;if(null==l||l.width!=d||l.height!=g)a.minimumGraphSize=new mxRectangle(0,0,d,g);d=e.x-c.x*b.width;e=e.y-c.y*b.height;this.autoTranslate||this.view.translate.x==d&&this.view.translate.y==e?F.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=c.x,this.view.y0=
-c.y,c=a.view.translate.x,b=a.view.translate.y,a.view.setTranslate(d,e),a.container.scrollLeft+=Math.round((d-c)*a.view.scale),a.container.scrollTop+=Math.round((e-b)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var t=null;a.lazyZoom=function(c){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);c?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=
+this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(c)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(e=0;e<this.lightboxToolbarActions.length;e++){var q=this.lightboxToolbarActions[e];m(q.fn,q.icon,q.tooltip)}null!=l.refreshBtn&&m(mxUtils.bind(this,function(a){l.refreshBtn.url?window.location.href=l.refreshBtn.url:
+window.location.reload();mxEvent.consume(a)}),Editor.refreshLargeImage,mxResources.get("refresh",null,"Refresh"));null!=l.fullscreenBtn&&window.self!==window.top&&m(mxUtils.bind(this,function(c){l.fullscreenBtn.url?a.openLink(l.fullscreenBtn.url):a.openLink(window.location.href);mxEvent.consume(c)}),Editor.fullscreenLargeImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(l.closeBtn&&window.self===window.top||a.lightbox&&("1"==urlParams.close||this.container!=document.body))&&m(mxUtils.bind(this,
+function(a){"1"==urlParams.close||l.closeBtn?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";a.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||
+g(30),n())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?n():g(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?n():g(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
+g(30)}));var F=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(c,e){this.startX=e.getGraphX();this.startY=e.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,c){},mouseUp:function(c,e){mxEvent.isTouchEvent(e.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<F&&Math.abs(this.scrollTop-a.container.scrollTop)<F&&Math.abs(this.startX-e.getGraphX())<F&&Math.abs(this.startY-e.getGraphY())<
+F&&(0<parseFloat(f.chromelessToolbar.style.opacity||0)?n():g(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var x=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),c=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*c.width;this.translate.y=a.y-(this.y0||0)*c.height}x.apply(this,arguments)};if(!a.isViewer()){var E=a.sizeDidChange;a.sizeDidChange=
+function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var c=this.getPageLayout(),e=this.getPagePadding(),b=this.getPageSize(),d=Math.ceil(2*e.x+c.width*b.width),k=Math.ceil(2*e.y+c.height*b.height),g=a.minimumGraphSize;if(null==g||g.width!=d||g.height!=k)a.minimumGraphSize=new mxRectangle(0,0,d,k);d=e.x-c.x*b.width;e=e.y-c.y*b.height;this.autoTranslate||this.view.translate.x==d&&this.view.translate.y==e?E.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=c.x,this.view.y0=
+c.y,c=a.view.translate.x,b=a.view.translate.y,a.view.setTranslate(d,e),a.container.scrollLeft+=Math.round((d-c)*a.view.scale),a.container.scrollTop+=Math.round((e-b)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var u=null;a.lazyZoom=function(c){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);c?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=
 (this.view.scale+.01)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale-.01)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.01,Math.min(this.view.scale*
-this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,function(){var c=mxUtils.getOffset(a.container),e=0,d=0;null!=t&&(e=a.container.offsetWidth/2-t.x+c.x,d=a.container.offsetHeight/2-t.y+c.y);c=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=c&&(null!=b&&f.chromelessResize(!1,null,e*(this.cumulativeZoomFactor-1),d*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==e&&0==d||(a.container.scrollLeft-=e*(this.cumulativeZoomFactor-
-1),a.container.scrollTop-=d*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(c,e){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(c))for(var b=mxEvent.getSource(c);null!=b;){if(b==a.container)return t=new mxPoint(mxEvent.getClientX(c),mxEvent.getClientY(c)),a.lazyZoom(e),mxEvent.consume(c),!1;b=b.parentNode}}),a.container)};
+this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,function(){var c=mxUtils.getOffset(a.container),e=0,d=0;null!=u&&(e=a.container.offsetWidth/2-u.x+c.x,d=a.container.offsetHeight/2-u.y+c.y);c=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=c&&(null!=b&&f.chromelessResize(!1,null,e*(this.cumulativeZoomFactor-1),d*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==e&&0==d||(a.container.scrollLeft-=e*(this.cumulativeZoomFactor-
+1),a.container.scrollTop-=d*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(c,e){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(c))for(var b=mxEvent.getSource(c);null!=b;){if(b==a.container)return u=new mxPoint(mxEvent.getClientX(c),mxEvent.getClientY(c)),a.lazyZoom(e),mxEvent.consume(c),!1;b=b.parentNode}}),a.container)};
 EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(a){this.actions.get("print").funct();mxEvent.consume(a)}),Editor.printLargeImage,mxResources.get("print"))};
 EditorUi.prototype.createTemporaryGraph=function(a){a=new Graph(document.createElement("div"),null,null,a);a.resetViewOnRootChange=!1;a.setConnectable(!1);a.gridEnabled=!1;a.autoScroll=!1;a.setTooltips(!1);a.setEnabled(!1);a.container.style.visibility="hidden";a.container.style.position="absolute";a.container.style.overflow="hidden";a.container.style.height="1px";a.container.style.width="1px";return a};
 EditorUi.prototype.addChromelessClickHandler=function(){var a=urlParams.highlight;null!=a&&0<a.length&&(a="#"+a);this.editor.graph.addClickHandler(a)};EditorUi.prototype.toggleFormatPanel=function(a){null!=this.format&&(this.formatWidth=a||0<this.formatWidth?0:240,this.formatContainer.style.display=a||0<this.formatWidth?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))};
@@ -2164,28 +2164,28 @@ EditorUi.prototype.resetScrollbars=function(){var a=this.editor.graph;if(!this.e
 1;b=a.getGraphBounds();0<b.width&&0<b.height&&(b.x>a.container.scrollLeft+.9*a.container.clientWidth&&(a.container.scrollLeft=Math.min(b.x+b.width-a.container.clientWidth,b.x-10)),b.y>a.container.scrollTop+.9*a.container.clientHeight&&(a.container.scrollTop=Math.min(b.y+b.height-a.container.clientHeight,b.y-10)))}else{var b=a.getGraphBounds(),f=Math.max(b.width,a.scrollTileSize.width*a.view.scale);a.container.scrollTop=Math.floor(Math.max(0,b.y-Math.max(20,(a.container.clientHeight-Math.max(b.height,
 a.scrollTileSize.height*a.view.scale))/4)));a.container.scrollLeft=Math.floor(Math.max(0,b.x-Math.max(0,(a.container.clientWidth-f)/2)))}else a.pageVisible?(b=a.view.getBackgroundPageBounds(),a.view.setTranslate(Math.floor(Math.max(0,(a.container.clientWidth-b.width)/2)-b.x),Math.floor(Math.max(0,(a.container.clientHeight-b.height)/2)-b.y))):(b=a.getGraphBounds(),a.view.setTranslate(Math.floor(Math.max(0,Math.max(0,(a.container.clientWidth-b.width)/2)-b.x)),Math.floor(Math.max(0,Math.max(20,(a.container.clientHeight-
 b.height)/4))-b.y)))};
-EditorUi.prototype.setPageVisible=function(a){var b=this.editor.graph,f=mxUtils.hasScrollbars(b.container),d=0,k=0;f&&(d=b.view.translate.x*b.view.scale-b.container.scrollLeft,k=b.view.translate.y*b.view.scale-b.container.scrollTop);b.pageVisible=a;b.pageBreaksVisible=a;b.preferPageSize=a;b.view.validateBackground();f&&(a=b.getSelectionCells(),b.clearSelection(),b.setSelectionCells(a));b.sizeDidChange();f&&(b.container.scrollLeft=b.view.translate.x*b.view.scale-d,b.container.scrollTop=b.view.translate.y*
-b.view.scale-k);this.fireEvent(new mxEventObject("pageViewChanged"))};function ChangePageSetup(a,b,f,d){this.ui=a;this.previousColor=this.color=b;this.previousImage=this.image=f;this.previousFormat=this.format=d;this.ignoreImage=this.ignoreColor=!1}
+EditorUi.prototype.setPageVisible=function(a){var b=this.editor.graph,f=mxUtils.hasScrollbars(b.container),d=0,l=0;f&&(d=b.view.translate.x*b.view.scale-b.container.scrollLeft,l=b.view.translate.y*b.view.scale-b.container.scrollTop);b.pageVisible=a;b.pageBreaksVisible=a;b.preferPageSize=a;b.view.validateBackground();f&&(a=b.getSelectionCells(),b.clearSelection(),b.setSelectionCells(a));b.sizeDidChange();f&&(b.container.scrollLeft=b.view.translate.x*b.view.scale-d,b.container.scrollTop=b.view.translate.y*
+b.view.scale-l);this.fireEvent(new mxEventObject("pageViewChanged"))};function ChangePageSetup(a,b,f,d){this.ui=a;this.previousColor=this.color=b;this.previousImage=this.image=f;this.previousFormat=this.format=d;this.ignoreImage=this.ignoreColor=!1}
 ChangePageSetup.prototype.execute=function(){var a=this.ui.editor.graph;if(!this.ignoreColor){this.color=this.previousColor;var b=a.background;this.ui.setBackgroundColor(this.previousColor);this.previousColor=b}this.ignoreImage||(this.image=this.previousImage,b=a.backgroundImage,this.ui.setBackgroundImage(this.previousImage),this.previousImage=b);null!=this.previousFormat&&(this.format=this.previousFormat,b=a.pageFormat,this.previousFormat.width!=b.width||this.previousFormat.height!=b.height)&&(this.ui.setPageFormat(this.previousFormat),
 this.previousFormat=b);null!=this.foldingEnabled&&this.foldingEnabled!=this.ui.editor.graph.foldingEnabled&&(this.ui.setFoldingEnabled(this.foldingEnabled),this.foldingEnabled=!this.foldingEnabled)};(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.afterDecode=function(a,f,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);return d};mxCodecRegistry.register(a)})();
 EditorUi.prototype.setBackgroundColor=function(a){this.editor.graph.background=a;this.editor.graph.view.validateBackground();this.fireEvent(new mxEventObject("backgroundColorChanged"))};EditorUi.prototype.setFoldingEnabled=function(a){this.editor.graph.foldingEnabled=a;this.editor.graph.view.revalidate();this.fireEvent(new mxEventObject("foldingEnabledChanged"))};
 EditorUi.prototype.setPageFormat=function(a){this.editor.graph.pageFormat=a;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(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"),f=this.editor.undoManager,d=mxUtils.bind(this,function(){a.setEnabled(this.canUndo());b.setEnabled(this.canRedo())});f.addListener(mxEvent.ADD,d);f.addListener(mxEvent.UNDO,d);f.addListener(mxEvent.REDO,d);f.addListener(mxEvent.CLEAR,d);var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);d()};var m=this.editor.graph.cellEditor.stopEditing;
+EditorUi.prototype.addUndoListener=function(){var a=this.actions.get("undo"),b=this.actions.get("redo"),f=this.editor.undoManager,d=mxUtils.bind(this,function(){a.setEnabled(this.canUndo());b.setEnabled(this.canRedo())});f.addListener(mxEvent.ADD,d);f.addListener(mxEvent.UNDO,d);f.addListener(mxEvent.REDO,d);f.addListener(mxEvent.CLEAR,d);var l=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){l.apply(this,arguments);d()};var m=this.editor.graph.cellEditor.stopEditing;
 this.editor.graph.cellEditor.stopEditing=function(a,b){m.apply(this,arguments);d()};d()};
-EditorUi.prototype.updateActionStates=function(){var a=this.editor.graph,b=!a.isSelectionEmpty(),f=!1,d=!1,k=a.getSelectionCells();if(null!=k)for(var m=0;m<k.length;m++){var p=k[m];a.getModel().isEdge(p)&&(d=!0);a.getModel().isVertex(p)&&(f=!0);if(d&&f)break}k="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack lockUnlock solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" ");for(m=
-0;m<k.length;m++)this.actions.get(k[m]).setEnabled(b);this.actions.get("setAsDefaultStyle").setEnabled(1==a.getSelectionCount());this.actions.get("clearWaypoints").setEnabled(!a.isSelectionEmpty());this.actions.get("copySize").setEnabled(1==a.getSelectionCount());this.actions.get("turn").setEnabled(!a.isSelectionEmpty());this.actions.get("curved").setEnabled(d);this.actions.get("rotation").setEnabled(f);this.actions.get("wordWrap").setEnabled(f);this.actions.get("autosize").setEnabled(f);d=f&&1==
+EditorUi.prototype.updateActionStates=function(){var a=this.editor.graph,b=!a.isSelectionEmpty(),f=!1,d=!1,l=a.getSelectionCells();if(null!=l)for(var m=0;m<l.length;m++){var p=l[m];a.getModel().isEdge(p)&&(d=!0);a.getModel().isVertex(p)&&(f=!0);if(d&&f)break}l="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack lockUnlock solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded sharp strokeColor".split(" ");for(m=
+0;m<l.length;m++)this.actions.get(l[m]).setEnabled(b);this.actions.get("setAsDefaultStyle").setEnabled(1==a.getSelectionCount());this.actions.get("clearWaypoints").setEnabled(!a.isSelectionEmpty());this.actions.get("copySize").setEnabled(1==a.getSelectionCount());this.actions.get("turn").setEnabled(!a.isSelectionEmpty());this.actions.get("curved").setEnabled(d);this.actions.get("rotation").setEnabled(f);this.actions.get("wordWrap").setEnabled(f);this.actions.get("autosize").setEnabled(f);d=f&&1==
 a.getSelectionCount();this.actions.get("group").setEnabled(1<a.getSelectionCount()||d&&!a.isContainer(a.getSelectionCell()));this.actions.get("ungroup").setEnabled(1==a.getSelectionCount()&&(0<a.getModel().getChildCount(a.getSelectionCell())||d&&a.isContainer(a.getSelectionCell())));this.actions.get("removeFromGroup").setEnabled(d&&a.getModel().isVertex(a.getModel().getParent(a.getSelectionCell())));a.view.getState(a.getSelectionCell());this.menus.get("navigation").setEnabled(b||null!=a.view.currentRoot);
 this.actions.get("collapsible").setEnabled(f&&(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()));b=1==a.getSelectionCount()&&a.isCellFoldable(a.getSelectionCell());this.actions.get("expand").setEnabled(b);this.actions.get("collapse").setEnabled(b);
 this.actions.get("editLink").setEnabled(1==a.getSelectionCount());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);b=a.isEnabled()&&!a.isCellLocked(a.getDefaultParent());this.menus.get("layout").setEnabled(b);this.menus.get("insert").setEnabled(b);this.menus.get("direction").setEnabled(b&&f);this.menus.get("align").setEnabled(b&&
 f&&1<a.getSelectionCount());this.menus.get("distribute").setEnabled(b&&f&&1<a.getSelectionCount());this.actions.get("selectVertices").setEnabled(b);this.actions.get("selectEdges").setEnabled(b);this.actions.get("selectAll").setEnabled(b);this.actions.get("selectNone").setEnabled(b);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=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),f=this.container.clientWidth,d=this.container.clientHeight;this.container==document.body&&(f=document.body.clientWidth||document.documentElement.clientWidth,d=b?document.body.clientHeight||document.documentElement.clientHeight: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 m=Math.max(0,Math.min(this.hsplitPosition,f-this.splitSize-20)),p=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",p+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",p+=this.toolbarHeight);0<p&&!mxClient.IS_QUIRKS&&(p+=1);var v=0;if(null!=this.sidebarFooterContainer){var y=
-this.footerHeight+k,v=Math.max(0,Math.min(d-p-y,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=m+"px";this.sidebarFooterContainer.style.height=v+"px";this.sidebarFooterContainer.style.bottom=y+"px"}y=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=p+"px";this.sidebarContainer.style.width=m+"px";this.formatContainer.style.top=p+"px";this.formatContainer.style.width=y+"px";this.formatContainer.style.display=null!=this.format?"":"none";var B=this.getDiagramContainerOffset(),
-c=null!=this.hsplit.parentNode?m+this.splitSize:0;this.diagramContainer.style.left=c+B.x+"px";this.diagramContainer.style.top=p+B.y+"px";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=m+"px";this.footerContainer.style.display=0==this.footerHeight?"none":"";null!=this.tabContainer&&(this.tabContainer.style.left=c+"px");b?(this.menubarContainer.style.width=f+"px",
+EditorUi.prototype.refresh=function(a){a=null!=a?a:!0;var b=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),f=this.container.clientWidth,d=this.container.clientHeight;this.container==document.body&&(f=document.body.clientWidth||document.documentElement.clientWidth,d=b?document.body.clientHeight||document.documentElement.clientHeight:document.documentElement.clientHeight);var l=0;mxClient.IS_IOS&&!window.navigator.standalone&&window.innerHeight!=document.documentElement.clientHeight&&
+(l=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var m=Math.max(0,Math.min(this.hsplitPosition,f-this.splitSize-20)),p=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",p+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",p+=this.toolbarHeight);0<p&&!mxClient.IS_QUIRKS&&(p+=1);var v=0;if(null!=this.sidebarFooterContainer){var y=
+this.footerHeight+l,v=Math.max(0,Math.min(d-p-y,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=m+"px";this.sidebarFooterContainer.style.height=v+"px";this.sidebarFooterContainer.style.bottom=y+"px"}y=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=p+"px";this.sidebarContainer.style.width=m+"px";this.formatContainer.style.top=p+"px";this.formatContainer.style.width=y+"px";this.formatContainer.style.display=null!=this.format?"":"none";var B=this.getDiagramContainerOffset(),
+c=null!=this.hsplit.parentNode?m+this.splitSize:0;this.diagramContainer.style.left=c+B.x+"px";this.diagramContainer.style.top=p+B.y+"px";this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;this.hsplit.style.bottom=this.footerHeight+l+"px";this.hsplit.style.left=m+"px";this.footerContainer.style.display=0==this.footerHeight?"none":"";null!=this.tabContainer&&(this.tabContainer.style.left=c+"px");b?(this.menubarContainer.style.width=f+"px",
 this.toolbarContainer.style.width=this.menubarContainer.style.width,b=Math.max(0,d-this.footerHeight-this.menubarHeight-this.toolbarHeight),this.sidebarContainer.style.height=b-v+"px",this.formatContainer.style.height=b+"px",this.diagramContainer.style.width=null!=this.hsplit.parentNode?Math.max(0,f-m-this.splitSize-y)+"px":f+"px",this.footerContainer.style.width=this.menubarContainer.style.width,v=Math.max(0,d-this.footerHeight-this.menubarHeight-this.toolbarHeight),null!=this.tabContainer&&(this.tabContainer.style.width=
-this.diagramContainer.style.width,this.tabContainer.style.bottom=this.footerHeight+k+"px",v-=this.tabContainer.clientHeight),this.diagramContainer.style.height=v+"px",this.hsplit.style.height=v+"px"):(0<this.footerHeight&&(this.footerContainer.style.bottom=k+"px"),this.diagramContainer.style.right=y+"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+v+k+"px",this.formatContainer.style.bottom=this.footerHeight+k+"px",this.diagramContainer.style.bottom=this.footerHeight+k+f+"px");a&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null};
+this.diagramContainer.style.width,this.tabContainer.style.bottom=this.footerHeight+l+"px",v-=this.tabContainer.clientHeight),this.diagramContainer.style.height=v+"px",this.hsplit.style.height=v+"px"):(0<this.footerHeight&&(this.footerContainer.style.bottom=l+"px"),this.diagramContainer.style.right=y+"px",f=0,null!=this.tabContainer&&(this.tabContainer.style.bottom=this.footerHeight+l+"px",this.tabContainer.style.right=this.diagramContainer.style.right,f=this.tabContainer.clientHeight),this.sidebarContainer.style.bottom=
+this.footerHeight+v+l+"px",this.formatContainer.style.bottom=this.footerHeight+l+"px",this.diagramContainer.style.bottom=this.footerHeight+l+f+"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-2;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};
@@ -2194,35 +2194,35 @@ 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";420>screen.width&&(a.style.maxWidth=Math.max(20,screen.width-320)+"px",a.style.overflow="hidden");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,f,d){function k(a){if(null!=p){var e=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a));d(Math.max(0,v+(b?e.x-p.x:p.y-e.y)-f));mxEvent.consume(a);v!=c()&&(y=!0,B=null)}}function m(a){k(a);p=v=null}var p=null,v=null,y=!0,B=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var c=mxUtils.bind(this,function(){var c=parseInt(b?a.style.left:a.style.bottom);b||(c=c+f-this.footerHeight);return c});mxEvent.addGestureListeners(a,function(a){p=new mxPoint(mxEvent.getClientX(a),
-mxEvent.getClientY(a));v=c();y=!1;mxEvent.consume(a)});mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){if(!y&&this.hsplitClickEnabled){var e=null!=B?B-f:0;B=c();d(e);mxEvent.consume(a)}}));mxEvent.addGestureListeners(document,null,k,m);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,k,m)})};
-EditorUi.prototype.handleError=function(a,b,f,d,k){a=null!=a&&null!=a.error?a.error:a;if(null!=a||null!=b){k=mxUtils.htmlEntities(mxResources.get("unknownError"));var m=mxResources.get("ok");b=null!=b?b:mxResources.get("error");null!=a&&null!=a.message&&(k=mxUtils.htmlEntities(a.message));this.showError(b,k,m,f,null,null,null,null,null,null,null,null,d?f:null)}else null!=f&&f()};
-EditorUi.prototype.showError=function(a,b,f,d,k,m,p,v,y,B,c,e,g){a=new ErrorDialog(this,a,b,f||mxResources.get("ok"),d,k,m,p,e,v,y);b=Math.ceil(null!=b?b.length/50:1);this.showDialog(a.container,B||340,c||100+20*b,!0,!1,g);a.init()};EditorUi.prototype.showDialog=function(a,b,f,d,k,m,p,v,y,B){this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,f,d,k,m,p,v,y,B);this.dialogs.push(this.dialog)};
+EditorUi.prototype.addSplitHandler=function(a,b,f,d){function l(a){if(null!=p){var e=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a));d(Math.max(0,v+(b?e.x-p.x:p.y-e.y)-f));mxEvent.consume(a);v!=c()&&(y=!0,B=null)}}function m(a){l(a);p=v=null}var p=null,v=null,y=!0,B=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var c=mxUtils.bind(this,function(){var c=parseInt(b?a.style.left:a.style.bottom);b||(c=c+f-this.footerHeight);return c});mxEvent.addGestureListeners(a,function(a){p=new mxPoint(mxEvent.getClientX(a),
+mxEvent.getClientY(a));v=c();y=!1;mxEvent.consume(a)});mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){if(!y&&this.hsplitClickEnabled){var e=null!=B?B-f:0;B=c();d(e);mxEvent.consume(a)}}));mxEvent.addGestureListeners(document,null,l,m);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,l,m)})};
+EditorUi.prototype.handleError=function(a,b,f,d,l){a=null!=a&&null!=a.error?a.error:a;if(null!=a||null!=b){l=mxUtils.htmlEntities(mxResources.get("unknownError"));var m=mxResources.get("ok");b=null!=b?b:mxResources.get("error");null!=a&&null!=a.message&&(l=mxUtils.htmlEntities(a.message));this.showError(b,l,m,f,null,null,null,null,null,null,null,null,d?f:null)}else null!=f&&f()};
+EditorUi.prototype.showError=function(a,b,f,d,l,m,p,v,y,B,c,e,k){a=new ErrorDialog(this,a,b,f||mxResources.get("ok"),d,l,m,p,e,v,y);b=Math.ceil(null!=b?b.length/50:1);this.showDialog(a.container,B||340,c||100+20*b,!0,!1,k);a.init()};EditorUi.prototype.showDialog=function(a,b,f,d,l,m,p,v,y,B){this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,f,d,l,m,p,v,y,B);this.dialogs.push(this.dialog)};
 EditorUi.prototype.hideDialog=function(a,b){if(null!=this.dialogs&&0<this.dialogs.length){var f=this.dialogs.pop();0==f.close(a,b)?this.dialogs.push(f):(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.pickColor=function(a,b){var f=this.editor.graph,d=f.cellEditor.saveSelection(),k=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12)),m=new ColorDialog(this,a||"none",function(a){f.cellEditor.restoreSelection(d);b(a)},function(){f.cellEditor.restoreSelection(d)});this.showDialog(m.container,230,k,!0,!1);m.init()};
+(mxUtils.clearSelection(),this.editor.graph.container.focus())}),0))}};EditorUi.prototype.pickColor=function(a,b){var f=this.editor.graph,d=f.cellEditor.saveSelection(),l=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12)),m=new ColorDialog(this,a||"none",function(a){f.cellEditor.restoreSelection(d);b(a)},function(){f.cellEditor.restoreSelection(d)});this.showDialog(m.container,230,l,!0,!1);m.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 f=a.indexOf("&lt;mxGraphModel ");if(0<=f){var d=a.lastIndexOf("&lt;/mxGraphModel&gt;");d>f&&(b=a.substring(f,d+21).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}}catch(k){}return b};
+EditorUi.prototype.extractGraphModelFromHtml=function(a){var b=null;try{var f=a.indexOf("&lt;mxGraphModel ");if(0<=f){var d=a.lastIndexOf("&lt;/mxGraphModel&gt;");d>f&&(b=a.substring(f,d+21).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}}catch(l){}return b};
 EditorUi.prototype.extractGraphModelFromEvent=function(a){var b=null,f=null;null!=a&&(a=null!=a.dataTransfer?a.dataTransfer:a.clipboardData,null!=a&&(10==document.documentMode||11==document.documentMode?f=a.getData("Text"):(f=0<=mxUtils.indexOf(a.types,"text/html")?a.getData("text/html"):null,mxUtils.indexOf(a.types,null==f||0==f.length)&&(f=a.getData("text/plain"))),null!=f&&(f=Graph.zapGremlins(mxUtils.trim(f)),a=this.extractGraphModelFromHtml(f),null!=a&&(f=a))));null!=f&&this.isCompatibleString(f)&&
 (b=f);return b};EditorUi.prototype.isCompatibleString=function(a){return!1};EditorUi.prototype.saveFile=function(a){a||null==this.editor.filename?(a=new FilenameDialog(this,this.editor.getOrCreateFilename(),mxResources.get("save"),mxUtils.bind(this,function(a){this.save(a)}),null,mxUtils.bind(this,function(a){if(null!=a&&0<a.length)return!0;mxUtils.confirm(mxResources.get("invalidName"));return!1})),this.showDialog(a.container,300,100,!0,!0),a.init()):this.save(this.editor.getOrCreateFilename())};
 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(f){this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("errorSavingFile")))}}};
-EditorUi.prototype.executeLayout=function(a,b,f){var d=this.editor.graph;if(d.isEnabled()){d.getModel().beginUpdate();try{a()}catch(k){throw k;}finally{this.allowAnimation&&b&&0>navigator.userAgent.indexOf("Camino")?(a=new mxMorphing(d),a.addListener(mxEvent.DONE,mxUtils.bind(this,function(){d.getModel().endUpdate();null!=f&&f()})),a.startAnimation()):(d.getModel().endUpdate(),null!=f&&f())}}};
-EditorUi.prototype.showImageDialog=function(a,b,f,d){d=this.editor.graph.cellEditor;var k=d.saveSelection(),m=mxUtils.prompt(a,b);d.restoreSelection(k);if(null!=m&&0<m.length){var p=new Image;p.onload=function(){f(m,p.width,p.height)};p.onerror=function(){f(null);mxUtils.alert(mxResources.get("fileNotFound"))};p.src=m}else f(null)};EditorUi.prototype.showLinkDialog=function(a,b,f){a=new LinkDialog(this,a,b,f);this.showDialog(a.container,420,90,!0,!0);a.init()};
+EditorUi.prototype.executeLayout=function(a,b,f){var d=this.editor.graph;if(d.isEnabled()){d.getModel().beginUpdate();try{a()}catch(l){throw l;}finally{this.allowAnimation&&b&&0>navigator.userAgent.indexOf("Camino")?(a=new mxMorphing(d),a.addListener(mxEvent.DONE,mxUtils.bind(this,function(){d.getModel().endUpdate();null!=f&&f()})),a.startAnimation()):(d.getModel().endUpdate(),null!=f&&f())}}};
+EditorUi.prototype.showImageDialog=function(a,b,f,d){d=this.editor.graph.cellEditor;var l=d.saveSelection(),m=mxUtils.prompt(a,b);d.restoreSelection(l);if(null!=m&&0<m.length){var p=new Image;p.onload=function(){f(m,p.width,p.height)};p.onerror=function(){f(null);mxUtils.alert(mxResources.get("fileNotFound"))};p.src=m}else f(null)};EditorUi.prototype.showLinkDialog=function(a,b,f){a=new LinkDialog(this,a,b,f);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){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 b=mxUtils.prompt(mxResources.get("backgroundImage"),"");if(null!=b&&0<b.length){var f=new Image;f.onload=function(){a(new mxImage(b,f.width,f.height))};f.onerror=function(){a(null);mxUtils.alert(mxResources.get("fileNotFound"))};f.src=b}else 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,f){mxUtils.confirm(a)?null!=b&&b():null!=f&&f()};
 EditorUi.prototype.createOutline=function(a){var b=new mxOutline(this.editor.graph);b.border=20;mxEvent.addListener(window,"resize",function(){b.update()});this.addListener("pageFormatChanged",function(){b.update()});return b};EditorUi.prototype.altShiftActions={67:"clearWaypoints",65:"connectionArrows",76:"editLink",80:"connectionPoints",84:"editTooltip",86:"pasteSize",88:"copySize"};
-EditorUi.prototype.createKeyHandler=function(a){function b(a,c,b){p.push(function(){if(!d.isSelectionEmpty()&&d.isEnabled())if(c=null!=c?c:1,b){d.getModel().beginUpdate();try{for(var e=d.getSelectionCells(),g=0;g<e.length;g++)if(d.getModel().isVertex(e[g])&&d.isCellResizable(e[g])){var f=d.getCellGeometry(e[g]);null!=f&&(f=f.clone(),37==a?f.width=Math.max(0,f.width-c):38==a?f.height=Math.max(0,f.height-c):39==a?f.width+=c:40==a&&(f.height+=c),d.getModel().setGeometry(e[g],f))}}finally{d.getModel().endUpdate()}}else e=
-d.getSelectionCell(),g=d.model.getParent(e),f=null,1==d.getSelectionCount()&&d.model.isVertex(e)&&null!=d.layoutManager&&!d.isCellLocked(e)&&(f=d.layoutManager.getLayout(g)),null!=f&&f.constructor==mxStackLayout?(f=g.getIndex(e),37==a||38==a?d.model.add(g,e,Math.max(0,f-1)):39!=a&&40!=a||d.model.add(g,e,Math.min(d.model.getChildCount(g),f+1))):(g=e=0,37==a?e=-c:38==a?g=-c:39==a?e=c:40==a&&(g=c),d.moveCells(d.getMovableCells(d.getSelectionCells()),e,g))});null!=v&&window.clearTimeout(v);v=window.setTimeout(function(){if(0<
-p.length){d.getModel().beginUpdate();try{for(var a=0;a<p.length;a++)p[a]();p=[]}finally{d.getModel().endUpdate()}d.scrollCellToVisible(d.getSelectionCell())}},200)}var f=this,d=this.editor.graph,k=new mxKeyHandler(d),m=k.isEventIgnored;k.isEventIgnored=function(a){return(!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)&&m.apply(this,arguments)};k.isEnabledForEvent=function(a){return!mxEvent.isConsumed(a)&&this.isGraphEvent(a)&&this.isEnabled()&&(null==f.dialogs||0==f.dialogs.length)};k.isControlDown=function(a){return mxEvent.isControlDown(a)||mxClient.IS_MAC&&a.metaKey};var p=[],v=null,y={37:mxConstants.DIRECTION_WEST,38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},B=k.getFunction;mxKeyHandler.prototype.getFunction=function(a){if(d.isEnabled()){if(mxEvent.isShiftDown(a)&&
+EditorUi.prototype.createKeyHandler=function(a){function b(a,c,b){p.push(function(){if(!d.isSelectionEmpty()&&d.isEnabled())if(c=null!=c?c:1,b){d.getModel().beginUpdate();try{for(var e=d.getSelectionCells(),k=0;k<e.length;k++)if(d.getModel().isVertex(e[k])&&d.isCellResizable(e[k])){var f=d.getCellGeometry(e[k]);null!=f&&(f=f.clone(),37==a?f.width=Math.max(0,f.width-c):38==a?f.height=Math.max(0,f.height-c):39==a?f.width+=c:40==a&&(f.height+=c),d.getModel().setGeometry(e[k],f))}}finally{d.getModel().endUpdate()}}else e=
+d.getSelectionCell(),k=d.model.getParent(e),f=null,1==d.getSelectionCount()&&d.model.isVertex(e)&&null!=d.layoutManager&&!d.isCellLocked(e)&&(f=d.layoutManager.getLayout(k)),null!=f&&f.constructor==mxStackLayout?(f=k.getIndex(e),37==a||38==a?d.model.add(k,e,Math.max(0,f-1)):39!=a&&40!=a||d.model.add(k,e,Math.min(d.model.getChildCount(k),f+1))):(k=e=0,37==a?e=-c:38==a?k=-c:39==a?e=c:40==a&&(k=c),d.moveCells(d.getMovableCells(d.getSelectionCells()),e,k))});null!=v&&window.clearTimeout(v);v=window.setTimeout(function(){if(0<
+p.length){d.getModel().beginUpdate();try{for(var a=0;a<p.length;a++)p[a]();p=[]}finally{d.getModel().endUpdate()}d.scrollCellToVisible(d.getSelectionCell())}},200)}var f=this,d=this.editor.graph,l=new mxKeyHandler(d),m=l.isEventIgnored;l.isEventIgnored=function(a){return(!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)&&m.apply(this,arguments)};l.isEnabledForEvent=function(a){return!mxEvent.isConsumed(a)&&this.isGraphEvent(a)&&this.isEnabled()&&(null==f.dialogs||0==f.dialogs.length)};l.isControlDown=function(a){return mxEvent.isControlDown(a)||mxClient.IS_MAC&&a.metaKey};var p=[],v=null,y={37:mxConstants.DIRECTION_WEST,38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},B=l.getFunction;mxKeyHandler.prototype.getFunction=function(a){if(d.isEnabled()){if(mxEvent.isShiftDown(a)&&
 mxEvent.isAltDown(a)){var c=f.actions.get(f.altShiftActions[a.keyCode]);if(null!=c)return c.funct}if(9==a.keyCode&&mxEvent.isAltDown(a))return mxEvent.isShiftDown(a)?function(){d.selectParentCell()}:function(){d.selectChildCell()};if(null!=y[a.keyCode]&&!d.isSelectionEmpty())if(!this.isControlDown(a)&&mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){if(d.model.isVertex(d.getSelectionCell()))return function(){var c=d.connectVertex(d.getSelectionCell(),y[a.keyCode],d.defaultEdgeLength,a,!0);null!=c&&0<
-c.length&&(1==c.length&&d.model.isEdge(c[0])?d.setSelectionCell(d.model.getTerminal(c[0],!1)):d.setSelectionCell(c[c.length-1]),d.scrollCellToVisible(d.getSelectionCell()),null!=f.hoverIcons&&f.hoverIcons.update(d.view.getState(d.getSelectionCell())))}}else return this.isControlDown(a)?function(){b(a.keyCode,mxEvent.isShiftDown(a)?d.gridSize:null,!0)}:function(){b(a.keyCode,mxEvent.isShiftDown(a)?d.gridSize:null)}}return B.apply(this,arguments)};k.bindAction=mxUtils.bind(this,function(a,c,b,d){var e=
-this.actions.get(b);null!=e&&(b=function(){e.isEnabled()&&e.funct()},c?d?k.bindControlShiftKey(a,b):k.bindControlKey(a,b):d?k.bindShiftKey(a,b):k.bindKey(a,b))});var c=k.escape;k.escape=function(a){c.apply(this,arguments)};k.enter=function(){};k.bindControlShiftKey(36,function(){d.exitGroup()});k.bindControlShiftKey(35,function(){d.enterGroup()});k.bindKey(36,function(){d.home()});k.bindKey(35,function(){d.refresh()});k.bindAction(107,!0,"zoomIn");k.bindAction(109,!0,"zoomOut");k.bindAction(80,!0,
-"print");k.bindAction(79,!0,"outline",!0);k.bindAction(112,!1,"about");if(!this.editor.chromeless||this.editor.editable)k.bindControlKey(36,function(){d.isEnabled()&&d.foldCells(!0)}),k.bindControlKey(35,function(){d.isEnabled()&&d.foldCells(!1)}),k.bindControlKey(13,function(){d.isEnabled()&&d.setSelectionCells(d.duplicateCells(d.getSelectionCells(),!1))}),k.bindAction(8,!1,"delete"),k.bindAction(8,!0,"deleteAll"),k.bindAction(46,!1,"delete"),k.bindAction(46,!0,"deleteAll"),k.bindAction(72,!0,"resetView"),
-k.bindAction(72,!0,"fitWindow",!0),k.bindAction(74,!0,"fitPage"),k.bindAction(74,!0,"fitTwoPages",!0),k.bindAction(48,!0,"customZoom"),k.bindAction(82,!0,"turn"),k.bindAction(82,!0,"clearDefaultStyle",!0),k.bindAction(83,!0,"save"),k.bindAction(83,!0,"saveAs",!0),k.bindAction(65,!0,"selectAll"),k.bindAction(65,!0,"selectNone",!0),k.bindAction(73,!0,"selectVertices",!0),k.bindAction(69,!0,"selectEdges",!0),k.bindAction(69,!0,"editStyle"),k.bindAction(66,!0,"bold"),k.bindAction(66,!0,"toBack",!0),k.bindAction(70,
-!0,"toFront",!0),k.bindAction(68,!0,"duplicate"),k.bindAction(68,!0,"setAsDefaultStyle",!0),k.bindAction(90,!0,"undo"),k.bindAction(89,!0,"autosize",!0),k.bindAction(88,!0,"cut"),k.bindAction(67,!0,"copy"),k.bindAction(86,!0,"paste"),k.bindAction(71,!0,"group"),k.bindAction(77,!0,"editData"),k.bindAction(71,!0,"grid",!0),k.bindAction(73,!0,"italic"),k.bindAction(76,!0,"lockUnlock"),k.bindAction(76,!0,"layers",!0),k.bindAction(80,!0,"formatPanel",!0),k.bindAction(85,!0,"underline"),k.bindAction(85,
-!0,"ungroup",!0),k.bindAction(190,!0,"superscript"),k.bindAction(188,!0,"subscript"),k.bindKey(13,function(){d.isEnabled()&&d.startEditingAtCell()}),k.bindKey(113,function(){d.isEnabled()&&d.startEditingAtCell()});mxClient.IS_WIN?k.bindAction(89,!0,"redo"):k.bindAction(90,!0,"redo",!0);return k};
+c.length&&(1==c.length&&d.model.isEdge(c[0])?d.setSelectionCell(d.model.getTerminal(c[0],!1)):d.setSelectionCell(c[c.length-1]),d.scrollCellToVisible(d.getSelectionCell()),null!=f.hoverIcons&&f.hoverIcons.update(d.view.getState(d.getSelectionCell())))}}else return this.isControlDown(a)?function(){b(a.keyCode,mxEvent.isShiftDown(a)?d.gridSize:null,!0)}:function(){b(a.keyCode,mxEvent.isShiftDown(a)?d.gridSize:null)}}return B.apply(this,arguments)};l.bindAction=mxUtils.bind(this,function(a,c,b,d){var e=
+this.actions.get(b);null!=e&&(b=function(){e.isEnabled()&&e.funct()},c?d?l.bindControlShiftKey(a,b):l.bindControlKey(a,b):d?l.bindShiftKey(a,b):l.bindKey(a,b))});var c=l.escape;l.escape=function(a){c.apply(this,arguments)};l.enter=function(){};l.bindControlShiftKey(36,function(){d.exitGroup()});l.bindControlShiftKey(35,function(){d.enterGroup()});l.bindKey(36,function(){d.home()});l.bindKey(35,function(){d.refresh()});l.bindAction(107,!0,"zoomIn");l.bindAction(109,!0,"zoomOut");l.bindAction(80,!0,
+"print");l.bindAction(79,!0,"outline",!0);l.bindAction(112,!1,"about");if(!this.editor.chromeless||this.editor.editable)l.bindControlKey(36,function(){d.isEnabled()&&d.foldCells(!0)}),l.bindControlKey(35,function(){d.isEnabled()&&d.foldCells(!1)}),l.bindControlKey(13,function(){d.isEnabled()&&d.setSelectionCells(d.duplicateCells(d.getSelectionCells(),!1))}),l.bindAction(8,!1,"delete"),l.bindAction(8,!0,"deleteAll"),l.bindAction(46,!1,"delete"),l.bindAction(46,!0,"deleteAll"),l.bindAction(72,!0,"resetView"),
+l.bindAction(72,!0,"fitWindow",!0),l.bindAction(74,!0,"fitPage"),l.bindAction(74,!0,"fitTwoPages",!0),l.bindAction(48,!0,"customZoom"),l.bindAction(82,!0,"turn"),l.bindAction(82,!0,"clearDefaultStyle",!0),l.bindAction(83,!0,"save"),l.bindAction(83,!0,"saveAs",!0),l.bindAction(65,!0,"selectAll"),l.bindAction(65,!0,"selectNone",!0),l.bindAction(73,!0,"selectVertices",!0),l.bindAction(69,!0,"selectEdges",!0),l.bindAction(69,!0,"editStyle"),l.bindAction(66,!0,"bold"),l.bindAction(66,!0,"toBack",!0),l.bindAction(70,
+!0,"toFront",!0),l.bindAction(68,!0,"duplicate"),l.bindAction(68,!0,"setAsDefaultStyle",!0),l.bindAction(90,!0,"undo"),l.bindAction(89,!0,"autosize",!0),l.bindAction(88,!0,"cut"),l.bindAction(67,!0,"copy"),l.bindAction(86,!0,"paste"),l.bindAction(71,!0,"group"),l.bindAction(77,!0,"editData"),l.bindAction(71,!0,"grid",!0),l.bindAction(73,!0,"italic"),l.bindAction(76,!0,"lockUnlock"),l.bindAction(76,!0,"layers",!0),l.bindAction(80,!0,"formatPanel",!0),l.bindAction(85,!0,"underline"),l.bindAction(85,
+!0,"ungroup",!0),l.bindAction(190,!0,"superscript"),l.bindAction(188,!0,"subscript"),l.bindKey(13,function(){d.isEnabled()&&d.startEditingAtCell()}),l.bindKey(113,function(){d.isEnabled()&&d.startEditingAtCell()});mxClient.IS_WIN?l.bindAction(89,!0,"redo"):l.bindAction(90,!0,"redo",!0);return l};
 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])};"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(f){for(var d=0;d<a.length;d++)f=f.replace(new RegExp("&"+a[d][0]+";","g"),"&#"+a[d][1]+";");return b(f)}})();
@@ -2230,26 +2230,26 @@ Date.prototype.toISOString||function(){function a(a){a=String(a);1===a.length&&(
 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="#e0e0e0";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,f){return null};
-Graph=function(a,b,f,d,k,m){mxGraph.call(this,a,b,f,d);this.themes=k||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=m?m:!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){var c=this.view.getState(a);a=
+Graph=function(a,b,f,d,l,m){mxGraph.call(this,a,b,f,d);this.themes=l||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=m?m:!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){var c=this.view.getState(a);a=
 null!=c?c.style:this.getCellStyle(a);return null!=a?"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var p=null,v=null,y=null,B=null,c=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,e){if("mouseDown"==e.getProperty("eventName")&&this.isEnabled()){var b=e.getProperty("event");if(!mxEvent.isControlDown(b.getEvent())&&!mxEvent.isShiftDown(b.getEvent())){var d=b.getState();null!=d&&this.model.isEdge(d.cell)&&(p=new mxPoint(b.getGraphX(),b.getGraphY()),
 c=this.isCellSelected(d.cell),y=d,v=b,null!=d.text&&null!=d.text.boundingBox&&mxUtils.contains(d.text.boundingBox,b.getGraphX(),b.getGraphY())?B=mxEvent.LABEL_HANDLE:(d=this.selectionCellsHandler.getHandler(d.cell),null!=d&&null!=d.bends&&0<d.bends.length&&(B=d.getHandleForEvent(b))))}}}));this.addMouseListener({mouseDown:function(a,c){},mouseMove:mxUtils.bind(this,function(a,e){var b=this.selectionCellsHandler.handlers.map,d;for(d in b)if(null!=b[d].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&
-!mxEvent.isControlDown(e.getEvent())&&!mxEvent.isShiftDown(e.getEvent())&&!mxEvent.isAltDown(e.getEvent()))if(d=this.tolerance,null!=p&&null!=y&&null!=v){if(b=y,Math.abs(p.x-e.getGraphX())>d||Math.abs(p.y-e.getGraphY())>d){this.isCellSelected(b.cell)||this.setSelectionCell(b.cell);var g=this.selectionCellsHandler.getHandler(b.cell);if(null!=g&&null!=g.bends&&0<g.bends.length){var f=g.getHandleForEvent(v),l=this.view.getEdgeStyle(b);d=l==mxEdgeStyle.EntityRelation;c||B!=mxEvent.LABEL_HANDLE||(f=B);
-if(d&&0!=f&&f!=g.bends.length-1&&f!=mxEvent.LABEL_HANDLE)!d||null==b.visibleSourceState&&null==b.visibleTargetState||(this.graphHandler.reset(),e.consume());else if(f==mxEvent.LABEL_HANDLE||0==f||null!=b.visibleSourceState||f==g.bends.length-1||null!=b.visibleTargetState)d||f==mxEvent.LABEL_HANDLE||(d=b.absolutePoints,null!=d&&(null==l&&null==f||l==mxEdgeStyle.OrthConnector)&&(f=B,null==f&&(f=new mxRectangle(p.x,p.y),f.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(f,d[0].x,d[0].y)?
-f=0:mxUtils.contains(f,d[d.length-1].x,d[d.length-1].y)?f=g.bends.length-1:null!=l&&(2==d.length||3==d.length&&(0==Math.round(d[0].x-d[1].x)&&0==Math.round(d[1].x-d[2].x)||0==Math.round(d[0].y-d[1].y)&&0==Math.round(d[1].y-d[2].y)))?f=2:(f=mxUtils.findNearestSegment(b,p.x,p.y),f=null==l?mxEvent.VIRTUAL_HANDLE-f:f+1))),null==f&&(f=mxEvent.VIRTUAL_HANDLE)),g.start(e.getGraphX(),e.getGraphX(),f),B=p=v=y=null,c=!1,e.consume(),this.graphHandler.reset()}}}else if(b=e.getState(),null!=b&&this.model.isEdge(b.cell)){g=
-null;d=b.absolutePoints;if(null!=d)if(f=new mxRectangle(e.getGraphX(),e.getGraphY()),f.grow(mxEdgeHandler.prototype.handleImage.width/2),null!=b.text&&null!=b.text.boundingBox&&mxUtils.contains(b.text.boundingBox,e.getGraphX(),e.getGraphY()))g="move";else if(mxUtils.contains(f,d[0].x,d[0].y)||mxUtils.contains(f,d[d.length-1].x,d[d.length-1].y))g="pointer";else if(null!=b.visibleSourceState||null!=b.visibleTargetState)l=this.view.getEdgeStyle(b),g="crosshair",l!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(b)&&
-(l=mxUtils.findNearestSegment(b,e.getGraphX(),e.getGraphY()),l<d.length-1&&0<=l&&(g=0==Math.round(d[l].x-d[l+1].x)?"col-resize":"row-resize"));null!=g&&b.setCursor(g)}}),mouseUp:mxUtils.bind(this,function(a,c){B=p=v=y=null})})}this.cellRenderer.getLabelValue=function(a){var c=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtmlLabel(a.cell)&&(c=1!=a.style.html?mxUtils.htmlEntities(c,!1):a.view.graph.sanitizeHtml(c));return c};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);
+!mxEvent.isControlDown(e.getEvent())&&!mxEvent.isShiftDown(e.getEvent())&&!mxEvent.isAltDown(e.getEvent()))if(d=this.tolerance,null!=p&&null!=y&&null!=v){if(b=y,Math.abs(p.x-e.getGraphX())>d||Math.abs(p.y-e.getGraphY())>d){this.isCellSelected(b.cell)||this.setSelectionCell(b.cell);var k=this.selectionCellsHandler.getHandler(b.cell);if(null!=k&&null!=k.bends&&0<k.bends.length){var g=k.getHandleForEvent(v),f=this.view.getEdgeStyle(b);d=f==mxEdgeStyle.EntityRelation;c||B!=mxEvent.LABEL_HANDLE||(g=B);
+if(d&&0!=g&&g!=k.bends.length-1&&g!=mxEvent.LABEL_HANDLE)!d||null==b.visibleSourceState&&null==b.visibleTargetState||(this.graphHandler.reset(),e.consume());else if(g==mxEvent.LABEL_HANDLE||0==g||null!=b.visibleSourceState||g==k.bends.length-1||null!=b.visibleTargetState)d||g==mxEvent.LABEL_HANDLE||(d=b.absolutePoints,null!=d&&(null==f&&null==g||f==mxEdgeStyle.OrthConnector)&&(g=B,null==g&&(g=new mxRectangle(p.x,p.y),g.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(g,d[0].x,d[0].y)?
+g=0:mxUtils.contains(g,d[d.length-1].x,d[d.length-1].y)?g=k.bends.length-1:null!=f&&(2==d.length||3==d.length&&(0==Math.round(d[0].x-d[1].x)&&0==Math.round(d[1].x-d[2].x)||0==Math.round(d[0].y-d[1].y)&&0==Math.round(d[1].y-d[2].y)))?g=2:(g=mxUtils.findNearestSegment(b,p.x,p.y),g=null==f?mxEvent.VIRTUAL_HANDLE-g:g+1))),null==g&&(g=mxEvent.VIRTUAL_HANDLE)),k.start(e.getGraphX(),e.getGraphX(),g),B=p=v=y=null,c=!1,e.consume(),this.graphHandler.reset()}}}else if(b=e.getState(),null!=b&&this.model.isEdge(b.cell)){k=
+null;d=b.absolutePoints;if(null!=d)if(g=new mxRectangle(e.getGraphX(),e.getGraphY()),g.grow(mxEdgeHandler.prototype.handleImage.width/2),null!=b.text&&null!=b.text.boundingBox&&mxUtils.contains(b.text.boundingBox,e.getGraphX(),e.getGraphY()))k="move";else if(mxUtils.contains(g,d[0].x,d[0].y)||mxUtils.contains(g,d[d.length-1].x,d[d.length-1].y))k="pointer";else if(null!=b.visibleSourceState||null!=b.visibleTargetState)f=this.view.getEdgeStyle(b),k="crosshair",f!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(b)&&
+(f=mxUtils.findNearestSegment(b,e.getGraphX(),e.getGraphY()),f<d.length-1&&0<=f&&(k=0==Math.round(d[f].x-d[f+1].x)?"col-resize":"row-resize"));null!=k&&b.setCursor(k)}}),mouseUp:mxUtils.bind(this,function(a,c){B=p=v=y=null})})}this.cellRenderer.getLabelValue=function(a){var c=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtmlLabel(a.cell)&&(c=1!=a.style.html?mxUtils.htmlEntities(c,!1):a.view.graph.sanitizeHtml(c));return c};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,c){return!1};this.alternateEdgeStyle="vertical";null==d&&this.loadStylesheet();var e=this.graphHandler.getGuideStates;
-this.graphHandler.getGuideStates=function(){var a=e.apply(this,arguments);if(this.graph.pageVisible){for(var c=[],b=this.graph.pageFormat,d=this.graph.pageScale,g=b.width*d,b=b.height*d,d=this.graph.view.translate,f=this.graph.view.scale,l=this.graph.getPageLayout(),t=0;t<l.width;t++)c.push(new mxRectangle(((l.x+t)*g+d.x)*f,(l.y*b+d.y)*f,g*f,b*f));for(t=0;t<l.height;t++)c.push(new mxRectangle((l.x*g+d.x)*f,((l.y+t)*b+d.y)*f,g*f,b*f));a=c.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=
+this.graphHandler.getGuideStates=function(){var a=e.apply(this,arguments);if(this.graph.pageVisible){for(var c=[],b=this.graph.pageFormat,d=this.graph.pageScale,k=b.width*d,b=b.height*d,d=this.graph.view.translate,g=this.graph.view.scale,f=this.graph.getPageLayout(),u=0;u<f.width;u++)c.push(new mxRectangle(((f.x+u)*k+d.x)*g,(f.y*b+d.y)*g,k*g,b*g));for(u=0;u<f.height;u++)c.push(new mxRectangle((f.x*k+d.x)*g,((f.y+u)*b+d.y)*g,k*g,b*g));a=c.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=
 mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(a,c){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)};this.graphHandler.getCells=function(a){for(var c=mxGraphHandler.prototype.getCells.apply(this,arguments),b=[],e=0;e<c.length;e++){var d=this.graph.view.getState(c[e]),
 d=null!=d?d.style:this.graph.getCellStyle(c[e]);"1"==mxUtils.getValue(d,"part","0")?(d=this.graph.model.getParent(c[e]),this.graph.model.isVertex(d)&&0>mxUtils.indexOf(c,d)&&b.push(d)):b.push(c[e])}return b};this.connectionHandler.createTargetVertex=function(a,c){var b=this.graph.view.getState(c),b=null!=b?b.style:this.graph.getCellStyle(c);mxUtils.getValue(b,"part",!1)&&(b=this.graph.model.getParent(c),this.graph.model.isVertex(b)&&(c=b));return mxConnectionHandler.prototype.createTargetVertex.apply(this,
-arguments)};var g=new mxRubberband(this);this.getRubberband=function(){return g};var u=(new Date).getTime(),n=0,l=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;l.apply(this,arguments);a!=this.currentState?(u=(new Date).getTime(),n=0):n=(new Date).getTime()-u};var z=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<n||(null==
-this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&z.apply(this,arguments)};var A=this.isToggleEvent;this.isToggleEvent=function(a){return A.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a)};var q=g.isForceRubberbandEvent;g.isForceRubberbandEvent=function(a){return q.apply(this,arguments)||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 E=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(E=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=E)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var x=this.click;this.click=
+arguments)};var k=new mxRubberband(this);this.getRubberband=function(){return k};var t=(new Date).getTime(),n=0,g=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;g.apply(this,arguments);a!=this.currentState?(t=(new Date).getTime(),n=0):n=(new Date).getTime()-t};var z=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<n||(null==
+this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&z.apply(this,arguments)};var A=this.isToggleEvent;this.isToggleEvent=function(a){return A.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a)};var q=k.isForceRubberbandEvent;k.isForceRubberbandEvent=function(a){return q.apply(this,arguments)||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 F=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(F=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=F)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var x=this.click;this.click=
 function(a){var c=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!c||a.isConsumed())return x.apply(this,arguments);var b=c?a.sourceState.cell:a.getCell();null!=b&&(b=this.getLinkForCell(b),null!=b&&(this.isCustomLink(b)?this.customLinkClicked(b):this.openLink(b)));this.isEnabled()&&c&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var c=null==a.state&&null!=a.sourceState&&
-this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(c?a.sourceState.cell:a.getCell())};var F=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!=this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return F.apply(this,arguments)};this.selectRegion=function(a,c){var b=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(b,c);return b};this.getAllCells=function(a,c,b,e,d,g){g=null!=g?g:[];
-if(0<b||0<e){var f=this.getModel(),l=a+b,t=c+e;null==d&&(d=this.getCurrentRoot(),null==d&&(d=f.getRoot()));if(null!=d)for(var n=f.getChildCount(d),u=0;u<n;u++){var q=f.getChildAt(d,u),C=this.view.getState(q);if(null!=C&&this.isCellVisible(q)&&"1"!=mxUtils.getValue(C.style,"locked","0")){var ca=mxUtils.getValue(C.style,mxConstants.STYLE_ROTATION)||0;0!=ca&&(C=mxUtils.getBoundingBox(C,ca));(f.isEdge(q)||f.isVertex(q))&&C.x>=a&&C.y+C.height<=t&&C.y>=c&&C.x+C.width<=l&&g.push(q);this.getAllCells(a,c,
-b,e,q,g)}}}return g};var t=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,c,b){return this.graph.isCellSelected(a)?!1:t.apply(this,arguments)};this.isCellLocked=function(a){for(a=this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var C=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,c){if("mouseDown"==c.getProperty("eventName")){var b=
-c.getProperty("event").getState();C=null==b||this.isSelectionEmpty()||this.isCellSelected(b.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,c){if(!mxEvent.isMultiTouchEvent(c)){var b=c.getProperty("event"),e=c.getProperty("cell");null==e?(b=mxUtils.convertPoint(this.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),g.start(b.x,b.y)):null!=C?this.addSelectionCells(C):1<this.getSelectionCount()&&this.isCellSelected(e)&&this.removeSelectionCell(e);
+this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(c?a.sourceState.cell:a.getCell())};var E=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!=this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return E.apply(this,arguments)};this.selectRegion=function(a,c){var b=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(b,c);return b};this.getAllCells=function(a,c,b,e,d,k){k=null!=k?k:[];
+if(0<b||0<e){var g=this.getModel(),f=a+b,u=c+e;null==d&&(d=this.getCurrentRoot(),null==d&&(d=g.getRoot()));if(null!=d)for(var n=g.getChildCount(d),t=0;t<n;t++){var q=g.getChildAt(d,t),C=this.view.getState(q);if(null!=C&&this.isCellVisible(q)&&"1"!=mxUtils.getValue(C.style,"locked","0")){var ca=mxUtils.getValue(C.style,mxConstants.STYLE_ROTATION)||0;0!=ca&&(C=mxUtils.getBoundingBox(C,ca));(g.isEdge(q)||g.isVertex(q))&&C.x>=a&&C.y+C.height<=u&&C.y>=c&&C.x+C.width<=f&&k.push(q);this.getAllCells(a,c,
+b,e,q,k)}}}return k};var u=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,c,b){return this.graph.isCellSelected(a)?!1:u.apply(this,arguments)};this.isCellLocked=function(a){for(a=this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var C=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,c){if("mouseDown"==c.getProperty("eventName")){var b=
+c.getProperty("event").getState();C=null==b||this.isSelectionEmpty()||this.isCellSelected(b.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,c){if(!mxEvent.isMultiTouchEvent(c)){var b=c.getProperty("event"),e=c.getProperty("cell");null==e?(b=mxUtils.convertPoint(this.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),k.start(b.x,b.y)):null!=C?this.addSelectionCells(C):1<this.getSelectionCount()&&this.isCellSelected(e)&&this.removeSelectionCell(e);
 C=null;c.consume()}}));this.connectionHandler.selectCells=function(a,c){this.graph.setSelectionCell(c||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,c){return c&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&
 this.initTouch();var K=this.updateMouseEvent;this.updateMouseEvent=function(a){a=K.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}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.lineJumpsEnabled=!0;Graph.defaultJumpSize=6;
@@ -2259,17 +2259,17 @@ Graph.compress=function(a,b){if(null==a||0==a.length||"undefined"===typeof pako)
 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.lightbox=!1;Graph.prototype.defaultPageBackgroundColor="#ffffff";
 Graph.prototype.defaultPageBorderColor="#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.init=function(a){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(a,f){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var b=a.view.graph.tolerance,k=!0,m=null,p=mxUtils.bind(this,function(a){k=!0;m=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a))}),v=mxUtils.bind(this,function(a){k=k&&null!=m&&Math.abs(m.x-mxEvent.getClientX(a))<b&&Math.abs(m.y-mxEvent.getClientY(a))<b}),y=mxUtils.bind(this,function(b){if(k)for(var c=mxEvent.getSource(b);null!=
+Graph.prototype.init=function(a){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(a,f){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var b=a.view.graph.tolerance,l=!0,m=null,p=mxUtils.bind(this,function(a){l=!0;m=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a))}),v=mxUtils.bind(this,function(a){l=l&&null!=m&&Math.abs(m.x-mxEvent.getClientX(a))<b&&Math.abs(m.y-mxEvent.getClientY(a))<b}),y=mxUtils.bind(this,function(b){if(l)for(var c=mxEvent.getSource(b);null!=
 c&&c!=f.node;){if("a"==c.nodeName.toLowerCase()){a.view.graph.labelLinkClicked(a,c,b);break}c=c.parentNode}});mxEvent.addGestureListeners(f.node,p,v,y);mxEvent.addListener(f.node,"click",function(a){mxEvent.consume(a)})};this.initLayoutManager()};
 (function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&!mxClient.NO_FO};Graph.prototype.getCellAt=function(a,b,f,p,v,y){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,f,p,v,y){p=null!=p?p:!0;v=null!=v?v:!0;null==f&&(f=this.getCurrentRoot(),null==f&&(f=this.getModel().getRoot()));if(null!=f)for(var d=this.model.getChildCount(f)-1;0<=d;d--){var c=this.model.getChildAt(f,d),e=this.getScaledCellAt(a,b,c,p,v,y);if(null!=e)return e;if(this.isCellVisible(c)&&(v&&this.model.isEdge(c)||p&&this.model.isVertex(c))&&(e=this.view.getState(c),null!=e&&(null==y||!y(e,a,b))&&this.intersects(e,a,b)))return c}return null};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,f=this.graph.currentScale,a=new mxRectangle((a.x+b.x)*f,(a.y+b.y)*f,a.width*f,a.height*f);return a};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var a=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);a.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)};Graph.prototype.updateCssTransform=function(){var a=this.view.getDrawPane();
 if(null!=a)if(a=a.parentNode,this.useCssTransforms){var b=a.getAttribute("transform");a.setAttribute("transformOrigin","0 0");var f=Math.round(100*this.currentScale)/100;a.setAttribute("transform","scale("+f+","+f+")translate("+Math.round(100*this.currentTranslate.x)/100+","+Math.round(100*this.currentTranslate.y)/100+")");if(b!=a.getAttribute("transform"))try{if(mxClient.IS_EDGE){var p=a.style.display;a.style.display="none";a.getBBox();a.style.display=p}}catch(v){}}else a.removeAttribute("transformOrigin"),
-a.removeAttribute("transform")};var b=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph.useCssTransforms,f=this.scale,m=this.translate;a&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);b.apply(this,arguments);a&&(this.scale=f,this.translate=m)};var f=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(a,b,m){var d=this.useCssTransforms,k=this.view.scale,y=this.view.translate;
-d&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms=!1);f.apply(this,arguments);d&&(this.view.scale=k,this.view.translate=y,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.isViewer=function(){return!1};
+a.removeAttribute("transform")};var b=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph.useCssTransforms,f=this.scale,m=this.translate;a&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);b.apply(this,arguments);a&&(this.scale=f,this.translate=m)};var f=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(a,b,m){var d=this.useCssTransforms,l=this.view.scale,y=this.view.translate;
+d&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms=!1);f.apply(this,arguments);d&&(this.view.scale=l,this.view.translate=y,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.isViewer=function(){return!1};
 Graph.prototype.labelLinkClicked=function(a,b,f){b=b.getAttribute("href");if(null!=b&&!this.isCustomLink(b)&&mxEvent.isLeftMouseButton(f)&&!mxEvent.isPopupTrigger(f)||mxEvent.isTouchEvent(f)){if(!this.isEnabled()||this.isCellLocked(a.cell))a=this.isBlankLink(b)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(b),a);mxEvent.consume(f)}};
-Graph.prototype.openLink=function(a,b,f){var d=window;try{if("_self"==b&&window!=window.top)window.location.href=a;else if(a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==b&&window==window.top){var k=a.split("#")[1];window.location.hash=="#"+k&&(window.location.hash="");window.location.hash=k}else d=window.open(a,b),null==d||f||(d.opener=null)}catch(m){}return d};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)};
+Graph.prototype.openLink=function(a,b,f){var d=window;try{if("_self"==b&&window!=window.top)window.location.href=a;else if(a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==b&&window==window.top){var l=a.split("#")[1];window.location.hash=="#"+l&&(window.location.hash="");window.location.hash=l}else d=window.open(a,b),null==d||f||(d.opener=null)}catch(m){}return d};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)};
 Graph.prototype.isCustomLink=function(a){return"data:"==a.substring(0,5)};Graph.prototype.customLinkClicked=function(a){return!1};Graph.prototype.isExternalProtocol=function(a){return"mailto:"===a.substring(0,7)};Graph.prototype.isBlankLink=function(a){return!this.isExternalProtocol(a)&&("blank"===this.linkPolicy||"self"!==this.linkPolicy&&!this.isRelativeUrl(a)&&a.substring(0,this.domainUrl.length)!==this.domainUrl)};
 Graph.prototype.isRelativeUrl=function(a){return null!=a&&!this.absoluteUrlPattern.test(a)&&"data:"!==a.substring(0,5)&&!this.isExternalProtocol(a)};Graph.prototype.getAbsoluteUrl=function(a){null!=a&&this.isRelativeUrl(a)&&(a="#"==a.charAt(0)?this.baseUrl+a:"/"==a.charAt(0)?this.domainUrl+a:this.domainPathUrl+a);return a};
 Graph.prototype.initLayoutManager=function(){this.layoutManager=new mxLayoutManager(this);this.layoutManager.getLayout=function(a){a=this.graph.getCellStyle(a);if(null!=a){if("stackLayout"==a.childLayout){var b=new mxStackLayout(this.graph,!0);b.resizeParentMax="1"==mxUtils.getValue(a,"resizeParentMax","1");b.horizontal="1"==mxUtils.getValue(a,"horizontalStack","1");b.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1");b.resizeLast="1"==mxUtils.getValue(a,"resizeLast","0");b.spacing=a.stackSpacing||
@@ -2277,43 +2277,43 @@ b.spacing;b.border=a.stackBorder||b.border;b.marginLeft=a.marginLeft||0;b.margin
 !0,b.edgeRouting=!1,b.resetEdges=!1,b;if("flowLayout"==a.childLayout)return b=new mxHierarchicalLayout(this.graph,mxUtils.getValue(a,"flowOrientation",mxConstants.DIRECTION_EAST)),b.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),b.parentBorder=mxUtils.getValue(a,"parentPadding",20),b.maintainParentLocation=!0,b.intraCellSpacing=mxUtils.getValue(a,"intraCellSpacing",mxHierarchicalLayout.prototype.intraCellSpacing),b.interRankCellSpacing=mxUtils.getValue(a,"interRankCellSpacing",mxHierarchicalLayout.prototype.interRankCellSpacing),
 b.interHierarchySpacing=mxUtils.getValue(a,"interHierarchySpacing",mxHierarchicalLayout.prototype.interHierarchySpacing),b.parallelEdgeSpacing=mxUtils.getValue(a,"parallelEdgeSpacing",mxHierarchicalLayout.prototype.parallelEdgeSpacing),b;if("circleLayout"==a.childLayout)return new mxCircleLayout(this.graph);if("organicLayout"==a.childLayout)return new mxFastOrganicLayout(this.graph)}return null}};
 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 f=Math.ceil(b.x/this.view.scale-this.view.translate.x),d=Math.ceil(b.y/this.view.scale-this.view.translate.y),k=Math.floor(f/a.width),m=Math.floor(d/a.height);return new mxRectangle(k,m,Math.ceil((f+Math.floor(b.width/this.view.scale))/a.width)-k,Math.ceil((d+Math.floor(b.height/this.view.scale))/a.height)-m)};
+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 f=Math.ceil(b.x/this.view.scale-this.view.translate.x),d=Math.ceil(b.y/this.view.scale-this.view.translate.y),l=Math.floor(f/a.width),m=Math.floor(d/a.height);return new mxRectangle(l,m,Math.ceil((f+Math.floor(b.width/this.view.scale))/a.width)-l,Math.ceil((d+Math.floor(b.height/this.view.scale))/a.height)-m)};
 Graph.prototype.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.prototype.updatePlaceholders=function(){var a=!1,b;for(b in this.model.cells){var f=this.model.cells[b];this.isReplacePlaceholders(f)&&(this.view.invalidate(f,!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")};
 Graph.prototype.isZoomWheelEvent=function(a){return mxEvent.isAltDown(a)||mxEvent.isMetaDown(a)&&mxClient.IS_MAC||mxEvent.isControlDown(a)&&!mxClient.IS_MAC};Graph.prototype.isTransparentClickEvent=function(a){return mxEvent.isAltDown(a)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a)};Graph.prototype.isIgnoreTerminalEvent=function(a){return mxEvent.isShiftDown(a)&&mxEvent.isControlDown(a)};
 Graph.prototype.isSplitTarget=function(a,b,f){return!this.model.isEdge(b[0])&&!mxEvent.isAltDown(f)&&!mxEvent.isShiftDown(f)&&mxGraph.prototype.isSplitTarget.apply(this,arguments)};Graph.prototype.getLabel=function(a){var b=mxGraph.prototype.getLabel.apply(this,arguments);null!=b&&this.isReplacePlaceholders(a)&&null==a.getAttribute("placeholder")&&(b=this.replacePlaceholders(a,b));return b};
 Graph.prototype.isLabelMovable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return!this.isCellLocked(a)&&(this.model.isEdge(a)&&this.edgeLabelsMovable||this.model.isVertex(a)&&(this.vertexLabelsMovable||"1"==mxUtils.getValue(b,"labelMovable","0")))};Graph.prototype.setGridSize=function(a){this.gridSize=a;this.fireEvent(new mxEventObject("gridSizeChanged"))};
 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,f){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 d=this.dateFormatCache,k=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,m=/[^-+\dA-Z]/g,p=function(a,c){a=String(a);for(c=c||2;a.length<c;)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(d.masks[b]||b||d.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),f=!0);var v=f?"getUTC":"get",y=a[v+"Date"](),B=a[v+"Day"](),c=a[v+"Month"](),e=a[v+"FullYear"](),g=a[v+"Hours"](),u=a[v+"Minutes"](),n=a[v+"Seconds"](),v=a[v+"Milliseconds"](),l=f?0:a.getTimezoneOffset(),z={d:y,dd:p(y),ddd:d.i18n.dayNames[B],dddd:d.i18n.dayNames[B+7],m:c+1,mm:p(c+1),mmm:d.i18n.monthNames[c],mmmm:d.i18n.monthNames[c+
-12],yy:String(e).slice(2),yyyy:e,h:g%12||12,hh:p(g%12||12),H:g,HH:p(g),M:u,MM:p(u),s:n,ss:p(n),l:p(v,3),L:p(99<v?Math.round(v/10):v),t:12>g?"a":"p",tt:12>g?"am":"pm",T:12>g?"A":"P",TT:12>g?"AM":"PM",Z:f?"UTC":(String(a).match(k)||[""]).pop().replace(m,""),o:(0<l?"-":"+")+p(100*Math.floor(Math.abs(l)/60)+Math.abs(l)%60,4),S:["th","st","nd","rd"][3<y%10?0:(10!=y%100-y%10)*y%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in z?z[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 d=this.dateFormatCache,l=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,m=/[^-+\dA-Z]/g,p=function(a,c){a=String(a);for(c=c||2;a.length<c;)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(d.masks[b]||b||d.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),f=!0);var v=f?"getUTC":"get",y=a[v+"Date"](),B=a[v+"Day"](),c=a[v+"Month"](),e=a[v+"FullYear"](),k=a[v+"Hours"](),t=a[v+"Minutes"](),n=a[v+"Seconds"](),v=a[v+"Milliseconds"](),g=f?0:a.getTimezoneOffset(),z={d:y,dd:p(y),ddd:d.i18n.dayNames[B],dddd:d.i18n.dayNames[B+7],m:c+1,mm:p(c+1),mmm:d.i18n.monthNames[c],mmmm:d.i18n.monthNames[c+
+12],yy:String(e).slice(2),yyyy:e,h:k%12||12,hh:p(k%12||12),H:k,HH:p(k),M:t,MM:p(t),s:n,ss:p(n),l:p(v,3),L:p(99<v?Math.round(v/10):v),t:12>k?"a":"p",tt:12>k?"am":"pm",T:12>k?"A":"P",TT:12>k?"AM":"PM",Z:f?"UTC":(String(a).match(l)||[""]).pop().replace(m,""),o:(0<g?"-":"+")+p(100*Math.floor(Math.abs(g)/60)+Math.abs(g)%60,4),S:["th","st","nd","rd"][3<y%10?0:(10!=y%100-y%10)*y%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in z?z[a]:a.slice(1,
 a.length-1)})};
-Graph.prototype.createLayersDialog=function(){var a=document.createElement("div");a.style.position="absolute";for(var b=this.getModel(),f=b.getChildCount(b.root),d=0;d<f;d++)mxUtils.bind(this,function(d){var f=document.createElement("div");f.style.overflow="hidden";f.style.textOverflow="ellipsis";f.style.padding="2px";f.style.whiteSpace="nowrap";var k=document.createElement("input");k.style.display="inline-block";k.setAttribute("type","checkbox");b.isVisible(d)&&(k.setAttribute("checked","checked"),
-k.defaultChecked=!0);f.appendChild(k);var v=this.convertValueToString(d)||mxResources.get("background")||"Background";f.setAttribute("title",v);mxUtils.write(f,v);a.appendChild(f);mxEvent.addListener(k,"click",function(){null!=k.getAttribute("checked")?k.removeAttribute("checked"):k.setAttribute("checked","checked");b.setVisible(d,k.checked)})})(b.getChildAt(b.root,d));return a};
-Graph.prototype.replacePlaceholders=function(a,b){var f=[];if(null!=b){for(var d=0;match=this.placeholderPattern.exec(b);){var k=match[0];if(2<k.length&&"%label%"!=k&&"%tooltip%"!=k){var m=null;if(match.index>d&&"%"==b.charAt(match.index-1))m=k.substring(1);else{var p=k.substring(1,k.length-1);if(0>p.indexOf("{"))for(var v=a;null==m&&null!=v;)null!=v.value&&"object"==typeof v.value&&(m=v.hasAttribute(p)?null!=v.getAttribute(p)?v.getAttribute(p):"":null),v=this.model.getParent(v);null==m&&(m=this.getGlobalVariable(p))}f.push(b.substring(d,
-match.index)+(null!=m?m:k));d=match.index+k.length}}f.push(b.substring(d))}return f.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var b=[],f=0;f<a.length;f++){var d=this.model.getCell(a[f].id);null!=d&&b.push(d)}this.setSelectionCells(b)}else this.clearSelection()};
+Graph.prototype.createLayersDialog=function(){var a=document.createElement("div");a.style.position="absolute";for(var b=this.getModel(),f=b.getChildCount(b.root),d=0;d<f;d++)mxUtils.bind(this,function(d){var f=document.createElement("div");f.style.overflow="hidden";f.style.textOverflow="ellipsis";f.style.padding="2px";f.style.whiteSpace="nowrap";var l=document.createElement("input");l.style.display="inline-block";l.setAttribute("type","checkbox");b.isVisible(d)&&(l.setAttribute("checked","checked"),
+l.defaultChecked=!0);f.appendChild(l);var v=this.convertValueToString(d)||mxResources.get("background")||"Background";f.setAttribute("title",v);mxUtils.write(f,v);a.appendChild(f);mxEvent.addListener(l,"click",function(){null!=l.getAttribute("checked")?l.removeAttribute("checked"):l.setAttribute("checked","checked");b.setVisible(d,l.checked)})})(b.getChildAt(b.root,d));return a};
+Graph.prototype.replacePlaceholders=function(a,b){var f=[];if(null!=b){for(var d=0;match=this.placeholderPattern.exec(b);){var l=match[0];if(2<l.length&&"%label%"!=l&&"%tooltip%"!=l){var m=null;if(match.index>d&&"%"==b.charAt(match.index-1))m=l.substring(1);else{var p=l.substring(1,l.length-1);if(0>p.indexOf("{"))for(var v=a;null==m&&null!=v;)null!=v.value&&"object"==typeof v.value&&(m=v.hasAttribute(p)?null!=v.getAttribute(p)?v.getAttribute(p):"":null),v=this.model.getParent(v);null==m&&(m=this.getGlobalVariable(p))}f.push(b.substring(d,
+match.index)+(null!=m?m:l));d=match.index+l.length}}f.push(b.substring(d))}return f.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var b=[],f=0;f<a.length;f++){var d=this.model.getCell(a[f].id);null!=d&&b.push(d)}this.setSelectionCells(b)}else this.clearSelection()};
 Graph.prototype.selectCellsForConnectVertex=function(a,b,f){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),null!=f&&(mxEvent.isTouchEvent(b)?f.update(f.getState(this.view.getState(a[1]))):f.reset()),this.scrollCellToVisible(a[1])):this.setSelectionCells(a)};
-Graph.prototype.connectVertex=function(a,b,f,d,k,m){if(a.geometry.relative&&this.model.isEdge(a.parent))return[];m=m?m:!1;var p=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(a.geometry.x,a.geometry.y);b==mxConstants.DIRECTION_NORTH?(p.x+=a.geometry.width/2,p.y-=f):b==mxConstants.DIRECTION_SOUTH?(p.x+=a.geometry.width/2,p.y+=a.geometry.height+f):(p.x=b==mxConstants.DIRECTION_WEST?p.x-f:p.x+(a.geometry.width+
-f),p.y+=a.geometry.height/2);f=this.view.getState(this.model.getParent(a));var v=this.view.scale,y=this.view.translate,B=y.x*v,y=y.y*v;null!=f&&this.model.isVertex(f.cell)&&(B=f.x,y=f.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(p.x+=a.parent.geometry.x,p.y+=a.parent.geometry.y);m=m||mxEvent.isControlDown(d)&&!k?null:this.getCellAt(B+p.x*v,y+p.y*v);this.model.isAncestor(m,a)&&(m=null);for(f=m;null!=f;){if(this.isCellLocked(f)){m=null;break}f=this.model.getParent(f)}null!=m&&(f=this.view.getState(a),
-v=this.view.getState(m),null!=f&&null!=v&&mxUtils.intersects(f,v)&&(m=null));if(k=!mxEvent.isShiftDown(d)||k)b==mxConstants.DIRECTION_NORTH?p.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?p.y+=a.geometry.height/2:p.x=b==mxConstants.DIRECTION_WEST?p.x-a.geometry.width/2:p.x+a.geometry.width/2;null==m||this.isCellConnectable(m)||(f=this.getModel().getParent(m),this.getModel().isVertex(f)&&this.isCellConnectable(f)&&(m=f));if(m==a||this.model.isEdge(m)||!this.isCellConnectable(m))m=null;f=[];
-this.model.beginUpdate();try{v=m;if(null==v&&k){for(var B=a,c=this.getCellGeometry(a);null!=c&&c.relative;)B=this.getModel().getParent(B),c=this.getCellGeometry(B);var e=this.view.getState(B),g=null!=e?e.style:this.getCellStyle(B);if(mxUtils.getValue(g,"part",!1)){var u=this.model.getParent(B);this.model.isVertex(u)&&(B=u)}v=this.duplicateCells([B],!1)[0];c=this.getCellGeometry(v);null!=c&&(c.x=p.x-c.width/2,c.y=p.y-c.height/2)}c=null;null!=this.layoutManager&&(c=this.layoutManager.getLayout(this.model.getParent(a)));
-var n=mxEvent.isControlDown(d)&&k||null==m&&null!=c&&c.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,v,this.createCurrentEdgeStyle());if(null!=n&&this.connectionHandler.insertBeforeSource){var l=null;for(d=a;null!=d.parent&&null!=d.geometry&&d.geometry.relative&&d.parent!=n.parent;)d=this.model.getParent(d);null!=d&&null!=d.parent&&d.parent==n.parent&&(l=d.parent.getIndex(d),this.model.add(d.parent,n,l))}null==m&&null!=v&&null!=c&&null!=a.parent&&c.constructor==
-mxStackLayout&&b==mxConstants.DIRECTION_WEST&&(l=a.parent.getIndex(a),this.model.add(a.parent,v,l));null!=n&&f.push(n);null==m&&null!=v&&f.push(v);null==v&&null!=n&&n.geometry.setTerminalPoint(p,!1);null!=n&&this.fireEvent(new mxEventObject("cellsInserted","cells",[n]))}finally{this.model.endUpdate()}return f};
+Graph.prototype.connectVertex=function(a,b,f,d,l,m){if(a.geometry.relative&&this.model.isEdge(a.parent))return[];m=m?m:!1;var p=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(a.geometry.x,a.geometry.y);b==mxConstants.DIRECTION_NORTH?(p.x+=a.geometry.width/2,p.y-=f):b==mxConstants.DIRECTION_SOUTH?(p.x+=a.geometry.width/2,p.y+=a.geometry.height+f):(p.x=b==mxConstants.DIRECTION_WEST?p.x-f:p.x+(a.geometry.width+
+f),p.y+=a.geometry.height/2);f=this.view.getState(this.model.getParent(a));var v=this.view.scale,y=this.view.translate,B=y.x*v,y=y.y*v;null!=f&&this.model.isVertex(f.cell)&&(B=f.x,y=f.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(p.x+=a.parent.geometry.x,p.y+=a.parent.geometry.y);m=m||mxEvent.isControlDown(d)&&!l?null:this.getCellAt(B+p.x*v,y+p.y*v);this.model.isAncestor(m,a)&&(m=null);for(f=m;null!=f;){if(this.isCellLocked(f)){m=null;break}f=this.model.getParent(f)}null!=m&&(f=this.view.getState(a),
+v=this.view.getState(m),null!=f&&null!=v&&mxUtils.intersects(f,v)&&(m=null));if(l=!mxEvent.isShiftDown(d)||l)b==mxConstants.DIRECTION_NORTH?p.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?p.y+=a.geometry.height/2:p.x=b==mxConstants.DIRECTION_WEST?p.x-a.geometry.width/2:p.x+a.geometry.width/2;null==m||this.isCellConnectable(m)||(f=this.getModel().getParent(m),this.getModel().isVertex(f)&&this.isCellConnectable(f)&&(m=f));if(m==a||this.model.isEdge(m)||!this.isCellConnectable(m))m=null;f=[];
+this.model.beginUpdate();try{v=m;if(null==v&&l){for(var B=a,c=this.getCellGeometry(a);null!=c&&c.relative;)B=this.getModel().getParent(B),c=this.getCellGeometry(B);var e=this.view.getState(B),k=null!=e?e.style:this.getCellStyle(B);if(mxUtils.getValue(k,"part",!1)){var t=this.model.getParent(B);this.model.isVertex(t)&&(B=t)}v=this.duplicateCells([B],!1)[0];c=this.getCellGeometry(v);null!=c&&(c.x=p.x-c.width/2,c.y=p.y-c.height/2)}c=null;null!=this.layoutManager&&(c=this.layoutManager.getLayout(this.model.getParent(a)));
+var n=mxEvent.isControlDown(d)&&l||null==m&&null!=c&&c.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,v,this.createCurrentEdgeStyle());if(null!=n&&this.connectionHandler.insertBeforeSource){var g=null;for(d=a;null!=d.parent&&null!=d.geometry&&d.geometry.relative&&d.parent!=n.parent;)d=this.model.getParent(d);null!=d&&null!=d.parent&&d.parent==n.parent&&(g=d.parent.getIndex(d),this.model.add(d.parent,n,g))}null==m&&null!=v&&null!=c&&null!=a.parent&&c.constructor==
+mxStackLayout&&b==mxConstants.DIRECTION_WEST&&(g=a.parent.getIndex(a),this.model.add(a.parent,v,g));null!=n&&f.push(n);null==m&&null!=v&&f.push(v);null==v&&null!=n&&n.geometry.setTerminalPoint(p,!1);null!=n&&this.fireEvent(new mxEventObject("cellsInserted","cells",[n]))}finally{this.model.endUpdate()}return f};
 Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),b=[],f,d;for(d in this.model.cells)if(f=this.model.cells[d],this.model.isVertex(f)||this.model.isEdge(f))this.isHtmlLabel(f)?(a.innerHTML=this.getLabel(f),f=mxUtils.extractTextWithWhitespace([a])):f=this.getLabel(f),f=mxUtils.trim(f.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<f.length&&b.push(f);return b.join(" ")};
 Graph.prototype.convertValueToString=function(a){if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var b=a.getAttribute("placeholder"),f=a,d=null;null==d&&null!=f;)null!=f.value&&"object"==typeof f.value&&(d=f.hasAttribute(b)?null!=f.getAttribute(b)?f.getAttribute(b):"":null),f=this.model.getParent(f);return d||""}return a.value.getAttribute("label")||""}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};
 Graph.prototype.getCellStyle=function(a){var b=mxGraph.prototype.getCellStyle.apply(this,arguments);if(null!=a&&null!=this.layoutManager){var f=this.model.getParent(a);this.model.isVertex(f)&&this.isCellCollapsed(a)&&(f=this.layoutManager.getLayout(f),null!=f&&f.constructor==mxStackLayout&&(b[mxConstants.STYLE_HORIZONTAL]=!f.horizontal))}return b};
 Graph.prototype.updateAlternateBounds=function(a,b,f){if(null!=a&&null!=b&&null!=this.layoutManager&&null!=b.alternateBounds){var d=this.layoutManager.getLayout(this.model.getParent(a));null!=d&&d.constructor==mxStackLayout&&(d.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,f,d,k){b=null!=b?b:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));if(null!=f){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var m=0;m<f.length;m++){var p=this.view.getState(f[m]),v=this.getCellGeometry(f[m]);if(null!=p&&null!=v){var y=Math.round(v.width-p.width/this.view.scale),B=Math.round(v.height-p.height/this.view.scale);if(0!=B||0!=y){var c=this.model.getParent(f[m]),e=this.layoutManager.getLayout(c);
-null==e?null!=k&&this.isMoveCellsEvent(k,p)&&this.moveSiblings(p,c,y,B):null!=k&&mxEvent.isAltDown(k)||e.constructor!=mxStackLayout||e.resizeLast||this.resizeParentStacks(c,e,y,B)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(f)}};
-Graph.prototype.moveSiblings=function(a,b,f,d){this.model.beginUpdate();try{var k=this.getCellsBeyond(a.x,a.y,b,!0,!0);for(b=0;b<k.length;b++)if(k[b]!=a.cell){var m=this.view.getState(k[b]),p=this.getCellGeometry(k[b]);null!=m&&null!=p&&(p=p.clone(),p.translate(Math.round(f*Math.max(0,Math.min(1,(m.x-a.x)/a.width))),Math.round(d*Math.max(0,Math.min(1,(m.y-a.y)/a.height)))),this.model.setGeometry(k[b],p))}}finally{this.model.endUpdate()}};
-Graph.prototype.resizeParentStacks=function(a,b,f,d){if(null!=this.layoutManager&&null!=b&&b.constructor==mxStackLayout&&!b.resizeLast){this.model.beginUpdate();try{for(var k=b.horizontal;null!=a&&null!=b&&b.constructor==mxStackLayout&&b.horizontal==k&&!b.resizeLast;){var m=this.getCellGeometry(a),p=this.view.getState(a);null!=p&&null!=m&&(m=m.clone(),b.horizontal?m.width+=f+Math.min(0,p.width/this.view.scale-m.width):m.height+=d+Math.min(0,p.height/this.view.scale-m.height),this.model.setGeometry(a,
+Graph.prototype.foldCells=function(a,b,f,d,l){b=null!=b?b:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));if(null!=f){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var m=0;m<f.length;m++){var p=this.view.getState(f[m]),v=this.getCellGeometry(f[m]);if(null!=p&&null!=v){var y=Math.round(v.width-p.width/this.view.scale),B=Math.round(v.height-p.height/this.view.scale);if(0!=B||0!=y){var c=this.model.getParent(f[m]),e=this.layoutManager.getLayout(c);
+null==e?null!=l&&this.isMoveCellsEvent(l,p)&&this.moveSiblings(p,c,y,B):null!=l&&mxEvent.isAltDown(l)||e.constructor!=mxStackLayout||e.resizeLast||this.resizeParentStacks(c,e,y,B)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(f)}};
+Graph.prototype.moveSiblings=function(a,b,f,d){this.model.beginUpdate();try{var l=this.getCellsBeyond(a.x,a.y,b,!0,!0);for(b=0;b<l.length;b++)if(l[b]!=a.cell){var m=this.view.getState(l[b]),p=this.getCellGeometry(l[b]);null!=m&&null!=p&&(p=p.clone(),p.translate(Math.round(f*Math.max(0,Math.min(1,(m.x-a.x)/a.width))),Math.round(d*Math.max(0,Math.min(1,(m.y-a.y)/a.height)))),this.model.setGeometry(l[b],p))}}finally{this.model.endUpdate()}};
+Graph.prototype.resizeParentStacks=function(a,b,f,d){if(null!=this.layoutManager&&null!=b&&b.constructor==mxStackLayout&&!b.resizeLast){this.model.beginUpdate();try{for(var l=b.horizontal;null!=a&&null!=b&&b.constructor==mxStackLayout&&b.horizontal==l&&!b.resizeLast;){var m=this.getCellGeometry(a),p=this.view.getState(a);null!=p&&null!=m&&(m=m.clone(),b.horizontal?m.width+=f+Math.min(0,p.width/this.view.scale-m.width):m.height+=d+Math.min(0,p.height/this.view.scale-m.height),this.model.setGeometry(a,
 m));a=this.model.getParent(a);b=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.isSwimlane(a)?"0"!=b.container:"1"==b.container};Graph.prototype.isCellConnectable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return null!=b&&null!=b.connectable?"0"!=b.connectable:mxGraph.prototype.isCellConnectable.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,f){f=f||this.getDefaultParent();this.isCellLocked(f)||mxGraph.prototype.selectCells.apply(this,arguments)};Graph.prototype.getSwimlaneAt=function(a,b,f){f=f||this.getDefaultParent();return this.isCellLocked(f)?null:mxGraph.prototype.getSwimlaneAt.apply(this,arguments)};
 Graph.prototype.isCellFoldable=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.foldingEnabled&&("1"==b.treeFolding||!this.isCellLocked(a)&&(this.isContainer(a)&&"0"!=b.collapsible||!this.isContainer(a)&&"1"==b.collapsible))};Graph.prototype.reset=function(){this.isEditing()&&this.stopEditing(!0);this.escape();this.isSelectionEmpty()||this.clearSelection()};
 Graph.prototype.zoom=function(a,b){a=Math.max(.01,Math.min(this.view.scale*a,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.getTooltipForCell=function(a){var b="";if(mxUtils.isNode(a.value)){var f=a.value.getAttribute("tooltip");if(null!=f)null!=f&&this.isReplacePlaceholders(a)&&(f=this.replacePlaceholders(a,f)),b=this.sanitizeHtml(f);else{f=this.builtInProperties;a=a.value.attributes;var d=[];this.isEnabled()&&f.push("link");for(var k=0;k<a.length;k++)0>mxUtils.indexOf(f,a[k].nodeName)&&0<a[k].nodeValue.length&&d.push({name:a[k].nodeName,value:a[k].nodeValue});d.sort(function(a,b){return a.name<b.name?
--1:a.name>b.name?1:0});for(k=0;k<d.length;k++)"link"==d[k].name&&this.isCustomLink(d[k].value)||(b+=("link"!=d[k].name?"<b>"+d[k].name+":</b> ":"")+mxUtils.htmlEntities(d[k].value)+"\n");0<b.length&&(b=b.substring(0,b.length-1),mxClient.IS_SVG&&(b='<div style="max-width:360px;">'+b+"</div>"))}}return b};Graph.prototype.stringToBytes=function(a){return Graph.stringToBytes(a)};Graph.prototype.bytesToString=function(a){return Graph.bytesToString(a)};Graph.prototype.compressNode=function(a){return Graph.compressNode(a)};
+Graph.prototype.getTooltipForCell=function(a){var b="";if(mxUtils.isNode(a.value)){var f=a.value.getAttribute("tooltip");if(null!=f)null!=f&&this.isReplacePlaceholders(a)&&(f=this.replacePlaceholders(a,f)),b=this.sanitizeHtml(f);else{f=this.builtInProperties;a=a.value.attributes;var d=[];this.isEnabled()&&f.push("link");for(var l=0;l<a.length;l++)0>mxUtils.indexOf(f,a[l].nodeName)&&0<a[l].nodeValue.length&&d.push({name:a[l].nodeName,value:a[l].nodeValue});d.sort(function(a,b){return a.name<b.name?
+-1:a.name>b.name?1:0});for(l=0;l<d.length;l++)"link"==d[l].name&&this.isCustomLink(d[l].value)||(b+=("link"!=d[l].name?"<b>"+d[l].name+":</b> ":"")+mxUtils.htmlEntities(d[l].value)+"\n");0<b.length&&(b=b.substring(0,b.length-1),mxClient.IS_SVG&&(b='<div style="max-width:360px;">'+b+"</div>"))}}return b};Graph.prototype.stringToBytes=function(a){return Graph.stringToBytes(a)};Graph.prototype.bytesToString=function(a){return Graph.bytesToString(a)};Graph.prototype.compressNode=function(a){return Graph.compressNode(a)};
 Graph.prototype.compress=function(a,b){return Graph.compress(a,b)};Graph.prototype.decompress=function(a,b){return Graph.decompress(a,b)};Graph.prototype.zapGremlins=function(a){return Graph.zapGremlins(a)};HoverIcons=function(a){this.graph=a;this.init()};HoverIcons.prototype.arrowSpacing=2;HoverIcons.prototype.updateDelay=500;HoverIcons.prototype.activationDelay=140;HoverIcons.prototype.currentState=null;HoverIcons.prototype.activeArrow=null;HoverIcons.prototype.inactiveOpacity=15;
 HoverIcons.prototype.cssCursor="copy";HoverIcons.prototype.checkCollisions=!0;HoverIcons.prototype.arrowFill="#29b6f2";HoverIcons.prototype.triangleUp=mxClient.IS_SVG?Graph.createSvgImage(18,28,'<path d="m 6 26 L 12 26 L 12 12 L 18 12 L 9 1 L 1 12 L 6 12 z" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>'):new mxImage(IMAGE_PATH+"/triangle-up.png",26,14);
 HoverIcons.prototype.triangleRight=mxClient.IS_SVG?Graph.createSvgImage(26,18,'<path d="m 1 6 L 14 6 L 14 1 L 26 9 L 14 18 L 14 12 L 1 12 z" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>'):new mxImage(IMAGE_PATH+"/triangle-right.png",14,26);HoverIcons.prototype.triangleDown=mxClient.IS_SVG?Graph.createSvgImage(18,26,'<path d="m 6 1 L 6 14 L 1 14 L 9 26 L 18 14 L 12 14 L 12 1 z" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'"/>'):new mxImage(IMAGE_PATH+"/triangle-down.png",26,14);
@@ -2333,13 +2333,13 @@ this.resetActiveArrow()}));return f};HoverIcons.prototype.resetActiveArrow=funct
 HoverIcons.prototype.visitNodes=function(a){for(var b=0;b<this.elts.length;b++)null!=this.elts[b]&&a(this.elts[b])};HoverIcons.prototype.removeNodes=function(){this.visitNodes(function(a){null!=a.parentNode&&a.parentNode.removeChild(a)})};HoverIcons.prototype.setDisplay=function(a){this.visitNodes(function(b){b.style.display=a})};HoverIcons.prototype.isActive=function(){return null!=this.activeArrow&&null!=this.currentState};
 HoverIcons.prototype.drag=function(a,b,f){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);null!=this.currentState&&(this.graph.connectionHandler.start(this.currentState,b,f),this.graph.isMouseTrigger=mxEvent.isMouseEvent(a),this.graph.isMouseDown=!0,b=this.graph.selectionCellsHandler.getHandler(this.currentState.cell),null!=b&&b.setHandlesVisible(!1),b=this.graph.connectionHandler.edgeState,null!=a&&mxEvent.isShiftDown(a)&&mxEvent.isControlDown(a)&&null!=b&&"orthogonalEdgeStyle"===
 mxUtils.getValue(b.style,mxConstants.STYLE_EDGE,null)&&(a=this.getDirection(),b.cell.style=mxUtils.setStyle(b.cell.style,"sourcePortConstraint",a),b.style.sourcePortConstraint=a))};HoverIcons.prototype.getStateAt=function(a,b,f){return this.graph.view.getState(this.graph.getCellAt(b,f))};
-HoverIcons.prototype.click=function(a,b,f){var d=f.getEvent(),k=f.getGraphX(),m=f.getGraphY(),k=this.getStateAt(a,k,m);null==k||!this.graph.model.isEdge(k.cell)||mxEvent.isControlDown(d)||k.getVisibleTerminalState(!0)!=a&&k.getVisibleTerminalState(!1)!=a?null!=a&&(a=this.graph.connectVertex(a.cell,b,this.graph.defaultEdgeLength,d),this.graph.selectCellsForConnectVertex(a,d,this),2==a.length&&this.graph.model.isVertex(a[1])?(this.graph.setSelectionCell(a[1]),mxEvent.isTouchEvent(d)?this.update(this.getState(this.graph.view.getState(a[1]))):
-this.reset(),this.graph.scrollCellToVisible(a[1])):this.graph.setSelectionCells(a)):(this.graph.setSelectionCell(k.cell),this.reset());f.consume()};HoverIcons.prototype.reset=function(a){null!=a&&!a||null==this.updateThread||window.clearTimeout(this.updateThread);this.activeArrow=this.currentState=this.mouseDownPoint=null;this.removeNodes();this.bbox=null};
+HoverIcons.prototype.click=function(a,b,f){var d=f.getEvent(),l=f.getGraphX(),m=f.getGraphY(),l=this.getStateAt(a,l,m);null==l||!this.graph.model.isEdge(l.cell)||mxEvent.isControlDown(d)||l.getVisibleTerminalState(!0)!=a&&l.getVisibleTerminalState(!1)!=a?null!=a&&(a=this.graph.connectVertex(a.cell,b,this.graph.defaultEdgeLength,d),this.graph.selectCellsForConnectVertex(a,d,this),2==a.length&&this.graph.model.isVertex(a[1])?(this.graph.setSelectionCell(a[1]),mxEvent.isTouchEvent(d)?this.update(this.getState(this.graph.view.getState(a[1]))):
+this.reset(),this.graph.scrollCellToVisible(a[1])):this.graph.setSelectionCells(a)):(this.graph.setSelectionCell(l.cell),this.reset());f.consume()};HoverIcons.prototype.reset=function(a){null!=a&&!a||null==this.updateThread||window.clearTimeout(this.updateThread);this.activeArrow=this.currentState=this.mouseDownPoint=null;this.removeNodes();this.bbox=null};
 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 a=mxRectangle.fromRectangle(this.currentState);null!=this.currentState.shape&&null!=this.currentState.shape.boundingBox&&(a=mxRectangle.fromRectangle(this.currentState.shape.boundingBox));a.grow(this.graph.tolerance);a.grow(this.arrowSpacing);
 var b=this.graph.selectionCellsHandler.getHandler(this.currentState.cell);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&&a.add(b.rotationShape.boundingBox));this.arrowUp.style.left=Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance)+
 "px";this.arrowUp.style.top=Math.round(a.y-this.triangleUp.height-this.tolerance)+"px";mxUtils.setOpacity(this.arrowUp,this.inactiveOpacity);this.arrowRight.style.left=Math.round(a.x+a.width-this.tolerance)+"px";this.arrowRight.style.top=Math.round(this.currentState.getCenterY()-this.triangleRight.height/2-this.tolerance)+"px";mxUtils.setOpacity(this.arrowRight,this.inactiveOpacity);this.arrowDown.style.left=this.arrowUp.style.left;this.arrowDown.style.top=Math.round(a.y+a.height-this.tolerance)+
 "px";mxUtils.setOpacity(this.arrowDown,this.inactiveOpacity);this.arrowLeft.style.left=Math.round(a.x-this.triangleLeft.width-this.tolerance)+"px";this.arrowLeft.style.top=this.arrowRight.style.top;mxUtils.setOpacity(this.arrowLeft,this.inactiveOpacity);if(this.checkCollisions){var b=this.graph.getCellAt(a.x+a.width+this.triangleRight.width/2,this.currentState.getCenterY()),f=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==f&&f==d&&d==a&&(a=d=f=b=null);var k=this.graph.getCellGeometry(this.currentState.cell),m=mxUtils.bind(this,function(a,b){var d=this.graph.model.isVertex(a)&&this.graph.getCellGeometry(a);null!=a&&!this.graph.model.isAncestor(a,this.currentState.cell)&&(null==d||null==k||d.height<6*k.height&&d.width<6*k.width)?b.style.visibility="hidden":b.style.visibility="visible"});
+a.y-this.triangleUp.height/2),a=this.graph.getCellAt(this.currentState.getCenterX(),a.y+a.height+this.triangleDown.height/2);null!=b&&b==f&&f==d&&d==a&&(a=d=f=b=null);var l=this.graph.getCellGeometry(this.currentState.cell),m=mxUtils.bind(this,function(a,b){var d=this.graph.model.isVertex(a)&&this.graph.getCellGeometry(a);null!=a&&!this.graph.model.isAncestor(a,this.currentState.cell)&&(null==d||null==l||d.height<6*l.height&&d.width<6*l.width)?b.style.visibility="hidden":b.style.visibility="visible"});
 m(b,this.arrowRight);m(f,this.arrowLeft);m(d,this.arrowUp);m(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};
@@ -2350,83 +2350,83 @@ b,f))&&(null!=a&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState
 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};
 (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,d){d=null!=d?d:!0;var c=this.getState(a);null!=c&&d&&this.graph.model.isEdge(c.cell)&&null!=c.style&&1!=c.style[mxConstants.STYLE_CURVED]&&!c.invalid&&this.updateLineJumps(c)&&this.graph.cellRenderer.redraw(c,!1,this.isRendering());c=b.apply(this,
 arguments);null!=c&&d&&this.graph.model.isEdge(c.cell)&&null!=c.style&&1!=c.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(c);return c};var f=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return f.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,e=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var d=function(c,b,d){var g=new mxPoint(b,d);g.type=c;e.push(g);g=null!=a.routedPoints?a.routedPoints[e.length-1]:null;return null==g||g.type!=c||g.x!=b||g.y!=d},f=.5*this.scale,c=!1,e=[],n=0;n<b.length-1;n++){for(var l=
-b[n+1],z=b[n],A=[],q=b[n+2];n<b.length-2&&mxUtils.ptSegDistSq(z.x,z.y,q.x,q.y,l.x,l.y)<1*this.scale*this.scale;)l=q,n++,q=b[n+2];for(var c=d(0,z.x,z.y)||c,k=0;k<this.validEdges.length;k++){var x=this.validEdges[k],v=x.absolutePoints;if(null!=v&&mxUtils.intersects(a,x)&&"1"!=x.style.noJump)for(x=0;x<v.length-1;x++){for(var t=v[x+1],C=v[x],q=v[x+2];x<v.length-2&&mxUtils.ptSegDistSq(C.x,C.y,q.x,q.y,t.x,t.y)<1*this.scale*this.scale;)t=q,x++,q=v[x+2];q=mxUtils.intersection(z.x,z.y,l.x,l.y,C.x,C.y,t.x,
-t.y);if(null!=q&&(Math.abs(q.x-z.x)>f||Math.abs(q.y-z.y)>f)&&(Math.abs(q.x-l.x)>f||Math.abs(q.y-l.y)>f)&&(Math.abs(q.x-C.x)>f||Math.abs(q.y-C.y)>f)&&(Math.abs(q.x-t.x)>f||Math.abs(q.y-t.y)>f)){t=q.x-z.x;C=q.y-z.y;q={distSq:t*t+C*C,x:q.x,y:q.y};for(t=0;t<A.length;t++)if(A[t].distSq>q.distSq){A.splice(t,0,q);q=null;break}null==q||0!=A.length&&A[A.length-1].x===q.x&&A[A.length-1].y===q.y||A.push(q)}}}for(x=0;x<A.length;x++)c=d(1,A[x].x,A[x].y)||c}q=b[b.length-1];c=d(0,q.x,q.y)||c}a.routedPoints=e;return c}return!1};
-var k=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)k.apply(this,arguments);else{var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,d=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,f=mxUtils.getValue(this.style,
-"jumpStyle","none"),n,l=!0,z=null,A=null;n=[];var q=null;a.begin();for(var v=0;v<this.state.routedPoints.length;v++){var x=this.state.routedPoints[v],m=new mxPoint(x.x/this.scale,x.y/this.scale);0==v?m=b[0]:v==this.state.routedPoints.length-1&&(m=b[b.length-1]);var t=!1;if(null!=z&&1==x.type){var C=this.state.routedPoints[v+1],x=C.x/this.scale-m.x,C=C.y/this.scale-m.y,x=x*x+C*C;null==q&&(q=new mxPoint(m.x-z.x,m.y-z.y),A=Math.sqrt(q.x*q.x+q.y*q.y),0<A?(q.x=q.x*d/A,q.y=q.y*d/A):q=null);x>d*d&&0<A&&
-(x=z.x-m.x,C=z.y-m.y,x=x*x+C*C,x>d*d&&(t=new mxPoint(m.x-q.x,m.y-q.y),x=new mxPoint(m.x+q.x,m.y+q.y),n.push(t),this.addPoints(a,n,c,e,!1,null,l),n=0>Math.round(q.x)||0==Math.round(q.x)&&0>=Math.round(q.y)?1:-1,l=!1,"sharp"==f?(a.lineTo(t.x-q.y*n,t.y+q.x*n),a.lineTo(x.x-q.y*n,x.y+q.x*n),a.lineTo(x.x,x.y)):"arc"==f?(n*=1.3,a.curveTo(t.x-q.y*n,t.y+q.x*n,x.x-q.y*n,x.y+q.x*n,x.x,x.y)):(a.moveTo(x.x,x.y),l=!0),n=[x],t=!0))}else q=null;t||(n.push(m),z=m)}this.addPoints(a,n,c,e,!1,null,l);a.stroke()}};var m=
-mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,c,e){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)m.apply(this,arguments);else{b=this.getTerminalPort(a,b,e);var d=this.getNextPoint(a,c,e),f=this.graph.isOrthogonal(a),n=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),l=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=n)var z=Math.cos(-n),k=Math.sin(-n),d=mxUtils.getRotatedPoint(d,z,k,l);
-z=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);z+=parseFloat(a.style[e?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);d=this.getPerimeterPoint(b,d,0==n&&f,z);0!=n&&(z=Math.cos(n),k=Math.sin(n),d=mxUtils.getRotatedPoint(d,z,k,l));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,e,d),e)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,e,d){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);e=c=null;if(null!=a)for(var g=
-0;g<a.length;g++){var f=this.graph.getConnectionPoint(b,a[g]);if(null!=f){var l=(f.x-d.x)*(f.x-d.x)+(f.y-d.y)*(f.y-d.y);if(null==e||l<e)c=f,e=l}}null!=c&&(d=c)}return d};var p=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var e=p.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(e=c.state.view.graph.replacePlaceholders(c.state.cell,e));return e};var v=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),e=mxUtils.parseXml(Graph.decompress(c));return new mxShape(new mxStencil(e.documentElement))}catch(g){null!=window.console&&console.log("Error in shape: "+g)}}return v.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;
+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,e=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var d=function(c,b,d){var k=new mxPoint(b,d);k.type=c;e.push(k);k=null!=a.routedPoints?a.routedPoints[e.length-1]:null;return null==k||k.type!=c||k.x!=b||k.y!=d},f=.5*this.scale,c=!1,e=[],n=0;n<b.length-1;n++){for(var g=
+b[n+1],z=b[n],A=[],q=b[n+2];n<b.length-2&&mxUtils.ptSegDistSq(z.x,z.y,q.x,q.y,g.x,g.y)<1*this.scale*this.scale;)g=q,n++,q=b[n+2];for(var c=d(0,z.x,z.y)||c,l=0;l<this.validEdges.length;l++){var x=this.validEdges[l],v=x.absolutePoints;if(null!=v&&mxUtils.intersects(a,x)&&"1"!=x.style.noJump)for(x=0;x<v.length-1;x++){for(var u=v[x+1],C=v[x],q=v[x+2];x<v.length-2&&mxUtils.ptSegDistSq(C.x,C.y,q.x,q.y,u.x,u.y)<1*this.scale*this.scale;)u=q,x++,q=v[x+2];q=mxUtils.intersection(z.x,z.y,g.x,g.y,C.x,C.y,u.x,
+u.y);if(null!=q&&(Math.abs(q.x-z.x)>f||Math.abs(q.y-z.y)>f)&&(Math.abs(q.x-g.x)>f||Math.abs(q.y-g.y)>f)&&(Math.abs(q.x-C.x)>f||Math.abs(q.y-C.y)>f)&&(Math.abs(q.x-u.x)>f||Math.abs(q.y-u.y)>f)){u=q.x-z.x;C=q.y-z.y;q={distSq:u*u+C*C,x:q.x,y:q.y};for(u=0;u<A.length;u++)if(A[u].distSq>q.distSq){A.splice(u,0,q);q=null;break}null==q||0!=A.length&&A[A.length-1].x===q.x&&A[A.length-1].y===q.y||A.push(q)}}}for(x=0;x<A.length;x++)c=d(1,A[x].x,A[x].y)||c}q=b[b.length-1];c=d(0,q.x,q.y)||c}a.routedPoints=e;return c}return!1};
+var l=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)l.apply(this,arguments);else{var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,d=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,f=mxUtils.getValue(this.style,
+"jumpStyle","none"),n,g=!0,z=null,A=null;n=[];var q=null;a.begin();for(var v=0;v<this.state.routedPoints.length;v++){var x=this.state.routedPoints[v],m=new mxPoint(x.x/this.scale,x.y/this.scale);0==v?m=b[0]:v==this.state.routedPoints.length-1&&(m=b[b.length-1]);var u=!1;if(null!=z&&1==x.type){var C=this.state.routedPoints[v+1],x=C.x/this.scale-m.x,C=C.y/this.scale-m.y,x=x*x+C*C;null==q&&(q=new mxPoint(m.x-z.x,m.y-z.y),A=Math.sqrt(q.x*q.x+q.y*q.y),0<A?(q.x=q.x*d/A,q.y=q.y*d/A):q=null);x>d*d&&0<A&&
+(x=z.x-m.x,C=z.y-m.y,x=x*x+C*C,x>d*d&&(u=new mxPoint(m.x-q.x,m.y-q.y),x=new mxPoint(m.x+q.x,m.y+q.y),n.push(u),this.addPoints(a,n,c,e,!1,null,g),n=0>Math.round(q.x)||0==Math.round(q.x)&&0>=Math.round(q.y)?1:-1,g=!1,"sharp"==f?(a.lineTo(u.x-q.y*n,u.y+q.x*n),a.lineTo(x.x-q.y*n,x.y+q.x*n),a.lineTo(x.x,x.y)):"arc"==f?(n*=1.3,a.curveTo(u.x-q.y*n,u.y+q.x*n,x.x-q.y*n,x.y+q.x*n,x.x,x.y)):(a.moveTo(x.x,x.y),g=!0),n=[x],u=!0))}else q=null;u||(n.push(m),z=m)}this.addPoints(a,n,c,e,!1,null,g);a.stroke()}};var m=
+mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,c,e){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)m.apply(this,arguments);else{b=this.getTerminalPort(a,b,e);var d=this.getNextPoint(a,c,e),f=this.graph.isOrthogonal(a),n=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),g=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=n)var z=Math.cos(-n),l=Math.sin(-n),d=mxUtils.getRotatedPoint(d,z,l,g);
+z=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);z+=parseFloat(a.style[e?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);d=this.getPerimeterPoint(b,d,0==n&&f,z);0!=n&&(z=Math.cos(n),l=Math.sin(n),d=mxUtils.getRotatedPoint(d,z,l,g));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,e,d),e)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,e,d){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);e=c=null;if(null!=a)for(var k=
+0;k<a.length;k++){var f=this.graph.getConnectionPoint(b,a[k]);if(null!=f){var g=(f.x-d.x)*(f.x-d.x)+(f.y-d.y)*(f.y-d.y);if(null==e||g<e)c=f,e=g}}null!=c&&(d=c)}return d};var p=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var e=p.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(e=c.state.view.graph.replacePlaceholders(c.state.cell,e));return e};var v=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),e=mxUtils.parseXml(Graph.decompress(c));return new mxShape(new mxStencil(e.documentElement))}catch(k){null!=window.console&&console.log("Error in shape: "+k)}}return v.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;
 mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[];
-mxStencilRegistry.getStencil=function(a){var b=mxStencilRegistry.stencils[a];if(null==b&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var f=mxStencilRegistry.getBasenameForStencil(a);if(null!=f){b=mxStencilRegistry.libraries[f];if(null!=b){if(null==mxStencilRegistry.packages[f]){for(var d=0;d<b.length;d++){var k=b[d];if(".xml"==k.toLowerCase().substring(k.length-4,k.length))mxStencilRegistry.loadStencilSet(k,null);else if(".js"==k.toLowerCase().substring(k.length-3,k.length))try{if(mxStencilRegistry.allowEval){var m=
-mxUtils.load(k);null!=m&&200<=m.getStatus()&&299>=m.getStatus()&&eval.call(window,m.getText())}}catch(p){null!=window.console&&console.log("error in getStencil:",k,p)}}mxStencilRegistry.packages[f]=1}}else f=f.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+f+".xml",null);b=mxStencilRegistry.stencils[a]}}return b};
+mxStencilRegistry.getStencil=function(a){var b=mxStencilRegistry.stencils[a];if(null==b&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var f=mxStencilRegistry.getBasenameForStencil(a);if(null!=f){b=mxStencilRegistry.libraries[f];if(null!=b){if(null==mxStencilRegistry.packages[f]){for(var d=0;d<b.length;d++){var l=b[d];if(".xml"==l.toLowerCase().substring(l.length-4,l.length))mxStencilRegistry.loadStencilSet(l,null);else if(".js"==l.toLowerCase().substring(l.length-3,l.length))try{if(mxStencilRegistry.allowEval){var m=
+mxUtils.load(l);null!=m&&200<=m.getStatus()&&299>=m.getStatus()&&eval.call(window,m.getText())}}catch(p){null!=window.console&&console.log("error in getStencil:",l,p)}}mxStencilRegistry.packages[f]=1}}else f=f.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+f+".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],f=2;f<a.length-1;f++)b+="/"+a[f];return b};
-mxStencilRegistry.loadStencilSet=function(a,b,f,d){var k=mxStencilRegistry.packages[a];if(null!=f&&f||null==k){var m=!1;if(null==k)try{if(d){mxStencilRegistry.loadStencil(a,mxUtils.bind(this,function(d){null!=d&&null!=d.documentElement&&(mxStencilRegistry.packages[a]=d,m=!0,mxStencilRegistry.parseStencilSet(d.documentElement,b,m))}));return}k=mxStencilRegistry.loadStencil(a);mxStencilRegistry.packages[a]=k;m=!0}catch(p){null!=window.console&&console.log("error in loadStencilSet:",a,p)}null!=k&&null!=
-k.documentElement&&mxStencilRegistry.parseStencilSet(k.documentElement,b,m)}};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,f){if("stencils"==a.nodeName)for(var d=a.firstChild;null!=d;)"shapes"==d.nodeName&&mxStencilRegistry.parseStencilSet(d,b,f),d=d.nextSibling;else{f=null!=f?f:!0;var d=a.firstChild,k="";a=a.getAttribute("name");for(null!=a&&(k=a+".");null!=d;){if(d.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=d.getAttribute("name"),null!=a)){var k=k.toLowerCase(),m=a.replace(/ /g,"_");f&&mxStencilRegistry.addStencil(k+m.toLowerCase(),new mxStencil(d));if(null!=b){var p=d.getAttribute("w"),
-v=d.getAttribute("h"),p=null==p?80:parseInt(p,10),v=null==v?80:parseInt(v,10);b(k,m,a,p,v)}}d=d.nextSibling}}};
+mxStencilRegistry.loadStencilSet=function(a,b,f,d){var l=mxStencilRegistry.packages[a];if(null!=f&&f||null==l){var m=!1;if(null==l)try{if(d){mxStencilRegistry.loadStencil(a,mxUtils.bind(this,function(d){null!=d&&null!=d.documentElement&&(mxStencilRegistry.packages[a]=d,m=!0,mxStencilRegistry.parseStencilSet(d.documentElement,b,m))}));return}l=mxStencilRegistry.loadStencil(a);mxStencilRegistry.packages[a]=l;m=!0}catch(p){null!=window.console&&console.log("error in loadStencilSet:",a,p)}null!=l&&null!=
+l.documentElement&&mxStencilRegistry.parseStencilSet(l.documentElement,b,m)}};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,f){if("stencils"==a.nodeName)for(var d=a.firstChild;null!=d;)"shapes"==d.nodeName&&mxStencilRegistry.parseStencilSet(d,b,f),d=d.nextSibling;else{f=null!=f?f:!0;var d=a.firstChild,l="";a=a.getAttribute("name");for(null!=a&&(l=a+".");null!=d;){if(d.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=d.getAttribute("name"),null!=a)){var l=l.toLowerCase(),m=a.replace(/ /g,"_");f&&mxStencilRegistry.addStencil(l+m.toLowerCase(),new mxStencil(d));if(null!=b){var p=d.getAttribute("w"),
+v=d.getAttribute("h"),p=null==p?80:parseInt(p,10),v=null==v?80:parseInt(v,10);b(l,m,a,p,v)}}d=d.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,c){switch(c){case mxConstants.POINTS:return a;case mxConstants.MILLIMETERS:return(a/mxConstants.PIXELS_PER_MM).toFixed(1);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 f=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(a){return mxEvent.isControlDown(a)||f.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 c in this.graph.currentEdgeStyle)a.style[c]=this.graph.currentEdgeStyle[c];return a};var d=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var a=d.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),c=a.getCell;a.getCell=mxUtils.bind(this,function(a){var b=c.apply(this,arguments);this.error=null;return b});return a};mxConnectionHandler.prototype.isCellEnabled=function(a){return!this.graph.isCellLocked(a)};Graph.prototype.defaultVertexStyle={};
+this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];return a};mxConnectionHandler.prototype.updatePreview=function(a){};var l=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=l.apply(this,arguments),c=a.getCell;a.getCell=mxUtils.bind(this,function(a){var b=c.apply(this,arguments);this.error=null;return b});return a};mxConnectionHandler.prototype.isCellEnabled=function(a){return!this.graph.isCellLocked(a)};Graph.prototype.defaultVertexStyle={};
 Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=function(){var a="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";";null!=this.currentEdgeStyle.shape&&(a+="shape="+this.currentEdgeStyle.shape+";");null!=this.currentEdgeStyle.curved&&(a+="curved="+this.currentEdgeStyle.curved+";");null!=this.currentEdgeStyle.rounded&&(a+="rounded="+this.currentEdgeStyle.rounded+";");null!=this.currentEdgeStyle.comic&&
 (a+="comic="+this.currentEdgeStyle.comic+";");null!=this.currentEdgeStyle.jumpStyle&&(a+="jumpStyle="+this.currentEdgeStyle.jumpStyle+";");null!=this.currentEdgeStyle.jumpSize&&(a+="jumpSize="+this.currentEdgeStyle.jumpSize+";");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,c){c=null!=c?c:{};for(var b=0;b<a.length;b++){var e=a[b];c[mxObjectIdentity.get(e)]=e.getId();for(var d=this.model.getChildCount(e),g=0;g<d;g++)this.createCellLookup([this.model.getChildAt(e,g)],c)}return c};Graph.prototype.createCellMapping=
-function(a,c,b){b=null!=b?b:{};for(var e in a){var d=c[e];null==b[d]&&(b[d]=a[e].getId()||"")}return b};Graph.prototype.importGraphModel=function(a,c,b,e){c=null!=c?c:0;b=null!=b?b:0;var d=new mxCodec(a.ownerDocument),g=new mxGraphModel;d.decode(a,g);a=[];var d={},f={},l=g.getChildren(this.cloneCell(g.root,this.isCloneInvalidEdges(),d));if(null!=l){var t=this.createCellLookup([g.root]),l=l.slice();this.model.beginUpdate();try{if(1!=l.length||this.isCellLocked(this.getDefaultParent()))for(g=0;g<l.length;g++)a=
-a.concat(this.model.getChildren(this.moveCells([l[g]],c,b,!1,this.model.getRoot())[0]));else a=this.moveCells(g.getChildren(l[0]),c,b,!1,this.getDefaultParent()),f[g.getChildAt(g.root,0).getId()]=this.getDefaultParent().getId();this.createCellMapping(d,t,f);this.updateCustomLinks(f,a);if(e){this.isGridEnabled()&&(c=this.snap(c),b=this.snap(b));var n=this.getBoundingBoxFromGeometry(a,!0);null!=n&&this.moveCells(a,c-n.x,b-n.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.encodeCells=function(a){for(var c=
-{},b=this.cloneCells(a,null,c),e=new mxDictionary,d=0;d<a.length;d++)e.put(a[d],!0);for(d=0;d<b.length;d++){var g=this.view.getState(a[d]);if(null!=g){var f=this.getCellGeometry(b[d]);null==f||!f.relative||this.model.isEdge(a[d])||e.get(this.model.getParent(a[d]))||(f.relative=!1,f.x=g.x/g.view.scale-g.view.translate.x,f.y=g.y/g.view.scale-g.view.translate.y)}}e=new mxCodec;g=new mxGraphModel;f=g.getChildAt(g.getRoot(),0);for(d=0;d<b.length;d++)g.add(f,b[d]);this.updateCustomLinks(this.createCellMapping(c,
-this.createCellLookup(a)),b);return e.encode(g)};var m=Graph.prototype.moveCells;Graph.prototype.moveCells=function(a,c,b,e,d,g,f){f=null!=f?f:{};var l=m.apply(this,arguments);e&&this.updateCustomLinks(this.createCellMapping(f,this.createCellLookup(a)),l);return l};Graph.prototype.updateCustomLinks=function(a,c){for(var b=0;b<c.length;b++)null!=c[b]&&this.updateCustomLinksForCell(a,c[b])};Graph.prototype.updateCustomLinksForCell=function(a,c){};Graph.prototype.getAllConnectionConstraints=function(a,
-c){if(null!=a){var b=mxUtils.getValue(a.style,"points",null);if(null!=b){var e=[];try{for(var d=JSON.parse(b),b=0;b<d.length;b++){var g=d[b];e.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(R){}return e}if(null!=a.shape&&null!=a.shape.bounds){g=a.shape.direction;d=a.shape.bounds;b=a.shape.scale;e=d.width/b;d=d.height/b;if(g==mxConstants.DIRECTION_NORTH||g==mxConstants.DIRECTION_SOUTH)g=e,e=d,d=g;b=a.shape.getConstraints(a.style,
+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,c){c=null!=c?c:{};for(var b=0;b<a.length;b++){var e=a[b];c[mxObjectIdentity.get(e)]=e.getId();for(var d=this.model.getChildCount(e),k=0;k<d;k++)this.createCellLookup([this.model.getChildAt(e,k)],c)}return c};Graph.prototype.createCellMapping=
+function(a,c,b){b=null!=b?b:{};for(var e in a){var d=c[e];null==b[d]&&(b[d]=a[e].getId()||"")}return b};Graph.prototype.importGraphModel=function(a,c,b,e){c=null!=c?c:0;b=null!=b?b:0;var d=new mxCodec(a.ownerDocument),k=new mxGraphModel;d.decode(a,k);a=[];var d={},f={},g=k.getChildren(this.cloneCell(k.root,this.isCloneInvalidEdges(),d));if(null!=g){var u=this.createCellLookup([k.root]),g=g.slice();this.model.beginUpdate();try{if(1!=g.length||this.isCellLocked(this.getDefaultParent()))for(k=0;k<g.length;k++)a=
+a.concat(this.model.getChildren(this.moveCells([g[k]],c,b,!1,this.model.getRoot())[0]));else a=this.moveCells(k.getChildren(g[0]),c,b,!1,this.getDefaultParent()),f[k.getChildAt(k.root,0).getId()]=this.getDefaultParent().getId();this.createCellMapping(d,u,f);this.updateCustomLinks(f,a);if(e){this.isGridEnabled()&&(c=this.snap(c),b=this.snap(b));var n=this.getBoundingBoxFromGeometry(a,!0);null!=n&&this.moveCells(a,c-n.x,b-n.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.encodeCells=function(a){for(var c=
+{},b=this.cloneCells(a,null,c),e=new mxDictionary,d=0;d<a.length;d++)e.put(a[d],!0);for(d=0;d<b.length;d++){var k=this.view.getState(a[d]);if(null!=k){var f=this.getCellGeometry(b[d]);null==f||!f.relative||this.model.isEdge(a[d])||e.get(this.model.getParent(a[d]))||(f.relative=!1,f.x=k.x/k.view.scale-k.view.translate.x,f.y=k.y/k.view.scale-k.view.translate.y)}}e=new mxCodec;k=new mxGraphModel;f=k.getChildAt(k.getRoot(),0);for(d=0;d<b.length;d++)k.add(f,b[d]);this.updateCustomLinks(this.createCellMapping(c,
+this.createCellLookup(a)),b);return e.encode(k)};var m=Graph.prototype.moveCells;Graph.prototype.moveCells=function(a,c,b,e,d,k,f){f=null!=f?f:{};var g=m.apply(this,arguments);e&&this.updateCustomLinks(this.createCellMapping(f,this.createCellLookup(a)),g);return g};Graph.prototype.updateCustomLinks=function(a,c){for(var b=0;b<c.length;b++)null!=c[b]&&this.updateCustomLinksForCell(a,c[b])};Graph.prototype.updateCustomLinksForCell=function(a,c){};Graph.prototype.getAllConnectionConstraints=function(a,
+c){if(null!=a){var b=mxUtils.getValue(a.style,"points",null);if(null!=b){var e=[];try{for(var d=JSON.parse(b),b=0;b<d.length;b++){var k=d[b];e.push(new mxConnectionConstraint(new mxPoint(k[0],k[1]),2<k.length?"0"!=k[2]:!0,null,3<k.length?k[3]:0,4<k.length?k[4]:0))}}catch(R){}return e}if(null!=a.shape&&null!=a.shape.bounds){k=a.shape.direction;d=a.shape.bounds;b=a.shape.scale;e=d.width/b;d=d.height/b;if(k==mxConstants.DIRECTION_NORTH||k==mxConstants.DIRECTION_SOUTH)k=e,e=d,d=k;b=a.shape.getConstraints(a.style,
 e,d);if(null!=b)return b;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 c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);null!=c&&(c=mxUtils.getValue(c,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,
 c,[a]))}};Graph.prototype.isValidRoot=function(a){for(var c=this.model.getChildCount(a),b=0,e=0;e<c;e++){var d=this.model.getChildAt(a,e);this.model.isVertex(d)&&(d=this.getCellGeometry(d),null==d||d.relative||b++)}return 0<b||this.isContainer(a)};Graph.prototype.isValidDropTarget=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(c,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(c,
 "dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var c=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(c&&null!=a&&null!=this.layoutManager){var b=this.model.getParent(a);null!=b&&(b=this.layoutManager.getLayout(b),null!=b&&b.constructor==mxStackLayout&&(c=!1))}return c};Graph.prototype.getPreferredSizeForCell=function(a){var c=
-mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=c&&(c.width+=10,c.height+=4,this.gridEnabled&&(c.width=this.snap(c.width),c.height=this.snap(c.height)));return c};Graph.prototype.turnShapes=function(a){var c=this.getModel(),b=[];c.beginUpdate();try{for(var e=0;e<a.length;e++){var d=a[e];if(c.isEdge(d)){var g=c.getTerminal(d,!0),f=c.getTerminal(d,!1);c.setTerminal(d,f,!0);c.setTerminal(d,g,!1);var l=c.getGeometry(d);if(null!=l){l=l.clone();null!=l.points&&l.points.reverse();var t=
-l.getTerminalPoint(!0),n=l.getTerminalPoint(!1);l.setTerminalPoint(t,!1);l.setTerminalPoint(n,!0);c.setGeometry(d,l);var u=this.view.getState(d),C=this.view.getState(g),q=this.view.getState(f);if(null!=u){var z=null!=C?this.getConnectionConstraint(u,C,!0):null,k=null!=q?this.getConnectionConstraint(u,q,!1):null;this.setConnectionConstraint(d,g,!0,k);this.setConnectionConstraint(d,f,!1,z)}b.push(d)}}else if(c.isVertex(d)&&(l=this.getCellGeometry(d),null!=l)){l=l.clone();l.x+=l.width/2-l.height/2;l.y+=
-l.height/2-l.width/2;var A=l.width;l.width=l.height;l.height=A;c.setGeometry(d,l);var x=this.view.getState(d);if(null!=x){var D=x.style[mxConstants.STYLE_DIRECTION]||"east";"east"==D?D="south":"south"==D?D="west":"west"==D?D="north":"north"==D&&(D="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,D,[d])}b.push(d)}}}finally{c.endUpdate()}return b};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;
+mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=c&&(c.width+=10,c.height+=4,this.gridEnabled&&(c.width=this.snap(c.width),c.height=this.snap(c.height)));return c};Graph.prototype.turnShapes=function(a){var c=this.getModel(),b=[];c.beginUpdate();try{for(var e=0;e<a.length;e++){var d=a[e];if(c.isEdge(d)){var k=c.getTerminal(d,!0),f=c.getTerminal(d,!1);c.setTerminal(d,f,!0);c.setTerminal(d,k,!1);var g=c.getGeometry(d);if(null!=g){g=g.clone();null!=g.points&&g.points.reverse();var u=
+g.getTerminalPoint(!0),n=g.getTerminalPoint(!1);g.setTerminalPoint(u,!1);g.setTerminalPoint(n,!0);c.setGeometry(d,g);var t=this.view.getState(d),C=this.view.getState(k),q=this.view.getState(f);if(null!=t){var z=null!=C?this.getConnectionConstraint(t,C,!0):null,l=null!=q?this.getConnectionConstraint(t,q,!1):null;this.setConnectionConstraint(d,k,!0,l);this.setConnectionConstraint(d,f,!1,z)}b.push(d)}}else if(c.isVertex(d)&&(g=this.getCellGeometry(d),null!=g)){g=g.clone();g.x+=g.width/2-g.height/2;g.y+=
+g.height/2-g.width/2;var x=g.width;g.width=g.height;g.height=x;c.setGeometry(d,g);var A=this.view.getState(d);if(null!=A){var D=A.style[mxConstants.STYLE_DIRECTION]||"east";"east"==D?D="south":"south"==D?D="west":"west"==D?D="north":"north"==D&&(D="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,D,[d])}b.push(d)}}}finally{c.endUpdate()}return b};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};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var c=this.model.getDescendants(a.cell);if(0<c.length)for(var b=0;b<c.length;b++){var e=this.view.getState(c[b]);null!=e&&null!=e.shape&&null!=e.shape.stencil&&this.stencilHasPlaceholders(e.shape.stencil)?this.removeStateForCell(c[b]):this.isReplacePlaceholders(c[b])&&this.view.invalidate(c[b],
 !1,!1)}}};Graph.prototype.replaceElement=function(a,c){for(var b=a.ownerDocument.createElement(null!=c?c:"span"),e=Array.prototype.slice.call(a.attributes);attr=e.pop();)b.setAttribute(attr.nodeName,attr.nodeValue);b.innerHTML=a.innerHTML;a.parentNode.replaceChild(b,a)};Graph.prototype.processElements=function(a,c){for(var b=a.getElementsByTagName("*"),e=0;e<b.length;e++)c(b[e])};Graph.prototype.updateLabelElements=function(a,c,b){a=null!=a?a:this.getSelectionCells();for(var e=document.createElement("div"),
-d=0;d<a.length;d++)if(this.isHtmlLabel(a[d])){var g=this.convertValueToString(a[d]);if(null!=g&&0<g.length){e.innerHTML=g;for(var f=e.getElementsByTagName(null!=b?b:"*"),l=0;l<f.length;l++)c(f[l]);e.innerHTML!=g&&this.cellLabelChanged(a[d],e.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,c,b){c=Graph.zapGremlins(c);this.model.beginUpdate();try{if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var e=a.getAttribute("placeholder"),
-d=a;null!=d;){if(d==this.model.getRoot()||null!=d.value&&"object"==typeof d.value&&d.hasAttribute(e)){this.setAttributeForCell(d,e,c);break}d=this.model.getParent(d)}var g=a.value.cloneNode(!0);g.setAttribute("label",c);c=g}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(a){if(null!=a){for(var c=new mxDictionary,b=0;b<a.length;b++)c.put(a[b],!0);for(var e=[],b=0;b<a.length;b++){var d=this.model.getParent(a[b]);null==d||
-c.get(d)||(c.put(d,!0),e.push(d))}for(b=0;b<e.length;b++)if(d=this.view.getState(e[b]),null!=d&&(this.model.isEdge(d.cell)||this.model.isVertex(d.cell))&&this.isCellDeletable(d.cell)){var g=mxUtils.getValue(d.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),f=mxUtils.getValue(d.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);if(g==mxConstants.NONE&&f==mxConstants.NONE){g=!0;for(f=0;f<this.model.getChildCount(d.cell)&&g;f++)c.get(this.model.getChildAt(d.cell,f))||(g=!1);g&&a.push(d.cell)}}}mxGraph.prototype.cellsRemoved.apply(this,
+d=0;d<a.length;d++)if(this.isHtmlLabel(a[d])){var k=this.convertValueToString(a[d]);if(null!=k&&0<k.length){e.innerHTML=k;for(var g=e.getElementsByTagName(null!=b?b:"*"),f=0;f<g.length;f++)c(g[f]);e.innerHTML!=k&&this.cellLabelChanged(a[d],e.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,c,b){c=Graph.zapGremlins(c);this.model.beginUpdate();try{if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var e=a.getAttribute("placeholder"),
+d=a;null!=d;){if(d==this.model.getRoot()||null!=d.value&&"object"==typeof d.value&&d.hasAttribute(e)){this.setAttributeForCell(d,e,c);break}d=this.model.getParent(d)}var k=a.value.cloneNode(!0);k.setAttribute("label",c);c=k}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(a){if(null!=a){for(var c=new mxDictionary,b=0;b<a.length;b++)c.put(a[b],!0);for(var e=[],b=0;b<a.length;b++){var d=this.model.getParent(a[b]);null==d||
+c.get(d)||(c.put(d,!0),e.push(d))}for(b=0;b<e.length;b++)if(d=this.view.getState(e[b]),null!=d&&(this.model.isEdge(d.cell)||this.model.isVertex(d.cell))&&this.isCellDeletable(d.cell)){var k=mxUtils.getValue(d.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),g=mxUtils.getValue(d.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);if(k==mxConstants.NONE&&g==mxConstants.NONE){k=!0;for(g=0;g<this.model.getChildCount(d.cell)&&k;g++)c.get(this.model.getChildAt(d.cell,g))||(k=!1);k&&a.push(d.cell)}}}mxGraph.prototype.cellsRemoved.apply(this,
 arguments)};Graph.prototype.removeCellsAfterUngroup=function(a){for(var c=[],b=0;b<a.length;b++)if(this.isCellDeletable(a[b])){var e=this.view.getState(a[b]);if(null!=e){var d=mxUtils.getValue(e.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),e=mxUtils.getValue(e.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);d==mxConstants.NONE&&e==mxConstants.NONE&&c.push(a[b])}}a=c;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(a,c){this.setAttributeForCell(a,
 "link",c)};Graph.prototype.setTooltipForCell=function(a,c){this.setAttributeForCell(a,"tooltip",c)};Graph.prototype.getAttributeForCell=function(a,c,b){return null!=a.value&&"object"===typeof a.value?a.value.getAttribute(c)||b:b};Graph.prototype.setAttributeForCell=function(a,c,b){var e;null!=a.value&&"object"==typeof a.value?e=a.value.cloneNode(!0):(e=mxUtils.createXmlDocument().createElement("UserObject"),e.setAttribute("label",a.value||""));null!=b?e.setAttribute(c,b):e.removeAttribute(c);this.model.setValue(a,
 e)};Graph.prototype.getDropTarget=function(a,c,b,e){this.getModel();if(mxEvent.isAltDown(c))return null;for(var d=0;d<a.length;d++)if(this.model.isEdge(this.model.getParent(a[d])))return null;return mxGraph.prototype.getDropTarget.apply(this,arguments)};Graph.prototype.click=function(a){mxGraph.prototype.click.call(this,a);this.firstClickState=a.getState();this.firstClickSource=a.getSource()};Graph.prototype.dblClick=function(a,c){if(this.isEnabled()){var b=mxUtils.convertPoint(this.container,mxEvent.getClientX(a),
 mxEvent.getClientY(a));if(null!=a&&!this.model.isVertex(c)){var e=this.model.isEdge(c)?this.view.getState(c):null,d=mxEvent.getSource(a);this.firstClickState!=e||this.firstClickSource!=d||null!=e&&null!=e.text&&null!=e.text.node&&null!=e.text.boundingBox&&(mxUtils.contains(e.text.boundingBox,b.x,b.y)||mxUtils.isAncestorNode(e.text.node,mxEvent.getSource(a)))||(null!=e||this.isCellLocked(this.getDefaultParent()))&&(null==e||this.isCellLocked(e.cell))||!(null!=e||mxClient.IS_VML&&d==this.view.getCanvas()||
 mxClient.IS_SVG&&d==this.view.getCanvas().ownerSVGElement)||(c=this.addText(b.x,b.y,e))}mxGraph.prototype.dblClick.call(this,a,c)}};Graph.prototype.getInsertPoint=function(){var a=this.getGridSize(),c=this.container.scrollLeft/this.view.scale-this.view.translate.x,b=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible)var e=this.getPageLayout(),d=this.getPageSize(),c=Math.max(c,e.x*d.width),b=Math.max(b,e.y*d.height);return new mxPoint(this.snap(c+a),this.snap(b+a))};
 Graph.prototype.getFreeInsertPoint=function(){var a=this.view,c=this.getGraphBounds(),b=this.getInsertPoint(),e=this.snap(Math.round(Math.max(b.x,c.x/a.scale-a.translate.x+(0==c.width?2*this.gridSize:0)))),a=this.snap(Math.round(Math.max(b.y,(c.y+c.height)/a.scale-a.translate.y+2*this.gridSize)));return new mxPoint(e,a)};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(a,c,b){var e=new mxCell;e.value="Text";e.style="text;html=1;resizable=0;points=[];";e.geometry=
-new mxGeometry(0,0,0,0);e.vertex=!0;if(null!=b){e.style+="align=center;verticalAlign=middle;labelBackgroundColor=#ffffff;";e.geometry.relative=!0;e.connectable=!1;var d=this.view.getRelativePoint(b,a,c);e.geometry.x=Math.round(1E4*d.x)/1E4;e.geometry.y=Math.round(d.y);e.geometry.offset=new mxPoint(0,0);var d=this.view.getPoint(b,e.geometry),g=this.view.scale;e.geometry.offset=new mxPoint(Math.round((a-d.x)/g),Math.round((c-d.y)/g))}else e.style+="autosize=1;align=left;verticalAlign=top;spacingTop=-4;",
+new mxGeometry(0,0,0,0);e.vertex=!0;if(null!=b){e.style+="align=center;verticalAlign=middle;labelBackgroundColor=#ffffff;";e.geometry.relative=!0;e.connectable=!1;var d=this.view.getRelativePoint(b,a,c);e.geometry.x=Math.round(1E4*d.x)/1E4;e.geometry.y=Math.round(d.y);e.geometry.offset=new mxPoint(0,0);var d=this.view.getPoint(b,e.geometry),k=this.view.scale;e.geometry.offset=new mxPoint(Math.round((a-d.x)/k),Math.round((c-d.y)/k))}else e.style+="autosize=1;align=left;verticalAlign=top;spacingTop=-4;",
 d=this.view.translate,e.geometry.width=40,e.geometry.height=20,e.geometry.x=Math.round(a/this.view.scale)-d.x,e.geometry.y=Math.round(c/this.view.scale)-d.y;this.getModel().beginUpdate();try{this.addCells([e],null!=b?b.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[e])),this.autoSizeCell(e)}finally{this.getModel().endUpdate()}return e};Graph.prototype.addClickHandler=function(a,c,b){var e=mxUtils.bind(this,function(){var a=this.container.getElementsByTagName("a");if(null!=a)for(var b=
-0;b<a.length;b++){var e=this.getAbsoluteUrl(a[b].getAttribute("href"));null!=e&&(a[b].setAttribute("rel",this.linkRelation),a[b].setAttribute("href",e),null!=c&&mxEvent.addGestureListeners(a[b],null,null,c))}});this.model.addListener(mxEvent.CHANGE,e);e();var d=this.container.style.cursor,g=this.getTolerance(),f=this,l={currentState:null,currentLink:null,highlight:null!=a&&""!=a&&a!=mxConstants.NONE?new mxCellHighlight(f,a,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(a){var c=
-a.sourceState;if(null==c||null==f.getLinkForCell(c.cell))a=f.getCellAt(a.getGraphX(),a.getGraphY(),null,null,null,function(a,c,b){return null==f.getLinkForCell(a.cell)}),c=f.view.getState(a);c!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=c,null!=this.currentState&&this.activate(this.currentState))},mouseDown:function(a,c){this.startX=c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=f.container.scrollLeft;this.scrollTop=f.container.scrollTop;null==this.currentLink&&
-"auto"==f.container.style.overflow&&(f.container.style.cursor="move");this.updateCurrentState(c)},mouseMove:function(a,c){if(f.isMouseDown){if(null!=this.currentLink){var b=Math.abs(this.startX-c.getGraphX()),e=Math.abs(this.startY-c.getGraphY());(b>g||e>g)&&this.clear()}}else{for(b=c.getSource();null!=b&&"a"!=b.nodeName.toLowerCase();)b=b.parentNode;null!=b?this.clear():(null!=f.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&f.tooltipHandler.reset(c,!0,this.currentState),(null==
-this.currentState||c.getState()!=this.currentState&&null!=c.sourceState||!f.intersects(this.currentState,c.getGraphX(),c.getGraphY()))&&this.updateCurrentState(c))}},mouseUp:function(a,e){for(var d=e.getSource(),l=e.getEvent();null!=d&&"a"!=d.nodeName.toLowerCase();)d=d.parentNode;null==d&&Math.abs(this.scrollLeft-f.container.scrollLeft)<g&&Math.abs(this.scrollTop-f.container.scrollTop)<g&&(null==e.sourceState||!e.isSource(e.sourceState.control))&&((mxEvent.isLeftMouseButton(l)||mxEvent.isMiddleMouseButton(l))&&
-!mxEvent.isPopupTrigger(l)||mxEvent.isTouchEvent(l))&&(null!=this.currentLink?(d=f.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&d||null==c||c(l,this.currentLink),mxEvent.isConsumed(l)||(l=mxEvent.isMiddleMouseButton(l)?"_blank":d?f.linkTarget:"_top",f.openLink(this.currentLink,l),e.consume())):null!=b&&!e.isConsumed()&&Math.abs(this.scrollLeft-f.container.scrollLeft)<g&&Math.abs(this.scrollTop-f.container.scrollTop)<g&&Math.abs(this.startX-e.getGraphX())<g&&Math.abs(this.startY-
-e.getGraphY())<g&&b(e.getEvent()));this.clear()},activate:function(a){this.currentLink=f.getAbsoluteUrl(f.getLinkForCell(a.cell));null!=this.currentLink&&(f.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=f.container&&(f.container.style.cursor=d);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=f.tooltipHandler&&f.tooltipHandler.hide()}};f.click=function(a){};f.addMouseListener(l);mxEvent.addListener(document,
-"mouseleave",function(a){l.clear()})};Graph.prototype.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();c=null!=c?c:!0;a=this.model.getTopmostCells(a);var b=this.getModel(),e=this.gridSize,d=[];b.beginUpdate();try{for(var g=this.cloneCells(a,!1,null,!0),f=0;f<a.length;f++){var l=b.getParent(a[f]),t=this.moveCells([g[f]],e,e,!1)[0];d.push(t);if(c)b.add(l,g[f]);else{var n=l.getIndex(a[f]);b.add(l,g[f],n+1)}}}finally{b.endUpdate()}return d};Graph.prototype.insertImage=function(a,c,b){if(null!=
-a&&null!=this.cellEditor.textarea){for(var e=this.cellEditor.textarea.getElementsByTagName("img"),d=[],g=0;g<e.length;g++)d.push(e[g]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==d.length+1)for(g=a.length-1;0<=g;g--)if(0==g||a[g]!=d[g-1]){a[g].setAttribute("width",c);a[g].setAttribute("height",b);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 c=
+0;b<a.length;b++){var e=this.getAbsoluteUrl(a[b].getAttribute("href"));null!=e&&(a[b].setAttribute("rel",this.linkRelation),a[b].setAttribute("href",e),null!=c&&mxEvent.addGestureListeners(a[b],null,null,c))}});this.model.addListener(mxEvent.CHANGE,e);e();var d=this.container.style.cursor,k=this.getTolerance(),g=this,f={currentState:null,currentLink: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 c=
+a.sourceState;if(null==c||null==g.getLinkForCell(c.cell))a=g.getCellAt(a.getGraphX(),a.getGraphY(),null,null,null,function(a,c,b){return null==g.getLinkForCell(a.cell)}),c=g.view.getState(a);c!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=c,null!=this.currentState&&this.activate(this.currentState))},mouseDown:function(a,c){this.startX=c.getGraphX();this.startY=c.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(c)},mouseMove:function(a,c){if(g.isMouseDown){if(null!=this.currentLink){var b=Math.abs(this.startX-c.getGraphX()),e=Math.abs(this.startY-c.getGraphY());(b>k||e>k)&&this.clear()}}else{for(b=c.getSource();null!=b&&"a"!=b.nodeName.toLowerCase();)b=b.parentNode;null!=b?this.clear():(null!=g.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&g.tooltipHandler.reset(c,!0,this.currentState),(null==
+this.currentState||c.getState()!=this.currentState&&null!=c.sourceState||!g.intersects(this.currentState,c.getGraphX(),c.getGraphY()))&&this.updateCurrentState(c))}},mouseUp:function(a,e){for(var d=e.getSource(),f=e.getEvent();null!=d&&"a"!=d.nodeName.toLowerCase();)d=d.parentNode;null==d&&Math.abs(this.scrollLeft-g.container.scrollLeft)<k&&Math.abs(this.scrollTop-g.container.scrollTop)<k&&(null==e.sourceState||!e.isSource(e.sourceState.control))&&((mxEvent.isLeftMouseButton(f)||mxEvent.isMiddleMouseButton(f))&&
+!mxEvent.isPopupTrigger(f)||mxEvent.isTouchEvent(f))&&(null!=this.currentLink?(d=g.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&d||null==c||c(f,this.currentLink),mxEvent.isConsumed(f)||(f=mxEvent.isMiddleMouseButton(f)?"_blank":d?g.linkTarget:"_top",g.openLink(this.currentLink,f),e.consume())):null!=b&&!e.isConsumed()&&Math.abs(this.scrollLeft-g.container.scrollLeft)<k&&Math.abs(this.scrollTop-g.container.scrollTop)<k&&Math.abs(this.startX-e.getGraphX())<k&&Math.abs(this.startY-
+e.getGraphY())<k&&b(e.getEvent()));this.clear()},activate:function(a){this.currentLink=g.getAbsoluteUrl(g.getLinkForCell(a.cell));null!=this.currentLink&&(g.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=g.container&&(g.container.style.cursor=d);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=g.tooltipHandler&&g.tooltipHandler.hide()}};g.click=function(a){};g.addMouseListener(f);mxEvent.addListener(document,
+"mouseleave",function(a){f.clear()})};Graph.prototype.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();c=null!=c?c:!0;a=this.model.getTopmostCells(a);var b=this.getModel(),e=this.gridSize,d=[];b.beginUpdate();try{for(var k=this.cloneCells(a,!1,null,!0),g=0;g<a.length;g++){var f=b.getParent(a[g]),u=this.moveCells([k[g]],e,e,!1)[0];d.push(u);if(c)b.add(f,k[g]);else{var n=f.getIndex(a[g]);b.add(f,k[g],n+1)}}}finally{b.endUpdate()}return d};Graph.prototype.insertImage=function(a,c,b){if(null!=
+a&&null!=this.cellEditor.textarea){for(var e=this.cellEditor.textarea.getElementsByTagName("img"),d=[],k=0;k<e.length;k++)d.push(e[k]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==d.length+1)for(k=a.length-1;0<=k;k--)if(0==k||a[k]!=d[k-1]){a[k].setAttribute("width",c);a[k].setAttribute("height",b);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 c=
 this.cellEditor.textarea.getElementsByTagName("a"),b=[],e=0;e<c.length;e++)b.push(c[e]);document.execCommand("createlink",!1,mxUtils.trim(a));c=this.cellEditor.textarea.getElementsByTagName("a");if(c.length==b.length+1)for(e=c.length-1;0<=e;e--)if(c[e]!=b[e-1]){for(c=c[e].getElementsByTagName("a");0<c.length;){for(b=c[0].parentNode;null!=c[0].firstChild;)b.insertBefore(c[0].firstChild,c[0]);b.removeChild(c[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=
-function(a){var c=mxGraph.prototype.isCellResizable.apply(this,arguments),b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return c||"0"!=mxUtils.getValue(b,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==b[mxConstants.STYLE_WHITE_SPACE]};Graph.prototype.distributeCells=function(a,c){null==c&&(c=this.getSelectionCells());if(null!=c&&1<c.length){for(var b=[],e=null,d=null,g=0;g<c.length;g++)if(this.getModel().isVertex(c[g])){var f=this.view.getState(c[g]);if(null!=f){var l=a?f.getCenterX():
-f.getCenterY(),e=null!=e?Math.max(e,l):l,d=null!=d?Math.min(d,l):l;b.push(f)}}if(2<b.length){b.sort(function(c,b){return a?c.x-b.x:c.y-b.y});f=this.view.translate;l=this.view.scale;d=d/l-(a?f.x:f.y);e=e/l-(a?f.x:f.y);this.getModel().beginUpdate();try{for(var t=(e-d)/(b.length-1),e=d,g=1;g<b.length-1;g++){var n=this.view.getState(this.model.getParent(b[g].cell)),u=this.getCellGeometry(b[g].cell),e=e+t;null!=u&&null!=n&&(u=u.clone(),a?u.x=Math.round(e-u.width/2)-n.origin.x:u.y=Math.round(e-u.height/
-2)-n.origin.y,this.getModel().setGeometry(b[g].cell,u))}}finally{this.getModel().endUpdate()}}}return c};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,c){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,c,b,e,d,g,f,l,t,n){var u=this.useCssTransforms;u&&(this.useCssTransforms=!1,
-this.view.revalidate(),this.sizeDidChange());try{c=null!=c?c:1;b=null!=b?b:0;d=null!=d?d:!0;g=null!=g?g:!0;f=null!=f?f:!0;var C=g||e?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==C)throw Error(mxResources.get("drawingEmpty"));var q=this.view.scale,z=mxUtils.createXmlDocument(),k=null!=z.createElementNS?z.createElementNS(mxConstants.NS_SVG,"svg"):z.createElement("svg");null!=a&&(null!=k.style?k.style.backgroundColor=a:k.setAttribute("style","background-color:"+a));null==
-z.createElementNS?(k.setAttribute("xmlns",mxConstants.NS_SVG),k.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):k.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=c/q;var A=Math.max(1,Math.ceil(C.width*a)+2*b)+(n?5:0),x=Math.max(1,Math.ceil(C.height*a)+2*b)+(n?5:0);k.setAttribute("version","1.1");k.setAttribute("width",A+"px");k.setAttribute("height",x+"px");k.setAttribute("viewBox",(d?"-0.5 -0.5":"0 0")+" "+A+" "+x);z.appendChild(k);var D=null!=z.createElementNS?
-z.createElementNS(mxConstants.NS_SVG,"g"):z.createElement("g");k.appendChild(D);var v=this.createSvgCanvas(D);v.foOffset=d?-.5:0;v.textOffset=d?-.5:0;v.imageOffset=d?-.5:0;v.translate(Math.floor((b/c-C.x)/q),Math.floor((b/c-C.y)/q));var m=document.createElement("textarea"),K=v.createAlternateContent;v.createAlternateContent=function(a,c,b,e,d,g,f,l,t,n,u,C,q){var z=this.state;if(null!=this.foAltText&&(0==e||0!=z.fontSize&&g.length<5*e/z.fontSize)){var k=this.createElement("text");k.setAttribute("x",
-Math.round(e/2));k.setAttribute("y",Math.round((d+z.fontSize)/2));k.setAttribute("fill",z.fontColor||"black");k.setAttribute("text-anchor","middle");k.setAttribute("font-size",Math.round(z.fontSize)+"px");k.setAttribute("font-family",z.fontFamily);(z.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&k.setAttribute("font-weight","bold");(z.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&k.setAttribute("font-style","italic");(z.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&
-k.setAttribute("text-decoration","underline");try{return m.innerHTML=g,k.textContent=m.value,k}catch(ra){return K.apply(this,arguments)}}else return K.apply(this,arguments)};var H=this.backgroundImage;if(null!=H){c=q/c;var F=this.view.translate,p=new mxRectangle(F.x*c,F.y*c,H.width*c,H.height*c);mxUtils.intersects(C,p)&&v.image(F.x,F.y,H.width,H.height,H.src,!0)}v.scale(a);v.textEnabled=f;l=null!=l?l:this.createSvgImageExport();var E=l.drawCellState,P=l.getLinkForCellState;l.getLinkForCellState=function(a,
-c){var b=P.apply(this,arguments);return null==b||a.view.graph.isCustomLink(b)?null:b};l.drawCellState=function(a,c){for(var b=a.view.graph,e=b.isCellSelected(a.cell),d=b.model.getParent(a.cell);!g&&!e&&null!=d;)e=b.isCellSelected(d),d=b.model.getParent(d);(g||e)&&E.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),v);this.updateSvgLinks(k,t,!0);return k}finally{u&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,
+function(a){var c=mxGraph.prototype.isCellResizable.apply(this,arguments),b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return c||"0"!=mxUtils.getValue(b,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==b[mxConstants.STYLE_WHITE_SPACE]};Graph.prototype.distributeCells=function(a,c){null==c&&(c=this.getSelectionCells());if(null!=c&&1<c.length){for(var b=[],e=null,d=null,k=0;k<c.length;k++)if(this.getModel().isVertex(c[k])){var g=this.view.getState(c[k]);if(null!=g){var f=a?g.getCenterX():
+g.getCenterY(),e=null!=e?Math.max(e,f):f,d=null!=d?Math.min(d,f):f;b.push(g)}}if(2<b.length){b.sort(function(c,b){return a?c.x-b.x:c.y-b.y});g=this.view.translate;f=this.view.scale;d=d/f-(a?g.x:g.y);e=e/f-(a?g.x:g.y);this.getModel().beginUpdate();try{for(var u=(e-d)/(b.length-1),e=d,k=1;k<b.length-1;k++){var n=this.view.getState(this.model.getParent(b[k].cell)),t=this.getCellGeometry(b[k].cell),e=e+u;null!=t&&null!=n&&(t=t.clone(),a?t.x=Math.round(e-t.width/2)-n.origin.x:t.y=Math.round(e-t.height/
+2)-n.origin.y,this.getModel().setGeometry(b[k].cell,t))}}finally{this.getModel().endUpdate()}}}return c};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,c){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,c,b,e,d,k,g,f,u,n){var t=this.useCssTransforms;t&&(this.useCssTransforms=!1,
+this.view.revalidate(),this.sizeDidChange());try{c=null!=c?c:1;b=null!=b?b:0;d=null!=d?d:!0;k=null!=k?k:!0;g=null!=g?g:!0;var C=k||e?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==C)throw Error(mxResources.get("drawingEmpty"));var q=this.view.scale,z=mxUtils.createXmlDocument(),l=null!=z.createElementNS?z.createElementNS(mxConstants.NS_SVG,"svg"):z.createElement("svg");null!=a&&(null!=l.style?l.style.backgroundColor=a:l.setAttribute("style","background-color:"+a));null==
+z.createElementNS?(l.setAttribute("xmlns",mxConstants.NS_SVG),l.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):l.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=c/q;var x=Math.max(1,Math.ceil(C.width*a)+2*b)+(n?5:0),A=Math.max(1,Math.ceil(C.height*a)+2*b)+(n?5:0);l.setAttribute("version","1.1");l.setAttribute("width",x+"px");l.setAttribute("height",A+"px");l.setAttribute("viewBox",(d?"-0.5 -0.5":"0 0")+" "+x+" "+A);z.appendChild(l);var D=null!=z.createElementNS?
+z.createElementNS(mxConstants.NS_SVG,"g"):z.createElement("g");l.appendChild(D);var v=this.createSvgCanvas(D);v.foOffset=d?-.5:0;v.textOffset=d?-.5:0;v.imageOffset=d?-.5:0;v.translate(Math.floor((b/c-C.x)/q),Math.floor((b/c-C.y)/q));var m=document.createElement("textarea"),K=v.createAlternateContent;v.createAlternateContent=function(a,c,b,e,d,k,g,f,u,n,t,C,q){var z=this.state;if(null!=this.foAltText&&(0==e||0!=z.fontSize&&k.length<5*e/z.fontSize)){var l=this.createElement("text");l.setAttribute("x",
+Math.round(e/2));l.setAttribute("y",Math.round((d+z.fontSize)/2));l.setAttribute("fill",z.fontColor||"black");l.setAttribute("text-anchor","middle");l.setAttribute("font-size",Math.round(z.fontSize)+"px");l.setAttribute("font-family",z.fontFamily);(z.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&l.setAttribute("font-weight","bold");(z.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&l.setAttribute("font-style","italic");(z.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&
+l.setAttribute("text-decoration","underline");try{return m.innerHTML=k,l.textContent=m.value,l}catch(ra){return K.apply(this,arguments)}}else return K.apply(this,arguments)};var E=this.backgroundImage;if(null!=E){c=q/c;var H=this.view.translate,p=new mxRectangle(H.x*c,H.y*c,E.width*c,E.height*c);mxUtils.intersects(C,p)&&v.image(H.x,H.y,E.width,E.height,E.src,!0)}v.scale(a);v.textEnabled=g;f=null!=f?f:this.createSvgImageExport();var F=f.drawCellState,P=f.getLinkForCellState;f.getLinkForCellState=function(a,
+c){var b=P.apply(this,arguments);return null==b||a.view.graph.isCustomLink(b)?null:b};f.drawCellState=function(a,c){for(var b=a.view.graph,e=b.isCellSelected(a.cell),d=b.model.getParent(a.cell);!k&&!e&&null!=d;)e=b.isCellSelected(d),d=b.model.getParent(d);(k||e)&&F.apply(this,arguments)};f.drawState(this.getView().getState(this.model.root),v);this.updateSvgLinks(l,u,!0);return l}finally{t&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,
 c,b){a=a.getElementsByTagName("a");for(var e=0;e<a.length;e++){var d=a[e].getAttribute("href");null==d&&(d=a[e].getAttribute("xlink:href"));null!=d&&(null!=c&&/^https?:\/\//.test(d)?a[e].setAttribute("target",c):b&&this.isCustomLink(d)&&a[e].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 c=window.getSelection();c.getRangeAt&&
 c.rangeCount&&(a=c.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,c,b){for(;null!=a&&a.nodeName!=c;){if(a==b)return null;a=a.parentNode}return a};Graph.prototype.getParentByNames=function(a,c,b){for(;null!=a&&!(0<=mxUtils.indexOf(c,a.nodeName));){if(a==b)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var c=null;if(window.getSelection){if(c=window.getSelection(),
-c.getRangeAt&&c.rangeCount){var b=document.createRange();b.selectNode(a);c.removeAllRanges();c.addRange(b)}}else(c=document.selection)&&"Control"!=c.type&&(a=c.createRange(),a.collapse(!0),b=c.createRange(),b.setEndPoint("StartToStart",a),b.select())};Graph.prototype.insertRow=function(a,c){for(var b=a.tBodies[0],e=b.rows[0].cells,d=0,g=0;g<e.length;g++)var f=e[g].getAttribute("colspan"),d=d+(null!=f?parseInt(f):1);b=b.insertRow(c);for(g=0;g<d;g++)mxUtils.br(b.insertCell(-1));return b.cells[0]};Graph.prototype.deleteRow=
+c.getRangeAt&&c.rangeCount){var b=document.createRange();b.selectNode(a);c.removeAllRanges();c.addRange(b)}}else(c=document.selection)&&"Control"!=c.type&&(a=c.createRange(),a.collapse(!0),b=c.createRange(),b.setEndPoint("StartToStart",a),b.select())};Graph.prototype.insertRow=function(a,c){for(var b=a.tBodies[0],e=b.rows[0].cells,d=0,k=0;k<e.length;k++)var g=e[k].getAttribute("colspan"),d=d+(null!=g?parseInt(g):1);b=b.insertRow(c);for(k=0;k<d;k++)mxUtils.br(b.insertCell(-1));return b.cells[0]};Graph.prototype.deleteRow=
 function(a,c){a.tBodies[0].deleteRow(c)};Graph.prototype.insertColumn=function(a,c){var b=a.tHead;if(null!=b)for(var e=0;e<b.rows.length;e++){var d=document.createElement("th");b.rows[e].appendChild(d);mxUtils.br(d)}b=a.tBodies[0];for(e=0;e<b.rows.length;e++)d=b.rows[e].insertCell(c),mxUtils.br(d);return b.rows[0].cells[0<=c?c:b.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,c){if(0<=c)for(var b=a.tBodies[0].rows,e=0;e<b.length;e++)b[e].cells.length>c&&b[e].deleteCell(c)};Graph.prototype.pasteHtmlAtCaret=
 function(a){var c;if(window.getSelection){if(c=window.getSelection(),c.getRangeAt&&c.rangeCount){c=c.getRangeAt(0);c.deleteContents();var b=document.createElement("div");b.innerHTML=a;a=document.createDocumentFragment();for(var e;e=b.firstChild;)lastNode=a.appendChild(e);c.insertNode(a)}}else(c=document.selection)&&"Control"!=c.type&&c.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,c){function b(a,c){a.length>c&&(a=a.substring(0,Math.round(c/2))+"..."+a.substring(a.length-
 Math.round(c/4)));return a}a=null!=a?a:"javascript:void(0);";if(null==c||0==c.length)c=this.isCustomLink(a)?this.getLinkTitle(a):a;var e=document.createElement("a");e.setAttribute("rel",this.linkRelation);e.setAttribute("href",this.getAbsoluteUrl(a));e.setAttribute("title",b(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&e.setAttribute("target",this.linkTarget);mxUtils.write(e,b(c,40));this.isCustomLink(a)&&mxEvent.addListener(e,"click",mxUtils.bind(this,function(c){this.customLinkClicked(a);
 mxEvent.consume(c)}));return e};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(a,c){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(c){c=a.apply(this,arguments);if(mxEvent.isTouchEvent(c.getEvent())&&null==c.getState()){var b=this.getCellAt(c.graphX,c.graphY);null!=b&&this.isSwimlane(b)&&this.hitsSwimlaneContent(b,c.graphX,
-c.graphY)||(c.state=this.view.getState(b),null!=c.state&&null!=c.state.shape&&(this.container.style.cursor=c.state.shape.node.style.cursor))}null==c.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return c};var c=!1,b=!1,e=!1,d=this.fireMouseEvent;this.fireMouseEvent=function(a,g,f){a==mxEvent.MOUSE_DOWN&&(g=this.updateMouseEvent(g),c=this.isCellSelected(g.getCell()),b=this.isSelectionEmpty(),e=this.popupMenuHandler.isMenuShowing());d.apply(this,arguments)};this.popupMenuHandler.mouseUp=
+c.graphY)||(c.state=this.view.getState(b),null!=c.state&&null!=c.state.shape&&(this.container.style.cursor=c.state.shape.node.style.cursor))}null==c.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return c};var c=!1,b=!1,e=!1,d=this.fireMouseEvent;this.fireMouseEvent=function(a,k,g){a==mxEvent.MOUSE_DOWN&&(k=this.updateMouseEvent(k),c=this.isCellSelected(k.getCell()),b=this.isSelectionEmpty(),e=this.popupMenuHandler.isMenuShowing());d.apply(this,arguments)};this.popupMenuHandler.mouseUp=
 mxUtils.bind(this,function(a,d){this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==d.getState()||!d.isSource(d.getState().control))&&(this.popupMenuHandler.popupTrigger||!e&&!mxEvent.isMouseEvent(d.getEvent())&&(b&&null==d.getCell()&&this.isSelectionEmpty()||c&&this.isCellSelected(d.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,arguments)})};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.alignText=function(a,c){!this.isTableSelected()==(null==c||!mxEvent.isShiftDown(c))&&(this.graph.cellEditor.setAlign(a),this.graph.processElements(this.textarea,function(a){a.removeAttribute("align");a.style.textAlign=null}));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 c=[],b=0,e=a.rangeCount;b<e;++b)c.push(a.getRangeAt(b));return c}}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 c=0,b=a.length;c<b;++c)sel.addRange(a[c])}else document.selection&&a.select&&a.select()}catch(V){}};
@@ -2435,27 +2435,27 @@ mxCellEditor.prototype.escapeCancelsEditing=!1;var y=mxCellEditor.prototype.star
 null!=e&&e.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border="gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":"":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var B=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function c(a,b){b.originalNode=a;a=a.firstChild;for(var e=b.firstChild;null!=a&&null!=
 e;)c(a,e),a=a.nextSibling,e=e.nextSibling;return b}function b(a,c){if(null!=a)if(c.originalNode!=a)e(a);else for(a=a.firstChild,c=c.firstChild;null!=a;){var d=a.nextSibling;null==c?e(a):(b(a,c),c=c.nextSibling);a=d}}function e(a){for(var c=a.firstChild;null!=c;){var b=c.nextSibling;e(c);c=b}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)}B.apply(this,arguments);mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var e=c(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]>"))&&b(this.textarea,e)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);if(null!=a){var c=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),b=this.saveSelection();if(this.codeViewMode){l=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<l.length&&"\n"==l.charAt(l.length-1)&&(l=l.substring(0,l.length-1));l=this.graph.sanitizeHtml(c?
-l.replace(/\n/g,"<br/>"):l,!0);this.textarea.className="mxCellEditor geContentEditable";var e=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),c=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),d=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&
-mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,a=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(e*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(e)+"px";this.textarea.style.textDecoration=a?"underline":"";this.textarea.style.fontWeight=g?"bold":"normal";this.textarea.style.fontStyle=f?"italic":"";this.textarea.style.fontFamily=
-c;this.textarea.style.textAlign=d;this.textarea.style.padding="0px";this.textarea.innerHTML!=l&&(this.textarea.innerHTML=l,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 l=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||
-(l=mxUtils.replaceTrailingNewlines(l,"<div><br></div>"));l=this.graph.sanitizeHtml(c?l.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):l,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var e=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(e*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(e)+"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.padding="2px";this.textarea.innerHTML!=l&&(this.textarea.innerHTML=l);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=b;this.resize()}};var c=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),
+(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>"))&&b(this.textarea,e)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);if(null!=a){var c=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),b=this.saveSelection();if(this.codeViewMode){f=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<f.length&&"\n"==f.charAt(f.length-1)&&(f=f.substring(0,f.length-1));f=this.graph.sanitizeHtml(c?
+f.replace(/\n/g,"<br/>"):f,!0);this.textarea.className="mxCellEditor geContentEditable";var e=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),c=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),d=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),k=(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,a=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(e*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(e)+"px";this.textarea.style.textDecoration=a?"underline":"";this.textarea.style.fontWeight=k?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=
+c;this.textarea.style.textAlign=d;this.textarea.style.padding="0px";this.textarea.innerHTML!=f&&(this.textarea.innerHTML=f,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 f=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||
+(f=mxUtils.replaceTrailingNewlines(f,"<div><br></div>"));f=this.graph.sanitizeHtml(c?f.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):f,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var e=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(e*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(e)+"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.padding="2px";this.textarea.innerHTML!=f&&(this.textarea.innerHTML=f);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=b;this.resize()}};var c=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 e=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*e;this.bounds.height=60*e;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)/e)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/e)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/e)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*e);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/e)+(this.textarea.offsetWidth-
 this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*e);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=e:mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+e+","+e+")")}else this.textarea.style.height="",this.textarea.style.overflow="",c.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=
 function(a,c){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var b=this.graph.getEditingValue(a.cell,c);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(b=b.replace(/\n/g,"<br/>"));return b=this.graph.sanitizeHtml(b,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var c=this.graph.sanitizeHtml(this.textarea.innerHTML,
-!0);return c="1"==mxUtils.getValue(a.style,"nl2Br","1")?c.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):c.replace(/\r\n/g,"").replace(/\n/g,"")};var e=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&&this.toggleViewMode();e.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(ca){}};var g=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,
-c){this.graph.getModel().beginUpdate();try{if(g.apply(this,arguments),this.graph.isCellDeletable(a.cell)&&0==this.graph.model.getChildCount(a.cell)){var b=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),e=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);""==c&&b==mxConstants.NONE&&e==mxConstants.NONE&&this.graph.removeCells([a.cell],!1)}}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var c=mxUtils.getValue(a.style,
-mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=c&&c!=mxConstants.NONE||!(null!=a.cell.geometry&&0<a.cell.geometry.width)||0==mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)||(c=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,null));c==mxConstants.NONE&&(c=null);return c};mxCellEditor.prototype.getMinimumSize=function(a){var c=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*c+20,30)};var u=
-mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,c,b,e,d,g){mxEvent.isAltDown(g)&&(d=null);u.apply(this,arguments)};mxGraphView.prototype.formatUnitText=function(a){return a?b(a,this.unit):a};mxGraphHandler.prototype.updateHint=function(c){if(null!=this.shape){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var e=this.graph.view.translate,d=this.graph.view.scale;c=this.roundLength((this.bounds.x+this.currentDx)/d-e.x);e=this.roundLength((this.bounds.y+
+!0);return c="1"==mxUtils.getValue(a.style,"nl2Br","1")?c.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):c.replace(/\r\n/g,"").replace(/\n/g,"")};var e=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&&this.toggleViewMode();e.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(ca){}};var k=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a,
+c){this.graph.getModel().beginUpdate();try{if(k.apply(this,arguments),this.graph.isCellDeletable(a.cell)&&0==this.graph.model.getChildCount(a.cell)){var b=mxUtils.getValue(a.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),e=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);""==c&&b==mxConstants.NONE&&e==mxConstants.NONE&&this.graph.removeCells([a.cell],!1)}}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var c=mxUtils.getValue(a.style,
+mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=c&&c!=mxConstants.NONE||!(null!=a.cell.geometry&&0<a.cell.geometry.width)||0==mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)||(c=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,null));c==mxConstants.NONE&&(c=null);return c};mxCellEditor.prototype.getMinimumSize=function(a){var c=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*c+20,30)};var t=
+mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,c,b,e,d,k){mxEvent.isAltDown(k)&&(d=null);t.apply(this,arguments)};mxGraphView.prototype.formatUnitText=function(a){return a?b(a,this.unit):a};mxGraphHandler.prototype.updateHint=function(c){if(null!=this.shape){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var e=this.graph.view.translate,d=this.graph.view.scale;c=this.roundLength((this.bounds.x+this.currentDx)/d-e.x);e=this.roundLength((this.bounds.y+
 this.currentDy)/d-e.y);d=this.graph.view.unit;this.hint.innerHTML=b(c,d)+", "+b(e,d);this.hint.style.left=this.shape.bounds.x+Math.round((this.shape.bounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.shape.bounds.y+this.shape.bounds.height+12+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};mxVertexHandler.prototype.isRecursiveResize=function(a,c){return!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&
 !mxEvent.isControlDown(c.getEvent())&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};mxVertexHandler.prototype.isCenteredEvent=function(a,c){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(c.getEvent())||mxEvent.isMetaDown(c.getEvent())};
 var n=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),c=this.tolerance;this.graph.cellEditor.getEditingCell()==this.state.cell&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(c/=2,a.x=this.sizers[0].bounds.width+c,a.y=this.sizers[0].bounds.height+c):a=n.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 e=this.state.view.unit;this.hint.innerHTML=b(this.roundLength(this.bounds.width/c),e)+" x "+b(this.roundLength(this.bounds.height/c),e)}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+12+"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 l=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(a,c){l.apply(this,arguments);null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&null!=this.linkHint&&"none"!=this.linkHint.style.display&&(this.linkHint.style.display=
-"none")};var z=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(a,c){z.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(c,e){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var d=this.graph.view.translate,g=this.graph.view.scale,f=this.roundLength(e.x/g-d.x),d=this.roundLength(e.y/g-d.y),g=this.graph.view.unit;this.hint.innerHTML=
-b(f,g)+", "+b(d,g);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(f=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*f.x)+"%, "+Math.round(100*f.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(c.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(c.getGraphY(),e.y)+this.state.view.graph.gridSize+
+c.y+c.height+12+"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 g=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(a,c){g.apply(this,arguments);null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&null!=this.linkHint&&"none"!=this.linkHint.style.display&&(this.linkHint.style.display=
+"none")};var z=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(a,c){z.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(c,e){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var d=this.graph.view.translate,k=this.graph.view.scale,g=this.roundLength(e.x/k-d.x),d=this.roundLength(e.y/k-d.y),k=this.graph.view.unit;this.hint.innerHTML=
+b(g,k)+", "+b(d,k);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(g=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*g.x)+"%, "+Math.round(100*g.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(c.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(c.getGraphY(),e.y)+this.state.view.graph.gridSize+
 "px";null!=this.linkHint&&(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/>'):new mxImage(IMAGE_PATH+"/handle-main.png",17,17);HoverIcons.prototype.secondaryHandle=mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>'):
 new mxImage(IMAGE_PATH+"/handle-secondary.png",17,17);HoverIcons.prototype.fixedHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><path d="m 7 7 L 11 11 M 7 11 L 11 7" stroke="#fff"/>'):new mxImage(IMAGE_PATH+"/handle-fixed.png",17,17);HoverIcons.prototype.terminalHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><circle cx="9" cy="9" r="2" stroke="#fff" fill="transparent"/>'):
 new mxImage(IMAGE_PATH+"/handle-terminal.png",17,17);HoverIcons.prototype.rotationHandle=new mxImage(mxClient.IS_SVG?"data:image/png;base64,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":
@@ -2467,14 +2467,14 @@ HoverIcons.prototype.triangleDown.src,(new Image).src=HoverIcons.prototype.trian
 function(a){return!mxEvent.isShiftDown(a.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=-24,mxConstraintHandler.prototype.getTolerance=function(a){return mxEvent.isMouseEvent(a.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=
 function(a){var c=a.getEvent();return null==a.getState()&&!mxEvent.isMouseEvent(c)||mxEvent.isPopupTrigger(c)&&(null==a.getState()||mxEvent.isControlDown(c)||mxEvent.isShiftDown(c))};var A=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(a,c){A.apply(this,arguments);mxEvent.isTouchEvent(c.getEvent())&&this.graph.isCellSelected(c.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(a){var c=
 a.getEvent();return mxEvent.isLeftMouseButton(c)&&(this.useLeftButtonForPanning&&null==a.getState()||mxEvent.isControlDown(c)&&!mxEvent.isShiftDown(c))||this.usePopupTrigger&&mxEvent.isPopupTrigger(c)};mxRubberband.prototype.isSpaceEvent=function(a){return this.graph.isEnabled()&&!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(a.getEvent())&&mxEvent.isShiftDown(a.getEvent())};mxRubberband.prototype.mouseUp=function(a,c){var b=null!=this.div&&"none"!=this.div.style.display,
-e=null,d=null,g=null,f=null;null!=this.first&&null!=this.currentX&&null!=this.currentY&&(e=this.first.x,d=this.first.y,g=(this.currentX-e)/this.graph.view.scale,f=(this.currentY-d)/this.graph.view.scale,mxEvent.isAltDown(c.getEvent())||(g=this.graph.snap(g),f=this.graph.snap(f),this.graph.isGridEnabled()||(Math.abs(g)<this.graph.tolerance&&(g=0),Math.abs(f)<this.graph.tolerance&&(f=0))));this.reset();if(b){if(mxEvent.isAltDown(c.getEvent())&&this.graph.isToggleEvent(c.getEvent())){var g=new mxRectangle(this.x,
-this.y,this.width,this.height),l=this.graph.getCells(g.x,g.y,g.width,g.height);this.graph.removeSelectionCells(l)}else if(this.isSpaceEvent(c)){this.graph.model.beginUpdate();try{for(l=this.graph.getCellsBeyond(e,d,this.graph.getDefaultParent(),!0,!0),b=0;b<l.length;b++)if(this.graph.isCellMovable(l[b])){var t=this.graph.view.getState(l[b]),n=this.graph.getCellGeometry(l[b]);null!=t&&null!=n&&(n=n.clone(),n.translate(g,f),this.graph.model.setGeometry(l[b],n))}}finally{this.graph.model.endUpdate()}}else g=
-new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(g,c.getEvent());c.consume()}};mxRubberband.prototype.mouseMove=function(a,c){if(!c.isConsumed()&&null!=this.first){var b=mxUtils.getScrollOrigin(this.graph.container),e=mxUtils.getOffset(this.graph.container);b.x-=e.x;b.y-=e.y;var e=c.getX()+b.x,b=c.getY()+b.y,d=this.first.x-e,g=this.first.y-b,f=this.graph.tolerance;if(null!=this.div||Math.abs(d)>f||Math.abs(g)>f)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),
+e=null,d=null,k=null,g=null;null!=this.first&&null!=this.currentX&&null!=this.currentY&&(e=this.first.x,d=this.first.y,k=(this.currentX-e)/this.graph.view.scale,g=(this.currentY-d)/this.graph.view.scale,mxEvent.isAltDown(c.getEvent())||(k=this.graph.snap(k),g=this.graph.snap(g),this.graph.isGridEnabled()||(Math.abs(k)<this.graph.tolerance&&(k=0),Math.abs(g)<this.graph.tolerance&&(g=0))));this.reset();if(b){if(mxEvent.isAltDown(c.getEvent())&&this.graph.isToggleEvent(c.getEvent())){var k=new mxRectangle(this.x,
+this.y,this.width,this.height),f=this.graph.getCells(k.x,k.y,k.width,k.height);this.graph.removeSelectionCells(f)}else if(this.isSpaceEvent(c)){this.graph.model.beginUpdate();try{for(f=this.graph.getCellsBeyond(e,d,this.graph.getDefaultParent(),!0,!0),b=0;b<f.length;b++)if(this.graph.isCellMovable(f[b])){var u=this.graph.view.getState(f[b]),n=this.graph.getCellGeometry(f[b]);null!=u&&null!=n&&(n=n.clone(),n.translate(k,g),this.graph.model.setGeometry(f[b],n))}}finally{this.graph.model.endUpdate()}}else k=
+new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(k,c.getEvent());c.consume()}};mxRubberband.prototype.mouseMove=function(a,c){if(!c.isConsumed()&&null!=this.first){var b=mxUtils.getScrollOrigin(this.graph.container),e=mxUtils.getOffset(this.graph.container);b.x-=e.x;b.y-=e.y;var e=c.getX()+b.x,b=c.getY()+b.y,d=this.first.x-e,k=this.first.y-b,g=this.graph.tolerance;if(null!=this.div||Math.abs(d)>g||Math.abs(k)>g)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),
 this.update(e,b),this.isSpaceEvent(c)?(e=this.x+this.width,b=this.y+this.height,d=this.graph.view.scale,mxEvent.isAltDown(c.getEvent())||(this.width=this.graph.snap(this.width/d)*d,this.height=this.graph.snap(this.height/d)*d,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=e-this.width),this.y<this.first.y&&(this.y=b-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)),c.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 E=(new Date).getTime(),x=0,F=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,c,b,e){F.apply(this,arguments);b!=this.currentTerminalState?(E=(new Date).getTime(),x=0):x=(new Date).getTime()-E;this.currentTerminalState=b};var t=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&&
-2E3<x||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&t.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,c){var b=null!=a&&0==a,e=this.state.getVisibleTerminalState(b),d=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state,
+this.secondDiv=null);q.apply(this,arguments)};var F=(new Date).getTime(),x=0,E=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,c,b,e){E.apply(this,arguments);b!=this.currentTerminalState?(F=(new Date).getTime(),x=0):x=(new Date).getTime()-F;this.currentTerminalState=b};var u=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&&
+2E3<x||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&u.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,c){var b=null!=a&&0==a,e=this.state.getVisibleTerminalState(b),d=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state,
 e,b):null,b=null!=(null!=d?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(b),d):null)?this.fixedHandleImage:null!=d&&null!=e?this.terminalHandleImage:this.handleImage;if(null!=b)return b=new mxImageShape(new mxRectangle(0,0,b.width,b.height),b.src),b.preserveImageAspect=!1,b;b=mxConstants.HANDLE_SIZE;this.preferHtml&&--b;return new mxRectangleShape(new mxRectangle(0,0,b,b),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var C=mxVertexHandler.prototype.createSizerShape;
 mxVertexHandler.prototype.createSizerShape=function(a,c,b){this.handleImage=c==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:c==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return C.apply(this,arguments)};var K=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var c=this.graph.getModel(),b=c.getParent(a[0]),e=this.graph.getCellGeometry(a[0]);if(c.isEdge(b)&&null!=e&&e.relative&&(c=this.graph.view.getState(a[0]),
 null!=c&&2>c.width&&2>c.height&&null!=c.text&&null!=c.text.boundingBox))return mxRectangle.fromRectangle(c.text.boundingBox)}return K.apply(this,arguments)};var Y=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var a=Y.apply(this,arguments),c=[],b=0;b<a.length;b++)"1"!=mxUtils.getValue(a[b].style,"part","0")&&c.push(a[b]);return c};var H=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var c=this.graph.getModel(),
@@ -2494,121 +2494,121 @@ var ba=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=fun
 null!=c&&(b=Math.max(b,c.y+c.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(b+this.verticalOffset/2+6+this.state.view.graph.tolerance)+"px"}};var G=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){G.apply(this,arguments);null!=this.linkHint&&(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 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+6+this.state.view.graph.tolerance)+"px"}};var na=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){na.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var ja=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){ja.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 a(){mxCylinder.call(this)}function b(){mxActor.call(this)}function f(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function m(){mxActor.call(this)}function p(){mxCylinder.call(this)}function v(){mxActor.call(this)}function y(){mxActor.call(this)}function B(){mxActor.call(this)}function c(){mxActor.call(this)}function e(){mxActor.call(this)}function g(){mxActor.call(this)}function u(){mxActor.call(this)}function n(a,c){this.canvas=
+this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxCylinder.call(this)}function b(){mxActor.call(this)}function f(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function l(){mxCylinder.call(this)}function m(){mxActor.call(this)}function p(){mxCylinder.call(this)}function v(){mxActor.call(this)}function y(){mxActor.call(this)}function B(){mxActor.call(this)}function c(){mxActor.call(this)}function e(){mxActor.call(this)}function k(){mxActor.call(this)}function t(){mxActor.call(this)}function n(a,c){this.canvas=
 a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=c;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,n.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,n.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,n.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,n.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;
-this.canvas.curveTo=mxUtils.bind(this,n.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,n.prototype.arcTo)}function l(){mxRectangleShape.call(this)}function z(){mxRectangleShape.call(this)}function A(){mxActor.call(this)}function q(){mxActor.call(this)}function E(){mxActor.call(this)}function x(){mxRectangleShape.call(this)}function F(){mxRectangleShape.call(this)}function t(){mxCylinder.call(this)}function C(){mxShape.call(this)}function K(){mxShape.call(this)}
+this.canvas.curveTo=mxUtils.bind(this,n.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,n.prototype.arcTo)}function g(){mxRectangleShape.call(this)}function z(){mxRectangleShape.call(this)}function A(){mxActor.call(this)}function q(){mxActor.call(this)}function F(){mxActor.call(this)}function x(){mxRectangleShape.call(this)}function E(){mxRectangleShape.call(this)}function u(){mxCylinder.call(this)}function C(){mxShape.call(this)}function K(){mxShape.call(this)}
 function Y(){mxEllipse.call(this)}function H(){mxShape.call(this)}function Q(){mxShape.call(this)}function D(){mxRectangleShape.call(this)}function L(){mxShape.call(this)}function O(){mxShape.call(this)}function P(){mxShape.call(this)}function ba(){mxShape.call(this)}function W(){mxShape.call(this)}function G(){mxCylinder.call(this)}function Z(){mxDoubleEllipse.call(this)}function na(){mxDoubleEllipse.call(this)}function ja(){mxArrowConnector.call(this);this.spacing=0}function ca(){mxArrowConnector.call(this);
 this.spacing=0}function ka(){mxActor.call(this)}function S(){mxRectangleShape.call(this)}function V(){mxActor.call(this)}function pa(){mxActor.call(this)}function ga(){mxActor.call(this)}function R(){mxActor.call(this)}function la(){mxActor.call(this)}function M(){mxActor.call(this)}function I(){mxActor.call(this)}function ea(){mxActor.call(this)}function N(){mxActor.call(this)}function T(){mxActor.call(this)}function ha(){mxEllipse.call(this)}function ia(){mxEllipse.call(this)}function J(){mxEllipse.call(this)}
-function qa(){mxRhombus.call(this)}function aa(){mxEllipse.call(this)}function da(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function wa(){mxEllipse.call(this)}function za(){mxActor.call(this)}function ma(){mxActor.call(this)}function fa(){mxActor.call(this)}function sa(){mxConnector.call(this)}function Ea(a,c,b,e,d,g,f,l,t,n){f+=t;var X=e.clone();e.x-=d*(2*f+t);e.y-=g*(2*f+t);d*=f+t;g*=f+t;return function(){a.ellipse(X.x-d-f,X.y-g-f,2*f,2*f);n?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,
-mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,c,b,e,d){var g=Math.max(0,Math.min(e,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),f=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),X=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(c,b);a.begin();a.moveTo(0,0);a.lineTo(e-g,0);a.lineTo(e,
-g);a.lineTo(e,d);a.lineTo(g,d);a.lineTo(0,d-g);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(e-g,0),a.lineTo(e,g),a.lineTo(g,g),a.close(),a.fill()),0!=X&&(a.setFillAlpha(Math.abs(X)),a.setFillColor(0>X?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(g,g),a.lineTo(g,d),a.lineTo(0,d-g),a.close(),a.fill()),a.begin(),a.moveTo(g,d),a.lineTo(g,g),a.lineTo(0,
-0),a.moveTo(g,g),a.lineTo(e,g),a.end(),a.stroke())};a.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",a);var ta=Math.tan(mxUtils.toRadians(30)),oa=(.5-ta)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(e,d/ta);a.translate((e-c)/2,(d-c)/2+c/4);a.moveTo(0,.25*c);a.lineTo(.5*
-c,c*oa);a.lineTo(c,.25*c);a.lineTo(.5*c,(.5-oa)*c);a.lineTo(0,.25*c);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",b);mxUtils.extend(f,mxCylinder);f.prototype.size=20;f.prototype.redrawPath=function(a,c,b,e,d,g){c=Math.min(e,d/(.5+ta));g?(a.moveTo(0,.25*c),a.lineTo(.5*c,(.5-oa)*c),a.lineTo(c,.25*c),a.moveTo(.5*c,(.5-oa)*c),a.lineTo(.5*c,(1-oa)*c)):(a.translate((e-c)/2,(d-c)/2),a.moveTo(0,.25*c),a.lineTo(.5*c,c*oa),a.lineTo(c,.25*c),a.lineTo(c,.75*c),a.lineTo(.5*c,(1-oa)*c),a.lineTo(0,
-.75*c),a.close());a.end()};mxCellRenderer.registerShape("isoCube",f);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(a,c,b,e,d,g){c=Math.min(d/2,Math.round(d/8)+this.strokewidth-1);if(g&&null!=this.fill||!g&&null==this.fill)a.moveTo(0,c),a.curveTo(0,2*c,e,2*c,e,c),g||(a.stroke(),a.begin()),a.translate(0,c/2),a.moveTo(0,c),a.curveTo(0,2*c,e,2*c,e,c),g||(a.stroke(),a.begin()),a.translate(0,c/2),a.moveTo(0,c),a.curveTo(0,2*c,e,2*c,e,c),g||(a.stroke(),a.begin()),a.translate(0,-c);g||(a.moveTo(0,
-c),a.curveTo(0,-c/3,e,-c/3,e,c),a.lineTo(e,d-c),a.curveTo(e,d+c/3,0,d+c/3,0,d-c),a.close())};d.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",d);mxUtils.extend(k,mxCylinder);k.prototype.size=30;k.prototype.darkOpacity=0;k.prototype.paintVertexShape=function(a,c,b,e,d){var g=Math.max(0,Math.min(e,Math.min(d,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(c,b);a.begin();a.moveTo(0,0);a.lineTo(e-g,0);a.lineTo(e,g);a.lineTo(e,d);a.lineTo(0,d);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(e-g,0),a.lineTo(e-g,g),a.lineTo(e,g),a.close(),a.fill()),a.begin(),a.moveTo(e-g,0),a.lineTo(e-g,g),a.lineTo(e,g),a.end(),a.stroke())};
-mxCellRenderer.registerShape("note",k);mxUtils.extend(m,mxActor);m.prototype.redrawPath=function(a,c,b,e,d){a.moveTo(0,0);a.quadTo(e/2,.5*d,e,0);a.quadTo(.5*e,d/2,e,d);a.quadTo(e/2,.5*d,0,d);a.quadTo(.5*e,d/2,0,0);a.end()};mxCellRenderer.registerShape("switch",m);mxUtils.extend(p,mxCylinder);p.prototype.tabWidth=60;p.prototype.tabHeight=20;p.prototype.tabPosition="right";p.prototype.redrawPath=function(a,c,b,e,d,g){c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));
-b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var f=mxUtils.getValue(this.style,"tabPosition",this.tabPosition);g?"left"==f?(a.moveTo(0,b),a.lineTo(c,b)):(a.moveTo(e-c,b),a.lineTo(e,b)):("left"==f?(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,b),a.lineTo(e,b)):(a.moveTo(0,b),a.lineTo(e-c,b),a.lineTo(e-c,0),a.lineTo(e,0)),a.lineTo(e,d),a.lineTo(0,d),a.lineTo(0,b),a.close());a.end()};mxCellRenderer.registerShape("folder",p);mxUtils.extend(v,mxActor);v.prototype.size=
+function qa(){mxRhombus.call(this)}function aa(){mxEllipse.call(this)}function da(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function wa(){mxEllipse.call(this)}function za(){mxActor.call(this)}function ma(){mxActor.call(this)}function fa(){mxActor.call(this)}function sa(){mxConnector.call(this)}function Ea(a,c,b,e,d,k,g,f,u,n){g+=u;var X=e.clone();e.x-=d*(2*g+u);e.y-=k*(2*g+u);d*=g+u;k*=g+u;return function(){a.ellipse(X.x-d-g,X.y-k-g,2*g,2*g);n?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,
+mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,c,b,e,d){var k=Math.max(0,Math.min(e,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),X=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(c,b);a.begin();a.moveTo(0,0);a.lineTo(e-k,0);a.lineTo(e,
+k);a.lineTo(e,d);a.lineTo(k,d);a.lineTo(0,d-k);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(e-k,0),a.lineTo(e,k),a.lineTo(k,k),a.close(),a.fill()),0!=X&&(a.setFillAlpha(Math.abs(X)),a.setFillColor(0>X?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(k,k),a.lineTo(k,d),a.lineTo(0,d-k),a.close(),a.fill()),a.begin(),a.moveTo(k,d),a.lineTo(k,k),a.lineTo(0,
+0),a.moveTo(k,k),a.lineTo(e,k),a.end(),a.stroke())};a.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",a);var ta=Math.tan(mxUtils.toRadians(30)),oa=(.5-ta)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(e,d/ta);a.translate((e-c)/2,(d-c)/2+c/4);a.moveTo(0,.25*c);a.lineTo(.5*
+c,c*oa);a.lineTo(c,.25*c);a.lineTo(.5*c,(.5-oa)*c);a.lineTo(0,.25*c);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",b);mxUtils.extend(f,mxCylinder);f.prototype.size=20;f.prototype.redrawPath=function(a,c,b,e,d,k){c=Math.min(e,d/(.5+ta));k?(a.moveTo(0,.25*c),a.lineTo(.5*c,(.5-oa)*c),a.lineTo(c,.25*c),a.moveTo(.5*c,(.5-oa)*c),a.lineTo(.5*c,(1-oa)*c)):(a.translate((e-c)/2,(d-c)/2),a.moveTo(0,.25*c),a.lineTo(.5*c,c*oa),a.lineTo(c,.25*c),a.lineTo(c,.75*c),a.lineTo(.5*c,(1-oa)*c),a.lineTo(0,
+.75*c),a.close());a.end()};mxCellRenderer.registerShape("isoCube",f);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(a,c,b,e,d,k){c=Math.min(d/2,Math.round(d/8)+this.strokewidth-1);if(k&&null!=this.fill||!k&&null==this.fill)a.moveTo(0,c),a.curveTo(0,2*c,e,2*c,e,c),k||(a.stroke(),a.begin()),a.translate(0,c/2),a.moveTo(0,c),a.curveTo(0,2*c,e,2*c,e,c),k||(a.stroke(),a.begin()),a.translate(0,c/2),a.moveTo(0,c),a.curveTo(0,2*c,e,2*c,e,c),k||(a.stroke(),a.begin()),a.translate(0,-c);k||(a.moveTo(0,
+c),a.curveTo(0,-c/3,e,-c/3,e,c),a.lineTo(e,d-c),a.curveTo(e,d+c/3,0,d+c/3,0,d-c),a.close())};d.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",d);mxUtils.extend(l,mxCylinder);l.prototype.size=30;l.prototype.darkOpacity=0;l.prototype.paintVertexShape=function(a,c,b,e,d){var k=Math.max(0,Math.min(e,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),g=
+Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(c,b);a.begin();a.moveTo(0,0);a.lineTo(e-k,0);a.lineTo(e,k);a.lineTo(e,d);a.lineTo(0,d);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(e-k,0),a.lineTo(e-k,k),a.lineTo(e,k),a.close(),a.fill()),a.begin(),a.moveTo(e-k,0),a.lineTo(e-k,k),a.lineTo(e,k),a.end(),a.stroke())};
+mxCellRenderer.registerShape("note",l);mxUtils.extend(m,mxActor);m.prototype.redrawPath=function(a,c,b,e,d){a.moveTo(0,0);a.quadTo(e/2,.5*d,e,0);a.quadTo(.5*e,d/2,e,d);a.quadTo(e/2,.5*d,0,d);a.quadTo(.5*e,d/2,0,0);a.end()};mxCellRenderer.registerShape("switch",m);mxUtils.extend(p,mxCylinder);p.prototype.tabWidth=60;p.prototype.tabHeight=20;p.prototype.tabPosition="right";p.prototype.redrawPath=function(a,c,b,e,d,k){c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));
+b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var g=mxUtils.getValue(this.style,"tabPosition",this.tabPosition);k?"left"==g?(a.moveTo(0,b),a.lineTo(c,b)):(a.moveTo(e-c,b),a.lineTo(e,b)):("left"==g?(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,b),a.lineTo(e,b)):(a.moveTo(0,b),a.lineTo(e-c,b),a.lineTo(e-c,0),a.lineTo(e,0)),a.lineTo(e,d),a.lineTo(0,d),a.lineTo(0,b),a.close());a.end()};mxCellRenderer.registerShape("folder",p);mxUtils.extend(v,mxActor);v.prototype.size=
 30;v.prototype.isRoundable=function(){return!0};v.prototype.redrawPath=function(a,c,b,e,d){c=Math.max(0,Math.min(e,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(e,0),new mxPoint(e,d),new mxPoint(0,d),new mxPoint(0,c)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("card",v);mxUtils.extend(y,mxActor);y.prototype.size=.4;y.prototype.redrawPath=
 function(a,c,b,e,d){c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,c/2);a.quadTo(e/4,1.4*c,e/2,c/2);a.quadTo(3*e/4,c*(1-1.4),e,c/2);a.lineTo(e,d-c/2);a.quadTo(3*e/4,d-1.4*c,e/2,d-c/2);a.quadTo(e/4,d-c*(1-1.4),0,d-c/2);a.lineTo(0,c/2);a.close();a.end()};y.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var c=mxUtils.getValue(this.style,"size",this.size),b=a.width,e=a.height;if(null==this.direction||this.direction==
 mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return c*=e,new mxRectangle(a.x,a.y+c,b,e-2*c);c*=b;return new mxRectangle(a.x+c,a.y,b-2*c,e)}return a};mxCellRenderer.registerShape("tape",y);mxUtils.extend(B,mxActor);B.prototype.size=.3;B.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*a.height):null};B.prototype.redrawPath=function(a,c,b,e,d){c=d*Math.max(0,
 Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,0);a.lineTo(e,0);a.lineTo(e,d-c/2);a.quadTo(3*e/4,d-1.4*c,e/2,d-c/2);a.quadTo(e/4,d-c*(1-1.4),0,d-c/2);a.lineTo(0,c/2);a.close();a.end()};mxCellRenderer.registerShape("document",B);var Ka=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(a,c,b,e){var d=mxUtils.getValue(this.style,"size");return null!=d?e*Math.max(0,Math.min(1,d)):Ka.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=
 function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var c=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*c),0,0)}return null};mxUtils.extend(c,mxActor);c.prototype.size=.2;c.prototype.isRoundable=function(){return!0};c.prototype.redrawPath=function(a,c,b,e,d){c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/
 2;this.addPoints(a,[new mxPoint(0,d),new mxPoint(c,0),new mxPoint(e,0),new mxPoint(e-c,d)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("parallelogram",c);mxUtils.extend(e,mxActor);e.prototype.size=.2;e.prototype.isRoundable=function(){return!0};e.prototype.redrawPath=function(a,c,b,e,d){c=e*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,
-d),new mxPoint(c,0),new mxPoint(e-c,0),new mxPoint(e,d)],this.isRounded,b,!0)};mxCellRenderer.registerShape("trapezoid",e);mxUtils.extend(g,mxActor);g.prototype.size=.5;g.prototype.redrawPath=function(a,c,b,e,d){a.setFillColor(null);c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(e,0),new mxPoint(c,0),new mxPoint(c,d/2),new mxPoint(0,d/2),new mxPoint(c,
-d/2),new mxPoint(c,d),new mxPoint(e,d)],this.isRounded,b,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",g);mxUtils.extend(u,mxActor);u.prototype.redrawPath=function(a,c,b,e,d){a.setStrokeWidth(1);a.setFillColor(this.stroke);c=e/5;a.rect(0,0,c,d);a.fillAndStroke();a.rect(2*c,0,c,d);a.fillAndStroke();a.rect(4*c,0,c,d);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",u);n.prototype.moveTo=function(a,c){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=
-c;this.firstX=a;this.firstY=c};n.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)};n.prototype.quadTo=function(a,c,b,e){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=e};n.prototype.curveTo=function(a,c,b,e,d,g){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=d;this.lastY=g};n.prototype.arcTo=function(a,c,b,e,
-d,g,f){this.originalArcTo.apply(this.canvas,arguments);this.lastX=g;this.lastY=f};n.prototype.lineTo=function(a,c){if(null!=this.lastX&&null!=this.lastY){var b=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},e=Math.abs(a-this.lastX),d=Math.abs(c-this.lastY),g=Math.sqrt(e*e+d*d);if(2>g){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=c;return}var f=Math.round(g/10),l=this.defaultVariation;5>f&&(f=5,l/=3);for(var X=b(a-this.lastX)*e/f,b=b(c-this.lastY)*d/f,
-e=e/g,d=d/g,g=0;g<f;g++){var t=(Math.random()-.5)*l;this.originalLineTo.call(this.canvas,X*g+this.lastX-t*d,b*g+this.lastY-t*e)}this.originalLineTo.call(this.canvas,a,c)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=c};n.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};
+d),new mxPoint(c,0),new mxPoint(e-c,0),new mxPoint(e,d)],this.isRounded,b,!0)};mxCellRenderer.registerShape("trapezoid",e);mxUtils.extend(k,mxActor);k.prototype.size=.5;k.prototype.redrawPath=function(a,c,b,e,d){a.setFillColor(null);c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(e,0),new mxPoint(c,0),new mxPoint(c,d/2),new mxPoint(0,d/2),new mxPoint(c,
+d/2),new mxPoint(c,d),new mxPoint(e,d)],this.isRounded,b,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",k);mxUtils.extend(t,mxActor);t.prototype.redrawPath=function(a,c,b,e,d){a.setStrokeWidth(1);a.setFillColor(this.stroke);c=e/5;a.rect(0,0,c,d);a.fillAndStroke();a.rect(2*c,0,c,d);a.fillAndStroke();a.rect(4*c,0,c,d);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",t);n.prototype.moveTo=function(a,c){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=
+c;this.firstX=a;this.firstY=c};n.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)};n.prototype.quadTo=function(a,c,b,e){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=e};n.prototype.curveTo=function(a,c,b,e,d,k){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=d;this.lastY=k};n.prototype.arcTo=function(a,c,b,e,
+d,k,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=k;this.lastY=g};n.prototype.lineTo=function(a,c){if(null!=this.lastX&&null!=this.lastY){var b=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},e=Math.abs(a-this.lastX),d=Math.abs(c-this.lastY),k=Math.sqrt(e*e+d*d);if(2>k){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=c;return}var g=Math.round(k/10),f=this.defaultVariation;5>g&&(g=5,f/=3);for(var X=b(a-this.lastX)*e/g,b=b(c-this.lastY)*d/g,
+e=e/k,d=d/k,k=0;k<g;k++){var u=(Math.random()-.5)*f;this.originalLineTo.call(this.canvas,X*k+this.lastX-u*d,b*k+this.lastY-u*e)}this.originalLineTo.call(this.canvas,a,c)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=c};n.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};
 var Ba=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new n(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Ba.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var La=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return(null==
-this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&La.apply(this,arguments)};var Ca=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,c,b,e,d){if(null==a.handJiggle)Ca.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||
-(a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?g=Math.min(e/2,Math.min(d/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(e*g,d*g)),a.moveTo(c+g,b),a.lineTo(c+e-g,b),a.quadTo(c+e,b,c+e,b+g),a.lineTo(c+e,b+d-g),a.quadTo(c+e,b+d,c+e-g,b+d),a.lineTo(c+g,b+d),a.quadTo(c,b+d,c,b+d-g),
-a.lineTo(c,b+g),a.quadTo(c,b,c+g,b)):(a.moveTo(c,b),a.lineTo(c+e,b),a.lineTo(c+e,b+d),a.lineTo(c,b+d),a.lineTo(c,b)),a.close(),a.end(),a.fillAndStroke()}};var xa=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,c,b,e,d){null==a.handJiggle&&xa.apply(this,arguments)};mxUtils.extend(l,mxRectangleShape);l.prototype.size=.1;l.prototype.isHtmlAllowed=function(){return!1};l.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 c=a.width,b=a.height;a=new mxRectangle(a.x,a.y,c,b);var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.max(e,Math.min(c*d,b*d));a.x+=Math.round(e);a.width-=Math.round(2*e)}return a};l.prototype.paintForeground=
-function(a,c,b,e,d){var g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(e*f,d*f));g=Math.round(g);a.begin();a.moveTo(c+g,b);a.lineTo(c+g,b+d);a.moveTo(c+e-g,b);a.lineTo(c+e-g,b+d);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",l);mxUtils.extend(z,
+this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&La.apply(this,arguments)};var Ca=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,c,b,e,d){if(null==a.handJiggle)Ca.apply(this,arguments);else{var k=!0;null!=this.style&&(k="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(k||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)k||null!=this.fill&&this.fill!=mxConstants.NONE||
+(a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?k=Math.min(e/2,Math.min(d/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,k=Math.min(e*k,d*k)),a.moveTo(c+k,b),a.lineTo(c+e-k,b),a.quadTo(c+e,b,c+e,b+k),a.lineTo(c+e,b+d-k),a.quadTo(c+e,b+d,c+e-k,b+d),a.lineTo(c+k,b+d),a.quadTo(c,b+d,c,b+d-k),
+a.lineTo(c,b+k),a.quadTo(c,b,c+k,b)):(a.moveTo(c,b),a.lineTo(c+e,b),a.lineTo(c+e,b+d),a.lineTo(c,b+d),a.lineTo(c,b)),a.close(),a.end(),a.fillAndStroke()}};var xa=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,c,b,e,d){null==a.handJiggle&&xa.apply(this,arguments)};mxUtils.extend(g,mxRectangleShape);g.prototype.size=.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 c=a.width,b=a.height;a=new mxRectangle(a.x,a.y,c,b);var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.max(e,Math.min(c*d,b*d));a.x+=Math.round(e);a.width-=Math.round(2*e)}return a};g.prototype.paintForeground=
+function(a,c,b,e,d){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,k=Math.max(k,Math.min(e*g,d*g));k=Math.round(k);a.begin();a.moveTo(c+k,b);a.lineTo(c+k,b+d);a.moveTo(c+e-k,b);a.lineTo(c+e-k,b+d);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",g);mxUtils.extend(z,
 mxRectangleShape);z.prototype.paintBackground=function(a,c,b,e,d){a.setFillColor(mxConstants.NONE);a.rect(c,b,e,d);a.fill()};z.prototype.paintForeground=function(a,c,b,e,d){};mxCellRenderer.registerShape("transparent",z);mxUtils.extend(A,mxHexagon);A.prototype.size=30;A.prototype.position=.5;A.prototype.position2=.5;A.prototype.base=20;A.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};A.prototype.isRoundable=
-function(){return!0};A.prototype.redrawPath=function(a,c,b,e,d){c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),l=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"base",this.base))));
-this.addPoints(a,[new mxPoint(0,0),new mxPoint(e,0),new mxPoint(e,d-b),new mxPoint(Math.min(e,g+l),d-b),new mxPoint(f,d),new mxPoint(Math.max(0,g),d-b),new mxPoint(0,d-b)],this.isRounded,c,!0,[4])};mxCellRenderer.registerShape("callout",A);mxUtils.extend(q,mxActor);q.prototype.size=.2;q.prototype.fixedSize=20;q.prototype.isRoundable=function(){return!0};q.prototype.redrawPath=function(a,c,b,e,d){c="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,
-"size",this.fixedSize)))):e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(e-c,0),new mxPoint(e,d/2),new mxPoint(e-c,d),new mxPoint(0,d),new mxPoint(c,d/2)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("step",q);mxUtils.extend(E,mxHexagon);E.prototype.size=.25;E.prototype.isRoundable=function(){return!0};E.prototype.redrawPath=
-function(a,c,b,e,d){c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(e-c,0),new mxPoint(e,.5*d),new mxPoint(e-c,d),new mxPoint(c,d),new mxPoint(0,.5*d)],this.isRounded,b,!0)};mxCellRenderer.registerShape("hexagon",E);mxUtils.extend(x,mxRectangleShape);x.prototype.isHtmlAllowed=function(){return!1};x.prototype.paintForeground=function(a,
-c,b,e,d){var g=Math.min(e/5,d/5)+1;a.begin();a.moveTo(c+e/2,b+g);a.lineTo(c+e/2,b+d-g);a.moveTo(c+g,b+d/2);a.lineTo(c+e-g,b+d/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",x);var ua=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var c=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+
-c,a.y+c,a.width-2*c,a.height-2*c)}return a};mxRhombus.prototype.paintVertexShape=function(a,c,b,e,d){ua.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);c+=g;b+=g;e-=2*g;d-=2*g;0<e&&0<d&&(a.setShadow(!1),ua.apply(this,[a,c,b,e,d]))}};mxUtils.extend(F,mxRectangleShape);F.prototype.isHtmlAllowed=function(){return!1};F.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var c=(Math.max(2,
-this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+c,a.y+c,a.width-2*c,a.height-2*c)}return a};F.prototype.paintForeground=function(a,c,b,e,d){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);c+=g;b+=g;e-=2*g;d-=2*g;0<e&&0<d&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var g=0,f;do{f=mxCellRenderer.defaultShapes[this.style["symbol"+
-g]];if(null!=f){var l=this.style["symbol"+g+"Align"],X=this.style["symbol"+g+"VerticalAlign"],t=this.style["symbol"+g+"Width"],n=this.style["symbol"+g+"Height"],u=this.style["symbol"+g+"Spacing"]||0,C=this.style["symbol"+g+"VSpacing"]||u,q=this.style["symbol"+g+"ArcSpacing"];null!=q&&(q*=this.getArcSize(e+this.strokewidth,d+this.strokewidth),u+=q,C+=q);var q=c,z=b,q=l==mxConstants.ALIGN_CENTER?q+(e-t)/2:l==mxConstants.ALIGN_RIGHT?q+(e-t-u):q+u,z=X==mxConstants.ALIGN_MIDDLE?z+(d-n)/2:X==mxConstants.ALIGN_BOTTOM?
-z+(d-n-C):z+C;a.save();l=new f;l.style=this.style;f.prototype.paintVertexShape.call(l,a,q,z,t,n);a.restore()}g++}while(null!=f)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",F);mxUtils.extend(t,mxCylinder);t.prototype.redrawPath=function(a,c,b,e,d,g){g?(a.moveTo(0,0),a.lineTo(e/2,d/2),a.lineTo(e,0),a.end()):(a.moveTo(0,0),a.lineTo(e,0),a.lineTo(e,d),a.lineTo(0,d),a.close())};mxCellRenderer.registerShape("message",t);mxUtils.extend(C,mxShape);
+function(){return!0};A.prototype.redrawPath=function(a,c,b,e,d){c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"base",this.base))));
+this.addPoints(a,[new mxPoint(0,0),new mxPoint(e,0),new mxPoint(e,d-b),new mxPoint(Math.min(e,k+f),d-b),new mxPoint(g,d),new mxPoint(Math.max(0,k),d-b),new mxPoint(0,d-b)],this.isRounded,c,!0,[4])};mxCellRenderer.registerShape("callout",A);mxUtils.extend(q,mxActor);q.prototype.size=.2;q.prototype.fixedSize=20;q.prototype.isRoundable=function(){return!0};q.prototype.redrawPath=function(a,c,b,e,d){c="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,
+"size",this.fixedSize)))):e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(e-c,0),new mxPoint(e,d/2),new mxPoint(e-c,d),new mxPoint(0,d),new mxPoint(c,d/2)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("step",q);mxUtils.extend(F,mxHexagon);F.prototype.size=.25;F.prototype.isRoundable=function(){return!0};F.prototype.redrawPath=
+function(a,c,b,e,d){c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(e-c,0),new mxPoint(e,.5*d),new mxPoint(e-c,d),new mxPoint(c,d),new mxPoint(0,.5*d)],this.isRounded,b,!0)};mxCellRenderer.registerShape("hexagon",F);mxUtils.extend(x,mxRectangleShape);x.prototype.isHtmlAllowed=function(){return!1};x.prototype.paintForeground=function(a,
+c,b,e,d){var k=Math.min(e/5,d/5)+1;a.begin();a.moveTo(c+e/2,b+k);a.lineTo(c+e/2,b+d-k);a.moveTo(c+k,b+d/2);a.lineTo(c+e-k,b+d/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",x);var ua=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var c=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+
+c,a.y+c,a.width-2*c,a.height-2*c)}return a};mxRhombus.prototype.paintVertexShape=function(a,c,b,e,d){ua.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var k=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);c+=k;b+=k;e-=2*k;d-=2*k;0<e&&0<d&&(a.setShadow(!1),ua.apply(this,[a,c,b,e,d]))}};mxUtils.extend(E,mxRectangleShape);E.prototype.isHtmlAllowed=function(){return!1};E.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var c=(Math.max(2,
+this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+c,a.y+c,a.width-2*c,a.height-2*c)}return a};E.prototype.paintForeground=function(a,c,b,e,d){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var k=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);c+=k;b+=k;e-=2*k;d-=2*k;0<e&&0<d&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var k=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+
+k]];if(null!=g){var f=this.style["symbol"+k+"Align"],X=this.style["symbol"+k+"VerticalAlign"],u=this.style["symbol"+k+"Width"],n=this.style["symbol"+k+"Height"],t=this.style["symbol"+k+"Spacing"]||0,C=this.style["symbol"+k+"VSpacing"]||t,q=this.style["symbol"+k+"ArcSpacing"];null!=q&&(q*=this.getArcSize(e+this.strokewidth,d+this.strokewidth),t+=q,C+=q);var q=c,z=b,q=f==mxConstants.ALIGN_CENTER?q+(e-u)/2:f==mxConstants.ALIGN_RIGHT?q+(e-u-t):q+t,z=X==mxConstants.ALIGN_MIDDLE?z+(d-n)/2:X==mxConstants.ALIGN_BOTTOM?
+z+(d-n-C):z+C;a.save();f=new g;f.style=this.style;g.prototype.paintVertexShape.call(f,a,q,z,u,n);a.restore()}k++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",E);mxUtils.extend(u,mxCylinder);u.prototype.redrawPath=function(a,c,b,e,d,k){k?(a.moveTo(0,0),a.lineTo(e/2,d/2),a.lineTo(e,0),a.end()):(a.moveTo(0,0),a.lineTo(e,0),a.lineTo(e,d),a.lineTo(0,d),a.close())};mxCellRenderer.registerShape("message",u);mxUtils.extend(C,mxShape);
 C.prototype.paintBackground=function(a,c,b,e,d){a.translate(c,b);a.ellipse(e/4,0,e/2,d/4);a.fillAndStroke();a.begin();a.moveTo(e/2,d/4);a.lineTo(e/2,2*d/3);a.moveTo(e/2,d/3);a.lineTo(0,d/3);a.moveTo(e/2,d/3);a.lineTo(e,d/3);a.moveTo(e/2,2*d/3);a.lineTo(0,d);a.moveTo(e/2,2*d/3);a.lineTo(e,d);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",C);mxUtils.extend(K,mxShape);K.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};K.prototype.paintBackground=function(a,
 c,b,e,d){a.translate(c,b);a.begin();a.moveTo(0,d/4);a.lineTo(0,3*d/4);a.end();a.stroke();a.begin();a.moveTo(0,d/2);a.lineTo(e/6,d/2);a.end();a.stroke();a.ellipse(e/6,0,5*e/6,d);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",K);mxUtils.extend(Y,mxEllipse);Y.prototype.paintVertexShape=function(a,c,b,e,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(c+e/8,b+d);a.lineTo(c+7*e/8,b+d);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",Y);mxUtils.extend(H,
 mxShape);H.prototype.paintVertexShape=function(a,c,b,e,d){a.translate(c,b);a.begin();a.moveTo(e,0);a.lineTo(0,d);a.moveTo(0,0);a.lineTo(e,d);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",H);mxUtils.extend(Q,mxShape);Q.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};Q.prototype.paintBackground=function(a,c,b,e,d){a.translate(c,b);a.begin();a.moveTo(3*e/8,d/8*1.1);a.lineTo(5*e/8,0);a.end();a.stroke();a.ellipse(0,d/8,e,7*d/8);a.fillAndStroke()};
 Q.prototype.paintForeground=function(a,c,b,e,d){a.begin();a.moveTo(3*e/8,d/8*1.1);a.lineTo(5*e/8,d/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",Q);mxUtils.extend(D,mxRectangleShape);D.prototype.size=40;D.prototype.isHtmlAllowed=function(){return!1};D.prototype.getLabelBounds=function(a){var c=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,c)};D.prototype.paintBackground=function(a,c,b,e,
-d){var g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=mxUtils.getValue(this.style,"participant");null==f||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,c,b,e,g):(f=this.state.view.graph.cellRenderer.getShape(f),null!=f&&f!=D&&(f=new f,f.apply(this.state),a.save(),f.paintVertexShape(a,c,b,e,g),a.restore()));g<d&&(a.setDashed(!0),a.begin(),a.moveTo(c+e/2,b+g),a.lineTo(c+e/2,b+d),a.end(),a.stroke())};D.prototype.paintForeground=function(a,
-c,b,e,d){var g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,c,b,e,Math.min(d,g))};mxCellRenderer.registerShape("umlLifeline",D);mxUtils.extend(L,mxShape);L.prototype.width=60;L.prototype.height=30;L.prototype.corner=10;L.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))};L.prototype.paintBackground=function(a,c,b,e,d){var g=this.corner,f=Math.min(e,Math.max(g,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),l=Math.min(d,Math.max(1.5*g,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),t=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);t!=mxConstants.NONE&&(a.setFillColor(t),a.rect(c,b,e,d),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=
-mxConstants.NONE?(this.getGradientBounds(a,c,b,e,d),a.setGradient(this.fill,this.gradient,c,b,e,d,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(c,b);a.lineTo(c+f,b);a.lineTo(c+f,b+Math.max(0,l-1.5*g));a.lineTo(c+Math.max(0,f-g),b+l);a.lineTo(c,b+l);a.close();a.fillAndStroke();a.begin();a.moveTo(c+f,b);a.lineTo(c+e,b);a.lineTo(c+e,b+d);a.lineTo(c,b+d);a.lineTo(c,b+l);a.stroke()};mxCellRenderer.registerShape("umlFrame",L);mxPerimeter.LifelinePerimeter=function(a,c,b,e){e=D.prototype.size;
+d){var k=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,c,b,e,k):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=D&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,c,b,e,k),a.restore()));k<d&&(a.setDashed(!0),a.begin(),a.moveTo(c+e/2,b+k),a.lineTo(c+e/2,b+d),a.end(),a.stroke())};D.prototype.paintForeground=function(a,
+c,b,e,d){var k=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,c,b,e,Math.min(d,k))};mxCellRenderer.registerShape("umlLifeline",D);mxUtils.extend(L,mxShape);L.prototype.width=60;L.prototype.height=30;L.prototype.corner=10;L.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))};L.prototype.paintBackground=function(a,c,b,e,d){var k=this.corner,g=Math.min(e,Math.max(k,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),f=Math.min(d,Math.max(1.5*k,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),u=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);u!=mxConstants.NONE&&(a.setFillColor(u),a.rect(c,b,e,d),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=
+mxConstants.NONE?(this.getGradientBounds(a,c,b,e,d),a.setGradient(this.fill,this.gradient,c,b,e,d,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(c,b);a.lineTo(c+g,b);a.lineTo(c+g,b+Math.max(0,f-1.5*k));a.lineTo(c+Math.max(0,g-k),b+f);a.lineTo(c,b+f);a.close();a.fillAndStroke();a.begin();a.moveTo(c+g,b);a.lineTo(c+e,b);a.lineTo(c+e,b+d);a.lineTo(c,b+d);a.lineTo(c,b+f);a.stroke()};mxCellRenderer.registerShape("umlFrame",L);mxPerimeter.LifelinePerimeter=function(a,c,b,e){e=D.prototype.size;
 null!=c&&(e=mxUtils.getValue(c.style,"size",e)*c.view.scale);c=parseFloat(c.style[mxConstants.STYLE_STROKEWIDTH]||1)*c.view.scale/2-1;b.x<a.getCenterX()&&(c=-1*(c+1));return new mxPoint(a.getCenterX()+c,Math.min(a.y+a.height,Math.max(a.y+e,b.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,c,b,e){e=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);
 mxPerimeter.BackbonePerimeter=function(a,c,b,e){e=parseFloat(c.style[mxConstants.STYLE_STROKEWIDTH]||1)*c.view.scale/2-1;null!=c.style.backboneSize&&(e+=parseFloat(c.style.backboneSize)*c.view.scale/2-1);if("south"==c.style[mxConstants.STYLE_DIRECTION]||"north"==c.style[mxConstants.STYLE_DIRECTION])return b.x<a.getCenterX()&&(e=-1*(e+1)),new mxPoint(a.getCenterX()+e,Math.min(a.y+a.height,Math.max(a.y,b.y)));b.y<a.getCenterY()&&(e=-1*(e+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,b.x)),
-a.getCenterY()+e)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,c,b,e){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(c.style,"size",A.prototype.size))*c.view.scale))),c.style),c,b,e)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,e,d){var g=c.prototype.size;
-null!=b&&(g=mxUtils.getValue(b.style,"size",g));var f=a.x,l=a.y,t=a.width,n=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(g=n*Math.max(0,Math.min(1,g)),l=[new mxPoint(f,l),new mxPoint(f+t,l+g),new mxPoint(f+t,l+n),new mxPoint(f,l+n-g),new mxPoint(f,l)]):(g=t*Math.max(0,Math.min(1,g)),l=[new mxPoint(f+g,l),new mxPoint(f+t,l),new mxPoint(f+t-g,l+n),new mxPoint(f,
-l+n),new mxPoint(f+g,l)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);d&&(e.x<f||e.x>f+t?a.y=e.y:a.x=e.x);return mxUtils.getPerimeterPoint(l,a,e)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,c,b,d){var g=e.prototype.size;null!=c&&(g=mxUtils.getValue(c.style,"size",g));var f=a.x,l=a.y,t=a.width,n=a.height;c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;
-c==mxConstants.DIRECTION_EAST?(g=t*Math.max(0,Math.min(1,g)),l=[new mxPoint(f+g,l),new mxPoint(f+t-g,l),new mxPoint(f+t,l+n),new mxPoint(f,l+n),new mxPoint(f+g,l)]):c==mxConstants.DIRECTION_WEST?(g=t*Math.max(0,Math.min(1,g)),l=[new mxPoint(f,l),new mxPoint(f+t,l),new mxPoint(f+t-g,l+n),new mxPoint(f+g,l+n),new mxPoint(f,l)]):c==mxConstants.DIRECTION_NORTH?(g=n*Math.max(0,Math.min(1,g)),l=[new mxPoint(f,l+g),new mxPoint(f+t,l),new mxPoint(f+t,l+n),new mxPoint(f,l+n-g),new mxPoint(f,l+g)]):(g=n*Math.max(0,
-Math.min(1,g)),l=[new mxPoint(f,l),new mxPoint(f+t,l+g),new mxPoint(f+t,l+n-g),new mxPoint(f,l+n),new mxPoint(f,l)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);d&&(b.x<f||b.x>f+t?a.y=b.y:a.x=b.x);return mxUtils.getPerimeterPoint(l,a,b)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,c,b,e){var d="0"!=mxUtils.getValue(c.style,"fixedSize","0"),g=d?q.prototype.fixedSize:q.prototype.size;null!=c&&(g=mxUtils.getValue(c.style,
-"size",g));var f=a.x,l=a.y,t=a.width,n=a.height,X=a.getCenterX();a=a.getCenterY();c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;c==mxConstants.DIRECTION_EAST?(d=d?Math.max(0,Math.min(t,g)):t*Math.max(0,Math.min(1,g)),l=[new mxPoint(f,l),new mxPoint(f+t-d,l),new mxPoint(f+t,a),new mxPoint(f+t-d,l+n),new mxPoint(f,l+n),new mxPoint(f+d,a),new mxPoint(f,l)]):c==mxConstants.DIRECTION_WEST?(d=d?Math.max(0,Math.min(t,g)):t*Math.max(0,
-Math.min(1,g)),l=[new mxPoint(f+d,l),new mxPoint(f+t,l),new mxPoint(f+t-d,a),new mxPoint(f+t,l+n),new mxPoint(f+d,l+n),new mxPoint(f,a),new mxPoint(f+d,l)]):c==mxConstants.DIRECTION_NORTH?(d=d?Math.max(0,Math.min(n,g)):n*Math.max(0,Math.min(1,g)),l=[new mxPoint(f,l+d),new mxPoint(X,l),new mxPoint(f+t,l+d),new mxPoint(f+t,l+n),new mxPoint(X,l+n-d),new mxPoint(f,l+n),new mxPoint(f,l+d)]):(d=d?Math.max(0,Math.min(n,g)):n*Math.max(0,Math.min(1,g)),l=[new mxPoint(f,l),new mxPoint(X,l+d),new mxPoint(f+
-t,l),new mxPoint(f+t,l+n-d),new mxPoint(X,l+n),new mxPoint(f,l+n-d),new mxPoint(f,l)]);X=new mxPoint(X,a);e&&(b.x<f||b.x>f+t?X.y=b.y:X.x=b.x);return mxUtils.getPerimeterPoint(l,X,b)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,c,b,e){var d=E.prototype.size;null!=c&&(d=mxUtils.getValue(c.style,"size",d));var g=a.x,f=a.y,l=a.width,t=a.height,n=a.getCenterX();a=a.getCenterY();c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,
-mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;c==mxConstants.DIRECTION_NORTH||c==mxConstants.DIRECTION_SOUTH?(d=t*Math.max(0,Math.min(1,d)),f=[new mxPoint(n,f),new mxPoint(g+l,f+d),new mxPoint(g+l,f+t-d),new mxPoint(n,f+t),new mxPoint(g,f+t-d),new mxPoint(g,f+d),new mxPoint(n,f)]):(d=l*Math.max(0,Math.min(1,d)),f=[new mxPoint(g+d,f),new mxPoint(g+l-d,f),new mxPoint(g+l,a),new mxPoint(g+l-d,f+t),new mxPoint(g+d,f+t),new mxPoint(g,a),new mxPoint(g+d,f)]);n=new mxPoint(n,a);e&&(b.x<g||b.x>g+
-l?n.y=b.y:n.x=b.x);return mxUtils.getPerimeterPoint(f,n,b)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(O,mxShape);O.prototype.size=10;O.prototype.paintBackground=function(a,c,b,e,d){var g=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(c,b);a.ellipse((e-g)/2,0,g,g);a.fillAndStroke();a.begin();a.moveTo(e/2,g);a.lineTo(e/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",O);mxUtils.extend(P,mxShape);P.prototype.size=
-10;P.prototype.inset=2;P.prototype.paintBackground=function(a,c,b,e,d){var g=parseFloat(mxUtils.getValue(this.style,"size",this.size)),f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(c,b);a.begin();a.moveTo(e/2,g+f);a.lineTo(e/2,d);a.end();a.stroke();a.begin();a.moveTo((e-g)/2-f,g/2);a.quadTo((e-g)/2-f,g+f,e/2,g+f);a.quadTo((e+g)/2+f,g+f,(e+g)/2+f,g/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",P);mxUtils.extend(ba,mxShape);ba.prototype.paintBackground=
-function(a,c,b,e,d){a.translate(c,b);a.begin();a.moveTo(0,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,0,d);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",ba);mxUtils.extend(W,mxShape);W.prototype.inset=2;W.prototype.paintBackground=function(a,c,b,e,d){var g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(c,b);a.ellipse(0,g,e-2*g,d-2*g);a.fillAndStroke();a.begin();a.moveTo(e/2,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,e/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",
-W);mxUtils.extend(G,mxCylinder);G.prototype.jettyWidth=32;G.prototype.jettyHeight=12;G.prototype.redrawPath=function(a,c,b,e,d,g){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));c=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));b=f/2;var f=b+f/2,l=.3*d-c/2,t=.7*d-c/2;g?(a.moveTo(b,l),a.lineTo(f,l),a.lineTo(f,l+c),a.lineTo(b,l+c),a.moveTo(b,t),a.lineTo(f,t),a.lineTo(f,t+c),a.lineTo(b,t+c)):(a.moveTo(b,0),a.lineTo(e,0),a.lineTo(e,d),a.lineTo(b,d),
-a.lineTo(b,t+c),a.lineTo(0,t+c),a.lineTo(0,t),a.lineTo(b,t),a.lineTo(b,l+c),a.lineTo(0,l+c),a.lineTo(0,l),a.lineTo(b,l),a.close());a.end()};mxCellRenderer.registerShape("component",G);mxUtils.extend(Z,mxDoubleEllipse);Z.prototype.outerStroke=!0;Z.prototype.paintVertexShape=function(a,c,b,e,d){var g=Math.min(4,Math.min(e/5,d/5));0<e&&0<d&&(a.ellipse(c+g,b+g,e-2*g,d-2*g),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(c,b,e,d),a.stroke())};mxCellRenderer.registerShape("endState",Z);
+a.getCenterY()+e)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,c,b,e){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(c.style,"size",A.prototype.size))*c.view.scale))),c.style),c,b,e)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,e,d){var k=c.prototype.size;
+null!=b&&(k=mxUtils.getValue(b.style,"size",k));var g=a.x,f=a.y,u=a.width,n=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(k=n*Math.max(0,Math.min(1,k)),f=[new mxPoint(g,f),new mxPoint(g+u,f+k),new mxPoint(g+u,f+n),new mxPoint(g,f+n-k),new mxPoint(g,f)]):(k=u*Math.max(0,Math.min(1,k)),f=[new mxPoint(g+k,f),new mxPoint(g+u,f),new mxPoint(g+u-k,f+n),new mxPoint(g,
+f+n),new mxPoint(g+k,f)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);d&&(e.x<g||e.x>g+u?a.y=e.y:a.x=e.x);return mxUtils.getPerimeterPoint(f,a,e)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,c,b,d){var k=e.prototype.size;null!=c&&(k=mxUtils.getValue(c.style,"size",k));var g=a.x,f=a.y,u=a.width,n=a.height;c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;
+c==mxConstants.DIRECTION_EAST?(k=u*Math.max(0,Math.min(1,k)),f=[new mxPoint(g+k,f),new mxPoint(g+u-k,f),new mxPoint(g+u,f+n),new mxPoint(g,f+n),new mxPoint(g+k,f)]):c==mxConstants.DIRECTION_WEST?(k=u*Math.max(0,Math.min(1,k)),f=[new mxPoint(g,f),new mxPoint(g+u,f),new mxPoint(g+u-k,f+n),new mxPoint(g+k,f+n),new mxPoint(g,f)]):c==mxConstants.DIRECTION_NORTH?(k=n*Math.max(0,Math.min(1,k)),f=[new mxPoint(g,f+k),new mxPoint(g+u,f),new mxPoint(g+u,f+n),new mxPoint(g,f+n-k),new mxPoint(g,f+k)]):(k=n*Math.max(0,
+Math.min(1,k)),f=[new mxPoint(g,f),new mxPoint(g+u,f+k),new mxPoint(g+u,f+n-k),new mxPoint(g,f+n),new mxPoint(g,f)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);d&&(b.x<g||b.x>g+u?a.y=b.y:a.x=b.x);return mxUtils.getPerimeterPoint(f,a,b)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,c,b,e){var d="0"!=mxUtils.getValue(c.style,"fixedSize","0"),k=d?q.prototype.fixedSize:q.prototype.size;null!=c&&(k=mxUtils.getValue(c.style,
+"size",k));var g=a.x,f=a.y,u=a.width,n=a.height,X=a.getCenterX();a=a.getCenterY();c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;c==mxConstants.DIRECTION_EAST?(d=d?Math.max(0,Math.min(u,k)):u*Math.max(0,Math.min(1,k)),f=[new mxPoint(g,f),new mxPoint(g+u-d,f),new mxPoint(g+u,a),new mxPoint(g+u-d,f+n),new mxPoint(g,f+n),new mxPoint(g+d,a),new mxPoint(g,f)]):c==mxConstants.DIRECTION_WEST?(d=d?Math.max(0,Math.min(u,k)):u*Math.max(0,
+Math.min(1,k)),f=[new mxPoint(g+d,f),new mxPoint(g+u,f),new mxPoint(g+u-d,a),new mxPoint(g+u,f+n),new mxPoint(g+d,f+n),new mxPoint(g,a),new mxPoint(g+d,f)]):c==mxConstants.DIRECTION_NORTH?(d=d?Math.max(0,Math.min(n,k)):n*Math.max(0,Math.min(1,k)),f=[new mxPoint(g,f+d),new mxPoint(X,f),new mxPoint(g+u,f+d),new mxPoint(g+u,f+n),new mxPoint(X,f+n-d),new mxPoint(g,f+n),new mxPoint(g,f+d)]):(d=d?Math.max(0,Math.min(n,k)):n*Math.max(0,Math.min(1,k)),f=[new mxPoint(g,f),new mxPoint(X,f+d),new mxPoint(g+
+u,f),new mxPoint(g+u,f+n-d),new mxPoint(X,f+n),new mxPoint(g,f+n-d),new mxPoint(g,f)]);X=new mxPoint(X,a);e&&(b.x<g||b.x>g+u?X.y=b.y:X.x=b.x);return mxUtils.getPerimeterPoint(f,X,b)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,c,b,e){var d=F.prototype.size;null!=c&&(d=mxUtils.getValue(c.style,"size",d));var k=a.x,g=a.y,f=a.width,u=a.height,n=a.getCenterX();a=a.getCenterY();c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,
+mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;c==mxConstants.DIRECTION_NORTH||c==mxConstants.DIRECTION_SOUTH?(d=u*Math.max(0,Math.min(1,d)),g=[new mxPoint(n,g),new mxPoint(k+f,g+d),new mxPoint(k+f,g+u-d),new mxPoint(n,g+u),new mxPoint(k,g+u-d),new mxPoint(k,g+d),new mxPoint(n,g)]):(d=f*Math.max(0,Math.min(1,d)),g=[new mxPoint(k+d,g),new mxPoint(k+f-d,g),new mxPoint(k+f,a),new mxPoint(k+f-d,g+u),new mxPoint(k+d,g+u),new mxPoint(k,a),new mxPoint(k+d,g)]);n=new mxPoint(n,a);e&&(b.x<k||b.x>k+
+f?n.y=b.y:n.x=b.x);return mxUtils.getPerimeterPoint(g,n,b)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(O,mxShape);O.prototype.size=10;O.prototype.paintBackground=function(a,c,b,e,d){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(c,b);a.ellipse((e-k)/2,0,k,k);a.fillAndStroke();a.begin();a.moveTo(e/2,k);a.lineTo(e/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",O);mxUtils.extend(P,mxShape);P.prototype.size=
+10;P.prototype.inset=2;P.prototype.paintBackground=function(a,c,b,e,d){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(c,b);a.begin();a.moveTo(e/2,k+g);a.lineTo(e/2,d);a.end();a.stroke();a.begin();a.moveTo((e-k)/2-g,k/2);a.quadTo((e-k)/2-g,k+g,e/2,k+g);a.quadTo((e+k)/2+g,k+g,(e+k)/2+g,k/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",P);mxUtils.extend(ba,mxShape);ba.prototype.paintBackground=
+function(a,c,b,e,d){a.translate(c,b);a.begin();a.moveTo(0,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,0,d);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",ba);mxUtils.extend(W,mxShape);W.prototype.inset=2;W.prototype.paintBackground=function(a,c,b,e,d){var k=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(c,b);a.ellipse(0,k,e-2*k,d-2*k);a.fillAndStroke();a.begin();a.moveTo(e/2,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,e/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",
+W);mxUtils.extend(G,mxCylinder);G.prototype.jettyWidth=32;G.prototype.jettyHeight=12;G.prototype.redrawPath=function(a,c,b,e,d,k){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));c=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));b=g/2;var g=b+g/2,f=.3*d-c/2,u=.7*d-c/2;k?(a.moveTo(b,f),a.lineTo(g,f),a.lineTo(g,f+c),a.lineTo(b,f+c),a.moveTo(b,u),a.lineTo(g,u),a.lineTo(g,u+c),a.lineTo(b,u+c)):(a.moveTo(b,0),a.lineTo(e,0),a.lineTo(e,d),a.lineTo(b,d),
+a.lineTo(b,u+c),a.lineTo(0,u+c),a.lineTo(0,u),a.lineTo(b,u),a.lineTo(b,f+c),a.lineTo(0,f+c),a.lineTo(0,f),a.lineTo(b,f),a.close());a.end()};mxCellRenderer.registerShape("component",G);mxUtils.extend(Z,mxDoubleEllipse);Z.prototype.outerStroke=!0;Z.prototype.paintVertexShape=function(a,c,b,e,d){var k=Math.min(4,Math.min(e/5,d/5));0<e&&0<d&&(a.ellipse(c+k,b+k,e-2*k,d-2*k),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(c,b,e,d),a.stroke())};mxCellRenderer.registerShape("endState",Z);
 mxUtils.extend(na,Z);na.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",na);mxUtils.extend(ja,mxArrowConnector);ja.prototype.defaultWidth=4;ja.prototype.isOpenEnded=function(){return!0};ja.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};ja.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",ja);mxUtils.extend(ca,mxArrowConnector);ca.prototype.defaultWidth=
 10;ca.prototype.defaultArrowWidth=20;ca.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};ca.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};ca.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",ca);mxUtils.extend(ka,
 mxActor);ka.prototype.size=30;ka.prototype.isRoundable=function(){return!0};ka.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d),new mxPoint(0,c),new mxPoint(e,0),new mxPoint(e,d)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("manualInput",ka);mxUtils.extend(S,mxRectangleShape);S.prototype.dx=20;S.prototype.dy=
-20;S.prototype.isHtmlAllowed=function(){return!1};S.prototype.paintForeground=function(a,c,b,e,d){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var g=0;if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(e*f,d*f));f=Math.max(g,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));g=Math.max(g,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(c,
-b+g);a.lineTo(c+e,b+g);a.end();a.stroke();a.begin();a.moveTo(c+f,b);a.lineTo(c+f,b+d);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",S);mxUtils.extend(V,mxActor);V.prototype.dx=20;V.prototype.dy=20;V.prototype.redrawPath=function(a,c,b,e,d){c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));b=Math.max(0,Math.min(d,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(a,[new mxPoint(0,0),new mxPoint(e,0),new mxPoint(e,b),new mxPoint(c,b),new mxPoint(c,d),new mxPoint(0,d)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("corner",V);mxUtils.extend(pa,mxActor);pa.prototype.redrawPath=function(a,c,b,e,d){a.moveTo(0,0);a.lineTo(0,d);a.end();a.moveTo(e,0);a.lineTo(e,d);a.end();a.moveTo(0,d/2);a.lineTo(e,d/2);a.end()};mxCellRenderer.registerShape("crossbar",pa);mxUtils.extend(ga,mxActor);
-ga.prototype.dx=20;ga.prototype.dy=20;ga.prototype.redrawPath=function(a,c,b,e,d){c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));b=Math.max(0,Math.min(d,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(a,[new mxPoint(0,0),new mxPoint(e,0),new mxPoint(e,b),new mxPoint((e+c)/2,b),new mxPoint((e+c)/2,d),
-new mxPoint((e-c)/2,d),new mxPoint((e-c)/2,b),new mxPoint(0,b)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("tee",ga);mxUtils.extend(R,mxActor);R.prototype.arrowWidth=.3;R.prototype.arrowSize=.2;R.prototype.redrawPath=function(a,c,b,e,d){var g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));b=(d-g)/2;var g=b+g,f=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,b),new mxPoint(e-c,b),new mxPoint(e-c,0),new mxPoint(e,d/2),new mxPoint(e-c,d),new mxPoint(e-c,g),new mxPoint(0,g)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("singleArrow",R);mxUtils.extend(la,mxActor);la.prototype.redrawPath=function(a,c,b,e,d){var g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth))));c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"arrowSize",R.prototype.arrowSize))));b=(d-g)/2;var g=b+g,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d/2),new mxPoint(c,0),new mxPoint(c,b),new mxPoint(e-c,b),new mxPoint(e-c,0),new mxPoint(e,d/2),new mxPoint(e-c,d),new mxPoint(e-c,g),new mxPoint(c,g),new mxPoint(c,d)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",la);mxUtils.extend(M,mxActor);M.prototype.size=.1;M.prototype.redrawPath=function(a,c,
+20;S.prototype.isHtmlAllowed=function(){return!1};S.prototype.paintForeground=function(a,c,b,e,d){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var k=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,k=Math.max(k,Math.min(e*g,d*g));g=Math.max(k,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));k=Math.max(k,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(c,
+b+k);a.lineTo(c+e,b+k);a.end();a.stroke();a.begin();a.moveTo(c+g,b);a.lineTo(c+g,b+d);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage",S);mxUtils.extend(V,mxActor);V.prototype.dx=20;V.prototype.dy=20;V.prototype.redrawPath=function(a,c,b,e,d){c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,
+mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(e,0),new mxPoint(e,b),new mxPoint(c,b),new mxPoint(c,d),new mxPoint(0,d)],this.isRounded,k,!0);a.end()};mxCellRenderer.registerShape("corner",V);mxUtils.extend(pa,mxActor);pa.prototype.redrawPath=function(a,c,b,e,d){a.moveTo(0,0);a.lineTo(0,d);a.end();a.moveTo(e,0);a.lineTo(e,d);a.end();a.moveTo(0,d/2);a.lineTo(e,d/2);a.end()};mxCellRenderer.registerShape("crossbar",pa);mxUtils.extend(ga,mxActor);
+ga.prototype.dx=20;ga.prototype.dy=20;ga.prototype.redrawPath=function(a,c,b,e,d){c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(e,0),new mxPoint(e,b),new mxPoint((e+c)/2,b),new mxPoint((e+c)/2,d),
+new mxPoint((e-c)/2,d),new mxPoint((e-c)/2,b),new mxPoint(0,b)],this.isRounded,k,!0);a.end()};mxCellRenderer.registerShape("tee",ga);mxUtils.extend(R,mxActor);R.prototype.arrowWidth=.3;R.prototype.arrowSize=.2;R.prototype.redrawPath=function(a,c,b,e,d){var k=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));b=(d-k)/2;var k=b+k,g=mxUtils.getValue(this.style,
+mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,b),new mxPoint(e-c,b),new mxPoint(e-c,0),new mxPoint(e,d/2),new mxPoint(e-c,d),new mxPoint(e-c,k),new mxPoint(0,k)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",R);mxUtils.extend(la,mxActor);la.prototype.redrawPath=function(a,c,b,e,d){var k=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth))));c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"arrowSize",R.prototype.arrowSize))));b=(d-k)/2;var k=b+k,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d/2),new mxPoint(c,0),new mxPoint(c,b),new mxPoint(e-c,b),new mxPoint(e-c,0),new mxPoint(e,d/2),new mxPoint(e-c,d),new mxPoint(e-c,k),new mxPoint(c,k),new mxPoint(c,d)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",la);mxUtils.extend(M,mxActor);M.prototype.size=.1;M.prototype.redrawPath=function(a,c,
 b,e,d){c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(c,0);a.lineTo(e,0);a.quadTo(e-2*c,d/2,e,d);a.lineTo(c,d);a.quadTo(c-2*c,d/2,c,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",M);mxUtils.extend(I,mxActor);I.prototype.redrawPath=function(a,c,b,e,d){a.moveTo(0,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,0,d);a.close();a.end()};mxCellRenderer.registerShape("or",I);mxUtils.extend(ea,mxActor);ea.prototype.redrawPath=function(a,c,b,e,d){a.moveTo(0,
 0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,0,d);a.quadTo(e/2,d/2,0,0);a.close();a.end()};mxCellRenderer.registerShape("xor",ea);mxUtils.extend(N,mxActor);N.prototype.size=20;N.prototype.isRoundable=function(){return!0};N.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(e/2,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(e-c,0),new mxPoint(e,.8*c),new mxPoint(e,
 d),new mxPoint(0,d),new mxPoint(0,.8*c)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("loopLimit",N);mxUtils.extend(T,mxActor);T.prototype.size=.375;T.prototype.isRoundable=function(){return!0};T.prototype.redrawPath=function(a,c,b,e,d){c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(e,0),new mxPoint(e,d-c),new mxPoint(e/
 2,d),new mxPoint(0,d-c)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("offPageConnector",T);mxUtils.extend(ha,mxEllipse);ha.prototype.paintVertexShape=function(a,c,b,e,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(c+e/2,b+d);a.lineTo(c+e,b+d);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",ha);mxUtils.extend(ia,mxEllipse);ia.prototype.paintVertexShape=function(a,c,b,e,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);
 a.begin();a.moveTo(c,b+d/2);a.lineTo(c+e,b+d/2);a.end();a.stroke();a.begin();a.moveTo(c+e/2,b);a.lineTo(c+e/2,b+d);a.end();a.stroke()};mxCellRenderer.registerShape("orEllipse",ia);mxUtils.extend(J,mxEllipse);J.prototype.paintVertexShape=function(a,c,b,e,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(c+.145*e,b+.145*d);a.lineTo(c+.855*e,b+.855*d);a.end();a.stroke();a.begin();a.moveTo(c+.855*e,b+.145*d);a.lineTo(c+.145*e,b+.855*d);a.end();a.stroke()};
 mxCellRenderer.registerShape("sumEllipse",J);mxUtils.extend(qa,mxRhombus);qa.prototype.paintVertexShape=function(a,c,b,e,d){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(c,b+d/2);a.lineTo(c+e,b+d/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",qa);mxUtils.extend(aa,mxEllipse);aa.prototype.paintVertexShape=function(a,c,b,e,d){a.begin();a.moveTo(c,b);a.lineTo(c+e,b);a.lineTo(c+e/2,b+d/2);a.close();a.fillAndStroke();a.begin();a.moveTo(c,
-b+d);a.lineTo(c+e,b+d);a.lineTo(c+e/2,b+d/2);a.close();a.fillAndStroke()};mxCellRenderer.registerShape("collate",aa);mxUtils.extend(da,mxEllipse);da.prototype.paintVertexShape=function(a,c,b,e,d){var g=b+d-5;a.begin();a.moveTo(c,b);a.lineTo(c,b+d);a.moveTo(c,g);a.lineTo(c+10,g-5);a.moveTo(c,g);a.lineTo(c+10,g+5);a.moveTo(c,g);a.lineTo(c+e,g);a.moveTo(c+e,b);a.lineTo(c+e,b+d);a.moveTo(c+e,g);a.lineTo(c+e-10,g-5);a.moveTo(c+e,g);a.lineTo(c+e-10,g+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension",
+b+d);a.lineTo(c+e,b+d);a.lineTo(c+e/2,b+d/2);a.close();a.fillAndStroke()};mxCellRenderer.registerShape("collate",aa);mxUtils.extend(da,mxEllipse);da.prototype.paintVertexShape=function(a,c,b,e,d){var k=b+d-5;a.begin();a.moveTo(c,b);a.lineTo(c,b+d);a.moveTo(c,k);a.lineTo(c+10,k-5);a.moveTo(c,k);a.lineTo(c+10,k+5);a.moveTo(c,k);a.lineTo(c+e,k);a.moveTo(c+e,b);a.lineTo(c+e,b+d);a.moveTo(c+e,k);a.lineTo(c+e-10,k-5);a.moveTo(c+e,k);a.lineTo(c+e-10,k+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension",
 da);mxUtils.extend(Aa,mxEllipse);Aa.prototype.paintVertexShape=function(a,c,b,e,d){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this,arguments);null!=this.style&&(a.setStrokeColor(this.stroke),a.rect(c,b,e,d),a.fill(),a.begin(),a.moveTo(c,b),"1"==mxUtils.getValue(this.style,"top","1")?a.lineTo(c+e,b):a.moveTo(c+e,b),"1"==mxUtils.getValue(this.style,"right","1")?a.lineTo(c+e,b+d):a.moveTo(c+e,b+d),"1"==mxUtils.getValue(this.style,"bottom","1")?a.lineTo(c,b+
 d):a.moveTo(c,b+d),"1"==mxUtils.getValue(this.style,"left","1")&&a.lineTo(c,b-this.strokewidth/2),a.end(),a.stroke())};mxCellRenderer.registerShape("partialRectangle",Aa);mxUtils.extend(wa,mxEllipse);wa.prototype.paintVertexShape=function(a,c,b,e,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(c+e/2,b),a.lineTo(c+e/2,b+d)):(a.moveTo(c,b+d/2),a.lineTo(c+e,b+d/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse",
-wa);mxUtils.extend(za,mxActor);za.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(e,d/2);a.moveTo(0,0);a.lineTo(e-c,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,e-c,d);a.lineTo(0,d);a.close();a.end()};mxCellRenderer.registerShape("delay",za);mxUtils.extend(ma,mxActor);ma.prototype.size=.2;ma.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(d,e);var g=Math.max(0,Math.min(c,c*parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=(d-g)/2;b=c+g;var f=(e-g)/2,g=f+g;a.moveTo(0,c);a.lineTo(f,c);a.lineTo(f,
-0);a.lineTo(g,0);a.lineTo(g,c);a.lineTo(e,c);a.lineTo(e,b);a.lineTo(g,b);a.lineTo(g,d);a.lineTo(f,d);a.lineTo(f,b);a.lineTo(0,b);a.close();a.end()};mxCellRenderer.registerShape("cross",ma);mxUtils.extend(fa,mxActor);fa.prototype.size=.25;fa.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(e,d/2);b=Math.min(e-c,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*e);a.moveTo(0,d/2);a.lineTo(b,0);a.lineTo(e-c,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,e-c,d);a.lineTo(b,d);a.close();a.end()};
-mxCellRenderer.registerShape("display",fa);mxUtils.extend(sa,mxConnector);sa.prototype.origPaintEdgeShape=sa.prototype.paintEdgeShape;sa.prototype.paintEdgeShape=function(a,c,b){for(var e=[],d=0;d<c.length;d++)e.push(mxUtils.clone(c[d]));var d=a.state.dashed,g=a.state.fixDash;sa.prototype.origPaintEdgeShape.apply(this,[a,e,b]);3<=a.state.strokeWidth&&(e=mxUtils.getValue(this.style,"fillColor",null),null!=e&&(a.setStrokeColor(e),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(d,g),sa.prototype.origPaintEdgeShape.apply(this,
-[a,c,b])))};mxCellRenderer.registerShape("filledEdge",sa);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var c=this.format.getSelectionState(),b=a.apply(this,arguments);"umlFrame"==c.style.shape&&b.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return b}}();mxMarker.addMarker("dash",function(a,c,b,e,d,g,f,l,t,n){var u=d*(f+t+1),q=g*(f+t+1);return function(){a.begin();
-a.moveTo(e.x-u/2-q/2,e.y-q/2+u/2);a.lineTo(e.x+q/2-3*u/2,e.y-3*q/2-u/2);a.stroke()}});mxMarker.addMarker("cross",function(a,c,b,e,d,g,f,l,t,n){var u=d*(f+t+1),q=g*(f+t+1);return function(){a.begin();a.moveTo(e.x-u/2-q/2,e.y-q/2+u/2);a.lineTo(e.x+q/2-3*u/2,e.y-3*q/2-u/2);a.moveTo(e.x-u/2+q/2,e.y-q/2-u/2);a.lineTo(e.x-q/2-3*u/2,e.y-3*q/2+u/2);a.stroke()}});mxMarker.addMarker("circle",Ea);mxMarker.addMarker("circlePlus",function(a,c,b,e,d,g,f,l,t,n){var u=e.clone(),q=Ea.apply(this,arguments),C=d*(f+
-2*t),z=g*(f+2*t);return function(){q.apply(this,arguments);a.begin();a.moveTo(u.x-d*t,u.y-g*t);a.lineTo(u.x-2*C+d*t,u.y-2*z+g*t);a.moveTo(u.x-C-z+g*t,u.y-z+C-d*t);a.lineTo(u.x+z-C-g*t,u.y-z-C+d*t);a.stroke()}});mxMarker.addMarker("halfCircle",function(a,c,b,e,d,g,f,l,t,n){var u=d*(f+t+1),q=g*(f+t+1),C=e.clone();e.x-=u;e.y-=q;return function(){a.begin();a.moveTo(C.x-q,C.y+u);a.quadTo(e.x-q,e.y+u,e.x,e.y);a.quadTo(e.x+q,e.y-u,C.x+q,C.y-u);a.stroke()}});mxMarker.addMarker("async",function(a,c,b,e,d,
-g,f,l,t,n){c=d*t*1.118;b=g*t*1.118;d*=f+t;g*=f+t;var u=e.clone();u.x-=c;u.y-=b;e.x+=1*-d-c;e.y+=1*-g-b;return function(){a.begin();a.moveTo(u.x,u.y);l?a.lineTo(u.x-d-g/2,u.y-g+d/2):a.lineTo(u.x+g/2-d,u.y-g-d/2);a.lineTo(u.x-d,u.y-g);a.close();n?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(c,b,e,d,g,f,l,t,n,u){g*=l+n;f*=l+n;var q=d.clone();return function(){c.begin();c.moveTo(q.x,q.y);t?c.lineTo(q.x-g-f/a,q.y-f+g/a):c.lineTo(q.x+f/a-g,q.y-
-f-g/a);c.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Fa=function(a,c,b){return ya(a,["width"],c,function(c,e,d,g,f){f=a.shape.getEdgeWidth()*a.view.scale+b;return new mxPoint(g.x+e*c/4+d*f/2,g.y+d*c/4-e*f/2)},function(c,e,d,g,f,l){c=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,l.x,l.y));a.style.width=Math.round(2*c)/a.view.scale-b})},ya=function(a,c,b,e,d){return U(a,c,function(c){var d=a.absolutePoints,g=d.length-1;c=a.view.translate;var f=a.view.scale,l=b?d[0]:d[g],d=b?d[1]:d[g-
-1],g=d.x-l.x,t=d.y-l.y,n=Math.sqrt(g*g+t*t),l=e.call(this,n,g/n,t/n,l,d);return new mxPoint(l.x/f-c.x,l.y/f-c.y)},function(c,e,g){var f=a.absolutePoints,l=f.length-1;c=a.view.translate;var t=a.view.scale,n=b?f[0]:f[l],f=b?f[1]:f[l-1],l=f.x-n.x,u=f.y-n.y,q=Math.sqrt(l*l+u*u);e.x=(e.x+c.x)*t;e.y=(e.y+c.y)*t;d.call(this,q,l/q,u/q,n,f,e,g)})},va=function(a){return function(c){return[U(c,["arrowWidth","arrowSize"],function(c){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",R.prototype.arrowWidth))),
+wa);mxUtils.extend(za,mxActor);za.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(e,d/2);a.moveTo(0,0);a.lineTo(e-c,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,e-c,d);a.lineTo(0,d);a.close();a.end()};mxCellRenderer.registerShape("delay",za);mxUtils.extend(ma,mxActor);ma.prototype.size=.2;ma.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(d,e);var k=Math.max(0,Math.min(c,c*parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=(d-k)/2;b=c+k;var g=(e-k)/2,k=g+k;a.moveTo(0,c);a.lineTo(g,c);a.lineTo(g,
+0);a.lineTo(k,0);a.lineTo(k,c);a.lineTo(e,c);a.lineTo(e,b);a.lineTo(k,b);a.lineTo(k,d);a.lineTo(g,d);a.lineTo(g,b);a.lineTo(0,b);a.close();a.end()};mxCellRenderer.registerShape("cross",ma);mxUtils.extend(fa,mxActor);fa.prototype.size=.25;fa.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(e,d/2);b=Math.min(e-c,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*e);a.moveTo(0,d/2);a.lineTo(b,0);a.lineTo(e-c,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,e-c,d);a.lineTo(b,d);a.close();a.end()};
+mxCellRenderer.registerShape("display",fa);mxUtils.extend(sa,mxConnector);sa.prototype.origPaintEdgeShape=sa.prototype.paintEdgeShape;sa.prototype.paintEdgeShape=function(a,c,b){for(var e=[],d=0;d<c.length;d++)e.push(mxUtils.clone(c[d]));var d=a.state.dashed,k=a.state.fixDash;sa.prototype.origPaintEdgeShape.apply(this,[a,e,b]);3<=a.state.strokeWidth&&(e=mxUtils.getValue(this.style,"fillColor",null),null!=e&&(a.setStrokeColor(e),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(d,k),sa.prototype.origPaintEdgeShape.apply(this,
+[a,c,b])))};mxCellRenderer.registerShape("filledEdge",sa);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var c=this.format.getSelectionState(),b=a.apply(this,arguments);"umlFrame"==c.style.shape&&b.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return b}}();mxMarker.addMarker("dash",function(a,c,b,e,d,k,g,f,u,n){var t=d*(g+u+1),q=k*(g+u+1);return function(){a.begin();
+a.moveTo(e.x-t/2-q/2,e.y-q/2+t/2);a.lineTo(e.x+q/2-3*t/2,e.y-3*q/2-t/2);a.stroke()}});mxMarker.addMarker("cross",function(a,c,b,e,d,k,g,f,u,n){var t=d*(g+u+1),q=k*(g+u+1);return function(){a.begin();a.moveTo(e.x-t/2-q/2,e.y-q/2+t/2);a.lineTo(e.x+q/2-3*t/2,e.y-3*q/2-t/2);a.moveTo(e.x-t/2+q/2,e.y-q/2-t/2);a.lineTo(e.x-q/2-3*t/2,e.y-3*q/2+t/2);a.stroke()}});mxMarker.addMarker("circle",Ea);mxMarker.addMarker("circlePlus",function(a,c,b,e,d,k,g,f,u,n){var t=e.clone(),q=Ea.apply(this,arguments),C=d*(g+
+2*u),z=k*(g+2*u);return function(){q.apply(this,arguments);a.begin();a.moveTo(t.x-d*u,t.y-k*u);a.lineTo(t.x-2*C+d*u,t.y-2*z+k*u);a.moveTo(t.x-C-z+k*u,t.y-z+C-d*u);a.lineTo(t.x+z-C-k*u,t.y-z-C+d*u);a.stroke()}});mxMarker.addMarker("halfCircle",function(a,c,b,e,d,k,g,f,u,n){var t=d*(g+u+1),q=k*(g+u+1),C=e.clone();e.x-=t;e.y-=q;return function(){a.begin();a.moveTo(C.x-q,C.y+t);a.quadTo(e.x-q,e.y+t,e.x,e.y);a.quadTo(e.x+q,e.y-t,C.x+q,C.y-t);a.stroke()}});mxMarker.addMarker("async",function(a,c,b,e,d,
+k,g,f,u,n){c=d*u*1.118;b=k*u*1.118;d*=g+u;k*=g+u;var t=e.clone();t.x-=c;t.y-=b;e.x+=1*-d-c;e.y+=1*-k-b;return function(){a.begin();a.moveTo(t.x,t.y);f?a.lineTo(t.x-d-k/2,t.y-k+d/2):a.lineTo(t.x+k/2-d,t.y-k-d/2);a.lineTo(t.x-d,t.y-k);a.close();n?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(c,b,e,d,k,g,f,u,n,t){k*=f+n;g*=f+n;var q=d.clone();return function(){c.begin();c.moveTo(q.x,q.y);u?c.lineTo(q.x-k-g/a,q.y-g+k/a):c.lineTo(q.x+g/a-k,q.y-
+g-k/a);c.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Fa=function(a,c,b){return ya(a,["width"],c,function(c,e,d,k,g){g=a.shape.getEdgeWidth()*a.view.scale+b;return new mxPoint(k.x+e*c/4+d*g/2,k.y+d*c/4-e*g/2)},function(c,e,d,k,g,f){c=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,g.x,g.y,f.x,f.y));a.style.width=Math.round(2*c)/a.view.scale-b})},ya=function(a,c,b,e,d){return U(a,c,function(c){var d=a.absolutePoints,k=d.length-1;c=a.view.translate;var g=a.view.scale,f=b?d[0]:d[k],d=b?d[1]:d[k-
+1],k=d.x-f.x,u=d.y-f.y,n=Math.sqrt(k*k+u*u),f=e.call(this,n,k/n,u/n,f,d);return new mxPoint(f.x/g-c.x,f.y/g-c.y)},function(c,e,k){var g=a.absolutePoints,f=g.length-1;c=a.view.translate;var u=a.view.scale,n=b?g[0]:g[f],g=b?g[1]:g[f-1],f=g.x-n.x,t=g.y-n.y,q=Math.sqrt(f*f+t*t);e.x=(e.x+c.x)*u;e.y=(e.y+c.y)*u;d.call(this,q,f/q,t/q,n,g,e,k)})},va=function(a){return function(c){return[U(c,["arrowWidth","arrowSize"],function(c){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",R.prototype.arrowWidth))),
 e=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",R.prototype.arrowSize)));return new mxPoint(c.x+(1-e)*c.width,c.y+(1-b)*c.height/2)},function(c,b){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(c.y+c.height/2-b.y)/c.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(c.x+c.width-b.x)/c.width))})]}},Ma=function(a,c,b){return function(e){var d=[U(e,["size"],function(b){var e=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,
-"size",c)))))*a;return new mxPoint(b.x+e,b.y+e)},function(c,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(c.width,b.x-c.x),Math.min(c.height,b.y-c.y)))/a)})];b&&mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(ra(e));return d}},Ga=function(a,c,b,e,d){b=null!=b?b:1;return function(g){var f=[U(g,["size"],function(c){var b=null!=d?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,e=parseFloat(mxUtils.getValue(this.state.style,"size",b?d:a));return new mxPoint(c.x+
-Math.max(0,Math.min(c.width,e*(b?1:c.width))),c.getCenterY())},function(a,c,e){var f=null!=d?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null;a=f?c.x-a.x:Math.max(0,Math.min(b,(c.x-a.x)/a.width));f&&!mxEvent.isAltDown(e.getEvent())&&(a=g.view.graph.snap(a));this.state.style.size=a},null,e)];c&&mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&f.push(ra(g));return f}},Na=function(a){return function(c){var b=[U(c,["size"],function(c){var b=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,
+"size",c)))))*a;return new mxPoint(b.x+e,b.y+e)},function(c,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(c.width,b.x-c.x),Math.min(c.height,b.y-c.y)))/a)})];b&&mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(ra(e));return d}},Ga=function(a,c,b,e,d){b=null!=b?b:1;return function(k){var g=[U(k,["size"],function(c){var b=null!=d?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,e=parseFloat(mxUtils.getValue(this.state.style,"size",b?d:a));return new mxPoint(c.x+
+Math.max(0,Math.min(c.width,e*(b?1:c.width))),c.getCenterY())},function(a,c,e){var g=null!=d?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null;a=g?c.x-a.x:Math.max(0,Math.min(b,(c.x-a.x)/a.width));g&&!mxEvent.isAltDown(e.getEvent())&&(a=k.view.graph.snap(a));this.state.style.size=a},null,e)];c&&mxUtils.getValue(k.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(ra(k));return g}},Na=function(a){return function(c){var b=[U(c,["size"],function(c){var b=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,
 "size",e.prototype.size))));return new mxPoint(c.x+b*c.width*.75,c.y+c.height/4)},function(c,b){this.state.style.size=Math.max(0,Math.min(a,(b.x-c.x)/(.75*c.width)))},null,!0)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ra(c));return b}},Da=function(){return function(a){var c=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ra(a));return c}},ra=function(a,c){return U(a,[mxConstants.STYLE_ARCSIZE],function(b){var e=null!=c?c:b.height/8;if("1"==mxUtils.getValue(a.style,
 mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var d=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(b.x+b.width-Math.min(b.width/2,d),b.y+e)}d=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(b.x+b.width-Math.min(Math.max(b.width/2,b.height/2),Math.min(b.width,b.height)*d),b.y+e)},function(c,b,e){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?
-this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(c.width,2*(c.x+c.width-b.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(c.width-b.x+c.x)/Math.min(c.width,c.height))))})},U=function(a,c,b,e,d,g){var f=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);f.execute=function(){for(var a=0;a<c.length;a++)this.copyStyle(c[a])};f.getPosition=b;f.setPosition=e;f.ignoreGrid=null!=d?d:!0;if(g){var l=f.positionChanged;f.positionChanged=
-function(){l.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return f},Ha={link:function(a){return[Fa(a,!0,10),Fa(a,!1,10)]},flexArrow:function(a){var c=a.view.graph.gridSize/a.view.scale,b=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(ya(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(c,b,e,d,g){c=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,
-mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+b*(g+a.shape.strokewidth*a.view.scale)+e*c/2,d.y+e*(g+a.shape.strokewidth*a.view.scale)-b*c/2)},function(b,e,d,g,f,l,t){b=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,l.x,l.y));e=mxUtils.ptLineDist(g.x,g.y,g.x+d,g.y-e,l.x,l.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(e-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*b)/a.view.scale;mxEvent.isControlDown(t.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=
-a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(t.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<c/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),b.push(ya(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(c,b,e,d,g){c=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/
-5)*a.view.scale;return new mxPoint(d.x+b*(g+a.shape.strokewidth*a.view.scale)+e*c/2,d.y+e*(g+a.shape.strokewidth*a.view.scale)-b*c/2)},function(b,e,d,g,f,l,t){b=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,l.x,l.y));e=mxUtils.ptLineDist(g.x,g.y,g.x+d,g.y-e,l.x,l.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(e-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(t.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=
-a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(t.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<c/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<c&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(ya(a,
-["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(c,b,e,d,g){c=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+b*(g+a.shape.strokewidth*a.view.scale)-e*c/2,d.y+e*(g+a.shape.strokewidth*a.view.scale)+b*c/2)},function(b,e,d,g,f,l,t){b=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,l.x,l.y));e=mxUtils.ptLineDist(g.x,g.y,g.x+d,g.y-e,l.x,l.y);a.style[mxConstants.STYLE_ENDSIZE]=
-Math.round(100*(e-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*b)/a.view.scale;mxEvent.isControlDown(t.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(t.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<c/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),b.push(ya(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
-!1,function(c,b,e,d,g){c=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+b*(g+a.shape.strokewidth*a.view.scale)-e*c/2,d.y+e*(g+a.shape.strokewidth*a.view.scale)+b*c/2)},function(b,e,d,g,f,l,t){b=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,f.x,f.y,l.x,l.y));e=mxUtils.ptLineDist(g.x,g.y,g.x+d,g.y-e,l.x,l.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(e-a.shape.strokewidth)/
-3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(t.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(t.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<c/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-
+this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(c.width,2*(c.x+c.width-b.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(c.width-b.x+c.x)/Math.min(c.width,c.height))))})},U=function(a,c,b,e,d,k){var g=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);g.execute=function(){for(var a=0;a<c.length;a++)this.copyStyle(c[a])};g.getPosition=b;g.setPosition=e;g.ignoreGrid=null!=d?d:!0;if(k){var f=g.positionChanged;g.positionChanged=
+function(){f.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return g},Ha={link:function(a){return[Fa(a,!0,10),Fa(a,!1,10)]},flexArrow:function(a){var c=a.view.graph.gridSize/a.view.scale,b=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(ya(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(c,b,e,d,k){c=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;k=3*mxUtils.getNumber(a.style,
+mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+b*(k+a.shape.strokewidth*a.view.scale)+e*c/2,d.y+e*(k+a.shape.strokewidth*a.view.scale)-b*c/2)},function(b,e,d,k,g,f,u){b=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,g.x,g.y,f.x,f.y));e=mxUtils.ptLineDist(k.x,k.y,k.x+d,k.y-e,f.x,f.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(e-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*b)/a.view.scale;mxEvent.isControlDown(u.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=
+a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(u.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<c/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),b.push(ya(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(c,b,e,d,k){c=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;k=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/
+5)*a.view.scale;return new mxPoint(d.x+b*(k+a.shape.strokewidth*a.view.scale)+e*c/2,d.y+e*(k+a.shape.strokewidth*a.view.scale)-b*c/2)},function(b,e,d,k,g,f,u){b=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,g.x,g.y,f.x,f.y));e=mxUtils.ptLineDist(k.x,k.y,k.x+d,k.y-e,f.x,f.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(e-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(u.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=
+a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(u.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<c/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<c&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(ya(a,
+["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(c,b,e,d,k){c=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;k=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+b*(k+a.shape.strokewidth*a.view.scale)-e*c/2,d.y+e*(k+a.shape.strokewidth*a.view.scale)+b*c/2)},function(b,e,d,k,g,f,u){b=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,g.x,g.y,f.x,f.y));e=mxUtils.ptLineDist(k.x,k.y,k.x+d,k.y-e,f.x,f.y);a.style[mxConstants.STYLE_ENDSIZE]=
+Math.round(100*(e-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*b)/a.view.scale;mxEvent.isControlDown(u.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(u.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<c/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),b.push(ya(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
+!1,function(c,b,e,d,k){c=(a.shape.getEndArrowWidth()-a.shape.strokewidth)*a.view.scale;k=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+b*(k+a.shape.strokewidth*a.view.scale)-e*c/2,d.y+e*(k+a.shape.strokewidth*a.view.scale)+b*c/2)},function(b,e,d,k,g,f,u){b=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,g.x,g.y,f.x,f.y));e=mxUtils.ptLineDist(k.x,k.y,k.x+d,k.y-e,f.x,f.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(e-a.shape.strokewidth)/
+3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(u.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(u.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<c/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-
 parseFloat(a.style.startWidth))<c&&(a.style.endWidth=a.style.startWidth))})));return b},swimlane:function(a){var c=[U(a,[mxConstants.STYLE_STARTSIZE],function(c){var b=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(c.getCenterX(),c.y+Math.max(0,Math.min(c.height,b))):new mxPoint(c.x+Math.max(0,Math.min(c.width,b)),c.getCenterY())},function(c,b){a.style[mxConstants.STYLE_STARTSIZE]=
 1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(c.height,b.y-c.y))):Math.round(Math.max(0,Math.min(c.width,b.x-c.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var b=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));c.push(ra(a,b/2))}return c},label:Da(),ext:Da(),rectangle:Da(),triangle:Da(),rhombus:Da(),umlLifeline:function(a){return[U(a,["size"],function(a){var c=Math.max(0,Math.min(a.height,
 parseFloat(mxUtils.getValue(this.state.style,"size",D.prototype.size))));return new mxPoint(a.getCenterX(),a.y+c)},function(a,c){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))},!1)]},umlFrame:function(a){return[U(a,["width","height"],function(a){var c=Math.max(L.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",L.prototype.width))),b=Math.max(1.5*L.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",L.prototype.height)));
-return new mxPoint(a.x+c,a.y+b)},function(a,c){this.state.style.width=Math.round(Math.max(L.prototype.corner,Math.min(a.width,c.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*L.prototype.corner,Math.min(a.height,c.y-a.y)))},!1)]},process:function(a){var c=[U(a,["size"],function(a){var c=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",l.prototype.size))));return new mxPoint(a.x+a.width*c,a.y+a.height/4)},function(a,c){this.state.style.size=Math.max(0,Math.min(.5,
+return new mxPoint(a.x+c,a.y+b)},function(a,c){this.state.style.width=Math.round(Math.max(L.prototype.corner,Math.min(a.width,c.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*L.prototype.corner,Math.min(a.height,c.y-a.y)))},!1)]},process:function(a){var c=[U(a,["size"],function(a){var c=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size))));return new mxPoint(a.x+a.width*c,a.y+a.height/4)},function(a,c){this.state.style.size=Math.max(0,Math.min(.5,
 (c.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ra(a));return c},cross:function(a){return[U(a,["size"],function(a){var c=Math.min(a.width,a.height),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",ma.prototype.size)))*c/2;return new mxPoint(a.getCenterX()-c,a.getCenterY()-c)},function(a,c){var b=Math.min(a.width,a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-c.y)/b*2,Math.max(0,a.getCenterX()-c.x)/b*2)))})]},
-note:function(a){return[U(a,["size"],function(a){var c=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-c,a.y+c)},function(a,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-c.x),Math.min(a.height,c.y-a.y))))})]},manualInput:function(a){var c=[U(a,["size"],function(a){var c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",ka.prototype.size)));
+note:function(a){return[U(a,["size"],function(a){var c=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",l.prototype.size)))));return new mxPoint(a.x+a.width-c,a.y+c)},function(a,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-c.x),Math.min(a.height,c.y-a.y))))})]},manualInput:function(a){var c=[U(a,["size"],function(a){var c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",ka.prototype.size)));
 return new mxPoint(a.x+a.width/4,a.y+3*c/4)},function(a,c){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(c.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ra(a));return c},dataStorage:function(a){return[U(a,["size"],function(a){var c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",M.prototype.size))));return new mxPoint(a.x+(1-c)*a.width,a.getCenterY())},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-
 c.x)/a.width))})]},callout:function(a){var c=[U(a,["size","position"],function(a){var c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",A.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",A.prototype.position)));mxUtils.getValue(this.state.style,"base",A.prototype.base);return new mxPoint(a.x+b*a.width,a.y+a.height-c)},function(a,c){mxUtils.getValue(this.state.style,"base",A.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,
 a.y+a.height-c.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(c.x-a.x)/a.width)))/100}),U(a,["position2"],function(a){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",A.prototype.position2)));return new mxPoint(a.x+c*a.width,a.y+a.height)},function(a,c){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(c.x-a.x)/a.width)))/100}),U(a,["base"],function(a){var c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",A.prototype.size))),
@@ -2619,17 +2619,17 @@ Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",ga.prototype.
 Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",p.prototype.tabWidth))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",p.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",p.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);return new mxPoint(a.x+c,a.y+b)},function(a,c){var b=Math.max(0,Math.min(a.width,c.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",p.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&
 (b=a.width-b);this.state.style.tabWidth=Math.round(b);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))})]},document:function(a){return[U(a,["size"],function(a){var c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",B.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-c)*a.height)},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-c.y)/a.height))})]},tape:function(a){return[U(a,["size"],function(a){var c=Math.max(0,
 Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",y.prototype.size))));return new mxPoint(a.getCenterX(),a.y+c*a.height/2)},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(c.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[U(a,["size"],function(a){var c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",T.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-c)*a.height)},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(a.y+
-a.height-c.y)/a.height))})]},step:Ga(q.prototype.size,!0,null,!0,q.prototype.fixedSize),hexagon:Ga(E.prototype.size,!0,.5,!0),curlyBracket:Ga(g.prototype.size,!1),display:Ga(fa.prototype.size,!1),cube:Ma(1,a.prototype.size,!1),card:Ma(.5,v.prototype.size,!0),loopLimit:Ma(.5,N.prototype.size,!0),trapezoid:Na(.5),parallelogram:Na(1)};Graph.createHandle=U;Graph.handleFactory=Ha;mxVertexHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()&&this.graph.isCellRotatable(this.state.cell)){var a=
+a.height-c.y)/a.height))})]},step:Ga(q.prototype.size,!0,null,!0,q.prototype.fixedSize),hexagon:Ga(F.prototype.size,!0,.5,!0),curlyBracket:Ga(k.prototype.size,!1),display:Ga(fa.prototype.size,!1),cube:Ma(1,a.prototype.size,!1),card:Ma(.5,v.prototype.size,!0),loopLimit:Ma(.5,N.prototype.size,!0),trapezoid:Na(.5),parallelogram:Na(1)};Graph.createHandle=U;Graph.handleFactory=Ha;mxVertexHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()&&this.graph.isCellRotatable(this.state.cell)){var a=
 this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=Ha[a];null==a&&null!=this.state.shape&&this.state.shape.isRoundable()&&(a=Ha[mxConstants.SHAPE_RECTANGLE]);if(null!=a)return a(this.state)}return null};mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=
-mxConstants.SHAPE_CONNECTOR);a=Ha[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Ia=new mxPoint(1,0),Ja=new mxPoint(1,0),va=mxUtils.toRadians(-30),Ia=mxUtils.getRotatedPoint(Ia,Math.cos(va),Math.sin(va)),va=mxUtils.toRadians(-150),Ja=mxUtils.getRotatedPoint(Ja,Math.cos(va),Math.sin(va));mxEdgeStyle.IsometricConnector=function(a,c,b,e,d){var g=a.view;e=null!=e&&0<e.length?e[0]:null;var f=a.absolutePoints,l=f[0],f=f[f.length-1];null!=
-e&&(e=g.transformControlPoint(a,e));null==l&&null!=c&&(l=new mxPoint(c.getCenterX(),c.getCenterY()));null==f&&null!=b&&(f=new mxPoint(b.getCenterX(),b.getCenterY()));var t=Ia.x,n=Ia.y,u=Ja.x,q=Ja.y,C="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=f&&null!=l){a=function(a,c,b){a-=z.x;var e=c-z.y;c=(q*a-u*e)/(t*q-n*u);a=(n*a-t*e)/(n*u-t*q);C?(b&&(z=new mxPoint(z.x+t*c,z.y+n*c),d.push(z)),z=new mxPoint(z.x+u*a,z.y+q*a)):(b&&(z=new mxPoint(z.x+u*a,z.y+q*a),d.push(z)),z=new mxPoint(z.x+
-t*c,z.y+n*c));d.push(z)};var z=l;null==e&&(e=new mxPoint(l.x+(f.x-l.x)/2,l.y+(f.y-l.y)/2));a(e.x,e.y,!0);a(f.x,f.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Oa=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,c){if(c==mxEdgeStyle.IsometricConnector){var b=new mxElbowEdgeHandler(a);b.snapToTerminals=!1;return b}return Oa.apply(this,arguments)};b.prototype.constraints=[];f.prototype.getConstraints=function(a,c,b){a=[];var e=
+mxConstants.SHAPE_CONNECTOR);a=Ha[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Ia=new mxPoint(1,0),Ja=new mxPoint(1,0),va=mxUtils.toRadians(-30),Ia=mxUtils.getRotatedPoint(Ia,Math.cos(va),Math.sin(va)),va=mxUtils.toRadians(-150),Ja=mxUtils.getRotatedPoint(Ja,Math.cos(va),Math.sin(va));mxEdgeStyle.IsometricConnector=function(a,c,b,e,d){var k=a.view;e=null!=e&&0<e.length?e[0]:null;var g=a.absolutePoints,f=g[0],g=g[g.length-1];null!=
+e&&(e=k.transformControlPoint(a,e));null==f&&null!=c&&(f=new mxPoint(c.getCenterX(),c.getCenterY()));null==g&&null!=b&&(g=new mxPoint(b.getCenterX(),b.getCenterY()));var u=Ia.x,n=Ia.y,t=Ja.x,q=Ja.y,C="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=f){a=function(a,c,b){a-=z.x;var e=c-z.y;c=(q*a-t*e)/(u*q-n*t);a=(n*a-u*e)/(n*t-u*q);C?(b&&(z=new mxPoint(z.x+u*c,z.y+n*c),d.push(z)),z=new mxPoint(z.x+t*a,z.y+q*a)):(b&&(z=new mxPoint(z.x+t*a,z.y+q*a),d.push(z)),z=new mxPoint(z.x+
+u*c,z.y+n*c));d.push(z)};var z=f;null==e&&(e=new mxPoint(f.x+(g.x-f.x)/2,f.y+(g.y-f.y)/2));a(e.x,e.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Oa=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,c){if(c==mxEdgeStyle.IsometricConnector){var b=new mxElbowEdgeHandler(a);b.snapToTerminals=!1;return b}return Oa.apply(this,arguments)};b.prototype.constraints=[];f.prototype.getConstraints=function(a,c,b){a=[];var e=
 Math.tan(mxUtils.toRadians(30)),d=(.5-e)/2,e=Math.min(c,b/(.5+e));c=(c-e)/2;b=(b-e)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,b+.25*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+.5*e,b+e*d));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+e,b+.25*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+e,b+.75*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+.5*e,b+(1-d)*e));a.push(new mxConnectionConstraint(new mxPoint(0,
 0),!1,null,c,b+.75*e));return a};A.prototype.getConstraints=function(a,c,b){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var e=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));a.push(new mxConnectionConstraint(new mxPoint(0,
 0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*(b-e)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,b-e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,
 b-e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(b-e)));c>=2*e&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};mxRectangleShape.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),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,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))];mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;x.prototype.constraints=mxRectangleShape.prototype.constraints;k.prototype.getConstraints=function(a,c,b){a=[];var e=Math.max(0,Math.min(c,
+0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;x.prototype.constraints=mxRectangleShape.prototype.constraints;l.prototype.getConstraints=function(a,c,b){a=[];var e=Math.max(0,Math.min(c,
 Math.min(b,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*(c-e),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-.5*e,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,.5*(b+e)));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));c>=2*e&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};v.prototype.getConstraints=function(a,c,b){a=[];var e=Math.max(0,Math.min(c,Math.min(b,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*(c+e),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e,.5*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*(b+e)));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,
@@ -2661,32 +2661,32 @@ mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxC
 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)];R.prototype.getConstraints=function(a,c,b){a=[];var e=b*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)))),e=(b-e)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-d),b-e));a.push(new mxConnectionConstraint(new mxPoint(0,
 0),!1,null,0,b-e));return a};la.prototype.getConstraints=function(a,c,b){a=[];var e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",R.prototype.arrowWidth)))),d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",R.prototype.arrowSize)))),e=(b-e)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,e));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,c-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,b-e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));return a};ma.prototype.getConstraints=function(a,c,b){a=[];var e=Math.min(b,c),d=Math.max(0,Math.min(e,e*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),e=(b-d)/2,g=e+d,f=(c-d)/2,d=f+d;a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,f,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,b-.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,b));a.push(new mxConnectionConstraint(new mxPoint(.5,
-1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b-.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,e));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,g));a.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,.5*(c+d),g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,e));return a};D.prototype.constraints=
+0),!1,null,c-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,b-e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));return a};ma.prototype.getConstraints=function(a,c,b){a=[];var e=Math.min(b,c),d=Math.max(0,Math.min(e,e*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),e=(b-d)/2,k=e+d,g=(c-d)/2,d=g+d;a.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,g,.5*e));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,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b-.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b));a.push(new mxConnectionConstraint(new mxPoint(.5,
+1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b-.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,k));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,e));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,k));a.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,.5*(c+d),k));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,k));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,k));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,k));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,e));return a};D.prototype.constraints=
 null;I.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)];ea.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)];ba.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];W.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();var b=d.getDeletableCells(d.getSelectionCells());if(null!=b&&0<b.length){var f=d.selectParentAfterDelete?d.model.getParents(b):null;d.removeCells(b,a);if(null!=f){a=[];for(b=0;b<f.length;b++)d.model.contains(f[b])&&(d.model.isVertex(f[b])||d.model.isEdge(f[b]))&&a.push(f[b]);d.setSelectionCells(a)}}}var b=this.editorUi,f=b.editor,d=f.graph,k=function(){return Action.prototype.isEnabled.apply(this,arguments)&&d.isEnabled()};this.addAction("new...",
+Actions.prototype.init=function(){function a(a){d.escape();var b=d.getDeletableCells(d.getSelectionCells());if(null!=b&&0<b.length){var f=d.selectParentAfterDelete?d.model.getParents(b):null;d.removeCells(b,a);if(null!=f){a=[];for(b=0;b<f.length;b++)d.model.contains(f[b])&&(d.model.isVertex(f[b])||d.model.isEdge(f[b]))&&a.push(f[b]);d.setSelectionCells(a)}}}var b=this.editorUi,f=b.editor,d=f.graph,l=function(){return Action.prototype.isEnabled.apply(this,arguments)&&d.isEnabled()};this.addAction("new...",
 function(){d.openLink(b.getUrl())});this.addAction("open...",function(){window.openNew=!0;window.openKey="open";b.openFile()});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){b.hideDialog()}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){try{var d=mxUtils.parseXml(a);f.graph.setSelectionCells(f.graph.importGraphModel(d.documentElement))}catch(c){mxUtils.alert(mxResources.get("invalidOrMissingFile")+
-": "+c.message)}}));b.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=null})}).isEnabled=k;this.addAction("save",function(){b.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=k;this.addAction("saveAs...",function(){b.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=k;this.addAction("export...",function(){b.showDialog((new ExportDialog(b)).container,300,296,!0,!0)});this.addAction("editDiagram...",function(){var a=new EditDiagramDialog(b);b.showDialog(a.container,
-620,420,!0,!1);a.init()});this.addAction("pageSetup...",function(){b.showDialog((new PageSetupDialog(b)).container,320,220,!0,!0)}).isEnabled=k;this.addAction("print...",function(){b.showDialog((new PrintDialog(b)).container,300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(d,null,10,10)});this.addAction("undo",function(){b.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){b.redo()},null,"sprite-redo",mxClient.IS_WIN?
+": "+c.message)}}));b.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=null})}).isEnabled=l;this.addAction("save",function(){b.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=l;this.addAction("saveAs...",function(){b.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=l;this.addAction("export...",function(){b.showDialog((new ExportDialog(b)).container,300,296,!0,!0)});this.addAction("editDiagram...",function(){var a=new EditDiagramDialog(b);b.showDialog(a.container,
+620,420,!0,!1);a.init()});this.addAction("pageSetup...",function(){b.showDialog((new PageSetupDialog(b)).container,320,220,!0,!0)}).isEnabled=l;this.addAction("print...",function(){b.showDialog((new PrintDialog(b)).container,300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(d,null,10,10)});this.addAction("undo",function(){b.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){b.redo()},null,"sprite-redo",mxClient.IS_WIN?
 Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&mxClipboard.paste(d)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())){d.getModel().beginUpdate();
-try{var b=mxClipboard.paste(d);if(null!=b){a=!0;for(var f=0;f<b.length&&a;f++)a=a&&d.model.isEdge(b[f]);var c=d.view.translate,e=d.view.scale,g=c.x,u=c.y,c=null;if(1==b.length&&a){var n=d.getCellGeometry(b[0]);null!=n&&(c=n.getTerminalPoint(!0))}c=null!=c?c:d.getBoundingBoxFromGeometry(b,a);if(null!=c){var l=Math.round(d.snap(d.popupMenuHandler.triggerX/e-g)),z=Math.round(d.snap(d.popupMenuHandler.triggerY/e-u));d.cellsMoved(b,l-c.x,z-c.y)}}}finally{d.getModel().endUpdate()}}});this.addAction("copySize",
-function(a){a=d.getSelectionCell();d.isEnabled()&&null!=a&&d.getModel().isVertex(a)&&(a=d.getCellGeometry(a),null!=a&&(b.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shit+X");this.addAction("pasteSize",function(a){if(d.isEnabled()&&!d.isSelectionEmpty()&&null!=b.copiedSize){d.getModel().beginUpdate();try{var f=d.getSelectionCells();for(a=0;a<f.length;a++)if(d.getModel().isVertex(f[a])){var k=d.getCellGeometry(f[a]);null!=k&&(k=k.clone(),k.width=b.copiedSize.width,k.height=
-b.copiedSize.height,d.getModel().setGeometry(f[a],k))}}finally{d.getModel().endUpdate()}}},null,null,"Alt+Shit+V");this.addAction("delete",function(b){a(null!=b&&mxEvent.isShiftDown(b))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){d.setSelectionCells(d.duplicateCells())},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(){d.turnShapes(d.getSelectionCells())},
+try{var b=mxClipboard.paste(d);if(null!=b){a=!0;for(var f=0;f<b.length&&a;f++)a=a&&d.model.isEdge(b[f]);var c=d.view.translate,e=d.view.scale,k=c.x,t=c.y,c=null;if(1==b.length&&a){var n=d.getCellGeometry(b[0]);null!=n&&(c=n.getTerminalPoint(!0))}c=null!=c?c:d.getBoundingBoxFromGeometry(b,a);if(null!=c){var g=Math.round(d.snap(d.popupMenuHandler.triggerX/e-k)),z=Math.round(d.snap(d.popupMenuHandler.triggerY/e-t));d.cellsMoved(b,g-c.x,z-c.y)}}}finally{d.getModel().endUpdate()}}});this.addAction("copySize",
+function(a){a=d.getSelectionCell();d.isEnabled()&&null!=a&&d.getModel().isVertex(a)&&(a=d.getCellGeometry(a),null!=a&&(b.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shit+X");this.addAction("pasteSize",function(a){if(d.isEnabled()&&!d.isSelectionEmpty()&&null!=b.copiedSize){d.getModel().beginUpdate();try{var f=d.getSelectionCells();for(a=0;a<f.length;a++)if(d.getModel().isVertex(f[a])){var l=d.getCellGeometry(f[a]);null!=l&&(l=l.clone(),l.width=b.copiedSize.width,l.height=
+b.copiedSize.height,d.getModel().setGeometry(f[a],l))}}finally{d.getModel().endUpdate()}}},null,null,"Alt+Shit+V");this.addAction("delete",function(b){a(null!=b&&mxEvent.isShiftDown(b))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){d.setSelectionCells(d.duplicateCells())},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(){d.turnShapes(d.getSelectionCells())},
 null,null,Editor.ctrlKey+"+R"));this.addAction("selectVertices",function(){d.selectVertices()},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.isCellMovable(d.getSelectionCell())?1:0;d.toggleCellStyles(mxConstants.STYLE_MOVABLE,a);d.toggleCellStyles(mxConstants.STYLE_RESIZABLE,a);d.toggleCellStyles(mxConstants.STYLE_ROTATABLE,a);d.toggleCellStyles(mxConstants.STYLE_DELETABLE,a);d.toggleCellStyles(mxConstants.STYLE_EDITABLE,a);d.toggleCellStyles("connectable",a)}finally{d.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+L");this.addAction("home",function(){d.home()},null,null,"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("group",
 function(){1==d.getSelectionCount()?d.setCellStyles("container","1"):d.setSelectionCell(d.groupCells(null,0))},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){1==d.getSelectionCount()&&0==d.getModel().getChildCount(d.getSelectionCell())?d.setCellStyles("container","0"):d.setSelectionCells(d.ungroupCells())},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){d.removeCellsFromParent()});this.addAction("edit",function(){d.isEnabled()&&d.startEditingAtCell()},
 null,null,"F2/Enter");this.addAction("editData...",function(){var a=d.getSelectionCell()||d.getModel().getRoot();b.showDataDialog(a)},null,null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var a=b.editor.graph;if(a.isEnabled()&&!a.isSelectionEmpty()){var d=a.getSelectionCell(),f="";if(mxUtils.isNode(d.value)){var c=d.value.getAttribute("tooltip");null!=c&&(f=c)}f=new TextareaDialog(b,mxResources.get("editTooltip")+":",f,function(c){a.setTooltipForCell(d,c)});b.showDialog(f.container,
 320,200,!0,!0);f.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=b.editor.graph;if(a.isEnabled()&&!a.isSelectionEmpty()){var d=a.getSelectionCell(),f=a.getLinkForCell(d)||"";b.showLinkDialog(f,mxResources.get("apply"),function(c){c=mxUtils.trim(c);a.setLinkForCell(d,0<c.length?c:null)})}},null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+
-"...",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&(d.clearSelection(),b.actions.get("image").funct())})).isEnabled=k;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&b.showLinkDialog("",mxResources.get("insert"),function(a,b){a=mxUtils.trim(a);if(0<a.length){var f=null,c=d.getLinkTitle(a);null!=b&&0<b.length&&(f=b[0].iconUrl,c=b[0].name||b[0].type,c=c.charAt(0).toUpperCase()+c.substring(1),30<c.length&&
+"...",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&(d.clearSelection(),b.actions.get("image").funct())})).isEnabled=l;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())&&b.showLinkDialog("",mxResources.get("insert"),function(a,b){a=mxUtils.trim(a);if(0<a.length){var f=null,c=d.getLinkTitle(a);null!=b&&0<b.length&&(f=b[0].iconUrl,c=b[0].name||b[0].type,c=c.charAt(0).toUpperCase()+c.substring(1),30<c.length&&
 (c=c.substring(0,30)+"..."));var e=d.getFreeInsertPoint(),f=new mxCell(c,new mxGeometry(e.x,e.y,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;"));f.vertex=!0;d.setLinkForCell(f,a);d.cellSizeUpdated(f,!0);d.getModel().beginUpdate();try{f=d.addCell(f),d.fireEvent(new mxEventObject("cellsInserted","cells",[f]))}finally{d.getModel().endUpdate()}d.setSelectionCell(f);d.scrollCellToVisible(d.getSelectionCell())}})})).isEnabled=
-k;this.addAction("link...",mxUtils.bind(this,function(){var a=b.editor.graph;if(a.isEnabled())if(a.cellEditor.isContentEditing()){var d=a.getSelectedElement(),f=a.getParentByName(d,"A",a.cellEditor.textarea),c="";if(null==f&&null!=d&&null!=d.getElementsByTagName)for(var e=d.getElementsByTagName("a"),g=0;g<e.length&&null==f;g++)e[g].textContent==d.textContent&&(f=e[g]);null!=f&&"A"==f.nodeName&&(c=f.getAttribute("href")||"",a.selectNode(f));var u=a.cellEditor.saveSelection();b.showLinkDialog(c,mxResources.get("apply"),
-mxUtils.bind(this,function(c){a.cellEditor.restoreSelection(u);null!=c&&a.insertLink(c)}))}else a.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=k;this.addAction("autosize",function(){var a=d.getSelectionCells();if(null!=a){d.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var f=a[b];if(d.getModel().getChildCount(f))d.updateGroupBounds([f],20);else{var c=d.view.getState(f),e=d.getCellGeometry(f);d.getModel().isVertex(f)&&null!=c&&null!=c.text&&
-null!=e&&d.isWrapping(f)?(e=e.clone(),e.height=c.text.boundingBox.height/d.view.scale,d.getModel().setGeometry(f,e)):d.updateCellSize(f)}}}finally{d.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){var a=d.getView().getState(d.getSelectionCell());if(null!=a){var f="1";d.stopEditing();d.getModel().beginUpdate();try{if("1"==a.style.html){var f=null,k=d.convertValueToString(a.cell);"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(k=k.replace(/\n/g,
-"").replace(/<br\s*.?>/g,"\n"));var c=document.createElement("div");c.innerHTML=k;k=mxUtils.extractTextWithWhitespace(c.childNodes);d.cellLabelChanged(a.cell,k)}else k=mxUtils.htmlEntities(d.convertValueToString(a.cell),!1),"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(k=k.replace(/\n/g,"<br/>")),d.cellLabelChanged(a.cell,d.sanitizeHtml(k));d.setCellStyles("html",f);b.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=f?f:"0"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}}});
+l;this.addAction("link...",mxUtils.bind(this,function(){var a=b.editor.graph;if(a.isEnabled())if(a.cellEditor.isContentEditing()){var d=a.getSelectedElement(),f=a.getParentByName(d,"A",a.cellEditor.textarea),c="";if(null==f&&null!=d&&null!=d.getElementsByTagName)for(var e=d.getElementsByTagName("a"),k=0;k<e.length&&null==f;k++)e[k].textContent==d.textContent&&(f=e[k]);null!=f&&"A"==f.nodeName&&(c=f.getAttribute("href")||"",a.selectNode(f));var t=a.cellEditor.saveSelection();b.showLinkDialog(c,mxResources.get("apply"),
+mxUtils.bind(this,function(c){a.cellEditor.restoreSelection(t);null!=c&&a.insertLink(c)}))}else a.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=l;this.addAction("autosize",function(){var a=d.getSelectionCells();if(null!=a){d.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var f=a[b];if(d.getModel().getChildCount(f))d.updateGroupBounds([f],20);else{var c=d.view.getState(f),e=d.getCellGeometry(f);d.getModel().isVertex(f)&&null!=c&&null!=c.text&&
+null!=e&&d.isWrapping(f)?(e=e.clone(),e.height=c.text.boundingBox.height/d.view.scale,d.getModel().setGeometry(f,e)):d.updateCellSize(f)}}}finally{d.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){var a=d.getView().getState(d.getSelectionCell());if(null!=a){var f="1";d.stopEditing();d.getModel().beginUpdate();try{if("1"==a.style.html){var f=null,l=d.convertValueToString(a.cell);"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(l=l.replace(/\n/g,
+"").replace(/<br\s*.?>/g,"\n"));var c=document.createElement("div");c.innerHTML=l;l=mxUtils.extractTextWithWhitespace(c.childNodes);d.cellLabelChanged(a.cell,l)}else l=mxUtils.htmlEntities(d.convertValueToString(a.cell),!1),"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(l=l.replace(/\n/g,"<br/>")),d.cellLabelChanged(a.cell,d.sanitizeHtml(l));d.setCellStyles("html",f);b.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=f?f:"0"],"cells",d.getSelectionCells()))}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",f=d.getView().getState(d.getSelectionCell());null!=f&&(a=f.style[mxConstants.STYLE_ROTATION]||a);a=new FilenameDialog(b,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)");b.showDialog(a.container,375,80,!0,!0);a.init()});this.addAction("resetView",function(){d.zoomTo(1);b.resetScrollbars()},null,null,Editor.ctrlKey+"+H");this.addAction("zoomIn",function(a){d.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(a){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,f=d.view.scale;a.width/=f;a.height/=f;a.x=a.x/f-b.x;a.y=a.y/f-b.y;var f=d.container.clientWidth-10,c=d.container.clientHeight-10,e=Math.floor(20*Math.min(f/a.width,c/a.height))/20;d.zoomTo(e);mxUtils.hasScrollbars(d.container)&&(d.container.scrollTop=(a.y+b.y)*e-Math.max((c-a.height*e)/2+5,0),d.container.scrollLeft=(a.x+b.x)*e-Math.max((f-a.width*e)/2+5,0))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",
@@ -2695,10 +2695,10 @@ function(){d.pageVisible||this.get("pageView").funct();var a=d.pageFormat,b=d.pa
 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&&b.setPageScale(a/100)}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(a.container,
 300,80,!0,!0);a.init()}));var m=null,m=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled());b.fireEvent(new mxEventObject("gridEnabledChanged"))},null,null,Editor.ctrlKey+"+Shift+G");m.setToggleAction(!0);m.setSelectedCallback(function(){return d.isGridEnabled()});m.setEnabled(!1);m=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled;b.fireEvent(new mxEventObject("guidesEnabledChanged"))});m.setToggleAction(!0);m.setSelectedCallback(function(){return d.graphHandler.guidesEnabled});
-m.setEnabled(!1);m=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())});m.setToggleAction(!0);m.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()});m=this.addAction("collapseExpand",function(){var a=new ChangePageSetup(b);a.ignoreColor=!0;a.ignoreImage=!0;a.foldingEnabled=!d.foldingEnabled;d.model.execute(a)});m.setToggleAction(!0);m.setSelectedCallback(function(){return d.foldingEnabled});m.isEnabled=k;m=this.addAction("scrollbars",function(){b.setScrollbars(!b.hasScrollbars())});
+m.setEnabled(!1);m=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())});m.setToggleAction(!0);m.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()});m=this.addAction("collapseExpand",function(){var a=new ChangePageSetup(b);a.ignoreColor=!0;a.ignoreImage=!0;a.foldingEnabled=!d.foldingEnabled;d.model.execute(a)});m.setToggleAction(!0);m.setSelectedCallback(function(){return d.foldingEnabled});m.isEnabled=l;m=this.addAction("scrollbars",function(){b.setScrollbars(!b.hasScrollbars())});
 m.setToggleAction(!0);m.setSelectedCallback(function(){return d.scrollbars});m=this.addAction("pageView",mxUtils.bind(this,function(){b.setPageVisible(!d.pageVisible)}));m.setToggleAction(!0);m.setSelectedCallback(function(){return d.pageVisible});m=this.addAction("connectionArrows",function(){d.connectionArrowsEnabled=!d.connectionArrowsEnabled;b.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,null,"Alt+Shift+A");m.setToggleAction(!0);m.setSelectedCallback(function(){return d.connectionArrowsEnabled});
 m=this.addAction("connectionPoints",function(){d.setConnectable(!d.connectionHandler.isEnabled());b.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");m.setToggleAction(!0);m.setSelectedCallback(function(){return d.connectionHandler.isEnabled()});m=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget());b.fireEvent(new mxEventObject("copyConnectChanged"))});m.setToggleAction(!0);m.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()});
-m.isEnabled=k;m=this.addAction("autosave",function(){b.editor.setAutosave(!b.editor.autosave)});m.setToggleAction(!0);m.setSelectedCallback(function(){return b.editor.autosave});m.isEnabled=k;m.visible=!1;this.addAction("help",function(){var a="";mxResources.isLanguageSupported(mxClient.language)&&(a="_"+mxClient.language);d.openLink(RESOURCES_PATH+"/help"+a+".html")});var p=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){p||(b.showDialog((new AboutDialog(b)).container,
+m.isEnabled=l;m=this.addAction("autosave",function(){b.editor.setAutosave(!b.editor.autosave)});m.setToggleAction(!0);m.setSelectedCallback(function(){return b.editor.autosave});m.isEnabled=l;m.visible=!1;this.addAction("help",function(){var a="";mxResources.isLanguageSupported(mxClient.language)&&(a="_"+mxClient.language);d.openLink(RESOURCES_PATH+"/help"+a+".html")});var p=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){p||(b.showDialog((new AboutDialog(b)).container,
 320,280,!0,!0,function(){p=!1}),p=!0)},null,null,"F1"));m=mxUtils.bind(this,function(a,b,f,c){return this.addAction(a,function(){if(null!=f&&d.cellEditor.isContentEditing())f();else{d.stopEditing(!1);d.getModel().beginUpdate();try{d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,b),(b&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?d.updateLabelElements(d.getSelectionCells(),function(a){a.style.fontWeight=null;"B"==a.nodeName&&d.replaceElement(a)}):(b&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?
 d.updateLabelElements(d.getSelectionCells(),function(a){a.style.fontStyle=null;"I"==a.nodeName&&d.replaceElement(a)}):(b&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&d.updateLabelElements(d.getSelectionCells(),function(a){a.style.textDecoration=null;"U"==a.nodeName&&d.replaceElement(a)})}finally{d.getModel().endUpdate()}}},null,null,c)});m("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");m("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",
 !1,null)},Editor.ctrlKey+"+I");m("underline",mxConstants.FONT_UNDERLINE,function(){document.execCommand("underline",!1,null)},Editor.ctrlKey+"+U");this.addAction("fontColor...",function(){b.menus.pickColor(mxConstants.STYLE_FONTCOLOR,"forecolor","000000")});this.addAction("strokeColor...",function(){b.menus.pickColor(mxConstants.STYLE_STROKECOLOR)});this.addAction("fillColor...",function(){b.menus.pickColor(mxConstants.STYLE_FILLCOLOR)});this.addAction("gradientColor...",function(){b.menus.pickColor(mxConstants.STYLE_GRADIENTCOLOR)});
@@ -2706,44 +2706,44 @@ this.addAction("backgroundColor...",function(){b.menus.pickColor(mxConstants.STY
 null),d.setCellStyles(mxConstants.STYLE_DASH_PATTERN,null),b.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),b.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"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],"values",["1","1 4"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("sharp",
 function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),d.setCellStyles(mxConstants.STYLE_CURVED,"0"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","0"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("rounded",function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),d.setCellStyles(mxConstants.STYLE_CURVED,"0"),b.fireEvent(new mxEventObject("styleChanged",
-"keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!d.isSelectionEmpty()&&d.isEnabled()){d.getModel().beginUpdate();try{var a=d.getSelectionCells(),f=d.view.getState(a[0]),k=null!=f?f.style:d.getCellStyle(a[0]),c="1"==mxUtils.getValue(k,mxConstants.STYLE_ROUNDED,"0")?"0":"1";d.setCellStyles(mxConstants.STYLE_ROUNDED,c);d.setCellStyles(mxConstants.STYLE_CURVED,
+"keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!d.isSelectionEmpty()&&d.isEnabled()){d.getModel().beginUpdate();try{var a=d.getSelectionCells(),f=d.view.getState(a[0]),l=null!=f?f.style:d.getCellStyle(a[0]),c="1"==mxUtils.getValue(l,mxConstants.STYLE_ROUNDED,"0")?"0":"1";d.setCellStyles(mxConstants.STYLE_ROUNDED,c);d.setCellStyles(mxConstants.STYLE_CURVED,
 null);b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[c,"0"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}}});this.addAction("curved",function(){d.getModel().beginUpdate();try{d.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),d.setCellStyles(mxConstants.STYLE_CURVED,"1"),b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",d.getSelectionCells()))}finally{d.getModel().endUpdate()}});
 this.addAction("collapsible",function(){var a=d.view.getState(d.getSelectionCell()),f="1";null!=a&&null!=d.getFoldingImage(a)&&(f="0");d.setCellStyles("collapsible",f);b.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[f],"cells",d.getSelectionCells()))});this.addAction("editStyle...",mxUtils.bind(this,function(){var a=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()&&b.setDefaultStyle(d.getSelectionCell())},null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){d.isEnabled()&&b.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var a=d.getSelectionCell();
-if(null!=a&&d.getModel().isEdge(a)){var b=f.graph.selectionCellsHandler.getHandler(a);if(b instanceof mxEdgeHandler){for(var k=d.view.translate,c=d.view.scale,e=k.x,k=k.y,a=d.getModel().getParent(a),g=d.getCellGeometry(a);d.getModel().isVertex(a)&&null!=g;)e+=g.x,k+=g.y,a=d.getModel().getParent(a),g=d.getCellGeometry(a);e=Math.round(d.snap(d.popupMenuHandler.triggerX/c-e));c=Math.round(d.snap(d.popupMenuHandler.triggerY/c-k));b.addPointAt(b.state,e,c)}}});this.addAction("removeWaypoint",function(){var a=
+if(null!=a&&d.getModel().isEdge(a)){var b=f.graph.selectionCellsHandler.getHandler(a);if(b instanceof mxEdgeHandler){for(var l=d.view.translate,c=d.view.scale,e=l.x,l=l.y,a=d.getModel().getParent(a),k=d.getCellGeometry(a);d.getModel().isVertex(a)&&null!=k;)e+=k.x,l+=k.y,a=d.getModel().getParent(a),k=d.getCellGeometry(a);e=Math.round(d.snap(d.popupMenuHandler.triggerX/c-e));c=Math.round(d.snap(d.popupMenuHandler.triggerY/c-l));b.addPointAt(b.state,e,c)}}});this.addAction("removeWaypoint",function(){var a=
 b.actions.get("removeWaypoint");null!=a.handler&&a.handler.removePoint(a.handler.state,a.index)});this.addAction("clearWaypoints",function(){var a=d.getSelectionCells();if(null!=a){a=d.addAllEdges(a);d.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var f=a[b];if(d.getModel().isEdge(f)){var c=d.getCellGeometry(f);null!=c&&(c=c.clone(),c.points=null,d.getModel().setGeometry(f,c))}}}finally{d.getModel().endUpdate()}}},null,null,"Alt+Shift+C");m=this.addAction("subscript",mxUtils.bind(this,
-function(){d.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");m=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")+"):",f=d.getView().getState(d.getSelectionCell()),k="";null!=
-f&&(k=f.style[mxConstants.STYLE_IMAGE]||k);var c=d.cellEditor.saveSelection();b.showImageDialog(a,k,function(a,b,f){if(d.cellEditor.isContentEditing())d.cellEditor.restoreSelection(c),d.insertImage(a,b,f);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 u=d.getFreeInsertPoint(),g=e=[d.insertVertex(d.getDefaultParent(),null,"",u.x,u.y,b,f,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
-d.fireEvent(new mxEventObject("cellsInserted","cells",g))}d.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,e);var k=d.view.getState(e[0]),q=null!=k?k.style:d.getCellStyle(e[0]);"image"!=q[mxConstants.STYLE_SHAPE]&&"label"!=q[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!=f){var m=e[0],x=d.getModel().getGeometry(m);null!=x&&(x=x.clone(),x.width=b,x.height=f,
-d.getModel().setGeometry(m,x))}}finally{d.getModel().endUpdate()}null!=g&&(d.setSelectionCells(g),d.scrollCellToVisible(g[0]))}}},d.cellEditor.isContentEditing(),!d.cellEditor.isContentEditing())}}).isEnabled=k;m=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(b,document.body.offsetWidth-280,120,220,180),this.layersWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.addListener("hide",
+function(){d.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");m=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")+"):",f=d.getView().getState(d.getSelectionCell()),l="";null!=
+f&&(l=f.style[mxConstants.STYLE_IMAGE]||l);var c=d.cellEditor.saveSelection();b.showImageDialog(a,l,function(a,b,f){if(d.cellEditor.isContentEditing())d.cellEditor.restoreSelection(c),d.insertImage(a,b,f);else{var e=d.getSelectionCells();if(null!=a&&(0<a.length||0<e.length)){var k=null;d.getModel().beginUpdate();try{if(0==e.length){var t=d.getFreeInsertPoint(),k=e=[d.insertVertex(d.getDefaultParent(),null,"",t.x,t.y,b,f,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
+d.fireEvent(new mxEventObject("cellsInserted","cells",k))}d.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,e);var l=d.view.getState(e[0]),q=null!=l?l.style:d.getCellStyle(e[0]);"image"!=q[mxConstants.STYLE_SHAPE]&&"label"!=q[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!=f){var m=e[0],x=d.getModel().getGeometry(m);null!=x&&(x=x.clone(),x.width=b,x.height=f,
+d.getModel().setGeometry(m,x))}}finally{d.getModel().endUpdate()}null!=k&&(d.setSelectionCells(k),d.scrollCellToVisible(k[0]))}}},d.cellEditor.isContentEditing(),!d.cellEditor.isContentEditing())}}).isEnabled=l;m=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(b,document.body.offsetWidth-280,120,220,180),this.layersWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.addListener("hide",
 function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),b.fireEvent(new mxEventObject("layers"))):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));m=this.addAction("formatPanel",mxUtils.bind(this,function(){b.toggleFormatPanel()}),null,null,Editor.ctrlKey+
 "+Shift+P");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return 0<b.formatWidth}));m=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(b,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.addListener("hide",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0),
 b.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))};
-Actions.prototype.addAction=function(a,b,f,d,k){var m;"..."==a.substring(a.length-3)?(a=a.substring(0,a.length-3),m=mxResources.get(a)+"..."):m=mxResources.get(a);return this.put(a,new Action(m,b,f,d,k))};Actions.prototype.put=function(a,b){return this.actions[a]=b};Actions.prototype.get=function(a){return this.actions[a]};function Action(a,b,f,d,k){mxEventSource.call(this);this.label=a;this.funct=this.createFunction(b);this.enabled=null!=f?f:!0;this.iconCls=d;this.shortcut=k;this.visible=!0}
+Actions.prototype.addAction=function(a,b,f,d,l){var m;"..."==a.substring(a.length-3)?(a=a.substring(0,a.length-3),m=mxResources.get(a)+"..."):m=mxResources.get(a);return this.put(a,new Action(m,b,f,d,l))};Actions.prototype.put=function(a,b){return this.actions[a]=b};Actions.prototype.get=function(a){return this.actions[a]};function Action(a,b,f,d,l){mxEventSource.call(this);this.label=a;this.funct=this.createFunction(b);this.enabled=null!=f?f:!0;this.iconCls=d;this.shortcut=l;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()};DrawioFile=function(a,b){mxEventSource.call(this);this.ui=a;this.shadowData=this.data=b||"";this.shadowPages=null;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.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E4;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.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.reportEnabled=!0;DrawioFile.prototype.ageStart=null;DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};
 DrawioFile.prototype.synchronizeFile=function(a,b){this.savingFile?null!=b&&b({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,b):this.updateFile(a,b)};
-DrawioFile.prototype.updateFile=function(a,b,f,d){null!=f&&f()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b():this.getLatestVersion(mxUtils.bind(this,function(k){try{null!=f&&f()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b():null!=k?this.mergeFile(k,a,b,d):this.reloadFile(a,b))}catch(m){null!=b&&b(m)}}),b))};
-DrawioFile.prototype.mergeFile=function(a,b,f,d){var k=!0;try{this.stats.fileMerged++;var m=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),p=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=p&&0<p.length){this.shadowPages=p;this.backupPatch=this.isModified()?this.ui.diffPages(m,this.ui.pages):null;var v=[this.ui.diffPages(null!=d?d:m,this.shadowPages)];if(!this.ignorePatches(v)){var y=this.ui.patchPages(m,
-v[0]);d={};var B=this.ui.getHashValueForPages(y,d),m={},c=this.ui.getHashValueForPages(this.shadowPages,m);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",v,"checksum",c==B,B);if(null!=B&&B!=c){var e=this.compressReportData(this.getAnonymizedXmlForPages(p)),g=this.compressReportData(this.getAnonymizedXmlForPages(y)),u=this.ui.hashValue(a.getCurrentEtag()),n=this.ui.hashValue(this.getCurrentEtag());this.checksumError(f,v,"Shadow Details: "+JSON.stringify(d)+
-"\nChecksum: "+B+"\nCurrent: "+c+"\nCurrent Details: "+JSON.stringify(m)+"\nFrom: "+u+"\nTo: "+n+"\n\nFile Data:\n"+e+"\nPatched Shadow:\n"+g,null,"mergeFile");return}this.patch(v,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw k=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=b&&b()}catch(A){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
-null!=f&&f(A);try{if(k)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,A);else{var l=this.getCurrentUser(),z=null!=l?l.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),z,A)}}catch(q){}}};
-DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var b=new mxCodec(mxUtils.createXmlDocument()),f=b.document.createElement("mxfile");if(null!=a)for(var d=0;d<a.length;d++){var k=b.encode(new mxGraphModel(a[d].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",a[d].getId());a[d].viewState&&this.ui.editor.graph.saveViewState(a[d].viewState,k,!0);f.appendChild(k)}return mxUtils.getPrettyXml(f)};
+DrawioFile.prototype.updateFile=function(a,b,f,d){null!=f&&f()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b():this.getLatestVersion(mxUtils.bind(this,function(l){try{null!=f&&f()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b():null!=l?this.mergeFile(l,a,b,d):this.reloadFile(a,b))}catch(m){null!=b&&b(m)}}),b))};
+DrawioFile.prototype.mergeFile=function(a,b,f,d){var l=!0;try{this.stats.fileMerged++;var m=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),p=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=p&&0<p.length){this.shadowPages=p;this.backupPatch=this.isModified()?this.ui.diffPages(m,this.ui.pages):null;var v=[this.ui.diffPages(null!=d?d:m,this.shadowPages)];if(!this.ignorePatches(v)){var y=this.ui.patchPages(m,
+v[0]);d={};var B=this.ui.getHashValueForPages(y,d),m={},c=this.ui.getHashValueForPages(this.shadowPages,m);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",v,"checksum",c==B,B);if(null!=B&&B!=c){var e=this.compressReportData(this.getAnonymizedXmlForPages(p)),k=this.compressReportData(this.getAnonymizedXmlForPages(y)),t=this.ui.hashValue(a.getCurrentEtag()),n=this.ui.hashValue(this.getCurrentEtag());this.checksumError(f,v,"Shadow Details: "+JSON.stringify(d)+
+"\nChecksum: "+B+"\nCurrent: "+c+"\nCurrent Details: "+JSON.stringify(m)+"\nFrom: "+t+"\nTo: "+n+"\n\nFile Data:\n"+e+"\nPatched Shadow:\n"+k,null,"mergeFile");return}this.patch(v,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw l=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=b&&b()}catch(A){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
+null!=f&&f(A);try{if(l)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,A);else{var g=this.getCurrentUser(),z=null!=g?g.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),z,A)}}catch(q){}}};
+DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var b=new mxCodec(mxUtils.createXmlDocument()),f=b.document.createElement("mxfile");if(null!=a)for(var d=0;d<a.length;d++){var l=b.encode(new mxGraphModel(a[d].root));"1"!=urlParams.dev&&(l=this.ui.anonymizeNode(l,!0));l.setAttribute("id",a[d].getId());a[d].viewState&&this.ui.editor.graph.saveViewState(a[d].viewState,l,!0);f.appendChild(l)}return mxUtils.getPrettyXml(f)};
 DrawioFile.prototype.compressReportData=function(a,b,f){b=null!=b?b:1E4;null!=f&&null!=a&&a.length>f?a=a.substring(0,f)+"[...]":null!=a&&a.length>b&&(a=Graph.compress(a)+"\n");return a};
-DrawioFile.prototype.checksumError=function(a,b,f,d,k){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(this.errorReportsEnabled){if(null!=b)for(a=0;a<b.length;a++)this.ui.anonymizePatch(b[a]);var m=mxUtils.bind(this,function(a){var d=this.compressReportData(JSON.stringify(b,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)),
-25E3):"n/a";this.sendErrorReport("Checksum Error in "+k+" "+this.getHash(),(null!=f?f:"")+"\n\nPatches:\n"+d+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==d?m(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==d?m(a):m(null)}),function(){})}else{var p=this.getCurrentUser(),v=null!=p?p.id:"unknown";EditorUi.logError("Checksum Error in "+k+" "+this.getId(),null,this.getMode()+"."+this.getId(),"user_"+v+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync"));
-try{EditorUi.logEvent({category:"CHECKSUM-ERROR-SYNC-FILE-"+this.getHash(),action:k,label:"user_"+v+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync")})}catch(y){}}}catch(y){}};
-DrawioFile.prototype.sendErrorReport=function(a,b,f,d){try{var k=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),m=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),p=this.getCurrentUser(),v=null!=p?this.ui.hashValue(p.id):"unknown",y=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",B=this.getTitle(),c=B.lastIndexOf("."),p="xml";0<c&&(p=B.substring(c));var e=null!=f?f.stack:Error().stack;EditorUi.sendReport(a+" "+(new Date).toISOString()+
+DrawioFile.prototype.checksumError=function(a,b,f,d,l){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(this.errorReportsEnabled){if(null!=b)for(a=0;a<b.length;a++)this.ui.anonymizePatch(b[a]);var m=mxUtils.bind(this,function(a){var d=this.compressReportData(JSON.stringify(b,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)),
+25E3):"n/a";this.sendErrorReport("Checksum Error in "+l+" "+this.getHash(),(null!=f?f:"")+"\n\nPatches:\n"+d+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==d?m(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==d?m(a):m(null)}),function(){})}else{var p=this.getCurrentUser(),v=null!=p?p.id:"unknown";EditorUi.logError("Checksum Error in "+l+" "+this.getId(),null,this.getMode()+"."+this.getId(),"user_"+v+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync"));
+try{EditorUi.logEvent({category:"CHECKSUM-ERROR-SYNC-FILE-"+this.getHash(),action:l,label:"user_"+v+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync")})}catch(y){}}}catch(y){}};
+DrawioFile.prototype.sendErrorReport=function(a,b,f,d){try{var l=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),m=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),p=this.getCurrentUser(),v=null!=p?this.ui.hashValue(p.id):"unknown",y=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",B=this.getTitle(),c=B.lastIndexOf("."),p="xml";0<c&&(p=B.substring(c));var e=null!=f?f.stack:Error().stack;EditorUi.sendReport(a+" "+(new Date).toISOString()+
 ":\n\nBrowser="+navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+p+")\nUser="+v+y+"\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!=b?"\n\n"+b:"")+
-(null!=f?"\n\nError: "+f.message:"")+"\n\nStack:\n"+e+"\n\nShadow:\n"+k+"\n\nData:\n"+m,d)}catch(g){}};
+(null!=f?"\n\nError: "+f.message:"")+"\n\nStack:\n"+e+"\n\nShadow:\n"+l+"\n\nData:\n"+m,d)}catch(k){}};
 DrawioFile.prototype.reloadFile=function(a,b){try{this.ui.spinner.stop();var f=mxUtils.bind(this,function(){this.stats.fileReloaded++;this.reportEnabled=!1;var b=this.ui.editor.graph.getViewState(),f=this.ui.editor.graph.getSelectionCells(),m=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(m,b,f);null!=this.backupPatch&&this.patch([this.backupPatch]);var d=this.ui.getCurrentFile();null!=d&&(d.stats=
 this.stats);null!=a&&a()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),f,mxResources.get("cancel"),mxResources.get("discardChanges")):f()}catch(d){null!=b&&b(d)}};DrawioFile.prototype.copyFile=function(a,b){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))};
 DrawioFile.prototype.ignorePatches=function(a){for(var b=!0,f=0;f<a.length&&b;f++)b=b&&0==Object.keys(a[f]).length;return b};
-DrawioFile.prototype.patch=function(a,b){var f=this.ui.editor.undoManager,d=f.history.slice(),k=f.indexOfNextAdd,m=this.ui.editor.graph;m.container.style.visibility="hidden";var p=this.changeListenerEnabled;this.changeListenerEnabled=!1;var v=m.foldingEnabled,y=m.mathEnabled,B=m.cellRenderer.redraw;m.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());B.apply(this,arguments)};m.model.beginUpdate();try{for(var c=
-0;c<a.length;c++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[c],!0,b,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{m.container.style.visibility="";m.model.endUpdate();m.cellRenderer.redraw=B;this.changeListenerEnabled=p;f.history=d;f.indexOfNextAdd=k;f.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)y!=
+DrawioFile.prototype.patch=function(a,b){var f=this.ui.editor.undoManager,d=f.history.slice(),l=f.indexOfNextAdd,m=this.ui.editor.graph;m.container.style.visibility="hidden";var p=this.changeListenerEnabled;this.changeListenerEnabled=!1;var v=m.foldingEnabled,y=m.mathEnabled,B=m.cellRenderer.redraw;m.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());B.apply(this,arguments)};m.model.beginUpdate();try{for(var c=
+0;c<a.length;c++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[c],!0,b,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{m.container.style.visibility="";m.model.endUpdate();m.cellRenderer.redraw=B;this.changeListenerEnabled=p;f.history=d;f.indexOfNextAdd=l;f.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)y!=
 m.mathEnabled?(this.ui.editor.updateGraphComponents(),m.refresh()):(v!=m.foldingEnabled?m.view.revalidate():m.view.validate(),m.sizeDidChange());this.ui.updateTabContainer()}};
-DrawioFile.prototype.save=function(a,b,f,d,k,m){try{if(this.isEditable())if(!k&&this.invalidChecksum)if(null!=f)f({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave(),null!=b&&b();else if(null!=f)f({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));}catch(p){if(null!=f)f(p);else throw p;}};
+DrawioFile.prototype.save=function(a,b,f,d,l,m){try{if(this.isEditable())if(!l&&this.invalidChecksum)if(null!=f)f({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave(),null!=b&&b();else if(null!=f)f({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));}catch(p){if(null!=f)f(p);else throw p;}};
 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 a=null!=this.ui.fileNode?this.ui.fileNode.getAttribute("compressed"):null;return null!=a?"false"!=a:this.isCompressedStorage()&&Editor.compressXml};DrawioFile.prototype.saveAs=function(a,b,f){};DrawioFile.prototype.saveFile=function(a,b,f,d){};
 DrawioFile.prototype.getPublicUrl=function(a){a(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.setModified=function(a){this.modified=a};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(a,b,f){};
 DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.isTrashed=function(){return!1};DrawioFile.prototype.move=function(a,b,f){};DrawioFile.prototype.getHash=function(){return""};DrawioFile.prototype.getId=function(){return""};DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""};
@@ -2765,26 +2765,26 @@ DrawioFile.prototype.showRefreshDialog=function(a,b,f){null==f&&(f=mxResources.g
 b)}),null,mxResources.get("synchronize"),mxUtils.bind(this,function(){this.reloadFile(a,b)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150))};
 DrawioFile.prototype.showCopyDialog=function(a,b,f){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(a,b)}),null,mxResources.get("overwrite"),f,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog()}),360,150)};
 DrawioFile.prototype.showConflictDialog=function(a,b){this.ui.showError(mxResources.get("externalChanges"),mxResources.get("fileChangedSyncDialog"),mxResources.get("overwrite"),a,null,mxResources.get("synchronize"),b,mxResources.get("cancel"),mxUtils.bind(this,function(){this.ui.hideDialog();this.handleFileError(null,!1)}),340,150)};
-DrawioFile.prototype.redirectToNewApp=function(a,b){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var f=window.location.protocol+"//"+window.location.host+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#"+this.getHash(),d=mxResources.get("redirectToNewApp");null!=b&&(d+=" ("+b+")");var k=mxUtils.bind(this,function(){var b=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==f?window.location.reload():
-window.location.href=f});null==a&&this.isModified()?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.redirectDialogShowing=!1}),b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()});null!=a?this.isModified()?this.ui.confirm(d,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;a()}),k,mxResources.get("cancel"),mxResources.get("discardChanges")):this.ui.confirm(d,k,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;a()})):this.ui.alert(mxResources.get("redirectToNewApp"),
-k)}};DrawioFile.prototype.handleFileSuccess=function(a){this.ui.spinner.stop();this.ui.getCurrentFile()==this&&(this.isModified()?this.fileChanged():a?(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(a,b){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var f=window.location.protocol+"//"+window.location.host+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#"+this.getHash(),d=mxResources.get("redirectToNewApp");null!=b&&(d+=" ("+b+")");var l=mxUtils.bind(this,function(){var b=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==f?window.location.reload():
+window.location.href=f});null==a&&this.isModified()?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.redirectDialogShowing=!1}),b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()});null!=a?this.isModified()?this.ui.confirm(d,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;a()}),l,mxResources.get("cancel"),mxResources.get("discardChanges")):this.ui.confirm(d,l,mxUtils.bind(this,function(){this.redirectDialogShowing=!1;a()})):this.ui.alert(mxResources.get("redirectToNewApp"),
+l)}};DrawioFile.prototype.handleFileSuccess=function(a){this.ui.spinner.stop();this.ui.getCurrentFile()==this&&(this.isModified()?this.fileChanged():a?(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(a,b){this.ui.spinner.stop();if(this.ui.getCurrentFile()==this)if(this.inConflictState)this.handleConflictError(a,b);else if(this.isModified()&&this.addUnsavedStatus(a),b)this.ui.handleError(a,null!=a?mxResources.get("errorSavingFile"):null);else if(!this.isModified()){var f=null!=a?null!=a.error?a.error.message:a.message:null;null!=f&&60<f.length&&(f=f.substring(0,60)+"...");this.ui.editor.setStatus('<div class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+
 mxUtils.htmlEntities(mxResources.get("error"))+(null!=f?" ("+mxUtils.htmlEntities(f)+")":"")+"</div>")}};
-DrawioFile.prototype.handleConflictError=function(a,b){var f=mxUtils.bind(this,function(){this.handleFileSuccess(!0)}),d=mxUtils.bind(this,function(a){this.handleFileError(a,!0)}),k=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("saving"))&&(this.ui.editor.setStatus(""),this.save(!0,f,d,null,!0,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==a?null:a.commitMessage))}),m=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("saving"))&&this.save(!0,f,d,null,null,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==a?null:a.commitMessage)}),d)});"none"==DrawioFile.SYNC?this.showCopyDialog(f,d,k):this.invalidChecksum?this.showRefreshDialog(f,d,this.getErrorMessage(a)):b?this.showConflictDialog(k,m):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));
+DrawioFile.prototype.handleConflictError=function(a,b){var f=mxUtils.bind(this,function(){this.handleFileSuccess(!0)}),d=mxUtils.bind(this,function(a){this.handleFileError(a,!0)}),l=mxUtils.bind(this,function(){this.ui.spinner.spin(document.body,mxResources.get("saving"))&&(this.ui.editor.setStatus(""),this.save(!0,f,d,null,!0,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==a?null:a.commitMessage))}),m=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("saving"))&&this.save(!0,f,d,null,null,this.constructor!=GitHubFile&&this.constructor!=GitLabFile||null==a?null:a.commitMessage)}),d)});"none"==DrawioFile.SYNC?this.showCopyDialog(f,d,l):this.invalidChecksum?this.showRefreshDialog(f,d,this.getErrorMessage(a)):b?this.showConflictDialog(l,m):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));
 this.synchronizeFile(f,d)}),this.getErrorMessage(a))};DrawioFile.prototype.getErrorMessage=function(a){return null!=a?null!=a.error?a.error.message:a.message:null};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()?(this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get("saving"))+"..."),this.ui.scheduleSanityCheck(),null==this.ageStart&&(this.ageStart=new Date),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(a){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(a){this.handleFileError(a)}))):(this.ageStart=null,this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus())};
-DrawioFile.prototype.fileSaved=function(a,b,f,d){this.lastSaved=new Date;this.ageStart=null;try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=f&&f()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),b,f,d,a)}catch(p){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=d&&d(p);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,p);else{var k=
-this.getCurrentUser(),m=null!=k?k.id:"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),m,p)}}catch(v){}}};
-DrawioFile.prototype.autosave=function(a,b,f,d){null==this.lastAutosave&&(this.lastAutosave=Date.now());a=Date.now()-this.lastAutosave<b?a:0;this.clearAutosave();var k=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==k&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted();null!=f&&f(a)}),mxUtils.bind(this,
-function(a){null!=d&&d(a)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=f&&f(null)}),a);this.autosaveThread=k};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(a,b,f,d){this.lastSaved=new Date;this.ageStart=null;try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=f&&f()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),b,f,d,a)}catch(p){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=d&&d(p);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,p);else{var l=
+this.getCurrentUser(),m=null!=l?l.id:"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),m,p)}}catch(v){}}};
+DrawioFile.prototype.autosave=function(a,b,f,d){null==this.lastAutosave&&(this.lastAutosave=Date.now());a=Date.now()-this.lastAutosave<b?a:0;this.clearAutosave();var l=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==l&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted();null!=f&&f(a)}),mxUtils.bind(this,
+function(a){null!=d&&d(a)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=f&&f(null)}),a);this.autosaveThread=l};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 a=(new Date).getTime();return null==this.lastAutosaveRevision||a-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(a){this.updateFileData();this.stats.closed++;this.isAutosave()&&this.isModified()&&this.save(this.isAutosaveRevision(),null,null,a);this.destroy()};DrawioFile.prototype.hasSameExtension=function(a,b){if(null!=a&&null!=b){var f=a.lastIndexOf("."),d=0<f?a.substring(f):"",f=b.lastIndexOf(".");return d===(0<f?b.substring(f):"")}return a==b};
 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.stats.destroyed++;this.clearAutosave();this.removeListeners();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(a,b){a([])};DrawioFile.prototype.addComment=function(a,b,f){b(Date.now())};DrawioFile.prototype.canReplyToReplies=function(){return!0};DrawioFile.prototype.canComment=function(){return!0};DrawioFile.prototype.newComment=function(a,b){return new DrawioComment(this,null,a,Date.now(),Date.now(),!1,b)};LocalFile=function(a,b,f,d){DrawioFile.call(this,a,b);this.title=f;this.mode=d?null:App.MODE_DEVICE};mxUtils.extend(LocalFile,DrawioFile);LocalFile.prototype.isAutosave=function(){return!1};LocalFile.prototype.getMode=function(){return this.mode};LocalFile.prototype.getTitle=function(){return this.title};LocalFile.prototype.isRenamable=function(){return!0};LocalFile.prototype.save=function(a,b,f){this.saveAs(this.title,b,f)};LocalFile.prototype.saveAs=function(a,b,f){this.saveFile(a,!1,b,f)};
-LocalFile.prototype.saveFile=function(a,b,f,d){this.title=a;this.updateFileData();b=this.getData();var k=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle()),m=mxUtils.bind(this,function(b){if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(b,a,k?"image/png":"text/xml",k);else if(b.length<MAX_REQUEST_SIZE){var d=a.lastIndexOf("."),d=0<d?a.substring(d+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+d+"&xml="+encodeURIComponent(b)+"&filename="+encodeURIComponent(a)+
-(k?"&binary=1":""))).simulate(document,"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}));this.setModified(!1);this.contentChanged();null!=f&&f()});k?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){m(a)}),d,this.ui.getCurrentFile()!=this?this.getData():null):m(b)};LocalFile.prototype.rename=function(a,b,f){this.title=a;this.descriptorChanged();null!=b&&b()};
+LocalFile.prototype.saveFile=function(a,b,f,d){this.title=a;this.updateFileData();b=this.getData();var l=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle()),m=mxUtils.bind(this,function(b){if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(b,a,l?"image/png":"text/xml",l);else if(b.length<MAX_REQUEST_SIZE){var d=a.lastIndexOf("."),d=0<d?a.substring(d+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+d+"&xml="+encodeURIComponent(b)+"&filename="+encodeURIComponent(a)+
+(l?"&binary=1":""))).simulate(document,"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}));this.setModified(!1);this.contentChanged();null!=f&&f()});l?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){m(a)}),d,this.ui.getCurrentFile()!=this?this.getData():null):m(b)};LocalFile.prototype.rename=function(a,b,f){this.title=a;this.descriptorChanged();null!=b&&b()};
 LocalFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};(function(){Editor.prototype.appName="draw.io";Editor.prototype.fileExtensions=[{ext:"html",title:"filetypeHtml"},{ext:"png",title:"filetypePng"},{ext:"svg",title:"filetypeSvg"}];Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC":
 IMAGE_PATH+"/delete.png";Editor.plusImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDdCMTdENjVCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDdCMTdENjZCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowN0IxN0Q2M0I4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowN0IxN0Q2NEI4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtjrjmgAAAAtSURBVHjaYvz//z8DMigvLwcLdHZ2MiKLMzEQCaivkLGsrOw/dU0cAr4GCDAARQsQbTFrv10AAAAASUVORK5CYII=":
 IMAGE_PATH+"/plus.png";Editor.spinImage=mxClient.IS_SVG?"data:image/gif;base64,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":
@@ -2830,101 +2830,102 @@ null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useFor
 AuthorInit:function(){MathJax.Hub.Config(c||{jax:["input/TeX","input/MathML","input/AsciiMath","output/HTML-CSS"],extensions:["tex2jax.js","mml2jax.js","asciimath2jax.js"],"HTML-CSS":{imageFont:null},TeX:{extensions:["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}});MathJax.Hub.Register.StartupHook("Begin",function(){for(var a=0;a<Editor.mathJaxQueue.length;a++)Editor.doMathJaxRender(Editor.mathJaxQueue[a])})}};
 Editor.MathJaxRender=function(a){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(a):Editor.mathJaxQueue.push(a)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var b=Editor.prototype.init;Editor.prototype.init=function(){b.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,mxUtils.bind(this,function(a,c){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)}))};var e=document.getElementsByTagName("script");
 if(null!=e&&0<e.length){var d=document.createElement("script");d.type="text/javascript";d.src=a;e[0].parentNode.appendChild(d)}};Editor.prototype.csvToArray=function(a){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(a))return null;var c=[];a.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,
-function(a,b,e,d){void 0!==b?c.push(b.replace(/\\'/g,"'")):void 0!==e?c.push(e.replace(/\\"/g,'"')):void 0!==d&&c.push(d);return""});/,\s*$/.test(a)&&c.push("");return c};Editor.prototype.isCorsEnabledForUrl=function(a){null!=urlParams.cors&&null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(a)||"https://raw.githubusercontent.com/"===a.substring(0,34)||"https://cdn.rawgit.com/"===a.substring(0,23)||"https://rawgit.com/"===
-a.substring(0,19)||/^https?:\/\/[^\/]*\.blob.core.windows.net\//.test(a)||/^https?:\/\/[^\/]*\.iconfinder.com\//.test(a)||/^https?:\/\/[^\/]*\.draw\.io\/proxy/.test(a)||/^https?:\/\/[^\/]*\.github\.io\//.test(a)};Editor.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var c=a.convert,b=this;a.convert=function(e){if(null!=e){var d="http://"==e.substring(0,7)||"https://"==e.substring(0,8);d&&!navigator.onLine?e=EditorUi.prototype.svgBrokenImage.src:!d||e.substring(0,
-a.baseUrl.length)==a.baseUrl||EditorUi.prototype.crossOriginImages&&b.isCorsEnabledForUrl(e)?"chrome-extension://"==e.substring(0,19)||mxClient.IS_CHROMEAPP||(e=c.apply(this,arguments)):e=PROXY_URL+"?url="+encodeURIComponent(e)}return e};return a};Editor.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};Editor.prototype.convertImageToDataUri=function(a,c){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){c(this.createSvgDataUri(a.getText()))}),
-function(){c(EditorUi.prototype.svgBrokenImage.src)});else{var b=new Image;EditorUi.prototype.crossOriginImages&&(b.crossOrigin="anonymous");b.onload=function(){var a=document.createElement("canvas"),e=a.getContext("2d");a.height=b.height;a.width=b.width;e.drawImage(b,0,0);try{c(a.toDataURL())}catch(Q){c(EditorUi.prototype.svgBrokenImage.src)}};b.onerror=function(){c(EditorUi.prototype.svgBrokenImage.src)};b.src=a}};Editor.prototype.convertImages=function(a,c,b,e){null==e&&(e=this.createImageUrlConverter());
-var d=0,g=b||{};b=mxUtils.bind(this,function(b,f){for(var l=a.getElementsByTagName(b),n=0;n<l.length;n++)mxUtils.bind(this,function(b){var l=e.convert(b.getAttribute(f));if(null!=l&&"data:"!=l.substring(0,5)){var n=g[l];null==n?(d++,this.convertImageToDataUri(l,function(e){null!=e&&(g[l]=e,b.setAttribute(f,e));d--;0==d&&c(a)})):b.setAttribute(f,n)}else null!=l&&b.setAttribute(f,l)})(l[n])});b("image","xlink:href");b("img","src");0==d&&c(a)};Editor.prototype.base64Encode=function(a){for(var c="",b=
-0,e=a.length,d,g,f;b<e;){d=a.charCodeAt(b++)&255;if(b==e){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<<4);c+="==";break}g=a.charCodeAt(b++);if(b==e){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<<4|(g&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&
-15)<<2);c+="=";break}f=a.charCodeAt(b++);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<<4|(g&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&15)<<2|(f&192)>>6);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f&63)}return c};Editor.prototype.loadUrl=function(a,c,b,e,d,g){try{var f=e||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||
-/(\.gif)($|\?)/i.test(a);d=null!=d?d:!0;var l=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=c){var e=a.getText();if(f){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var e=Array(a.length),d=0;d<a.length;d++)e[d]=String.fromCharCode(a[d]);e=e.join("")}g=null!=g?g:"data:image/png;base64,";e=g+this.base64Encode(e)}c(e)}}else null!=
-b&&b({code:App.ERROR_UNKNOWN},a)}),function(){null!=b&&b({code:App.ERROR_UNKNOWN})},f,this.timeout,function(){d&&null!=b&&b({code:App.ERROR_TIMEOUT,retry:l})})});l()}catch(O){null!=b&&b(O)}};Editor.prototype.loadFonts=function(a){if(null!=this.fontCss&&null==this.resolvedFontCss){var c=function(a){return a.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")},b=this.fontCss.split("url("),e=0,d={},g=mxUtils.bind(this,function(){if(0==e){for(var g=[b[0]],f=1;f<b.length;f++){var l=
-b[f].indexOf(")");g.push('url("');g.push(d[c(b[f].substring(0,l))]);g.push('"'+b[f].substring(l))}this.resolvedFontCss=g.join("");a()}});if(0<b.length)for(var f=1;f<b.length;f++){var l=b[f].indexOf(")"),n=null,t=b[f].indexOf("format(",l);0<t&&(n=c(b[f].substring(t+7,b[f].indexOf(")",t))));mxUtils.bind(this,function(a){if(null==d[a]){d[a]=a;e++;var c="application/x-font-ttf";if("svg"==n||/(\.svg)($|\?)/i.test(a))c="image/svg+xml";else if("otf"==n||"embedded-opentype"==n||/(\.otf)($|\?)/i.test(a))c=
-"application/x-font-opentype";else if("woff"==n||/(\.woff)($|\?)/i.test(a))c="application/font-woff";else if("woff2"==n||/(\.woff2)($|\?)/i.test(a))c="application/font-woff2";else if("eot"==n||/(\.eot)($|\?)/i.test(a))c="application/vnd.ms-fontobject";else if("sfnt"==n||/(\.sfnt)($|\?)/i.test(a))c="application/font-sfnt";var b=a;/^https?:\/\//.test(b)&&!this.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(c){d[a]=c;e--;g()}),mxUtils.bind(this,
-function(a){e--;g()}),!0,null,"data:"+c+";charset=utf-8;base64,")}})(c(b[f].substring(0,l)),n)}}else a()};Editor.prototype.convertMath=function(a,c,b,e){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(c),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this,function(){e()}))}),0)):e()};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||!this.graph.mathEnabled&&this.useCanvasForExport};Editor.prototype.exportToCanvas=
-function(a,c,b,e,d,g,f,l,n,u,q,z,k,x){g=null!=g?g:!0;z=null!=z?z:this.graph;k=null!=k?k:0;var t=n?null:z.background;t==mxConstants.NONE&&(t=null);null==t&&(t=e);null==t&&0==n&&(t=this.graph.defaultPageBackgroundColor);this.convertImages(z.getSvg(t,null,null,x,null,null!=f?f:!0,null,null,null,u),mxUtils.bind(this,function(b){var e=new Image;e.onload=mxUtils.bind(this,function(){try{var f=document.createElement("canvas"),n=parseInt(b.getAttribute("width")),u=parseInt(b.getAttribute("height"));l=null!=
-l?l:1;null!=c&&(l=g?Math.min(1,Math.min(3*c/(4*u),c/n)):c/n);n=Math.ceil(l*n)+2*k;u=Math.ceil(l*u)+2*k;f.setAttribute("width",n);f.setAttribute("height",u);var q=f.getContext("2d");null!=t&&(q.beginPath(),q.rect(0,0,n,u),q.fillStyle=t,q.fill());q.scale(l,l);mxClient.IS_SF?window.setTimeout(function(){q.drawImage(e,k/l,k/l);a(f)},0):(q.drawImage(e,k/l,k/l),a(f))}catch(R){null!=d&&d(R)}});e.onerror=function(a){null!=d&&d(a)};try{u&&this.graph.addSvgShadow(b);var f=mxUtils.bind(this,function(){if(null!=
-this.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.resolvedFontCss;b.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(z,b,!0,mxUtils.bind(this,function(){e.src=this.createSvgDataUri(mxUtils.getXml(b))}))});this.loadFonts(f)}catch(S){null!=d&&d(S)}}),b,q)};Editor.prototype.writeGraphModelToPng=function(a,c,b,e,d){function g(a,c){var b=n;n+=c;return a.substring(b,n)}function f(a){a=g(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<
-8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function l(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var n=0;if(g(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=d&&d();else if(g(a,4),"IHDR"!=g(a,4))null!=d&&d();else{g(a,17);d=a.substring(0,n);do{var t=f(a);if("IDAT"==g(a,4)){d=a.substring(0,n-8);b=b+String.fromCharCode(0)+("zTXt"==c?String.fromCharCode(0):"")+e;e=4294967295;
-e=EditorUi.prototype.updateCRC(e,c,0,4);e=EditorUi.prototype.updateCRC(e,b,0,b.length);d+=l(b.length)+c+b+l(e^4294967295);d+=a.substring(n-8,a.length);break}d+=a.substring(n-8,n-4+t);g(a,t);g(a,4)}while(t);return"data:image/png;base64,"+(window.btoa?btoa(d):Base64.encode(d,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://desk.draw.io/support/solutions/articles/16000091426";var k=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,c){k.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);
-mxSettings.save()};var m=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){m.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,c){var b=null;null!=a.editor.graph.getModel().getParent(c)?b=c.getId():null!=a.currentPage&&(b=a.currentPage.getId());return b});if(null!=window.StyleFormatPanel){var p=Format.prototype.init;Format.prototype.init=function(){p.apply(this,arguments);
-this.editorUi.editor.addListener("fileLoaded",this.update)};var v=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?v.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var y=DiagramFormatPanel.prototype.addView;
-DiagramFormatPanel.prototype.addView=function(a){a=y.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var c=this.editorUi,b=c.editor.graph,e=this.createOption(mxResources.get("shadow"),function(){return b.shadowVisible},function(a){var e=new ChangePageSetup(c);e.ignoreColor=!0;e.ignoreImage=!0;e.shadowVisible=a;b.model.execute(e)},{install:function(a){this.listener=function(){a(b.shadowVisible)};c.addListener("shadowVisibleChanged",this.listener)},
-destroy:function(){c.removeListener(this.listener)}});Editor.shadowOptionEnabled||(e.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(e,60));a.appendChild(e)}return a};var B=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=B.apply(this,arguments);var c=this.editorUi,b=c.editor.graph;if(b.isEnabled()){var e=c.getCurrentFile();if(null!=e&&e.isAutosaveOptional()){var d=this.createOption(mxResources.get("autosave"),function(){return c.editor.autosave},
-function(a){c.editor.setAutosave(a);c.editor.autosave&&e.isModified()&&e.fileChanged()},{install:function(a){this.listener=function(){a(c.editor.autosave)};c.editor.addListener("autosaveChanged",this.listener)},destroy:function(){c.editor.removeListener(this.listener)}});a.appendChild(d)}}if(this.isMathOptionVisible()&&b.isEnabled()&&"undefined"!==typeof MathJax){d=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return b.mathEnabled},function(a){c.actions.get("mathematicalTypesetting").funct()},
-{install:function(a){this.listener=function(){a(b.mathEnabled)};c.addListener("mathEnabledChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}});d.style.paddingTop="5px";a.appendChild(d);var g=c.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875");g.style.position="relative";g.style.marginLeft="6px";g.style.top="2px";d.appendChild(g)}return a};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=[{name:"size",dispName:"Size",type:"float",defVal:.3,min:0,max:1}];mxCellRenderer.defaultShapes.internalStorage.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",
-type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"dx",dispName:"Left Line",type:"float",min:0,defVal:20},{name:"dy",dispName:"Top Line",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.cube.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0},{name:"darkOpacity2",dispName:"Dark Opacity 2",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.step.prototype.customProperties=
-[{name:"size",dispName:"Notch Size",type:"float",min:0,defVal:20},{name:"fixedSize",dispName:"Fixed Size",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.trapezoid.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.tape.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.4}];mxCellRenderer.defaultShapes.note.prototype.customProperties=
-[{name:"size",dispName:"Fold Size",type:"float",min:0,defVal:30},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.card.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Cutoff Size",type:"float",min:0,defVal:30}];mxCellRenderer.defaultShapes.callout.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
-{name:"base",dispName:"Callout Width",type:"float",min:0,defVal:20},{name:"size",dispName:"Callout Length",type:"float",min:0,defVal:30},{name:"position",dispName:"Callout Position",type:"float",min:0,max:1,defVal:.5},{name:"position2",dispName:"Callout Tip Position",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.folder.prototype.customProperties=[{name:"tabWidth",dispName:"Tab Width",type:"float"},{name:"tabHeight",dispName:"Tab Height",type:"float"},{name:"tabPosition",dispName:"Tap Position",
-type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"right",dispName:"Right"}]}];mxCellRenderer.defaultShapes.swimlane.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"startSize",dispName:"Header Size",type:"float"},{name:"horizontal",dispName:"Horizontal",type:"bool",defVal:!0},{name:"separatorColor",dispName:"Separator Color",type:"color",defVal:null}];mxCellRenderer.defaultShapes.doubleEllipse.prototype.customProperties=[{name:"margin",dispName:"Indent",
-type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.ext.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"double",dispName:"Double",type:"bool",defVal:!1},{name:"margin",dispName:"Indent",type:"float",min:0,defVal:0}];mxCellRenderer.defaultShapes.curlyBracket.prototype.customProperties=[{name:"rounded",dispName:"Rounded",type:"bool",defVal:!0},{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.image.prototype.customProperties=
-[{name:"imageAspect",dispName:"Fixed Image Aspect",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.label.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",type:"bool",defVal:!0},{name:"imageAlign",dispName:"Image Align",type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"center",dispName:"Center"},{val:"right",dispName:"Right"}],defVal:"left"},{name:"imageVerticalAlign",dispName:"Image Vertical Align",type:"enum",enumList:[{val:"top",dispName:"Top"},{val:"middle",
-dispName:"Middle"},{val:"bottom",dispName:"Bottom"}],defVal:"middle"},{name:"imageWidth",dispName:"Image Width",type:"float",min:0,defVal:24},{name:"imageHeight",dispName:"Image Height",type:"float",min:0,defVal:24},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:12},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.dataStorage.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.1}];mxCellRenderer.defaultShapes.manualInput.prototype.customProperties=
-[{name:"size",dispName:"Size",type:"float",min:0,defVal:30},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.loopLimit.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.offPageConnector.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:38},{name:"arcSize",dispName:"Arc Size",type:"float",
-min:0,defVal:20}];mxCellRenderer.defaultShapes.display.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.singleArrow.prototype.customProperties=[{name:"arrowWidth",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.3},{name:"arrowSize",dispName:"Arrowhead Length",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.doubleArrow.prototype.customProperties=[{name:"arrowWidth",dispName:"Arrow Width",type:"float",
-min:0,max:1,defVal:.3},{name:"arrowSize",dispName:"Arrowhead Length",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.cross.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.corner.prototype.customProperties=[{name:"dx",dispName:"Width1",type:"float",min:0,defVal:20},{name:"dy",dispName:"Width2",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.tee.prototype.customProperties=[{name:"dx",dispName:"Width1",
-type:"float",min:0,defVal:20},{name:"dy",dispName:"Width2",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.umlLifeline.prototype.customProperties=[{name:"participant",dispName:"Participant",type:"enum",defVal:"none",enumList:[{val:"none",dispName:"Default"},{val:"umlActor",dispName:"Actor"},{val:"umlBoundary",dispName:"Boundary"},{val:"umlEntity",dispName:"Entity"},{val:"umlControl",dispName:"Control"}]},{name:"size",dispName:"Height",type:"float",defVal:40,min:0}];mxCellRenderer.defaultShapes.umlFrame.prototype.customProperties=
-[{name:"width",dispName:"Title Width",type:"float",defVal:60,min:0},{name:"height",dispName:"Title Height",type:"float",defVal:30,min:0}];StyleFormatPanel.prototype.defaultColorSchemes=[[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",font:"#333333"},{fill:"#dae8fc",stroke:"#6c8ebf"},{fill:"#d5e8d4",stroke:"#82b366"},{fill:"#ffe6cc",stroke:"#d79b00"},{fill:"#fff2cc",stroke:"#d6b656"},{fill:"#f8cecc",stroke:"#b85450"},{fill:"#e1d5e7",stroke:"#9673a6"}],[{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:"#aa00ff",stroke:"#7700CC",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:"#ffffff"},{fill:"#f0a30a",stroke:"#BD7000",font:"#ffffff"},{fill:"#e3c800",
-stroke:"#B09500",font:"#ffffff"},{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(a,c,b){if(null!=c){var e=function(a){if(null!=a)if(b)for(var e=0;e<a.length;e++)c[a[e].name]=a[e];else for(var d in c){for(var g=!1,e=0;e<a.length;e++)if(a[e].name==d&&a[e].type==c[d].type){g=!0;break}g||delete c[d]}},d=this.editorUi.editor.graph.view.getState(a);null!=d&&
-null!=d.shape&&(d.shape.commonCustomPropAdded||(d.shape.commonCustomPropAdded=!0,d.shape.customProperties=d.shape.customProperties||[],d.cell.vertex?Array.prototype.push.apply(d.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(d.shape.customProperties,Editor.commonEdgeProperties)),e(d.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{e(JSON.parse(a))}catch(Q){}}};var c=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=
-this.format.createSelectionState();"image"==a.style.shape||a.containsLabel||this.container.appendChild(this.addStyles(this.createPanel()));c.apply(this,arguments);if(Editor.enableCustomProperties){for(var b={},e=a.vertices,d=a.edges,g=0;g<e.length;g++)this.findCommonProperties(e[g],b,0==g);for(g=0;g<d.length;g++)this.findCommonProperties(d[g],b,0==e.length&&0==g);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),
-b,a))}};var e=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var c=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(a){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="100px";c.style.marginRight="2px";a.appendChild(c);c=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,
-function(a){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="100px";a.appendChild(c);mxUtils.br(a);return e.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,c,b){function e(a,c,b,e){q.getModel().beginUpdate();try{var d=[],g=[];if(null!=b.index){for(var f=[],l=b.parentRow.nextSibling;l&&
-l.getAttribute("data-pName")==a;)f.push(l.getAttribute("data-pValue")),l=l.nextSibling;b.index<f.length?null!=e?f.splice(e,1):f[b.index]=c:f.push(c);null!=b.size&&f.length>b.size&&(f=f.slice(0,b.size));c=f.join(",");null!=b.countProperty&&(q.setCellStyles(b.countProperty,f.length,q.getSelectionCells()),d.push(b.countProperty),g.push(f.length))}q.setCellStyles(a,c,q.getSelectionCells());d.push(a);g.push(c);if(null!=b.dependentProps)for(a=0;a<b.dependentProps.length;a++){var n=b.dependentPropsDefVal[a],
-u=b.dependentPropsVals[a];if(u.length>c)u=u.slice(0,c);else for(var z=u.length;z<c;z++)u.push(n);u=u.join(",");q.setCellStyles(b.dependentProps[a],u,q.getSelectionCells());d.push(b.dependentProps[a]);g.push(u)}if("function"==typeof b.onChange)b.onChange(q,c);t.editorUi.fireEvent(new mxEventObject("styleChanged","keys",d,"values",g,"cells",q.getSelectionCells()))}finally{q.getModel().endUpdate()}}function d(c,b,e){var d=mxUtils.getOffset(a,!0),g=mxUtils.getOffset(c,!0);b.style.position="absolute";
-b.style.left=g.x-d.x+"px";b.style.top=g.y-d.y+"px";b.style.width=c.offsetWidth+"px";b.style.height=c.offsetHeight-(e?4:0)+"px";b.style.zIndex=5}function g(a,c,b){var d=document.createElement("div");d.style.width="32px";d.style.height="4px";d.style.margin="2px";d.style.border="1px solid black";d.style.background=c&&"none"!=c?c:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(t,function(g){this.editorUi.pickColor(c,function(c){d.style.background="none"==c?"url('"+Dialog.prototype.noColorImage+
-"')":c;e(a,c,b)});mxEvent.consume(g)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(d);return btn}function f(a,c,b,d,g,f,l){null!=c&&(c=c.split(","),z.push({name:a,values:c,type:b,defVal:d,countProperty:g,parentRow:f,isDeletable:!0,flipBkg:l}));btn=mxUtils.button("+",mxUtils.bind(t,function(c){for(var n=f,t=0;null!=n.nextSibling;)if(n.nextSibling.getAttribute("data-pName")==a)n=n.nextSibling,t++;else break;var q={type:b,parentRow:f,index:t,isDeletable:!0,
-defVal:d,countProperty:g},t=u(a,"",q,0==t%2,l);e(a,d,q);n.parentNode.insertBefore(t,n.nextSibling);mxEvent.consume(c)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function l(a,c,b,e,d,g,f){if(0<d){var l=Array(d);c=null!=c?c.split(","):[];for(var n=0;n<d;n++)l[n]=null!=c[n]?c[n]:null!=e?e:"";z.push({name:a,values:l,type:b,defVal:e,parentRow:g,flipBkg:f,size:d})}return document.createElement("div")}function n(a,c,b){var d=document.createElement("input");d.type=
-"checkbox";d.checked="1"==c;mxEvent.addListener(d,"change",function(){e(a,d.checked?"1":"0",b)});return d}function u(c,b,u,q,z){var k=u.dispName,x=u.type,A=document.createElement("tr");A.className="gePropRow"+(z?"Dark":"")+(q?"Alt":"")+" gePropNonHeaderRow";A.setAttribute("data-pName",c);A.setAttribute("data-pValue",b);q=!1;null!=u.index&&(A.setAttribute("data-index",u.index),k=(null!=k?k:"")+"["+u.index+"]",q=!0);var C=document.createElement("td");C.className="gePropRowCell";C.innerHTML=mxUtils.htmlEntities(mxResources.get(k,
-null,k));q&&(C.style.textAlign="right");A.appendChild(C);C=document.createElement("td");C.className="gePropRowCell";if("color"==x)C.appendChild(g(c,b,u));else if("bool"==x||"boolean"==x)C.appendChild(n(c,b,u));else if("enum"==x){var D=u.enumList;for(z=0;z<D.length;z++)if(k=D[z],k.val==b){C.innerHTML=mxUtils.htmlEntities(mxResources.get(k.dispName,null,k.dispName));break}mxEvent.addListener(C,"click",mxUtils.bind(t,function(){var g=document.createElement("select");d(C,g);for(var f=0;f<D.length;f++){var l=
-D[f],n=document.createElement("option");n.value=mxUtils.htmlEntities(l.val);n.innerHTML=mxUtils.htmlEntities(mxResources.get(l.dispName,null,l.dispName));g.appendChild(n)}g.value=b;a.appendChild(g);mxEvent.addListener(g,"change",function(){var a=mxUtils.htmlEntities(g.value);e(c,a,u)});g.focus();mxEvent.addListener(g,"blur",function(){a.removeChild(g)})}))}else"dynamicArr"==x?C.appendChild(f(c,b,u.subType,u.subDefVal,u.countProperty,A,z)):"staticArr"==x?C.appendChild(l(c,b,u.subType,u.subDefVal,u.size,
-A,z)):(C.innerHTML=b,mxEvent.addListener(C,"click",mxUtils.bind(t,function(){function g(){var a=f.value,a=0==a.length&&"string"!=x?0:a;u.allowAuto&&("auto"==a.trim().toLowerCase()?(a="auto",x="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=u.min&&a<u.min?a=u.min:null!=u.max&&a>u.max&&(a=u.max);a=mxUtils.htmlEntities(("int"==x?parseInt(a):a)+"");e(c,a,u)}var f=document.createElement("input");d(C,f,!0);f.value=b;f.className="gePropEditor";"int"!=x&&"float"!=x||u.allowAuto||(f.type="number",f.step=
-"int"==x?"1":"any",null!=u.min&&(f.min=parseFloat(u.min)),null!=u.max&&(f.max=parseFloat(u.max)));a.appendChild(f);mxEvent.addListener(f,"keypress",function(a){13==a.keyCode&&g()});f.focus();mxEvent.addListener(f,"blur",function(){g()})})));u.isDeletable&&(z=mxUtils.button("-",mxUtils.bind(t,function(a){e(c,"",u,u.index);mxEvent.consume(a)})),z.style.height="16px",z.style.width="25px",z.style["float"]="right",z.className="geColorBtn",C.appendChild(z));A.appendChild(C);return A}var t=this,q=this.editorUi.editor.graph,
-z=[];a.style.position="relative";a.style.padding="0";var k=document.createElement("table");k.style.whiteSpace="nowrap";k.style.width="100%";var x=document.createElement("tr");x.className="gePropHeader";var A=document.createElement("th");A.className="gePropHeaderCell";var C=document.createElement("img");C.src=Sidebar.prototype.expandedImage;A.appendChild(C);mxUtils.write(A,mxResources.get("property"));x.style.cursor="pointer";var m=function(){var c=k.querySelectorAll(".gePropNonHeaderRow"),b;if(t.editorUi.propertiesCollapsed){C.src=
-Sidebar.prototype.collapsedImage;b="none";for(var e=a.childNodes.length-1;0<=e;e--)try{var d=a.childNodes[e],g=d.nodeName.toUpperCase();"INPUT"!=g&&"SELECT"!=g||a.removeChild(d)}catch(J){}}else C.src=Sidebar.prototype.expandedImage,b="";for(e=0;e<c.length;e++)c[e].style.display=b};mxEvent.addListener(x,"click",function(){t.editorUi.propertiesCollapsed=!t.editorUi.propertiesCollapsed;m()});x.appendChild(A);A=document.createElement("th");A.className="gePropHeaderCell";A.innerHTML=mxResources.get("value");
-x.appendChild(A);k.appendChild(x);var F=!1,p=!1,E;for(E in c)if(x=c[E],"function"!=typeof x.isVisible||x.isVisible(b,this)){var v=null!=b.style[E]?mxUtils.htmlEntities(b.style[E]+""):x.defVal;if("separator"==x.type)p=!p;else{if("staticArr"==x.type)x.size=parseInt(b.style[x.sizeProperty]||c[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var K=x.dependentProps,y=[],B=[],A=0;A<K.length;A++){var I=b.style[K[A]];B.push(c[K[A]].subDefVal);y.push(null!=I?I.split(","):[])}x.dependentPropsDefVal=
-B;x.dependentPropsVals=y}k.appendChild(u(E,v,x,F,p));F=!F}}for(A=0;A<z.length;A++)for(x=z[A],c=x.parentRow,b=0;b<x.values.length;b++)E=u(x.name,x.values[b],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:b,defVal:x.defVal,countProperty:x.countProperty,size:x.size},0==b%2,x.flipBkg),c.parentNode.insertBefore(E,c.nextSibling),c=E;a.appendChild(k);m();return a};StyleFormatPanel.prototype.addStyles=function(a){function c(a){function c(a){var c=mxUtils.button("",function(c){e.getModel().beginUpdate();
-try{var b=e.getSelectionCells();for(c=0;c<b.length;c++){for(var d=e.getModel().getStyle(b[c]),f=0;f<g.length;f++)d=mxUtils.removeStylename(d,g[f]);var l=e.getModel().isVertex(b[c])?e.defaultVertexStyle:e.defaultEdgeStyle;null!=a?(d=mxUtils.setStyle(d,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(l,mxConstants.STYLE_GRADIENTCOLOR,null)),d=""==a.fill?mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(l,mxConstants.STYLE_FILLCOLOR,
-null)),d=""==a.stroke?mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(l,mxConstants.STYLE_STROKECOLOR,null)),e.getModel().isVertex(b[c])&&(d=mxUtils.setStyle(d,mxConstants.STYLE_FONTCOLOR,a.font||mxUtils.getValue(l,mxConstants.STYLE_FONTCOLOR,null)))):(d=mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(l,mxConstants.STYLE_FILLCOLOR,"#ffffff")),d=mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(l,
-mxConstants.STYLE_STROKECOLOR,"#000000")),d=mxUtils.setStyle(d,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(l,mxConstants.STYLE_GRADIENTCOLOR,null)),e.getModel().isVertex(b[c])&&(d=mxUtils.setStyle(d,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(l,mxConstants.STYLE_FONTCOLOR,null))));e.getModel().setStyle(b[c],d)}}finally{e.getModel().endUpdate()}});c.className="geStyleButton";c.style.width="36px";c.style.height="30px";c.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&
-(mxClient.IS_QUIRKS||10>document.documentMode)?c.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":c.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE?c.style.background="url('"+Dialog.prototype.noColorImage+"')":c.style.backgroundColor=""==a.fill?mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"):a.fill||mxUtils.getValue(e.defaultVertexStyle,
-mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"),c.style.border=a.stroke==mxConstants.NONE?"1px solid transparent":""==a.stroke?"1px solid "+mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"):"1px solid "+(a.stroke||mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"));else{var b=mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),f=mxUtils.getValue(e.defaultVertexStyle,
-mxConstants.STYLE_STROKECOLOR,"#000000");c.style.backgroundColor=b;c.style.border="1px solid "+f}d.appendChild(c)}d.innerHTML="";for(var b=0;b<a.length;b++)0<b&&0==mxUtils.mod(b,4)&&mxUtils.br(d),c(a[b])}function b(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var e=this.editorUi.editor.graph,d=document.createElement("div");d.style.whiteSpace="nowrap";d.style.paddingLeft="24px";d.style.paddingRight="20px";
-a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(d);var g="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(" ");null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var f=document.createElement("div");f.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;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(f,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length);c(this.defaultColorSchemes[this.editorUi.currentScheme])}));var l=document.createElement("div");l.style.cssText="position:absolute;left:202px;top:8px;bottom:8px;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&&(a.appendChild(f),a.appendChild(l));mxEvent.addListener(l,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length);c(this.defaultColorSchemes[this.editorUi.currentScheme])}));b(f);b(l);c(this.defaultColorSchemes[this.editorUi.currentScheme]);return a};StyleFormatPanel.prototype.addEditOps=function(a){var c=this.format.getSelectionState(),b=null;1==this.editorUi.editor.graph.getSelectionCount()&&
+function(a,b,e,d){void 0!==b?c.push(b.replace(/\\'/g,"'")):void 0!==e?c.push(e.replace(/\\"/g,'"')):void 0!==d&&c.push(d);return""});/,\s*$/.test(a)&&c.push("");return c};Editor.prototype.isCorsEnabledForUrl=function(a){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)return!0;null!=urlParams.cors&&null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(a)||"https://raw.githubusercontent.com/"===a.substring(0,34)||
+"https://cdn.rawgit.com/"===a.substring(0,23)||"https://rawgit.com/"===a.substring(0,19)||/^https?:\/\/[^\/]*\.blob.core.windows.net\//.test(a)||/^https?:\/\/[^\/]*\.iconfinder.com\//.test(a)||/^https?:\/\/[^\/]*\.draw\.io\/proxy/.test(a)||/^https?:\/\/[^\/]*\.github\.io\//.test(a)};Editor.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var c=a.convert,b=this;a.convert=function(e){if(null!=e){var d="http://"==e.substring(0,7)||"https://"==e.substring(0,8);d&&
+!navigator.onLine?e=EditorUi.prototype.svgBrokenImage.src:!d||e.substring(0,a.baseUrl.length)==a.baseUrl||EditorUi.prototype.crossOriginImages&&b.isCorsEnabledForUrl(e)?"chrome-extension://"==e.substring(0,19)||mxClient.IS_CHROMEAPP||(e=c.apply(this,arguments)):e=PROXY_URL+"?url="+encodeURIComponent(e)}return e};return a};Editor.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};Editor.prototype.convertImageToDataUri=function(a,c){if(/(\.svg)$/i.test(a))mxUtils.get(a,
+mxUtils.bind(this,function(a){c(this.createSvgDataUri(a.getText()))}),function(){c(EditorUi.prototype.svgBrokenImage.src)});else{var b=new Image;EditorUi.prototype.crossOriginImages&&(b.crossOrigin="anonymous");b.onload=function(){var a=document.createElement("canvas"),e=a.getContext("2d");a.height=b.height;a.width=b.width;e.drawImage(b,0,0);try{c(a.toDataURL())}catch(Q){c(EditorUi.prototype.svgBrokenImage.src)}};b.onerror=function(){c(EditorUi.prototype.svgBrokenImage.src)};b.src=a}};Editor.prototype.convertImages=
+function(a,c,b,e){null==e&&(e=this.createImageUrlConverter());var d=0,k=b||{};b=mxUtils.bind(this,function(b,g){for(var f=a.getElementsByTagName(b),n=0;n<f.length;n++)mxUtils.bind(this,function(b){var f=e.convert(b.getAttribute(g));if(null!=f&&"data:"!=f.substring(0,5)){var n=k[f];null==n?(d++,this.convertImageToDataUri(f,function(e){null!=e&&(k[f]=e,b.setAttribute(g,e));d--;0==d&&c(a)})):b.setAttribute(g,n)}else null!=f&&b.setAttribute(g,f)})(f[n])});b("image","xlink:href");b("img","src");0==d&&
+c(a)};Editor.prototype.base64Encode=function(a){for(var c="",b=0,e=a.length,d,k,g;b<e;){d=a.charCodeAt(b++)&255;if(b==e){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<<4);c+="==";break}k=a.charCodeAt(b++);if(b==e){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<<
+4|(k&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2);c+="=";break}g=a.charCodeAt(b++);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<<4|(k&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2|(g&192)>>6);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g&63)}return c};
+Editor.prototype.loadUrl=function(a,c,b,e,d,k){try{var g=e||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);d=null!=d?d:!0;var f=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=c){var e=a.getText();if(g){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var e=Array(a.length),
+d=0;d<a.length;d++)e[d]=String.fromCharCode(a[d]);e=e.join("")}k=null!=k?k:"data:image/png;base64,";e=k+this.base64Encode(e)}c(e)}}else null!=b&&b({code:App.ERROR_UNKNOWN},a)}),function(){null!=b&&b({code:App.ERROR_UNKNOWN})},g,this.timeout,function(){d&&null!=b&&b({code:App.ERROR_TIMEOUT,retry:f})})});f()}catch(O){null!=b&&b(O)}};Editor.prototype.loadFonts=function(a){if(null!=this.fontCss&&null==this.resolvedFontCss){var c=function(a){return a.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$",
+"g"),"")},b=this.fontCss.split("url("),e=0,d={},k=mxUtils.bind(this,function(){if(0==e){for(var k=[b[0]],g=1;g<b.length;g++){var f=b[g].indexOf(")");k.push('url("');k.push(d[c(b[g].substring(0,f))]);k.push('"'+b[g].substring(f))}this.resolvedFontCss=k.join("");a()}});if(0<b.length)for(var g=1;g<b.length;g++){var f=b[g].indexOf(")"),n=null,u=b[g].indexOf("format(",f);0<u&&(n=c(b[g].substring(u+7,b[g].indexOf(")",u))));mxUtils.bind(this,function(a){if(null==d[a]){d[a]=a;e++;var c="application/x-font-ttf";
+if("svg"==n||/(\.svg)($|\?)/i.test(a))c="image/svg+xml";else if("otf"==n||"embedded-opentype"==n||/(\.otf)($|\?)/i.test(a))c="application/x-font-opentype";else if("woff"==n||/(\.woff)($|\?)/i.test(a))c="application/font-woff";else if("woff2"==n||/(\.woff2)($|\?)/i.test(a))c="application/font-woff2";else if("eot"==n||/(\.eot)($|\?)/i.test(a))c="application/vnd.ms-fontobject";else if("sfnt"==n||/(\.sfnt)($|\?)/i.test(a))c="application/font-sfnt";var b=a;/^https?:\/\//.test(b)&&!this.isCorsEnabledForUrl(b)&&
+(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(c){d[a]=c;e--;k()}),mxUtils.bind(this,function(a){e--;k()}),!0,null,"data:"+c+";charset=utf-8;base64,")}})(c(b[g].substring(0,f)),n)}}else a()};Editor.prototype.convertMath=function(a,c,b,e){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(c),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this,function(){e()}))}),0)):e()};Editor.prototype.isExportToCanvas=
+function(){return mxClient.IS_CHROMEAPP||!this.graph.mathEnabled&&this.useCanvasForExport};Editor.prototype.exportToCanvas=function(a,c,b,e,d,k,g,f,n,t,q,z,l,x){k=null!=k?k:!0;z=null!=z?z:this.graph;l=null!=l?l:0;var u=n?null:z.background;u==mxConstants.NONE&&(u=null);null==u&&(u=e);null==u&&0==n&&(u=this.graph.defaultPageBackgroundColor);this.convertImages(z.getSvg(u,null,null,x,null,null!=g?g:!0,null,null,null,t),mxUtils.bind(this,function(b){var e=new Image;e.onload=mxUtils.bind(this,function(){try{var g=
+document.createElement("canvas"),n=parseInt(b.getAttribute("width")),t=parseInt(b.getAttribute("height"));f=null!=f?f:1;null!=c&&(f=k?Math.min(1,Math.min(3*c/(4*t),c/n)):c/n);n=Math.ceil(f*n)+2*l;t=Math.ceil(f*t)+2*l;g.setAttribute("width",n);g.setAttribute("height",t);var q=g.getContext("2d");null!=u&&(q.beginPath(),q.rect(0,0,n,t),q.fillStyle=u,q.fill());q.scale(f,f);mxClient.IS_SF?window.setTimeout(function(){q.drawImage(e,l/f,l/f);a(g)},0):(q.drawImage(e,l/f,l/f),a(g))}catch(R){null!=d&&d(R)}});
+e.onerror=function(a){null!=d&&d(a)};try{t&&this.graph.addSvgShadow(b);var g=mxUtils.bind(this,function(){if(null!=this.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.resolvedFontCss;b.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(z,b,!0,mxUtils.bind(this,function(){e.src=this.createSvgDataUri(mxUtils.getXml(b))}))});this.loadFonts(g)}catch(S){null!=d&&d(S)}}),b,q)};Editor.prototype.writeGraphModelToPng=function(a,c,b,e,
+d){function k(a,c){var b=n;n+=c;return a.substring(b,n)}function g(a){a=k(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function f(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var n=0;if(k(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=d&&d();else if(k(a,4),"IHDR"!=k(a,4))null!=d&&d();else{k(a,17);d=a.substring(0,n);do{var u=g(a);
+if("IDAT"==k(a,4)){d=a.substring(0,n-8);b=b+String.fromCharCode(0)+("zTXt"==c?String.fromCharCode(0):"")+e;e=4294967295;e=EditorUi.prototype.updateCRC(e,c,0,4);e=EditorUi.prototype.updateCRC(e,b,0,b.length);d+=f(b.length)+c+b+f(e^4294967295);d+=a.substring(n-8,a.length);break}d+=a.substring(n-8,n-4+u);k(a,u);k(a,4)}while(u);return"data:image/png;base64,"+(window.btoa?btoa(d):Base64.encode(d,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://desk.draw.io/support/solutions/articles/16000091426";
+var l=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,c){l.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var m=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){m.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,c){var b=null;null!=a.editor.graph.getModel().getParent(c)?b=c.getId():null!=a.currentPage&&
+(b=a.currentPage.getId());return b});if(null!=window.StyleFormatPanel){var p=Format.prototype.init;Format.prototype.init=function(){p.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var v=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?v.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();
+return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var y=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(a){a=y.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var c=this.editorUi,b=c.editor.graph,e=this.createOption(mxResources.get("shadow"),function(){return b.shadowVisible},function(a){var e=new ChangePageSetup(c);e.ignoreColor=!0;e.ignoreImage=
+!0;e.shadowVisible=a;b.model.execute(e)},{install:function(a){this.listener=function(){a(b.shadowVisible)};c.addListener("shadowVisibleChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}});Editor.shadowOptionEnabled||(e.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(e,60));a.appendChild(e)}return a};var B=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=B.apply(this,arguments);var c=this.editorUi,
+b=c.editor.graph;if(b.isEnabled()){var e=c.getCurrentFile();if(null!=e&&e.isAutosaveOptional()){var d=this.createOption(mxResources.get("autosave"),function(){return c.editor.autosave},function(a){c.editor.setAutosave(a);c.editor.autosave&&e.isModified()&&e.fileChanged()},{install:function(a){this.listener=function(){a(c.editor.autosave)};c.editor.addListener("autosaveChanged",this.listener)},destroy:function(){c.editor.removeListener(this.listener)}});a.appendChild(d)}}if(this.isMathOptionVisible()&&
+b.isEnabled()&&"undefined"!==typeof MathJax){d=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return b.mathEnabled},function(a){c.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(b.mathEnabled)};c.addListener("mathEnabledChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}});d.style.paddingTop="5px";a.appendChild(d);var k=c.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875");
+k.style.position="relative";k.style.marginLeft="6px";k.style.top="2px";d.appendChild(k)}return a};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=
+[{name:"size",dispName:"Size",type:"float",defVal:.3,min:0,max:1}];mxCellRenderer.defaultShapes.internalStorage.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"dx",dispName:"Left Line",type:"float",min:0,defVal:20},{name:"dy",dispName:"Top Line",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.cube.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"darkOpacity",dispName:"Dark Opacity",
+type:"float",min:-1,max:1,defVal:0},{name:"darkOpacity2",dispName:"Dark Opacity 2",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.step.prototype.customProperties=[{name:"size",dispName:"Notch Size",type:"float",min:0,defVal:20},{name:"fixedSize",dispName:"Fixed Size",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.trapezoid.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.tape.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.4}];mxCellRenderer.defaultShapes.note.prototype.customProperties=[{name:"size",dispName:"Fold Size",type:"float",min:0,defVal:30},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.card.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
+{name:"size",dispName:"Cutoff Size",type:"float",min:0,defVal:30}];mxCellRenderer.defaultShapes.callout.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"base",dispName:"Callout Width",type:"float",min:0,defVal:20},{name:"size",dispName:"Callout Length",type:"float",min:0,defVal:30},{name:"position",dispName:"Callout Position",type:"float",min:0,max:1,defVal:.5},{name:"position2",dispName:"Callout Tip Position",type:"float",
+min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.folder.prototype.customProperties=[{name:"tabWidth",dispName:"Tab Width",type:"float"},{name:"tabHeight",dispName:"Tab Height",type:"float"},{name:"tabPosition",dispName:"Tap Position",type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"right",dispName:"Right"}]}];mxCellRenderer.defaultShapes.swimlane.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"startSize",dispName:"Header Size",type:"float"},
+{name:"horizontal",dispName:"Horizontal",type:"bool",defVal:!0},{name:"separatorColor",dispName:"Separator Color",type:"color",defVal:null}];mxCellRenderer.defaultShapes.doubleEllipse.prototype.customProperties=[{name:"margin",dispName:"Indent",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.ext.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"double",dispName:"Double",type:"bool",defVal:!1},{name:"margin",dispName:"Indent",type:"float",
+min:0,defVal:0}];mxCellRenderer.defaultShapes.curlyBracket.prototype.customProperties=[{name:"rounded",dispName:"Rounded",type:"bool",defVal:!0},{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.image.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.label.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",type:"bool",defVal:!0},{name:"imageAlign",
+dispName:"Image Align",type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"center",dispName:"Center"},{val:"right",dispName:"Right"}],defVal:"left"},{name:"imageVerticalAlign",dispName:"Image Vertical Align",type:"enum",enumList:[{val:"top",dispName:"Top"},{val:"middle",dispName:"Middle"},{val:"bottom",dispName:"Bottom"}],defVal:"middle"},{name:"imageWidth",dispName:"Image Width",type:"float",min:0,defVal:24},{name:"imageHeight",dispName:"Image Height",type:"float",min:0,defVal:24},{name:"arcSize",
+dispName:"Arc Size",type:"float",min:0,defVal:12},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.dataStorage.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.1}];mxCellRenderer.defaultShapes.manualInput.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:30},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.loopLimit.prototype.customProperties=
+[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.offPageConnector.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:38},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.display.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.singleArrow.prototype.customProperties=
+[{name:"arrowWidth",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.3},{name:"arrowSize",dispName:"Arrowhead Length",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.doubleArrow.prototype.customProperties=[{name:"arrowWidth",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.3},{name:"arrowSize",dispName:"Arrowhead Length",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.cross.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,
+max:1,defVal:.2}];mxCellRenderer.defaultShapes.corner.prototype.customProperties=[{name:"dx",dispName:"Width1",type:"float",min:0,defVal:20},{name:"dy",dispName:"Width2",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.tee.prototype.customProperties=[{name:"dx",dispName:"Width1",type:"float",min:0,defVal:20},{name:"dy",dispName:"Width2",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.umlLifeline.prototype.customProperties=[{name:"participant",dispName:"Participant",type:"enum",
+defVal:"none",enumList:[{val:"none",dispName:"Default"},{val:"umlActor",dispName:"Actor"},{val:"umlBoundary",dispName:"Boundary"},{val:"umlEntity",dispName:"Entity"},{val:"umlControl",dispName:"Control"}]},{name:"size",dispName:"Height",type:"float",defVal:40,min:0}];mxCellRenderer.defaultShapes.umlFrame.prototype.customProperties=[{name:"width",dispName:"Title Width",type:"float",defVal:60,min:0},{name:"height",dispName:"Title Height",type:"float",defVal:30,min:0}];StyleFormatPanel.prototype.defaultColorSchemes=
+[[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",font:"#333333"},{fill:"#dae8fc",stroke:"#6c8ebf"},{fill:"#d5e8d4",stroke:"#82b366"},{fill:"#ffe6cc",stroke:"#d79b00"},{fill:"#fff2cc",stroke:"#d6b656"},{fill:"#f8cecc",stroke:"#b85450"},{fill:"#e1d5e7",stroke:"#9673a6"}],[{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:"#aa00ff",stroke:"#7700CC",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:"#ffffff"},{fill:"#f0a30a",stroke:"#BD7000",font:"#ffffff"},{fill:"#e3c800",stroke:"#B09500",font:"#ffffff"},{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(a,c,b){if(null!=c){var e=function(a){if(null!=a)if(b)for(var e=0;e<a.length;e++)c[a[e].name]=a[e];else for(var d in c){for(var k=!1,e=0;e<a.length;e++)if(a[e].name==d&&a[e].type==c[d].type){k=!0;break}k||delete c[d]}},d=this.editorUi.editor.graph.view.getState(a);null!=d&&null!=d.shape&&(d.shape.commonCustomPropAdded||(d.shape.commonCustomPropAdded=!0,d.shape.customProperties=d.shape.customProperties||[],d.cell.vertex?Array.prototype.push.apply(d.shape.customProperties,
+Editor.commonVertexProperties):Array.prototype.push.apply(d.shape.customProperties,Editor.commonEdgeProperties)),e(d.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{e(JSON.parse(a))}catch(Q){}}};var c=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"==a.style.shape||a.containsLabel||this.container.appendChild(this.addStyles(this.createPanel()));c.apply(this,arguments);if(Editor.enableCustomProperties){for(var b=
+{},e=a.vertices,d=a.edges,k=0;k<e.length;k++)this.findCommonProperties(e[k],b,0==k);for(k=0;k<d.length;k++)this.findCommonProperties(d[k],b,0==e.length&&0==k);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var e=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var c=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(a){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="100px";c.style.marginRight="2px";a.appendChild(c);c=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){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="100px";a.appendChild(c);
+mxUtils.br(a);return e.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,c,b){function e(a,c,b,e){q.getModel().beginUpdate();try{var d=[],k=[];if(null!=b.index){for(var g=[],f=b.parentRow.nextSibling;f&&f.getAttribute("data-pName")==a;)g.push(f.getAttribute("data-pValue")),f=f.nextSibling;b.index<g.length?null!=e?g.splice(e,1):g[b.index]=c:g.push(c);null!=b.size&&g.length>b.size&&(g=g.slice(0,b.size));c=g.join(",");null!=b.countProperty&&
+(q.setCellStyles(b.countProperty,g.length,q.getSelectionCells()),d.push(b.countProperty),k.push(g.length))}q.setCellStyles(a,c,q.getSelectionCells());d.push(a);k.push(c);if(null!=b.dependentProps)for(a=0;a<b.dependentProps.length;a++){var n=b.dependentPropsDefVal[a],t=b.dependentPropsVals[a];if(t.length>c)t=t.slice(0,c);else for(var z=t.length;z<c;z++)t.push(n);t=t.join(",");q.setCellStyles(b.dependentProps[a],t,q.getSelectionCells());d.push(b.dependentProps[a]);k.push(t)}if("function"==typeof b.onChange)b.onChange(q,
+c);u.editorUi.fireEvent(new mxEventObject("styleChanged","keys",d,"values",k,"cells",q.getSelectionCells()))}finally{q.getModel().endUpdate()}}function d(c,b,e){var d=mxUtils.getOffset(a,!0),k=mxUtils.getOffset(c,!0);b.style.position="absolute";b.style.left=k.x-d.x+"px";b.style.top=k.y-d.y+"px";b.style.width=c.offsetWidth+"px";b.style.height=c.offsetHeight-(e?4:0)+"px";b.style.zIndex=5}function k(a,c,b){var d=document.createElement("div");d.style.width="32px";d.style.height="4px";d.style.margin="2px";
+d.style.border="1px solid black";d.style.background=c&&"none"!=c?c:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(u,function(k){this.editorUi.pickColor(c,function(c){d.style.background="none"==c?"url('"+Dialog.prototype.noColorImage+"')":c;e(a,c,b)});mxEvent.consume(k)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(d);return btn}function g(a,c,b,d,k,g,f){null!=c&&(c=c.split(","),z.push({name:a,values:c,type:b,defVal:d,countProperty:k,
+parentRow:g,isDeletable:!0,flipBkg:f}));btn=mxUtils.button("+",mxUtils.bind(u,function(c){for(var n=g,u=0;null!=n.nextSibling;)if(n.nextSibling.getAttribute("data-pName")==a)n=n.nextSibling,u++;else break;var q={type:b,parentRow:g,index:u,isDeletable:!0,defVal:d,countProperty:k},u=t(a,"",q,0==u%2,f);e(a,d,q);n.parentNode.insertBefore(u,n.nextSibling);mxEvent.consume(c)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function f(a,c,b,e,d,k,g){if(0<d){var f=Array(d);
+c=null!=c?c.split(","):[];for(var n=0;n<d;n++)f[n]=null!=c[n]?c[n]:null!=e?e:"";z.push({name:a,values:f,type:b,defVal:e,parentRow:k,flipBkg:g,size:d})}return document.createElement("div")}function n(a,c,b){var d=document.createElement("input");d.type="checkbox";d.checked="1"==c;mxEvent.addListener(d,"change",function(){e(a,d.checked?"1":"0",b)});return d}function t(c,b,t,q,z){var l=t.dispName,x=t.type,A=document.createElement("tr");A.className="gePropRow"+(z?"Dark":"")+(q?"Alt":"")+" gePropNonHeaderRow";
+A.setAttribute("data-pName",c);A.setAttribute("data-pValue",b);q=!1;null!=t.index&&(A.setAttribute("data-index",t.index),l=(null!=l?l:"")+"["+t.index+"]",q=!0);var C=document.createElement("td");C.className="gePropRowCell";C.innerHTML=mxUtils.htmlEntities(mxResources.get(l,null,l));q&&(C.style.textAlign="right");A.appendChild(C);C=document.createElement("td");C.className="gePropRowCell";if("color"==x)C.appendChild(k(c,b,t));else if("bool"==x||"boolean"==x)C.appendChild(n(c,b,t));else if("enum"==x){var D=
+t.enumList;for(z=0;z<D.length;z++)if(l=D[z],l.val==b){C.innerHTML=mxUtils.htmlEntities(mxResources.get(l.dispName,null,l.dispName));break}mxEvent.addListener(C,"click",mxUtils.bind(u,function(){var k=document.createElement("select");d(C,k);for(var g=0;g<D.length;g++){var f=D[g],n=document.createElement("option");n.value=mxUtils.htmlEntities(f.val);n.innerHTML=mxUtils.htmlEntities(mxResources.get(f.dispName,null,f.dispName));k.appendChild(n)}k.value=b;a.appendChild(k);mxEvent.addListener(k,"change",
+function(){var a=mxUtils.htmlEntities(k.value);e(c,a,t)});k.focus();mxEvent.addListener(k,"blur",function(){a.removeChild(k)})}))}else"dynamicArr"==x?C.appendChild(g(c,b,t.subType,t.subDefVal,t.countProperty,A,z)):"staticArr"==x?C.appendChild(f(c,b,t.subType,t.subDefVal,t.size,A,z)):(C.innerHTML=b,mxEvent.addListener(C,"click",mxUtils.bind(u,function(){function k(){var a=g.value,a=0==a.length&&"string"!=x?0:a;t.allowAuto&&("auto"==a.trim().toLowerCase()?(a="auto",x="string"):(a=parseFloat(a),a=isNaN(a)?
+0:a));null!=t.min&&a<t.min?a=t.min:null!=t.max&&a>t.max&&(a=t.max);a=mxUtils.htmlEntities(("int"==x?parseInt(a):a)+"");e(c,a,t)}var g=document.createElement("input");d(C,g,!0);g.value=b;g.className="gePropEditor";"int"!=x&&"float"!=x||t.allowAuto||(g.type="number",g.step="int"==x?"1":"any",null!=t.min&&(g.min=parseFloat(t.min)),null!=t.max&&(g.max=parseFloat(t.max)));a.appendChild(g);mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&k()});g.focus();mxEvent.addListener(g,"blur",function(){k()})})));
+t.isDeletable&&(z=mxUtils.button("-",mxUtils.bind(u,function(a){e(c,"",t,t.index);mxEvent.consume(a)})),z.style.height="16px",z.style.width="25px",z.style["float"]="right",z.className="geColorBtn",C.appendChild(z));A.appendChild(C);return A}var u=this,q=this.editorUi.editor.graph,z=[];a.style.position="relative";a.style.padding="0";var l=document.createElement("table");l.style.whiteSpace="nowrap";l.style.width="100%";var x=document.createElement("tr");x.className="gePropHeader";var A=document.createElement("th");
+A.className="gePropHeaderCell";var C=document.createElement("img");C.src=Sidebar.prototype.expandedImage;A.appendChild(C);mxUtils.write(A,mxResources.get("property"));x.style.cursor="pointer";var m=function(){var c=l.querySelectorAll(".gePropNonHeaderRow"),b;if(u.editorUi.propertiesCollapsed){C.src=Sidebar.prototype.collapsedImage;b="none";for(var e=a.childNodes.length-1;0<=e;e--)try{var d=a.childNodes[e],k=d.nodeName.toUpperCase();"INPUT"!=k&&"SELECT"!=k||a.removeChild(d)}catch(J){}}else C.src=Sidebar.prototype.expandedImage,
+b="";for(e=0;e<c.length;e++)c[e].style.display=b};mxEvent.addListener(x,"click",function(){u.editorUi.propertiesCollapsed=!u.editorUi.propertiesCollapsed;m()});x.appendChild(A);A=document.createElement("th");A.className="gePropHeaderCell";A.innerHTML=mxResources.get("value");x.appendChild(A);l.appendChild(x);var E=!1,F=!1,p;for(p in c)if(x=c[p],"function"!=typeof x.isVisible||x.isVisible(b,this)){var v=null!=b.style[p]?mxUtils.htmlEntities(b.style[p]+""):x.defVal;if("separator"==x.type)F=!F;else{if("staticArr"==
+x.type)x.size=parseInt(b.style[x.sizeProperty]||c[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var K=x.dependentProps,y=[],B=[],A=0;A<K.length;A++){var I=b.style[K[A]];B.push(c[K[A]].subDefVal);y.push(null!=I?I.split(","):[])}x.dependentPropsDefVal=B;x.dependentPropsVals=y}l.appendChild(t(p,v,x,E,F));E=!E}}for(A=0;A<z.length;A++)for(x=z[A],c=x.parentRow,b=0;b<x.values.length;b++)p=t(x.name,x.values[b],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:b,defVal:x.defVal,
+countProperty:x.countProperty,size:x.size},0==b%2,x.flipBkg),c.parentNode.insertBefore(p,c.nextSibling),c=p;a.appendChild(l);m();return a};StyleFormatPanel.prototype.addStyles=function(a){function c(a){function c(a){var c=mxUtils.button("",function(c){e.getModel().beginUpdate();try{var b=e.getSelectionCells();for(c=0;c<b.length;c++){for(var d=e.getModel().getStyle(b[c]),g=0;g<k.length;g++)d=mxUtils.removeStylename(d,k[g]);var f=e.getModel().isVertex(b[c])?e.defaultVertexStyle:e.defaultEdgeStyle;null!=
+a?(d=mxUtils.setStyle(d,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(f,mxConstants.STYLE_GRADIENTCOLOR,null)),d=""==a.fill?mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(f,mxConstants.STYLE_FILLCOLOR,null)),d=""==a.stroke?mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(f,mxConstants.STYLE_STROKECOLOR,null)),e.getModel().isVertex(b[c])&&
+(d=mxUtils.setStyle(d,mxConstants.STYLE_FONTCOLOR,a.font||mxUtils.getValue(f,mxConstants.STYLE_FONTCOLOR,null)))):(d=mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(f,mxConstants.STYLE_FILLCOLOR,"#ffffff")),d=mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(f,mxConstants.STYLE_STROKECOLOR,"#000000")),d=mxUtils.setStyle(d,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(f,mxConstants.STYLE_GRADIENTCOLOR,null)),e.getModel().isVertex(b[c])&&(d=mxUtils.setStyle(d,mxConstants.STYLE_FONTCOLOR,
+mxUtils.getValue(f,mxConstants.STYLE_FONTCOLOR,null))));e.getModel().setStyle(b[c],d)}}finally{e.getModel().endUpdate()}});c.className="geStyleButton";c.style.width="36px";c.style.height="30px";c.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?c.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":c.style.backgroundImage="linear-gradient("+a.fill+
+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE?c.style.background="url('"+Dialog.prototype.noColorImage+"')":c.style.backgroundColor=""==a.fill?mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"):a.fill||mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"),c.style.border=a.stroke==mxConstants.NONE?"1px solid transparent":""==a.stroke?"1px solid "+mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,
+"dark"!=uiTheme?"#2a2a2a":"#ffffff"):"1px solid "+(a.stroke||mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"));else{var b=mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),g=mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");c.style.backgroundColor=b;c.style.border="1px solid "+g}d.appendChild(c)}d.innerHTML="";for(var b=0;b<a.length;b++)0<b&&0==mxUtils.mod(b,4)&&mxUtils.br(d),c(a[b])}function b(a){mxEvent.addListener(a,
+"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var e=this.editorUi.editor.graph,d=document.createElement("div");d.style.whiteSpace="nowrap";d.style.paddingLeft="24px";d.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(d);var k="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(" ");
+null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var g=document.createElement("div");g.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;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(g,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length);c(this.defaultColorSchemes[this.editorUi.currentScheme])}));var f=document.createElement("div");f.style.cssText="position:absolute;left:202px;top:8px;bottom:8px;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&&(a.appendChild(g),a.appendChild(f));mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length);c(this.defaultColorSchemes[this.editorUi.currentScheme])}));b(g);b(f);c(this.defaultColorSchemes[this.editorUi.currentScheme]);return a};StyleFormatPanel.prototype.addEditOps=function(a){var c=this.format.getSelectionState(),b=null;1==this.editorUi.editor.graph.getSelectionCount()&&
 (b=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),b.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),b.style.width="202px",b.style.marginBottom="2px",a.appendChild(b));var e=this.editorUi.editor.graph,d=e.view.getState(e.getSelectionCell());1==e.getSelectionCount()&&null!=d&&null!=d.shape&&null!=d.shape.stencil?(c=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,
 function(a){this.editorUi.actions.get("editShape").funct()})),c.setAttribute("title",mxResources.get("editShape")),c.style.marginBottom="2px",null==b?c.style.width="202px":(b.style.width="100px",c.style.width="100px",c.style.marginLeft="2px"),a.appendChild(c)):c.image&&(c=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(a){this.editorUi.actions.get("image").funct()})),c.setAttribute("title",mxResources.get("editImage")),c.style.marginBottom="2px",null==b?c.style.width="202px":
 (b.style.width="100px",c.style.width="100px",c.style.marginLeft="2px"),a.appendChild(c));return a}}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;var g=Graph.prototype.init;Graph.prototype.init=function(){function a(a){c=a;try{if(mxClient.IS_QUIRKS||7==document.documentMode||8==document.documentMode)c=document.createEventObject(a),c.type=a.type,c.canBubble=a.canBubble,c.cancelable=a.cancelable,c.view=a.view,c.detail=a.detail,c.screenX=a.screenX,c.screenY=a.screenY,c.clientX=a.clientX,c.clientY=a.clientY,c.ctrlKey=a.ctrlKey,c.altKey=a.altKey,c.shiftKey=a.shiftKey,c.metaKey=a.metaKey,c.button=
-a.button,c.relatedTarget=a.relatedTarget}catch(Q){}}g.apply(this,arguments);window.mxFreehand&&(this.freehand=new mxFreehand(this));var c=null;mxEvent.addListener(this.container,"mouseenter",a);mxEvent.addListener(this.container,"mousemove",a);mxEvent.addListener(this.container,"mouseleave",function(a){c=null});this.isMouseInsertPoint=function(){return null!=c};var b=this.getInsertPoint;this.getInsertPoint=function(){return null!=c?this.getPointForEvent(c):b.apply(this,arguments)};var e=this.layoutManager.getLayout;
+"3";Graph.prototype.edgeMode="move"!=urlParams.edge;var k=Graph.prototype.init;Graph.prototype.init=function(){function a(a){c=a;try{if(mxClient.IS_QUIRKS||7==document.documentMode||8==document.documentMode)c=document.createEventObject(a),c.type=a.type,c.canBubble=a.canBubble,c.cancelable=a.cancelable,c.view=a.view,c.detail=a.detail,c.screenX=a.screenX,c.screenY=a.screenY,c.clientX=a.clientX,c.clientY=a.clientY,c.ctrlKey=a.ctrlKey,c.altKey=a.altKey,c.shiftKey=a.shiftKey,c.metaKey=a.metaKey,c.button=
+a.button,c.relatedTarget=a.relatedTarget}catch(Q){}}k.apply(this,arguments);window.mxFreehand&&(this.freehand=new mxFreehand(this));var c=null;mxEvent.addListener(this.container,"mouseenter",a);mxEvent.addListener(this.container,"mousemove",a);mxEvent.addListener(this.container,"mouseleave",function(a){c=null});this.isMouseInsertPoint=function(){return null!=c};var b=this.getInsertPoint;this.getInsertPoint=function(){return null!=c?this.getPointForEvent(c):b.apply(this,arguments)};var e=this.layoutManager.getLayout;
 this.layoutManager.getLayout=function(a){var c=this.graph.getCellStyle(a);if(null!=c){if("rack"==c.childLayout){var b=new mxStackLayout(this.graph,!1);b.gridSize=null!=c.rackUnitSize?parseFloat(c.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:20;b.fill=!0;b.marginLeft=c.marginLeft||0;b.marginRight=c.marginRight||0;b.marginTop=c.marginTop||0;b.marginBottom=c.marginBottom||0;b.allowGaps=c.allowGaps||0;b.resizeParent=!1;return b}if("undefined"!==typeof mxTableLayout&&"tableLayout"==
 c.childLayout)return b=new mxTableLayout(this.graph),b.rows=c.tableRows||2,b.columns=c.tableColumns||2,b.colPercentages=c.colPercentages,b.rowPercentages=c.rowPercentages,b.equalColumns="1"==mxUtils.getValue(c,"equalColumns",b.colPercentages?"0":"1"),b.equalRows="1"==mxUtils.getValue(c,"equalRows",b.rowPercentages?"0":"1"),b.resizeParent="1"==mxUtils.getValue(c,"resizeParent","1"),b.border=c.tableBorder||b.border,b.marginLeft=c.marginLeft||0,b.marginRight=c.marginRight||0,b.marginTop=c.marginTop||
 0,b.marginBottom=c.marginBottom||0,b.autoAddCol="1"==mxUtils.getValue(c,"autoAddCol","0"),b.autoAddRow="1"==mxUtils.getValue(c,"autoAddRow",b.autoAddCol?"0":"1"),b.colWidths=c.colWidths||"100",b.rowHeights=c.rowHeights||"50",b}return e.apply(this,arguments)};this.updateGlobalUrlVariables()};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};var a=JSON.parse(decodeURIComponent(urlParams.vars));
-if(null!=a)for(var c in a)this.globalVars[c]=a[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 u=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var c=u.apply(this,arguments);null==c&&null!=this.globalVars&&(c=this.globalVars[a]);return c};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var a=
-this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(a.ownerDocument)).decode(a)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var n=Graph.prototype.getSvg;Graph.prototype.getSvg=function(){var a=null;null!=this.themes&&"darkTheme"==this.defaultThemeName&&(a=this.stylesheet,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var c=n.apply(this,arguments);null!=a&&(this.stylesheet=a,this.refresh());return c};var l=Graph.prototype.isCssTransformsSupported;
-Graph.prototype.isCssTransformsSupported=function(){return l.apply(this,arguments)&&!mxClient.IS_SF};var z=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){z.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=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||
+if(null!=a)for(var c in a)this.globalVars[c]=a[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 t=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var c=t.apply(this,arguments);null==c&&null!=this.globalVars&&(c=this.globalVars[a]);return c};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var a=
+this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(a.ownerDocument)).decode(a)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var n=Graph.prototype.getSvg;Graph.prototype.getSvg=function(){var a=null;null!=this.themes&&"darkTheme"==this.defaultThemeName&&(a=this.stylesheet,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var c=n.apply(this,arguments);null!=a&&(this.stylesheet=a,this.refresh());return c};var g=Graph.prototype.isCssTransformsSupported;
+Graph.prototype.isCssTransformsSupported=function(){return g.apply(this,arguments)&&!mxClient.IS_SF};var z=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){z.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=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;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};
 var A=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){A.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var c=0;c<a.actions.length;c++){var b=a.actions[c];if(null!=b.open)if(this.isCustomLink(b.open)){if(!this.customLinkClicked(b.open))return}else this.openLink(b.open)}this.model.beginUpdate();try{for(c=0;c<a.actions.length;c++)b=
 a.actions[c],null!=b.toggle&&this.toggleCells(this.getCellsForAction(b.toggle,!0)),null!=b.show&&this.setCellsVisible(this.getCellsForAction(b.show,!0),!0),null!=b.hide&&this.setCellsVisible(this.getCellsForAction(b.hide,!0),!1)}finally{this.model.endUpdate()}for(c=0;c<a.actions.length;c++){var b=a.actions[c],e=[];null!=b.select&&this.isEnabled()&&(e=this.getCellsForAction(b.select),this.setSelectionCells(e));null!=b.highlight&&(e=this.getCellsForAction(b.highlight),this.highlightCells(e,b.highlight.color,
-b.highlight.duration,b.highlight.opacity));null!=b.scroll&&(e=this.getCellsForAction(b.scroll));0<e.length&&this.scrollCellToVisible(e[0])}}};Graph.prototype.updateCustomLinksForCell=function(a,c){var b=this.getLinkForCell(c);null!=b&&"data:action/json,"==b.substring(0,17)&&this.setLinkForCell(c,this.updateCustomLink(a,b));if(this.isHtmlLabel(c)){var e=document.createElement("div");e.innerHTML=this.getLabel(c);for(var d=e.getElementsByTagName("a"),g=!1,f=0;f<d.length;f++)b=d[f].getAttribute("href"),
-null!=b&&"data:action/json,"==b.substring(0,17)&&(d[f].setAttribute("href",this.updateCustomLink(a,b)),g=!0);g&&this.labelChanged(c,e.innerHTML)}};Graph.prototype.updateCustomLink=function(a,c){if("data:action/json,"==c.substring(0,17))try{var b=JSON.parse(c.substring(17));null!=b.actions&&(this.updateCustomLinkActions(a,b.actions),c="data:action/json,"+JSON.stringify(b))}catch(Y){}return c};Graph.prototype.updateCustomLinkActions=function(a,c){for(var b=0;b<c.length;b++){var e=c[b];this.updateCustomLinkAction(a,
+b.highlight.duration,b.highlight.opacity));null!=b.scroll&&(e=this.getCellsForAction(b.scroll));0<e.length&&this.scrollCellToVisible(e[0])}}};Graph.prototype.updateCustomLinksForCell=function(a,c){var b=this.getLinkForCell(c);null!=b&&"data:action/json,"==b.substring(0,17)&&this.setLinkForCell(c,this.updateCustomLink(a,b));if(this.isHtmlLabel(c)){var e=document.createElement("div");e.innerHTML=this.getLabel(c);for(var d=e.getElementsByTagName("a"),k=!1,g=0;g<d.length;g++)b=d[g].getAttribute("href"),
+null!=b&&"data:action/json,"==b.substring(0,17)&&(d[g].setAttribute("href",this.updateCustomLink(a,b)),k=!0);k&&this.labelChanged(c,e.innerHTML)}};Graph.prototype.updateCustomLink=function(a,c){if("data:action/json,"==c.substring(0,17))try{var b=JSON.parse(c.substring(17));null!=b.actions&&(this.updateCustomLinkActions(a,b.actions),c="data:action/json,"+JSON.stringify(b))}catch(Y){}return c};Graph.prototype.updateCustomLinkActions=function(a,c){for(var b=0;b<c.length;b++){var e=c[b];this.updateCustomLinkAction(a,
 e.toggle);this.updateCustomLinkAction(a,e.show);this.updateCustomLinkAction(a,e.hide);this.updateCustomLinkAction(a,e.select);this.updateCustomLinkAction(a,e.highlight);this.updateCustomLinkAction(a,e.scroll)}};Graph.prototype.updateCustomLinkAction=function(a,c){if(null!=c&&null!=c.cells){for(var b=[],e=0;e<c.cells.length;e++)if("*"==c.cells[e])b.push(c.cells[e]);else{var d=a[c.cells[e]];null!=d?""!=d&&b.push(d):b.push(c.cells[e])}c.cells=b}};Graph.prototype.getCellsForAction=function(a,c){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags,
-null,null,c))};Graph.prototype.getCellsById=function(a){var c=[];if(null!=a)for(var b=0;b<a.length;b++)if("*"==a[b])var e=this.getDefaultParent(),c=c.concat(this.model.filterDescendants(function(a){return a!=e},e));else{var d=this.model.getCell(a[b]);null!=d&&c.push(d)}return c};Graph.prototype.getCellsForTags=function(a,c,b,e){var d=[];if(null!=a){c=null!=c?c:this.model.getDescendants(this.model.getRoot());b=null!=b?b:"tags";for(var g=0,f={},l=0;l<a.length;l++)0<a[l].length&&(f[a[l].toLowerCase()]=
-!0,g++);for(l=0;l<c.length;l++)if(e&&this.model.getParent(c[l])==this.model.root||this.model.isVertex(c[l])||this.model.isEdge(c[l])){var n=null!=c[l].value&&"object"==typeof c[l].value?mxUtils.trim(c[l].value.getAttribute(b)||""):"",u=!1;if(0<n.length){if(n=n.toLowerCase().split(" "),n.length>=a.length){for(var q=u=0;q<n.length&&u<g;q++)null!=f[n[q]]&&u++;u=u==g}}else u=0==a.length;u&&d.push(c[l])}}return d};Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],
+null,null,c))};Graph.prototype.getCellsById=function(a){var c=[];if(null!=a)for(var b=0;b<a.length;b++)if("*"==a[b])var e=this.getDefaultParent(),c=c.concat(this.model.filterDescendants(function(a){return a!=e},e));else{var d=this.model.getCell(a[b]);null!=d&&c.push(d)}return c};Graph.prototype.getCellsForTags=function(a,c,b,e){var d=[];if(null!=a){c=null!=c?c:this.model.getDescendants(this.model.getRoot());b=null!=b?b:"tags";for(var k=0,g={},f=0;f<a.length;f++)0<a[f].length&&(g[a[f].toLowerCase()]=
+!0,k++);for(f=0;f<c.length;f++)if(e&&this.model.getParent(c[f])==this.model.root||this.model.isVertex(c[f])||this.model.isEdge(c[f])){var n=null!=c[f].value&&"object"==typeof c[f].value?mxUtils.trim(c[f].value.getAttribute(b)||""):"",t=!1;if(0<n.length){if(n=n.toLowerCase().split(" "),n.length>=a.length){for(var q=t=0;q<n.length&&t<k;q++)null!=g[n[q]]&&t++;t=t==k}}else t=0==a.length;t&&d.push(c[f])}}return d};Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],
 !this.model.isVisible(a[c]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,c){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],c)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(a,c,b,e){for(var d=0;d<a.length;d++)this.highlightCell(a[d],c,b,e)};Graph.prototype.highlightCell=function(a,c,b,e){c=null!=c?c:mxConstants.DEFAULT_VALID_COLOR;b=null!=b?b:1E3;a=this.view.getState(a);if(null!=a){var d=Math.max(5,mxUtils.getValue(a.style,
-mxConstants.STYLE_STROKEWIDTH,1)+4),g=new mxCellHighlight(this,c,d,!1);null!=e&&(g.opacity=e);g.highlight(a);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)},b)}};Graph.prototype.addSvgShadow=function(a,c,b){b=null!=b?b:!1;var e=a.ownerDocument,d=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"filter"):e.createElement("filter");
-d.setAttribute("id",this.shadowId);var g=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):e.createElement("feGaussianBlur");g.setAttribute("in","SourceAlpha");g.setAttribute("stdDeviation",this.svgShadowBlur);g.setAttribute("result","blur");d.appendChild(g);g=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feOffset"):e.createElement("feOffset");g.setAttribute("in","blur");g.setAttribute("dx",this.svgShadowSize);g.setAttribute("dy",this.svgShadowSize);g.setAttribute("result",
-"offsetBlur");d.appendChild(g);g=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feFlood"):e.createElement("feFlood");g.setAttribute("flood-color",this.svgShadowColor);g.setAttribute("flood-opacity",this.svgShadowOpacity);g.setAttribute("result","offsetColor");d.appendChild(g);g=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feComposite"):e.createElement("feComposite");g.setAttribute("in","offsetColor");g.setAttribute("in2","offsetBlur");g.setAttribute("operator","in");
-g.setAttribute("result","offsetBlur");d.appendChild(g);g=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feBlend"):e.createElement("feBlend");g.setAttribute("in","SourceGraphic");g.setAttribute("in2","offsetBlur");d.appendChild(g);g=a.getElementsByTagName("defs");0==g.length?(e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=a.firstChild?a.insertBefore(e,a.firstChild):a.appendChild(e)):e=g[0];e.appendChild(d);b||(c=null!=c?c:a.getElementsByTagName("g")[0],
+mxConstants.STYLE_STROKEWIDTH,1)+4),k=new mxCellHighlight(this,c,d,!1);null!=e&&(k.opacity=e);k.highlight(a);window.setTimeout(function(){null!=k.shape&&(mxUtils.setPrefixedStyle(k.shape.node.style,"transition","all 1200ms ease-in-out"),k.shape.node.style.opacity=0);window.setTimeout(function(){k.destroy()},1200)},b)}};Graph.prototype.addSvgShadow=function(a,c,b){b=null!=b?b:!1;var e=a.ownerDocument,d=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"filter"):e.createElement("filter");
+d.setAttribute("id",this.shadowId);var k=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):e.createElement("feGaussianBlur");k.setAttribute("in","SourceAlpha");k.setAttribute("stdDeviation",this.svgShadowBlur);k.setAttribute("result","blur");d.appendChild(k);k=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feOffset"):e.createElement("feOffset");k.setAttribute("in","blur");k.setAttribute("dx",this.svgShadowSize);k.setAttribute("dy",this.svgShadowSize);k.setAttribute("result",
+"offsetBlur");d.appendChild(k);k=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feFlood"):e.createElement("feFlood");k.setAttribute("flood-color",this.svgShadowColor);k.setAttribute("flood-opacity",this.svgShadowOpacity);k.setAttribute("result","offsetColor");d.appendChild(k);k=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feComposite"):e.createElement("feComposite");k.setAttribute("in","offsetColor");k.setAttribute("in2","offsetBlur");k.setAttribute("operator","in");
+k.setAttribute("result","offsetBlur");d.appendChild(k);k=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feBlend"):e.createElement("feBlend");k.setAttribute("in","SourceGraphic");k.setAttribute("in2","offsetBlur");d.appendChild(k);k=a.getElementsByTagName("defs");0==k.length?(e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=a.firstChild?a.insertBefore(e,a.firstChild):a.appendChild(e)):e=k[0];e.appendChild(d);b||(c=null!=c?c:a.getElementsByTagName("g")[0],
 null!=c&&(c.setAttribute("filter","url(#"+this.shadowId+")"),isNaN(parseInt(a.getAttribute("width")))||(a.setAttribute("width",parseInt(a.getAttribute("width"))+6),a.setAttribute("height",parseInt(a.getAttribute("height"))+6),c=a.getAttribute("viewBox"),null!=c&&0<c.length&&(c=c.split(" "),3<c.length&&(w=parseFloat(c[2])+6,h=parseFloat(c[3])+6,a.setAttribute("viewBox",c[0]+" "+c[1]+" "+w+" "+h))))));return d};Graph.prototype.setShadowVisible=function(a,c){mxClient.IS_SVG&&(c=null!=c?c:!0,(this.shadowVisible=
 a)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),c&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=function(){if(null==this.defaultParent){var a=this.model.getChildCount(this.model.root),c,b=0;do c=this.model.getChildAt(this.model.root,b);while(b++<a&&"1"==mxUtils.getValue(this.getCellStyle(c),"locked","0"));null!=c&&this.setDefaultParent(c)}};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+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js",STENCIL_PATH+
@@ -2935,63 +2936,63 @@ a)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this
 [SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.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.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.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(a){var c=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?c="mxgraph.er":"sysML"==a.substring(0,5)&&(c="mxgraph.sysml"));return c};var q=mxMarker.createMarker;mxMarker.createMarker=function(a,c,b,e,d,g,f,l,n,u){if(null!=b&&null==mxMarker.markers[b]){var z=this.getPackageForType(b);null!=z&&mxStencilRegistry.getStencil(z)}return q.apply(this,arguments)};PrintDialog.prototype.create=
-function(a,c){function b(){t.value=Math.max(1,Math.min(l,Math.max(parseInt(t.value),parseInt(k.value))));k.value=Math.max(1,Math.min(l,Math.min(parseInt(t.value),parseInt(k.value))))}function e(c){function b(c,b,g){var f=c.useCssTransforms,l=c.currentTranslate,n=c.currentScale,u=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 z=c.getGraphBounds(),k=0,x=0,t=ha.get(),
-A=1/c.pageScale,E=F.checked;if(E)var A=parseInt(N.value),p=parseInt(T.value),A=Math.min(t.height*p/(z.height/c.view.scale),t.width*A/(z.width/c.view.scale));else A=parseInt(m.value)/(100*c.pageScale),isNaN(A)&&(e=1/c.pageScale,m.value="100 %");t=mxRectangle.fromRectangle(t);t.width=Math.ceil(t.width*e);t.height=Math.ceil(t.height*e);A*=e;!E&&c.pageVisible?(z=c.getPageLayout(),k-=z.x*t.width,x-=z.y*t.height):E=!0;if(null==b){b=PrintDialog.createPrintPreview(c,A,t,0,k,x,E);b.pageSelector=!1;b.mathEnabled=
-!1;k=a.getCurrentFile();null!=k&&(b.title=k.getTitle());var D=b.writeHead;b.writeHead=function(c){D.apply(this,arguments);null!=a.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(a.editor.fontCss),c.writeln("</style>"))};if("undefined"!==typeof MathJax){var C=b.renderPage;b.renderPage=function(a,c,b,e,d,g){var f=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var l=C.apply(this,arguments);mxClient.NO_FO=f;this.graph.mathEnabled?
-this.mathEnabled=this.mathEnabled||!0:l.className="geDisableMathJax";return l}}k=null;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(k=d.stylesheet,d.stylesheet=d.getDefaultStylesheet(),d.refresh());b.open(null,null,g,!0);null!=k&&(d.stylesheet=k,d.refresh())}else{t=c.background;if(null==t||""==t||t==mxConstants.NONE)t="#ffffff";b.backgroundColor=t;b.autoOrigin=E;b.appendGraph(c,A,k,x,g,!0)}f&&(c.useCssTransforms=f,c.currentTranslate=l,c.currentScale=n,c.view.translate=u,c.view.scale=q);return b}
-var e=parseInt(ia.value)/100;isNaN(e)&&(e=1,ia.value="100 %");var e=.75*e,g=k.value,f=t.value,l=!q.checked,u=null;l&&(l=g==n&&f==n);if(!l&&null!=a.pages&&a.pages.length){var z=0,l=a.pages.length-1;q.checked||(z=parseInt(g)-1,l=parseInt(f)-1);for(var x=z;x<=l;x++){var A=a.pages[x],g=A==a.currentPage?d:null;if(null==g){var g=a.createTemporaryGraph(d.getStylesheet()),f=!0,z=!1,p=null,E=null;null==A.viewState&&null==A.root&&a.updatePageRoot(A);null!=A.viewState&&(f=A.viewState.pageVisible,z=A.viewState.mathEnabled,
-p=A.viewState.background,E=A.viewState.backgroundImage);g.background=p;g.backgroundImage=null!=E?new mxImage(E.src,E.width,E.height):null;g.pageVisible=f;g.mathEnabled=z;var D=g.getGlobalVariable;g.getGlobalVariable=function(c){return"page"==c?A.getName():"pagenumber"==c?x+1:"pagecount"==c?null!=a.pages?a.pages.length:1:D.apply(this,arguments)};document.body.appendChild(g.container);a.updatePageRoot(A);g.model.setRoot(A.root)}u=b(g,u,x!=l);g!=d&&g.container.parentNode.removeChild(g.container)}}else u=
-b(d);null==u?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(u.mathEnabled&&(l=u.wnd.document,l.writeln('<script type="text/x-mathjax-config">'),l.writeln("MathJax.Hub.Config({"),l.writeln("showMathMenu: false,"),l.writeln('messageStyle: "none",'),l.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),l.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),l.writeln('"HTML-CSS": {'),l.writeln("imageFont: null"),l.writeln("},"),l.writeln("TeX: {"),
-l.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),l.writeln("},"),l.writeln("tex2jax: {"),l.writeln('\tignoreClass: "geDisableMathJax"'),l.writeln("},"),l.writeln("asciimath2jax: {"),l.writeln('\tignoreClass: "geDisableMathJax"'),l.writeln("}"),l.writeln("});"),c&&(l.writeln("MathJax.Hub.Queue(function () {"),l.writeln("window.print();"),l.writeln("});")),l.writeln("\x3c/script>"),l.writeln('<script type="text/javascript" src="'+DRAW_MATH_URL+'/MathJax.js">\x3c/script>')),
-u.closeDocument(),!u.mathEnabled&&c&&PrintDialog.printPreview(u))}var d=a.editor.graph,g=document.createElement("div"),f=document.createElement("h3");f.style.width="100%";f.style.textAlign="center";f.style.marginTop="0px";mxUtils.write(f,c||mxResources.get("print"));g.appendChild(f);var l=1,n=1,u=document.createElement("div");u.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");u.appendChild(q);f=document.createElement("span");mxUtils.write(f,mxResources.get("printAllPages"));u.appendChild(f);mxUtils.br(u);var z=q.cloneNode(!0);q.setAttribute("checked","checked");z.setAttribute("value","range");u.appendChild(z);f=document.createElement("span");mxUtils.write(f,mxResources.get("pages")+":");u.appendChild(f);var k=document.createElement("input");k.style.cssText="margin:0 8px 0 8px;";
-k.setAttribute("value","1");k.setAttribute("type","number");k.setAttribute("min","1");k.style.width="50px";u.appendChild(k);f=document.createElement("span");mxUtils.write(f,mxResources.get("to"));u.appendChild(f);var t=k.cloneNode(!0);u.appendChild(t);mxEvent.addListener(k,"focus",function(){z.checked=!0});mxEvent.addListener(t,"focus",function(){z.checked=!0});mxEvent.addListener(k,"change",b);mxEvent.addListener(t,"change",b);if(null!=a.pages&&(l=a.pages.length,null!=a.currentPage))for(f=0;f<a.pages.length;f++)if(a.currentPage==
-a.pages[f]){n=f+1;k.value=n;t.value=n;break}k.setAttribute("max",l);t.setAttribute("max",l);1<l&&g.appendChild(u);var x=document.createElement("div");x.style.marginBottom="10px";var A=document.createElement("input");A.style.marginRight="8px";A.setAttribute("value","adjust");A.setAttribute("type","radio");A.setAttribute("name","printZoom");x.appendChild(A);f=document.createElement("span");mxUtils.write(f,mxResources.get("adjustTo"));x.appendChild(f);var m=document.createElement("input");m.style.cssText=
-"margin:0 8px 0 8px;";m.setAttribute("value","100 %");m.style.width="50px";x.appendChild(m);mxEvent.addListener(m,"focus",function(){A.checked=!0});g.appendChild(x);var u=u.cloneNode(!1),F=A.cloneNode(!0);F.setAttribute("value","fit");A.setAttribute("checked","checked");f=document.createElement("div");f.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";f.appendChild(F);u.appendChild(f);x=document.createElement("table");x.style.display="inline-block";var E=document.createElement("tbody"),
-p=document.createElement("tr"),C=p.cloneNode(!0),v=document.createElement("td"),y=v.cloneNode(!0),B=v.cloneNode(!0),M=v.cloneNode(!0),I=v.cloneNode(!0),ea=v.cloneNode(!0);v.style.textAlign="right";M.style.textAlign="right";mxUtils.write(v,mxResources.get("fitTo"));var N=document.createElement("input");N.style.cssText="margin:0 8px 0 8px;";N.setAttribute("value","1");N.setAttribute("min","1");N.setAttribute("type","number");N.style.width="40px";y.appendChild(N);f=document.createElement("span");mxUtils.write(f,
-mxResources.get("fitToSheetsAcross"));B.appendChild(f);mxUtils.write(M,mxResources.get("fitToBy"));var T=N.cloneNode(!0);I.appendChild(T);mxEvent.addListener(N,"focus",function(){F.checked=!0});mxEvent.addListener(T,"focus",function(){F.checked=!0});f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsDown"));ea.appendChild(f);p.appendChild(v);p.appendChild(y);p.appendChild(B);C.appendChild(M);C.appendChild(I);C.appendChild(ea);E.appendChild(p);E.appendChild(C);x.appendChild(E);
-u.appendChild(x);g.appendChild(u);u=document.createElement("div");f=document.createElement("div");f.style.fontWeight="bold";f.style.marginBottom="12px";mxUtils.write(f,mxResources.get("paperSize"));u.appendChild(f);f=document.createElement("div");f.style.marginBottom="12px";var ha=PageSetupDialog.addPageFormatPanel(f,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);u.appendChild(f);f=document.createElement("span");mxUtils.write(f,mxResources.get("pageScale"));u.appendChild(f);
-var ia=document.createElement("input");ia.style.cssText="margin:0 8px 0 8px;";ia.setAttribute("value","100 %");ia.style.width="60px";u.appendChild(ia);g.appendChild(u);f=document.createElement("div");f.style.cssText="text-align:right;margin:48px 0 0 0;";u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});u.className="geBtn";a.editor.cancelFirst&&f.appendChild(u);a.isOffline()||(x=mxUtils.button(mxResources.get("help"),function(){d.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),
-x.className="geBtn",f.appendChild(x));PrintDialog.previewEnabled&&(x=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();e(!1)}),x.className="geBtn",f.appendChild(x));x=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();e(!0)});x.className="geBtn gePrimaryBtn";f.appendChild(x);a.editor.cancelFirst||f.appendChild(u);g.appendChild(f);this.container=g};var E=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==
-this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),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)):(E.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 x=document.createElement("canvas"),F=new Image;F.onload=function(){try{x.getContext("2d").drawImage(F,0,0);var a=x.toDataURL("image/png");Editor.prototype.useCanvasForExport=
-null!=a&&6<a.length}catch(C){}};F.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(t){}})();
+mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(a){var c=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?c="mxgraph.er":"sysML"==a.substring(0,5)&&(c="mxgraph.sysml"));return c};var q=mxMarker.createMarker;mxMarker.createMarker=function(a,c,b,e,d,k,g,f,n,t){if(null!=b&&null==mxMarker.markers[b]){var z=this.getPackageForType(b);null!=z&&mxStencilRegistry.getStencil(z)}return q.apply(this,arguments)};PrintDialog.prototype.create=
+function(a,c){function b(){x.value=Math.max(1,Math.min(f,Math.max(parseInt(x.value),parseInt(l.value))));l.value=Math.max(1,Math.min(f,Math.min(parseInt(x.value),parseInt(l.value))))}function e(c){function b(c,b,k){var g=c.useCssTransforms,f=c.currentTranslate,n=c.currentScale,t=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 z=c.getGraphBounds(),l=0,u=0,x=ha.get(),
+A=1/c.pageScale,F=E.checked;if(F)var A=parseInt(N.value),p=parseInt(T.value),A=Math.min(x.height*p/(z.height/c.view.scale),x.width*A/(z.width/c.view.scale));else A=parseInt(m.value)/(100*c.pageScale),isNaN(A)&&(e=1/c.pageScale,m.value="100 %");x=mxRectangle.fromRectangle(x);x.width=Math.ceil(x.width*e);x.height=Math.ceil(x.height*e);A*=e;!F&&c.pageVisible?(z=c.getPageLayout(),l-=z.x*x.width,u-=z.y*x.height):F=!0;if(null==b){b=PrintDialog.createPrintPreview(c,A,x,0,l,u,F);b.pageSelector=!1;b.mathEnabled=
+!1;l=a.getCurrentFile();null!=l&&(b.title=l.getTitle());var D=b.writeHead;b.writeHead=function(c){D.apply(this,arguments);null!=a.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(a.editor.fontCss),c.writeln("</style>"))};if("undefined"!==typeof MathJax){var C=b.renderPage;b.renderPage=function(a,c,b,e,d,k){var g=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var f=C.apply(this,arguments);mxClient.NO_FO=g;this.graph.mathEnabled?
+this.mathEnabled=this.mathEnabled||!0:f.className="geDisableMathJax";return f}}l=null;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(l=d.stylesheet,d.stylesheet=d.getDefaultStylesheet(),d.refresh());b.open(null,null,k,!0);null!=l&&(d.stylesheet=l,d.refresh())}else{x=c.background;if(null==x||""==x||x==mxConstants.NONE)x="#ffffff";b.backgroundColor=x;b.autoOrigin=F;b.appendGraph(c,A,l,u,k,!0)}g&&(c.useCssTransforms=g,c.currentTranslate=f,c.currentScale=n,c.view.translate=t,c.view.scale=q);return b}
+var e=parseInt(ia.value)/100;isNaN(e)&&(e=1,ia.value="100 %");var e=.75*e,k=l.value,g=x.value,f=!q.checked,t=null;f&&(f=k==n&&g==n);if(!f&&null!=a.pages&&a.pages.length){var z=0,f=a.pages.length-1;q.checked||(z=parseInt(k)-1,f=parseInt(g)-1);for(var u=z;u<=f;u++){var A=a.pages[u],k=A==a.currentPage?d:null;if(null==k){var k=a.createTemporaryGraph(d.getStylesheet()),g=!0,z=!1,F=null,p=null;null==A.viewState&&null==A.root&&a.updatePageRoot(A);null!=A.viewState&&(g=A.viewState.pageVisible,z=A.viewState.mathEnabled,
+F=A.viewState.background,p=A.viewState.backgroundImage);k.background=F;k.backgroundImage=null!=p?new mxImage(p.src,p.width,p.height):null;k.pageVisible=g;k.mathEnabled=z;var D=k.getGlobalVariable;k.getGlobalVariable=function(c){return"page"==c?A.getName():"pagenumber"==c?u+1:"pagecount"==c?null!=a.pages?a.pages.length:1:D.apply(this,arguments)};document.body.appendChild(k.container);a.updatePageRoot(A);k.model.setRoot(A.root)}t=b(k,t,u!=f);k!=d&&k.container.parentNode.removeChild(k.container)}}else t=
+b(d);null==t?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(t.mathEnabled&&(f=t.wnd.document,f.writeln('<script type="text/x-mathjax-config">'),f.writeln("MathJax.Hub.Config({"),f.writeln("showMathMenu: false,"),f.writeln('messageStyle: "none",'),f.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),f.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),f.writeln('"HTML-CSS": {'),f.writeln("imageFont: null"),f.writeln("},"),f.writeln("TeX: {"),
+f.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),f.writeln("},"),f.writeln("tex2jax: {"),f.writeln('\tignoreClass: "geDisableMathJax"'),f.writeln("},"),f.writeln("asciimath2jax: {"),f.writeln('\tignoreClass: "geDisableMathJax"'),f.writeln("}"),f.writeln("});"),c&&(f.writeln("MathJax.Hub.Queue(function () {"),f.writeln("window.print();"),f.writeln("});")),f.writeln("\x3c/script>"),f.writeln('<script type="text/javascript" src="'+DRAW_MATH_URL+'/MathJax.js">\x3c/script>')),
+t.closeDocument(),!t.mathEnabled&&c&&PrintDialog.printPreview(t))}var d=a.editor.graph,k=document.createElement("div"),g=document.createElement("h3");g.style.width="100%";g.style.textAlign="center";g.style.marginTop="0px";mxUtils.write(g,c||mxResources.get("print"));k.appendChild(g);var f=1,n=1,t=document.createElement("div");t.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");t.appendChild(q);g=document.createElement("span");mxUtils.write(g,mxResources.get("printAllPages"));t.appendChild(g);mxUtils.br(t);var z=q.cloneNode(!0);q.setAttribute("checked","checked");z.setAttribute("value","range");t.appendChild(z);g=document.createElement("span");mxUtils.write(g,mxResources.get("pages")+":");t.appendChild(g);var l=document.createElement("input");l.style.cssText="margin:0 8px 0 8px;";
+l.setAttribute("value","1");l.setAttribute("type","number");l.setAttribute("min","1");l.style.width="50px";t.appendChild(l);g=document.createElement("span");mxUtils.write(g,mxResources.get("to"));t.appendChild(g);var x=l.cloneNode(!0);t.appendChild(x);mxEvent.addListener(l,"focus",function(){z.checked=!0});mxEvent.addListener(x,"focus",function(){z.checked=!0});mxEvent.addListener(l,"change",b);mxEvent.addListener(x,"change",b);if(null!=a.pages&&(f=a.pages.length,null!=a.currentPage))for(g=0;g<a.pages.length;g++)if(a.currentPage==
+a.pages[g]){n=g+1;l.value=n;x.value=n;break}l.setAttribute("max",f);x.setAttribute("max",f);1<f&&k.appendChild(t);var u=document.createElement("div");u.style.marginBottom="10px";var A=document.createElement("input");A.style.marginRight="8px";A.setAttribute("value","adjust");A.setAttribute("type","radio");A.setAttribute("name","printZoom");u.appendChild(A);g=document.createElement("span");mxUtils.write(g,mxResources.get("adjustTo"));u.appendChild(g);var m=document.createElement("input");m.style.cssText=
+"margin:0 8px 0 8px;";m.setAttribute("value","100 %");m.style.width="50px";u.appendChild(m);mxEvent.addListener(m,"focus",function(){A.checked=!0});k.appendChild(u);var t=t.cloneNode(!1),E=A.cloneNode(!0);E.setAttribute("value","fit");A.setAttribute("checked","checked");g=document.createElement("div");g.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";g.appendChild(E);t.appendChild(g);u=document.createElement("table");u.style.display="inline-block";var F=document.createElement("tbody"),
+p=document.createElement("tr"),C=p.cloneNode(!0),v=document.createElement("td"),y=v.cloneNode(!0),B=v.cloneNode(!0),M=v.cloneNode(!0),I=v.cloneNode(!0),ea=v.cloneNode(!0);v.style.textAlign="right";M.style.textAlign="right";mxUtils.write(v,mxResources.get("fitTo"));var N=document.createElement("input");N.style.cssText="margin:0 8px 0 8px;";N.setAttribute("value","1");N.setAttribute("min","1");N.setAttribute("type","number");N.style.width="40px";y.appendChild(N);g=document.createElement("span");mxUtils.write(g,
+mxResources.get("fitToSheetsAcross"));B.appendChild(g);mxUtils.write(M,mxResources.get("fitToBy"));var T=N.cloneNode(!0);I.appendChild(T);mxEvent.addListener(N,"focus",function(){E.checked=!0});mxEvent.addListener(T,"focus",function(){E.checked=!0});g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsDown"));ea.appendChild(g);p.appendChild(v);p.appendChild(y);p.appendChild(B);C.appendChild(M);C.appendChild(I);C.appendChild(ea);F.appendChild(p);F.appendChild(C);u.appendChild(F);
+t.appendChild(u);k.appendChild(t);t=document.createElement("div");g=document.createElement("div");g.style.fontWeight="bold";g.style.marginBottom="12px";mxUtils.write(g,mxResources.get("paperSize"));t.appendChild(g);g=document.createElement("div");g.style.marginBottom="12px";var ha=PageSetupDialog.addPageFormatPanel(g,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);t.appendChild(g);g=document.createElement("span");mxUtils.write(g,mxResources.get("pageScale"));t.appendChild(g);
+var ia=document.createElement("input");ia.style.cssText="margin:0 8px 0 8px;";ia.setAttribute("value","100 %");ia.style.width="60px";t.appendChild(ia);k.appendChild(t);g=document.createElement("div");g.style.cssText="text-align:right;margin:48px 0 0 0;";t=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});t.className="geBtn";a.editor.cancelFirst&&g.appendChild(t);a.isOffline()||(u=mxUtils.button(mxResources.get("help"),function(){d.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),
+u.className="geBtn",g.appendChild(u));PrintDialog.previewEnabled&&(u=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();e(!1)}),u.className="geBtn",g.appendChild(u));u=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();e(!0)});u.className="geBtn gePrimaryBtn";g.appendChild(u);a.editor.cancelFirst||g.appendChild(t);k.appendChild(g);this.container=k};var F=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==
+this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),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)):(F.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 x=document.createElement("canvas"),E=new Image;E.onload=function(){try{x.getContext("2d").drawImage(E,0,0);var a=x.toDataURL("image/png");Editor.prototype.useCanvasForExport=
+null!=a&&6<a.length}catch(C){}};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(u){}})();
 (function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,f,d){d.ui=a.ui;return f};a.afterDecode=function(a,f,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="@DRAWIO-VERSION@";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";
 EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":"https://rt.draw.io/cache";Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.logError=function(a,b,d,f,n){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,
 d,f,n);else if(EditorUi.enableLogging)try{if(a!=EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var c=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",e=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";n=null!=n?n:Error(a);(new Image).src=e+"/log?severity="+c+"&v="+encodeURIComponent(EditorUi.VERSION)+
 "&msg=clientError:"+encodeURIComponent(a)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(d)+(null!=f?":colno:"+encodeURIComponent(f):"")+(null!=n&&null!=n.stack?"&stack="+encodeURIComponent(n.stack):"")}}catch(A){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);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!=
-a?"&data="+encodeURIComponent(JSON.stringify(a)):"")}catch(g){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(g){}};EditorUi.debug=function(){try{if(null!=window.console&&"1"==urlParams.test){for(var a=
-[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]);console.log.apply(console,a)}}catch(g){}};EditorUi.parsePng=function(a,b,d){function c(a,c){var b=g;g+=c;return a.substring(b,g)}function e(a){a=c(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var g=0;if(c(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=d&&d();else if(c(a,4),"IHDR"!=c(a,4))null!=d&&d();else{c(a,17);do{d=e(a);var f=c(a,4);if(null!=b&&
-b(g-8,f,d))break;value=c(a,d);c(a,4);if("IEND"==f)break}while(d)}};EditorUi.removeChildNodes=function(a){for(;null!=a.firstChild;)a.removeChild(a.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=
+a?"&data="+encodeURIComponent(JSON.stringify(a)):"")}catch(k){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(k){}};EditorUi.debug=function(){try{if(null!=window.console&&"1"==urlParams.test){for(var a=
+[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]);console.log.apply(console,a)}}catch(k){}};EditorUi.parsePng=function(a,b,d){function c(a,c){var b=k;k+=c;return a.substring(b,k)}function e(a){a=c(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var k=0;if(c(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=d&&d();else if(c(a,4),"IHDR"!=c(a,4))null!=d&&d();else{c(a,17);do{d=e(a);var f=c(a,4);if(null!=b&&
+b(k-8,f,d))break;value=c(a,d);c(a,4);if("IEND"==f)break}while(d)}};EditorUi.removeChildNodes=function(a){for(;null!=a.firstChild;)a.removeChild(a.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.svgBrokenImage=Graph.createSvgImage(10,10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');
 EditorUi.prototype.crossOriginImages=!mxClient.IS_IE;EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=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;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!a.getContext||!a.getContext("2d"))}catch(n){}try{var b=document.createElement("canvas"),d=new Image;d.onload=function(){try{b.getContext("2d").drawImage(d,0,0);var a=b.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(l){}};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(n){}try{b=
+!0;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!a.getContext||!a.getContext("2d"))}catch(n){}try{var b=document.createElement("canvas"),d=new Image;d.onload=function(){try{b.getContext("2d").drawImage(d,0,0);var a=b.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(g){}};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(n){}try{b=
 document.createElement("canvas");b.width=b.height=1;var f=b.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==f.match("image/jpeg")}catch(n){}})();EditorUi.prototype.openLink=function(a,b,d){return this.editor.graph.openLink(a,b,d)};EditorUi.prototype.showSplash=function(a){};EditorUi.prototype.getLocalData=function(a,b){b(localStorage.getItem(a))};EditorUi.prototype.setLocalData=function(a,b,d){localStorage.setItem(a,b);null!=d&&d()};EditorUi.prototype.removeLocalData=function(a,b){localStorage.removeItem(a);
 b()};EditorUi.prototype.setMathEnabled=function(a){this.editor.graph.mathEnabled=a;this.editor.updateGraphComponents();this.editor.graph.refresh();this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(a){return this.editor.graph.mathEnabled};EditorUi.prototype.isAppCache=function(){return"1"==urlParams.appcache||this.isOfflineApp()};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(a){return this.isOfflineApp()||
-!navigator.onLine||!a&&"1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,d){d=null!=d?d:24;var c=new Spinner({lines:12,length:d,width:Math.round(d/3),radius:Math.round(d/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),e=c.spin;c.spin=function(d,g){var f=!1;this.active||(e.call(this,d),this.active=!0,null!=g&&(f=document.createElement("div"),f.style.position="absolute",f.style.whiteSpace="nowrap",f.style.background="#4B4243",
-f.style.color="white",f.style.fontFamily="Helvetica, Arial",f.style.fontSize="9pt",f.style.padding="6px",f.style.paddingLeft="10px",f.style.paddingRight="10px",f.style.zIndex=2E9,f.style.left=Math.max(0,a)+"px",f.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(f.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(f.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(f.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=g.substring(g.length-3,g.length)&&"!"!=
-g.charAt(g.length-1)&&(g+="..."),f.innerHTML=g,d.appendChild(f),c.status=f,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&&(f.style.left=Math.round(Math.max(0,a-f.offsetWidth/2))+"px",f.style.top=Math.round(Math.max(0,b+70-f.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(d,g)}));this.stop();return a}),f=!0);return f};var g=c.stop;c.stop=function(){g.call(this);this.active=!1;null!=
-c.status&&(c.status.parentNode.removeChild(c.status),c.status=null)};c.pause=function(){return function(){}};return c};EditorUi.prototype.isCompatibleString=function(a){try{var c=mxUtils.parseXml(a),b=this.editor.extractGraphModel(c.documentElement,!0);return null!=b&&0==b.getElementsByTagName("parsererror").length}catch(u){}return!1};EditorUi.prototype.isVisioData=function(a){return 8<a.length&&208==a.charCodeAt(0)&&207==a.charCodeAt(1)&&17==a.charCodeAt(2)&&224==a.charCodeAt(3)&&161==a.charCodeAt(4)&&
+!navigator.onLine||!a&&"1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,d){d=null!=d?d:24;var c=new Spinner({lines:12,length:d,width:Math.round(d/3),radius:Math.round(d/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),e=c.spin;c.spin=function(d,k){var g=!1;this.active||(e.call(this,d),this.active=!0,null!=k&&(g=document.createElement("div"),g.style.position="absolute",g.style.whiteSpace="nowrap",g.style.background="#4B4243",
+g.style.color="white",g.style.fontFamily="Helvetica, Arial",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,a)+"px",g.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(g.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(g.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=k.substring(k.length-3,k.length)&&"!"!=
+k.charAt(k.length-1)&&(k+="..."),g.innerHTML=k,d.appendChild(g),c.status=g,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&&(g.style.left=Math.round(Math.max(0,a-g.offsetWidth/2))+"px",g.style.top=Math.round(Math.max(0,b+70-g.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(d,k)}));this.stop();return a}),g=!0);return g};var k=c.stop;c.stop=function(){k.call(this);this.active=!1;null!=
+c.status&&(c.status.parentNode.removeChild(c.status),c.status=null)};c.pause=function(){return function(){}};return c};EditorUi.prototype.isCompatibleString=function(a){try{var c=mxUtils.parseXml(a),b=this.editor.extractGraphModel(c.documentElement,!0);return null!=b&&0==b.getElementsByTagName("parsererror").length}catch(t){}return!1};EditorUi.prototype.isVisioData=function(a){return 8<a.length&&208==a.charCodeAt(0)&&207==a.charCodeAt(1)&&17==a.charCodeAt(2)&&224==a.charCodeAt(3)&&161==a.charCodeAt(4)&&
 177==a.charCodeAt(5)&&26==a.charCodeAt(6)&&225==a.charCodeAt(7)||80==a.charCodeAt(0)&&75==a.charCodeAt(1)&&3==a.charCodeAt(2)&&4==a.charCodeAt(3)||80==a.charCodeAt(0)&&75==a.charCodeAt(1)&&3==a.charCodeAt(2)&&6==a.charCodeAt(3)};EditorUi.prototype.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)};var a=EditorUi.prototype.extractGraphModelFromHtml;
-EditorUi.prototype.extractGraphModelFromHtml=function(c){var b=a.apply(this,arguments);if(null==b)try{var d=c.indexOf("&lt;mxfile ");if(0<=d){var f=c.lastIndexOf("&lt;/mxfile&gt;");f>d&&(b=c.substring(d,f+15).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var n=mxUtils.parseXml(c),l=this.editor.extractGraphModel(n.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),b=null!=l?mxUtils.getXml(l):""}catch(z){}return b};EditorUi.prototype.validateFileData=
+EditorUi.prototype.extractGraphModelFromHtml=function(c){var b=a.apply(this,arguments);if(null==b)try{var d=c.indexOf("&lt;mxfile ");if(0<=d){var f=c.lastIndexOf("&lt;/mxfile&gt;");f>d&&(b=c.substring(d,f+15).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var n=mxUtils.parseXml(c),g=this.editor.extractGraphModel(n.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),b=null!=g?mxUtils.getXml(g):""}catch(z){}return b};EditorUi.prototype.validateFileData=
 function(a){if(null!=a&&0<a.length){var c=a.indexOf('<meta charset="utf-8">');0<=c&&(a=a.slice(0,c)+'<meta charset="utf-8"/>'+a.slice(c+23-1,a.length));a=Graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var c=null!=a?this.editor.extractGraphModel(a,!0):null;null!=c&&(a=c);if(null!=a){c=this.editor.graph;c.model.beginUpdate();try{var b=null!=this.pages?this.pages.slice():null,d=a.getElementsByTagName("diagram");
-if("0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var f=d.length-1;0<=f;f--){var l=this.updatePageRoot(new DiagramPage(d[f]));null==l.getName()&&l.setName(mxResources.get("pageWithNumber",[f+1]));c.model.execute(new ChangePage(this,l,0==f?l:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),
-this.currentPage.setName(mxResources.get("pageWithNumber",[1])),c.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=b)for(f=0;f<b.length;f++)c.model.execute(new ChangePage(this,b[f],null))}finally{c.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,d,f,n,l,k,A,q,m,x){b=null!=b?b:this.editor.graph;n=null!=n?n:!1;q=null!=q?q:!0;var c,e=null;null==
-d||d.getMode()==App.MODE_DEVICE||d.getMode()==App.MODE_BROWSER?c="_blank":e=c=f;if(null==a)return"";var g=a;if("mxfile"!=g.nodeName.toLowerCase()){if(x){var u=a.ownerDocument.createElement("diagram");u.setAttribute("id",Editor.guid());u.appendChild(a)}else{u=Graph.zapGremlins(mxUtils.getXml(a));g=Graph.compress(u);if(Graph.decompress(g)!=u)return u;u=a.ownerDocument.createElement("diagram");u.setAttribute("id",Editor.guid());mxUtils.setTextContent(u,g)}g=a.ownerDocument.createElement("mxfile");g.appendChild(u)}m?
-(g=g.cloneNode(!0),g.removeAttribute("modified"),g.removeAttribute("host"),g.removeAttribute("agent"),g.removeAttribute("etag"),g.removeAttribute("userAgent"),g.removeAttribute("version"),g.removeAttribute("editor"),g.removeAttribute("type")):(g.removeAttribute("userAgent"),g.removeAttribute("version"),g.removeAttribute("editor"),g.removeAttribute("pages"),g.removeAttribute("type"),mxClient.IS_CHROMEAPP?g.setAttribute("host","Chrome"):EditorUi.isElectronApp?g.setAttribute("host","Electron"):g.setAttribute("host",
-window.location.hostname),g.setAttribute("modified",(new Date).toISOString()),g.setAttribute("agent",navigator.userAgent),g.setAttribute("version",EditorUi.VERSION),g.setAttribute("etag",Editor.guid()),a=null!=d?d.getMode():this.mode,null!=a&&g.setAttribute("type",a),null!=this.pages&&g.setAttribute("pages",this.pages.length));x=x?mxUtils.getPrettyXml(g):mxUtils.getXml(g);if(!l&&!n&&(k||null!=d&&/(\.html)$/i.test(d.getTitle())))x=this.getHtml2(mxUtils.getXml(g),b,null!=d?d.getTitle():null,c,e);else if(l||
+if("0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var f=d.length-1;0<=f;f--){var g=this.updatePageRoot(new DiagramPage(d[f]));null==g.getName()&&g.setName(mxResources.get("pageWithNumber",[f+1]));c.model.execute(new ChangePage(this,g,0==f?g:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),
+this.currentPage.setName(mxResources.get("pageWithNumber",[1])),c.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=b)for(f=0;f<b.length;f++)c.model.execute(new ChangePage(this,b[f],null))}finally{c.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,d,f,n,g,l,A,q,m,x){b=null!=b?b:this.editor.graph;n=null!=n?n:!1;q=null!=q?q:!0;var c,e=null;null==
+d||d.getMode()==App.MODE_DEVICE||d.getMode()==App.MODE_BROWSER?c="_blank":e=c=f;if(null==a)return"";var k=a;if("mxfile"!=k.nodeName.toLowerCase()){if(x){var t=a.ownerDocument.createElement("diagram");t.setAttribute("id",Editor.guid());t.appendChild(a)}else{t=Graph.zapGremlins(mxUtils.getXml(a));k=Graph.compress(t);if(Graph.decompress(k)!=t)return t;t=a.ownerDocument.createElement("diagram");t.setAttribute("id",Editor.guid());mxUtils.setTextContent(t,k)}k=a.ownerDocument.createElement("mxfile");k.appendChild(t)}m?
+(k=k.cloneNode(!0),k.removeAttribute("modified"),k.removeAttribute("host"),k.removeAttribute("agent"),k.removeAttribute("etag"),k.removeAttribute("userAgent"),k.removeAttribute("version"),k.removeAttribute("editor"),k.removeAttribute("type")):(k.removeAttribute("userAgent"),k.removeAttribute("version"),k.removeAttribute("editor"),k.removeAttribute("pages"),k.removeAttribute("type"),mxClient.IS_CHROMEAPP?k.setAttribute("host","Chrome"):EditorUi.isElectronApp?k.setAttribute("host","Electron"):k.setAttribute("host",
+window.location.hostname),k.setAttribute("modified",(new Date).toISOString()),k.setAttribute("agent",navigator.userAgent),k.setAttribute("version",EditorUi.VERSION),k.setAttribute("etag",Editor.guid()),a=null!=d?d.getMode():this.mode,null!=a&&k.setAttribute("type",a),null!=this.pages&&k.setAttribute("pages",this.pages.length));x=x?mxUtils.getPrettyXml(k):mxUtils.getXml(k);if(!g&&!n&&(l||null!=d&&/(\.html)$/i.test(d.getTitle())))x=this.getHtml2(mxUtils.getXml(k),b,null!=d?d.getTitle():null,c,e);else if(g||
 !n&&null!=d&&/(\.svg)$/i.test(d.getTitle()))null==d||d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER||(f=null),x=this.getEmbeddedSvg(x,b,f,null,A,q,e);return x};EditorUi.prototype.getXmlFileData=function(a,b,d){a=null!=a?a:!0;b=null!=b?b:!1;d=null!=d?d:!Editor.compressXml;var c=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(d?(EditorUi.removeChildNodes(this.currentPage.node),this.currentPage.node.appendChild(c)):(c=Graph.compressNode(c),mxUtils.setTextContent(this.currentPage.node,
 c)),c=this.fileNode.cloneNode(!1),b)c.appendChild(this.currentPage.node);else for(b=0;b<this.pages.length;b++)this.currentPage!=this.pages[b]&&(this.pages[b].needsUpdate?(a=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[b].root)),this.editor.graph.saveViewState(this.pages[b].viewState,a),d?(EditorUi.removeChildNodes(this.pages[b].node),this.pages[b].node.appendChild(a)):mxUtils.setTextContent(this.pages[b].node,Graph.compressNode(a)),delete this.pages[b].needsUpdate):
 d&&(a=Editor.parseDiagramNode(this.pages[b].node),EditorUi.removeChildNodes(this.pages[b].node),this.pages[b].node.appendChild(a))),c.appendChild(this.pages[b].node);return c};EditorUi.prototype.anonymizeString=function(a,b){for(var c=[],e=0;e<a.length;e++){var d=a.charAt(e);0<=EditorUi.ignoredAnonymizedChars.indexOf(d)?c.push(d):isNaN(parseInt(d))?d.toLowerCase()!=d?c.push(String.fromCharCode(65+Math.round(25*Math.random()))):d.toUpperCase()!=d?c.push(String.fromCharCode(97+Math.round(25*Math.random()))):
-/\s/.test(d)?c.push(" "):c.push("?"):c.push(b?"0":Math.round(9*Math.random()))}return c.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var c=0;c<a[EditorUi.DIFF_INSERT].length;c++)try{var b=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][c].data).documentElement.cloneNode(!1);null!=b.getAttribute("name")&&b.setAttribute("name",this.anonymizeString(b.getAttribute("name")));a[EditorUi.DIFF_INSERT][c].data=mxUtils.getXml(b)}catch(l){a[EditorUi.DIFF_INSERT][c].data=
-l.message}if(null!=a[EditorUi.DIFF_UPDATE]){for(var d in a[EditorUi.DIFF_UPDATE]){var f=a[EditorUi.DIFF_UPDATE][d];null!=f.name&&(f.name=this.anonymizeString(f.name));null!=f.cells&&(c=mxUtils.bind(this,function(a){var c=f.cells[a];if(null!=c){for(var b in c)null!=c[b].value&&(c[b].value="["+c[b].value.length+"]"),null!=c[b].xmlValue&&(c[b].xmlValue="["+c[b].xmlValue.length+"]"),null!=c[b].style&&(c[b].style="["+c[b].style.length+"]"),0==Object.keys(c[b]).length&&delete c[b];0==Object.keys(c).length&&
+/\s/.test(d)?c.push(" "):c.push("?"):c.push(b?"0":Math.round(9*Math.random()))}return c.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var c=0;c<a[EditorUi.DIFF_INSERT].length;c++)try{var b=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][c].data).documentElement.cloneNode(!1);null!=b.getAttribute("name")&&b.setAttribute("name",this.anonymizeString(b.getAttribute("name")));a[EditorUi.DIFF_INSERT][c].data=mxUtils.getXml(b)}catch(g){a[EditorUi.DIFF_INSERT][c].data=
+g.message}if(null!=a[EditorUi.DIFF_UPDATE]){for(var d in a[EditorUi.DIFF_UPDATE]){var f=a[EditorUi.DIFF_UPDATE][d];null!=f.name&&(f.name=this.anonymizeString(f.name));null!=f.cells&&(c=mxUtils.bind(this,function(a){var c=f.cells[a];if(null!=c){for(var b in c)null!=c[b].value&&(c[b].value="["+c[b].value.length+"]"),null!=c[b].xmlValue&&(c[b].xmlValue="["+c[b].xmlValue.length+"]"),null!=c[b].style&&(c[b].style="["+c[b].style.length+"]"),0==Object.keys(c[b]).length&&delete c[b];0==Object.keys(c).length&&
 delete f.cells[a]}}),c(EditorUi.DIFF_INSERT),c(EditorUi.DIFF_UPDATE),0==Object.keys(f.cells).length&&delete f.cells);0==Object.keys(f).length&&delete a[EditorUi.DIFF_UPDATE][d]}0==Object.keys(a[EditorUi.DIFF_UPDATE]).length&&delete a[EditorUi.DIFF_UPDATE]}return a};EditorUi.prototype.anonymizeAttributes=function(a,b){if(null!=a.attributes)for(var c=0;c<a.attributes.length;c++)"as"!=a.attributes[c].name&&a.setAttribute(a.attributes[c].name,this.anonymizeString(a.attributes[c].value,b));if(null!=a.childNodes)for(c=
 0;c<a.childNodes.length;c++)this.anonymizeAttributes(a.childNodes[c],b)};EditorUi.prototype.anonymizeNode=function(a,b){for(var c=a.getElementsByTagName("mxCell"),e=0;e<c.length;e++)null!=c[e].getAttribute("value")&&c[e].setAttribute("value","["+c[e].getAttribute("value").length+"]"),null!=c[e].getAttribute("xmlValue")&&c[e].setAttribute("xmlValue","["+c[e].getAttribute("xmlValue").length+"]"),null!=c[e].getAttribute("style")&&c[e].setAttribute("style","["+c[e].getAttribute("style").length+"]"),null!=
 c[e].parentNode&&"root"!=c[e].parentNode.nodeName&&null!=c[e].parentNode.parentNode&&(c[e].setAttribute("id",c[e].parentNode.getAttribute("id")),c[e].parentNode.parentNode.replaceChild(c[e],c[e].parentNode));return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var c=this.getCurrentFile();null!=c&&(c.savingFile?this.handleError({message:mxResources.get("busy")}):!a&&c.invalidChecksum?c.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(c.clearAutosave(),
-this.editor.setStatus(""),a?c.reloadFile(mxUtils.bind(this,function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){c.handleFileError(a,!0)})):c.synchronizeFile(mxUtils.bind(this,function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){c.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,d,f,n,l,k,A,q,m){n=null!=n?n:!0;l=null!=l?l:!1;var c=this.editor.graph;if(b||!a&&null!=q&&/(\.svg)$/i.test(q.getTitle()))if(m=
-!1,null!=this.pages&&this.currentPage!=this.pages[0]){var e=c.getGlobalVariable,c=this.createTemporaryGraph(c.getStylesheet()),g=this.pages[0];c.getGlobalVariable=function(a){return"page"==a?g.getName():"pagenumber"==a?1:e.apply(this,arguments)};document.body.appendChild(c.container);c.model.setRoot(g.root)}k=null!=k?k:this.getXmlFileData(n,l,m);q=null!=q?q:this.getCurrentFile();a=this.createFileData(k,c,q,window.location.href,a,b,d,f,n,A,m);c!=this.editor.graph&&c.container.parentNode.removeChild(c.container);
-return a};EditorUi.prototype.getHtml=function(a,b,d,f,n,l){l=null!=l?l:!0;var c=null,e=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var c=l?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),g=b.view.scale;l=Math.floor(c.x/g-b.view.translate.x);g=Math.floor(c.y/g-b.view.translate.y);c=b.background;null==n&&(b=this.getBasenames().join(";"),0<b.length&&(e=EditorUi.drawHost+"/embed.js?s="+b));a.setAttribute("x0",l);a.setAttribute("y0",g)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom",
+this.editor.setStatus(""),a?c.reloadFile(mxUtils.bind(this,function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){c.handleFileError(a,!0)})):c.synchronizeFile(mxUtils.bind(this,function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){c.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,d,f,n,g,l,A,q,m){n=null!=n?n:!0;g=null!=g?g:!1;var c=this.editor.graph;if(b||!a&&null!=q&&/(\.svg)$/i.test(q.getTitle()))if(m=
+!1,null!=this.pages&&this.currentPage!=this.pages[0]){var e=c.getGlobalVariable,c=this.createTemporaryGraph(c.getStylesheet()),k=this.pages[0];c.getGlobalVariable=function(a){return"page"==a?k.getName():"pagenumber"==a?1:e.apply(this,arguments)};document.body.appendChild(c.container);c.model.setRoot(k.root)}l=null!=l?l:this.getXmlFileData(n,g,m);q=null!=q?q:this.getCurrentFile();a=this.createFileData(l,c,q,window.location.href,a,b,d,f,n,A,m);c!=this.editor.graph&&c.container.parentNode.removeChild(c.container);
+return a};EditorUi.prototype.getHtml=function(a,b,d,f,n,g){g=null!=g?g:!0;var c=null,e=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var c=g?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),k=b.view.scale;g=Math.floor(c.x/k-b.view.translate.x);k=Math.floor(c.y/k-b.view.translate.y);c=b.background;null==n&&(b=this.getBasenames().join(";"),0<b.length&&(e=EditorUi.drawHost+"/embed.js?s="+b));a.setAttribute("x0",g);a.setAttribute("y0",k)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom",
 "1"),a.setAttribute("resize","0"),a.setAttribute("fit","0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=f&&a.setAttribute("edit",f));null!=n&&(n=n.replace(/&/g,"&amp;"));a=null!=a?Graph.zapGremlins(mxUtils.getXml(a)):"";f=Graph.compress(a);Graph.decompress(f)!=a&&(f=encodeURIComponent(a));return(null==n?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=n?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+
 (null==n?null!=d?"<title>"+mxUtils.htmlEntities(d)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=n?'<meta http-equiv="refresh" content="0;URL=\''+n+"'\"/>\n":"")+"</head>\n<body"+(null==n&&null!=c&&c!=mxConstants.NONE?' style="background-color:'+c+';">':">")+'\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==n?'<script type="text/javascript" src="'+e+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+
 n+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,d,f,n){b=EditorUi.drawHost+"/js/viewer.min.js";null!=n&&(n=n.replace(/&/g,"&amp;"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:Graph.zapGremlins(a),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(a.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==n?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':
@@ -3000,48 +3001,48 @@ b+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128
 c=null!=a?this.editor.extractGraphModel(a,!0):null;null!=c&&(a=c);if(null!=a&&"mxfile"==a.nodeName&&(c=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name"))){var b=null;this.fileNode=a;this.pages=[];for(a=0;a<c.length;a++){null==c[a].getAttribute("id")&&c[a].setAttribute("id",a);var d=new DiagramPage(c[a]);null==d.getName()&&d.setName(mxResources.get("pageWithNumber",[a+1]));this.pages.push(d);null!=urlParams["page-id"]&&d.getId()==urlParams["page-id"]&&
 (b=d)}this.currentPage=null!=b?b:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root)};
 EditorUi.prototype.getBaseFilename=function(a){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)||/(\.drawio)$/i.test(c))c=c.substring(0,c.lastIndexOf("."));!a&&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(a,b,d,f,n,l,k,A,q,m){try{f=null!=f?f:this.editor.graph.isSelectionEmpty();var c=this.getBaseFilename(!n),e=c+"."+a;if("xml"==a){var g='<?xml version="1.0" encoding="UTF-8"?>\n'+this.getFileData(!0,null,null,null,f,n,null,null,null,b);this.saveData(e,a,g,"text/xml")}else if("html"==a)g=this.getHtml2(this.getFileData(!0),this.editor.graph,c),this.saveData(e,a,g,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?e=c+".png":"jpeg"==
-a&&(e=c+".jpg"),this.saveRequest(e,a,mxUtils.bind(this,function(c,b){try{var e=this.editor.graph.pageVisible;null!=l&&(this.editor.graph.pageVisible=l);var d=this.createDownloadRequest(c,a,f,b,k,n,A,q,m);this.editor.graph.pageVisible=e;return d}catch(P){this.handleError(P)}}));else{var u=null,z=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(e,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(u)}))});
-if("svg"==a){var p=this.editor.graph.background;if(k||p==mxConstants.NONE)p=null;var E=this.editor.graph.getSvg(p,null,null,null,null,f);d&&this.editor.graph.addSvgShadow(E);this.convertImages(E,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();z('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else e=c+".svg",u=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();
-z(a)}),f)}}catch(Q){this.handleError(Q)}};EditorUi.prototype.createDownloadRequest=function(a,b,d,f,n,l,k,A,q){var c=this.editor.graph,e=c.getGraphBounds();d=this.getFileData(!0,null,null,null,d,0==l?!1:"xmlpng"!=b);var g="",u="";if(e.width*e.height>MAX_AREA||d.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};e="0";"pdf"==b&&0==l&&(u="&allPages=1");if("xmlpng"==b&&(e="1",b="png",null!=this.pages&&null!=this.currentPage))for(l=0;l<this.pages.length;l++)if(this.pages[l]==this.currentPage){g=
-"&from="+l;break}l=c.background;"png"==b&&n?l=mxConstants.NONE:n||null!=l&&l!=mxConstants.NONE||(l="#ffffff");n={globalVars:c.getExportVariables()};q&&(n.grid={size:c.gridSize,steps:c.view.gridSteps,color:c.view.gridColor});return new mxXmlRequest(EXPORT_URL,"format="+b+g+u+"&bg="+(null!=l?l:mxConstants.NONE)+"&base64="+f+"&embedXml="+e+"&xml="+encodeURIComponent(d)+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(n))+(null!=k?"&scale="+k:"")+(null!=A?"&border="+
+function(a,b,d,f,n,g,l,A,q,m){try{f=null!=f?f:this.editor.graph.isSelectionEmpty();var c=this.getBaseFilename(!n),e=c+"."+a;if("xml"==a){var k='<?xml version="1.0" encoding="UTF-8"?>\n'+this.getFileData(!0,null,null,null,f,n,null,null,null,b);this.saveData(e,a,k,"text/xml")}else if("html"==a)k=this.getHtml2(this.getFileData(!0),this.editor.graph,c),this.saveData(e,a,k,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?e=c+".png":"jpeg"==
+a&&(e=c+".jpg"),this.saveRequest(e,a,mxUtils.bind(this,function(c,b){try{var e=this.editor.graph.pageVisible;null!=g&&(this.editor.graph.pageVisible=g);var d=this.createDownloadRequest(c,a,f,b,l,n,A,q,m);this.editor.graph.pageVisible=e;return d}catch(P){this.handleError(P)}}));else{var t=null,z=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(e,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(t)}))});
+if("svg"==a){var p=this.editor.graph.background;if(l||p==mxConstants.NONE)p=null;var F=this.editor.graph.getSvg(p,null,null,null,null,f);d&&this.editor.graph.addSvgShadow(F);this.convertImages(F,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();z('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else e=c+".svg",t=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();
+z(a)}),f)}}catch(Q){this.handleError(Q)}};EditorUi.prototype.createDownloadRequest=function(a,b,d,f,n,g,l,A,q){var c=this.editor.graph,e=c.getGraphBounds();d=this.getFileData(!0,null,null,null,d,0==g?!1:"xmlpng"!=b);var k="",t="";if(e.width*e.height>MAX_AREA||d.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};e="0";"pdf"==b&&0==g&&(t="&allPages=1");if("xmlpng"==b&&(e="1",b="png",null!=this.pages&&null!=this.currentPage))for(g=0;g<this.pages.length;g++)if(this.pages[g]==this.currentPage){k=
+"&from="+g;break}g=c.background;"png"==b&&n?g=mxConstants.NONE:n||null!=g&&g!=mxConstants.NONE||(g="#ffffff");n={globalVars:c.getExportVariables()};q&&(n.grid={size:c.gridSize,steps:c.view.gridSteps,color:c.view.gridColor});return new mxXmlRequest(EXPORT_URL,"format="+b+k+t+"&bg="+(null!=g?g:mxConstants.NONE)+"&base64="+f+"&embedXml="+e+"&xml="+encodeURIComponent(d)+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(n))+(null!=l?"&scale="+l:"")+(null!=A?"&border="+
 A:""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,b,d){var c=window.location.hash,e=mxUtils.bind(this,function(e){var d=null!=a.data?a.data:"";null!=e&&0<e.length&&(0<d.length&&(d+="\n"),d+=e);e=new LocalFile(this,"csv"!=a.format&&0<d.length?d:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);e.getHash=function(){return c};this.fileLoaded(e);"csv"==a.format&&this.importCsv(d,mxUtils.bind(this,
-function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=a.update){var f=null!=a.interval?parseInt(a.interval):6E4,g=null,l=mxUtils.bind(this,function(){var c=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){c===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),n()):this.handleError({message:mxResources.get("error")+
-" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),n=mxUtils.bind(this,function(){window.clearTimeout(g);g=window.setTimeout(l,f)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){n();l()}));n();l()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var f=a.url;/^https?:\/\//.test(f)&&!this.editor.isCorsEnabledForUrl(f)&&(f=PROXY_URL+"?url="+encodeURIComponent(f));this.loadUrl(f,mxUtils.bind(this,function(a){e(a)}),mxUtils.bind(this,function(a){null!=d&&
-d(a)}))}else e("")};EditorUi.prototype.updateDiagram=function(a){function c(a){var c=new mxCellOverlay(a.image||f.warningImage,a.tooltip,a.align,a.valign,a.offset);c.addListener(mxEvent.CLICK,function(c,b){d.alert(a.tooltip)});return c}var b=null,d=this;if(null!=a&&0<a.length&&(b=mxUtils.parseXml(a),a=null!=b?b.documentElement:null,null!=a&&"updates"==a.nodeName)){var f=this.editor.graph,l=f.getModel();l.beginUpdate();var k=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var A=l.getCell(a.getAttribute("id"));
-if(null!=A){try{var q=a.getAttribute("value");if(null!=q){var m=mxUtils.parseXml(q).documentElement;if(null!=m)if("1"==m.getAttribute("replace-value"))l.setValue(A,m);else for(var x=m.attributes,p=0;p<x.length;p++)f.setAttributeForCell(A,x[p].nodeName,0<x[p].nodeValue.length?x[p].nodeValue:null)}}catch(L){null!=window.console&&console.log("Error in value for "+A.id+": "+L)}try{var t=a.getAttribute("style");null!=t&&f.model.setStyle(A,t)}catch(L){null!=window.console&&console.log("Error in style for "+
+function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=a.update){var k=null!=a.interval?parseInt(a.interval):6E4,g=null,f=mxUtils.bind(this,function(){var c=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){c===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),n()):this.handleError({message:mxResources.get("error")+
+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),n=mxUtils.bind(this,function(){window.clearTimeout(g);g=window.setTimeout(f,k)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){n();f()}));n();f()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var k=a.url;/^https?:\/\//.test(k)&&!this.editor.isCorsEnabledForUrl(k)&&(k=PROXY_URL+"?url="+encodeURIComponent(k));this.loadUrl(k,mxUtils.bind(this,function(a){e(a)}),mxUtils.bind(this,function(a){null!=d&&
+d(a)}))}else e("")};EditorUi.prototype.updateDiagram=function(a){function c(a){var c=new mxCellOverlay(a.image||f.warningImage,a.tooltip,a.align,a.valign,a.offset);c.addListener(mxEvent.CLICK,function(c,b){d.alert(a.tooltip)});return c}var b=null,d=this;if(null!=a&&0<a.length&&(b=mxUtils.parseXml(a),a=null!=b?b.documentElement:null,null!=a&&"updates"==a.nodeName)){var f=this.editor.graph,g=f.getModel();g.beginUpdate();var l=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var A=g.getCell(a.getAttribute("id"));
+if(null!=A){try{var q=a.getAttribute("value");if(null!=q){var m=mxUtils.parseXml(q).documentElement;if(null!=m)if("1"==m.getAttribute("replace-value"))g.setValue(A,m);else for(var x=m.attributes,p=0;p<x.length;p++)f.setAttributeForCell(A,x[p].nodeName,0<x[p].nodeValue.length?x[p].nodeValue:null)}}catch(L){null!=window.console&&console.log("Error in value for "+A.id+": "+L)}try{var u=a.getAttribute("style");null!=u&&f.model.setStyle(A,u)}catch(L){null!=window.console&&console.log("Error in style for "+
 A.id+": "+L)}try{var C=a.getAttribute("icon");if(null!=C){var v=0<C.length?JSON.parse(C):null;null!=v&&v.append||f.removeCellOverlays(A);null!=v&&f.addCellOverlay(A,c(v))}}catch(L){null!=window.console&&console.log("Error in icon for "+A.id+": "+L)}try{var y=a.getAttribute("geometry");if(null!=y){var y=JSON.parse(y),H=f.getCellGeometry(A);if(null!=H){H=H.clone();for(key in y){var B=parseFloat(y[key]);"dx"==key?H.x+=B:"dy"==key?H.y+=B:"dw"==key?H.width+=B:"dh"==key?H.height+=B:H[key]=parseFloat(y[key])}f.model.setGeometry(A,
-H)}}}catch(L){null!=window.console&&console.log("Error in icon for "+A.id+": "+L)}}}else if("model"==a.nodeName){for(var D=a.firstChild;null!=D&&D.nodeType!=mxConstants.NODETYPE_ELEMENT;)D=D.nextSibling;null!=D&&(new mxCodec(a.firstChild)).decode(D,l)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==
-a.nodeName&&(k=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{l.endUpdate()}null!=k&&this.chromelessResize&&this.chromelessResize(!0,k)}return b};EditorUi.prototype.getCopyFilename=function(a,b){var c=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,e="",d=c.lastIndexOf(".");0<=d&&(e=c.substring(d),c=c.substring(0,d));if(b)var f=new Date,d=f.getFullYear(),k=f.getMonth()+1,A=f.getDate(),q=f.getHours(),m=f.getMinutes(),f=f.getSeconds(),c=
-c+(" "+(d+"-"+k+"-"+A+"-"+q+"-"+m+"-"+f));return c=mxResources.get("copyOf",[c])+e};EditorUi.prototype.fileLoaded=function(a,b){var c=this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);var e=!1;this.hideDialog();null!=c&&(c.removeListener(this.descriptorChangedListener),c.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var d=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=c&&this.updateDocumentTitle();this.editor.graph.model.clear();
+H)}}}catch(L){null!=window.console&&console.log("Error in icon for "+A.id+": "+L)}}}else if("model"==a.nodeName){for(var D=a.firstChild;null!=D&&D.nodeType!=mxConstants.NODETYPE_ELEMENT;)D=D.nextSibling;null!=D&&(new mxCodec(a.firstChild)).decode(D,g)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==
+a.nodeName&&(l=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{g.endUpdate()}null!=l&&this.chromelessResize&&this.chromelessResize(!0,l)}return b};EditorUi.prototype.getCopyFilename=function(a,b){var c=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,e="",d=c.lastIndexOf(".");0<=d&&(e=c.substring(d),c=c.substring(0,d));if(b)var f=new Date,d=f.getFullYear(),l=f.getMonth()+1,A=f.getDate(),q=f.getHours(),m=f.getMinutes(),f=f.getSeconds(),c=
+c+(" "+(d+"-"+l+"-"+A+"-"+q+"-"+m+"-"+f));return c=mxResources.get("copyOf",[c])+e};EditorUi.prototype.fileLoaded=function(a,b){var c=this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);var e=!1;this.hideDialog();null!=c&&(c.removeListener(this.descriptorChangedListener),c.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var d=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=c&&this.updateDocumentTitle();this.editor.graph.model.clear();
 this.editor.undoManager.clear();this.setBackgroundImage(null);!b&&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();b||this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(a);a.addListener("descriptorChanged",
 this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open();delete this.openingFile;this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+
 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;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:a.getMode().toUpperCase()+"-OPEN-FILE-"+
 a.getHash(),action:"size_"+a.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")});if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(),title:a.getTitle(),mode:a.getMode()})}catch(z){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(z){}}catch(z){this.fileLoadedError=z;null!=window.console&&(console.error(z),console.log("error in fileLoaded:",a,z));if(EditorUi.enableLogging&&
 !this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=z&&null!=z.message?":err:"+encodeURIComponent(z.message):"")+(null!=z&&null!=z.stack?"&stack="+encodeURIComponent(z.stack):"")}catch(A){}var f=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):
-null!=c?this.fileLoaded(c):d()});b?f():this.handleError(z,mxResources.get("errorLoadingFile"),f,!0)}else d();return e};EditorUi.prototype.getHashValueForPages=function(a,b){var c=0,e=new mxGraphModel,d=new mxCodec;null!=b&&(b.byteCount=0,b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var f=0;f<a.length;f++){this.updatePageRoot(a[f]);var k=a[f].node.cloneNode(!1);k.removeAttribute("name");e.root=a[f].root;var A=d.encode(e);this.editor.graph.saveViewState(a[f].viewState,A,!0);A.removeAttribute("pageWidth");
-A.removeAttribute("pageHeight");k.appendChild(A);null!=b&&(b.eltCount+=k.getElementsByTagName("*").length,b.nodeCount+=k.getElementsByTagName("mxCell").length);c=(c<<5)-c+this.hashValue(k,function(a,c,b,e){return!e||"mxGeometry"!=a.nodeName&&"mxPoint"!=a.nodeName||"x"!=c&&"y"!=c&&"width"!=c&&"height"!=c?e&&"mxCell"==a.nodeName&&"previous"==c?null:b:Math.round(b)},b)<<0}return c};EditorUi.prototype.hashValue=function(a,b,d){var c=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===
-typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(c^=this.hashValue(a.nodeName,b,d));if(null!=a.attributes){null!=d&&(d.attrCount+=a.attributes.length);for(var e=0;e<a.attributes.length;e++){var f=a.attributes[e].name,g=null!=b?b(a,f,a.attributes[e].value,!0):a.attributes[e].value;null!=g&&(c^=this.hashValue(f,b,d)+this.hashValue(g,b,d))}}if(null!=a.childNodes)for(e=0;e<a.childNodes.length;e++)c=(c<<5)-c+this.hashValue(a.childNodes[e],b,d)<<0}else if(null!=a&&"function"!==
-typeof a){a=String(a);b=0;null!=d&&(d.byteCount+=a.length);for(e=0;e<a.length;e++)b=(b<<5)-b+a.charCodeAt(e)<<0;c^=b}return c};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(a,b,d,f,n,l,k){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?this.getLocalData(".scratchpad",
+null!=c?this.fileLoaded(c):d()});b?f():this.handleError(z,mxResources.get("errorLoadingFile"),f,!0)}else d();return e};EditorUi.prototype.getHashValueForPages=function(a,b){var c=0,e=new mxGraphModel,d=new mxCodec;null!=b&&(b.byteCount=0,b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var f=0;f<a.length;f++){this.updatePageRoot(a[f]);var l=a[f].node.cloneNode(!1);l.removeAttribute("name");e.root=a[f].root;var A=d.encode(e);this.editor.graph.saveViewState(a[f].viewState,A,!0);A.removeAttribute("pageWidth");
+A.removeAttribute("pageHeight");l.appendChild(A);null!=b&&(b.eltCount+=l.getElementsByTagName("*").length,b.nodeCount+=l.getElementsByTagName("mxCell").length);c=(c<<5)-c+this.hashValue(l,function(a,c,b,e){return!e||"mxGeometry"!=a.nodeName&&"mxPoint"!=a.nodeName||"x"!=c&&"y"!=c&&"width"!=c&&"height"!=c?e&&"mxCell"==a.nodeName&&"previous"==c?null:b:Math.round(b)},b)<<0}return c};EditorUi.prototype.hashValue=function(a,b,d){var c=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===
+typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(c^=this.hashValue(a.nodeName,b,d));if(null!=a.attributes){null!=d&&(d.attrCount+=a.attributes.length);for(var e=0;e<a.attributes.length;e++){var k=a.attributes[e].name,f=null!=b?b(a,k,a.attributes[e].value,!0):a.attributes[e].value;null!=f&&(c^=this.hashValue(k,b,d)+this.hashValue(f,b,d))}}if(null!=a.childNodes)for(e=0;e<a.childNodes.length;e++)c=(c<<5)-c+this.hashValue(a.childNodes[e],b,d)<<0}else if(null!=a&&"function"!==
+typeof a){a=String(a);b=0;null!=d&&(d.byteCount+=a.length);for(e=0;e<a.length;e++)b=(b<<5)-b+a.charCodeAt(e)<<0;c^=b}return c};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(a,b,d,f,n,g,l){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?this.getLocalData(".scratchpad",
 mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(a){var c=mxUtils.createXmlDocument(),b=c.createElement("mxlibrary");mxUtils.setTextContent(b,JSON.stringify(a));c.appendChild(b);return mxUtils.getXml(c)};EditorUi.prototype.closeLibrary=function(a){null!=a&&(this.removeLibrarySidebar(a.getHash()),a.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),
 ".scratchpad"==a.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(a){var c=this.sidebar.palettes[a];if(null!=c){for(var b=0;b<c.length;b++)c[b].parentNode.removeChild(c[b]);delete this.sidebar.palettes[a]}};EditorUi.prototype.repositionLibrary=function(a){var c=this.sidebar.container;if(null==a){var b=this.sidebar.palettes["L.scratchpad"];null==b&&(b=this.sidebar.palettes.search);null!=b&&(a=b[b.length-1].nextSibling)}a=null!=a?a:c.firstChild.nextSibling.nextSibling;
 var b=c.lastChild,d=b.previousSibling;c.insertBefore(b,a);c.insertBefore(d,b)};EditorUi.prototype.loadLibrary=function(a){var c=mxUtils.parseXml(a.getData());if("mxlibrary"==c.documentElement.nodeName){var b=JSON.parse(mxUtils.getTextContent(c.documentElement));this.libraryLoaded(a,b,c.documentElement.getAttribute("title"))}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(a){return""};EditorUi.prototype.libraryLoaded=function(a,b,d){if(null!=
-this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var c=this.sidebar.palettes[a.getHash()],c=null!=c?c[c.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var e=null,f=mxUtils.bind(this,function(c,b){0==c.length&&a.isEditable()?(null==e&&(e=document.createElement("div"),e.className="geDropTarget",mxUtils.write(e,mxResources.get("dragElementsHere"))),b.appendChild(e)):this.addLibraryEntries(c,b)});null!=this.sidebar&&
-null!=b&&this.sidebar.addEntries(b);d=null!=d&&0<d.length?d:a.getTitle();var g=this.sidebar.addPalette(a.getHash(),d,!0,mxUtils.bind(this,function(a){f(b,a)}));this.repositionLibrary(c);var k=g.parentNode.previousSibling;d=k.getAttribute("title");null!=d&&0<d.length&&".scratchpad"!=a.title&&k.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+d);var q=document.createElement("div");q.style.position="absolute";q.style.right="0px";q.style.top="0px";q.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||
-(q.style.backgroundColor="inherit");k.style.position="relative";var m=document.createElement("img");m.setAttribute("src",Dialog.prototype.closeImage);m.setAttribute("title",mxResources.get("close"));m.setAttribute("valign","absmiddle");m.setAttribute("border","0");m.style.margin="0 3px";var x=null;if(".scratchpad"!=a.title||this.closableScratchpad)q.appendChild(m),mxEvent.addListener(m,"click",mxUtils.bind(this,function(c){if(!mxEvent.isConsumed(c)){var b=mxUtils.bind(this,function(){this.closeLibrary(a)});
-null!=x?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b();mxEvent.consume(c)}}));if(a.isEditable()){var p=this.editor.graph,t=null,C=mxUtils.bind(this,function(c){this.showLibraryDialog(a.getTitle(),g,b,a,a.getMode());mxEvent.consume(c)}),v=mxUtils.bind(this,function(c){a.setModified(!0);a.isAutosave()?(null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t),t=m.cloneNode(!1),t.setAttribute("src",Editor.spinImage),t.setAttribute("title",
-mxResources.get("saving")),t.style.cursor="default",t.style.marginRight="2px",t.style.marginTop="-2px",q.insertBefore(t,q.firstChild),k.style.paddingRight=18*q.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=t&&null!=t.parentNode&&(t.parentNode.removeChild(t),k.style.paddingRight=18*q.childNodes.length+"px")})):null==x&&(x=m.cloneNode(!1),x.setAttribute("src",IMAGE_PATH+"/download.png"),x.setAttribute("title",mxResources.get("save")),q.insertBefore(x,q.firstChild),
-mxEvent.addListener(x,"click",mxUtils.bind(this,function(c){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==x||a.isModified()||(k.style.paddingRight=18*q.childNodes.length+"px",x.parentNode.removeChild(x),x=null)});mxEvent.consume(c)})),k.style.paddingRight=18*q.childNodes.length+"px")}),y=mxUtils.bind(this,function(a,c,d,f){a=p.cloneCells(mxUtils.sortCells(p.model.getTopmostCells(a)));for(var l=0;l<a.length;l++){var n=p.getCellGeometry(a[l]);null!=n&&
-n.translate(-c.x,-c.y)}g.appendChild(this.sidebar.createVertexTemplateFromCells(a,c.width,c.height,f||"",!0,!1,!1));a={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:c.width,h:c.height};null!=f&&(a.title=f);b.push(a);v(d);null!=e&&null!=e.parentNode&&0<b.length&&(e.parentNode.removeChild(e),e=null)}),H=mxUtils.bind(this,function(a){if(p.isSelectionEmpty())p.getRubberband().isActive()?(p.getRubberband().execute(a),p.getRubberband().reset()):this.showError(mxResources.get("error"),
-mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var c=p.getSelectionCells(),b=p.view.getBounds(c),d=p.view.scale;b.x/=d;b.y/=d;b.width/=d;b.height/=d;b.x-=p.view.translate.x;b.y-=p.view.translate.y;y(c,b)}mxEvent.consume(a)});mxEvent.addGestureListeners(g,function(){},mxUtils.bind(this,function(a){p.isMouseDown&&null!=p.panningManager&&null!=p.graphHandler.shape&&(p.graphHandler.shape.node.style.visibility="hidden",g.style.backgroundColor="#f1f3f4",g.style.cursor="copy",p.panningManager.stop(),
-p.autoScroll=!1,null!=p.graphHandler.guide&&p.graphHandler.guide.setVisible(!1),null!=p.graphHandler.hint&&(p.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){p.isMouseDown&&null!=p.panningManager&&null!=p.graphHandler&&(g.style.backgroundColor="",g.style.cursor="default",this.sidebar.showTooltips=!0,p.panningManager.stop(),p.graphHandler.reset(),p.isMouseDown=!1,p.autoScroll=!0,H(a),mxEvent.consume(a))}));mxEvent.addListener(g,"mouseleave",mxUtils.bind(this,
-function(a){p.isMouseDown&&null!=p.graphHandler.shape&&(p.graphHandler.shape.node.style.visibility="visible",g.style.backgroundColor="",g.style.cursor="",p.autoScroll=!0,null!=p.graphHandler.guide&&p.graphHandler.guide.setVisible(!0),null!=p.graphHandler.hint&&(p.graphHandler.hint.style.visibility="visible"))}));Graph.fileSupport&&(mxEvent.addListener(g,"dragover",mxUtils.bind(this,function(a){g.style.backgroundColor="#f1f3f4";a.dataTransfer.dropEffect="copy";g.style.cursor="copy";this.sidebar.hideTooltip();
-a.stopPropagation();a.preventDefault()})),mxEvent.addListener(g,"drop",mxUtils.bind(this,function(a){g.style.cursor="";g.style.backgroundColor="";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(c,d,l,n,u,q,k,t,x){if(null!=c&&"image/"==d.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,u,q),c)],c[0].vertex=!0,y(c,new mxRectangle(0,
-0,u,q),a,mxEvent.isAltDown(a)?null:k.substring(0,k.lastIndexOf(".")).replace(/_/g," ")),null!=e&&null!=e.parentNode&&0<b.length&&(e.parentNode.removeChild(e),e=null);else{var z=!1,A=mxUtils.bind(this,function(c,d){if(null!=c&&"text/xml"==d){var l=mxUtils.parseXml(c);if("mxlibrary"==l.documentElement.nodeName)try{var n=JSON.parse(mxUtils.getTextContent(l.documentElement));f(n,g);b=b.concat(n);v(a);this.spinner.stop();z=!0}catch(M){}else if("mxfile"==l.documentElement.nodeName)try{for(var u=l.documentElement.getElementsByTagName("diagram"),
-l=0;l<u.length;l++){var k=this.stringToCells(Editor.getDiagramNodeXml(u[l])),q=this.editor.graph.getBoundingBoxFromGeometry(k);y(k,new mxRectangle(0,0,q.width,q.height),a)}z=!0}catch(M){null!=window.console&&console.log("error in drop handler:",M)}}z||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=e&&null!=e.parentNode&&0<b.length&&(e.parentNode.removeChild(e),e=null)});null!=x&&null!=k&&(/(\.v(dx|sdx?))($|\?)/i.test(k)||/(\.vs(x|sx?))($|\?)/i.test(k))?
-this.importVisio(x,function(a){A(a,"text/xml")},null,k):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,k)&&null!=x?this.parseFile(x,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?A(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):A(c,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(g,"dragleave",
-function(a){g.style.cursor="";g.style.backgroundColor="";a.stopPropagation();a.preventDefault()}));m=m.cloneNode(!1);m.setAttribute("src",Editor.editImage);m.setAttribute("title",mxResources.get("edit"));q.insertBefore(m,q.firstChild);mxEvent.addListener(m,"click",C);mxEvent.addListener(g,"dblclick",function(a){mxEvent.getSource(a)==g&&C(a)});d=m.cloneNode(!1);d.setAttribute("src",Editor.plusImage);d.setAttribute("title",mxResources.get("add"));q.insertBefore(d,q.firstChild);mxEvent.addListener(d,
-"click",H);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(d=document.createElement("span"),d.setAttribute("title",mxResources.get("help")),d.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(d,"?"),mxEvent.addGestureListeners(d,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),q.insertBefore(d,q.firstChild))}k.appendChild(q);k.style.paddingRight=18*q.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=
+this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var c=this.sidebar.palettes[a.getHash()],c=null!=c?c[c.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var e=null,k=mxUtils.bind(this,function(c,b){0==c.length&&a.isEditable()?(null==e&&(e=document.createElement("div"),e.className="geDropTarget",mxUtils.write(e,mxResources.get("dragElementsHere"))),b.appendChild(e)):this.addLibraryEntries(c,b)});null!=this.sidebar&&
+null!=b&&this.sidebar.addEntries(b);d=null!=d&&0<d.length?d:a.getTitle();var f=this.sidebar.addPalette(a.getHash(),d,!0,mxUtils.bind(this,function(a){k(b,a)}));this.repositionLibrary(c);var l=f.parentNode.previousSibling;d=l.getAttribute("title");null!=d&&0<d.length&&".scratchpad"!=a.title&&l.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+d);var q=document.createElement("div");q.style.position="absolute";q.style.right="0px";q.style.top="0px";q.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||
+(q.style.backgroundColor="inherit");l.style.position="relative";var m=document.createElement("img");m.setAttribute("src",Dialog.prototype.closeImage);m.setAttribute("title",mxResources.get("close"));m.setAttribute("valign","absmiddle");m.setAttribute("border","0");m.style.margin="0 3px";var x=null;if(".scratchpad"!=a.title||this.closableScratchpad)q.appendChild(m),mxEvent.addListener(m,"click",mxUtils.bind(this,function(c){if(!mxEvent.isConsumed(c)){var b=mxUtils.bind(this,function(){this.closeLibrary(a)});
+null!=x?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b();mxEvent.consume(c)}}));if(a.isEditable()){var p=this.editor.graph,u=null,C=mxUtils.bind(this,function(c){this.showLibraryDialog(a.getTitle(),f,b,a,a.getMode());mxEvent.consume(c)}),v=mxUtils.bind(this,function(c){a.setModified(!0);a.isAutosave()?(null!=u&&null!=u.parentNode&&u.parentNode.removeChild(u),u=m.cloneNode(!1),u.setAttribute("src",Editor.spinImage),u.setAttribute("title",
+mxResources.get("saving")),u.style.cursor="default",u.style.marginRight="2px",u.style.marginTop="-2px",q.insertBefore(u,q.firstChild),l.style.paddingRight=18*q.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=u&&null!=u.parentNode&&(u.parentNode.removeChild(u),l.style.paddingRight=18*q.childNodes.length+"px")})):null==x&&(x=m.cloneNode(!1),x.setAttribute("src",IMAGE_PATH+"/download.png"),x.setAttribute("title",mxResources.get("save")),q.insertBefore(x,q.firstChild),
+mxEvent.addListener(x,"click",mxUtils.bind(this,function(c){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==x||a.isModified()||(l.style.paddingRight=18*q.childNodes.length+"px",x.parentNode.removeChild(x),x=null)});mxEvent.consume(c)})),l.style.paddingRight=18*q.childNodes.length+"px")}),y=mxUtils.bind(this,function(a,c,d,k){a=p.cloneCells(mxUtils.sortCells(p.model.getTopmostCells(a)));for(var g=0;g<a.length;g++){var n=p.getCellGeometry(a[g]);null!=n&&
+n.translate(-c.x,-c.y)}f.appendChild(this.sidebar.createVertexTemplateFromCells(a,c.width,c.height,k||"",!0,!1,!1));a={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:c.width,h:c.height};null!=k&&(a.title=k);b.push(a);v(d);null!=e&&null!=e.parentNode&&0<b.length&&(e.parentNode.removeChild(e),e=null)}),H=mxUtils.bind(this,function(a){if(p.isSelectionEmpty())p.getRubberband().isActive()?(p.getRubberband().execute(a),p.getRubberband().reset()):this.showError(mxResources.get("error"),
+mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var c=p.getSelectionCells(),b=p.view.getBounds(c),d=p.view.scale;b.x/=d;b.y/=d;b.width/=d;b.height/=d;b.x-=p.view.translate.x;b.y-=p.view.translate.y;y(c,b)}mxEvent.consume(a)});mxEvent.addGestureListeners(f,function(){},mxUtils.bind(this,function(a){p.isMouseDown&&null!=p.panningManager&&null!=p.graphHandler.shape&&(p.graphHandler.shape.node.style.visibility="hidden",f.style.backgroundColor="#f1f3f4",f.style.cursor="copy",p.panningManager.stop(),
+p.autoScroll=!1,null!=p.graphHandler.guide&&p.graphHandler.guide.setVisible(!1),null!=p.graphHandler.hint&&(p.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){p.isMouseDown&&null!=p.panningManager&&null!=p.graphHandler&&(f.style.backgroundColor="",f.style.cursor="default",this.sidebar.showTooltips=!0,p.panningManager.stop(),p.graphHandler.reset(),p.isMouseDown=!1,p.autoScroll=!0,H(a),mxEvent.consume(a))}));mxEvent.addListener(f,"mouseleave",mxUtils.bind(this,
+function(a){p.isMouseDown&&null!=p.graphHandler.shape&&(p.graphHandler.shape.node.style.visibility="visible",f.style.backgroundColor="",f.style.cursor="",p.autoScroll=!0,null!=p.graphHandler.guide&&p.graphHandler.guide.setVisible(!0),null!=p.graphHandler.hint&&(p.graphHandler.hint.style.visibility="visible"))}));Graph.fileSupport&&(mxEvent.addListener(f,"dragover",mxUtils.bind(this,function(a){f.style.backgroundColor="#f1f3f4";a.dataTransfer.dropEffect="copy";f.style.cursor="copy";this.sidebar.hideTooltip();
+a.stopPropagation();a.preventDefault()})),mxEvent.addListener(f,"drop",mxUtils.bind(this,function(a){f.style.cursor="";f.style.backgroundColor="";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(c,d,g,n,t,l,q,u,x){if(null!=c&&"image/"==d.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,t,l),c)],c[0].vertex=!0,y(c,new mxRectangle(0,
+0,t,l),a,mxEvent.isAltDown(a)?null:q.substring(0,q.lastIndexOf(".")).replace(/_/g," ")),null!=e&&null!=e.parentNode&&0<b.length&&(e.parentNode.removeChild(e),e=null);else{var z=!1,A=mxUtils.bind(this,function(c,d){if(null!=c&&"text/xml"==d){var g=mxUtils.parseXml(c);if("mxlibrary"==g.documentElement.nodeName)try{var n=JSON.parse(mxUtils.getTextContent(g.documentElement));k(n,f);b=b.concat(n);v(a);this.spinner.stop();z=!0}catch(M){}else if("mxfile"==g.documentElement.nodeName)try{for(var t=g.documentElement.getElementsByTagName("diagram"),
+g=0;g<t.length;g++){var q=this.stringToCells(Editor.getDiagramNodeXml(t[g])),l=this.editor.graph.getBoundingBoxFromGeometry(q);y(q,new mxRectangle(0,0,l.width,l.height),a)}z=!0}catch(M){null!=window.console&&console.log("error in drop handler:",M)}}z||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=e&&null!=e.parentNode&&0<b.length&&(e.parentNode.removeChild(e),e=null)});null!=x&&null!=q&&(/(\.v(dx|sdx?))($|\?)/i.test(q)||/(\.vs(x|sx?))($|\?)/i.test(q))?
+this.importVisio(x,function(a){A(a,"text/xml")},null,q):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,q)&&null!=x?this.parseFile(x,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?A(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):A(c,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(f,"dragleave",
+function(a){f.style.cursor="";f.style.backgroundColor="";a.stopPropagation();a.preventDefault()}));m=m.cloneNode(!1);m.setAttribute("src",Editor.editImage);m.setAttribute("title",mxResources.get("edit"));q.insertBefore(m,q.firstChild);mxEvent.addListener(m,"click",C);mxEvent.addListener(f,"dblclick",function(a){mxEvent.getSource(a)==f&&C(a)});d=m.cloneNode(!1);d.setAttribute("src",Editor.plusImage);d.setAttribute("title",mxResources.get("add"));q.insertBefore(d,q.firstChild);mxEvent.addListener(d,
+"click",H);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(d=document.createElement("span"),d.setAttribute("title",mxResources.get("help")),d.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(d,"?"),mxEvent.addGestureListeners(d,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),q.insertBefore(d,q.firstChild))}l.appendChild(q);l.style.paddingRight=18*q.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=
 function(a,b){for(var c=0;c<a.length;c++){var d=a[c],e=d.data;if(null!=e){var e=this.convertDataUri(e),f="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==d.aspect&&(f+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(f+"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&&b.appendChild(this.sidebar.createVertexTemplateFromCells(e,d.w,d.h,d.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=
 function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.offline||EditorUi.isElectronApp||("1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64),EditorUi.prototype.createFooter=function(){return document.getElementById("geFooter")});EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS?
 "none":"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):"dark"==uiTheme&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor="#2a2a2a",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.defaultPageBackgroundColor="#2a2a2a",Graph.prototype.defaultPageBorderColor="#505759",Format.prototype.inactiveTabBackgroundColor=
@@ -3050,143 +3051,143 @@ Editor.checkmarkImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAM
 "none",this.refresh())};EditorUi.prototype.showFooter=function(a){var c=document.getElementById("geFooter");null!=c&&(this.footerHeight=a,c.style.display="inline",this.refresh())};EditorUi.prototype.showImageDialog=function(a,b,d,f,n){a=new ImageDialog(this,a,b,d,f,n);this.showDialog(a.container,Graph.fileSupport?440:360,Graph.fileSupport?200:90,!0,!0);a.init()};EditorUi.prototype.showBackgroundImageDialog=function(a){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=new BackgroundImageDialog(this,mxUtils.bind(this,function(c){a(c)}));this.showDialog(c.container,360,200,!0,!0);c.init()};EditorUi.prototype.showLibraryDialog=function(a,b,d,f,n){a=new LibraryDialog(this,a,b,d,f,n);this.showDialog(a.container,640,440,!0,!1,mxUtils.bind(this,function(a){a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));a.init()};var b=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(a){var c=
 b.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(a){this.editor.graph.isSelectionEmpty()&&c.refresh()}));return c};EditorUi.prototype.createSidebarFooterContainer=function(){var a=this.createDiv("geSidebarContainer geSidebarFooter");a.style.position="absolute";a.style.overflow="hidden";var b=document.createElement("a");b.className="geTitle";b.style.color="#DF6C0C";b.style.fontWeight="bold";b.style.height="100%";b.style.paddingTop="9px";b.innerHTML=
-'<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct();mxEvent.consume(a)}));a.appendChild(b);return a};EditorUi.prototype.handleError=function(a,b,d,f,n,l){var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},
-e=null!=a&&null!=a.error?a.error:a;if(null!=e||null!=b){var g=mxUtils.htmlEntities(mxResources.get("unknownError")),u=mxResources.get("ok"),k=null;b=null!=b?b:mxResources.get("error");if(null!=e){null!=e.retry&&(u=mxResources.get("cancel"),k=function(){c();e.retry()});if(404==e.code||404==e.status||403==e.code){var g=403==e.code?null!=e.message?mxUtils.htmlEntities(e.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=n?n:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+
-(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":"")),m=null!=l?l:window.location.hash;if(null!=m&&("#G"==m.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==m.substring(0,45))&&(null!=a&&null!=a.error&&(null!=a.error.errors&&0<a.error.errors.length&&"fileAccess"==a.error.errors[0].reason||null!=a.error.data&&0<a.error.data.length&&"fileAccess"==a.error.data[0].reason)||404==e.code||404==e.status)){m="#U"==m.substring(0,2)?m.substring(45,
-m.lastIndexOf("%26ex")):m.substring(2);this.showError(b,g,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+m);this.handleError(a,b,d,f,n)}),k,mxResources.get("changeUser"),mxUtils.bind(this,function(){function a(){e.innerHTML="";for(var a=0;a<c.length;a++){var b=document.createElement("option");mxUtils.write(b,c[a].displayName);b.value=a;e.appendChild(b);b=document.createElement("option");b.innerHTML="&nbsp;&nbsp;&nbsp;";
+'<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct();mxEvent.consume(a)}));a.appendChild(b);return a};EditorUi.prototype.handleError=function(a,b,d,f,n,g){var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},
+e=null!=a&&null!=a.error?a.error:a;if(null!=e||null!=b){var k=mxUtils.htmlEntities(mxResources.get("unknownError")),t=mxResources.get("ok"),l=null;b=null!=b?b:mxResources.get("error");if(null!=e){null!=e.retry&&(t=mxResources.get("cancel"),l=function(){c();e.retry()});if(404==e.code||404==e.status||403==e.code){var k=403==e.code?null!=e.message?mxUtils.htmlEntities(e.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=n?n:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+
+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":"")),m=null!=g?g:window.location.hash;if(null!=m&&("#G"==m.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==m.substring(0,45))&&(null!=a&&null!=a.error&&(null!=a.error.errors&&0<a.error.errors.length&&"fileAccess"==a.error.errors[0].reason||null!=a.error.data&&0<a.error.data.length&&"fileAccess"==a.error.data[0].reason)||404==e.code||404==e.status)){m="#U"==m.substring(0,2)?m.substring(45,
+m.lastIndexOf("%26ex")):m.substring(2);this.showError(b,k,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+m);this.handleError(a,b,d,f,n)}),l,mxResources.get("changeUser"),mxUtils.bind(this,function(){function a(){e.innerHTML="";for(var a=0;a<c.length;a++){var b=document.createElement("option");mxUtils.write(b,c[a].displayName);b.value=a;e.appendChild(b);b=document.createElement("option");b.innerHTML="&nbsp;&nbsp;&nbsp;";
 mxUtils.write(b,"<"+c[a].email+">");b.setAttribute("disabled","disabled");e.appendChild(b)}b=document.createElement("option");mxUtils.write(b,mxResources.get("addAccount"));b.value=c.length;e.appendChild(b)}var c=this.drive.getUsersList(),b=document.createElement("div"),d=document.createElement("span");d.style.marginTop="6px";mxUtils.write(d,mxResources.get("changeUser")+": ");b.appendChild(d);var e=document.createElement("select");e.style.width="200px";a();mxEvent.addListener(e,"change",mxUtils.bind(this,
 function(){var b=e.value,d=c.length!=b;d&&this.drive.setUser(c[b]);this.drive.authorize(d,mxUtils.bind(this,function(){d||(c=this.drive.getUsersList(),a())}),mxUtils.bind(this,function(a){this.handleError(a)}),!0)}));b.appendChild(e);b=new CustomDialog(this,b,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(b.container,300,75,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=d&&d()}),480,150);return}}null!=e.message?
-g=mxUtils.htmlEntities(e.message):null!=e.response&&null!=e.response.error?g=mxUtils.htmlEntities(e.response.error):"undefined"!==typeof window.App&&(e.code==App.ERROR_TIMEOUT?g=mxUtils.htmlEntities(mxResources.get("timeout")):e.code==App.ERROR_BUSY&&(g=mxUtils.htmlEntities(mxResources.get("busy"))))}var t=l=null;null!=e&&null!=e.helpLink&&(l=mxResources.get("help"),t=mxUtils.bind(this,function(){return this.editor.graph.openLink(e.helpLink)}));this.showError(b,g,u,d,k,null,null,l,t,null,null,null,
-f?d:null)}else null!=d&&d()};EditorUi.prototype.alert=function(a,b){var c=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(c.container,340,100,!0,!1);c.init()};EditorUi.prototype.confirm=function(a,b,d,f,n,l){var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},e=Math.min(200,28*Math.ceil(a.length/50));a=new ConfirmDialog(this,a,function(){c();null!=b&&b()},function(){c();null!=d&&d()},f,n,null,null,null,null,e);this.showDialog(a.container,340,46+
-e,!0,l);a.init()};EditorUi.prototype.setCurrentFile=function(a){null!=a&&(a.opened=new Date);this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||!this.editor.graph.mathEnabled&&this.useCanvasForExport};EditorUi.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};EditorUi.prototype.createImageDataUri=function(a,b,d,f){var c=
+k=mxUtils.htmlEntities(e.message):null!=e.response&&null!=e.response.error?k=mxUtils.htmlEntities(e.response.error):"undefined"!==typeof window.App&&(e.code==App.ERROR_TIMEOUT?k=mxUtils.htmlEntities(mxResources.get("timeout")):e.code==App.ERROR_BUSY&&(k=mxUtils.htmlEntities(mxResources.get("busy"))))}var u=g=null;null!=e&&null!=e.helpLink&&(g=mxResources.get("help"),u=mxUtils.bind(this,function(){return this.editor.graph.openLink(e.helpLink)}));this.showError(b,k,t,d,l,null,null,g,u,null,null,null,
+f?d:null)}else null!=d&&d()};EditorUi.prototype.alert=function(a,b){var c=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(c.container,340,100,!0,!1);c.init()};EditorUi.prototype.confirm=function(a,b,d,f,n,g){var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},e=Math.min(200,28*Math.ceil(a.length/50));a=new ConfirmDialog(this,a,function(){c();null!=b&&b()},function(){c();null!=d&&d()},f,n,null,null,null,null,e);this.showDialog(a.container,340,46+
+e,!0,g);a.init()};EditorUi.prototype.setCurrentFile=function(a){null!=a&&(a.opened=new Date);this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||!this.editor.graph.mathEnabled&&this.useCanvasForExport};EditorUi.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};EditorUi.prototype.createImageDataUri=function(a,b,d,f){var c=
 a.toDataURL("image/"+d);if(6>=c.length||c==a.cloneNode(!1).toDataURL("image/"+d))throw{message:"Invalid image"};null!=b&&(c=this.writeGraphModelToPng(c,"tEXt","mxfile",encodeURIComponent(b)));0<f&&(c=this.writeGraphModelToPng(c,"pHYs","dpi",f));return c};EditorUi.prototype.saveCanvas=function(a,b,d,f,n){var c="jpeg"==d?"jpg":d;f=this.getBaseFilename(f)+"."+c;a=this.createImageDataUri(a,b,d,n);this.saveData(f,c,a.substring(a.lastIndexOf(",")+1),"image/"+d,!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&&!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a,b){var c=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));c.textarea.style.width="600px";c.textarea.style.height="380px";this.showDialog(c.container,620,460,!0,!0,null,null,null,null,!0);c.init();document.execCommand("selectall",
 !1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,d,f,n){if(window.Blob&&navigator.msSaveOrOpenBlob)a=f?this.base64ToBlob(a,d):new Blob([a],{type:d}),navigator.msSaveOrOpenBlob(a,b);else if(mxClient.IS_IE)d=window.open("about:blank","_blank"),null==d?mxUtils.popup(a,!0):(d.document.write(a),d.document.close(),d.document.execCommand("SaveAs",!0,b),d.close());else{var c=document.createElement("a"),e=!mxClient.IS_SF&&0>navigator.userAgent.indexOf("PaleMoon/")&&"undefined"!==typeof c.download;
-if(mxClient.IS_GC)var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),e=65==(g?parseInt(g[2],10):!1)?!1:e;if(e||this.isOffline()){c.href=URL.createObjectURL(f?this.base64ToBlob(a,d):new Blob([a],{type:d}));e?c.download=b:c.setAttribute("target","_blank");document.body.appendChild(c);try{window.setTimeout(function(){URL.revokeObjectURL(c.href)},0),c.click(),c.parentNode.removeChild(c)}catch(q){}}else this.createEchoRequest(a,b,d,f,n).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=
-function(a,b,d,f,n,l){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=d?"&mime="+d:"")+(null!=n?"&format="+n:"")+(null!=l?"&base64="+l:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var c=atob(a),d=c.length,e=Math.ceil(d/1024),f=Array(e),k=0;k<e;++k){for(var A=1024*k,q=Math.min(A+1024,d),m=Array(q-A),x=0;A<q;++x,++A)m[x]=c[A].charCodeAt(0);f[k]=new Uint8Array(m)}return new Blob(f,{type:b})};
-EditorUi.prototype.saveLocalFile=function(a,b,d,f,n,l,k){l=null!=l?l:!1;k=null!=k?k:"vsdx"!=n&&(!mxClient.IS_IOS||!navigator.standalone);n=this.getServiceCount(l);isLocalStorage&&n++;var c=4>=n?2:6<n?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(c,b){try{if("_blank"==b)if(null==d||"image/"!=d.substring(0,6)||"image/svg"==d.substring(0,9)&&!mxClient.IS_SVG){var e=window.open("about:blank");null==e?mxUtils.popup(a,!0):(e.document.write("<pre>"+mxUtils.htmlEntities(a,!1)+"<pre>"),e.document.close())}else this.openInNewWindow(a,
-d,f);else b==App.MODE_DEVICE||"download"==b?this.doSaveLocalFile(a,c,d,f):null!=c&&0<c.length&&this.pickFolder(b,mxUtils.bind(this,function(e){try{this.exportFile(a,c,d,f,b,e)}catch(t){this.handleError(t)}}))}catch(F){this.handleError(F)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,l,k,null,1<n,c,a,d,f);l=this.isServices(n)?n>c?390:270:160;this.showDialog(b.container,400,l,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,
+if(mxClient.IS_GC)var k=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),e=65==(k?parseInt(k[2],10):!1)?!1:e;if(e||this.isOffline()){c.href=URL.createObjectURL(f?this.base64ToBlob(a,d):new Blob([a],{type:d}));e?c.download=b:c.setAttribute("target","_blank");document.body.appendChild(c);try{window.setTimeout(function(){URL.revokeObjectURL(c.href)},0),c.click(),c.parentNode.removeChild(c)}catch(q){}}else this.createEchoRequest(a,b,d,f,n).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=
+function(a,b,d,f,n,g){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=d?"&mime="+d:"")+(null!=n?"&format="+n:"")+(null!=g?"&base64="+g:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var c=atob(a),d=c.length,e=Math.ceil(d/1024),f=Array(e),l=0;l<e;++l){for(var A=1024*l,q=Math.min(A+1024,d),m=Array(q-A),x=0;A<q;++x,++A)m[x]=c[A].charCodeAt(0);f[l]=new Uint8Array(m)}return new Blob(f,{type:b})};
+EditorUi.prototype.saveLocalFile=function(a,b,d,f,n,g,l){g=null!=g?g:!1;l=null!=l?l:"vsdx"!=n&&(!mxClient.IS_IOS||!navigator.standalone);n=this.getServiceCount(g);isLocalStorage&&n++;var c=4>=n?2:6<n?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(c,b){try{if("_blank"==b)if(null==d||"image/"!=d.substring(0,6)||"image/svg"==d.substring(0,9)&&!mxClient.IS_SVG){var e=window.open("about:blank");null==e?mxUtils.popup(a,!0):(e.document.write("<pre>"+mxUtils.htmlEntities(a,!1)+"<pre>"),e.document.close())}else this.openInNewWindow(a,
+d,f);else b==App.MODE_DEVICE||"download"==b?this.doSaveLocalFile(a,c,d,f):null!=c&&0<c.length&&this.pickFolder(b,mxUtils.bind(this,function(e){try{this.exportFile(a,c,d,f,b,e)}catch(u){this.handleError(u)}}))}catch(E){this.handleError(E)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,g,l,null,1<n,c,a,d,f);g=this.isServices(n)?n>c?390:270:160;this.showDialog(b.container,400,g,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,
 b,d){if(mxClient.IS_GC||mxClient.IS_EDGE||11==document.documentMode||10==document.documentMode){var c=window.open("about:blank");null==c||null==c.document?mxUtils.popup(a,!0):("image/svg+xml"==b?c.document.write("<html>"+a+"</html>"):c.document.write('<html><img src="data:'+b+(d?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))+'"/></html>'),c.document.close())}else c=window.open("data:"+b+(d?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))),null!=c&&null!=c.document||mxUtils.popup(a,!0)};
 var f=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var c=a(mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",b);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)b.apply(this);else{this.exportDialog=document.createElement("div");var d=
 c.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";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=
 d.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";d=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=d.zIndex;var e=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});e.spin(this.exportDialog);this.exportToCanvas(mxUtils.bind(this,function(a){e.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height=
 "auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",mxResources.get("openInNewWindow"));a.setAttribute("border","0");a.setAttribute("src",c);this.exportDialog.appendChild(a);mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(c.substring(c.indexOf(",")+1),"image/png",!0);
 b.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));mxEvent.addListener(this.editor.graph.container,"click",b);document.body.appendChild(this.exportDialog)}mxEvent.consume(a)}),Editor.cameraLargeImage,mxResources.get("export"))}f.apply(this,arguments)};EditorUi.prototype.saveData=function(a,b,d,f,n){this.isLocalFileSave()?this.saveLocalFile(d,a,f,n,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,c){return this.createEchoRequest(d,
-a,f,n,b,c)}),d,n,f)};EditorUi.prototype.saveRequest=function(a,b,d,f,n,l,k){k=null!=k?k:!mxClient.IS_IOS||!navigator.standalone;var c=this.getServiceCount(!1);isLocalStorage&&c++;var e=4>=c?2:6<c?4:3;a=new CreateDialog(this,a,mxUtils.bind(this,function(a,c){if("_blank"==c||null!=a&&0<a.length){var e=d("_blank"==c?null:a,c==App.MODE_DEVICE||"download"==c||null==c||"_blank"==c?"0":"1");null!=e&&(c==App.MODE_DEVICE||"download"==c||"_blank"==c?e.simulate(document,"_blank"):this.pickFolder(c,mxUtils.bind(this,
-function(d){l=null!=l?l:"pdf"==b?"application/pdf":"image/"+b;if(null!=f)try{this.exportFile(f,a,l,!0,c,d)}catch(C){this.handleError(C)}else this.spinner.spin(document.body,mxResources.get("saving"))&&e.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=e.getStatus()&&299>=e.getStatus())try{this.exportFile(e.getText(),a,l,!0,c,d)}catch(C){this.handleError(C)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(a){this.spinner.stop();this.handleError(a)})})))}}),
-mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,k,null,1<c,e,f,l,n);c=this.isServices(c)?4<c?390:270:160;this.showDialog(a.container,380,c,!0,!0);a.init()};EditorUi.prototype.isServices=function(a){return 1!=a};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,d,f,n,l){};EditorUi.prototype.pickFolder=function(a,b,d){b(null)};EditorUi.prototype.exportSvg=function(a,b,d,f,
-n,l,k,m,q,p){if(this.spinner.spin(document.body,mxResources.get("export"))){var c=this.editor.graph.isSelectionEmpty();d=null!=d?d:c;c=b?null:this.editor.graph.background;c==mxConstants.NONE&&(c=null);null==c&&0==b&&(c="#ffffff");var e=this.editor.graph.getSvg(c,a,k,m,null,d,null,null,"blank"==p?"_blank":"self"==p?"_top":null);f&&this.editor.graph.addSvgShadow(e);var g=this.getBaseFilename()+".svg",u=mxUtils.bind(this,function(a){this.spinner.stop();n&&a.setAttribute("content",this.getFileData(!0,
+a,f,n,b,c)}),d,n,f)};EditorUi.prototype.saveRequest=function(a,b,d,f,n,g,l){l=null!=l?l:!mxClient.IS_IOS||!navigator.standalone;var c=this.getServiceCount(!1);isLocalStorage&&c++;var e=4>=c?2:6<c?4:3;a=new CreateDialog(this,a,mxUtils.bind(this,function(a,c){if("_blank"==c||null!=a&&0<a.length){var e=d("_blank"==c?null:a,c==App.MODE_DEVICE||"download"==c||null==c||"_blank"==c?"0":"1");null!=e&&(c==App.MODE_DEVICE||"download"==c||"_blank"==c?e.simulate(document,"_blank"):this.pickFolder(c,mxUtils.bind(this,
+function(d){g=null!=g?g:"pdf"==b?"application/pdf":"image/"+b;if(null!=f)try{this.exportFile(f,a,g,!0,c,d)}catch(C){this.handleError(C)}else this.spinner.spin(document.body,mxResources.get("saving"))&&e.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=e.getStatus()&&299>=e.getStatus())try{this.exportFile(e.getText(),a,g,!0,c,d)}catch(C){this.handleError(C)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(a){this.spinner.stop();this.handleError(a)})})))}}),
+mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,l,null,1<c,e,f,g,n);c=this.isServices(c)?4<c?390:270:160;this.showDialog(a.container,380,c,!0,!0);a.init()};EditorUi.prototype.isServices=function(a){return 1!=a};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,d,f,n,g){};EditorUi.prototype.pickFolder=function(a,b,d){b(null)};EditorUi.prototype.exportSvg=function(a,b,d,f,
+n,g,l,m,q,p){if(this.spinner.spin(document.body,mxResources.get("export"))){var c=this.editor.graph.isSelectionEmpty();d=null!=d?d:c;c=b?null:this.editor.graph.background;c==mxConstants.NONE&&(c=null);null==c&&0==b&&(c="#ffffff");var e=this.editor.graph.getSvg(c,a,l,m,null,d,null,null,"blank"==p?"_blank":"self"==p?"_top":null);f&&this.editor.graph.addSvgShadow(e);var k=this.getBaseFilename()+".svg",t=mxUtils.bind(this,function(a){this.spinner.stop();n&&a.setAttribute("content",this.getFileData(!0,
 null,null,null,d,q,null,null,null,!1));if(null!=this.editor.fontCss){var c=a.ownerDocument,c=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"style"):c.createElement("style");c.setAttribute("type","text/css");mxUtils.setTextContent(c,this.editor.fontCss);a.getElementsByTagName("defs")[0].appendChild(c)}var b='<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||
-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(b)}))});this.convertMath(this.editor.graph,e,!1,mxUtils.bind(this,function(){l?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(e,u,this.thumbImageCache)):u(e)}))}};EditorUi.prototype.addRadiobox=function(a,b,d,f,n,l,k){return this.addCheckbox(a,d,f,n,l,k,!0,b)};EditorUi.prototype.addCheckbox=
-function(a,b,d,f,n,l,k,m){l=null!=l?l:!0;var c=document.createElement("input");c.style.marginRight="8px";c.style.marginTop="16px";c.setAttribute("type",k?"radio":"checkbox");k="geCheckbox-"+Editor.guid();c.id=k;null!=m&&c.setAttribute("name",m);d&&(c.setAttribute("checked","checked"),c.defaultChecked=!0);f&&c.setAttribute("disabled","disabled");l&&(a.appendChild(c),d=document.createElement("label"),mxUtils.write(d,b),d.setAttribute("for",k),a.appendChild(d),n||mxUtils.br(a));return c};EditorUi.prototype.addEditButton=
+b.length<=MAX_REQUEST_SIZE?this.saveData(k,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.convertMath(this.editor.graph,e,!1,mxUtils.bind(this,function(){g?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(e,t,this.thumbImageCache)):t(e)}))}};EditorUi.prototype.addRadiobox=function(a,b,d,f,n,g,l){return this.addCheckbox(a,d,f,n,g,l,!0,b)};EditorUi.prototype.addCheckbox=
+function(a,b,d,f,n,g,l,m){g=null!=g?g:!0;var c=document.createElement("input");c.style.marginRight="8px";c.style.marginTop="16px";c.setAttribute("type",l?"radio":"checkbox");l="geCheckbox-"+Editor.guid();c.id=l;null!=m&&c.setAttribute("name",m);d&&(c.setAttribute("checked","checked"),c.defaultChecked=!0);f&&c.setAttribute("disabled","disabled");g&&(a.appendChild(c),d=document.createElement("label"),mxUtils.write(d,b),d.setAttribute("for",l),a.appendChild(d),n||mxUtils.br(a));return c};EditorUi.prototype.addEditButton=
 function(a,b){var c=this.addCheckbox(a,mxResources.get("edit")+":",!0,null,!0);c.style.marginLeft="24px";var d=this.getCurrentFile(),e="";null!=d&&d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER&&(e=window.location.href);var f=document.createElement("select");f.style.width="120px";f.style.marginLeft="8px";f.style.marginRight="10px";f.className="geBtn";d=document.createElement("option");d.setAttribute("value","blank");mxUtils.write(d,mxResources.get("makeCopy"));f.appendChild(d);d=document.createElement("option");
 d.setAttribute("value","custom");mxUtils.write(d,mxResources.get("custom")+"...");f.appendChild(d);a.appendChild(f);mxEvent.addListener(f,"change",mxUtils.bind(this,function(){if("custom"==f.value){var a=new FilenameDialog(this,e,mxResources.get("ok"),function(a){null!=a?e=a:f.value="blank"},mxResources.get("url"),null,null,null,null,function(){f.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(c,"change",mxUtils.bind(this,function(){c.checked&&(null==b||
-b.checked)?f.removeAttribute("disabled"):f.setAttribute("disabled","disabled")}));mxUtils.br(a);return{getLink:function(){return c.checked?"blank"===f.value?"_blank":e:null},getEditInput:function(){return c},getEditSelect:function(){return f}}};EditorUi.prototype.addLinkSection=function(a,b){function c(){k.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=f&&f!=mxConstants.NONE?"border:1px solid black;background-color:"+f:"background-position:center center;background-repeat:no-repeat;background-image:url('"+
+b.checked)?f.removeAttribute("disabled"):f.setAttribute("disabled","disabled")}));mxUtils.br(a);return{getLink:function(){return c.checked?"blank"===f.value?"_blank":e:null},getEditInput:function(){return c},getEditSelect:function(){return f}}};EditorUi.prototype.addLinkSection=function(a,b){function c(){l.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=f&&f!=mxConstants.NONE?"border:1px solid black;background-color:"+f:"background-position:center center;background-repeat:no-repeat;background-image:url('"+
 Dialog.prototype.closeImage+"')")+';"></div>'}mxUtils.write(a,mxResources.get("links")+":");var d=document.createElement("select");d.style.width="100px";d.style.marginLeft="8px";d.style.marginRight="10px";d.className="geBtn";var e=document.createElement("option");e.setAttribute("value","auto");mxUtils.write(e,mxResources.get("automatic"));d.appendChild(e);e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,mxResources.get("openInNewWindow"));d.appendChild(e);e=document.createElement("option");
-e.setAttribute("value","self");mxUtils.write(e,mxResources.get("openInThisWindow"));d.appendChild(e);b&&(e=document.createElement("option"),e.setAttribute("value","frame"),mxUtils.write(e,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),d.appendChild(e));a.appendChild(d);mxUtils.write(a,mxResources.get("borderColor")+":");var f="#0000ff",k=null,k=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(f||"none",function(a){f=a;c()});mxEvent.consume(a)}));c();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";a.appendChild(k);mxUtils.br(a);return{getColor:function(){return f},getTarget:function(){return d.value},focus:function(){d.focus()}}};EditorUi.prototype.createLink=function(a,b,d,f,n,l,k,m){var c=this.getCurrentFile(),e=[];f&&(e.push("lightbox=1"),"auto"!=a&&e.push("target="+
-a),null!=b&&b!=mxConstants.NONE&&e.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=n&&0<n.length&&e.push("edit="+encodeURIComponent(n)),l&&e.push("layers=1"),this.editor.graph.foldingEnabled&&e.push("nav=1"));d&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&e.push("page-id="+this.currentPage.getId());a=!0;null!=k?d="#U"+encodeURIComponent(k):(c=this.getCurrentFile(),m||null==c||c.constructor!=window.DriveFile?d="#R"+encodeURIComponent(d?this.getFileData(!0,
-null,null,null,null,null,null,!0):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(d="#"+c.getHash(),a=!1));a&&null!=c&&null!=c.getTitle()&&c.getTitle()!=this.defaultFilename&&e.push("title="+encodeURIComponent(c.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<e.length?"?"+e.join("&"):"")+d};EditorUi.prototype.createHtml=function(a,b,d,f,n,l,k,m,q,p,x){this.getBasenames();
-var c={};""!=n&&n!=mxConstants.NONE&&(c.highlight=n);"auto"!==f&&(c.target=f);q||(c.lightbox=!1);c.nav=this.editor.graph.foldingEnabled;d=parseInt(d);isNaN(d)||100==d||(c.zoom=d/100);d=[];k&&(d.push("pages"),c.resize=!0,null!=this.pages&&null!=this.currentPage&&(c.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(d.push("zoom"),c.resize=!0);m&&d.push("layers");0<d.length&&(q&&d.push("lightbox"),c.toolbar=d.join(" "));null!=p&&0<p.length&&(c.edit=p);null!=a?c.url=a:c.xml=this.getFileData(!0,
-null,null,null,null,!k);b='<div class="mxgraph" style="'+(l?"max-width:100%;":"")+(""!=d?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(c))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";x(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+
-"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,d,f){var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("html"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(e);var g=document.createElement("div");g.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");e=k.cloneNode(!0);e.setAttribute("value","copy");g.appendChild(e);var q=document.createElement("span");mxUtils.write(q,mxResources.get("includeCopyOfMyDiagram"));g.appendChild(q);mxUtils.br(g);g.appendChild(k);q=document.createElement("span");mxUtils.write(q,mxResources.get("publicDiagramUrl"));g.appendChild(q);var u=this.getCurrentFile();
-null==d&&null!=u&&u.constructor==window.DriveFile&&(q=document.createElement("a"),q.style.paddingLeft="12px",q.style.color="gray",q.setAttribute("href","javascript:void(0);"),mxUtils.write(q,mxResources.get("share")),g.appendChild(q),mxEvent.addListener(q,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(u.getId())})));e.setAttribute("checked","checked");null==d&&k.setAttribute("disabled","disabled");c.appendChild(g);var x=this.addLinkSection(c),m=this.addCheckbox(c,
-mxResources.get("zoom"),!0,null,!0);mxUtils.write(c,":");var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.style.marginRight="12px";t.value="100%";c.appendChild(t);var p=this.addCheckbox(c,mxResources.get("fit"),!0),g=null!=this.pages&&1<this.pages.length,v=v=this.addCheckbox(c,mxResources.get("allPages"),g,!g),y=this.addCheckbox(c,mxResources.get("layers"),!0),H=this.addCheckbox(c,mxResources.get("lightbox"),
-!0),B=this.addEditButton(c,H),D=B.getEditInput();D.style.marginBottom="16px";mxEvent.addListener(H,"change",function(){H.checked?D.removeAttribute("disabled"):D.setAttribute("disabled","disabled");D.checked&&H.checked?B.getEditSelect().removeAttribute("disabled"):B.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,c,mxUtils.bind(this,function(){f(k.checked?d:null,m.checked,t.value,x.getTarget(),x.getColor(),p.checked,v.checked,y.checked,H.checked,B.getLink())}),null,a,
-b);this.showDialog(a.container,340,384,!0,!0);e.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,d,f,n,l){var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,a||mxResources.get("link"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(e);var g=this.getCurrentFile(),e="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=g&&g.constructor==window.DriveFile&&
-!b){a=80;var e="https://desk.draw.io/support/solutions/articles/16000039384",k=document.createElement("div");k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var u=document.createElement("div");u.style.whiteSpace="normal";mxUtils.write(u,mxResources.get("linkAccountRequired"));k.appendChild(u);u=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(g.getId())}));u.style.marginTop=
-"12px";u.className="geBtn";k.appendChild(u);c.appendChild(k);u=document.createElement("a");u.style.paddingLeft="12px";u.style.color="gray";u.style.fontSize="11px";u.setAttribute("href","javascript:void(0);");mxUtils.write(u,mxResources.get("check"));k.appendChild(u);mxEvent.addListener(u,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,
-mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var m=null,t=null;if(null!=d||null!=f)a+=30,mxUtils.write(c,mxResources.get("width")+":"),m=document.createElement("input"),m.setAttribute("type","text"),m.style.marginRight="16px",m.style.width="50px",m.style.marginLeft="6px",m.style.marginRight="16px",m.style.marginBottom="10px",m.value="100%",c.appendChild(m),mxUtils.write(c,mxResources.get("height")+":"),
-t=document.createElement("input"),t.setAttribute("type","text"),t.style.width="50px",t.style.marginLeft="6px",t.style.marginBottom="10px",t.value=f+"px",c.appendChild(t),mxUtils.br(c);var p=this.addLinkSection(c,l);d=null!=this.pages&&1<this.pages.length;var v=null;if(null==g||g.constructor!=window.DriveFile||b)v=this.addCheckbox(c,mxResources.get("allPages"),d,!d);var y=this.addCheckbox(c,mxResources.get("lightbox"),!0),H=this.addEditButton(c,y),B=H.getEditInput(),D=this.addCheckbox(c,mxResources.get("layers"),
+e.setAttribute("value","self");mxUtils.write(e,mxResources.get("openInThisWindow"));d.appendChild(e);b&&(e=document.createElement("option"),e.setAttribute("value","frame"),mxUtils.write(e,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),d.appendChild(e));a.appendChild(d);mxUtils.write(a,mxResources.get("borderColor")+":");var f="#0000ff",l=null,l=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(f||"none",function(a){f=a;c()});mxEvent.consume(a)}));c();l.style.padding=
+mxClient.IS_FF?"4px 2px 4px 2px":"4px";l.style.marginLeft="4px";l.style.height="22px";l.style.width="22px";l.style.position="relative";l.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";l.className="geColorBtn";a.appendChild(l);mxUtils.br(a);return{getColor:function(){return f},getTarget:function(){return d.value},focus:function(){d.focus()}}};EditorUi.prototype.createLink=function(a,b,d,f,n,g,l,m){var c=this.getCurrentFile(),e=[];f&&(e.push("lightbox=1"),"auto"!=a&&e.push("target="+
+a),null!=b&&b!=mxConstants.NONE&&e.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=n&&0<n.length&&e.push("edit="+encodeURIComponent(n)),g&&e.push("layers=1"),this.editor.graph.foldingEnabled&&e.push("nav=1"));d&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&e.push("page-id="+this.currentPage.getId());a=!0;null!=l?d="#U"+encodeURIComponent(l):(c=this.getCurrentFile(),m||null==c||c.constructor!=window.DriveFile?d="#R"+encodeURIComponent(d?this.getFileData(!0,
+null,null,null,null,null,null,!0):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(d="#"+c.getHash(),a=!1));a&&null!=c&&null!=c.getTitle()&&c.getTitle()!=this.defaultFilename&&e.push("title="+encodeURIComponent(c.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<e.length?"?"+e.join("&"):"")+d};EditorUi.prototype.createHtml=function(a,b,d,f,n,g,l,m,q,p,x){this.getBasenames();
+var c={};""!=n&&n!=mxConstants.NONE&&(c.highlight=n);"auto"!==f&&(c.target=f);q||(c.lightbox=!1);c.nav=this.editor.graph.foldingEnabled;d=parseInt(d);isNaN(d)||100==d||(c.zoom=d/100);d=[];l&&(d.push("pages"),c.resize=!0,null!=this.pages&&null!=this.currentPage&&(c.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(d.push("zoom"),c.resize=!0);m&&d.push("layers");0<d.length&&(q&&d.push("lightbox"),c.toolbar=d.join(" "));null!=p&&0<p.length&&(c.edit=p);null!=a?c.url=a:c.xml=this.getFileData(!0,
+null,null,null,null,!l);b='<div class="mxgraph" style="'+(g?"max-width:100%;":"")+(""!=d?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(c))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";x(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+
+"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,d,f){var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("html"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(e);var k=document.createElement("div");k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var l=document.createElement("input");l.style.cssText=
+"margin-right:8px;margin-top:8px;margin-bottom:8px;";l.setAttribute("value","url");l.setAttribute("type","radio");l.setAttribute("name","type-embedhtmldialog");e=l.cloneNode(!0);e.setAttribute("value","copy");k.appendChild(e);var q=document.createElement("span");mxUtils.write(q,mxResources.get("includeCopyOfMyDiagram"));k.appendChild(q);mxUtils.br(k);k.appendChild(l);q=document.createElement("span");mxUtils.write(q,mxResources.get("publicDiagramUrl"));k.appendChild(q);var t=this.getCurrentFile();
+null==d&&null!=t&&t.constructor==window.DriveFile&&(q=document.createElement("a"),q.style.paddingLeft="12px",q.style.color="gray",q.setAttribute("href","javascript:void(0);"),mxUtils.write(q,mxResources.get("share")),k.appendChild(q),mxEvent.addListener(q,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(t.getId())})));e.setAttribute("checked","checked");null==d&&l.setAttribute("disabled","disabled");c.appendChild(k);var x=this.addLinkSection(c),m=this.addCheckbox(c,
+mxResources.get("zoom"),!0,null,!0);mxUtils.write(c,":");var u=document.createElement("input");u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.style.marginRight="12px";u.value="100%";c.appendChild(u);var p=this.addCheckbox(c,mxResources.get("fit"),!0),k=null!=this.pages&&1<this.pages.length,v=v=this.addCheckbox(c,mxResources.get("allPages"),k,!k),y=this.addCheckbox(c,mxResources.get("layers"),!0),H=this.addCheckbox(c,mxResources.get("lightbox"),
+!0),B=this.addEditButton(c,H),D=B.getEditInput();D.style.marginBottom="16px";mxEvent.addListener(H,"change",function(){H.checked?D.removeAttribute("disabled"):D.setAttribute("disabled","disabled");D.checked&&H.checked?B.getEditSelect().removeAttribute("disabled"):B.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,c,mxUtils.bind(this,function(){f(l.checked?d:null,m.checked,u.value,x.getTarget(),x.getColor(),p.checked,v.checked,y.checked,H.checked,B.getLink())}),null,a,
+b);this.showDialog(a.container,340,384,!0,!0);e.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,d,f,n,g){var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,a||mxResources.get("link"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(e);var k=this.getCurrentFile(),e="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=k&&k.constructor==window.DriveFile&&
+!b){a=80;var e="https://desk.draw.io/support/solutions/articles/16000039384",l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var t=document.createElement("div");t.style.whiteSpace="normal";mxUtils.write(t,mxResources.get("linkAccountRequired"));l.appendChild(t);t=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(k.getId())}));t.style.marginTop=
+"12px";t.className="geBtn";l.appendChild(t);c.appendChild(l);t=document.createElement("a");t.style.paddingLeft="12px";t.style.color="gray";t.style.fontSize="11px";t.setAttribute("href","javascript:void(0);");mxUtils.write(t,mxResources.get("check"));l.appendChild(t);mxEvent.addListener(t,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,
+mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var m=null,u=null;if(null!=d||null!=f)a+=30,mxUtils.write(c,mxResources.get("width")+":"),m=document.createElement("input"),m.setAttribute("type","text"),m.style.marginRight="16px",m.style.width="50px",m.style.marginLeft="6px",m.style.marginRight="16px",m.style.marginBottom="10px",m.value="100%",c.appendChild(m),mxUtils.write(c,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",c.appendChild(u),mxUtils.br(c);var p=this.addLinkSection(c,g);d=null!=this.pages&&1<this.pages.length;var v=null;if(null==k||k.constructor!=window.DriveFile||b)v=this.addCheckbox(c,mxResources.get("allPages"),d,!d);var y=this.addCheckbox(c,mxResources.get("lightbox"),!0),H=this.addEditButton(c,y),B=H.getEditInput(),D=this.addCheckbox(c,mxResources.get("layers"),
 !0);D.style.marginLeft=B.style.marginLeft;D.style.marginBottom="16px";D.style.marginTop="8px";mxEvent.addListener(y,"change",function(){y.checked?(D.removeAttribute("disabled"),B.removeAttribute("disabled")):(D.setAttribute("disabled","disabled"),B.setAttribute("disabled","disabled"));B.checked&&y.checked?H.getEditSelect().removeAttribute("disabled"):H.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,c,mxUtils.bind(this,function(){n(p.getTarget(),p.getColor(),null==v?
-!0:v.checked,y.checked,H.getLink(),D.checked,null!=m?m.value:null,null!=t?t.value:null)}),null,mxResources.get("create"),e);this.showDialog(b.container,340,254+a,!0,!0);null!=m?(m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select():document.execCommand("selectAll",!1,null)):p.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,d,f,n){var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,
-mxResources.get("image"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(n?"10":"4")+"px";c.appendChild(e);if(n){mxUtils.write(c,mxResources.get("zoom")+":");var g=document.createElement("input");g.setAttribute("type","text");g.style.marginRight="16px";g.style.width="60px";g.style.marginLeft="4px";g.style.marginRight="12px";g.value=this.lastExportZoom||"100%";c.appendChild(g);mxUtils.write(c,mxResources.get("borderWidth")+":");var k=document.createElement("input");k.setAttribute("type",
-"text");k.style.marginRight="16px";k.style.width="60px";k.style.marginLeft="4px";k.value=this.lastExportBorder||"0";c.appendChild(k);mxUtils.br(c)}var u=this.addCheckbox(c,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),x=f?null:this.addCheckbox(c,mxResources.get("includeCopyOfMyDiagram"),!0),e=this.editor.graph,m=f?null:this.addCheckbox(c,mxResources.get("transparentBackground"),e.background==mxConstants.NONE||null==e.background);null!=m&&(m.style.marginBottom="16px");a=
-new CustomDialog(this,c,mxUtils.bind(this,function(){var a=parseInt(g.value)/100||1,c=parseInt(k.value)||0;d(!u.checked,null!=x?x.checked:!1,null!=m?m.checked:!1,a,c)}),null,a,b);this.showDialog(a.container,300,(n?25:0)+(f?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,d,f,k,l,m,A){m=null!=m?m:!0;var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=this.editor.graph,g="jpeg"==A?196:300,n=document.createElement("h3");mxUtils.write(n,a);n.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";
-c.appendChild(n);mxUtils.write(c,mxResources.get("zoom")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.style.marginRight="12px";u.value=this.lastExportZoom||"100%";c.appendChild(u);mxUtils.write(c,mxResources.get("borderWidth")+":");var z=document.createElement("input");z.setAttribute("type","text");z.style.marginRight="16px";z.style.width="60px";z.style.marginLeft="4px";z.value=this.lastExportBorder||
-"0";c.appendChild(z);mxUtils.br(c);var p=this.addCheckbox(c,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=A),v=this.addCheckbox(c,mxResources.get("selectionOnly"),!1,e.isSelectionEmpty()),y=document.createElement("input");y.style.marginTop="16px";y.style.marginRight="8px";y.style.marginLeft="24px";y.setAttribute("disabled","disabled");y.setAttribute("type","checkbox");l&&(c.appendChild(y),mxUtils.write(c,mxResources.get("crop")),mxUtils.br(c),g+=26,mxEvent.addListener(v,"change",function(){v.checked?
-y.removeAttribute("disabled"):y.setAttribute("disabled","disabled")}));e.isSelectionEmpty()||(y.setAttribute("checked","checked"),y.defaultChecked=!0);var B=this.addCheckbox(c,mxResources.get("shadow"),e.shadowVisible),D=document.createElement("input");D.style.marginTop="16px";D.style.marginRight="8px";D.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||D.setAttribute("disabled","disabled");b&&(c.appendChild(D),mxUtils.write(c,mxResources.get("embedImages")),mxUtils.br(c),g+=
-26);var L=null;if("png"==A||"jpeg"==A)L=this.addCheckbox(c,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),g+=26;var O=this.addCheckbox(c,mxResources.get("includeCopyOfMyDiagram"),m,null,null,"jpeg"!=A),P=null!=this.pages&&1<this.pages.length,ba=this.addCheckbox(c,P?mxResources.get("allPages"):"",P,!P,null,"jpeg"!=A);ba.style.marginLeft="24px";ba.style.marginBottom="16px";P||(ba.style.display="none");mxEvent.addListener(O,"change",function(){O.checked&&P?ba.removeAttribute("disabled"):
+!0:v.checked,y.checked,H.getLink(),D.checked,null!=m?m.value:null,null!=u?u.value:null)}),null,mxResources.get("create"),e);this.showDialog(b.container,340,254+a,!0,!0);null!=m?(m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select():document.execCommand("selectAll",!1,null)):p.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,d,f,n){var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,
+mxResources.get("image"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(n?"10":"4")+"px";c.appendChild(e);if(n){mxUtils.write(c,mxResources.get("zoom")+":");var k=document.createElement("input");k.setAttribute("type","text");k.style.marginRight="16px";k.style.width="60px";k.style.marginLeft="4px";k.style.marginRight="12px";k.value=this.lastExportZoom||"100%";c.appendChild(k);mxUtils.write(c,mxResources.get("borderWidth")+":");var l=document.createElement("input");l.setAttribute("type",
+"text");l.style.marginRight="16px";l.style.width="60px";l.style.marginLeft="4px";l.value=this.lastExportBorder||"0";c.appendChild(l);mxUtils.br(c)}var t=this.addCheckbox(c,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),x=f?null:this.addCheckbox(c,mxResources.get("includeCopyOfMyDiagram"),!0),e=this.editor.graph,m=f?null:this.addCheckbox(c,mxResources.get("transparentBackground"),e.background==mxConstants.NONE||null==e.background);null!=m&&(m.style.marginBottom="16px");a=
+new CustomDialog(this,c,mxUtils.bind(this,function(){var a=parseInt(k.value)/100||1,c=parseInt(l.value)||0;d(!t.checked,null!=x?x.checked:!1,null!=m?m.checked:!1,a,c)}),null,a,b);this.showDialog(a.container,300,(n?25:0)+(f?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,d,f,l,g,m,A){m=null!=m?m:!0;var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=this.editor.graph,k="jpeg"==A?196:300,n=document.createElement("h3");mxUtils.write(n,a);n.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";
+c.appendChild(n);mxUtils.write(c,mxResources.get("zoom")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.style.marginRight="12px";t.value=this.lastExportZoom||"100%";c.appendChild(t);mxUtils.write(c,mxResources.get("borderWidth")+":");var z=document.createElement("input");z.setAttribute("type","text");z.style.marginRight="16px";z.style.width="60px";z.style.marginLeft="4px";z.value=this.lastExportBorder||
+"0";c.appendChild(z);mxUtils.br(c);var p=this.addCheckbox(c,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=A),v=this.addCheckbox(c,mxResources.get("selectionOnly"),!1,e.isSelectionEmpty()),y=document.createElement("input");y.style.marginTop="16px";y.style.marginRight="8px";y.style.marginLeft="24px";y.setAttribute("disabled","disabled");y.setAttribute("type","checkbox");g&&(c.appendChild(y),mxUtils.write(c,mxResources.get("crop")),mxUtils.br(c),k+=26,mxEvent.addListener(v,"change",function(){v.checked?
+y.removeAttribute("disabled"):y.setAttribute("disabled","disabled")}));e.isSelectionEmpty()||(y.setAttribute("checked","checked"),y.defaultChecked=!0);var B=this.addCheckbox(c,mxResources.get("shadow"),e.shadowVisible),D=document.createElement("input");D.style.marginTop="16px";D.style.marginRight="8px";D.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||D.setAttribute("disabled","disabled");b&&(c.appendChild(D),mxUtils.write(c,mxResources.get("embedImages")),mxUtils.br(c),k+=
+26);var L=null;if("png"==A||"jpeg"==A)L=this.addCheckbox(c,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),k+=26;var O=this.addCheckbox(c,mxResources.get("includeCopyOfMyDiagram"),m,null,null,"jpeg"!=A),P=null!=this.pages&&1<this.pages.length,ba=this.addCheckbox(c,P?mxResources.get("allPages"):"",P,!P,null,"jpeg"!=A);ba.style.marginLeft="24px";ba.style.marginBottom="16px";P||(ba.style.display="none");mxEvent.addListener(O,"change",function(){O.checked&&P?ba.removeAttribute("disabled"):
 ba.setAttribute("disabled","disabled")});m&&P||ba.setAttribute("disabled","disabled");var W=document.createElement("select");W.style.maxWidth="260px";W.style.marginLeft="8px";W.style.marginRight="10px";W.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));W.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));W.appendChild(a);a=document.createElement("option");
-a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));W.appendChild(a);"svg"==A&&(mxUtils.write(c,mxResources.get("links")+":"),c.appendChild(W),mxUtils.br(c),mxUtils.br(c),g+=26);d=new CustomDialog(this,c,mxUtils.bind(this,function(){this.lastExportBorder=z.value;this.lastExportZoom=u.value;k(u.value,p.checked,!v.checked,B.checked,O.checked,D.checked,z.value,y.checked,!ba.checked,W.value,null!=L?L.checked:null)}),null,d,f);this.showDialog(d.container,340,g,!0,!0,null,
-null,null,null,!0);u.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?u.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,d,f,k){var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=this.editor.graph;if(null!=b){var g=document.createElement("h3");mxUtils.write(g,b);g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";c.appendChild(g)}var n=this.addCheckbox(c,mxResources.get("fit"),
-!0),u=this.addCheckbox(c,mxResources.get("shadow"),e.shadowVisible&&f,!f),m=this.addCheckbox(c,d),p=this.addCheckbox(c,mxResources.get("lightbox"),!0),t=this.addEditButton(c,p),v=t.getEditInput(),y=1<e.model.getChildCount(e.model.getRoot()),B=this.addCheckbox(c,mxResources.get("layers"),y,!y);B.style.marginLeft=v.style.marginLeft;B.style.marginBottom="12px";B.style.marginTop="8px";mxEvent.addListener(p,"change",function(){p.checked?(y&&B.removeAttribute("disabled"),v.removeAttribute("disabled")):
-(B.setAttribute("disabled","disabled"),v.setAttribute("disabled","disabled"));v.checked&&p.checked?t.getEditSelect().removeAttribute("disabled"):t.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,c,mxUtils.bind(this,function(){a(n.checked,u.checked,m.checked,p.checked,t.getLink(),B.checked)}),null,mxResources.get("embed"),k);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,d,f,k,l,m,p){function c(c){var b=" ",g="";f&&(b=" 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.drawHost+"/?client=1&lightbox=1"+(k?"&edit=_blank":"")+(l?"&layers=1":"")+"');}})(this);\"",g+="cursor:pointer;");a&&(g+="max-width:100%;");var n="";d&&(n=' width="'+Math.round(e.width)+'" height="'+Math.round(e.height)+'"');m('<img src="'+c+'"'+n+(""!=g?' style="'+g+'"':"")+b+"/>")}var e=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=f?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");c(a)}),null,null,null,
-mxUtils.bind(this,function(a){p({message:mxResources.get("unknownError")})}),null,!0,d?2:1,null,b);else if(b=this.getFileData(!0),e.width*e.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var g="";d&&(g="&w="+Math.round(2*e.width)+"&h="+Math.round(2*e.height));var n=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(f?"1":"0")+g+"&xml="+encodeURIComponent(b));n.send(mxUtils.bind(this,function(){200<=n.getStatus()&&299>=n.getStatus()?c("data:image/png;base64,"+n.getText()):p({message:mxResources.get("unknownError")})}))}else p({message:mxResources.get("drawingTooLarge")})};
-EditorUi.prototype.createEmbedSvg=function(a,b,d,f,k,l,m){var c=this.editor.graph.getSvg(),e=c.getElementsByTagName("a");if(null!=e)for(var g=0;g<e.length;g++){var n=e[g].getAttribute("href");null!=n&&"#"==n.charAt(0)&&"_blank"==e[g].getAttribute("target")&&e[g].removeAttribute("target")}f&&c.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(c);if(d){var u=" ",t="";f&&(u="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.drawHost+"/?client=1&lightbox=1"+(k?"&edit=_blank":"")+(l?"&layers=1":"")+"');}})(this);\"",t+="cursor:pointer;");a&&(t+="max-width:100%;");this.convertImages(c,mxUtils.bind(this,function(a){m('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=t?' style="'+t+'"':"")+u+"/>")}))}else t="",f&&(c.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.drawHost+"/?client=1&lightbox=1"+(k?"&edit=_blank":"")+(l?"&layers=1":"")+"');}}})(this);"),t+="cursor:pointer;"),a&&(a=parseInt(c.getAttribute("width")),b=parseInt(c.getAttribute("height")),c.setAttribute("viewBox","-0.5 -0.5 "+a+" "+b),t+="max-width:100%;max-height:"+b+"px;",c.removeAttribute("height")),""!=t&&c.setAttribute("style",t),m(mxUtils.getXml(c))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date-a)/1E3);var c=Math.floor(a/31536E3);if(1<c)return c+" "+mxResources.get("years");
+a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));W.appendChild(a);"svg"==A&&(mxUtils.write(c,mxResources.get("links")+":"),c.appendChild(W),mxUtils.br(c),mxUtils.br(c),k+=26);d=new CustomDialog(this,c,mxUtils.bind(this,function(){this.lastExportBorder=z.value;this.lastExportZoom=t.value;l(t.value,p.checked,!v.checked,B.checked,O.checked,D.checked,z.value,y.checked,!ba.checked,W.value,null!=L?L.checked:null)}),null,d,f);this.showDialog(d.container,340,k,!0,!0,null,
+null,null,null,!0);t.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?t.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,d,f,l){var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=this.editor.graph;if(null!=b){var k=document.createElement("h3");mxUtils.write(k,b);k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";c.appendChild(k)}var n=this.addCheckbox(c,mxResources.get("fit"),
+!0),t=this.addCheckbox(c,mxResources.get("shadow"),e.shadowVisible&&f,!f),m=this.addCheckbox(c,d),p=this.addCheckbox(c,mxResources.get("lightbox"),!0),u=this.addEditButton(c,p),v=u.getEditInput(),y=1<e.model.getChildCount(e.model.getRoot()),B=this.addCheckbox(c,mxResources.get("layers"),y,!y);B.style.marginLeft=v.style.marginLeft;B.style.marginBottom="12px";B.style.marginTop="8px";mxEvent.addListener(p,"change",function(){p.checked?(y&&B.removeAttribute("disabled"),v.removeAttribute("disabled")):
+(B.setAttribute("disabled","disabled"),v.setAttribute("disabled","disabled"));v.checked&&p.checked?u.getEditSelect().removeAttribute("disabled"):u.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,c,mxUtils.bind(this,function(){a(n.checked,t.checked,m.checked,p.checked,u.getLink(),B.checked)}),null,mxResources.get("embed"),l);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,d,f,l,g,m,p){function c(c){var b=" ",k="";f&&(b=" 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.drawHost+"/?client=1&lightbox=1"+(l?"&edit=_blank":"")+(g?"&layers=1":"")+"');}})(this);\"",k+="cursor:pointer;");a&&(k+="max-width:100%;");var n="";d&&(n=' width="'+Math.round(e.width)+'" height="'+Math.round(e.height)+'"');m('<img src="'+c+'"'+n+(""!=k?' style="'+k+'"':"")+b+"/>")}var e=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=f?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");c(a)}),null,null,null,
+mxUtils.bind(this,function(a){p({message:mxResources.get("unknownError")})}),null,!0,d?2:1,null,b);else if(b=this.getFileData(!0),e.width*e.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var k="";d&&(k="&w="+Math.round(2*e.width)+"&h="+Math.round(2*e.height));var n=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(f?"1":"0")+k+"&xml="+encodeURIComponent(b));n.send(mxUtils.bind(this,function(){200<=n.getStatus()&&299>=n.getStatus()?c("data:image/png;base64,"+n.getText()):p({message:mxResources.get("unknownError")})}))}else p({message:mxResources.get("drawingTooLarge")})};
+EditorUi.prototype.createEmbedSvg=function(a,b,d,f,l,g,m){var c=this.editor.graph.getSvg(),e=c.getElementsByTagName("a");if(null!=e)for(var k=0;k<e.length;k++){var n=e[k].getAttribute("href");null!=n&&"#"==n.charAt(0)&&"_blank"==e[k].getAttribute("target")&&e[k].removeAttribute("target")}f&&c.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(c);if(d){var t=" ",u="";f&&(t="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.drawHost+"/?client=1&lightbox=1"+(l?"&edit=_blank":"")+(g?"&layers=1":"")+"');}})(this);\"",u+="cursor:pointer;");a&&(u+="max-width:100%;");this.convertImages(c,mxUtils.bind(this,function(a){m('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=u?' style="'+u+'"':"")+t+"/>")}))}else u="",f&&(c.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.drawHost+"/?client=1&lightbox=1"+(l?"&edit=_blank":"")+(g?"&layers=1":"")+"');}}})(this);"),u+="cursor:pointer;"),a&&(a=parseInt(c.getAttribute("width")),b=parseInt(c.getAttribute("height")),c.setAttribute("viewBox","-0.5 -0.5 "+a+" "+b),u+="max-width:100%;max-height:"+b+"px;",c.removeAttribute("height")),""!=u&&c.setAttribute("style",u),m(mxUtils.getXml(c))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date-a)/1E3);var c=Math.floor(a/31536E3);if(1<c)return c+" "+mxResources.get("years");
 c=Math.floor(a/2592E3);if(1<c)return c+" "+mxResources.get("months");c=Math.floor(a/86400);if(1<c)return c+" "+mxResources.get("days");c=Math.floor(a/3600);if(1<c)return c+" "+mxResources.get("hours");c=Math.floor(a/60);return 1<c?c+" "+mxResources.get("minutes"):1==c?c+" "+mxResources.get("minute"):null};EditorUi.prototype.convertMath=function(a,b,d,f){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this,
-function(){f()}))}),0)):f()};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var c=null;if("diagram"==a.nodeName)c=a;else if("mxfile"==a.nodeName){var d=a.getElementsByTagName("diagram");if(0<d.length){var c=d[0],e=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?c.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:e.apply(this,arguments)}}}null!=c&&(a=Editor.parseDiagramNode(c))}d=this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(l){}finally{this.editor.graph=
-d}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,d){try{var c=this.editor.graph,e=null;if(null!=d&&0<d.length)c=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(c.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(d).documentElement,!0),c),e=d;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var c=this.createTemporaryGraph(c.getStylesheet()),f=c.getGlobalVariable,g=this.pages[0];c.getGlobalVariable=function(a){return"page"==
-a?g.getName():"pagenumber"==a?1:f.apply(this,arguments)};document.body.appendChild(c.container);c.model.setRoot(g.root)}this.exportToCanvas(mxUtils.bind(this,function(d){try{null==e&&(e=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var f=d.toDataURL("image/png"),f=this.writeGraphModelToPng(f,"tEXt","mxfile",encodeURIComponent(e));a(f.substring(f.lastIndexOf(",")+1));c!=this.editor.graph&&c.container.parentNode.removeChild(c.container)}catch(E){null!=b&&b(E)}}),null,null,null,mxUtils.bind(this,
-function(a){null!=b&&b(a)}),null,null,null,null,c.shadowVisible,null,c)}catch(A){null!=b&&b(A)}};EditorUi.prototype.getEmbeddedSvg=function(a,b,d,f,k,l,m){m=b.background;m==mxConstants.NONE&&(m=null);l=b.getSvg(m,null,null,null,null,l);b.shadowVisible&&b.addSvgShadow(l);null!=a&&l.setAttribute("content",a);null!=d&&l.setAttribute("resource",d);if(null!=k)this.convertImages(l,mxUtils.bind(this,function(a){k((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
-mxUtils.getXml(a))}));else return(f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(l)};EditorUi.prototype.exportImage=function(a,b,d,f,k,l,m,p,q,v,x){q=null!=q?q:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var c=this.editor.graph.isSelectionEmpty();d=null!=d?d:c;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,
-function(a){this.spinner.stop();try{this.saveCanvas(a,k?this.getFileData(!0,null,null,null,d,p):null,q,null==this.pages||0==this.pages.length,x)}catch(C){"Invalid image"==C.message?this.downloadFile(q):this.handleError(C)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,d,a||1,b,f,null,null,l,m,v)}catch(t){this.spinner.stop(),this.handleError(t)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var c=
-function(a){return a.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")},b=this.editor.fontCss.split("url("),d=0,f={},l=mxUtils.bind(this,function(){if(0==d){for(var e=[b[0]],g=1;g<b.length;g++){var l=b[g].indexOf(")");e.push('url("');e.push(f[c(b[g].substring(0,l))]);e.push('"'+b[g].substring(l))}this.editor.resolvedFontCss=e.join("");a()}});if(0<b.length)for(var k=1;k<b.length;k++){var m=b[k].indexOf(")"),q=null,p=b[k].indexOf("format(",m);0<p&&(q=c(b[k].substring(p+7,b[k].indexOf(")",
+function(){f()}))}),0)):f()};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var c=null;if("diagram"==a.nodeName)c=a;else if("mxfile"==a.nodeName){var d=a.getElementsByTagName("diagram");if(0<d.length){var c=d[0],e=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?c.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:e.apply(this,arguments)}}}null!=c&&(a=Editor.parseDiagramNode(c))}d=this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(g){}finally{this.editor.graph=
+d}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,d){try{var c=this.editor.graph,e=null;if(null!=d&&0<d.length)c=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(c.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(d).documentElement,!0),c),e=d;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var c=this.createTemporaryGraph(c.getStylesheet()),f=c.getGlobalVariable,k=this.pages[0];c.getGlobalVariable=function(a){return"page"==
+a?k.getName():"pagenumber"==a?1:f.apply(this,arguments)};document.body.appendChild(c.container);c.model.setRoot(k.root)}this.exportToCanvas(mxUtils.bind(this,function(d){try{null==e&&(e=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var f=d.toDataURL("image/png"),f=this.writeGraphModelToPng(f,"tEXt","mxfile",encodeURIComponent(e));a(f.substring(f.lastIndexOf(",")+1));c!=this.editor.graph&&c.container.parentNode.removeChild(c.container)}catch(F){null!=b&&b(F)}}),null,null,null,mxUtils.bind(this,
+function(a){null!=b&&b(a)}),null,null,null,null,c.shadowVisible,null,c)}catch(A){null!=b&&b(A)}};EditorUi.prototype.getEmbeddedSvg=function(a,b,d,f,l,g,m){m=b.background;m==mxConstants.NONE&&(m=null);g=b.getSvg(m,null,null,null,null,g);b.shadowVisible&&b.addSvgShadow(g);null!=a&&g.setAttribute("content",a);null!=d&&g.setAttribute("resource",d);if(null!=l)this.convertImages(g,mxUtils.bind(this,function(a){l((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
+mxUtils.getXml(a))}));else return(f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(g)};EditorUi.prototype.exportImage=function(a,b,d,f,l,g,m,p,q,v,x){q=null!=q?q:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var c=this.editor.graph.isSelectionEmpty();d=null!=d?d:c;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,
+function(a){this.spinner.stop();try{this.saveCanvas(a,l?this.getFileData(!0,null,null,null,d,p):null,q,null==this.pages||0==this.pages.length,x)}catch(C){"Invalid image"==C.message?this.downloadFile(q):this.handleError(C)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,d,a||1,b,f,null,null,g,m,v)}catch(u){this.spinner.stop(),this.handleError(u)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var c=
+function(a){return a.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")},b=this.editor.fontCss.split("url("),d=0,f={},g=mxUtils.bind(this,function(){if(0==d){for(var e=[b[0]],k=1;k<b.length;k++){var g=b[k].indexOf(")");e.push('url("');e.push(f[c(b[k].substring(0,g))]);e.push('"'+b[k].substring(g))}this.editor.resolvedFontCss=e.join("");a()}});if(0<b.length)for(var l=1;l<b.length;l++){var m=b[l].indexOf(")"),q=null,p=b[l].indexOf("format(",m);0<p&&(q=c(b[l].substring(p+7,b[l].indexOf(")",
 p))));mxUtils.bind(this,function(a){if(null==f[a]){f[a]=a;d++;var c="application/x-font-ttf";if("svg"==q||/(\.svg)($|\?)/i.test(a))c="image/svg+xml";else if("otf"==q||"embedded-opentype"==q||/(\.otf)($|\?)/i.test(a))c="application/x-font-opentype";else if("woff"==q||/(\.woff)($|\?)/i.test(a))c="application/font-woff";else if("woff2"==q||/(\.woff2)($|\?)/i.test(a))c="application/font-woff2";else if("eot"==q||/(\.eot)($|\?)/i.test(a))c="application/vnd.ms-fontobject";else if("sfnt"==q||/(\.sfnt)($|\?)/i.test(a))c=
-"application/font-sfnt";var b=a;/^https?:\/\//.test(b)&&!this.editor.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(c){f[a]=c;d--;l()}),mxUtils.bind(this,function(a){d--;l()}),!0,null,"data:"+c+";charset=utf-8;base64,")}})(c(b[k].substring(0,m)),q)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,d,f,k,l,m,p,q,v,x,y,t,C,B){try{l=null!=l?l:!0;m=null!=m?m:!0;y=null!=y?y:this.editor.graph;t=null!=t?t:0;var c=q?null:y.background;
-c==mxConstants.NONE&&(c=null);null==c&&(c=f);null==c&&0==q&&(c="#ffffff");this.convertImages(y.getSvg(null,null,null,C,null,m,null,null,null,v),mxUtils.bind(this,function(d){var e=new Image;e.onload=mxUtils.bind(this,function(){try{var f=function(){mxClient.IS_SF?window.setTimeout(function(){q.drawImage(e,t/p,t/p);a(g)},0):(q.drawImage(e,t/p,t/p),a(g))},g=document.createElement("canvas"),n=parseInt(d.getAttribute("width")),u=parseInt(d.getAttribute("height"));p=null!=p?p:1;null!=b&&(p=l?Math.min(1,
-Math.min(3*b/(4*u),b/n)):b/n);n=Math.ceil(p*n)+2*t;u=Math.ceil(p*u)+2*t;g.setAttribute("width",n);g.setAttribute("height",u);var q=g.getContext("2d");null!=c&&(q.beginPath(),q.rect(0,0,n,u),q.fillStyle=c,q.fill());q.scale(p,p);if(B){var m=y.view,x=btoa(unescape(encodeURIComponent(m.createSvgGrid(m.gridColor)))),x="data:image/svg+xml;base64,"+x,z=y.gridSize*m.gridSteps*p,A=y.getGraphBounds(),D=A.x*p,v=A.y*p,C=new Image;C.src=x;C.onload=function(){for(var a=-Math.round(z-mxUtils.mod(m.translate.x*p-
-D,z)),c=-Math.round(z-mxUtils.mod(m.translate.y*p-v,z));a<n;a+=z)for(var b=c;b<u;b+=z)q.drawImage(C,a/p,b/p);f()}}else f()}catch(V){null!=k&&k(V)}});e.onerror=function(a){null!=k&&k(a)};try{v&&this.editor.graph.addSvgShadow(d);var f=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;d.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(y,d,!0,mxUtils.bind(this,
-function(){e.src=this.createSvgDataUri(mxUtils.getXml(d))}))});this.loadFonts(f)}catch(L){null!=k&&k(L)}}),d,x)}catch(H){null!=k&&k(H)}};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,d=this;a.convert=function(c){if(null!=c){var e="http://"==c.substring(0,7)||"https://"==c.substring(0,8);e&&!navigator.onLine?c=d.svgBrokenImage.src:!e||c.substring(0,a.baseUrl.length)==a.baseUrl||d.crossOriginImages&&d.editor.isCorsEnabledForUrl(c)?"chrome-extension://"==
-c.substring(0,19)||mxClient.IS_CHROMEAPP||(c=b.apply(this,arguments)):c=PROXY_URL+"?url="+encodeURIComponent(c)}return c};return a};EditorUi.prototype.convertImages=function(a,b,d,f){null==f&&(f=this.createImageUrlConverter());var c=0,e=d||{};d=mxUtils.bind(this,function(d,g){for(var l=a.getElementsByTagName(d),k=0;k<l.length;k++)mxUtils.bind(this,function(d){try{if(null!=d){var l=f.convert(d.getAttribute(g));if(null!=l&&"data:"!=l.substring(0,5)){var k=e[l];null==k?(c++,this.convertImageToDataUri(l,
-function(f){null!=f&&(e[l]=f,d.setAttribute(g,f));c--;0==c&&b(a)})):d.setAttribute(g,k)}else null!=l&&d.setAttribute(g,l)}}catch(C){}})(l[k])});d("image","xlink:href");d("img","src");0==c&&b(a)};EditorUi.prototype.loadUrl=function(a,b,d,f,k,l,m){try{var c=!m&&(f||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a));k=null!=k?k:!0;var e=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var e=a.getText();
-if(c){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var e=Array(a.length),f=0;f<a.length;f++)e[f]=String.fromCharCode(a[f]);e=e.join("")}l=null!=l?l:"data:image/png;base64,";e=l+this.base64Encode(e)}b(e)}}else null!=d&&d({message:mxResources.get("error")+" "+a.getStatus()},a)}),function(a){null!=d&&d({message:mxResources.get("error")+" "+a.getStatus()})},c,this.timeout,function(){k&&
-null!=d&&d({code:App.ERROR_TIMEOUT,retry:e})})});e()}catch(E){null!=d&&d(E)}};EditorUi.prototype.isCorsEnabledForUrl=function(a){return this.editor.isCorsEnabledForUrl(a)};EditorUi.prototype.convertImageToDataUri=function(a,b){try{var c=!0,d=window.setTimeout(mxUtils.bind(this,function(){c=!1;b(this.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){window.clearTimeout(d);c&&b(this.createSvgDataUri(a.getText()))}),function(){window.clearTimeout(d);
-c&&b(this.svgBrokenImage.src)});else{var e=new Image,f=this;this.crossOriginImages&&(e.crossOrigin="anonymous");e.onload=function(){window.clearTimeout(d);if(c)try{var a=document.createElement("canvas"),g=a.getContext("2d");a.height=e.height;a.width=e.width;g.drawImage(e,0,0);b(a.toDataURL())}catch(q){b(f.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(d);c&&b(f.svgBrokenImage.src)};e.src=a}}catch(z){b(this.svgBrokenImage.src)}};EditorUi.prototype.importXml=function(a,b,d,f,k){b=null!=
-b?b:0;d=null!=d?d:0;var c=[];try{var e=this.editor.graph;if(null!=a&&0<a.length){e.model.beginUpdate();try{var g=mxUtils.parseXml(a),n=this.editor.extractGraphModel(g.documentElement,null!=this.pages);if(null!=n&&"mxfile"==n.nodeName&&null!=this.pages){var u=n.getElementsByTagName("diagram");if(1==u.length)n=Editor.parseDiagramNode(u[0]);else if(1<u.length){a={};var g=[],m=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(n=Editor.parseDiagramNode(u[0]),f=!1,m=1);for(;m<u.length;m++){var p=
-u[m].getAttribute("id");u[m].removeAttribute("id");var t=this.updatePageRoot(new DiagramPage(u[m]));a[p]=u[m].getAttribute("id");var v=this.pages.length;null==t.getName()&&t.setName(mxResources.get("pageWithNumber",[v+1]));e.model.execute(new ChangePage(this,t,t,v,!0));g.push(t)}this.updatePageLinks(a,g)}}null!=n&&"mxGraphModel"===n.nodeName&&(c=e.importGraphModel(n,b,d,f))}finally{e.model.endUpdate()}}}catch(K){if(k)throw K;this.handleError(K)}return c};EditorUi.prototype.updatePageLinks=function(a,
-b){for(var c=0;c<b.length;c++)this.updatePageLinksForCell(a,b[c].root)};EditorUi.prototype.updatePageLinksForCell=function(a,b){var c=document.createElement("div"),d=this.editor.graph,e=d.getLinkForCell(b);null!=e&&d.setLinkForCell(b,this.updatePageLink(a,e));if(d.isHtmlLabel(b)){c.innerHTML=d.getLabel(b);for(var f=c.getElementsByTagName("a"),k=!1,m=0;m<f.length;m++)e=f[m].getAttribute("href"),null!=e&&(f[m].setAttribute("href",this.updatePageLink(a,e)),k=!0);k&&d.labelChanged(b,c.innerHTML)}for(m=
+"application/font-sfnt";var b=a;/^https?:\/\//.test(b)&&!this.editor.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(c){f[a]=c;d--;g()}),mxUtils.bind(this,function(a){d--;g()}),!0,null,"data:"+c+";charset=utf-8;base64,")}})(c(b[l].substring(0,m)),q)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,d,f,l,g,m,p,q,v,x,E,u,C,y){try{g=null!=g?g:!0;m=null!=m?m:!0;E=null!=E?E:this.editor.graph;u=null!=u?u:0;var c=q?null:E.background;
+c==mxConstants.NONE&&(c=null);null==c&&(c=f);null==c&&0==q&&(c="#ffffff");this.convertImages(E.getSvg(null,null,null,C,null,m,null,null,null,v),mxUtils.bind(this,function(d){var e=new Image;e.onload=mxUtils.bind(this,function(){try{var f=function(){mxClient.IS_SF?window.setTimeout(function(){q.drawImage(e,u/p,u/p);a(k)},0):(q.drawImage(e,u/p,u/p),a(k))},k=document.createElement("canvas"),n=parseInt(d.getAttribute("width")),t=parseInt(d.getAttribute("height"));p=null!=p?p:1;null!=b&&(p=g?Math.min(1,
+Math.min(3*b/(4*t),b/n)):b/n);n=Math.ceil(p*n)+2*u;t=Math.ceil(p*t)+2*u;k.setAttribute("width",n);k.setAttribute("height",t);var q=k.getContext("2d");null!=c&&(q.beginPath(),q.rect(0,0,n,t),q.fillStyle=c,q.fill());q.scale(p,p);if(y){var m=E.view,x=btoa(unescape(encodeURIComponent(m.createSvgGrid(m.gridColor)))),x="data:image/svg+xml;base64,"+x,z=E.gridSize*m.gridSteps*p,A=E.getGraphBounds(),D=A.x*p,v=A.y*p,F=new Image;F.src=x;F.onload=function(){for(var a=-Math.round(z-mxUtils.mod(m.translate.x*p-
+D,z)),c=-Math.round(z-mxUtils.mod(m.translate.y*p-v,z));a<n;a+=z)for(var b=c;b<t;b+=z)q.drawImage(F,a/p,b/p);f()}}else f()}catch(V){null!=l&&l(V)}});e.onerror=function(a){null!=l&&l(a)};try{v&&this.editor.graph.addSvgShadow(d);var f=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;d.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(E,d,!0,mxUtils.bind(this,
+function(){e.src=this.createSvgDataUri(mxUtils.getXml(d))}))});this.loadFonts(f)}catch(L){null!=l&&l(L)}}),d,x)}catch(H){null!=l&&l(H)}};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,d=this;a.convert=function(c){if(null!=c){var e="http://"==c.substring(0,7)||"https://"==c.substring(0,8);e&&!navigator.onLine?c=d.svgBrokenImage.src:!e||c.substring(0,a.baseUrl.length)==a.baseUrl||d.crossOriginImages&&d.editor.isCorsEnabledForUrl(c)?"chrome-extension://"==
+c.substring(0,19)||mxClient.IS_CHROMEAPP||(c=b.apply(this,arguments)):c=PROXY_URL+"?url="+encodeURIComponent(c)}return c};return a};EditorUi.prototype.convertImages=function(a,b,d,f){null==f&&(f=this.createImageUrlConverter());var c=0,e=d||{};d=mxUtils.bind(this,function(d,k){for(var g=a.getElementsByTagName(d),l=0;l<g.length;l++)mxUtils.bind(this,function(d){try{if(null!=d){var g=f.convert(d.getAttribute(k));if(null!=g&&"data:"!=g.substring(0,5)){var l=e[g];null==l?(c++,this.convertImageToDataUri(g,
+function(f){null!=f&&(e[g]=f,d.setAttribute(k,f));c--;0==c&&b(a)})):d.setAttribute(k,l)}else null!=g&&d.setAttribute(k,g)}}catch(C){}})(g[l])});d("image","xlink:href");d("img","src");0==c&&b(a)};EditorUi.prototype.loadUrl=function(a,b,d,f,l,g,m){try{var c=!m&&(f||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a));l=null!=l?l:!0;var e=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var e=a.getText();
+if(c){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var e=Array(a.length),f=0;f<a.length;f++)e[f]=String.fromCharCode(a[f]);e=e.join("")}g=null!=g?g:"data:image/png;base64,";e=g+this.base64Encode(e)}b(e)}}else null!=d&&d({message:mxResources.get("error")+" "+a.getStatus()},a)}),function(a){null!=d&&d({message:mxResources.get("error")+" "+a.getStatus()})},c,this.timeout,function(){l&&
+null!=d&&d({code:App.ERROR_TIMEOUT,retry:e})})});e()}catch(F){null!=d&&d(F)}};EditorUi.prototype.isCorsEnabledForUrl=function(a){return this.editor.isCorsEnabledForUrl(a)};EditorUi.prototype.convertImageToDataUri=function(a,b){try{var c=!0,d=window.setTimeout(mxUtils.bind(this,function(){c=!1;b(this.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){window.clearTimeout(d);c&&b(this.createSvgDataUri(a.getText()))}),function(){window.clearTimeout(d);
+c&&b(this.svgBrokenImage.src)});else{var e=new Image,f=this;this.crossOriginImages&&(e.crossOrigin="anonymous");e.onload=function(){window.clearTimeout(d);if(c)try{var a=document.createElement("canvas"),k=a.getContext("2d");a.height=e.height;a.width=e.width;k.drawImage(e,0,0);b(a.toDataURL())}catch(q){b(f.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(d);c&&b(f.svgBrokenImage.src)};e.src=a}}catch(z){b(this.svgBrokenImage.src)}};EditorUi.prototype.importXml=function(a,b,d,f,l){b=null!=
+b?b:0;d=null!=d?d:0;var c=[];try{var e=this.editor.graph;if(null!=a&&0<a.length){e.model.beginUpdate();try{var k=mxUtils.parseXml(a),n=this.editor.extractGraphModel(k.documentElement,null!=this.pages);if(null!=n&&"mxfile"==n.nodeName&&null!=this.pages){var t=n.getElementsByTagName("diagram");if(1==t.length)n=Editor.parseDiagramNode(t[0]);else if(1<t.length){a={};var k=[],m=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(n=Editor.parseDiagramNode(t[0]),f=!1,m=1);for(;m<t.length;m++){var p=
+t[m].getAttribute("id");t[m].removeAttribute("id");var u=this.updatePageRoot(new DiagramPage(t[m]));a[p]=t[m].getAttribute("id");var v=this.pages.length;null==u.getName()&&u.setName(mxResources.get("pageWithNumber",[v+1]));e.model.execute(new ChangePage(this,u,u,v,!0));k.push(u)}this.updatePageLinks(a,k)}}null!=n&&"mxGraphModel"===n.nodeName&&(c=e.importGraphModel(n,b,d,f))}finally{e.model.endUpdate()}}}catch(K){if(l)throw K;this.handleError(K)}return c};EditorUi.prototype.updatePageLinks=function(a,
+b){for(var c=0;c<b.length;c++)this.updatePageLinksForCell(a,b[c].root)};EditorUi.prototype.updatePageLinksForCell=function(a,b){var c=document.createElement("div"),d=this.editor.graph,e=d.getLinkForCell(b);null!=e&&d.setLinkForCell(b,this.updatePageLink(a,e));if(d.isHtmlLabel(b)){c.innerHTML=d.getLabel(b);for(var f=c.getElementsByTagName("a"),l=!1,m=0;m<f.length;m++)e=f[m].getAttribute("href"),null!=e&&(f[m].setAttribute("href",this.updatePageLink(a,e)),l=!0);l&&d.labelChanged(b,c.innerHTML)}for(m=
 0;m<d.model.getChildCount(b);m++)this.updatePageLinksForCell(a,d.model.getChildAt(b,m))};EditorUi.prototype.updatePageLink=function(a,b){if("data:page/id,"==b.substring(0,13)){var c=a[b.substring(b.indexOf(",")+1)];b=null!=c?"data:page/id,"+c:null}else if("data:action/json,"==b.substring(0,17))try{var d=JSON.parse(b.substring(17));if(null!=d.actions){for(var e=0;e<d.actions.length;e++){var f=d.actions[e];null!=f.open&&"data:page/id,"==f.open.substring(0,13)&&(c=a[f.open.substring(f.open.indexOf(",")+
 1)],null!=c?f.open="data:page/id,"+c:delete f.open)}b="data:action/json,"+JSON.stringify(d)}}catch(z){}return b};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,d,f){f=null!=f?f:a.name;d=null!=d?d:mxUtils.bind(this,function(a){this.handleError(a)});var c=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var c=this.isRemoteVisioFormat(f);try{var e="UNKNOWN-VISIO",
-g=f.lastIndexOf(".");0<=g&&g<f.length&&(e=f.substring(g+1).toUpperCase());EditorUi.logEvent({category:e+"-MS-IMPORT-FILE",action:"filename_"+f,label:c?"remote":"local"})}catch(E){}if(c)if(null!=VSD_CONVERT_URL){c=new FormData;c.append("file1",a,f);var k=new XMLHttpRequest;k.open("POST",VSD_CONVERT_URL);k.responseType="blob";this.addRemoteServiceSecurityCheck(k);k.onreadystatechange=mxUtils.bind(this,function(){if(4==k.readyState)if(200<=k.status&&299>=k.status)try{var a=k.response;if("text/xml"==
-a.type){var c=new FileReader;c.onload=mxUtils.bind(this,function(a){try{b(a.target.result)}catch(t){d({message:mxResources.get("errorLoadingFile")})}});c.readAsText(a)}else this.doImportVisio(a,b,d,f)}catch(F){d(F)}else d({})});k.send(c)}else d({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else try{this.doImportVisio(a,b,d,f)}catch(E){d(E)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});
+k=f.lastIndexOf(".");0<=k&&k<f.length&&(e=f.substring(k+1).toUpperCase());EditorUi.logEvent({category:e+"-MS-IMPORT-FILE",action:"filename_"+f,label:c?"remote":"local"})}catch(F){}if(c)if(null!=VSD_CONVERT_URL){c=new FormData;c.append("file1",a,f);var l=new XMLHttpRequest;l.open("POST",VSD_CONVERT_URL);l.responseType="blob";this.addRemoteServiceSecurityCheck(l);l.onreadystatechange=mxUtils.bind(this,function(){if(4==l.readyState)if(200<=l.status&&299>=l.status)try{var a=l.response;if("text/xml"==
+a.type){var c=new FileReader;c.onload=mxUtils.bind(this,function(a){try{b(a.target.result)}catch(u){d({message:mxResources.get("errorLoadingFile")})}});c.readAsText(a)}else this.doImportVisio(a,b,d,f)}catch(E){d(E)}else d({})});l.send(c)}else d({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else try{this.doImportVisio(a,b,d,f)}catch(F){d(F)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});
 this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?c():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",c))};EditorUi.prototype.importGraphML=function(a,b,d){d=null!=d?d:mxUtils.bind(this,function(a){this.handleError(a)});var c=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a,b,d)}catch(n){d(n)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||
 this.isOffline(!0)?c():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",c))};EditorUi.prototype.exportVisio=function(){var a=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams()||this.handleError({message:mxResources.get("unknownError")})}catch(e){this.handleError(e)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||
 this.loadingExtensions||this.isOffline(!0)?a():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",a))};EditorUi.prototype.convertLucidChart=function(a,b,d){var c=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter){try{EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+a.length})}catch(n){}try{b(LucidImporter.importState(JSON.parse(a)))}catch(n){d(n)}}else d({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==
 typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(c,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",c):mxscript("js/extensions.min.js",c))};EditorUi.prototype.generatePlantUmlImage=function(a,b,d,f){function c(a,c,b){c1=a>>2;c2=(a&3)<<4|c>>4;c3=(c&15)<<2|b>>6;c4=b&63;r="";r+=e(c1&63);r+=e(c2&63);r+=e(c3&63);return r+=e(c4&63)}function e(a){if(10>a)return String.fromCharCode(48+a);a-=10;if(26>a)return String.fromCharCode(65+
-a);a-=26;if(26>a)return String.fromCharCode(97+a);a-=26;return 0==a?"-":1==a?"_":"?"}var g=new XMLHttpRequest;g.open("GET",("txt"==b?PLANT_URL+"/txt/":"png"==b?PLANT_URL+"/png/":PLANT_URL+"/svg/")+function(a){r="";for(i=0;i<a.length;i+=3)r=i+2==a.length?r+c(a.charCodeAt(i),a.charCodeAt(i+1),0):i+1==a.length?r+c(a.charCodeAt(i),0,0):r+c(a.charCodeAt(i),a.charCodeAt(i+1),a.charCodeAt(i+2));return r}(pako.deflateRaw(a,{to:"string"})),!0);"txt"!=b&&(g.responseType="blob");g.onload=function(a){if(200<=
-this.status&&300>this.status)if("txt"==b)d(this.response);else{var c=new FileReader;c.readAsDataURL(this.response);c.onloadend=function(a){var b=new Image;b.onload=function(){var a=b.width,e=b.height;if(0==a&&0==e){var f=c.result,g=f.indexOf(","),f=decodeURIComponent(escape(atob(f.substring(g+1)))),f=mxUtils.parseXml(f).getElementsByTagName("svg");0<f.length&&(a=parseFloat(f[0].getAttribute("width")),e=parseFloat(f[0].getAttribute("height")))}d(c.result,a,e)};b.src=c.result};c.onerror=function(a){f(a)}}else f(a)};
-g.onerror=function(a){f(a)};g.send()};EditorUi.prototype.insertAsPreText=function(a,b,d){var c=this.editor.graph,e=null;c.getModel().beginUpdate();try{e=c.insertVertex(null,null,"<pre>"+a+"</pre>",b,d,1,1,"text;html=1;align=left;verticalAlign=top;"),c.updateCellSize(e,!0)}finally{c.getModel().endUpdate()}return e};EditorUi.prototype.insertTextAt=function(a,b,d,f,k,l,m){l=null!=l?l:!0;m=null!=m?m:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g,
-" ")],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,d,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(k||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var c=this.editor.graph;if("data:image/png;base64,"==a.substring(0,22)){var e=this.extractGraphModelFromPng(a),g=this.importXml(e,b,d,l,!0);if(0<g.length)return g}if("data:image/svg+xml;"==a.substring(0,
-19))try{if(e=null,"data:image/svg+xml;base64,"==a.substring(0,26)?(e=a.substring(a.indexOf(",")+1),e=window.atob&&!mxClient.IS_SF?atob(e):Base64.decode(e,!0)):e=decodeURIComponent(a.substring(a.indexOf(",")+1)),g=this.importXml(e,b,d,l,!0),0<g.length)return g}catch(x){}this.loadImage(a,mxUtils.bind(this,function(e){if("data:"==a.substring(0,5))this.resizeImage(e,a,mxUtils.bind(this,function(a,e,f){c.setSelectionCell(c.insertVertex(null,null,"",c.snap(b),c.snap(d),e,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
+a);a-=26;if(26>a)return String.fromCharCode(97+a);a-=26;return 0==a?"-":1==a?"_":"?"}var k=new XMLHttpRequest;k.open("GET",("txt"==b?PLANT_URL+"/txt/":"png"==b?PLANT_URL+"/png/":PLANT_URL+"/svg/")+function(a){r="";for(i=0;i<a.length;i+=3)r=i+2==a.length?r+c(a.charCodeAt(i),a.charCodeAt(i+1),0):i+1==a.length?r+c(a.charCodeAt(i),0,0):r+c(a.charCodeAt(i),a.charCodeAt(i+1),a.charCodeAt(i+2));return r}(pako.deflateRaw(a,{to:"string"})),!0);"txt"!=b&&(k.responseType="blob");k.onload=function(a){if(200<=
+this.status&&300>this.status)if("txt"==b)d(this.response);else{var c=new FileReader;c.readAsDataURL(this.response);c.onloadend=function(a){var b=new Image;b.onload=function(){var a=b.width,e=b.height;if(0==a&&0==e){var f=c.result,k=f.indexOf(","),f=decodeURIComponent(escape(atob(f.substring(k+1)))),f=mxUtils.parseXml(f).getElementsByTagName("svg");0<f.length&&(a=parseFloat(f[0].getAttribute("width")),e=parseFloat(f[0].getAttribute("height")))}d(c.result,a,e)};b.src=c.result};c.onerror=function(a){f(a)}}else f(a)};
+k.onerror=function(a){f(a)};k.send()};EditorUi.prototype.insertAsPreText=function(a,b,d){var c=this.editor.graph,e=null;c.getModel().beginUpdate();try{e=c.insertVertex(null,null,"<pre>"+a+"</pre>",b,d,1,1,"text;html=1;align=left;verticalAlign=top;"),c.updateCellSize(e,!0)}finally{c.getModel().endUpdate()}return e};EditorUi.prototype.insertTextAt=function(a,b,d,f,l,g,m){g=null!=g?g:!0;m=null!=m?m:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g,
+" ")],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,d,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(l||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var c=this.editor.graph;if("data:image/png;base64,"==a.substring(0,22)){var e=this.extractGraphModelFromPng(a),k=this.importXml(e,b,d,g,!0);if(0<k.length)return k}if("data:image/svg+xml;"==a.substring(0,
+19))try{if(e=null,"data:image/svg+xml;base64,"==a.substring(0,26)?(e=a.substring(a.indexOf(",")+1),e=window.atob&&!mxClient.IS_SF?atob(e):Base64.decode(e,!0)):e=decodeURIComponent(a.substring(a.indexOf(",")+1)),k=this.importXml(e,b,d,g,!0),0<k.length)return k}catch(x){}this.loadImage(a,mxUtils.bind(this,function(e){if("data:"==a.substring(0,5))this.resizeImage(e,a,mxUtils.bind(this,function(a,e,f){c.setSelectionCell(c.insertVertex(null,null,"",c.snap(b),c.snap(d),e,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
 this.convertDataUri(a)+";"))}),m,this.maxImageSize);else{var f=Math.min(1,Math.min(this.maxImageSize/e.width,this.maxImageSize/e.height)),g=Math.round(e.width*f);e=Math.round(e.height*f);c.setSelectionCell(c.insertVertex(null,null,"",c.snap(b),c.snap(d),g,e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";"))}}),mxUtils.bind(this,function(){var e=null;c.getModel().beginUpdate();try{e=c.insertVertex(c.getDefaultParent(),
-null,a,c.snap(b),c.snap(d),1,1,"text;"+(f?"html=1;":"")),c.updateCellSize(e),c.fireEvent(new mxEventObject("textInserted","cells",[e]))}finally{c.getModel().endUpdate()}c.setSelectionCell(e)}))}else{a=Graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,d,l);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,d,l))}),mxUtils.bind(this,function(a){this.handleError(a)}));
-else{c=this.editor.graph;k=null;c.getModel().beginUpdate();try{k=c.insertVertex(c.getDefaultParent(),null,"",c.snap(b),c.snap(d),1,1,"text;"+(f?"html=1;":"")),c.fireEvent(new mxEventObject("textInserted","cells",[k])),"<"==a.charAt(0)&&a.indexOf(">")==a.length-1&&(a=mxUtils.htmlEntities(a)),a.length>this.maxTextBytes&&(a=a.substring(0,this.maxTextBytes)+"..."),k.value=a,c.updateCellSize(k),/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i.test(k.value)&&
-c.setLinkForCell(k,k.value),k.geometry.width+=c.gridSize,k.geometry.height+=c.gridSize}finally{c.getModel().endUpdate()}return[k]}}return[]};EditorUi.prototype.formatFileSize=function(a){var c=-1;do a/=1024,c++;while(1024<a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[c]};EditorUi.prototype.convertDataUri=function(a){if("data:"==a.substring(0,5)){var c=a.indexOf(";");0<c&&(a=a.substring(0,c)+a.substring(a.indexOf(",",c+1)))}return a};EditorUi.prototype.isRemoteFileFormat=
+null,a,c.snap(b),c.snap(d),1,1,"text;"+(f?"html=1;":"")),c.updateCellSize(e),c.fireEvent(new mxEventObject("textInserted","cells",[e]))}finally{c.getModel().endUpdate()}c.setSelectionCell(e)}))}else{a=Graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,d,g);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,d,g))}),mxUtils.bind(this,function(a){this.handleError(a)}));
+else{c=this.editor.graph;l=null;c.getModel().beginUpdate();try{l=c.insertVertex(c.getDefaultParent(),null,"",c.snap(b),c.snap(d),1,1,"text;"+(f?"html=1;":"")),c.fireEvent(new mxEventObject("textInserted","cells",[l])),"<"==a.charAt(0)&&a.indexOf(">")==a.length-1&&(a=mxUtils.htmlEntities(a)),a.length>this.maxTextBytes&&(a=a.substring(0,this.maxTextBytes)+"..."),l.value=a,c.updateCellSize(l),/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i.test(l.value)&&
+c.setLinkForCell(l,l.value),l.geometry.width+=c.gridSize,l.geometry.height+=c.gridSize}finally{c.getModel().endUpdate()}return[l]}}return[]};EditorUi.prototype.formatFileSize=function(a){var c=-1;do a/=1024,c++;while(1024<a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[c]};EditorUi.prototype.convertDataUri=function(a){if("data:"==a.substring(0,5)){var c=a.indexOf(";");0<c&&(a=a.substring(0,c)+a.substring(a.indexOf(",",c+1)))}return a};EditorUi.prototype.isRemoteFileFormat=
 function(a,b){return/(\"contentType\":\s*\"application\/gliffy\+json\")/.test(a)};EditorUi.prototype.isLucidChartData=function(a){return null!=a&&('{"state":"{\\"Properties\\":'==a.substring(0,26)||'{"Properties":'==a.substring(0,14))};EditorUi.prototype.importLocalFile=function(a,b){if(a&&Graph.fileSupport){if(null==this.importFileInputElt){var c=document.createElement("input");c.setAttribute("type","file");mxEvent.addListener(c,"change",mxUtils.bind(this,function(){null!=c.files&&(this.importFiles(c.files,
 null,null,this.maxImageSize),c.type="",c.type="file",c.value="")}));c.style.display="none";document.body.appendChild(c);this.importFileInputElt=c}this.importFileInputElt.click()}else{window.openNew=!1;window.openKey="import";if(!b){var d=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,c){if(null!=c&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(c)){var b=new Blob([a],
 {type:"application/octet-stream"});this.importVisio(b,mxUtils.bind(this,function(a){this.importXml(a,0,0,!0)}),null,c)}else this.editor.graph.setSelectionCells(this.importXml(a,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,360,220,!0,!0,function(){window.openFile=null});if(!b){var e=this.dialog,f=e.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=d;f.apply(e,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importZipFile=
-function(a,b,d){var c=this,e=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(a).then(function(e){if(0==Object.keys(e.files).length)d();else{var f=0,g,l=!1;e.forEach(function(a,c){var e=c.name.toLowerCase();"diagram/diagram.xml"==e?(l=!0,c.async("string").then(function(a){0==a.indexOf("<mxfile ")?b(a):d()})):0==e.indexOf("versions/")&&(e=parseInt(e.substr(9)),e>f&&(f=e,g=c))});0<f?g.async("string").then(function(e){!c.isOffline()&&(new XMLHttpRequest).upload&&
-c.isRemoteFileFormat(e,a.name)?c.parseFile(new Blob([e],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?b(a.responseText):d())}),a.name):d()}):l||d()}},function(a){d(a)}):d()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?e():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",e))};EditorUi.prototype.importFile=function(a,b,d,f,k,l,m,p,q,v,x){v=null!=v?v:!0;var c=!1,e=null,g=mxUtils.bind(this,function(a){var c=
-null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,m)):c=this.importXml(a,d,f,v);null!=p&&p(c)});"image"==b.substring(0,5)?(q=!1,"image/png"==b.substring(0,9)&&(b=x?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(e=this.importXml(b,d,f,v),q=!0)),q||(b=this.editor.graph,x=a.indexOf(";"),0<x&&(a=a.substring(0,x)+a.substring(a.indexOf(",",x+1))),v&&b.isGridEnabled()&&(d=b.snap(d),f=b.snap(f)),e=[b.insertVertex(null,null,"",d,f,k,l,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
-a+";")])):/(\.*<graphml )/.test(a)?(c=!0,this.importGraphML(a,g)):null!=q&&null!=m&&(/(\.v(dx|sdx?))($|\?)/i.test(m)||/(\.vs(x|sx?))($|\?)/i.test(m))?(c=!0,this.importVisio(q,g)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,m)?(c=!0,this.parseFile(null!=q?q:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?g(a.responseText):null!=p&&p(null))}),m)):0==a.indexOf("PK")&&null!=q?(c=!0,this.importZipFile(q,
-g,mxUtils.bind(this,function(){e=this.insertTextAt(this.validateFileData(a),d,f,!0,null,v);p(e)}))):/(\.v(sd|dx))($|\?)/i.test(m)||/(\.vs(s|x))($|\?)/i.test(m)||(e=this.insertTextAt(this.validateFileData(a),d,f,!0,null,v));c||null==p||p(e);return e};EditorUi.prototype.base64Encode=function(a){for(var c="",b=0,d=a.length,f,l,k;b<d;){f=a.charCodeAt(b++)&255;if(b==d){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&
-3)<<4);c+="==";break}l=a.charCodeAt(b++);if(b==d){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4|(l&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((l&15)<<2);c+="=";break}k=a.charCodeAt(b++);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&
-3)<<4|(l&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((l&15)<<2|(k&192)>>6);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k&63)}return c};EditorUi.prototype.importFiles=function(a,b,d,f,k,l,m,p,q,v,x,y){b=null!=b?b:0;d=null!=d?d:0;f=null!=f?f:this.maxImageSize;v=null!=v?v:this.maxImageBytes;var c=null!=b&&null!=d,e=!0,g=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var n=x||this.resampleThreshold,u=0;u<a.length;u++)if("image/"==a[u].type.substring(0,
-6)&&a[u].size>n){g=!0;break}var z=mxUtils.bind(this,function(){var g=this.editor.graph,n=g.gridSize;k=null!=k?k:mxUtils.bind(this,function(a,b,d,e,f,g,l,k,n){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,d,e,f,g,l,k,n,c,y)});l=null!=l?l:mxUtils.bind(this,function(a){g.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q=a.length,u=q,t=[],z=mxUtils.bind(this,function(a,
-c){t[a]=c;if(0==--u){this.spinner.stop();if(null!=p)p(t);else{var b=[];g.getModel().beginUpdate();try{for(var d=0;d<t.length;d++){var e=t[d]();null!=e&&(b=b.concat(e))}}finally{g.getModel().endUpdate()}}l(b)}}),A=0;A<q;A++)mxUtils.bind(this,function(c){var l=a[c];if(null!=l){var q=new FileReader;q.onload=mxUtils.bind(this,function(a){if(null==m||m(l))if("image/"==l.type.substring(0,6))if("image/svg"==l.type.substring(0,9)){var q=a.target.result,u=q.indexOf(","),t=decodeURIComponent(escape(atob(q.substring(u+
-1)))),p=mxUtils.parseXml(t),t=p.getElementsByTagName("svg");if(0<t.length){var t=t[0],D=y?null:t.getAttribute("content");null!=D&&"<"!=D.charAt(0)&&"%"!=D.charAt(0)&&(D=unescape(window.atob?atob(D):Base64.decode(D,!0)));null!=D&&"%"==D.charAt(0)&&(D=decodeURIComponent(D));null==D||"<mxfile "!==D.substring(0,8)&&"<mxGraphModel "!==D.substring(0,14)?z(c,mxUtils.bind(this,function(){try{if(q.substring(0,u+1),null!=p){var a=p.getElementsByTagName("svg");if(0<a.length){var e=a[0],m=e.getAttribute("width"),
-t=e.getAttribute("height"),m=null!=m&&"%"!=m.charAt(m.length-1)?parseFloat(m):NaN,t=null!=t&&"%"!=t.charAt(t.length-1)?parseFloat(t):NaN,x=e.getAttribute("viewBox");if(null==x||0==x.length)e.setAttribute("viewBox","0 0 "+m+" "+t);else if(isNaN(m)||isNaN(t)){var z=x.split(" ");3<z.length&&(m=parseFloat(z[2]),t=parseFloat(z[3]))}q=this.createSvgDataUri(mxUtils.getXml(e));var v=Math.min(1,Math.min(f/Math.max(1,m)),f/Math.max(1,t)),D=k(q,l.type,b+c*n,d+c*n,Math.max(1,Math.round(m*v)),Math.max(1,Math.round(t*
-v)),l.name);if(isNaN(m)||isNaN(t)){var A=new Image;A.onload=mxUtils.bind(this,function(){m=Math.max(1,A.width);t=Math.max(1,A.height);D[0].geometry.width=m;D[0].geometry.height=t;e.setAttribute("viewBox","0 0 "+m+" "+t);q=this.createSvgDataUri(mxUtils.getXml(e));var a=q.indexOf(";");0<a&&(q=q.substring(0,a)+q.substring(q.indexOf(",",a+1)));g.setCellStyles("image",q,[D[0]])});A.src=this.createSvgDataUri(mxUtils.getXml(e))}return D}}}catch(aa){}return null})):z(c,mxUtils.bind(this,function(){return k(D,
-"text/xml",b+c*n,d+c*n,0,0,l.name)}))}else z(c,mxUtils.bind(this,function(){return null}))}else{t=!1;if("image/png"==l.type){var A=y?null:this.extractGraphModelFromPng(a.target.result);if(null!=A&&0<A.length){var P=new Image;P.src=a.target.result;z(c,mxUtils.bind(this,function(){return k(A,"text/xml",b+c*n,d+c*n,P.width,P.height,l.name)}));t=!0}}t||(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(a.target.result,mxUtils.bind(this,function(g){this.resizeImage(g,a.target.result,mxUtils.bind(this,function(g,m,q){z(c,mxUtils.bind(this,function(){if(null!=g&&g.length<v){var t=e&&this.isResampleImage(a.target.result,x)?Math.min(1,Math.min(f/m,f/q)):1;return k(g,l.type,b+c*n,d+c*n,Math.round(m*t),Math.round(q*t),l.name)}this.handleError({message:mxResources.get("imageTooBig")});
-return null}))}),e,f,x)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else k(a.target.result,l.type,b+c*n,d+c*n,240,160,l.name,function(a){z(c,function(){return a})},l)});/(\.v(dx|sdx?))($|\?)/i.test(l.name)||/(\.vs(x|sx?))($|\?)/i.test(l.name)?k(null,l.type,b+c*n,d+c*n,240,160,l.name,function(a){z(c,function(){return a})},l):"image"==l.type.substring(0,5)?q.readAsDataURL(l):q.readAsText(l)}})(A)});if(g){g=[];for(u=0;u<a.length;u++)g.push(a[u]);
-a=g;this.confirmImageResize(function(a){e=a;z()},q)}else z()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,e=function(d,e){if(d||b)mxSettings.setResizeImages(d?e:null),mxSettings.save();c();a(e)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){e(a,!0)},function(a){e(a,
+function(a,b,d){var c=this,e=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(a).then(function(e){if(0==Object.keys(e.files).length)d();else{var f=0,g,k=!1;e.forEach(function(a,c){var e=c.name.toLowerCase();"diagram/diagram.xml"==e?(k=!0,c.async("string").then(function(a){0==a.indexOf("<mxfile ")?b(a):d()})):0==e.indexOf("versions/")&&(e=parseInt(e.substr(9)),e>f&&(f=e,g=c))});0<f?g.async("string").then(function(e){!c.isOffline()&&(new XMLHttpRequest).upload&&
+c.isRemoteFileFormat(e,a.name)?c.parseFile(new Blob([e],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?b(a.responseText):d())}),a.name):d()}):k||d()}},function(a){d(a)}):d()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?e():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",e))};EditorUi.prototype.importFile=function(a,b,d,f,l,g,m,p,q,v,x){v=null!=v?v:!0;var c=!1,e=null,k=mxUtils.bind(this,function(a){var c=
+null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,m)):c=this.importXml(a,d,f,v);null!=p&&p(c)});"image"==b.substring(0,5)?(q=!1,"image/png"==b.substring(0,9)&&(b=x?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(e=this.importXml(b,d,f,v),q=!0)),q||(b=this.editor.graph,x=a.indexOf(";"),0<x&&(a=a.substring(0,x)+a.substring(a.indexOf(",",x+1))),v&&b.isGridEnabled()&&(d=b.snap(d),f=b.snap(f)),e=[b.insertVertex(null,null,"",d,f,l,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
+a+";")])):/(\.*<graphml )/.test(a)?(c=!0,this.importGraphML(a,k)):null!=q&&null!=m&&(/(\.v(dx|sdx?))($|\?)/i.test(m)||/(\.vs(x|sx?))($|\?)/i.test(m))?(c=!0,this.importVisio(q,k)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,m)?(c=!0,this.parseFile(null!=q?q:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?k(a.responseText):null!=p&&p(null))}),m)):0==a.indexOf("PK")&&null!=q?(c=!0,this.importZipFile(q,
+k,mxUtils.bind(this,function(){e=this.insertTextAt(this.validateFileData(a),d,f,!0,null,v);p(e)}))):/(\.v(sd|dx))($|\?)/i.test(m)||/(\.vs(s|x))($|\?)/i.test(m)||(e=this.insertTextAt(this.validateFileData(a),d,f,!0,null,v));c||null==p||p(e);return e};EditorUi.prototype.base64Encode=function(a){for(var c="",b=0,d=a.length,f,g,l;b<d;){f=a.charCodeAt(b++)&255;if(b==d){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&
+3)<<4);c+="==";break}g=a.charCodeAt(b++);if(b==d){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4|(g&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&15)<<2);c+="=";break}l=a.charCodeAt(b++);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&
+3)<<4|(g&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&15)<<2|(l&192)>>6);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l&63)}return c};EditorUi.prototype.importFiles=function(a,b,d,f,l,g,m,p,q,v,x,y){b=null!=b?b:0;d=null!=d?d:0;f=null!=f?f:this.maxImageSize;v=null!=v?v:this.maxImageBytes;var c=null!=b&&null!=d,e=!0,k=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var n=x||this.resampleThreshold,t=0;t<a.length;t++)if("image/"==a[t].type.substring(0,
+6)&&a[t].size>n){k=!0;break}var z=mxUtils.bind(this,function(){var k=this.editor.graph,n=k.gridSize;l=null!=l?l:mxUtils.bind(this,function(a,b,d,e,f,g,k,l,n){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,k)),null):this.importFile(a,b,d,e,f,g,k,l,n,c,y)});g=null!=g?g:mxUtils.bind(this,function(a){k.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q=a.length,u=q,t=[],z=mxUtils.bind(this,function(a,
+c){t[a]=c;if(0==--u){this.spinner.stop();if(null!=p)p(t);else{var b=[];k.getModel().beginUpdate();try{for(var d=0;d<t.length;d++){var e=t[d]();null!=e&&(b=b.concat(e))}}finally{k.getModel().endUpdate()}}g(b)}}),A=0;A<q;A++)mxUtils.bind(this,function(c){var g=a[c];if(null!=g){var q=new FileReader;q.onload=mxUtils.bind(this,function(a){if(null==m||m(g))if("image/"==g.type.substring(0,6))if("image/svg"==g.type.substring(0,9)){var q=a.target.result,t=q.indexOf(","),u=decodeURIComponent(escape(atob(q.substring(t+
+1)))),p=mxUtils.parseXml(u),u=p.getElementsByTagName("svg");if(0<u.length){var u=u[0],D=y?null:u.getAttribute("content");null!=D&&"<"!=D.charAt(0)&&"%"!=D.charAt(0)&&(D=unescape(window.atob?atob(D):Base64.decode(D,!0)));null!=D&&"%"==D.charAt(0)&&(D=decodeURIComponent(D));null==D||"<mxfile "!==D.substring(0,8)&&"<mxGraphModel "!==D.substring(0,14)?z(c,mxUtils.bind(this,function(){try{if(q.substring(0,t+1),null!=p){var a=p.getElementsByTagName("svg");if(0<a.length){var e=a[0],m=e.getAttribute("width"),
+u=e.getAttribute("height"),m=null!=m&&"%"!=m.charAt(m.length-1)?parseFloat(m):NaN,u=null!=u&&"%"!=u.charAt(u.length-1)?parseFloat(u):NaN,x=e.getAttribute("viewBox");if(null==x||0==x.length)e.setAttribute("viewBox","0 0 "+m+" "+u);else if(isNaN(m)||isNaN(u)){var z=x.split(" ");3<z.length&&(m=parseFloat(z[2]),u=parseFloat(z[3]))}q=this.createSvgDataUri(mxUtils.getXml(e));var v=Math.min(1,Math.min(f/Math.max(1,m)),f/Math.max(1,u)),D=l(q,g.type,b+c*n,d+c*n,Math.max(1,Math.round(m*v)),Math.max(1,Math.round(u*
+v)),g.name);if(isNaN(m)||isNaN(u)){var A=new Image;A.onload=mxUtils.bind(this,function(){m=Math.max(1,A.width);u=Math.max(1,A.height);D[0].geometry.width=m;D[0].geometry.height=u;e.setAttribute("viewBox","0 0 "+m+" "+u);q=this.createSvgDataUri(mxUtils.getXml(e));var a=q.indexOf(";");0<a&&(q=q.substring(0,a)+q.substring(q.indexOf(",",a+1)));k.setCellStyles("image",q,[D[0]])});A.src=this.createSvgDataUri(mxUtils.getXml(e))}return D}}}catch(aa){}return null})):z(c,mxUtils.bind(this,function(){return l(D,
+"text/xml",b+c*n,d+c*n,0,0,g.name)}))}else z(c,mxUtils.bind(this,function(){return null}))}else{u=!1;if("image/png"==g.type){var A=y?null:this.extractGraphModelFromPng(a.target.result);if(null!=A&&0<A.length){var P=new Image;P.src=a.target.result;z(c,mxUtils.bind(this,function(){return l(A,"text/xml",b+c*n,d+c*n,P.width,P.height,g.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(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,a.target.result,mxUtils.bind(this,function(k,m,q){z(c,mxUtils.bind(this,function(){if(null!=k&&k.length<v){var u=e&&this.isResampleImage(a.target.result,x)?Math.min(1,Math.min(f/m,f/q)):1;return l(k,g.type,b+c*n,d+c*n,Math.round(m*u),Math.round(q*u),g.name)}this.handleError({message:mxResources.get("imageTooBig")});
+return null}))}),e,f,x)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else l(a.target.result,g.type,b+c*n,d+c*n,240,160,g.name,function(a){z(c,function(){return a})},g)});/(\.v(dx|sdx?))($|\?)/i.test(g.name)||/(\.vs(x|sx?))($|\?)/i.test(g.name)?l(null,g.type,b+c*n,d+c*n,240,160,g.name,function(a){z(c,function(){return a})},g):"image"==g.type.substring(0,5)?q.readAsDataURL(g):q.readAsText(g)}})(A)});if(k){k=[];for(t=0;t<a.length;t++)k.push(a[t]);
+a=k;this.confirmImageResize(function(a){e=a;z()},q)}else z()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,e=function(d,e){if(d||b)mxSettings.setResizeImages(d?e:null),mxSettings.save();c();a(e)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){e(a,!0)},function(a){e(a,
 !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,d)};EditorUi.prototype.parseFile=function(a,b,d){d=null!=d?d:a.name;var c=new FormData;c.append("format","xml");c.append("upfile",a,d);var e=new XMLHttpRequest;e.open("POST",OPEN_URL);e.onreadystatechange=function(){b(e)};
-e.send(c);try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+a.size})}catch(l){}};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,d,f,k,l){k=null!=k?k:this.maxImageSize;var c=Math.max(1,a.width),e=Math.max(1,a.height);if(f&&this.isResampleImage(b,l))try{var g=Math.max(c/k,e/k);if(1<g){var n=Math.round(c/g),m=Math.round(e/g),u=document.createElement("canvas");u.width=n;u.height=m;u.getContext("2d").drawImage(a,
-0,0,n,m);var t=u.toDataURL();if(t.length<b.length){var p=document.createElement("canvas");p.width=n;p.height=m;var v=p.toDataURL();t!==v&&(b=t,c=n,e=m)}}}catch(Y){}d(b,c,e)};EditorUi.prototype.crcTable=[];for(var d=0;256>d;d++)for(var k=d,m=0;8>m;m++)k=1==(k&1)?3988292384^k>>>1:k>>>1,EditorUi.prototype.crcTable[d]=k;EditorUi.prototype.updateCRC=function(a,b,d,f){for(var c=0;c<f;c++)a=EditorUi.prototype.crcTable[(a^b.charCodeAt(d+c))&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=
-this.crcTable||this.createCrcTable();for(var c=-1,b=0;b<a.length;b++)c=c>>>8^this.crcTable[(c^a.charCodeAt(b))&255];return(c^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,d,f,k){function c(a,c){var b=n;n+=c;return a.substring(b,n)}function e(a){a=c(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function g(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,
-!0);var n=0;if(c(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=k&&k();else if(c(a,4),"IHDR"!=c(a,4))null!=k&&k();else{c(a,17);k=a.substring(0,n);do{var m=e(a);if("IDAT"==c(a,4)){k=a.substring(0,n-8);"pHYs"==b&&"dpi"==d?(d=Math.round(f/.0254),d=g(d)+g(d)+String.fromCharCode(1)):d=d+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+f;f=4294967295;f=this.updateCRC(f,b,0,4);f=this.updateCRC(f,d,0,d.length);k+=g(d.length)+b+d+g(f^4294967295);k+=a.substring(n-8,
-a.length);break}k+=a.substring(n-8,n-4+m);c(a,m);c(a,4)}while(m);return"data:image/png;base64,"+(window.btoa?btoa(k):Base64.encode(k,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){return Editor.extractGraphModelFromPng(a)};EditorUi.prototype.loadImage=function(a,b,d){try{var c=new Image;c.onload=function(){b(c)};null!=d&&(c.onerror=d);c.src=a}catch(n){if(null!=d)d(n);else throw n;}};var p=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&
-!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph,d=b.cellEditor.startEditing;b.cellEditor.startEditing=function(c,e){var f=this.graph.getAttributeForCell(c,"plantUmlData");if(null!=f){var g=JSON.parse(f),f=new TextareaDialog(a,mxResources.get("plantUml")+":",g.data,function(d){null!=d&&a.spinner.spin(document.body,mxResources.get("inserting"))&&a.generatePlantUmlImage(d,g.format,function(e,f,l){a.spinner.stop();
-b.getModel().beginUpdate();try{if("txt"==g.format)b.labelChanged(c,"<pre>"+e+"</pre>"),b.updateCellSize(c,!0);else{b.setCellStyles("image",a.convertDataUri(e),[c]);var k=b.model.getGeometry(c);null!=k&&(k=k.clone(),k.width=f,k.height=l,b.cellsResized([c],[k],!1))}b.setAttributeForCell(c,"plantUmlData",JSON.stringify({data:d,format:g.format}))}finally{b.getModel().endUpdate()}},function(b){a.handleError(b)})},null,null,400,220);a.showDialog(f.container,420,300,!0,!0);f.init()}else d.apply(this,arguments)};
-b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(K){a.handleError(K)}return c};var f=this.clearDefaultStyle;this.clearDefaultStyle=function(){f.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var k=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=
-a.pages&&null!=a.currentPage)for(var c=0;c<a.pages.length;c++)if(a.pages[c]==a.currentPage){0<c&&(b+=(0<b.length?"&":"?")+"page="+c);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return k.apply(this,arguments)};var l=b.addClickHandler;b.addClickHandler=function(a,c,d){var e=c;c=function(a,c){if(null==c){var d=mxEvent.getSource(a);"a"==d.nodeName.toLowerCase()&&(c=d.getAttribute("href"))}null!=c&&b.isCustomLink(c)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(c)&&
-mxEvent.consume(a);null!=e&&e(a,c)};l.call(this,a,c,d)};p.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container,360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var m=b.getExportVariables;b.getExportVariables=function(){var b=m.apply(this,arguments);b.pagecount=null!=a.pages?a.pages.length:1;b.page=null!=
+e.send(c);try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+a.size})}catch(g){}};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,d,f,l,g){l=null!=l?l:this.maxImageSize;var c=Math.max(1,a.width),e=Math.max(1,a.height);if(f&&this.isResampleImage(b,g))try{var k=Math.max(c/l,e/l);if(1<k){var n=Math.round(c/k),m=Math.round(e/k),t=document.createElement("canvas");t.width=n;t.height=m;t.getContext("2d").drawImage(a,
+0,0,n,m);var u=t.toDataURL();if(u.length<b.length){var p=document.createElement("canvas");p.width=n;p.height=m;var v=p.toDataURL();u!==v&&(b=u,c=n,e=m)}}}catch(Y){}d(b,c,e)};EditorUi.prototype.crcTable=[];for(var d=0;256>d;d++)for(var l=d,m=0;8>m;m++)l=1==(l&1)?3988292384^l>>>1:l>>>1,EditorUi.prototype.crcTable[d]=l;EditorUi.prototype.updateCRC=function(a,b,d,f){for(var c=0;c<f;c++)a=EditorUi.prototype.crcTable[(a^b.charCodeAt(d+c))&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=
+this.crcTable||this.createCrcTable();for(var c=-1,b=0;b<a.length;b++)c=c>>>8^this.crcTable[(c^a.charCodeAt(b))&255];return(c^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,d,f,l){function c(a,c){var b=n;n+=c;return a.substring(b,n)}function e(a){a=c(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function k(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,
+!0);var n=0;if(c(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=l&&l();else if(c(a,4),"IHDR"!=c(a,4))null!=l&&l();else{c(a,17);l=a.substring(0,n);do{var m=e(a);if("IDAT"==c(a,4)){l=a.substring(0,n-8);"pHYs"==b&&"dpi"==d?(d=Math.round(f/.0254),d=k(d)+k(d)+String.fromCharCode(1)):d=d+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+f;f=4294967295;f=this.updateCRC(f,b,0,4);f=this.updateCRC(f,d,0,d.length);l+=k(d.length)+b+d+k(f^4294967295);l+=a.substring(n-8,
+a.length);break}l+=a.substring(n-8,n-4+m);c(a,m);c(a,4)}while(m);return"data:image/png;base64,"+(window.btoa?btoa(l):Base64.encode(l,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){return Editor.extractGraphModelFromPng(a)};EditorUi.prototype.loadImage=function(a,b,d){try{var c=new Image;c.onload=function(){b(c)};null!=d&&(c.onerror=d);c.src=a}catch(n){if(null!=d)d(n);else throw n;}};var p=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&
+!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph,d=b.cellEditor.startEditing;b.cellEditor.startEditing=function(c,e){var f=this.graph.getAttributeForCell(c,"plantUmlData");if(null!=f){var g=JSON.parse(f),f=new TextareaDialog(a,mxResources.get("plantUml")+":",g.data,function(d){null!=d&&a.spinner.spin(document.body,mxResources.get("inserting"))&&a.generatePlantUmlImage(d,g.format,function(e,f,k){a.spinner.stop();
+b.getModel().beginUpdate();try{if("txt"==g.format)b.labelChanged(c,"<pre>"+e+"</pre>"),b.updateCellSize(c,!0);else{b.setCellStyles("image",a.convertDataUri(e),[c]);var l=b.model.getGeometry(c);null!=l&&(l=l.clone(),l.width=f,l.height=k,b.cellsResized([c],[l],!1))}b.setAttributeForCell(c,"plantUmlData",JSON.stringify({data:d,format:g.format}))}finally{b.getModel().endUpdate()}},function(b){a.handleError(b)})},null,null,400,220);a.showDialog(f.container,420,300,!0,!0);f.init()}else d.apply(this,arguments)};
+b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(K){a.handleError(K)}return c};var f=this.clearDefaultStyle;this.clearDefaultStyle=function(){f.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var l=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=
+a.pages&&null!=a.currentPage)for(var c=0;c<a.pages.length;c++)if(a.pages[c]==a.currentPage){0<c&&(b+=(0<b.length?"&":"?")+"page="+c);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return l.apply(this,arguments)};var g=b.addClickHandler;b.addClickHandler=function(a,c,d){var e=c;c=function(a,c){if(null==c){var d=mxEvent.getSource(a);"a"==d.nodeName.toLowerCase()&&(c=d.getAttribute("href"))}null!=c&&b.isCustomLink(c)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(c)&&
+mxEvent.consume(a);null!=e&&e(a,c)};g.call(this,a,c,d)};p.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container,360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var m=b.getExportVariables;b.getExportVariables=function(){var b=m.apply(this,arguments);b.pagecount=null!=a.pages?a.pages.length:1;b.page=null!=
 a.currentPage?a.currentPage.getName():"";b.pagenumber=null!=a.pages&&null!=a.currentPage?mxUtils.indexOf(a.pages,a.currentPage)+1:1;return b};var v=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:"pagecount"==b?null!=a.pages?a.pages.length:1:v.apply(this,arguments)};var q=b.labelLinkClicked;b.labelLinkClicked=function(a,c,d){var e=c.getAttribute("href");
 if(null==e||!b.isCustomLink(e)||!mxEvent.isTouchEvent(d)&&mxEvent.isPopupTrigger(d))q.apply(this,arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(e),b.getRubberband().reset();mxEvent.consume(d)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var y=this.actions.get("print");y.setEnabled(!mxClient.IS_IOS||!navigator.standalone);y.visible=y.isEnabled();if(!this.editor.chromeless||
 this.editor.editable)this.keyHandler.bindAction(70,!0,"find"),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),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize"),this.installImagePasteHandler(),this.installNativeClipboardHandler();
@@ -3196,39 +3197,40 @@ mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var c=a.dataTransfer.getD
 "text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));"undefined"!==typeof window.mxSettings&&(y=this.editor.graph.view,y.setUnit(mxSettings.getUnit()),y.addListener("unitChanged",function(a,b){mxSettings.setUnit(b.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,y.unit),this.refresh());if("1"==urlParams.styledev){y=document.getElementById("geFooter");null!=y&&(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)})),y.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){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 x=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:x.apply(this,arguments)}}y=document.getElementById("geInfo");null!=y&&y.parentNode.removeChild(y);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var B=null;mxEvent.addListener(b.container,"dragleave",function(a){b.isEnabled()&&(null!=B&&(B.parentNode.removeChild(B),
-B=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null==B&&(!mxClient.IS_IE||10<document.documentMode)&&(B=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=B&&(B.parentNode.removeChild(B),B=null);if(b.isEnabled()){var c=mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),
-d=b.view.translate,e=b.view.scale,f=c.x/e-d.x,g=c.y/e-d.y;mxEvent.isAltDown(a)&&(g=f=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,f,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var l=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,c=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=c)b.setSelectionCells(this.importXml(c,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,
-"text/html")){var k=a.dataTransfer.getData("text/html"),c=document.createElement("div");c.innerHTML=k;var n=null,d=c.getElementsByTagName("img");null!=d&&1==d.length?(k=d[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)||(n=!0)):(c=c.getElementsByTagName("a"),null!=c&&1==c.length&&(k=c[0].getAttribute("href")));var m=!0,q=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(k,f,g,!0,n,null,m))});n&&k.length>this.resampleThreshold?this.confirmImageResize(function(a){m=
-a;q()},mxEvent.isControlDown(a)):q()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?this.loadImage(decodeURIComponent(l),mxUtils.bind(this,function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var d=this.maxImageSize,d=Math.min(1,Math.min(d/Math.max(1,c)),d/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",f,g,c*d,a*d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+l+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(l,
+"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var x=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:x.apply(this,arguments)}}y=document.getElementById("geInfo");null!=y&&y.parentNode.removeChild(y);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var E=null;mxEvent.addListener(b.container,"dragleave",function(a){b.isEnabled()&&(null!=E&&(E.parentNode.removeChild(E),
+E=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null==E&&(!mxClient.IS_IE||10<document.documentMode)&&(E=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=E&&(E.parentNode.removeChild(E),E=null);if(b.isEnabled()){var c=mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),
+d=b.view.translate,e=b.view.scale,f=c.x/e-d.x,g=c.y/e-d.y;mxEvent.isAltDown(a)&&(g=f=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,f,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var k=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,c=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=c)b.setSelectionCells(this.importXml(c,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,
+"text/html")){var l=a.dataTransfer.getData("text/html"),c=document.createElement("div");c.innerHTML=l;var n=null,d=c.getElementsByTagName("img");null!=d&&1==d.length?(l=d[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)||(n=!0)):(c=c.getElementsByTagName("a"),null!=c&&1==c.length&&(l=c[0].getAttribute("href")));var m=!0,q=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(l,f,g,!0,n,null,m))});n&&l.length>this.resampleThreshold?this.confirmImageResize(function(a){m=
+a;q()},mxEvent.isControlDown(a)):q()}else null!=k&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)?this.loadImage(decodeURIComponent(k),mxUtils.bind(this,function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var d=this.maxImageSize,d=Math.min(1,Math.min(d/Math.max(1,c)),d/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",f,g,c*d,a*d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+k+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(k,
 f,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"),f,g,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();this.editUpdateListener=mxUtils.bind(this,function(a,b){var c=b.getProperty("edit");null!=c&&this.updateEditReferences(c)});this.editor.undoManager.addListener(mxEvent.BEFORE_UNDO,this.editUpdateListener);this.editor.undoManager.addListener(mxEvent.BEFORE_REDO,this.editUpdateListener);"1"==
-urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var a=this.editor.graph;a.container.addEventListener("paste",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b))try{for(var c=b.clipboardData||b.originalEvent.clipboardData,d=!1,e=0;e<c.types.length;e++)if("text/"===c.types[e].substring(0,5)){d=!0;break}if(!d){var f=c.items;for(index in f){var k=f[index];if("file"===k.kind){if(a.isEditing())this.importFiles([k.getAsFile()],
-0,0,this.maxImageSize,function(b,c,d,e,f,g){a.insertImage(b,f,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var m=this.editor.graph.getInsertPoint();this.importFiles([k.getAsFile()],m.x,m.y,this.maxImageSize);mxEvent.consume(b)}break}}}}catch(q){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function a(){window.setTimeout(function(){d.innerHTML="&nbsp;";d.focus();document.execCommand("selectAll",!1,null)},
-0)}var b=this.editor.graph,d=document.createElement("div");d.setAttribute("autocomplete","off");d.setAttribute("autocorrect","off");d.setAttribute("autocapitalize","off");d.setAttribute("spellcheck","false");d.style.textRendering="optimizeSpeed";d.style.position="absolute";d.style.whiteSpace="nowrap";d.style.overflow="hidden";d.style.display="block";d.style.fontSize="0px";d.contentEditable=!0;mxUtils.setOpacity(d,0);d.style.width="1px";d.style.height="1px";d.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(a){var c=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==c.nodeName||"TEXTAREA"==c.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||f||(d.style.left=b.container.scrollLeft+10+"px",d.style.top=b.container.scrollTop+10+"px",b.container.appendChild(d),
-f=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){d.focus();document.execCommand("selectAll",!1,null)},0):(d.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var c=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!f||224!=c&&17!=c&&91!=c||(f=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),d.parentNode.removeChild(d),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(d,
-"copy",mxUtils.bind(this,function(c){if(b.isEnabled())try{mxClipboard.copy(b),this.copyCells(d),a()}catch(z){this.handleError(z)}}));mxEvent.addListener(d,"cut",mxUtils.bind(this,function(c){if(b.isEnabled())try{mxClipboard.copy(b),this.copyCells(d,!0),a()}catch(z){this.handleError(z)}}));mxEvent.addListener(d,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&((new Date).getTime(),d.innerHTML="&nbsp;",d.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,
-d);d.innerHTML="&nbsp;"}),0))}),!0);var k=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==d?!0:k.apply(this,arguments)}};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this,arguments);if("data:page/id,"==a.substring(0,13)){var c=a.indexOf(",");0<c&&(b=this.getPageById(a.substring(c+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"==a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=
-function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(a)};EditorUi.prototype.isSettingsEnabled=function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings=function(){if(this.isSettingsEnabled()){ColorDialog.recentColors=mxSettings.getRecentColors();
-if(isLocalStorage)try{window.addEventListener("storage",mxUtils.bind(this,function(a){a.key==mxSettings.key&&(mxSettings.load(),ColorDialog.recentColors=mxSettings.getRecentColors(),this.menus.customFonts=mxSettings.getCustomFonts())}),!1)}catch(c){}this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]));this.menus.customFonts=mxSettings.getCustomFonts();this.addListener("customFontsChanged",mxUtils.bind(this,function(a,b){mxSettings.setCustomFonts(this.menus.customFonts);
-mxSettings.save()}));this.editor.graph.connectionHandler.setCreateTarget(mxSettings.isCreateTarget());this.fireEvent(new mxEventObject("copyConnectChanged"));this.addListener("copyConnectChanged",mxUtils.bind(this,function(a,b){mxSettings.setCreateTarget(this.editor.graph.connectionHandler.isCreateTarget());mxSettings.save()}));this.editor.graph.pageFormat=mxSettings.getPageFormat();this.addListener("pageFormatChanged",mxUtils.bind(this,function(a,b){mxSettings.setPageFormat(this.editor.graph.pageFormat);
-mxSettings.save()}));this.editor.graph.view.gridColor=mxSettings.getGridColor("dark"==uiTheme);this.addListener("gridColorChanged",mxUtils.bind(this,function(a,b){console.log("gridColorChanged",this.editor.graph.view.gridColor);mxSettings.setGridColor(this.editor.graph.view.gridColor,"dark"==uiTheme);mxSettings.save()}));if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(a,b){mxSettings.setAutosave(this.editor.autosave);mxSettings.save()})),
-this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&this.sidebar.showPalette("search",mxSettings.settings.search);this.editor.chromeless&&!this.editor.editable||null==this.sidebar||!(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.copyCells=function(a,b){var c=this.editor.graph;if(c.isSelectionEmpty())a.innerHTML=
-"";else{var d=mxUtils.sortCells(c.model.getTopmostCells(c.getSelectionCells())),e=mxUtils.getXml(this.editor.graph.encodeCells(d));mxUtils.setTextContent(a,encodeURIComponent(e));b?(c.removeCells(d,!1),c.lastPasteXml=null):(c.lastPasteXml=e,c.pasteCounter=0);a.focus();document.execCommand("selectAll",!1,null)}};EditorUi.prototype.pasteCells=function(a,b){if(!mxEvent.isConsumed(a)){var c=b.getElementsByTagName("span");if(null!=c&&0<c.length&&"application/vnd.lucid.chart.objects"===c[0].getAttribute("data-lucid-type")){var d=
-c[0].getAttribute("data-lucid-content");null!=d&&0<d.length&&(this.convertLucidChart(d,mxUtils.bind(this,function(a){var b=this.editor.graph;b.setSelectionCells(this.importXml(a,0,0));b.scrollCellToVisible(b.getSelectionCell())}),mxUtils.bind(this,function(a){this.handleError(a)})),mxEvent.consume(a))}else{var d=this.editor.graph,e=mxUtils.trim(mxClient.IS_QUIRKS||8==document.documentMode?mxUtils.getTextContent(b):b.textContent),f=!1;try{var k=e.lastIndexOf("%3E");0<=k&&k<e.length-3&&(e=e.substring(0,
-k+3))}catch(q){}try{var c=b.getElementsByTagName("span"),m=null!=c&&0<c.length?mxUtils.trim(decodeURIComponent(c[0].textContent)):decodeURIComponent(e);this.isCompatibleString(m)&&(f=!0,e=m)}catch(q){}d.lastPasteXml==e?d.pasteCounter++:(d.lastPasteXml=e,d.pasteCounter=0);c=d.pasteCounter*d.gridSize;if(null!=e&&0<e.length&&(f||this.isCompatibleString(e)?d.setSelectionCells(this.importXml(e,c,c)):(f=d.getInsertPoint(),d.isMouseInsertPoint()&&(c=0,d.lastPasteXml==e&&0<d.pasteCounter&&d.pasteCounter--),
-d.setSelectionCells(this.insertTextAt(e,f.x+c,f.y+c,!0))),!d.isSelectionEmpty())){d.scrollCellToVisible(d.getSelectionCell());null!=this.hoverIcons&&this.hoverIcons.update(d.view.getState(d.getSelectionCell()));try{mxEvent.consume(a)}catch(q){}}}}};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b=null,c=0;c<a.length;c++)mxEvent.addListener(a[c],"dragleave",function(a){null!=b&&(b.parentNode.removeChild(b),b=null);a.stopPropagation();a.preventDefault()}),mxEvent.addListener(a[c],
-"dragover",mxUtils.bind(this,function(a){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==b&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(b=this.highlightElement());a.stopPropagation();a.preventDefault()})),mxEvent.addListener(a[c],"drop",mxUtils.bind(this,function(a){null!=b&&(b.parentNode.removeChild(b),b=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<a.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(a.dataTransfer.files,
-0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(a)&&!mxEvent.isShiftDown(a)):this.openFiles(a.dataTransfer.files,!0);else{var c=this.extractGraphModelFromEvent(a);if(null==c){var d=null!=a.dataTransfer?a.dataTransfer:a.clipboardData;null!=d&&(10==document.documentMode||11==document.documentMode?c=d.getData("Text"):(c=null,c=0<=mxUtils.indexOf(d.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(d.types,"text/html")?d.getData("text/html"):null,null!=
-c&&0<c.length?(d=document.createElement("div"),d.innerHTML=c,d=d.getElementsByTagName("img"),0<d.length&&(c=d[0].getAttribute("src"))):0<=mxUtils.indexOf(d.types,"text/plain")&&(c=d.getData("text/plain"))),null!=c&&("data:image/png;base64,"==c.substring(0,22)?(c=this.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(a){200<=
-a.getStatus()&&299>=a.getStatus()&&this.openLocalFile(a.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)}a.stopPropagation();a.preventDefault()}))};EditorUi.prototype.highlightElement=function(a){var b=0,c=0,d,f;if(null==a){f=document.body;var l=
-document.documentElement;d=(f.clientWidth||l.clientWidth)-3;f=Math.max(f.clientHeight||0,l.clientHeight)-3}else b=a.offsetTop,c=a.offsetLeft,d=a.clientWidth,f=a.clientHeight;l=document.createElement("div");l.style.zIndex=mxPopupMenu.prototype.zIndex+2;l.style.border="3px dotted rgb(254, 137, 12)";l.style.pointerEvents="none";l.style.position="absolute";l.style.top=b+"px";l.style.left=c+"px";l.style.width=Math.max(0,d-3)+"px";l.style.height=Math.max(0,f-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?
-this.editor.graph.container.appendChild(l):document.body.appendChild(l);return l};EditorUi.prototype.stringToCells=function(a){a=mxUtils.parseXml(a);var b=this.editor.extractGraphModel(a.documentElement);a=[];if(null!=b){var c=new mxCodec(b.ownerDocument),d=new mxGraphModel;c.decode(b,d);b=d.getChildAt(d.getRoot(),0);for(c=0;c<d.getChildCount(b);c++)a.push(d.getChildAt(b,c))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var c=
+urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var a=this.editor.graph;a.container.addEventListener("paste",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b))try{for(var c=b.clipboardData||b.originalEvent.clipboardData,d=!1,e=0;e<c.types.length;e++)if("text/"===c.types[e].substring(0,5)){d=!0;break}if(!d){var f=c.items;for(index in f){var l=f[index];if("file"===l.kind){if(a.isEditing())this.importFiles([l.getAsFile()],
+0,0,this.maxImageSize,function(b,c,d,e,f,g){a.insertImage(b,f,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var m=this.editor.graph.getInsertPoint();this.importFiles([l.getAsFile()],m.x,m.y,this.maxImageSize);mxEvent.consume(b)}break}}}}catch(q){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function a(){window.setTimeout(function(){d.innerHTML="&nbsp;";d.focus();document.execCommand("selectAll",!1,null)},
+0)}var b=this.editor.graph,d=document.createElement("div");d.setAttribute("autocomplete","off");d.setAttribute("autocorrect","off");d.setAttribute("autocapitalize","off");d.setAttribute("spellcheck","false");d.style.textRendering="optimizeSpeed";d.style.background="transparent";d.style.color="transparent";d.style.position="absolute";d.style.whiteSpace="nowrap";d.style.overflow="hidden";d.style.display="block";d.style.fontSize="1";d.style.zIndex="-1";d.style.resize="none";d.style.outline="none";d.style.width=
+"1px";d.style.height="1px";mxUtils.setOpacity(d,0);d.contentEditable=!0;d.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(a){var c=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==c.nodeName||"TEXTAREA"==c.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&
+91==a.keyCode)||f||(d.style.left=b.container.scrollLeft+10+"px",d.style.top=b.container.scrollTop+10+"px",b.container.appendChild(d),f=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){d.focus();document.execCommand("selectAll",!1,null)},0):(d.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var c=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!f||224!=c&&17!=c&&91!=c||(f=!1,b.isEditing()||null!=this.dialog||null==
+b.container||b.container.focus(),d.parentNode.removeChild(d),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(d,"copy",mxUtils.bind(this,function(c){if(b.isEnabled())try{mxClipboard.copy(b),this.copyCells(d),a()}catch(z){this.handleError(z)}}));mxEvent.addListener(d,"cut",mxUtils.bind(this,function(c){if(b.isEnabled())try{mxClipboard.copy(b),this.copyCells(d,!0),a()}catch(z){this.handleError(z)}}));mxEvent.addListener(d,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&
+!b.isCellLocked(b.getDefaultParent())&&((new Date).getTime(),d.innerHTML="&nbsp;",d.focus(),null!=a.clipboardData&&this.pasteCells(a,d,!0),mxEvent.isConsumed(a)||window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,d,!1)}),0))}),!0);var l=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==d?!0:l.apply(this,arguments)}};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this,arguments);if("data:page/id,"==a.substring(0,
+13)){var c=a.indexOf(",");0<c&&(b=this.getPageById(a.substring(c+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"==a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(a)};EditorUi.prototype.isSettingsEnabled=
+function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings=function(){if(this.isSettingsEnabled()){ColorDialog.recentColors=mxSettings.getRecentColors();if(isLocalStorage)try{window.addEventListener("storage",mxUtils.bind(this,function(a){a.key==mxSettings.key&&(mxSettings.load(),ColorDialog.recentColors=mxSettings.getRecentColors(),this.menus.customFonts=mxSettings.getCustomFonts())}),!1)}catch(c){}this.fireEvent(new mxEventObject("styleChanged",
+"keys",[],"values",[],"cells",[]));this.menus.customFonts=mxSettings.getCustomFonts();this.addListener("customFontsChanged",mxUtils.bind(this,function(a,b){mxSettings.setCustomFonts(this.menus.customFonts);mxSettings.save()}));this.editor.graph.connectionHandler.setCreateTarget(mxSettings.isCreateTarget());this.fireEvent(new mxEventObject("copyConnectChanged"));this.addListener("copyConnectChanged",mxUtils.bind(this,function(a,b){mxSettings.setCreateTarget(this.editor.graph.connectionHandler.isCreateTarget());
+mxSettings.save()}));this.editor.graph.pageFormat=mxSettings.getPageFormat();this.addListener("pageFormatChanged",mxUtils.bind(this,function(a,b){mxSettings.setPageFormat(this.editor.graph.pageFormat);mxSettings.save()}));this.editor.graph.view.gridColor=mxSettings.getGridColor("dark"==uiTheme);this.addListener("gridColorChanged",mxUtils.bind(this,function(a,b){console.log("gridColorChanged",this.editor.graph.view.gridColor);mxSettings.setGridColor(this.editor.graph.view.gridColor,"dark"==uiTheme);
+mxSettings.save()}));if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(a,b){mxSettings.setAutosave(this.editor.autosave);mxSettings.save()})),this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&this.sidebar.showPalette("search",mxSettings.settings.search);this.editor.chromeless&&!this.editor.editable||null==this.sidebar||!(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.copyCells=function(a,b){var c=this.editor.graph;if(c.isSelectionEmpty())a.innerHTML="";else{var d=mxUtils.sortCells(c.model.getTopmostCells(c.getSelectionCells())),e=mxUtils.getXml(this.editor.graph.encodeCells(d));mxUtils.setTextContent(a,encodeURIComponent(e));b?(c.removeCells(d,!1),c.lastPasteXml=null):(c.lastPasteXml=e,c.pasteCounter=0);a.focus();
+document.execCommand("selectAll",!1,null)}};EditorUi.prototype.pasteCells=function(a,b,d){if(!mxEvent.isConsumed(a)){var c=b;d&&null!=a.clipboardData&&(c=document.createElement("div"),c.innerHTML=a.clipboardData.getData("text/html"));var e=c.getElementsByTagName("span");if(null!=e&&0<e.length&&"application/vnd.lucid.chart.objects"===e[0].getAttribute("data-lucid-type")){var f=e[0].getAttribute("data-lucid-content");null!=f&&0<f.length&&(this.convertLucidChart(f,mxUtils.bind(this,function(a){var b=
+this.editor.graph;b.lastPasteXml==a?b.pasteCounter++:(b.lastPasteXml=a,b.pasteCounter=0);var c=b.pasteCounter*b.gridSize;b.setSelectionCells(this.importXml(a,c,c));b.scrollCellToVisible(b.getSelectionCell())}),mxUtils.bind(this,function(a){this.handleError(a)})),mxEvent.consume(a))}else{var f=mxUtils.trim(mxClient.IS_QUIRKS||8==document.documentMode?mxUtils.getTextContent(c):c.textContent),k=!1;try{var l=f.lastIndexOf("%3E");0<=l&&l<f.length-3&&(f=f.substring(0,l+3))}catch(x){}try{var e=c.getElementsByTagName("span"),
+m=null!=e&&0<e.length?mxUtils.trim(decodeURIComponent(e[0].textContent)):decodeURIComponent(f);this.isCompatibleString(m)&&(k=!0,f=m)}catch(x){}if(null!=f&&0<f.length){var p=this.editor.graph;p.lastPasteXml==f?p.pasteCounter++:(p.lastPasteXml=f,p.pasteCounter=0);d=p.pasteCounter*p.gridSize;k||this.isCompatibleString(f)?p.setSelectionCells(this.importXml(f,d,d)):(k=p.getInsertPoint(),p.isMouseInsertPoint()&&(d=0,p.lastPasteXml==f&&0<p.pasteCounter&&p.pasteCounter--),p.setSelectionCells(this.insertTextAt(f,
+k.x+d,k.y+d,!0)));if(!p.isSelectionEmpty()){p.scrollCellToVisible(p.getSelectionCell());null!=this.hoverIcons&&this.hoverIcons.update(p.view.getState(p.getSelectionCell()));try{mxEvent.consume(a)}catch(x){}}}else d||(p.lastPasteXml=null,p.pasteCounter=0)}}b.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b=null,c=0;c<a.length;c++)mxEvent.addListener(a[c],"dragleave",function(a){null!=b&&(b.parentNode.removeChild(b),b=null);a.stopPropagation();a.preventDefault()}),
+mxEvent.addListener(a[c],"dragover",mxUtils.bind(this,function(a){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==b&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(b=this.highlightElement());a.stopPropagation();a.preventDefault()})),mxEvent.addListener(a[c],"drop",mxUtils.bind(this,function(a){null!=b&&(b.parentNode.removeChild(b),b=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<a.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?
+this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(a)&&!mxEvent.isShiftDown(a)):this.openFiles(a.dataTransfer.files,!0);else{var c=this.extractGraphModelFromEvent(a);if(null==c){var d=null!=a.dataTransfer?a.dataTransfer:a.clipboardData;null!=d&&(10==document.documentMode||11==document.documentMode?c=d.getData("Text"):(c=null,c=0<=mxUtils.indexOf(d.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(d.types,"text/html")?
+d.getData("text/html"):null,null!=c&&0<c.length?(d=document.createElement("div"),d.innerHTML=c,d=d.getElementsByTagName("img"),0<d.length&&(c=d[0].getAttribute("src"))):0<=mxUtils.indexOf(d.types,"text/plain")&&(c=d.getData("text/plain"))),null!=c&&("data:image/png;base64,"==c.substring(0,22)?(c=this.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(a){200<=a.getStatus()&&299>=a.getStatus()&&this.openLocalFile(a.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)}a.stopPropagation();a.preventDefault()}))};EditorUi.prototype.highlightElement=function(a){var b=0,c=0,d,f;if(null==a){f=document.body;
+var g=document.documentElement;d=(f.clientWidth||g.clientWidth)-3;f=Math.max(f.clientHeight||0,g.clientHeight)-3}else b=a.offsetTop,c=a.offsetLeft,d=a.clientWidth,f=a.clientHeight;g=document.createElement("div");g.style.zIndex=mxPopupMenu.prototype.zIndex+2;g.style.border="3px dotted rgb(254, 137, 12)";g.style.pointerEvents="none";g.style.position="absolute";g.style.top=b+"px";g.style.left=c+"px";g.style.width=Math.max(0,d-3)+"px";g.style.height=Math.max(0,f-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?
+this.editor.graph.container.appendChild(g):document.body.appendChild(g);return g};EditorUi.prototype.stringToCells=function(a){a=mxUtils.parseXml(a);var b=this.editor.extractGraphModel(a.documentElement);a=[];if(null!=b){var c=new mxCodec(b.ownerDocument),d=new mxGraphModel;c.decode(b,d);b=d.getChildAt(d.getRoot(),0);for(c=0;c<d.getChildCount(b);c++)a.push(d.getChildAt(b,c))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var c=
 0;c<a.length;c++)mxUtils.bind(this,function(a){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{var d=c.target.result,e=a.name;if(null!=e&&0<e.length){!this.useCanvasForExport&&/(\.png)$/i.test(e)&&(e=e.substring(0,e.length-4)+".drawio");var f=mxUtils.bind(this,function(a){e=0<=e.lastIndexOf(".")?e.substring(0,e.lastIndexOf("."))+".drawio":e+".drawio";if("<mxlibrary"==a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,
 b);try{this.loadLibrary(new LocalLibrary(this,a,e))}catch(x){this.handleError(x,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,e,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(e)||/(\.vs(x|sx?))($|\?)/i.test(e))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();f(a)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(a){this.spinner.stop();f(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,
 e))this.parseFile(a,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?f(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(d))/(\.json)$/i.test(e)&&(e=e.substring(0,e.length-5)+".drawio"),this.convertLucidChart(d,mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,e,b)}),mxUtils.bind(this,function(a){this.spinner.stop();
-this.handleError(a)}));else if("<mxlibrary"==c.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,c.target.result,a.name))}catch(E){this.handleError(E,mxResources.get("errorLoadingFile"))}}else 0==d.indexOf("PK")?this.importZipFile(a,mxUtils.bind(this,function(a){this.spinner.stop();f(a)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(d,
-e,b)})):("image/png"==a.type.substring(0,9)&&(d=this.extractGraphModelFromPng(d)),this.spinner.stop(),this.openLocalFile(d,e,b))}}catch(E){this.handleError(E)}});c.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?c.readAsDataURL(a):c.readAsText(a)})(a[c])};EditorUi.prototype.openLocalFile=function(a,b,d){var c=this.getCurrentFile(),e=mxUtils.bind(this,function(){window.openFile=
+this.handleError(a)}));else if("<mxlibrary"==c.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,c.target.result,a.name))}catch(F){this.handleError(F,mxResources.get("errorLoadingFile"))}}else 0==d.indexOf("PK")?this.importZipFile(a,mxUtils.bind(this,function(a){this.spinner.stop();f(a)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(d,
+e,b)})):("image/png"==a.type.substring(0,9)&&(d=this.extractGraphModelFromPng(d)),this.spinner.stop(),this.openLocalFile(d,e,b))}}catch(F){this.handleError(F)}});c.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?c.readAsDataURL(a):c.readAsText(a)})(a[c])};EditorUi.prototype.openLocalFile=function(a,b,d){var c=this.getCurrentFile(),e=mxUtils.bind(this,function(){window.openFile=
 null;if(null==b&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var c=mxUtils.parseXml(a);null!=c&&(this.editor.setGraphXml(c.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,a,b||this.defaultFilename,d))});if(null!=a&&0<a.length)null==c||!c.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)?e():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&null!=c&&c.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),
 mxResources.get("discardChanges")):(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(a,b),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=c&&c.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):e()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var a={};if(null!=this.pages)for(var b=0;b<this.pages.length;b++)this.updatePageRoot(this.pages[b]),
 this.addBasenamesForCell(this.pages[b].root,a);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),a);var b=[],d;for(d in a)b.push(d);return b};EditorUi.prototype.addBasenamesForCell=function(a,b){function c(a){if(null!=a){var c=a.lastIndexOf(".");0<c&&(a=a.substring(c+1,a.length));null==b[a]&&(b[a]=!0)}}var d=this.editor.graph,e=d.getCellStyle(a);c(mxStencilRegistry.getBasenameForStencil(e[mxConstants.STYLE_SHAPE]));d.model.isEdge(a)&&(c(mxMarker.getPackageForType(e[mxConstants.STYLE_STARTARROW])),
@@ -3236,40 +3238,40 @@ c(mxMarker.getPackageForType(e[mxConstants.STYLE_ENDARROW])));for(var e=d.model.
 (this.ruler.hRuler.container.style.visibility=a?"":"hidden",this.ruler.vRuler.container.style.visibility=a?"":"hidden");null!=this.tabContainer&&(this.tabContainer.style.visibility=a?"":"hidden");a||(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))};
 EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);(window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))&&this.installMessageHandler(mxUtils.bind(this,function(a,b,d){this.spinner.stop();this.addEmbedButtons();this.setGraphEnabled(!0);null!=a&&0<a.length?(this.setFileData(a),this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog(),this.chromelessResize&&
 this.chromelessResize()):(this.editor.graph.model.clear(),this.editor.fireEvent(new mxEventObject("resetGraphView")));this.editor.undoManager.clear();this.editor.modified=null!=d?d:!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(a,b){null!=a?a.getPublicUrl(b):b(null)};EditorUi.prototype.createLoadMessage=function(a){var b=this.editor.graph;return{event:a,pageVisible:b.pageVisible,translate:b.view.translate,bounds:b.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:b.view.scale,page:b.view.getBackgroundPageBounds()}};EditorUi.prototype.installMessageHandler=function(a){var b=null,c=!1,d=!1,f=null,l=mxUtils.bind(this,function(a,b){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,l);mxEvent.addListener(window,"message",mxUtils.bind(this,function(e){if(e.source==(window.opener||window.parent)){var g=e.data,l=mxUtils.bind(this,function(a){if(null!=a&&"function"===typeof a.charAt&&"<"!=a.charAt(0))try{"data:image/png;base64,"==a.substring(0,22)?a=this.extractGraphModelFromPng(a):"data:image/svg+xml;base64,"==
+EditorUi.prototype.getPublicUrl=function(a,b){null!=a?a.getPublicUrl(b):b(null)};EditorUi.prototype.createLoadMessage=function(a){var b=this.editor.graph;return{event:a,pageVisible:b.pageVisible,translate:b.view.translate,bounds:b.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:b.view.scale,page:b.view.getBackgroundPageBounds()}};EditorUi.prototype.installMessageHandler=function(a){var b=null,c=!1,d=!1,f=null,g=mxUtils.bind(this,function(a,b){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,g);mxEvent.addListener(window,"message",mxUtils.bind(this,function(e){if(e.source==(window.opener||window.parent)){var g=e.data,k=mxUtils.bind(this,function(a){if(null!=a&&"function"===typeof a.charAt&&"<"!=a.charAt(0))try{"data:image/png;base64,"==a.substring(0,22)?a=this.extractGraphModelFromPng(a):"data:image/svg+xml;base64,"==
 a.substring(0,26)?a=atob(a.substring(26)):"data:image/svg+xml;utf8,"==a.substring(0,24)&&(a=a.substring(24)),null!=a&&("%"==a.charAt(0)?a=decodeURIComponent(a):"<"!=a.charAt(0)&&(a=Graph.decompress(a)))}catch(ba){}return a});if("json"==urlParams.proto){try{g=JSON.parse(g)}catch(P){g=null}if(null==g)return;if("dialog"==g.action){this.showError(null!=g.titleKey?mxResources.get(g.titleKey):g.title,null!=g.messageKey?mxResources.get(g.messageKey):g.message,null!=g.buttonKey?mxResources.get(g.buttonKey):
-g.button);null!=g.modified&&(this.editor.modified=g.modified);return}if("prompt"==g.action){this.spinner.stop();l=new FilenameDialog(this,g.defaultValue||"",null!=g.okKey?mxResources.get(g.okKey):null,function(a){null!=a&&k.postMessage(JSON.stringify({event:"prompt",value:a,message:g}),"*")},null!=g.titleKey?mxResources.get(g.titleKey):g.title);this.showDialog(l.container,300,80,!0,!1);l.init();return}if("draft"==g.action){var m=l(g.xml);this.spinner.stop();l=new DraftDialog(this,mxResources.get("draftFound",
-[g.name||this.defaultFilename]),m,mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"edit",message:g}),"*")}),mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"discard",message:g}),"*")}),g.editKey?mxResources.get(g.editKey):null,g.discardKey?mxResources.get(g.discardKey):null,g.ignore?mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"ignore",message:g}),
-"*")}):null);this.showDialog(l.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{l.init()}catch(P){k.postMessage(JSON.stringify({event:"draft",error:P.toString(),message:g}),"*")}return}if("template"==g.action){this.spinner.stop();var l=1==g.enableRecent,m=1==g.enableSearch,n=1==g.enableCustomTemp,l=new NewDialog(this,!1,null!=g.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=g.callback?k.postMessage(JSON.stringify({event:"template",
-xml:b,blank:b==this.emptyDiagramXml,name:c}),"*"):(a(b,e,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,l?mxUtils.bind(this,function(a){this.remoteInvoke("getRecentDiagrams",null,null,a,function(){a(null,"Network Error!")})}):null,m?mxUtils.bind(this,function(a,b){this.remoteInvoke("searchDiagrams",[a],null,b,function(){b(null,"Network Error!")})}):null,mxUtils.bind(this,function(a,b,c){k.postMessage(JSON.stringify({event:"template",
-docUrl:a,info:b,name:c}),"*")}),null,null,n?mxUtils.bind(this,function(a){this.remoteInvoke("getCustomTemplates",null,null,a,function(){a({},0)})}):null);this.showDialog(l.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));l.init();return}if("textContent"==g.action){l=this.getDiagramTextContent();k.postMessage(JSON.stringify({event:"textContent",data:l,message:g}),"*");return}if("status"==g.action){null!=g.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(g.messageKey))):
-null!=g.message&&this.editor.setStatus(mxUtils.htmlEntities(g.message));null!=g.modified&&(this.editor.modified=g.modified);return}if("spinner"==g.action){var p=null!=g.messageKey?mxResources.get(g.messageKey):g.message;null==g.show||g.show?this.spinner.spin(document.body,p):this.spinner.stop();return}if("export"==g.action){if("png"==g.format||"xmlpng"==g.format){if(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin)){var u=null!=g.xml?
-g.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var v=this.editor.graph,z=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=g.format;b.message=g;b.data=a;b.xml=encodeURIComponent(u);k.postMessage(JSON.stringify(b),"*")}),y=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);"xmlpng"==g.format&&(a=this.writeGraphModelToPng(a,"tEXt","mxfile",encodeURIComponent(u)));v!=this.editor.graph&&v.container.parentNode.removeChild(v.container);
-z(a)}),m=g.pageId||(null!=this.pages?this.pages[0].getId():null);if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage.getId()!=m){for(var A=v.getGlobalVariable,v=this.createTemporaryGraph(v.getStylesheet()),D,l=0;l<this.pages.length;l++)if(this.pages[l].getId()==m){D=this.updatePageRoot(this.pages[l]);break}v.getGlobalVariable=function(a){return"page"==a?D.getName():"pagenumber"==a?1:A.apply(this,arguments)};document.body.appendChild(v.container);v.model.setRoot(D.root)}if(null!=g.layerIds){for(var m=
-v.model,n=m.getChildCells(m.getRoot()),B={},l=0;l<g.layerIds.length;l++)B[g.layerIds[l]]=!0;for(l=0;l<n.length;l++)m.setVisible(n[l],B[n[l].id]||!1)}this.exportToCanvas(mxUtils.bind(this,function(a){y(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){y(null)}),null,null,g.scale,null,null,null,v)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==g.format?"1":"0")+(null!=m?"&pageId="+m:"")+(null!=g.layerIds?"&extras="+encodeURIComponent(JSON.stringify({layerIds:g.layerIds})):
-"")+(null!=g.scale?"&scale="+g.scale:"")+"&base64=1&xml="+encodeURIComponent(u))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?z("data:image/png;base64,"+a.getText()):y(null)}),mxUtils.bind(this,function(){y(null)}))}}else{null!=g.xml&&0<g.xml.length&&this.setFileData(g.xml);p=this.createLoadMessage("export");if("html2"==g.format||"html"==g.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))l=this.getXmlFileData(),p.xml=mxUtils.getXml(l),p.data=this.getFileData(null,
-null,!0,null,null,null,l),p.format=g.format;else if("html"==g.format)u=this.editor.getGraphXml(),p.data=this.getHtml(u,this.editor.graph),p.xml=mxUtils.getXml(u),p.format=g.format;else{mxSvgCanvas2D.prototype.foAltText=null;l=this.editor.graph.background;l==mxConstants.NONE&&(l=null);p.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);p.format="svg";if(g.embedImages||null==g.embedImages){if(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):
-g.spin))this.editor.graph.setEnabled(!1),"xmlsvg"==g.format?this.getEmbeddedSvg(p.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(a);k.postMessage(JSON.stringify(p),"*")})):this.convertImages(this.editor.graph.getSvg(l),mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(mxUtils.getXml(a));k.postMessage(JSON.stringify(p),"*")}));return}l="xmlsvg"==
-g.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(l));p.data=this.createSvgDataUri(l)}k.postMessage(JSON.stringify(p),"*")}return}if("load"==g.action)d=1==g.autosave,this.hideDialog(),null!=g.modified&&null==urlParams.modified&&(urlParams.modified=g.modified),null!=g.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=g.saveAndExit),null!=g.title&&null!=this.buttonContainer&&(m=document.createElement("span"),mxUtils.write(m,
+g.button);null!=g.modified&&(this.editor.modified=g.modified);return}if("prompt"==g.action){this.spinner.stop();k=new FilenameDialog(this,g.defaultValue||"",null!=g.okKey?mxResources.get(g.okKey):null,function(a){null!=a&&l.postMessage(JSON.stringify({event:"prompt",value:a,message:g}),"*")},null!=g.titleKey?mxResources.get(g.titleKey):g.title);this.showDialog(k.container,300,80,!0,!1);k.init();return}if("draft"==g.action){var m=k(g.xml);this.spinner.stop();k=new DraftDialog(this,mxResources.get("draftFound",
+[g.name||this.defaultFilename]),m,mxUtils.bind(this,function(){this.hideDialog();l.postMessage(JSON.stringify({event:"draft",result:"edit",message:g}),"*")}),mxUtils.bind(this,function(){this.hideDialog();l.postMessage(JSON.stringify({event:"draft",result:"discard",message:g}),"*")}),g.editKey?mxResources.get(g.editKey):null,g.discardKey?mxResources.get(g.discardKey):null,g.ignore?mxUtils.bind(this,function(){this.hideDialog();l.postMessage(JSON.stringify({event:"draft",result:"ignore",message:g}),
+"*")}):null);this.showDialog(k.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{k.init()}catch(P){l.postMessage(JSON.stringify({event:"draft",error:P.toString(),message:g}),"*")}return}if("template"==g.action){this.spinner.stop();var k=1==g.enableRecent,m=1==g.enableSearch,n=1==g.enableCustomTemp,k=new NewDialog(this,!1,null!=g.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=g.callback?l.postMessage(JSON.stringify({event:"template",
+xml:b,blank:b==this.emptyDiagramXml,name:c}),"*"):(a(b,e,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,k?mxUtils.bind(this,function(a){this.remoteInvoke("getRecentDiagrams",null,null,a,function(){a(null,"Network Error!")})}):null,m?mxUtils.bind(this,function(a,b){this.remoteInvoke("searchDiagrams",[a],null,b,function(){b(null,"Network Error!")})}):null,mxUtils.bind(this,function(a,b,c){l.postMessage(JSON.stringify({event:"template",
+docUrl:a,info:b,name:c}),"*")}),null,null,n?mxUtils.bind(this,function(a){this.remoteInvoke("getCustomTemplates",null,null,a,function(){a({},0)})}):null);this.showDialog(k.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));k.init();return}if("textContent"==g.action){k=this.getDiagramTextContent();l.postMessage(JSON.stringify({event:"textContent",data:k,message:g}),"*");return}if("status"==g.action){null!=g.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(g.messageKey))):
+null!=g.message&&this.editor.setStatus(mxUtils.htmlEntities(g.message));null!=g.modified&&(this.editor.modified=g.modified);return}if("spinner"==g.action){var p=null!=g.messageKey?mxResources.get(g.messageKey):g.message;null==g.show||g.show?this.spinner.spin(document.body,p):this.spinner.stop();return}if("export"==g.action){if("png"==g.format||"xmlpng"==g.format){if(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin)){var t=null!=g.xml?
+g.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var v=this.editor.graph,z=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=g.format;b.message=g;b.data=a;b.xml=encodeURIComponent(t);l.postMessage(JSON.stringify(b),"*")}),y=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);"xmlpng"==g.format&&(a=this.writeGraphModelToPng(a,"tEXt","mxfile",encodeURIComponent(t)));v!=this.editor.graph&&v.container.parentNode.removeChild(v.container);
+z(a)}),m=g.pageId||(null!=this.pages?this.pages[0].getId():null);if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage.getId()!=m){for(var A=v.getGlobalVariable,v=this.createTemporaryGraph(v.getStylesheet()),D,k=0;k<this.pages.length;k++)if(this.pages[k].getId()==m){D=this.updatePageRoot(this.pages[k]);break}v.getGlobalVariable=function(a){return"page"==a?D.getName():"pagenumber"==a?1:A.apply(this,arguments)};document.body.appendChild(v.container);v.model.setRoot(D.root)}if(null!=g.layerIds){for(var m=
+v.model,n=m.getChildCells(m.getRoot()),B={},k=0;k<g.layerIds.length;k++)B[g.layerIds[k]]=!0;for(k=0;k<n.length;k++)m.setVisible(n[k],B[n[k].id]||!1)}this.exportToCanvas(mxUtils.bind(this,function(a){y(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){y(null)}),null,null,g.scale,null,null,null,v)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==g.format?"1":"0")+(null!=m?"&pageId="+m:"")+(null!=g.layerIds?"&extras="+encodeURIComponent(JSON.stringify({layerIds:g.layerIds})):
+"")+(null!=g.scale?"&scale="+g.scale:"")+"&base64=1&xml="+encodeURIComponent(t))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?z("data:image/png;base64,"+a.getText()):y(null)}),mxUtils.bind(this,function(){y(null)}))}}else{null!=g.xml&&0<g.xml.length&&this.setFileData(g.xml);p=this.createLoadMessage("export");if("html2"==g.format||"html"==g.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))k=this.getXmlFileData(),p.xml=mxUtils.getXml(k),p.data=this.getFileData(null,
+null,!0,null,null,null,k),p.format=g.format;else if("html"==g.format)t=this.editor.getGraphXml(),p.data=this.getHtml(t,this.editor.graph),p.xml=mxUtils.getXml(t),p.format=g.format;else{mxSvgCanvas2D.prototype.foAltText=null;k=this.editor.graph.background;k==mxConstants.NONE&&(k=null);p.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);p.format="svg";if(g.embedImages||null==g.embedImages){if(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):
+g.spin))this.editor.graph.setEnabled(!1),"xmlsvg"==g.format?this.getEmbeddedSvg(p.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(a);l.postMessage(JSON.stringify(p),"*")})):this.convertImages(this.editor.graph.getSvg(k),mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(mxUtils.getXml(a));l.postMessage(JSON.stringify(p),"*")}));return}k="xmlsvg"==
+g.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(k));p.data=this.createSvgDataUri(k)}l.postMessage(JSON.stringify(p),"*")}return}if("load"==g.action)d=1==g.autosave,this.hideDialog(),null!=g.modified&&null==urlParams.modified&&(urlParams.modified=g.modified),null!=g.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=g.saveAndExit),null!=g.title&&null!=this.buttonContainer&&(m=document.createElement("span"),mxUtils.write(m,
 g.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="6px",this.buttonContainer.style.right="25px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(m),this.embedFilenameSpan=m),g=null!=g.xmlpng?this.extractGraphModelFromPng(g.xmlpng):g.xml;else{"remoteInvokeReady"==
-g.action?this.handleRemoteInvokeReady(k):"remoteInvoke"==g.action?this.handleRemoteInvoke(g):"remoteInvokeResponse"==g.action?this.handleRemoteInvokeResponse(g):k.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(g)}),"*");return}}var O=mxUtils.bind(this,function(e,g){c=!0;try{a(e,g)}catch(G){this.handleError(G)}c=!1;null!=urlParams.modified&&this.editor.setStatus("");var l=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):
-mxUtils.getXml(this.editor.getGraphXml())});f=l();d&&null==b&&(b=mxUtils.bind(this,function(a,b){var d=l();if(d!=f&&!c){var e=this.createLoadMessage("autosave");e.xml=d;d=JSON.stringify(e);(window.opener||window.parent).postMessage(d,"*")}f=d}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",
-b),this.addListener("backgroundImageChanged",b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));"1"!=urlParams.returnbounds&&"json"!=urlParams.proto||k.postMessage(JSON.stringify(this.createLoadMessage("load")),"*")});null!=g&&"function"===typeof g.substring&&"data:application/vnd.visio;base64,"==g.substring(0,34)?(l="0M8R4KGxGuE"==g.substring(34,
-45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(g.substring(g.indexOf(",")+1)),function(a){O(a,e)},mxUtils.bind(this,function(a){this.handleError(a)}),l)):null!=g&&"function"===typeof g.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(g,"")?this.parseFile(new Blob([g],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&O(a.responseText,e)}),""):
-null!=g&&"function"===typeof g.substring&&this.isLucidChartData(g)?this.convertLucidChart(g,mxUtils.bind(this,function(a){O(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):(g=l(g),O(g,e))}}));var k=window.opener||window.parent,l="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";k.postMessage(l,"*")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";
+g.action?this.handleRemoteInvokeReady(l):"remoteInvoke"==g.action?this.handleRemoteInvoke(g):"remoteInvokeResponse"==g.action?this.handleRemoteInvokeResponse(g):l.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(g)}),"*");return}}var O=mxUtils.bind(this,function(e,g){c=!0;try{a(e,g)}catch(G){this.handleError(G)}c=!1;null!=urlParams.modified&&this.editor.setStatus("");var k=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):
+mxUtils.getXml(this.editor.getGraphXml())});f=k();d&&null==b&&(b=mxUtils.bind(this,function(a,b){var d=k();if(d!=f&&!c){var e=this.createLoadMessage("autosave");e.xml=d;d=JSON.stringify(e);(window.opener||window.parent).postMessage(d,"*")}f=d}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",
+b),this.addListener("backgroundImageChanged",b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));"1"!=urlParams.returnbounds&&"json"!=urlParams.proto||l.postMessage(JSON.stringify(this.createLoadMessage("load")),"*")});null!=g&&"function"===typeof g.substring&&"data:application/vnd.visio;base64,"==g.substring(0,34)?(k="0M8R4KGxGuE"==g.substring(34,
+45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(g.substring(g.indexOf(",")+1)),function(a){O(a,e)},mxUtils.bind(this,function(a){this.handleError(a)}),k)):null!=g&&"function"===typeof g.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(g,"")?this.parseFile(new Blob([g],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&O(a.responseText,e)}),""):
+null!=g&&"function"===typeof g.substring&&this.isLucidChartData(g)?this.convertLucidChart(g,mxUtils.bind(this,function(a){O(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):(g=k(g),O(g,e))}}));var l=window.opener||window.parent,g="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";l.postMessage(g,"*")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";
 a.style.paddingTop="atlas"==uiTheme?"2px":"0px";a.style.paddingLeft="8px";a.style.paddingBottom="2px";var b=document.createElement("button");b.className="geBigButton";"1"==urlParams.noSaveBtn?(mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b)):(mxUtils.write(b,mxResources.get("save")),b.setAttribute("title",mxResources.get("save")+
 " ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),a.appendChild(b),"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geBigButton geBigStandardButton",b.style.marginLeft="6px",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b)));b=document.createElement("a");
 mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.className="geBigButton geBigStandardButton";b.style.marginLeft="6px";b.style.marginRight="20px";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()}));a.appendChild(b);this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=
 new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://about.draw.io/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(a,b){for(var c=this.editor.graph,d=c.getSelectionCells(),e=0;e<a.length;e++){var f=new window[a[e].layout](c);
-if(null!=a[e].config)for(var k in a[e].config)f[k]=a[e].config[k];this.executeLayout(function(){f.execute(c.getDefaultParent(),0==d.length?null:d)},e==a.length-1,b)}};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[],e=[],f={};if(0<c.length){var k={},m=null,p=null,v=null,x=null,y=null,t=null,B=null,K=null,Y="",H="auto",Q="auto",D=null,L=null,O=40,P=40,ba=100,W=0,G=this.editor.graph;G.getGraphBounds();for(var Z=function(){null!=b?b(fa):(G.setSelectionCells(fa),G.scrollCellToVisible(G.getSelectionCell()))},
+if(null!=a[e].config)for(var l in a[e].config)f[l]=a[e].config[l];this.executeLayout(function(){f.execute(c.getDefaultParent(),0==d.length?null:d)},e==a.length-1,b)}};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[],e=[],f={};if(0<c.length){var l={},m=null,p=null,v=null,x=null,y=null,u=null,B=null,K=null,Y="",H="auto",Q="auto",D=null,L=null,O=40,P=40,ba=100,W=0,G=this.editor.graph;G.getGraphBounds();for(var Z=function(){null!=b?b(fa):(G.setSelectionCells(fa),G.scrollCellToVisible(G.getSelectionCell()))},
 na=G.getFreeInsertPoint(),ja=na.x,ca=na.y,na=ca,ka=null,S="auto",K=null,V=[],pa=null,ga=null,R=0;R<c.length&&"#"==c[R].charAt(0);){a=c[R];for(R++;R<c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[R].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[R].substring(1)),R++;if("#"!=a.charAt(1)){var la=a.indexOf(":");if(0<la){var M=mxUtils.trim(a.substring(1,la)),I=mxUtils.trim(a.substring(la+1));"label"==M?ka=G.sanitizeHtml(I):"labelname"==M&&0<I.length&&"-"!=I?x=I:"labels"==M&&0<I.length&&"-"!=I?y=JSON.parse(I):
-"style"==M?m=I:"parentstyle"==M?t=I:"stylename"==M&&0<I.length&&"-"!=I?v=I:"styles"==M&&0<I.length&&"-"!=I?p=JSON.parse(I):"identity"==M&&0<I.length&&"-"!=I?B=I:"parent"==M&&0<I.length&&"-"!=I?K=I:"namespace"==M&&0<I.length&&"-"!=I?Y=I:"width"==M?H=I:"height"==M?Q=I:"left"==M&&0<I.length?D=I:"top"==M&&0<I.length?L=I:"ignore"==M?ga=I.split(","):"connect"==M?V.push(JSON.parse(I)):"link"==M?pa=I:"padding"==M?W=parseFloat(I):"edgespacing"==M?O=parseFloat(I):"nodespacing"==M?P=parseFloat(I):"levelspacing"==
-M?ba=parseFloat(I):"layout"==M&&(S=I)}}}if(null==c[R])throw Error(mxResources.get("invalidOrMissingFile"));var ea=this.editor.csvToArray(c[R]),M=la=null;if(null!=B||null!=K)for(var N=0;N<ea.length;N++)B==ea[N]&&(la=N),K==ea[N]&&(M=N);null==ka&&(ka="%"+ea[0]+"%");if(null!=V)for(var T=0;T<V.length;T++)null==k[V[T].to]&&(k[V[T].to]={});G.model.beginUpdate();try{for(N=R+1;N<c.length;N++){var ha=this.editor.csvToArray(c[N]);if(null==ha){var ia=40<c[N].length?c[N].substring(0,40)+"...":c[N];throw Error(N+
+"style"==M?m=I:"parentstyle"==M?u=I:"stylename"==M&&0<I.length&&"-"!=I?v=I:"styles"==M&&0<I.length&&"-"!=I?p=JSON.parse(I):"identity"==M&&0<I.length&&"-"!=I?B=I:"parent"==M&&0<I.length&&"-"!=I?K=I:"namespace"==M&&0<I.length&&"-"!=I?Y=I:"width"==M?H=I:"height"==M?Q=I:"left"==M&&0<I.length?D=I:"top"==M&&0<I.length?L=I:"ignore"==M?ga=I.split(","):"connect"==M?V.push(JSON.parse(I)):"link"==M?pa=I:"padding"==M?W=parseFloat(I):"edgespacing"==M?O=parseFloat(I):"nodespacing"==M?P=parseFloat(I):"levelspacing"==
+M?ba=parseFloat(I):"layout"==M&&(S=I)}}}if(null==c[R])throw Error(mxResources.get("invalidOrMissingFile"));var ea=this.editor.csvToArray(c[R]),M=la=null;if(null!=B||null!=K)for(var N=0;N<ea.length;N++)B==ea[N]&&(la=N),K==ea[N]&&(M=N);null==ka&&(ka="%"+ea[0]+"%");if(null!=V)for(var T=0;T<V.length;T++)null==l[V[T].to]&&(l[V[T].to]={});G.model.beginUpdate();try{for(N=R+1;N<c.length;N++){var ha=this.editor.csvToArray(c[N]);if(null==ha){var ia=40<c[N].length?c[N].substring(0,40)+"...":c[N];throw Error(N+
 " ("+ia+") "+mxResources.get("containsValidationErrors"));}if(ha.length==ea.length){var J=null,qa=null!=la?Y+ha[la]:null;null!=qa&&(J=G.model.getCell(qa));var B=null!=J,aa=new mxCell(ka,new mxGeometry(ja,na,0,0),m||"whiteSpace=wrap;html=1;");aa.vertex=!0;aa.id=qa;for(var da=0;da<ha.length;da++)G.setAttributeForCell(aa,ea[da],ha[da]);if(null!=x&&null!=y){var Aa=y[aa.getAttribute(x)];null!=Aa&&G.labelChanged(aa,Aa)}if(null!=v&&null!=p){var wa=p[aa.getAttribute(v)];null!=wa&&(aa.style=wa)}G.setAttributeForCell(aa,
-"placeholders","1");aa.style=G.replacePlaceholders(aa,aa.style);B&&(G.model.setGeometry(J,aa.geometry),G.model.setStyle(J,aa.style),0>mxUtils.indexOf(e,J)&&e.push(J));J=aa;if(!B)for(T=0;T<V.length;T++)k[V[T].to][J.getAttribute(V[T].to)]=J;null!=pa&&"link"!=pa&&(G.setLinkForCell(J,J.getAttribute(pa)),G.setAttributeForCell(J,pa,null));G.fireEvent(new mxEventObject("cellsInserted","cells",[J]));var za=this.editor.graph.getPreferredSizeForCell(J);J.vertex&&(null!=D&&null!=J.getAttribute(D)&&(J.geometry.x=
+"placeholders","1");aa.style=G.replacePlaceholders(aa,aa.style);B&&(G.model.setGeometry(J,aa.geometry),G.model.setStyle(J,aa.style),0>mxUtils.indexOf(e,J)&&e.push(J));J=aa;if(!B)for(T=0;T<V.length;T++)l[V[T].to][J.getAttribute(V[T].to)]=J;null!=pa&&"link"!=pa&&(G.setLinkForCell(J,J.getAttribute(pa)),G.setAttributeForCell(J,pa,null));G.fireEvent(new mxEventObject("cellsInserted","cells",[J]));var za=this.editor.graph.getPreferredSizeForCell(J);J.vertex&&(null!=D&&null!=J.getAttribute(D)&&(J.geometry.x=
 ja+parseFloat(J.getAttribute(D))),null!=L&&null!=J.getAttribute(L)&&(J.geometry.y=ca+parseFloat(J.getAttribute(L))),"@"==H.charAt(0)&&null!=J.getAttribute(H.substring(1))?J.geometry.width=parseFloat(J.getAttribute(H.substring(1))):J.geometry.width="auto"==H?za.width+W:parseFloat(H),"@"==Q.charAt(0)&&null!=J.getAttribute(Q.substring(1))?J.geometry.height=parseFloat(J.getAttribute(Q.substring(1))):J.geometry.height="auto"==Q?za.height+W:parseFloat(Q),na+=J.geometry.height+P);B?(null==f[qa]&&(f[qa]=
-[]),f[qa].push(J)):(K=null!=M?G.model.getCell(Y+ha[M]):null,d.push(J),null!=K?(K.style=G.replacePlaceholders(K,t),G.addCell(J,K)):e.push(G.addCell(J)))}}for(var ma=e.slice(),fa=e.slice(),T=0;T<V.length;T++)for(var sa=V[T],N=0;N<e.length;N++){var J=e[N],Ea=mxUtils.bind(this,function(a,b,c){var d=b.getAttribute(c.from);if(null!=d){G.setAttributeForCell(b,c.from,null);for(var d=d.split(","),e=0;e<d.length;e++){var f=k[c.to][d[e]];if(null!=f){var g=c.label;null!=c.fromlabel&&(g=(b.getAttribute(c.fromlabel)||
+[]),f[qa].push(J)):(K=null!=M?G.model.getCell(Y+ha[M]):null,d.push(J),null!=K?(K.style=G.replacePlaceholders(K,u),G.addCell(J,K)):e.push(G.addCell(J)))}}for(var ma=e.slice(),fa=e.slice(),T=0;T<V.length;T++)for(var sa=V[T],N=0;N<e.length;N++){var J=e[N],Ea=mxUtils.bind(this,function(a,b,c){var d=b.getAttribute(c.from);if(null!=d){G.setAttributeForCell(b,c.from,null);for(var d=d.split(","),e=0;e<d.length;e++){var f=l[c.to][d[e]];if(null!=f){var g=c.label;null!=c.fromlabel&&(g=(b.getAttribute(c.fromlabel)||
 "")+(g||""));null!=c.tolabel&&(g=(g||"")+(f.getAttribute(c.tolabel)||""));fa.push(G.insertEdge(null,null,g||"",c.invert?f:a,c.invert?a:f,c.style||G.createCurrentEdgeStyle()));mxUtils.remove(c.invert?a:f,ma)}}}});Ea(J,J,sa);if(null!=f[J.id])for(da=0;da<f[J.id].length;da++)Ea(J,f[J.id][da],sa)}if(null!=ga)for(N=0;N<d.length;N++)for(J=d[N],da=0;da<ga.length;da++)G.setAttributeForCell(J,mxUtils.trim(ga[da]),null);if(0<e.length){var ta=new mxParallelEdgeLayout(G);ta.spacing=O;var oa=function(){0<ta.spacing&&
 ta.execute(G.getDefaultParent());for(var a=0;a<e.length;a++){var b=G.getCellGeometry(e[a]);b.x=Math.round(G.snap(b.x));b.y=Math.round(G.snap(b.y));"auto"==H&&(b.width=Math.round(G.snap(b.width)));"auto"==Q&&(b.height=Math.round(G.snap(b.height)))}};if("["==S.charAt(0)){var Ka=Z;G.view.validate();this.executeLayoutList(JSON.parse(S),function(){oa();Ka()});Z=null}else if("circle"==S){var Ba=new mxCircleLayout(G);Ba.resetEdges=!1;var La=Ba.isVertexIgnored;Ba.isVertexIgnored=function(a){return La.apply(this,
 arguments)||0>mxUtils.indexOf(e,a)};this.executeLayout(function(){Ba.execute(G.getDefaultParent());oa()},!0,Z);Z=null}else if("horizontaltree"==S||"verticaltree"==S||"auto"==S&&fa.length==2*e.length-1&&1==ma.length){G.view.validate();var Ca=new mxCompactTreeLayout(G,"horizontaltree"==S);Ca.levelDistance=P;Ca.edgeRouting=!1;Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(G.getDefaultParent(),0<ma.length?ma[0]:null)},!0,Z);Z=null}else if("horizontalflow"==S||"verticalflow"==S||"auto"==S&&
@@ -3278,76 +3280,76 @@ ua.isVertexIgnored=function(a){return Fa.apply(this,arguments)||0>mxUtils.indexO
 null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b=window.location.search;return b};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),d;for(d in urlParams)0>mxUtils.indexOf(c,d)&&(a=0==b?a+"?":a+"&",null!=urlParams[d]&&(a+=d+"="+urlParams[d],b++))}return a};EditorUi.prototype.showLinkDialog=
 function(a,b,d){a=new LinkDialog(this,a,b,d,!0);this.showDialog(a.container,560,130,!0,!0);a.init()};var v=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=v.apply(this,arguments),c=this.editor.graph,d=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(c.container)&&c.pageVisible&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width-
 2*a.x/b),Math.ceil(this.source.minimumGraphSize.height-2*a.y/b))}return d.apply(this,arguments)};var f=b.getSourceContainerSize;b.getSourceContainerSize=function(){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width*b-2*a.x),Math.ceil(this.source.minimumGraphSize.height*b-2*a.y))}return f.apply(this,arguments)};b.getOutlineOffset=function(a){if(mxUtils.hasScrollbars(c.container)&&
-null!=this.source.minimumGraphSize){var d=this.source.getPagePadding();return new mxPoint(Math.round(Math.max(0,(b.outline.container.clientWidth/a-(this.source.minimumGraphSize.width-2*d.x))/2)-d.x),Math.round(Math.max(0,(b.outline.container.clientHeight/a-(this.source.minimumGraphSize.height-2*d.y))/2)-d.y-5/a))}return new mxPoint(8/a,8/a)};var l=b.init;b.init=function(){l.apply(this,arguments);b.outline.view.getBackgroundPageBounds=function(){var a=c.getPageLayout(),b=c.getPageSize();return new mxRectangle(this.scale*
+null!=this.source.minimumGraphSize){var d=this.source.getPagePadding();return new mxPoint(Math.round(Math.max(0,(b.outline.container.clientWidth/a-(this.source.minimumGraphSize.width-2*d.x))/2)-d.x),Math.round(Math.max(0,(b.outline.container.clientHeight/a-(this.source.minimumGraphSize.height-2*d.y))/2)-d.y-5/a))}return new mxPoint(8/a,8/a)};var g=b.init;b.init=function(){g.apply(this,arguments);b.outline.view.getBackgroundPageBounds=function(){var a=c.getPageLayout(),b=c.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)};b.outline.view.validateBackgroundPage()};this.editor.addListener("pageSelected",function(a,c){var d=c.getProperty("change"),e=b.source,f=b.outline;f.pageScale=e.pageScale;f.pageFormat=e.pageFormat;f.background=e.background;f.pageVisible=e.pageVisible;f.background=e.background;var g=mxUtils.getCurrentStyle(e.container);f.container.style.backgroundColor=g.backgroundColor;
 null!=e.view.backgroundPageShape&&null!=f.view.backgroundPageShape&&(f.view.backgroundPageShape.fill=e.view.backgroundPageShape.fill);b.outline.view.clear(d.previousPage.root,!0);b.outline.view.validate()});return b};EditorUi.prototype.getServiceCount=function(a,b){var c=1;null==this.drive&&"function"!==typeof window.DriveClient||c++;b||null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||c++;b||null==this.gitHub||c++;b||
 null==this.gitLab||c++;b&&a&&isLocalStorage&&"1"==urlParams.browser&&c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var a=this.getCurrentFile(),b=null!=a||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(b);this.menus.get("viewZoom").setEnabled(b);var d=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==a||a.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));a="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=a&&a.isEditable();this.actions.get("image").setEnabled(b);this.actions.get("zoomIn").setEnabled(b);this.actions.get("zoomOut").setEnabled(b);this.actions.get("resetView").setEnabled(b);
 this.actions.get("undo").setEnabled(this.canUndo()&&a);this.actions.get("redo").setEnabled(this.canRedo()&&a);this.menus.get("edit").setEnabled(b);this.menus.get("view").setEnabled(b);this.menus.get("importFrom").setEnabled(a);this.menus.get("arrange").setEnabled(a);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(a),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(a));if(this.isAppCache()){var f=applicationCache;if(null!=f&&null==
 this.offlineStatus){this.offlineStatus=document.createElement("div");this.offlineStatus.className="geItem";this.offlineStatus.style.position="absolute";this.offlineStatus.style.fontSize="8pt";this.offlineStatus.style.top="2px";this.offlineStatus.style.right="12px";this.offlineStatus.style.color="#666";this.offlineStatus.style.margin="4px";this.offlineStatus.style.padding="2px";this.offlineStatus.style.verticalAlign="middle";this.offlineStatus.innerHTML="";this.menubarContainer.appendChild(this.offlineStatus);
-mxEvent.addListener(this.offlineStatus,"click",mxUtils.bind(this,function(){var a=this.offlineStatus.getElementsByTagName("img");null!=a&&0<a.length&&this.alert(a[0].getAttribute("title"))}));var f=window.applicationCache,k=null,b=mxUtils.bind(this,function(){var a=f.status,b;a==f.CHECKING&&(a=f.DOWNLOADING);switch(a){case f.UNCACHED:b="";break;case f.IDLE:b="min"==uiTheme?"":'<img title="draw.io is up to date." border="0" src="'+IMAGE_PATH+'/checkmark.gif"/>';break;case f.DOWNLOADING:b='<img title="Downloading new version..." border="0" src="'+
-IMAGE_PATH+'/spin.gif"/>';break;case f.UPDATEREADY:b='<img title="'+mxUtils.htmlEntities(mxResources.get("restartForChangeRequired"))+'" border="0" src="'+IMAGE_PATH+'/download.png"/>';break;case f.OBSOLETE:b='<img title="Obsolete" border="0" src="'+IMAGE_PATH+'/clear.gif"/>';break;default:b='<img title="Unknown" border="0" src="'+IMAGE_PATH+'/clear.gif"/>'}a!=k&&(this.offlineStatus.innerHTML=b,k=a)});mxEvent.addListener(f,"checking",b);mxEvent.addListener(f,"noupdate",b);mxEvent.addListener(f,"downloading",
+mxEvent.addListener(this.offlineStatus,"click",mxUtils.bind(this,function(){var a=this.offlineStatus.getElementsByTagName("img");null!=a&&0<a.length&&this.alert(a[0].getAttribute("title"))}));var f=window.applicationCache,l=null,b=mxUtils.bind(this,function(){var a=f.status,b;a==f.CHECKING&&(a=f.DOWNLOADING);switch(a){case f.UNCACHED:b="";break;case f.IDLE:b="min"==uiTheme?"":'<img title="draw.io is up to date." border="0" src="'+IMAGE_PATH+'/checkmark.gif"/>';break;case f.DOWNLOADING:b='<img title="Downloading new version..." border="0" src="'+
+IMAGE_PATH+'/spin.gif"/>';break;case f.UPDATEREADY:b='<img title="'+mxUtils.htmlEntities(mxResources.get("restartForChangeRequired"))+'" border="0" src="'+IMAGE_PATH+'/download.png"/>';break;case f.OBSOLETE:b='<img title="Obsolete" border="0" src="'+IMAGE_PATH+'/clear.gif"/>';break;default:b='<img title="Unknown" border="0" src="'+IMAGE_PATH+'/clear.gif"/>'}a!=l&&(this.offlineStatus.innerHTML=b,l=a)});mxEvent.addListener(f,"checking",b);mxEvent.addListener(f,"noupdate",b);mxEvent.addListener(f,"downloading",
 b);mxEvent.addListener(f,"progress",b);mxEvent.addListener(f,"cached",b);mxEvent.addListener(f,"updateready",b);mxEvent.addListener(f,"obsolete",b);mxEvent.addListener(f,"error",b);b()}}else this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var a=this.getCurrentFile();return null!=
 a&&a.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var y=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){y.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),d=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=d&&d.isEditable()&&d.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);
 this.actions.get("connectionArrows").setEnabled(b);this.actions.get("connectionPoints").setEnabled(b);this.actions.get("copyStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("editGeometry").setEnabled(a.getModel().isVertex(a.getSelectionCell()));this.actions.get("createShape").setEnabled(b);this.actions.get("createRevision").setEnabled(b);this.actions.get("moveToFolder").setEnabled(null!=d);this.actions.get("makeCopy").setEnabled(null!=
 d&&!d.isRestricted());this.actions.get("editDiagram").setEnabled(b&&(null==d||!d.isRestricted()));this.actions.get("publishLink").setEnabled(null!=d&&!d.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("find").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!=d&&d.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=d);this.menus.get("publish").setEnabled(null!=d&&!d.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var B=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){this.editUpdateListener&&(this.editor.undoManager.removeListener(this.editUpdateListener),this.editUpdateListener=
-null);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);B.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,d,f,k,l,m){var c=a.editor.graph;if("xml"==d)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==d)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(c.getSvg(f,k,l)),"image/svg+xml");else{var e=
-a.getFileData(!0,null,null,null,null,!0),g=c.getGraphBounds(),n=Math.floor(g.width*k/c.view.scale),p=Math.floor(g.height*k/c.view.scale);if(e.length<=MAX_REQUEST_SIZE&&n*p<MAX_AREA)if(a.hideDialog(),"png"!=d&&"jpg"!=d&&"jpeg"!=d||!a.isExportToCanvas()){var t={globalVars:c.getExportVariables()};a.saveRequest(b,d,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+d+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(t))+(0<m?"&dpi="+
-m:"")+"&bg="+(null!=f?f:"none")+"&w="+n+"&h="+p+"&border="+l+"&xml="+encodeURIComponent(e))})}else"png"==d?a.exportImage(k,null==f||"none"==f,!0,!1,!1,l,!0,!1,null,null,m):a.exportImage(k,!1,!0,!1,!1,l,!0,!1,"jpeg");else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var c=a.changes[b];if(null!=c&&c.constructor==mxChildChange&&null!=c.child){var d=c.child;if(null!=d.source&&null!=d.source.id){var f=this.getFutureCellForEdit(c.model,
+null);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);B.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,d,f,l,g,m){var c=a.editor.graph;if("xml"==d)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==d)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(c.getSvg(f,l,g)),"image/svg+xml");else{var e=
+a.getFileData(!0,null,null,null,null,!0),k=c.getGraphBounds(),n=Math.floor(k.width*l/c.view.scale),p=Math.floor(k.height*l/c.view.scale);if(e.length<=MAX_REQUEST_SIZE&&n*p<MAX_AREA)if(a.hideDialog(),"png"!=d&&"jpg"!=d&&"jpeg"!=d||!a.isExportToCanvas()){var u={globalVars:c.getExportVariables()};a.saveRequest(b,d,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+d+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(u))+(0<m?"&dpi="+
+m:"")+"&bg="+(null!=f?f:"none")+"&w="+n+"&h="+p+"&border="+g+"&xml="+encodeURIComponent(e))})}else"png"==d?a.exportImage(l,null==f||"none"==f,!0,!1,!1,g,!0,!1,null,null,m):a.exportImage(l,!1,!0,!1,!1,g,!0,!1,"jpeg");else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var c=a.changes[b];if(null!=c&&c.constructor==mxChildChange&&null!=c.child){var d=c.child;if(null!=d.source&&null!=d.source.id){var f=this.getFutureCellForEdit(c.model,
 a,d.source.id);f!=d.source&&(d.source=f)}null!=d.target&&null!=d.target.id&&(c=this.getFutureCellForEdit(c.model,a,d.target.id),c!=d.target&&(d.target=c))}}};EditorUi.prototype.getFutureCellForEdit=function(a,b,d){var c=a.getCell(d);if(null==c)for(var e=b.changes.length-1;0<=e;e--){var f=b.changes[e];if(f.constructor==mxChildChange&&null!=f.child&&f.child.id==d){a.contains(f.previous)&&(c=f.child);break}}return c};EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);
 var a=this.editor.graph,b="";if(null!=this.pages)for(var d=0;d<this.pages.length;d++){var f=a;this.currentPage!=this.pages[d]&&(f=this.createTemporaryGraph(a.getStylesheet()),f.model.setRoot(this.pages[d].root));b+=this.pages[d].getName()+" "+f.getIndexableText()+" "}else b=a.getIndexableText();this.editor.graph.setEnabled(!0);return b};EditorUi.prototype.showRemotelyStoredLibrary=function(a){var b={},c=document.createElement("div");c.style.whiteSpace="nowrap";var d=document.createElement("h3");mxUtils.write(d,
-mxUtils.htmlEntities(a));d.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(d);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="/images/spin.gif"></div>';var l={};try{var k=mxSettings.getCustomLibraries();for(a=0;a<k.length;a++){var m=k[a];if("R"==m.substring(0,1)){var p=JSON.parse(decodeURIComponent(m.substring(1)));l[p[0]]={id:p[0],
-title:p[1],downloadUrl:p[2]}}}}catch(E){}this.remoteInvoke("getCustomLibraries",null,null,function(a){f.innerHTML="";if(0==a.length)f.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var c=0;c<a.length;c++){var d=a[c];l[d.id]&&(b[d.id]=d);var e=this.addCheckbox(f,d.title,l[d.id]);(function(a,c){mxEvent.addListener(c,"change",function(){this.checked?b[a.id]=a:delete b[a.id]})})(d,e)}},mxUtils.bind(this,function(a){f.innerHTML=
-"";var b=document.createElement("div");b.style.padding="8px";b.style.textAlign="center";mxUtils.write(b,mxResources.get("error")+": ");mxUtils.write(b,null!=a&&null!=a.message?a.message:mxResources.get("unknownError"));f.appendChild(b)}));c.appendChild(f);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var a=0,c;for(c in b)null==l[c]&&(a++,mxUtils.bind(this,function(b){this.remoteInvoke("getFileContent",[b.downloadUrl],null,mxUtils.bind(this,
-function(c){a--;0==a&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,c,b))}catch(C){this.handleError(C,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){a--;0==a&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(b[c]));for(c in l)b[c]||this.closeLibrary(new RemoteLibrary(this,null,l[c]));0==a&&this.spinner.stop()}),null,null,"https://desk.draw.io/support/solutions/articles/16000092763");this.showDialog(c.container,340,375,!0,!0,
+mxUtils.htmlEntities(a));d.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(d);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="/images/spin.gif"></div>';var g={};try{var l=mxSettings.getCustomLibraries();for(a=0;a<l.length;a++){var m=l[a];if("R"==m.substring(0,1)){var p=JSON.parse(decodeURIComponent(m.substring(1)));g[p[0]]={id:p[0],
+title:p[1],downloadUrl:p[2]}}}}catch(F){}this.remoteInvoke("getCustomLibraries",null,null,function(a){f.innerHTML="";if(0==a.length)f.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var c=0;c<a.length;c++){var d=a[c];g[d.id]&&(b[d.id]=d);var e=this.addCheckbox(f,d.title,g[d.id]);(function(a,c){mxEvent.addListener(c,"change",function(){this.checked?b[a.id]=a:delete b[a.id]})})(d,e)}},mxUtils.bind(this,function(a){f.innerHTML=
+"";var b=document.createElement("div");b.style.padding="8px";b.style.textAlign="center";mxUtils.write(b,mxResources.get("error")+": ");mxUtils.write(b,null!=a&&null!=a.message?a.message:mxResources.get("unknownError"));f.appendChild(b)}));c.appendChild(f);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var a=0,c;for(c in b)null==g[c]&&(a++,mxUtils.bind(this,function(b){this.remoteInvoke("getFileContent",[b.downloadUrl],null,mxUtils.bind(this,
+function(c){a--;0==a&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,c,b))}catch(C){this.handleError(C,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){a--;0==a&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(b[c]));for(c in g)b[c]||this.closeLibrary(new RemoteLibrary(this,null,g[c]));0==a&&this.spinner.stop()}),null,null,"https://desk.draw.io/support/solutions/articles/16000092763");this.showDialog(c.container,340,375,!0,!0,
 null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(a){this.remoteWin=a;for(var b=0;b<this.remoteInvokeQueue.length;b++)a.postMessage(this.remoteInvokeQueue[b],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(a){var b=a.msgMarkers,c=this.remoteInvokeCallbacks[b.callbackId];a.error?
-c.error&&c.error(a.error.errResp):c.callback&&c.callback.apply(this,a.resp);this.remoteInvokeCallbacks[b.callbackId]=null};EditorUi.prototype.remoteInvoke=function(a,b,d,f,k){var c=!0,e=window.setTimeout(mxUtils.bind(this,function(){c=!1;k({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),g=mxUtils.bind(this,function(){window.clearTimeout(e);c&&f.apply(this,arguments)});d=d||{};d.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:g,error:k});
+c.error&&c.error(a.error.errResp):c.callback&&c.callback.apply(this,a.resp);this.remoteInvokeCallbacks[b.callbackId]=null};EditorUi.prototype.remoteInvoke=function(a,b,d,f,l){var c=!0,e=window.setTimeout(mxUtils.bind(this,function(){c=!1;l({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),k=mxUtils.bind(this,function(){window.clearTimeout(e);c&&f.apply(this,arguments)});d=d||{};d.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:k,error:l});
 a=JSON.stringify({event:"remoteInvoke",funtionName:a,functionArgs:b,msgMarkers:d});null!=this.remoteWin?this.remoteWin.postMessage(a,"*"):this.remoteInvokeQueue.push(a)};EditorUi.prototype.handleRemoteInvoke=function(a){var b=mxUtils.bind(this,function(b,c){var d={event:"remoteInvokeResponse",msgMarkers:a.msgMarkers};null!=c?d.error={errResp:c}:null!=b&&(d.resp=b);this.remoteWin.postMessage(JSON.stringify(d),"*")});try{var c=a.funtionName,d=this.remoteInvokableFns[c];if(null!=d&&"function"===typeof this[c]){var f=
-a.functionArgs;Array.isArray(f)||(f=[]);if(d.isAsync)f.push(function(){b(Array.prototype.slice.apply(arguments))}),f.push(function(a){b(null,a||"Unkown Error")}),this[c].apply(this,f);else{var l=this[c].apply(this,f);b([l])}}else b(null,"Invalid Call: "+c+" is not found.")}catch(z){b(null,"Invalid Call: An error occured, "+z.message)}};EditorUi.prototype.commentsSupported=function(){var a=this.getCurrentFile();return null!=a?a.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var a=
+a.functionArgs;Array.isArray(f)||(f=[]);if(d.isAsync)f.push(function(){b(Array.prototype.slice.apply(arguments))}),f.push(function(a){b(null,a||"Unkown Error")}),this[c].apply(this,f);else{var g=this[c].apply(this,f);b([g])}}else b(null,"Invalid Call: "+c+" is not found.")}catch(z){b(null,"Invalid Call: An error occured, "+z.message)}};EditorUi.prototype.commentsSupported=function(){var a=this.getCurrentFile();return null!=a?a.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var a=
 this.getCurrentFile();return null!=a?a.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(a,b){var c=this.getCurrentFile();null!=c?c.getComments(a,b):a([])};EditorUi.prototype.addComment=function(a,b,d){var c=this.getCurrentFile();null!=c?c.addComment(a,b,d):b(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var a=this.getCurrentFile();return null!=a?
 a.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var a=this.getCurrentFile();return null!=a?a.canComment():!0};EditorUi.prototype.newComment=function(a,b){var c=this.getCurrentFile();return null!=c?c.newComment(a,b):new DrawioComment(this,null,a,Date.now(),Date.now(),!1,b)};EditorUi.prototype.isRevisionHistorySupported=function(){var a=this.getCurrentFile();return null!=a&&a.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(a,b){var c=this.getCurrentFile();null!=
 c&&c.getRevisions?c.getRevisions(a,b):b({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var a=this.getCurrentFile();return null!=a&&(a.constructor==DriveFile&&a.isEditable()||a.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(a){a.setRequestHeader("Content-Language","da, mi, en, de-DE")}})();
-var CommentsWindow=function(a,b,f,d,k,m){function p(){for(var a=q.getElementsByTagName("div"),b=0,c=0;c<a.length;c++)"none"!=a[c].style.display&&a[c].parentNode==q&&b++;E.style.display=0==b?"block":"none"}function v(a,b,c,d){function e(){b.removeChild(k);b.removeChild(m);g.style.display="block";f.style.display="block"}l={div:b,comment:a,saveCallback:c,deleteOnCancel:d};var f=b.querySelector(".geCommentTxt"),g=b.querySelector(".geCommentActionsList"),k=document.createElement("textarea");k.className=
-"geCommentEditTxtArea";k.style.minHeight=f.offsetHeight+"px";k.value=a.content;b.insertBefore(k,f);var m=document.createElement("div");m.className="geCommentEditBtns";var n=mxUtils.button(mxResources.get("cancel"),function(){d?(b.parentNode.removeChild(b),p()):e();l=null});n.className="geCommentEditBtn";m.appendChild(n);var t=mxUtils.button(mxResources.get("save"),function(){f.innerHTML="";a.content=k.value;mxUtils.write(f,a.content);e();c(a);l=null});mxEvent.addListener(k,"keydown",mxUtils.bind(this,
-function(a){mxEvent.isConsumed(a)||((mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a))&&13==a.keyCode?(t.click(),mxEvent.consume(a)):27==a.keyCode&&(n.click(),mxEvent.consume(a)))}));t.focus();t.className="geCommentEditBtn gePrimaryBtn";m.appendChild(t);b.insertBefore(m,f);g.style.display="none";f.style.display="none";k.focus()}function y(b,c){c.innerHTML="";var d=new Date(b.modifiedDate),e=a.timeSince(d);null==e&&(e=mxResources.get("lessThanAMinute"));mxUtils.write(c,mxResources.get("timeAgo",
-[e],"{1} ago"));c.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString())}function B(a){var b=document.createElement("img");b.className="geCommentBusyImg";b.src=IMAGE_PATH+"/spin.gif";a.appendChild(b);a.busyImg=b}function c(a){a.style.border="1px solid red";a.removeChild(a.busyImg)}function e(a){a.style.border="";a.removeChild(a.busyImg)}function g(b,d,f,k,m){function x(a,c,d){var e=document.createElement("li");e.className="geCommentAction";var f=document.createElement("a");f.className=
-"geCommentActionLnk";mxUtils.write(f,a);e.appendChild(f);mxEvent.addListener(f,"click",function(a){c(a,b);a.preventDefault();mxEvent.consume(a)});O.appendChild(e);d&&(e.style.display="none")}function D(){function a(b){c.push(d);if(null!=b.replies)for(var e=0;e<b.replies.length;e++)d=d.nextSibling,a(b.replies[e])}var c=[],d=A;a(b);return{pdiv:d,replies:c}}function z(d,f,l,m,n){function p(){B(u);b.addReply(x,function(a){x.id=a;b.replies.push(x);e(u);l&&l()},function(b){t();c(u);a.handleError(b,null,
-null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},m,n)}function t(){v(x,u,function(a){p()},!0)}var q=D().pdiv,x=a.newComment(d,a.getCurrentUser());x.pCommentId=b.id;null==b.replies&&(b.replies=[]);var u=g(x,b.replies,q,k+1);f?t():p()}if(m||!b.isResolved){E.style.display="none";var A=document.createElement("div");A.className="geCommentContainer";A.setAttribute("data-commentId",b.id);A.style.marginLeft=20*k+5+"px";b.isResolved&&"dark"!=uiTheme&&(A.style.backgroundColor="ghostWhite");
-var C=document.createElement("div");C.className="geCommentHeader";var F=document.createElement("img");F.className="geCommentUserImg";F.src=b.user.pictureUrl||Editor.userImage;C.appendChild(F);F=document.createElement("div");F.className="geCommentHeaderTxt";C.appendChild(F);var L=document.createElement("div");L.className="geCommentUsername";mxUtils.write(L,b.user.displayName||"");F.appendChild(L);L=document.createElement("div");L.className="geCommentDate";L.setAttribute("data-commentId",b.id);y(b,
-L);F.appendChild(L);A.appendChild(C);C=document.createElement("div");C.className="geCommentTxt";mxUtils.write(C,b.content||"");A.appendChild(C);C=document.createElement("div");C.className="geCommentActions";var O=document.createElement("ul");O.className="geCommentActionsList";C.appendChild(O);u||0!=k&&!n||x(mxResources.get("reply"),function(){z("",!0)},b.isResolved);F=a.getCurrentUser();null==F||F.id!=b.user.id||u||(x(mxResources.get("edit"),function(){function d(){v(b,A,function(){B(A);b.editComment(b.content,
-function(){e(A)},function(b){c(A);d();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}d()},b.isResolved),x(mxResources.get("delete"),function(){a.confirm(mxResources.get("areYouSure"),function(){B(A);b.deleteComment(function(){for(var a=D(b).replies,c=0;c<a.length;c++)q.removeChild(a[c]);for(c=0;c<d.length;c++)if(d[c]==b){d.splice(c,1);break}E.style.display=0==q.getElementsByTagName("div").length?"block":"none"},function(b){c(A);a.handleError(b,null,null,
-null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},b.isResolved));u||0!=k||x(b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(a){function c(){var c=a.target;c.innerHTML="";b.isResolved=!b.isResolved;mxUtils.write(c,b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var d=b.isResolved?"none":"",e=D(b).replies,f="dark"==uiTheme?"transparent":b.isResolved?"ghostWhite":"white",g=0;g<e.length;g++){e[g].style.backgroundColor=f;for(var l=e[g].querySelectorAll(".geCommentAction"),
-k=0;k<l.length;k++)l[k]!=c.parentNode&&(l[k].style.display=d);t||(e[g].style.display="none")}p()}b.isResolved?z(mxResources.get("reOpened")+": ",!0,c,!1,!0):z(mxResources.get("markedAsResolved"),!1,c,!0)});A.appendChild(C);null!=f?q.insertBefore(A,f.nextSibling):q.appendChild(A);for(f=0;null!=b.replies&&f<b.replies.length;f++)C=b.replies[f],C.isResolved=b.isResolved,g(C,b.replies,null,k+1,m);null!=l&&(l.comment.id==b.id?(m=b.content,b.content=l.comment.content,v(b,A,l.saveCallback,l.deleteOnCancel),
-b.content=m):null==l.comment.id&&l.comment.pCommentId==b.id&&(q.appendChild(l.div),v(l.comment,l.div,l.saveCallback,l.deleteOnCancel)));return A}}var u=!a.canComment(),n=a.canReplyToReplies(),l=null,z=document.createElement("div");z.className="geCommentsWin";z.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;var A=EditorUi.compactUi?"26px":"30px",q=document.createElement("div");q.className="geCommentsList";q.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":
-Dialog.backdropColor;q.style.bottom=parseInt(A)+7+"px";z.appendChild(q);var E=document.createElement("span");E.style.cssText="display:none;padding-top:10px;text-align:center;";mxUtils.write(E,mxResources.get("noCommentsFound"));var x=document.createElement("div");x.className="geToolbarContainer geCommentsToolbar";x.style.height=A;x.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";x.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;mxClient.IS_QUIRKS&&(x.style.filter=
-"none");A=document.createElement("a");A.className="geButton";mxClient.IS_QUIRKS&&(A.style.filter="none");if(!u){var F=A.cloneNode();F.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';F.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(F,"click",function(b){function d(){v(f,l,function(b){B(l);a.addComment(b,function(a){b.id=a;C.push(b);e(l)},function(b){c(l);d();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},
-!0)}var f=a.newComment("",a.getCurrentUser()),l=g(f,C,null,0);d();b.preventDefault();mxEvent.consume(b)});x.appendChild(F)}F=A.cloneNode();F.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';F.setAttribute("title",mxResources.get("showResolved"));var t=!1;"dark"==uiTheme&&(F.style.filter="invert(100%)");mxEvent.addListener(F,"click",function(a){this.className=(t=!t)?"geButton geCheckedBtn":"geButton";K();a.preventDefault();mxEvent.consume(a)});x.appendChild(F);a.commentsRefreshNeeded()&&
-(F=A.cloneNode(),F.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',F.setAttribute("title",mxResources.get("refresh")),"dark"==uiTheme&&(F.style.filter="invert(100%)"),mxEvent.addListener(F,"click",function(a){K();a.preventDefault();mxEvent.consume(a)}),x.appendChild(F));a.commentsSaveNeeded()&&(A=A.cloneNode(),A.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',A.setAttribute("title",mxResources.get("save")),"dark"==uiTheme&&
-(A.style.filter="invert(100%)"),mxEvent.addListener(A,"click",function(a){m();a.preventDefault();mxEvent.consume(a)}),x.appendChild(A));z.appendChild(x);var C=[],K=mxUtils.bind(this,function(){this.hasError=!1;if(null!=l){l.div=l.div.cloneNode(!0);var b=l.div.querySelector(".geCommentEditTxtArea"),c=l.div.querySelector(".geCommentEditBtns");l.comment.content=b.value;b.parentNode.removeChild(b);c.parentNode.removeChild(c)}q.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+
-'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";n=a.canReplyToReplies();a.commentsSupported()?a.getComments(function(a){function b(a){if(null!=a){a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});for(var c=0;c<a.length;c++)b(a[c].replies)}}a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});q.innerHTML="";q.appendChild(E);E.style.display="block";C=a;for(a=0;a<C.length;a++)b(C[a].replies),g(C[a],C,
-null,0,t);null!=l&&null==l.comment.id&&null==l.comment.pCommentId&&(q.appendChild(l.div),v(l.comment,l.div,l.saveCallback,l.deleteOnCancel))},mxUtils.bind(this,function(a){q.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(a&&a.message?": "+a.message:""));this.hasError=!0})):q.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});K();this.refreshComments=K;x=mxUtils.bind(this,function(){function a(b){var d=c[b.id];if(null!=d)for(y(b,d),d=0;null!=b.replies&&d<b.replies.length;d++)a(b.replies[d])}
-if(this.window.isVisible()){for(var b=q.querySelectorAll(".geCommentDate"),c={},d=0;d<b.length;d++){var e=b[d];c[e.getAttribute("data-commentId")]=e}for(d=0;d<C.length;d++)a(C[d])}});setInterval(x,6E4);this.refreshCommentsTime=x;this.window=new mxWindow(mxResources.get("comments"),z,b,f,d,k,!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,
+var CommentsWindow=function(a,b,f,d,l,m){function p(){for(var a=q.getElementsByTagName("div"),b=0,c=0;c<a.length;c++)"none"!=a[c].style.display&&a[c].parentNode==q&&b++;F.style.display=0==b?"block":"none"}function v(a,b,c,d){function e(){b.removeChild(l);b.removeChild(m);k.style.display="block";f.style.display="block"}g={div:b,comment:a,saveCallback:c,deleteOnCancel:d};var f=b.querySelector(".geCommentTxt"),k=b.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className=
+"geCommentEditTxtArea";l.style.minHeight=f.offsetHeight+"px";l.value=a.content;b.insertBefore(l,f);var m=document.createElement("div");m.className="geCommentEditBtns";var n=mxUtils.button(mxResources.get("cancel"),function(){d?(b.parentNode.removeChild(b),p()):e();g=null});n.className="geCommentEditBtn";m.appendChild(n);var u=mxUtils.button(mxResources.get("save"),function(){f.innerHTML="";a.content=l.value;mxUtils.write(f,a.content);e();c(a);g=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this,
+function(a){mxEvent.isConsumed(a)||((mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a))&&13==a.keyCode?(u.click(),mxEvent.consume(a)):27==a.keyCode&&(n.click(),mxEvent.consume(a)))}));u.focus();u.className="geCommentEditBtn gePrimaryBtn";m.appendChild(u);b.insertBefore(m,f);k.style.display="none";f.style.display="none";l.focus()}function y(b,c){c.innerHTML="";var d=new Date(b.modifiedDate),e=a.timeSince(d);null==e&&(e=mxResources.get("lessThanAMinute"));mxUtils.write(c,mxResources.get("timeAgo",
+[e],"{1} ago"));c.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString())}function B(a){var b=document.createElement("img");b.className="geCommentBusyImg";b.src=IMAGE_PATH+"/spin.gif";a.appendChild(b);a.busyImg=b}function c(a){a.style.border="1px solid red";a.removeChild(a.busyImg)}function e(a){a.style.border="";a.removeChild(a.busyImg)}function k(b,d,f,l,m){function x(a,c,d){var e=document.createElement("li");e.className="geCommentAction";var f=document.createElement("a");f.className=
+"geCommentActionLnk";mxUtils.write(f,a);e.appendChild(f);mxEvent.addListener(f,"click",function(a){c(a,b);a.preventDefault();mxEvent.consume(a)});O.appendChild(e);d&&(e.style.display="none")}function D(){function a(b){c.push(d);if(null!=b.replies)for(var e=0;e<b.replies.length;e++)d=d.nextSibling,a(b.replies[e])}var c=[],d=A;a(b);return{pdiv:d,replies:c}}function z(d,f,g,m,p){function n(){B(t);b.addReply(x,function(a){x.id=a;b.replies.push(x);e(t);g&&g()},function(b){u();c(t);a.handleError(b,null,
+null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},m,p)}function u(){v(x,t,function(a){n()},!0)}var q=D().pdiv,x=a.newComment(d,a.getCurrentUser());x.pCommentId=b.id;null==b.replies&&(b.replies=[]);var t=k(x,b.replies,q,l+1);f?u():n()}if(m||!b.isResolved){F.style.display="none";var A=document.createElement("div");A.className="geCommentContainer";A.setAttribute("data-commentId",b.id);A.style.marginLeft=20*l+5+"px";b.isResolved&&"dark"!=uiTheme&&(A.style.backgroundColor="ghostWhite");
+var E=document.createElement("div");E.className="geCommentHeader";var C=document.createElement("img");C.className="geCommentUserImg";C.src=b.user.pictureUrl||Editor.userImage;E.appendChild(C);C=document.createElement("div");C.className="geCommentHeaderTxt";E.appendChild(C);var L=document.createElement("div");L.className="geCommentUsername";mxUtils.write(L,b.user.displayName||"");C.appendChild(L);L=document.createElement("div");L.className="geCommentDate";L.setAttribute("data-commentId",b.id);y(b,
+L);C.appendChild(L);A.appendChild(E);E=document.createElement("div");E.className="geCommentTxt";mxUtils.write(E,b.content||"");A.appendChild(E);E=document.createElement("div");E.className="geCommentActions";var O=document.createElement("ul");O.className="geCommentActionsList";E.appendChild(O);t||0!=l&&!n||x(mxResources.get("reply"),function(){z("",!0)},b.isResolved);C=a.getCurrentUser();null==C||C.id!=b.user.id||t||(x(mxResources.get("edit"),function(){function d(){v(b,A,function(){B(A);b.editComment(b.content,
+function(){e(A)},function(b){c(A);d();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}d()},b.isResolved),x(mxResources.get("delete"),function(){a.confirm(mxResources.get("areYouSure"),function(){B(A);b.deleteComment(function(){for(var a=D(b).replies,c=0;c<a.length;c++)q.removeChild(a[c]);for(c=0;c<d.length;c++)if(d[c]==b){d.splice(c,1);break}F.style.display=0==q.getElementsByTagName("div").length?"block":"none"},function(b){c(A);a.handleError(b,null,null,
+null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},b.isResolved));t||0!=l||x(b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(a){function c(){var c=a.target;c.innerHTML="";b.isResolved=!b.isResolved;mxUtils.write(c,b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var d=b.isResolved?"none":"",e=D(b).replies,f="dark"==uiTheme?"transparent":b.isResolved?"ghostWhite":"white",g=0;g<e.length;g++){e[g].style.backgroundColor=f;for(var k=e[g].querySelectorAll(".geCommentAction"),
+l=0;l<k.length;l++)k[l]!=c.parentNode&&(k[l].style.display=d);u||(e[g].style.display="none")}p()}b.isResolved?z(mxResources.get("reOpened")+": ",!0,c,!1,!0):z(mxResources.get("markedAsResolved"),!1,c,!0)});A.appendChild(E);null!=f?q.insertBefore(A,f.nextSibling):q.appendChild(A);for(f=0;null!=b.replies&&f<b.replies.length;f++)E=b.replies[f],E.isResolved=b.isResolved,k(E,b.replies,null,l+1,m);null!=g&&(g.comment.id==b.id?(m=b.content,b.content=g.comment.content,v(b,A,g.saveCallback,g.deleteOnCancel),
+b.content=m):null==g.comment.id&&g.comment.pCommentId==b.id&&(q.appendChild(g.div),v(g.comment,g.div,g.saveCallback,g.deleteOnCancel)));return A}}var t=!a.canComment(),n=a.canReplyToReplies(),g=null,z=document.createElement("div");z.className="geCommentsWin";z.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;var A=EditorUi.compactUi?"26px":"30px",q=document.createElement("div");q.className="geCommentsList";q.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":
+Dialog.backdropColor;q.style.bottom=parseInt(A)+7+"px";z.appendChild(q);var F=document.createElement("span");F.style.cssText="display:none;padding-top:10px;text-align:center;";mxUtils.write(F,mxResources.get("noCommentsFound"));var x=document.createElement("div");x.className="geToolbarContainer geCommentsToolbar";x.style.height=A;x.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";x.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;mxClient.IS_QUIRKS&&(x.style.filter=
+"none");A=document.createElement("a");A.className="geButton";mxClient.IS_QUIRKS&&(A.style.filter="none");if(!t){var E=A.cloneNode();E.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';E.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(E,"click",function(b){function d(){v(f,g,function(b){B(g);a.addComment(b,function(a){b.id=a;C.push(b);e(g)},function(b){c(g);d();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},
+!0)}var f=a.newComment("",a.getCurrentUser()),g=k(f,C,null,0);d();b.preventDefault();mxEvent.consume(b)});x.appendChild(E)}E=A.cloneNode();E.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';E.setAttribute("title",mxResources.get("showResolved"));var u=!1;"dark"==uiTheme&&(E.style.filter="invert(100%)");mxEvent.addListener(E,"click",function(a){this.className=(u=!u)?"geButton geCheckedBtn":"geButton";K();a.preventDefault();mxEvent.consume(a)});x.appendChild(E);a.commentsRefreshNeeded()&&
+(E=A.cloneNode(),E.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',E.setAttribute("title",mxResources.get("refresh")),"dark"==uiTheme&&(E.style.filter="invert(100%)"),mxEvent.addListener(E,"click",function(a){K();a.preventDefault();mxEvent.consume(a)}),x.appendChild(E));a.commentsSaveNeeded()&&(A=A.cloneNode(),A.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',A.setAttribute("title",mxResources.get("save")),"dark"==uiTheme&&
+(A.style.filter="invert(100%)"),mxEvent.addListener(A,"click",function(a){m();a.preventDefault();mxEvent.consume(a)}),x.appendChild(A));z.appendChild(x);var C=[],K=mxUtils.bind(this,function(){this.hasError=!1;if(null!=g){g.div=g.div.cloneNode(!0);var b=g.div.querySelector(".geCommentEditTxtArea"),c=g.div.querySelector(".geCommentEditBtns");g.comment.content=b.value;b.parentNode.removeChild(b);c.parentNode.removeChild(c)}q.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+
+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";n=a.canReplyToReplies();a.commentsSupported()?a.getComments(function(a){function b(a){if(null!=a){a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});for(var c=0;c<a.length;c++)b(a[c].replies)}}a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});q.innerHTML="";q.appendChild(F);F.style.display="block";C=a;for(a=0;a<C.length;a++)b(C[a].replies),k(C[a],C,
+null,0,u);null!=g&&null==g.comment.id&&null==g.comment.pCommentId&&(q.appendChild(g.div),v(g.comment,g.div,g.saveCallback,g.deleteOnCancel))},mxUtils.bind(this,function(a){q.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(a&&a.message?": "+a.message:""));this.hasError=!0})):q.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});K();this.refreshComments=K;x=mxUtils.bind(this,function(){function a(b){var d=c[b.id];if(null!=d)for(y(b,d),d=0;null!=b.replies&&d<b.replies.length;d++)a(b.replies[d])}
+if(this.window.isVisible()){for(var b=q.querySelectorAll(".geCommentDate"),c={},d=0;d<b.length;d++){var e=b[d];c[e.getAttribute("data-commentId")]=e}for(d=0;d<C.length;d++)a(C[d])}});setInterval(x,6E4);this.refreshCommentsTime=x;this.window=new mxWindow(mxResources.get("comments"),z,b,f,d,l,!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(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-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var Y=mxUtils.bind(this,function(){var a=this.window.getX(),
-b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",Y);this.destroy=function(){mxEvent.removeListener(window,"resize",Y);this.window.destroy()}},ConfirmDialog=function(a,b,f,d,k,m,p,v,y,B,c){var e=document.createElement("div");e.style.textAlign="center";c=null!=c?c:44;var g=document.createElement("div");g.style.padding="6px";g.style.overflow="auto";g.style.maxHeight=c+"px";g.style.lineHeight="1.2em";mxClient.IS_QUIRKS&&(g.style.height="60px");mxUtils.write(g,b);
-e.appendChild(g);null!=B&&(g=document.createElement("div"),g.style.padding="6px 0 6px 0",b=document.createElement("img"),b.setAttribute("src",B),g.appendChild(b),e.appendChild(g));B=document.createElement("div");B.style.textAlign="center";B.style.whiteSpace="nowrap";var u=document.createElement("input");u.setAttribute("type","checkbox");m=mxUtils.button(m||mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d(u.checked)});m.className="geBtn";null!=v&&(m.innerHTML=v+"<br>"+m.innerHTML,m.style.paddingBottom=
-"8px",m.style.paddingTop="8px",m.style.height="auto",m.style.width="40%");a.editor.cancelFirst&&B.appendChild(m);var n=mxUtils.button(k||mxResources.get("ok"),function(){a.hideDialog();null!=f&&f(u.checked)});B.appendChild(n);null!=p?(n.innerHTML=p+"<br>"+n.innerHTML+"<br>",n.style.paddingBottom="8px",n.style.paddingTop="8px",n.style.height="auto",n.className="geBtn",n.style.width="40%"):n.className="geBtn gePrimaryBtn";a.editor.cancelFirst||B.appendChild(m);e.appendChild(B);y?(B.style.marginTop=
-"10px",g=document.createElement("p"),g.style.marginTop="20px",g.appendChild(u),k=document.createElement("span"),mxUtils.write(k," "+mxResources.get("rememberThisSetting")),g.appendChild(k),e.appendChild(g),mxEvent.addListener(k,"click",function(a){u.checked=!u.checked;mxEvent.consume(a)})):B.style.marginTop="12px";this.init=function(){n.focus()};this.container=e};function DiagramPage(a,b){this.node=a;null!=b?this.node.setAttribute("id",b):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")};
+b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",Y);this.destroy=function(){mxEvent.removeListener(window,"resize",Y);this.window.destroy()}},ConfirmDialog=function(a,b,f,d,l,m,p,v,y,B,c){var e=document.createElement("div");e.style.textAlign="center";c=null!=c?c:44;var k=document.createElement("div");k.style.padding="6px";k.style.overflow="auto";k.style.maxHeight=c+"px";k.style.lineHeight="1.2em";mxClient.IS_QUIRKS&&(k.style.height="60px");mxUtils.write(k,b);
+e.appendChild(k);null!=B&&(k=document.createElement("div"),k.style.padding="6px 0 6px 0",b=document.createElement("img"),b.setAttribute("src",B),k.appendChild(b),e.appendChild(k));B=document.createElement("div");B.style.textAlign="center";B.style.whiteSpace="nowrap";var t=document.createElement("input");t.setAttribute("type","checkbox");m=mxUtils.button(m||mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d(t.checked)});m.className="geBtn";null!=v&&(m.innerHTML=v+"<br>"+m.innerHTML,m.style.paddingBottom=
+"8px",m.style.paddingTop="8px",m.style.height="auto",m.style.width="40%");a.editor.cancelFirst&&B.appendChild(m);var n=mxUtils.button(l||mxResources.get("ok"),function(){a.hideDialog();null!=f&&f(t.checked)});B.appendChild(n);null!=p?(n.innerHTML=p+"<br>"+n.innerHTML+"<br>",n.style.paddingBottom="8px",n.style.paddingTop="8px",n.style.height="auto",n.className="geBtn",n.style.width="40%"):n.className="geBtn gePrimaryBtn";a.editor.cancelFirst||B.appendChild(m);e.appendChild(B);y?(B.style.marginTop=
+"10px",k=document.createElement("p"),k.style.marginTop="20px",k.appendChild(t),l=document.createElement("span"),mxUtils.write(l," "+mxResources.get("rememberThisSetting")),k.appendChild(l),e.appendChild(k),mxEvent.addListener(l,"click",function(a){t.checked=!t.checked;mxEvent.consume(a)})):B.style.marginTop="12px";this.init=function(){n.focus()};this.container=e};function DiagramPage(a,b){this.node=a;null!=b?this.node.setAttribute("id",b):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(a){null==a?this.node.removeAttribute("name"):this.node.setAttribute("name",a)};function RenamePage(a,b,f){this.ui=a;this.page=b;this.previous=this.name=f}RenamePage.prototype.execute=function(){var a=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};
 function MovePage(a,b,f){this.ui=a;this.oldIndex=b;this.newIndex=f}MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var a=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};
 function SelectPage(a,b,f){this.ui=a;this.previousPage=this.page=b;this.neverShown=!0;null!=b&&(this.neverShown=null==b.viewState,this.ui.updatePageRoot(b),null!=f&&(b.viewState=f,this.neverShown=!1))}
 SelectPage.prototype.execute=function(){var a=mxUtils.indexOf(this.ui.pages,this.previousPage);if(null!=this.page&&0<=a){var a=this.ui.currentPage,b=this.ui.editor,f=b.graph,d=Graph.compressNode(b.getGraphXml(!0));mxUtils.setTextContent(a.node,d);a.viewState=f.getViewState();a.root=f.model.root;null!=a.model&&a.model.rootChanged(a.root);f.view.clear(a.root,!0);f.clearSelection();this.ui.currentPage=this.previousPage;this.previousPage=a;a=this.ui.currentPage;f.model.prefix=Editor.guid()+"-";f.model.rootChanged(a.root);
 f.setViewState(a.viewState);f.gridEnabled=f.gridEnabled&&(!this.ui.editor.isChromelessView()||"1"==urlParams.grid);b.updateGraphComponents();f.view.validate();f.blockMathRender=!0;f.sizeDidChange();f.blockMathRender=!1;this.neverShown&&(this.neverShown=!1,f.selectUnlockedLayer());b.graph.fireEvent(new mxEventObject(mxEvent.ROOT));b.fireEvent(new mxEventObject("pageSelected","change",this))}};
-function ChangePage(a,b,f,d,k){SelectPage.call(this,a,f);this.relatedPage=b;this.index=d;this.previousIndex=null;this.noSelect=k}mxUtils.extend(ChangePage,SelectPage);
+function ChangePage(a,b,f,d,l){SelectPage.call(this,a,f);this.relatedPage=b;this.index=d;this.previousIndex=null;this.noSelect=l}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 a=mxUtils.indexOf(this.ui.pages,this.relatedPage);this.ui.pages.splice(a,1);this.index=a}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(){var a=null;if(null!=this.pages&&null!=this.currentPage)for(var b=0;b<this.pages.length;b++)if(this.pages[b]==this.currentPage){a=b;break}return a};EditorUi.prototype.getPageById=function(a){if(null!=this.pages)for(var b=0;b<this.pages.length;b++)if(this.pages[b].getId()==a)return this.pages[b];return null};
 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.keyHandler.bindAction(33,!0,"previousPage",!0);this.keyHandler.bindAction(34,!0,"nextPage",!0);var a=this.editor.graph,b=a.view.validateBackground;a.view.validateBackground=mxUtils.bind(this,function(){if(null!=this.tabContainer){var d=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";d!=this.tabContainer.style.height&&this.refresh(!1)}b.apply(a.view,arguments)});var f=null,d=mxUtils.bind(this,function(){this.updateTabContainer();var b=this.currentPage;null!=b&&b!=f&&(null==b.viewState||null==b.viewState.scrollLeft?(this.resetScrollbars(),a.isLightboxView()&&this.lightboxFit(),null!=this.chromelessResize&&(a.container.scrollLeft=0,
 a.container.scrollTop=0,this.chromelessResize())):(a.container.scrollLeft=a.view.translate.x*a.view.scale+b.viewState.scrollLeft,a.container.scrollTop=a.view.translate.y*a.view.scale+b.viewState.scrollTop),f=b);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(a,b){for(var f=b.getProperty("edit").changes,k=0;k<f.length;k++)if(f[k]instanceof SelectPage||f[k]instanceof RenamePage||f[k]instanceof MovePage||f[k]instanceof mxRootChange){d();break}}));null!=this.toolbar&&this.editor.addListener("pageSelected",this.toolbar.updateZoom)}};
+"undefined"===typeof Editor.MathJaxClear||null!=this.editor&&this.editor.graph.mathEnabled||Editor.MathJaxClear()});this.editor.graph.model.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){for(var f=b.getProperty("edit").changes,l=0;l<f.length;l++)if(f[l]instanceof SelectPage||f[l]instanceof RenamePage||f[l]instanceof MovePage||f[l]instanceof mxRootChange){d();break}}));null!=this.toolbar&&this.editor.addListener("pageSelected",this.toolbar.updateZoom)}};
 EditorUi.prototype.restoreViewState=function(a,b,f){a=null!=a?this.getPageById(a.getId()):null;var d=this.editor.graph;null!=a&&null!=this.currentPage&&null!=this.pages&&(a!=this.currentPage?this.selectPage(a,!0,b):(d.setViewState(b),this.editor.updateGraphComponents(),d.view.revalidate(),d.sizeDidChange()),d.container.scrollLeft=d.view.translate.x*d.view.scale+b.scrollLeft,d.container.scrollTop=d.view.translate.y*d.view.scale+b.scrollTop,d.restoreSelection(f))};
-Graph.prototype.createViewState=function(a){var b=a.getAttribute("page"),f=parseFloat(a.getAttribute("pageScale")),d=parseFloat(a.getAttribute("pageWidth")),k=parseFloat(a.getAttribute("pageHeight")),m=a.getAttribute("background"),p=a.getAttribute("backgroundImage"),p=null!=p&&0<p.length?JSON.parse(p):null;return{gridEnabled:"0"!=a.getAttribute("grid"),gridSize:parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=a.getAttribute("guides"),foldingEnabled:"0"!=a.getAttribute("fold"),
-shadowVisible:"1"==a.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=b?"0"!=b:this.defaultPageVisible,background:null!=m&&0<m.length?m:null,backgroundImage:null!=p?new mxImage(p.src,p.width,p.height):null,pageScale:isNaN(f)?mxGraph.prototype.pageScale:f,pageFormat:isNaN(d)||isNaN(k)?mxSettings.getPageFormat():new mxRectangle(0,0,d,k),tooltips:"0"!=a.getAttribute("tooltips"),connect:"0"!=a.getAttribute("connect"),arrows:"0"!=a.getAttribute("arrows"),mathEnabled:"1"==a.getAttribute("math"),
+Graph.prototype.createViewState=function(a){var b=a.getAttribute("page"),f=parseFloat(a.getAttribute("pageScale")),d=parseFloat(a.getAttribute("pageWidth")),l=parseFloat(a.getAttribute("pageHeight")),m=a.getAttribute("background"),p=a.getAttribute("backgroundImage"),p=null!=p&&0<p.length?JSON.parse(p):null;return{gridEnabled:"0"!=a.getAttribute("grid"),gridSize:parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=a.getAttribute("guides"),foldingEnabled:"0"!=a.getAttribute("fold"),
+shadowVisible:"1"==a.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=b?"0"!=b:this.defaultPageVisible,background:null!=m&&0<m.length?m:null,backgroundImage:null!=p?new mxImage(p.src,p.width,p.height):null,pageScale:isNaN(f)?mxGraph.prototype.pageScale:f,pageFormat:isNaN(d)||isNaN(l)?mxSettings.getPageFormat():new mxRectangle(0,0,d,l),tooltips:"0"!=a.getAttribute("tooltips"),connect:"0"!=a.getAttribute("connect"),arrows:"0"!=a.getAttribute("arrows"),mathEnabled:"1"==a.getAttribute("math"),
 selectionCells:null,defaultParent:null,scrollbars:this.defaultScrollbars,scale:1}};
 Graph.prototype.saveViewState=function(a,b,f){f||(b.setAttribute("grid",null==a||a.gridEnabled?"1":"0"),b.setAttribute("gridSize",null!=a?a.gridSize:mxGraph.prototype.gridSize),b.setAttribute("guides",null==a||a.guidesEnabled?"1":"0"),b.setAttribute("tooltips",null==a||a.tooltips?"1":"0"),b.setAttribute("connect",null==a||a.connect?"1":"0"),b.setAttribute("arrows",null==a||a.arrows?"1":"0"),b.setAttribute("page",null==a&&this.defaultPageVisible||null!=a&&a.pageVisible?"1":"0"),b.setAttribute("fold",
 null==a||a.foldingEnabled?"1":"0"));b.setAttribute("pageScale",null!=a&&null!=a.pageScale?a.pageScale:mxGraph.prototype.pageScale);f=null!=a?a.pageFormat:mxSettings.getPageFormat();null!=f&&(b.setAttribute("pageWidth",f.width),b.setAttribute("pageHeight",f.height));null!=a&&null!=a.background&&b.setAttribute("background",a.background);null!=a&&null!=a.backgroundImage&&b.setAttribute("backgroundImage",JSON.stringify(a.backgroundImage));b.setAttribute("math",null!=a&&a.mathEnabled?"1":"0");b.setAttribute("shadow",
@@ -3360,17 +3362,17 @@ a.translate)):(this.view.currentRoot=null,this.view.scale=1,this.gridEnabled=!0,
 this.pasteCounter=0,this.mathEnabled=!1,this.connectionArrowsEnabled=!0);this.preferPageSize=this.pageBreaksVisible=this.pageVisible;this.fireEvent(new mxEventObject("viewStateChanged","state",a))};
 EditorUi.prototype.updatePageRoot=function(a){if(null==a.root){var b=this.editor.extractGraphModel(a.node),f=Editor.extractParserError(b);if(f)throw Error(f);null!=b?(a.graphModelNode=b,a.viewState=this.editor.graph.createViewState(b),f=new mxCodec(b.ownerDocument),a.root=f.decode(b).root):a.root=this.editor.graph.model.createRoot()}else if(null==a.viewState){if(null==a.graphModelNode){b=this.editor.extractGraphModel(a.node);if(f=Editor.extractParserError(b))throw Error(f);null!=b&&(a.graphModelNode=
 b)}null!=a.graphModelNode&&(a.viewState=this.editor.graph.createViewState(a.graphModelNode))}return a};
-EditorUi.prototype.selectPage=function(a,b,f){try{if(a!=this.currentPage){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b=null!=b?b:!1;this.editor.graph.isMouseDown=!1;this.editor.graph.reset();var d=this.editor.graph.model.createUndoableEdit();d.ignoreEdit=!0;var k=new SelectPage(this,a,f);k.execute();d.add(k);d.notify();this.editor.graph.tooltipHandler.hide();b||this.editor.graph.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",d))}}catch(m){this.handleError(m)}};
+EditorUi.prototype.selectPage=function(a,b,f){try{if(a!=this.currentPage){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b=null!=b?b:!1;this.editor.graph.isMouseDown=!1;this.editor.graph.reset();var d=this.editor.graph.model.createUndoableEdit();d.ignoreEdit=!0;var l=new SelectPage(this,a,f);l.execute();d.add(l);d.notify();this.editor.graph.tooltipHandler.hide();b||this.editor.graph.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",d))}}catch(m){this.handleError(m)}};
 EditorUi.prototype.selectNextPage=function(a){var b=this.currentPage;null!=b&&null!=this.pages&&(b=mxUtils.indexOf(this.pages,b),a?this.selectPage(this.pages[mxUtils.mod(b+1,this.pages.length)]):a||this.selectPage(this.pages[mxUtils.mod(b-1,this.pages.length)]))};
 EditorUi.prototype.insertPage=function(a,b){if(this.editor.graph.isEnabled()){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);a=null!=a?a:this.createPage(null,this.createPageId());b=null!=b?b:this.pages.length;var f=new ChangePage(this,a,a,b);this.editor.graph.model.execute(f)}return a};EditorUi.prototype.createPageId=function(){var a;do a=Editor.guid();while(null!=this.getPageById(a));return a};
 EditorUi.prototype.createPage=function(a,b){var f=new DiagramPage(this.fileNode.ownerDocument.createElement("diagram"),b);f.setName(null!=a?a:this.createPageName());return f};EditorUi.prototype.createPageName=function(){for(var a={},b=0;b<this.pages.length;b++){var f=this.pages[b].getName();null!=f&&0<f.length&&(a[f]=f)}b=this.pages.length;do f=mxResources.get("pageWithNumber",[++b]);while(null!=a[f]);return f};
-EditorUi.prototype.removePage=function(a){try{var b=this.editor.graph,f=mxUtils.indexOf(this.pages,a);if(b.isEnabled()&&0<=f){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b.model.beginUpdate();try{var d=this.currentPage;d==a&&1<this.pages.length?(f==this.pages.length-1?f--:f++,d=this.pages[f]):1>=this.pages.length&&(d=this.insertPage(),b.model.execute(new RenamePage(this,d,mxResources.get("pageWithNumber",[1]))));b.model.execute(new ChangePage(this,a,d))}finally{b.model.endUpdate()}}}catch(k){this.handleError(k)}return a};
-EditorUi.prototype.duplicatePage=function(a,b){var f=null;try{var d=this.editor.graph;if(d.isEnabled()){d.isEditing()&&d.stopEditing();var k=a.node.cloneNode(!1);k.removeAttribute("id");f=new DiagramPage(k);f.root=d.cloneCell(d.model.root);f.viewState=d.getViewState();f.viewState.scale=1;f.viewState.scrollLeft=null;f.viewState.scrollTop=null;f.viewState.currentRoot=null;f.viewState.defaultParent=null;f.setName(b);f=this.insertPage(f,mxUtils.indexOf(this.pages,a)+1)}}catch(m){this.handleError(m)}return f};
+EditorUi.prototype.removePage=function(a){try{var b=this.editor.graph,f=mxUtils.indexOf(this.pages,a);if(b.isEnabled()&&0<=f){this.editor.graph.isEditing()&&this.editor.graph.stopEditing(!1);b.model.beginUpdate();try{var d=this.currentPage;d==a&&1<this.pages.length?(f==this.pages.length-1?f--:f++,d=this.pages[f]):1>=this.pages.length&&(d=this.insertPage(),b.model.execute(new RenamePage(this,d,mxResources.get("pageWithNumber",[1]))));b.model.execute(new ChangePage(this,a,d))}finally{b.model.endUpdate()}}}catch(l){this.handleError(l)}return a};
+EditorUi.prototype.duplicatePage=function(a,b){var f=null;try{var d=this.editor.graph;if(d.isEnabled()){d.isEditing()&&d.stopEditing();var l=a.node.cloneNode(!1);l.removeAttribute("id");f=new DiagramPage(l);f.root=d.cloneCell(d.model.root);f.viewState=d.getViewState();f.viewState.scale=1;f.viewState.scrollLeft=null;f.viewState.scrollTop=null;f.viewState.currentRoot=null;f.viewState.defaultParent=null;f.setName(b);f=this.insertPage(f,mxUtils.indexOf(this.pages,a)+1)}}catch(m){this.handleError(m)}return f};
 EditorUi.prototype.renamePage=function(a){if(this.editor.graph.isEnabled()){var b=new FilenameDialog(this,a.getName(),mxResources.get("rename"),mxUtils.bind(this,function(b){null!=b&&0<b.length&&this.editor.graph.model.execute(new RenamePage(this,a,b))}),mxResources.get("rename"));this.showDialog(b.container,300,80,!0,!0);b.init()}return a};EditorUi.prototype.movePage=function(a,b){this.editor.graph.model.execute(new MovePage(this,a,b))};
 EditorUi.prototype.createTabContainer=function(){var a=document.createElement("div");a.className="geTabContainer";a.style.position="absolute";a.style.whiteSpace="nowrap";a.style.overflow="hidden";a.style.height="0px";return a};
 EditorUi.prototype.updateTabContainer=function(){if(null!=this.tabContainer&&null!=this.pages){var a=this.editor.graph,b=document.createElement("div");b.style.position="relative";b.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";b.style.verticalAlign="top";b.style.height=this.tabContainer.style.height;b.style.whiteSpace="nowrap";b.style.overflow="hidden";b.style.fontSize="13px";b.style.marginLeft="30px";for(var f=this.editor.isChromelessView()?29:59,d=Math.min(140,Math.max(20,(this.tabContainer.clientWidth-
-f)/this.pages.length)+1),k=null,m=0;m<this.pages.length;m++)mxUtils.bind(this,function(d,c){this.pages[d]==this.currentPage?(c.className="geActivePage",c.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#fff"):c.className="geInactivePage";c.setAttribute("draggable","true");mxEvent.addListener(c,"dragstart",mxUtils.bind(this,function(b){a.isEnabled()?(mxClient.IS_FF&&b.dataTransfer.setData("Text","<diagram/>"),k=d):mxEvent.consume(b)}));mxEvent.addListener(c,"dragend",mxUtils.bind(this,function(a){a.stopPropagation();
-a.preventDefault()}));mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null!=k&&(a.dataTransfer.dropEffect="move");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=k&&d!=k&&this.movePage(k,d);k=null;a.stopPropagation();a.preventDefault()}));b.appendChild(c)})(m,this.createTabForPage(this.pages[m],d,this.pages[m]!=this.currentPage,m+1));this.tabContainer.innerHTML="";this.tabContainer.appendChild(b);d=this.createPageMenuTab();
+f)/this.pages.length)+1),l=null,m=0;m<this.pages.length;m++)mxUtils.bind(this,function(d,c){this.pages[d]==this.currentPage?(c.className="geActivePage",c.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#fff"):c.className="geInactivePage";c.setAttribute("draggable","true");mxEvent.addListener(c,"dragstart",mxUtils.bind(this,function(b){a.isEnabled()?(mxClient.IS_FF&&b.dataTransfer.setData("Text","<diagram/>"),l=d):mxEvent.consume(b)}));mxEvent.addListener(c,"dragend",mxUtils.bind(this,function(a){a.stopPropagation();
+a.preventDefault()}));mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null!=l&&(a.dataTransfer.dropEffect="move");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=l&&d!=l&&this.movePage(l,d);l=null;a.stopPropagation();a.preventDefault()}));b.appendChild(c)})(m,this.createTabForPage(this.pages[m],d,this.pages[m]!=this.currentPage,m+1));this.tabContainer.innerHTML="";this.tabContainer.appendChild(b);d=this.createPageMenuTab();
 this.tabContainer.appendChild(d);d=null;this.isPageInsertTabVisible()&&(d=this.createPageInsertTab(),this.tabContainer.appendChild(d));if(b.clientWidth>this.tabContainer.clientWidth-f){null!=d&&(d.style.position="absolute",d.style.right="0px",b.style.marginRight="30px");var p=this.createControlTab(4,"&nbsp;&#10094;&nbsp;");p.style.position="absolute";p.style.right=this.editor.chromeless?"29px":"55px";p.style.fontSize="13pt";this.tabContainer.appendChild(p);var v=this.createControlTab(4,"&nbsp;&#10095;");
 v.style.position="absolute";v.style.right=this.editor.chromeless?"0px":"29px";v.style.fontSize="13pt";this.tabContainer.appendChild(v);var y=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));b.style.width=y+"px";mxEvent.addListener(p,"click",mxUtils.bind(this,function(a){b.scrollLeft-=Math.max(20,y-20);mxUtils.setOpacity(p,0<b.scrollLeft?100:50);mxUtils.setOpacity(v,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(p,0<b.scrollLeft?100:
 50);mxUtils.setOpacity(v,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.addListener(v,"click",mxUtils.bind(this,function(a){b.scrollLeft+=Math.max(20,y-20);mxUtils.setOpacity(p,0<b.scrollLeft?100:50);mxUtils.setOpacity(v,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()};
@@ -3380,67 +3382,67 @@ EditorUi.prototype.createControlTab=function(a,b){var f=this.createTab(!0);f.sty
 EditorUi.prototype.createPageMenuTab=function(){var a=this.createControlTab(3,'<div class="geSprite geSprite-dots" style="display:inline-block;margin-top:5px;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("pages"));a.style.position="absolute";a.style.marginLeft="0px";a.style.top="0px";a.style.left="1px";mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.editor.graph.popupMenuHandler.hideMenu();var b=new mxPopupMenu(mxUtils.bind(this,function(a,b){for(var d=
 0;d<this.pages.length;d++)mxUtils.bind(this,function(d){var c=a.addItem(this.pages[d].getName(),null,mxUtils.bind(this,function(){this.selectPage(this.pages[d])}),b);this.pages[d]==this.currentPage&&a.addCheckmark(c,Editor.checkmarkImage)})(d);if(this.editor.graph.isEnabled()){a.addSeparator(b);a.addItem(mxResources.get("insertPage"),null,mxUtils.bind(this,function(){this.insertPage()}),b);var f=this.currentPage;null!=f&&(a.addSeparator(b),a.addItem(mxResources.get("delete"),null,mxUtils.bind(this,
 function(){this.removePage(f)}),b),a.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(f,f.getName())}),b),a.addSeparator(b),a.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(f,mxResources.get("copyOf",[f.getName()]))}),b))}}));b.div.className+=" geMenubarMenu";b.smartSeparators=!0;b.showDisabled=!0;b.autoExpand=!0;b.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(b,arguments);b.destroy()});var d=
-mxEvent.getClientX(a),k=mxEvent.getClientY(a);b.popup(d,k,null,a);this.setCurrentMenu(b);mxEvent.consume(a)}));return a};EditorUi.prototype.createPageInsertTab=function(){var a=this.createControlTab(4,'<div class="geSprite geSprite-plus" style="display:inline-block;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("insertPage"));mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.insertPage();mxEvent.consume(a)}));return a};
-EditorUi.prototype.createTabForPage=function(a,b,f,d){f=this.createTab(f);var k=a.getName()||mxResources.get("untitled"),m=a.getId();f.setAttribute("title",k+(null!=m?" ("+m+")":"")+" ["+d+"]");mxUtils.write(f,k);f.style.maxWidth=b+"px";f.style.width=b+"px";this.addTabListeners(a,f);42<b&&(f.style.textOverflow="ellipsis");return f};
-EditorUi.prototype.addTabListeners=function(a,b){mxEvent.disableContextMenu(b);var f=this.editor.graph;mxEvent.addListener(b,"dblclick",mxUtils.bind(this,function(b){this.renamePage(a);mxEvent.consume(b)}));var d=!1,k=!1;mxEvent.addGestureListeners(b,mxUtils.bind(this,function(b){d=null!=this.currentMenu;k=a==this.currentPage;f.isMouseDown||k||this.selectPage(a)}),null,mxUtils.bind(this,function(m){if(f.isEnabled()&&!f.isMouseDown&&(mxEvent.isTouchEvent(m)&&k||mxEvent.isPopupTrigger(m))){f.popupMenuHandler.hideMenu();
+mxEvent.getClientX(a),l=mxEvent.getClientY(a);b.popup(d,l,null,a);this.setCurrentMenu(b);mxEvent.consume(a)}));return a};EditorUi.prototype.createPageInsertTab=function(){var a=this.createControlTab(4,'<div class="geSprite geSprite-plus" style="display:inline-block;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("insertPage"));mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.insertPage();mxEvent.consume(a)}));return a};
+EditorUi.prototype.createTabForPage=function(a,b,f,d){f=this.createTab(f);var l=a.getName()||mxResources.get("untitled"),m=a.getId();f.setAttribute("title",l+(null!=m?" ("+m+")":"")+" ["+d+"]");mxUtils.write(f,l);f.style.maxWidth=b+"px";f.style.width=b+"px";this.addTabListeners(a,f);42<b&&(f.style.textOverflow="ellipsis");return f};
+EditorUi.prototype.addTabListeners=function(a,b){mxEvent.disableContextMenu(b);var f=this.editor.graph;mxEvent.addListener(b,"dblclick",mxUtils.bind(this,function(b){this.renamePage(a);mxEvent.consume(b)}));var d=!1,l=!1;mxEvent.addGestureListeners(b,mxUtils.bind(this,function(b){d=null!=this.currentMenu;l=a==this.currentPage;f.isMouseDown||l||this.selectPage(a)}),null,mxUtils.bind(this,function(m){if(f.isEnabled()&&!f.isMouseDown&&(mxEvent.isTouchEvent(m)&&l||mxEvent.isPopupTrigger(m))){f.popupMenuHandler.hideMenu();
 this.hideCurrentMenu();if(!mxEvent.isTouchEvent(m)||!d){var p=new mxPopupMenu(this.createPageMenu(a));p.div.className+=" geMenubarMenu";p.smartSeparators=!0;p.showDisabled=!0;p.autoExpand=!0;p.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(p,arguments);this.resetCurrentMenu();p.destroy()});var v=mxEvent.getClientX(m),y=mxEvent.getClientY(m);p.popup(v,y,null,m);this.setCurrentMenu(p,b)}mxEvent.consume(m)}}))};
 EditorUi.prototype.createPageMenu=function(a,b){return mxUtils.bind(this,function(f,d){f.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,a)+1)}),d);f.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(a)}),d);f.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(a,b)}),d);f.addSeparator(d);f.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(a,
 mxResources.get("copyOf",[a.getName()]))}),d)})};(function(){var a=EditorUi.prototype.refresh;EditorUi.prototype.refresh=function(b){a.apply(this,arguments);this.updateTabContainer()}})();(function(){mxCodecRegistry.getCodec(ChangePageSetup).exclude.push("page")})();(function(){var a=new mxObjectCodec(new MovePage,["ui"]);a.beforeDecode=function(a,f,d){d.ui=a.ui;return f};a.afterDecode=function(a,f,d){a=d.oldIndex;d.oldIndex=d.newIndex;d.newIndex=a;return d};mxCodecRegistry.register(a)})();
 (function(){var a=new mxObjectCodec(new RenamePage,["ui","page"]);a.beforeDecode=function(a,f,d){d.ui=a.ui;return f};a.afterDecode=function(a,f,d){a=d.previous;d.previous=d.name;d.name=a;return d};mxCodecRegistry.register(a)})();
-(function(){var a=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),b="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");a.afterEncode=function(a,d,k){k.setAttribute("relatedPage",d.relatedPage.getId());null==d.index&&(k.setAttribute("name",d.relatedPage.getName()),null!=d.relatedPage.viewState&&k.setAttribute("viewState",JSON.stringify(d.relatedPage.viewState,function(a,d){return 0>mxUtils.indexOf(b,
-a)?d:void 0})),null!=d.relatedPage.root&&a.encodeCell(d.relatedPage.root,k));return k};a.beforeDecode=function(a,b,k){k.ui=a.ui;k.relatedPage=k.ui.getPageById(b.getAttribute("relatedPage"));if(null==k.relatedPage){var d=b.ownerDocument.createElement("diagram");d.setAttribute("id",b.getAttribute("relatedPage"));d.setAttribute("name",b.getAttribute("name"));k.relatedPage=new DiagramPage(d);d=b.getAttribute("viewState");null!=d&&(k.relatedPage.viewState=JSON.parse(d),b.removeAttribute("viewState"));
-b=b.cloneNode(!0);d=b.firstChild;if(null!=d)for(k.relatedPage.root=a.decodeCell(d,!1),k=d.nextSibling,d.parentNode.removeChild(d),d=k;null!=d;){k=d.nextSibling;if(d.nodeType==mxConstants.NODETYPE_ELEMENT){var f=d.getAttribute("id");null==a.lookup(f)&&a.decodeCell(d)}d.parentNode.removeChild(d);d=k}}return b};a.afterDecode=function(a,b,k){k.index=k.previousIndex;return k};mxCodecRegistry.register(a)})();(function(){var a=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]=
-"selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,d,f,v,y){d=null!=d?d:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var k=f.slice(),c=[],e=0;e<f.length;e++){var g=this.view.getState(f[e]),m=null!=g?g.style:this.getCellStyle(f[e]);"1"==mxUtils.getValue(m,"treeFolding","0")&&(this.traverse(f[e],!0,mxUtils.bind(this,function(a,b){null!=b&&c.push(b);a!=f[e]&&c.push(a);return a==f[e]||!this.model.isCollapsed(a)})),
-this.model.setCollapsed(f[e],a))}for(e=0;e<c.length;e++)this.model.setVisible(c[e],!a);f=k;f=b.apply(this,arguments)}finally{this.model.endUpdate()}return f};var f=EditorUi.prototype.init;EditorUi.prototype.init=function(){f.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(a){return z.isVertex(a)&&f(a)}function d(a){var b=!1;null!=a&&(b=l.view.getState(a),b="1"==(null!=b?b.style:l.getCellStyle(a)).treeMoving);
-return b}function f(a){var b=!1;null!=a&&(a=z.getParent(a),b=l.view.getState(a),b="tree"==(null!=b?b.style:l.getCellStyle(a)).containerType);return b}function v(a){var b=!1;null!=a&&(a=z.getParent(a),b=l.view.getState(a),l.view.getState(a),b=null!=(null!=b?b.style:l.getCellStyle(a)).childLayout);return b}function y(a){a=l.view.getState(a);if(null!=a){var b=l.getIncomingEdges(a.cell);if(0<b.length&&(b=l.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==
-a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function B(a,b){b=null!=b?b:!0;l.model.beginUpdate();try{var c=l.model.getParent(a),d=l.getIncomingEdges(a),e=l.cloneCells([d[0],a]);l.model.setTerminal(e[0],l.model.getTerminal(d[0],!0),!0);var f=y(a),g=c.geometry;f==mxConstants.DIRECTION_SOUTH||
-f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width-10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;l.view.currentRoot!=c&&(e[1].geometry.x-=g.x,e[1].geometry.y-=g.y);var k=l.view.getState(a),m=l.view.scale;if(null!=k){var n=mxRectangle.fromRectangle(k);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?n.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*m:n.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*m;var p=l.getOutgoingEdges(l.model.getTerminal(d[0],
-!0));if(null!=p){for(var t=f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH,q=g=d=0;q<p.length;q++){var x=l.model.getTerminal(p[q],!1);if(f==y(x)){var u=l.view.getState(x);x!=a&&null!=u&&(t&&b!=u.getCenterX()<k.getCenterX()||!t&&b!=u.getCenterY()<k.getCenterY())&&mxUtils.intersects(n,u)&&(d=10+Math.max(d,(Math.min(n.x+n.width,u.x+u.width)-Math.max(n.x,u.x))/m),g=10+Math.max(g,(Math.min(n.y+n.height,u.y+u.height)-Math.max(n.y,u.y))/m))}}t?g=0:d=0;for(q=0;q<p.length;q++)if(x=l.model.getTerminal(p[q],
-!1),f==y(x)&&(u=l.view.getState(x),x!=a&&null!=u&&(t&&b!=u.getCenterX()<k.getCenterX()||!t&&b!=u.getCenterY()<k.getCenterY()))){var v=[];l.traverse(u.cell,!0,function(a,b){null!=b&&v.push(b);v.push(a);return!0});l.moveCells(v,(b?1:-1)*d,(b?1:-1)*g)}}}return l.addCells(e,c)}finally{l.model.endUpdate()}}function c(a){l.model.beginUpdate();try{var b=y(a),c=l.getIncomingEdges(a),d=l.cloneCells([c[0],a]);l.model.setTerminal(c[0],d[1],!1);l.model.setTerminal(d[0],d[1],!0);l.model.setTerminal(d[0],a,!1);
-var e=l.model.getParent(a),f=e.geometry,g=[];l.view.currentRoot!=e&&(d[1].geometry.x-=f.x,d[1].geometry.y-=f.y);l.traverse(a,!0,function(a,b){null!=b&&g.push(b);g.push(a);return!0});var k=a.geometry.width+40,m=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?k=0:b==mxConstants.DIRECTION_NORTH?(k=0,m=-m):b==mxConstants.DIRECTION_WEST?(k=-k,m=0):b==mxConstants.DIRECTION_EAST&&(m=0);l.moveCells(g,k,m);return l.addCells(d,e)}finally{l.model.endUpdate()}}function e(a){l.model.beginUpdate();try{var b=
-l.model.getParent(a),c=l.getIncomingEdges(a),d=l.cloneCells([c[0],a]);l.model.setTerminal(d[0],a,!0);var c=l.getOutgoingEdges(a),e=b.geometry,f=[];l.view.currentRoot==b&&(e=new mxRectangle);for(var g=0;g<c.length;g++){var k=l.model.getTerminal(c[g],!1);null!=k&&f.push(k)}var m=l.view.getBounds(f),n=y(a),p=l.view.translate,t=l.view.scale;n==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/t-p.x-e.x+10,d[1].geometry.y+=d[1].geometry.height-
-e.y+40):n==mxConstants.DIRECTION_NORTH?(d[1].geometry.x=null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/t-p.x+-e.x+10,d[1].geometry.y-=d[1].geometry.height+e.y+40):(d[1].geometry.x=n==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width+e.x+40):d[1].geometry.x+(d[1].geometry.width-e.x+40),d[1].geometry.y=null==m?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(m.y+m.height)/t-p.y+-e.y+10);return l.addCells(d,b)}finally{l.model.endUpdate()}}function g(a,
-b,c){a=l.getOutgoingEdges(a);c=l.view.getState(c);var d=[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=l.view.getState(l.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function u(a,b){var c=y(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST||
-c==mxConstants.DIRECTION_WEST)==d&&c!=b?n.actions.get("selectParent").funct():c==b?(d=l.getOutgoingEdges(a),null!=d&&0<d.length&&l.setSelectionCell(l.model.getTerminal(d[0],!1))):(c=l.getIncomingEdges(a),null!=c&&0<c.length&&(d=g(l.model.getTerminal(c[0],!0),d,a),c=l.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&l.setSelectionCell(d[c].cell)))))}var n=this,l=n.editor.graph,z=l.getModel(),A=n.menus.createPopupMenu;
-n.menus.createPopupMenu=function(a,c,d){A.apply(this,arguments);if(1==l.getSelectionCount()){c=l.getSelectionCell();var e=l.getOutgoingEdges(c);a.addSeparator();null!=e&&0<e.length&&(b(l.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,d),this.addMenuItems(a,["selectDescendants"],null,d));b(l.getSelectionCell())&&(a.addSeparator(),0<l.getIncomingEdges(c).length&&this.addMenuItems(a,["selectSiblings","selectParent"],null,d))}};n.actions.addAction("selectChildren",function(){if(l.isEnabled()&&
-1==l.getSelectionCount()){var a=l.getSelectionCell(),a=l.getOutgoingEdges(a);if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(l.model.getTerminal(a[c],!1));l.setSelectionCells(b)}}},null,null,"Alt+Shift+X");n.actions.addAction("selectSiblings",function(){if(l.isEnabled()&&1==l.getSelectionCount()){var a=l.getSelectionCell(),a=l.getIncomingEdges(a);if(null!=a&&0<a.length&&(a=l.getOutgoingEdges(l.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(l.model.getTerminal(a[c],
-!1));l.setSelectionCells(b)}}},null,null,"Alt+Shift+S");n.actions.addAction("selectParent",function(){if(l.isEnabled()&&1==l.getSelectionCount()){var a=l.getSelectionCell(),a=l.getIncomingEdges(a);null!=a&&0<a.length&&l.setSelectionCell(l.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");n.actions.addAction("selectDescendants",function(){if(l.isEnabled()&&1==l.getSelectionCount()){var a=l.getSelectionCell(),b=[];l.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});l.setSelectionCells(b)}},
-null,null,"Alt+Shift+D");var q=l.removeCells;l.removeCells=function(a,c){c=null!=c?c:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));c&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var d=[],e=0;e<a.length;e++){var g=a[e];z.isEdge(g)&&f(g)&&(d.push(g),g=z.getTerminal(g,!1));b(g)?(l.traverse(g,!0,function(a,b){null!=b&&d.push(b);d.push(a);return!0}),g=l.getIncomingEdges(a[e]),a=a.concat(g)):d.push(a[e])}a=d;return q.apply(this,arguments)};n.hoverIcons.getStateAt=function(a,c,
-d){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var E=l.duplicateCells;l.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();for(var d=a.slice(0),e=0;e<d.length;e++){var f=l.view.getState(d[e]);if(null!=f&&b(f.cell))for(var g=l.getIncomingEdges(f.cell),f=0;f<g.length;f++)mxUtils.remove(g[f],a)}this.model.beginUpdate();try{var k=E.call(this,a,c);if(k.length==a.length)for(e=0;e<a.length;e++)if(b(a[e])){var m=l.getIncomingEdges(k[e]),g=l.getIncomingEdges(a[e]);
-if(0==m.length&&0<g.length){var n=this.cloneCell(g[0]);this.addEdge(n,l.getDefaultParent(),this.model.getTerminal(g[0],!0),k[e])}}}finally{this.model.endUpdate()}return k};var x=l.moveCells;l.moveCells=function(a,c,d,e,f,g,k){var m=null;this.model.beginUpdate();try{var n=f,p=this.view.getState(f),t=null!=p?p.style:this.getCellStyle(f);if(null!=a&&b(f)&&"1"==mxUtils.getValue(t,"treeFolding","0")){for(var q=0;q<a.length;q++)if(b(a[q])||l.model.isEdge(a[q])&&null==l.model.getTerminal(a[q],!0)){f=l.model.getParent(a[q]);
-break}if(null!=n&&f!=n&&null!=this.view.getState(a[0])){var u=l.getIncomingEdges(a[0]);if(0<u.length){var v=l.view.getState(l.model.getTerminal(u[0],!0));if(null!=v){var z=l.view.getState(n);null!=z&&(c=(z.getCenterX()-v.getCenterX())/l.view.scale,d=(z.getCenterY()-v.getCenterY())/l.view.scale)}}}}m=x.apply(this,arguments);if(null!=m&&null!=a&&m.length==a.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(a[q])&&(u=l.getIncomingEdges(a[q]),0<u.length))if(!e)b(n)&&0>mxUtils.indexOf(a,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],n,!0);else if(0==l.getIncomingEdges(m[q]).length){p=n;if(null==p||p==l.model.getParent(a[q]))p=l.model.getTerminal(u[0],!0);e=this.cloneCell(u[0]);this.addEdge(e,l.getDefaultParent(),p,m[q])}}finally{this.model.endUpdate()}return m};if(null!=n.sidebar){var F=n.sidebar.dropAndConnect;n.sidebar.dropAndConnect=function(a,c,d,e){var f=l.model,g=null;
-f.beginUpdate();try{if(g=F.apply(this,arguments),b(a))for(var k=0;k<g.length;k++)if(f.isEdge(g[k])&&null==f.getTerminal(g[k],!0)){f.setTerminal(g[k],a,!0);var m=l.getCellGeometry(g[k]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var t={88:n.actions.get("selectChildren"),84:n.actions.get("selectSubtree"),80:n.actions.get("selectParent"),83:n.actions.get("selectSiblings")},C=n.onKeyDown;n.onKeyDown=function(a){try{if(l.isEnabled()&&!l.isEditing()&&
-b(l.getSelectionCell())&&1==l.getSelectionCount()){var d=null;0<l.getIncomingEdges(l.getSelectionCell()).length&&(9==a.which?d=mxEvent.isShiftDown(a)?c(l.getSelectionCell()):e(l.getSelectionCell()):13==a.which&&(d=B(l.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=d&&0<d.length)1==d.length&&l.model.isEdge(d[0])?l.setSelectionCell(l.model.getTerminal(d[0],!1)):l.setSelectionCell(d[d.length-1]),null!=n.hoverIcons&&n.hoverIcons.update(l.view.getState(l.getSelectionCell())),l.startEditingAtCell(l.getSelectionCell()),
-mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var f=t[a.keyCode];null!=f&&(f.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(u(l.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(u(l.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(u(l.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(u(l.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(a))}}catch(P){console.log("error",
-P)}mxEvent.isConsumed(a)||C.apply(this,arguments)};var K=l.connectVertex;l.connectVertex=function(a,d,f,g,k,m){var n=l.getIncomingEdges(a);return b(a)&&0<n.length?(f=y(a),g=f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST,k=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST,f==d?e(a):g==k?c(a):B(a,d!=mxConstants.DIRECTION_NORTH&&d!=mxConstants.DIRECTION_WEST)):K.call(this,a,d,f,g,k,m)};l.getSubtree=function(a){var c=[a];!d(a)&&!b(a)||v(a)||l.traverse(a,!0,function(a,b){null!=
+(function(){var a=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),b="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");a.afterEncode=function(a,d,l){l.setAttribute("relatedPage",d.relatedPage.getId());null==d.index&&(l.setAttribute("name",d.relatedPage.getName()),null!=d.relatedPage.viewState&&l.setAttribute("viewState",JSON.stringify(d.relatedPage.viewState,function(a,d){return 0>mxUtils.indexOf(b,
+a)?d:void 0})),null!=d.relatedPage.root&&a.encodeCell(d.relatedPage.root,l));return l};a.beforeDecode=function(a,b,l){l.ui=a.ui;l.relatedPage=l.ui.getPageById(b.getAttribute("relatedPage"));if(null==l.relatedPage){var d=b.ownerDocument.createElement("diagram");d.setAttribute("id",b.getAttribute("relatedPage"));d.setAttribute("name",b.getAttribute("name"));l.relatedPage=new DiagramPage(d);d=b.getAttribute("viewState");null!=d&&(l.relatedPage.viewState=JSON.parse(d),b.removeAttribute("viewState"));
+b=b.cloneNode(!0);d=b.firstChild;if(null!=d)for(l.relatedPage.root=a.decodeCell(d,!1),l=d.nextSibling,d.parentNode.removeChild(d),d=l;null!=d;){l=d.nextSibling;if(d.nodeType==mxConstants.NODETYPE_ELEMENT){var f=d.getAttribute("id");null==a.lookup(f)&&a.decodeCell(d)}d.parentNode.removeChild(d);d=l}}return b};a.afterDecode=function(a,b,l){l.index=l.previousIndex;return l};mxCodecRegistry.register(a)})();(function(){var a=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]=
+"selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,d,f,v,y){d=null!=d?d:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var l=f.slice(),c=[],e=0;e<f.length;e++){var k=this.view.getState(f[e]),m=null!=k?k.style:this.getCellStyle(f[e]);"1"==mxUtils.getValue(m,"treeFolding","0")&&(this.traverse(f[e],!0,mxUtils.bind(this,function(a,b){null!=b&&c.push(b);a!=f[e]&&c.push(a);return a==f[e]||!this.model.isCollapsed(a)})),
+this.model.setCollapsed(f[e],a))}for(e=0;e<c.length;e++)this.model.setVisible(c[e],!a);f=l;f=b.apply(this,arguments)}finally{this.model.endUpdate()}return f};var f=EditorUi.prototype.init;EditorUi.prototype.init=function(){f.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(a){return z.isVertex(a)&&f(a)}function d(a){var b=!1;null!=a&&(b=g.view.getState(a),b="1"==(null!=b?b.style:g.getCellStyle(a)).treeMoving);
+return b}function f(a){var b=!1;null!=a&&(a=z.getParent(a),b=g.view.getState(a),b="tree"==(null!=b?b.style:g.getCellStyle(a)).containerType);return b}function v(a){var b=!1;null!=a&&(a=z.getParent(a),b=g.view.getState(a),g.view.getState(a),b=null!=(null!=b?b.style:g.getCellStyle(a)).childLayout);return b}function y(a){a=g.view.getState(a);if(null!=a){var b=g.getIncomingEdges(a.cell);if(0<b.length&&(b=g.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==
+a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function B(a,b){b=null!=b?b:!0;g.model.beginUpdate();try{var c=g.model.getParent(a),d=g.getIncomingEdges(a),e=g.cloneCells([d[0],a]);g.model.setTerminal(e[0],g.model.getTerminal(d[0],!0),!0);var f=y(a),k=c.geometry;f==mxConstants.DIRECTION_SOUTH||
+f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width-10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;g.view.currentRoot!=c&&(e[1].geometry.x-=k.x,e[1].geometry.y-=k.y);var l=g.view.getState(a),m=g.view.scale;if(null!=l){var n=mxRectangle.fromRectangle(l);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?n.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*m:n.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*m;var p=g.getOutgoingEdges(g.model.getTerminal(d[0],
+!0));if(null!=p){for(var u=f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH,q=k=d=0;q<p.length;q++){var x=g.model.getTerminal(p[q],!1);if(f==y(x)){var t=g.view.getState(x);x!=a&&null!=t&&(u&&b!=t.getCenterX()<l.getCenterX()||!u&&b!=t.getCenterY()<l.getCenterY())&&mxUtils.intersects(n,t)&&(d=10+Math.max(d,(Math.min(n.x+n.width,t.x+t.width)-Math.max(n.x,t.x))/m),k=10+Math.max(k,(Math.min(n.y+n.height,t.y+t.height)-Math.max(n.y,t.y))/m))}}u?k=0:d=0;for(q=0;q<p.length;q++)if(x=g.model.getTerminal(p[q],
+!1),f==y(x)&&(t=g.view.getState(x),x!=a&&null!=t&&(u&&b!=t.getCenterX()<l.getCenterX()||!u&&b!=t.getCenterY()<l.getCenterY()))){var v=[];g.traverse(t.cell,!0,function(a,b){null!=b&&v.push(b);v.push(a);return!0});g.moveCells(v,(b?1:-1)*d,(b?1:-1)*k)}}}return g.addCells(e,c)}finally{g.model.endUpdate()}}function c(a){g.model.beginUpdate();try{var b=y(a),c=g.getIncomingEdges(a),d=g.cloneCells([c[0],a]);g.model.setTerminal(c[0],d[1],!1);g.model.setTerminal(d[0],d[1],!0);g.model.setTerminal(d[0],a,!1);
+var e=g.model.getParent(a),f=e.geometry,k=[];g.view.currentRoot!=e&&(d[1].geometry.x-=f.x,d[1].geometry.y-=f.y);g.traverse(a,!0,function(a,b){null!=b&&k.push(b);k.push(a);return!0});var l=a.geometry.width+40,m=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?l=0:b==mxConstants.DIRECTION_NORTH?(l=0,m=-m):b==mxConstants.DIRECTION_WEST?(l=-l,m=0):b==mxConstants.DIRECTION_EAST&&(m=0);g.moveCells(k,l,m);return g.addCells(d,e)}finally{g.model.endUpdate()}}function e(a){g.model.beginUpdate();try{var b=
+g.model.getParent(a),c=g.getIncomingEdges(a),d=g.cloneCells([c[0],a]);g.model.setTerminal(d[0],a,!0);var c=g.getOutgoingEdges(a),e=b.geometry,f=[];g.view.currentRoot==b&&(e=new mxRectangle);for(var k=0;k<c.length;k++){var l=g.model.getTerminal(c[k],!1);null!=l&&f.push(l)}var m=g.view.getBounds(f),n=y(a),p=g.view.translate,u=g.view.scale;n==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/u-p.x-e.x+10,d[1].geometry.y+=d[1].geometry.height-
+e.y+40):n==mxConstants.DIRECTION_NORTH?(d[1].geometry.x=null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/u-p.x+-e.x+10,d[1].geometry.y-=d[1].geometry.height+e.y+40):(d[1].geometry.x=n==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width+e.x+40):d[1].geometry.x+(d[1].geometry.width-e.x+40),d[1].geometry.y=null==m?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(m.y+m.height)/u-p.y+-e.y+10);return g.addCells(d,b)}finally{g.model.endUpdate()}}function k(a,
+b,c){a=g.getOutgoingEdges(a);c=g.view.getState(c);var d=[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=g.view.getState(g.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function t(a,b){var c=y(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST||
+c==mxConstants.DIRECTION_WEST)==d&&c!=b?n.actions.get("selectParent").funct():c==b?(d=g.getOutgoingEdges(a),null!=d&&0<d.length&&g.setSelectionCell(g.model.getTerminal(d[0],!1))):(c=g.getIncomingEdges(a),null!=c&&0<c.length&&(d=k(g.model.getTerminal(c[0],!0),d,a),c=g.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&g.setSelectionCell(d[c].cell)))))}var n=this,g=n.editor.graph,z=g.getModel(),A=n.menus.createPopupMenu;
+n.menus.createPopupMenu=function(a,c,d){A.apply(this,arguments);if(1==g.getSelectionCount()){c=g.getSelectionCell();var e=g.getOutgoingEdges(c);a.addSeparator();null!=e&&0<e.length&&(b(g.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,d),this.addMenuItems(a,["selectDescendants"],null,d));b(g.getSelectionCell())&&(a.addSeparator(),0<g.getIncomingEdges(c).length&&this.addMenuItems(a,["selectSiblings","selectParent"],null,d))}};n.actions.addAction("selectChildren",function(){if(g.isEnabled()&&
+1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getOutgoingEdges(a);if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(g.model.getTerminal(a[c],!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+X");n.actions.addAction("selectSiblings",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);if(null!=a&&0<a.length&&(a=g.getOutgoingEdges(g.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(g.model.getTerminal(a[c],
+!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+S");n.actions.addAction("selectParent",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);null!=a&&0<a.length&&g.setSelectionCell(g.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");n.actions.addAction("selectDescendants",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),b=[];g.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});g.setSelectionCells(b)}},
+null,null,"Alt+Shift+D");var q=g.removeCells;g.removeCells=function(a,c){c=null!=c?c:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));c&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var d=[],e=0;e<a.length;e++){var k=a[e];z.isEdge(k)&&f(k)&&(d.push(k),k=z.getTerminal(k,!1));b(k)?(g.traverse(k,!0,function(a,b){null!=b&&d.push(b);d.push(a);return!0}),k=g.getIncomingEdges(a[e]),a=a.concat(k)):d.push(a[e])}a=d;return q.apply(this,arguments)};n.hoverIcons.getStateAt=function(a,c,
+d){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var F=g.duplicateCells;g.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();for(var d=a.slice(0),e=0;e<d.length;e++){var f=g.view.getState(d[e]);if(null!=f&&b(f.cell))for(var k=g.getIncomingEdges(f.cell),f=0;f<k.length;f++)mxUtils.remove(k[f],a)}this.model.beginUpdate();try{var l=F.call(this,a,c);if(l.length==a.length)for(e=0;e<a.length;e++)if(b(a[e])){var m=g.getIncomingEdges(l[e]),k=g.getIncomingEdges(a[e]);
+if(0==m.length&&0<k.length){var n=this.cloneCell(k[0]);this.addEdge(n,g.getDefaultParent(),this.model.getTerminal(k[0],!0),l[e])}}}finally{this.model.endUpdate()}return l};var x=g.moveCells;g.moveCells=function(a,c,d,e,f,k,l){var m=null;this.model.beginUpdate();try{var n=f,p=this.view.getState(f),u=null!=p?p.style:this.getCellStyle(f);if(null!=a&&b(f)&&"1"==mxUtils.getValue(u,"treeFolding","0")){for(var q=0;q<a.length;q++)if(b(a[q])||g.model.isEdge(a[q])&&null==g.model.getTerminal(a[q],!0)){f=g.model.getParent(a[q]);
+break}if(null!=n&&f!=n&&null!=this.view.getState(a[0])){var t=g.getIncomingEdges(a[0]);if(0<t.length){var v=g.view.getState(g.model.getTerminal(t[0],!0));if(null!=v){var z=g.view.getState(n);null!=z&&(c=(z.getCenterX()-v.getCenterX())/g.view.scale,d=(z.getCenterY()-v.getCenterY())/g.view.scale)}}}}m=x.apply(this,arguments);if(null!=m&&null!=a&&m.length==a.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(a[q])&&(t=g.getIncomingEdges(a[q]),0<t.length))if(!e)b(n)&&0>mxUtils.indexOf(a,this.model.getTerminal(t[0],!0))&&this.model.setTerminal(t[0],n,!0);else if(0==g.getIncomingEdges(m[q]).length){p=n;if(null==p||p==g.model.getParent(a[q]))p=g.model.getTerminal(t[0],!0);e=this.cloneCell(t[0]);this.addEdge(e,g.getDefaultParent(),p,m[q])}}finally{this.model.endUpdate()}return m};if(null!=n.sidebar){var E=n.sidebar.dropAndConnect;n.sidebar.dropAndConnect=function(a,c,d,e){var f=g.model,k=null;
+f.beginUpdate();try{if(k=E.apply(this,arguments),b(a))for(var l=0;l<k.length;l++)if(f.isEdge(k[l])&&null==f.getTerminal(k[l],!0)){f.setTerminal(k[l],a,!0);var m=g.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return k}}var u={88:n.actions.get("selectChildren"),84:n.actions.get("selectSubtree"),80:n.actions.get("selectParent"),83:n.actions.get("selectSiblings")},C=n.onKeyDown;n.onKeyDown=function(a){try{if(g.isEnabled()&&!g.isEditing()&&
+b(g.getSelectionCell())&&1==g.getSelectionCount()){var d=null;0<g.getIncomingEdges(g.getSelectionCell()).length&&(9==a.which?d=mxEvent.isShiftDown(a)?c(g.getSelectionCell()):e(g.getSelectionCell()):13==a.which&&(d=B(g.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=d&&0<d.length)1==d.length&&g.model.isEdge(d[0])?g.setSelectionCell(g.model.getTerminal(d[0],!1)):g.setSelectionCell(d[d.length-1]),null!=n.hoverIcons&&n.hoverIcons.update(g.view.getState(g.getSelectionCell())),g.startEditingAtCell(g.getSelectionCell()),
+mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var f=u[a.keyCode];null!=f&&(f.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(t(g.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(t(g.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(t(g.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(t(g.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(a))}}catch(P){console.log("error",
+P)}mxEvent.isConsumed(a)||C.apply(this,arguments)};var K=g.connectVertex;g.connectVertex=function(a,d,f,k,l,m){var n=g.getIncomingEdges(a);return b(a)&&0<n.length?(f=y(a),k=f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST,l=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST,f==d?e(a):k==l?c(a):B(a,d!=mxConstants.DIRECTION_NORTH&&d!=mxConstants.DIRECTION_WEST)):K.call(this,a,d,f,k,l,m)};g.getSubtree=function(a){var c=[a];!d(a)&&!b(a)||v(a)||g.traverse(a,!0,function(a,b){null!=
 b&&0>mxUtils.indexOf(c,b)&&c.push(b);0>mxUtils.indexOf(c,a)&&c.push(a);return!0});return c};var Y=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){Y.apply(this,arguments);(d(this.state.cell)||b(this.state.cell))&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="18px",
 this.moveHandle.style.height="18px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a));this.graph.graphHandler.cells=this.graph.getSubtree(this.state.cell);this.graph.graphHandler.bounds=this.state.view.getBounds(this.graph.graphHandler.cells);this.graph.graphHandler.pBounds=this.graph.graphHandler.getPreviewBounds(this.graph.graphHandler.cells);
 this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;mxEvent.consume(a)})))};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 Q=mxVertexHandler.prototype.destroy;
 mxVertexHandler.prototype.destroy=function(a,b){Q.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var d=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=d.apply(this,arguments),b=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");
 a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var b=new mxCell("Central Idea",new mxGeometry(160,60,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");b.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;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;");d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");f.geometry.relative=!0;f.edge=!0;b.insertEdge(f,!0);d.insertEdge(f,!1);var c=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]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;");
-c.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;b.insertEdge(e,!0);c.insertEdge(e,!1);var g=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=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;b.insertEdge(k,!0);g.insertEdge(k,!1);var m=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]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;");m.vertex=!0;var l=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
-l.geometry.relative=!0;l.edge=!0;b.insertEdge(l,!0);m.insertEdge(l,!1);a.insert(f);a.insert(e);a.insert(k);a.insert(l);a.insert(b);a.insert(d);a.insert(c);a.insert(g);a.insert(m);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");a.vertex=
+c.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;b.insertEdge(e,!0);c.insertEdge(e,!1);var k=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;");k.vertex=!0;var l=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
+l.geometry.relative=!0;l.edge=!0;b.insertEdge(l,!0);k.insertEdge(l,!1);var m=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]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;");m.vertex=!0;var g=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
+g.geometry.relative=!0;g.edge=!0;b.insertEdge(g,!0);m.insertEdge(g,!1);a.insert(f);a.insert(e);a.insert(l);a.insert(g);a.insert(b);a.insert(d);a.insert(c);a.insert(k);a.insert(m);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");a.vertex=
 !0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps branch",function(){var a=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]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;");a.vertex=!0;var b=new mxCell("",
 new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps sub topic",function(){var a=new mxCell("Sub Topic",new mxGeometry(0,0,72,26),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;");
 a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree orgchart organization division",function(){var a=new mxCell("Orgchart",new mxGeometry(0,0,280,220),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");
-a.vertex=!0;var d=new mxCell("Organization",new mxGeometry(80,40,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;container=1;recursiveResize=0;");b.setAttributeForCell(d,"treeRoot","1");d.vertex=!0;var f=new mxCell("Division",new mxGeometry(20,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");f.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;d.insertEdge(k,!0);f.insertEdge(k,!1);var c=new mxCell("Division",new mxGeometry(160,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");c.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;d.insertEdge(e,!0);c.insertEdge(e,!1);a.insert(k);a.insert(e);a.insert(d);a.insert(f);
+a.vertex=!0;var d=new mxCell("Organization",new mxGeometry(80,40,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;container=1;recursiveResize=0;");b.setAttributeForCell(d,"treeRoot","1");d.vertex=!0;var f=new mxCell("Division",new mxGeometry(20,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");f.vertex=!0;var l=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
+l.geometry.relative=!0;l.edge=!0;d.insertEdge(l,!0);f.insertEdge(l,!1);var c=new mxCell("Division",new mxGeometry(160,140,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");c.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;d.insertEdge(e,!0);c.insertEdge(e,!1);a.insert(l);a.insert(e);a.insert(d);a.insert(f);
 a.insert(c);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree root",function(){var a=new mxCell("Organization",new mxGeometry(0,0,120,60),"whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;container=1;recursiveResize=0;");b.setAttributeForCell(a,"treeRoot","1");a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree division",function(){var a=new mxCell("Division",
 new mxGeometry(20,40,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree sub sections",
 function(){var a=new mxCell("Sub Section",new mxGeometry(0,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");b.geometry.setTerminalPoint(new mxPoint(110,-40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);var d=new mxCell("Sub Section",
 new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");f.geometry.setTerminalPoint(new mxPoint(110,-40),!0);f.geometry.relative=!0;f.edge=!0;d.insertEdge(f,!1);return sb.createVertexTemplateFromCells([b,f,a,d],220,60,
-"Sub Sections")})])}}})();EditorUi.initMinimalTheme=function(){function a(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();null==a.formatWindow?(a.formatWindow=new k(a,mxResources.get("format"),Math.max(20,a.diagramContainer.clientWidth-240-12),56,240,Math.min(566,b.container.clientHeight-10),function(b){b=a.createFormat(b);b.init();return b}),a.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80),a.formatWindow.window.setVisible(!0)):a.formatWindow.window.setVisible(!a.formatWindow.window.isVisible());a.formatWindow.window.isVisible()&&
-a.formatWindow.window.fit()}function b(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();new mxRectangle;if(null==a.sidebarWindow){var c=Math.min(b.container.clientWidth-10,218);a.sidebarWindow=new k(a,mxResources.get("shapes"),10,56,c-6,Math.min(650,b.container.clientHeight-30),function(b){function c(c,d){var f=a.menus.get(c),g=e.addMenu(d,mxUtils.bind(this,function(){f.funct.apply(this,arguments)}));g.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;height:24px;bottom:0px;text-align:center;cursor:pointer;padding:6px 0 0 0;cusor:pointer;";
+"Sub Sections")})])}}})();EditorUi.initMinimalTheme=function(){function a(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();null==a.formatWindow?(a.formatWindow=new l(a,mxResources.get("format"),Math.max(20,a.diagramContainer.clientWidth-240-12),56,240,Math.min(566,b.container.clientHeight-10),function(b){b=a.createFormat(b);b.init();return b}),a.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80),a.formatWindow.window.setVisible(!0)):a.formatWindow.window.setVisible(!a.formatWindow.window.isVisible());a.formatWindow.window.isVisible()&&
+a.formatWindow.window.fit()}function b(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();new mxRectangle;if(null==a.sidebarWindow){var c=Math.min(b.container.clientWidth-10,218);a.sidebarWindow=new l(a,mxResources.get("shapes"),10,56,c-6,Math.min(650,b.container.clientHeight-30),function(b){function c(c,d){var f=a.menus.get(c),g=e.addMenu(d,mxUtils.bind(this,function(){f.funct.apply(this,arguments)}));g.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;height:24px;bottom:0px;text-align:center;cursor:pointer;padding:6px 0 0 0;cusor:pointer;";
 g.className="geTitle";b.appendChild(g);return g}var d=document.createElement("div");d.style.cssText="position:absolute;left:0;right:0;border-top:1px solid lightgray;height:24px;bottom:31px;text-align:center;cursor:pointer;padding:6px 0 0 0;";d.className="geTitle";d.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(d,mxResources.get("moreShapes"));b.appendChild(d);mxEvent.addListener(d,"click",function(){a.actions.get("shapes").funct()});var e=new Menubar(a,b);if(!Editor.enableCustomLibraries||
 "1"==urlParams.embed&&"1"!=urlParams.libraries)d.style.bottom="0";else if(null!=a.actions.get("newLibrary")){d=document.createElement("div");d.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;";d.className="geTitle";var f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("newLibrary"));d.appendChild(f);b.appendChild(d);mxEvent.addListener(d,
 "click",a.actions.get("newLibrary").funct);d=document.createElement("div");d.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;";d.className="geTitle";f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("openLibrary"));d.appendChild(f);b.appendChild(d);mxEvent.addListener(d,"click",a.actions.get("openLibrary").funct)}else d=
 c("newLibrary",mxResources.get("newLibrary")),d.style.boxSizing="border-box",d.style.paddingRight="6px",d.style.paddingLeft="6px",d.style.height="32px",d.style.left="0",d=c("openLibraryFrom",mxResources.get("openLibraryFrom")),d.style.borderLeft="1px solid lightgray",d.style.boxSizing="border-box",d.style.paddingRight="6px",d.style.paddingLeft="6px",d.style.height="32px",d.style.left="50%";b.appendChild(a.sidebar.container);b.style.overflow="hidden";return b});a.sidebarWindow.window.minimumSize=new mxRectangle(0,
 0,90,90);a.sidebarWindow.window.setVisible(!0);a.getLocalData("sidebar",function(b){a.sidebar.showEntries(b,null,!0)});a.restoreLibraries()}else a.sidebarWindow.window.setVisible(!a.sidebarWindow.window.isVisible());a.sidebarWindow.window.isVisible()&&a.sidebarWindow.window.fit()}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||"undefined"===typeof window.Menus)window.uiTheme=null;else{var f=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;
 try{var d=document.createElement("style");d.type="text/css";d.innerHTML="* { -webkit-font-smoothing: antialiased; }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 * { font-size:13px; }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 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; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: #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: #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; } .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); }.geToolbarContainer { background:#fff !important; }div.geSidebarContainer { background-color: #ffffff; }div.geSidebarContainer .geTitle { background-color:#fdfdfd; }div.mxWindow td.mxWindowPane button { background-image: none; float: none; }td.mxWindowTitle { height: 22px !important; background: none !important; font-size: 13px !important; text-align:center !important; border-bottom:1px solid lightgray; }div.mxWindow, div.mxWindowTitle { background-image: none !important; background-color:#fff !important; }div.mxWindow { border-radius:5px; box-shadow: 0px 0px 2px #C0C0C0 !important;}div.mxWindow * { font-family: inherit !important; }html div.geVerticalHandle { position:absolute;bottom:0px;left:50%;cursor:row-resize;width:11px;height:11px;background:white;margin-bottom:-6px; margin-left:-6px; border: none; border-radius: 6px; 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); }html div.geInactivePage { background: rgb(249, 249, 249) !important; color:lightgray !important; } html div.geActivePage { background: white !important;color: #353535 !important; } html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.5) !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: #353535; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: #29b6f2; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: #fff !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; }"+
-(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"");document.getElementsByTagName("head")[0].appendChild(d)}catch(l){}var k=function(a,b,c,d,e,f,g){var l=document.createElement("div");l.className="geSidebarContainer";l.style.position="absolute";l.style.width="100%";l.style.height="100%";l.style.border="1px solid whiteSmoke";l.style.overflowX="hidden";l.style.overflowY="auto";g(l);this.window=new mxWindow(b,l,c,d,e,f,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);
+(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"");document.getElementsByTagName("head")[0].appendChild(d)}catch(g){}var l=function(a,b,c,d,e,f,k){var g=document.createElement("div");g.className="geSidebarContainer";g.style.position="absolute";g.style.width="100%";g.style.height="100%";g.style.border="1px solid whiteSmoke";g.style.overflowX="hidden";g.style.overflowY="auto";k(g);this.window=new mxWindow(b,g,c,d,e,f,!0,!0);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.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};mxClient.IS_SF&&
 (this.window.div.onselectstart=mxUtils.bind(this,function(b){null==b&&(b=window.event);return null!=b&&a.isSelectionAllowed(b)}))};Editor.checkmarkImage=Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;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="#ffffff"/>').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="#ffffff"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<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=
@@ -3456,8 +3458,8 @@ b.shortcut):v.apply(this,arguments)};var y=App.prototype.updateUserElement;App.p
 mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))},mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});1==e.getSelectionCount()?(this.addMenuItems(a,["editTooltip","-","editStyle","editGeometry","-"],null,d),e.isCellFoldable(e.getSelectionCell())&&this.addMenuItems(a,e.isCellCollapsed(b)?["expand"]:["collapse"],null,d),this.addMenuItems(a,["collapsible","-","lockUnlock","enterGroup"],
 null,d),a.addSeparator(),this.addSubmenu("layout",a)):e.isSelectionEmpty()&&e.isEnabled()?(a.addSeparator(),this.addMenuItems(a,["editData"],null,d),a.addSeparator(),this.addSubmenu("layout",a),this.addSubmenu("view",a,null,mxResources.get("options")),this.addMenuItems(a,["-","exitGroup"],null,d)):e.isEnabled()&&this.addMenuItems(a,["-","lockUnlock"],null,d)};EditorUi.prototype.toggleFormatPanel=function(b){null!=this.formatWindow?this.formatWindow.window.setVisible(b?!1:!this.formatWindow.window.isVisible()):
 a(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var e=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.sidebarWindow&&(this.sidebarWindow.window.setVisible(!1),this.sidebarWindow.window.destroy(),this.sidebarWindow=null);null!=this.formatWindow&&(this.formatWindow.window.setVisible(!1),this.formatWindow.window.destroy(),this.formatWindow=null);null!=this.actions.outlineWindow&&(this.actions.outlineWindow.window.setVisible(!1),this.actions.outlineWindow.window.destroy(),
-this.actions.outlineWindow=null);null!=this.actions.layersWindow&&(this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.window.destroy(),this.actions.layersWindow=null);null!=this.menus.tagsWindow&&(this.menus.tagsWindow.window.setVisible(!1),this.menus.tagsWindow.window.destroy(),this.menus.tagsWindow=null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);e.apply(this,arguments)};var g=
-EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(a){g.apply(this,arguments);a||(null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var u=Menus.prototype.init;Menus.prototype.init=function(){u.apply(this,arguments);var c=this.editorUi,d=c.editor.graph;c.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";c.actions.get("createShape").label=
+this.actions.outlineWindow=null);null!=this.actions.layersWindow&&(this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.window.destroy(),this.actions.layersWindow=null);null!=this.menus.tagsWindow&&(this.menus.tagsWindow.window.setVisible(!1),this.menus.tagsWindow.window.destroy(),this.menus.tagsWindow=null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);e.apply(this,arguments)};var k=
+EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(a){k.apply(this,arguments);a||(null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var t=Menus.prototype.init;Menus.prototype.init=function(){t.apply(this,arguments);var c=this.editorUi,d=c.editor.graph;c.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";c.actions.get("createShape").label=
 mxResources.get("shape")+"...";c.actions.get("outline").label=mxResources.get("outline")+"...";c.actions.get("layers").label=mxResources.get("layers")+"...";c.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){d.popupMenuHandler.hideMenu();c.showImportCsvDialog()}));c.actions.put("importText",new Action(mxResources.get("text")+"...",function(){var a=new ParseDialog(c,"Insert from Text");c.showDialog(a.container,620,420,!0,!1);a.init()}));c.actions.put("formatSql",new Action(mxResources.get("formatSql")+
 "...",function(){var a=new ParseDialog(c,"Insert from Text","formatSql");c.showDialog(a.container,620,420,!0,!1);a.init()}));c.actions.put("toggleShapes",new Action(mxResources.get("shapes")+"...",function(){b(c)}));c.actions.put("toggleFormat",new Action(mxResources.get("format")+"...",function(){a(c)}));EditorUi.enablePlantUml&&!c.isOffline()&&c.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var a=new ParseDialog(c,"Insert from Text","plantUml");c.showDialog(a.container,
 620,420,!0,!1);a.init()}));this.put("diagram",new Menu(mxUtils.bind(this,function(a,b){var d=c.getCurrentFile();c.menus.addSubmenu("extras",a,b,mxResources.get("preferences"));a.addSeparator(b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(c.menus.addMenuItems(a,["new","open","-"],b),EditorUi.isElectronApp&&c.menus.addMenuItems(a,["synchronize","-"],b),c.menus.addMenuItems(a,["save","saveAs","-"],b)):"1"==urlParams.embed?(c.menus.addMenuItems(a,["-","save"],b),"1"==urlParams.saveAndExit&&c.menus.addMenuItems(a,
@@ -3466,94 +3468,94 @@ b);c.commentsSupported()&&c.menus.addMenuItems(a,["comments"],b);c.menus.addMenu
 b):(c.menus.addMenuItems(a,["save","saveAs","-","rename"],b),c.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&this.addMenuItems(a,["upload"],b):c.menus.addMenuItems(a,["makeCopy"],b));c.menus.addMenuItems(a,["-","autosave"],b);null!=d&&d.isRevisionHistorySupported()&&c.menus.addMenuItems(a,["-","revisionHistory"],b)})));var e=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(a,b){e.funct(a,b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||c.menus.addMenuItems(a,
 ["publishLink"],b);a.addSeparator(b);c.menus.addSubmenu("embed",a,b)})));var f=this.get("language");this.put("extras",new Menu(mxUtils.bind(this,function(a,b){"1"!=urlParams.embed&&c.menus.addSubmenu("theme",a,b);null!=f&&c.menus.addSubmenu("language",a,b);c.menus.addSubmenu("units",a,b);a.addSeparator(b);c.menus.addMenuItems(a,["scrollbars","tooltips","ruler"],b);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&c.menus.addMenuItems(a,["-","search","scratchpad","-","showStartScreen"],
 b);!c.isOfflineApp()&&isLocalStorage&&(a.addSeparator(b),c.menus.addMenuItem(a,"plugins",b));a.addSeparator(b)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"importText plantUml - formatSql importCsv - createShape editDiagram".split(" "),b)})));this.put("insert",new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),b);c.insertTemplateEnabled&&!c.isOffline()&&
-c.menus.addMenuItems(a,["insertTemplate"],b);a.addSeparator(b);this.addMenuItems(a,["createShape","insertFreehand","-"],b);this.addSubmenu("insertLayout",a,b,mxResources.get("layout"));this.addSubmenu("insertAdvanced",a,b,mxResources.get("advanced"));a.addSeparator(b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?c.menus.addMenuItems(a,["import"],b):c.menus.addSubmenu("importFrom",a,b)})));var g="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),k=function(a,
-b,d,e){a.addItem(d,null,mxUtils.bind(this,function(){var a=new CreateGraphDialog(c,d,e);c.showDialog(a.container,620,420,!0,!1);a.init()}),b)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){for(var c=0;c<g.length;c++)"-"==g[c]?a.addSeparator(b):k(a,b,mxResources.get(g[c])+"...",g[c])})));this.put("view",new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"grid guides - connectionArrows connectionPoints -".split(" "),b);if("undefined"!==typeof MathJax){var d=c.menus.addMenuItem(a,
-"mathematicalTypesetting",b);c.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}c.menus.addMenuItems(a,["copyConnect","collapseExpand","-","pageScale"],b)})))};var n=EditorUi.prototype.init;EditorUi.prototype.init=function(){function a(a,b,c){var d=k.menus.get(a),e=v.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),u);e.className="geMenuItem";e.style.display="inline-block";e.style.boxSizing="border-box";e.style.top="6px";e.style.marginRight=
-"6px";e.style.height="30px";e.style.paddingTop="6px";e.style.paddingBottom="6px";e.style.cursor="pointer";e.setAttribute("title",mxResources.get(a));k.menus.menuCreated(d,e,"geMenuItem");null!=c?(e.style.backgroundImage="url("+c+")",e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.width="34px",e.innerHTML=""):b||(e.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",e.style.backgroundPosition="right 6px center",
-e.style.backgroundRepeat="no-repeat",e.style.paddingRight="22px");return e}function c(a,b,c,d,e,f){var g=document.createElement("a");g.className="geMenuItem";g.style.display="inline-block";g.style.boxSizing="border-box";g.style.height="30px";g.style.padding="6px";g.style.position="relative";g.style.verticalAlign="top";g.style.top="0px";null!=k.statusContainer?p.insertBefore(g,k.statusContainer):p.appendChild(g);null!=f?(g.style.backgroundImage="url("+f+")",g.style.backgroundPosition="center center",
+c.menus.addMenuItems(a,["insertTemplate"],b);a.addSeparator(b);this.addMenuItems(a,["createShape","insertFreehand","-"],b);this.addSubmenu("insertLayout",a,b,mxResources.get("layout"));this.addSubmenu("insertAdvanced",a,b,mxResources.get("advanced"));a.addSeparator(b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?c.menus.addMenuItems(a,["import"],b):c.menus.addSubmenu("importFrom",a,b)})));var k="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),l=function(a,
+b,d,e){a.addItem(d,null,mxUtils.bind(this,function(){var a=new CreateGraphDialog(c,d,e);c.showDialog(a.container,620,420,!0,!1);a.init()}),b)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){for(var c=0;c<k.length;c++)"-"==k[c]?a.addSeparator(b):l(a,b,mxResources.get(k[c])+"...",k[c])})));this.put("view",new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"grid guides - connectionArrows connectionPoints -".split(" "),b);if("undefined"!==typeof MathJax){var d=c.menus.addMenuItem(a,
+"mathematicalTypesetting",b);c.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}c.menus.addMenuItems(a,["copyConnect","collapseExpand","-","pageScale"],b)})))};var n=EditorUi.prototype.init;EditorUi.prototype.init=function(){function a(a,b,c){var d=l.menus.get(a),e=v.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),t);e.className="geMenuItem";e.style.display="inline-block";e.style.boxSizing="border-box";e.style.top="6px";e.style.marginRight=
+"6px";e.style.height="30px";e.style.paddingTop="6px";e.style.paddingBottom="6px";e.style.cursor="pointer";e.setAttribute("title",mxResources.get(a));l.menus.menuCreated(d,e,"geMenuItem");null!=c?(e.style.backgroundImage="url("+c+")",e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.width="34px",e.innerHTML=""):b||(e.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",e.style.backgroundPosition="right 6px center",
+e.style.backgroundRepeat="no-repeat",e.style.paddingRight="22px");return e}function c(a,b,c,d,e,f){var g=document.createElement("a");g.className="geMenuItem";g.style.display="inline-block";g.style.boxSizing="border-box";g.style.height="30px";g.style.padding="6px";g.style.position="relative";g.style.verticalAlign="top";g.style.top="0px";null!=l.statusContainer?p.insertBefore(g,l.statusContainer):p.appendChild(g);null!=f?(g.style.backgroundImage="url("+f+")",g.style.backgroundPosition="center center",
 g.style.backgroundRepeat="no-repeat",g.style.backgroundSize="24px 24px",g.style.width="34px"):mxUtils.write(g,a);mxEvent.addListener(g,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(g,"click",function(a){"disabled"!=g.getAttribute("disabled")&&b(a);mxEvent.consume(a)});null==c&&(g.style.marginRight="4px");null!=d&&g.setAttribute("title",d);null!=e&&(a=function(){e.isEnabled()?(g.removeAttribute("disabled"),g.style.cursor="pointer"):
 (g.setAttribute("disabled","disabled"),g.style.cursor="default")},e.addListener("stateChanged",a),a());return g}function d(a,b){var c=document.createElement("div");c.className="geMenuItem";c.style.display="inline-block";c.style.verticalAlign="top";c.style.marginRight="6px";c.style.padding="0 4px 0 4px";c.style.height="30px";c.style.position="relative";c.style.top="0px";for(var d=0;d<a.length;d++)null!=a[d]&&(a[d].style.margin="0px",a[d].style.boxShadow="none",c.appendChild(a[d]));null!=b&&mxUtils.setOpacity(c,
-b);null!=k.statusContainer?p.insertBefore(c,k.statusContainer):p.appendChild(c);return c}function e(){for(var b=p.firstChild;null!=b;){var e=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=e}u=p.firstChild;f=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;(b=1E3>f)||a("diagram");d([b?a("diagram",null,IMAGE_PATH+"/drawlogo.svg"):null,c(mxResources.get("shapes"),k.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),
-k.actions.get("image"),b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTMgMTN2OGg4di04aC04ek0zIDIxaDh2LThIM3Y4ek0zIDN2OGg4VjNIM3ptMTMuNjYtMS4zMUwxMSA3LjM0IDE2LjY2IDEzbDUuNjYtNS42Ni01LjY2LTUuNjV6Ii8+PC9zdmc+":null),c(mxResources.get("format"),k.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+k.actions.get("formatPanel").shortcut+")",k.actions.get("image"),b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==":
-null)],b?60:null);e=a("insert",!0,b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==":null);d([e,c(mxResources.get("delete"),k.actions.get("delete").funct,null,mxResources.get("delete"),k.actions.get("delete"),b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIvPjwvc3ZnPg==":
-null)],b?60:null);if(411<=f&&(e=k.actions.get("undo"),b=k.actions.get("redo"),e=c("",e.funct,null,mxResources.get("undo")+" ("+e.shortcut+")",e,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ii8+PC9zdmc+"),b=c("",
-b.funct,null,mxResources.get("redo")+" ("+b.shortcut+")",b,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiIvPjwvc3ZnPg=="),d([e,b],60),480<=f)){var b=k.actions.get("zoomIn"),e=k.actions.get("zoomOut"),g=k.actions.get("resetView");
-d([c("",function(){m.popupMenuHandler.hideMenu();var a=m.view.scale,b=m.view.translate.x,c=m.view.translate.y;k.actions.get("resetView").funct();1E-5>Math.abs(a-m.view.scale)&&b==m.view.translate.x&&c==m.view.translate.y&&k.actions.get(m.pageVisible?"fitPage":"fitWindow").funct()},!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",g,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yeiIvPjwvc3ZnPg=="),
+b);null!=l.statusContainer?p.insertBefore(c,l.statusContainer):p.appendChild(c);return c}function e(){for(var b=p.firstChild;null!=b;){var e=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=e}t=p.firstChild;f=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;(b=1E3>f)||a("diagram");d([b?a("diagram",null,IMAGE_PATH+"/drawlogo.svg"):null,c(mxResources.get("shapes"),l.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),
+l.actions.get("image"),b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTMgMTN2OGg4di04aC04ek0zIDIxaDh2LThIM3Y4ek0zIDN2OGg4VjNIM3ptMTMuNjYtMS4zMUwxMSA3LjM0IDE2LjY2IDEzbDUuNjYtNS42Ni01LjY2LTUuNjV6Ii8+PC9zdmc+":null),c(mxResources.get("format"),l.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+l.actions.get("formatPanel").shortcut+")",l.actions.get("image"),b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==":
+null)],b?60:null);e=a("insert",!0,b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==":null);d([e,c(mxResources.get("delete"),l.actions.get("delete").funct,null,mxResources.get("delete"),l.actions.get("delete"),b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIvPjwvc3ZnPg==":
+null)],b?60:null);if(411<=f&&(e=l.actions.get("undo"),b=l.actions.get("redo"),e=c("",e.funct,null,mxResources.get("undo")+" ("+e.shortcut+")",e,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ii8+PC9zdmc+"),b=c("",
+b.funct,null,mxResources.get("redo")+" ("+b.shortcut+")",b,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiIvPjwvc3ZnPg=="),d([e,b],60),480<=f)){var b=l.actions.get("zoomIn"),e=l.actions.get("zoomOut"),g=l.actions.get("resetView");
+d([c("",function(){m.popupMenuHandler.hideMenu();var a=m.view.scale,b=m.view.translate.x,c=m.view.translate.y;l.actions.get("resetView").funct();1E-5>Math.abs(a-m.view.scale)&&b==m.view.translate.x&&c==m.view.translate.y&&l.actions.get(m.pageVisible?"fitPage":"fitWindow").funct()},!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",g,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yeiIvPjwvc3ZnPg=="),
 640<=f?c("",b.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",b,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="):
 null,640<=f?c("",e.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",e,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="):
-null],60)}b=k.menus.get("language");null!=b&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=f?(null==O&&(e=v.addMenu("",b.funct),e.setAttribute("title",mxResources.get("language")),e.className="geToolbarButton",e.style.backgroundImage="url("+Editor.globeImage+")",e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.position="absolute",e.style.height="24px",e.style.width="24px",e.style.zIndex="1",e.style.right="8px",e.style.cursor=
-"pointer",e.style.top="1"==urlParams.embed?"12px":"11px",p.appendChild(e),O=e),k.buttonContainer.style.paddingRight="34px"):(k.buttonContainer.style.paddingRight="4px",null!=O&&(O.parentNode.removeChild(O),O=null))}n.apply(this,arguments);var g=document.createElement("div");g.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";g.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(g);null==urlParams.clibs&&
-null==urlParams.libs||b(this);var k=this,m=k.editor.graph;k.toolbar=this.createToolbar(k.createDiv("geToolbar"));k.defaultLibraryName=mxResources.get("untitledLibrary");var p=document.createElement("div");p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var u=null,v=new Menubar(k,p);k.statusContainer=k.createStatusContainer();k.statusContainer.style.position="relative";
-k.statusContainer.style.maxWidth="";k.statusContainer.style.marginTop="7px";k.statusContainer.style.marginLeft="6px";k.statusContainer.style.color="gray";k.statusContainer.style.cursor="default";k.editor.addListener("statusChanged",mxUtils.bind(this,function(){k.setStatusText(k.editor.getStatus())}));var y=k.descriptorChanged;k.descriptorChanged=function(){y.apply(this,arguments);var a=k.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":
-"gitlab"==b?b="gitLab":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);p.setAttribute("title",a.getTitle()+(null!=b?" ("+b+")":""))}else p.removeAttribute("title")};k.setStatusText(k.editor.getStatus());p.appendChild(k.statusContainer);k.buttonContainer=document.createElement("div");k.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";p.appendChild(k.buttonContainer);k.menubarContainer=k.buttonContainer;
-k.tabContainer=document.createElement("div");k.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";var g=k.diagramContainer.parentNode,B=document.createElement("div");B.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";k.diagramContainer.style.top="47px";var Q=k.menus.get("viewZoom");
+null],60)}b=l.menus.get("language");null!=b&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=f?(null==O&&(e=v.addMenu("",b.funct),e.setAttribute("title",mxResources.get("language")),e.className="geToolbarButton",e.style.backgroundImage="url("+Editor.globeImage+")",e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.position="absolute",e.style.height="24px",e.style.width="24px",e.style.zIndex="1",e.style.right="8px",e.style.cursor=
+"pointer",e.style.top="1"==urlParams.embed?"12px":"11px",p.appendChild(e),O=e),l.buttonContainer.style.paddingRight="34px"):(l.buttonContainer.style.paddingRight="4px",null!=O&&(O.parentNode.removeChild(O),O=null))}n.apply(this,arguments);var k=document.createElement("div");k.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";k.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(k);null==urlParams.clibs&&
+null==urlParams.libs||b(this);var l=this,m=l.editor.graph;l.toolbar=this.createToolbar(l.createDiv("geToolbar"));l.defaultLibraryName=mxResources.get("untitledLibrary");var p=document.createElement("div");p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var t=null,v=new Menubar(l,p);l.statusContainer=l.createStatusContainer();l.statusContainer.style.position="relative";
+l.statusContainer.style.maxWidth="";l.statusContainer.style.marginTop="7px";l.statusContainer.style.marginLeft="6px";l.statusContainer.style.color="gray";l.statusContainer.style.cursor="default";l.editor.addListener("statusChanged",mxUtils.bind(this,function(){l.setStatusText(l.editor.getStatus())}));var y=l.descriptorChanged;l.descriptorChanged=function(){y.apply(this,arguments);var a=l.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":
+"gitlab"==b?b="gitLab":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);p.setAttribute("title",a.getTitle()+(null!=b?" ("+b+")":""))}else p.removeAttribute("title")};l.setStatusText(l.editor.getStatus());p.appendChild(l.statusContainer);l.buttonContainer=document.createElement("div");l.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";p.appendChild(l.buttonContainer);l.menubarContainer=l.buttonContainer;
+l.tabContainer=document.createElement("div");l.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";var k=l.diagramContainer.parentNode,B=document.createElement("div");B.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";l.diagramContainer.style.top="47px";var Q=l.menus.get("viewZoom");
 if(null!=Q){this.tabContainer.style.right="70px";var D=v.addMenu("100%",Q.funct);D.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");D.style.whiteSpace="nowrap";D.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";D.style.backgroundPosition="right 6px center";D.style.backgroundRepeat="no-repeat";D.style.backgroundColor="#ffffff";D.style.paddingRight="10px";D.style.display="block";D.style.position="absolute";D.style.textDecoration="none";D.style.textDecoration="none";
-D.style.right="0px";D.style.bottom="0px";D.style.overflow="hidden";D.style.visibility="hidden";D.style.textAlign="center";D.style.color="#000";D.style.fontSize="12px";D.style.color="#707070";D.style.width="59px";D.style.cursor="pointer";D.style.borderTop="1px solid lightgray";D.style.borderLeft="1px solid lightgray";D.style.height=parseInt(k.tabContainerHeight)-1+"px";D.style.lineHeight=parseInt(k.tabContainerHeight)+1+"px";B.appendChild(D);Q=mxUtils.bind(this,function(){D.innerHTML=Math.round(100*
-k.editor.graph.view.scale)+"%"});k.editor.graph.view.addListener(mxEvent.EVENT_SCALE,Q);k.editor.addListener("resetGraphView",Q);k.editor.addListener("pageSelected",Q);var L=k.setGraphEnabled;k.setGraphEnabled=function(){L.apply(this,arguments);null!=this.tabContainer&&(D.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?this.tabContainerHeight+"px":"0px")}}B.appendChild(k.tabContainer);B.appendChild(p);B.appendChild(k.diagramContainer);
-g.appendChild(B);k.updateTabContainer();var O=null;e();mxEvent.addListener(window,"resize",function(){e();null!=k.sidebarWindow&&k.sidebarWindow.window.fit();null!=k.formatWindow&&k.formatWindow.window.fit();null!=k.actions.outlineWindow&&k.actions.outlineWindow.window.fit();null!=k.actions.layersWindow&&k.actions.layersWindow.window.fit();null!=k.menus.tagsWindow&&k.menus.tagsWindow.window.fit();null!=k.menus.findWindow&&k.menus.findWindow.window.fit()})}}};
-(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var b=EditorUi.initTheme;EditorUi.initTheme=function(){b.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();DrawioComment=function(a,b,f,d,k,m,p){this.file=a;this.id=b;this.content=f;this.modifiedDate=d;this.createdDate=k;this.isResolved=m;this.user=p;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,b,f,d,k){b()};DrawioComment.prototype.editComment=function(a,b,f){b()};DrawioComment.prototype.deleteComment=function(a,b){a()};DrawioUser=function(a,b,f,d,k){this.id=a;this.email=b;this.displayName=f;this.pictureUrl=d;this.locale=k};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\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=Borderwidth\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\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\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\ncsv=CSV\ndark=Dark\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\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\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.\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\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Download draw.io 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\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\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. Do you want to synchronize those changes?\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\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\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.\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 page refresh.\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\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\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\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\npaste=Paste\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\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\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\nsendMessage=Send\nsendYourFeedbackToDrawIo=Send your feedback to draw.io\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\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\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\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\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\ndrwaDiag=draw.io diagram\nunknownErr=Unkown Error\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occured, {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=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=Gliffy diagram "{1}" found. Importing\nconfAGliffyDiagImported=Gliffy diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported Gliffy diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing Gliffy diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching Gliffy 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 occured!\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. \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="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><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="#000000"/><add as="fontColor" value="#000000"/></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><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="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="#ffffff"/><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="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><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="#ffffff"/></add></mxStylesheet>').documentElement;
+D.style.right="0px";D.style.bottom="0px";D.style.overflow="hidden";D.style.visibility="hidden";D.style.textAlign="center";D.style.color="#000";D.style.fontSize="12px";D.style.color="#707070";D.style.width="59px";D.style.cursor="pointer";D.style.borderTop="1px solid lightgray";D.style.borderLeft="1px solid lightgray";D.style.height=parseInt(l.tabContainerHeight)-1+"px";D.style.lineHeight=parseInt(l.tabContainerHeight)+1+"px";B.appendChild(D);Q=mxUtils.bind(this,function(){D.innerHTML=Math.round(100*
+l.editor.graph.view.scale)+"%"});l.editor.graph.view.addListener(mxEvent.EVENT_SCALE,Q);l.editor.addListener("resetGraphView",Q);l.editor.addListener("pageSelected",Q);var L=l.setGraphEnabled;l.setGraphEnabled=function(){L.apply(this,arguments);null!=this.tabContainer&&(D.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?this.tabContainerHeight+"px":"0px")}}B.appendChild(l.tabContainer);B.appendChild(p);B.appendChild(l.diagramContainer);
+k.appendChild(B);l.updateTabContainer();var O=null;e();mxEvent.addListener(window,"resize",function(){e();null!=l.sidebarWindow&&l.sidebarWindow.window.fit();null!=l.formatWindow&&l.formatWindow.window.fit();null!=l.actions.outlineWindow&&l.actions.outlineWindow.window.fit();null!=l.actions.layersWindow&&l.actions.layersWindow.window.fit();null!=l.menus.tagsWindow&&l.menus.tagsWindow.window.fit();null!=l.menus.findWindow&&l.menus.findWindow.window.fit()})}}};
+(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var b=EditorUi.initTheme;EditorUi.initTheme=function(){b.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();DrawioComment=function(a,b,f,d,l,m,p){this.file=a;this.id=b;this.content=f;this.modifiedDate=d;this.createdDate=l;this.isResolved=m;this.user=p;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,b,f,d,l){b()};DrawioComment.prototype.editComment=function(a,b,f){b()};DrawioComment.prototype.deleteComment=function(a,b){a()};DrawioUser=function(a,b,f,d,l){this.id=a;this.email=b;this.displayName=f;this.pictureUrl=d;this.locale=l};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\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=Borderwidth\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\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\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\ncsv=CSV\ndark=Dark\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\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\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.\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\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Download draw.io 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\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\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. Do you want to synchronize those changes?\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\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\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.\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 page refresh.\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\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\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\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\npaste=Paste\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\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\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\nsendMessage=Send\nsendYourFeedbackToDrawIo=Send your feedback to draw.io\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\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\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\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\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\ndrwaDiag=draw.io diagram\nunknownErr=Unkown Error\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occured, {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=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=Gliffy diagram "{1}" found. Importing\nconfAGliffyDiagImported=Gliffy diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported Gliffy diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing Gliffy diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching Gliffy 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 occured!\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. \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="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><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="#000000"/><add as="fontColor" value="#000000"/></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><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="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="#ffffff"/><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="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><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="#ffffff"/></add></mxStylesheet>').documentElement;
 Graph.prototype.defaultThemes.darkTheme=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="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><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="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></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="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="#2a2a2a"/><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="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><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="#2a2a2a"/></add></mxStylesheet>').documentElement;GraphViewer=function(a,b,f){this.init(a,b,f)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://www.draw.io/";GraphViewer.prototype.imageBaseUrl="https://www.draw.io/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?28:30;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!0;GraphViewer.prototype.center=!1;GraphViewer.prototype.allowZoomIn=!1;
 GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;
 GraphViewer.prototype.init=function(a,b,f){this.graphConfig=null!=f?f:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?this.graphConfig["allow-zoom-in"]:this.allowZoomIn;this.center=null!=this.graphConfig.center?this.graphConfig.center:this.center;this.checkVisibleState=null!=this.graphConfig["check-visible-state"]?this.graphConfig["check-visible-state"]:this.checkVisibleState;this.toolbarItems=null!=
 this.graphConfig.toolbar?this.graphConfig.toolbar.split(" "):[];this.zoomEnabled=0<=mxUtils.indexOf(this.toolbarItems,"zoom");this.layersEnabled=0<=mxUtils.indexOf(this.toolbarItems,"layers");this.lightboxEnabled=0<=mxUtils.indexOf(this.toolbarItems,"lightbox");this.lightboxClickEnabled=0!=this.graphConfig.lightbox;this.initialWidth=null!=a?a.style.width:null;this.widthIsEmpty=null!=this.initialWidth?""==this.initialWidth:!0;this.currentPage=parseInt(this.graphConfig.page)||0;this.pageId=this.graphConfig.pageId;
 this.editor=null;"inline"==this.graphConfig["toolbar-position"]&&(this.minHeight+=this.toolbarHeight);if(null!=b&&(this.xmlDocument=b.ownerDocument,this.xmlNode=b,this.xml=mxUtils.getXml(b),null!=a)){var d=mxUtils.bind(this,function(){this.graph=new Graph(a);this.graph.defaultPageBackgroundColor="transparent";this.graph.transparentBackground=!1;this.graphConfig.move&&(this.graph.isMoveCellsEvent=function(a){return!0});this.lightboxClickEnabled&&(a.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!=b&&(this.xml=mxUtils.getXml(this.xmlNode),this.xmlDocument=this.xmlNode.ownerDocument);var d=this;this.graph.getImageFromBundles=function(a){return d.getImageUrl(a)};
-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 m=this.graph.getGlobalVariable,d=this;this.graph.getGlobalVariable=function(a){var b=f[d.currentPage];return"page"==a?b.getAttribute("name")||"Page-"+(d.currentPage+1):"pagenumber"==a?d.currentPage+
-1:"pagecount"==a?f.length:m.apply(this,arguments)}}}this.diagrams=[];var c=null;this.selectPage=function(a){this.handlingResize||(this.currentPage=mxUtils.mod(a,this.diagrams.length),this.updateGraphXml(Editor.parseDiagramNode(this.diagrams[this.currentPage])))};this.selectPageById=function(a){for(var b=!1,c=0;c<this.diagrams.length;c++)if(this.diagrams[c].getAttribute("id")==a){this.selectPage(c);b=!0;break}return b};k=mxUtils.bind(this,function(){if(null==this.xmlNode||"mxfile"!=this.xmlNode.nodeName)this.diagrams=
-[];this.xmlNode!=c&&(this.diagrams=this.xmlNode.getElementsByTagName("diagram"),c=this.xmlNode)});this.addListener("xmlNodeChanged",k);k();urlParams.page=d.currentPage;this.graph.getModel().beginUpdate();try{urlParams.nav=0!=this.graphConfig.nav?"1":"0",this.editor.setGraphXml(this.xmlNode),this.graph.border=null!=this.graphConfig.border?this.graphConfig.border:8,this.graph.view.scale=this.graphConfig.zoom||1}finally{this.graph.getModel().endUpdate()}this.graph.panningHandler.useLeftButtonForPanning=
+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 l=0;l<f.length;l++)if(this.pageId==f[l].getAttribute("id")){this.currentPage=l;break}var m=this.graph.getGlobalVariable,d=this;this.graph.getGlobalVariable=function(a){var b=f[d.currentPage];return"page"==a?b.getAttribute("name")||"Page-"+(d.currentPage+1):"pagenumber"==a?d.currentPage+
+1:"pagecount"==a?f.length:m.apply(this,arguments)}}}this.diagrams=[];var c=null;this.selectPage=function(a){this.handlingResize||(this.currentPage=mxUtils.mod(a,this.diagrams.length),this.updateGraphXml(Editor.parseDiagramNode(this.diagrams[this.currentPage])))};this.selectPageById=function(a){for(var b=!1,c=0;c<this.diagrams.length;c++)if(this.diagrams[c].getAttribute("id")==a){this.selectPage(c);b=!0;break}return b};l=mxUtils.bind(this,function(){if(null==this.xmlNode||"mxfile"!=this.xmlNode.nodeName)this.diagrams=
+[];this.xmlNode!=c&&(this.diagrams=this.xmlNode.getElementsByTagName("diagram"),c=this.xmlNode)});this.addListener("xmlNodeChanged",l);l();urlParams.page=d.currentPage;this.graph.getModel().beginUpdate();try{urlParams.nav=0!=this.graphConfig.nav?"1":"0",this.editor.setGraphXml(this.xmlNode),this.graph.border=null!=this.graphConfig.border?this.graphConfig.border:8,this.graph.view.scale=this.graphConfig.zoom||1}finally{this.graph.getModel().endUpdate()}this.graph.panningHandler.useLeftButtonForPanning=
 !0;this.graph.panningHandler.isForcePanningEvent=function(a){return!mxEvent.isPopupTrigger(a.getEvent())&&"auto"==this.graph.container.style.overflow};this.graph.panningHandler.usePopupTrigger=!1;this.graph.panningHandler.pinchEnabled=!1;this.graph.panningHandler.ignoreCell=!0;this.graph.setPanning(!1);null!=this.graphConfig.toolbar?this.addToolbar():null!=this.graphConfig.title&&this.showTitleAsTooltip&&a.setAttribute("title",this.graphConfig.title);this.addSizeHandler();this.showLayers(this.graph);
 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};d=this;this.graph.customLinkClicked=function(a){var b=!0;if("data:page/id,"==a.substring(0,13)){var c=a.indexOf(",");d.selectPageById(a.substring(c+1))||(b=!1,alert(mxResources.get("pageNotFound")||"Page not found"))}else this.handleCustomLink(a);return b};this.fireEvent(new mxEventObject("render"))});f=window.MutationObserver||
-window.WebKitMutationObserver||window.MozMutationObserver;if(this.checkVisibleState&&0==a.offsetWidth&&"undefined"!==typeof f){var k=this.getObservableParent(a),m=new f(mxUtils.bind(this,function(b){0<a.offsetWidth&&(m.disconnect(),d())}));m.observe(k,{attributes:!0})}else d()}};GraphViewer.prototype.getObservableParent=function(a){for(a=a.parentNode;a!=document.body&&null!=a.parentNode&&"none"!==mxUtils.getCurrentStyle(a).display;)a=a.parentNode;return a};
+window.WebKitMutationObserver||window.MozMutationObserver;if(this.checkVisibleState&&0==a.offsetWidth&&"undefined"!==typeof f){var l=this.getObservableParent(a),m=new f(mxUtils.bind(this,function(b){0<a.offsetWidth&&(m.disconnect(),d())}));m.observe(l,{attributes:!0})}else d()}};GraphViewer.prototype.getObservableParent=function(a){for(a=a.parentNode;a!=document.body&&null!=a.parentNode&&"none"!==mxUtils.getCurrentStyle(a).display;)a=a.parentNode;return a};
 GraphViewer.prototype.getImageUrl=function(a){null!=a&&"http://"!=a.substring(0,7)&&"https://"!=a.substring(0,8)&&"data:image"!=a.substring(0,10)&&("/"==a.charAt(0)&&(a=a.substring(1,a.length)),a=this.imageBaseUrl+a);return a};GraphViewer.prototype.setXmlNode=function(a){this.xmlDocument=a.ownerDocument;this.xml=mxUtils.getXml(a);this.xmlNode=a;this.updateGraphXml(a);this.fireEvent(new mxEventObject("xmlNodeChanged"))};
 GraphViewer.prototype.setFileNode=function(a){null==this.xmlNode&&(this.xmlDocument=a.ownerDocument,this.xml=mxUtils.getXml(a),this.xmlNode=a);this.setGraphXml(a)};GraphViewer.prototype.updateGraphXml=function(a){this.setGraphXml(a);this.fireEvent(new mxEventObject("graphChanged"))};
 GraphViewer.prototype.setGraphXml=function(a){null!=this.graph&&(this.graph.view.translate=new mxPoint,this.graph.view.scale=1,this.graph.getModel().clear(),this.editor.setGraphXml(a),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})};
 GraphViewer.prototype.addSizeHandler=function(){var a=this.graph.container,b=this.graph.getGraphBounds(),f=!1;a.style.overflow=1!=this.graphConfig["toolbar-nohide"]?"hidden":"visible";var d=mxUtils.bind(this,function(){if(!f){f=!0;var b=this.graph.getGraphBounds();a.style.overflow=1!=this.graphConfig["toolbar-nohide"]?b.width+2*this.graph.border>a.offsetWidth-2?"auto":"hidden":"visible";if(null!=this.toolbar&&1!=this.graphConfig["toolbar-nohide"]){var b=a.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};this.toolbar.style.left=b.left+"px";"bottom"==this.graphConfig["toolbar-position"]?this.toolbar.style.top=b.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(this.toolbar.style.width=Math.max(this.minToolbarWidth,a.offsetWidth)+"px",this.toolbar.style.top=b.top+1+"px"):this.toolbar.style.top=b.top+"px"}f=
-!1}}),k=null;this.handlingResize=!1;this.fitGraph=mxUtils.bind(this,function(b){var d=a.offsetWidth;d==k||this.handlingResize||(this.handlingResize=!0,"auto"==a.style.overflow&&(a.style.overflow="hidden"),this.graph.maxFitScale=null!=b?b:this.graphConfig.zoom||(this.allowZoomIn?null:1),this.graph.fit(null,null,null,null,null,!0),(this.center||0==this.graphConfig.resize&&""!=a.style.height)&&this.graph.center(),this.graph.maxFitScale=null,0==this.graphConfig.resize&&""!=a.style.height||this.updateContainerHeight(a,
-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},k=d,window.setTimeout(mxUtils.bind(this,function(){this.handlingResize=!1}),0))});GraphViewer.useResizeSensor&&(mxClient.IS_QUIRKS||9>=document.documentMode?(mxEvent.addListener(window,"resize",d),this.graph.addListener("size",d)):new ResizeSensor(this.graph.container,d));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||""!=a.style.height&&this.autoFit||this.updateContainerWidth(a,b.width+2*this.graph.border),0==this.graphConfig.resize&&""!=a.style.height||this.updateContainerHeight(a,Math.max(this.minHeight,b.height+2*this.graph.border+1)),!this.zoomEnabled&&this.autoFit){var m=k=null,d=mxUtils.bind(this,function(){window.clearTimeout(m);
+!1}}),l=null;this.handlingResize=!1;this.fitGraph=mxUtils.bind(this,function(b){var d=a.offsetWidth;d==l||this.handlingResize||(this.handlingResize=!0,"auto"==a.style.overflow&&(a.style.overflow="hidden"),this.graph.maxFitScale=null!=b?b:this.graphConfig.zoom||(this.allowZoomIn?null:1),this.graph.fit(null,null,null,null,null,!0),(this.center||0==this.graphConfig.resize&&""!=a.style.height)&&this.graph.center(),this.graph.maxFitScale=null,0==this.graphConfig.resize&&""!=a.style.height||this.updateContainerHeight(a,
+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},l=d,window.setTimeout(mxUtils.bind(this,function(){this.handlingResize=!1}),0))});GraphViewer.useResizeSensor&&(mxClient.IS_QUIRKS||9>=document.documentMode?(mxEvent.addListener(window,"resize",d),this.graph.addListener("size",d)):new ResizeSensor(this.graph.container,d));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||""!=a.style.height&&this.autoFit||this.updateContainerWidth(a,b.width+2*this.graph.border),0==this.graphConfig.resize&&""!=a.style.height||this.updateContainerHeight(a,Math.max(this.minHeight,b.height+2*this.graph.border+1)),!this.zoomEnabled&&this.autoFit){var m=l=null,d=mxUtils.bind(this,function(){window.clearTimeout(m);
 this.handlingResize||(m=window.setTimeout(mxUtils.bind(this,this.fitGraph),100))});GraphViewer.useResizeSensor&&(mxClient.IS_QUIRKS||9>=document.documentMode?mxEvent.addListener(window,"resize",d):new ResizeSensor(this.graph.container,d))}else mxClient.IS_QUIRKS||9>=document.documentMode||this.graph.addListener("size",d);var p=mxUtils.bind(this,function(){var d=a.style.minWidth;this.widthIsEmpty&&(a.style.minWidth="100%");var f=null!=this.graphConfig["max-height"]?this.graphConfig["max-height"]:""!=
-a.style.height&&this.autoFit?a.offsetHeight:void 0;if(0<a.offsetWidth&&(this.allowZoomIn||b.width+2*this.graph.border>a.offsetWidth||b.height+2*this.graph.border>f)){var m=null;null!=f&&b.height+2*this.graph.border>f-2&&(m=(f-2*this.graph.border-2)/b.height);this.fitGraph(m)}else this.widthIsEmpty||0!=this.graphConfig.resize||""==a.style.height?(this.graph.view.setTranslate(Math.floor(this.graph.border-b.x/this.graph.view.scale),Math.floor(this.graph.border-b.y/this.graph.view.scale)),k=a.offsetWidth):
-this.graph.center((!this.widthIsEmpty||b.width<this.minWidth)&&1!=this.graphConfig.resize);a.style.minWidth=d});mxClient.IS_QUIRKS||8==document.documentMode?window.setTimeout(p,0):p();this.positionGraph=function(){b=this.graph.getGraphBounds();k=null;p()}};GraphViewer.prototype.updateContainerWidth=function(a,b){a.style.width=b+"px"};
+a.style.height&&this.autoFit?a.offsetHeight:void 0;if(0<a.offsetWidth&&(this.allowZoomIn||b.width+2*this.graph.border>a.offsetWidth||b.height+2*this.graph.border>f)){var m=null;null!=f&&b.height+2*this.graph.border>f-2&&(m=(f-2*this.graph.border-2)/b.height);this.fitGraph(m)}else this.widthIsEmpty||0!=this.graphConfig.resize||""==a.style.height?(this.graph.view.setTranslate(Math.floor(this.graph.border-b.x/this.graph.view.scale),Math.floor(this.graph.border-b.y/this.graph.view.scale)),l=a.offsetWidth):
+this.graph.center((!this.widthIsEmpty||b.width<this.minWidth)&&1!=this.graphConfig.resize);a.style.minWidth=d});mxClient.IS_QUIRKS||8==document.documentMode?window.setTimeout(p,0):p();this.positionGraph=function(){b=this.graph.getGraphBounds();l=null;p()}};GraphViewer.prototype.updateContainerWidth=function(a,b){a.style.width=b+"px"};
 GraphViewer.prototype.updateContainerHeight=function(a,b){if(this.zoomEnabled||!this.autoFit||"BackCompat"==document.compatMode||mxClient.IS_QUIRKS||8==document.documentMode)a.style.height=b+"px"};
-GraphViewer.prototype.showLayers=function(a,b){var f=this.graphConfig.layers,f=null!=f?f.split(" "):[],d=this.graphConfig.layerIds,k=null!=d&&0<d.length;if(0<f.length||k||null!=b){var m=null!=b?b.getModel():null,p=a.getModel();p.beginUpdate();try{for(var v=p.getChildCount(p.root),y=0;y<v;y++)p.setVisible(p.getChildAt(p.root,y),null!=b?m.isVisible(m.getChildAt(m.root,y)):!1);if(null==m)if(k)for(y=0;y<d.length;y++)p.setVisible(p.getCell(d[y]),!0);else for(y=0;y<f.length;y++)p.setVisible(p.getChildAt(p.root,
+GraphViewer.prototype.showLayers=function(a,b){var f=this.graphConfig.layers,f=null!=f?f.split(" "):[],d=this.graphConfig.layerIds,l=null!=d&&0<d.length;if(0<f.length||l||null!=b){var m=null!=b?b.getModel():null,p=a.getModel();p.beginUpdate();try{for(var v=p.getChildCount(p.root),y=0;y<v;y++)p.setVisible(p.getChildAt(p.root,y),null!=b?m.isVisible(m.getChildAt(m.root,y)):!1);if(null==m)if(l)for(y=0;y<d.length;y++)p.setVisible(p.getCell(d[y]),!0);else for(y=0;y<f.length;y++)p.setVisible(p.getChildAt(p.root,
 parseInt(f[y])),!0)}finally{p.endUpdate()}}};
 GraphViewer.prototype.addToolbar=function(){function a(a,b,d,e){var g=document.createElement("div");g.style.borderRight="1px solid #d0d0d0";g.style.padding="3px 6px 3px 6px";mxEvent.addListener(g,"click",a);null!=d&&g.setAttribute("title",d);g.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",b);null==e||e?(mxEvent.addListener(g,"mouseenter",function(){g.style.backgroundColor="#ddd"}),mxEvent.addListener(g,"mouseleave",
 function(){g.style.backgroundColor="#eee"}),mxUtils.setOpacity(a,60),g.style.cursor="pointer"):mxUtils.setOpacity(g,30);g.appendChild(a);f.appendChild(g);c++;return g}var b=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?b.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(b.style.marginTop=this.toolbarHeight+"px");var f=b.ownerDocument.createElement("div");f.style.position="absolute";f.style.overflow="hidden";f.style.boxSizing="border-box";
-f.style.whiteSpace="nowrap";f.style.textAlign="left";f.style.zIndex=this.toolbarZIndex;f.style.backgroundColor="#eee";f.style.height=this.toolbarHeight+"px";this.toolbar=f;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(f.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(f,30);var d=null,k=null,m=mxUtils.bind(this,function(a){null!=d&&(window.clearTimeout(d),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);d=window.setTimeout(mxUtils.bind(this,
-function(){mxUtils.setOpacity(f,0);d=null;k=window.setTimeout(mxUtils.bind(this,function(){f.style.display="none";k=null}),100)}),a||200)}),p=mxUtils.bind(this,function(a){null!=d&&(window.clearTimeout(d),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);f.style.display="";mxUtils.setOpacity(f,a||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(p(30),m())}));mxEvent.addListener(f,mxClient.IS_POINTER?
+f.style.whiteSpace="nowrap";f.style.textAlign="left";f.style.zIndex=this.toolbarZIndex;f.style.backgroundColor="#eee";f.style.height=this.toolbarHeight+"px";this.toolbar=f;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(f.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(f,30);var d=null,l=null,m=mxUtils.bind(this,function(a){null!=d&&(window.clearTimeout(d),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);d=window.setTimeout(mxUtils.bind(this,
+function(){mxUtils.setOpacity(f,0);d=null;l=window.setTimeout(mxUtils.bind(this,function(){f.style.display="none";l=null}),100)}),a||200)}),p=mxUtils.bind(this,function(a){null!=d&&(window.clearTimeout(d),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);f.style.display="";mxUtils.setOpacity(f,a||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(p(30),m())}));mxEvent.addListener(f,mxClient.IS_POINTER?
 "pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(f,"mouseenter",mxUtils.bind(this,function(a){p(100)}));mxEvent.addListener(f,"mousemove",mxUtils.bind(this,function(a){p(100);mxEvent.consume(a)}));mxEvent.addListener(f,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||p(30)}));var v=this.graph,y=v.getTolerance();v.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(a,b){this.startX=b.getGraphX();this.startY=b.getGraphY();
-this.scrollLeft=v.container.scrollLeft;this.scrollTop=v.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-v.container.scrollLeft)<y&&Math.abs(this.scrollTop-v.container.scrollTop)<y&&Math.abs(this.startX-b.getGraphX())<y&&Math.abs(this.startY-b.getGraphY())<y&&(0<parseFloat(f.style.opacity||0)?m():p(30))}})}for(var B=this.toolbarItems,c=0,e=null,g=null,u=0;u<B.length;u++){var n=B[u];if("pages"==n){g=b.ownerDocument.createElement("div");
-g.style.cssText="display:inline-block;position:relative;padding:3px 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;";mxUtils.setOpacity(g,70);var l=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");l.style.borderRightStyle="none";l.style.paddingLeft="0px";l.style.paddingRight="0px";f.appendChild(g);var z=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage+
-1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");z.style.paddingLeft="0px";z.style.paddingRight="0px";n=mxUtils.bind(this,function(){g.innerHTML="";mxUtils.write(g,this.currentPage+1+" / "+this.diagrams.length);g.style.display=1<this.diagrams.length?"inline-block":"none";l.style.display=g.style.display;z.style.display=g.style.display});this.addListener("graphChanged",n);n()}else if("zoom"==n)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage,
+this.scrollLeft=v.container.scrollLeft;this.scrollTop=v.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-v.container.scrollLeft)<y&&Math.abs(this.scrollTop-v.container.scrollTop)<y&&Math.abs(this.startX-b.getGraphX())<y&&Math.abs(this.startY-b.getGraphY())<y&&(0<parseFloat(f.style.opacity||0)?m():p(30))}})}for(var B=this.toolbarItems,c=0,e=null,k=null,t=0;t<B.length;t++){var n=B[t];if("pages"==n){k=b.ownerDocument.createElement("div");
+k.style.cssText="display:inline-block;position:relative;padding:3px 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;";mxUtils.setOpacity(k,70);var g=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");g.style.borderRightStyle="none";g.style.paddingLeft="0px";g.style.paddingRight="0px";f.appendChild(k);var z=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage+
+1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");z.style.paddingLeft="0px";z.style.paddingRight="0px";n=mxUtils.bind(this,function(){k.innerHTML="";mxUtils.write(k,this.currentPage+1+" / "+this.diagrams.length);k.style.display=1<this.diagrams.length?"inline-block":"none";g.style.display=k.style.display;z.style.display=k.style.display});this.addListener("graphChanged",n);n()}else if("zoom"==n)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage,
 mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(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"==n){if(this.layersEnabled){var A=this.graph.getModel(),q=a(mxUtils.bind(this,function(a){if(null!=e)e.parentNode.removeChild(e),
 e=null;else{e=this.graph.createLayersDialog();mxEvent.addListener(e,"mouseleave",function(){e.parentNode.removeChild(e);e=null});a=q.getBoundingClientRect();e.style.width="140px";e.style.padding="2px 0px 2px 0px";e.style.border="1px solid #d0d0d0";e.style.backgroundColor="#eee";e.style.fontFamily="Helvetica Neue,Helvetica,Arial Unicode MS,Arial";e.style.fontSize="11px";e.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(e,80);var b=mxUtils.getDocumentScrollOrigin(document);e.style.left=b.x+a.left+
 "px";e.style.top=b.y+a.bottom+"px";document.body.appendChild(e)}}),Editor.layersImage,mxResources.get("layers")||"Layers");A.addListener(mxEvent.CHANGE,function(){q.style.display=1<A.getChildCount(A.root)?"inline-block":"none"});q.style.display=1<A.getChildCount(A.root)?"inline-block":"none"}}else"lightbox"==n?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(n=this.graphConfig["toolbar-buttons"][n],
 null!=n&&a(null==n.enabled||n.enabled?n.handler:function(){},n.image,n.title,n.enabled))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*c);null!=this.graphConfig.title&&(B=b.ownerDocument.createElement("div"),B.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;",B.setAttribute("title",this.graphConfig.title),mxUtils.write(B,this.graphConfig.title),mxUtils.setOpacity(B,
-70),f.appendChild(B));this.minToolbarWidth=34*c;var E=b.style.border,B=mxUtils.bind(this,function(){f.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,b.offsetWidth)+"px";f.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var a=b.getBoundingClientRect(),c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x,top:-c.y},a={left:a.left-c.left,top:a.top-
-c.top,bottom:a.bottom-c.top,right:a.right-c.left};f.style.left=a.left+"px";"bottom"==this.graphConfig["toolbar-position"]?f.style.top=a.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(f.style.marginTop=-this.toolbarHeight+"px",f.style.top=a.top+1+"px"):f.style.top=a.top+"px";"1px solid transparent"==E&&(b.style.border="1px solid #d0d0d0");document.body.appendChild(f);var d=mxUtils.bind(this,function(){null!=f.parentNode&&f.parentNode.removeChild(f);null!=e&&(e.parentNode.removeChild(e),
-e=null);b.style.border=E});mxEvent.addListener(document,"mousemove",function(a){for(a=mxEvent.getSource(a);null!=a;){if(a==b||a==f||a==e)return;a=a.parentNode}d()});mxEvent.addListener(document,"mouseleave",function(a){d()})}else f.style.top=-this.toolbarHeight+"px",b.appendChild(f)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(b,"mouseenter",B):B()};
-GraphViewer.prototype.addClickHandler=function(a,b){a.linkPolicy=this.graphConfig.target||a.linkPolicy;a.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(f,d){if(null==d){var k=mxEvent.getSource(f);"a"==k.nodeName.toLowerCase()&&(d=k.getAttribute("href"))}null!=b?null==d||a.isExternalProtocol(d)||a.isBlankLink(d)||window.setTimeout(function(){b.destroy()},0):null!=d&&null==b&&a.isCustomLink(d)&&(mxEvent.isTouchEvent(f)||!mxEvent.isPopupTrigger(f))&&a.customLinkClicked(d)&&mxEvent.consume(f)}),
+70),f.appendChild(B));this.minToolbarWidth=34*c;var F=b.style.border,B=mxUtils.bind(this,function(){f.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,b.offsetWidth)+"px";f.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var a=b.getBoundingClientRect(),c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x,top:-c.y},a={left:a.left-c.left,top:a.top-
+c.top,bottom:a.bottom-c.top,right:a.right-c.left};f.style.left=a.left+"px";"bottom"==this.graphConfig["toolbar-position"]?f.style.top=a.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(f.style.marginTop=-this.toolbarHeight+"px",f.style.top=a.top+1+"px"):f.style.top=a.top+"px";"1px solid transparent"==F&&(b.style.border="1px solid #d0d0d0");document.body.appendChild(f);var d=mxUtils.bind(this,function(){null!=f.parentNode&&f.parentNode.removeChild(f);null!=e&&(e.parentNode.removeChild(e),
+e=null);b.style.border=F});mxEvent.addListener(document,"mousemove",function(a){for(a=mxEvent.getSource(a);null!=a;){if(a==b||a==f||a==e)return;a=a.parentNode}d()});mxEvent.addListener(document,"mouseleave",function(a){d()})}else f.style.top=-this.toolbarHeight+"px",b.appendChild(f)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(b,"mouseenter",B):B()};
+GraphViewer.prototype.addClickHandler=function(a,b){a.linkPolicy=this.graphConfig.target||a.linkPolicy;a.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(f,d){if(null==d){var l=mxEvent.getSource(f);"a"==l.nodeName.toLowerCase()&&(d=l.getAttribute("href"))}null!=b?null==d||a.isExternalProtocol(d)||a.isBlankLink(d)||window.setTimeout(function(){b.destroy()},0):null!=d&&null==b&&a.isCustomLink(d)&&(mxEvent.isTouchEvent(f)||!mxEvent.isPopupTrigger(f))&&a.customLinkClicked(d)&&mxEvent.consume(f)}),
 mxUtils.bind(this,function(a){null!=b||!this.lightboxClickEnabled||mxEvent.isTouchEvent(a)&&0!=this.toolbarItems.length||this.showLightbox()}))};
 GraphViewer.prototype.showLightbox=function(a,b,f){if("open"==this.graphConfig.lightbox||window.self!==window.top)if(null==this.lightboxWindow||this.lightboxWindow.closed){a=null!=a?a:null!=this.graphConfig.editable?this.graphConfig.editable:!0;f={client:1,lightbox:1,target:null!=f?f:"blank"};a&&(f.edit=this.graphConfig.edit||"_blank");if(null!=b?b:1)f.close=1;this.layersEnabled&&(f.layers=1);null!=this.graphConfig&&0!=this.graphConfig.nav&&(f.nav=1);null!=this.graphConfig&&null!=this.graphConfig.highlight&&
 (f.highlight=this.graphConfig.highlight.substring(1));null!=this.currentPage&&0<this.currentPage&&(f.page=this.currentPage);"undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)?null==this.lightboxWindow&&mxEvent.addListener(window,"message",mxUtils.bind(this,function(a){"ready"==a.data&&a.source==this.lightboxWindow&&this.lightboxWindow.postMessage(this.xml,"*")})):f.data=encodeURIComponent(this.xml);a="www.draw.io";"1"==urlParams.dev&&(f.dev="1",f.drawdev=
 "1",a="test.draw.io");this.lightboxWindow=window.open("https://"+a+"/#P"+encodeURIComponent(JSON.stringify(f)))}else this.lightboxWindow.focus();else this.showLocalLightbox()};
 GraphViewer.prototype.showLocalLightbox=function(){var a=mxUtils.getDocumentScrollOrigin(document),b=document.createElement("div");mxClient.IS_QUIRKS?(b.style.position="absolute",b.style.left=a.x+"px",b.style.top=a.y+"px",b.style.width=document.body.offsetWidth+"px",b.style.height=document.body.offsetHeight+"px"):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 f=document.createElement("img");f.setAttribute("border","0");f.setAttribute("src",Editor.closeImage);mxClient.IS_QUIRKS?(f.style.position="absolute",f.style.right="32px",f.style.top=a.y+32+"px"):f.style.cssText="position:fixed;top:32px;right:32px;";f.style.cursor="pointer";mxEvent.addListener(f,"click",function(){k.destroy()});urlParams.pages="1";urlParams.page=this.currentPage;urlParams["page-id"]=this.graphConfig.pageId;urlParams["layer-ids"]=null!=this.graphConfig.layerIds?this.graphConfig.layerIds.join(" "):
+var f=document.createElement("img");f.setAttribute("border","0");f.setAttribute("src",Editor.closeImage);mxClient.IS_QUIRKS?(f.style.position="absolute",f.style.right="32px",f.style.top=a.y+32+"px"):f.style.cssText="position:fixed;top:32px;right:32px;";f.style.cursor="pointer";mxEvent.addListener(f,"click",function(){l.destroy()});urlParams.pages="1";urlParams.page=this.currentPage;urlParams["page-id"]=this.graphConfig.pageId;urlParams["layer-ids"]=null!=this.graphConfig.layerIds?this.graphConfig.layerIds.join(" "):
 null;urlParams.nav=0!=this.graphConfig.nav?"1":"0";urlParams.layers=this.layersEnabled?"1":"0";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 d=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=d;k.refresh=function(){};var m=mxUtils.bind(this,function(a){27==a.keyCode&&k.destroy()}),p=k.destroy;k.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",m);document.body.removeChild(b);document.body.removeChild(f);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled=!0;p.apply(this,
-arguments)};var v=k.editor.graph,y=v.container;y.style.overflow="hidden";this.lightboxChrome?(y.style.border="1px solid #c0c0c0",y.style.margin="40px",mxEvent.addListener(document.documentElement,"keydown",m)):(b.style.display="none",f.style.display="none");var B=this;v.getImageFromBundles=function(a){return B.getImageUrl(a)};var c=k.createTemporaryGraph;k.createTemporaryGraph=function(){var a=c.apply(this,arguments);a.getImageFromBundles=function(a){return B.getImageUrl(a)};return a};this.graphConfig.move&&
-(v.isMoveCellsEvent=function(a){return!0});mxClient.IS_QUIRKS||(mxUtils.setPrefixedStyle(y.style,"border-radius","4px"),y.style.position="fixed");GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow="hidden";mxClient.IS_SF||mxClient.IS_EDGE||(mxUtils.setPrefixedStyle(y.style,"transform","rotateY(90deg)"),mxUtils.setPrefixedStyle(y.style,"transition","all .25s ease-in-out"));this.addClickHandler(v,k);window.setTimeout(mxUtils.bind(this,function(){y.style.outline="none";y.style.zIndex=this.lightboxZIndex;
-f.style.zIndex=this.lightboxZIndex;document.body.appendChild(y);document.body.appendChild(f);k.setFileData(this.xml);mxUtils.setPrefixedStyle(y.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});mxClient.IS_QUIRKS&&(y.style.position="absolute",y.style.display="block",y.style.left=a.x+"px",y.style.top=a.y+"px",y.style.width=
-document.body.clientWidth-80+"px",y.style.height=document.body.clientHeight-80+"px",y.style.backgroundColor="white",k.chromelessToolbar.style.display="block",k.chromelessToolbar.style.position="absolute",k.chromelessToolbar.style.bottom="",k.chromelessToolbar.style.top=a.y+document.body.clientHeight-100+"px");k.lightboxFit();k.chromelessResize();this.showLayers(v,this.graph);mxEvent.addListener(b,"click",function(){k.destroy()})}),0);return k};
+var l=new EditorUi(new Editor(!0),document.createElement("div"),!0);l.editor.editBlankUrl=this.editBlankUrl;l.editor.graph.shadowId="lightboxDropShadow";Graph.prototype.shadowId=d;l.refresh=function(){};var m=mxUtils.bind(this,function(a){27==a.keyCode&&l.destroy()}),p=l.destroy;l.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",m);document.body.removeChild(b);document.body.removeChild(f);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled=!0;p.apply(this,
+arguments)};var v=l.editor.graph,y=v.container;y.style.overflow="hidden";this.lightboxChrome?(y.style.border="1px solid #c0c0c0",y.style.margin="40px",mxEvent.addListener(document.documentElement,"keydown",m)):(b.style.display="none",f.style.display="none");var B=this;v.getImageFromBundles=function(a){return B.getImageUrl(a)};var c=l.createTemporaryGraph;l.createTemporaryGraph=function(){var a=c.apply(this,arguments);a.getImageFromBundles=function(a){return B.getImageUrl(a)};return a};this.graphConfig.move&&
+(v.isMoveCellsEvent=function(a){return!0});mxClient.IS_QUIRKS||(mxUtils.setPrefixedStyle(y.style,"border-radius","4px"),y.style.position="fixed");GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow="hidden";mxClient.IS_SF||mxClient.IS_EDGE||(mxUtils.setPrefixedStyle(y.style,"transform","rotateY(90deg)"),mxUtils.setPrefixedStyle(y.style,"transition","all .25s ease-in-out"));this.addClickHandler(v,l);window.setTimeout(mxUtils.bind(this,function(){y.style.outline="none";y.style.zIndex=this.lightboxZIndex;
+f.style.zIndex=this.lightboxZIndex;document.body.appendChild(y);document.body.appendChild(f);l.setFileData(this.xml);mxUtils.setPrefixedStyle(y.style,"transform","rotateY(0deg)");l.chromelessToolbar.style.bottom="60px";l.chromelessToolbar.style.zIndex=this.lightboxZIndex;document.body.appendChild(l.chromelessToolbar);l.getEditBlankXml=mxUtils.bind(this,function(){return this.xml});mxClient.IS_QUIRKS&&(y.style.position="absolute",y.style.display="block",y.style.left=a.x+"px",y.style.top=a.y+"px",y.style.width=
+document.body.clientWidth-80+"px",y.style.height=document.body.clientHeight-80+"px",y.style.backgroundColor="white",l.chromelessToolbar.style.display="block",l.chromelessToolbar.style.position="absolute",l.chromelessToolbar.style.bottom="",l.chromelessToolbar.style.top=a.y+document.body.clientHeight-100+"px");l.lightboxFit();l.chromelessResize();this.showLayers(v,this.graph);mxEvent.addListener(b,"click",function(){l.destroy()})}),0);return l};
 GraphViewer.processElements=function(a){mxUtils.forEach(GraphViewer.getElementsByClassName(a||"mxgraph"),function(a){try{a.innerHTML="",GraphViewer.createViewerForElement(a)}catch(f){throw a.innerHTML=f.message,f;}})};
-GraphViewer.getElementsByClassName=function(a){if(document.getElementsByClassName){var b=document.getElementsByClassName(a);a=[];for(var f=0;f<b.length;f++)a.push(b[f]);return a}for(var d=document.getElementsByTagName("*"),b=[],f=0;f<d.length;f++){var k=d[f].className;null!=k&&0<k.length&&(k=k.split(" "),0<=mxUtils.indexOf(k,a)&&b.push(d[f]))}return b};
-GraphViewer.createViewerForElement=function(a,b){var f=a.getAttribute("data-mxgraph");if(null!=f){var d=JSON.parse(f),k=function(f){f=mxUtils.parseXml(f);f=new GraphViewer(a,f.documentElement,d);null!=b&&b(f)};null!=d.url?GraphViewer.getUrl(d.url,function(a){k(a)}):k(d.xml)}};
+GraphViewer.getElementsByClassName=function(a){if(document.getElementsByClassName){var b=document.getElementsByClassName(a);a=[];for(var f=0;f<b.length;f++)a.push(b[f]);return a}for(var d=document.getElementsByTagName("*"),b=[],f=0;f<d.length;f++){var l=d[f].className;null!=l&&0<l.length&&(l=l.split(" "),0<=mxUtils.indexOf(l,a)&&b.push(d[f]))}return b};
+GraphViewer.createViewerForElement=function(a,b){var f=a.getAttribute("data-mxgraph");if(null!=f){var d=JSON.parse(f),l=function(f){f=mxUtils.parseXml(f);f=new GraphViewer(a,f.documentElement,d);null!=b&&b(f)};null!=d.url?GraphViewer.getUrl(d.url,function(a){l(a)}):l(d.xml)}};
 GraphViewer.initCss=function(){try{var a=document.createElement("style");a.type="text/css";a.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(a)}catch(b){}};
 GraphViewer.cachedUrls={};GraphViewer.getUrl=function(a,b,f){if(null!=GraphViewer.cachedUrls[a])b(GraphViewer.cachedUrls[a]);else{var d=0<navigator.userAgent.indexOf("MSIE 9")?new XDomainRequest:new XMLHttpRequest;d.open("GET",a);d.onload=function(){b(null!=d.getText?d.getText():d.responseText)};d.onerror=f;d.send()}};GraphViewer.resizeSensorEnabled=!0;GraphViewer.useResizeSensor=!0;
-(function(){var a=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(a){return window.setTimeout(a,20)},b=function(f,d){function k(){this.q=[];this.add=function(a){this.q.push(a)};var a,b;this.call=function(){a=0;for(b=this.q.length;a<b;a++)this.q[a].call()}}function m(a,b){return a.currentStyle?a.currentStyle[b]:window.getComputedStyle?window.getComputedStyle(a,null).getPropertyValue(b):a.style[b]}function p(b,c){if(!b.resizedAttached)b.resizedAttached=
-new k,b.resizedAttached.add(c);else if(b.resizedAttached){b.resizedAttached.add(c);return}b.resizeSensor=document.createElement("div");b.resizeSensor.className="resize-sensor";b.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";b.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>';
-b.appendChild(b.resizeSensor);"static"==m(b,"position")&&(b.style.position="relative");var d=b.resizeSensor.childNodes[0],e=d.childNodes[0],f=b.resizeSensor.childNodes[1],g=function(){e.style.width="100000px";e.style.height="100000px";d.scrollLeft=1E5;d.scrollTop=1E5;f.scrollLeft=1E5;f.scrollTop=1E5};g();var p=!1,q=function(){b.resizedAttached&&(p&&(b.resizedAttached.call(),p=!1),a(q))};a(q);var v,x,y,t,B=function(){if((y=b.offsetWidth)!=v||(t=b.offsetHeight)!=x)p=!0,v=y,x=t;g()},K=function(a,b,c){a.attachEvent?
+(function(){var a=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(a){return window.setTimeout(a,20)},b=function(f,d){function l(){this.q=[];this.add=function(a){this.q.push(a)};var a,b;this.call=function(){a=0;for(b=this.q.length;a<b;a++)this.q[a].call()}}function m(a,b){return a.currentStyle?a.currentStyle[b]:window.getComputedStyle?window.getComputedStyle(a,null).getPropertyValue(b):a.style[b]}function p(b,c){if(!b.resizedAttached)b.resizedAttached=
+new l,b.resizedAttached.add(c);else if(b.resizedAttached){b.resizedAttached.add(c);return}b.resizeSensor=document.createElement("div");b.resizeSensor.className="resize-sensor";b.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";b.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>';
+b.appendChild(b.resizeSensor);"static"==m(b,"position")&&(b.style.position="relative");var d=b.resizeSensor.childNodes[0],e=d.childNodes[0],f=b.resizeSensor.childNodes[1],k=function(){e.style.width="100000px";e.style.height="100000px";d.scrollLeft=1E5;d.scrollTop=1E5;f.scrollLeft=1E5;f.scrollTop=1E5};k();var p=!1,q=function(){b.resizedAttached&&(p&&(b.resizedAttached.call(),p=!1),a(q))};a(q);var v,x,y,u,B=function(){if((y=b.offsetWidth)!=v||(u=b.offsetHeight)!=x)p=!0,v=y,x=u;k()},K=function(a,b,c){a.attachEvent?
 a.attachEvent("on"+b,c):a.addEventListener(b,c)};K(d,"scroll",B);K(f,"scroll",B)}var v=function(){GraphViewer.resizeSensorEnabled&&d()},y=Object.prototype.toString.call(f),B="[object Array]"===y||"[object NodeList]"===y||"[object HTMLCollection]"===y||"undefined"!==typeof jQuery&&f instanceof jQuery||"undefined"!==typeof Elements&&f instanceof Elements;if(B)for(var y=0,c=f.length;y<c;y++)p(f[y],v);else p(f,v);this.detach=function(){if(B)for(var a=0,c=f.length;a<c;a++)b.detach(f[a]);else b.detach(f)}};
 b.detach=function(a){a.resizeSensor&&(a.removeChild(a.resizeSensor),delete a.resizeSensor,delete a.resizedAttached)};window.ResizeSensor=b})();
 (function(){Editor.initMath();GraphViewer.initCss();if(null!=window.onDrawioViewerLoad)window.onDrawioViewerLoad();else GraphViewer.processElements()})();
diff --git a/src/main/webapp/plugins/number.js b/src/main/webapp/plugins/number.js
index a2a05d24d804b9e59a32b5a0849c656902bb3aa6..09b4041e48da288b6a042ca0803035bfc1017557 100644
--- a/src/main/webapp/plugins/number.js
+++ b/src/main/webapp/plugins/number.js
@@ -7,39 +7,66 @@ Draw.loadPlugin(function(ui) {
 	var enabled = true;
 	var counter = 0;
 	
-	// Creates the shape for the shape number and puts it into the draw pane
-	var redrawShape = graph.cellRenderer.redrawShape;
-	graph.cellRenderer.redrawShape = function(state, force, rendering)
+	var graphViewResetValidationState = graph.view.resetValidationState;
+	
+	graph.view.resetValidationState = function()
+	{
+		graphViewResetValidationState.apply(this, arguments);
+		this.numberCounter = 0;
+	};
+	
+	var graphViewValidateCellState = graph.view.validateCellState;
+	
+	graph.view.validateCellState = function(cell, recurse)
+	{
+		var state = graphViewValidateCellState.apply(this, arguments);
+		recurse = (recurse != null) ? recurse : true;
+		
+		if (recurse && state != null && graph.model.isVertex(state.cell) &&
+			mxUtils.getValue(state.style, 'numbered', 1) == 1)
+		{
+			this.numberCounter++;
+			this.redrawNumberShape(state);
+		}
+	};
+	
+	graph.view.redrawNumberShape = function(state)
 	{
-		var result = redrawShape.apply(this, arguments);
+		var numbered = mxUtils.getValue(state.style, 'numbered', 1) == 1;
+		var value = '<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">' +
+			(this.numberCounter) + '</div>';
 
-		if (result && enabled && graph.model.isVertex(state.cell))
+		if (enabled && numbered && graph.model.isVertex(state.cell) &&
+			state.shape != null && state.secondLabel == null)
 		{
-			if (state.shape != null && state.secondLabel == null)
-			{
-				var value = '<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">' + (++counter) + '</div>';
-				state.secondLabel = new mxText(value, new mxRectangle(),
-						mxConstants.ALIGN_LEFT, mxConstants.ALIGN_BOTTOM);
+			state.secondLabel = new mxText(value, new mxRectangle(),
+					mxConstants.ALIGN_LEFT, mxConstants.ALIGN_BOTTOM);
 
-				// Styles the label
-				state.secondLabel.size = 12;
-				state.secondLabel.dialect = state.shape.dialect;
-				state.secondLabel.dialect = mxConstants.DIALECT_STRICTHTML;
-				graph.cellRenderer.initializeLabel(state, state.secondLabel);
-			}
+			// Styles the label
+			state.secondLabel.size = 12;
+			state.secondLabel.dialect = mxConstants.DIALECT_STRICTHTML;
+			graph.cellRenderer.initializeLabel(state, state.secondLabel);
 		}
 		
 		if (state.secondLabel != null)
 		{
-			var scale = graph.getView().getScale();
-			var bounds = new mxRectangle(state.x + state.width - 4 * scale, state.y + 4 * scale, 0, 0);
-			state.secondLabel.state = state;
-			state.secondLabel.scale = scale;
-			state.secondLabel.bounds = bounds;
-			state.secondLabel.redraw();
+			if (!numbered)
+			{
+				state.secondLabel.destroy();
+				state.secondLabel = null;
+			}
+			else
+			{
+				var scale = graph.getView().getScale();
+				var bounds = new mxRectangle(state.x + state.width - 4 * scale, state.y + 4 * scale, 0, 0);
+				state.secondLabel.value = value;
+				state.secondLabel.state = state;
+				state.secondLabel.scale = scale;
+				state.secondLabel.bounds = bounds;
+				state.secondLabel.redraw();
+				console.log('redraw', state, this.numberCounter, value);
+			}	
 		}
-		
-		return result;
 	};
 
 	// Destroys the shape number
@@ -60,13 +87,6 @@ Draw.loadPlugin(function(ui) {
 		return [state.shape, state.text, state.secondLabel, state.control];
 	};
 	
-	var validate = graph.view.validate;
-	graph.view.validate = function()
-	{
-		counter = 0;
-		validate.apply(this, arguments);
-	};
-	
 	// Extends View menu
 	mxResources.parse('number=Number');
 
diff --git a/src/main/webapp/templates/business/archimate.xml b/src/main/webapp/templates/business/archimate.xml
index 5ea18b90a5df4ab255ac3fc309ac820f2dce9153..0efaf37c6a8b8956ce25ab57ef8132cc81e41f9f 100644
--- a/src/main/webapp/templates/business/archimate.xml
+++ b/src/main/webapp/templates/business/archimate.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="44bbcf24-548e-d532-59d3-359de5b44cbb">7Vtbk6MoFP41eZwuBa+Pfcvsw85UV2WqdueRKFG3jbhIbvvrFwwkXkjGysTEarvz0HJExO873+GAOIHPy+1XivL4GwlxOgFGuJ3AlwkApgUt/k9YdnuL5ft7Q0STUFY6GmbJf1gaDWldJSEuahUZISlL8roxIFmGA1azIUrJpl5tQdL6XXMU4ZZhFqBUWR/so/2vJGSxtJuOfzzxB06iWN7cA87+xBwF7xElq0zeMSMZ3p9ZItWMfMoiRiHZVEzwdQKfKSFsf7TcPuNUAKswU9exneroBD7FbJnygskPy9PTExebXS7mz0Vxxqq3O9WegxG2Fmi+MNFi7kDzC5QIrFG6Undo3nITJwzPchSI8oY7T70PBaPkHT+TlFBuKaFTRsWCqLZI0lRVmgC4sMVP2EnGpDOZlvaRJAhrTBneVkzyEb9issSM7ngVeZb77v4S6cmOJUnYVLzCcKW7xBWPgIasiaQzRofGj6jyAwlsV5DtEYBsuV1BNp1eQLY+IshmHeSDf/4aZKsPkNsYf+fjSAvnCqY6yBsAPk6n08dpC/+JeFrxJ87EKBcNLLeRGLweEA3ihMdmDB9QnqdJgFhCMl6Rl37syqqZ6Bg3iJrSVPy74mRomBKE8DbSxzSJeCsvjOTX4c9S4V/y53p2iz/LM3T02T3QZ8IWVTjkg6gs4nRONq9Hw1M5JOJQUlme5scKraZ4ED2AKjjDWfgohnVenqckeN+bpono7ousUK3/D2ZsJw1oxQg3EcpiEpEMpX8SQYlGpdxLPEP8NLSGqIgPvT/JZkFWNMAnEJMxhD9bhNmJOpIpgeRZn6A45W66ricxV+UXaEKgkzIBRbLmhxErgdib5rRp4fer1JvtCoaXmgZmZME2Qkjay+4aDBgOuKqexD+l+V0x2/QTnC23Hpw9qAnOlkbcvYx/aqT41HZXbcMO2nYGo214TW2fubTIUaYPAbyJ6skLIsO444VrDipe+PeJFyTH2e3DBWeN7v4Wd3sAtir//K3wYXcIH2ptZADxQ7MQMVa+8TZh8pxjy/LPsmwYriy/YZpw0DGVPe7PR7xru0h5KYcf7SoVcpJkrKi0/CYMlWTGBrXgpNZMju62b/HofIeuXeaP7TWRGabrJLjvbLKQfegnYVQLkQpjWzMA2JoBwO5lALDHFBAu06/TJcaDQQjYhw3ncnsWsOmMyX8qA8qZ8cTlCq+NJ0CNL9cZTzr5ozkIf/Sa/gj69kf30x+b/mg53v398eo58EX+6IK6P9p+3/7ojcofjzm1bdZ9zgA397lh5NSOeeMQ2H6Z++FzatcYUk4NPnPqX+rX66BfcPUc5mJKvZamvpFwlbYlpRQQkGVOshKSJyRfKAa8KMLeGQE1JOf7C/7H7VxOYcIvb7yW7kFK0K5L6fBisiolT/Ou2etFSqOaXlwmJZVandfS1eenly85GKMRk+24QxLTqOZGF4pJbVo8KyY4HDEpn/z4YnL9w+bOYchpVFO7C+UEusjJGo6cwGjk5PuDSvTacWy6yoJyQ9/vTVsFsL5/6bT11MbCBe/cpL6x8KDvXtJy12kEP6jbOKCb47p9bCIEbaFwZFM0JxQNlrSg7OGk437Qa+R/njUs1tr7hx4rWAHjdS0edojc4bWMsbdSnNdYU7ozc+1N12+UBLgoBslWzvt2S7JMwxxYfPRbfP3AQZxxeKNdizL+lKyZAGq+QqhSJ02tlKO5i32ZhGGZfmp9oQcmQCOvcFUbFR6AboMb6COvgO3FhlrEGxERtnlXItoJ3tOqSDJdBPtQLHiNYUStr96HhR6//ahtxh7gZvGTbJ7fH95pBjucNxWqv+e+gLtphhAwUb2X7+KshrRAe8TXDfh+HwM+dNsDfsI0CwcyuHWNaBWuKhACS5Vlw+a5WNeKilcAX60CqNUDXbLla8C/4ItEXjx+Wr1/Q378eB2+/g8=</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-23T11:04:12.782Z" 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="qL1218Uwcjii2tA3ZU89" version="@DRAWIO-VERSION@" pages="1"><diagram id="6I0OCvxSQrVGMHxT2VVA" name="Page-1">7Vtbc5s4FP41fmyGm7g85ubdmW53MuPMbPuogGzYYkSFfNtfv5KRbECKS2Mw1En8EHQQIH3f+Y6OhJjY98vtHwTm8RccoXRiGdF2Yj9MLMvyTZf945ZdaTHtwC8tC5JEwnY0zJL/kDAawrpKIlTUKlKMU5rkdWOIswyFtGaDhOBNvdocp/Wn5nCBFMMshKlq/SeJaFxafWAc7X+iZBHLJ5uGOLOEsrIwFDGM8KZish8n9j3BmJZHy+09Sjl6EpfyuukrZw8NIyijbS6IPkcz+PXR8WeLp5c4hMuZ9fmTLRq3hulK9Fi0lu4kBJs4oWiWw5CXN4zniX0X02XKSiY7LCjB39E9TjFhlgxn6GCUiPFq8yRNZaWJZc8B/3E7zqig3XRYWbQHEYq2r/bUPODHPA/hJaJkx6rICwKnvEQ4neuJXm6ODJqGB0pjXKHPluxB4TaLw82PyLIDAe6vAG2+A6CB0RZo0+0NaOsagfbrQNt2a6Cd3oC2FaD/ZvFfAbsCrA73Boq30+n0dsrxjmHOqy23Cz603EASxgkLqsi+gXmeJiGkCc5YRVZ63u2rZvzxzMBrClPxY8VA1pDC6WD3SG/TZMHu8kBx3g1VdmDUqPJNoFDl+IaOKdAXU45CCorYKCeKKH3Bm8ej4Y7gVRahSJC2P82OJWJNrUByANbg1bPolo+7rPyS4vB7aZomvMkPokK1/r+I0p0wwBXFzIQJjfECZzD9C3NaNKJknuIb/KehNoJFfGh92XPe3dN8MnTwioToFIyCH9bjBaInKjqG3kMISpnTrust6Z5toAmAbko5MsmaHS7oHpfS9EKaFvbQSr3ZrqBoqbnBDM/phmtLe9kFogBFIZPTHf8nxb4rZpt+ArDj1AOw72oCsKNRdX/jnPsh6i5E7bUVNRhU1F6Xoj5xaZHDTK99dovqyTeEhPcQKFx/dIHCHyZQ4Bxll48TjCay+8qfdmMBWf7WfdyQFP48bgSDxo3gg3zZmW1CxTkXiPK3fdkwPFF+QiRhwCMiWjyIw3hnOsz+UkYE3FUq5DjJaFG58xM3VBIcOU1urJkcna+849EVD017u3c66urTDJF1El5iFlmIJ/WTL0rhSTh9zTAANMMA6GsYcEwF0yuOBF0Kt+20D9hDCDcw6p7mGZcQrrqmdsXOVBlWTowqnhvURxVLjjJ9jiqtnfOVeNWvc/oN53TBJZzT/nDOpnM6rj9i5zw7R36Tc7pBwzmtSzjnQGuxAznnMecGZt0BDWtMDjhIzg38IaKjujx8JTm3640u5x5ojfb3z7nbrsoC50zhnsevuir7BUerVJWS1ESIlznO9njcQfHqMWRFHv2aggqCOftjdiajKGGVGm+ke5CQbdUlBEyNhHzNa2a/Nwm9q9XLLiUUtJXQoC82ZDOvRkJAvqoZjYTk8PYhoV+UEJAbDn8qIXdICclmXo2EPNe8AWMT0bta8epSRHZbEZ07BzuPX3U32+8tosAdWyoHHAXi6SoL99v4zpt6cnCD4PTU87VNg3PWhEl90+BBu72k2I7bCG62bouAbp7q9bVBEKhrAgzdFL5gAgemJ9y3Y9JyV2cX+RtwxsePq/BzW8HLMh7XvHfDsYTWIg5eSkVeY61nBBypawFPBIeoKAbkJWctuCQtgT/C4OYrxDyjMM4Ywoudwg3rO21mZ5qvAaocCZOSAzS3mC+TKNrnhlrSe/howGqkAJ6cKVS4sHR70azeUgB1tl8LZO+IDOAMTYar7r65WxVJpgtZV8UEaIwd8jXMcEz0uDentnF6hBu7J91NNV0xRx/5WwPZzFNfqPWQIoQUk34UZZkNQQF1zNcN+UFfQ76rTuafE6qZy4uw1jaWVVipwGg5sixubJ6Kcko87IAACe5hC5gm5Qo0BLzh20BWPH6yXL6TPn75bT/+Dw==</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/business/ishikawa_1.xml b/src/main/webapp/templates/business/ishikawa_1.xml
index 867641dcc94396b89437bf87d58dd0734cc19bfe..f7df3c8d8d0b638199477e22eaf924cce60a2a6f 100644
--- a/src/main/webapp/templates/business/ishikawa_1.xml
+++ b/src/main/webapp/templates/business/ishikawa_1.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="4fc8d65c-f3f6-feb3-4d1c-02f59d9f9886">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-23T11:40:48.977Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="kIJVMBbqneDC9Sj_RrTI" type="device" pages="1"><diagram name="Page-1" id="4fc8d65c-f3f6-feb3-4d1c-02f59d9f9886">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/business/pert_1.xml b/src/main/webapp/templates/business/pert_1.xml
index 020c57dba21ef033482943de938c5f7623af3075..31e3513e671338e372d1bda0836b6dcce6635828 100644
--- a/src/main/webapp/templates/business/pert_1.xml
+++ b/src/main/webapp/templates/business/pert_1.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="9c096ad6-e400-ecc8-3e38-643d2caac077">7Z1bb6s4EMc/TR57hA0m8Hja3XZfKh2pK+2zA06CDglZQm/76deAnXBLZKoShmTShyZjwJcBfn9fGGb2w+bjKeW79XMSinhGrfBjZv8xo5Q4tiP/5ZbP0uL4fmlYpVGoNjoaXqL/hDJayvoahWJf2zBLkjiLdnVjkGy3IshqNp6myXt9s2US13Pd8ZVoGV4CHmvrD3a0/xOF2VrZiesfE/4S0WqtMveoWyYsePB7lSavW5XjjNrL4lMmb7g+lqrqfs3D5L1isv+c2Q9pkmTlt83Hg4jz1tUNp/fLPnVpZ/b9OtvE8geRX4vkxxM7E5OdZeVSsc2q2Z06nh0sA8EXfsAXS8EW/l2+cSMHEcq2VT+3yVb+uw9e0zcRqjwr2e8znmbqdJDngn0vtuHP3J/ydxDz/T4KSuNjFOt95K/qHvssTX6LhyRO0iJ7+/HRkp9DivZmvusy2R5yo5211+2VvKaBqo5tCWpzj1sLnwXMsu70CcrTlchONIs6a/KmqBxYtemTSDYiSz/lBqmIeRa91U9Ors7m1WG7o0fkF+UUUwe56KCOZtF3HgAesufQPGRZEDxERvPQieK+8fhV30WpG8uC32d8IZ0kKZCkoShbz/33Nb+X35PjV7nB+wEqh3TZwpTVNjqeAdqodvspE/X2VrntWsGoI6kszF2QxDHf7UW5zeFXJUN3pf6XdVkkkt9NY9qyhOXR9ju+rZWV1urC42hVTw/kKSLS0/nnp1ZnI+QJd/vipCtqS3cf5W6NA/0dZbkzyqNJJ5cHrGcizXkF2sZ2PbtrPkK9yFfqNGJhrZB/XqEbnpNtnixLSafkkLLY9KvF7nRKbuy6W+T28o6o7Q2wZeIja/LrlDxYSmBV7EuW/0l78ibSZVwAblkw7b6Q3wUcC2hphd3FK+0A1exnACZzkaU9Sx6d6iqC696PrUTxe6UnwZTgWFc6Ea41hJy4fsHX0rgmcsIFI/goyglocgK6liD+6Gy5UtJPEfPI+Msz3rHrkPeYNybk2c1B3jaAPAXDeNYeeb22QZ2vOIh9u4fUrr+SqLiB6svV9uuX69xqXIZlMdVuDUcfyvHFixP1Heq7nvqOwRMVqO/AuAL13cX1neu5Y+o7B5p8GFzfOQbywQaj7xxkPDJ+FCqDnQ1CAQHXFSggLi4g2NwZU0DYNycgmIGAcMAICIYCAgVEPxTgHBAiHhEPCPHjLvSgtzdG4BognsBhvIuMR8b3Y4EDDyzIeDCuQMYPznhCaY3xxLNGZLzjQWP84MsI5ibdeDiLOefIeGT8KFieDrZQQYBxxdQUhFt8pqQg5i6ohQTtx8evfZDAMxkk8MAICA8FBAqIfiiYw+MKIh6MK6aG+OkNEniw5gFub6rfN0A8nCECHwmPhO9HAhseVpDwYFyBhB+a8K5TJ/y4swAUXISowQmv43Od78VTMIynPrrozOgGAA85tyeTzS4iQA/VgHuqffDZTiMXzcF4SBcX+zLYlzGtFD2bJ/ZlsC+DfZkh+zKMtkYrf1iVDxmxZ2Pf3vomHdf2vChjYJDP0EXQRRnGJ0ZR1jfgjAtPCqAqA+OKqamy6S0TsxvLxDwy6ggzOMgPPzhGTXQYIMpTpDw0yhe7wQb9t9ULbNyZE4W9AinRVbMJqInTxZ6OoJjeME9zURr1R31w7fYeTidGAXDh6AkMUwtOT0AXE3kfBVpX9TpQP0XOI+Qv/3i61YwyNyrl9br3W6K8SZxaQJTHQLVI+Z4wwKkBhDxCHlCcuXG78ja4pc3DLwAwiSWr38wOgPIM3DsfYbiIwHkPuy4vCjEUYsYrZ3G4BZXY9Six6S3SaC6dJZY1phIjGFAWGdKXIfgoOTLkehhyBb35kSFCwT1kOfyYvUlMWUBx4wkGlUXO98QBvkAWMY+YBxQ4fuRBe9Jq9qunvFHgV0CUx8ivSPmeNPDgoQUpD8YVSPmLU37c0K8MXGC44ed9TWK/6iNBoDxGf0XK911mj5hHzF8P5qc37+u5dcp7njci5R1w73AZnPJ6bd1UKK/Li5RHyhvPzJOzmSLlkfJI+UtSfuSJeQfckP3wmDeKhQjnTS6Hcwwxj5g3xTw9myliHjGPmB8S84TMGSjO397zdPp97edf6g4n1p6DC+2R8+OQ2f5KjVBEoIhAETGkiPA9SG91Z7c3I+CYrOEH9CorXMKPCqLvtL8DjywIeTCuQMgPP1Lgg6I8uBi6g1OeUQPKUzCU18VFyiPljSk/h4cWpDwYVyDlL075+agvd2ddC8QbfoijAvVt6lY8c2xVo4bM2ysKePxTJWyiMIxFl4cPT2m0tEKnnKgLiIYG+Qb3NQZiCLFYy3uu13YeGcJ5bnvd369ULEWaivzmIX2Sid5XlRJ21QtKmbQXY7HMzvnwfR1l4mXHC531nvJdv6vuOy6yOW26qeMi0+9kr/qJ9veT/Jkm+V30kPYk67x+TkKRb/E/</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-23T11:49:10.242Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="QlQPr_GjzZWGyO07mDmB" type="device" pages="1"><diagram name="Page-1" id="9c096ad6-e400-ecc8-3e38-643d2caac077">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/business/pert_2.xml b/src/main/webapp/templates/business/pert_2.xml
index 2f204a38b83f373d90fdbc0092a61e3c894b7e98..dae7d374e89f9b9a65d402efa341e99e82f783da 100644
--- a/src/main/webapp/templates/business/pert_2.xml
+++ b/src/main/webapp/templates/business/pert_2.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="ff44883e-f642-bcb2-894b-16b3d25a3f0b">7VtJc9owGP01HJOxFi8cA1naQ2c6k0PPji3AU2MxRgTSX1/ZloxliUKDg8VCDkGftVh633v6tDBA4/nmJQ8Xsx80JukAOvFmgB4HEAKMMP9XWD4qCx4OK8M0T2KRaWt4Tf4QYXSEdZXEZKlkZJSmLFmoxohmGYmYYgvznK7VbBOaqq0uwinRDK9RmErrvbu1/0piNhN24A23D76RZDoTjQfQqx68hdHvaU5XmWhxANGk/FSP56GsS3R1OQtjum6Y0NMAjXNKWfVtvhmTtBhdOXCyHPuQbztAoxmbpzwB+Nfy8fOOwuCQwrxzOclYs7ld9U2ctygaDpGDiTdxw7uhVj+J+ciKZEYz/m8UrfJ3EosWG40vWZgz4QzcE9CIZPFDgSZPR2m4XCZRZXxOUlmGp5olliynv8mYpjQvm0dO+amfSCyLbk9oVrcGjX2Xo0VXeUTMHZbeGeZTwsxZYJWlGIhGtWI8XwidE5Z/8Aw5SUOWvKuOGQpPntb5tmjwLwKQw8ABQVXne5iuRCusHAvullQDjpENU/HJyTL5E76VGYohXdAkY+X7uaOB+8gtYZpMswItPoSEIzB6JzlLOK8exIN5EsdF+VEavpF0VHNFIiY8pAENdIzQ7HC8oj2yGRg0Qry3wjJl+EUp5x66WLBfqNedSB4MkKj8ZzE+25rvArVW6Ko10MlkyX2oDXD9ip/D3OuakfvI1wfFkDUUk36oUgxYRLHthPQZnkl/Op5od86942PU4kQnTHN9tVZ0CqJpwAN9puZV8BCmAGc9Sxh5XYSl0695FNXygwKxkpElsWSMAExTnFd+NP5hFV/kmJxnwsncdAy3+PsXUTXcd+ILfEdBwZXp9TaeCoRp1oyknC+gpQGKM1NBuF8FPVtUUMaoLRVEl6OCsoMdhBugDjeOVL22lLZ49DWqpy8oLpBYrjXEwmZiXQirds0xn2GV50NjEHBsEO8CpVp8ApJBDXTDJsApQwvQc2iBbQot/LNXQLRfAbE1CugbFRBfTmghO9jFAgsgKVBSBb1uVBC0V1itKr5EB5EGPbpuHfRaOhi4Peqge/Y6iPfrYGCNDupkuLAlltuhDmLQ3mgCneggaG/pnkIG9TWAe90yCACyKB6EZ6+D7n4d9K3RQSkTrQ33CxFBufTrZrcdtqK2bvadNBE8xbmWDrt33SIYQFUD6/HoQwPx2Wugt18D7VkT6xtEtp3rHymDMuTpQgYRDlqC1U0sCIc9xIKehjy+bhn0bdoaRGcvg/5+GbRnSayT4cK2BuWavwsZhJ6ryiDsRAVbV6dOoYH6jrB/3RoIgEWxoH7nMOgXnd7vxeChPVMU1OF5OEAq1bGWlzYbYyZMhwumCfd/gH3s9dH/P3JsbTH5BtCwAbT2LYxOQNMvGY5uoBlAQ64Kmgf7A036TwO08Q0006EWtgg0/Vbn4w0007LLUUHDuEfQ9O2QpxtoBtCGFs1pSD/PfL6BZgLNJnnUjyJfbqCZQGuF/Aj0CJp+dPLtBpppoVavuGyY1PTNre831Eyo1dz6eoHkye0PdaudrO3vodHTXw==</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-23T11:58:06.040Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="RGf9iIGQ6qF5PSfkExtF" type="device" pages="1"><diagram name="Page-1" id="ff44883e-f642-bcb2-894b-16b3d25a3f0b">7VvLctowFP0alslYL9ssA3m0i850JouuHVuAp8ZijAikX1/ZSGBZotDgYPEgi6BrPSyde46uHvTQcLp6KaLZ5AdLaNaDXrLqoccehMAnvvhXWj7WlrBMlYZxkSYy09bwmv6h0uhJ6yJN6FzLyBnLeDrTjTHLcxpzzRYVBVvq2UYs01udRWNqGF7jKFPWe7K1/0oTPpF24Pe3D77RdDzhqoeyy29R/HtcsEUuW+xBNKo+68fTSNUluzqfRAlb1kzoqYeGBWN8/W26GtKsHF01cKoc/1Bv20ODCZ9mIgHE1+rx847C4JDConMFzXm9uV31jby3OO73kYepPyLRXd+onyZiZGUyZ7n4N4gXxTtNZIu1xuc8Krh0BuEJaEDz5KFEU6TjLJrP03htfE4zVUak6iXmvGC/6ZBlrKiaR1712TxRWJbdHrF80xq09l2NFlsUMbV3WHlnVIwpt2eRrl8ORK1aOZ4vlE0pLz5EhoJmEU/fdceMpCePN/m2aIgvEpDDwAHhus73KFvIVng1FsItmQEcpyuu41PQefoneqsylEM6Y2nOq/cjgx55FJYoS8d5iZYYQioQGLzTgqeCVw/ywTRNkrL8IIveaDbYcEUhJj2kBg30rNDscLyyPbrqWTRCvrfGMm34ZSnvHhIs2S/V604mDwZIVv6zHJ9tzXehXiskeg1sNJoLH2oCvHnFz2Hut83IfeTrgmLIGYopP9QpBhyi2HZC+gzPlD8dT7Q7794LMGpwohWmkUCvFZ2CaAbwwJypRRUihCnBWU5STl9nUeX0SxFFNfygRKxiZEUsFSMA2xTnVx+Df1jHF3k25xkJMtcdg5R//yKqgftOfEHgaSgQlV5u46lQmib1SMr7AlpaoDgzFYT7VdB3RQVVjNpQQXQ5Kqg62EK4ATbhxpGq15TSBo++RvXMBcUFEos4QyxsJ9aFsGrXHPMZVvkBtAYBxwbxBGjV4hOQDBqgWzYBThlagI5DC+xSaBGcvQKi/QqInVHAwKqA+HJCC9XBNhZYACmBUirot6OCoLnCalTxJTqIDOjRdeug39DBkHSog+TsdRDv18HQGR00yXBhSyzSog5i0NxoAq3oIGhu6Z5CBs01ALluGQQAORQPwrPXQbJfBwNndFDJRGPD/UJEUC392tlth42orZ19J0MET3GuZcLuX7cIhlDXwM14dKGB+Ow10N+vge6sic0NItfO9Y+UQRXytCGDCIcNwWonFoT9DmJB30AeX7cMBi5tDaKzl8Fgvwy6syQ2yXBhW4Nqzd+GDEKf6DIIW1HBxtWpU2iguSMcXLcGAuBQLGjeOQy7RafzezG4784UBU14Hg6QSn2s1aXN2phJ0+GCacP9H2Afe330/48cG1tMgQU0bAGteQujFdDMS4aDG2gW0BDRQfNhd6Ap/6mBNryBZjvUwg6BZt7qfLyBZlt2eTpoGHcImrkd8nQDzQJa36E5DZnnmc830GyguSSP5lHkyw00G2iNkB+BDkEzj06+3UCzLdQ2Ky4XJjVzc+v7DTUbahtufb1AiuT2h7rrnazt76HR018=</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/business/timeline_4.xml b/src/main/webapp/templates/business/timeline_4.xml
index 78d6d6a5d485e464e57f227cb6319e9a82eec1c9..eb86c6749888dd5d2ea52cbebfc1bead050016cf 100644
--- a/src/main/webapp/templates/business/timeline_4.xml
+++ b/src/main/webapp/templates/business/timeline_4.xml
@@ -1 +1 @@
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36" version="8.6.4" editor="www.draw.io" type="device"><diagram name="Page-1" id="54c02804-9d69-ba3f-8aca-1021b27b8050">7ZpNc6M4EIZ/DcdxIYnPo+Mkk8Ns1VRla+YsgwyqEYgFETvz61cNwgbL2eUQT5wqONhSS+4W/T58NNghm+LwtaZV/pdMmXCwmx4ccu9gjF0S6i+wvPaWOCa9Iat52pvQyfDMfzNjdI215SlrJhOVlELxampMZFmyRE1stK7lfjptJ8U0akUzZhmeEyps60+eqtxYkeueBp4Yz3ITOvLNwJYmv7JatqWJ52Cy67Z+uKCDLzO/yWkq9yMTeXDIppZS9a3isGECcjukrf/d4xujx3XXrFRzfhAmhAYojFCY+MmO+F9Q0Lt4oaJlwz50K1WvQ3ZyVQjdQg65O67f1Z2UNjlLTYcKnpW6neiVsFobXlituE7x2gwUPE3BI/iowHNxyICmVS8g7r/BLUDkrgJoAmFeF4vXWnguwVMpa0jrXSlVkpvwjarlr6N4Oq93Oy7ERgpZdztBNt0GdlkqQyDyTH80z+22o8dhpJQlrN3Ot5EA9pYdRiaT/69MFkzVr3qKGQ3NoWEOFT/2+/5+BF5gcMlHzA02aljPjp5PeuuGkXym/J6lPnZRaBEwaPmNbpn4LhtulNhKpWRxQWwlK22dgjMRnZc72bV4sgKoWLppt5Bh3sh1mXWBkW/LiNyQxA9vyQNaPtKCC0juExMvDFY1FR27/yG6RbHN1TsgEE8R8LwLCOALCCB0DQbCSwxEN8zAo04g+uwMWBCguRB414AgugRBfMMQrB88RPAnh8A7g4AEcyGIrwFBfAGC453LLUKAiT533n9yCIIzCHDoreLxNg8JHF0DieGKM2UC3TATCK/Xd/4nZyI6YwJFUyaiYB4UJLwKFMiCwsGBUCCoHgoyaD0xmvIyGwZ0kNPYYKwGwzdZswJCVk0L32mXeU0YV7B4vWQHb/oCsNF1AFMtjOoAFW940oVxmeBmVqOrEvABRt42hYSuYkXV+eRlwlOetiW4buFD0K2OD7PVEJt11VtWUggj+D8tXY32pDrtyNlxoPVVZ1xXtFsgufdPvb+B/vsvHWn7nCv2rO3gYq+J1zapUdmJrtLKdd3Eyv8tcQzf+ohJOTuhO8J+TtFj0f0OLA/3kgblwLevcTj8Yzc6CC/sLuzOvksf7sqHa7P7sfCSBd4F3tnVxVDA3ciZ137YtMC7wPvWHfCNwesv8C7wzi7p0dlD/o9l1364Z4m4vON5z3c8XuhN9f/QlzzIfq636H9V/aOb0h/bz/AW/d/Wfyd49cPk4j1KyHBaQpLhHP8xLFx6dLew8IdYCM5e/qMrnhd09/S/km5s9Ocd8vAv</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-23T12:06:29.792Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="7i6CpLmV_glfcAF0QHqh" type="device" pages="1"><diagram name="Page-1" id="54c02804-9d69-ba3f-8aca-1021b27b8050">7ZpNc6M4EIZ/DcdxIYkvHx0nmRxmq6YqWzNnGWRQjUAsiNiZX79qkGywnFof4olTCwdbaoluoec1qIU9si73XxtaF3/JjAkP+9neI/cexijwE/0FltfBEi2XgyFveGY6HQ3P/DczRt9YO56xdtJRSSkUr6fGVFYVS9XERptG7qbdtlJMo9Y0Z47hOaXCtf7kmSqMFfn+seGJ8bwwoZPQNGxo+itvZFeZeB4m2/4YmktqfZn+bUEzuRuZyINH1o2UaiiV+zUTMLd22obzHt9oPYy7YZW65IQ4JTRCcYLiNEy3JPyCosHFCxUds9fQj1S92tkpVCl0CXnk7jB+X1cy2hYsMxUqeF7pcqpHwhpteGGN4nqKV6ah5FkGHsFHDZ7LfQ5qWgwA8fANbkFE/iKCIigs6GPxRoPnEjxVsoFpvaukSgsTvlWN/HWAp+f1bsuFWEshm/4iyLo/wC4rZRSIAlMf9fP74+DRtlSygrG7820QwNWy/chk5v8rkyVTzavuYlpjMpxhfirhMhzqu5HwIiOXYqQ5a6NG6/nB85G3LhjkF+IPHPrYR7GjAMvyG90w8V223JDYSKVkeQa2krW2ToUzgc6rrexLPF2AqFi27jYww7yVqyrvA6PQxYj8mCwf3sIDLB9pyQVM7hMTLwxGNYWOz6rV1c87oF5OUQfBGdT4DGqErsE6Psc6uWHWj3oC0Wdh7cBGl8IOrgE7OQd7ecOwVw8BIviTwA5OYJPoUtjLa8BenoF9WHHcImxM9L3w/pPAjk5g4zhYLMfHZehxcg309kkxZY9umD3Cq9Vd+EnYJyfsUTJln0SXwSfxVeAjB76HI6EAnG6Kcig9MZrxKrcNOsixzRpra/gmG1ZCyLrt4Dvr6WglcQWD10P28HpIxFq9Hmeqg1YdoOYtT/swPhPc9Gp1dgA+wMi7tpRQVayse5+8SnnGs64C1x18CLrR8aG3srFZn0XlFYUwgv/T0cXoSurjhZzoXfNVJ/qtaT9Ach8ea3+Dyu+/9IraFVyxZ20HFzutbG2TWipb0Wc8hc5fWPWfqYbRsf5lZJwdM4uRvMfJh6Pid9CsXdPZXDx0n004/mMLEYRnjc4adVbLdnVsn6n+x4qUzCKdReqs8m3CdCN3UnezZhbp/16kyY2JNJxFOovUSaHRyab3x2rU3RxzYM3vPN7znUcQB1P+H/rSA7n7ZTP/q/JPboo/dvfMZv5v898KXv8wc/EeqV88Tf2Ivcd/jBbObaHNWvhDWohOXoajK94XdPX4P4u+bfRnFvLwLw==</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/charts/bar_chart_1.xml b/src/main/webapp/templates/charts/bar_chart_1.xml
index 710352505b854ba76abcb5261f17e56ad87a91da..0b39feb3e9cde7ea6536cbc82e93eb47773e71b0 100644
--- a/src/main/webapp/templates/charts/bar_chart_1.xml
+++ b/src/main/webapp/templates/charts/bar_chart_1.xml
@@ -1 +1 @@
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36" version="8.6.4" editor="www.draw.io" type="device"><diagram id="07fea595-8f29-1299-0266-81d95cde20df" name="Page-1">7Zvfd5owFMf/Gh/rIb8QHmvbbS87p+e05+w5kxRzhsbFWHF//QIEAZNWukVrx3xRbkISvp9ccm/AEbpZ5J8lXc2/ioRlIxgk+QjdjiC8QgHQX4VlV1lAGFaGVPLEmBrDA//FjDEw1g1P2LpTUQmRKb7qGmdiuWQz1bFRKcW2W+1JZN1eVzRlluFhRjPb+o0nam6sIIybgi+Mp3PTdQQnVcF3OvuRSrFZmv5GED2Vn6p4Qeu2zIWu5zQR25YJ3Y3QjRRCVb8W+Q3LCm1r2arzPr1Quh+3ZEvV54QJRNUpzzTbsHrM5cjUrlZjO+eKPazorDjeauIjNH3iWXYjMiHLKgjA6+sp0fZU0oTrzuuypViylvmWS82Li6UuYnStxzhdKyl+sIP6c7XI9BEoehJNa7oniDAmevRT+1LN1T8zqVjeMplL/8zEgim501VMKcTxZEyqs+qZikM8JkHzMXJsW9OghjdvzQCAjJGaqZfue2vk1z8MgZdo4CHTCG0aBOPadIwACcZBmxvywYMMmUfk8I64Nw8QePGIcMAEUOAgAPsTmHghMDlOgCV6+TSHRxWq/HOvbL3AIkvrdt0X1Sy6flXLtkrBa/NUsowq/twNAVzSmT7uBddjaS0myL59Ne5SN7QWGzlj5tz2ytyjOQCs5hSVKVNWcyXVvQg9QUdeXO1TEE2CD+dqrlAAofcMBWIvNO4iEmL4L9CAQZdG35ugFxp1I8P0DUdghiI8xnHziXrSIPE4bp/mI0pDwAucD+oqLjikd4zgxzvgkL3DESaXK0dPjwi9EPCTxn9QF3AQAP1dAEReCPRI3f+Hyd7DZIRIn+Y8hsnI3hO4p5LqJpgsx3VIXc/i0kG05/Fl+ii0391eEZu92QYFUX1smgiOzo0Dr/PgUgiFtqwRdLhU5Jgr0ItD2Zl/DvqLSzOeFrenmRZBg0HT4uL5jGbXpmDBk6RoxdL6CJZzYnDFwSQOz7u42/l/bt/a/nEOrq3Jc3Ow0/McDY2DY6U/Owc/ifkH3ZGE1nIbO7eEEensxgOAXTi6O/b1TuNf4cFDztRLPO20/AAV6Sbt8QVhG3IO7/Iq4Mmr9nX+Do+d4T/uVkxb3hCS9ch12gsM8SWutWbEIO5sJQJL6JNFtdhO1I2Qb4ipLkdI8n5C2vm2EfINQdHlCBm/n5Cv57O7P1bzT/JZD+pCZMeIQUTOmbpiO3XdXWrq6kNxHJBDxY+/RoNcm0yw+3hg4iW0sBPY3aUmsCei4d6PPh8BO3XdXWrqeiIC5dPLdyTgSlrDTBkhOiDCnxtRF1ytS8mui2U1WOWlPnW5/pUW37ec6rB6oasornQbpl09pqrpqtbJcFdMUXCAH/Rb3r3gtna0I+fThwg4cGPiAS8ZdNLreEsKTd7w3qAPAINOXx0AYNj/+RvwQsDOUHN8oWvMyZ7aOECcdntUHzYvq1dP05p/BKC73w==</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-23T12:15:33.722Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="rD-SNB8Zp5jOc5-5_R26" type="device" pages="1"><diagram id="07fea595-8f29-1299-0266-81d95cde20df" name="Page-1">7Vrfk5o6FP5rfFyH/EJ4XNdt+9KZzmxn+pxKFjNF441xxfvX3wBBwGRdbKPrlsuLchKS8H05nPMdGKGHZf5Z0vXiq0hYNoJBko/QbAThHUDhRP8Wpr0xIUwqSyp5UtlAY3ji/zJjDIx1yxO26XRUQmSKr7vGuVit2Fx1bFRKset2exZZd9Y1TZlleJrTzLb+4IlaGCsI46bhC+PpwkwdQXPHP+n8VyrFdmXmG0H0XB5V85LWY5kb3SxoInYtE3ocoQcphKr+LfMHlhXo1rBV1316pfWwbslWqs8FE4iqS15otmX1msuVqX2Nxm7BFXta03lxvtOcj9D0mWfZg8iELLsgAO/vp0TbU0kTriev21ZixVrmGZeaLy5WuonRjV7jdKOk+MWO+i/UMtNnoJhJNKPpmSDCmOjVT+1bNXf/wqRiectkbv0zE0um5F53Ma0Qx5Ox2ZlmqwIc4jEJmsPAsWttg5q8RWsHAGSM1Gy99DBbA7/+Yxh4jQ08ZDZCmw2CcW16iwESjIM2b8gHH2TIfEQO74h78wECLx4RDpgBFDgYgP0ZmHhhYPI2AyzR4dOcvolQ5Z8HZOsAiyys231fRbOY+iSWbZSCU/tUsowq/tJNAVzQmTm+Ca7X0gomyH58Ne5SD7QRWzln5tp2ZO4xHADWcIrKlClruJLVAwg9iY68uNqnIJoEH87VXKkAQu+ZCsRe2HiMSIjh38AGDLps9H0IemGjHmSYvuFIzFCExzhujqgnGyQex+3LfGRpCHgh54O6iosc0jtH8OMdcMje4UiTy8jR0yNCLwz4kfEf1AUcDID+LgAiLwz0kO7/p8ne02SESJ/hPKbJyK4JfKOS6iGYLNd1zLrexaWDaM/jq/S70H43uyM296YMCqL63AxR8LouVl7eC5mOyOw1f/PgTAiFNqARdDhT5Ngl0Isr2Zo/B/1hpRlPiwfTXIOgKUHT4ub5nGb3pmHJk6QYxUL5BCHXI8CV+5I4vG5AtzV/bj/O/loGXIXIazNgi/EcDYcBR0S/OgN+BPgHrTxCK6zGztIvIp2qOwDYRUe3Ml9XFP+IHjxkRV7S05bfR1SRrjiPb4i2IWt1l1cBT1516PNn9NhK/vt+zbTljASsBaYdMtpBhfiC1YoWMYg7xUJgQXyx7BXbUtxAeEYGdQsQkveD0NbSBsIzUqBbgDB+PwhPq9T9b+F4rkr1kAgiOxEMInJNNYptNbq/NTXqQ3UG5Bjotz+FQa5CEeyW+Cde0gZbkO5vTZBehgR3Kfl6wNs6dH9rOvQywJfvG98ReJf8DDNl8OjgH/6zFXXD3aZE6r4IlsE6L2Nb3a7/pcXvjFOdIC91F8WVHsOMq9dUDV31uhjLFZUoOGIdnA7aPli2Ss+R8zVBBBwsY+KBVTJo1er4nAlNzvjAzwcBg9afDgJg2P9FGfDCgC0xc3xjEeWCr1ccFFy2sqlPm+/JqxdezWf76PE/</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/charts/org_chart_2.xml b/src/main/webapp/templates/charts/org_chart_2.xml
index 60f6a0a293a9e5e10739405a2ec2d67669309234..a24b7a6fc473bf3849d0c05b5869849832515742 100644
--- a/src/main/webapp/templates/charts/org_chart_2.xml
+++ b/src/main/webapp/templates/charts/org_chart_2.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="19d8dcba-68ad-dc05-1034-9cf7b2a963f6">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-23T12:27:52.735Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="vB2nfkgyDyV7RAJbgOu2" type="device" pages="1"><diagram name="Page-1" id="19d8dcba-68ad-dc05-1034-9cf7b2a963f6">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_1.xml b/src/main/webapp/templates/cloud/aws_1.xml
index 9ed31f1d550db39bbefc977d98db919a6c5b1a77..3d07171b65a00c5a0a4a7171665625cbfe5843b5 100644
--- a/src/main/webapp/templates/cloud/aws_1.xml
+++ b/src/main/webapp/templates/cloud/aws_1.xml
@@ -1 +1 @@
-<mxfile modified="2019-07-08T12:00:46.031Z" 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="vHBDzW4MS3CWetA1GzMU" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
+<mxfile modified="2019-10-23T12:34:12.256Z" 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="-5CrgsEtBlgHBJIQozg0" version="@DRAWIO-VERSION@" type="device" pages="1"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_10.xml b/src/main/webapp/templates/cloud/aws_10.xml
index 85b72fd79b132dd623c04249941a0f2d80c80864..f29c93088933f142d71573511a523c3322f30758 100644
--- a/src/main/webapp/templates/cloud/aws_10.xml
+++ b/src/main/webapp/templates/cloud/aws_10.xml
@@ -1 +1 @@
-<mxfile modified="2019-07-08T11:39:41.999Z" 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="qHZMdm4_3q_E2cXBbMwO" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
+<mxfile modified="2019-10-24T06:19:39.317Z" 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="AFOfPl1ifMsoTbabQ8XM" version="@DRAWIO-VERSION@" type="device" pages="1"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_2.xml b/src/main/webapp/templates/cloud/aws_2.xml
index 8a06eed713eb39088827859bfcde5fb720ef245c..ae382d5df46c258d081c41ffc5dd6a0d07f293e1 100644
--- a/src/main/webapp/templates/cloud/aws_2.xml
+++ b/src/main/webapp/templates/cloud/aws_2.xml
@@ -1 +1 @@
-<mxfile modified="2019-07-08T11:57:52.886Z" 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="xGBckMkXVc-S_OdK4jOV" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</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">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_3d.xml b/src/main/webapp/templates/cloud/aws_3d.xml
index 169a7a75d788bd9ddb9a772f991d7a6c39a37851..17408d0dbdad35d0c2281ff9ae84c8c460c3c285 100644
--- a/src/main/webapp/templates/cloud/aws_3d.xml
+++ b/src/main/webapp/templates/cloud/aws_3d.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="aaaa8250-4180-3840-79b5-4cada1eebb92">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-23T12:58:40.841Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="tdza1AnNjSkERiJf7Ow3" type="device" pages="1"><diagram name="Page-1" id="aaaa8250-4180-3840-79b5-4cada1eebb92">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_5.xml b/src/main/webapp/templates/cloud/aws_5.xml
index cf75b743bece4fd26c41bf8b5792aa609369080c..0bc84d2b5d3dad332f69d81a5d523656d1d5a88f 100644
--- a/src/main/webapp/templates/cloud/aws_5.xml
+++ b/src/main/webapp/templates/cloud/aws_5.xml
@@ -1 +1 @@
-<mxfile modified="2019-07-09T07:01:59.451Z" 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="lmfREGlSjDJdgJt8D1ag" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
+<mxfile modified="2019-10-24T06:06:19.897Z" 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="n3ijK-tErN8l8F8CXAi_" version="@DRAWIO-VERSION@" type="device" pages="1"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_8.xml b/src/main/webapp/templates/cloud/aws_8.xml
index 20cdd71e2208b56805b1ea3b7624085359979e8d..c13a47634047bf83d270b86e15b75c9dba0ed474 100644
--- a/src/main/webapp/templates/cloud/aws_8.xml
+++ b/src/main/webapp/templates/cloud/aws_8.xml
@@ -1 +1 @@
-<mxfile modified="2019-07-09T07:49:07.515Z" 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="j26A23XCqk9Bsq3s0xcd" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
+<mxfile modified="2019-10-24T06:15:19.610Z" 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="vatUE6aEC255aqhwAt7j" version="@DRAWIO-VERSION@" type="device" pages="1"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/ibm_vpc_architecture.xml b/src/main/webapp/templates/cloud/ibm_vpc_architecture.xml
index 8f2718f4aa2956301839b05f235104e9ab34fa17..1468c9cf32fd3d61f2826fc2e777c6c9b6f2fb13 100644
--- a/src/main/webapp/templates/cloud/ibm_vpc_architecture.xml
+++ b/src/main/webapp/templates/cloud/ibm_vpc_architecture.xml
@@ -1 +1 @@
-<mxfile modified="2019-06-14T10:17:01.477Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36" etag="dY-RyaEvI0M7g6cvaE8M" version="@DRAWIO-VERSION@" type="device"><diagram id="gla63Dk0FSsQ5Y3dld1r" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
+<mxfile modified="2019-10-24T07:17:35.162Z" 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="aoSCGtVp_V8RFKhYFhDj" version="@DRAWIO-VERSION@" type="device" pages="1"><diagram id="gla63Dk0FSsQ5Y3dld1r" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/engineering/cabinet.xml b/src/main/webapp/templates/engineering/cabinet.xml
index 90abb9e519ad7ab1bda5a986322f42ec81c71f7e..8cff0a87e24a6dc2a1954a99989833d52d8065f3 100644
--- a/src/main/webapp/templates/engineering/cabinet.xml
+++ b/src/main/webapp/templates/engineering/cabinet.xml
@@ -1 +1 @@
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36" version="8.6.4" editor="www.draw.io" type="device"><diagram name="Page-1" id="099fd60b-425b-db50-ffb0-6b813814b670">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-24T09:14:52.442Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="2fq8UEn71Oy__E7DrUfl" type="device" pages="1"><diagram name="Page-1" id="099fd60b-425b-db50-ffb0-6b813814b670">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/engineering/electrical_1.xml b/src/main/webapp/templates/engineering/electrical_1.xml
index 1fd69c8e7fc005d7ada0d34e2f201dffc76a3348..ff5c682f0b8c5862513ee40d33132ab89d635e4d 100644
--- a/src/main/webapp/templates/engineering/electrical_1.xml
+++ b/src/main/webapp/templates/engineering/electrical_1.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="7e0a89b8-554c-2b80-1dc8-d5c74ca68de4">7Ztdc9soFIZ/jS+b0Zdl+TJ2nfainclMZrrdqw6WsMQWCQ3Csb2/fsECfaDYq+7KleqSi4w4HASC57wcmGTmrtPjBwry5DOJIJ45VnScue9njrNYBvy3MJxKg20HVmmJKYqkrTa8oL+hNCq3PYpg0XJkhGCG8rYxJFkGQ9ayAUrJoe22I7jdaw5i2DG8hAB3rX+giCXqMyyrrvgIUZzIroO5rNiC8HtMyT6T/c0cd3f+KatToN4l/YsEROTQMLmbmbumhLDyKT2uIRZzq6atbPd0obYaN4UZ69Ug3PqeC4LldhEFwTJ6ZztyYOykJgNGfG5kkVCWkJhkAG9q6+r8wVC80uKlhKWYP9r8ER4R+9p4/lO4PMxl6RlSlEIGqWzIx0xPX5uFhr8o6g0w2EK8qqZ8TTARVRnJxKgKBih7FDRotieEsXzDuSz5K7uJtBbc0vDnpYb3X5CxkyyDPSPcVE/QJ0Jy+ekFo+Q7VMPjTFjnn6pGMSZ8dyRjTyBFWMTOF0gjkAFplj3xJSrLb72wC4BkoiB7GsJLqy5jDNAYsgs+EgxBQ+PFEqsPkPCFoSfuQCEGDL22IwnIgIwrvxpK/iC57Mto+c5XgPeyF49T7oOUz/cq2xb5eR58zL9kteUPsXiYrTezx6Uy8z7rGh34V0gZ4mLwSeD1TArEEMl41ZYwRlKxaipqxYxHoEgq9gFGsXAN+fQLTFc7zk5jnaQYtIJEdfco2zLBzRtk8F5zMcL0GAvVfYCYSx8VLR8oLFDBCC2qp29OKy5F+5CkKOwVObdiUHwpPF6lR9a6jsRN7SBKMA8NOVZqnDSUWPkNC9x8PFE0GjeQxg2uX7LpM0F8GBW5vq2Ru9CILEVWtqqh5EsCTg23XDgUl/uZB1o/rrbT/5v/wtJiohxBHSHVnPy3oHE6Ku0Ylb4vlfb8Sam0a1LX30/W3R6pqzeZ1NXtiOLCiOJ9iaKeulaXGuOIomdS119e4wbXr2mlrp1LqrFTV8+krveu0nrqOrJKWx1GTOp697I+75G62pNJXW3bMGoYvXKomQCj887GPTcb931t3LZ+5+SPuXEvb6GJltHESWui30MT5zc5sv3oScvW7iJc6/pJS/e/+UnLNyet302wneWYgh1MIIm1jWD/XMFe9BBsfzJJrO2Pl1QY5IZF7l6ubH33xxIJ3f/micSim0iI/cP68jNTAg3Ct2qGTRZSVIR8YkAGyb54SElGRPHbFjA+vtN4acMOo/yj7HSAFMLztBRi0TOF8G9yWdtl7bGr2JhPQSGm8pAgBl9ycJaKA1/BNgXtFWqx13+52ry1jIok5wqu/3O1O2GBtdCqKi7FXom+HhBVRA6AUIVCdW0QdBDyugB5t+An6PCzNvxMnB/Ps9v8OOPxs+zw897w84vx49ij8VMNvuane3Fi+JkWP749mf1L3RE2+NkYfriNlvPewQfDHbsCT4qi6HyG1/mpKgbgp/rTXKU/6oA2ND+8WP/7Wnmyq/9H0N38Aw==</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-24T09:24:42.967Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="qlKEmFd5DMJ6HR-at6kC" type="device" pages="1"><diagram name="Page-1" id="7e0a89b8-554c-2b80-1dc8-d5c74ca68de4">7Ztbc9soFMc/jR83o7vlx8R12ofuTGYy0+0+dbCEJVokNAjH9n76BQvdIHKVrLWSW/khA4fDRfDjf0CxF/Y6OX6kIIv/JCHEC8sIjwv7w8KyfMPlf4XhVBjs1aowRBSFhcmsDc/oHyiNhrTuUQjzliMjBDOUtY0BSVMYsJYNUEoObbcdwe1eMxBBzfAcAKxb/0Ihi6XVNIy64BNEUSy79l1ZsAXBj4iSfSr7W1j27vwpihNQtiX98xiE5NAw2ZuFvaaEsCKVHNcQi6ktp62o99hRWo2bwpT1qhBsPccG/mq7DH1/Ff5hWnJg7FROBgz53MgsoSwmEUkB3tTWh/MDQ9GkwXMxSzBPmjwJj4h9baT/Fi53rsw9QYoSyCCVFfmY6elrM9PwF1m1AgZbiB+qKV8TTERRSlIxqpwByu4FDYrtEWEsWzjnJX9FN6FSg1sa/jzX8P4OGTvJPNgzwk31BH0mJJOPnjNKfsByeJwJ4/ypSkrGhO+OpOwRJAiLrfMF0hCkQJplT3yJivxrDeoASCZysqcB7Fp1uccAjSDr8JFgCBoaDUusPkLCF4aeuAOFGDD00t5JQG7IqPKroeQJyWVfRos2XwDey14cTrkHEj7fD+k2z87z4GH+JA9bnohEYrHeLO5XpZn3WZeowL9AyhAXg88CryeSI4ZIyou2hDGSiFUrd62Y8RDkccU+wCgSrgGffoFpczOUzd5LHyb4eIUA3nomRpIcIyGudxBziaOi5h2FOcoZoXmV+ma19p+oH5AEBb12SC/WuoASjwOPF1GQpbYlW5HRwCzV79DQ1lJa44asln7XpccdT+FuS7DeLEvv0p6r64qs+kQQH0YFoWcqEC4VuArxk7VqvvjsglPDLRMOeXc/rq/0YysR+Gf+S0PBuxhBDXs1J+/j39LU05rVc8Lq6XiTUk97Ph/etNzaPY56zmSOerYmVstZrCYsVupRr7rRjyNWznzUm5L2XF1XpnXU0162jH3Uc+aj3k2pp3rUG1k9DW3B56PeLcmt2+OoZ07mqGeaM26/PG72ZHBztdjozrFxsNh44R8T/cOjqb4J8cYMj6sh5MqY5er/kiuvh1y5g1xY3nrPMJVLtW1cvmeo/oPfM7z5nnFT9wxVSK3VmELqT+DcZ85C+m4hXfYQUm8y5z7TGy9uz/R00vOrvBP07LfFatV/8Fi91GO1UHXjy6BRd8eRfO3rSteNxgnKA/74IIVkn98lJCUi+20LGB/Fafg7zg6j7JNs/Aph2nGUML3sGaa9QV4H6uTc61KK+RTkYsoOMWLwOQPnjX/gK9Ve7fZKtEjqvyzt79W1jCUx1gX4eq6qBjNWNkRV0LVjCpRVwKt9dAVUqiWvrsa+hoqjg+IMwYmvcbKeOZkIJ45jtjmxxuNkpXHy4UY4mQgPXbwOwIlljsZJNfiaE/0NwTQ5+W960vUV71vQGc+cTDwqX4Y1+Nn8FvyUnNBifjVMMNyxC5AkKAzPl1+Vk6rgCpxUX2Ysdaa8Dl2bE56tf1VT3KPqXy7Zm38B</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/engineering/electrical_2.xml b/src/main/webapp/templates/engineering/electrical_2.xml
index dd25b627de21f07b10536d80cd66bc898134b890..39739a921ca6ce87ada925ce9df5d4d4fb08ff1b 100644
--- a/src/main/webapp/templates/engineering/electrical_2.xml
+++ b/src/main/webapp/templates/engineering/electrical_2.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="16e2658f-23c8-b752-8be9-c03fbebb8bbe">7VvbcuMoEP0aP8alu+3HSSaZSdVsVWpnL7NPKSxhmR0kVIATe75+wUIyAtuRE8WXjfwS0TQI0acP3S1l4N9kyy8UFPPfSALxwHOS5cD/PPA8N/AD8UdKVqUkmExKQUpRopQ2gu/oF1RCR0kXKIGsocgJwRwVTWFM8hzGvCEDlJLnptqM4OZdC5BCS/A9BtiW/o0SPldS13E2HV8hSufq1uNQdUxB/DOlZJGr+w08f7b+ld0ZqOZS+mwOEvKsifzbgX9DCeHlVba8gVjubbVt5bi7Hb31uinMeZsBUeKFTjIJxkkE3NFofDVS6+Krai9gIrZGNQnlc5KSHODbjfR6/bxQzuiI1pxnWFy64hIuEf+hXf8jVYahaj1AijLIIVUDxZLpqlaXDU1fNs0BGEwhvq53/IZgIrtykstVMQ4o/yTBYMjuEMZqhnVbwa+8TWKMEBJNX7Q07X8h5yvVBgtOhGizQd8IKdSzME7JT1gtT0DCWf/qngpiUndGcn4HMoSl5/wFaQJyoMTqTq6n2tsmtO2vIMHIgsZwh9ErFwM0hXyHjlfqSDRoEytUfYFEGIauhAKFGHD01HQkoPwxrfXUULHbYKUpFATlnGkzP0iBUFDUIh61nFERi2vi29APnL364qJcQdXSHmUjWvtMS/8Z9/7T+882Hf8i/ScKjuw/6oGfAF7A6gg1HOoJUo7EWf1NwveBMMQRyUXXlHBOMomK6lCVFk0Am9e+BTBKpWoszCvd4HomsLkbWNt6NPesFvJJzcolYrdgUqynkGvPlqkMl4YQi5iFypHDDLFY7AjIIVmwYUZyIpuPU8DF+lYNbpAzxSRDcSvvfaMfUMKB2taryV7HkJsAl3shXfWOm1jyJqr9rIVYFV/PtegqcnZ7gYbEA4HmWsDqgKmdw5i6bvRMfRym9lowddQ1U78eozb5HR+jfTRxhhgNzgaj3kkPbJVcd30sU8gQ44Sy+urR/X8dxn5oHMZOy8PYe4/DeNLz3MfjOb8Fz4Vnw3N+z3OXyHPh5Jx4zvXPgOj6pOPIRBe0IDq3a6J7VXnILJcGo/3lIbOcZOh3Xx4Keha+RBY2o01/dFIWDnoW/ngsHF4MC5tF97Nj4bBn4UtkYTMWPjELOxZojvaqtCfVjki181p5O0b0fQORJaurUQYo30h2UU92RyS7jqiuOgIPftf4PlRnY+h3+/WjeDTeNLS0zS8wXSvIjVGBg9AOrwfhZwkfQR5M7bCGJgxnfDdQChCjPP1jzTIio2raKdpvzoOo44AEIfKa9tpSpgmOZq6RbS7b6Xtz7Y8kjmeusW2usDeXHvgZZZ36i4qTmGtim8sui35kc0Ut3s0dzVzVpLq57PpJb64zIcN6+Rtz3VvW0pKVGAPGZJSn2+6l9KjTpCR6jXVeTDiUba6coRt4E8OdLPOEW8xTyd6YulhfXDqG2cv8ykpdrIl881Nmc6IdOdBmokqRzGYMdp4nVXmRhrw/e+SdEHmuWe4xv6NsizxzIm98Zsiz383f2wFgD73jQS9wX0BMW+gF5jfD5wY9+4XkPbNT+10Fogwlybquuae6U+u8XODBEOSPGSgKESINi/mKyXkei4V8HqO206hIHVDo2fG9/Bshb1fBMCq+6o6pbVqt1EHs5pn42hK7jbf4iQnDbmI3+73KPWtfbezBdGIwmWTlhqcEk11zvGd2nt2D6ULA5L8fmERz8x/H5am4+bdu//Y/</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-24T09:34:55.700Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="KoOYVutzoKtVJZxCAUZk" type="device" pages="1"><diagram name="Page-1" id="16e2658f-23c8-b752-8be9-c03fbebb8bbe">7VvbcqM4EP0aP8bF3fbjJJPMpGq2KrWz16eUDDLWjkCUJCf2fP1KRmCQTII9xMYJfkihptUI9emjVouM3Jtk/YWCbPkbiSAeOVa0HrmfR44zm9jirxRscoE3dXJBTFGUi+yd4Dv6CZXQUtIViiCrKXJCMEdZXRiSNIUhr8kApeS5rrYguP7UDMTQEHwPATalf6OIL5XUtqzdja8QxUv16KmvbsxB+COmZJWq540cd7H95bcTUNhS+mwJIvJcEbm3I/eGEsLzq2R9A7Gc2mLa8n53DXfLcVOY8jYdgsjxrWjmTaMA2JPJ9GqixsU3xVzASEyNahLKlyQmKcC3O+n19n2htGiJ1pInWFza4hKuEf+ncv2vVBn7qvUAKUogh1R1FEOmm1JdNir6sql3wGAO8XU54zcEE3krJakcFeOA8k8SDJrsDmGsLGzbCn75YyKth5BU9EWrov0f5Hyj2mDFiRDtJugbIZl6F8Yp+VECSUoWJOV3IEFYxsdfkEYgBUqs7NmO6UrlXUZWNIQN/iuiBdAY8gYdZVo6tmJYAeQLJGKO6UYoUIgBR0/1mAAqtOJST3UVEwc2FYWMoJSziuUHKRAKiiQcV8WA4ghbh6qm71kv6ouLfARFq/IqO9EW/i1DYTqEwrsPBfciQyHwThwK6oWfAF7BYmHTYuMJUo7ECvpNIvGBMMQRScWtOeGcJNL1xVIn0RMBtizDBGAUS9VQuFci+nohYFZAWKyg1vZXj6ficZ9UXy4htgde4qmZHGGyjmWmMoZY5AtU9hwniIXivUEKyYqNE5IS2XycAy5GsakFs7QUkgSFrcKtFaSleQ7UJF3NpNVGmMuXhesXAVrcndaR4cxU+7mSxhREuqxkMIHVjOkKrg6EjW3ApAMKtQ6j0LIxUOjBFOq0oNCgawo9Hm4mK50ebsOK/bZw83oDN+e0i2K3ix+FDDFOKCuvHu3LXPJcX1vyrJZLnvMWS95soKCLpiC3BQX5vaEgd6CgPlCQP+sTBdluDzhoyLqP5yCvBQfZXXPQUYULvSbnTV4uXOiFDk2/+8KFNxBkHwhSz9HcyVkJ0hsI8qIJ0r8YgtQrtb0jSH8gyD4QpJ5BnpkgLQMEJzv6GvjuBCXWdmTluhq4csJVvTR8/SIPBaflIe2ESX2j8T74Sbb3nZ5VeKsj1ipWp4NPm96GtUwM/W4eQIlX43VHS9/8BPOtgpwYtaYLbf965H+W8BE8wNQMV9CE4YI3AyUDIUrjP7aEIfYhdT8FTe7sINcOnLpT9hQjvJP5ZGL6xIzsD+eTfcv76XwyNX3ifzyf+FrtojwCP4tPZqZPzDLeu/dJ0OIs52Q+KYxWfWJWDj6cT87KXeXwdz65N1xSSfhDDBiT6VXVQa9tMY5I7IPGiX41aVfTfGWNbc+ZafA3ZtrfM9OF7BfTf+MrNEvzYL5HMdJ/w5Crf6mpG2rYR+wMFYpksWCw871GsbeogOjPAUTdgMjWCxn6h2VtQaQbcqY9A5F59npvZlEDio5CkWe/4vy2KPL07yH7hiLzgOqemZvWptJHgqJoW3x7oW5R6rxeusAQpI8JyDKRaIyz5YZJO4/ZSr6PVrWo1VoOKGE0fNnbCtf76jgYZV+rsVSZnFKpgyTI0XG0Jwma7okHHW7dJEFm0f6eta+XDaA5EWh08rH9c4LGrI7dM3OLOYCmZ6Bx3w40orn7T8N8Ndv9N6d7+z8=</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/flowcharts/cross_functional_flowchart_1.xml b/src/main/webapp/templates/flowcharts/cross_functional_flowchart_1.xml
index 6b3ccf45438c2acf67143450d05ed52e4dae515e..ad8e4104ab4e47d4c40f9c8673aff659d52101c5 100644
--- a/src/main/webapp/templates/flowcharts/cross_functional_flowchart_1.xml
+++ b/src/main/webapp/templates/flowcharts/cross_functional_flowchart_1.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="74e2e168-ea6b-b213-b513-2b3c1d86103e">7V1Lc6M4EP41Pk4VIJ7HdSaZOWSqpipbu2cFZMOOjFwgj+P99SuMBBjZGBIbRFa+xGo1D/f3datbEmQBHjZv3zK4jX+QCOGFZURvC/B1YVmmDWz2p5AcSokdBKVgnSURV6oFL8m/iAsNLt0lEcpPFCkhmCbbU2FI0hSF9EQGs4zsT9VWBJ9edQvXSBK8hBDL0r+TiMZcahpG3fEdJeuYX9p3eMcrDH+tM7JL+fUWFlgdP2X3Bopzcf08hhHZN0TgcQEeMkJo+W3z9oBwYVthtvK4pwu91X1nKKV9DvA85IaBtzIDN4K+D77wM/yGeMdt8ZMZnt8sPQgD5ftkg2HKWsuYbjATmuxrGCc4eoYHsisunlNmDNFaslZGOdLspsDyaCVU3EfRqgxRNDB8RXhZmfKBYJKxrpQcL5jTjPxCQsgsbBw/VY9ArLijVYJxQ5NjweQkpU9wk+CCoH+hLIIp5GJ+jz5vnrsOxMk6ZbKQWRmxzqVsdmFHlFH01hBxGL4hskE0OzAV3utxRgiP4c19Tb/A5bK4wTxPMA9yyq+rM9ewsy8c+Z4ssCQWPBdgW4bZkwkS2rKFLlLvusm4jSzZRuZZG4F72MiXbCTZpqZ4YZN9nFD0soVh0btngbNlsk/mARdJ1dslrFOXcB0ZbuMM3O490A402uOibTpTwi0SEY333fAGp3g77ploPhrelivBiyKWEvImyWhM1iSF+LGWLk8J0AD7Gr5sbPyjyFJbsqekuOEyHWqMnw5rozQSR4QY5nkS/hknadnBDzPLVuOgfxClB96GO0qYqP4hz4Rsq8F6AOE+RKz+WUBOdlmIuodeZqM1ungefqICxk46ZghDmvw+zfxvSy5Pk2s+5BLE6WRXcGtyHQ9lKMBDQ2FLkpTmjTP/LASNIdM+P2Y+XdD3OtXZl/IGapZXv+SdxPc18edD/KBPVLWUiaoif9DkmgO5TDBFVH0/ueSJDk0udcnlzotcci2pyaUsucS8xBzywdaEWdCa/O9WB163utepfvvsEQDtJvNxk14DvOmoE4QDza75sKtXELaAMuyydXEyJ3b1iV2WPRW7TMN7hZ6LbASAswqCL7o4mRG5TK/PwOgrQy5dnMyIXGJZsptcN49c76pOXLdVnpjd9UZb33G69W2jU//DBYrkKbo++XSeMtkkkUQuW5Prs5HL+F+EYX/kKOxoR5mPo5h96vjbR+F3OUqLyO619CP4oL55Z0fRW5zm5Ci20umKPJ1anlPeMS6Xk1PsGBe9rbFs2h3kYqeR3mTad5MpGAo4aMdkGe/R9pjal1xEriMndBFgKeUilnaRYS5iDwZcqX338jgi4x2Tzesuv471537C7OPIt3aPnnvmzB8NeDk6ake/q6NP/MCFXn5XpBoRE42d1Uiv+S11lt+dS6mWPKs6Yapl+0qlWrLRdATuBNwZCji4PuCOmGq5OtUaDflWqgXOuPp4qZanHX1cR69WpqdxdP3s+sh4T5xa93l2XQf2uwR2d8oaGug9A4rUVGJNurOm4krdNRVP0hSoqYBeaJ8Tu/o8EicyQRXYpVen58SuPs+KizxEAXbJpS6fD5Jj2oTzQW57Qn7a+SD9grOByaM7FHClykRL70YYG29/Urwtjfe4eE88LdBnaV3jfUO8z00GjIc30G8dUySjFqVNZ0bd5512YohWIKMG+tVeM2JX9RL1TnZZyrBLXqHi9Zo8SzBhveYbKtVrlt5BNXB894YCPuL4zpr1fwEon/6o/9UCePwP</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-24T10:08:53.281Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="1yIb3ORXY1M71hTchIN4" type="device" pages="1"><diagram name="Page-1" id="74e2e168-ea6b-b213-b513-2b3c1d86103e">7Vzbcps6FP0aP3YGJK6PxzlJ+5DOdCadnmcFZMMpRh6Q67hfX2Ekg5GN8SVIqZWHDNoSAu+12HvpAhP4sHj7XKBl8pXEOJsAK36bwH8nAHi+xf5Xhk1tgBDWhnmRxrXJbgwv6W/Mjfy8+SqNcbnXkBKS0XS5b4xInuOI7tlQUZD1frMZyfavukRzLBleIpTJ1v/SmCbcaltWU/EFp/OEXzpwecUrin7OC7LK+fUmAM62f3X1Aom+ePsyQTFZt0zwcQIfCkJofbR4e8BZ5Vrhtvq8pyO1u/sucE6HnOD72ItCf2aHXoyCAH7iPfxC2Yr74htzPL9ZuhEOKtfpIkM5K00TusiY0WaHUZJm8TPakFV18ZIyZ4jSlJUKypFmNwWnWy/h6j6q0s4RVSFDrzib7lz5QDJSsKqcbC9Y0oL83OFSXXdGcvqEFmlW0e0HLmKUI27mVwxYEWXpPGfHEfMNZv1NZWeJX48Lit9aJu68z5gsMC02rAmvFUTnPHd4cd2QJvS4LWnxxRd8QZyo813PDVjsgOM1EDsgYfdcQQQseyB+Ekayh44S5rTLuI+A7CP7oI/ge/gokHwk+aYhZuWTdZJS/LJEUVW7ZtGu4zIteHuUCoOJDPaJ7LkySNYBkLz3wCg0GA3ByHZVgiRStUGpgxLcR8n1DsS70VACngQKjpnU4UVS0ITMSY6yx8Y63YetBdEpVFj2+KdSXx3bU1rdcJ3mWxnGZWWcx+KMKENlmUbfkzSvK/hpdl1qnfQ/pnTDy2hFCTM1P+SZkOUunV1Ck8EprySrIsL9eYb93Dk+2g/vqEKkl1kFzhBNf+2L09vyxDc8UcITwYFeooS35sn2VOZQtGk1WJI0p2Wr52+VoZV+nMP55+lIe7+3OTuob6Ah7O6XXMjhwHBYCYfDIbEOaBPrRII2PBk71kEVse5ynsjDZsOTUXjifSyeyAMfw5MxeCLGwx9BO3WmV8LOtGx/c+j3N/d7m99eaYnZfMN4HTOo7eoTGkNDFH1DI4DaEMUxmlwRUYZEFOCoIopt+a/I97CDIXRnYfjJaHJFmccfknkCbXhiNLmieAKG8OTm8eQiUe55HVVu98vsbnvX7W/vWL3tr9blEumNLBd3OQHQ2v5d/DjUxUP9jfqkKJvmkMjl3D25dI6o1l1E1GDkgOoazqtRm0OGr7ePjRdxvsNJ75QoCK9sb78z582OEUWcd7TWA/LcXt2nvNtUHnqp2G0qajsZRu3uU7Hb42/fNAfPhQl2g6KM0mh75pxjxJaHVwqJDYFWxAb3QWznbJi02rMrx2wZpYQsXlflaYR0fH/jerw6e9wOvdERjAaXHInMQ3XgoVK8xdqscd5eMIvJpl7BPGhiRJ81TveYrpBn1hTqCifQSlfITvsrQ6B7LkzwdJ4aUVd496YrzsaroyvggcdqPF3hm4dqyEO1W79T81DdyWuQ16KkWP0NeQ3ShL723I7KIRU0q5iaLJGLpbVehc8b9St8Lj40UPjQrBfefig4iChD3hgRskcHophFNkVEGfKuosjpGhBFHljxOQM50iicM/C6s6Zq5wzu5Bsv3rkwaTW8AXeyFHo1SoFSlIBB6QMMQoes6xmUDg49x0MJmm+s3F70CSHdK/qGfIxH5CMNRB80HzJRQ5Tdt0Z7iQK0IYo8j89HB/LwUuHoILB0Gh2AO9lU4Z8L04i5khWbT9zWe5abzwjDxz8=</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/flowcharts/cross_functional_flowchart_2.xml b/src/main/webapp/templates/flowcharts/cross_functional_flowchart_2.xml
index 7b047f314d8a343bf302bbee6c45d843728946a0..e72d8b934b616e7099159f8025f990da815d4b9d 100644
--- a/src/main/webapp/templates/flowcharts/cross_functional_flowchart_2.xml
+++ b/src/main/webapp/templates/flowcharts/cross_functional_flowchart_2.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="device"><diagram name="Page-1" id="c7488fd3-1785-93aa-aadb-54a6760d102a">7Vxdc+MmFP01flyPvmU9rrNJ+pB2MpNO233EErboIuFBeB3vry/YoI9gO2xix3iLXiIuSEL3Hs65gJxReFM931OwLH8nBcSjwCueR+GXURD4URjxP8Ky2VmiLNsZFhQVslFneEI/oDR60rpCBWwGDRkhmKHl0JiTuoY5G9gApWQ9bDYnePjUJVhAzfCUA6xb/0YFK6XV97yu4jeIFqV89CSWFTOQf1tQsqrl80ZBON8eu+oKqHvJ9k0JCrLumcLbUXhDCWG7s+r5BmLhW+W23XV3B2rbflNYM5MLglkEJ36QzbygiCbp/JO8w3eAV9IXj9zxsrNsoxzUrFGFQc1L05JVmBt9fpqXCBcPYENW4uEN485QpWlJKPpBagZUY15NmQw972W/xZO4kpuFdetMWMhS6y9RwGAG8bT1+A3BhPKqmmz71TBKvkFl5IHwtkdbowIr+jJHGPdaypBxO+/OHagQFjj+C9IC1ECaZc8nsrjvOQCjRc1tOQ8G5JVTPTrK3ZAy+NwzyWjdQ1JBRje8iaqdSOTIkZXK4rqDaaKalD2ERqohkENj0d66gwc/kQgxREugoeVBgCLwfEPEHAGBDLLus4OYfd2J0mmBodP8+BxO8yeac2DB6UcWCWUlWZAa4NvO+mIY9Dz42iDg/v0sGPGF7Q5h5eF+DGJehnWhrsgxaBqU/1mielchL/N3pd5F/0LGNrIMVoxwU/ciD4Qs24D/xKh81+gzAI6Eb0NWNIcH2sRSfgBdwEP3SXZtRBSPwo9CDBj6PhSZk2Ir1gakjjWMuYwKIKxLxODTEmzffc2VfIisX5t5D3KZMRUnQyZOdFIJ93BKeA5KSV4PexdN//XQu2BruhsMox0nY57UdkeqBT/dF/z0HCLsacF2emKtnqQGejKxRk9SRyxnJpZWEOwjlsk1JRPBdcMgDO3JJvbF+e2Cwp1EN/9I+7bwVRTGsRObs4tNZiA2as3NArXJnNqcmWYii9PY0KWx18MsijWOU4tvDbWo/h7jFk4XS3FaPS/EtsZ4tqzqsTT2sSWGG8p5/ATGHkmDGCJi5M4IY6Q6DL4+V6h7fJajngkoTJeQIv6uYvh/oSWpZqvmsTNNB7sLC8DgGmwEolYMI4HhFsqbakZEb3mYAcYQ368HY0Xjxv8J+8WxPUmWr++0uOz6bEt1vj2BD7W4yz2TPYRk0Z6Jb7rTdJ5NkyBx2YEd2YFK045mB4FJdhDakx0oRnEzD0MKViz25gX0KBv3Jx5ZcrmZh69Tsk7FWiyG0R4kjnNM1nnJCWJcwBw12+xwL2KOpGTHQXPFQAheJGFxOJyC+vHltDk6pM363NQmbQ4v+0FD4D5osESbIxNtjky0ObZHm/VB6bTZBAXv2INKx17/CC+nzYG+JvwVNqfkG7c/cUEuMvm6yjf9vEqi+ROPneclA0TLkjFbyZs/EsTfr2tC5vOG9/MloNs+vJHhDL7acvnnqchO32kVcOmOJLpc/qlu6jKpq2CvxIS9UnsyKYPPBN0eyC+e60WRvfTnu8/Nzh3+WEv1L5jbR1p0ndpdRO3Uz3WOqZ2R2AXWiF2gJ9V/EIe368GbWpU/CjjT5KqbGmahUjjJgO30y87JYaBr4okXQByQLQCyWuX8CSRPsigdINluIIf6b0JPsmo3jke9dTsH6A8AtMlvWCz6rDjUd/ddKnBVgDNaJjbNPXu5QKy2F97FoDxSYNNrsBR82uwhWLUCGcWDp6op+d2B9n58tD0/2fXgY+ncfa59TSPIZPaWfRBj82L3H052WOz+jUx4+x8=</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-24T10:48:29.000Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="Msgj2LDaTiyYVme_ffXp" type="device" pages="1"><diagram name="Page-1" id="c7488fd3-1785-93aa-aadb-54a6760d102a">7Vvbkto4EP0aHkP5bvMYJjOzD7OpqZrU7uZR2AIrkS1KFgHy9SuB5AviIggzqGbMC1Zblu0+p0+3GzPw74rVIwXz/G+SQTzwnGw18L8MPM91Y59/Cct6awkTaZhRlMlJjeEF/YbS6EjrAmWw6kxkhGCG5l1jSsoSpqxjA5SSZXfalODuWedgBjXDSwqwbv0XZSxX9+U4zY6/IJrl8tRJKHdMQPpzRsmilOcbeP5089nuLoBaS86vcpCRZcvk3w/8O0oI224VqzuIhW+V27bHPRzYW183hSUzOcCbBDBxvdHE8bIgiaef5Aq/AF5IXzxzx8uLZWvloGqJCgxKPhrnrMDc6PLNNEc4ewJrshAnrxh3hhqNc0LRb1IyoCbz3ZRJ6PlVtme8iCO5WVg3zoSZHNX+EgMMJhCPa4/fEUwo31WSzXVVjJKfNXzijFO++AMoEBas/AfSDJRAmuV1JHwIMJqVfDvlLoR8vbHuU+UkSBlctUzSx4+QFJDRNZ+i9iYSbxkPsRwuG3JFakre4lWgJgJJ6Fm9dAMq35C4GmLsaRg/CSg9xzXE+Qh0EhrdZweZdtqJ0mmeodPc8DWc5iaac2DGRUMOCWU5mZES4PvGukPelgdPUZf797PQsR3bA8LKw20MQj6GZaaOSDGoKpR+y1G53SEPc7ej1kE/IGNrOQYLRripuZEnQuY14JfE0mkOSCZWZEFTeGBOKPUf0Bk8tE60nSMAOcokCjFg6FdX5a9Kk1CLLZ02GPM8JjBd5ojBlznY3PuSp9IuSWyUvoNiYqyFUVcKIz2q/T1B7b9GTEenwWowcE8D9l4gcr0uRmE0DEatT6xBFu+DLH6N3OVoEPUy/BYyHBvIcGKNDMd9ZO+N7FpH7YvsxL7M6dkFnu/bkzr3oXO5DnMn0fV/0r4ZfBeDYdhr9DkaPTLQaNVisUCkR71I743zwOLyy+/Lr5uEtgrb47HtWhPb6nqPBTeP17nYLFYz0UYeTuZFOZTGNk1E5KCUQyHo8kwqxBARQTghjJHiMI+a5muzxmcZwEygOp5Divi9ikj+QnNSTBbVc2Mad7q5M8DgEqwFORYMI0HHmpXrYkLE1XKYAcYQPy47tNfEyWr5CUN7ygxX70f3VeFOP8W1By5fQ0t2lvcEv0WdZde0H/86rWUv6pPq1ZOqKlSOJlXPJKn69iRVJQ7vvGJWMnJxwzIYDdsF8yi6XcXs6pqoa6Hm2y5GnSppiskyzXmEDjOYompTCu3F+Uj9cRxqi4D1dmqR0O8+Crnh7ZJdcCjZ6c9INiU7/7a/o3r976jni6gBDwKTfBeY5LvQnnynh9i7zHfqNi9v48dDp/3xb5fvPL2r9x1W14z5vll8HTEwebHCNX2zQhLzE4fBcaIOOeXIWC7k4s8E8ftrppDptOLXucvN+houlBiDFzY+THl2tg7pv0gJ+JtPFNyuPFOLfuBCo9UI3eLxB3lNDPetdy01ikzUKLanNDF4d6jvb1tZPAWBvaLlfpAXV84GLdQq3huWuIGGyUfLLNcvWdW758eShFGO8KzJEZ5eW34lPXVuQh3Vhj3KHdPyonnYGfkqW0hdqh8o7Hzc8fT8cuWn856T1+Wk6oGdQcpkFMQdUtrNSV//29FVukPDsN0f6rl5HjdN3ve26F1CX/9ptM+1t+KOUWfRtE5rJdtQNZf/SNe408G6NWEuVK7aI3uqyRWEnbOq58eHA/Pd8Oh8vrG9grcV2f7FzRsFg8lDy+iNdJQPm/+Wb2nV/IHfv/8f</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/flowcharts/data_flow_1.xml b/src/main/webapp/templates/flowcharts/data_flow_1.xml
index 18d3104d9101118799a765b4ae6a5f0b16b8baa3..5bbf72106a145b7d8cee346bbb0c4ea2c985a434 100644
--- a/src/main/webapp/templates/flowcharts/data_flow_1.xml
+++ b/src/main/webapp/templates/flowcharts/data_flow_1.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="b520641d-4fe3-3701-9064-5fc419738815">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-24T11:05:37.757Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="RkXDUsivtnyUR02pthkO" type="device" pages="1"><diagram name="Page-1" id="b520641d-4fe3-3701-9064-5fc419738815">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/flowcharts/data_flow_2.xml b/src/main/webapp/templates/flowcharts/data_flow_2.xml
index a454984ca2039f0d77cb9cf9c0667f1ba91274bc..a952f9083b0786a0ff061080884f2196122e703e 100644
--- a/src/main/webapp/templates/flowcharts/data_flow_2.xml
+++ b/src/main/webapp/templates/flowcharts/data_flow_2.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="52a04d89-c75d-2922-d76d-85b35f80e030">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-24T11:16:08.184Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="7I472ZqS_2JjhOXtanXN" type="device" pages="1"><diagram name="Page-1" id="52a04d89-c75d-2922-d76d-85b35f80e030">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/flowcharts/epc.xml b/src/main/webapp/templates/flowcharts/epc.xml
index d9791be8658e4ee01533512100c62f475c941c6e..6677e84ac13c9102eabc86d0b3cd634d0a4b9b5f 100644
--- a/src/main/webapp/templates/flowcharts/epc.xml
+++ b/src/main/webapp/templates/flowcharts/epc.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="8ce9d11a-91a2-4d17-14d8-a56ed91bf033">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-24T12:13:23.601Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="a6oP2dGYuuk638rXQt9-" type="device" pages="1"><diagram name="Page-1" id="8ce9d11a-91a2-4d17-14d8-a56ed91bf033">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/flowcharts/flowchart_2.xml b/src/main/webapp/templates/flowcharts/flowchart_2.xml
index 0148971f07e4feb9c01a5d9b17b37eb2ec9812ca..b7b8ff8286fc320984110abbba1303b371e1f59e 100644
--- a/src/main/webapp/templates/flowcharts/flowchart_2.xml
+++ b/src/main/webapp/templates/flowcharts/flowchart_2.xml
@@ -1 +1 @@
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36" version="8.6.2" editor="www.draw.io" type="device"><diagram id="6a731a19-8d31-9384-78a2-239565b7b9f0" name="Page-1">7V1Jc6M4FP41vqYAsR4n6WUuU9VVfZieU0oB2dYEI5fASdy/fgRIGC2uARsc25BLY4FY3vf0lk9P6gV42nx8p3C7/oskKF04VvKxAF8WjmO7js/+KVv2dUvgunXDiuKEX3Ro+Il/I95o8dYdTlAuXVgQkhZ4KzfGJMtQXEhtkFLyLl+2JKn81C1cIa3hZwxTvfVvnBRr3mr70eHEnwiv1vzRoRPUJ15g/LqiZJfx5y0csKz+6tMbKO7FPzRfw4S8t5rA1wV4ooQU9dHm4wmlpWyF2Op+346cbd6boqzo0sGpO7zBdMc/PS8gLfjLFXshEPae2/Jw87EqEX9YpuQ9XrMrHwpENziDBaEL8LjEafpE0vKY9QLfqj/WnheUvKLWGav6a84IIbPvf2QPSDB7fXF1RjLUav6CKUMck6w6Rctuj0tyuLy6uR0BwNt/8o8oH7YuNik7tNkh/25EC/RxVHZ2gwjTdEQ2qKB7dgnv4PgcRK7k4ud7S2MEzuuWsgDeBrmSrpo7H4BiBxwrM25Aww1mMN3nqPwCSv4tB0U5CIFtVR9rJSTebdiHwUp03eFNYAEnB6xrPXgStDYwYOtFOrbhANi6GrYxRbBALUCZHUEUw7TVlG9RjJc4ngE+BWDPviDAng7wGsWvlaOiLUjJSx7vKC4wc4UzoP0AdbwLAuprgLahA9/6oMdGcV6JdGIIBraEH4h0/KJQh88Lzocv0PDpIgPbDAUAvq9BYZvkhRIlCM3JjsZICsxYMLZCIm7oLFOKUuYG3uS7nyOh8AolBHQJeZ8noUiTEHsFuv9VDhZmmsBj9fMfPnaqHz+YC2fPQZQ3fr5IPV2k/ueJVLjkllnVhcw+R8gGpS/k/euh4bFqYCfWhOLfTIgsXuKiN8HyENnHkEEfuPjFxVge/3Pozn5dH46+YWj0tsgglC2yEwoX23apliHBaRpN6PPn/SCYvUbzsMCTcynXVex6/Xm8VzuhVW/kew8gkmMBYDevLm5Xi0a73R+Uwn3rsm15QX78tT1XfpJrSek2O6jveND3Rs7dhoCtDYG9IRhkbrc4zXPLOqhEB0pzOx7hTXrAMUAoAAJZF0yhgGtQO6H2Z9kcnRAZwOZcpUVwO+My5HjfH+nSdXxrHY+M5FMGm06qEJows17xdjzfntOwXmmY714wDbN15iQj12wsYYpXJWox61+GD4NYT+eIJ72E9dSZjSXOymFzICW7DyDOWE5tELmhDKBnG8IuE4LBEENIpzIG8H8ifmYxtiWi5muPoV3dY9rd88upuMzgPsMlE/jd6ZepgB9q4BvmJV5gCjMm1+6Gf0tRgpjfQMkz8xoxyvOpuwAfGFxAZNCsaAgXEM0uQB7ykhkIZzOglBDoNB2hK5iVRR3lucYSvBP6uiS0ly3YwGwH02ecbXeTCwQd15GsQBCacinDnMgQuZSjM09DWIGj5KsdNQ23YQiE2s+GoFEZnTsThQvWd5gV7YqUBEM24DY9LMFU00GdU4mcjpzKENGAodJo0GigHQuI6ZXrMwBC4pIBcGYDoOiKzr+lct2SXprGBne2moskulYc2mphmmUKCmyDMQi0ObCTzIHO8I1mDliqcL0GwTEYhHlGRdWWcdnETmnkIeSUA84rDjdFuc1pdRi3qFt9591tpfQ69Iadd3d0XvP+590dhXWyWXJpKPkYa/LI0elEnL2hvJBqYhOcwy0LI95KONoF7vW1dYYwxxId0PaUSMIxlUCDvgakM9o6y8gyQoRmALsC2JSsfw6A4sYTTwwNM0XOTBGrujIOmdirKvNO4kBhN2flapRLpx3FmsQ29RAz2ChUlsV1djIbxF73mdDnMhypFo9Oy9kESsDN/EpHZxNaQ/AOYCgaspQCjs+yHzdTzi9shbSI5L5Zy76JZOCqQZQ/bCYJOqzmzAtY7NrpDEVb0msR9lxsWl3vGirFR6s2BUNRoQaTdDPhryFCATMNqmrKUDToyZpyL85rVi1VtXSi0jDHRjbblIE78yqd/IqyEtn2HdtAg461GBnoNKgWMPCi+jleODNeCC65rQfQGU+c57s2ri+46kGW5SsR+tpn24e5atZTc9TAuWDZrEgkWvCiLOkB4LyRUgNcZGKyx9pKyR2KnJxSdAYMvLeIReborFEtnZqcVet/VSswqNY8paKq1oiE6P2qloGuEH57Vq1GtXTKckDV6rr85wbn60zqJaL+Wb0a9Rq1hLT3ZA7Xx5tQMFO1wZ1zYn0ndCJlIyFb7Icw1ISOq5O5173JxOL8BA2EGnViReDBkF6PVRzoTrEgE4RqiZ4Y7JeQuM5DXreeX2IzFRsYmInRENAJwyvX+TEg8AJ1K+YLQiCcyc0MggEE7mslERe0Op5OxmFa7mdtkV1xbGtkaZE5Zq8oqsHLyvHO/OuWnaDPRXV6Wvyrq264Z6rt8gyIix0iz0J8KI6s04oy69iSshvNCMR4OW0X3CkkBOoWnUK5h8oHPJ2Im6CXBqJLM2luWJc6mtMYirAaZJkhszG3Yz9MZPtsP6T7KilAFAxsP3Q67O5DzKZ28lBiM1qIyX4e/julGp/D/1kFvv4H</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-24T12:31:38.837Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="kOfF4vMOQduAnIsSeWnC" type="device" pages="1"><diagram id="6a731a19-8d31-9384-78a2-239565b7b9f0" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/flowcharts/workflow_1.xml b/src/main/webapp/templates/flowcharts/workflow_1.xml
index 701e8656cb270fd37045e60e358ad2223610aeac..80998f2f08f0e5b64978f474372970955cc378ea 100644
--- a/src/main/webapp/templates/flowcharts/workflow_1.xml
+++ b/src/main/webapp/templates/flowcharts/workflow_1.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="device"><diagram name="Page-1" id="edf60f1a-56cd-e834-aa8a-f176f3a09ee4">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-25T06:22:15.007Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="heQ7BCeRklGKFy9VWw2p" type="device" pages="1"><diagram name="Page-1" id="edf60f1a-56cd-e834-aa8a-f176f3a09ee4">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/layout/bootstrap.xml b/src/main/webapp/templates/layout/bootstrap.xml
index 44846e3894f0be73a9fc9723f6843e8696acb2b4..f349746b0c66fe7274c8dc26cbc56f7e7ea3eef8 100644
--- a/src/main/webapp/templates/layout/bootstrap.xml
+++ b/src/main/webapp/templates/layout/bootstrap.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="c9db0220-8083-56f3-ca83-edcdcd058819">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-25T06:33:19.274Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="JT44ecBIAM87olLMAwlr" type="device" pages="1"><diagram name="Page-1" id="c9db0220-8083-56f3-ca83-edcdcd058819">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/layout/wireframe_1.xml b/src/main/webapp/templates/layout/wireframe_1.xml
index 65d25da059bffcfdd5d4786275248d71814a06c2..012ae101e58476a950b063f991d691203138a58f 100644
--- a/src/main/webapp/templates/layout/wireframe_1.xml
+++ b/src/main/webapp/templates/layout/wireframe_1.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="2cc2dc42-3aac-f2a9-1cec-7a8b7cbee084">7Vzbdtu2Ev0aPdaLF1GyH2M7abtW2tXWOSfPEAlJaEiCxsVW+vUHMwCvgBy7sSz7RHqIhAuBweyNrcEI8Sy9qnY/C9Jsf+MFLWdJVOxm6fUsSeJ5OjdvUPPV1swvLmzFRrDCdeorbtg/1FVGrlazgspRR8V5qVgzrsx5XdNcjeqIEPx+3G3Ny/GsDdlQr+ImJ6Vf+5kVautq4yjqG36hbLN1U59nrmFF8i8bwXXt5psl6Rpftrki7Viuv9ySgt8PqtL3s/RKcK7sp2p3RUvwbes2+9yHPa2d3YLW6jEPLKNkkS3ji2xe5IssiX5yI9yRUtN2CWio+to6RyrBv3R+iWfpZbeKyBQKIre0cAVSsk1tPufGHipMxVZVZf9UA0NWuw2w6Kzi+RfdnBlMFWE1FfJsBUhS8ZnVOPylcEyBkdesLK94yQUa1XrZjIrWDVoW+DItlRn1E91Zv1zBcDTXQrI7+heV/cCIXreAkqxoedmh2o5b85qCEcbWD6RiJfD8v1QUpCau2pkaJ648sCjCl6n30WrdT4Wiu0GVQ+9nyiuqxFfTxbWmjkhuo7W8uh+wNmrJuR0ytu1J3FbZdEP3dDEfHGMeyZ7EY88fsNOSKD4ii0idb8H1I1iWPiwdUdrpSrpWQZT27ppHw7YYwxYnPmxxALVkcQDQUg+0rVIgtO9gzOTD/f39WUHXRJfKuLV6DUiOhOD1oBpPduPC341JaDMeBNa5B+tnupJMwXb8nVTUw1GhNg4RaTirFdqUXc6ya9+J4BpmvjbfuWrFGwCyITmrN5+gcG3sGGGURg/r5uN08vuxmkAVz32s0nkAq+wQurnwsLoxYQ3jdVA6XwaoOHsdQGXzbyMVLwNIpYdAaukjxWEvRU4hIVIFeCBghciT4XDS9gF/U4g9jFEmQkwWpAIY6pVs0HmLUllUDO6LDX4Gk7cGIwgeucBBYFy1pVhgsm+w89oxzLqGwxyLQsnTKXS/NRJ1g45Kr+/NF8FL0WoZEOuQAMwPQavzBwTAj8B/bAHoNvZRBODiJAD/nwIQjNZeTADaaP8UAgSgOo9eUwgQ+zmSkwS8SQnweHXUGKBNAowkgIh8e9r9r+j7P/bP1XtQOnBeZM1FJc8kzn3Jd6HU5wW+JqnPR6VOkxbX8xyb9iVVpsmXCescvz5i6TqdPS27+iJkCn3rJy9Gpswjk0ejdud+BF/9wSXDoCC9XnGlePWvWbVHEEKcDbGvIgLeSoZI7Wfek7Lpe3j57Fn276CRo00aBzQomGg/SJ499hNGn5gqw5n2H+vbIhnv7/S4XxZ+uuijCdQqeKaRGt4L9IsBjEHASMycNjjMeS3NAYAqDa2kYA2TLLdRIC2Z6yXN1oIxoJJpWfECg8CqwTFZnbOCFbqGoTX8YzagDRRhGjs3lCqyMUCZaUp2q8mZ+fQfaKc1q3By6MJs4c5UksrOfqsx9qy52f8aOtEdFTlTxJ1bdFmSKuftvLazWUZrDU7HGnwQ/iG47sqsgrceMOYosOfaTkU05q+Z0Gh36zwGswnaCLqlRm4E+hIr73ipG2MQRdPRbxGVEoq5kZseAnSKhnBdbxiBbjWYb/lpKrQAM97vctooqi1i6Fee54Tm+ESuG1YQZZ9GDzSCswLYbdGySKBhuS4bYn0Ig6zXBlyCZwhJhe1X8dIaTKzrGbpYdjjqyphklADEKL28QSqgXxsqZAPjKXQaKDDMUdVYZBK9UZs1QZEKMSBg5y8EPs+1JLViAzdVt5qiAbpoW2BpiitgRWTJbb4yRMcSSuwjhvF2wQRKZAVVZcnRIYZVymJwB+g5w5Gkpj8yBuIccyzI8Uy1osbN2J3Z94LlivQuprumNAK24gDa77TiPZvBjGq6UoMC6etkvx+lWQl4SljygRsL24IFIMtoK7qBHHeNMfgk7C/WuRCXxmUHvsD9Qqc2wQDQXFOZMzOSXYr1pdnfgrsdaBxUtcS46gZ1aA2Uxpn2KMG56jQnZ/3O8ZZpSV7rqrWBaXsYLeApq0Nk5oTokTJUtcJAKscWQcbM3K9PiOE+gUIDBwKFzkGJwtWLximU1GbRDevsZFy24/niZVVvNhIvNhuIl/Fm+sFU/NkLmJXREgUHAbJiNtUviyOKBSWzB6XMOatmW1Za4TBsYLgxhobgGuzMrfZNyWIt6jTwVvPxtpiKIi4uHHCMw4XsgQAvdN4fhCuT4OTB5MIvtLyjELtMpnMh5jhQdZXjGLULp+OjHFCm8UsgJZGF4pcD5ST8HyYutTl3hLOSBz7xrnBm6d5Dx47RuTQUcY4PwnagG7cAd20reKGg7TO9eeSIECLwsU+6y4sJkwIn3fjixSJh/3eTjkj+mfdEpFdMpHmUHZFIrT6esu9vPfvu8So7ZvY98X/VOaXi3kIqLjs/aiqupcnb4w0WWC7PJKuakv6ah78KO/7s48RRL0w/w6XNbKRCi0BmN4mCbDoEnVJfhtrMrs+rHyyzex59E6mXS+2m/r5vgUp/cKCWrwso/357G6MV7G6E0+JWw3+8uQS4fnJ4vDM9/tZSsfXXvkMf1fkB47NHo14kecAgtatG14xrn81bW9Hj1faBvNLwiedG5QT5v4H8SZ1PsL5xWE8AngAEH2MEEnDwJKj5RtZ+T1b922cE7wTSBSv+0eZA51Tv1BWOxl4keArcde0uLQ2Dpy6iet7oKXDd7ZRue4vptmQ5IVYg3TYPReUHSbel/g2m082Y082YZ70Zg8KwEl00cLog03t6eEFmqsqnn/O/488xjEV2GfitbB76rSxOsierrCn2fykE2wZ/jiV9/z8=</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-25T06:38:47.432Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="9IGCAR_EsU4D3vuigr0V" type="device" pages="1"><diagram name="Page-1" id="2cc2dc42-3aac-f2a9-1cec-7a8b7cbee084">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/layout/wireframe_2.xml b/src/main/webapp/templates/layout/wireframe_2.xml
index 3907e8581a836d2f6bbe8656cf12b45d747bd983..adbede5e74d88e4dae67f0b0639765f4422171c9 100644
--- a/src/main/webapp/templates/layout/wireframe_2.xml
+++ b/src/main/webapp/templates/layout/wireframe_2.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="device"><diagram name="Page-1" id="03018318-947c-dd8e-b7a3-06fadd420f32">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-25T06:53:15.200Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="taaSF0I9qjlfNE2_Uw7a" type="device" pages="1"><diagram name="Page-1" id="03018318-947c-dd8e-b7a3-06fadd420f32">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/maps/concept_map_1.xml b/src/main/webapp/templates/maps/concept_map_1.xml
index 75e62fab0a89244e37e1106dc73eb894dda4ce4d..d406bb8abf25c7b42ebe7f64f426a5a5944af42d 100644
--- a/src/main/webapp/templates/maps/concept_map_1.xml
+++ b/src/main/webapp/templates/maps/concept_map_1.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="42789a77-a242-8287-6e28-9cd8cfd52e62">7ZtNc5swEIZ/jY/t8I051m6cHtpe3GnPCiigRkgeIX+kv74CJBuihjKTsREZ4YPRroSw9vWza8te+OvydM/ArvhGM4gXnpOdFv7nhee5gR+Ip9ry3FqCJGkNOUOZ7HQxbNEfKI2OtO5RBqteR04p5mjXN6aUEJjyng0wRo/9bo8U92fdgRxqhm0KsG79hTJeSKvrOBfHF4jyQk69DKXjAaRPOaN7IudbeP5jc7TuEqhryf5VATJ67Jj8u4W/ZpTy9qw8rSGu11YtWztu84r3fN8MEj5qAAS+G8eJk3kpSJb+B9eTN8af1WLATKyNbBJKxNOqeYWwvoYrWgUvsTzF4AHi1XkR1hRTdhlWccD4pzo+L2wbhOsrOKotFRGKNiSZGpFiUFUo/VEg0jrkMLdtdQb9hpw/yzbYcypMlPGC5pQA/JXSnRxVcUafoLpLEaxV8zh7VPDrvo+U8A0oEa41/ROyDBAgzXImsXZtu3NBpzmEXY+MDFZF9yyFr4VDih+wHPJX+siI1WHqXFjG+x7SEnL2LDowiAFHh77EgXyn5Od+F7WIEymYseLx24seAN7LadpJKbGqmpmqEnNUFVhVvRdV+eaoShPVto4mIvnCi0ApVn1FHqpdsxoRFq9nlaGDOM3rUyIqHmUWM3c8uiIxFlVLrZ5jgTjc7kCzgEdROPXleNFpIy1VGNSulJYolY7/qfaFSM4x/YdIhCI7PTfN8XbxAIxyUr8DhHggG1LTATIOT4M6kN5A1VeynlzK5vFSnCXSVHTKssi5gnA8XTkWRwbiyBuBo9gYHHmeVdV7UVVkjqo0UamsVe0AUTnre5PNHK+T0bpum9Kuk9Lij2EvqbmJntXiUM9q4TWymhta/syBP/4I/gTG8Ef/PmCAP77lzw35Ezv9knpa+kSWPnOgTzCCPqEx9NG/NxqgT2zpMyF9fG9K+sSWPnOgTziCPktj6KMX1AP0SSx9JqRPEE9IH89ums2CPtGs6KMX1AP0iSx9bkifMDSo9vHs5uos6BPPij56QT1An9DS54b08SOD6LPUdHJHMmFo99dt+G+x7RC6U370Tmz6mUP6SUakH6UjA/KPriqZa1xdVZYqb6fK+YfbJmwmqIRmmWI2U5RmhqHiGgMVV9fVQFUb2Kp2QgBNu5+gl7UWQCYCaMwvls35UK1udxx/lpY/E/LnijsKonn5f1jj6/wJz7/7Cw==</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-25T07:09:15.475Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="pZwxqux4s2fj0RFPyxIh" type="device" pages="1"><diagram name="Page-1" id="42789a77-a242-8287-6e28-9cd8cfd52e62">7Ztdk5sgFIZ/TS7bUYgxXjbp7vai7U067TWrrNJFyCD56q8vRki0NMZ0ZkcyZTOzkXP4MJyXh6MmE7gs908CrYsvPMN0AoJsP4EfJwAkcaj+14ZDY5jOQWPIBckaU3g2rMgvrI2Btm5IhqtORck5lWTdNaacMZzKjg0JwXfdai+cdkddoxxbhlWKqG39QTJZaGsYBGfHJ0zyQg89j7TjGaWvueAbpsebAPhy/GvcJTJ96fpVgTK+a5ngwwQuBeeyOSr3S0zrqTXT1rR7vOA9nbfATA5qgBEM4zgJMpCiZA7fhTpQlTyYycCZmhtdZJypt8XxE+K6j1CVCllSfUjRM6aL0yQsOeXi3KySSMgPdXz+sD0SWvcQmLJWRKTKmGWmRUpRVZH0W0FY49DNwqbUavQTS3nQZbSRXJm4kAXPOUP0M+dr3aqSgr9ic5YqWIvj6+Qxwa/rvnAmH1FJaK3p71hkiCFt1iOZuWtPv45IxTcixZfmXCsciRzLC3V013UsWh3roD5hXmIpDqqCwBRJsu3qGOnlkJ/qnSWhDrQqhioENp1uEd3oYZpBOfPScVE6iTvSmXrp3JV0oDvSsZSzqkNGWD4BM1SqqV2w56p+U2WqPs8iI1t1mNeHTOUnxqxGbnls2VGqkoxaIruCSLxao+ME7lSa09XcWYxH/Zh9vHalvCSpdlyT5j/FGy4QJTmrxalCjsXpg/xFA1ssJN73Rk97pyaJ0UnbXBd35wwo0aailfvMgjcIN7Dj7UkxFinAAFLEzpACAC+du5LOzB3pWMoxu0a1RszsGV+Pu0kAWjtK2+23lPaWEr+POptKmNi7ShzZu0r0FrtKGHk0OIMGOAANU2fQYF/09qABejRcRUMcdLPNccEw82BwBgzTAWCInAGDfUujBwyxB8PNYIBgTDDEHgzOgCEaAIa5M2Cwc80eMCQeDDeDYRqPCAbgn4K4A4bZXYHBzjV7wDDzYLgKhihyKGMA/hmXO2CI7woMdq7ZA4bIg+EqGODMITDMreg+sEwZmoeTPmiX7xlH4ZhXgInnuTM8Twbw3IjFAaDb0tHwDm3p/L8L/vStTxfuBJsdwi93B5a7EUb/eg+dWe+hLZ6eDG7qM7ib2TDuzWA7hfNsGI0NQ76/6M61nTndYWiYezTcjIY3vB2siuefZBx9rZ+9wIff</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/maps/concept_map_2.xml b/src/main/webapp/templates/maps/concept_map_2.xml
index 6f379c494dcdc227c23234ff7e239f36f1d9926b..923ce7460202a90766368595d4de49ac144d4476 100644
--- a/src/main/webapp/templates/maps/concept_map_2.xml
+++ b/src/main/webapp/templates/maps/concept_map_2.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="device"><diagram name="Page-1" id="ad52d381-51e7-2e0d-a935-2d0ddd2fd229">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-25T07:36:12.771Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="zggidiBHJAeBVWLvMl4M" type="device" pages="1"><diagram name="Page-1" id="ad52d381-51e7-2e0d-a935-2d0ddd2fd229">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/network/active_directory.xml b/src/main/webapp/templates/network/active_directory.xml
index 921f2a3d484b1b691ed1bd487eaaa3cfee389b3c..dfc6f5c744d70bd24fe704f8fb9d19aec831f5fd 100644
--- a/src/main/webapp/templates/network/active_directory.xml
+++ b/src/main/webapp/templates/network/active_directory.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="822b0af5-4adb-64df-f703-e8dfc1f81529">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-25T07:48:25.860Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="mG5pJg8E4y9zJ7v4yfoq" type="device" pages="1"><diagram name="Page-1" id="822b0af5-4adb-64df-f703-e8dfc1f81529">7VxLc+I4EP41HJOyLL90nGSG2cNuVWqzj5nTlLEFqGIsSogA8+tXwpJBlmHMw2A2cAlqy7Lp7+uHulXpwefJ8iuLp+M/aIqznuukyx783HNd1wFA/JGSVSFBCBWCESNpIQIbwSv5iZXQUdI5SfHMmMgpzTiZmsKE5jlOuCGLGaMLc9qQZuZTp/EIW4LXJM5s6b8k5WMlBY6zufAbJqOxenTkqwuDOHkbMTrP1fN6LhyuP8XlSazXUvNn4ziliy0R/NKDz4xSXnybLJ9xJnWr1Vbc199xtXxvhnPe5IYwRRAOHJSi0PdxkjwAr1jiPc7mShl/4hmdswSvFcnwjKtX5yutLs5InI/k6GkxJhy/TuNEXloIdgjZmE8yMQLi61o1WD7cEaPy18tBQick0Rc4o2+l6uWNQ5rzfjwhmWTUP5ilcR4LcUqYwJ/QXEhzyuT0pywe4OyFzoiSJ0IXmIkL75hxIkD+vTJhQDmnEzEhzsio9o5P6gKn8vfYSlZ6l9PxckuklP4V0wnmbCWmqKsRVARQBuLq8WJDN1/LxltM82GoaK4oPirX3sAsviikm6LuWqj/PRMauCN+NsQ9x0QcuRbgbhTYgEPPaQNwaAFuYSyWEP72ChCfQ9shNLQN3cBSN/BcW93Ia0Hbtk+1lP1rps6mRaQbkqXU9TYA9aQt9P1MM8rWtpLjAp2pfORkOZKh+zEhwpSXj4VVUbb6Icz+fW0JDVFtD0PgBCaIgWdhGPg2hFH06LcAot95EIckw53Cz6/gp9PCLQBDUGODbYS4oDbCzbqG4Xz9Uh1Az9dgaQ8KkW193mON/fltWB/qvPVxusCsQ+ZXBRAg2Mx9tgEfaOA9bznfQCEylO15dj5fbvq2tQ3aSe9sb/eZzOJBJrTmOvO749ufdpiZuheG1/R8ILy7vlMhhNDOPC7n+6La1OO+uT7f5hr4kQl4aG/3Lrm7bpCt3HK0A0Els4fADnf12+s21K3j6j23b4wfqiT3bk1ueLkQV/6Ce4g7GkJQl6VcKsTV4GVqaAuLdTx5KvskVfXzmPFPsoVTkfWJfJ31YjhP9YxBRpO3QqQmAAvYngsd8en3D/GSUqz6Uro4XoOXaozsjwLi7UeY75qk4MCp0ZGycWc4izl5NxtU5wUR3kHcWSi/GRA9O9MQb/WqhgqMnbjiJeHfpFj4/mL0/YYRL8aVBR1nnwfeTwa/ARk6xAW76PIXm8sNh3o4zWdjMrUIc2U77/cVSEejLkBlq2+a0nLwveR0MhchPFXXdtJgv7lHDSFWsfrBeXSAjsUqXD/ojLkxDdTyL5TkfHuri8yFy06yXqNgtLptwyZ7Jb/ak67ujQqlWCsJeOPV1rSpnDDb88rVVigAxiEF8aVYsnK7Xp8OhzPMe1XLKPV+pLHYJbNDjWUf7W7TkM5hLO7hxhJ4nkEQz7+urRzKcORWCO52geB2HfF1lSdjRnPyc83v5ulfyXTnMQojk+0ehFrwghkRryx3TOsVLmYEl8kNvXZiBYReZNIUnEb/lnlllzd/xatDMtKPyBnvYM64KAg6TRK7InpOkmz5I7TJAFX09dHdH50SjgGq+KOSoN3kGrSrifd+y5kPM0Zm/b+uRXrBfgt0LcRtd3LD/RbfDwx1hzUHqWrbLRFqQ9v22dF7u2UvfMjczoRuzUHGy3VbYPePo3at21JF0A8jG8FLNVugXda7x7cznyfwHLNS4AU157kuGODs4tT/KsABLzRTzADZLrL+QEHQhrrtUsk9wu3FzweVDMW56pk5aNckuoZd10KcBaEfXPHMnD5sfmIbU38/qA5/5ZblTiz37v31FuhW+tQ6TJ7ap/44AAc3BrBdhTm4n3Y1K+5CC3r/SYQmtT5dCGta65OdNx0oT2y1BdUz9NWDn2fqJUeo0rMOO9Bp03lqK9Q/scl8Ew3lM1C/qSMsqQ9d3SDVTdujDmgcfBgCVk6u6yPS12WwXeJrqV0jT5IbPIaO1zu+XXOB1syxvD0rbS8Qv+0qYUsU8D3PpEAYBB+YAgcGbdmgC1HFdaHTgvgpzkUMN/++ppi++R9B8Mt/</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/network/cisco_2.xml b/src/main/webapp/templates/network/cisco_2.xml
index a8ea276f1ab8b7f7986ae2dc379d012b95a4f6c1..1a7c711f14ddf2b17910ae5099f4d177614b2728 100644
--- a/src/main/webapp/templates/network/cisco_2.xml
+++ b/src/main/webapp/templates/network/cisco_2.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="device"><diagram name="Page-1" id="c37626ed-c26b-45fb-9056-f9ebc6bb27b6">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-25T07:54:42.064Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="U_184XugVgGsBzvlx8UZ" type="device" pages="1"><diagram name="Page-1" id="c37626ed-c26b-45fb-9056-f9ebc6bb27b6">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/network/wireless_home_network.xml b/src/main/webapp/templates/network/wireless_home_network.xml
index ab240b76b25e7411670abfde7e4cd27794e9438a..6811062a1693aa674c95536d0700cf767faf9397 100644
--- a/src/main/webapp/templates/network/wireless_home_network.xml
+++ b/src/main/webapp/templates/network/wireless_home_network.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="55a83fd1-7818-8e21-69c5-c3457e3827bb">7Vptb+I4EP41fFyUxHFIPi50u3fSdlXdrrYfkUlMsHDiyDGF3q9fO3FecGiX60FSBEgtzszETmaeZ2yPGYFZsvvKUbZ6YBGmI8eKdiNwN3Ic2wWu/FKSl1LiBkEpiDmJtFEj+EH+xVpoaemGRDjfMxSMUUGyfWHI0hSHYk+GOGfbfbMlo/ujZijGHcGPENGu9IlEYqWltmU1ir8wiVd6aB9qxQKF65izTarHGzlgWXxKdYKqvrR9vkIR27ZE4MsIzDhjomwluxmmyreV28r77l/R1s/NcSqOucELcLjEyxCGro1dJ/xk+/rBxEvlDBxJ3+jLlKXya1q8IVZ9WPJqJRIqm7ZsUrTAdFo7YcYo481tOI0+q+g0klxwtsaVmfSWVXxqTeV96ZjpkqXiHiWEKlD9wjxCKdJijSCnMjvUYdc12ls52/AQv+YPjT7EYyxesQGljfJTq2Pt8K+YJVjwF2nAMUWCPO9jDGmoxrVdEy7Z0BE7Nnpln8+IbnAFQCOaJCmwf0TQGuyCqb7rjiSxfChKFvJ/SEk2R1zIZorFlvE1SZX2icgXxXk+/4dtBOZz2/F38m+cSW0bOmroGv8qQiFLSKjb/wkYhNKW5X3xOQUynjEXePdmTLXWnWhCVwnPg+X1tkkfvjZZtROHdQYUOB0U/J3KQMggDYCGGWWb6ONjoHjrR5YTQVgqdSFWLpMKhQEiZ4ZvhoFgmdQiSuKD5p+1YsGEYMl5QGa71nAgs4PbRHFgEnhzonA+zEQBOiniXmbtLVJ39Z4iqqEvL0vwkmSvJomERJHyY50nKF6KA1mitjtDlnCCAbOE28HZT7SgfU1EEiaZWoLksk0e0QVMQyeIP7T24z+xBow/7MT/cdZ/7B9YSgTj859seyXrURvug8AbcqngdUHASbFe6h0JeuCrxIA7JAYmHyIRPMk1Ry6Qmp2vAgITYKSByYAQ8DsQeGALImPfCwwEplhGMtmkcuFVLM/UmmAldxdXgQTfWBVAOCASgg4SvqFMbah7TwjfsVgwtr4OCNjGfDDkwrB6lhsGesUAcIzNgT0kBo4oV7eibrhvVnwOhcDzfXsKpCbmKCK4caauJVXiO8JxqHfqKePq/Q9ETYY+Uw+T7GJ12DXWpYt8rGaTOSXpel4WdP5PeWuQkpVel79ZstL9/LFk1cJPfUrWBlAtPLq2pcd4ZHLF3gKwMY+BwEBm+cb6rvbJl9GRa3TkmB2Vbul0VKC8fvF3Ar9bob8B/13AL+y00w4cfh7DAniJLDDSuOvb4wB60LEnILCBBd/JCaN0CC1/bLnAnfiOZ/leYHR7ToZ0C9Q3hvQ4NVTLgstihbHbdYPTsMI3WGEPxopuOf3Gih5Z4V4iKVwzp5+GFIHRrTMYKbpnDDdS9EiKySWSApop/SSkMI/eIBiMFN0zlxspeiSFf4mk8MyUfhpSGGVH6A5Giu4h1I0UPZIiuERSmFticBpSGBt4CM9DCnnZ/Ji8NG9+sQ++/AY=</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-25T08:35:51.912Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="zOp3e6TWjYTAv33JiiiK" type="device" pages="1"><diagram name="Page-1" id="55a83fd1-7818-8e21-69c5-c3457e3827bb">7Vptj6I6FP41flwDFBA+rs7O3pvsbCZ3NzsfTYWKjYWaUkfn/vo9hQpYnFkzo6AbSdRyeujLec5z2h4coEm6/SrwavHAY8IGjhVvB+hu4Di2awXwoyQvpcQPw1KQCBprpVrwg/5PtNDS0jWNSb6nKDlnkq72hRHPMhLJPRkWgm/21eac7fe6wglpCX5EmLWlTzSWCy21Lauu+IfQZKG7DjxdMcPRMhF8nen+Bg6aF1dZneJdW1o/X+CYbxoi9GWAJoJzWZbS7YQwZdud2crn7l+prcYtSCaPecAPSTQn88iLXJu4TvTJ1sjl8mVnDBKDbfRtxjP4GRczJKoNC+4WMmVQtKHI8IywcWWECWdc1I+RLP6s0KkluRR8WdkYpj+e80ze45Qy5Tq/iIhxhrVY+4kanzlLPfGcr0VEXpuadiQsEiJf0UGljppyo2Ftu6+Ep0SKF1AQhGFJn/fdBWuvSyq92vJQ0MY/FoiyzWfM1mTnSwYwNC3c+Aj7126IxvqpO5omMChGZ/AdMbqaYiGhmBG54WJJM1X7RGGiJM+n//G1JGJqO8EWPsMV1Da9QHVdubJyiYinNNLlwxj/GcxnIiTZvgmDrnVHmk463Li+V95vavIGWmXRpK11BuCcFnD/ZmA7sGsPAE4YX8fngU2P9ZHnVFKegTAiaqJQoZCjEE2/GQqSr6AWM5ocVP+sK2ZcSp5CxRlcA9am/lzDDv/a4IqOCK7OxQRX1OLoPUS6DVZPdc7RXddd0VSUXv4qS1Max2r2FVEZmcsDNK30zkBTJ+yRpm7LO37iGesqfgO4K7XY5lCmj/hM0fvjkHnWPmQjq0fIvBZkj5Pu4XrgGZVcTH/yzeVulmxvHze/zxXRb+MmaLEt6Bw83fG1wOb2CdvoIuj2BEtoLrFati4VtREyyDbqEbWghdoDn1GAqxPkJJwkwfjpOoNNRLHVUOvbAraqlwpeYKxwntcjeGELvG94pQ5UndPuO5EzzpcfQa0xAqu4DuNJGWto3hfXgQ2uuj/U4ilcwDaibp+bnN1Y/g4fOCdzkWPsTe0+YTsildcAyvD6SXEdYo4fBPYYQU0icExJzQF9/N+J7+B8GemzXcaFmv8BCACtlRpMuk1UTn+oj6j5UMXsKaPZcloe3D+SkTgq//AOQr+ZmtB7zDdTE7qdP6YmGv5TvQxoOlAlPDqHoft45LD7bDiwsfSg0PDMcsb6qdo5Ww25RkOO2VBpllZDhZdXE3+n47dToTfHf5fjF3raaAfe8RzDAu8aWWCEcTewh6Hne449QqGNLO+dnDCSTZ4VDC0XuaPA8a3AD41mz8mQdiLyxpAOl4bdtuC6WGGcKd3wNKwIDFbYvbGinYC9saJDVrjXSArXjOmnIUVoNOv0Rop2ivtGig5JMbpGUnhmSD8JKcw3Px7qjRTt9wc3UnRIiuAaSeGbIf00pDAyhZ7bGynab2dupOiQFOE1ksI8EqPTkMI4wHveeUgBt/V/Zkv1+o/J6Mtv</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/other/decision_tree.xml b/src/main/webapp/templates/other/decision_tree.xml
index 6773746161ea68fa054b4c408b32588dfd5ca8f2..09d895aef06fb7f838323d70026842ba4b1f5113 100644
--- a/src/main/webapp/templates/other/decision_tree.xml
+++ b/src/main/webapp/templates/other/decision_tree.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="10a91c8b-09ff-31b1-d368-03940ed4cc9e">7Ztbk5owFMc/DY+7AwkiPO66lz60nc44004fU4hANxInxlX76RvWE+Siu1DHGmfii+TkEOCcn7n8iQ6ezDfPgiyyLzyhzEFusnHwg4OQ52NffZWW7c7iR9HOkIo8Aae9YZr/oWB0wbrKE7psOErOmcwXTWPMi4LGsmEjQvB1023GWfOqC5LSjmEaE9a1/sgTmYHVc919xSeapxlcOhxBxS8Sv6SCrwq4noPw7O2zq54T3Rb4LzOS8HXNhB8dPBGcy93RfDOhrIytDtvuvKcjtdV9C1rIPicEKIywF4axOyNjHKAbaOGVsBXEYsKLJJc5L+CO5VZHaZ3lkk4XJC7La0WCg+8zOWeq5KnDtzDQBErVk5YFRn5Rdl/FasIZF6qq4AUtXaXgL1QbVQjdt09Vo1NStjTLGat5QrCVnRfyicxzVhL4nYqEFATMgJuHoHzoQoTlaaFssYojVZX33cDqSFEh6aZmgkA/Uz6nUmyVC9QGmm74UWhm1jXCNBdZDa4AbASgTquW94lVB5DbnnlGnTw7KGCyjPGCqFQHaXlcy/2uUl2nXm+ROA0JHzeR8MaXZAJbJgxgYhyaxITfYeIr72R4n0K3mduPEkiEvCuH65btKS9v8MHVZUjFSJVpkbTOUJaavyrVvH9TKbdQJivJlYkLmfGUF4R95nyhqRuC0mnIHCVkyVcipu8PyyoYKZVHfODnS5PG3OYoZzfurbor1GQN2hCUEZm/NmdDh7iC1r/xXD3N3oXPZkt1n23wqpv4NxZHHRZ/qkliG8by+adQBEQsnybwiYbzOYoaeN54nsl8hnb8NGD8xKg5fqLwkuNnZJkwgImRbxITeh34ARR38VmIcM9DBLouIoLIKCK6sosl4j8TEYZGEWEFGhOg8IImFDgaXRIKq9CYAIUfGQVFV6Kxy2JDlsXQib+7LIZV44BlcVOzqQAwc1HsdVWbAwqipdNQOqMT6TQczsD2nabSiXvQqVfSQ/AMNJJV/2m06O2Nbf95zYR6gwn1UNQkVCNgKKBd2dv2oYYQGvYhdPh7GbUsDq9qDtpV4W0fekWEDn+zjUK/NQ9FJgOKum8EtNZrRd2TNtO0t9xddM+dVfkvDkS169IMIvqp/JaIc6q5nW25FyWin8RviTjnboHQKCKsvm/s7FXPKt/f9zZQpHJvPTzGrfVVYPT01Wr8103oQJHqAKGGA2p1fnMJ7SOj6olyf0JdF7f7ULMlAKvzXzehA0Uqw/pQVdz/63Tnvv9rL378Cw==</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-25T08:50:14.904Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="-8fQ_XMUwyV_rNFm3nic" type="device" pages="1"><diagram name="Page-1" id="10a91c8b-09ff-31b1-d368-03940ed4cc9e">7VvBcpswEP0ajumAZDAcYzdJD22nM5lpp0cVZKCRkUeWY7tfX2EERlacAE6KOlEuYVeLkPY9S9pn7MD5cnfH0Cr7QhNMHOAmOwd+dADwJm4o/pWefeUJoqhypCxPZNDRcZ//wdLpSu8mT/BaCeSUEp6vVGdMiwLHXPEhxuhWDVtQoj51hVKsOe5jRHTvjzzhmfR6rnts+ITzNJOPDn3Z8AvFDymjm0I+zwFwcfirmpeo7kvGrzOU0G3LBW8cOGeU8upquZtjUua2Tlt13+2Z1mbcDBe8yw0BCCPohWHsLtAUBuBK9vCIyEbmYk6LJOc5LeSI+b7O0jbLOb5fobi0t4IJDpxlfEmE5YnLQxpwIq1mpqVB0C9MZk2u5pRQJpoKWuAylDP60CS+jF/Qgt+iZU5KPn3HLEEFkm5JHk+kboZInhbCiMXssehwpqejnh9mHO9aLpmeO0yXmLO9CJGtQc1JSeUa6W2LFzWaWYsSgfQhScW06fkIh7iQiHREB2joOCAgvMzZCgmAgrS8biFWNYrntNvfJ5ATqALpTcdEElokByM5DU1CcqIh+ZVquBwT76qIvJR2xPh1uaGd+G7zcoCHzg62TLkvbFwkJ3cITyteWK3o35jzvbTRhlPhooxnNKUFIp8pXdVcGUaAc2Cv6YbF+Pk9SMwrxfxMjPz84ETZyM9S5sr9AF0XqLSRfTBMEM8f1a3/KYrI3r/RXMzmGEIXi7UY5ymHmkEMo5Wv0eqnOBFZXr0xr0B/XvmRQqsrzzOZV6HdeAZvPBCoGw8Ix9x4IovkYCT9iUlI1iXGC1Bex2+Co3sJjmDk6iwyCke9erY4dsIxDI3C0dbZw6H0AhVKGPljQmkL7Qskk8goKPVK25ZEF5ZE8rZnSyJZMfQoidQ6uwHOzILI0yttK+C8PauiC1llOKkCu1a9NqtgB1bVlVQfWgU1lZr1ymhh0Jva9WoMZnm9meWBSGVWDZ2hxNKlQbtmXcissAuz+mvOosgK/6szlq5V2jXrHzCr/7dkIJycnLOAycQCunJaq2vvUUabqvW6746pogGrhg6EsXnJyAwcu6mhFkddP9PeHRsVx25SqMVR/7YwNApHq4O+/qshXSQr0FNcEBUgnMKTc3pg9HHKaqHjMKunuPAEswwnltVDX59ZXWSr+vDWnVmuC0/XLLNLQKuHjsOsnuKCYWuWMI8/s6nCj79lgjd/AQ==</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/other/floor_plan.xml b/src/main/webapp/templates/other/floor_plan.xml
index 0db57514af9a0d186f938c1e361446dbba047010..4d92073660a13eb0b03ddb66ee43d84e54ad522d 100644
--- a/src/main/webapp/templates/other/floor_plan.xml
+++ b/src/main/webapp/templates/other/floor_plan.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="38b20595-45e3-9b7f-d5ca-b57f44c5b66d">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-25T12:24:26.371Z" 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="gIJ6MrTEWQH-ATDHq3AN" version="@DRAWIO-VERSION@" type="device" pages="1"><diagram name="Page-1" id="38b20595-45e3-9b7f-d5ca-b57f44c5b66d">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/other/infographic_1.xml b/src/main/webapp/templates/other/infographic_1.xml
index e093544e922c57647f589812af56440500880c5c..dec3165c07b1ade9ff4c2777cf9c9a28200a9dd9 100644
--- a/src/main/webapp/templates/other/infographic_1.xml
+++ b/src/main/webapp/templates/other/infographic_1.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="device"><diagram name="Page-1" id="1622d65d-c77d-c4b6-e0e7-3c11208c8684">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-25T10:52:26.209Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" version="@DRAWIO-VERSION@" etag="U9YeW2pbj_pP70bsdyPB" type="device" pages="1"><diagram name="Page-1" id="1622d65d-c77d-c4b6-e0e7-3c11208c8684">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/other/lan_plan.xml b/src/main/webapp/templates/other/lan_plan.xml
index c8acff40293fa3847e227f083d7ec89a501fa546..b0fa0f1d2ebba5fc032cb028950cf3ee18a756d7 100644
--- a/src/main/webapp/templates/other/lan_plan.xml
+++ b/src/main/webapp/templates/other/lan_plan.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="4bd5d27a-524c-7e24-5d5f-89a86ee4fca1">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-10-25T12:14:35.553Z" 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="Yr9XmF9XReulisqPo9sk" version="@DRAWIO-VERSION@" type="device" pages="1"><diagram name="Page-1" id="4bd5d27a-524c-7e24-5d5f-89a86ee4fca1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/software/class_1.xml b/src/main/webapp/templates/software/class_1.xml
index 521a951af64a3ca5ee946c4b2252b151fb2ba15e..3357d0a862e3e185b25d4121a3b7273a3e6c1bf7 100644
--- a/src/main/webapp/templates/software/class_1.xml
+++ b/src/main/webapp/templates/software/class_1.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="9f46799a-70d6-7492-0946-bef42562c5a5">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T08:08:12.412Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="2wvf4xhwrn_Job1IR0z8" type="device" pages="1"><diagram name="Page-1" id="9f46799a-70d6-7492-0946-bef42562c5a5">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/software/class_2.xml b/src/main/webapp/templates/software/class_2.xml
index daec4ac1e12339fa35993864795f034b7672fdd0..795b43fe2b4a7831f2990a1fbaf0e4a97d3026e5 100644
--- a/src/main/webapp/templates/software/class_2.xml
+++ b/src/main/webapp/templates/software/class_2.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="6133507b-19e7-1e82-6fc7-422aa6c4b21f">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T08:44:22.138Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="lTyqD1IK5OVq7-x2J-oG" type="device" pages="1"><diagram name="Page-1" id="6133507b-19e7-1e82-6fc7-422aa6c4b21f">7V1tb6M4EP41kfZOSoR5C3xs0n05aU9aXau9z05wgrWAc0Bfsr/+bLAJYGjSBgJpXUVqPAwGzzwznhk7MDGW4fPXGO78v4mHgomuec8T43ai68DUHPqPUfY5xXbdnLCNsceZDoQ7/BtxosapD9hDSYUxJSRI8a5KXJMoQuu0QoNxTJ6qbBsSVK+6g1skEe7WMJCp/2Iv9TkVaNrhwDeEtz6/tGPxAyu4/rWNyUPErzfRjU32lx8OoeiL8yc+9MhTiWR8nhjLmJA0/xY+L1HAZCvElp/3peVocd8xitJTTli55moNDGcNXUdDmykw+H2leyEL5FHR8CaJU59sSQSDzwfqIhsvYj1qtOWnYUC/AvrVg4mf0VkjgCsULAr5LElAYnooIhHrI0lhnN4w1dVoX3AQ8J6zNgeLQ9so8sQZZIeinFLipy3ODWza3JAo/QJDHDBQ/kSxByPIyYKNyn8hi5BLNSEP8ZoLRTcsy7Lnjg4dA9meNhUohfEWpS2yzVmYPEv9cr18RSREabynDDEKYIofq1CEHNHbgo+fSiUA9yWGHcFRmpR6/sEIlEEYJ7DyHrlpGoZdRgj9kvcoWqVbO5AyFDUjqk0yjzB44ENaBjBJIhgiCWvJEw4DmCm/BKNMQ5yJtWGAt1Tbt2uqIUQxtHhEcYqp9d7wAynZUerax4H3He7JA1MIBc/6l2gtfBLj37RbKK5RxpZuVzju2JkcUjFKKM8PAQ5QkL7DJOU8axIEcJfgVXHDIUUFjhYkTUkosMxHyuAqTOHgLOo2VbiJvP8Qr/n3Y0YVk1+FB8tEWbocZzrJLNpsgkkePb8IZ37UqMLO5LDTnkr+1eZe0S+5VmA77RZQQu3rQKlLoJzoCzZTYMSmihtmyvudDFA62LQKzlzGdZnKYhagDdAmbYVssoNrHG2/Zzy35oHyDxcIIz35OEV3lM7u6YlOwJRGaH+bIIOIjz0vc4YxSWEKcxQyrHDPQMdhLeiHynqpzayJRce1pG1waNMPY4/TJYno+CDOtI4oxJ8Qg3mDj2w1++MA4YjQTwSE4OsUD4bCw9jwYOkD4sFSeBgbHubOgHiwG/BQU32A63HLSdPvEb2HVFtZkM0Vfc9wcDsFEhgMGQxGg5KzgOEHSXCKCes/znlryh9Cv0AzT1NwH/HAvMXeac8+8T4xW/9Dmf0gsAAXnAfmjmvTBMndaDZyHeRMgQwMlb2o7AUYJ4ISgA68lYRKXYWrHfupdsMfZf4iI8JUiBgdIi6Zwci366qQtXcNn5qT9DIJqJh1tJbvXHAuqC8zzCVNn7GC864WbSTFmjyOGv+qjaVVA1DdqqzavJb/7FUeSUqyMwKz2Z8nOJ0sAWk17dtTEqZiwmlBazkzqQOnEV8SmFpsTHIIxYo0H9CkvKrblFdoM8ea21VV5a3X4UkCgFjh2IumXu2BbDYJhXzdz5yJAkdGgYLAUQgYtu5WtAWsbkAAxLYEgQJgmxeAgXM1MxA/Y1wzUGv8MfQcZNeKIC54eQ56mb/7OUhetNFms3frgISvPdsBTWmoPDerupqKCPZMD+RUHdC81kE/s5C8WKNAcEIg4go/U8wW3UQitQ1HRWWiUxC0elZVuf/YlXu7PgsZ1swt/3HQH9+HZLYj/81FHFPVbfuu3hSO4Doq+abaejI+RAxaybfkHbSS8lUl/0wND1nJF+hSlfzxWf6QlXwFi9HC4qK7kuq4aNv9oXAxPC6MC+5SlQofclygfrx1ShXW5hWJi64DvjlcEHerKhsfu7KhW2/8SZWr94DKuaby1p6no8Lwr6OSMW/aoKTy1m41fGplooO8tT4jul1GG70GGB6GIYm8ex8PG2c4uhxntAadl480pJBHDjTe86aeNtt7y4KqY9q9LKYJlewbz+9nOVWTFD5WOx88kTjJwF1rLAauyzGb9o4NXCC5EwunarW6MWlQcxTaBYxal9cU3u0eie7Urs1s1230wGdiQK9BQO8BAq3OStURPnYdob5DwhQ/djy6JcLso5DgqC0RfRcSCsu/jkKC0/RTNoWIYREx6JYIt6nYqEpL3Wp4yC0RbtskoNY4B7f8IbdEKFiMFhbDPqjFlbdNqmTmAyYzrvbmZKaPtXq36cFhKnTt0lMVln8dyQzQ5LKLgsTQkBj2US1a044+lc50q+Ih05ni2YYqcB2f7Q+Zz7T92EfBYnBYDLrFG8ircVexlXcVEJbEDLgED8S7R67goT52v69iaJeNypI/dpZsOm99G0P9x/sdhUdqhaf3h9hpbc+KGGmeDJrWeBQmBsbEsIlyw6NdJPWrRPlcHQ+aKTc8SVClRGOx/iFT5aanINhBZjMVBNj/PbC35/E4jyJF2z0XzWmmxRszIzGoTLnWb4r49dAD/bbl/7Pr4BIBhkypgdz6i3WzYaoX5OoplR6pDHD9KquYiahOFIRy96KLVZ2b0nZ1mh8zKYk3LYohgvJopau+RrC51XDJNsmwmLpBbr33mfU2jrlg1WXW0Y4t90/g0/3BQR0ZYn6G/ilnW/ITGs6tjrnm8Jr9VM2ZlbzPJsvLX95b+w0Fj4j1WvWkveRB52czull9ylxj4Oo2rvlpr/ZTtHl4PWeelB/egWp8/h8=</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/software/component.xml b/src/main/webapp/templates/software/component.xml
index dc8eb306a30886ba9e2f56bdcf5a9079e75299fc..75b9d95c94472af8ec9fd798e9e45874de9ca215 100644
--- a/src/main/webapp/templates/software/component.xml
+++ b/src/main/webapp/templates/software/component.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="5f0bae14-7c28-e335-631c-24af17079c00">7Vpdk5owFP01PnZGCCA+Vt3dPrSdTu20zxEiZDYQGsOq/fVNIJFPt8wOKmvxxeTcSxLuOfcmoBOwjA5PDCbhF+ojMjGn/mECVhPTNCxgiS+JHHPEms9zIGDYV04FsMZ/kAKnCk2xj3YVR04p4Tipgh6NY+TxCgYZo/uq25aS6qwJDFADWHuQNNFf2OehQo3ptDB8QjgI1dSurQwb6D0HjKaxmm9igm32yc0R1GMp/10IfbovQeBhApaMUp63osMSERlbHbb8uscz1tO6GYp5lwvA3LCnyLXcrWG71tT7oEZ4gSRVsVgQ6j2r1fKjjtALYhyLgH0kOIgFxGkyAQuoegRtxfSLXQI9HAc/pG3lFsDnzLwyC+S7iqWRYSFM5DReukGym8tDaAMsfMwE35jKSXY0ldFcbGnM12plluiHPCLSXzQzJpC812k+bh5s2fFohD3VJnCDyOJE3ZISyoQppnE2P2f0GWlQMDrNPieLVoiccIsJKXkq7vM1PsIIE5kQPxHzYQz10tXtmarfNlGTVs2ToAEdSpCi+QnRCHF2FC7aqiWnUnKmuvtC3wAoLCxJ+yRVqHIqOA1d6Eo0lLQ6yswcZXafMrPBkGQGRpndp8zArCozy2jqzHRadGbYl9CZ1dDZxHRglGRs/E6p+MYxR2wLPXSyMGURAJH62jDRCngZ0cBXGCENisVtCseakO9QLToLPSQj2NNm6FTlY1hN+RhGi3wuoh67oR5xok4FpXV2T6WERongR97+mSKlahJw7kgIJW33UUGMmgSA3ZSA2SIB5xIScFoKSI18MYJ4/JFc7EPM0TqRtQSs9uIJ7D63iUskPqglvgla9o2248klSJ+NeX/9vLfrpf+mee+OB4d3VT9m5pAODvNx17gK6445oF1Dq2vcNq65bVhW7YHTaUn8q20bhtFMdD9A+r2BIqHKZCkePtyFGW50IBIy/lG+Uq9hj1guN9eI7CtK5HsRFPv6CpqgOEdK/qKnCXS683yWxB1NmYf+kS1iiQHiZ5zU6VuG8FUtMEQgxy/VHwn6Jbalgo/EtkUKdOB1Phxewau8IrKh+4cCOM/wRUlVV9yO1HkHUmfDIdUaSe1AqtOBVHs4pNqvkkoZD2lAY0huz2yPNbiycbyNZrsDzVbfNGeXinjAY8khoeKZeVca+ZsESi+B7Npxvv4jec3f1Jpo9xeNfAWF4E638kYNOn1q8D86FMw6aNAdTqmZvZtSc/NNpMtxzxxEdXHm1WphufaFq4U7yqhPGRmDkJHp9ioj0S3+VZa7F3/dAw9/AQ==</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T09:00:02.926Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="rpBC6rwecNHnqa2Mevq8" type="device" pages="1"><diagram name="Page-1" id="5f0bae14-7c28-e335-631c-24af17079c00">7Vpdk5owFP01PHYGEkB8XNfd7UPb6dRO+xwhQmYDoTGu2l/fBMI3usxWVzrFF5OTmw/uOfcmQQ14Hx+eOEqjzyzA1ABmcDDg0gDAsk1PfinkmCPufJ4DISeBNqqAFfmNNWhqdEcCvG0YCsaoIGkT9FmSYF80MMQ52zfNNow2Z01RiDvAyke0i/4kgYg0aplm1fARkzDSU3uOblgj/znkbJfo+QwAN9knb45RMZa230YoYPsaBB8MeM8ZE3kpPtxjqnxbuC3v93iitVw3x4kY0gHOLcfEnu1tLMezTf+DHuEF0Z32xYIy/1mvVhwLD71gLoh02B0lYSIhwVIDLpCuUbyR0y+2KfJJEn5XbUuvAj5lzUtQId+0L60Mi1CqpvF3a6yquTykNuAiIFzyTZiaZMt2ypuLDUvESq/MlvVIxFTZy2LGBFbPaubj5s5WFZ/FxNdlitaYLkrq7hllXDYlLMnmF5w9lzqw9IyPKCZUyfsH5gFKULEQvVjQZaJwrfQcPtQgzcwTZjEW/ChNitZCJTqKZrq6ryQJocaimhpLdSEdBmE5dCUFWdBqGKgMMCljNMpw4JiUASdljEYZcNZUhm11pQHcHmlYzjWkYXekYQAXxWnmwF87Jr9JIjDfIB+XLVy3SIAqSay5LIWijhTAFxTjApSLW1eGLe2NhOBK7j5Wz10u9e82CrdJujyAdUi3rB7Sr8K50+FcHhB3kog2J2XMsjiVXlWPfyIb6OCH7s3pq+noEtFqtYiDTpc40EOcew3i3J5gbVEmR5BncOXBfUQEXqUqbuFyL68B48mi1wky2AoyAHsya9+eew2qZlOMDT4rtZPjTWPMmzbEd4jVGRjThjif8uoZrlwworxaaGJKrK8TZ9utq4bbE2TvllgtqxtUQYiLS552XdP/NX8EaBtluDXA/YiLO/WWsYU9ErXcnFlV165Xl1icBEUPluIkR2r2slYQ5Q7n8ySJ8prLffyKxuUSQyzOnwWVC89qgWOKBHlpvje9LLE92XIits9TcACv8/HwCs/yiuma7R8q4DTDVyVV97gdqfMBpM7GQ6o9kTqAVHcAqc54SHXOksq4iFjIEkRvz+wFc3Bj43gbzc4Amu1L05x1lf5Ax5pByuStclsb+asCai83nNYhvP27YcseFJrot5eFfAWV4MpHeaMG3Utq8D86FMwGaNAbT6qZ/TOp5uabyJDjHhhFdnHnzWxhe86Vs4U3yeiSMrJGISPgXVRGslr90SY3r/7NBB/+AA==</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/software/data_flow_1.xml b/src/main/webapp/templates/software/data_flow_1.xml
index 25ab5c4fc2df6727a43db536605626f70fac1458..687ed4f8156157426143fda759747218f1c00751 100644
--- a/src/main/webapp/templates/software/data_flow_1.xml
+++ b/src/main/webapp/templates/software/data_flow_1.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="device"><diagram name="Page-1" id="5d7acffa-a066-3a61-03fe-96351882024d">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T09:06:17.631Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="Wz5d1_78s62DiyNOGZm4" type="device" pages="1"><diagram name="Page-1" id="5d7acffa-a066-3a61-03fe-96351882024d">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/software/database_2.xml b/src/main/webapp/templates/software/database_2.xml
index e1abe0c1cc0a684d9bb5dcdd0b39da0df8f80bf3..cf9c0f1e465a52eab0e96e89ceac353435892f29 100644
--- a/src/main/webapp/templates/software/database_2.xml
+++ b/src/main/webapp/templates/software/database_2.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="a7904f86-f2b4-8e86-fa97-74104820619b">7Z1fc5s4EMA/jR/TAUn8e0zSJn3pXGd6c9d7xEa2aWXkU0jq3Kc/ARKxcExoBhmwNw8JrNZ4WW2k34oFZvh2s7sX8Xb9hSeUzZCT7Gb44wwhl2Ai/xSS50pCoqgSrESaKKUXwbf0P6qEjpI+pgl9MBRzzlmebk3hgmcZXeSGLBaC/zLVlpyZ37qNV/RA8G0Rs0Pp32mSr5XUdZyXhs80Xa3VV4eeapjHi58rwR8z9X0zhJflT9W8ifWxlP7DOk74rz0R/jTDt4LzvNra7G4pK3yr3VZ97u5Ia223oFne5QOIBBGZh74Tzxd4gZIrrA3Ln7UzaCJ9o3a5yNd8xbOYfXqR3pQnTItDOnJvnW+Y3HTlJovnlN3UPrnljAvZlPGs+BjNkuuiswzJXcqYOpDcU6ERyr0lz/K7eJOyIqb+oiKJs1iJlZYr3XcTs3SVyR1Gl9IDN4cOUT564I9iQY94QcdcLFY0P6KDcKVUuGfvyMrP95RvaC6epYKgLM7TJzO0YhWhq1pPfVR6JH7eU9jyNMsf9o78tRBIhV0dlNUR1b9a1OjwhroftKnLjer79d7eibyIyhjqGk9+n/FEd2n+fW/7n0Llg1fGirTxex04cqdqQ96Zh6Eb9h2Ge8Hwe32tjvkUs0eqhz+fFae/NSLA//exGN9uNvK8Uumka9nqbHfyd+kpp5Jf5XxbtZG9tpzu8ivl3KJtIR1Khdmc0AUX8ly50imCSbBUdm391XJrpf6WBs614I/5j3JCuf7zeUt1q/TEvPkJKds2ZWvRlLzrxKuYKRrDorFp8zKlLHHLD33U7nbrExGGGjLV0BE1bKrhtpO0dkrENIIc2jqIWZ5pljcSs3zTLH8kZgWmWcFIzApNs8KRmBWZZkUjMatACmN0cV43ozGxP1GRpxKir9XcVw7gzZmQS60lK2fbZTnHHkydxgz7mbInWhzVBAGTEGqKLnYWfJMu1Hb7xP+QC/6TaqFEdaf8qVs0+rulXxjb01RQ3zKxF86gu1nbjKxaiUlkyPGq/V97mYfWWe8lHW7oWJjEcWQf2FAbsQWTJja/C7IFo8gcUCNzICFuTR2a+phYzh20MwEoASgBKAEopwCUAEjWAYmQroDk2QAk/U39ApLTAkju7IyWtIIugDSaJS3i2ujs36DhC+jsaDS9re0F4ATgBOAE4JwCcMIKJqxgDg3odTnDSJYwA/uEHrQR+rSXMMMu0OaPBtpwaL+32zob+vqEgB4CoAOgA6ADoAOgnyugD21Yc9h7ZdwbxrDGQOui182AlMZGStP5ogNybKQ0BA2c0kyacqMulDuOogziNFJpld4cK8o40I+8RqD1XZQRAYIDggOCA4JPB8EBkPoHJNKoBnTRoFUZuFdAGp50jt/p9D4G0jjbfksbGQUDeQExQgt77fe0NfVJ4NtlIO1MYCBgoD4ZCOYp+/MU7nptMrIyTWEbeXz322EnfWWyfhTAJOYwzwg7zzPy8rf1keU8Hnv2I7G1jPUCQtHpOxTfv354govkF97b/S8gvru361kS+BT4FNboYI1uAmt0cJkc6ljHlisSf9A6VnKCOtYzhjbUBdrC0UCbXhY/4SX+D47jmz0eelgLvlKRyrOiotN/MMRBH6sGuPF0ttBtfyRDU993La8aeFbuh7yMYuspBWKzrCQI2pevmvoesRyI2pmQ4kKKCykupLhTSHEhZbOfsvn6st1AZSi98tHwpNP6DJJ3YhDugEH9XzrppRIFYaOy5O3KFRRYxiAMGAQYBBgEGDQdDIKVfrghDm6Imxpo+40VHhcPe0McsbEQeSmPKdZFcu0MPp7nPpATFKtdeGePp3qJnOCVMUFbb59/Z4/nqqe2FxJYSGAhgYUEFhLY80tgIR2zn47hYNh0zMpbYy6mVM3rAm3jeSq6thegDaANoA2gbQrQBhBiH0L8zvXydt7McoKbq1sXjib9sg7U5dV1aDwv60DwdjiAkMuBEJi/+p+/gsbtE3Vu/Ob85dqYv/Q1GBjRYETrc0SDocP+0NF5/c3KY4X0BT0YOWDkABaCAa2HAc3rWt9liYXgMdMwol3OiAZLzGewxAx1AVDYDoXtUwOfqPF6eRRarKSQu4IXPV633Yt4u/7CE1po/A8=</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T09:16:34.533Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="TKJQPNDfLFLVJzS1SYbj" type="device" pages="1"><diagram name="Page-1" id="a7904f86-f2b4-8e86-fa97-74104820619b">7Z1fc5s4EMA/jR/TAUn8e0zSJn3pXGd6c9d7xEa2aTHyKSRx7tOfMBKx5JjgDDJgbx4SkBZYSRvpt9IKJvh2tbnn8Xr5jSU0myAn2Uzw5wlCLnFC8adMealS/CiqEhY8TaTQa8KP9D8qEx2Z+pgm9EETLBjLinStJ85YntNZoaXFnLNnXWzOMv2p63hB9xJ+zOJsP/XvNCmWMtV1nNeMrzRdLOWjQ09mTOPZ7wVnj7l83gTh+fanyl7F6l5S/mEZJ+x5Jwl/meBbzlhRHa02tzQr61ZVW3Xd3YHcWm9O86LNBYgEEZmGvhNPZ3iGkiusFCteVGXQRNSNPGW8WLIFy+Psy2vqzbbAtLylI86WxSoTh644zOIpzW7qOrllGeMiK2d5eRnNk+uysbSUuzTL5I3EmTSNUJzNWV7cxas0K23qL8qTOI9lspRyRfXdxFm6yMVJRueiBm72K0TW0QN75DN6oBaUzcV8QYsDMghXQmX17NxZ1vM9ZSta8BchwGkWF+mTblqxtNBFLScvFTUSv+wIrFmaFw87d/5eJgiBTW2U1R3lv1pkNLgh7gdN4uKger462ynIa9LWhtrak9+lPdFNWvzcOf6nFPnkbW1F6PizNhxxUuUh78zN0A27NsMdYziureU9n+Lskaruz8/K4q81C/D/fSz7t5uVKFcqKula5Drrjfi9rSmnSr8q2LrKIzt5Bd0UV7Jyy7yZqFDK9eyEzhgXZWVSpjQmnqWiaetHi6OF/LtVcKoS/pj+2g4o13++rKnKFTUxNa8QaWszbcnNlA8VvLKZMjMsM02d5ynNEnd70WdV3W5dEK6JIV0MHRDDuhhuKqS1IhFdCbKvay9qebpa3kDU8nW1/IGoFehqBQNRK9TVCgeiVqSrFQ1ErRIptN7FeVsNY2B/orxIBURfy7Fv24GbIyETUvNsO9rOt2Ps3tCpjbBfafZEy7vqIKATQk3R5cmMrdKZPG4e+B8Kzn7XgP8GO6sBTZSLbiZNg6vMJTpcIcerzp93nAgls9zxH9zQsTAe48g+e6Em+ApGDV9+G/oKBuEEIMMJICFu9AJMeUwsuwGqMoENgQ2BDYENx8CGwDrHsA4hbVnHs8E66kndso7TwDru5IwmmoI2rDOYiSbi2mjsI8D2Aho7GkxrK32BHYEdgR2BHcfAjjCvCPOKHbJ2HS8wkInFwD5sB02wPe6JxbANf/mD4S8c2m/tpsaGtj4ha4fA2sDawNrA2sDa58rafStmdntv9Hv9KGZ0tC56Ww3wTt7xTlovBSDHhndCUM/eyaiBNWoDrMOIeiCO4RVLT+VQ1MOefOQZhtZ11EMENA00DTQNND0emgbWaWQdYkTOuajXsAfcKev0Dy2HN/h8DGcUmTbv5CKDwBkvIJppYa95K5cpTwLfLs6oygScAZzpEmdgyDlqyMFtF/8iKyMOtuFdt9/QOeqlv3oz+yiGI08zO8/TvOX35ZFl7xp79i2xMeTzAkzR6doUPz6rd4JV6Atv7e6n9T7c2vUoCagJqAkzZzBzNoKZM1iHhphPi24f8XuN+SQniPk8Y/5CbfgrHAx/qcnqE66hf3IcX2/x0MMq4TvlqSgV5a3+GcEOupgAwMarwkK3+aUCprzvWp4A8KxsA7yMwOQxGaIZtxEEzTNRprxHLBuiqkzwVsFbBW8VvNUxeKvgfR3lfflqMa2nOI9OUad/aGl8i8YHiQa3IJruFzQ6CfVAWAvdeD80BAWWiQYD0QDRANEA0YyHaGD+HfaBwT6wHpnZN+ZdXNzvPjBiY3rwUl5/q6LQmnF6OG8uICeIBrvwxh5OeBA5wVdFgqbWPv/GHs5apNIXfFHwRcEXBV8UfNHz80XBszrKs8JBv56VlQ+LXEwsmNeGv4bztm2lL/AX8BfwF/DXGPgLeOIonvBbx5bb+XjHCfYUN07njPp7DqjNh8rQcL7ngOBbYMATl8MTMBQ1DkWBsWug9ljfHYpcG0ORWuSAzgk6py47J+gFjuoFWk9wWXnHjVr8gk4AOgEgFOibjO1kbcOaLBEKvFQYOqfL6ZxgOvYMpmNhORxCsyE0u0eGiYyvdaPQYgCBOOWsbLw6757H6+U3ltBS4n8=</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/software/database_3.xml b/src/main/webapp/templates/software/database_3.xml
index 4cfb7c3c1c88000db3bbee390b7f393696ed9d76..f187b0623b473e78a3ffc3e12252af84ba92c571 100644
--- a/src/main/webapp/templates/software/database_3.xml
+++ b/src/main/webapp/templates/software/database_3.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="2ca16b54-16f6-2749-3443-fa8db7711227">7V1bc9o6EP41POaMLdtcHpM0aTuZzumcds5pHwUS4KlsUSES6K8/ki35CtThEmy65AFrtZbW2vXq25VQet59tH4v8GL+iRPKesgh6573roeQ63u++tKUTUrxR6OUMBMhMUw54Uv4ixqiY6irkNBliVFyzmS4KBMnPI7pRJZoWAj+UmabclbudYFntEb4MsGsTv0vJHJuqK7j5BUfaDibm66HgakY48mPmeCr2PTXQ940+aTVEbZtGf7lHBP+UiB5Dz3vXnAu06tofU+ZHls7bOl9jztqM7kFjWWTGxAlHqJTB+HB1FfPcWNaeMZsRe0j9Jlq646Ez1pguTGD1P+50lLejfn6Zhn+CuNZz7sdc0GouFE0VfOSDt1tMmyBZi2Mzq0aGurrP1WxwISkDaCFvjNvXV3N9PdXPGY0xhG14qhnSiRKqy1VaratYtaEmfJYasGpJtKo0qszUQOViVVoB9W4lgs8qXI59SfIRBQ1CrGUz0+Fx8vJdcZVHP5c0Y9kL7sm1jvb0/3jk9uw/ykXyvzjJ7o5rQRNuw8pIxVraNi7JqZGYumoZC/omQoZKldwy9QDKpLkC8WGTYnRqb6LK64pS97caajeKO9uLiP19c5Vl4mFU/2GOaqUveK6MOFRODHXDI8pu8teiXvOuFBVMY+pvk0K/oNaonpZnOST1Vi/5CbDwViB03ic1MQfcRQy7Yb/pYLgGBuy8bkuMuVtHdWdifUOaojoukAyzuU95RGVQtmEs85cZnrLxjp4U34puNWhoc0LHnVkaNh48lnWdO7N1IVxaE2d27CmbUqU4zdFLuScz3iM2UNOLSpWjYPYfNPq+yuwxe9GmwQv54nO3QaqxULe6mlK0R7+iXBM/k4qaExysuL9yj/heNNckRUj3am/JV+JCd0xSMjMt1jMqNzBY8ZRD95eKxCUYRk+l2fV06p0dJxKW6i23MpKNpaY3PlUal/U0+k0uVUNDN4UGBY8jOWy0PJnTcgdRjAqOwzUrwCYCv/APY7fU1igbH+pxLk1Zo9+mIFmSO96DPSMRui2xrGg44CwjgVyLIzS6dTOerrW4FBbU4HGTo6OLUeOkVVBw+TzYeS6eEWwrGsVXn4bsDzmZAMIulUIuknv4624+zXyNGzhGA29Xsiazq5fSk3c9hJCHPWWcZTfPzCOcr2zBFL940BNl3GM1wDH+O2BMejIkHcdyiwWUddpKDLIwt9vxdA4j1OuBrUOG2jba422PQCtAFoBtHYStALQagPQqiasA/+SCWsf/Dn4c/Dn4M/Bn5/In/vuRRcggyOjsT0LkF2OsoJOxdTBcbMy7JGBPTLtnlxhirrkFIWCS05RfQg5IOQAr9jZ9TqQEqQEKa9bSkgttAG3Db0ybus3XZNHTnAG4DYA4AbADYBbJ3PFMO3AtHPoVrD+sOG0k+UZTpvSHlx7Sru0l+mw/HaTXUSD1uS3h4AkAEkAkujsPA1SgpQgJUjZbikPF/GtIq/2Swia/lMkbI+mIQvQxiwAapoF8M7yg7ARbIlKrmBL1JVGfuDdLrm05o8uuSUqS/HBsUG7U5w2ubw3xzlqTY7TigtJzqRzSHLCVNetMKT7Uh4u4p8XdIKUYJMg4WsDFkjTtC2QQU1/foj8s2zWgOOd0+YgT3Ol4BXc2yXd20XTNOphIaSHkB68YhfhKkgIkP865sTqz7mb788+z1Gd284EPG41Y8dqw871if1aP/CQfHsuZbqkYk6m/N1qy4FLGw1WNoKGKxtFI3C2GYElvu6Y/do5915QtkJvUDGu9InNXbl91RryKw2hakPpsNQa6v327HxVzP/RUcqe/zcp7+F/</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T09:26:18.642Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="Bv3pInw4-d7B3s-cIXep" type="device" pages="1"><diagram name="Page-1" id="2ca16b54-16f6-2749-3443-fa8db7711227">7V3dc9o4EP9reMyNLdt8PJI06d1kOte5du7aR4GE8dS2qBAJ9K8/yZb8CcR8FZts8oC9Wksr7Wr127UQPechWn/keDH/xAgNe8gi657zoYeQ7VpD+aEom5TSH41Sgs8DoplywpfgF9VES1NXAaHLEqNgLBTBokycsjimU1GiYc7Za5ltxsJyqwvs0xrhyxSHdep/ARFzTbUtKy/4kwb+XDc99HTBBE9/+JytYt1eDzmz5C8tjrCpS/Mv55iw1wLJeew5D5wxkV5F6wcaqrE1w5Y+97SjNJOb01g0eQBR4iA6sxAezFzZjztdwwsOV9R0oR/Kuu5J8KIEFhs9SP2fKyXl/YSt75bBryD2e854wjih/E7SZMlrOnTjZNg8xVoYnbEcGuqqf1mwwISkFaCFejKvXV756vMrnoQ0xhE14sg+JRKlxYYqFNtWMWvCzFgslOBUEWlUadWayoHKxCrUg2pcywWeVrmseg8yEXmNQgzl83Ohezm5zriKg58r+hfZy66I9cb2NP/0bDdsf8a4NP/4mW7OK0HT5gMakoo1NGxdEVMjMXRUshf0QrkIpCsYh7KDkiTYQrJhfRfSmXqKSa5ZmMzcWSBnlHM/F5H8+GDLy8TCqZphlrzLpri6mbIomOrrEE9oeJ9NiQcWMi6LYhZT9Zjg7EfmfWxtsE84CkLlVP+lnOAYa7L2oDaqz38zoWWv6LpA0v7gI2URFVyq0VpnXi59ZGN8sr5/LXjCoabNC05wpGlYO18/qzp3QPJC+6Cm/mhYUxAl0lfrW8bFnPksxuFjTi3qQo4D33xTI/6HZ26/awUQvJwnarIbaANzMVYri6Q9/hPhmPydFNCY5GTJ+5V9wvGmqbZqdrVTf0u24lO6Y5C02qWMPhU7ePQ4qsHbawWchlgEL+WF8LwqHZ2m0haqLbeyko0lJnc5lZqJej6dJo/KgcGbAsOCBbFYFmr+rAi5w/BGZYeB+hXMUeEf2KfxO3L5LttfKnFujVnXjzPQDJzdjoFe0Ajt1jgWdBp2VfA9h6/IShGewY3yUkNHU1JBs1YOaA1HDmvljUK2l4O1dfGK+FaVSoj7e/DthJENgN5Wgd4mrU+2QuVD5GlYwykaOlzIms5uX0pF3DYJIfR5I/Rx+0eGPrZzkdinfxoO6TL0cBpAD7c9yAOdGKWuA5GFD/I6jR4GWcT6rRjN5qHFzQDNYQNtO63RtgM4E3Am4MxO4kzARkdio2pa2HOvmRZ2wQWDCwYXDC74Pbtg177qmznvxJhnz5u5LscyXqciV++0hRT2e8B+j3avh7CqHLiqIO+aq0ofgD0Ae3BknX33BFKClCDlbUsJAfyRUGvolKFWv+n7ZWR5F8BaA8BagLUAa3UyiQorxU2vFNWdSP1hw5Uii+bPm+sd3Hqut7SV5rjEb5NNLIPWJH6HsPjD4g+Lf2eXVpASpAQpQcp2S3m8iL8rWGq/hKDp9yJhezQNgfuZAnfUNHB3LvIVohFs70muYHvPjQZr4JAOfOfkjq65vSdLpMFxLrsTiSaFuzeTOGpNJtGIC6nEpHFIJcLq1C2w330pjxfx/YV2ICXYJEh4aIwByZAzxB6o6RfWkHuRXQxwuG1aHWRDbhRvgkc60CNdNRliegSBc9I4BM7gyLoDCkFCANat+c5u8+3BlzmocNuJaKel+Xek4Xcm7vcr6shTvc2pfOm7Bn0u31uvIY7M+TdI+XsNU/5FI7C2GYEhHnYueO1gbscrW6EzqBhX2mP9VG5ftYrcSkWoWlE6LLWKem8e9i1v8x9TSdnzX6xxHv8H</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/software/eip.xml b/src/main/webapp/templates/software/eip.xml
index 317999ee9ecaf034988ce24422e5f7f7af99869b..4c838103ec45e0044b7a15b3c6ee21f5333325de 100644
--- a/src/main/webapp/templates/software/eip.xml
+++ b/src/main/webapp/templates/software/eip.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="74b105a0-9070-1c63-61bc-23e55f88626e">7VtLc6M4EP41Pm6Kt+E48XhmDpmqqc1UzTElgwLaAGKEnNj761eAZB4Cgr14rIrtS6DV6NGfvu7WIwtzley+EpBF33EA44WhBbuF+XlhGLplWuxPIdlXEsvzKkFIUMCVasEj+hdyocalWxTAvKVIMY4pytpCH6cp9GlLBgjBb221Zxy3W81ACCXBow9iIb2za/kvFNCIy3XHqwu+QRRGvHHXcKqCDfBfQoK3KW8xxSmsShIgquGjzCMQ4LeGyFwvzBXBmFZPyW4F48KwwmbiO7oXHV2Y9xFNYvais8ey+MvAx/qUj9m4CExps7nB+rSNZjvA8x3ThI7u/6W7UgswYGblr5jQCIc4BfG6lt6XloJFlVq7OzANPhVIstdNjP2XSvQFxULhH0jpnk8dsKWYieomHjDOuF5OCX45gGiUEkCoqLzEh8t47VqvNYT98Jb4cMgEfK4CEkI6oGNUOoVpGhVzG3+FOIGU7JkCgTGg6LU9TwGf2OFBr0aIPXCQpgJW1fkK4i1v5TvM84IahvaTgDRnHcBEAlU2aADy6IAhiFGYsmefWQ4SJnjGKeU46aX5I5AVL8kuLLzHHUTZXVI1/ETrZtmHDI4Vjotn1q7pa8828A6INkq08sdKXiGhiNH4AWxg/APniCJc9GWDKcVJQ+ET7yQtpskw2IU63I3CxEtNl+PKPZ7tcbK+NbyHzWVRw3EIvXmR9a6eisYEKjpzU7H8lA0H7BsKGUYpzRs1/ygE9dRx7fbUcUy77Xjf0bcsrTNZqh7UU+cwlNNmU0/cuc0mWcdVxrH3xPobYD1e0voQ/Hdde3Fe/kt5wt/QRxmCZa8eUE5nzxGGQv+JAX44Y+hLRogY3VNcjG2W/MAxlcoPllfvIKwpDkIZj26NpOrrNMgqD3GmRJ2US+xTuXd8Fj8D3fSlSnSzJfTewUo/BitXhqpj8+fyd6zNh+bgZBB4XBIYGLYEgdWDgHUOBHosfm0Oz5ni8DRlPJ6YLTfExhFTZzvJuO3/Cf6MQqbGqkM3nGXLPZt6Z7+384FhjerPv+xwFM55qtSmm/AcMqHjc56408ChgzMkQ56IfgK55SWToeWHSIacY0FQKRkyr95Ru1NCqzrLP1dhV6ji8q/r8ZyLejzvQ3g891gQFPJ4Ii+7HXXOQC5d91TKJ4SbvmF7Dmwv6znFpZorzlTEAn88VTGVSVVEfxt0/Ax/g4CJHph5GZUMbRWBNC2ujL0bBYc5Mk7WBuoDobJJ2wCCoOqc6NkEDpYrtvvDba++eHs2mnqdtbht97BU62GpcRaW3k6TBAHHWWqrw1JTYuk6fYUxzoqo+YsxI4Pzh8yLnupCPr6nNz668wRMW5fz3D8YMK0bFSed7M5+9et0Kspnux+LeD5OMpzD4ElkxxnBPnvEZ9redK2LpqxqXr2UVi9/kpH2BEYqcipia4qfiujyZYJ6ufvIVpxwdu9xqpcYWSDnZUcvdTnE6l7GumjM1scOum4bGP8zH7tsNDDljcefiMYyR9nwqGRS7oWb9uei/vUty/74O69Y7zF1goKgDDrSBJnB/K7WMn6v7b15dn3Za/2vUpVnrf8ZzVz/Bw==</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T09:31:33.639Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="ERDpGR00JX-A4iWMYYGS" type="device" pages="1"><diagram name="Page-1" id="74b105a0-9070-1c63-61bc-23e55f88626e">7VvLcqM4FP0aLyeFeBmWHbe7Z5Gu6pp0VS9TMiigCSBGyIk9Xz8CJPMQdkgax5o23gQuQo97dM69ksjCWqW7rxTm8TcSomRhGuFuYX1emKZpAMD/lJZ9bfF9vzZEFIe1CTSGe/wvEkZDWLc4REWnICMkYTjvGgOSZShgHRuklLx0iz2SpNtqDiOkGO4DmEjrjdPYf+KQxcIOXL958CfCUSwa90y3frCBwVNEyTYTLWYkQ/WTFMpqxCiLGIbkpWWy1gtrRQlh9VW6W6GkdKz0mXyP7WVHF9ZtzNKE3wB+WT3+cuRlMOZlPi6KMtZu7mh9xsZwXOgHrmUhFwR/AE9pAYXcreKWUBaTiGQwWTfW28pTqKzS6HYHZeGnEkl+u0lI8FSbvuBEFvgbMbYXUwduGeGmpok7QnJRrmCUPB1ANCsLpExWXuEjbKJ2Y9Ab0n9kSwN0zAVirkIaIXakjFmXKV3Tqlj4+CsiKWJ0zwtQlECGn7vzFIqJHR3KNQjxCwHSWMDqOp9hshWtfENFUVLDNH5QmBW8A4QqoKoODWERHzCECY4yfh1wzyHKDY8kYwInULk/hnl5k+6iUj1uEM5v0rrhB9Y0y1/kcKxIUl7zdq3AeHSgz+3PiDLMyXoHNyj5TgrMMClb3BDGSNoq8El0hZWT4TikZXG0OwmGeGp5Aj2ha44vKPnS0ghH2OKWPMhy0+LnXz3hzBGEc6cmXPUqHw7ctwrkBGesaNX8vTQ0U8dzulPHtZyuvL5S3raN3mSpe9BMncNQ3jebBqLLPJvUMp428j0Q0WfABlTS/i3473nO4rz8V7KBv1CAc4yqXt3hgk2eCUwc4IcSCyrH8JCUI5gkC3AtrbKA5dXLgD1GBrTRbftE2r3OwrzWgTMl3bRaLr+XYcOE/XVGgaVOjHIUgF6BA7wFDk9Fo+fWx+p34FDriVH9hnlybJqNBkEEGImB6SgQ2AMI2OdAYMDj16Zp7hhNM7QRNTlbZsROI6bP7o85b9dJ/pyETI/lAzDdZUeeLdDbnu29YNony0+/fnA1Tmvq7KWf0xySnWPrkKRXzaEbE6Q8voxxEp/lJVOe5W+R8rhvBUGnlMe6ejn2xgRQfdZxnsaCd6F1XF/U3IuKmv+xova6Pnlv9adG+iRzpfm0cPyuBvB1ivFSOmcE34/gZQVNfmNyxTmCXECfThIsbZIE2d8W6T6jf2DITXfcvZwwprGKYZaVX1D9YnBqYXskTrUpGCIY1l2Q7Y9gWrUiuj184jSUwZ+NjH5vRes4A1w0BrhonoWL87GLpNlpLjr6cNFSuLjOnlFC8jIC/uTMyNH04e8DDjmRGMXDixjDeYKfA9T88wODnz0TbtRB5+TfO72fcOpR5/+RXgFJc1Kg8EFmrTklAb8kZ9oK9OyLJpl6flWorCo+knfOCN5pck7gGJqfEwD1eL1Zht7zlSCaXCMm1AIpAUXV0TN+EWH3PzK6aPAFp0535r2DUenTZWXdUvfvfmCWqGTjw2PKQYyQ07aXhWl40cmTNXEvKgYDrk5xGFbRQ5kGE7jfMzrOH/S9P83mKb9t/mmnlsjm36Ks9X8=</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/software/entity_relationship.xml b/src/main/webapp/templates/software/entity_relationship.xml
index bd662ac5e87c425a3284e8780a28a4f989acef93..5cf70fa908772a9ab2f94a698c96e6abf42eea68 100644
--- a/src/main/webapp/templates/software/entity_relationship.xml
+++ b/src/main/webapp/templates/software/entity_relationship.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="e56a1550-8fbb-45ad-956c-1786394a9013">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T09:36:31.548Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="2KlHqx2P2_d5D9wofmYJ" type="device" pages="1"><diagram name="Page-1" id="e56a1550-8fbb-45ad-956c-1786394a9013">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/tables/authority_matrix.xml b/src/main/webapp/templates/tables/authority_matrix.xml
index 93187c4e17f1567b8bc9b140d4a65f8e46caebbf..26bb2d3eb967a26695a816baa4118bcd13eb1056 100644
--- a/src/main/webapp/templates/tables/authority_matrix.xml
+++ b/src/main/webapp/templates/tables/authority_matrix.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="bd83a815-5ea8-2e97-e5ec-87c9f400f2fa">7V1bk6I4GP01Ps4WEK6PY8/s7MtWbW1P1T5HiEo1Ehex1f31m0C4JaixRkkEux9aviQknHPyhS8XewbeNscfGdyu/8QRSmaWER1n4NvMskwb2OQPtZxKix0EpWGVxRHL1Bje4/8QMxrMuo8jtOtkzDFO8njbNYY4TVGYd2wwy/Chm22Jk26tW7hCguE9hEll/c1p7P/EUb5mdtMNmoQ/ULxas8p9yy0TFjD8WGV4n7IaZxZYFj9l8gZW92KPulvDCB9aJvB9Bt4yjPPy0+b4hhKKbgVcVS4/Va2dgfk63yTkwiQfi+TfzxQ2ZQqTh8tQmrerO3s/x3SR6SMXLAOwCNwvjPhPmOyrCvgaD+s4R+9bGNLrAxFQtwkFdoje3yBXNTzFRZ7hj5oPmnmJ05zJx7TZ9RtOcFZUBYzip/e5GBKfKMvRsWViz/kD4Q3KsxPJUqvaYNCfKjHYzHBoFOIy07qlDYfZIFPlqr53gyz5wMCVBNoRgP4bJTCPcUqs/nhAdyVAr/3Gw1E3rev6ztZ4s9iTWuf3Ah1QkOMk6QN5UDJMhyPDEckAPVyAh3AxJV9jBAp9jXnR2XjjQZ13Nn2oD+hs/CkJXOVgagaXBO6OB3VB4EpH0+pddgoCD1Q68Lr9vfp2xgO6ex30AeUt8bL4tEjz8lbpvi1wSd72eEDn5a3We0/o/dtX6r0vvn6D8YDuXgd9QHm7E5K3Uu/tXZL3iEDn5a3We08ouPSUeu+LsaU4If+0oLvXQR9w7qRH3W5CapzncEGgtowFziJUAuH+u6fLLXOz+dhpd51OdeV0MoWkHVsYRXG66mS1O7kaeisju/lXKgF215KIGpqepLLJX0KcJHC7Q2We+qpVobtif8snXuDoJBiz3nY1y1e0GioUWgfRCvTCwLbqpnQTqxWuTjvZI2yPtCKcEKqKvIG/WFrmhdauK8tPuPvYVWaigCZFzPsX3sVNl7q1iHV7EXB7Efv2Is7FItSYyRL7S5xEmomFSoOnOuprtQjY/bItBOw1KXiTLs5xiODSisCd+rSm+rFuxP+ln2n4FXAjri9dvPxKWz/2jfi/9DMNv+JoT9ETFXx5I0nVudpT+UQFJ+/DPO0peqKCLx8mqTpfeyqfqODkfVigPUVPVPDlw2RnKw3tuXyigr2yo8a+1Q5qL9d9Kju36pajI7W3FtrK1bTWallo0N+ZsBWfKQTM8SfKlkmxHEezzM4u1g29NMfv+qyuWytzzVbn9tKcW+W869qcuFvrZ5xTbvo56RKR4hRxHDBTi7sWuFYF7ju7MU2n2MUhTL4m8Soltk0cRTRxDpkhJGjTbn6JwTswA/iFapEYz+/hxX4ELRL7Xcgd4mLh8b5HWxQeYfENEfLBTrCIG180Q/zcoaOHMKHyLJHEZpg8i2G6Su5OxS+e64riDIXFajF1hBm970PoCVTSI26hUURPPdZrR49KP1bt6hliL9k9SHkEAaahlIG+/U7DMaDHaVRD6WlU8a1WYGCQk8F69AZTZW8AEr3h6V9lA9vtQO4EjkLErQkg7njdaM32VCIu4W/GGzzU3wJRUWF6CqmQOAg1Wip4N+Q6KjuFeFJKYGJagQLvszylPktiimla9Hjc1CxQ2nsk5qMmNgtiAl+j7vOapbrSfbyeCfTh6NFmlkoXeoDP0WMq7D3VG+OEJql4/K3qTVUJ/mqnqFTgz798qcVfIkQfGf58bEIMCvGXCNhHhr8QpjtKO8CA31eiyRw5PwAonSO0JYLzkeHPOyCl01T2gF9oogn+ggNSOwJIxNejXSLiQzW1Q4FEJD1aJoSoQGmfkAiaR8sEPzwojY8difh4vF9tzU/0KV3GcCRC5dFSwQfNSqfEHYmgebRM8EO20ukLR5f9NTow8cCBglw2/3ykSGv9jxfw/X8=</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T09:50:41.717Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="iH923w-ZDJFaEfNjTI3v" type="device" pages="1"><diagram name="Page-1" id="bd83a815-5ea8-2e97-e5ec-87c9f400f2fa">7V1tk6I4EP41ftwrILx+XOf2dr9s1dXNVt1nhKjUIPEQR+d+/RFIBBJ0Yp3QRHWqZqTzytMPbbo7cWboZXP8nofb9U8S43RmGfFxhn6fWVbgmeVvKvioBbZv1YJVnsS1yGwEr8m/mAkNJt0nMd51KhaEpEWy7QojkmU4KjqyMM/JoVttSdLuqNtwhSXBaxSmXPqb08j/TuJizeSmGzQFP3CyWrPBfcutCxZh9LbKyT5jI84stKxedfEm5H2xW92tw5gcWiL0bYZeckKK+t3m+IJTCi4HjrcrPvhsZ2i+LjZpeWGWb6viP840NlUalzeX46xoD3e2P8d0seljFy0DtAjcL3bdw3uY7vkA4oiHdVLg120Y0etDyZ/uFCrsMO3fKK9O8FQXRU7eTvqglZckKxh9TFuePLvdd5wX+NgSsZv5jskGF/lHWYWX2gbD94Nr3GaCQ0MDl4nWLQI4TBYy6q1OfTfwlW8YgopoOhKaf+E0LBKSlVJfM2RdBWRPFmBwaE3rc6bma7JZ7MtR57dCFlFkkzR9ISnJq0GQUb0GQdx0BMQdGXHUAzgaBPC7Mw1GAGgazIu2wdMMWtE29EE7om3w746qkJ9iZnCJqq5m0EpUBf0Y48vBu6FqAGlUT/PvZaqjGbLu58iOSFSF9da04RSJCmlSLXSJqLZmyIpEhbWo97ZO9UEt6sVlKtIMWfdzZEckqntvRAW1qN4louqGrEhUWIt6b+6UB2pRL3pTcoB32si6nyM7ot/fw1M3LUecF+GixNMyFiSPcR24c//Z0xj93GzeduZ9KqfkcTqVonIe2zCOk2zVqWp3ajU65ELW+VeqZ9arUdfl0PQU1VP+EpE0Dbc7XNc5XbUGdFfsb33HCxJ/SMK8d15NzoMOQwObdIyZhUIvCmzrNJVuIU+LdObJbmF7pAORtFRVVTfwF0vLvDDbNZf8CndvOy4uGdCUyHX/JLukeW6ubWJd3wRd38S+volzsQkV5qqK/V86iSdGFkoNUdVx36xlwG5XbSFhP5GGV/HinA5xuLRidKNneqL8sa7E/8mfx7Ar6Epcn7x42pU2f+wr8X/y5zHsijN5FWnU8GmNFFnnTl6VGjV8eBvmTV5FGjV82jBF1vmTV6VGDR/ehgWTV5FGDZ82TDVaaUxelxo17KUdFfZlO6i8zvtwuZBaK/CRylvZtDpl1trdHRn0Zybt+mYMQXPyjvNlWuXcaJXZ2YycnH+rr/u2kt8iNSfuc+TXrcxcs023nZpzec2b5ubkDU+/koLqpl8nXUVkJMOCDpiopbsWuBYH95V1TMspdkkUpl/TZJWVsk0Sx7RwHjJBVKJNH/NLGryBZpCYjZYV4/k9erGHUIvCHpSyh6RKPN72FMXQpyV8Q8Z1tMMS8mYUEFjPH1YZBHHI4ykKe1SKPAmzVXpzyJXOA6F5nOQ4qlK81HrltP0gaggg1SBvbhlNDVBwQ9oZvrVmjK1Zo1ht0wCFs28H0ZBwgh0lNECPEsqLQQnmgc5uDn9GE5K/SIG/eiznAtvt4OoEDiCs1r3A6nhd38P2IGFVMAP6r5JPx+Q55KYHCLnC4RjtIRdth+tAklw+QCMhrveKWLQpHqhNUQho6A23JwT2ECi7FQIdd+p2m8ifEO0fNvwhPg5eTzh1PDUAhj9g1YB8QQ0m4NPAV1y6RkVEMC2+bAMBc+yYyMAuDyyYCp7klMEUl9alABBMBf9xQBN7SgHfPKgkuowOKGVH/D6FMWOiopEFjTDZCl6ijiCL9gI0+GGP+IULo0b3RXsBa5UVXEI9gvuiawFrhhU8PD1glVa3oGxV8Nj0gFU0taAemKPggWn+7axi/Ac0yuwoOGl64y26caBhT0fBjdMbbvGzD9RrduD2CwDBPaDxLi+bb6evylr/AwB9+w8=</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/tables/gantt_2.xml b/src/main/webapp/templates/tables/gantt_2.xml
index 05a1138a5742cd730e18834e2efdd670e46d0313..d528286a406f3b26065dcef32f8bfe960d764bc8 100644
--- a/src/main/webapp/templates/tables/gantt_2.xml
+++ b/src/main/webapp/templates/tables/gantt_2.xml
@@ -1 +1 @@
-<mxfile type="device" userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36" version="8.6.5" editor="www.draw.io"><diagram name="Page-1" id="fc2ac565-0d4e-3f0d-88b0-a54af1634ed7">7Ztfc6IwEMA/jY/XAQKEPLb2z01n2nvwZu45xQiMSJyIVe/TH0pQ44aTh4KRyouwCQn+drPZDWGAhrP1i6Dz+I2PWTpwrPF6gB4HjoM83yt+tpJNKbExCkpJJJKxlB0Eo+Qvk0JLSpfJmC2UijnnaZ7MVWHIs4yFeSmT91Ih+EqtNuGp2uucRgwIRiFNK+mdd5D/ScZ5LOW2Tw4FP1kSxbLzwMFlwQcNp5Hgy0z2OHDQZHeUxTNatSUfdxHTMV8didDTAA0F53l5NlsPWbrFW4Gr7ss31dMO0EOcz9Liwi5Od8XPNTfbTW4u/pxgmUK1rj0sOX3SdCkb/E0X00ICe6JpEmXFacomRdsPi1zwKRvylItdORrujnPPI9v9ZCJn6yORfL4XxmcsF5uiiix1CL6zjg5UNlCZpkvuyNGBpRpXB6Uj+6RKWSM+0r5jKV1YtittUdphtH+qA8viROLUow2sOrSOQWhVmFjl4CAIs7JfFd8X4Kq1RGQOLl8xJKLCI03gKVXsdlCSWstzrwNlMY8onFzvYihrrdIzB6XqH30VJVI5+cFZ/+i2g9K2as3SvxKWnsrSOz/XtMTSqSP5TmcMwJwkaXrE7nl36KiWf2tfUgVOW7gTnuW6mlv5SHZltT9BIau7GcnHIbFc16GWRSbIIz+cgFy7BWNTLBjCrZ+1rgUuMRiuDeCaAtW3T8a4B8d44LY0xl2A5ZVmPXKgAK7GgeLO/CcOAO5n9tEn3IFRuOF09UZFj3BjzyTcmoT/ft4n3Ps1MjNwwyntjW76hLtB8NshbphzvC6zPiUbxDeKN9LwTvtk37aFjAIOY8H7ZdQn3rZlFG+4tDZi87xXwLFRwH0A/FfYK96OaxRvDHi/888+8UZGZZcBzC4fWdgr3kallwRGhAC2KWtKGIJqbU1JQwrGcsaSIpclBYMwU0ntN7tciBQMn4wlpXFTXZKCcY+xpLpc+9aQghGLsaQu7NFhrGEsqQt7dLgIDUit4iRnozkNt9crQecqFDX+2u54O4nh9iQjQccJO8RmGc9YFZaVmxRt9z/hW6WxsGiCCZ3O5GaVzl587SeZ1hWFNNszbooqWZ2G3RrfY3c2olC11+mmqLMvKDSur7P8CFX7PG96OvdmQxdKd+n5GqRn31NRYMlYF8p36foapIc3TdWmEl2OqQbp6TfV1OkqtS6V6XJMNUiPv6mmTtdbdanUF8UTxeXhm6Fd2dG3WejpHw==</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T10:05:30.520Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="lzuw0eCPzg_FOu0AWovW" type="device" pages="1"><diagram name="Page-1" id="fc2ac565-0d4e-3f0d-88b0-a54af1634ed7">5Zvdc6IwEMD/Gh6vEwhfeezZj5vOtPfgzdxzihGZInEiVr2//lCCGjeMPBQSKy/CJiTpbzeb3ZA6eDTfPAu6mL3yCcsdD002Dn5wPM/1UVz97CTbWhISUgtSkU1kpaNgnP1jUoikdJVN2FKpWHKel9lCFSa8KFhS1jL5LhWCr9VqU56rvS5oyoBgnNC8kd4FR/nfbFLOpNwNybHgF8vSmew89qK64J0mH6ngq0L26Hh4ur/q4jlt2pLDXc7ohK9PRPjRwSPBeVnfzTcjlu/oNuCa98ptM1oH/5yV87x6cKvbffFTy8tul5erP06wQqHa1l4kOX3SfCUb/EOXH5UE9kTzLC2q25xNq7Z/LkvBP9iI51zsy/Fof10aj2z3k4mSbU5EcnzPjM9ZKbZVFVnqkegOnVy4bmDb2Cq5IydXJNW4Piodu2dV6hqzE+17SOkCub60RWmH6WFUR5bVjcSpRxujNrSeRWhVmJHKwcMQZmO/Kr4vwNVqidgeXKFiSESFR7rAU6q4/aAkrZbnXwfKah1ROPmBMZStVhnYg1L1j6GKEqucwviif/T7QemiVrMMr4RloLIMLq81PbH02ki+0TkDMGt6TRi0QzXlRTmWFVD/ywpGw60jYZQQ5PseRYhMcUB+eDG5druLbLE7CLd9rbkWuMRiuC6AawvU0D2b4wGc47Hf0xz3AZYXWhh3ewCJxu1Fg3m9KAaQnti7eUixVZDg0vBKhXFIUWATJE0ie78wD+mwY2MHJOiqX+nWPKQOodiAkGDc+rIqzAesJLSKEtZQys3bkouwVZhgFHC/Ss1TcpFVlOAGxpgtSgswRVZhCgGm34kFlDzfKkoRoPTGP81TwlZF3jGMvB9YYgElq0JvAmMBgMiW3DaCoHrLbTWkYDxgLSlilhQMCWwldfhUbogUDAusJaVxU0OSgpGBtaSG3IPTkILRgbWkDHt0GCFYS8qwR4cbdIDUepaVbLygye55LehChaLGWbvzMtMsz3UkU0EnWYWuKSt4wZqwrD7i5PrVc6OZpKrKhE438pP2YBvth8Wkd4VgzUfcW1PIeRit8SXuYDMENycfblchYCNY47IGy2twc7rrhvVBLoe6Q3qsDunT91YI2JLUhdRDuqwOadqtacTwqt4hHfzmGjnfadWlCEPOkQ5p5zfXyPl+pS4V+aJ1vXo8ntjfl538YwR+/A8=</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/tables/gantt_3.xml b/src/main/webapp/templates/tables/gantt_3.xml
index 9b88ffd290a721217bf439d02043b632e723adf8..309a6278be3940a810315a0dca2a570bbb3b903f 100644
--- a/src/main/webapp/templates/tables/gantt_3.xml
+++ b/src/main/webapp/templates/tables/gantt_3.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile type="google" userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io"><diagram name="Page-1" id="2c4490ee-f0b8-94ab-5012-d5dc3445f7a3">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T12:04:00.233Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="OzTxXxoddgz50P7MfJqS" type="device" pages="1"><diagram name="Page-1" id="2c4490ee-f0b8-94ab-5012-d5dc3445f7a3">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/uml/activity_diagram_2.xml b/src/main/webapp/templates/uml/activity_diagram_2.xml
index fc69b2c73e984d3febc7360bba7921275c126f17..31fa8c84da63169f473f80cf4603f143e1147f80 100644
--- a/src/main/webapp/templates/uml/activity_diagram_2.xml
+++ b/src/main/webapp/templates/uml/activity_diagram_2.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="0783ab3e-0a74-02c8-0abd-f7b4e66b4bec">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T12:48:40.236Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="UfPuHGeq7MzihYL20yvm" type="device" pages="1"><diagram name="Page-1" id="0783ab3e-0a74-02c8-0abd-f7b4e66b4bec">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/uml/sequence_1.xml b/src/main/webapp/templates/uml/sequence_1.xml
index 4e245f1d0ed5d1e5d6e4dac4201e0a485270dab1..4e8705e1260a8af026b1311ee8f2a7fdaafe0c70 100644
--- a/src/main/webapp/templates/uml/sequence_1.xml
+++ b/src/main/webapp/templates/uml/sequence_1.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T13:05:06.827Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="kniaNUm3a3g4DOL8fkD4" type="device" pages="1"><diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">7VzJcqs4FP0aL18KEGBYxhleL3p41enqYSmDbNORkUuW46S/vgWIScK2EluYVPAmcDWic+6RdAWZgLv163cKN6tfSIzwxLHi1wm4nziO7VoB/5NZ3gqLH4aFYUmTWGSqDU/Jf0gYLWHdJTHatjIyQjBLNm1jRNIURaxlg5SSfTvbguB2qxu4RIrhKYJYtf6VxGwlrLZl1Qk/oWS5Ek0HnkiYw+h5SckuFe1NHLDIf0XyGpZ1ifzbFYzJvmECDxNwRwlhxdX69Q7hbGzLYSvKPR5IrfpNUcp0CkzncA7tyJ1HznThzq1vTlHDC8Q7MRYTcPvb/N9slIses7dylHjnN9nlbo1/ThYIJym/m20QTdaIIcpTsDD/qG2z/Sph6GkDo6zonvOH21ZsjfmdzS85pAzyIrS6xxhutsk8b9XiFoqiHd0mL+h3tC2Yk1nJjmUt3VWMyLNmSKBYVFUNtpXXu04icY3hHOFZBd0dwSRrPiX5A20ZJc8VD7KKFryPj3Cd4IzefyIawxQKs+CyzYdtBnGyTPlNxMHIH11FRwD2gihDrw2TQOs7InzY6BvPIlIdVzBHeFYgbvcNmpYsXTUY6pUZoXCNZVV1TQ9+IRiiyZbSX5t0kVnSwHZDkpTl7XuziXcvkYVQtiJLkkLcpEsNoTVMCA+6kDamrteCtMKvhakKqQNMQApGARi0ALjWoASggy5fXgDAuzGVBMDRFADLBKTuKACDFgBvUCsAb2TLoNniB0Niiz+yZdBsCZwhsWU6smXQbAn9IbElGNkyaLbYg9q4hOO+5aAHmQ5cuK6RrWjH4uKrQfr+zUTQhtDR3HraZqIJ6owfJ9sNZNHqGJTZ4yYRxLdigOaEMbLmCSiNb7PTgMyGSfR8EhtNJFC8RE+iKwjPyf6hNsxyA08oe3UMqC3Z0QgdGg0RR2CQLtEhny1Zn3XpKOAUYcj41NNqvws9UfRH5h8NothWN1HKKopHEaVqDvDxh2+NbMLtDrbj+t3t1JQqaqwJVj3jBzk3zgTvl42pI8kG0FR+E6pRMtGgavCRom9/C5zym3+0QBuWnvg6ehL2oye+Z3Uz6ISeXMLlK77XhKGI7Wh6Ll3IBvGkWQy3q2rpzpMF1MEno0s4oOlHpguw/HYVRS/Pnn78qURLXzo/l/JPraP5Lz9dlbPTOF2dscqtNiCnVrlm5iv1zOyTzVcfExQdPSnZ3Pdy1tVczl7EhTvOTIbrwqVxwjU3/3U7d4JxI+dj/tMnVHbf1ZChOJSkBr6eGhh53cJRoxZfQgxKzh9XA68fNQiBtLqQdd+kGqgxj74Wo+g1YRUv+HVOi5vQuzIzvAHNEzIzXFtv3XkRZnScaAx3nhjIUi+QFvCepyfuvhFxV2NLn0zc+9lqgqmOywf9uHxgHWBQD5MBUENZY2TiIBOO0qWnOJbMFt8xE5jwJF3zLdNxcTVINmrXB3e15YRjmoyO9PqOHfYnXbb63ujIlyNcOE4Y0A9hgBzulN8oNjnXdbxoPC5vT0UyQzkOrre8nZpY3gI1kDXM43rVd5u+XnOn6fDRjr40lkpCeeyW8tw4gV8aGryrNtR5iRsLlJvtohBwPXEvl/mgouic65XeZlpRXP/AyfAJRVEXPOGJii514iMfRAbO0X4pJ1GmX1AA5iOEQ/Gy2mV8v+UyUz4hXtJl+vIG3+bu3vy1qaO5szzpGyAIe/GNssPaviH6Zc43Ol4RH9cQ71xDeJrv/Bk5DAXmQ2RDUbcrryGMH6mGXkvr2hLlWVKFulrnW9axakHYSnV70cHyYXR10AOGddBV44a/EoYUDyq/e0izxJMfNIhvFPjOXnU4RjYNecJowbICvKokXf6Rpd1/86+snucrpfzJQudbjl0nxZ4BpXTVgNyI8fkYy/9Q47oYOyPGBjCW/2fCdTFWX/8aMb7AqnZQfqzGNkeMz8dY/pj9uhir0c8R4/Mxlj9Bvy7GauxtxPh8jOUPxw1izG/r/6ZXbLXqf1kIHv4H</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/uml/state_machine.xml b/src/main/webapp/templates/uml/state_machine.xml
index 59d887e99240a333c6d8f90f1b309222d8bd0433..fcd0ac6493d844bb98d91ae96cc2744f61ab3162 100644
--- a/src/main/webapp/templates/uml/state_machine.xml
+++ b/src/main/webapp/templates/uml/state_machine.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="58cdce13-f638-feb5-8d6f-7d28b1aa9fa0">7Vtdk6I4FP01Pk4XBMLH47TbPfsyVVPVVbszjxGCUhOIhXHU/fUbJAgkgDQNSqu+NLkJIeScc3NJbs+MebT/lqD16jv1MZkBzd/PjL9mAOimYfI/qeWQWUzXzQzLJPRFo8LwFv6HhVET1m3o402lIaOUsHBdNXo0jrHHKjaUJHRXbRZQUn3qGi2xYnjzEFGt/4Y+WwmrrmlFxd84XK7Eox0oKhbI+71M6DYWz5sBIzj+suoI5X2J9psV8umuZDJeZsY8oZRlV9F+jkk6t/m0Zfe9NtSexp3gmHW5wXDAwtUXEOr6wtcC+4vo4Q8iW5y/wnGg7JBPDu+B48ALzysWEW7T+SV/kXVav2EoYW8MsbQ+CAmZU0KT442GdvyljVlCf+NSTRCImuPUYb/oNJudtMqjUeiJa4IWmDyf5jrvKabx8bE0Zq8oCknKvn9w4qMYCbOgmg5EuW50iITLmNs8PoeYVz77YcJJFtLUuKHbFMJndaLzmcMJw/uSSUz8N0wjzJIDb5LXGoIEh7wMs/KuoFzeZFUiW25DguTLU88F0PxCYN0Rd6jg/pW/8p+QHRT8qxjtViHDb2vkpbU77g6qvECJJ+YcmCojUmV47YyYCAcGwBuYVbyN3NuV8NZBDeDWGIBbD8AvDfgJ3IsA7vnY8pHvWCbSbYS+GKoj9/miJ4o0YSu6pDEiL4W1jCveh+xn6fpXisoTgGkx5mP7KZV/dUINx/7XdL1OR7DGcWYReDmtNOmId44rwQFrQ5X79cTDDVqxRQiCkiVmDW1EgJPOaSs3EkwQ11k10BhU2fZD2WMr25SUDbRrKtscRtnakw3L4i4rW6/I+gneiLDdDsK2hhb28VY+OehQarCmYcw2pZ5/pIaCcY4jrSVQkziT9Vgw6DS0fqTS29cLTBZ0d45QlaXChi2Esu+JUXncN4G1wn2sFWOvFbY7pbA/f/gD8fEQh+CaiMuOHPb245/QHwNkLDwANeQFmqXb/rRD96bRlsQ555OCwphTU0Zxswsjgo5QnJHmIJtqCpzSbl6+T6rXiz8IpqlVF1akarrqHpxbtwl3ivgH1WruKG5QrE1cb42mnBr1KnM2mWDKeSyt75RrowPsvsemVwVsqfodbakFZuBajq9rLrZ9a2HmW2y9D09STd7W0ckYkDsS5I4aXY12bCI7H/eu/bXSxugQbTmTibY+Ktf7Pev8uIjt6WhY11XY70jETQFVa9AFrhZ0NYz2EXRdcAU2teoGxyWDLpUANV77nuULVPk2BaoTkC94yPfi8oXOFb+Z5NGrH81BgiKsoJ8HXduIvB4bPLa9PrDtJaWe1WSe6RqsoYBtwhE40P4VdfYAe+puvMu5YV3QNfpJdG/AzuxTfjLEivylmZLl0A9NqwOa9tBo9sorMCRPkHuGofIKVOq0f22dz1Ypks3siSebFYk15bwavTerupxlwVFYpdBGOeKUj0OyFxF3FXx6Lz2h9KUBXCmf/Ryd3bHp3P718Y7kK9CYfCWnVU7Pg/bjM/xca94oCbTwzPpzLzhfLydKBXqwfMqu6ZQ3k/2Wo3jZwKc/0u25McPkxFehBncF9fWS4uV9JqsV6c+zSdgY/nYOK3ulSF0orDSkvHqoSdsNDWHl2Y4MR4pPs7dVOhoic9q+Pao9mDZJpjm3wrT6j6D+X8o1EWcTGUcnGpSIpvclmtSR4Q5FNF4s/uM8a178W7/x8j8=</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T13:27:37.422Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="HaUdTRW0XEFvmy509yEn" type="device" pages="1"><diagram name="Page-1" id="58cdce13-f638-feb5-8d6f-7d28b1aa9fa0">7Vtdk6MoFP01eZwuQfHjcTrbPfuyVVvVVbszj0RJYo1KipBJZ3/9YsSooMZ2NLGT5KXlgoiccy5XuD0z5/H7N4Y3679oQKIZNIL3mfnHDEJgGa74k1oOmcWxpGHFwkA2Kgxv4X9EGg1p3YUB2VYackojHm6qRp8mCfF5xYYZo/tqsyWNqk/d4BXRDG8+jnTrv2HA19IKDKOo+JOEq7V8tItkxQL7P1eM7hL5vBk0l8dfVh3jvC/ZfrvGAd2XTObLzJwzSnl2Fb/PSZTObT5t2X2vDbWncTOS8C43mC5ceGCBEACLwFg6X2QPv3C0I/krHAfKD/nkiB4EDqLwvOZxJGxAXIoX2aT1W44Zf+OYp/XLMIrmNKLseKNpHH9pY87oT1KqWS5lzXHqSFB0ms1OWuXTOPTldYQXJHo+zXXeU0KT42Npwl9xHEYp+/4hLMAJlmZJNQBluW50OApXibD5Yg6JqHwOQiZIFtLUuKW7FMJnfaLzmSOMk/eSSU78N0JjwtlBNMlrTUmCQ15GWXlfUC5vsi6RLbdhSfLVqecCaHEhse6IO9Jw/ype+VfIDxr+VYz265CTtw3209q9cAdVXmDmyzmHls6IVBl+OyMmwoEB8IZWFW8z93YlvAGsAdweA3D7AfilAT+BexHA/YDYAQ5c28LAwfiLqTvyQCx6skgZX9MVTXD0UljLuJL3kH8vXf9IUXmCKC0mYmzflfKPTqiRJPiartfpCDYkySwSL7eVJh3xznGNyJK3oSr8OvNJg1YcGYJgtiK8oY2XtUnntJUbjERY6KwaaAyqbOeh7LGVbSnKhsY1lW0No2zjyUFlcZeVDSqyfkI3Imyvg7DtoYV9vFVMDj6UGmxomPBtqee/U0PBONdV1hJkKJzJeiwYdBpaP1KB9vWCRAu6P0eoylLhoBZCOffEqDzum8Ba4T3WirHXCsebUtifP/yB+HiII3hNxFVHjnr78U/ojyE2Fz5EBvaXhg2cYNqhe9NoS+Kci0nBYSKoqaK43YdxhI9QnJHmIJtqGZz5bij4OIxDKsxDFYFZnr5z5tVtnZ3i9EEVlsv7BiXWxNDWGMit0Zw2Z5MJgdzHgvjBBbHRbXXfGQNVAdu6fkdbIKG19Gw3AIZHnMBeWPnGWO8jj1STt3XgMQbkrgK5q8dEox12qM7Hu2t/rbUxO8RI7mRipN+V6/2eUP6+iJ3paBgAHfY7EnFTQNUadMGrBV0No30EXRdcgS2jui1xyaBLJ0CN175n+UJdvk2B6gTkCx/yvbh8kXvFbyZ19PpH85LhmGjo50HXLo5ejw3ucLNKSfOqyfICBqoBzrHQCMi1f/ucPSyeuvPtckZXFyqNfurbG7Azu4ufDLEiV2imZRT0Q9PugKYzNJq9zvBNxRPknmGoM3ydOu3fSOczQ4rELmfiiV1FEks5hwX0ZlWXcyM0Cqs02mjHieohRvYi8q6CTx+lJ1K+D6Cn5I6fo7M3Np3bvxk+kOgEGxOd1BTG6XnQfnxGn2vNGyVZFZ1Zf+4F5+vlH+lAD5a72DV18WYyzXIULxv49Ee6PQ9lmPzzKtTwrqC+XgK6ujtktyL9ebb2GsPfzmFlr3SkC4WVppLDjgxlu6EhrDzbkekq8Wn2tlpHQ2QpO7dHtQfTJsk091aYVv8R1P9LuSbibCLj6ERDCtFAX6IpHZneUEQTxeK/u7Pmxb/Qmy//Aw==</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/uml/sysml.xml b/src/main/webapp/templates/uml/sysml.xml
index a7365c390a82f93d0f11ba81f23c9c8685788c51..4fe0e428a44795c7cf6d8b07acb5b99cdc7a6050 100644
--- a/src/main/webapp/templates/uml/sysml.xml
+++ b/src/main/webapp/templates/uml/sysml.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="929967ad-93f9-6ef4-fab6-5d389245f69c">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T13:31:57.080Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="x9VPHi1iGFllJ0mvALaz" type="device" pages="1"><diagram name="Page-1" id="929967ad-93f9-6ef4-fab6-5d389245f69c">5VvbcuI4EP0aHkPZlm88hlxmtipTlQqT2d1HYQusjWwRWSSwX7+SLOMrhjBmxmTzAFardevucyThzgjcxJsvDK6ibzREZGQZ4WYEbkeWZdqGL76kZJtJ3MkkEywZDrVSIZjhf5EWGlq6xiFKK4qcUsLxqioMaJKggFdkkDH6XlVbUFIddQWXqCGYBZDk0rFTyP/EIY+03HQnRcVXhJeRHty33KxiDoOXJaPrRI+Y0ARlNTHMu9GrTCMY0veSCNyNwA2jlGdP8eYGEWnY3GZ5O77NJzoC04jHRBRM8aiq7/c0No9pLNbFUMLLw+3tz/Ws0HVtGywmJpo7V3qAN0jW+QCWS0Rf01VlXPd1LVc4jSFb4mQErkWtsdqITzULI5NfcbrK6uxmHUELnlWa5ZYcbfgVJHipe1Vqu/HE01J/q1nNcwFDr7lMLHde0oOxmMM0mafya+RMV8K5MnQcsQzj6+z5xxN6XWOGYmGzVNRLkaiZrVCAFziAHNNEKe96XxW917xRckXKGX3ZxZ2SRHAl9eLNUiJunG7TmIzz6VT8SN8QWxAVVwssPAam7xHmaCaUZQ/vor2QyaobSigTIhWiYCp6DrFYSE28oAnXCDVlyGj73gZCFQm9KYFzRP4SEmB5Y9duDaU8NhATPiqJdGh9QTRGnG2Fiq4Fppc10QxiTTQi38tozBERlZDoOloINQksd50X0SwedEAfGdxWI7ilr6uOrns0d5qkH2UpDue5U30jK+84xNKCR5pi1Ru4zaK8JRpK3m7zbcNDdReqsp6n2YOzbFB1FnBanOW2+GpyDleBvTy0g/YTWuAEhdPtHtwrWYjfGlRAOkpKc52iG5iiqlCTxXNWlyq+kvx0HQSIIAY5Ks2jMuyeiEool9BMtU+dktPzoBEhgZPlgyrdmsbhqMnCLAf/yAKG+msNwDJ7CM2F+msJtB5iy3drseU2Y0tMtYUHzhFbJmj4BIXi6KCLlPGILmkCyV0hnarTAJJd1tzwD+J8q+0F15xK9t718EDlBqj0UBJey1ONxDRmAUGPZJ1m8ntF8bdGl7FTumYB2rMiWx+vxMaK+B4dTX5ypZ0uY4gIJnyrHq3a7K+aiiXBbUlhRbHcRYueH6WgxDJeNRJs36keUGr6jtmpLx6yGRSRsFvKacFhdx2ADhMJK84SdfqolVoOE7Vx7gJ6dc/Ebh4SQXRpetQJJGcXpo7UHz9TtO87Pe4zYFL1qAOO3Gf8s3CB0ycXHIfxYxnjNC5wLoYLvG5s/34ucIbDBY8Cu5TFMAnQ56ABF5xIA95ZbgbNi3WZBvQtai/uQ5hGSl4jAd3uV8LfPQL+k77hf7Ld3QEhjL6LQP8U2DJNY0jgMt3h7rHCyGwrf/cwxpaTl//+KQR6RyDQGcQG7FrVMHFB9wbsep36/W/A3nDoYcrgi7iLfw6CcOyaI4/9rec8/OBdBD/0RA/+xdCDb36MHurn+bPTgz8cerhfIyLu6wmNt5+DIjwwKIrwL4IivJ44YnIxHGEaddBbB0jC6dTvnyQsqzN0Luhqd0xUgL6j4mTIToZDzrtXNOoF32dg58mw2NkeLjufBrU8h6UTa/YgGLj+RsVzugn4gH7/BJzb8qw5JfWsEY28tryRvihnzvYmo9zFOE0F2ZRf2TReTbdRVtTo8yQTFak1/ocza/4IVYNb+bmrfDLH5tiqKHfR7q+dsdSqjPU9QopNIyzYY6RytFSIxghJIDwTzuCDIBjLKDnK+FHoc5iEkIXp+NCKe943etgZ7NpvOp7f3Bl2KRvlnWGXh9Pv1jBpGOkY4v+p01XlyHYi/+cJi5fxM3o+3a50mR+I4QXuKV+Go5S3pcjUEma+wc2es9fvTZCppMGcId0FWBUM+lYLBs0WDJ4l3aUl4/RCL0CmdQQq3eGg0jqMypmYQ9obLOeEBi8HMKnec83W83SbchT/XyBpGv6gMNnMb/yOOUENw2dnm1peX57U20z/LZm6ZETLblxBwVTaDgeQXGv/xTgM1cWscXntw/w5CeWpG0bD+KbTZn3749YXxSL9PrvAFP/gAO7+Aw==</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/uml/uml_1.xml b/src/main/webapp/templates/uml/uml_1.xml
index e291067e60ffd1fd1209a823a6fd1d568be3ebc2..214aa17bb1c16518ddfdf7cec09dd0cedf76917e 100644
--- a/src/main/webapp/templates/uml/uml_1.xml
+++ b/src/main/webapp/templates/uml/uml_1.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="c4acf3e9-155e-7222-9cf6-157b1a14988f">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T13:40:39.685Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="IKoB_PgJ3zVjGw4OxAzB" type="device" pages="1"><diagram name="Page-1" id="c4acf3e9-155e-7222-9cf6-157b1a14988f">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/uml/uml_2.xml b/src/main/webapp/templates/uml/uml_2.xml
index 4f56a5368eb9fdc9ef2fb8fa47af49d616747b68..5e21de11e7b568bfb4b8444b2254d05cc738a786 100644
--- a/src/main/webapp/templates/uml/uml_2.xml
+++ b/src/main/webapp/templates/uml/uml_2.xml
@@ -1 +1 @@
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36" version="8.6.5" editor="www.draw.io" type="device"><diagram name="Page-1" id="b5b7bab2-c9e2-2cf4-8b2a-24fd1a2a6d21">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-04T14:10:01.398Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="yl2WH0JR1--pV9dcfWpR" type="device" pages="1"><diagram name="Page-1" id="b5b7bab2-c9e2-2cf4-8b2a-24fd1a2a6d21">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/venn/spider_1.xml b/src/main/webapp/templates/venn/spider_1.xml
index f22a9312de3a1f3d89a313d779d2b6c086939190..4b25a83637da690827daa5141bc6c4f7165c2613 100644
--- a/src/main/webapp/templates/venn/spider_1.xml
+++ b/src/main/webapp/templates/venn/spider_1.xml
@@ -1,2 +1 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="b33cb84f-bf7a-9ccf-f142-242d16432e5d">7ZxLb+M2EIB/jY9diC89jok3ybZAgQI5tD1qLdkWVrYMRc6jv76URUrikHaZNLS8knOJSeo533BmOCQ1I/PN60MZ79a/F0maz7CXvM7I1xnGiBLK/9U1b00NjaKmYlVmiTioq3jM/klFpSdq91mSPikHVkWRV9lOrVwU2226qJS6uCyLF/WwZZGrd93Fq1SreFzEuaz9wrr6P7OkWot65Eddw7c0W63FzUPsNw3f48WPVVnst+KOM0yWh7+meRPLa4lXfVrHSfHSqyJ3MzIvi6Jqfm1e52leS1cKTp5XvcmnnZHbdbXJeQHxn4fm+yMnI5uT+cuV6bbq3+7Y9XDMYg8lCU4pIsvvy1/EDZ7jfC9vAO/Ir8A58sLtyzqr0sddvKhbXrgqqQ9zkGJa38njpVZQh0JVFj9aMvXByyzP50VelLy8Lbb15ZfFthK6hSkvx3m22vJC2WATF5EncVDe4c8oBvleaVmlr70qIZaHtNikVfnGDxGtOBCgRBfATJRfOnVinqhb9zSJP4ZQZKHEq/baHQj+Q7Cw5IKvXEQr4EKIzqWt63OhkQsu5MpFSCZSufihgUto4IJCF1zolUvTGnhU4RJGBi7UN9gx5IILu3IRviNU+0to6i/+2fyLf+UiWj3gYEwdpjV2ChjPBZjgCka0ooApYKjJ8zMDGOLE84dXME1rxFQuxLP0/CRwwSW6cpEdJlTBIN/k+k1gfBdgZDxxJYOQp/qYiDCNDDINLhF2EiwTHUSySh9FUYhssS+fDxJHKop0m9zUOZvuSF5zn9W37/FQROn787lGChuwHBX2U7EvF+kxTZM5p7hcpdWxg8RL1296ElqZ5nGVPasJJ5P8D6dyUcRvvQN2RbatnnpX/qOu6HSBAlWgyAMsmyt2ZNtH+2A3tEjxuOp8/X70vh4oNOsTOh/DqsBbC9iP74zhnQubaJHXGTMMArM5hlHQ2WBQOjIzSGzMILsMM+iriuAT12bQInM36p6HVIEzNKQZtEjXjRoG0P5gSJ9EnJpBKGLd+BkM5Xx+OvQ+bQaZjRn0nZhBzc4xBiJ/OAZunlKc1VF8rz31YRaLOrancgQzKa3Bl+E8QwLGENi187RI44/ZXjMwaAuGDFuRRe5+zDB8Ck2qnkw5HwyLfP2YYYRgdB0N2jMscvRjhhGFF9QziO8yQNDc//29EL6z0XVkEyAgJwGCFgEgBkKAADL8pLgSIbDOIwhcB5bhBPVGWq6BA0ttMjxirmlHU6Ttxkq8l3YExqa+53oYYTFXO2b/jBBVZ2gHjZbkRSdLAy75bXMzg4RLwbgMYbsP4GS4dBlzsoiAwJm5zp612jrVvkfAIiIfDzhUkcKfLA0MRhPMH5CGTO981BLy+/9Vi/4Lk8W/BYnLm7LFNlO2UhuHtpIYJN6Y67Qz1bc//dQT9Ha06WXQJoC2nLF3R1s3uuOn7WgoqE8ZYTPNz84XRUBriPNIauLrOhDciEWH9N144gs7EIGbFgalMfFpWy1iGXS5IZ74vK025iNDLkHDE5+4RR70G0NOFmKLzLAS+enhXg8MlGldNsneFCE6XWNktU/Bdo2R8mECnZOs+5+BYwBSAz4D/Js31gJHPQIFsw2UuolA4UZbqq4s/s/j/cj1lJdF7u/jun52naY/n04TuCgTbn231Wm4mSd0NKqiII4J8GmdpnDSXmz4dzd2173pjabU3DNVqvIanZth9550iguumimvv639XLaI8xvRsMmSpL6NcRvhCT/d7z2ftNmPAnvSOsyebht3xzrJpeorom4nygXBDRCG3bHn46LHO/OJcoE7gcIhuUjH0OPydaJcApAxDA0fxDofFz1mupsolzAILqi/YI3L/US5aJ9fGBaMnhZ/mCwY4GGQZ1hscD4yeor820TJRGCYgqMhuejJ8l8nygURDL4kY/j00vnA6Hnz36YKBg4uTbu4PwkML3ZftW1yBN3Hg8ndvw==</diagram></mxfile>
\ No newline at end of file
+<mxfile host="localhost" modified="2019-11-05T06:43:15.635Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36" version="@DRAWIO-VERSION@" etag="r6FYC0-QzEJqEEHiDWWM" type="device" pages="1"><diagram name="Page-1" id="b33cb84f-bf7a-9ccf-f142-242d16432e5d">5Vxbc6M2FP41fuwOugKPiTfJtjOd6Uwe2j6yRraZxSZDcJz01xdsCaMjJavNRsaL8hLrcBF839G5SWJG5pvnuzp7WP9Z5aKc4Sh/npHPM4xxhFD7r5O8HCUo4ulRsqqLXMpOgvviP6FOlNJdkYtH7cSmqsqmeNCFi2q7FYtGk2V1Xe3105ZVqff6kK2EIbhfZKWSfmIn+d9F3qylHKkX6Q58EcVqLTtPMD8e+Jotvq3qareVPc4wWR7+joc3mbqXfNXHdZZX+4GI3MzIvK6q5vhr8zwXZQevAk5d17yop52R63WzKdsGan8eDt++cjFyubh9uVpsm2F3r90PZyyLUJ5jQRFZfl3+Jjt4ysqd6gD22N6h5bFtXO/XRSPuH7JFd2Tf6pL+MAcURddT1LZ6oA6Npq6+9cx0Jy+LspxXZVW37W217W6/rLaN1C1M23ZWFqtt26gPtBlvqh5d1I14Hojkm9+JaiOa+qU9RSl6LLmQao6ZbO9PGsMiKVsPlAUTKcyknq76e5+wbn9IuB2hxwFBjwD0hJjQ97Ih9DT1AT0JCHqc6tDzxAJ9YoEeJT6gpwFBH0dUgz5JLdBTbjE4yAf0LCDoWaJrfWLTen42W88Dgh5FwNjb1L63Shr2kQ/s45CwRzHTsKc2R8ss2BMvjjYJCPuU6dCTyNHRktgH9GlA0COU6NgjbvO0Nuy5D+yV+w4E/Ei39ylhBvjIllch7CXCJCbW+Urcy6ZEZbGrnw6gIh1tsc2vuorE6cxWclt03Q8gVxDPulHO+XxukIEtyL8K9mO1qxfiNWVSFZWsXonmtZPkS3dv+iZptSizpnjSyyk2/A+XtlBkL4MTHqpi2zwO7vxXJzjpAgWqQFEEuDze8cRs/2jvHGkOBQxf4+tAfvf33UEG1UZq1gcMPoZ1wHsjN4y1rKGWD7PnUNKYMhkEVjksScfZyKB0YmaQuJhBdhlmkOuKwIlvM+hQ0Zr0yEM64AyNaQYdalyTJgNofzymTyJezSCE2DR+FkM5nx/oeacZZC5mkHsxg4adYwxE/jCTPT6lvOrE4o/aUw4rStSzPVUZTFBagy/DeSYE5BDYt/N0KIxP2V4zkLTFY4atyKFUPmUyOIUm1SymnI8Mh9r5lMlIQHadjjoyHIrpUyYjTS5oZBDuM0Aw3P/trQTfW3adugQIyEuAYEQAiIEQIIYcflBciRBYHBHHvgPLJEC9UZZr5MDSmJhOmW+20xDZ9mMlfpTtFOSmPPKdRjjMuE7ZPyNE9UnYUaMlddNg2YCrXfvazCjhUjwtQ9ivcn8zXLqMOVlEQODMfFfPem0NdewRsBSI4xFTFQV+sGxgkE0wPiIbqrzzXkvY9v9PB/0nppr/SiYub8oWu0zZKm0c20piUHhjvsvO1Nzc80tP0LuxTS+DbQLYVjP2/tg2je702faUCppTRtjO5kfXi1KgNcR7JBX4ug4Edy/RMX03DnxhByJwd8GobAQ+bWtELKMuN8SBz9saOR8ZcwkaDnziFkXQb4w5WYgdKsNa5GeGewNiIKZd24a9LUL0usbIaZ+C6xojbU++yZOS/WTgGIPSAGeA/+MbG4GjGYGC2QZK/USgcF8r1VcWf/d8nvqe8nKo/b1f18+u0/TX02kCF2XCzeSuOg038ySesioK4pgYv63TFE7ayy30/nJ305teGUrdeqZGV16rc7Ns0FNOcdGqpmjl152fKxZZeSUPbIo877qx7hR8w08PR8+bY8DdsVJgT3qHOdBt6x5XL7VUc0XUdaC8ILgBwrIB9ny8mPHOPFBe4E6gZExelGMY8PI5UF5iUDFMLN+COh8vZsx0EygvSRxf0HjBBi+3gfJifGFhXGLMsvhdsMQAD4Miy2KD8zFjlsi/BMpMCtIUnI7Ji1ks/z1QXhDB4GMxlm8knY8Ys27+R6jEwOTStov7g4hpm6dvth5rBKdv45Kb/wE=</diagram></mxfile>
\ No newline at end of file